@colijnit/configurator 259.1.2 → 259.1.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +0,0 @@
1
- {"version":3,"file":"main.js","mappings":";;;;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA,0C;;;;;;;;;;;;;;;ACZA,8DAAyF;AACzF,oGAAwE;AAExE,iFAA0B;AAC1B,6FAAuE;AAOvE,wDAUe;;;;;;;;;IAsDX,qCAAsG;IAA3C,8NAA0C;IAAC,iBAAa;;;IAAlF,8CAAyB;;;;IAC1D,kCAAwH;IAArC,+MAAoC;IAAC,iBAAU;;;IAArG,sDAAiC;;AArDlE,aAAa;AACb,MAAM,CAAC,QAAQ,GAAG,CAAO,IAAS,EAAE,SAAkB,IAAI,EAAE,EAAE;IAC5D,MAAM,UAAU,GAAe,IAAI,uBAAU,EAAE,CAAC;IAChD,IAAI;QACF,OAAO,IAAI,OAAO,CAAC,CAAC,OAAiB,EAAE,EAAE;YACvC,IAAI,MAAM,EAAE;gBACV,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,GAAG,EAAE,EAAE;oBAC5B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;gBACrB,CAAC,CAAC,CAAC;aACJ;iBAAM;gBACL,UAAU,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,GAAS,EAAE,EAAE;oBACzC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;gBACrB,CAAC,CAAC;aACH;QACH,CAAC,CAAC,CAAC;KACJ;IAAC,OAAO,CAAC,EAAE;QACV,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACjB,OAAO,IAAI,CAAC;KACb;AACH,CAAC,EAAC;AACF,aAAa;AACb,MAAM,CAAC,iBAAiB,GAAG,CAAO,QAAgB,EAAE,EAAE;IACpD,IAAI;QACF,MAAM,UAAU,GAAG,QAAQ,CAAC,OAAO,CAAC,aAAa,EAAE,gBAAgB,CAAC;QACpE,MAAM,QAAQ,GAAQ,MAAM,eAAK,CAAC;YAChC,MAAM,EAAE,KAAK;YACb,GAAG,EAAE,GAAG,UAAU,EAAE;YACpB,YAAY,EAAE,aAAa;SAC5B,CAAC,CAAC;QACH,OAAO,MAAM,QAAQ,CAAC,IAAI,CAAC;KAC5B;IAAC,OAAO,CAAC,EAAE;QACV,IAAI;YACF,MAAM,QAAQ,GAAQ,MAAM,eAAK,CAAC;gBAChC,MAAM,EAAE,KAAK;gBACb,GAAG,EAAE,GAAG,QAAQ,EAAE;gBAClB,YAAY,EAAE,aAAa;aAC5B,CAAC,CAAC;YACH,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE;gBAC3B,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;aACpC;YACD,OAAO,MAAM,QAAQ,CAAC,IAAI,CAAC;SAC5B;QAAC,OAAO,CAAC,EAAE;YACV,OAAO,CAAC,KAAK,CAAC,sBAAsB,QAAQ,EAAE,CAAC,CAAC;SACjD;KACF;AACH,CAAC,EAAC;AAEF,MASa,YAAY;IA2CvB,mCAAmC;IACnC,yCAAyC;IACzC,iCAAiC;IAEjC,oCAAoC;IACpC,0CAA0C;IAC1C,iCAAiC;IAEjC,YAAoB,QAAiB;QAAjB,aAAQ,GAAR,QAAQ,CAAS;QA7C9B,eAAU,GAAgB,EAAE,CAAC;QAC7B,UAAK,GAAe,EAAE,CAAC;QAEvB,YAAO,GAAa,EAAE,CAAC;QAEvB,gBAAW,GAAY,KAAK,CAAC;QAC7B,mBAAc,GAAY,IAAI,CAAC;QAI9B,UAAK,GAAU,IAAI,aAAK,EAAE,CAAC;QAI3B,UAAK,GAAmB,EAAE,CAAC;QAC3B,aAAQ,GAAY;YACxB,GAAG,EAAE,kCAAkC;YACvC,OAAO,EAAE,KAAK;YACd,MAAM,EAAE,QAAQ;SACnB,CAAC;QAEF,gCAAgC;QAChC,sDAAsD;QACtD,sBAAsB;QACtB,sBAAsB;QACtB,KAAK;QAEL,gCAAgC;QAChC,gDAAgD;QAChD,oBAAoB;QACpB,oBAAoB;QACpB,KAAK;QAEG,YAAO,GAAW,MAAM,CAAC;QACzB,gBAAW,GAAW,QAAQ,CAAC;QAC/B,SAAI,GAAW,MAAM,CAAC;IAUU,CAAC;IAEzC,eAAe;QACb,iCAAiC;QACjC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC9C,IAAI,CAAC,KAAK,CAAC,IAAI,CACX,IAAI,CAAC,QAAQ,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC,UAAuB,EAAE,EAAE;YACpE,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAChC,CAAC,CAAC,EACF,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,KAAiB,EAAE,EAAE;YACzD,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACtB,CAAC,CAAC,EACF,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,OAAgB,EAAE,EAAE;YACzD,IAAI,OAAO,EAAE;gBACX,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;aACxB;QACH,CAAC,CAAC,EACF,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC,OAAiB,EAAE,EAAE;YAC3D,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;YACvB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC;QAC9C,CAAC,CAAC,EACF,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,MAAgB,EAAE,EAAE;YACvD,IAAI,MAAM,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE;gBACvC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;aACzB;QACH,CAAC,CAAC,CACL,CAAC;QACF,IAAI,CAAC,UAAU,EAAE,CAAC;QAClB,IAAI,CAAC,aAAa,EAAE,CAAC;QACrB,IAAI,CAAC,sBAAsB,EAAE,CAAC;QAC9B,IAAI,CAAC,WAAW,EAAE,CAAC;QACnB,gBAAgB;QAChB,IAAI,CAAC,QAAQ,EAAE,CAAC;QAChB,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IACtE,CAAC;IAED,WAAW;QACT,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;IAC3C,CAAC;IAEM,eAAe;QACpB,IAAI,CAAC,QAAQ,CAAC,OAAO,GAAG,KAAK,CAAC;IAChC,CAAC;IAEM,cAAc;QACnB,IAAI,CAAC,QAAQ,CAAC,OAAO,GAAG,IAAI,CAAC;IAC/B,CAAC;IAEM,eAAe,CAAC,SAAoB;QACzC,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;QACzC,IAAI,CAAC,cAAc,GAAG,SAAS,CAAC,kBAAkB,CAAC;QACnD,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;IAC9B,CAAC;IAEM,YAAY,CAAC,MAAc;QAChC,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;QACnC,IAAI,CAAC,cAAc,GAAG,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC;IAClD,CAAC;IAEY,MAAM;;YACjB,MAAM,IAAI,GAAG;gBACX,UAAU,EAAE,IAAI,CAAC,UAAU;gBAC3B,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,QAAQ;gBAC/B,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,kBAAkB;gBACvC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,UAAU;aAChC,CAAC;YAEF,MAAM,MAAM,GAAG,MAAM,eAAK,CAAC;gBACzB,OAAO,EAAE;oBACP,cAAc,EAAE,kBAAkB;iBACnC;gBACD,MAAM,EAAE,MAAM;gBACd,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;gBAC1B,GAAG,EAAE,yCAAyC;gBAC9C,YAAY,EAAE,MAAM;aACrB,CAAC;YACF,IAAI,MAAM,CAAC,MAAM,KAAK,GAAG,EAAE;gBACzB,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;aACzB;QACH,CAAC;KAAA;IAEO,UAAU;QAChB,IAAI,CAAC,KAAK,GAAG,IAAI,aAAK,EAAE,CAAC;IAC3B,CAAC;IAEO,aAAa;QACnB,IAAI,CAAC,QAAQ,GAAG,IAAI,qBAAa,CAAC;YAChC,KAAK,EAAE,IAAI;YACX,SAAS,EAAE,IAAI;YACf,qBAAqB,EAAE,IAAI;SAC5B,CAAC,CAAC;QACH,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;QACtC,IAAI,CAAC,QAAQ,CAAC,SAAS,GAAG,IAAI,CAAC;QAC/B,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC;QACrD,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,OAAO,GAAG,IAAI,CAAC;QACvC,8DAA8D;QAC9D,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,GAAG,wBAAgB,CAAC;QAChD,qDAAqD;QACrD,mCAAmC;QACnC,2CAA2C;QAC3C,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;IACzE,CAAC;IAEO,sBAAsB;QAC5B,IAAI,CAAC,MAAM,GAAG,IAAI,yBAAiB,CAAC,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;QACtD,IAAI,CAAC,QAAQ,GAAG,IAAI,6BAAa,CAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAE,CAAC;QAC3E,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC;QACpC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;IACzB,CAAC;IAEO,QAAQ;QACd,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;IACvD,CAAC;IAEO,OAAO;QACb,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAC1B,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;IAChD,CAAC;IAEO,kBAAkB;QACxB,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC;QACxC,IAAI,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,WAAW,KAAK,MAAM,CAAC,KAAK,IAAI,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,YAAY,KAAK,MAAM,CAAC,MAAM,EAAE;YACpI,IAAI,CAAC,iBAAiB,EAAE,CAAC;SAC1B;IACH,CAAC;IAEO,iBAAiB;QACvB,IAAI,CAAC,4BAA4B,EAAE,CAAC;QACpC,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC;QACxC,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC;QAC5C,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC;QAC3B,IAAI,CAAC,MAA4B,CAAC,sBAAsB,EAAE,CAAC;IAC9D,CAAC;IAEO,4BAA4B;QAClC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,WAAW,EAAE,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;IAC5H,CAAC;IAEO,KAAK;QACX,MAAM,GAAG,GAAsB,IAAI,yBAAiB,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,CAAC,CAAC;QACtE,MAAM,GAAG,GAAgB,IAAI,mBAAW,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QAClD,MAAM,IAAI,GAAS,IAAI,YAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QACtC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACvB,CAAC;IAEa,UAAU,CAAC,MAAgB;;YACvC,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;YACxB,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC;YACtB,MAAM,eAAe,GAAG,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC9D,IAAI,eAAe,EAAE;gBACnB,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;aACpC;YACD,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACzB,CAAC;KAAA;IAEO,WAAW;QACjB,MAAM,YAAY,GAAiB,IAAI,oBAAY,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;QACpE,YAAY,CAAC,IAAI,GAAG,cAAc,CAAC;QACnC,MAAM,WAAW,GAAqB,IAAI,wBAAgB,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QACvE,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QAClC,WAAW,CAAC,UAAU,GAAG,IAAI,CAAC;QAC9B,MAAM,UAAU,GAAG,IAAI,iBAAS,CAAC,OAAO,CAAC,CAAC;QAC1C,UAAU,CAAC,KAAK,GAAG,GAAG,CAAC;QACvB,UAAU,CAAC,KAAK,GAAG,CAAC,CAAC;QACrB,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAG,CAAC,CAAC,CAAC,CAAC;QACpC,UAAU,CAAC,UAAU,GAAG,IAAI,CAAC;QAC7B,MAAM,UAAU,GAAG,IAAI,iBAAS,CAAC,OAAO,CAAC,CAAC;QAC1C,UAAU,CAAC,KAAK,GAAG,GAAG,CAAC;QACvB,UAAU,CAAC,KAAK,GAAG,CAAC,CAAC;QACrB,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAG,CAAC,CAAC,CAAC,CAAC;QACnC,UAAU,CAAC,UAAU,GAAG,IAAI,CAAC;QAC7B,MAAM,UAAU,GAAG,IAAI,iBAAS,CAAC,OAAO,CAAC,CAAC;QAC1C,UAAU,CAAC,KAAK,GAAG,GAAG,CAAC;QACvB,UAAU,CAAC,KAAK,GAAG,CAAC,CAAC;QACrB,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAG,CAAC,CAAC,CAAC;QACnC,UAAU,CAAC,UAAU,GAAG,IAAI,CAAC;QAC7B,MAAM,UAAU,GAAG,IAAI,iBAAS,CAAC,OAAO,CAAC,CAAC;QAC1C,UAAU,CAAC,KAAK,GAAG,GAAG,CAAC;QACvB,UAAU,CAAC,KAAK,GAAG,CAAC,CAAC;QACrB,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAG,CAAC,CAAC,CAAC;QAClC,UAAU,CAAC,UAAU,GAAG,IAAI,CAAC;QAC7B,MAAM,UAAU,GAAG,IAAI,uBAAe,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;QAE/D,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,YAAY,EAAE,WAAW,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;IACxG,CAAC;;AArPH,oCAsPC;wEA7OY,YAAY;+DAAZ,YAAY;+BAEK,iBAAU;;;;;QARpC,gCAA6I;QAApB,wFAAS,YAAQ,IAAC;QAA3I,iBAA6I;QAC7I,4BAAkC;QAClC,2EAAmH;QACnH,qEAAkI;;QADrH,eAAkB;QAAlB,uCAAkB;QACrB,eAAiB;QAAjB,sCAAiB;;;;;;;;;;;;;;;;;AC3E/B,0EAA6C;AAC7C,mEAA6C;AAC7C,4FAA6E;AAC7E,sGAA2E;AAC3E,8FAAkE;AAClE,8DAAkC;;AAElC,MAwBa,SAAS;;AAxBtB,8BAyBC;kEADY,SAAS;2DAAT,SAAS,cAJd,4BAAY;gEAbL;QACP,iBAAO;KACV,YARQ;YACL,oCAAuB;YACvB,qBAAY;YACZ,oCAAgB;YAChB,8BAAa;SAChB;wFAkBQ,SAAS,mBAbd,4BAAY,aATZ,oCAAuB;QACvB,qBAAY;QACZ,oCAAgB;QAChB,8BAAa,aAYb,4BAAY;;;;;;;;;;;;;;;;ACzBpB,4EAA+B;AAE/B,sGAAyE;AACzE,sGAA0E;AAC1E,yHAAsF;AACtF,+EAAkD;AAClD,yHAAsF;AACtF,6EAAgD;AAChD,wFAA2D;AAC3D,kGAAsE;AACtE,iGAAoE;AAGpE,sDAAqC;AAErC,6EAAgD;AAChD,8EAAiD;AACjD,8GAA6E;AAC7E,kIAAoG;;AAIpG,MAGa,OAAO;IA0ChB;QAxCO,uBAAkB,GAAiC,IAAI,sBAAe,CAAc,EAAE,CAAC,CAAC;QACxF,kBAAa,GAA6B,IAAI,sBAAe,CAAU,SAAS,CAAC,CAAC;QAClF,kBAAa,GAAgC,IAAI,sBAAe,CAAa,EAAE,CAAC,CAAC;QACjF,oBAAe,GAA8B,IAAI,sBAAe,CAAW,EAAE,CAAC,CAAC;QAC/E,gBAAW,GAAoC,IAAI,sBAAe,CAAiB,IAAI,CAAC,CAAC;QAiBxF,gBAAW,GAAgB,EAAE,CAAC;QAC9B,aAAQ,GAAa,EAAE,CAAC;QACxB,WAAM,GAAe,EAAE,CAAC;QACxB,uBAAkB,GAAU,EAAE,CAAC;QAC/B,oBAAe,GAAU,EAAE,CAAC;QAC5B,iBAAY,GAAU,EAAE,CAAC;QACzB,cAAS,GAAU,EAAE,CAAC;QAItB,gBAAW,GAAwB,IAAI,GAAG,EAAE,CAAC;QAM7C,kBAAa,GAAyB,IAAI,GAAG,EAAE,CAAC;IAIxD,CAAC;IApCD,IAAW,KAAK,CAAC,KAAe;QAC5B,IAAI,KAAK,EAAE;YACP,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;YACpB,IAAI,IAAI,CAAC,gBAAgB,EAAE;gBACvB,IAAI,CAAC,gBAAgB,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC;aAC7C;SACJ;IACL,CAAC;IACD,IAAW,KAAK;QACZ,OAAO,IAAI,CAAC,MAAM,CAAC;IACvB,CAAC;IA4BM,IAAI,CAAC,KAAY,EAAE,OAAiB;QACvC,IAAI,CAAC,UAAU,GAAG,IAAI,+CAAqB,EAAE,CAAC;QAC9C,IAAI,CAAC,YAAY,GAAG,IAAI,0BAAW,EAAE,CAAC;QACtC,IAAI,CAAC,gBAAgB,GAAG,IAAI,kCAAe,EAAE,CAAC;QAC9C,IAAI,CAAC,gBAAgB,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC;QAE1C,IAAI,CAAC,KAAK,EAAE;YACR,MAAM,2BAA2B,CAAC;SACrC;QACD,IAAI,CAAC,oBAAoB,GAAG,IAAI,0CAAmB,EAAE,CAAC;QACtD,qDAAqD;QACrD,IAAI,OAAO,EAAE;YACT,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;SAC9C;QACD,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;IACxB,CAAC;IAEY,UAAU,CAAC,GAAY,EAAE,UAAmB,EAAE,MAAe;;YACtE,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;gBACd,OAAO;aACV;YACD,IAAI;gBACA,MAAM,IAAI,CAAC,cAAc,CAAC,GAAG,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC;gBACnD,MAAM,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;gBAC1D,IAAI,IAAI,CAAC,OAAO,EAAE;oBACd,MAAM,IAAI,CAAC,oBAAoB,CAAC,sBAAsB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;oBACzE,MAAM,QAAQ,GAAmB,EAAE,CAAC;oBACpC,IAAI,CAAC,MAAM,EAAE,CAAC;oBACd,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,qBAAqB,EAAE,CAAC,CAAC;oBAC5C,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;oBACrD,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;oBAChC,MAAM,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;oBAC5B,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;wBAC1B,OAAO;qBACV;oBACD,IAAI,CAAC,uBAAuB,EAAE,CAAC;oBAC/B,IAAI,CAAC,qBAAqB,EAAE,CAAC;oBAC7B,IAAI,CAAC,iBAAiB,EAAE,CAAC;oBACzB,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC;oBAClC,OAAO,KAAK,CAAC;iBAChB;qBAAM;oBACH,MAAM,uBAAuB,CAAC;iBACjC;aACJ;YAAC,OAAO,CAAC,EAAE;gBACR,MAAM,CAAC,CAAC;aACX;QACL,CAAC;KAAA;IAEY,kBAAkB,CAAC,UAAuB,EAAE,KAAiB,EAAE,QAAgB,EAAE,MAAc,EAAE,MAAc;;YACxH,OAAO,IAAI,OAAO,CAAC,CAAO,OAAiB,EAAE,MAAgB,EAAE,EAAE;gBAC7D,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;oBACd,MAAM,CAAC,oBAAoB,CAAC,CAAC;iBAChC;gBACD,IAAI;oBACA,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;oBACzB,MAAM,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;oBACpD,IAAI,UAAU,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,IAAI,KAAK,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE;wBAClF,IAAI,CAAC,MAAM,EAAE,CAAC;wBACd,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC;wBAC9B,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;wBACpB,IAAI,CAAC,uBAAuB,EAAE,CAAC;wBAC/B,IAAI,CAAC,qBAAqB,EAAE,CAAC;wBAC7B,IAAI,CAAC,iBAAiB,EAAE,CAAC;wBACzB,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC;wBAClC,IAAI,CAAC,QAAQ,EAAE,CAAC;wBAChB,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;wBAC1B,OAAO,CAAC,KAAK,CAAC,CAAC;qBAClB;yBAAM;wBACH,MAAM,CAAC,6BAA6B,CAAC,CAAC;qBACzC;iBACJ;gBAAC,OAAO,CAAC,EAAE;oBACR,MAAM,CAAC,CAAC,CAAC,CAAC;iBACb;YACL,CAAC,EAAC,CAAC;QACP,CAAC;KAAA;IAEM,gBAAgB,CAAC,MAAc;QAClC,OAAO,IAAI,CAAC,oBAAoB,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;IAC9D,CAAC;IAEM,OAAO;QACV,IAAI,CAAC,YAAY,CAAC,UAAU,EAAE,CAAC;QAC/B,IAAI,CAAC,gBAAgB,CAAC,UAAU,EAAE,CAAC;IACvC,CAAC;IAEY,eAAe,CAAC,SAAoB;;YAC7C,MAAM,IAAI,CAAC,oBAAoB,CAAC,eAAe,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;YAClE,MAAM,IAAI,CAAC,qBAAqB,EAAE,CAAC;QACvC,CAAC;KAAA;IAEY,qBAAqB,CAAC,eAAwB;;YACvD,MAAM,mBAAmB,GAAuB,MAAM,IAAI,CAAC,oBAAoB,CAAC,qBAAqB,CAAC,KAAK,EAAE,eAAe,CAAC,CAAC;YAC9H,IAAI,CAAC,QAAQ,GAAG,mBAAmB,CAAC,OAAO,CAAC;YAC5C,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC;QAC3D,CAAC;KAAA;IAEY,YAAY,CAAC,MAAc;;YACpC,MAAM,IAAI,CAAC,oBAAoB,CAAC,YAAY,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;YAC5D,MAAM,IAAI,CAAC,qBAAqB,EAAE,CAAC;YACnC,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE;gBAC5B,IAAI,CAAC,MAAM,EAAE,CAAC;aACjB;QACL,CAAC;KAAA;IAEM,4BAA4B,CAAC,MAA0B;QAC1D,MAAM,eAAe,GAAY,IAAI,EAAE,KAAK,GAAY,IAAI,CAAC;QAC7D,OAAO,IAAI,OAAO,CAAC,CAAC,OAAiB,EAAE,MAAgB,EAAE,EAAE;YACvD,IAAI,MAAM,IAAI,MAAM,CAAC,MAAM,EAAE;gBACzB,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE;oBACtC,OAAO,IAAI,CAAC,oBAAoB,CAAC,cAAc,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,eAAe,EAAE,KAAK,EAAE,IAAI,CAAC;yBAC1F,IAAI,CAAC,CAAC,YAAqC,EAAE,EAAE;wBAC5C,MAAM,MAAM,GAAW,IAAI,CAAC,mBAAmB,CAAC,eAAe,EAAE,KAAK,EAAE,YAAY,CAAC,CAAC;wBACtF,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;wBAC5C,OAAO,CAAC,MAAM,CAAC,CAAC;oBACpB,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE;wBACV,MAAM,EAAE,CAAC;oBACb,CAAC,CAAC,CAAC;iBACV;qBAAM;oBACH,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;iBAChD;aACJ;iBAAM;gBACH,MAAM,EAAE,CAAC;aACZ;QACL,CAAC,CAAC,CAAC;IACP,CAAC;IAEM,QAAQ;QACX,IAAI,CAAC,IAAI,GAAG,SAAS,CAAC;QACtB,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC;QACzB,IAAI,CAAC,WAAW,GAAG,SAAS,CAAC;QAC7B,IAAI,CAAC,gBAAgB,CAAC,UAAU,EAAE,CAAC;IACvC,CAAC;IAEO,mBAAmB,CAAC,eAAwB,EAAE,KAAc,EAAE,YAAqC;QACvG,IAAI,YAAY,IAAI,YAAY,CAAC,YAAY,EAAE;YAC3C,IAAI,YAAY,CAAC,YAAY,CAAC,QAAQ,KAAK,IAAI,IAAI,YAAY,CAAC,YAAY,CAAC,QAAQ,KAAK,EAAE,EAAE;gBAC1F,OAAO,wBAAU,CAAC,wBAAwB,CAAC,YAAY,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;aAClF;iBAAM;gBACH,IAAI,eAAe,EAAE;oBACjB,OAAO,wBAAU,CAAC,gCAAgC,CAAC,YAAY,CAAC,YAAY,CAAC,QAAQ,EACjF,KAAK,CAAC,CAAC,CAAC,YAAY,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC,CAAC,YAAY,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC;iBACjG;qBAAM;oBACH,OAAO,KAAK,CAAC,CAAC,CAAC,YAAY,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC,CAAC,YAAY,CAAC,YAAY,CAAC,YAAY,CAAC;iBACnG;aACJ;SACJ;aAAM;YACH,OAAO,EAAE,CAAC;SACb;IACL,CAAC;IAEO,iBAAiB;QACrB,IAAI,CAAC,gBAAgB,CAAC,iBAAiB,CACrC,IAAI,CAAC,MAAM;aACR,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,cAAc,IAAI,CAAC,CAAC,IAAI,KAAK,kCAAY,CAAC,SAAS,CAAC;aAClE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC;IACrC,CAAC;IAEa,cAAc,CAAC,GAAW,EAAE,UAAmB,EAAE,MAAe;;YAC1E,IAAI,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;gBAClC,IAAI,CAAC,MAAM,EAAE;oBACT,MAAM,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC;iBAC9C;gBACD,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;gBACtB,MAAM,MAAM,GAA4B,MAAM,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBAClF,IAAI,MAAM,IAAI,MAAM,CAAC,YAAY,EAAE;oBAC/B,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,YAAY,CAAC;iBAC1C;qBAAM;oBACH,MAAM,oCAAoC,CAAC;iBAC9C;aACJ;iBAAM,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;gBAC1B,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC;aACjC;YACD,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;gBACZ,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC;aACnB;QACL,CAAC;KAAA;IAEa,qBAAqB,CAAC,GAAW,EAAE,MAAe;;YAC5D,MAAM,OAAO,GAAY,MAAM,IAAI,CAAC,WAAW,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;YAC7D,IAAI,OAAO,IAAI,OAAO,CAAC,QAAQ,EAAE;gBAC7B,IAAI,OAAO,CAAC,kBAAkB,EAAE;oBAChC,IAAI,CAAC,gBAAgB,CAAC,SAAS;wBAC7B,OAAO,CAAC,kBAAkB;4BAC1B,CAAC,OAAO,CAAC,kBAAkB,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC;4BACrD,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;iBACtD;gBACD,MAAM,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,QAAQ,EAAE,OAAO,CAAC,kBAAkB,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC;aAC/F;QACL,CAAC;KAAA;IAEa,cAAc,CAAC,QAAgB,EAAE,MAAc,EAAE,MAAc;;YACzE,IAAI,CAAC,OAAO,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,gBAAgB,CAAC,QAAQ,EAAE,MAAM,CAAC;iBACpE,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;gBACb,MAAM,KAAK,CAAC;YAChB,CAAC,CAAC,CAAC;YACP,IAAI,MAAM,EAAE;gBACR,IAAI,CAAC,gBAAgB,CAAC,SAAS;oBAC3B,MAAM;wBACN,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC;wBACjC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;aACpC;QACL,CAAC;KAAA;IAEa,MAAM;;YAChB,MAAM,WAAW,GAAgB,IAAI,CAAC,eAAe,EAAE,CAAC;YACxD,IAAI,WAAW,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,EAAE,oCAAoC;gBAClI,IAAI,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,QAAQ,KAAK,yBAAQ,CAAC,OAAO,IAAI,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,UAAU,EAAE;oBACrF,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;iBACzC;aACJ;YACD,IAAI,WAAW,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE;gBACvC,MAAM,GAAG,GAAmB,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;gBACjD,GAAG,CAAC,OAAO,GAAG,KAAK,CAAC,CAAC,4BAA4B;gBACjD,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;gBACrB,IAAI,SAAS,GAAG,KAAK,CAAC;gBACtB,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;gBAC9B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,GAAW,WAAW,CAAC,MAAM,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE;oBAC5D,MAAM,UAAU,GAAmB,IAAI,CAAC,iBAAiB,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;oBAC/E,IAAI,UAAU,EAAE;wBACZ,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,KAAK,GAAW,IAAI,CAAC,kBAAkB,CAAC,MAAM,EAAE,EAAE,GAAG,KAAK,EAAE,EAAE,EAAE,EAAE;4BAC/E,IAAI,wBAAU,CAAC,qBAAqB,CAAC,IAAI,CAAC,MAAM,EAC5C,GAAG,EAAE,IAAI,CAAC,kBAAkB,CAAC,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE;gCACxD,IAAI,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAC,OAAO,GAAG,IAAI,CAAC;gCAC3C,UAAU,CAAC,OAAO,GAAG,IAAI,CAAC;gCAC1B,SAAS,GAAG,IAAI,CAAC;gCACjB,MAAM;6BACT;4BACD,SAAS,GAAG,KAAK,CAAC;yBACrB;qBACJ;oBACD,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,kBAAkB,CAAC,MAAM,GAAG,CAAC,EAAE;wBAClD,OAAO,CAAC,IAAI,CAAC,2BAA2B,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC;qBAC9D;iBACJ;gBACD,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;gBAC5B,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;gBACzB,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;gBAC1B,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;gBACvB,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;gBAC7B,MAAM,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC;gBAChC,sCAAsC;gBACtC,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;gBAC/B,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;gBACxB,0BAAW,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBACxC,mBAAmB;gBACnB,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;gBACpB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBAC3B,OAAO,GAAG,CAAC;aACd;iBAAM;gBACH,MAAM,uBAAuB,CAAC;gBAC9B,0BAA0B;gBAC1B,oCAAoC;gBACpC,yIAAyI;gBACzI,uGAAuG;gBACvG,sCAAsC;gBACtC,yIAAyI;gBACzI,sGAAsG;gBACtG,WAAW;gBACX,yHAAyH;gBACzH,wGAAwG;gBACxG,IAAI;aACP;QACL,CAAC;KAAA;IAEO,qBAAqB;QACzB,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC;QAC5C,MAAM,kBAAkB,GAAc,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,yBAAQ,CAAC,OAAO,CAAC,CAAC;QAC5F,MAAM,oBAAoB,GAAgB,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,KAAK,GAAG,CAAC,CAAC;QACtF,MAAM,qBAAqB,GACzB,oBAAoB,CAAC,MAAM,KAAK,CAAC;YACjC,kBAAkB,CAAC,UAAU;YAC7B,kBAAkB,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC;QAC3C,yBAAyB;QACzB,MAAM,gBAAgB,GAAe,IAAI,CAAC,WAAW;aAClD,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,oBAAoB,CAAC,MAAM,KAAK,CAAC,CAAC,IAAK,CAAC,CAAC,QAAgB,CAAC,SAAS,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC;aAClH,GAAG,CAAC,CAAC,KAAgB,EAAE,KAAa,EAAE,KAAkB,EAAE,EAAE;YACzD,8BAA8B;YAC9B,MAAM,GAAG,GAAc,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,aAAa,KAAM,KAAK,CAAC,QAAgB,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;YAClH,IAAI,GAAG,EAAE;gBACJ,KAAK,CAAC,QAAgB,CAAC,SAAS,CAAC,iBAAiB,GAAG,GAAG,CAAC,iBAAiB,CAAC;aAC/E;YACA,KAAK,CAAC,QAAgB,CAAC,SAAS,CAAC,UAAU,GAAG,IAAI,CAAC,wBAAwB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YACzF,OAAQ,KAAK,CAAC,QAAgB,CAAC,SAAS,CAAC;QAC7C,CAAC,CAAC,CAAC;QACL,+BAA+B;QAC/B,kCAAkC;QAClC,6FAA6F;QAC7F,gDAAgD;QAChD,uCAAuC;QACvC,MAAM;QACN,iFAAiF;QACjF,iDAAiD;QACjD,yCAAyC;QACzC,iCAAiC;QACjC,qCAAqC;QACrC,MAAM;QACN,MAAM;QAEN,uDAAuD;QACvD,IAAI,uBAAuB,GAAY,IAAI,CAAC;QAE5C,MAAM,GAAG,GAAW,UAAU,CAAC,MAAM,CAAC;QACtC,IAAI,SAAoB,CAAC;QACzB,IAAI,cAAyB,CAAC;QAC9B,IAAI,OAAO,GAAY,KAAK,CAAC;QAC7B,IAAI,iBAAiB,GAAW,CAAC,CAAC,CAAC;QACnC,IAAI,WAAgB,CAAC;QACrB,IAAI,UAAkB,CAAC;QACvB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE;YAC1B,MAAM,SAAS,GAAc,UAAU,CAAC,CAAC,CAAC,CAAC;YAC3C,IAAI,SAAS,CAAC,iBAAiB,KAAK,CAAC,EAAE;gBACnC,WAAW,GAAG,SAAS,CAAC,gBAAgB,CAAC;gBACzC,UAAU,GAAG,SAAS,CAAC,QAAQ,CAAC;aACnC;YACD,IAAI,SAAS,CAAC,iBAAiB,GAAG,iBAAiB,EAAE;gBACjD,SAAS,CAAC,gBAAgB,GAAG,SAAS,CAAC,gBAAgB,IAAI,WAAW,CAAC;aAC1E;YACD,IAAI,SAAS,CAAC,QAAQ,EAAE;gBACpB,IAAI,SAAS,CAAC,QAAQ,CAAC,IAAI,KAAK,kCAAY,CAAC,SAAS,EAAE;oBACpD,MAAM,QAAQ,GAAG,SAAS,CAAC,QAAQ,CAAC;oBACnC,QAAgB,CAAC,UAAU,GAAG,UAAU,CAAC;oBAC1C,0EAA0E;oBACzE,QAAgB,CAAC,UAAU,GAAG,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;oBAC9E,IAAI,SAAS,EAAE;wBACX,IAAI,OAAO,EAAE;4BACT,IAAK,QAAgB,CAAC,UAAU,EAAE;gCAC9B,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,QAAQ,CAAC,EAAE,CAAC,EAAE;oCACvD,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;iCACvC;6BACJ;iCAAM;gCACH,SAAS,CAAC,UAAU,GAAG,CAAC,QAAQ,CAAC,CAAC;6BACrC;yBACJ;6BAAM;4BACH,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,QAAQ,CAAC,EAAE,CAAC,EAAE;gCACvD,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;6BACvC;yBACJ;wBACD,OAAO,GAAG,KAAK,CAAC;qBACnB;yBAAM;wBACH,IAAI,uBAAuB,EAAE;4BACzB,gBAAgB,CAAC,MAAM,GAAG,CAAC,CAAC;4BAC5B,uBAAuB,GAAG,KAAK,CAAC;yBACnC;wBACD,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,QAAQ,CAAC,EAAE,CAAC,EAAE;4BACnD,gBAAgB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;yBACnC;qBACJ;oBACD,0EAA0E;oBAC1E,kDAAkD;oBAClD,6DAA6D;oBAC7D,iEAAiE;oBACjE,+EAA+E;oBAC/E,kCAAkC;iBACrC;qBAAM,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,KAAK,kCAAY,CAAC,IAAI;oBACvD,OAAO,SAAS,CAAC,QAAQ,CAAC,cAAc,KAAK,QAAQ;oBACrD,SAAS,CAAC,QAAQ,CAAC,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,qBAAqB,CAAC,EAAE;oBACpE,IAAI,SAAS,CAAC,QAAQ,CAAC,IAAI,KAAK,kCAAY,CAAC,UAAU,IAAI,CAAC,qBAAqB,CAAC,EAAE;wBAChF,SAAS,CAAC,UAAU,GAAG,gBAAgB,CAAC;wBACxC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;wBAClC,IAAI,CAAC,SAAS,IAAI,CAAC,SAAS,CAAC,MAAM,KAAK,SAAS,CAAC,MAAM,IAAI,SAAS,CAAC,IAAI,KAAK,SAAS,CAAC,IAAI,CAAC,EAAE;4BAC5F,OAAO,GAAG,IAAI,CAAC;yBAClB;wBACD,SAAS,GAAG,SAAS,CAAC;wBACtB,cAAc,GAAG,SAAS,CAAC;qBAC9B;yBAAM,IAAI,SAAS,CAAC,QAAQ,CAAC,IAAI,KAAK,kCAAY,CAAC,OAAO,EAAE;wBACzD,SAAS,CAAC,UAAU,GAAG,cAAc,CAAC,CAAC,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC,CAAC,gBAAgB,CAAC;wBACrF,IAAI,cAAc,EAAE;4BAChB,cAAc,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;yBAC3C;wBACD,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;wBAC/B,IAAI,CAAC,SAAS,IAAI,CAAC,SAAS,CAAC,MAAM,KAAK,SAAS,CAAC,MAAM,IAAI,SAAS,CAAC,IAAI,KAAK,SAAS,CAAC,IAAI,CAAC,EAAE;4BAC5F,OAAO,GAAG,IAAI,CAAC;yBAClB;wBACD,SAAS,GAAG,SAAS,CAAC;qBACzB;iBACJ;aACJ;YACD,iBAAiB,GAAG,SAAS,CAAC,iBAAiB,CAAC;SACnD;QACD,6CAA6C;QAC7C,mCAAmC;IACvC,CAAC;IAED;;;;OAIG;IACK,wBAAwB,CAAC,EAAU;QACvC,MAAM,GAAG,GAAW,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,EAAE,CAAC,CAAC;QACnE,IAAI,YAAY,GAAW,GAAG,CAAC;QAC/B,IAAI,GAAG,GAAG,CAAC,CAAC,EAAE;YACV,KAAK,IAAI,CAAC,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;gBAC1B,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;gBACtC,IAAI,SAAS,CAAC,iBAAiB,IAAI,YAAY,EAAE;oBAC7C,MAAM;iBACT;gBACD,YAAY,GAAG,SAAS,CAAC,iBAAiB,CAAC;gBAC3C,IAAI,SAAS,CAAC,eAAe,EAAE;oBAC3B,OAAO,SAAS,CAAC,eAAe,CAAC;iBACpC;aACJ;SACJ;QACD,OAAO,SAAS,CAAC;IACrB,CAAC;IAEO,iBAAiB,CAAC,MAAsB,EAAE,GAAc;QAC5D,IAAI,GAAG,GAAQ,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,GAAG,CAAC,QAAQ,CAAC,cAAc,IAAI,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QACjH,IAAI,CAAC,GAAG,EAAE;YACN,6DAA6D;YAC7D,MAAM,IAAI,GAAG,GAAG,CAAC,QAAQ,CAAC,cAAc,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;YAC7D,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;YAC/D,IAAI,CAAC,GAAG,EAAE;gBACN,OAAO,CAAC,IAAI,CAAC,uBAAuB,GAAG,CAAC,QAAQ,CAAC,cAAc,SAAS,CAAC,CAAC;gBAC1E,OAAO,IAAI,CAAC;aACf;SACJ;QACD,IAAI,UAAU,GAAQ,GAAG,CAAC,KAAK,EAAE,CAAC;QAClC,UAAU,CAAC,IAAI,GAAG,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QACtD,UAAU,CAAC,QAAQ,CAAC,SAAS,GAAG,GAAG,CAAC;QACpC,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QACjC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE;YACpB,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QACvD,CAAC,CAAC,CAAC;QACH,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QACvB,8FAA8F;QAC9F,wDAAwD;QACxD,UAAU,GAAG,MAAM,CAAC,eAAe,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QACrD,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACzC,OAAO,UAAU,CAAC;IACtB,CAAC;IAEO,cAAc,CAAC,MAAsB,EAAE,GAAc,EAAE,KAAW,EAAE,KAAW;QACnF,MAAM,GAAG,GAAQ,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,GAAG,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;QAC3E,IAAI,CAAC,GAAG,EAAE;YACN,OAAO,IAAI,CAAC;SACf;QACD,4EAA4E;QAC5E,MAAM,OAAO,GAAQ,GAAG,CAAC,KAAK,EAAE,CAAC;QACjC,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QACnD,OAAO,CAAC,QAAQ,CAAC,SAAS,GAAG,GAAG,CAAC;QACjC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QAC9B,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC;QACvB,IAAI,KAAK,IAAI,KAAK,EAAE;YAChB,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YACpB,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACnC,OAAO,OAAO,CAAC;SAClB;QACD,OAAO,OAAO,CAAC;IACnB,CAAC;IAEO,cAAc,CAAC,MAAsB;QACzC,MAAM,GAAG,GAAW,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC;QACnD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE;YAC1B,IAAI,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,cAAc,CAAC,WAAW,CAAC,IAAI,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,EAAE;gBAClH,MAAM,mBAAmB,GAAc,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC;gBACrF,IAAI,mBAAmB,EAAE;oBACrB,MAAM,IAAI,GAAW,mBAAmB,CAAC,QAAQ,CAAC,MAAM,CAAC;oBACzD,IAAI,UAAe,CAAC;oBACpB,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,IAAI,EAAE,EAAE,EAAE,EAAE;wBAC9B,wBAAU,CAAC,qBAAqB,CAAC,IAAI,CAAC,MAAM,EACxC,MAAM,EAAE,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,EAAE,mBAAmB,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,KAAK,EAC3E,CAAC,GAAG,EAAE,KAAM,EAAE,KAAM,EAAE,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;wBAC7E,IAAI,UAAU,EAAE;4BACZ,wBAAU,CAAC,qBAAqB,CAAC,IAAI,CAAC,MAAM,EACxC,MAAM,EAAE,UAAU,EAAE,mBAAmB,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,KAAK,EAC3D,CAAC,GAAG,EAAE,KAAM,EAAE,KAAM,EAAE,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;yBAChF;wBACD,UAAU,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;qBACtE;iBACJ;aACJ;SACJ;IACL,CAAC;IAEO,iBAAiB,CAAC,MAAsB,EAAE,GAAmB;QACjE,IAAI,SAAS,GAAG,CAAC,CAAC;QAClB,IAAI,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;QACpB,IAAI,WAAW,GAAG,MAAM,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;QAC/C,OAAO,WAAW,EAAE;YAChB,SAAS,EAAE,CAAC;YACZ,IAAI,GAAG,GAAG,CAAC,IAAI,GAAG,CAAC,SAAS,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YAC7D,WAAW,GAAG,MAAM,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;SAC9C;QACD,OAAO,IAAI,CAAC;IAChB,CAAC;IAEa,iBAAiB,CAAC,GAAW;;YACvC,MAAM,QAAQ,GAA4B,MAAM,IAAI,CAAC,oBAAoB,CAAC,gBAAgB,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;YACvG,IAAI,QAAQ,CAAC,gBAAgB,CAAC,OAAO,IAAI,QAAQ,CAAC,YAAY,EAAE;gBAC5D,OAAO,QAAQ,CAAC,YAAY,CAAC;aAChC;QACL,CAAC;KAAA;IAEa,WAAW,CAAC,GAAW,EAAE,MAAc;;YACjD,IAAI,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;gBAC7B,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;gBACrD,OAAO,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;aACtC;YACD,IAAI,CAAC,MAAM,EAAE;gBACT,MAAM,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC;qBACrC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;oBACb,MAAM,oBAAoB,GAAG,aAAa,CAAC;gBAC/C,CAAC,CAAC,CAAC;aACV;YACD,IAAI,OAAgB,CAAC;YACrB,MAAM,eAAe,GAA4B,MAAM,IAAI,CAAC,oBAAoB,CAAC,kBAAkB,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;YACnH,IAAI,eAAe,CAAC,gBAAgB,CAAC,OAAO,IAAI,eAAe,CAAC,YAAY,EAAE;gBAC1E,IAAI,eAAe,CAAC,YAAY,CAAC,cAAc,CAAC,UAAU,CAAC,EAAE;oBACzD,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC,eAAe,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;oBAC7J,OAAO,GAAY,IAAI,CAAC,UAAU,CAAC,sBAAsB,CAAC,iBAAO,EAAE,GAAG,CAAC,CAAC;iBAC3E;qBAAM;oBACH,OAAO,GAAY,IAAI,CAAC,UAAU,CAAC,sBAAsB,CAAC,iBAAO,EAAE,eAAe,CAAC,YAAY,CAAC,CAAC;iBACpG;aACJ;YACD,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;YACrC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACjC,OAAO,OAAO,CAAC;QACnB,CAAC;KAAA;IAEa,cAAc,CAAC,UAAkB,EAAE,eAAwB;;YACrE,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC;YACtB,MAAM,iBAAiB,GAA4B,MAAM,IAAI,CAAC,oBAAoB,CAAC,aAAa,CAAC,KAAK,EAAE,eAAe,CAAC,CAAC;YACzH,IAAI,iBAAiB,CAAC,aAAa,IAAI,iBAAiB,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE;gBAC/E,IAAI,CAAC,WAAW,GAAgB,IAAI,CAAC,UAAU,CAAC,kCAAkC,CAAC,qBAAS,EAAE,iBAAiB,CAAC,aAAa,CAAC,CAAC;gBAC/H,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,GAAG,UAAU,CAAC,CAAC;gBACzD,4HAA4H;gBAC5H,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;aAClD;iBAAM;gBACH,MAAM,sBAAsB,CAAC;aAChC;QACL,CAAC;KAAA;IAEa,SAAS;;YACnB,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;YACjB,MAAM,aAAa,GAA4B,MAAM,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;YAC/F,IAAI,aAAa,CAAC,aAAa,IAAI,aAAa,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE;gBACvE,IAAI,CAAC,MAAM,GAAe,IAAI,CAAC,UAAU,CAAC,kCAAkC,CAAC,oBAAQ,EAAE,aAAa,CAAC,aAAa,CAAC,CAAC;gBACpH,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;aACxC;iBAAM;gBACH,MAAM,qBAAqB,CAAC;aAC/B;QACL,CAAC;KAAA;IAEO,uBAAuB;QAC3B,MAAM,GAAG,GAAW,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC;QAC5C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE;YAC1B,uDAAuD;YACvD,IAAI,IAAI,GAAQ,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YAC7E,IAAI,CAAC,IAAI,EAAE;gBACP,IAAI,GAAG,IAAI,oBAAQ,EAAE,CAAC;aACzB;YACD,IAAI,IAAI,CAAC,IAAI,KAAK,kCAAY,CAAC,SAAS,EAAE;gBACtC,MAAM,SAAS,GAAQ,IAAI,CAAC,cAAc,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC;gBACzG,IAAI,SAAS,EAAE;oBACX,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;iBAC9B;aACJ;YACD,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,QAAQ,GAAG,IAAI,CAAC;SACvC;IACL,CAAC;IAEO,cAAc;QAClB,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAc,EAAE,EAAE;YACzC,OAAO,IAAI,CAAC,IAAI,KAAK,kCAAY,CAAC,SAAS,CAAC;QAChD,CAAC,CAAC,CAAC;IACP,CAAC;IAEa,eAAe,CAAC,GAAmB;;YAC7C,IAAI,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;YACtC,MAAM,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;YACnE,IAAI,CAAC,IAAI,CAAC,gCAAgC,CAAC,CAAC;YAC5C,MAAM,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC,GAAG,EAAE,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;YACxE,IAAI,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC;YACzC,MAAM,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC,GAAG,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;YACrE,IAAI,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;YACxC,IAAI,CAAC,gBAAgB,CAAC,UAAU,EAAE,CAAC;YACnC,IAAI,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;QACtC,CAAC;KAAA;IAEO,eAAe;QACnB,OAAO,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE;YAC/B,MAAM,IAAI,GAAa,CAAC,CAAC,QAAQ,CAAC;YAClC,OAAO,IAAI,IAAI,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,IAAI,KAAK,kCAAY,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,kCAAY,CAAC,UAAU,CAAC;QACnH,CAAC,CAAC,CAAC;IACP,CAAC;IAEO,YAAY,CAAC,GAAmB;QACpC,MAAM,WAAW,GAAG,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;QACxD,MAAM,aAAa,GAAG,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;QAC1C,WAAW,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;QACrC,MAAM,KAAK,GAAkB,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QAEnH,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,KAAU,EAAE,EAAE;YAChC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAC9B,CAAC,CAAC,CAAC;QACH,GAAG,CAAC,iBAAiB,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IACvC,CAAC;IAEO,MAAM;QACV,IAAI,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,CAAC;QAChC,IAAI,CAAC,kBAAkB,CAAC,MAAM,GAAG,CAAC,CAAC;QACnC,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC;QAC7B,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC;QAC1B,gCAAgC;IACpC,CAAC;IAEO,IAAI,CAAC,OAAe;QACxB,IAAI,IAAI,CAAC,KAAK,EAAE;YACZ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YACpB,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,EAAE,OAAO,CAAC,CAAC;SACpC;IACL,CAAC;;AAppBL,0BAqpBC;8DAlpBY,OAAO;6DAAP,OAAO,WAAP,OAAO,mBAFJ,MAAM;;;;;;;;;;;;;;;;ACpBtB,2EAA+E;;;;;;IAUnE,4BAAuD;;;IACvD,0BAA8G;;;IAAzB,+DAAwB;;AARzH,MA+Ba,eAAe;IAc1B,YAAoB,QAAiB;QAAjB,aAAQ,GAAR,QAAQ,CAAS;IAAI,CAAC;IAV1C,IACW,OAAO,CAAC,KAAc;QAC/B,IAAI,CAAC,MAAM,CAAC,SAAS,GAAG,EAAE,CAAC;QAC3B,IAAI,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,KAAK,eAAe,EAAE;YACnD,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;SAClC;aAAM;YACL,IAAI,CAAC,MAAM,CAAC,SAAS,GAAG,IAAI,CAAC;SAC9B;IACH,CAAC;IAIM,QAAQ;IACf,CAAC;IAEa,cAAc,CAAC,MAAc;;YACzC,MAAM,IAAI,CAAC,QAAQ,CAAC,4BAA4B,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,QAAgB,EAAE,EAAE;gBACjF,MAAM,CAAC,SAAS,GAAG,QAAQ,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC;YACvD,CAAC,CAAC,CAAC;QACL,CAAC;KAAA;;AAtDH,0CAuDC;8EAxBY,eAAe;kEAAf,eAAe;QA5BxB,8BAA+B;QAC7B,8BAA4B;QAC1B,8BAA0C;QACxC,8BAA8B;QAC5B,4EAAuD;QACvD,gEAA8G;QAChH,iBAAM;QACN,8BAAkC;QAChC,0BAA0E;QAC5E,iBAAM;QACN,8BAAmB;QACjB,0BAAiC;QACnC,iBAAM;QACR,iBAAM;QACR,iBAAM;QACR,iBAAM;;QAb0B,eAAa;QAAb,yCAAa;QAEzB,eAA6B;QAA7B,kDAA6B;QACnC,eAA0D;QAA1D,mFAA0D;QAGrC,eAAuC;QAAvC,yDAAuC;69XAYhE;YACV,oBAAO,CAAC,cAAc,EAAE;gBACtB,kBAAK,CAAC,MAAM,EAAE,kBAAK,CAAC,EAAC,YAAY,EAAE,SAAS,EAAC,CAAC,CAAC;gBAC/C,kBAAK,CAAC,OAAO,EAAE,kBAAK,CAAC,EAAC,YAAY,EAAE,OAAO,EAAC,CAAC,CAAC;gBAC9C,uBAAU,CAAC,YAAY,EAAE,oBAAO,CAAC,GAAG,CAAC,CAAC;aACvC,CAAC;SACH;;;;;;;;;;;;;;;;ACnCH,8DAAqE;;;;;;;;IAUjD,oCAOC;IANO,6NAAS,kCAAwB,IAAC;IAMzC,iBAAS;;;;IALF,kCAAiB;;AAT7C,MAyBa,gBAAgB;IAUzB;QARO,YAAO,GAAa,EAAE,CAAC;QAMvB,gBAAW,GAAyB,IAAI,mBAAY,EAAU,CAAC;IAEvD,CAAC;;AAnCpB,4CAqCC;gFAZY,gBAAgB;mEAAhB,gBAAgB;QAtBrB,8BAA+B;QAC3B,8BAAiC;QAC7B,wBAA8D;QAC9D,8BAAwD;QACpD,uEAOU;QACd,iBAAM;QAEV,iBAAM;QACV,iBAAM;;QAb4B,eAA8B;QAA9B,gDAA8B;QAEzB,eAAU;QAAV,qCAAU;;;;;;;;;;;;;;;;;ACTzD,mEAA6C;AAC7C,kFAAqD;AACrD,uFAA4D;AAC5D,yHAA2F;AAC3F,uIAAwG;AACxG,iFAAqD;;AAErD,MAea,aAAa;;AAf1B,sCAiBC;0EAFY,aAAa;+DAAb,aAAa;mEAdb;YACL,qBAAY;YACZ,4BAAY;SACf;wFAWQ,aAAa,mBATlB,oCAAgB;QAChB,kCAAe;QACf,2DAA2B;QAC3B,wEAAiC,aAPjC,qBAAY;QACZ,4BAAY,aASZ,oCAAgB;;;;;;;;;;;;;;;;ACpBxB,8DAA6E;AAE7E,2EAA+E;;;;;;IA2B/C,4BAAmE;;;IACnE,0BAAwK;;;IAArC,uEAAoC;;;;IAO/J,+BAEC;IADI,0SAA4C;IAE7C,4BAA6E;IAC7E,2BAA6D;IACjE,iBAAM;;;IAFsB,eAA4C;IAA5C,6DAA4C;IAC/C,eAAgC;IAAhC,iDAAgC;;;IAL7D,2BAAqG;IACjG,0FAKM;IACV,iBAAM;;;IAP6E,6CAAiB;IAC7C,eAA8B;IAA9B,wDAA8B;;;;IAgBrF,+BACwG;IAApD,ySAAmD;IAAC,iBAAM;;;IADjF,0DAA8C;;;;IA5B3F,6BAAqE;IAEjE,8BAA6F;IAAhE,2TAA+D;IACxF,8BAAiC;IAC7B,+FAAmE;IACnE,mFAAwK;IAC5K,iBAAM;IACN,+BAAoB;IAChB,+BAA2B;IACvB,4BAAsF;IACtF,2BAAgF;IAChF,mFAOM;IACV,iBAAM;IACV,iBAAM;IAEN,gCAA2B;IACvB,4BAAiC;IACrC,iBAAM;IAEN,gCAA8B;IAC1B,gCAA8B;IAC1B,sFAC8G;IAClH,iBAAM;IACV,iBAAM;IACV,iBAAM;IAEV,0BAAe;;;IA9BS,eAAyC;IAAzC,6DAAyC;IAC5B,eAAkF;IAAlF,yGAAkF;IAI/E,eAAqD;IAArD,sEAAqD;IACxD,eAAmD;IAAnD,oEAAmD;IAClE,eAA2E;IAA3E,kGAA2E;IAkB3E,eAA4C;IAA5C,gEAA4C;;AAhDtF,MAAM,kBAAkB;IAAxB;QAEW,aAAQ,GAAgB,EAAE,CAAC;QAC3B,aAAQ,GAAY,KAAK,CAAC;QAC1B,cAAS,GAAW,EAAE,CAAC;IAClC,CAAC;CAAA;AAED,MA+Da,mBAAmB;IAY5B,YAAoB,QAAiB;QAAjB,aAAQ,GAAR,QAAQ,CAAS;QAL9B,wBAAmB,GAAyB,EAAE,CAAC;QAG/C,mBAAc,GAA4B,IAAI,mBAAY,EAAa,CAAC;IAEvC,CAAC;IAXzC,IACW,UAAU,CAAC,KAAkB;QACpC,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;QAC/B,IAAI,CAAC,eAAe,EAAE,CAAC;IAC3B,CAAC;IASM,aAAa,CAAC,kBAAsC,EAAE,UAAsB;QAC/E,UAAU,CAAC,cAAc,EAAE,CAAC;QAC5B,UAAU,CAAC,wBAAwB,EAAE,CAAC;QACtC,kBAAkB,CAAC,QAAQ,GAAG,CAAC,kBAAkB,CAAC,QAAQ,CAAC;IAC/D,CAAC;IAEM,eAAe,CAAC,SAAoB,EAAE,UAAsB;QAC/D,UAAU,CAAC,cAAc,EAAE,CAAC;QAC5B,UAAU,CAAC,wBAAwB,EAAE,CAAC;QACtC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACxC,CAAC;IAEa,eAAe;;YACzB,IAAI,IAAI,CAAC,mBAAmB,CAAC,MAAM,GAAG,CAAC,EAAE;gBACrC,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAO,SAA6B,EAAE,EAAE;oBACrE,MAAM,IAAI,CAAC,QAAQ,CAAC,4BAA4B,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,QAAgB,EAAE,EAAE;wBAC5F,SAAS,CAAC,SAAS,GAAG,QAAQ,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC;oBAC5D,CAAC,CAAC,CAAC;gBACP,CAAC,EAAC,CAAC;aACN;QACL,CAAC;KAAA;IAEO,kBAAkB,CAAC,KAAkB;QACzC,IAAI,CAAC,mBAAmB,CAAC,MAAM,GAAG,CAAC,CAAC;QACpC,IAAI,kBAAsC,CAAC;QAC3C,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;YACd,IAAI,CAAC,CAAC,iBAAiB,KAAK,CAAC,EAAE;gBAC3B,kBAAkB,GAAG,IAAI,kBAAkB,EAAE,CAAC;gBAC9C,kBAAkB,CAAC,SAAS,GAAG,CAAC,CAAC;gBACjC,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;aACrD;iBAAM,IAAI,CAAC,CAAC,iBAAiB,GAAG,CAAC,EAAE;gBAChC,IAAI,kBAAkB,EAAE;oBACpB,kBAAkB,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;iBACvC;aACJ;QACL,CAAC,CAAC,CAAC;IACP,CAAC;;AAjHL,kDAkHC;sFAnDY,mBAAmB;sEAAnB,mBAAmB;QA5DxB,8BAA+B;QAC3B,8BAAmC;QAC/B,iCAA+B;QAC3B,wBAA0D;QAI9D,iBAAS;QACT,8BAAgC;QAC5B,uFAkCe;QACnB,iBAAM;QACV,iBAAM;QACV,iBAAM;;QA3C4B,eAA8B;QAA9B,4CAA8B;QAMP,eAAsB;QAAtB,iDAAsB;y+XA0CvE;YACR,oBAAO,CAAC,kBAAkB,EAAE;gBACxB,kBAAK,CAAC,MAAM,EAAE,kBAAK,CAAC,EAAC,QAAQ,EAAE,GAAG,EAAC,CAAC,CAAC;gBACrC,kBAAK,CAAC,GAAG,EAAE,kBAAK,CAAC,EAAC,QAAQ,EAAE,GAAG,EAAC,CAAC,CAAC;gBAClC,uBAAU,CAAC,YAAY,EAAE,oBAAO,CAAC,GAAG,CAAC,CAAC;aACzC,CAAC;SACL;;;;;;;;;;;;;;;;ACxEL,mEAA6C;AAC7C,wFAA2D;AAC3D,iFAAqD;;AAErD,MAYa,gBAAgB;;AAZ7B,4CAcC;gFAFY,gBAAgB;kEAAhB,gBAAgB;sEAXhB;YACL,qBAAY;YACZ,4BAAY;SACf;wFAQQ,gBAAgB,mBANrB,0CAAmB,aAJnB,qBAAY;QACZ,4BAAY,aAMZ,0CAAmB;;;;;;;;;;;;;;;;;ACZ3B,MAgBa,eAAe;;AAhB5B,0CAiBC;8EADY,eAAe;kEAAf,eAAe;QAbxB,8BAA4B;QAC1B,mBAAoG;QAApG,8BAAoG;QAClG,4BAAoD;QAClD,4BACS;QACT,4BACS;QACX,iBAAI;QACN,iBAAM;QACR,iBAAM;;;;;;;;;;;;;;;;;ACbV,mEAA+C;AAC/C,uFAA0D;;AAE1D,MAWa,YAAY;;AAXzB,oCAW6B;wEAAhB,YAAY;8DAAZ,YAAY;kEAVd;YACP,qBAAY;SACb;wFAQU,YAAY,mBANrB,kCAAe,aAHf,qBAAY,aAMZ,kCAAe;;;;;;;;;;;;;;;;;ACTnB,MAGa,iCAAiC;IAK5C,2DAA2D;IAC3D;QAEE,8EAA8E;QAC9E,4EAA4E;QAC5E,uEAAuE;QACvE,IAAI,CAAC,QAAQ,GAAG,IAAI,GAAG,EAAE,CAAC;QAE1B,IAAI,CAAC,SAAS,GAAG,IAAI,oBAAoB,CACrC,CAAC,OAAoC,EAAE,EAAE;YAEvC,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE;gBAE3B,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;gBACjD,IAAI,QAAQ,EAAE;oBACZ,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;iBAChC;aACF;QAEH,CAAC,EACD;YACE,gEAAgE;YAChE,wEAAwE;YACxE,oEAAoE;YACpE,UAAU,EAAE,qBAAqB;SAClC,CACJ,CAAC;IAEJ,CAAC;IAED,8DAA8D;IACvD,WAAW;QAEhB,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;QACtB,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,CAAC;IAE9B,CAAC;IAED,MAAM;IACN,kBAAkB;IAClB,MAAM;IAEN,qFAAqF;IACrF,8DAA8D;IACvD,GAAG,CAAC,OAAoB,EAAE,QAAkB;QAEjD,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QACrC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAElC,CAAC;IAED,4DAA4D;IACrD,MAAM,CAAC,OAAoB;QAEhC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAC9B,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;IAEpC,CAAC;;AAjEH,8EAmEC;kHAhEY,iCAAiC;oFAAjC,iCAAiC;;;;;;;;;;;;;;;;;;ACH9C,MAIa,2BAA2B;IActC,oDAAoD;IACpD,YACI,MAAyC,EACzC,UAAsB;QAdnB,oBAAe,GAAY,KAAK,CAAC;QAGxC,oFAAoF;QACpF,iEAAiE;QAC1D,oBAAe,GAAY,IAAI,CAAC;QAChC,wBAAmB,GAAY,KAAK,CAAC;QAW1C,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;QACtB,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC;QAE9B,+EAA+E;QAC/E,+EAA+E;QAC/E,0BAA0B;QAC1B,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;IAE9B,CAAC;IAED,MAAM;IACN,kBAAkB;IAClB,MAAM;IAEN,8DAA8D;IACvD,WAAW;QAEhB,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC;QACpD,IAAI,CAAC,WAAW,GAAG,SAAS,CAAC;IAE/B,CAAC;IAGD,yEAAyE;IAClE,QAAQ;QAEb,4EAA4E;QAC5E,6EAA6E;QAC7E,gFAAgF;QAChF,uEAAuE;QACvE,IAAI,IAAI,CAAC,eAAe,EAAE;YACxB,IAAI,CAAC,OAAO,CAAC,GAAG,CACZ,IAAI,CAAC,WAAW,CAAC,aAAa,EAC9B,CAAC,cAAuB,EAAE,EAAE;gBAE1B,IAAI,CAAC,cAAc,GAAG,cAAc,CAAC;gBACrC,IAAI,IAAI,CAAC,cAAc,EAAE;oBACvB,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC;iBACrD;YAEH,CAAC,CACJ,CAAC;SACH;IAEH,CAAC;;AApEH,kEAsEC;sGAlEY,2BAA2B;8EAA3B,2BAA2B;;;;;;;;;;;;;;;;ACPxC,qGAA0E;AAI1E,+HAAyF;AACzF,8GAA6E;AAC7E,6HAAuF;AAIvF,MAAa,mBAAmB;IAIvB,OAAO,CAAC,OAAgB;QAC7B,IAAI,CAAC,gBAAgB,GAAG,IAAI,2BAAY,CAAC,OAAO,CAAC,CAAC;IACpD,CAAC;IAEY,gBAAgB,CAAC,MAAc;;YAC1C,OAAO,MAAM,IAAI,CAAC,gBAAgB,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;QAC9D,CAAC;KAAA;IAEY,sBAAsB,CAAC,EAAU,EAAE,aAAsB,KAAK;;YACzE,OAAO,MAAM,IAAI,CAAC,gBAAgB,CAAC,sBAAsB,CAAC,EAAE,EAAE,UAAU,CAAC,CAAC;QAC5E,CAAC;KAAA;IAEY,gBAAgB,CAAC,GAAW,EAAE,aAAsB,KAAK;;YACpE,OAAO,MAAM,IAAI,CAAC,gBAAgB,CAAC,gBAAgB,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;QACvE,CAAC;KAAA;IAEY,kBAAkB,CAAC,MAAc,EAAE,aAAsB,KAAK;;YACzE,OAAO,MAAM,IAAI,CAAC,gBAAgB,CAAC,kBAAkB,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;QAC5E,CAAC;KAAA;IAEY,aAAa,CAAC,aAAsB,KAAK,EAAE,kBAA0B,CAAC;;YACjF,MAAM,UAAU,GAA4B,MAAM,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;YAClG,UAAU,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAY,EAAE,EAAE;gBAC/C,CAAC,yBAAM,CAAC,CAAC,CAAC,2BAA2B,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,2BAA2B,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAClG,CAAC,CAAC,CAAC,QAAQ,KAAK,yBAAQ,CAAC,QAAQ,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,uBAAuB,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC,IAAI,yBAAM,CAAC,CAAC,CAAC,uBAAuB,CAAC,CAAC,CAAC;oBAChI,CAAC,CAAC,CAAC,QAAQ,KAAK,yBAAQ,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,qBAAqB,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC,IAAI,yBAAM,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC,CAAC;YAClI,CAAC,CAAC,CAAC;YACH,OAAO,UAAU,CAAC;QACpB,CAAC;KAAA;IAEY,QAAQ,CAAC,aAAsB,KAAK;;YAC/C,OAAO,MAAM,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;QAC1D,CAAC;KAAA;IAEY,qBAAqB,CAAC,aAAsB,KAAK,EAAE,kBAA0B,CAAC;;YACzF,MAAM,kBAAkB,GAAuB,MAAM,IAAI,CAAC,gBAAgB,CAAC,qBAAqB,CAAC,UAAU,CAAC,CAAC;YAC7G,kBAAkB,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,MAAc,EAAE,EAAE;gBACnD,CAAC,2BAAO,CAAC,MAAM,CAAC,2BAA2B,CAAC,IAAI,CAAC,MAAM,CAAC,2BAA2B,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC;oBAC7G,CAAC,MAAM,CAAC,IAAI,KAAK,yBAAQ,CAAC,QAAQ,IAAI,CAAC,MAAM,CAAC,uBAAuB,GAAG,eAAe,CAAC,KAAK,CAAC,IAAI,2BAAO,CAAC,MAAM,CAAC,uBAAuB,CAAC,CAAC;oBAC1I,CAAC,MAAM,CAAC,IAAI,KAAK,yBAAQ,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,eAAe,GAAG,eAAe,CAAC,KAAK,CAAC,IAAI,2BAAO,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,CAAC;YAC3H,CAAC,CAAC,CAAC;YACH,OAAO,kBAAkB,CAAC;QAC5B,CAAC;KAAA;IAEY,cAAc,CAAC,MAAuB,EAAE,WAAmB,EAAE,eAAwB,EAAE,KAAc,EAAE,UAAmB;;YACrI,IAAI,CAAC,MAAM,EAAE;gBACX,OAAO,IAAI,CAAC;aACb;YACD,OAAO,MAAM,IAAI,CAAC,gBAAgB,CAAC,cAAc,CAAC,MAAM,EAAE,WAAW,EAAE,eAAe,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC;QAC7G,CAAC;KAAA;IAEY,eAAe,CAAC,SAAoB,EAAE,aAAsB,KAAK;;YAC5E,OAAO,MAAM,IAAI,CAAC,gBAAgB,CAAC,eAAe,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;QAC5E,CAAC;KAAA;IAEY,YAAY,CAAC,MAAc,EAAE,aAAsB,KAAK;;YACnE,OAAO,MAAM,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;QACtE,CAAC;KAAA;CAEF;AA/DD,kDA+DC;;;;;;;;;;;;;;;ACzED,wDAAiF;AAEjF,MAAa,WAAW;IAIZ,MAAM,CAAC,WAAW,CAAC,IAAqB;QAC5C,IAAI,CAAC,QAAQ,CAAC,CAAC,GAAa,EAAE,EAAE;YAC5B,IAAI,GAAG,YAAY,YAAI,EAAE;gBACrB,IAAI,GAAG,CAAC,QAAQ,EAAE;oBACd,GAAG,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;iBAC1B;gBACD,WAAW,CAAC,eAAe,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;aAC7C;YACD,IAAI,OAAQ,GAAW,CAAC,OAAO,KAAK,UAAU,EAAE;gBAC5C,aAAa;gBACb,GAAG,CAAC,OAAO,EAAE,CAAC;aACjB;QACL,CAAC,CAAC,CAAC;IACP,CAAC;IAEM,MAAM,CAAC,eAAe,CAAC,QAA+B;QACzD,IAAI,CAAC,QAAQ,EAAE;YACX,OAAO;SACV;QACD,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;YACzB,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;gBACpB,IAAI,CAAC,aAAa;qBACb,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;qBAChC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;gBACjD,IAAI,CAAC,OAAO,EAAE,CAAC,CAAI,qDAAqD;YAC5E,CAAC,CAAC,CAAC;SACN;aAAM;YACH,IAAI,CAAC,aAAa;iBACb,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,QAAQ,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC;iBACjE,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;YACrD,IAAI,QAAQ,CAAC,OAAO,EAAE;gBAClB,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAG,qDAAqD;aAC9E;SACJ;IACL,CAAC;IAEM,MAAM,CAAC,aAAa,CAAC,MAAuB;QAC/C,IAAI,CAAC,MAAM,EAAE;YACT,OAAO;SACV;QACD,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE;YACxB,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC;SAC/D;QACD,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;IAC7B,CAAC;;AAhDL,kCAiDC;AA/CU,yBAAa,GAAG,CAAC,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,WAAW,EAAE,aAAa,EAAE,QAAQ,EAAE,OAAO,EAAE,cAAc,EAAE,cAAc,CAAC,CAAC;;;;;;;;;;;;;ACJzI,mFAAmF;AACnF,8FAA8F;AAC9F,yEAAyE;AACzE,gFAAgF;;;AAEnE,mBAAW,GAAG;IACzB,UAAU,EAAE,KAAK;CAClB,CAAC;;;;;;;;;;;;;;;;ACPF,yHAAsF;AACtF,2FAA8D;AAC9D,6EAAgD;AAEhD,yEAA6C;AAC7C,oFAAwD;AACxD,6EAAgD;AAEhD,wDASe;AACf,qEAA4C;AAC5C,uEAA2C;AAE3C,MAAa,eAAe;IAA5B;QAKU,gBAAW,GAAwB,EAAE,CAAC;QAEtC,yBAAoB,GAA6B,IAAI,GAAG,EAAE,CAAC;IAigBrE,CAAC;IA/fQ,UAAU;QACf,MAAM,YAAY,GAAkB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC,MAAM,EAAE,CAAC,CAAC;QACnF,YAAY,CAAC,OAAO,CAAC,CAAC,UAAU,EAAE,EAAE;YAClC,UAAU,CAAC,OAAO,CAAC,CAAC,SAAS,EAAE,EAAE;gBAC/B,IAAI;oBACF,IAAI,SAAS,CAAC,QAAQ,EAAE;wBACtB,IAAI,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE;4BAC9B,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;yBACtC;wBACD,IAAI,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE;4BAC7B,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;yBACrC;wBACD,IAAI,SAAS,CAAC,QAAQ,CAAC,SAAS,EAAE;4BAChC,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;yBACxC;wBACD,IAAI,SAAS,CAAC,QAAQ,CAAC,SAAS,EAAE;4BAChC,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;yBACxC;wBACD,IAAI,SAAS,CAAC,QAAQ,CAAC,EAAE,EAAE;4BACzB,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC;yBACjC;qBACF;iBACF;gBAAC,OAAO,CAAC,EAAE;iBACX;YACH,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QACH,gCAAc,CAAC,UAAU,EAAE,CAAC;QAC5B,wBAAU,CAAC,UAAU,EAAE,CAAC;IAC1B,CAAC;IAEY,QAAQ,CAAC,GAAa,EAAE,KAAY,EAAE,SAAkB,KAAK;;YACxE,IAAI;gBACF,MAAM,GAAG,GAAW,KAAK,CAAC,MAAM,CAAC;gBACjC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE;oBAC5B,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,cAAc,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,KAAK,kCAAY,CAAC,IAAI,EAAE;wBACzG,MAAM,YAAY,GAChB,MAAM,gCAAc,CAAC,aAAa,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,cAAc,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;wBAC1G,IAAI,YAAY,EAAE;4BAChB,MAAM,aAAa,GAAc,IAAI,qBAAS,EAAE,CAAC;4BACjD,aAAa,CAAC,MAAM,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;4BACxD,aAAa,CAAC,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC;4BAClD,aAAa,CAAC,cAAc,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,cAAc,CAAC;4BAChE,aAAa,CAAC,QAAQ,GAAG,MAAM,wBAAU,CAAC,uBAAuB,CAAC,YAAY,CAAC,CAAC;4BAChF,sCAAsC;4BACtC,IAAI,CAAC,kBAAkB,CAAC,GAAG,EAAE,aAAa,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;yBACpE;qBACF;iBACF;aACF;YAAC,OAAO,CAAC,EAAE;gBACV,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;aAClB;QACH,CAAC;KAAA;IAEY,aAAa,CAAC,GAAa,EAAE,KAAY,EAAE,SAAkB,KAAK;;YAC7E,IAAI;gBACF,MAAM,GAAG,GAAW,KAAK,CAAC,MAAM,CAAC;gBACjC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE;oBAC5B,MAAM,UAAU,GAAe,KAAK,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC;oBACnD,IAAI,CAAC,UAAU,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE;wBAC1C,IAAI,IAAI,CAAC,uBAAuB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE;4BACjD,KAAK,CAAC,CAAC,CAAC,CAAC,UAAU,GAAG,IAAI,CAAC,uBAAuB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;4BACpE,IAAI,CAAC,gBAAgB,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;4BAC7C,SAAS;yBACV;6BAAM;4BACL,SAAS;yBACV;qBACF;oBACD,MAAM,mBAAmB,GAAgB,EAAE,CAAC;oBAC5C,MAAM,gBAAgB,GAAmB,EAAE,CAAC;oBAC5C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;wBAC1C,gBAAgB,CAAC,IAAI,CACnB,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,cAAc,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;6BACnE,IAAI,CAAC,CAAC,iBAAoC,EAAE,EAAE;4BAC7C,MAAM,YAAY,GAAc,IAAI,qBAAS,EAAE,CAAC;4BAChD,YAAY,CAAC,MAAM,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,KAAK,WAAW,CAAC,CAAC,CAAE,UAAU,CAAC,CAAC,CAA0B,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;4BACrJ,YAAY,CAAC,IAAI,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,KAAK,WAAW,CAAC,CAAC,CAAE,UAAU,CAAC,CAAC,CAA0B,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;4BACzI,YAAY,CAAC,OAAO,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;4BAC7C,YAAY,CAAC,UAAU,GAAI,UAAU,CAAC,CAAC,CAAS,CAAC,UAAU,CAAC;4BAC5D,YAAY,CAAC,cAAc,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC;4BAC3D,YAAY,CAAC,iBAAiB,GAAI,UAAU,CAAC,CAAC,CAAS,CAAC,iBAAiB,CAAC;4BAC1E,YAAY,CAAC,UAAU,GAAI,UAAU,CAAC,CAAC,CAAS,CAAC,UAAU,CAAC;4BAC5D,YAAY,CAAC,QAAQ,GAAG,iBAAiB,CAAC,CAAC,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC;4BAC9E,mBAAmB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;wBACzC,CAAC,CAAC,CACL,CAAC;qBACH;oBACD,MAAM,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;oBACpC,IAAI,CAAC,uBAAuB,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,mBAAmB,CAAC,CAAC;oBACzF,KAAK,CAAC,CAAC,CAAC,CAAC,UAAU,GAAG,mBAAmB,CAAC;oBAC1C,IAAI,CAAC,gBAAgB,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;iBAC9C;aACF;YAAC,OAAO,CAAC,EAAE;gBACV,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;aACtB;QACH,CAAC;KAAA;IAEM,GAAG,CAAC,EAAU;QACnB,MAAM,GAAG,GAAW,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC;QAC5C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE;YAC5B,IAAI,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE;gBAC3D,OAAO,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;aAC5B;SACF;IACH,CAAC;IAEM,GAAG,CAAC,UAA6B;QACtC,MAAM,GAAG,GAAW,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,UAAU,CAAC,EAAE,CAAC,CAAC;QAC5E,IAAI,GAAG,GAAG,CAAC,CAAC,EAAE;YACZ,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,UAAU,CAAC;SACpC;aAAM;YACL,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;SACnC;IACH,CAAC;IAEM,iBAAiB,CAAC,SAAmB;QAC1C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACzC,MAAM,QAAQ,GAAW,SAAS,CAAC,CAAC,CAAC,CAAC;YACtC,IAAI,QAAQ,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE;gBACnC,MAAM,QAAQ,GAAsB,IAAI,sCAAiB,EAAE,CAAC;gBAC5D,QAAQ,CAAC,EAAE,GAAG,QAAQ,CAAC;gBACvB,QAAQ,CAAC,OAAO,GAAG,IAAI,CAAC;gBACxB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;gBAChC,gCAAc,CAAC,aAAa,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC;qBACnD,IAAI,CAAC,CAAC,iBAAoC,EAAE,EAAE;oBAC7C,QAAQ,CAAC,OAAO,GAAG,KAAK,CAAC;oBACzB,IAAI,iBAAiB,EAAE;wBACrB,+BAA+B;wBAC/B,QAAQ,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAC;qBACtC;oBACD,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;gBACjC,CAAC,CAAC;qBACD,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;oBACb,OAAO,CAAC,KAAK,CAAC,2BAA2B,QAAQ,GAAG,EAAE,GAAG,CAAC,CAAC;oBAC3D,QAAQ,CAAC,OAAO,GAAG,KAAK,CAAC;oBACzB,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAC7B,CAAC,CAAC,CAAC;aACN;SACF;IACH,CAAC;IAEY,gBAAgB,CAAC,QAAgB;;YAC5C,IAAI,CAAC,QAAQ,EAAE;gBACb,OAAO,IAAI,CAAC;aACb;YACD,MAAM,QAAQ,GAAsB,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YACvD,IAAI,CAAC,QAAQ,EAAE;gBACb,OAAO,IAAI,CAAC;aACb;YACD,IAAI,QAAQ,CAAC,OAAO,EAAE;gBACpB,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,uBAAuB,CAAC,QAAQ,CAAC,CAAC;gBAC1D,MAAM,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,CAAC;gBAC3C,OAAO,IAAI,CAAC;aACb;iBAAM;gBACL,MAAM,IAAI,CAAC,yBAAyB,CAAC,QAAQ,CAAC,CAAC;gBAC/C,OAAO,QAAQ,CAAC;aACjB;QACH,CAAC;KAAA;IAEa,yBAAyB,CAAC,QAA2B;;YACjE,IAAI,QAAQ,EAAE;gBACZ,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE;oBACtB,QAAQ,CAAC,QAAQ,GAAG,MAAM,wBAAU,CAAC,uBAAuB,CAAC,QAAQ,CAAC,CAAC;iBACxE;aACF;QACH,CAAC;KAAA;IAEO,uBAAuB,CAAC,QAA2B;QACzD,OAAO,IAAI,OAAO,CAAC,CAAC,OAAiB,EAAE,EAAE;YACvC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,kBAAM,CAAC,CAAC,KAAK,EAA8B,EAAE,CAAC,KAAK,KAAK,SAAS,CAAC,EAAE,gBAAI,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,KAAK,EAAE,EAAE;gBACpH,OAAO,CAAC,KAAK,CAAC,CAAC;YACjB,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,wBAAwB,CAAC,GAAa,EAAE,kBAA0B,EAAE,IAAY,EAAE,KAAU;QAClG,OAAO,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE;YACnC,OAAO,KAAK,CAAC,QAAQ;gBACnB,KAAK,CAAC,QAAQ,CAAC,cAAc,CAAC,kBAAkB,CAAC;gBACjD,KAAK,CAAC,QAAQ,CAAC,kBAAkB,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC;gBACvD,KAAK,CAAC,QAAQ,CAAC,kBAAkB,CAAC,CAAC,IAAI,CAAC,KAAK,KAAK,CAAC;QACvD,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,kBAAkB,CAAC,GAAa,EAAE,YAAiB,EAAE,MAAW,EAAE,SAAkB,KAAK;QAC/F,MAAM,QAAQ,GAAG,IAAI,CAAC,wBAAwB,CAAC,GAAG,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;QACjF,MAAM,GAAG,GAAW,QAAQ,CAAC,MAAM,CAAC;QACpC,KAAK,IAAI,CAAC,GAAW,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE;YACpC,MAAM,KAAK,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;YAC1B,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,EAAE;gBACzC,KAAK,CAAC,QAAQ,CAAC,CAAC,IAAS,EAAE,EAAE;oBAC3B,IAAI,CAAC,IAAI,YAAY,YAAI,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,KAAK,MAAM,CAAC,IAAI,YAAY,EAAE;wBAC9E,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,wBAAwB;4BAC1D,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,GAAW,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,EAAE;gCAClE,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,EAAE;oCACrE,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,6BAA6B,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,YAAY,EAAE,MAAM,CAAC,CAAC;iCACpG;6BACF;yBACF;6BAAM;4BACL,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,EAAE;gCACxF,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,6BAA6B,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,YAAY,EAAE,MAAM,CAAC,CAAC;6BAC9F;yBACF;qBACF;gBACH,CAAC,CAAC,CAAC;aACJ;SACF;IACH,CAAC;IAEO,gBAAgB,CAAC,GAAa,EAAE,IAAS,EAAE,SAAkB,KAAK;QACxE,MAAM,QAAQ,GAAG,IAAI,CAAC,wBAAwB,CAAC,GAAG,EAAE,WAAW,EAAE,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QACpF,MAAM,GAAG,GAAW,QAAQ,CAAC,MAAM,CAAC;QACpC,KAAK,IAAI,CAAC,GAAW,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE;YACpC,MAAM,KAAK,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;YAC1B,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,EAAE;gBACzC,KAAK,CAAC,QAAQ,CAAC,CAAC,IAAS,EAAE,EAAE;oBAC3B,IAAI,CAAC,IAAI,YAAY,YAAI,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;wBACxJ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;4BAC/C,MAAM,SAAS,GAAc,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;4BAChD,IAAI,SAAS,CAAC,QAAQ,EAAE;gCACtB,MAAM,gBAAgB,GAAW,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;gCACzG,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,wBAAwB;oCAC1D,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,GAAW,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,EAAE;wCAClE,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,EAAE;4CACxE,IAAI,CAAC,SAAS,CAAC,QAAQ,YAAY,mBAAQ,IAAI,SAAS,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,KAAK,UAAU,CAAC,IAAI,SAAS,CAAC,QAAQ,CAAC,UAAU,EAAE;gDACnI,wBAAwB;gDACxB,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,QAAQ,CAAC;gDACtC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,aAAa,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,eAAe,CAAC,EAAE;oDACnH,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;iDACzB;6CACF;iDAAM;gDACL,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,6BAA6B,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;gDAChG,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,aAAa,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,eAAe,CAAC,EAAE;oDACnH,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;iDACzB;6CACF;yCACF;qCACF;iCACF;qCAAM;oCACL,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,EAAE;wCAC3F,IAAI,CAAC,SAAS,CAAC,QAAQ,YAAY,mBAAQ,IAAI,SAAS,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,KAAK,UAAU,CAAC,IAAI,SAAS,CAAC,QAAQ,CAAC,UAAU,EAAE;4CACnI,wBAAwB;4CACxB,IAAI,CAAC,QAAQ,GAAG,SAAS,CAAC,QAAQ,CAAC;4CACnC,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,KAAK,aAAa,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,KAAK,eAAe,EAAE;gDAClF,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;6CACzB;yCACF;6CAAM;4CACL,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,6BAA6B,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;4CAC1F,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,KAAK,aAAa,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,KAAK,eAAe,EAAE;gDAClF,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;6CACzB;yCACF;qCACF;iCACF;6BACF;yBACF;qBACF;gBACH,CAAC,CAAC,CAAC;aACJ;SACF;IACH,CAAC;IAEO,6BAA6B,CAAC,IAAY,EAAE,SAAoB,EAAE,SAAkB,KAAK;QAC/F,MAAM,QAAQ,GAAG,SAAS,CAAC,QAAQ,CAAC;QACpC,IAAI,QAAQ,CAAC,OAAO,EAAE;YACpB,QAAQ,CAAC,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC;YACpC,QAAQ,CAAC,OAAO,CAAC,OAAO,GAAG,wCAAgC,CAAC;SAC7D;QACD,IAAI,CAAC,MAAM,EAAE;YACX,MAAM,WAAW,GAAsB,IAAI,yBAAiB,CAAC;gBAC3D,IAAI,EAAE,IAAI;gBACV,SAAS,EAAE,QAAQ,CAAC,SAAS;gBAC7B,QAAQ,EAAE,QAAQ,CAAC,QAAQ;gBAC3B,GAAG,EAAE,QAAQ,CAAC,OAAO;gBACrB,SAAS,EAAE,QAAQ,CAAC,MAAM;aAC3B,CAAC,CAAC;YACH,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;YACxC,WAAW,CAAC,WAAW,GAAG,IAAI,CAAC;YAC/B,OAAO,WAAW,CAAC;SACpB;QACD,IAAI,QAAQ,CAAC,KAAK,IAAI,QAAQ,CAAC,UAAU,IAAI,QAAQ,CAAC,YAAY,IAAI,QAAQ,CAAC,YAAY,EAAE,EAAE,iEAAiE;YAC9J,MAAM,MAAM,GAAmC;gBAC7C,mDAAmD;gBACnD,IAAI,EAAE,IAAI;gBACV,SAAS,EAAE,QAAQ,CAAC,cAAc,KAAK,SAAS,IAAI,QAAQ,CAAC,cAAc,KAAK,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;gBAClH,SAAS,EAAE,QAAQ,CAAC,cAAc,KAAK,SAAS,IAAI,QAAQ,CAAC,cAAc,KAAK,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;gBAClH,eAAe,EAAE,QAAQ,CAAC,eAAe,CAAC,CAAC,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC,CAAC,IAAI;gBAC3E,YAAY,EAAE,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI;gBAClE,qBAAqB,EAAE,QAAQ,CAAC,qBAAqB,CAAC,CAAC,CAAC,QAAQ,CAAC,qBAAqB,CAAC,CAAC,CAAC,IAAI;gBAC7F,mBAAmB,EAAE,QAAQ;gBAC7B,mBAAmB;gBACnB,gBAAgB;gBAChB,qBAAqB;aACtB,CAAC;YACF,IAAI,QAAQ,CAAC,iBAAiB,EAAE;gBAC9B,MAAM,CAAC,iBAAiB,GAAG,QAAQ,CAAC,iBAAiB,CAAC;aACvD;YACD,IAAI,QAAQ,CAAC,OAAO,EAAE;gBACpB,MAAM,CAAC,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC;aACnC;YACD,IAAI,QAAQ,CAAC,WAAW,EAAE;gBACxB,MAAM,CAAC,WAAW,GAAG,QAAQ,CAAC,WAAW,CAAC;aAC3C;YACD,IAAI,QAAQ,CAAC,aAAa,EAAE;gBAC1B,MAAM,CAAC,QAAQ,GAAG,QAAQ,CAAC,aAAa,CAAC;aAC1C;YACD,IAAI,QAAQ,CAAC,sBAAsB,EAAE;gBACnC,MAAM,CAAC,iBAAiB,GAAG,QAAQ,CAAC,sBAAsB,CAAC;aAC5D;YACD,IAAI,QAAQ,CAAC,OAAO,EAAE;gBACpB,MAAM,CAAC,GAAG,GAAG,QAAQ,CAAC,OAAO,CAAC;gBAC9B,MAAM,CAAC,GAAG,CAAC,WAAW,GAAG,IAAI,CAAC;aAC/B;YACD,IAAI,QAAQ,CAAC,EAAE,EAAE;gBACf,MAAM,CAAC,KAAK,GAAG,QAAQ,CAAC,EAAE,CAAC;gBAC3B,MAAM,CAAC,KAAK,CAAC,WAAW,GAAG,IAAI,CAAC;aACjC;YACD,IAAI,QAAQ,CAAC,SAAS,EAAE;gBACtB,MAAM,CAAC,YAAY,GAAG,QAAQ,CAAC,SAAS,CAAC;gBACzC,MAAM,CAAC,YAAY,CAAC,WAAW,GAAG,IAAI,CAAC;gBACvC,gDAAgD;aACjD;YACD,IAAI,QAAQ,CAAC,SAAS,EAAE;gBACtB,MAAM,CAAC,YAAY,GAAG,QAAQ,CAAC,SAAS,CAAC;gBACzC,MAAM,CAAC,YAAY,CAAC,WAAW,GAAG,IAAI,CAAC;aACxC;YACD,IAAI,QAAQ,CAAC,MAAM,EAAE;gBACnB,MAAM,CAAC,SAAS,GAAG,QAAQ,CAAC,MAAM,CAAC;gBACnC,MAAM,CAAC,SAAS,CAAC,WAAW,GAAG,IAAI,CAAC;aACrC;YACD,IAAI,QAAQ,CAAC,YAAY,EAAE;gBACzB,MAAM,CAAC,eAAe,GAAG,QAAQ,CAAC,YAAY,CAAC;gBAC/C,MAAM,CAAC,eAAe,CAAC,WAAW,GAAG,IAAI,CAAC;aAC3C;YACD,IAAI,QAAQ,CAAC,QAAQ,EAAE;gBACrB,MAAM,CAAC,WAAW,GAAG,QAAQ,CAAC,QAAQ,CAAC;gBACvC,MAAM,CAAC,WAAW,CAAC,WAAW,GAAG,IAAI,CAAC;aACvC;YACD,IAAI,QAAQ,CAAC,MAAM,EAAE;gBACnB,IAAI,QAAQ,CAAC,eAAe,IAAI,IAAI,IAAI,CAAC,EAAE;oBACzC,MAAM,CAAC,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC;oBAChC,MAAM,CAAC,MAAM,CAAC,WAAW,GAAG,IAAI,CAAC;oBACjC,QAAQ,CAAC,MAAM,CAAC,OAAO,GAAG,wCAAgC,CAAC;oBAC3D,QAAQ,CAAC,MAAM,CAAC,SAAS,GAAG,qBAAa,CAAC;oBAC1C,QAAQ,CAAC,MAAM,CAAC,SAAS,GAAG,qBAAa,CAAC;iBAC3C;aACF;YACD,IAAI,QAAQ,CAAC,YAAY,EAAE;gBACzB,MAAM,CAAC,YAAY,GAAG,QAAQ,CAAC,YAAY,CAAC;aAC7C;YACD,IAAI,QAAQ,CAAC,IAAI,EAAE;gBACjB,MAAM,CAAC,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC;aAC7B;iBAAM;gBACL,MAAM,CAAC,IAAI,GAAG,kBAAU,CAAC;aAC1B;YAED,MAAM,WAAW,GAAyB,IAAI,4BAAoB,CAAC,MAAM,CAAC,CAAC;YAC3E,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;YAClC,IAAI,QAAQ,CAAC,KAAK,EAAE;gBAClB,WAAW,CAAC,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC;aACpC;YAED,IAAI,QAAQ,CAAC,UAAU,EAAE;gBACvB,WAAW,CAAC,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;aACtE;iBAAM;gBACL,kCAAkC;gBAClC,WAAW,CAAC,UAAU,GAAG,IAAI,aAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;aAC7C;YAED,IAAI,QAAQ,CAAC,cAAc,EAAE;gBAC3B,WAAW,CAAC,cAAc,GAAG,QAAQ,CAAC,cAAc,CAAC;aACtD;YACD,IAAI,QAAQ,CAAC,aAAa,EAAE;gBAC1B,WAAW,CAAC,aAAa,GAAG,QAAQ,CAAC,aAAa,CAAC;gBACnD,WAAW,CAAC,aAAa,CAAC,WAAW,GAAG,IAAI,CAAC;aAC9C;YACD,IAAI,QAAQ,CAAC,iBAAiB,EAAE;gBAC9B,WAAW,CAAC,iBAAiB,GAAG,QAAQ,CAAC,iBAAiB,CAAC;gBAC3D,WAAW,CAAC,iBAAiB,CAAC,WAAW,GAAG,IAAI,CAAC;aAClD;YACD,IAAI,QAAQ,CAAC,YAAY,EAAE;gBACzB,WAAW,CAAC,YAAY,GAAG,QAAQ,CAAC,YAAY,CAAC;aAClD;YACD,IAAI,QAAQ,CAAC,GAAG,KAAK,SAAS,IAAI,QAAQ,CAAC,GAAG,KAAK,IAAI,EAAE;gBACvD,WAAW,CAAC,GAAG,GAAG,QAAQ,CAAC,GAAG,CAAC;aAChC;YACD,IAAI,QAAQ,CAAC,SAAS,KAAK,SAAS,IAAI,QAAQ,CAAC,SAAS,KAAK,IAAI,EAAE;gBACnE,WAAW,CAAC,SAAS,GAAG,QAAQ,CAAC,SAAS,CAAC;aAC5C;YACD,IAAI,QAAQ,CAAC,iBAAiB,KAAK,SAAS,IAAI,QAAQ,CAAC,iBAAiB,KAAK,IAAI,EAAE;gBACnF,WAAW,CAAC,iBAAiB,GAAG,QAAQ,CAAC,iBAAiB,CAAC;aAC5D;YACD,IAAI,QAAQ,CAAC,eAAe,EAAE;gBAC5B,WAAW,CAAC,eAAe,GAAG,QAAQ,CAAC,eAAe,CAAC;gBACvD,WAAW,CAAC,eAAe,CAAC,WAAW,GAAG,IAAI,CAAC;aAChD;YAED,WAAW,CAAC,WAAW,GAAG,IAAI,CAAC;YAC/B,OAAO,WAAW,CAAC;SACpB;aAAM;YACL,MAAM,MAAM,GAAmC;gBAC7C,mDAAmD;gBACnD,IAAI,EAAE,IAAI;gBACV,SAAS,EAAE,QAAQ,CAAC,cAAc,KAAK,SAAS,IAAI,QAAQ,CAAC,cAAc,KAAK,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;gBAClH,SAAS,EAAE,QAAQ,CAAC,cAAc,KAAK,SAAS,IAAI,QAAQ,CAAC,cAAc,KAAK,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;gBAClH,eAAe,EAAE,QAAQ,CAAC,eAAe,CAAC,CAAC,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC,CAAC,IAAI;gBAC3E,mBAAmB;gBACnB,gBAAgB;gBAChB,qBAAqB;aACtB,CAAC;YACF,IAAI,QAAQ,CAAC,iBAAiB,EAAE;gBAC9B,MAAM,CAAC,iBAAiB,GAAG,QAAQ,CAAC,iBAAiB,CAAC;aACvD;YACD,IAAI,QAAQ,CAAC,OAAO,EAAE;gBACpB,MAAM,CAAC,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC;aACnC;YACD,IAAI,QAAQ,CAAC,WAAW,EAAE;gBACxB,MAAM,CAAC,WAAW,GAAG,QAAQ,CAAC,WAAW,CAAC;aAC3C;YACD,IAAI,QAAQ,CAAC,aAAa,EAAE;gBAC1B,MAAM,CAAC,QAAQ,GAAG,QAAQ,CAAC,aAAa,CAAC;aAC1C;YACD,IAAI,QAAQ,CAAC,sBAAsB,EAAE;gBACnC,MAAM,CAAC,iBAAiB,GAAG,QAAQ,CAAC,sBAAsB,CAAC;aAC5D;YACD,IAAI,QAAQ,CAAC,OAAO,EAAE;gBACpB,MAAM,CAAC,GAAG,GAAG,QAAQ,CAAC,OAAO,CAAC;gBAC9B,MAAM,CAAC,GAAG,CAAC,WAAW,GAAG,IAAI,CAAC;aAC/B;YACD,IAAI,QAAQ,CAAC,EAAE,EAAE;gBACf,MAAM,CAAC,KAAK,GAAG,QAAQ,CAAC,EAAE,CAAC;gBAC3B,MAAM,CAAC,KAAK,CAAC,WAAW,GAAG,IAAI,CAAC;aACjC;YACD,IAAI,QAAQ,CAAC,SAAS,EAAE;gBACtB,MAAM,CAAC,YAAY,GAAG,QAAQ,CAAC,SAAS,CAAC;gBACzC,MAAM,CAAC,YAAY,CAAC,WAAW,GAAG,IAAI,CAAC;gBACvC,gDAAgD;aACjD;YACD,IAAI,QAAQ,CAAC,SAAS,EAAE;gBACtB,MAAM,CAAC,YAAY,GAAG,QAAQ,CAAC,SAAS,CAAC;gBACzC,MAAM,CAAC,YAAY,CAAC,WAAW,GAAG,IAAI,CAAC;aACxC;YACD,IAAI,QAAQ,CAAC,MAAM,EAAE;gBACnB,MAAM,CAAC,SAAS,GAAG,QAAQ,CAAC,MAAM,CAAC;gBACnC,MAAM,CAAC,SAAS,CAAC,WAAW,GAAG,IAAI,CAAC;aACrC;YACD,IAAI,QAAQ,CAAC,YAAY,EAAE;gBACzB,MAAM,CAAC,eAAe,GAAG,QAAQ,CAAC,YAAY,CAAC;gBAC/C,MAAM,CAAC,eAAe,CAAC,WAAW,GAAG,IAAI,CAAC;aAC3C;YACD,IAAI,QAAQ,CAAC,QAAQ,EAAE;gBACrB,MAAM,CAAC,WAAW,GAAG,QAAQ,CAAC,QAAQ,CAAC;gBACvC,MAAM,CAAC,WAAW,CAAC,WAAW,GAAG,IAAI,CAAC;aACvC;YACD,IAAI,QAAQ,CAAC,MAAM,EAAE;gBACnB,IAAI,QAAQ,CAAC,eAAe,IAAI,IAAI,IAAI,CAAC,EAAE;oBACzC,MAAM,CAAC,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC;oBAChC,MAAM,CAAC,MAAM,CAAC,WAAW,GAAG,IAAI,CAAC;oBACjC,QAAQ,CAAC,MAAM,CAAC,OAAO,GAAG,wCAAgC,CAAC;oBAC3D,QAAQ,CAAC,MAAM,CAAC,SAAS,GAAG,qBAAa,CAAC;oBAC1C,QAAQ,CAAC,MAAM,CAAC,SAAS,GAAG,qBAAa,CAAC;iBAC3C;aACF;YACD,IAAI,QAAQ,CAAC,IAAI,EAAE;gBACjB,MAAM,CAAC,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC;aAC7B;iBAAM;gBACL,MAAM,CAAC,IAAI,GAAG,kBAAU,CAAC;aAC1B;YAED,MAAM,WAAW,GAAyB,IAAI,4BAAoB,CAAC,MAAM,CAAC,CAAC;YAC3E,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;YAClC,WAAW,CAAC,WAAW,GAAG,IAAI,CAAC;YAE/B,OAAO,WAAW,CAAC;SACpB;IACH,CAAC;IAEO,uBAAuB,CAAC,EAAU,EAAE,SAAsB;QAChE,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC;IAC/C,CAAC;IAEO,uBAAuB,CAAC,EAAU;QACxC,IAAI,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE;YACrC,OAAO,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;SAC1C;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAEO,iBAAiB,CAAC,KAA8B;QACtD,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;YAC7B,IAAI,qCAAqC,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;gBACrD,OAAO,IAAI,aAAK,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC;aAChD;SACF;aAAM,IAAI,KAAK,YAAY,aAAK,IAAI,KAAK,CAAC,WAAW,CAAC,IAAI,KAAK,OAAO,EAAE;YACvE,OAAO,KAAc,CAAC;SACvB;aAAM;YACL,IAAI;gBACF,OAAO,IAAI,aAAK,CAAC,KAAK,CAAC,CAAC;aACzB;YAAC,OAAO,CAAC,EAAE;gBACV,OAAO,IAAI,aAAK,EAAE,CAAC;aACpB;SACF;QAED,OAAO,IAAI,aAAK,EAAE,CAAC;IACrB,CAAC;IAEO,IAAI,CAAC,OAAe;QAC1B,IAAI,IAAI,CAAC,KAAK,EAAE;YACd,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YACpB,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,EAAE,OAAO,CAAC,CAAC;SAClC;IACH,CAAC;CACF;AAxgBD,0CAwgBC;;;;;;;;;;;;;;;;AC7hBD,8DAA+C;AAG/C,mFAAyD;AACzD,wEAA2C;AAE3C,IAAI,yBAAW,CAAC,UAAU,EAAE;IAC1B,qBAAc,EAAE,CAAC;CAClB;AAED,qCAAwB,CAAC,eAAe,CAAC,sBAAS,CAAC,CAAC;;;;;;;;;;;;;;;ACVpD,wDAAqC;AAErC,MAAa,QAAQ;IAArB;QAGS,aAAQ,GAAU,IAAI,aAAK,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;QAC3C,cAAS,GAAG,CAAC,CAAC;QAQd,YAAO,GAAG,CAAC,CAAC;QACZ,YAAO,GAAG,CAAC,CAAC;QACZ,WAAM,GAAG,KAAK,CAAC;IA2BxB,CAAC;CAAA;AAzCD,4BAyCC;;;;;;;;;;;;;;;AC3CD,sDAA8C;AAE9C,MAAa,yBAAyB;CAKrC;AALD,8DAKC;AAED,MAAa,iBAAiB;IAA9B;QAES,aAAQ,GAA8B,IAAI,yBAAyB,EAAE,CAAC;QA4CtE,YAAO,GAAY,KAAK,CAAC;QACzB,WAAM,GAAuC,IAAI,sBAAe,CAAoB,SAAS,CAAC,CAAC;IA8CxG,CAAC;IA5CQ,QAAQ,CAAC,QAA2B;QACzC,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC;QAClC,IAAI,CAAC,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC;QAChC,IAAI,CAAC,eAAe,GAAG,QAAQ,CAAC,eAAe,CAAC;QAChD,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC;QAC9B,IAAI,CAAC,cAAc,GAAG,QAAQ,CAAC,cAAc,CAAC;QAC9C,IAAI,CAAC,EAAE,GAAG,QAAQ,CAAC,EAAE,CAAC;QACtB,IAAI,CAAC,UAAU,GAAG,QAAQ,CAAC,UAAU,CAAC;QACtC,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC,SAAS,CAAC;QACpC,IAAI,CAAC,iBAAiB,GAAG,QAAQ,CAAC,iBAAiB,CAAC;QACpD,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC,SAAS,CAAC;QACpC,IAAI,CAAC,iBAAiB,GAAG,QAAQ,CAAC,iBAAiB,CAAC;QACpD,IAAI,CAAC,GAAG,GAAG,QAAQ,CAAC,GAAG,CAAC;QACxB,IAAI,CAAC,WAAW,GAAG,QAAQ,CAAC,WAAW,CAAC;QACxC,IAAI,CAAC,YAAY,GAAG,QAAQ,CAAC,YAAY,CAAC;QAC1C,IAAI,CAAC,iBAAiB,GAAG,QAAQ,CAAC,iBAAiB,CAAC;QACpD,IAAI,CAAC,oBAAoB,GAAG,QAAQ,CAAC,oBAAoB,CAAC;QAC1D,IAAI,CAAC,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC;QAC5B,IAAI,CAAC,UAAU,GAAG,QAAQ,CAAC,UAAU,CAAC;QACtC,IAAI,CAAC,aAAa,GAAG,QAAQ,CAAC,aAAa,CAAC;QAC5C,IAAI,CAAC,qBAAqB,GAAG,QAAQ,CAAC,qBAAqB,CAAC;QAC5D,IAAI,CAAC,eAAe,GAAG,QAAQ,CAAC,eAAe,CAAC;QAChD,IAAI,CAAC,uBAAuB,GAAG,QAAQ,CAAC,uBAAuB,CAAC;QAChE,IAAI,CAAC,cAAc,GAAG,QAAQ,CAAC,cAAc,CAAC;QAC9C,IAAI,CAAC,iBAAiB,GAAG,QAAQ,CAAC,iBAAiB,CAAC;QACpD,IAAI,CAAC,yBAAyB,GAAG,QAAQ,CAAC,yBAAyB,CAAC;QACpE,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC;QAClC,IAAI,CAAC,gBAAgB,GAAG,QAAQ,CAAC,gBAAgB,CAAC;QAClD,IAAI,CAAC,iBAAiB,GAAG,QAAQ,CAAC,iBAAiB,CAAC;QACpD,IAAI,CAAC,aAAa,GAAG,QAAQ,CAAC,aAAa,CAAC;QAC5C,IAAI,CAAC,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC;QAChC,IAAI,CAAC,WAAW,GAAG,QAAQ,CAAC,WAAW,CAAC;QACxC,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC;QAC9B,IAAI,CAAC,cAAc,GAAG,QAAQ,CAAC,cAAc,CAAC;QAC9C,IAAI,CAAC,eAAe,GAAG,QAAQ,CAAC,eAAe,CAAC;QAChD,IAAI,CAAC,YAAY,GAAG,QAAQ,CAAC,YAAY,CAAC;QAC1C,IAAI,CAAC,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC;QAC1B,IAAI,CAAC,YAAY,GAAG,QAAQ,CAAC,YAAY,CAAC;QAC1C,IAAI,CAAC,GAAG,GAAG,QAAQ,CAAC,GAAG,CAAC;QACxB,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC,SAAS,CAAC;QACpC,IAAI,CAAC,iBAAiB,GAAG,QAAQ,CAAC,iBAAiB,CAAC;QACpD,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC;IACpC,CAAC;CAEF;AA7FD,8CA6FC;;;;;;;;;;;;;;;ACpGD,MAAa,SAAS;CASrB;AATD,8BASC;;;;;;;;;;;;;;;;ACXD,uEAA2C;AAC3C,sEAAyC;AAEzC,wDAA4C;AAE5C,MAAa,iBAAkB,SAAQ,mBAAQ;CAc9C;AAdD,8CAcC;AAED,MAAa,UAAU;IAEd,MAAM,CAAO,uBAAuB,CAAC,KAAwB;;YAClE,MAAM,QAAQ,GAAsB,IAAI,mBAAQ,EAAE,CAAC;YACnD,IAAI;gBACF,IAAI,CAAC,KAAK,EAAE;oBACV,OAAO,QAAQ,CAAC;iBACjB;gBACD,IAAI,KAAK,CAAC,QAAQ,EAAE;oBAClB,UAAU,CAAC,qBAAqB,CAAC,QAAQ,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;iBAC5D;gBACD,IAAI,KAAK,CAAC,OAAO,EAAE;oBACjB,QAAQ,CAAC,OAAO,GAAG,MAAM,wBAAU,CAAC,uBAAuB,CAAC,KAAK,CAAC,EAAE,GAAG,UAAU,EAAE,KAAK,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;oBAC5G,QAAQ,CAAC,OAAO,CAAC,UAAU,GAAG,sBAAc,CAAC;oBAC7C,QAAQ,CAAC,eAAe,GAAG,KAAK,CAAC,eAAe,CAAC;iBAClD;gBACD,IAAI,KAAK,CAAC,MAAM,EAAE;oBAChB,QAAQ,CAAC,MAAM,GAAG,MAAM,wBAAU,CAAC,uBAAuB,CAAC,KAAK,CAAC,EAAE,GAAG,SAAS,EAAE,KAAK,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;oBACzG,QAAQ,CAAC,cAAc,GAAG,KAAK,CAAC,cAAc,CAAC;iBAChD;gBACD,IAAI,KAAK,CAAC,GAAG,EAAE;oBACb,QAAQ,CAAC,EAAE,GAAG,MAAM,wBAAU,CAAC,uBAAuB,CAAC,KAAK,CAAC,EAAE,GAAG,MAAM,EAAE,KAAK,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;oBAC/F,QAAQ,CAAC,SAAS,GAAG,QAAQ,CAAC,EAAE,CAAC;oBACjC,QAAQ,CAAC,SAAS,GAAG,QAAQ,CAAC,EAAE,CAAC;oBACjC,QAAQ,CAAC,UAAU,GAAG,KAAK,CAAC,WAAW,CAAC;oBACxC,QAAQ,CAAC,iBAAiB,GAAG,KAAK,CAAC,WAAW,CAAC;oBAC/C,QAAQ,CAAC,iBAAiB,GAAG,KAAK,CAAC,WAAW,CAAC;iBAChD;qBAAM;oBACL,IAAI,KAAK,CAAC,EAAE,EAAE;wBACZ,QAAQ,CAAC,EAAE,GAAG,MAAM,wBAAU,CAAC,uBAAuB,CAAC,KAAK,CAAC,EAAE,GAAG,KAAK,EAAE,KAAK,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC;wBAC7F,QAAQ,CAAC,UAAU,GAAG,KAAK,CAAC,UAAU,CAAC;qBACxC;oBACD,IAAI,KAAK,CAAC,SAAS,EAAE;wBACnB,QAAQ,CAAC,SAAS,GAAG,MAAM,wBAAU,CAAC,uBAAuB,CAAC,KAAK,CAAC,EAAE,GAAG,YAAY,EAAE,KAAK,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;wBAClH,QAAQ,CAAC,iBAAiB,GAAG,KAAK,CAAC,iBAAiB,CAAC;qBACtD;oBACD,IAAI,KAAK,CAAC,SAAS,EAAE;wBACnB,QAAQ,CAAC,SAAS,GAAG,MAAM,wBAAU,CAAC,uBAAuB,CAAC,KAAK,CAAC,EAAE,GAAG,YAAY,EAAE,KAAK,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;wBAClH,QAAQ,CAAC,iBAAiB,GAAG,KAAK,CAAC,iBAAiB,CAAC;qBACtD;iBACF;gBACD,IAAI,KAAK,CAAC,YAAY,EAAE;oBACtB,QAAQ,CAAC,YAAY,GAAG,MAAM,wBAAU,CAAC,uBAAuB,CAAC,KAAK,CAAC,EAAE,GAAG,eAAe,EAAE,KAAK,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;oBAC3H,QAAQ,CAAC,oBAAoB,GAAG,KAAK,CAAC,oBAAoB,CAAC;iBAC5D;gBACD,IAAI,KAAK,CAAC,MAAM,EAAE;oBAChB,QAAQ,CAAC,MAAM,GAAG,MAAM,wBAAU,CAAC,uBAAuB,CAAC,KAAK,CAAC,EAAE,GAAG,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC;oBAC5G,QAAQ,CAAC,cAAc,GAAG,KAAK,CAAC,cAAc,CAAC;iBAChD;gBACD,IAAI,KAAK,CAAC,aAAa,EAAE;oBACvB,QAAQ,CAAC,aAAa,GAAG,MAAM,wBAAU,CAAC,uBAAuB,CAAC,KAAK,CAAC,EAAE,GAAG,cAAc,EAAE,KAAK,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC;oBAC5H,QAAQ,CAAC,qBAAqB,GAAG,KAAK,CAAC,qBAAqB,CAAC;iBAC9D;gBACD,IAAI,KAAK,CAAC,iBAAiB,EAAE;oBAC3B,QAAQ,CAAC,iBAAiB,GAAG,MAAM,wBAAU,CAAC,uBAAuB,CAAC,KAAK,CAAC,EAAE,GAAG,kBAAkB,EAAE,KAAK,CAAC,iBAAiB,EAAE,QAAQ,CAAC,CAAC;oBACxI,QAAQ,CAAC,yBAAyB,GAAG,KAAK,CAAC,yBAAyB,CAAC;iBACtE;gBACD,IAAI,KAAK,CAAC,eAAe,EAAE;oBACzB,QAAQ,CAAC,eAAe,GAAG,MAAM,wBAAU,CAAC,uBAAuB,CAAC,KAAK,CAAC,EAAE,GAAG,eAAe,EAAE,KAAK,CAAC,eAAe,EAAE,QAAQ,CAAC,CAAC;oBACjI,QAAQ,CAAC,uBAAuB,GAAG,KAAK,CAAC,uBAAuB,CAAC;iBAClE;gBACD,IAAI,KAAK,CAAC,QAAQ,EAAE;oBAClB,QAAQ,CAAC,QAAQ,GAAG,MAAM,wBAAU,CAAC,uBAAuB,CAAC,KAAK,CAAC,EAAE,GAAG,WAAW,EAAE,KAAK,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;oBAC/G,QAAQ,CAAC,gBAAgB,GAAG,KAAK,CAAC,gBAAgB,CAAC;iBACpD;gBACD,QAAQ,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;gBAC7B,QAAQ,CAAC,sBAAsB,GAAG,KAAK,CAAC,iBAAiB,CAAC;gBAC1D,QAAQ,CAAC,aAAa,GAAG,KAAK,CAAC,aAAa,CAAC;gBAC7C,QAAQ,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;gBAC3B,QAAQ,CAAC,UAAU,GAAG,KAAK,CAAC,UAAU,CAAC;gBACvC,QAAQ,CAAC,cAAc,GAAG,KAAK,CAAC,cAAc,CAAC;gBAC/C,QAAQ,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;gBACjC,QAAQ,CAAC,WAAW,GAAG,KAAK,CAAC,WAAW,CAAC;gBACzC,QAAQ,CAAC,eAAe,GAAG,KAAK,CAAC,eAAe,CAAC;gBACjD,QAAQ,CAAC,YAAY,GAAG,KAAK,CAAC,YAAY,CAAC;gBAC3C,QAAQ,CAAC,iBAAiB,GAAG,KAAK,CAAC,iBAAiB,CAAC;gBACrD,QAAQ,CAAC,YAAY,GAAG,KAAK,CAAC,YAAY,CAAC;gBAC3C,QAAQ,CAAC,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC;gBACzB,QAAQ,CAAC,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC;gBACrC,QAAQ,CAAC,iBAAiB,GAAG,KAAK,CAAC,iBAAiB,CAAC;aACtD;YAAC,OAAO,CAAC,EAAE;gBACV,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;aAClB;YACD,OAAO,QAAQ,CAAC;QAClB,CAAC;KAAA;IAEM,MAAM,CAAC,qBAAqB,CAAC,QAAkB,EAAE,QAAa;QACnE,MAAM,SAAS,GAAG,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;QAChD,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE;YACrB,QAAQ,CAAC,SAAS,GAAG,SAAS,CAAC;YAC/B,8CAA8C;SAC/C;QAED,MAAM,KAAK,GAAG,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;QAC5C,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;YACjB,QAAQ,CAAC,QAAQ,GAAG,IAAI,aAAK,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;SACpD;QAED,MAAM,gBAAgB,GAAY,QAAQ,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;QACpE,MAAM,OAAO,GAAG,gBAAgB,CAAC,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC;QAC/G,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE;YACnB,QAAQ,CAAC,OAAO,GAAG,OAAO,CAAC;SAC5B;QAED,MAAM,OAAO,GAAG,gBAAgB,CAAC,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC;QAC/G,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE;YACnB,QAAQ,CAAC,OAAO,GAAG,OAAO,CAAC;SAC5B;QAED,MAAM,SAAS,GAAG,UAAU,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC;QACpD,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE;YACrB,QAAQ,CAAC,cAAc,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;SAClD;QAED,MAAM,SAAS,GAAG,UAAU,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC;QACpD,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE;YACrB,QAAQ,CAAC,cAAc,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;SAClD;IACH,CAAC;CACF;AAvHD,gCAuHC;;;;;;;;;;;;;;;;AC5ID,4EAA+B;AAG/B,WAAW;AACX,MAAa,UAAU;IAId,MAAM,CAAC,uBAAuB,CAAC,EAAU,EAAE,MAAc,EAAE,QAAkB,EAAE,cAAuB,KAAK;QAChH,OAAO,IAAI,OAAO,CAAgB,CAAO,OAAO,EAAE,EAAE;YAClD,IAAI,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE;gBAC/B,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;aACtC;iBAAM;gBACL,IAAI,CAAC,MAAM,EAAE;oBACX,OAAO,CAAC,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;iBAC9B;qBAAM;oBACL,IAAI,MAAM,CAAC,cAAc,CAAC,eAAe,CAAC,EAAE;wBAC1C,OAAO,CAAC,MAAO,MAAc,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC;qBACtD;yBAAM;wBACL,MAAM,MAAM,GAAwB,IAAI,KAAK,CAAC,aAAa,EAAE,CAAC;wBAC9D,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,OAAsB,EAAE,EAAE;4BAC3C,OAAO,CAAC,UAAU,GAAG,EAAE,CAAC;4BACxB,OAAO,CAAC,KAAK,GAAG,KAAK,CAAC,cAAc,CAAC;4BACrC,OAAO,CAAC,KAAK,GAAG,KAAK,CAAC,cAAc,CAAC;4BACrC,OAAO,CAAC,MAAM,GAAG,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;4BACrG,OAAO,CAAC,KAAK,GAAG,WAAW,CAAC;4BAC5B,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC;4BAC3B,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;4BACrC,OAAO,CAAC,OAAO,CAAC,CAAC;wBACnB,CAAC,EACD,GAAG,EAAE;wBACL,CAAC,EACD,GAAG,EAAE;4BACH,OAAO,CAAC,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;wBAC/B,CAAC,CAAC,CAAC;qBACN;iBACF;aACF;QACH,CAAC,EAAC,CAAC;IACL,CAAC;IAEM,MAAM,CAAC,gCAAgC,CAAC,QAAgB,EAAE,YAAoB;QACnF,IAAI,YAAY,KAAK,IAAI,EAAE;YACzB,OAAO,YAAY,CAAC;SACrB;QACD,MAAM,aAAa,GAAW,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;QAC7E,QAAQ,aAAa,CAAC,WAAW,EAAE,EAAE;YACnC,KAAK,KAAK,CAAC;YACX,KAAK,MAAM;gBACT,OAAO,wBAAwB,GAAG,YAAY,CAAC;YACjD,KAAK,KAAK;gBACR,OAAO,wBAAwB,GAAG,YAAY,CAAC;YACjD,KAAK,KAAK;gBACR,OAAO,wBAAwB,GAAG,YAAY,CAAC;YACjD,KAAK,KAAK;gBACR,OAAO,wBAAwB,GAAG,YAAY,CAAC;YACjD;gBACE,OAAO,wBAAwB,GAAG,YAAY,CAAC;SAClD;IACH,CAAC;IAEM,MAAM,CAAC,wBAAwB,CAAC,gBAAwB;QAC7D,OAAO,gBAAgB,CAAC,OAAO,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC;IAC9D,CAAC;IAEM,MAAM,CAAC,UAAU;QACtB,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;YAClC,KAAK,CAAC,OAAO,EAAE,CAAC;QAClB,CAAC,CAAC,CAAC;QACH,UAAU,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;IAC9B,CAAC;;AAlEH,gCAmEC;AAjEe,mBAAQ,GAA+B,IAAI,GAAG,EAAE,CAAC;;;;;;;;;;;;;;;ACNjE,wDAA+C;AAE/C,MAAa,WAAW;IAGb,MAAM,CAAC,eAAe,CAAC,QAA+B;QACzD,IAAI,CAAC,QAAQ,EAAE;YACX,OAAO;SACV;QACD,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;YACzB,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;gBACpB,IAAI,CAAC,aAAa;qBACb,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;qBAChC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;gBACjD,IAAI,CAAC,OAAO,EAAE,CAAC;YACnB,CAAC,CAAC,CAAC;SACN;aAAM;YACH,IAAI,CAAC,aAAa;iBACb,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,QAAQ,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC;iBACjE,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;YACrD,IAAI,QAAQ,CAAC,OAAO,EAAE;gBAClB,QAAQ,CAAC,OAAO,EAAE,CAAC;aACtB;SACJ;IACL,CAAC;IAEM,MAAM,CAAC,aAAa,CAAC,MAAuB;QAC/C,IAAI,CAAC,MAAM,EAAE;YACT,OAAO;SACV;QACD,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE;YACxB,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC;SAC/D;QACD,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;IAC7B,CAAC;IAEO,MAAM,CAAC,WAAW,CAAC,IAAqB;QAC5C,IAAI,CAAC,QAAQ,CAAC,CAAC,GAAa,EAAE,EAAE;YAC5B,IAAI,GAAG,YAAY,YAAI,EAAE;gBACrB,IAAI,GAAG,CAAC,QAAQ,EAAE;oBACd,GAAG,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;iBAC1B;gBACD,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;aACtC;YACD,IAAI,OAAQ,GAAW,CAAC,OAAO,KAAK,UAAU,EAAE;gBAC5C,aAAa;gBACb,GAAG,CAAC,OAAO,EAAE,CAAC;aACjB;QACL,CAAC,CAAC,CAAC;IACP,CAAC;;AA/CL,kCAiDC;AAhDU,yBAAa,GAAG,CAAC,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,WAAW,EAAE,aAAa,EAAE,QAAQ,EAAE,OAAO,EAAE,cAAc,EAAE,cAAc,CAAC,CAAC;;;;;;;;;;;;;;;;ACHzI,4EAA+B;AAC/B,sGAA0E;AAE1E,MAAa,UAAU;IAEZ,MAAM,CAAC,qBAAqB,CAAC,KAAkB,EAAE,MAAsB,EAC5E,KAAU,EAAE,KAAU,EAAE,cAAuB,EAAE,eAA0B;QACzE,IAAI,OAAY,CAAC;QACjB,IAAI,eAAe,EAAE;YACjB,OAAO,GAAG,KAAK,CAAC;YAChB,KAAK,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;SACpC;QACD,IAAI,KAAK,IAAI,KAAK,EAAE;YAChB,IAAI,IAAoB,CAAC;YACzB,IAAI,IAAoB,CAAC;YACzB,mGAAmG;YACnG,IAAI,OAAO,IAAI,OAAO,YAAY,qBAAS,IAAI,OAAO,CAAC,cAAc,EAAE;gBACnE,IAAI,GAAG,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,OAAO,CAAC,cAAc,CAAC,CAAC;gBACnE,IAAI,CAAC,IAAI,EAAE;oBACP,OAAO,KAAK,CAAC;iBAChB;gBACD,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,KAAK,CAAC,QAAQ,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE;oBAC/C,IAAI,GAAG,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;oBAC1B,+CAA+C;oBAC/C,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,cAAc,CAAC,EAAE;wBACjH,oDAAoD;wBACpD,IAAI,OAAO,EAAE;4BACT,MAAM,QAAQ,GAAQ,eAAe,CAAC,OAAO,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;4BAC7D,8CAA8C;4BAC9C,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;yBACpE;6BAAM;4BACH,OAAO,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;yBAC1D;qBACJ;iBACJ;aACJ;iBAAM;gBACH,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;oBAC5C,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,KAAK,CAAC,QAAQ,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE;wBAC/C,IAAI,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;wBACzB,IAAI,GAAG,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;wBAC1B,+CAA+C;wBAC/C,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,cAAc,CAAC,EAAE;4BACjH,oDAAoD;4BACpD,IAAI,OAAO,EAAE;gCACT,MAAM,QAAQ,GAAQ,eAAe,CAAC,OAAO,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;gCAC7D,8CAA8C;gCAC9C,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;6BACpE;iCAAM;gCACH,OAAO,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;6BAC1D;yBACJ;qBACJ;iBACJ;aACJ;SACJ;QACD,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,kFAAkF;IAClF,qEAAqE;IACrE,wBAAwB;IACxB,6BAA6B;IAC7B,2BAA2B;IAC3B,4CAA4C;IAC5C,QAAQ;IACR,wDAAwD;IACxD,+DAA+D;IAC/D,8DAA8D;IAC9D,+DAA+D;IAC/D,8DAA8D;IAC9D,qGAAqG;IACrG,uEAAuE;IACvE,iCAAiC;IACjC,+FAA+F;IAC/F,qEAAqE;IACrE,wFAAwF;IACxF,2BAA2B;IAC3B,8EAA8E;IAC9E,oBAAoB;IACpB,gBAAgB;IAChB,YAAY;IACZ,QAAQ;IACR,oBAAoB;IACpB,IAAI;IAEG,MAAM,CAAC,2BAA2B,CAAC,KAAoB,EAAE,MAAoB,EAAE,KAAa,EAAE,MAAc;QAC/G,IAAI,CAAC,KAAK,EAAE;YACR,OAAO,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;SAC9B;QACD,MAAM,MAAM,GAAkB,KAAK,CAAC,KAAK,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAC5D,MAAM,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;QACtC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC;QACxC,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;IACjD,CAAC;IAGM,MAAM,CAAC,kBAAkB,CAC9B,SAA2B,EAAE,IAA0B,EAAE,IAA0B,EAAE,aAAuB;QAC1G,MAAM,QAAQ,GAAW,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,KAAK,MAAM,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC;QACjI,MAAM,QAAQ,GAAW,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,KAAK,MAAM,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC;QACjI,MAAM,UAAU,GAAY,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,KAAK,MAAM,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,KAAK,UAAU,CAAC;YACtG,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,KAAK,MAAM,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,KAAK,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC;QACjH,MAAM,MAAM,GAAa,QAAQ,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,EACxD,MAAM,GAAa,QAAQ,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACvD,IAAI,MAAM,CAAC,MAAM,IAAI,CAAC,IAAI,MAAM,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;YACzD,MAAM,WAAW,GAAY,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG;gBACjE,MAAM,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC;YACrD,OAAO,WAAW,CAAC;SACtB;QACD,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,sGAAsG;IACtG,4FAA4F;IAC5F,4FAA4F;IAC5F,0IAA0I;IAC1I,kEAAkE;IAClE,gEAAgE;IAChE,qEAAqE;IACrE,iFAAiF;IACjF,kEAAkE;IAClE,8BAA8B;IAC9B,QAAQ;IACR,oBAAoB;IACpB,IAAI;IAEI,MAAM,CAAC,eAAe,CAAC,KAAkB,EAAE,MAAsB,EAAE,IAAoB,EAAE,IAAoB;QACjH,IAAI,CAAC,KAAK,IAAI,CAAC,MAAM,EAAE;YACnB,OAAO,KAAK,CAAC;SAChB;QACD,IAAI,CAAC,aAAa,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;QACvC,IAAI,CAAC,aAAa,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;QAEvC,MAAM,cAAc,GAAgB,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QAC7D,MAAM,cAAc,GAAkB,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QAEjE,MAAM,CAAC,iBAAiB,EAAE,CAAC;QAC3B,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QACrC,MAAM,CAAC,gBAAgB,CAAC,cAAc,CAAC,CAAC;QAExC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QAC7B,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QAE7B,KAAK,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;QAE9B,MAAM,QAAQ,GAAqB,IAAI,KAAK,CAAC,UAAU,EAAE,CAAC;QAC1D,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC;QAClC,MAAM,QAAQ,GAAqB,IAAI,KAAK,CAAC,UAAU,EAAE,CAAC;QAC1D,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC;QAClC,MAAM,cAAc,GAAqB,IAAI,KAAK,CAAC,UAAU,EAAE,CAAC;QAChE,IAAI,CAAC,MAAM,CAAC,kBAAkB,CAAC,cAAc,CAAC,CAAC;QAC/C,MAAM,cAAc,GAAqB,IAAI,KAAK,CAAC,UAAU,EAAE,CAAC;QAChE,IAAI,CAAC,MAAM,CAAC,kBAAkB,CAAC,cAAc,CAAC,CAAC;QAE/C,MAAM,QAAQ,GAAqB,IAAI,KAAK,CAAC,UAAU,EAAE,CAAC,mBAAmB,CAC3E,QAAQ,CAAC,MAAM,EAAE,EACjB,QAAQ,CACT,CAAC,QAAQ,CACR,IAAI,KAAK,CAAC,UAAU,EAAE,CAAC,mBAAmB,CACxC,cAAc,EACd,cAAc,CACf,CACF,CAAC;QAEF,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACtC,mDAAmD;QACnD,KAAK,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;QAE9B,wCAAwC;QACxC,MAAM,OAAO,GAAkB,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;QACnD,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;QAC/B,MAAM,OAAO,GAAkB,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;QACnD,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;QAE/B,MAAM,IAAI,GAAkB,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QACjD,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC;QACjC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC;QACjC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC;QAEjC,+CAA+C;QAC/C,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QACrC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QAErC,KAAK,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;QAE9B,yBAAyB;QACzB,IAAI,CAAC,WAAW,CAAC,GAAG,IAAI,CAAC;QACzB,IAAI,CAAC,WAAW,CAAC,GAAG,IAAI,CAAC;QACzB,OAAO,IAAI,CAAC;IAChB,CAAC;CAiEJ;AA3PD,gCA2PC;;;;;;;;;;;;;;;;AC9PD,4EAA+B;AAC/B,wEAA2C;AAG3C,MAAa,WAAW;IAAxB;QAEU,iBAAY,GAAgC,IAAI,GAAG,EAAE,CAAC;IAwNhE,CAAC;IAtNQ,UAAU;QACf,MAAM,IAAI,GAAqB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC,CAAC;QACtE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,0BAAW,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;QAChD,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC;IAC5B,CAAC;IAEM,gBAAgB,CAAC,QAAgB,EAAE,SAAiB;QACzD,OAAO,IAAI,OAAO,CAAC,CAAO,OAAiB,EAAE,MAAgB,EAAE,EAAE;YAC/D,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;YAC5C,IAAI,cAAc,GAAW,QAAQ,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YACrF,IAAI,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,cAAc,CAAC,EAAE;gBACzC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC;gBAC/C,OAAO;aACR;YACD,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC;iBAC7B,IAAI,CAAC,CAAC,GAAmB,EAAE,EAAE;gBAC5B,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,cAAc,EAAE,GAAG,CAAC,CAAC;gBAC3C,OAAO,CAAC,GAAG,CAAC,CAAC;YACf,CAAC,CAAC;iBACD,KAAK,CAAC,GAAG,EAAE;gBACV,MAAM,CAAC,0BAA0B,cAAc,GAAG,CAAC,CAAC;YACtD,CAAC,CAAC,CAAC;QACT,CAAC,EAAC,CAAC;IACL,CAAC;IAEM,cAAc,CAAC,IAAU;QAC9B,MAAM,UAAU,GAAG,IAAI,UAAU,EAAE,CAAC;QACpC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACrC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAM,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YACzD,UAAU,CAAC,OAAO,GAAG,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAC5C,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QAC9B,CAAC,CAAC,CAAC;IACL,CAAC;IAEY,aAAa,CAAC,QAAgB;;YACzC,IAAI,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE;gBACnC,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC;aACzD;YACD,MAAM,IAAI,GAAW,MAAM,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;YACxD,MAAM,MAAM,GAAG,IAAI,KAAK,CAAC,YAAY,EAAE,CAAC;YACxC,MAAM,CAAC,WAAW,GAAG,WAAW,CAAC;YACjC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;gBACrC,IAAI;oBACF,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;oBAC/B,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;oBACrC,OAAO,CAAC,GAAG,CAAC,CAAC;iBACd;gBAAC,OAAO,CAAC,EAAE;oBACV,MAAM,CAAC,IAAI,CAAC,CAAC;iBACd;YACH,CAAC,CAAC,CAAC;QACL,CAAC;KAAA;IAEY,mBAAmB,CAAC,QAAgB;;YAC/C,IAAI,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE;gBACnC,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC;aACzD;YACD,MAAM,MAAM,GAAG,IAAI,KAAK,CAAC,YAAY,EAAE,CAAC;YACxC,MAAM,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC;YACnC,MAAM,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC;YAC3B,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;gBACrC,MAAM,CAAC,IAAI,CAAC,QAAQ,EAClB,CAAC,MAAW,EAAE,EAAE;oBACd,MAAM,GAAG,GAAmB,CAAC,MAAM,CAAC,IAAI,KAAK,OAAO,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;oBAC9H,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;oBACrC,OAAO,CAAC,GAAqB,CAAC,CAAC;gBACjC,CAAC,EACD,GAAG,CAAC,EAAE,CAAC,IAAI,EACX,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CACvB,CAAC;YACJ,CAAC,CAAC,CAAC;QACL,CAAC;KAAA;IAEY,YAAY,CAAC,IAAY,EAAE,UAAmB,IAAI;;YAC7D,IAAI,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;gBAC/B,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;aACrD;YACD,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,UAAU,CAAC,EAAE;gBACtC,OAAO,CAAC,KAAK,CAAC,uCAAuC,CAAC,CAAC;gBACvD,OAAO,IAAI,CAAC;aACb;YACC,mCAAmC;YACrC,MAAM,GAAG,GAAmB,MAAO,MAAc,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;YACjE,IAAI,GAAG,EAAE;gBACP,IAAI,CAAC,iBAAiB,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;gBACrC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;gBACjC,OAAO,GAAG,CAAC;aACZ;iBAAM;gBACL,OAAO,IAAI,CAAC;aACb;QACH,CAAC;KAAA;IAEY,aAAa,CAAC,IAAY;;YACrC,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;YACjD,IAAI,GAAG,EAAE;gBACP,GAAG,CAAC,QAAQ,GAAG,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,YAAY,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;gBACtE,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC5D,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAiB,EAAE,EAAE;oBACzC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAiB,EAAE,EAAE;wBAC/B,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;oBACrD,CAAC,CAAC,CAAC;oBACH,CAAC,CAAC,OAAO,GAAG,KAAK,CAAC;gBACpB,CAAC,CAAC,CAAC;gBACH,IAAI,GAAG,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,YAAY,KAAK,CAAC,KAAK,EAAE,EAAE,mBAAmB;oBAC5F,MAAM,QAAQ,GAAQ,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;oBACvD,MAAM,IAAI,GAAW,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;oBAC1C,GAAG,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC;oBACxB,MAAM,MAAM,GAAmB,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;oBACpD,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC;oBACnB,MAAM,CAAC,QAAQ,GAAG,QAAQ,CAAC;oBAC3B,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;iBACjB;aACF;YACD,OAAO,GAAG,CAAC;QACb,CAAC;KAAA;IAEY,cAAc,CAAC,GAAW;;YACrC,mCAAmC;YACnC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;gBACrC,MAAM,aAAa,GAAG,IAAI,KAAK,CAAC,aAAa,EAAE,CAAC;gBAChD,oEAAoE;gBACpE,aAAa,CAAC,IAAI,CAAC,GAAG,EACpB,CAAC,OAAsB,EAAE,EAAE;oBACzB,OAAO,CAAC,KAAK,GAAG,KAAK,CAAC,cAAc,CAAC;oBACrC,OAAO,CAAC,KAAK,GAAG,KAAK,CAAC,cAAc,CAAC;oBACrC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;oBACzB,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC;oBAC3B,OAAO,OAAO,CAAC,OAAO,CAAC,CAAC;gBAC1B,CAAC,EACD,IAAI,EACJ,MAAM,CACP,CAAC;YACJ,CAAC,CAAC,CAAC;QACL,CAAC;KAAA;IAEO,iBAAiB,CAAC,MAAsB,EAAE,UAAmB,IAAI;QACvE,IAAI,GAAG,GAAmB,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;QAC/C,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAiB,EAAE,EAAE;YAC5C,IAAI,CAAC,CAAC,CAAC,YAAY,KAAK,CAAC,MAAM,CAAC,EAAE;gBAChC,IAAI,OAAO,IAAI,CAAC,YAAY,KAAK,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,YAAY,KAAK,CAAC,KAAK,CAAC,EAAE;oBAC5G,IAAI,CAAC,yBAAyB,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;iBACxC;qBAAM,IAAI,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC,YAAY,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,YAAY,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE;oBACtH,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;wBAC3B,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;oBACjC,CAAC,CAAC,CAAC;oBACH,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;oBAC5B,IAAI,GAAG,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;wBAC3B,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;qBACpB;yBAAM;wBACL,GAAG,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;qBACjB;iBACF;qBAAM;oBACL,8CAA8C;oBAC9C,oCAAoC;oBACpC,sCAAsC;oBACtC,QAAQ;oBACR,iCAAiC;oBACjC,IAAI;oBACJ,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;iBACpB;aACF;QACH,CAAC,CAAC,CAAC;QACH,MAAM,WAAW,GAAG,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;QACxD,MAAM,aAAa,GAAG,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;QAC1C,WAAW,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;QACrC,MAAM,KAAK,GAAkB,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,MAAM,EAAE,CAAC;QAC7E,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE;YAC1B,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACzB,CAAC,CAAC,CAAC;QACH,OAAO,GAAG,CAAC;IACb,CAAC;IAEO,yBAAyB,CAAC,KAAqB,EAAE,GAAmB,EAAE,UAAmB,IAAI;QACnG,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,EAAkB,EAAE,EAAE;YAC5C,IAAI,OAAO,IAAI,EAAE,YAAY,KAAK,CAAC,KAAK,EAAE;gBACxC,IAAI,CAAC,yBAAyB,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;aACzC;iBAAM;gBACL,oCAAoC;gBACpC,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;gBAChC,oCAAoC;gBACpC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;aACrB;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,gBAAgB,CAAC,QAA0B,EAAE,QAAmC;QACtF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACxC,MAAM,KAAK,GAAmB,QAAQ,CAAC,CAAC,CAAC,CAAC;YAC1C,IAAI,KAAK,YAAY,KAAK,CAAC,IAAI,EAAE;gBAC/B,QAAQ,CAAC,KAAK,CAAC,CAAC;aACjB;iBAAM;gBACL,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;aACjD;SACF;IACH,CAAC;IAEa,aAAa,CAAC,QAAgB;;YAC1C,IAAI;gBACF,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,QAAQ,CAAC,CAAC;gBACvC,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE;oBAChB,OAAO,EAAE,CAAC;iBACX;qBAAM;oBACL,IAAI,KAAK,GAAG,KAAK,CAAC;oBAClB,MAAM,QAAQ,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE;wBAC3C,IAAI,KAAK,KAAK,EAAE,EAAE;4BAChB,KAAK,GAAG,IAAI,CAAC;yBACd;oBACH,CAAC,CAAC,CAAC;oBACH,OAAO,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;iBACrC;aACF;YAAC,OAAO,CAAC,EAAE;gBACV,OAAO,EAAE,CAAC;aACX;QACH,CAAC;KAAA;CAEF;AA1ND,kCA0NC;;;;;;;;;;;;;;;;AC9ND,2FAA8D;AAC9D,aAAa;AACb,iFAA0B;AAC1B,wDAAsF;AAEtF,WAAW;AACX,MAAa,cAAc;IAGlB,MAAM,CAAC,UAAU;QACtB,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;IAC7B,CAAC;IAEM,MAAM,CAAO,aAAa,CAAC,SAAiB,EAAE,QAAgB;;YACnE,IAAI,CAAC,QAAQ,EAAE;gBACb,OAAO,IAAI,CAAC;aACb;YAED,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE;gBAChC,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;aACvC;YAED,MAAM,EAAE,GAAW,QAAQ,CAAC,SAAS,CAAC,CAAC,EAAE,QAAQ,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC;YAE1E,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;gBAC5B,SAAS,IAAI,GAAG,CAAC;aAClB;YAED,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,mBAAmB,CAAC,EAAE;gBAC/C,OAAO,CAAC,KAAK,CAAC,gDAAgD,CAAC,CAAC;gBAChE,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;aACnE;YAED,IAAI,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE;gBAC9B,OAAO,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;aACnC;YAED,IAAI;gBACF,MAAM,IAAI,GAAG,MAAO,MAAc,CAAC,iBAAiB,CAClD,GAAG,SAAS,CAAC,OAAO,CAAC,4BAA4B,EAAE,EAAE,CAAC,aAAa,QAAQ,EAAE,CAC9E,CAAC;gBACF,MAAM,QAAQ,GAAsB,MAAM,cAAc,CAAC,4BAA4B,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;gBAChG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC;gBACrC,OAAO,QAAQ,CAAC;aACjB;YAAC,OAAO,GAAG,EAAE;gBACZ,OAAO,CAAC,KAAK,CAAC,0BAA0B,EAAE,GAAG,CAAC,CAAC;gBAC/C,MAAM,GAAG,CAAC;aACX;QACH,CAAC;KAAA;IACD,6GAA6G;IAC7G,gDAAgD;IAChD,uBAAuB;IACvB,uBAAuB;IACvB,QAAQ;IACR,mDAAmD;IACnD,gEAAgE;IAChE,eAAe;IACf,oHAAoH;IACpH,0BAA0B;IAC1B,2FAA2F;IAC3F,yEAAyE;IACzE,mDAAmD;IACnD,wDAAwD;IACxD,6DAA6D;IAC7D,qDAAqD;IACrD,mEAAmE;IACnE,mEAAmE;IACnE,4CAA4C;IAC5C,4CAA4C;IAC5C,6FAA6F;IAC7F,6DAA6D;IAC7D,uCAAuC;IACvC,gBAAgB;IAChB,mBAAmB;IACnB,+BAA+B;IAC/B,YAAY;IACZ,YAAY;IACZ,QAAQ;IACR,QAAQ;IACR,IAAI;IAEI,MAAM,CAAO,4BAA4B,CAAC,EAAU,EAAE,cAAmB;;YAC/E,IAAI,CAAC,cAAc,EAAE;gBACnB,OAAO,IAAI,CAAC;aACb;YACD,MAAM,UAAU,GAAG,MAAM,cAAc,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC;YACtE,MAAM,iBAAiB,GAAsB,IAAI,sCAAiB,EAAE,CAAC;YACrE,IAAI,KAAK,CAAC;YACV,iBAAiB,CAAC,EAAE,GAAG,EAAE,CAAC;YAE1B,IAAI,UAAU,EAAE;gBACd,IAAI,UAAU,CAAC,KAAK,CAAC,cAAc,CAAC,EAAE;oBACpC,MAAM,QAAQ,GAAW,MAAM,UAAU,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;oBACrF,iBAAiB,CAAC,QAAQ,GAAG,MAAM,cAAc,CAAC,mBAAmB,CAAC,QAAQ,CAAC,CAAC;iBACjF;qBAAM;oBACL,IAAI,UAAU,CAAC,KAAK,CAAC,YAAY,CAAC,EAAE;wBAClC,MAAM,SAAS,GAAW,MAAM,UAAU,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;wBAC/E,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;qBAC/B;oBACD,IAAI,KAAK,EAAE;wBACT,MAAM,cAAc,CAAC,0BAA0B,CAAC,KAAK,EAAE,iBAAiB,EAAE,UAAU,CAAC,CAAC;qBACvF;yBAAM;wBACL,MAAM,cAAc,CAAC,6BAA6B,CAAC,iBAAiB,EAAE,UAAU,CAAC,CAAC;qBACnF;iBACF;aACF;YACD,OAAO,iBAAiB,CAAC;QAC3B,CAAC;KAAA;IAEO,MAAM,CAAO,0BAA0B,CAAC,KAAU,EAAE,iBAAoC,EAAE,UAAe;;YAC/G,IAAI,KAAK,CAAC,UAAU,EAAE;gBACpB,iBAAiB,CAAC,MAAM,GAAG,MAAM,cAAc,CAAC,sBAAsB,CAAC,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC;gBAC7H,iBAAiB,CAAC,cAAc,GAAG,KAAK,CAAC,UAAU,CAAC;aACrD;YACD,IAAI,KAAK,CAAC,WAAW,EAAE;gBACrB,iBAAiB,CAAC,OAAO,GAAG,MAAM,cAAc,CAAC,sBAAsB,CAAC,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE,KAAK,CAAC,WAAW,CAAC,CAAC;gBAChI,iBAAiB,CAAC,eAAe,GAAG,KAAK,CAAC,WAAW,CAAC;aACvD;YACD,IAAI,KAAK,CAAC,OAAO,EAAE;gBACjB,iBAAiB,CAAC,GAAG,GAAG,MAAM,cAAc,CAAC,sBAAsB,CAAC,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;gBACpH,iBAAiB,CAAC,WAAW,GAAG,KAAK,CAAC,OAAO,CAAC;aAC/C;iBAAM;gBACL,IAAI,KAAK,CAAC,MAAM,EAAE;oBAChB,iBAAiB,CAAC,EAAE,GAAG,MAAM,cAAc,CAAC,sBAAsB,CAAC,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;oBACjH,iBAAiB,CAAC,UAAU,GAAG,KAAK,CAAC,MAAM,CAAC;iBAC7C;gBACD,IAAI,KAAK,CAAC,aAAa,EAAE;oBACvB,iBAAiB,CAAC,SAAS,GAAG,MAAM,cAAc,CAAC,sBAAsB,CAAC,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,aAAa,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC,CAAC;oBACtI,iBAAiB,CAAC,iBAAiB,GAAG,KAAK,CAAC,aAAa,CAAC;iBAC3D;gBACD,IAAI,KAAK,CAAC,aAAa,EAAE;oBACvB,iBAAiB,CAAC,SAAS,GAAG,MAAM,cAAc,CAAC,sBAAsB,CAAC,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,aAAa,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC,CAAC;oBACtI,iBAAiB,CAAC,iBAAiB,GAAG,KAAK,CAAC,aAAa,CAAC;iBAC3D;aACF;YACD,IAAI,KAAK,CAAC,gBAAgB,EAAE;gBAC1B,iBAAiB,CAAC,YAAY,GAAG,MAAM,cAAc,CAAC,sBAAsB,CAAC,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,gBAAgB,CAAC,EAAE,KAAK,CAAC,gBAAgB,CAAC,CAAC;gBAC/I,iBAAiB,CAAC,oBAAoB,GAAG,KAAK,CAAC,gBAAgB,CAAC;aACjE;YACD,IAAI,KAAK,CAAC,YAAY,EAAE;gBACtB,iBAAiB,CAAC,QAAQ,GAAG,MAAM,cAAc,CAAC,sBAAsB,CAAC,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,YAAY,CAAC,EAAE,KAAK,CAAC,YAAY,CAAC,CAAC;gBACnI,iBAAiB,CAAC,gBAAgB,GAAG,KAAK,CAAC,YAAY,CAAC;aACzD;YACD,IAAI,KAAK,CAAC,UAAU,EAAE;gBACpB,iBAAiB,CAAC,MAAM,GAAG,MAAM,cAAc,CAAC,sBAAsB,CAAC,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC;gBAC7H,iBAAiB,CAAC,cAAc,GAAG,KAAK,CAAC,UAAU,CAAC;aACrD;YACD,IAAI,KAAK,CAAC,iBAAiB,EAAE;gBAC3B,iBAAiB,CAAC,aAAa,GAAG,MAAM,cAAc,CAAC,sBAAsB,CAAC,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,iBAAiB,CAAC,EAAE,KAAK,CAAC,iBAAiB,CAAC,CAAC;gBAClJ,iBAAiB,CAAC,qBAAqB,GAAG,KAAK,CAAC,iBAAiB,CAAC;aACnE;YACD,IAAI,KAAK,CAAC,qBAAqB,EAAE;gBAC/B,iBAAiB,CAAC,iBAAiB,GAAG,MAAM,cAAc,CAAC,sBAAsB,CAAC,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,qBAAqB,CAAC,EAAE,KAAK,CAAC,qBAAqB,CAAC,CAAC;gBAC9J,iBAAiB,CAAC,yBAAyB,GAAG,KAAK,CAAC,iBAAiB,CAAC;aACvE;YACD,IAAI,KAAK,CAAC,mBAAmB,EAAE;gBAC7B,iBAAiB,CAAC,eAAe,GAAG,MAAM,cAAc,CAAC,sBAAsB,CAAC,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,mBAAmB,CAAC,EAAE,KAAK,CAAC,mBAAmB,CAAC,CAAC;gBACxJ,iBAAiB,CAAC,uBAAuB,GAAG,KAAK,CAAC,mBAAmB,CAAC;aACvE;YACD,IAAI,KAAK,CAAC,MAAM,EAAE;gBAChB,iBAAiB,CAAC,QAAQ,CAAC,OAAO,GAAG,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC;gBAC1D,iBAAiB,CAAC,QAAQ,CAAC,OAAO,GAAG,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC;aAC3D;YACD,iBAAiB,CAAC,QAAQ,CAAC,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC;YACvD,iBAAiB,CAAC,QAAQ,CAAC,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC;YAEvD,IAAI,KAAK,CAAC,KAAK,IAAI,OAAO,KAAK,CAAC,KAAK,KAAK,QAAQ,EAAE;gBAClD,iBAAiB,CAAC,KAAK,GAAG,CAAC,CAAC;gBAC5B,iBAAiB,CAAC,UAAU,GAAG,IAAI,aAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,sBAAc,CAAC,CAAC;aACpH;iBAAM;gBACL,iBAAiB,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;aACvC;YACD,IAAI,KAAK,CAAC,UAAU,EAAE;gBACpB,iBAAiB,CAAC,UAAU,GAAG,IAAI,aAAK,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,sBAAc,CAAC,CAAC;aACnI;YACD,iBAAiB,CAAC,cAAc,GAAG,KAAK,CAAC,cAAc,CAAC;YACxD,iBAAiB,CAAC,eAAe,GAAG,KAAK,CAAC,eAAe,CAAC;YAC1D,iBAAiB,CAAC,WAAW,GAAG,KAAK,CAAC,WAAW,CAAC;YAClD,iBAAiB,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;YAC1C,IAAI,KAAK,CAAC,aAAa,EAAE;gBACvB,iBAAiB,CAAC,aAAa,GAAG,IAAI,aAAK,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,sBAAc,CAAC,CAAC;aAC/I;YACD,iBAAiB,CAAC,iBAAiB,GAAG,KAAK,CAAC,iBAAiB,CAAC;YAC9D,iBAAiB,CAAC,YAAY,GAAG,KAAK,CAAC,YAAY,CAAC;YACpD,iBAAiB,CAAC,iBAAiB,GAAG,KAAK,CAAC,iBAAiB,CAAC;YAC9D,iBAAiB,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;YACpC,iBAAiB,CAAC,YAAY,GAAG,KAAK,CAAC,YAAY,CAAC;YACpD,iBAAiB,CAAC,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC;YAClC,iBAAiB,CAAC,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC;YAC9C,iBAAiB,CAAC,iBAAiB,GAAG,KAAK,CAAC,iBAAiB,CAAC;QAChE,CAAC;KAAA;IAEO,MAAM,CAAO,6BAA6B,CAAC,iBAAoC,EAAE,UAAe;;YACtG,MAAM,SAAS,GAAiC,EAAE,CAAC;YACnD,KAAK,MAAM,QAAQ,IAAI,UAAU,CAAC,KAAK,EAAE;gBACvC,IAAI,UAAU,CAAC,KAAK,CAAC,cAAc,CAAC,QAAQ,CAAC,EAAE;oBAC7C,MAAM,IAAI,GAAQ,MAAM,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;oBACnD,IAAI,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;wBACjF,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,UAAe,EAAE,EAAE;4BACjF,iBAAiB,CAAC,MAAM,GAAG,cAAc,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,UAAU,EAAE,CAAC;4BAClG,iBAAiB,CAAC,cAAc,GAAG,QAAQ,CAAC;wBAC9C,CAAC,CAAC,CAAC,CAAC;qBACL;yBAAM,IAAI,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;wBACpF,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,MAAW,EAAE,EAAE;4BAC7E,iBAAiB,CAAC,EAAE,GAAG,cAAc,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,MAAM,EAAE,CAAC;4BAC1F,iBAAiB,CAAC,UAAU,GAAG,QAAQ,CAAC;wBAC1C,CAAC,CAAC,CAAC,CAAC;qBACL;yBAAM,IAAI,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;wBAC3F,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,aAAkB,EAAE,EAAE;4BACpF,iBAAiB,CAAC,SAAS,GAAG,cAAc,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,aAAa,EAAE,CAAC;4BACxG,iBAAiB,CAAC,iBAAiB,GAAG,QAAQ,CAAC;wBACjD,CAAC,CAAC,CAAC,CAAC;qBACL;yBAAM,IAAI,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;wBAC3F,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,aAAkB,EAAE,EAAE;4BACpF,iBAAiB,CAAC,SAAS,GAAG,cAAc,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,aAAa,EAAE,CAAC;4BACxG,iBAAiB,CAAC,iBAAiB,GAAG,QAAQ,CAAC;wBACjD,CAAC,CAAC,CAAC,CAAC;qBACL;yBAAM,IAAI,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;wBACzF,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,WAAgB,EAAE,EAAE;4BAClF,iBAAiB,CAAC,OAAO,GAAG,cAAc,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,WAAW,EAAE,CAAC;4BACpG,iBAAiB,CAAC,eAAe,GAAG,QAAQ,CAAC;wBAC/C,CAAC,CAAC,CAAC,CAAC;qBACL;yBAAM,IAAI,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;wBAC9F,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,gBAAqB,EAAE,EAAE;4BACvF,iBAAiB,CAAC,YAAY,GAAG,cAAc,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,gBAAgB,EAAE,CAAC;4BAC9G,iBAAiB,CAAC,oBAAoB,GAAG,QAAQ,CAAC;wBACpD,CAAC,CAAC,CAAC,CAAC;qBACL;yBAAM,IAAI,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;wBAC1F,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,YAAiB,EAAE,EAAE;4BACnF,iBAAiB,CAAC,QAAQ,GAAG,cAAc,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,YAAY,EAAE,CAAC;4BACtG,iBAAiB,CAAC,gBAAgB,GAAG,QAAQ,CAAC;wBAChD,CAAC,CAAC,CAAC,CAAC;qBACL;yBAAM,IAAI,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;wBACxF,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,UAAe,EAAE,EAAE;4BACjF,iBAAiB,CAAC,MAAM,GAAG,cAAc,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,UAAU,EAAE,CAAC;4BAClG,iBAAiB,CAAC,cAAc,GAAG,QAAQ,CAAC;wBAC9C,CAAC,CAAC,CAAC,CAAC;qBACL;yBAAM,IAAI,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;wBAC/F,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,iBAAsB,EAAE,EAAE;4BACxF,iBAAiB,CAAC,aAAa,GAAG,cAAc,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,iBAAiB,EAAE,CAAC;4BAChH,iBAAiB,CAAC,qBAAqB,GAAG,QAAQ,CAAC;wBACrD,CAAC,CAAC,CAAC,CAAC;qBACL;yBAAM,IAAI,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;wBACnG,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,qBAA0B,EAAE,EAAE;4BAC5F,iBAAiB,CAAC,iBAAiB,GAAG,cAAc,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,qBAAqB,EAAE,CAAC;4BACxH,iBAAiB,CAAC,yBAAyB,GAAG,QAAQ,CAAC;wBACzD,CAAC,CAAC,CAAC,CAAC;qBACL;yBAAM,IAAI,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;wBACjG,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,mBAAwB,EAAE,EAAE;4BAC1F,iBAAiB,CAAC,eAAe,GAAG,cAAc,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,mBAAmB,EAAE,CAAC;4BACpH,iBAAiB,CAAC,uBAAuB,GAAG,QAAQ,CAAC;wBACvD,CAAC,CAAC,CAAC,CAAC;qBACL;yBAAM,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE;wBACxC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,WAAgB,EAAE,EAAE;4BAClF,iBAAiB,CAAC,OAAO,GAAG,yBAAyB,GAAG,WAAW,CAAC;4BACpE,iBAAiB,CAAC,eAAe,GAAG,QAAQ,CAAC;wBAC/C,CAAC,CAAC,CAAC,CAAC;qBACL;yBAAM,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE;wBAC1C,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,YAAiB,EAAE,EAAE;4BACnF,MAAM,eAAe,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;4BACjD,KAAK,MAAM,GAAG,IAAI,eAAe,EAAE;gCACjC,IAAI,eAAe,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE;oCACvC,iBAAiB,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC;iCACxD;6BACF;wBACH,CAAC,CAAC,CAAC,CAAC;qBACL;iBACF;aACF;YACD,MAAM,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAC/B,CAAC;KAAA;IAEO,MAAM,CAAC,oBAAoB,CAAC,QAAa;QAC/C,MAAM,MAAM,GAAG,IAAI,sBAAc,EAAE,CAAC;QACpC,IAAI,QAAQ,CAAC,QAAQ,EAAE;YACrB,MAAM,QAAQ,GAAO,EAAE,CAAC;YACxB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBACjD,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;aAC5D;YACD,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;SAC9B;QACD,OAAO,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IAChC,CAAC;IAEO,MAAM,CAAC,mBAAmB,CAAC,QAAa;QAC9C,OAAO,IAAI,OAAO,CAAC,CAAO,OAAiB,EAAE,MAAgB,EAAE,EAAE;YAC/D,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,UAAU,CAAC,EAAE;gBACtC,OAAO,CAAC,KAAK,CAAC,uCAAuC,CAAC,CAAC;gBACvD,OAAO,MAAM,EAAE,CAAC;aACjB;YACD,MAAM,GAAG,GAAa,MAAO,MAAc,CAAC,QAAQ,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;YACtE,IAAI,GAAG,EAAE;gBACP,OAAO,OAAO,CAAE,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAU,CAAC,QAAQ,CAAC,CAAC;aACpD;QACH,CAAC,EAAC,CAAC;IACL,CAAC;IAEO,MAAM,CAAC,sBAAsB,CAAC,GAAQ,EAAE,QAAgB,EAAE,SAAkB,IAAI;QACtF,OAAO,IAAI,OAAO,CAAC,CAAC,OAAiB,EAAE,EAAE;YACvC,IAAI,GAAG,IAAI,QAAQ,EAAE;gBACnB,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,WAAgB,EAAE,EAAE;oBAChE,IAAI,MAAM,EAAE;wBACV,OAAO,CAAC,cAAc,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,WAAW,WAAW,EAAE,CAAC,CAAC;qBACjF;yBAAM;wBACL,OAAO,CAAC,WAAW,CAAC,CAAC;qBACtB;gBACH,CAAC,CAAC,CAAC;aACJ;iBAAM;gBACL,OAAO,CAAC,SAAS,CAAC,CAAC;aACpB;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,MAAM,CAAC,WAAW,CAAC,QAAgB;QACzC,MAAM,GAAG,GAAW,QAAQ,CAAC,SAAS,CAAC,QAAQ,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,CAAC;QACrG,QAAQ,GAAG,EAAE;YACX,KAAK,KAAK,CAAC;YACX,KAAK,MAAM,CAAC;YACZ,KAAK,KAAK,CAAC;YACX,KAAK,KAAK;gBACR,OAAO,IAAI,CAAC;YACd;gBACE,OAAO,KAAK,CAAC;SAChB;IACH,CAAC;IAEO,MAAM,CAAC,iBAAiB,CAAC,QAAgB;QAC/C,MAAM,GAAG,GAAW,QAAQ,CAAC,SAAS,CAAC,QAAQ,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,CAAC;QACrG,QAAQ,GAAG,EAAE;YACX,KAAK,KAAK,CAAC;YACX,KAAK,MAAM;gBACT,OAAO,MAAM,CAAC;YAChB,KAAK,KAAK;gBACR,OAAO,KAAK,CAAC;YACf,KAAK,KAAK;gBACR,OAAO,KAAK,CAAC;YACf;gBACE,OAAO,MAAM,CAAC;SACjB;IACH,CAAC;IAED,kBAAkB;IACV,MAAM,CAAO,aAAa,CAAC,IAAI;;YACrC,IAAI;gBACF,MAAM,KAAK,GAAG,IAAI,eAAK,EAAE,CAAC;gBAC1B,OAAO,MAAM,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;aACpC;YAAC,OAAO,CAAC,EAAE;gBACV,OAAO,IAAI,CAAC;aACb;QACH,CAAC;KAAA;;AAvVH,wCAwVC;AAvVgB,4BAAa,GAAqB,IAAI,GAAG,EAAE,CAAC","sources":["./$_lazy_route_resources|lazy|groupOptions: {}|namespace object","./src/app/app.component.ts","./src/app/app.module.ts","./src/app/builder.ts","./src/app/components/answers/answer/answer.component.ts","./src/app/components/answers/answers.component.ts","./src/app/components/answers/answers.module.ts","./src/app/components/selections/selections.component.ts","./src/app/components/selections/selections.module.ts","./src/app/components/shared/loader/loader.component.ts","./src/app/components/shared/shared.module.ts","./src/app/directives/visibility-observer-master.directive.ts","./src/app/directives/visibility-observer.directive.ts","./src/app/services/configurator.service.ts","./src/app/utils/object.utils.ts","./src/environments/environment.ts","./src/helper/variation-helper.ts","./src/main.ts","./src/model/material.ts","./src/model/variation-settings.ts","./src/model/variation.ts","./src/utils/asset.utils.ts","./src/utils/image.utils.ts","./src/utils/object.utils.ts","./src/utils/scene-utils.ts","./src/utils/threed.utils.ts","./src/utils/variation-utils.ts"],"sourcesContent":["function webpackEmptyAsyncContext(req) {\n\t// Here Promise.resolve().then() is used instead of new Promise() to prevent\n\t// uncaught exception popping up in devtools\n\treturn Promise.resolve().then(() => {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t});\n}\nwebpackEmptyAsyncContext.keys = () => ([]);\nwebpackEmptyAsyncContext.resolve = webpackEmptyAsyncContext;\nwebpackEmptyAsyncContext.id = 98255;\nmodule.exports = webpackEmptyAsyncContext;","import {AfterViewInit, Component, ElementRef, OnDestroy, ViewChild} from '@angular/core';\nimport {OrbitControls} from 'three/examples/jsm/controls/OrbitControls';\nimport {Builder} from './builder';\nimport axios from 'axios';\nimport {GLTF, GLTFLoader} from 'three/examples/jsm/loaders/GLTFLoader';\nimport {Subscription} from 'rxjs';\nimport {Selection} from '@colijnit/configuratorapi/build/model/selection';\nimport {Answer} from '@colijnit/configuratorapi/build/model/answer';\nimport {DecoNode} from '@colijnit/configuratorapi/build/model/deco-node';\nimport {Article} from '@colijnit/configuratorapi/build/model/article';\nimport {Options} from '@colijnit/ioneconnector/build/model/options';\nimport {\n AmbientLight,\n BoxGeometry, DirectionalLight, HemisphereLight,\n Mesh,\n MeshBasicMaterial,\n Object3D,\n PCFSoftShadowMap,\n PerspectiveCamera,\n Scene, SpotLight,\n WebGLRenderer\n} from 'three';\n\n// @ts-ignore\nwindow.loadGLTF = async (file: any, isFile: boolean = true) => {\n const gltfLoader: GLTFLoader = new GLTFLoader();\n try {\n return new Promise((resolve: Function) => {\n if (isFile) {\n gltfLoader.load(file, (obj) => {\n resolve(obj.scene);\n });\n } else {\n gltfLoader.parse(file, null, (obj: GLTF) => {\n resolve(obj.scene);\n })\n }\n });\n } catch (e) {\n console.error(e);\n return null;\n }\n};\n// @ts-ignore\nwindow.downloadVariation = async (fileName: string) => {\n try {\n const hqFileName = fileName.replace('/variation/', '/variation/HQ/')\n const response: any = await axios({\n method: \"get\",\n url: `${hqFileName}`,\n responseType: \"arraybuffer\"\n });\n return await response.data;\n } catch (e) {\n try {\n const response: any = await axios({\n method: \"get\",\n url: `${fileName}`,\n responseType: \"arraybuffer\"\n });\n if (response.status !== 200) {\n console.error(response.statusText);\n }\n return await response.data;\n } catch (e) {\n console.error(`Error downloading: ${fileName}`);\n }\n }\n};\n\n@Component({\n selector: 'app-root',\n template: `\n <input type=\"button\" value=\"Render\" style=\"position: fixed; top: 10px; left: 10px; background-color: blue; color: white\" (click)=\"render()\"/>\n <div #canvas class=\"canvas\"></div>\n <selections *ngIf=\"!showAnswers\" [selections]=\"selections\" (selectionClick)=\"selectSelection($event)\"></selections>\n <answers *ngIf=\"showAnswers\" [selectionTitle]=\"selectionTitle\" [answers]=\"answers\" (answerClick)=\"selectAnswer($event)\"></answers>\n `\n})\nexport class AppComponent implements AfterViewInit, OnDestroy {\n\n @ViewChild('canvas', {read: ElementRef})\n public canvasElement: ElementRef;\n\n public selectionTitle: string;\n public selections: Selection[] = [];\n public decos: DecoNode[] = [];\n public article: Article;\n public answers: Answer[] = [];\n\n public showAnswers: boolean = false;\n public showSelections: boolean = true;\n\n // private _builder: Builder;\n private _object: Object3D;\n private scene: Scene = new Scene();\n private renderer: WebGLRenderer;\n private camera: PerspectiveCamera;\n private controls: OrbitControls;\n private _subs: Subscription[] = [];\n private _options: Options = {\n url: \"https://3dmrp.ionecloud.nl/ione/\",\n version: \"252\",\n schema: \"134974\"\n };\n\n // private _options: Options = {\n // url: \"https://ione.simonealbani.com:8443/ione\",\n // version: \"250\",\n // schema: \"31416\"\n // };\n\n // private _options: Options = {\n // url: \"https://3dshared.ionecloud.nl/ione/\",\n // version: \"250\",\n // schema: \"67325\"\n // };\n\n private _goodId: number = 238702;\n private _instanceId: string = '184141';\n private _sku: string = '1523';\n\n // private _goodId: number = 39221;\n // private _instanceId: string = '96423';\n // private _sku: string = '6373';\n\n // private _goodId: number = 300868;\n // private _instanceId: string = '321560';\n // private _sku: string = '4358';\n\n constructor(private _builder: Builder) {}\n\n ngAfterViewInit(): void {\n // this._builder = new Builder();\n this._builder.init(this.scene, this._options);\n this._subs.push(\n this._builder.selectionsReceived.subscribe((selections: Selection[]) => {\n this.selections = selections;\n }),\n this._builder.decosReceived.subscribe((decos: DecoNode[]) => {\n this.decos = decos;\n }),\n this._builder.articleLoaded.subscribe((article: Article) => {\n if (article) {\n this.article = article;\n }\n }),\n this._builder.answersReceived.subscribe((answers: Answer[]) => {\n this.answers = answers;\n this.showAnswers = this.answers.length > 0;\n }),\n this._builder.modelLoaded.subscribe((object: Object3D) => {\n if (object && this.answers.length === 0) {\n this._loadModel(object);\n }\n })\n );\n this._initScene();\n this._initRenderer();\n this._initCameraAndControls();\n this._initLights();\n // this._test();\n this._animate();\n this._builder.buildModel(this._sku, this._instanceId, this._goodId);\n }\n\n ngOnDestroy(): void {\n this._subs.forEach(s => s.unsubscribe());\n }\n\n public disableControls(): void {\n this.controls.enabled = false;\n }\n\n public enableControls(): void {\n this.controls.enabled = true;\n }\n\n public selectSelection(selection: Selection): void {\n this._builder.selectSelection(selection);\n this.selectionTitle = selection.commercialQuestion;\n this.showSelections = false;\n }\n\n public selectAnswer(answer: Answer): void {\n this._builder.selectAnswer(answer);\n this.selectionTitle = ' . . / ' + answer.answer;\n }\n\n public async render(): Promise<void> {\n const data = {\n selections: this.selections,\n decos: this.decos,\n assetUrl: this.article.assetUrl,\n cdnUrl: this.article.contentDeliveryUrl,\n schema: this.article.distSchema\n };\n\n const result = await axios({\n headers: {\n 'Content-Type': 'application/json'\n },\n method: 'POST',\n data: JSON.stringify(data),\n url: 'http://localhost:3000/getRenderFromData',\n responseType: \"json\"\n })\n if (result.status === 200) {\n console.log('success!');\n }\n }\n\n private _initScene(): void {\n this.scene = new Scene();\n }\n\n private _initRenderer(): void {\n this.renderer = new WebGLRenderer({\n alpha: true,\n antialias: true,\n preserveDrawingBuffer: true\n });\n this.renderer.setClearColor(0xfafafa);\n this.renderer.autoClear = true;\n this.renderer.setPixelRatio(window.devicePixelRatio);\n this.renderer.shadowMap.enabled = true;\n // Use PCFShadowMap to enable radius else use PCFSoftShadowMap\n this.renderer.shadowMap.type = PCFSoftShadowMap;\n // this.renderer.outputEncoding = THREE.sRGBEncoding;\n // this.renderer.gammaFactor = 2.2;\n // this.renderer.toneMappingExposure = 1.1;\n this.canvasElement.nativeElement.appendChild(this.renderer.domElement);\n }\n\n private _initCameraAndControls(): void {\n this.camera = new PerspectiveCamera(45, 1, 0.01, 100);\n this.controls = new OrbitControls( this.camera, this.renderer.domElement );\n this.camera.position.set(0, 3, 1.5);\n this.controls.update();\n }\n\n private _animate(): void {\n this.renderer.setAnimationLoop(() => this._render());\n }\n\n private _render(): void {\n this._checkCanvasResize();\n this.renderer.render(this.scene, this.camera);\n }\n\n private _checkCanvasResize(): void {\n const canvas = this.renderer.domElement;\n if (this.canvasElement.nativeElement.clientWidth !== canvas.width || this.canvasElement.nativeElement.clientHeight !== canvas.height) {\n this._updateWindowSize();\n }\n }\n\n private _updateWindowSize() {\n this._resizeRendererToDisplaySize();\n const canvas = this.renderer.domElement;\n const aspect = canvas.width / canvas.height;\n this.camera.aspect = aspect;\n (this.camera as PerspectiveCamera).updateProjectionMatrix();\n }\n\n private _resizeRendererToDisplaySize() {\n this.renderer.setSize(this.canvasElement.nativeElement.clientWidth, this.canvasElement.nativeElement.clientHeight, false);\n }\n\n private _test(): void {\n const mat: MeshBasicMaterial = new MeshBasicMaterial({color: 'blue'});\n const geo: BoxGeometry = new BoxGeometry(1, 1, 1);\n const mesh: Mesh = new Mesh(geo, mat);\n this.scene.add(mesh);\n }\n\n private async _loadModel(object: Object3D): Promise<void> {\n object.name = this._sku;\n object.visible = true;\n const objectFromScene = this.scene.getObjectByName(this._sku);\n if (objectFromScene) {\n this.scene.remove(objectFromScene);\n }\n this.scene.add(object);\n }\n\n private _initLights(): void {\n const ambientLight: AmbientLight = new AmbientLight('#595959', 1.2);\n ambientLight.name = 'ambientLight';\n const directional: DirectionalLight = new DirectionalLight('white', 1);\n directional.position.set(0, 2, 0);\n directional.castShadow = true;\n const spotLight1 = new SpotLight('white');\n spotLight1.power = 400;\n spotLight1.decay = 2;\n spotLight1.position.set(-3, 8 , -3);\n spotLight1.castShadow = true;\n const spotLight2 = new SpotLight('white');\n spotLight2.power = 400;\n spotLight2.decay = 2;\n spotLight2.position.set(3, 8 , -3);\n spotLight2.castShadow = true;\n const spotLight3 = new SpotLight('white');\n spotLight3.power = 400;\n spotLight3.decay = 2;\n spotLight3.position.set(-3, 8 , 3);\n spotLight3.castShadow = true;\n const spotLight4 = new SpotLight('white');\n spotLight4.power = 400;\n spotLight4.decay = 2;\n spotLight4.position.set(3, 8 , 3);\n spotLight4.castShadow = true;\n const hemiSphere = new HemisphereLight('white', 'green', 0.15);\n\n this.scene.add(ambientLight, directional, spotLight1, spotLight2, spotLight3, spotLight4, hemiSphere);\n }\n}\n","import {NgModule} from '@angular/core';\nimport {AppComponent} from \"./app.component\";\nimport {CommonModule} from \"@angular/common\";\nimport {BrowserAnimationsModule} from \"@angular/platform-browser/animations\";\nimport {SelectionsModule} from \"./components/selections/selections.module\";\nimport {AnswersModule} from \"./components/answers/answers.module\";\nimport {Builder} from './builder';\n\n@NgModule({\n imports: [\n BrowserAnimationsModule,\n CommonModule,\n SelectionsModule,\n AnswersModule\n ],\n providers: [\n Builder\n ],\n declarations: [\n AppComponent\n ],\n entryComponents: [\n AppComponent\n ],\n exports: [\n AppComponent\n ],\n bootstrap: [\n AppComponent\n ]\n})\n\nexport class AppModule {\n}\n","import * as THREE from 'three';\r\nimport {Scene} from 'three';\r\nimport {DecoNode} from '@colijnit/configuratorapi/build/model/deco-node';\r\nimport {Selection} from '@colijnit/configuratorapi/build/model/selection';\r\nimport {DecoNodeType} from '@colijnit/configuratorapi/build/enum/deco-node-type.enum';\r\nimport {ThreedUtils} from '../utils/threed.utils';\r\nimport {DecoNodeKind} from '@colijnit/configuratorapi/build/enum/deco-node-kind.enum';\r\nimport {SceneUtils} from '../utils/scene-utils';\r\nimport {VariationHelper} from '../helper/variation-helper';\r\nimport {Article} from '@colijnit/configuratorapi/build/model/article';\r\nimport {ConfiguratorService} from './services/configurator.service';\r\nimport {Injectable} from '@angular/core';\r\nimport {Answer} from '@colijnit/configuratorapi/build/model/answer';\r\nimport {BehaviorSubject} from 'rxjs';\r\nimport {QuestionAndAnswers} from '@colijnit/configuratorapi/build/model/question-and-answers';\r\nimport {ImageUtils} from '../utils/image.utils';\r\nimport {ObjectUtils} from './utils/object.utils';\r\nimport {NodeType} from '@colijnit/configuratorapi/build/enum/node-type.enum';\r\nimport {BusinessObjectFactory} from '@colijnit/ioneconnector/build/service/business-object-factory';\r\nimport {Options} from '@colijnit/ioneconnector/build/model/options';\r\nimport {DataServiceResponseData} from '@colijnit/ioneconnector/build/model/data-service-response-data';\r\n\r\n@Injectable({\r\n providedIn: \"root\"\r\n})\r\nexport class Builder {\r\n\r\n public selectionsReceived: BehaviorSubject<Selection[]> = new BehaviorSubject<Selection[]>([]);\r\n public articleLoaded: BehaviorSubject<Article> = new BehaviorSubject<Article>(undefined);\r\n public decosReceived: BehaviorSubject<DecoNode[]> = new BehaviorSubject<DecoNode[]>([]);\r\n public answersReceived: BehaviorSubject<Answer[]> = new BehaviorSubject<Answer[]>([]);\r\n public modelLoaded: BehaviorSubject<THREE.Object3D> = new BehaviorSubject<THREE.Object3D>(null);\r\n public set debug(value: Function) {\r\n if (value) {\r\n this._debug = value;\r\n if (this._variationHelper) {\r\n this._variationHelper.debug = this._debug;\r\n }\r\n }\r\n }\r\n public get debug(): Function {\r\n return this._debug;\r\n }\r\n\r\n private _scene: THREE.Scene;\r\n private _instanceId: string;\r\n private _sku: string;\r\n private _goodId: number;\r\n private _selections: Selection[] = [];\r\n private _answers: Answer[] = [];\r\n private _decos: DecoNode[] = [];\r\n private _placedAdjustables: any[] = [];\r\n private _placedAddables: any[] = [];\r\n private _adjustables: any[] = [];\r\n private _addables: any[] = [];\r\n\r\n private _debug: Function;\r\n\r\n private _imageCache: Map<number, string> = new Map();\r\n\r\n private _boFactory: BusinessObjectFactory;\r\n private _source: THREE.Object3D;\r\n private _threedUtils: ThreedUtils;\r\n private _variationHelper: VariationHelper;\r\n private _articleCache: Map<string, Article> = new Map();\r\n private _configuratorService: ConfiguratorService;\r\n\r\n constructor() {\r\n }\r\n\r\n public init(scene: Scene, options?: Options) {\r\n this._boFactory = new BusinessObjectFactory();\r\n this._threedUtils = new ThreedUtils();\r\n this._variationHelper = new VariationHelper();\r\n this._variationHelper.debug = this._debug;\r\n\r\n if (!scene) {\r\n throw 'No scene object provided!';\r\n }\r\n this._configuratorService = new ConfiguratorService();\r\n // this._imageCacheService = new ImageCacheService();\r\n if (options) {\r\n this._configuratorService.initApi(options);\r\n }\r\n this._scene = scene;\r\n }\r\n\r\n public async buildModel(sku?: string, instanceId?: string, goodId?: number): Promise<THREE.Object3D> {\r\n if (!this._scene) {\r\n return;\r\n }\r\n try {\r\n await this._setInstanceId(sku, instanceId, goodId);\r\n await this._prepareConfiguration(this._sku, this._goodId);\r\n if (this._source) {\r\n await this._configuratorService.setInstanceToConfigure(this._instanceId);\r\n const promises: Promise<any>[] = [];\r\n this._reset();\r\n promises.push(this.getQuestionAndAnswers());\r\n promises.push(this._getSelections(this._instanceId));\r\n promises.push(this._getDecos());\r\n await Promise.all(promises);\r\n if (this._answers.length > 0) {\r\n return;\r\n }\r\n this._linkSelectionsAndDecos();\r\n this._prepareTheSelections();\r\n this._preloadMaterials();\r\n const build = await this._build();\r\n return build;\r\n } else {\r\n throw 'GLB source not found!';\r\n }\r\n } catch (e) {\r\n throw e;\r\n }\r\n }\r\n\r\n public async buildModelFromData(selections: Selection[], decos: DecoNode[], assetUrl: string, cdnUrl: string, schema: string): Promise<THREE.Object3D> {\r\n return new Promise(async (resolve: Function, reject: Function) => {\r\n if (!this._scene) {\r\n reject('no scene provided!');\r\n }\r\n try {\r\n this._log('start build');\r\n await this._downloadAsset(assetUrl, cdnUrl, schema);\r\n if (selections && selections.length > 1 && decos && decos.length > 0 && this._source) {\r\n this._reset();\r\n this._selections = selections;\r\n this._decos = decos;\r\n this._linkSelectionsAndDecos();\r\n this._prepareTheSelections();\r\n this._preloadMaterials();\r\n const build = await this._build();\r\n this._cleanUp();\r\n this._log('finish build');\r\n resolve(build);\r\n } else {\r\n reject('Unsufficient data provided!');\r\n }\r\n } catch (e) {\r\n reject(e);\r\n }\r\n });\r\n }\r\n\r\n public initNodeInstance(goodId: number): Promise<any> {\r\n return this._configuratorService.initNodeInstance(goodId);\r\n }\r\n\r\n public destroy(): void {\r\n this._threedUtils.clearCache();\r\n this._variationHelper.clearCache();\r\n }\r\n\r\n public async selectSelection(selection: Selection): Promise<void> {\r\n await this._configuratorService.selectSelection(selection, false);\r\n await this.getQuestionAndAnswers();\r\n }\r\n\r\n public async getQuestionAndAnswers(publicationCode?: number): Promise<void> {\r\n const questionsAndAnswers: QuestionAndAnswers = await this._configuratorService.getQuestionAndAnswers(false, publicationCode);\r\n this._answers = questionsAndAnswers.answers;\r\n this.answersReceived.next(questionsAndAnswers.answers);\r\n }\r\n\r\n public async selectAnswer(answer: Answer): Promise<void> {\r\n await this._configuratorService.selectAnswer(answer, false);\r\n await this.getQuestionAndAnswers();\r\n if (this._answers.length === 0) {\r\n this._build();\r\n }\r\n }\r\n\r\n public getImageForSelectionOrAnswer(object: Selection | Answer): Promise<string> {\r\n const includeMimeType: boolean = true, thumb: boolean = true;\r\n return new Promise((resolve: Function, reject: Function) => {\r\n if (object && object.nodeId) {\r\n if (!this._imageCache.has(object.nodeId)) {\r\n return this._configuratorService.getSingleImage(object.nodeId, 4, includeMimeType, thumb, true)\r\n .then((responseData: DataServiceResponseData) => {\r\n const base64: string = this._handleResponseData(includeMimeType, thumb, responseData);\r\n this._imageCache.set(object.nodeId, base64);\r\n resolve(base64);\r\n }).catch(() => {\r\n reject();\r\n });\r\n } else {\r\n resolve(this._imageCache.get(object.nodeId));\r\n }\r\n } else {\r\n reject();\r\n }\r\n });\r\n }\r\n\r\n public _cleanUp(): void {\r\n this._sku = undefined;\r\n this._goodId = undefined;\r\n this._instanceId = undefined;\r\n this._variationHelper.clearCache();\r\n }\r\n\r\n private _handleResponseData(includeMimetype: boolean, thumb: boolean, responseData: DataServiceResponseData): string {\r\n if (responseData && responseData.resultObject) {\r\n if (responseData.resultObject.filePath !== null && responseData.resultObject.filePath !== \"\") {\r\n return ImageUtils.getFixedImageFilepathUrl(responseData.resultObject.filePath);\r\n } else {\r\n if (includeMimetype) {\r\n return ImageUtils.getDocBodyWithMimeTypeDefinition(responseData.resultObject.fileName,\r\n thumb ? responseData.resultObject.thumbnailBody : responseData.resultObject.documentBody);\r\n } else {\r\n return thumb ? responseData.resultObject.thumbnailBody : responseData.resultObject.documentBody;\r\n }\r\n }\r\n } else {\r\n return '';\r\n }\r\n }\r\n\r\n private _preloadMaterials(): void {\r\n this._variationHelper.preloadVariations(\r\n this._decos\r\n .filter(d => d.gameObjectName && d.type === DecoNodeType.Variation)\r\n .map(d => d.gameObjectName));\r\n }\r\n\r\n private async _setInstanceId(sku: string, instanceId?: string, goodId?: number): Promise<void> {\r\n if (!instanceId && !this._instanceId) {\r\n if (!goodId) {\r\n goodId = await this._getGoodIdFromSku(sku);\r\n }\r\n this._goodId = goodId;\r\n const result: DataServiceResponseData = await this.initNodeInstance(this._goodId);\r\n if (result && result.resultObject) {\r\n this._instanceId = result.resultObject;\r\n } else {\r\n throw 'Failed to initialize node instance';\r\n }\r\n } else if (!this._instanceId) {\r\n this._instanceId = instanceId;\r\n }\r\n if (!this._sku) {\r\n this._sku = sku;\r\n }\r\n }\r\n\r\n private async _prepareConfiguration(sku: string, goodId?: number): Promise<void> {\r\n const article: Article = await this._getArticle(sku, goodId);\r\n if (article && article.assetUrl) {\r\n if (article.contentDeliveryUrl) {\r\n this._variationHelper.assetPath =\r\n article.contentDeliveryUrl +\r\n (article.contentDeliveryUrl.endsWith('/') ? '' : '/') +\r\n (article.distSchema ? article.distSchema : 'UP_DBA');\r\n }\r\n await this._downloadAsset(article.assetUrl, article.contentDeliveryUrl, article.distSchema);\r\n }\r\n }\r\n\r\n private async _downloadAsset(assetUrl: string, cdnUrl: string, schema: string): Promise<void> {\r\n this._source = await this._threedUtils.download3DSource(assetUrl, cdnUrl)\r\n .catch((error) => {\r\n throw error;\r\n });\r\n if (cdnUrl) {\r\n this._variationHelper.assetPath =\r\n cdnUrl +\r\n (cdnUrl.endsWith('/') ? '' : '/') +\r\n (schema ? schema : 'UP_DBA');\r\n }\r\n }\r\n\r\n private async _build(): Promise<THREE.Object3D> {\r\n const adjustables: Selection[] = this._getAdjustables();\r\n if (adjustables && adjustables.length === 0 && this._selections && this._selections.length > 0) { // check if article has a gameObject\r\n if (this._selections[0].nodeType === NodeType.Article && this._selections[0].gameObject) {\r\n adjustables.push(this._selections[0]);\r\n }\r\n }\r\n if (adjustables && adjustables.length > 0) {\r\n const obj: THREE.Object3D = new THREE.Object3D();\r\n obj.visible = false; // no need to render visualy\r\n this._scene.add(obj);\r\n let connected = false;\r\n this._log('build main model');\r\n for (let i = 0, len: number = adjustables.length; i < len; i++) {\r\n const adjustable: THREE.Object3D = this._createAdjustable(obj, adjustables[i]);\r\n if (adjustable) {\r\n for (let ii = 0, lenii: number = this._placedAdjustables.length; ii < lenii; ii++) {\r\n if (SceneUtils.TrySelectorConnection(this._scene,\r\n obj, this._placedAdjustables[ii], adjustable, i === 1)) {\r\n this._placedAdjustables[ii].visible = true;\r\n adjustable.visible = true;\r\n connected = true;\r\n break;\r\n }\r\n connected = false;\r\n }\r\n }\r\n if (!connected && this._placedAdjustables.length > 1) {\r\n console.warn('No connection found for: ', adjustable.name);\r\n }\r\n }\r\n this._log('place addables');\r\n this._placeAddables(obj);\r\n this._log('update pivot');\r\n this._updatePivot(obj);\r\n this._log('load variations');\r\n await this._loadVariations(obj);\r\n // this._variationHelper.clearCache();\r\n this._log('remove from scene');\r\n this._scene.remove(obj);\r\n ObjectUtils.DisposeObject(this._source);\r\n // this._cleanUp();\r\n this._log('ready!');\r\n this.modelLoaded.next(obj);\r\n return obj;\r\n } else {\r\n throw 'No adjustables found!';\r\n // this._building = false;\r\n // if (this.selections.length < 2) {\r\n // this._errorService.addError(this.activeInstance, {message: 'NO_SELECTIONS_OR_DECOS', description: 'NO_SELECTIONS_OR_DECOS_INFO'});\r\n // this.buildFinished.next({instanceId: this.activeInstance, resultType: ResultType.NoSelections});\r\n // } else if (this.decos.size === 0) {\r\n // this._errorService.addError(this.activeInstance, {message: 'NO_SELECTIONS_OR_DECOS', description: 'NO_SELECTIONS_OR_DECOS_INFO'});\r\n // this.buildFinished.next({instanceId: this.activeInstance, resultType: ResultType.NoDecoNodes});\r\n // } else {\r\n // this._errorService.addError(this.activeInstance, {message: 'NO_ADJUSTABLES', description: 'NO_ADJUSTABLES_INFO'});\r\n // this.buildFinished.next({instanceId: this.activeInstance, resultType: ResultType.NoAdjustables});\r\n // }\r\n }\r\n }\r\n\r\n private _prepareTheSelections(): void {\r\n const selections = this._selections.slice();\r\n const selectionOfArticle: Selection = selections.find(s => s.nodeType === NodeType.Article);\r\n const adjustableSelections: Selection[] = selections.filter(s => s.addAdjust === '2');\r\n const isArticleWithMaterial: boolean =\r\n adjustableSelections.length === 0 &&\r\n selectionOfArticle.gameObject &&\r\n selectionOfArticle.gameObject.length > 0;\r\n // get generic variations\r\n const globalVariations: DecoNode[] = this._selections\r\n .filter(s => (s.generic || adjustableSelections.length === 1) && (s.decoNode as any).variation && !s.decoNode.type)\r\n .map((value: Selection, index: number, array: Selection[]) => {\r\n // find selection of variation\r\n const sel: Selection = this._selections.find(s => s.artNodeIdDeco === (value.decoNode as any).variation.parentId);\r\n if (sel) {\r\n (value.decoNode as any).variation.supplierArticleNr = sel.supplierArticleNr;\r\n }\r\n (value.decoNode as any).variation.materialId = this._getMaterialIdFromParent(value.node);\r\n return (value.decoNode as any).variation;\r\n });\r\n // commented out for the moment\r\n // globalVariations.forEach(g => {\r\n // const parentIdx = selections.findIndex(s => s.decoNode && s.decoNode.id === g.parentId);\r\n // if (parentIdx) { // remove parent selection\r\n // selections.splice(parentIdx, 1);\r\n // }\r\n // const idx = selections.findIndex(s => s.decoNode && s.decoNode.id === g.id);\r\n // if (idx) { // move generic variations to top\r\n // const selection = selections[idx];\r\n // selections.splice(idx, 1);\r\n // selections.unshift(selection);\r\n // }\r\n // });\r\n\r\n // const usedVariations: FurniturePartVariation[] = [];\r\n let globalVariationsRewrite: boolean = true;\r\n\r\n const len: number = selections.length;\r\n let lastAdded: Selection;\r\n let lastAdjustable: Selection;\r\n let newPart: boolean = false;\r\n let previousPresLevel: number = -1;\r\n let positioning: any;\r\n let optionText: string;\r\n for (let i = 0; i < len; i++) {\r\n const selection: Selection = selections[i];\r\n if (selection.presentationLevel === 1) {\r\n positioning = selection.hdecoPositioning;\r\n optionText = selection.question;\r\n }\r\n if (selection.presentationLevel > previousPresLevel) {\r\n selection.hdecoPositioning = selection.hdecoPositioning || positioning;\r\n }\r\n if (selection.decoNode) {\r\n if (selection.decoNode.type === DecoNodeType.Variation) {\r\n const decoNode = selection.decoNode;\r\n (decoNode as any).optionText = optionText;\r\n // find selection of variation and set materialId in case of multimaterial\r\n (decoNode as any).materialId = this._getMaterialIdFromParent(decoNode.nodeId);\r\n if (lastAdded) {\r\n if (newPart) {\r\n if ((decoNode as any).materialId) {\r\n if (!lastAdded.variations.find(v => v.id === decoNode.id)) {\r\n lastAdded.variations.push(decoNode);\r\n }\r\n } else {\r\n lastAdded.variations = [decoNode];\r\n }\r\n } else {\r\n if (!lastAdded.variations.find(v => v.id === decoNode.id)) {\r\n lastAdded.variations.push(decoNode);\r\n }\r\n }\r\n newPart = false;\r\n } else {\r\n if (globalVariationsRewrite) {\r\n globalVariations.length = 0;\r\n globalVariationsRewrite = false;\r\n }\r\n if (!globalVariations.find(v => v.id === decoNode.id)) {\r\n globalVariations.push(decoNode);\r\n }\r\n }\r\n // const variation: FurniturePartVariation = new FurniturePartVariation();\r\n // variation.BrandId = selection.decoNode.brandId;\r\n // variation.Description = selection.decoNode.gameObjectName;\r\n // variation.MaterialId = (selection.decoNode as any).materialId;\r\n // variation.SupplierArticleNr = (selection.decoNode as any).supplierArticleNr;\r\n // usedVariations.push(variation);\r\n } else if ((selection.decoNode.type === DecoNodeType.Part &&\r\n typeof selection.decoNode.gameObjectName === 'string' &&\r\n selection.decoNode.gameObjectName.length) || (isArticleWithMaterial)) {\r\n if (selection.decoNode.kind === DecoNodeKind.Adjustable || (isArticleWithMaterial)) {\r\n selection.variations = globalVariations;\r\n this._adjustables.push(selection);\r\n if (!lastAdded || (lastAdded.nodeId !== selection.nodeId || lastAdded.node !== selection.node)) {\r\n newPart = true;\r\n }\r\n lastAdded = selection;\r\n lastAdjustable = selection;\r\n } else if (selection.decoNode.kind === DecoNodeKind.Addable) {\r\n selection.variations = lastAdjustable ? lastAdjustable.variations : globalVariations;\r\n if (lastAdjustable) {\r\n lastAdjustable.addables.push(selection);\r\n }\r\n this._addables.push(selection);\r\n if (!lastAdded || (lastAdded.nodeId !== selection.nodeId || lastAdded.node !== selection.node)) {\r\n newPart = true;\r\n }\r\n lastAdded = selection;\r\n }\r\n }\r\n }\r\n previousPresLevel = selection.presentationLevel;\r\n }\r\n // this._upsertFurniture(this.activeInstance,\r\n // {Variations: usedVariations});\r\n }\r\n\r\n /**\r\n * Returns the materialId of the parent up the tree until presentionlevel 1 is reached\r\n * @param id\r\n * @private\r\n */\r\n private _getMaterialIdFromParent(id: number): string {\r\n const idx: number = this._selections.findIndex(s => s.node === id);\r\n let currentLevel: number = 999;\r\n if (idx > -1) {\r\n for (let i = idx; i > 0; i--) {\r\n const selection = this._selections[i];\r\n if (selection.presentationLevel >= currentLevel) {\r\n break;\r\n }\r\n currentLevel = selection.presentationLevel;\r\n if (selection.hdecoGameObject) {\r\n return selection.hdecoGameObject;\r\n }\r\n }\r\n }\r\n return undefined;\r\n }\r\n\r\n private _createAdjustable(parent: THREE.Object3D, adj: Selection): THREE.Object3D {\r\n let obj: any = this._source ? this._source.getObjectByName(adj.decoNode.gameObjectName || adj.gameObject) : null;\r\n if (!obj) {\r\n // in case of glb files, the importer removes dots from names\r\n const name = adj.decoNode.gameObjectName.replace(/[.]/g, '');\r\n obj = this._source ? this._source.getObjectByName(name) : null;\r\n if (!obj) {\r\n console.warn(`No object with name ${adj.decoNode.gameObjectName} found!`);\r\n return null;\r\n }\r\n }\r\n let adjustable: any = obj.clone();\r\n adjustable.name = this._createUniqueName(parent, obj);\r\n adjustable.userData.selection = adj;\r\n adjustable.position.set(0, 0, 0);\r\n adjustable.traverse(c => {\r\n c.visible = !c.name.toLowerCase().startsWith('c_');\r\n });\r\n parent.add(adjustable);\r\n // the object being added to the customFloorGroup is being recreated so we loose the reference\r\n // therefor we need to retrieve the created object again\r\n adjustable = parent.getObjectByName(adjustable.name);\r\n this._placedAdjustables.push(adjustable);\r\n return adjustable;\r\n }\r\n\r\n private _createAddable(parent: THREE.Object3D, add: Selection, part2?: any, part1?: any): THREE.Object3D {\r\n const obj: any = this._source.getObjectByName(add.decoNode.gameObjectName);\r\n if (!obj) {\r\n return null;\r\n }\r\n // const selection: Selection = this._getSelectionFromId(adj.artNodeIdDeco);\r\n const addable: any = obj.clone();\r\n addable.name = this._createUniqueName(parent, obj);\r\n addable.userData.selection = add;\r\n addable.position.set(0, 0, 0);\r\n addable.visible = true;\r\n if (part1 && part2) {\r\n parent.add(addable);\r\n this._placedAddables.push(addable);\r\n return addable;\r\n }\r\n return addable;\r\n }\r\n\r\n private _placeAddables(parent: THREE.Object3D): void {\r\n const len: number = this._placedAdjustables.length;\r\n for (let i = 0; i < len; i++) {\r\n if (this._placedAdjustables[i].userData.hasOwnProperty('selection') && this._placedAdjustables[i].userData.selection) {\r\n const adjustableSelection: Selection = this._placedAdjustables[i].userData.selection;\r\n if (adjustableSelection) {\r\n const lena: number = adjustableSelection.addables.length;\r\n let conAddable: any;\r\n for (let ia = 0; ia < lena; ia++) {\r\n SceneUtils.TrySelectorConnection(this._scene,\r\n parent, this._placedAdjustables[i], adjustableSelection.addables[ia], false,\r\n (add, part2?, part1?) => this._createAddable(parent, add, part2, part1));\r\n if (conAddable) {\r\n SceneUtils.TrySelectorConnection(this._scene,\r\n parent, conAddable, adjustableSelection.addables[ia], false,\r\n (add, part2?, part1?) => this._createAddable(parent, add, part2, part1));\r\n }\r\n conAddable = this._placedAddables[this._placedAddables.length - 1];\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n private _createUniqueName(parent: THREE.Object3D, obj: THREE.Object3D): string {\r\n let iteration = 0;\r\n let name = obj.name;\r\n let existingObj = parent.getObjectByName(name);\r\n while (existingObj) {\r\n iteration++;\r\n name = obj.name + (iteration !== 0 ? ('_' + iteration) : '');\r\n existingObj = parent.getObjectByName(name);\r\n }\r\n return name;\r\n }\r\n\r\n private async _getGoodIdFromSku(sku: string): Promise<number> {\r\n const response: DataServiceResponseData = await this._configuratorService.getGoodIdFromSku(sku, false);\r\n if (response.validationResult.success && response.resultObject) {\r\n return response.resultObject;\r\n }\r\n }\r\n\r\n private async _getArticle(sku: string, goodId: number): Promise<Article> {\r\n if (this._articleCache.has(sku)) {\r\n this.articleLoaded.next(this._articleCache.get(sku));\r\n return this._articleCache.get(sku);\r\n }\r\n if (!goodId) {\r\n goodId = await this._getGoodIdFromSku(sku)\r\n .catch((error) => {\r\n throw `Article with sku ${sku} not found!`;\r\n });\r\n }\r\n let article: Article;\r\n const articleResponse: DataServiceResponseData = await this._configuratorService.getArticleQuickSel(goodId, false);\r\n if (articleResponse.validationResult.success && articleResponse.resultObject) {\r\n if (articleResponse.resultObject.hasOwnProperty('oArticle')) {\r\n const obj = Array.isArray(articleResponse.resultObject['oArticle']) ? articleResponse.resultObject['oArticle'][0] : articleResponse.resultObject['oArticle'];\r\n article = <Article>this._boFactory.makeWithRawBackendData(Article, obj);\r\n } else {\r\n article = <Article>this._boFactory.makeWithRawBackendData(Article, articleResponse.resultObject);\r\n }\r\n }\r\n this._articleCache.set(sku, article);\r\n this.articleLoaded.next(article);\r\n return article;\r\n }\r\n\r\n private async _getSelections(instanceId: string, publicationCode?: number): Promise<void> {\r\n this._selections = [];\r\n const selectionResponse: DataServiceResponseData = await this._configuratorService.getSelections(false, publicationCode);\r\n if (selectionResponse.resultObjects && selectionResponse.resultObjects.length > 0) {\r\n this._selections = <Selection[]>this._boFactory.makeBOArrayFromRawBackendDataArray(Selection, selectionResponse.resultObjects);\r\n this._selections.forEach(s => s.instanceId = instanceId);\r\n // const filtered: Selection[] = this._selections.filter(s => s.nodeType !== NodeType.Article && s.presentationLevel === 1);\r\n this.selectionsReceived.next(this._selections);\r\n } else {\r\n throw 'No selections found!';\r\n }\r\n }\r\n\r\n private async _getDecos(): Promise<void> {\r\n this._decos = [];\r\n const decosResponse: DataServiceResponseData = await this._configuratorService.getDecos(false);\r\n if (decosResponse.resultObjects && decosResponse.resultObjects.length > 0) {\r\n this._decos = <DecoNode[]>this._boFactory.makeBOArrayFromRawBackendDataArray(DecoNode, decosResponse.resultObjects);\r\n this.decosReceived.next(this._decos);\r\n } else {\r\n throw 'No deconodes found!';\r\n }\r\n }\r\n\r\n private _linkSelectionsAndDecos(): void {\r\n const len: number = this._selections.length;\r\n for (let i = 0; i < len; i++) {\r\n // const id: string = this.selections[i].artNodeIdDeco;\r\n let deco: any = this._decos.find(d => d.nodeId === this._selections[i].node);\r\n if (!deco) {\r\n deco = new DecoNode();\r\n }\r\n if (deco.type !== DecoNodeType.Variation) {\r\n const variation: any = this._getVariations().find(v => v.parentId === this._selections[i].artNodeIdDeco);\r\n if (variation) {\r\n deco.variation = variation;\r\n }\r\n }\r\n this._selections[i].decoNode = deco;\r\n }\r\n }\r\n\r\n private _getVariations(): DecoNode[] {\r\n return this._decos.filter((deco: DecoNode) => {\r\n return deco.type === DecoNodeType.Variation;\r\n });\r\n }\r\n\r\n private async _loadVariations(obj: THREE.Object3D): Promise<void> {\r\n this._log('load variation for parts');\r\n await this._variationHelper.loadPart(obj, this._adjustables, true);\r\n this._log('load variation for adjustables');\r\n await this._variationHelper.loadVariation(obj, this._adjustables, true);\r\n this._log('load variation for addables');\r\n await this._variationHelper.loadVariation(obj, this._addables, true);\r\n this._log('load variation clear cache');\r\n this._variationHelper.clearCache();\r\n this._log('load variations done');\r\n }\r\n\r\n private _getAdjustables(): Selection[] {\r\n return this._selections.filter(s => {\r\n const node: DecoNode = s.decoNode;\r\n return node && node.gameObjectName && node.type === DecoNodeType.Part && node.kind === DecoNodeKind.Adjustable;\r\n });\r\n }\r\n\r\n private _updatePivot(obj: THREE.Object3D) {\r\n const boundingBox = new THREE.Box3().setFromObject(obj);\r\n const bbCenterPivot = new THREE.Vector3();\r\n boundingBox.getCenter(bbCenterPivot);\r\n const delta: THREE.Vector3 = new THREE.Vector3().sub(bbCenterPivot).setY(Math.abs(Math.min(boundingBox.min.y, 0)));\r\n\r\n obj.children.forEach((child: any) => {\r\n child.position.add(delta);\r\n });\r\n obj.updateWorldMatrix(false, true);\r\n }\r\n\r\n private _reset(): void {\r\n this._placedAddables.length = 0;\r\n this._placedAdjustables.length = 0;\r\n this._adjustables.length = 0;\r\n this._addables.length = 0;\r\n // this._prepareTheSelections();\r\n }\r\n\r\n private _log(message: string): void {\r\n if (this.debug) {\r\n this.debug(message);\r\n console.log(new Date(), message);\r\n }\r\n }\r\n}\r\n","import {Component, Input, OnInit} from '@angular/core';\nimport {ImageCacheService} from '../../../services/image-cache.service';\nimport {Answer} from '@colijnit/configuratorapi/build/model/answer';\nimport {animate, state, style, transition, trigger} from '@angular/animations';\nimport {Builder} from \"../../../builder\";\n\n@Component({\n selector: 'answer',\n template: `\n <div class=\"ione-configurator\">\n <div class=\"answer-wrapper\">\n <div class=\"answer-content\" @answerAppear>\n <div class=\"answer-thumbnail\">\n <rp-loader *ngIf=\"answer.imageData === ''\"></rp-loader>\n <img *ngIf=\"answer.imageData !== '' && answer.imageData !== null\" class=\"answer-img\" [src]=\"answer.imageData\">\n </div>\n <div class=\"answer-title-wrapper\">\n <span class=\"answer-title\" [textContent]=\"answer.commercialAnswer\"></span>\n </div>\n <div class=\"price\">\n <span class=\"price-value\"></span>\n </div>\n </div>\n </div>\n </div>\n `,\n styleUrls: [\n '../../../../style/shared.scss'\n ],\n animations: [\n trigger('answerAppear', [\n state('void', style({'background': '#dbdbdb'})),\n state('white', style({'background': 'white'})),\n transition('void <=> *', animate(500))\n ])\n ]\n})\nexport class AnswerComponent implements OnInit {\n @Input()\n public answer: Answer;\n\n @Input()\n public set showing(value: boolean) {\n this.answer.imageData = '';\n if (value && this.answer.answer !== 'Skip / Cancel') {\n this._loadThumbnail(this.answer);\n } else {\n this.answer.imageData = null;\n }\n }\n\n constructor(private _builder: Builder) { }\n\n public ngOnInit(): void {\n }\n\n private async _loadThumbnail(answer: Answer): Promise<void> {\n await this._builder.getImageForSelectionOrAnswer(answer).then((imageSrc: string) => {\n answer.imageData = imageSrc === \"\" ? null : imageSrc;\n });\n }\n}\n","import {Component, EventEmitter, Input, Output} from '@angular/core';\r\nimport {Answer} from \"@colijnit/configuratorapi/build/model/answer\";\r\n\r\n@Component({\r\n selector: \"answers\",\r\n template: `\r\n <div class=\"ione-configurator\">\r\n <div class=\"rp-answers-slideout\">\r\n <h2 class=\"answers-title\" [textContent]=\"selectionTitle\"></h2>\r\n <div class=\"answers-container\" visibilityObserverMaster>\r\n <answer *ngFor=\"let answer of answers\"\r\n (click)=\"answerClick.emit(answer)\"\r\n [answer]=\"answer\"\r\n visibilityObserver\r\n #intersection=\"intersection\"\r\n [observerEnabled]=\"true\"\r\n [showing]=\"intersection.isIntersecting\"\r\n ></answer>\r\n </div>\r\n \r\n </div>\r\n </div>\r\n `,\r\n styleUrls: [\r\n '../../../style/shared.scss'\r\n ]\r\n})\r\n\r\nexport class AnswersComponent {\r\n @Input()\r\n public answers: Answer[] = [];\r\n\r\n @Input()\r\n public selectionTitle: string;\r\n\r\n @Output()\r\n public answerClick: EventEmitter<Answer> = new EventEmitter<Answer>();\r\n\r\n constructor() {}\r\n\r\n}\r\n","import {NgModule} from \"@angular/core\";\r\nimport {CommonModule} from \"@angular/common\";\r\nimport {AnswersComponent} from \"./answers.component\";\r\nimport { AnswerComponent } from './answer/answer.component';\r\nimport {VisibilityObserverDirective} from '../../directives/visibility-observer.directive';\r\nimport {VisibilityObserverMasterDirective} from '../../directives/visibility-observer-master.directive';\r\nimport {SharedModule} from '../shared/shared.module';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n SharedModule\r\n ],\r\n declarations: [\r\n AnswersComponent,\r\n AnswerComponent,\r\n VisibilityObserverDirective,\r\n VisibilityObserverMasterDirective\r\n ],\r\n exports: [\r\n AnswersComponent\r\n ]\r\n})\r\nexport class AnswersModule {\r\n\r\n}\r\n","import {Component, EventEmitter, Input, OnInit, Output} from '@angular/core';\r\nimport {Selection} from \"@colijnit/configuratorapi/build/model/selection\";\r\nimport {animate, state, style, transition, trigger} from \"@angular/animations\";\r\nimport {ImageCacheService} from '../../services/image-cache.service';\r\nimport {Builder} from \"../../builder\";\r\n\r\nclass SelectionViewModel {\r\n public selection: Selection;\r\n public children: Selection[] = [];\r\n public expanded: boolean = false;\r\n public thumbnail: string = '';\r\n}\r\n\r\n@Component({\r\n selector: \"selections\",\r\n template: `\r\n <div class=\"ione-configurator\">\r\n <div class=\"rp-selections-summary\">\r\n <header class=\"drawer__header\">\r\n <h2 class=\"mat-title\" [textContent]=\"'Configuratie'\"></h2>\r\n <!--<button>-->\r\n <!---->\r\n <!--</button>-->\r\n </header>\r\n <div class=\"selections-content\">\r\n <ng-container *ngFor=\"let selectionViewModel of selectionViewModels\">\r\n\r\n <div class=\"co-summary-line\" (click)=\"selectSelection(selectionViewModel.selection, $event)\">\r\n <div class=\"selection-thumbnail\">\r\n <rp-loader *ngIf=\"selectionViewModel.thumbnail === ''\"></rp-loader>\r\n <img visibilityObserver *ngIf=\"selectionViewModel.thumbnail !== '' && selectionViewModel.thumbnail !== null\" class=\"selection-img\" [src]=\"selectionViewModel.thumbnail\">\r\n </div>\r\n <div class=\"titles\">\r\n <div class=\"title-wrapper\">\r\n <label class=\"question\" [textContent]=\"selectionViewModel.selection.question\"></label>\r\n <span class=\"answer\" [textContent]=\"selectionViewModel.selection.answer\"></span>\r\n <div *ngIf=\"selectionViewModel.children.length > 0 && selectionViewModel.expanded\" @showHideChildren>\r\n <div class=\"child-selection\" *ngFor=\"let selection of selectionViewModel.children\"\r\n (click)=\"selectSelection(selection, $event)\"\r\n >\r\n <label class=\"question\" [textContent]=\"selection.commercialQuestion\"></label>\r\n <span class=\"answer\" [textContent]=\"selection.answer\"></span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n \r\n <div class=\"price-wrapper\">\r\n <span class=\"price-value\"></span>\r\n </div>\r\n\r\n <div class=\"collapse-wrapper\">\r\n <div class=\"collapse-content\">\r\n <div class=\"collapse-handle\" [class.expanded]=\"selectionViewModel.expanded\"\r\n *ngIf=\"selectionViewModel.children.length > 0\" (click)=\"expandClicked(selectionViewModel, $event)\"></div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n </ng-container>\r\n </div>\r\n </div>\r\n </div>\r\n `,\r\n styleUrls: [\r\n '../../../style/shared.scss'\r\n ],\r\n animations: [\r\n trigger('showHideChildren', [\r\n state('void', style({'height': '0'})),\r\n state('*', style({'height': '*'})),\r\n transition('void <=> *', animate(200))\r\n ])\r\n ]\r\n})\r\n\r\nexport class SelectionsComponent {\r\n @Input()\r\n public set selections(value: Selection[]) {\r\n this._prepareSelections(value);\r\n this._loadThumbnails();\r\n }\r\n\r\n public selectionViewModels: SelectionViewModel[] = [];\r\n\r\n @Output()\r\n public selectionClick: EventEmitter<Selection> = new EventEmitter<Selection>();\r\n\r\n constructor(private _builder: Builder) {}\r\n\r\n public expandClicked(selectionViewModel: SelectionViewModel, mouseEvent: MouseEvent): void {\r\n mouseEvent.preventDefault();\r\n mouseEvent.stopImmediatePropagation();\r\n selectionViewModel.expanded = !selectionViewModel.expanded;\r\n }\r\n\r\n public selectSelection(selection: Selection, mouseEvent: MouseEvent): void {\r\n mouseEvent.preventDefault();\r\n mouseEvent.stopImmediatePropagation();\r\n this.selectionClick.next(selection);\r\n }\r\n\r\n private async _loadThumbnails(): Promise<void> {\r\n if (this.selectionViewModels.length > 0) {\r\n this.selectionViewModels.forEach(async (viewModel: SelectionViewModel) => {\r\n await this._builder.getImageForSelectionOrAnswer(viewModel.selection).then((imageSrc: string) => {\r\n viewModel.thumbnail = imageSrc === \"\" ? null : imageSrc;\r\n });\r\n });\r\n }\r\n }\r\n\r\n private _prepareSelections(value: Selection[]): void {\r\n this.selectionViewModels.length = 0;\r\n let selectionViewModel: SelectionViewModel;\r\n value.forEach(s => {\r\n if (s.presentationLevel === 1) {\r\n selectionViewModel = new SelectionViewModel();\r\n selectionViewModel.selection = s;\r\n this.selectionViewModels.push(selectionViewModel);\r\n } else if (s.presentationLevel > 1) {\r\n if (selectionViewModel) {\r\n selectionViewModel.children.push(s);\r\n }\r\n }\r\n });\r\n }\r\n}\r\n","import {NgModule} from \"@angular/core\";\r\nimport {CommonModule} from \"@angular/common\";\r\nimport {SelectionsComponent} from \"./selections.component\";\r\nimport {SharedModule} from '../shared/shared.module';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n SharedModule\r\n ],\r\n declarations: [\r\n SelectionsComponent\r\n ],\r\n exports: [\r\n SelectionsComponent\r\n ]\r\n})\r\nexport class SelectionsModule {\r\n\r\n}\r\n","import {Component} from '@angular/core';\n\n@Component({\n selector: 'rp-loader',\n template: `\n <div class=\"loader-wrapper\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"44\" height=\"44\" viewBox=\"0 0 44 44\" stroke=\"#3760a1\">\n <g fill=\"none\" fill-rule=\"evenodd\" stroke-width=\"3\">\n <circle class=\"ripple1\" cx=\"22\" cy=\"22\" r=\"19\">\n </circle>\n <circle class=\"ripple2\" cx=\"22\" cy=\"22\" r=\"19\">\n </circle>\n </g>\n </svg>\n </div>\n `,\n styleUrls: ['./loader.component.scss']\n})\nexport class LoaderComponent {\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport {LoaderComponent} from './loader/loader.component';\n\n@NgModule({\n imports: [\n CommonModule\n ],\n declarations: [\n LoaderComponent\n ],\n exports: [\n LoaderComponent\n ]\n})\nexport class SharedModule { }\n","// Import the core angular services.\nimport {Directive, OnDestroy} from '@angular/core';\n\n@Directive({\n selector: '[visibilityObserverMaster]'\n})\nexport class VisibilityObserverMasterDirective implements OnDestroy {\n\n private _mapping: Map<Element, Function>;\n private _observer: IntersectionObserver;\n\n // I initialize the intersection observer parent directive.\n constructor() {\n\n // As each observable child attaches itself to the parent observer, we need to\n // map Elements to Callbacks so that when an Element's intersection changes,\n // we'll know which callback to invoke. For this, we'll use an ES6 Map.\n this._mapping = new Map();\n\n this._observer = new IntersectionObserver(\n (entries: IntersectionObserverEntry[]) => {\n\n for (const entry of entries) {\n\n const callback = this._mapping.get(entry.target);\n if (callback) {\n callback(entry.isIntersecting);\n }\n }\n\n },\n {\n // This classifies the \"intersection\" as being a bit outside the\n // viewport. The intent here is give the elements a little time to react\n // to the change before the element is actually visible to the user.\n rootMargin: '300px 0px 300px 0px'\n }\n );\n\n }\n\n // I get called once when the host element is being destroyed.\n public ngOnDestroy(): void {\n\n this._mapping.clear();\n this._observer.disconnect();\n\n }\n\n // ---\n // PUBLIC METHODS.\n // ---\n\n // I add the given Element for intersection observation. When the intersection status\n // changes, the given callback is invoked with the new status.\n public add(element: HTMLElement, callback: Function): void {\n\n this._mapping.set(element, callback);\n this._observer.observe(element);\n\n }\n\n // I remove the given Element from intersection observation.\n public remove(element: HTMLElement): void {\n\n this._mapping.delete(element);\n this._observer.unobserve(element);\n\n }\n\n}\n","import {Directive, ElementRef, EventEmitter, Input, OnDestroy, OnInit, Output} from '@angular/core';\nimport {VisibilityObserverMasterDirective} from './visibility-observer-master.directive';\n\n@Directive({\n selector: '[visibilityObserver]',\n exportAs: 'intersection'\n})\nexport class VisibilityObserverDirective implements OnDestroy, OnInit {\n\n @Input()\n public observerEnabled: boolean = false;\n\n public isIntersecting: boolean;\n // These are just some human-friendly constants to make the HTML template a bit more\n // readable when being consumed as part of SWTCH/CASE statements.\n public IS_INTERSECTING: boolean = true;\n public IS_NOT_INTERSECTING: boolean = false;\n\n private _elementRef: ElementRef;\n private _parent: VisibilityObserverMasterDirective;\n\n // I initialize the intersection observer directive.\n constructor(\n parent: VisibilityObserverMasterDirective,\n elementRef: ElementRef\n ) {\n\n this._parent = parent;\n this._elementRef = elementRef;\n\n // By default, we're going to assume that the host element is NOT intersecting.\n // Then, we'll use the IntersectionObserver to asynchronously check for changes\n // in viewport visibility.\n this.isIntersecting = false;\n\n }\n\n // ---\n // PUBLIC METHODS.\n // ---\n\n // I get called once when the host element is being destroyed.\n public ngOnDestroy(): void {\n\n this._parent.remove(this._elementRef.nativeElement);\n this._elementRef = undefined;\n\n }\n\n\n // I get called once after the inputs have been bound for the first time.\n public ngOnInit(): void {\n\n // In this demo, instead of using an IntersectionObserver per Element, we're\n // going to use a shared observer in the parent element. However, we're still\n // going to use a CALLBACK style approach so that we're only reducing the number\n // of IntersectionObserver instances, not the number of Function calls.\n if (this.observerEnabled) {\n this._parent.add(\n this._elementRef.nativeElement,\n (isIntersecting: boolean) => {\n\n this.isIntersecting = isIntersecting;\n if (this.isIntersecting) {\n this._parent.remove(this._elementRef.nativeElement);\n }\n\n }\n );\n }\n\n }\n\n}\n","import {Configurator} from '@colijnit/configuratorapi/build/configurator';\nimport {Selection} from '@colijnit/configuratorapi/build/model/selection';\nimport {Answer} from '@colijnit/configuratorapi/build/model/answer';\nimport {QuestionAndAnswers} from '@colijnit/configuratorapi/build/model/question-and-answers';\nimport {notNill} from '@colijnit/configuratorapi/build/utils/function/not-nill.function';\nimport {NodeType} from '@colijnit/configuratorapi/build/enum/node-type.enum';\nimport {isNill} from '@colijnit/configuratorapi/build/utils/function/is-nill.function';\nimport {Options} from '@colijnit/ioneconnector/build/model/options';\nimport {DataServiceResponseData} from '@colijnit/ioneconnector/build/model/data-service-response-data';\n\nexport class ConfiguratorService {\n\n private _configuratorApi: Configurator;\n\n public initApi(options: Options): void {\n this._configuratorApi = new Configurator(options);\n }\n\n public async initNodeInstance(goodId: number): Promise<DataServiceResponseData> {\n return await this._configuratorApi.initNodeInstance(goodId);\n }\n\n public async setInstanceToConfigure(id: string, showLoader: boolean = false): Promise<DataServiceResponseData> {\n return await this._configuratorApi.setInstanceToConfigure(id, showLoader);\n }\n\n public async getGoodIdFromSku(sku: string, showLoader: boolean = false): Promise<DataServiceResponseData> {\n return await this._configuratorApi.getGoodIdFromSku(sku, showLoader);\n }\n\n public async getArticleQuickSel(goodId: number, showLoader: boolean = false): Promise<DataServiceResponseData> {\n return await this._configuratorApi.getArticleQuickSel(goodId, showLoader);\n }\n\n public async getSelections(showLoader: boolean = false, publicationCode: number = 2): Promise<DataServiceResponseData> {\n const selections: DataServiceResponseData = await this._configuratorApi.getSelections(showLoader);\n selections.resultObjects.filter((s: Selection) => {\n (isNill(s.hierarchicalPublicationCode) || ((s.hierarchicalPublicationCode & publicationCode) > 0)) && (\n (s.nodeType === NodeType.Question && (((s.questionPublicationCode & publicationCode) > 0) || isNill(s.questionPublicationCode))) ||\n (s.nodeType === NodeType.Answer && (((s.answerPublicationCode & publicationCode) > 0) || isNill(s.answerPublicationCode))));\n });\n return selections;\n }\n\n public async getDecos(showLoader: boolean = false): Promise<DataServiceResponseData> {\n return await this._configuratorApi.getDecos(showLoader);\n }\n\n public async getQuestionAndAnswers(showLoader: boolean = false, publicationCode: number = 2): Promise<QuestionAndAnswers> {\n const questionAndAnswers: QuestionAndAnswers = await this._configuratorApi.getQuestionAndAnswers(showLoader);\n questionAndAnswers.answers.filter((answer: Answer) => {\n (notNill(answer.hierarchicalPublicationCode) && (answer.hierarchicalPublicationCode & publicationCode) === 0) ||\n (answer.type === NodeType.Question && (answer.questionPublicationCode & publicationCode) === 0 && notNill(answer.questionPublicationCode)) ||\n (answer.type === NodeType.Answer && (answer.publicationCode & publicationCode) === 0 && notNill(answer.publicationCode));\n });\n return questionAndAnswers;\n }\n\n public async getSingleImage(nodeId: number | string, publication: number, includeMimetype: boolean, thumb: boolean, showLoader: boolean): Promise<DataServiceResponseData> {\n if (!nodeId) {\n return null;\n }\n return await this._configuratorApi.getSingleImage(nodeId, publication, includeMimetype, thumb, showLoader);\n }\n\n public async selectSelection(selection: Selection, showLoader: boolean = false): Promise<DataServiceResponseData> {\n return await this._configuratorApi.selectSelection(selection, showLoader);\n }\n\n public async selectAnswer(answer: Answer, showLoader: boolean = false): Promise<DataServiceResponseData> {\n return await this._configuratorApi.selectAnswer(answer, showLoader);\n }\n\n}\n","import {Euler, Material, Matrix4, Mesh, Object3D, Vector2, Vector3} from \"three\";\r\n\r\nexport class ObjectUtils {\r\n\r\n static materialProps = ['map', 'lightMap', 'bumpMap', 'normalMap', 'specularMap', 'envMap', 'aoMap', 'roughnessMap', 'metalnessMap'];\r\n\r\n private static DisposeNode(node: Object3D | Mesh): void {\r\n node.traverse((obj: Object3D) => {\r\n if (obj instanceof Mesh) {\r\n if (obj.geometry) {\r\n obj.geometry.dispose();\r\n }\r\n ObjectUtils.DisposeMaterial(obj.material);\r\n }\r\n if (typeof (obj as any).dispose === 'function') {\r\n // @ts-ignore\r\n obj.dispose();\r\n }\r\n });\r\n }\r\n\r\n public static DisposeMaterial(material: Material | Material[]): void {\r\n if (!material) {\r\n return;\r\n }\r\n if (Array.isArray(material)) {\r\n material.forEach(mtrl => {\r\n this.materialProps\r\n .filter(mapType => mtrl[mapType])\r\n .forEach(mapType => mtrl[mapType].dispose());\r\n mtrl.dispose(); // disposes any programs associated with the material\r\n });\r\n } else {\r\n this.materialProps\r\n .filter(mapType => material[mapType] && material[mapType].dispose)\r\n .forEach(mapType => material[mapType].dispose());\r\n if (material.dispose) {\r\n material.dispose(); // disposes any programs associated with the material\r\n }\r\n }\r\n }\r\n\r\n public static DisposeObject(object: Object3D | Mesh): void {\r\n if (!object) {\r\n return;\r\n }\r\n if (object.children.length) {\r\n object.children.forEach(child => this.DisposeObject(child));\r\n }\r\n this.DisposeNode(object);\r\n }\r\n}\r\n","// The file contents for the current environment will overwrite these during build.\n// The build system defaults to the dev environment which uses `environment.ts`, but if you do\n// `ng build --env=prod` then `environment.prod.ts` will be used instead.\n// The list of which env maps to which file can be found in `.angular-cli.json`.\n\nexport const environment = {\n production: false\n};\n","import {DecoNodeType} from '@colijnit/configuratorapi/build/enum/deco-node-type.enum';\r\nimport {VariationSettings} from '../model/variation-settings';\r\nimport {AssetUtils} from '../utils/asset.utils';\r\nimport {DecoNode} from '@colijnit/configuratorapi/build/model/deco-node';\r\nimport {Variation} from '../model/variation';\r\nimport {VariationUtils} from '../utils/variation-utils';\r\nimport {ImageUtils} from '../utils/image.utils';\r\nimport * as THREE from 'three';\r\nimport {\r\n Color,\r\n DoubleSide,\r\n EquirectangularReflectionMapping,\r\n Mesh,\r\n MeshPhongMaterial, MeshPhysicalMaterial,\r\n MeshPhysicalMaterialParameters, MeshStandardMaterial, MeshStandardMaterialParameters,\r\n NearestFilter,\r\n Object3D\r\n} from 'three';\r\nimport {filter, take} from 'rxjs/operators';\r\nimport {Material} from '../model/material';\r\n\r\nexport class VariationHelper {\r\n\r\n public assetPath: string;\r\n public debug: Function;\r\n\r\n private _variations: VariationSettings[] = [];\r\n\r\n private _lastKnownVariations: Map<string, Variation[]> = new Map();\r\n\r\n public clearCache(): void {\r\n const variationMap: Variation[][] = Array.from(this._lastKnownVariations.values());\r\n variationMap.forEach((variations) => {\r\n variations.forEach((variation) => {\r\n try {\r\n if (variation.material) {\r\n if (variation.material.texture) {\r\n variation.material.texture.dispose();\r\n }\r\n if (variation.material.normal) {\r\n variation.material.normal.dispose();\r\n }\r\n if (variation.material.metalness) {\r\n variation.material.metalness.dispose();\r\n }\r\n if (variation.material.roughness) {\r\n variation.material.roughness.dispose();\r\n }\r\n if (variation.material.ao) {\r\n variation.material.ao.dispose();\r\n }\r\n }\r\n } catch (e) {\r\n }\r\n });\r\n });\r\n VariationUtils.ClearCache();\r\n ImageUtils.ClearCache();\r\n }\r\n\r\n public async loadPart(obj: Object3D, parts: any[], usePbr: boolean = false): Promise<void> {\r\n try {\r\n const len: number = parts.length;\r\n for (let i = 0; i < len; i++) {\r\n if (parts[i].decoNode && parts[i].decoNode.gameObjectName && parts[i].decoNode.type === DecoNodeType.Part) {\r\n const partSettings: VariationSettings =\r\n await VariationUtils.LoadVariation(this.assetPath, parts[i].decoNode.gameObjectName || parts[i].decoId);\r\n if (partSettings) {\r\n const partVariation: Variation = new Variation();\r\n partVariation.decoId = parseFloat(parts[i].decoNode.id);\r\n partVariation.brandId = parts[i].decoNode.brandId;\r\n partVariation.gameObjectName = parts[i].decoNode.gameObjectName;\r\n partVariation.material = await AssetUtils.CreateMaterialFromAsset(partSettings);\r\n // parts[i].variation = partVariation;\r\n this._applyMaterialPart(obj, partVariation, parts[i].node, usePbr);\r\n }\r\n }\r\n }\r\n } catch (e) {\r\n console.error(e);\r\n }\r\n }\r\n\r\n public async loadVariation(obj: Object3D, parts: any[], usePbr: boolean = false): Promise<void> {\r\n try {\r\n const len: number = parts.length;\r\n for (let i = 0; i < len; i++) {\r\n const variations: DecoNode[] = parts[i].variations;\r\n if (!variations || variations.length === 0) {\r\n if (this._getLastKnownVariations(parts[i].nodeId)) {\r\n parts[i].variations = this._getLastKnownVariations(parts[i].nodeId);\r\n this._applyVariations(obj, parts[i], usePbr);\r\n continue;\r\n } else {\r\n continue;\r\n }\r\n }\r\n const lastKnownVariations: Variation[] = [];\r\n const variationPromise: Promise<any>[] = [];\r\n for (let j = 0; j < variations.length; j++) {\r\n variationPromise.push(\r\n this.loadTheVariation(variations[j].gameObjectName || parts[i].decoId)\r\n .then((variationSettings: VariationSettings) => {\r\n const newVariation: Variation = new Variation();\r\n newVariation.decoId = variations[j].constructor.name === 'Variation' ? (variations[j] as unknown as Variation).decoId : parseFloat(variations[j].id);\r\n newVariation.node = variations[j].constructor.name === 'Variation' ? (variations[j] as unknown as Variation).node : variations[j].nodeId;\r\n newVariation.brandId = variations[j].brandId;\r\n newVariation.optionText = (variations[j] as any).optionText;\r\n newVariation.gameObjectName = variations[j].gameObjectName;\r\n newVariation.supplierArticleNr = (variations[j] as any).supplierArticleNr;\r\n newVariation.materialId = (variations[j] as any).materialId;\r\n newVariation.material = variationSettings ? variationSettings.material : null;\r\n lastKnownVariations.push(newVariation);\r\n })\r\n );\r\n }\r\n await Promise.all(variationPromise);\r\n this._setLastKnownVariations(`${parts[i].nodeId}_${parts[i].node}`, lastKnownVariations);\r\n parts[i].variations = lastKnownVariations;\r\n this._applyVariations(obj, parts[i], usePbr);\r\n }\r\n } catch (e) {\r\n this._log(e.message);\r\n }\r\n }\r\n\r\n public get(id: string): VariationSettings {\r\n const len: number = this._variations.length;\r\n for (let i = 0; i < len; i++) {\r\n if (this._variations[i].id && this._variations[i].id === id) {\r\n return this._variations[i];\r\n }\r\n }\r\n }\r\n\r\n public set(variations: VariationSettings): void {\r\n const idx: number = this._variations.findIndex(v => v.id === variations.id);\r\n if (idx > -1) {\r\n this._variations[idx] = variations;\r\n } else {\r\n this._variations.push(variations);\r\n }\r\n }\r\n\r\n public preloadVariations(fileNames: string[]): void {\r\n for (let i = 0; i < fileNames.length; i++) {\r\n const fileName: string = fileNames[i];\r\n if (fileName && !this.get(fileName)) {\r\n const settings: VariationSettings = new VariationSettings();\r\n settings.id = fileName;\r\n settings.loading = true;\r\n this._variations.push(settings);\r\n VariationUtils.LoadVariation(this.assetPath, fileName)\r\n .then((variationSettings: VariationSettings) => {\r\n settings.loading = false;\r\n if (variationSettings) {\r\n // this.set(variationSettings);\r\n settings.copyFrom(variationSettings);\r\n }\r\n settings.loaded.next(settings);\r\n })\r\n .catch((err) => {\r\n console.error(`Error loading variation ${fileName}:`, err);\r\n settings.loading = false;\r\n settings.loaded.next(null);\r\n });\r\n }\r\n }\r\n }\r\n\r\n public async loadTheVariation(fileName: string): Promise<VariationSettings> {\r\n if (!fileName) {\r\n return null;\r\n }\r\n const settings: VariationSettings = this.get(fileName);\r\n if (!settings) {\r\n return null;\r\n }\r\n if (settings.loading) {\r\n const sett = await this._waitForVariationToLoad(settings);\r\n await this._loadMaterialFromSettings(sett);\r\n return sett;\r\n } else {\r\n await this._loadMaterialFromSettings(settings);\r\n return settings;\r\n }\r\n }\r\n\r\n private async _loadMaterialFromSettings(settings: VariationSettings): Promise<void> {\r\n if (settings) {\r\n if (!settings.material) {\r\n settings.material = await AssetUtils.CreateMaterialFromAsset(settings);\r\n }\r\n }\r\n }\r\n\r\n private _waitForVariationToLoad(settings: VariationSettings): Promise<VariationSettings> {\r\n return new Promise((resolve: Function) => {\r\n settings.loaded.pipe(filter((value): value is VariationSettings => value !== undefined), take(1)).subscribe((value) => {\r\n resolve(value);\r\n });\r\n });\r\n }\r\n\r\n private _getChildrenFilterByProp(obj: Object3D, userDataObjectProp: string, prop: string, value: any): Object3D[] {\r\n return obj.children.filter((child) => {\r\n return child.userData &&\r\n child.userData.hasOwnProperty(userDataObjectProp) &&\r\n child.userData[userDataObjectProp].hasOwnProperty(prop) &&\r\n child.userData[userDataObjectProp][prop] === value;\r\n });\r\n }\r\n\r\n private _applyMaterialPart(obj: Object3D, partMaterial: any, nodeId: any, usePbr: boolean = false): void {\r\n const children = this._getChildrenFilterByProp(obj, 'selection', 'node', nodeId);\r\n const len: number = children.length;\r\n for (let i: number = 0; i < len; i++) {\r\n const child = children[i];\r\n if (child !== null && child !== undefined) {\r\n child.traverse((mesh: any) => {\r\n if ((mesh instanceof Mesh || mesh.constructor.name === 'Mesh') && partMaterial) {\r\n if (Array.isArray(mesh.material)) { // multimaterial support\r\n for (let j = 0, jlen: number = mesh.material.length; j < jlen; j++) {\r\n if (mesh.material[j].name.toLowerCase().indexOf('fixed_frame') !== -1) {\r\n mesh.material[j] = this._setMeshMaterialFromVariation(mesh.material[j].name, partMaterial, usePbr);\r\n }\r\n }\r\n } else {\r\n if (mesh.material.name && mesh.material.name.toLowerCase().indexOf('fixed_frame') !== -1) {\r\n mesh.material = this._setMeshMaterialFromVariation(mesh.material.name, partMaterial, usePbr);\r\n }\r\n }\r\n }\r\n });\r\n }\r\n }\r\n }\r\n\r\n private _applyVariations(obj: Object3D, part: any, usePbr: boolean = false): void {\r\n const children = this._getChildrenFilterByProp(obj, 'selection', 'node', part.node);\r\n const len: number = children.length;\r\n for (let i: number = 0; i < len; i++) {\r\n const child = children[i];\r\n if (child !== null && child !== undefined) {\r\n child.traverse((mesh: any) => {\r\n if ((mesh instanceof Mesh || mesh.constructor.name === 'Mesh') && part.variations && part.variations.length > 0 && mesh.name.toLowerCase().indexOf('c_')) {\r\n for (let j = 0; j < part.variations.length; j++) {\r\n const variation: Variation = part.variations[j];\r\n if (variation.material) {\r\n const materialToSearch: string = !!variation.materialId ? variation.materialId.toLowerCase() : 'default';\r\n if (Array.isArray(mesh.material)) { // multimaterial support\r\n for (let m = 0, mlen: number = mesh.material.length; m < mlen; m++) {\r\n if (mesh.material[m].name.toLowerCase().indexOf(materialToSearch) !== -1) {\r\n if ((variation.material instanceof Material || variation.material.constructor.name === 'Material') && variation.material.isMaterial) {\r\n // it's a THREE.Material\r\n mesh.material[m] = variation.material;\r\n if (mesh.material[m].name && (mesh.material[m].name === 'Fixed_Glass' || mesh.material[m].name === 'Default_Glass')) {\r\n mesh.castShadow = false;\r\n }\r\n } else {\r\n mesh.material[m] = this._setMeshMaterialFromVariation(mesh.material[m].name, variation, usePbr);\r\n if (mesh.material[m].name && (mesh.material[m].name === 'Fixed_Glass' || mesh.material[m].name === 'Default_Glass')) {\r\n mesh.castShadow = false;\r\n }\r\n }\r\n }\r\n }\r\n } else {\r\n if (mesh.material.name && mesh.material.name.toLowerCase().indexOf(materialToSearch) !== -1) {\r\n if ((variation.material instanceof Material || variation.material.constructor.name === 'Material') && variation.material.isMaterial) {\r\n // it's a THREE.Material\r\n mesh.material = variation.material;\r\n if (mesh.material.name === 'Fixed_Glass' || mesh.material.name === 'Default_Glass') {\r\n mesh.castShadow = false;\r\n }\r\n } else {\r\n mesh.material = this._setMeshMaterialFromVariation(mesh.material.name, variation, usePbr);\r\n if (mesh.material.name === 'Fixed_Glass' || mesh.material.name === 'Default_Glass') {\r\n mesh.castShadow = false;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n });\r\n }\r\n }\r\n }\r\n\r\n private _setMeshMaterialFromVariation(name: string, variation: Variation, usePbr: boolean = false): THREE.Material {\r\n const material = variation.material;\r\n if (material.texture) {\r\n material.texture.needsUpdate = true;\r\n material.texture.mapping = EquirectangularReflectionMapping;\r\n }\r\n if (!usePbr) {\r\n const newMaterial: MeshPhongMaterial = new MeshPhongMaterial({\r\n name: name,\r\n shininess: material.shininess,\r\n specular: material.specular,\r\n map: material.texture,\r\n normalMap: material.normal\r\n });\r\n newMaterial.color.setRGB(0.8, 0.8, 0.8);\r\n newMaterial.needsUpdate = true;\r\n return newMaterial;\r\n }\r\n if (material.sheen || material.sheenColor || material.reflectivity || material.transmission) { // TODO: Proper check for all unique physical material properties\r\n const params: MeshPhysicalMaterialParameters = {\r\n // side: material.side ? material.side : FrontSide,\r\n name: name,\r\n roughness: material.roughnessValue !== undefined && material.roughnessValue !== null ? material.roughnessValue : 1,\r\n metalness: material.metalnessValue !== undefined && material.metalnessValue !== null ? material.metalnessValue : 0,\r\n envMapIntensity: material.envMapIntensity ? material.envMapIntensity : 0.01,\r\n clearcoatMap: material.clearcoatMap ? material.clearcoatMap : null,\r\n clearcoatRoughnessMap: material.clearcoatRoughnessMap ? material.clearcoatRoughnessMap : null,\r\n attenuationDistance: Infinity\r\n // wireframe: true,\r\n // opacity: 0.3,\r\n // transparent: true,\r\n };\r\n if (material.displacementValue) {\r\n params.displacementScale = material.displacementValue;\r\n }\r\n if (material.opacity) {\r\n params.opacity = material.opacity;\r\n }\r\n if (material.transparent) {\r\n params.transparent = material.transparent;\r\n }\r\n if (material.emissiveValue) {\r\n params.emissive = material.emissiveValue;\r\n }\r\n if (material.emissiveIntensityValue) {\r\n params.emissiveIntensity = material.emissiveIntensityValue;\r\n }\r\n if (material.texture) {\r\n params.map = material.texture;\r\n params.map.needsUpdate = true;\r\n }\r\n if (material.ao) {\r\n params.aoMap = material.ao;\r\n params.aoMap.needsUpdate = true;\r\n }\r\n if (material.roughness) {\r\n params.roughnessMap = material.roughness;\r\n params.roughnessMap.needsUpdate = true;\r\n // material.roughness.magFilter = NearestFilter;\r\n }\r\n if (material.metalness) {\r\n params.metalnessMap = material.metalness;\r\n params.metalnessMap.needsUpdate = true;\r\n }\r\n if (material.normal) {\r\n params.normalMap = material.normal;\r\n params.normalMap.needsUpdate = true;\r\n }\r\n if (material.displacement) {\r\n params.displacementMap = material.displacement;\r\n params.displacementMap.needsUpdate = true;\r\n }\r\n if (material.emissive) {\r\n params.emissiveMap = material.emissive;\r\n params.emissiveMap.needsUpdate = true;\r\n }\r\n if (material.envMap) {\r\n if (material.envMapIntensity != null || 0) {\r\n params.envMap = material.envMap;\r\n params.envMap.needsUpdate = true;\r\n material.envMap.mapping = EquirectangularReflectionMapping;\r\n material.envMap.minFilter = NearestFilter;\r\n material.envMap.magFilter = NearestFilter;\r\n }\r\n }\r\n if (material.reflectivity) {\r\n params.reflectivity = material.reflectivity;\r\n }\r\n if (material.side) {\r\n params.side = material.side;\r\n } else {\r\n params.side = DoubleSide;\r\n }\r\n\r\n const newMaterial: MeshPhysicalMaterial = new MeshPhysicalMaterial(params);\r\n newMaterial.color.setRGB(1, 1, 1);\r\n if (material.sheen) {\r\n newMaterial.sheen = material.sheen;\r\n }\r\n\r\n if (material.sheenColor) {\r\n newMaterial.sheenColor = this._createValidColor(material.sheenColor);\r\n } else {\r\n // Add fallback for blender render\r\n newMaterial.sheenColor = new Color(1, 1, 1);\r\n }\r\n\r\n if (material.sheenRoughness) {\r\n newMaterial.sheenRoughness = material.sheenRoughness;\r\n }\r\n if (material.sheenColorMap) {\r\n newMaterial.sheenColorMap = material.sheenColorMap;\r\n newMaterial.sheenColorMap.needsUpdate = true;\r\n }\r\n if (material.sheenRoughnessMap) {\r\n newMaterial.sheenRoughnessMap = material.sheenRoughnessMap;\r\n newMaterial.sheenRoughnessMap.needsUpdate = true;\r\n }\r\n if (material.transmission) {\r\n newMaterial.transmission = material.transmission;\r\n }\r\n if (material.ior !== undefined && material.ior !== null) {\r\n newMaterial.ior = material.ior;\r\n }\r\n if (material.thickness !== undefined && material.thickness !== null) {\r\n newMaterial.thickness = material.thickness;\r\n }\r\n if (material.specularIntensity !== undefined && material.specularIntensity !== null) {\r\n newMaterial.specularIntensity = material.specularIntensity;\r\n }\r\n if (material.transmissionMap) {\r\n newMaterial.transmissionMap = material.transmissionMap;\r\n newMaterial.transmissionMap.needsUpdate = true;\r\n }\r\n\r\n newMaterial.needsUpdate = true;\r\n return newMaterial;\r\n } else {\r\n const params: MeshStandardMaterialParameters = {\r\n // side: material.side ? material.side : FrontSide,\r\n name: name,\r\n roughness: material.roughnessValue !== undefined && material.roughnessValue !== null ? material.roughnessValue : 1,\r\n metalness: material.metalnessValue !== undefined && material.metalnessValue !== null ? material.metalnessValue : 0,\r\n envMapIntensity: material.envMapIntensity ? material.envMapIntensity : 0.01\r\n // wireframe: true,\r\n // opacity: 0.3,\r\n // transparent: true,\r\n };\r\n if (material.displacementValue) {\r\n params.displacementScale = material.displacementValue;\r\n }\r\n if (material.opacity) {\r\n params.opacity = material.opacity;\r\n }\r\n if (material.transparent) {\r\n params.transparent = material.transparent;\r\n }\r\n if (material.emissiveValue) {\r\n params.emissive = material.emissiveValue;\r\n }\r\n if (material.emissiveIntensityValue) {\r\n params.emissiveIntensity = material.emissiveIntensityValue;\r\n }\r\n if (material.texture) {\r\n params.map = material.texture;\r\n params.map.needsUpdate = true;\r\n }\r\n if (material.ao) {\r\n params.aoMap = material.ao;\r\n params.aoMap.needsUpdate = true;\r\n }\r\n if (material.roughness) {\r\n params.roughnessMap = material.roughness;\r\n params.roughnessMap.needsUpdate = true;\r\n // material.roughness.magFilter = NearestFilter;\r\n }\r\n if (material.metalness) {\r\n params.metalnessMap = material.metalness;\r\n params.metalnessMap.needsUpdate = true;\r\n }\r\n if (material.normal) {\r\n params.normalMap = material.normal;\r\n params.normalMap.needsUpdate = true;\r\n }\r\n if (material.displacement) {\r\n params.displacementMap = material.displacement;\r\n params.displacementMap.needsUpdate = true;\r\n }\r\n if (material.emissive) {\r\n params.emissiveMap = material.emissive;\r\n params.emissiveMap.needsUpdate = true;\r\n }\r\n if (material.envMap) {\r\n if (material.envMapIntensity != null || 0) {\r\n params.envMap = material.envMap;\r\n params.envMap.needsUpdate = true;\r\n material.envMap.mapping = EquirectangularReflectionMapping;\r\n material.envMap.minFilter = NearestFilter;\r\n material.envMap.magFilter = NearestFilter;\r\n }\r\n }\r\n if (material.side) {\r\n params.side = material.side;\r\n } else {\r\n params.side = DoubleSide;\r\n }\r\n\r\n const newMaterial: MeshStandardMaterial = new MeshStandardMaterial(params);\r\n newMaterial.color.setRGB(1, 1, 1);\r\n newMaterial.needsUpdate = true;\r\n\r\n return newMaterial;\r\n }\r\n }\r\n\r\n private _setLastKnownVariations(id: string, variation: Variation[]): void {\r\n this._lastKnownVariations.set(id, variation);\r\n }\r\n\r\n private _getLastKnownVariations(id: string): Variation[] {\r\n if (this._lastKnownVariations.has(id)) {\r\n return this._lastKnownVariations.get(id);\r\n }\r\n return null;\r\n }\r\n\r\n private _createValidColor(color: Color | string | number): Color {\r\n if (typeof color === 'string') {\r\n if (/^#?([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$/.test(color)) {\r\n return new Color(`#${color.replace('#', '')}`);\r\n }\r\n } else if (color instanceof Color || color.constructor.name === 'Color') {\r\n return color as Color;\r\n } else {\r\n try {\r\n return new Color(color);\r\n } catch (e) {\r\n return new Color();\r\n }\r\n }\r\n\r\n return new Color();\r\n }\r\n\r\n private _log(message: string): void {\r\n if (this.debug) {\r\n this.debug(message);\r\n console.log(new Date(), message);\r\n }\r\n }\r\n}\r\n","import { enableProdMode } from '@angular/core';\nimport { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\n\nimport { environment } from './environments/environment';\nimport {AppModule} from \"./app/app.module\";\n\nif (environment.production) {\n enableProdMode();\n}\n\nplatformBrowserDynamic().bootstrapModule(AppModule);\n","import {Color, Texture} from 'three';\n\nexport class Material {\n public name: string;\n public schema: string;\n public specular: Color = new Color(0.3, 0.3, 0.3);\n public shininess = 0;\n // public roughness = 1;\n // public metalness = 0.5;\n public normal: Texture;\n public texture: Texture;\n public ao: Texture;\n public metalness: Texture;\n public roughness: Texture;\n public repeatX = 4;\n public repeatY = 4;\n public loaded = false;\n public metalnessValue: number;\n public roughnessValue: number;\n public displacement: Texture;\n public displacementValue: number;\n public sheen: number;\n public sheenColor: Color | string | number;\n public sheenColorMap: Texture | null;\n public sheenRoughness: number;\n public sheenRoughnessMap: Texture | null;\n public emissive: Texture;\n public emissiveValue: Color | string | number;\n public emissiveIntensityValue: number;\n public envMap: Texture;\n public envMapIntensity: number;\n public opacity: number;\n public transparent: boolean;\n public reflectivity: number;\n public side: number;\n public ior: number;\n public transmission: number;\n public thickness: number;\n public specularIntensity: number;\n public transmissionMap: Texture | null;\n\n public clearcoatMap: Texture | null;\n public clearcoatRoughnessMap: Texture | null;\n}\n","import {BehaviorSubject, Subject} from 'rxjs';\n\nexport class VariationSettingsSettings {\n repeatx: number;\n repeaty: number;\n roughness: number;\n metalness: number;\n}\n\nexport class VariationSettings {\n public id: string;\n public settings: VariationSettingsSettings = new VariationSettingsSettings();\n public texture: string;\n public textureFilename: string;\n public normal: string;\n public normalFilename: string;\n public ao: string;\n public aoFilename: string;\n public metalness: string;\n public metalnessFilename: string;\n public roughness: string;\n public roughnessFilename: string;\n public orm: string;\n public ormFilename: string;\n public displacement: string;\n public displacementValue: number;\n public displacementFilename: string;\n public sheen: number;\n public sheenColor: string;\n public sheenColorMap: string;\n public sheenColorMapFilename: string;\n public transmissionMap: string;\n public transmissionMapFilename: string;\n public sheenRoughness: number;\n public sheenRoughnessMap: string;\n public sheenRoughnessMapFilename: string;\n public emissive: string;\n public emissiveFilename: string;\n public emissiveIntensity: number;\n public emissiveValue: string;\n public opacity: number;\n public transparent: boolean;\n public envMap: string;\n public envMapFilename: string;\n public envMapIntensity: number;\n public reflectivity: number;\n public side: number;\n public transmission: number;\n public ior: number;\n public thickness: number;\n public specularIntensity: number;\n\n // for pre-saved materials downloaded as zip\n public material: any;\n\n public loading: boolean = false;\n public loaded: BehaviorSubject<VariationSettings> = new BehaviorSubject<VariationSettings>(undefined);\n\n public copyFrom(settings: VariationSettings): void {\n this.settings = settings.settings;\n this.texture = settings.texture;\n this.textureFilename = settings.textureFilename;\n this.normal = settings.normal;\n this.normalFilename = settings.normalFilename;\n this.ao = settings.ao;\n this.aoFilename = settings.aoFilename;\n this.metalness = settings.metalness;\n this.metalnessFilename = settings.metalnessFilename;\n this.roughness = settings.roughness;\n this.roughnessFilename = settings.roughnessFilename;\n this.orm = settings.orm;\n this.ormFilename = settings.ormFilename;\n this.displacement = settings.displacement;\n this.displacementValue = settings.displacementValue;\n this.displacementFilename = settings.displacementFilename;\n this.sheen = settings.sheen;\n this.sheenColor = settings.sheenColor;\n this.sheenColorMap = settings.sheenColorMap;\n this.sheenColorMapFilename = settings.sheenColorMapFilename;\n this.transmissionMap = settings.transmissionMap;\n this.transmissionMapFilename = settings.transmissionMapFilename;\n this.sheenRoughness = settings.sheenRoughness;\n this.sheenRoughnessMap = settings.sheenRoughnessMap;\n this.sheenRoughnessMapFilename = settings.sheenRoughnessMapFilename;\n this.emissive = settings.emissive;\n this.emissiveFilename = settings.emissiveFilename;\n this.emissiveIntensity = settings.emissiveIntensity;\n this.emissiveValue = settings.emissiveValue;\n this.opacity = settings.opacity;\n this.transparent = settings.transparent;\n this.envMap = settings.envMap;\n this.envMapFilename = settings.envMapFilename;\n this.envMapIntensity = settings.envMapIntensity;\n this.reflectivity = settings.reflectivity;\n this.side = settings.side;\n this.transmission = settings.transmission;\n this.ior = settings.ior;\n this.thickness = settings.thickness;\n this.specularIntensity = settings.specularIntensity;\n this.material = settings.material;\n }\n\n}\n","import {Material} from './material';\n\nexport class Variation {\n public decoId: number;\n public brandId: string;\n public gameObjectName: string;\n public node: any;\n public optionText: string;\n public supplierArticleNr: string;\n public materialId: string;\n public material: any;\n}\n","import {Material} from '../model/material';\nimport {ImageUtils} from './image.utils';\nimport {VariationSettings} from '../model/variation-settings';\nimport {Color, SRGBColorSpace} from 'three';\n\nexport class FurnitureMaterial extends Material {\n\n public textureFilename?: string;\n public normalFilename?: string;\n public aoFilename?: string;\n public metalnessFilename?: string;\n public roughnessFilename?: string;\n public displacementFilename?: string;\n public envMapFilename?: string;\n public emissiveFileName?: string;\n public sheenColorMapFileName?: string;\n public sheenRoughnessMapFileName?: string;\n public transmissionMapFileName?: string;\n\n}\n\nexport class AssetUtils {\n\n public static async CreateMaterialFromAsset(asset: VariationSettings): Promise<Material> {\n const material: FurnitureMaterial = new Material();\n try {\n if (!asset) {\n return material;\n }\n if (asset.settings) {\n AssetUtils.setSettingsOfMaterial(material, asset.settings);\n }\n if (asset.texture) {\n material.texture = await ImageUtils.CreateTextureFromBase64(asset.id + '_texture', asset.texture, material);\n material.texture.colorSpace = SRGBColorSpace;\n material.textureFilename = asset.textureFilename;\n }\n if (asset.normal) {\n material.normal = await ImageUtils.CreateTextureFromBase64(asset.id + '_normal', asset.normal, material);\n material.normalFilename = asset.normalFilename;\n }\n if (asset.orm) {\n material.ao = await ImageUtils.CreateTextureFromBase64(asset.id + '_orm', asset.orm, material);\n material.roughness = material.ao;\n material.metalness = material.ao;\n material.aoFilename = asset.ormFilename;\n material.roughnessFilename = asset.ormFilename;\n material.metalnessFilename = asset.ormFilename;\n } else {\n if (asset.ao) {\n material.ao = await ImageUtils.CreateTextureFromBase64(asset.id + '_ao', asset.ao, material);\n material.aoFilename = asset.aoFilename;\n }\n if (asset.metalness) {\n material.metalness = await ImageUtils.CreateTextureFromBase64(asset.id + '_metalness', asset.metalness, material);\n material.metalnessFilename = asset.metalnessFilename;\n }\n if (asset.roughness) {\n material.roughness = await ImageUtils.CreateTextureFromBase64(asset.id + '_roughness', asset.roughness, material);\n material.roughnessFilename = asset.roughnessFilename;\n }\n }\n if (asset.displacement) {\n material.displacement = await ImageUtils.CreateTextureFromBase64(asset.id + '_displacement', asset.displacement, material);\n material.displacementFilename = asset.displacementFilename;\n }\n if (asset.envMap) {\n material.envMap = await ImageUtils.CreateTextureFromBase64(asset.id + '_env', asset.envMap, material, true);\n material.envMapFilename = asset.envMapFilename;\n }\n if (asset.sheenColorMap) {\n material.sheenColorMap = await ImageUtils.CreateTextureFromBase64(asset.id + '_sheen_color', asset.sheenColorMap, material);\n material.sheenColorMapFileName = asset.sheenColorMapFilename;\n }\n if (asset.sheenRoughnessMap) {\n material.sheenRoughnessMap = await ImageUtils.CreateTextureFromBase64(asset.id + '_sheen_roughness', asset.sheenRoughnessMap, material);\n material.sheenRoughnessMapFileName = asset.sheenRoughnessMapFilename;\n }\n if (asset.transmissionMap) {\n material.transmissionMap = await ImageUtils.CreateTextureFromBase64(asset.id + '_transmission', asset.transmissionMap, material);\n material.transmissionMapFileName = asset.transmissionMapFilename;\n }\n if (asset.emissive) {\n material.emissive = await ImageUtils.CreateTextureFromBase64(asset.id + '_emissive', asset.emissive, material);\n material.emissiveFileName = asset.emissiveFilename;\n }\n material.sheen = asset.sheen;\n material.emissiveIntensityValue = asset.emissiveIntensity;\n material.emissiveValue = asset.emissiveValue;\n material.side = asset.side;\n material.sheenColor = asset.sheenColor;\n material.sheenRoughness = asset.sheenRoughness;\n material.opacity = asset.opacity;\n material.transparent = asset.transparent;\n material.envMapIntensity = asset.envMapIntensity;\n material.reflectivity = asset.reflectivity;\n material.displacementValue = asset.displacementValue;\n material.transmission = asset.transmission;\n material.ior = asset.ior;\n material.thickness = asset.thickness;\n material.specularIntensity = asset.specularIntensity;\n } catch (e) {\n console.error(e);\n }\n return material;\n }\n\n public static setSettingsOfMaterial(material: Material, settings: any): void {\n const shininess = parseFloat(settings['power']);\n if (!isNaN(shininess)) {\n material.shininess = shininess;\n // material.roughness = 1 - (shininess / 100);\n }\n\n const level = parseFloat(settings['level']);\n if (!isNaN(level)) {\n material.specular = new Color(level, level, level);\n }\n\n const repeatObjectUsed: boolean = settings.hasOwnProperty('repeat');\n const repeatx = repeatObjectUsed ? parseFloat(settings['repeat']['repeatx']) : parseFloat(settings['repeatx']);\n if (!isNaN(repeatx)) {\n material.repeatX = repeatx;\n }\n\n const repeaty = repeatObjectUsed ? parseFloat(settings['repeat']['repeaty']) : parseFloat(settings['repeaty']);\n if (!isNaN(repeaty)) {\n material.repeatY = repeaty;\n }\n\n const metalness = parseFloat(settings['metalness']);\n if (!isNaN(metalness)) {\n material.metalnessValue = Math.min(1, metalness);\n }\n\n const roughness = parseFloat(settings['roughness']);\n if (!isNaN(roughness)) {\n material.roughnessValue = Math.min(1, roughness);\n }\n }\n}\n","import * as THREE from 'three';\nimport {Material} from '../model/material';\n\n// @dynamic\nexport class ImageUtils {\n\n public static textures: Map<string, THREE.Texture> = new Map();\n\n public static CreateTextureFromBase64(id: string, base64: string, material: Material, defaultFlip: boolean = false): Promise<THREE.Texture> {\n return new Promise<THREE.Texture>(async (resolve) => {\n if (ImageUtils.textures.has(id)) {\n resolve(ImageUtils.textures.get(id));\n } else {\n if (!base64) {\n resolve(new THREE.Texture());\n } else {\n if (window.hasOwnProperty('textureLoader')) {\n resolve(await (window as any).textureLoader(base64));\n } else {\n const loader: THREE.TextureLoader = new THREE.TextureLoader();\n loader.load(base64, (texture: THREE.Texture) => {\n texture.anisotropy = 16;\n texture.wrapS = THREE.RepeatWrapping;\n texture.wrapT = THREE.RepeatWrapping;\n texture.repeat = new THREE.Vector2(material ? material.repeatX : 1, material ? material.repeatY : 1);\n texture.flipY = defaultFlip;\n texture.needsUpdate = true;\n ImageUtils.textures.set(id, texture);\n resolve(texture);\n },\n () => {\n },\n () => {\n resolve(new THREE.Texture());\n });\n }\n }\n }\n });\n }\n\n public static getDocBodyWithMimeTypeDefinition(fileName: string, documentBody: string): string {\n if (documentBody === null) {\n return documentBody;\n }\n const fileExtension: string = fileName.substr(fileName.lastIndexOf('.') + 1);\n switch (fileExtension.toLowerCase()) {\n case 'jpg':\n case 'jpeg':\n return 'data:image/jpg;base64,' + documentBody;\n case 'png':\n return 'data:image/png;base64,' + documentBody;\n case 'gif':\n return 'data:image/gif;base64,' + documentBody;\n case 'bmp':\n return 'data:image/bmp;base64,' + documentBody;\n default:\n return 'data:image/png;base64,' + documentBody;\n }\n }\n\n public static getFixedImageFilepathUrl(imageFilepathUrl: string): string {\n return imageFilepathUrl.replace('/content/', '/content43/');\n }\n\n public static ClearCache(): void {\n ImageUtils.textures.forEach(value => {\n value.dispose();\n });\n ImageUtils.textures.clear();\n }\n}\n","import {Material, Mesh, Object3D} from \"three\";\r\n\r\nexport class ObjectUtils {\r\n static materialProps = ['map', 'lightMap', 'bumpMap', 'normalMap', 'specularMap', 'envMap', 'aoMap', 'roughnessMap', 'metalnessMap'];\r\n\r\n public static DisposeMaterial(material: Material | Material[]): void {\r\n if (!material) {\r\n return;\r\n }\r\n if (Array.isArray(material)) {\r\n material.forEach(mtrl => {\r\n this.materialProps\r\n .filter(mapType => mtrl[mapType])\r\n .forEach(mapType => mtrl[mapType].dispose());\r\n mtrl.dispose();\r\n });\r\n } else {\r\n this.materialProps\r\n .filter(mapType => material[mapType] && material[mapType].dispose)\r\n .forEach(mapType => material[mapType].dispose());\r\n if (material.dispose) {\r\n material.dispose();\r\n }\r\n }\r\n }\r\n\r\n public static DisposeObject(object: Object3D | Mesh): void {\r\n if (!object) {\r\n return;\r\n }\r\n if (object.children.length) {\r\n object.children.forEach(child => this.DisposeObject(child));\r\n }\r\n this.DisposeNode(object);\r\n }\r\n\r\n private static DisposeNode(node: Object3D | Mesh): void {\r\n node.traverse((obj: Object3D) => {\r\n if (obj instanceof Mesh) {\r\n if (obj.geometry) {\r\n obj.geometry.dispose();\r\n }\r\n this.DisposeMaterial(obj.material);\r\n }\r\n if (typeof (obj as any).dispose === 'function') {\r\n // @ts-ignore\r\n obj.dispose();\r\n }\r\n });\r\n }\r\n\r\n}\r\n","import * as THREE from 'three';\r\nimport {Selection} from '@colijnit/configuratorapi/build/model/selection';\r\n\r\nexport class SceneUtils {\r\n\r\n public static TrySelectorConnection(scene: THREE.Scene, parent: THREE.Object3D,\r\n part1: any, part2: any, isFirstElement: boolean, createAddableFn?: Function): boolean {\r\n let addable: any;\r\n if (createAddableFn) {\r\n addable = part2;\r\n part2 = createAddableFn(addable);\r\n }\r\n if (part1 && part2) {\r\n let con1: THREE.Object3D;\r\n let con2: THREE.Object3D;\r\n // if part2 is an addable and decoConnection is present, then no need to iterate through connectors\r\n if (addable && addable instanceof Selection && addable.decoConnection) {\r\n con1 = part1.children.find(c => c.name === addable.decoConnection);\r\n if (!con1) {\r\n return false;\r\n }\r\n for (let ii = 0; ii < part2.children.length; ii++) {\r\n con2 = part2.children[ii];\r\n // if these connectors can connect connect them\r\n if (!con1['connected'] && !con2['connected'] && this.CanSelectorConnect(part1.children, con1, con2, isFirstElement)) {\r\n // if addable, continue this loop with a new addable\r\n if (addable) {\r\n const newPart2: any = createAddableFn(addable, part2, part1);\r\n // reference of part2 changed, so refresh con2\r\n this.SelectorConnect(scene, parent, con1, newPart2.children[ii]);\r\n } else {\r\n return this.SelectorConnect(scene, parent, con1, con2);\r\n }\r\n }\r\n }\r\n } else {\r\n for (let i = 0; i < part1.children.length; i++) {\r\n for (let ii = 0; ii < part2.children.length; ii++) {\r\n con1 = part1.children[i];\r\n con2 = part2.children[ii];\r\n // if these connectors can connect connect them\r\n if (!con1['connected'] && !con2['connected'] && this.CanSelectorConnect(part1.children, con1, con2, isFirstElement)) {\r\n // if addable, continue this loop with a new addable\r\n if (addable) {\r\n const newPart2: any = createAddableFn(addable, part2, part1);\r\n // reference of part2 changed, so refresh con2\r\n this.SelectorConnect(scene, parent, con1, newPart2.children[ii]);\r\n } else {\r\n return this.SelectorConnect(scene, parent, con1, con2);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n // public static TrySelectorConnection(scene: THREE.Scene, parent: THREE.Object3D,\r\n // part1: any, part2: any, createAddableFn?: Function): boolean {\r\n // let addable: any;\r\n // if (createAddableFn) {\r\n // addable = part2;\r\n // part2 = createAddableFn(addable);\r\n // }\r\n // for (let i = 0; i < part1.children.length; i++) {\r\n // for (let ii = 0; ii < part2.children.length; ii++) {\r\n // const con1: THREE.Object3D = part1.children[i];\r\n // const con2: THREE.Object3D = part2.children[ii];\r\n // // if these connectors can connect connect them\r\n // if (!con1['connected'] && !con2['connected'] && this.CanSelectorConnect(con1, con2)) {\r\n // // if addable, continue this loop with a new addable\r\n // if (addable) {\r\n // const newPart2: THREE.Object3D = createAddableFn(addable, part2, part1);\r\n // // reference of part2 changed, so refresh con2\r\n // this.SelectorConnect(scene, parent, con1, newPart2.children[ii]);\r\n // } else {\r\n // return this.SelectorConnect(scene, parent, con1, con2);\r\n // }\r\n // }\r\n // }\r\n // }\r\n // return false;\r\n // }\r\n\r\n public static Convert3DPointToScreenPoint(point: THREE.Vector3, camera: THREE.Camera, width: number, height: number): THREE.Vector2 {\r\n if (!point) {\r\n return new THREE.Vector2();\r\n }\r\n const vector: THREE.Vector3 = point.clone().project(camera);\r\n vector.x = (vector.x + 1) / 2 * width;\r\n vector.y = -(vector.y - 1) / 2 * height;\r\n return new THREE.Vector2(vector.x, vector.y);\r\n }\r\n\r\n\r\n public static CanSelectorConnect(\r\n consPart1: THREE.Object3D[], con1: THREE.Object3D | any, con2: THREE.Object3D | any, startWithMale?: boolean): boolean {\r\n const con1Name: string = (con1.constructor.name === 'Mesh' || con1.constructor.name === 'Object3D') ? con1.name : con1.connector;\r\n const con2Name: string = (con2.constructor.name === 'Mesh' || con2.constructor.name === 'Object3D') ? con2.name : con2.connector;\r\n const sameParent: boolean = (con1.constructor.name === 'Mesh' || con1.constructor.name === 'Object3D') &&\r\n (con2.constructor.name === 'Mesh' || con2.constructor.name === 'Object3D') ? con1.parent === con2.parent : false;\r\n const parts1: string[] = con1Name.toUpperCase().split('_'),\r\n parts2: string[] = con2Name.toUpperCase().split('_');\r\n if (parts1.length >= 3 && parts2.length >= 3 && !sameParent) {\r\n const connectable: boolean = parts1[0] === 'C' && parts2[0] === 'C' &&\r\n parts1[1] === parts2[1] && parts1[2] !== parts2[2];\r\n return connectable;\r\n }\r\n return false;\r\n }\r\n\r\n // public static CanSelectorConnect(con1: THREE.Object3D | any, con2: THREE.Object3D | any): boolean {\r\n // const con1Name: string = con1 instanceof THREE.Object3D ? con1.name : con1.connector;\r\n // const con2Name: string = con2 instanceof THREE.Object3D ? con2.name : con2.connector;\r\n // const sameParent: boolean = con1 instanceof THREE.Object3D && con2 instanceof THREE.Object3D ? con1.parent === con2.parent : false;\r\n // const parts1: string[] = con1Name.toUpperCase().split('_'),\r\n // parts2: string[] = con2Name.toUpperCase().split('_');\r\n // if (parts1.length >= 3 && parts2.length >= 3 && !sameParent) {\r\n // const connectable: boolean = parts1[0] === 'C' && parts2[0] === 'C' &&\r\n // parts1[1] === parts2[1] && parts1[2] !== parts2[2];\r\n // return connectable;\r\n // }\r\n // return false;\r\n // }\r\n\r\n private static SelectorConnect(scene: THREE.Scene, parent: THREE.Object3D, con1: THREE.Object3D, con2: THREE.Object3D): boolean {\r\n if (!scene || !parent) {\r\n return false;\r\n }\r\n con1['connectedTo'] = con2.parent.name;\r\n con2['connectedTo'] = con1.parent.name;\r\n\r\n const motherRotation: THREE.Euler = new THREE.Euler(0, 0, 0);\r\n const motherPosition: THREE.Vector3 = new THREE.Vector3(0, 0, 0);\r\n\r\n parent.updateMatrixWorld();\r\n motherRotation.copy(parent.rotation);\r\n parent.getWorldPosition(motherPosition);\r\n\r\n parent.rotation.set(0, 0, 0);\r\n parent.position.set(0, 0, 0);\r\n\r\n scene.updateMatrixWorld(true);\r\n\r\n const con1Quat: THREE.Quaternion = new THREE.Quaternion();\r\n con1.getWorldQuaternion(con1Quat);\r\n const con2Quat: THREE.Quaternion = new THREE.Quaternion();\r\n con2.getWorldQuaternion(con2Quat);\r\n const con1QuatParent: THREE.Quaternion = new THREE.Quaternion();\r\n con1.parent.getWorldQuaternion(con1QuatParent);\r\n const con2QuatParent: THREE.Quaternion = new THREE.Quaternion();\r\n con2.parent.getWorldQuaternion(con2QuatParent);\r\n\r\n const rotation: THREE.Quaternion = new THREE.Quaternion().multiplyQuaternions(\r\n con1Quat.invert(),\r\n con2Quat\r\n ).multiply(\r\n new THREE.Quaternion().multiplyQuaternions(\r\n con1QuatParent,\r\n con1QuatParent\r\n )\r\n );\r\n\r\n con2.parent.quaternion.copy(rotation);\r\n // Update because the matrix has been tempered with\r\n scene.updateMatrixWorld(true);\r\n\r\n // Move the connectors towards eachother\r\n const con1Pos: THREE.Vector3 = new THREE.Vector3();\r\n con1.getWorldPosition(con1Pos);\r\n const con2Pos: THREE.Vector3 = new THREE.Vector3();\r\n con2.getWorldPosition(con2Pos);\r\n\r\n const move: THREE.Vector3 = con1Pos.sub(con2Pos);\r\n con2.parent.position.x += move.x;\r\n con2.parent.position.y += move.y;\r\n con2.parent.position.z += move.z;\r\n\r\n // reset parent's objects rotation and position\r\n parent.rotation.copy(motherRotation);\r\n parent.position.copy(motherPosition);\r\n\r\n scene.updateMatrixWorld(true);\r\n\r\n // Set the connected flag\r\n con1['connected'] = true;\r\n con2['connected'] = true;\r\n return true;\r\n }\r\n\r\n // private static SelectorConnect(scene: THREE.Scene, parent: THREE.Object3D, con1: THREE.Object3D, con2: THREE.Object3D): boolean {\r\n // if (!scene || !parent) {\r\n // return false;\r\n // }\r\n // con1['connectedTo'] = con2.parent.name;\r\n // con2['connectedTo'] = con1.parent.name;\r\n //\r\n // const motherRotation: THREE.Euler = new THREE.Euler(0, 0, 0);\r\n // const motherPosition: THREE.Vector3 = new THREE.Vector3(0, 0, 0);\r\n //\r\n // scene.updateMatrixWorld(true);\r\n // motherRotation.copy(parent.rotation);\r\n // parent.getWorldPosition(motherPosition);\r\n //\r\n // parent.rotation.set(0, 0, 0);\r\n // parent.position.set(0, 0, 0);\r\n //\r\n // const con1Quat: THREE.Quaternion = new THREE.Quaternion();\r\n // con1.getWorldQuaternion(con1Quat);\r\n // const con2Quat: THREE.Quaternion = new THREE.Quaternion();\r\n // con2.getWorldQuaternion(con2Quat);\r\n // const con1QuatParent: THREE.Quaternion = new THREE.Quaternion();\r\n // con1.parent.getWorldQuaternion(con1QuatParent);\r\n // const con2QuatParent: THREE.Quaternion = new THREE.Quaternion();\r\n // con2.parent.getWorldQuaternion(con2QuatParent);\r\n //\r\n // const rotation: THREE.Quaternion = new THREE.Quaternion().multiplyQuaternions(\r\n // con1Quat.invert(),\r\n // con2Quat\r\n // ).multiply(\r\n // new THREE.Quaternion().multiplyQuaternions(\r\n // con1QuatParent,\r\n // con1QuatParent\r\n // )\r\n // );\r\n //\r\n // con2.parent.quaternion.copy(rotation);\r\n // // Update because the matrix has been tempered with\r\n // scene.updateMatrixWorld(true);\r\n //\r\n // // Move the connectors towards eachother\r\n // const con1Pos: THREE.Vector3 = new THREE.Vector3();\r\n // con1.getWorldPosition(con1Pos);\r\n // const con2Pos: THREE.Vector3 = new THREE.Vector3();\r\n // con2.getWorldPosition(con2Pos);\r\n //\r\n // const move: THREE.Vector3 = con1Pos.sub(con2Pos);\r\n // con2.parent.position.x += move.x;\r\n // con2.parent.position.y += move.y;\r\n // con2.parent.position.z += move.z;\r\n //\r\n // // reset parent's objects rotation and position\r\n // parent.rotation.copy(motherRotation);\r\n // parent.position.copy(motherPosition);\r\n //\r\n // scene.updateMatrixWorld(true);\r\n //\r\n // // Set the connected flag\r\n // con1['connected'] = true;\r\n // con2['connected'] = true;\r\n // return true;\r\n // }\r\n\r\n}\r\n","import * as THREE from \"three\";\nimport {ObjectUtils} from \"./object.utils\";\nimport {FileUtils} from \"./file.utils\";\n\nexport class ThreedUtils {\n\n private _objectCache: Map<string, THREE.Object3D> = new Map();\n\n public clearCache(): void {\n const objs: THREE.Object3D[] = Array.from(this._objectCache.values());\n objs.forEach(o => ObjectUtils.DisposeObject(o));\n this._objectCache.clear();\n }\n\n public download3DSource(fileName: string, assetPath: string): Promise<THREE.Object3D> {\n return new Promise(async (resolve: Function, reject: Function) => {\n fileName = fileName.replace('.unity3d', '');\n let lookupFileName: string = fileName + (fileName.indexOf('.glb') < 0 ? '.glb' : '');\n if (this._objectCache.has(lookupFileName)) {\n resolve(this._objectCache.get(lookupFileName));\n return;\n }\n this.loadGlbSource(lookupFileName)\n .then((obj: THREE.Object3D) => {\n this._objectCache.set(lookupFileName, obj);\n resolve(obj);\n })\n .catch(() => {\n reject(`GLB source not found! (${lookupFileName})`);\n });\n });\n }\n\n public readFileAsText(file: File): Promise<string> {\n const fileReader = new FileReader();\n return new Promise((resolve, reject) => {\n fileReader.onload = (e: any) => resolve(e.target.result);\n fileReader.onerror = error => reject(error);\n fileReader.readAsText(file);\n });\n }\n\n public async loadJsonModel(filePath: string): Promise<any> {\n if (this._objectCache.has(filePath)) {\n return Promise.resolve(this._objectCache.get(filePath));\n }\n const json: string = await this._readJsonFile(filePath);\n const loader = new THREE.ObjectLoader();\n loader.crossOrigin = 'Anonymous';\n return new Promise((resolve, reject) => {\n try {\n const obj = loader.parse(json);\n this._objectCache.set(filePath, obj);\n resolve(obj);\n } catch (e) {\n reject(null);\n }\n });\n }\n\n public async loadJsonObjectModel(filePath: string): Promise<any> {\n if (this._objectCache.has(filePath)) {\n return Promise.resolve(this._objectCache.get(filePath));\n }\n const loader = new THREE.ObjectLoader();\n loader.setCrossOrigin('Anonymous');\n loader.setResourcePath('');\n return new Promise((resolve, reject) => {\n loader.load(filePath,\n (object: any) => {\n const obj: THREE.Object3D = (object.type === 'Scene' && object.children[0].type === 'Object3D') ? object.children[0] : object;\n this._objectCache.set(filePath, obj);\n resolve(obj as THREE.Object3D);\n },\n xhr => null,\n error => reject(error)\n );\n });\n }\n\n public async loadGlbModel(file: string, cleanUp: boolean = true): Promise<THREE.Object3D> {\n if (this._objectCache.has(file)) {\n return Promise.resolve(this._objectCache.get(file));\n }\n if (!window.hasOwnProperty('loadGLTF')) {\n console.error('loadGLTF not defined in window global');\n return null;\n }\n // const loader = new GLTFLoader();\n const obj: THREE.Object3D = await (window as any).loadGLTF(file);\n if (obj) {\n this._cleanedUpObjects(obj, cleanUp);\n this._objectCache.set(file, obj);\n return obj;\n } else {\n return null;\n }\n }\n\n public async loadGlbSource(file: string): Promise<THREE.Object3D> {\n const obj = await this.loadGlbModel(file, false);\n if (obj) {\n obj.children = obj.children.filter(c => !(c instanceof THREE.Camera));\n obj.children.sort((a, b) => a['name'] < b['name'] ? 1 : -1);\n obj.children.forEach((c: THREE.Object3D) => {\n c.traverse((t: THREE.Object3D) => {\n t.visible = !t.name.toLowerCase().startsWith('c_');\n });\n c.visible = false;\n });\n if (obj.children.length === 1 && obj.children[0] instanceof THREE.Group) { // flatten children\n const children: any = obj.children[0].children.slice();\n const name: string = obj.children[0].name;\n obj.children.length = 0;\n const parent: THREE.Object3D = new THREE.Object3D();\n parent.name = name;\n parent.children = children;\n obj.add(parent);\n }\n }\n return obj;\n }\n\n public async textureFromUrl(url: string): Promise<any> {\n // url = this._includeBaseUrl(url);\n return new Promise((resolve, reject) => {\n const textureLoader = new THREE.TextureLoader();\n // textureLoader.setBaseU(this._settingsService.settings.assetPath);\n textureLoader.load(url,\n (texture: THREE.Texture) => {\n texture.wrapT = THREE.RepeatWrapping;\n texture.wrapS = THREE.RepeatWrapping;\n texture.repeat.set(1, 1);\n texture.needsUpdate = true;\n return resolve(texture);\n },\n null,\n reject\n );\n });\n }\n\n private _cleanedUpObjects(object: THREE.Object3D, cleanUp: boolean = true): THREE.Object3D {\n let obj: THREE.Object3D = new THREE.Object3D();\n object.children.forEach((c: THREE.Object3D) => {\n if (!(c instanceof THREE.Camera)) {\n if (cleanUp && c instanceof THREE.Group || (c.children.length === 1 && c.children[0] instanceof THREE.Group)) {\n this._addGroupChildrenToObject(c, obj);\n } else if ((cleanUp && !(c instanceof THREE.Mesh)) || (!(c instanceof THREE.Mesh) && !c.name && c.children.length > 0)) {\n c.children.forEach((child) => {\n child.translateY(c.position.y);\n });\n c.translateY(-c.position.y);\n if (obj.children.length > 0) {\n obj.add(c.clone());\n } else {\n obj = c.clone();\n }\n } else {\n // if (c.position.y > 0 || c.position.y < 0) {\n // c.children.forEach((child) => {\n // child.translateY(c.position.y);\n // });\n // c.translateY(-c.position.y);\n // }\n obj.add(c.clone());\n }\n }\n });\n const boundingBox = new THREE.Box3().setFromObject(obj);\n const bbCenterPivot = new THREE.Vector3();\n boundingBox.getCenter(bbCenterPivot);\n const delta: THREE.Vector3 = new THREE.Vector3().add(bbCenterPivot).negate();\n obj.children.forEach((cc) => {\n cc.position.add(delta);\n });\n return obj;\n }\n\n private _addGroupChildrenToObject(group: THREE.Object3D, obj: THREE.Object3D, cleanUp: boolean = true): void {\n group.children.forEach((gc: THREE.Object3D) => {\n if (cleanUp && gc instanceof THREE.Group) {\n this._addGroupChildrenToObject(gc, obj);\n } else {\n // gc.translateX(-group.position.x);\n gc.translateY(group.position.y);\n // gc.translateZ(-group.position.z);\n obj.add(gc.clone());\n }\n });\n }\n\n private _iterateChildren(children: THREE.Object3D[], callback: (child: THREE.Mesh) => {}): void {\n for (let i = 0; i < children.length; i++) {\n const child: THREE.Object3D = children[i];\n if (child instanceof THREE.Mesh) {\n callback(child);\n } else {\n this._iterateChildren(child.children, callback);\n }\n }\n }\n\n private async _readJsonFile(filePath: string): Promise<any> {\n try {\n const response = await fetch(filePath);\n if (!response.ok) {\n return '';\n } else {\n let empty = false;\n await response.clone().text().then((value) => {\n if (value === '') {\n empty = true;\n }\n });\n return empty ? {} : response.json();\n }\n } catch (e) {\n return '';\n }\n }\n\n}\n","import {VariationSettings} from '../model/variation-settings';\r\n// @ts-ignore\r\nimport JSZip from 'jszip';\r\nimport {Color, Material, MaterialLoader, Mesh, Object3D, SRGBColorSpace} from 'three';\r\n\r\n// @dynamic\r\nexport class VariationUtils {\r\n private static MaterialCache: Map<string, any> = new Map();\r\n\r\n public static ClearCache(): void {\r\n this.MaterialCache.clear();\r\n }\r\n\r\n public static async LoadVariation(assetPath: string, fileName: string): Promise<VariationSettings> {\r\n if (!fileName) {\r\n return null;\r\n }\r\n\r\n if (!fileName.includes('ione3d')) {\r\n fileName = fileName.concat('.ione3d');\r\n }\r\n\r\n const id: string = fileName.substring(0, fileName.lastIndexOf('.ione3d'));\r\n\r\n if (!assetPath.endsWith('/')) {\r\n assetPath += '/';\r\n }\r\n\r\n if (!window.hasOwnProperty('downloadVariation')) {\r\n console.error('downloadVariation not defined in window global');\r\n throw new Error('downloadVariation not defined in window global');\r\n }\r\n\r\n if (this.MaterialCache.has(id)) {\r\n return this.MaterialCache.get(id);\r\n }\r\n\r\n try {\r\n const file = await (window as any).downloadVariation(\r\n `${assetPath.replace('https://cdn1.colijn-it.nl/', '')}variation/${fileName}`\r\n );\r\n const settings: VariationSettings = await VariationUtils.GetVariationSettingsFromFile(id, file);\r\n this.MaterialCache.set(id, settings);\r\n return settings;\r\n } catch (err) {\r\n console.error('Error loading variation:', err);\r\n throw err;\r\n }\r\n }\r\n // public static GetMaterialFromName(variationFolder: string, material: any): Promise<MeshStandardMaterial> {\r\n // return new Promise((resolve: Function) => {\r\n // if (!material) {\r\n // resolve(null);\r\n // }\r\n // if (this.MaterialCache.has(material.name)) {\r\n // resolve(this.MaterialCache.get(material.name).clone());\r\n // } else {\r\n // VariationUtils.LoadVariation(variationFolder, material.name, false).then((settings: VariationSettings) => {\r\n // if (settings) {\r\n // AssetUtils.CreateMaterialFromAsset(settings).then((materialObj: Material) => {\r\n // const materialParams: MeshStandardMaterialParameters = {};\r\n // materialParams.name = material.name;\r\n // materialParams.map = materialObj.texture;\r\n // materialParams.normalMap = materialObj.normal;\r\n // materialParams.aoMap = materialObj.ao;\r\n // materialParams.roughnessMap = materialObj.roughness;\r\n // materialParams.metalnessMap = materialObj.metalness;\r\n // materialParams.roughness = 1;\r\n // materialParams.metalness = 1;\r\n // const pbrMat: MeshStandardMaterial = new MeshStandardMaterial(materialParams);\r\n // this.MaterialCache.set(material.name, pbrMat);\r\n // resolve(pbrMat.clone());\r\n // });\r\n // } else {\r\n // resolve(material);\r\n // }\r\n // });\r\n // }\r\n // });\r\n // }\r\n\r\n private static async GetVariationSettingsFromFile(id: string, compressedFile: any): Promise<VariationSettings> {\r\n if (!compressedFile) {\r\n return null;\r\n }\r\n const zipContent = await VariationUtils.GetZipContent(compressedFile);\r\n const variationSettings: VariationSettings = new VariationSettings();\r\n let index;\r\n variationSettings.id = id;\r\n\r\n if (zipContent) {\r\n if (zipContent.files['material.glb']) {\r\n const material: string = await zipContent.files['material.glb'].async('arraybuffer');\r\n variationSettings.material = await VariationUtils.LoadMaterialFromGlb(material);\r\n } else {\r\n if (zipContent.files['index.json']) {\r\n const indexFile: string = await zipContent.files['index.json'].async('string');\r\n index = JSON.parse(indexFile);\r\n }\r\n if (index) {\r\n await VariationUtils.CreateSettingsBasedOnIndex(index, variationSettings, zipContent);\r\n } else {\r\n await VariationUtils.CreateSettingsBasedOnFileName(variationSettings, zipContent);\r\n }\r\n }\r\n }\r\n return variationSettings;\r\n }\r\n\r\n private static async CreateSettingsBasedOnIndex(index: any, variationSettings: VariationSettings, zipContent: any): Promise<void> {\r\n if (index.normalFile) {\r\n variationSettings.normal = await VariationUtils.LoadFileContentFromZip(zipContent.files[index.normalFile], index.normalFile);\r\n variationSettings.normalFilename = index.normalFile;\r\n }\r\n if (index.diffuseFile) {\r\n variationSettings.texture = await VariationUtils.LoadFileContentFromZip(zipContent.files[index.diffuseFile], index.diffuseFile);\r\n variationSettings.textureFilename = index.diffuseFile;\r\n }\r\n if (index.ormFile) {\r\n variationSettings.orm = await VariationUtils.LoadFileContentFromZip(zipContent.files[index.ormFile], index.ormFile);\r\n variationSettings.ormFilename = index.ormFile;\r\n } else {\r\n if (index.aoFile) {\r\n variationSettings.ao = await VariationUtils.LoadFileContentFromZip(zipContent.files[index.aoFile], index.aoFile);\r\n variationSettings.aoFilename = index.aoFile;\r\n }\r\n if (index.metalnessFile) {\r\n variationSettings.metalness = await VariationUtils.LoadFileContentFromZip(zipContent.files[index.metalnessFile], index.metalnessFile);\r\n variationSettings.metalnessFilename = index.metalnessFile;\r\n }\r\n if (index.roughnessFile) {\r\n variationSettings.roughness = await VariationUtils.LoadFileContentFromZip(zipContent.files[index.roughnessFile], index.roughnessFile);\r\n variationSettings.roughnessFilename = index.roughnessFile;\r\n }\r\n }\r\n if (index.displacementFile) {\r\n variationSettings.displacement = await VariationUtils.LoadFileContentFromZip(zipContent.files[index.displacementFile], index.displacementFile);\r\n variationSettings.displacementFilename = index.displacementFile;\r\n }\r\n if (index.emissiveFile) {\r\n variationSettings.emissive = await VariationUtils.LoadFileContentFromZip(zipContent.files[index.emissiveFile], index.emissiveFile);\r\n variationSettings.emissiveFilename = index.emissiveFile;\r\n }\r\n if (index.envMapFile) {\r\n variationSettings.envMap = await VariationUtils.LoadFileContentFromZip(zipContent.files[index.envMapFile], index.envMapFile);\r\n variationSettings.envMapFilename = index.envMapFile;\r\n }\r\n if (index.sheenColorMapFile) {\r\n variationSettings.sheenColorMap = await VariationUtils.LoadFileContentFromZip(zipContent.files[index.sheenColorMapFile], index.sheenColorMapFile);\r\n variationSettings.sheenColorMapFilename = index.sheenColorMapFile;\r\n }\r\n if (index.sheenRoughnessMapFile) {\r\n variationSettings.sheenRoughnessMap = await VariationUtils.LoadFileContentFromZip(zipContent.files[index.sheenRoughnessMapFile], index.sheenRoughnessMapFile);\r\n variationSettings.sheenRoughnessMapFilename = index.sheenColorMapFile;\r\n }\r\n if (index.transmissionMapFile) {\r\n variationSettings.transmissionMap = await VariationUtils.LoadFileContentFromZip(zipContent.files[index.transmissionMapFile], index.transmissionMapFile);\r\n variationSettings.transmissionMapFilename = index.transmissionMapFile;\r\n }\r\n if (index.repeat) {\r\n variationSettings.settings.repeatx = index.repeat.repeatx;\r\n variationSettings.settings.repeaty = index.repeat.repeaty;\r\n }\r\n variationSettings.settings.metalness = index.metalness;\r\n variationSettings.settings.roughness = index.roughness;\r\n\r\n if (index.sheen && typeof index.sheen === 'object') {\r\n variationSettings.sheen = 1;\r\n variationSettings.sheenColor = new Color(index.sheen.r, index.sheen.g, index.sheen.b).getHexString(SRGBColorSpace);\r\n } else {\r\n variationSettings.sheen = index.sheen;\r\n }\r\n if (index.sheenColor) {\r\n variationSettings.sheenColor = new Color(index.sheenColor.r, index.sheenColor.g, index.sheenColor.b).getHexString(SRGBColorSpace);\r\n }\r\n variationSettings.sheenRoughness = index.sheenRoughness;\r\n variationSettings.envMapIntensity = index.envMapIntensity;\r\n variationSettings.transparent = index.transparent;\r\n variationSettings.opacity = index.opacity;\r\n if (index.emissiveValue) {\r\n variationSettings.emissiveValue = new Color(index.emissiveValue.r, index.emissiveValue.g, index.emissiveValue.b).getHexString(SRGBColorSpace);\r\n }\r\n variationSettings.emissiveIntensity = index.emissiveIntensity;\r\n variationSettings.reflectivity = index.reflectivity;\r\n variationSettings.displacementValue = index.displacementValue;\r\n variationSettings.side = index.side;\r\n variationSettings.transmission = index.transmission;\r\n variationSettings.ior = index.ior;\r\n variationSettings.thickness = index.thickness;\r\n variationSettings.specularIntensity = index.specularIntensity;\r\n }\r\n\r\n private static async CreateSettingsBasedOnFileName(variationSettings: VariationSettings, zipContent: any): Promise<void> {\r\n const allLoaded: Promise<VariationSettings>[] = [];\r\n for (const fileName in zipContent.files) {\r\n if (zipContent.files.hasOwnProperty(fileName)) {\r\n const file: any = await zipContent.files[fileName];\r\n if (file.name.toLowerCase().indexOf('normal') > -1 && this.FileIsImage(file.name)) {\r\n allLoaded.push(zipContent.files[fileName].async('base64').then((normalFile: any) => {\r\n variationSettings.normal = `data:image/${this.GetBase64FileType(file.name)};base64,${normalFile}`;\r\n variationSettings.normalFilename = fileName;\r\n }));\r\n } else if (file.name.toLowerCase().indexOf('ao') > -1 && this.FileIsImage(file.name)) {\r\n allLoaded.push(zipContent.files[fileName].async('base64').then((aoFile: any) => {\r\n variationSettings.ao = `data:image/${this.GetBase64FileType(file.name)};base64,${aoFile}`;\r\n variationSettings.aoFilename = fileName;\r\n }));\r\n } else if (file.name.toLowerCase().indexOf('metalness') > -1 && this.FileIsImage(file.name)) {\r\n allLoaded.push(zipContent.files[fileName].async('base64').then((metalnessFile: any) => {\r\n variationSettings.metalness = `data:image/${this.GetBase64FileType(file.name)};base64,${metalnessFile}`;\r\n variationSettings.metalnessFilename = fileName;\r\n }));\r\n } else if (file.name.toLowerCase().indexOf('roughness') > -1 && this.FileIsImage(file.name)) {\r\n allLoaded.push(zipContent.files[fileName].async('base64').then((roughnessFile: any) => {\r\n variationSettings.roughness = `data:image/${this.GetBase64FileType(file.name)};base64,${roughnessFile}`;\r\n variationSettings.roughnessFilename = fileName;\r\n }));\r\n } else if (file.name.toLowerCase().indexOf('diffuse') > -1 && this.FileIsImage(file.name)) {\r\n allLoaded.push(zipContent.files[fileName].async('base64').then((diffuseFile: any) => {\r\n variationSettings.texture = `data:image/${this.GetBase64FileType(file.name)};base64,${diffuseFile}`;\r\n variationSettings.textureFilename = fileName;\r\n }));\r\n } else if (file.name.toLowerCase().indexOf('displacement') > -1 && this.FileIsImage(file.name)) {\r\n allLoaded.push(zipContent.files[fileName].async('base64').then((displacementFile: any) => {\r\n variationSettings.displacement = `data:image/${this.GetBase64FileType(file.name)};base64,${displacementFile}`;\r\n variationSettings.displacementFilename = fileName;\r\n }));\r\n } else if (file.name.toLowerCase().indexOf('emissive') > -1 && this.FileIsImage(file.name)) {\r\n allLoaded.push(zipContent.files[fileName].async('base64').then((emissiveFile: any) => {\r\n variationSettings.emissive = `data:image/${this.GetBase64FileType(file.name)};base64,${emissiveFile}`;\r\n variationSettings.emissiveFilename = fileName;\r\n }));\r\n } else if (file.name.toLowerCase().indexOf('envMap') > -1 && this.FileIsImage(file.name)) {\r\n allLoaded.push(zipContent.files[fileName].async('base64').then((envMapFile: any) => {\r\n variationSettings.envMap = `data:image/${this.GetBase64FileType(file.name)};base64,${envMapFile}`;\r\n variationSettings.envMapFilename = fileName;\r\n }));\r\n } else if (file.name.toLowerCase().indexOf('sheenColorMap') > -1 && this.FileIsImage(file.name)) {\r\n allLoaded.push(zipContent.files[fileName].async('base64').then((sheenColorMapFile: any) => {\r\n variationSettings.sheenColorMap = `data:image/${this.GetBase64FileType(file.name)};base64,${sheenColorMapFile}`;\r\n variationSettings.sheenColorMapFilename = fileName;\r\n }));\r\n } else if (file.name.toLowerCase().indexOf('sheenRoughnessMap') > -1 && this.FileIsImage(file.name)) {\r\n allLoaded.push(zipContent.files[fileName].async('base64').then((sheenRoughnessMapFile: any) => {\r\n variationSettings.sheenRoughnessMap = `data:image/${this.GetBase64FileType(file.name)};base64,${sheenRoughnessMapFile}`;\r\n variationSettings.sheenRoughnessMapFilename = fileName;\r\n }));\r\n } else if (file.name.toLowerCase().indexOf('transmissionMap') > -1 && this.FileIsImage(file.name)) {\r\n allLoaded.push(zipContent.files[fileName].async('base64').then((transmissionMapFile: any) => {\r\n variationSettings.transmissionMap = `data:image/${this.GetBase64FileType(file.name)};base64,${transmissionMapFile}`;\r\n variationSettings.transmissionMapFilename = fileName;\r\n }));\r\n } else if (file.name.indexOf('.jp') > -1) {\r\n allLoaded.push(zipContent.files[fileName].async('base64').then((textureFile: any) => {\r\n variationSettings.texture = 'data:image/jpeg;base64,' + textureFile;\r\n variationSettings.textureFilename = fileName;\r\n }));\r\n } else if (file.name.indexOf('.json') > -1) {\r\n allLoaded.push(zipContent.files[fileName].async('string').then((settingsFile: any) => {\r\n const settingsFileObj = JSON.parse(settingsFile);\r\n for (const key in settingsFileObj) {\r\n if (settingsFileObj.hasOwnProperty(key)) {\r\n variationSettings.settings[key] = settingsFileObj[key];\r\n }\r\n }\r\n }));\r\n }\r\n }\r\n }\r\n await Promise.all(allLoaded);\r\n }\r\n\r\n private static LoadMaterialFromJson(material: any): Material {\r\n const loader = new MaterialLoader();\r\n if (material.textures) {\r\n const textures: {} = {};\r\n for (let i = 0; i < material.textures.length; i++) {\r\n textures[material.textures[i].uuid] = material.textures[i];\r\n }\r\n loader.setTextures(textures);\r\n }\r\n return loader.parse(material);\r\n }\r\n\r\n private static LoadMaterialFromGlb(material: any): Promise<Material> {\r\n return new Promise(async (resolve: Function, reject: Function) => {\r\n if (!window.hasOwnProperty('loadGLTF')) {\r\n console.error('loadGLTF not defined in window global');\r\n return reject();\r\n }\r\n const obj: Object3D = await (window as any).loadGLTF(material, false);\r\n if (obj) {\r\n return resolve((obj.children[0] as Mesh).material);\r\n }\r\n });\r\n }\r\n\r\n private static LoadFileContentFromZip(zip: any, fileName: string, base64: boolean = true): Promise<string> {\r\n return new Promise((resolve: Function) => {\r\n if (zip && fileName) {\r\n zip.async(base64 ? 'base64' : 'string').then((fileContent: any) => {\r\n if (base64) {\r\n resolve(`data:image/${this.GetBase64FileType(fileName)};base64,${fileContent}`);\r\n } else {\r\n resolve(fileContent);\r\n }\r\n });\r\n } else {\r\n resolve(undefined);\r\n }\r\n });\r\n }\r\n\r\n private static FileIsImage(fileName: string): boolean {\r\n const ext: string = fileName.substring(fileName.lastIndexOf('.') + 1, fileName.length).toLowerCase();\r\n switch (ext) {\r\n case 'jpg':\r\n case 'jpeg':\r\n case 'png':\r\n case 'bmp':\r\n return true;\r\n default:\r\n return false;\r\n }\r\n }\r\n\r\n private static GetBase64FileType(fileName: string): string {\r\n const ext: string = fileName.substring(fileName.lastIndexOf('.') + 1, fileName.length).toLowerCase();\r\n switch (ext) {\r\n case 'jpg':\r\n case 'jpeg':\r\n return 'jpeg';\r\n case 'png':\r\n return 'png';\r\n case 'bmp':\r\n return 'bmp';\r\n default:\r\n return 'jpeg';\r\n }\r\n }\r\n\r\n // Get the content\r\n private static async GetZipContent(file): Promise<any> {\r\n try {\r\n const jszip = new JSZip();\r\n return await jszip.loadAsync(file);\r\n } catch (e) {\r\n return null;\r\n }\r\n }\r\n}\r\n"],"names":[],"sourceRoot":"webpack:///"}