1 line
481 KiB
Plaintext
1 line
481 KiB
Plaintext
{"version":3,"file":"784.index.js","mappings":";;;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;ACRA,2CAA0B;AAC1B,sCAAyB;AACzB,yCAA+B;AAC/B,4CAAiC;AACjC,mDAAgE;AAChE,sDAAiE;AACjE,iDAAyD;AAEzD,2CAW4B;AAC5B,4CAAyC;AACzC,0CAA8C;AAE9C,6CAA+C;AAC/C,6CAAoD;AAEpD,+CAA+D;AAC/D,gDAAgF;AAChF,4CAA8D;AAC9D,0DAAoE;AACpE,uCAAsC,CAAC,6BAA6B;AACpE,gDAA8D;AAC9D,yDAA8E;AAC9E,6DAAoF;AACpF,6DAAqF;AAErF,8EAAgH;AAChH,gFAAmH;AAEnH,wDAA0E;AAC1E,4CAK6B;AAC7B,2DAAwE;AACxE,+CAAyE;AACzE,6CAA4E;AAC5E,0DAA6D;AAE7D,MAAM,SAAS,GAAG,6DAA6D,CAAC;AAChF,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC;AAE5B,oFAAoF;AACpF,iDAAiD;AACjD,KAAK,UAAU,gBAAgB,CAC7B,CAAa,EACb,OAAqB;IAErB,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;QACvB,OAAO,EAAE,CAAC;QACV,MAAM,KAAK,CAAC;IACd,CAAC,CAAC,CAAC;AACL,CAAC;AAED,iGAAiG;AACjG,uBAAuB;AACR,KAAK,UAAU,OAAO,CAAC,GAAG,KAAiB;;IACxD,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,yCAAkB,CAAC,GAAG,KAAK,CAAC,CAAC;IACxD,MAAM,OAAO,GAAkC,EAAE,CAAC;IAElD,IAAI,OAAO,CAAC,EAAE,EAAE;QACd,IAAI,CAAC,EAAE,GAAG,OAAO,CAAC,EAAE,CAAC;KACtB;IAED,IAAI,OAAO,CAAC,cAAc,IAAI,OAAO,CAAC,cAAc,CAAC,EAAE;QACrD,MAAM,IAAI,KAAK,CACb,wEAAwE,CACzE,CAAC;KACH;IAED,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;QACnB,2BAAa,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;KAC/B;IAED,IAAI,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,iBAAiB,CAAC,EAAE;QAChD,MAAM,IAAI,KAAK,CAAC,0DAA0D,CAAC,CAAC;KAC7E;IAED,mEAAmE;IACnE,IAAI,OAAO,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE;QAC3C,OAAO,CAAC,mBAAmB,CAAC,GAAG,IAAI,CAAC;KACrC;IAED,+DAA+D;IAC/D,8DAA8D;IAC9D,IAAI,OAAO,CAAC,MAAM,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;QACxC,MAAM,IAAI,wBAAe,EAAE,CAAC;KAC7B;IAED,iCAAqB,EAAE,CAAC;IAExB,IAAI,YAAY,GAAkB,EAAE,CAAC;IACrC,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,SAAS,CAAC,cAAc,EAAE,EAAE;QACjD,IAAI;YACF,YAAY,GAAG,MAAM,oCAAe,EAAE,CAAC;SACxC;QAAC,OAAO,GAAG,EAAE;YACZ,KAAK,CAAC,iCAAiC,EAAE,GAAG,CAAC,CAAC;SAC/C;KACF;IAED,MAAM,SAAS,GAAG,yBAAY,CAAC,OAAO,CAAC,CAAC;IACxC,IAAI,SAAS,EAAE;QACb,MAAM,aAAa,GAAG,MAAM,6BAAgB,CAC1C,SAAS,EACT,KAAK,EACL,OAAO,EACP,YAAY,CACb,CAAC;QAEF,MAAM,CAAC,cAAc,EAAE,aAAa,CAAC,GAAG,aAAa,CAAC;QAEtD,OAAO,MAAM,mCAAyB,CACpC,OAAO,EACP,cAAc,EACd,aAAa,EACb,OAAO,CACR,CAAC;KACH;IAED,qEAAqE;IACrE,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;QACxB,KAAK,CAAC,cAAc,IAAI,KAAK,CAAC,CAAC;QAC/B,IAAI;YACF,mBAAmB,CAAC,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;YAC1C,IAAI,YAAY,GAAG,KAAK,CAAC;YACzB,IAAI,cAAc,CAAC;YACnB,IAAI,0CAAkB,CAAC,OAAO,CAAC,EAAE;gBAC/B,YAAY,GAAG,KAAK,CAAC;aACtB;iBAAM,IAAI,OAAO,CAAC,MAAM,EAAE;gBACzB,YAAY,GAAG,QAAQ,CAAC;aACzB;iBAAM;gBACL,cAAc,GAAG,MAAM,CAAC,oBAAoB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;aAC7D;YAED,MAAM,mCAAe,CACnB,OAAmC,EACnC,cAAc,CACf,CAAC;YAEF,MAAM,UAAU,GACd,CAAC,OAAO,CAAC,gBAAgB,IAAI,OAAO,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,yCAAyC;gBACpG,CAAC,CAAC,SAAS;gBACX,CAAC,CAAC,OAAO,CAAC,IAAI,IAAI,MAAM,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;YAErD,MAAM,WAAW,GAAG,QAAQ,CAAC,QAAQ,CACnC,GAAG,EACH,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,IAAI,EAAE,CAAC,CACtC,CAAC;YAEF,MAAM,yBAAyB,GAC7B,YAAY;gBACZ,CAAC,cAAc,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,YAAY,CAAC;gBAChD,oBAAoB;gBACpB,WAAW,CAAC;YAEd,MAAM,iBAAO,CAAC,yBAAyB,CAAC,CAAC;YAEzC,6CAA6C;YAC7C,KAAK,CAAC,uBAAuB,CAAC,CAAC;YAE/B,kDAAkD;YAClD,6DAA6D;YAC7D,MAAM,aAAa,GAAG,MAAM,gBAAgB,CAC1C,wCAAiB,CAAC,IAAI,EAAE;gBACtB,GAAG,OAAO;gBACV,IAAI;gBACJ,cAAc;aACf,CAAC,EACF,iBAAO,CAAC,KAAK,CAAC,yBAAyB,CAAC,CACzC,CAAC;YACF,SAAS,CAAC,GAAG,CAAC,YAAY,EAAE,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YAEvD,gFAAgF;YAChF,mFAAmF;YACnF,IAAI,gBAA0C,CAAC;YAE/C,IAAI,CAAC,4BAAS,CAAC,aAAa,CAAC,aAAa,CAAC,EAAE;gBAC3C,gBAAgB,GAAG,6EAAgC,CAAC,aAAa,CAAC,CAAC;aACpE;iBAAM;gBACL,gBAAgB,GAAG,0EAA+B,CAAC,aAAa,CAAC,CAAC;aACnE;YAED,MAAM,aAAa,GAAI,aAA0C;iBAC9D,aAAa,CAAC;YACjB,IAAI,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,MAAM,EAAE;gBACzB,aAAa,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE;oBAC/B,OAAO,CAAC,IAAI,CAAC;wBACX,EAAE,EAAE,KAAK;wBACT,IAAI,EAAE,IAAI,qBAAY,CAAC,GAAG,EAAE,MAAM,CAAC,UAAU,CAAC;wBAC9C,IAAI,EAAE,MAAM,CAAC,UAAU,IAAI,EAAE;qBAC9B,CAAC,CAAC;gBACL,CAAC,CAAC,CAAC;aACJ;YAED,MAAM,0BAA0B,GAC9B,+BAA+B,GAAG,WAAW,GAAG,MAAM,CAAC;YACzD,MAAM,iBAAO,CAAC,0BAA0B,CAAC,CAAC;YAE1C,gDAAgD;YAChD,KAAK,MAAM,WAAW,IAAI,gBAAgB,CAAC,eAAe,EAAE;gBAC1D,IAAI;oBACF,IAAI,CAAC,WAAW,CAAC,QAAQ,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE;wBACjD,KAAK,CACH,wEAAwE,CACzE,CAAC;wBACF,MAAM,IAAI,6BAAoB,CAC5B,2EAA2E,CAC5E,CAAC;qBACH;oBACD,MAAM,uBAAuB,GAAG,+CAAqB,CACnD,WAAW,EACX,gBAAgB,EAChB,OAAmC,CACpC,CAAC;oBAEF,SAAS,CAAC,GAAG,CAAC,gBAAgB,EAAE,uBAAuB,CAAC,CAAC;oBAEzD,MAAM,WAAW,GAAG,cAAc,CAAC,WAAW,CAAC,CAAC;oBAChD,IAAI,WAAW,CAAC,QAAQ,EAAE;wBACxB,KAAK,CAAC,cAAc,iBAAW,CAAC,QAAQ,CAAC,OAAO,0CAAE,IAAI,KAAK,CAAC,CAAC;wBAC7D,+BAAkB,CAAC,OAAO,EAAE,WAAW,CAAC,QAAQ,CAAC,CAAC;qBACnD;oBAED,IAAI,WAAW,CAAC,OAAO,EAAE;wBACvB,KAAK,CAAC,cAAc,WAAW,CAAC,OAAO,CAAC,IAAI,KAAK,CAAC,CAAC;wBACnD,8BAAiB,CAAC,OAAO,EAAE,WAAW,CAAC,OAAO,CAAC,CAAC;qBACjD;oBAED,MAAM,KAAK,GAAG,WAAW,CAAC,UAAU,IAAI,UAAU,CAAC;oBACnD,MAAM,sBAAsB,GAC1B,WAAW,CAAC,MAAM,CAAC,UAAU;wBAC7B,CAAC,KAAK,IAAI,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC,CAAC;wBACvD,EAAE,CAAC;oBAEL,MAAM,GAAG,GAAkB,MAAM,gBAAgB,CAC/C,iBAAW,CACT,IAAI,EACJ,mBAAmB,CAAC,OAAO,EAAE,uBAAuB,CAAC,EACrD,WAAW,EACX,OAAO,EACP,WAAW,CAAC,MAAwB,EACpC,sBAAsB,EACtB,YAAY,EACZ,yBAAyB,CAAC,OAAO,CAAC,EAClC,YAAY,CAAC,OAAO,CAAC,CACtB,EACD,iBAAO,CAAC,KAAK,CAAC,0BAA0B,CAAC,CAC1C,CAAC;oBAEF,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC;oBAChB,MAAM,SAAS,GAAG,gCAAmB,CACnC,uBAAuB,EACvB,GAAG,EACH,OAAO,EACP,WAAW,EACX,MAAM,8CAAoB,CAAC,IAAI,EAAE,OAAO,EAAE,aAAa,CAAC,CACzD,CAAC;oBACF,qBAAqB;oBACrB,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,CAAC;iBAChE;gBAAC,OAAO,GAAG,EAAE;oBACZ,yEAAyE;oBACzE,yBAAyB;oBACzB,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC;iBAC9C;aACF;SACF;QAAC,OAAO,GAAG,EAAE;YACZ,sCAAsC;YACtC,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC;SAC9C;gBAAS;YACR,iBAAO,CAAC,QAAQ,EAAE,CAAC;SACpB;KACF;IACD,+CAA+C;IAC/C,IAAI,OAAO,CAAC,IAAI,EAAE;QAChB,OAAO,iDAA0B,CAAC,OAAO,CAAC,CAAC;KAC5C;IAED,MAAM,MAAM,GAAG,OAAO;SACnB,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;QACX,IAAI,GAAG,CAAC,EAAE,EAAE;YACV,OAAO,GAAG,CAAC,IAAI,CAAC;SACjB;QAED,MAAM,YAAY,GAChB,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,IAAI,CAAC,WAAW;YAC9B,CAAC,CAAC,eAAK,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC;YACtC,CAAC,CAAC,GAAG,CAAC,IAAI;gBACV,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO;gBAClB,CAAC,CAAC,yBAAyB,CAAC;QAEhC,OAAO,CACL,eAAK,CAAC,IAAI,CAAC,KAAK,CAAC,eAAe,GAAG,GAAG,CAAC,IAAI,GAAG,SAAS,CAAC,GAAG,YAAY,CACxE,CAAC;IACJ,CAAC,CAAC;SACD,IAAI,CAAC,IAAI,GAAG,SAAS,CAAC,CAAC;IAE1B,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE;QAClC,OAAO,MAAM,CAAC;KACf;IAED,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC;AAC1B,CAAC;AArPD,0BAqPC;AAED,SAAS,mBAAmB,CAAC,OAAO,EAAE,cAAe;IACnD,OAAO;QACL,MAAM,EAAE,KAAK;QACb,cAAc;QACd,aAAa,EAAE,OAAO,CAAC,aAAa,CAAC;QACrC,cAAc,EAAE,OAAO,CAAC,cAAc,CAAC,IAAI,gBAAM,CAAC,YAAY;QAC9D,QAAQ,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM;QAC1B,KAAK,EAAE,CAAC,CAAC,OAAO,CAAC,4BAA4B;QAC7C,iBAAiB,EAAE,OAAO,CAAC,iBAAiB,CAAC;QAC7C,eAAe,EAAE,OAAO,CAAC,kBAAkB,CAAC;KAC7C,CAAC;AACJ,CAAC;AAED;;;;;;;GAOG;AACH,SAAS,mBAAmB,CAC1B,SAAiB,EACjB,SAA4B,EAC5B,OAAgB;IAEhB,MAAM,eAAe,GAAQ,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IAEtD,IAAI,OAAO,CAAC,SAAS,CAAC,KAAK,SAAS,EAAE;QACpC,OAAO,SAAS,CAAC;KAClB;IAED,2FAA2F;IAC3F,qCAAqC;IACrC,iFAAiF;IACjF,IAAI,OAAO,CAAC,SAAS,CAAC,KAAK,EAAE,EAAE;QAC7B,OAAO,EAAE,CAAC;KACX;IAED,yEAAyE;IACzE,6CAA6C;IAC7C,IAAI,OAAO,CAAC,SAAS,CAAC,KAAK,IAAI,EAAE;QAC/B,MAAM,IAAI,wBAAe,CACvB,KAAK,SAAS,mHAAmH,SAAS,GAAG,CAC9I,CAAC;KACH;IAED,MAAM,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC7C,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,eAAe,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;IACzE,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;QACpB,MAAM,IAAI,wBAAe,CACvB,GAAG,KAAK,CAAC,MAAM,YAAY,SAAS,KAAK,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI;YAC3D,wBAAwB,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CACvD,CAAC;KACH;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAgB,yBAAyB,CAAC,OAAO;IAC/C,4GAA4G;IAC5G,4EAA4E;IAC5E,yBAAyB,CAAC,OAAO,CAAC,CAAC;AACrC,CAAC;AAJD,8DAIC;AAED,SAAgB,yBAAyB,CAAC,OAAO;IAC/C,OAAO;QACL,WAAW,EAAE,mBAAmB,CAC9B,8BAA8B,EAC9B,2BAAmB,EACnB,OAAO,CACR;QACD,WAAW,EAAE,mBAAmB,CAC9B,qBAAqB,EACrB,2BAAmB,EACnB,OAAO,CACR;QACD,SAAS,EAAE,mBAAmB,CAC5B,mBAAmB,EACnB,yBAAiB,EACjB,OAAO,CACR;KACF,CAAC;AACJ,CAAC;AAlBD,8DAkBC;AAED;;;;;;;;;GASG;AACH,SAAgB,YAAY,CAAC,OAAO;IAClC,IAAI,OAAO,CAAC,cAAc,CAAC,KAAK,SAAS,IAAI,OAAO,CAAC,MAAM,CAAC,KAAK,SAAS,EAAE;QAC1E,OAAO,SAAS,CAAC;KAClB;IAED,IAAI,OAAO,CAAC,cAAc,CAAC,KAAK,SAAS,IAAI,OAAO,CAAC,MAAM,CAAC,KAAK,SAAS,EAAE;QAC1E,MAAM,IAAI,wBAAe,CACvB,iEAAiE,CAClE,CAAC;KACH;IAED,MAAM,OAAO,GACX,OAAO,CAAC,MAAM,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAE5E,IAAI,OAAO,KAAK,EAAE,EAAE;QAClB,OAAO,EAAE,CAAC;KACX;IAED,yEAAyE;IACzE,2CAA2C;IAC3C,IAAI,OAAO,KAAK,IAAI,EAAE;QACpB,MAAM,IAAI,wBAAe,CACvB,yKAAyK,CAC1K,CAAC;KACH;IAED,MAAM,mBAAmB,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAE/C,MAAM,IAAI,GAAU,EAAE,CAAC;IACvB,KAAK,MAAM,cAAc,IAAI,mBAAmB,EAAE;QAChD,MAAM,KAAK,GAAG,cAAc,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACxC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;YACtB,MAAM,IAAI,wBAAe,CACvB,YAAY,cAAc,2FAA2F,CACtH,CAAC;SACH;QACD,IAAI,CAAC,IAAI,CAAC;YACR,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC;YACb,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;SAChB,CAAC,CAAC;KACJ;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AA3CD,oCA2CC;AAED,SAAgB,YAAY,CAAC,OAAO;IAClC,4GAA4G;IAC5G,4EAA4E;IAC5E,YAAY,CAAC,OAAO,CAAC,CAAC;AACxB,CAAC;AAJD,oCAIC;AAED,SAAS,mBAAmB,CAAC,IAAY,EAAE,QAAkB;IAC3D,MAAM,MAAM,GAAG,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;IACnC,IAAI,CAAC,MAAM,IAAI,CAAC,QAAQ,EAAE;QACxB,MAAM,IAAI,KAAK,CAAC,GAAG,GAAG,IAAI,GAAG,0CAA0C,CAAC,CAAC;KAC1E;AACH,CAAC;AAED,SAAS,cAAc,CAAC,WAAW;;IACjC,OAAO,CACL,kBAAW,CAAC,IAAI,0CAAE,iBAAiB,kBACnC,WAAW,CAAC,QAAQ,0CAAE,OAAO,0CAAE,IAAI,YACnC,WAAW,CAAC,OAAO,0CAAE,IAAI,EAC1B,CAAC;AACJ,CAAC;;;;;;;;;;;;ACxdD,SAAgB,0BAA0B,CACxC,OAAsC;IAEtC,IAAI,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE;QACtC,IAAI,MAAM,CAAC,EAAE,EAAE;YACb,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YACzC,IAAI,MAAM,CAAC,WAAW,EAAE;gBACtB,QAAQ,CAAC,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;aAC3C;YACD,OAAO,QAAQ,CAAC;SACjB;QACD,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC;IACtE,CAAC,CAAC,CAAC;IACH,oDAAoD;IACpD,UAAU,GAAG,UAAU,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC;IAClE,MAAM,eAAe,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;IAE5D,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE;QAClC,OAAO,eAAe,CAAC;KACxB;IACD,MAAM,GAAG,GAAG,IAAI,KAAK,CAAC,eAAe,CAAQ,CAAC;IAC9C,GAAG,CAAC,IAAI,GAAG,eAAe,CAAC;IAC3B,MAAM,GAAG,CAAC;AACZ,CAAC;AAvBD,gEAuBC;;;;;;;;;;;;ACvBD,SAAgB,kBAAkB,CAChC,GAAG,IAAI;IAEP,IAAI,OAAO,GAAI,EAAsC,CAAC;IAEtD,IAAI,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,QAAQ,EAAE;QAC7C,OAAO,GAAI,IAAI,CAAC,GAAG,EAAsC,CAAC;KAC3D;IACD,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAE5B,6EAA6E;IAC7E,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;QACxC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;KAC7B;IAED,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;AAClC,CAAC;AAhBD,gDAgBC;;;;;;;;;;;;AChBD,MAAa,aAAa;IAExB,YAAY,MAAc;QACxB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IAEM,QAAQ;QACb,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAEM,iBAAiB;QACtB,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;CACF;AAbD,sCAaC;AAED,MAAsB,iBAAkB,SAAQ,aAAa;IAA7D;;QACY,eAAU,GAAG,EAAE,CAAC;QAChB,gBAAW,GAAG,EAAE,CAAC;IA6B7B,CAAC;IA3BQ,aAAa;QAClB,OAAO,IAAI,CAAC,UAAU,CAAC;IACzB,CAAC;IAEM,cAAc;QACnB,OAAO,IAAI,CAAC,WAAW,CAAC;IAC1B,CAAC;IAEM,MAAM,CAAC,oCAAoC,CAChD,mBAA2B,EAC3B,UAAkB,EAClB,WAAoB;QAEpB,OAAO,IAAI,8BAA8B,CACvC,mBAAmB,EACnB,UAAU,EACV,WAAW,CACZ,CAAC;IACJ,CAAC;IAEM,MAAM,CAAC,2BAA2B,CACvC,MAAc,EACd,UAAmB,EACnB,WAAoB;QAEpB,OAAO,IAAI,qBAAqB,CAAC,MAAM,EAAE,UAAU,EAAE,WAAW,CAAC,CAAC;IACpE,CAAC;CACF;AA/BD,8CA+BC;AAED,MAAM,8BAA+B,SAAQ,iBAAiB;IAI5D,YACE,mBAA2B,EAC3B,UAAkB,EAClB,WAAoB;QAEpB,KAAK,CAAC,mBAAmB,CAAC,CAAC;QARnB,eAAU,GAAG,EAAE,CAAC;QAChB,gBAAW,GAAG,EAAE,CAAC;QAQzB,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,WAAW,EAAE;YACf,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;SAChC;IACH,CAAC;IAEM,aAAa;QAClB,OAAO,IAAI,CAAC,UAAU,CAAC;IACzB,CAAC;IAEM,cAAc;QACnB,OAAO,IAAI,CAAC,WAAW,CAAC;IAC1B,CAAC;CACF;AAED,MAAM,qBAAsB,SAAQ,iBAAiB;IACnD,YAAY,MAAc,EAAE,UAAmB,EAAE,WAAoB;QACnE,KAAK,CAAC,MAAM,CAAC,CAAC;QACd,IAAI,UAAU,EAAE;YACd,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;SAC9B;QACD,IAAI,WAAW,EAAE;YACf,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;SAChC;aAAM;YACL,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC;SAC1B;IACH,CAAC;IAEM,aAAa;QAClB,OAAO,IAAI,CAAC,UAAU,CAAC;IACzB,CAAC;IAEM,cAAc;QACnB,OAAO,IAAI,CAAC,WAAW,CAAC;IAC1B,CAAC;CACF;;;;;;;;;;;;AC/FD,4CAGkB;AAClB,4CAA+C;AAG/C,mEAAmE;AACnE,qEAAqE;AACrE,SAAgB,aAAa,CAAC,KAAe,EAAE,OAAgB;IAC7D,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;QACxB,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,4BAAmB,CAAC,IAAI,CAAC,EAAE;YACzD,MAAM,+BAAsB,CAAC,IAAI,CAAC,CAAC;SACpC;aAAM,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;YACnC,IAAI,EAAE,KAAK,GAAG,CAAC,IAAI,OAAO,CAAC,cAAc,CAAC,EAAE;gBAC1C,MAAM,IAAI,0CAAiC,CAAC;oBAC1C,gBAAgB;oBAChB,cAAc;iBACf,CAAC,CAAC;aACJ;SACF;KACF;AACH,CAAC;AAdD,sCAcC;;;;;;;;;;;;ACvBD,4CAA8B;AAC9B,iDAAqD;AAErD,SAAgB,qBAAqB;IACnC,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,gBAAM,CAAC,GAAG,CAAC,CAAC;IAChC,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC;IAC1B,OAAO,CACL,gBAAM,CAAC,qBAAqB;QAC5B,MAAM,CAAC,OAAO,CAAC,iBAAiB,EAAE,aAAa,CAAC,CACjD,CAAC;AACJ,CAAC;AAPD,sDAOC;AAED,SAAgB,iBAAiB,CAC/B,OAAO,GAAG,oBAAU,CAAC,GAAG,CAAC,qBAAqB,CAAC;IAE/C,IAAI,OAAO,EAAE;QACX,OAAO,OAAO,CAAC,WAAW,EAAE,KAAK,MAAM,CAAC;KACzC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAPD,8CAOC;;;;;;;;;;;;ACnBD,0EAA0E;AAC1E,qBAAqB;AACR,sBAAc,GAAG,KAAK,CAAC;AAEpC,yEAAyE;AAC5D,4BAAoB,GAAG,KAAK,CAAC;AAE1C,gFAAgF;AACnE,kCAA0B,GAAG,CAAC,CAAC;AAE5C,0EAA0E;AAC7D,mCAA2B,GAAG,CAAC,CAAC;;;;;;;;;;;;ACT7C,SAAgB,oBAAoB,CAAC,SAAoB;IACvD,OAAO,SAAS,KAAK,KAAK,CAAC;AAC7B,CAAC;AAFD,oDAEC;;;;;;;;;;;;ACDD,wCAAuC;AAA9B,mHAAa;AACtB,2CAA6C;AAApC,4HAAgB;AACzB,2CAAsC;AAA7B,8GAAS;AAElB;;;;;;;GAOG;AACH,SAAgB,mBAAmB,CAAC,OAAgB;IAClD,IAAI,OAAO,CAAC,SAAS,EAAE;QACrB,OAAO,KAAK,CAAC;KACd;IACD,IAAI,OAAO,CAAC,IAAI,EAAE;QAChB,OAAO,MAAM,CAAC;KACf;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AARD,kDAQC;AAED,SAAgB,YAAY,CAAC,OAAgB;IAC3C,IAAI,OAAO,CAAC,SAAS,EAAE;QACrB,OAAO,KAAK,CAAC;KACd;IAED,IAAI,OAAO,CAAC,MAAM,EAAE;QAClB,OAAO,QAAQ,CAAC;KACjB;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AATD,oCASC;;;;;;;;;;;;ACjCD,2CAA0B;AAC1B,4CAA+B;AAC/B,2CAAgC;AAChC,6CAAiD;AAEjD,6CAA4C;AAC5C,6CAAsC;AAEtC,gDAA8E;AAC9E,6DAA0E;AAC1E,4CAImB;AASnB,2CAA0D;AAC1D,+CAA6C;AAC7C,2DAAiE;AACjE,4CAKoC;AACpC,4CAAgD;AAChD,4CAA8C;AAE9C,MAAM,SAAS,GAAG,6DAA6D,CAAC;AAEzE,KAAK,UAAU,gBAAgB,CACpC,SAAoB,EACpB,KAAe,EACf,OAAgC,EAChC,YAA4B;IAE5B,MAAM,MAAM,GAAG,mBAAS,CAAC,SAAS,CAAC,CAAC;IAEpC,sBAAY,CAAC,OAAO,CAAC,CAAC;IACtB,mCAAyB,CAAC,OAAO,CAAC,CAAC;IAEnC,MAAM,iBAAiB,GAAoC,EAAE,CAAC;IAC9D,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;QACxB,IAAI;YACF,MAAM,iBAAO,CAAC,6BAA6B,IAAI,EAAE,CAAC,CAAC;YACnD,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC;YACpB,MAAM,cAAc,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAClD,iBAAiB,CAAC,IAAI,CAAC,GAAG,cAAc,CAAC,WAAW,CAAC;YAErD,MAAM,MAAM,GAAG,MAAM,0BAAiB,CAAC,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;YAC7D,IAAI,MAAM,EAAE;gBACV,iBAAiB,CAAC,IAAI,CAAC,CAAC,OAAO,CAC7B,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC,UAAU,CAAC,MAAM,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC,CACxD,CAAC;aACH;SACF;QAAC,OAAO,KAAK,EAAE;YACd,IACE,SAAS,KAAK,QAAQ;gBACtB,KAAK,CAAC,UAAU,KAAK,GAAG;gBACxB,KAAK,CAAC,OAAO,KAAK,yBAAyB,EAC3C;gBACA,MAAM,IAAI,iCAAwB,CAAC,IAAI,CAAC,CAAC;aAC1C;YACD,IAAI,SAAS,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,KAAK,sBAAsB,EAAE;gBACtE,MAAM,IAAI,iCAAwB,CAAC,IAAI,CAAC,CAAC;aAC1C;YAED,MAAM,KAAK,CAAC;SACb;gBAAS;YACR,iBAAO,CAAC,QAAQ,EAAE,CAAC;SACpB;KACF;IACD,MAAM,CAAC,cAAc,EAAE,MAAM,CAAC,GAAG,MAAM,+BAA+B,CACpE,SAAS,EACT,iBAAiB,EACjB,OAAO,EACP,YAAY,CACb,CAAC;IACF,OAAO,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC;AAClC,CAAC;AAjDD,4CAiDC;AAED,KAAK,UAAU,+BAA+B,CAC5C,SAAoB,EACpB,iBAAkD,EAClD,OAAgB,EAChB,YAA4B;IAE5B,OAAO,6BAAoB,CAAC,SAAS,CAAC;QACpC,CAAC,CAAC,MAAM,8CAAsB,CAAC,iBAAiB,EAAE,OAAO,EAAE,YAAY,CAAC;QACxE,CAAC,CAAC,MAAM,mBAAmB,CAAC,iBAAiB,EAAE,OAAO,CAAC,CAAC;AAC5D,CAAC;AAEM,KAAK,UAAU,kCAAkC,CACtD,UAAsB,EACtB,OAAgB;IAEhB,6FAA6F;IAC7F,UAAU,CAAC,IAAI;QACb,OAAO,CAAC,cAAc,CAAC,IAAI,gBAAM,CAAC,YAAY,IAAI,UAAU,CAAC,IAAI,CAAC;IACpE,2EAA2E;IAC3E,MAAM,MAAM,GAAG,MAAM,uCAA8B,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;IACzE,IAAI,MAAM,KAAK,SAAS,EAAE;QACxB,UAAU,CAAC,MAAM,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC;KACvC;IAED,OAAO;QACL,UAAU;QACV,MAAM,EAAE,KAAK;QACb,WAAW,EAAE,OAAO,CAAC,cAAc,CAAC,IAAI,gBAAM,CAAC,YAAY,IAAI,SAAS;QACxE,IAAI,EAAE,sBAAY,CAAC,OAAO,CAAC;QAC3B,UAAU,EAAE,mCAAyB,CAAC,OAAO,CAAC;KAC/C,CAAC;AACJ,CAAC;AApBD,gFAoBC;AAED,KAAK,UAAU,mBAAmB,CAChC,KAEC,EACD,OAAgB;IAEhB,MAAM,OAAO,GAA6B,EAAE,CAAC;IAC7C,MAAM,MAAM,GAA4B,EAAE,CAAC;IAC3C,KAAK,MAAM,CAAC,IAAI,EAAE,WAAW,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;QACvD,MAAM,iBAAO,CAAC,8BAA8B,IAAI,EAAE,CAAC,CAAC;QACpD,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE;YACpC,MAAM,0BAA0B,GAAG,MAAM,kCAAkC,CACzE,UAAU,EACV,OAAO,CACR,CAAC;YAEF,MAAM,SAAS,GAAG,gBAAM,CAAC,GAAG,CAAC,CAAC,CAAC,kBAAkB,CAAC,gBAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;YAE1E,MAAM,OAAO,GAAG;gBACd,MAAM,EAAE,KAAK;gBACb,GAAG,EAAE,GAAG,gBAAM,CAAC,GAAG,uBAAuB;gBACzC,IAAI,EAAE,IAAI;gBACV,OAAO,EAAE;oBACP,SAAS,EAAE,YAAI,EAAE;oBACjB,aAAa,EAAE,yBAAa,EAAE;iBAC/B;gBACD,IAAI,EAAE,0BAA0B;gBAChC,EAAE,EAAE;oBACF,GAAG,EAAE,OAAO,CAAC,GAAG,IAAI,SAAS;iBAC9B;aACF,CAAC;YACF,IAAI;gBACF,MAAM,QAAQ,GAAG,MAAM,qBAAW,CAChC,OAAO,CACR,CAAC;gBACF,OAAO,CAAC,IAAI,CAAC;oBACX,GAAG,QAAQ;oBACX,IAAI;oBACJ,UAAU;iBACX,CAAC,CAAC;aACJ;YAAC,OAAO,KAAK,EAAE;gBACd,IAAI,KAAK,CAAC,IAAI,KAAK,GAAG,EAAE;oBACtB,MAAM,wBAAe,EAAE,CAAC;iBACzB;gBACD,IAAI,KAAK,CAAC,IAAI,IAAI,GAAG,IAAI,KAAK,CAAC,IAAI,GAAG,GAAG,EAAE;oBACzC,MAAM,IAAI,qBAAY,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;iBACnD;gBACD,MAAM,CAAC,IAAI,CAAC;oBACV,KAAK,EAAE,oCAAoC,GAAG,IAAI;oBAClD,IAAI;oBACJ,UAAU;iBACX,CAAC,CAAC;aACJ;SACF;QACD,iBAAO,CAAC,QAAQ,EAAE,CAAC;KACpB;IACD,OAAO,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;AAC3B,CAAC;AAEM,KAAK,UAAU,yBAAyB,CAC7C,OAAsC,EACtC,cAAwC,EACxC,MAA+B,EAC/B,OAAgB;IAEhB,KAAK,MAAM,aAAa,IAAI,cAAc,EAAE;QAC1C,IAAI,SAAS,GAAG,EAAE,CAAC;QACnB,IAAI,aAAa,CAAC,EAAE,EAAE;YACpB,SAAS,GAAG,gCAAmB,CAC7B,aAAa,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,EACtC,aAA8B,EAC9B,OAAO,EACP,aAAa,CAAC,WAAW,EACzB,MAAM,8CAAoB,CACxB,aAAa,CAAC,IAAI,EAClB,OAAO;YACP,uGAAuG;YACvG,+DAA+D;YAC/D,EAAmB,CACpB,CACF,CAAC;SACH;aAAM;YACL,SAAS,GAAG,qCAAwB,CAClC,aAAa,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,EACtC,aAA8B,EAC9B,OAAO,CACR,CAAC;SACH;QACD,OAAO,CAAC,IAAI,CAAC;YACX,EAAE,EAAE,IAAI;YACR,IAAI,EAAE,SAAS;YACf,IAAI,EAAE,aAAa,CAAC,IAAI;YACxB,WAAW,EAAE,aAAa,CAAC,EAAE;SAC9B,CAAC,CAAC;KACJ;IACD,KAAK,MAAM,YAAY,IAAI,MAAM,EAAE;QACjC,OAAO,CAAC,IAAI,CAAC;YACX,EAAE,EAAE,KAAK;YACT,IAAI,EAAE,IAAI,qBAAY,CAAC,GAAG,EAAE,YAAY,CAAC,KAAK,CAAC;YAC/C,IAAI,EAAE,YAAY,CAAC,IAAI;SACxB,CAAC,CAAC;KACJ;IAED,MAAM,YAAY,GAAG,OAAO;SACzB,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;QACX,IAAI,GAAG,CAAC,EAAE,EAAE;YACV,OAAO,GAAG,CAAC,IAAI,CAAC;SACjB;QAED,MAAM,YAAY,GAChB,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,IAAI,CAAC,WAAW;YAC9B,CAAC,CAAC,eAAK,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC;YACtC,CAAC,CAAC,GAAG,CAAC,IAAI;gBACV,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO;gBAClB,CAAC,CAAC,yBAAyB,CAAC;QAEhC,OAAO,CACL,eAAK,CAAC,IAAI,CAAC,KAAK,CAAC,eAAe,GAAG,GAAG,CAAC,IAAI,GAAG,SAAS,CAAC,GAAG,YAAY,CACxE,CAAC;IACJ,CAAC,CAAC;SACD,IAAI,CAAC,IAAI,GAAG,SAAS,CAAC,CAAC;IAE1B,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE;QAClC,OAAO,YAAY,CAAC;KACrB;IAED,MAAM,IAAI,KAAK,CAAC,YAAY,CAAC,CAAC;AAChC,CAAC;AApED,8DAoEC;;;;;;;;;;;;ACxPD,6CAAiD;AAEjD,SAAgB,8BAA8B,CAC5C,eAA4B,EAC5B,iBAA0B;IAE1B,IAAI,iBAAiB,EAAE;QACrB,SAAS,CAAC,GAAG,CAAC,mBAAmB,EAAE,iBAAiB,CAAC,CAAC;KACvD;IACD,KAAK,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,eAAe,EAAE;QAC5C,SAAS,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;KAC3B;AACH,CAAC;AAVD,wEAUC;;;;;;;;;;;;ACbD,6CAA6C;AAC7C,gDAAmD;AACnD,0CAA6C;AAG7C,MAAM,gBAAgB,GAElB;IACF,GAAG,EAAE,SAA4B;IACjC,gBAAgB;IAChB,MAAM,EAAE,YAAmB;IAC3B,IAAI,EAAE,iBAAU;CACjB,CAAC;AAEF,SAAgB,SAAS,CAAC,SAAoB;IAC5C,OAAO,gBAAgB,CAAC,SAAS,CAAC,CAAC;AACrC,CAAC;AAFD,8BAEC;;;;;;;;;;;;AChBD,wCAA6B;AAG7B,4CAA8C;AAKvC,KAAK,UAAU,8BAA8B,CAClD,UAAsB,EACtB,OAAgC;IAEhC,MAAM,sBAAsB,GAAG,UAAU,CAAC,QAAQ,CAAC,UAAU;QAC3D,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC,EAAE,UAAU,CAAC,QAAQ,CAAC,UAAU,CAAC;QAC5E,CAAC,CAAC,SAAS,CAAC;IACd,MAAM,aAAa,GAAG,sBAAsB;QAC1C,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,sBAAsB,CAAC,CAAC,GAAG;QACxC,CAAC,CAAC,SAAS,CAAC;IACd,MAAM,QAAQ,GAAG,OAAO,CAAC,MAAM;QAC7B,CAAC,CAAC,QAAQ;QACV,CAAC,CAAE,UAAU,CAAC,QAAQ,CAAC,IAAiC,CAAC;IAC3D,uEAAuE;IACvE,8CAA8C;IAC9C,MAAM,eAAe,GAAG,SAAS,CAAC;IAElC,MAAM,MAAM,GAAG,CAAC,MAAM,0BAAiB,CACrC,OAAO,CAAC,IAAI,EACZ,QAAQ,EACR,OAAO,EACP,eAAe,EACf,aAAa,CACd,CAAuB,CAAC,CAAC,sDAAsD;IAChF,OAAO,MAAM,CAAC;AAChB,CAAC;AAzBD,wEAyBC;AAED,SAAgB,mBAAmB,CACjC,MAAe,EACf,UAAsB,EACtB,MAAe;IAEf,IAAI,EAAC,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,MAAM,GAAE;QACnB,OAAO,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;KAC7B;IAED,MAAM,kBAAkB,GAAe,EAAE,GAAG,UAAU,EAAE,CAAC;IACzD,MAAM,cAAc,GAAY,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE;QACtD,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAClD,IAAI,CAAC,YAAY,EAAE;YACjB,OAAO,IAAI,CAAC;SACb;QAED,MAAM,gBAAgB,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,GAAG,IAAI,OAAO,CAAC,CAAC;QACxE,IAAI,CAAC,gBAAgB,EAAE;YACrB,OAAO,IAAI,CAAC;SACb;QAED,MAAM,iBAAiB,GACrB,IAAI,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,GAAG,IAAI,IAAI,EAAE,CAAC;QACvD,IAAI,CAAC,iBAAiB,EAAE;YACtB,OAAO,kBAAkB,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YACzC,OAAO,KAAK,CAAC;SACd;QAED,OAAO,IAAI,CAAC;IACd,CAAC,CAAC,CAAC;IAEH,OAAO,CAAC,cAAc,EAAE,kBAAkB,CAAC,CAAC;AAC9C,CAAC;AAhCD,kDAgCC;;;;;;;;;;;;AClED,6CAA4C;AAM5C,qDAGoC;AACpC,sDAAoE;AACpE,4CAA0D;AAC1D,4CAAwE;AAEjE,KAAK,UAAU,sBAAsB,CAC1C,KAEC,EACD,OAAgB,EAChB,YAA4B;IAE5B,MAAM,OAAO,GAA6B,EAAE,CAAC;IAC7C,MAAM,MAAM,GAA4B,EAAE,CAAC;IAE3C,KAAK,MAAM,CAAC,IAAI,EAAE,WAAW,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;QACvD,MAAM,iBAAO,CAAC,8CAA8C,IAAI,EAAE,CAAC,CAAC;QACpE,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE;YACpC,IAAI;gBACF,MAAM,GAAG,GAAG,MAAM,4CAA0B,CAAC,OAAO,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC;gBACxE,IAAI,UAAU,CAAC,SAAS,EAAE;oBACxB,iDAA8B,CAAC,UAAU,CAAC,SAAS,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC;iBACjE;gBACD,MAAM,cAAc,GAAG,4CAAmC,CAAC,UAAU,CAAC,CAAC;gBACvE,MAAM,EAAE,WAAW,EAAE,YAAY,EAAE,GAAG,GAAG,CAAC,WAAW,CAAC;gBACtD,MAAM,aAAa,GAAG,CAAC,CAAC;gBACxB,MAAM,QAAQ,GAAG,MAAM,kDAAgC,CACrD,GAAG,CAAC,KAAK,EACT,IAAI,EACJ,OAAO,EACP,YAAY,EACZ,aAAa,EACb,WAAW,EACX,cAAc,EACd,YAAY,CACb,CAAC;gBAEF,MAAM,sBAAsB,GAA2B;oBACrD,GAAG,QAAQ;oBACX,IAAI;oBACJ,UAAU;iBACX,CAAC;gBAEF,OAAO,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;aACtC;YAAC,OAAO,KAAK,EAAE;gBACd,IAAI,KAAK,CAAC,IAAI,KAAK,GAAG,EAAE;oBACtB,MAAM,wBAAe,EAAE,CAAC;iBACzB;gBAED,IAAI,KAAK,CAAC,IAAI,IAAI,GAAG,IAAI,KAAK,CAAC,IAAI,GAAG,GAAG,EAAE;oBACzC,MAAM,IAAI,qBAAY,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;iBACnD;gBACD,MAAM,CAAC,IAAI,CAAC;oBACV,KAAK,EAAE,oCAAoC,GAAG,IAAI;oBAClD,IAAI;oBACJ,UAAU;iBACX,CAAC,CAAC;aACJ;SACF;QACD,iBAAO,CAAC,QAAQ,EAAE,CAAC;KACpB;IAED,OAAO,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;AAC3B,CAAC;AA1DD,wDA0DC;;;;;;;;;;;;ACxED,6CAA4C;AAE5C,kDAGiC;AACjC,sDAAoE;AACpE,4CAA8C;AAC9C,2CAA+C;AAGxC,KAAK,UAAU,mBAAmB,CACvC,SAAoB,EACpB,KAEC,EACD,OAAgC;;IAEhC,MAAM,OAAO,GAAU,EAAE,CAAC;IAC1B,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,MAAM,cAAc,GAAG,mBAAmB,CAAC;IAE3C,KAAK,MAAM,CAAC,IAAI,EAAE,WAAW,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;QACvD,MAAM,iBAAO,CAAC,2CAA2C,IAAI,EAAE,CAAC,CAAC;QACjE,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE;YACpC,IAAI;gBACF,MAAM,GAAG,GAAG,MAAM,sCAAuB,CAAC,OAAO,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC;gBACrE,IAAI,UAAU,CAAC,SAAS,EAAE;oBACxB,iDAA8B,CAAC,UAAU,CAAC,SAAS,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC;iBACjE;gBACD,MAAM,EAAE,WAAW,EAAE,YAAY,EAAE,GAAG,GAAG,CAAC,WAAW,CAAC;gBACtD,MAAM,aAAa,GAAG,CAAC,CAAC;gBACxB,MAAM,QAAQ,GAAG,MAAM,4CAA6B,CAClD,GAAG,CAAC,KAAK,EACT,SAAS,EACT,OAAO,EACP,YAAY,EACZ,aAAa,EACb,WAAW,CACZ,CAAC;gBAEF,MAAM,MAAM,GAAG,MAAM,0BAAiB,CAAC,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;gBAC7D,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,GAAG,4BAAmB,CAC9C,QAAQ,CAAC,MAAM,EACf,QAAQ,CAAC,UAAU,EACnB,MAAM,CACP,CAAC;gBAEF,MAAM,SAAS,GAAuB,IAAI,GAAG,EAAE,CAAC;gBAChD,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;oBAC5B,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;gBAC3B,CAAC,CAAC,CAAC;gBAEH,MAAM,eAAe,GAAgB,EAAE,CAAC;gBACxC,KAAK,MAAM,aAAa,IAAI,QAAQ,CAAC,UAAU,EAAE;oBAC/C,MAAM,SAAS,GAAG,QAAQ,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;oBACrD,MAAM,aAAa,GAAG,GAAG,SAAS,CAAC,aAAa,CAAC,CAAC,OAAO,IAAI,SAAS,CAAC,aAAa,CAAC,CAAC,UAAU,EAAE,CAAC;oBACnG,SAAS,CAAC,IAAI,GAAG,CAAC,aAAa,CAAC,CAAC;oBACjC,SAAS,CAAC,IAAI,GAAG,aAAa,CAAC;oBAC/B,SAAS,CAAC,cAAc,GAAG,cAAc,CAAC;oBAC1C,eAAe,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;iBACjC;gBAED,MAAM,eAAe,iCAAG,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,YAAY,0CAAE,KAAK,0CAAE,KAAK,0CAAE,IAAI,CAChE,CAAC,SAAS,EAAE,EAAE;oBACZ,OAAO,SAAS,CAAC,MAAM,KAAK,WAAW,CAAC;gBAC1C,CAAC,2CACA,IAAI,0CAAE,MAAM,CAAC;gBAEhB,OAAO,CAAC,IAAI,CAAC;oBACX,MAAM;oBACN,UAAU;oBACV,YAAY,EAAE,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,YAAY;oBACpC,aAAa,EAAE,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,aAAa;oBACtC,qBAAqB,EAAE,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,qBAAqB;oBACtD,eAAe;oBACf,IAAI;oBACJ,eAAe;oBACf,cAAc;iBACf,CAAC,CAAC;aACJ;YAAC,OAAO,KAAK,EAAE;gBACd,MAAM,kBAAkB,GAAG,KAAK,CAAC,IAAI,IAAI,GAAG,IAAI,KAAK,CAAC,IAAI,IAAI,GAAG,CAAC;gBAClE,IAAI,kBAAkB,EAAE;oBACtB,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;oBAC3B,SAAS;iBACV;gBACD,MAAM,UAAU,GAAG,IAAI,CAAC,CAAC,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC;gBAC7C,MAAM,CAAC,IAAI,CAAC,+BAA+B,UAAU,EAAE,CAAC,CAAC;aAC1D;SACF;KACF;IACD,iBAAO,CAAC,QAAQ,EAAE,CAAC;IACnB,OAAO,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;AAC3B,CAAC;AAlFD,kDAkFC;;;;;;;;;;;;AC9FD,4CAA+B;AAC/B,2CAAgC;AAChC,6CAAiD;AAEjD,2CAA6D;AAC7D,6CAA4C;AAE5C,6CAAsC;AAEtC,4CAA0D;AAC1D,+CAA6C;AAC7C,wDAA2D;AAC3D,4CAAgD;AAEzC,KAAK,UAAU,aAAa,CACjC,SAAoB,EACpB,KAAe,EACf,OAAgC;IAEhC,MAAM,MAAM,GAAG,mBAAS,CAAC,SAAS,CAAC,CAAC;IACpC,4EAA4E;IAC5E,oEAAoE;IACpE,IAAI,MAAM,CAAC,IAAI,EAAE;QACf,MAAM,EAAE,cAAc,EAAE,GAAG,EAAE,WAAW,EAAE,QAAQ,EAAE,GAAG,MAAM,MAAM,CAAC,IAAI,CACtE,KAAK,EACL,OAAO,CACR,CAAC;QACF,OAAO,yBAAiB,CAAC,oCAAoC,CAC3D,GAAG,EACH,EAAE,EACF,QAAQ,CACT,CAAC;KACH;IACD,MAAM,iBAAiB,GAAoC,EAAE,CAAC;IAC9D,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;QACxB,MAAM,iBAAO,CAAC,4BAA4B,IAAI,EAAE,CAAC,CAAC;QAClD,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC;QACpB,MAAM,cAAc,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAClD,iBAAiB,CAAC,IAAI,CAAC,GAAG,cAAc,CAAC,WAAW,CAAC;KACtD;IACD,iBAAO,CAAC,QAAQ,EAAE,CAAC;IAEnB,MAAM,CAAC,WAAW,EAAE,MAAM,CAAC,GAAG,MAAM,4BAA4B,CAC9D,SAAS,EACT,iBAAiB,EACjB,OAAO,CACR,CAAC;IAEF,MAAM,eAAe,GAAG,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;IAC7D,IAAI,OAAO,CAAC,IAAI,EAAE;QAChB,OAAO,yBAAiB,CAAC,2BAA2B,CAAC,eAAe,CAAC,CAAC;KACvE;IACD,MAAM,YAAY,GAAiB,EAAE,CAAC;IACtC,MAAM,WAAW,GAAG,YAAY,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC,CAAC;IAE7E,MAAM,cAAc,GAAG,MAAM,MAAM,CAAC,OAAO,CACzC,WAAW,EACX,WAAW,EACX,MAAM,EACN,OAAO,CACR,CAAC;IAEF,OAAO,yBAAiB,CAAC,oCAAoC,CAC3D,cAAc,EACd,eAAe,CAChB,CAAC;AACJ,CAAC;AApDD,sCAoDC;AAEM,KAAK,UAAU,4BAA4B,CAChD,SAAoB,EACpB,iBAAkD,EAClD,OAAgC;IAEhC,OAAO,6BAAoB,CAAC,SAAS,CAAC;QACpC,CAAC,CAAC,MAAM,wCAAmB,CAAC,SAAS,EAAE,iBAAiB,EAAE,OAAO,CAAC;QAClE,CAAC,CAAC,MAAM,gBAAgB,CAAC,iBAAiB,EAAE,OAAO,CAAC,CAAC;AACzD,CAAC;AARD,oEAQC;AAED,KAAK,UAAU,gBAAgB,CAC7B,KAEC,EACD,OAAgB;IAEhB,MAAM,OAAO,GAAiB,EAAE,CAAC;IACjC,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,KAAK,MAAM,CAAC,IAAI,EAAE,WAAW,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;QACvD,MAAM,iBAAO,CAAC,2BAA2B,IAAI,EAAE,CAAC,CAAC;QACjD,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE;YACpC,MAAM,OAAO,GAAG;gBACd,MAAM,EAAE,MAAM;gBACd,GAAG,EAAE,GAAG,gBAAM,CAAC,GAAG,oBAAoB;gBACtC,IAAI,EAAE,IAAI;gBACV,OAAO,EAAE;oBACP,SAAS,EAAE,YAAI,EAAE;oBACjB,aAAa,EAAE,yBAAa,EAAE;iBAC/B;gBACD,IAAI,EAAE;oBACJ,UAAU;iBACX;gBACD,EAAE,EAAE,4BAAmB,CAAC,OAAO,CAAC;aACjC,CAAC;YACF,IAAI;gBACF,MAAM,QAAQ,GAAG,MAAM,qBAAW,CAA2B,OAAO,CAAC,CAAC;gBACtE,OAAO,CAAC,IAAI,CAAC;oBACX,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM;oBAC9B,UAAU,EAAE,QAAQ,CAAC,MAAM,CAAC,UAAU;oBACtC,YAAY,EAAE,QAAQ,CAAC,MAAM,CAAC,YAAY;iBAC3C,CAAC,CAAC;aACJ;YAAC,OAAO,KAAK,EAAE;gBACd,IAAI,KAAK,CAAC,IAAI,IAAI,GAAG,IAAI,KAAK,CAAC,IAAI,GAAG,GAAG,EAAE;oBACzC,MAAM,IAAI,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;iBAChC;gBACD,MAAM,CAAC,IAAI,CAAC,iCAAiC,GAAG,IAAI,CAAC,CAAC;aACvD;SACF;KACF;IACD,iBAAO,CAAC,QAAQ,EAAE,CAAC;IACnB,OAAO,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;AAC3B,CAAC;;;;;;;;;;;;ACvHD,SAAgB,mBAAmB,CACjC,GAAW,EACX,MAAc,EACd,QAAQ,GAAG,OAAO;IAElB,IAAI,GAAG,CAAC,MAAM,IAAI,MAAM,EAAE;QACxB,OAAO,GAAG,CAAC;KACZ;IACD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;IAC1D,OAAO,CACL,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,GAAG,QAAQ,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,GAAG,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAC7E,CAAC;AACJ,CAAC;AAZD,kDAYC;;;;;;;;;;;;ACZD,kDAA6C;AAE7C,MAAa,qBAAsB,SAAQ,0BAAW;IAIpD;QACE,KAAK,CAAC,qBAAqB,CAAC,aAAa,CAAC,CAAC;IAC7C,CAAC;;AANH,sDAOC;AANgB,mCAAa,GAC1B,0EAA0E,CAAC;;;;;;;;;;;;ACJ/E,6CAAyC;AACzC,+CAA6C;AAC7C,4CAA+B;AAC/B,4CAA0D;AAG1D,4CAA4C;AAErC,KAAK,UAAU,4BAA4B,CAChD,WAAmB,EACnB,GAAG;IAEH,MAAM,QAAQ,GAAG,MAAM,qBAAW,CAAC;QACjC,MAAM,EAAE,KAAK;QACb,OAAO,EAAE;YACP,aAAa,EAAE,yBAAa,EAAE;SAC/B;QACD,EAAE,EAAE,4BAAmB,CAAC,EAAE,GAAG,EAAE,CAAC;QAChC,GAAG,EAAE,GAAG,gBAAM,CAAC,GAAG,6BAA6B,WAAW,EAAE;QAC5D,IAAI,EAAE,IAAI;QACV,IAAI,EAAE,IAAI;KACX,CAAC,CAAC;IAEH,OAAQ,QAAgB,CAAC,IAAI,CAAC;AAChC,CAAC;AAhBD,oEAgBC;AAEM,KAAK,UAAU,cAAc,CAClC,WAAmB,EACnB,OAAgB;IAEhB,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,GAAG,MAAM,4BAA4B,CAC5D,WAAW,EACX,OAAO,CAAC,GAAG,CACZ,CAAC;IAEF,IAAI,IAAI,KAAK,GAAG,IAAI,IAAI,KAAK,GAAG,EAAE;QAChC,MAAM,wBAAe,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;KACpC;IACD,OAAO,EAAE,CAAC;AACZ,CAAC;AAbD,wCAaC;;;;;;;;;;;;ACvCD,sCAAyB;AACzB,2CAAgC;AAChC,MAAM,MAAM,GAAG,mBAAO,CAAC,KAAe,CAAC,CAAC;AACxC,MAAM,OAAO,GAAG,mBAAO,CAAC,KAAgB,CAAC,CAAC;AAC1C,4CAAwD;AACxD,+CAAqC;AACrC,MAAM,KAAK,GAAG,WAAW,CAAC,iBAAiB,CAAC,CAAC;AAE7C,kDAAkD;AAElD;;;;GAIG;AACI,KAAK,UAAU,aAAa,CAAC,IAAY;IAC9C,OAAO,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QAC3C,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE;YAC9B,IAAI,GAAG,EAAE;gBACP,MAAM,CAAC,GAAG,CAAC,CAAC;aACb;YACD,OAAO,CAAC,KAAK,CAAC,CAAC;QACjB,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC;AATD,sCASC;AAED;;;;GAIG;AACI,KAAK,UAAU,QAAQ,CAAC,IAAY;IACzC,OAAO,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QAC3C,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE;YAC3B,IAAI,GAAG,EAAE;gBACP,MAAM,CAAC,GAAG,CAAC,CAAC;aACb;YACD,OAAO,CAAC,KAAK,CAAC,CAAC;QACjB,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC;AATD,4BASC;AAOD;;;;;;;GAOG;AACI,KAAK,UAAU,IAAI,CACxB,IAAY,EACZ,SAAmB,EAAE,EACrB,SAAmB,EAAE,EACrB,UAAU,GAAG,CAAC;IAEd,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,MAAM,QAAQ,GAAa,EAAE,CAAC;IAE9B,mDAAmD;IACnD,IAAI,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE;QACjC,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,aAAa,EAAE,QAAQ,EAAE,CAAC;KAClD;IACD,wCAAwC;IACxC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE;QACpC,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;KAC7B;IACD,IAAI;QACF,IAAI,UAAU,GAAG,CAAC,EAAE;YAClB,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,aAAa,EAAE,QAAQ,EAAE,CAAC;SAClD;aAAM;YACL,UAAU,EAAE,CAAC;SACd;QACD,MAAM,SAAS,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,CAAC;QACvC,IAAI,SAAS,CAAC,WAAW,EAAE,EAAE;YAC3B,MAAM,EAAE,KAAK,EAAE,aAAa,EAAE,GAAG,MAAM,eAAe,CACpD,IAAI,EACJ,MAAM,EACN,MAAM,EACN,UAAU,CACX,CAAC;YACF,KAAK,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC;YACrB,QAAQ,CAAC,IAAI,CAAC,GAAG,aAAa,CAAC,CAAC;SACjC;aAAM,IAAI,SAAS,CAAC,MAAM,EAAE,EAAE;YAC7B,MAAM,SAAS,GAAG,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;YACzC,IAAI,SAAS,EAAE;gBACb,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;gBACtB,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;aAC1B;SACF;QACD,MAAM,gBAAgB,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;QACpE,IAAI,gBAAgB,CAAC,MAAM,EAAE;YAC3B,KAAK,CACH,gBAAgB,gBAAgB,CAAC,MAAM,IACrC,QAAQ,CAAC,MACX,WAAW,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CACzC,CAAC;SACH;QACD,OAAO,EAAE,KAAK,EAAE,yBAAyB,CAAC,KAAK,CAAC,EAAE,aAAa,EAAE,QAAQ,EAAE,CAAC;KAC7E;IAAC,OAAO,GAAG,EAAE;QACZ,MAAM,IAAI,KAAK,CAAC,gCAAgC,IAAI,OAAO,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;KAC3E;AACH,CAAC;AApDD,oBAoDC;AAED,SAAS,QAAQ,CAAC,IAAY,EAAE,SAAmB,EAAE;IACnD,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;QACrB,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QACxC,IAAI,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE;YAC7B,OAAO,IAAI,CAAC;SACb;KACF;SAAM;QACL,OAAO,IAAI,CAAC;KACb;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,KAAK,UAAU,eAAe,CAC5B,IAAY,EACZ,SAAmB,EAAE,EACrB,SAAmB,EAAE,EACrB,UAAU,GAAG,CAAC;IAEd,MAAM,KAAK,GAAG,MAAM,aAAa,CAAC,IAAI,CAAC,CAAC;IACxC,MAAM,MAAM,GAAG,KAAK;SACjB,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;SACxC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;QACZ,MAAM,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACjD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE;YAChC,KAAK,CAAC,yCAAyC,EAAE,IAAI,CAAC,CAAC;YACvD,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,aAAa,EAAE,EAAE,EAAE,CAAC;SACzC;QACD,OAAO,IAAI,CAAC,YAAY,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC;IACxD,CAAC,CAAC,CAAC;IAEL,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACxC,OAAO;QACL,KAAK,EAAE,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CACjC,EAAE,EACF,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAC1B;QACD,aAAa,EAAE,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CACzC,EAAE,EACF,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAClC;KACF,CAAC;AACJ,CAAC;AAED,SAAS,yBAAyB,CAAC,KAAe;IAChD,kDAAkD;IAClD,2BAA2B;IAC3B,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC,EAAE;QACrB,OAAO,KAAK,CAAC;KACd;IAED,MAAM,aAAa,GAAa,EAAE,CAAC;IAEnC,MAAM,UAAU,GAAG,KAAK;SACrB,MAAM,CAAC,OAAO,CAAC;SACf,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;SAC/B,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACX,IAAI,EAAE,CAAC;QACP,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;QACnB,cAAc,EAAE,yBAAyB,CAAC,CAAC,CAAC;KAC7C,CAAC,CAAC,CAAC;IACN,MAAM,MAAM,GAAG,MAAM,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;IACzC,MAAM,UAAU,GAAG,OAAO,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IAE1C,KAAK,MAAM,SAAS,IAAI,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;QAC/C,MAAM,gBAAgB,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC;QAC/C,MAAM,WAAW,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC;QAEvE,MAAM,YAAY,GAAG,OAAO,CAAC,WAAW,EAAE,gBAAgB,CAAC,CAAC;QAE5D,KAAK,MAAM,cAAc,IAAI,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE;YACtD,MAAM,sBAAsB,GAAG,YAAY,CAAC,cAAc,CAAC,CAAC;YAE5D,IAAI,sBAAsB,CAAC,MAAM,IAAI,CAAC,EAAE;gBACtC,MAAM,UAAU,GAAG,oBAAoB,CACrC,cAAc,EACd,sBAAsB,CAAC,CAAC,CAAC,CAAC,IAAI,EAC9B,aAAa,CACd,CAAC;gBACF,IAAI,UAAU,EAAE;oBACd,SAAS;iBACV;gBACD,aAAa,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;gBACnD,SAAS;aACV;YACD,MAAM,uBAAuB,GAAG,kBAAkB,CAChD,sBAAsB,EACtB,cAAc,CACf,CAAC;YACF,IAAI,uBAAuB,EAAE;gBAC3B,MAAM,UAAU,GAAG,oBAAoB,CACrC,cAAc,EACd,sBAAsB,CAAC,CAAC,CAAC,CAAC,IAAI,EAC9B,aAAa,CACd,CAAC;gBACF,IAAI,UAAU,EAAE;oBACd,SAAS;iBACV;gBACD,aAAa,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;aAC7C;SACF;KACF;IACD,OAAO,aAAa,CAAC;AACvB,CAAC;AAED,SAAS,yBAAyB,CAAC,IAAY;IAC7C,IAAI;QACF,MAAM,cAAc,GAAG,qCAA4B,CAAC,IAAI,CAAC,CAAC;QAC1D,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE;YAC5C,OAAO,MAAM,CAAC;SACf;QACD,OAAO,cAAc,CAAC;KACvB;IAAC,OAAO,KAAK,EAAE;QACd,OAAO,IAAI,CAAC;KACb;AACH,CAAC;AAED,SAAS,oBAAoB,CAC3B,cAAsB,EACtB,QAAgB,EAChB,aAAuB;IAEvB,IAAI,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,QAAQ,EAAE;QACnD,MAAM,cAAc,GAAG,aAAa;aACjC,MAAM,CACL,CAAC,UAAU,EAAE,EAAE,CACb,UAAU,CAAC,QAAQ,CAAC,cAAc,CAAC;YACnC,UAAU,CAAC,QAAQ,CAAC,kBAAkB,CAAC,CAC1C;aACA,MAAM,CAAC,CAAC,UAAU,EAAE,EAAE;YACrB,MAAM,UAAU,GAAG,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;YAC7C,MAAM,YAAY,GAAG,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;YAChE,OAAO,CAAC,YAAY,CAAC,UAAU,CAAC,KAAK,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;QACtD,CAAC,CAAC,CAAC;QACL,OAAO,CAAC,CAAC,cAAc,CAAC,MAAM,CAAC;KAChC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,kBAAkB,CACzB,KAA4C,EAC5C,WAAmB;IAEnB,QAAQ,WAAW,EAAE;QACnB,KAAK,MAAM,CAAC,CAAC;YACX,MAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CACrC,CAAC,mBAAmB,EAAE,WAAW,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CACvD,CAAC,CAAC,CAAC,CAAC;YACL,KAAK,CACH,4DAA4D,QAAQ,CAAC,IAAI,EAAE,CAC5E,CAAC;YACF,IAAI,QAAQ,EAAE;gBACZ,OAAO,QAAQ,CAAC,IAAI,CAAC;aACtB;YACD,MAAM,WAAW,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CACxC,CAAC,cAAc,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CACrC,CAAC,CAAC,CAAC,CAAC;YACL,KAAK,CACH,0DAA0D,WAAW,CAAC,IAAI,EAAE,CAC7E,CAAC;YACF,OAAO,WAAW,CAAC,IAAI,CAAC;SACzB;QACD,KAAK,UAAU,CAAC,CAAC;YACf,MAAM,eAAe,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAC5C,CAAC,cAAc,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CACrC,CAAC,CAAC,CAAC,CAAC;YACL,KAAK,CACH,0DAA0D,eAAe,CAAC,IAAI,EAAE,CACjF,CAAC;YACF,OAAO,eAAe,CAAC,IAAI,CAAC;SAC7B;QACD,KAAK,WAAW,CAAC,CAAC;YAChB,MAAM,eAAe,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAC5C,CAAC,SAAS,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAChC,CAAC,CAAC,CAAC,CAAC;YACL,KAAK,CACH,gEAAgE,eAAe,CAAC,IAAI,EAAE,CACvF,CAAC;YACF,OAAO,eAAe,CAAC,IAAI,CAAC;SAC7B;QACD,KAAK,KAAK,CAAC,CAAC;YACV,MAAM,eAAe,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAC5C,CAAC,SAAS,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAChC,CAAC,CAAC,CAAC,CAAC;YACL,KAAK,CACH,0DAA0D,eAAe,CAAC,IAAI,EAAE,CACjF,CAAC;YACF,OAAO,eAAe,CAAC,IAAI,CAAC;SAC7B;QACD,KAAK,QAAQ,CAAC,CAAC;YACb,MAAM,eAAe,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAC5C,CAAC,cAAc,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CACrC,CAAC,CAAC,CAAC,CAAC;YACL,KAAK,CACH,6DAA6D,eAAe,CAAC,IAAI,EAAE,CACpF,CAAC;YACF,OAAO,eAAe,CAAC,IAAI,CAAC;SAC7B;QACD,KAAK,QAAQ,CAAC,CAAC;YACb,MAAM,eAAe,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAC5C,CAAC,gBAAgB,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CACvC,CAAC,CAAC,CAAC,CAAC;YACL,KAAK,CACH,6DAA6D,eAAe,CAAC,IAAI,EAAE,CACpF,CAAC;YACF,OAAO,eAAe,CAAC,IAAI,CAAC;SAC7B;QACD,KAAK,KAAK,CAAC,CAAC;YACV,MAAM,eAAe,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAC5C,CAAC,SAAS,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAChC,CAAC,CAAC,CAAC,CAAC;YACL,KAAK,CACH,0DAA0D,eAAe,CAAC,IAAI,EAAE,CACjF,CAAC;YACF,OAAO,eAAe,CAAC,IAAI,CAAC;SAC7B;QACD,OAAO,CAAC,CAAC;YACP,OAAO,IAAI,CAAC;SACb;KACF;AACH,CAAC;;;;;;;;;;;;ACxUD,2CAA0B;AAM1B,SAAgB,2BAA2B,CAAC,GAAe;IACzD,IAAI,CAAC,GAAG,CAAC,MAAM,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,oBAAoB,EAAE;QACnD,OAAO,EAAE,CAAC;KACX;IACD,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC,oBAAoB,CAAC;IAC5D,MAAM,GAAG,GAAG,EAAW,CAAC;IAExB,IAAI,MAAM,EAAE;QACV,KAAK,MAAM,IAAI,IAAI,MAAM,EAAE;YACzB,GAAG,CAAC,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;SAC1D;KACF;SAAM,IAAI,OAAO,EAAE;QAClB,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;KACnB;SAAM;QACL,OAAO,EAAE,CAAC;KACX;IACD,OAAO,OAAO,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;AACjC,CAAC;AAjBD,kEAiBC;AAED,SAAS,0BAA0B,CAAC,EAClC,KAAK,EACL,IAAI,GACuB;IAC3B,IAAI,SAAS,GAAG,eAAK,CAAC;IACtB,IAAI,KAAK,IAAI,SAAS,CAAC,KAAK,CAAC,EAAE;QAC7B,SAAS,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC;KAC9B;IACD,IAAI,IAAI,EAAE;QACR,SAAS,GAAG,SAAS,CAAC,IAAI,CAAC;KAC5B;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;;;;;;;;;;;;ACrCD,MAAM,MAAM,GAAG,mBAAO,CAAC,KAAe,CAAC,CAAC;AACxC,2CAA0B;AAE1B,SAAgB,yBAAyB,CAAC,OAAO;IAC/C,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;IACpC,MAAM,aAAa,GAAG,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC;IAC1C,MAAM,UAAU,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC;IACjD,MAAM,aAAa,GAAG,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,eAAe,CAAC;IAC3E,OAAO,UAAU;QACf,CAAC,CAAC,eAAK,CAAC,IAAI,CAAC,KAAK,CACd,yBAAyB,UAAU,IAAI,aAAa,EAAE;YACpD,QAAQ,UAAU,IAAI,aAAa,eAAe,EACpD,IAAI,CACL;QACH,CAAC,CAAC,EAAE,CAAC;AACT,CAAC;AAZD,8DAYC;;;;;;;;;;;;ACfD,MAAM,MAAM,GAAG,mBAAO,CAAC,KAAe,CAAC,CAAC;AACxC,iEAA2E;AAE3E,yDAAsD;AAEtD,SAAgB,0BAA0B,CACxC,gCAAgC,EAChC,aAAa,EACb,OAA8B;IAE9B,MAAM,oBAAoB,GAAG,EAAc,CAAC;IAC5C,KAAK,MAAM,OAAO,IAAI,MAAM,CAAC,aAAa,CAAC,YAAY,CAAC,EAAE;QACxD,oBAAoB,CAAC,IAAI,CAAC,wDAAyB,CAAC,OAAO,CAAC,CAAC,CAAC;QAC9D,MAAM,YAAY,GAAG,gCAAgC,CAAC,MAAM,CAC1D,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,KAAK,OAAO,CAAC,GAAG,CAAC,IAAI,CAClD,CAAC;QACF,MAAM,qBAAqB,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CACtD,kCAAY,CAAC,IAAI,EAAE,OAAO,CAAC,CAC5B,CAAC;QACF,oBAAoB,CAAC,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;KAC/D;IACD,OAAO,oBAAoB,CAAC;AAC9B,CAAC;AAjBD,gEAiBC;;;;;;;;;;;ACtBD,wDAAqE;AAA5D,+JAA2B;AACpC,+DAA2E;AAAlE,oKAA0B;AACnC,+DAA2E;AAAlE,mKAAyB;;;;;;;;;;;;ACFlC,4CAAkD;AAElD,SAAgB,qBAAqB,CAAC,kBAA0B;IAC9D,MAAM,QAAQ,GAAG,kBAAkB,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC;IACjE,IAAI,kBAAkB,GAAG,CAAC,EAAE;QAC1B,OAAO,8BAAqB,CAC1B,mBAAmB,kBAAkB,IAAI,QAAQ,GAAG,CACrD,CAAC;KACH;IAED,OAAO,EAAE,CAAC;AACZ,CAAC;AATD,sDASC;;;;;;;;;;;;ACXD,MAAM,MAAM,GAAG,mBAAO,CAAC,KAAe,CAAC,CAAC;AACxC,2CAA0B;AAC1B,uCAA2B;AAG3B,4CAA+B;AAC/B,yDAAyD;AAEzD,SAAgB,wBAAwB,CACtC,cAAc,EACd,GAAkB,EAClB,OAAO,EACP,WAAoB;IAEpB,MAAM,iBAAiB,GAAG,WAAW;QACnC,CAAC,CAAC,GAAG,GAAG,CAAC,IAAI,KAAK,WAAW,GAAG;QAChC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC;IACb,MAAM,SAAS,GACb,eAAK,CAAC,IAAI,CAAC,KAAK,CAAC,eAAe,GAAG,iBAAiB,GAAG,SAAS,CAAC;QACjE,MAAM;QACN,CAAC,cAAc,KAAK,OAAO;YACzB,CAAC,CAAC,eAAK,CAAC,MAAM,CAAC,8CAA8C,CAAC;YAC9D,CAAC,CAAC,EAAE,CAAC,CAAC;IACV,OAAO,OAAO,CAAC,IAAI;QACjB,CAAC,CAAC,IAAI,CAAC,SAAS,CACZ,MAAM,CAAC,EAAE,EAAE,GAAG,EAAE;YACd,cAAc;SACf,CAAC,CACH;QACH,CAAC,CAAC,SAAS,CAAC;AAChB,CAAC;AAtBD,4DAsBC;AAED,SAAgB,mBAAmB,CACjC,cAAc,EACd,GAAkB,EAClB,OAAO,EACP,WAAoB,EACpB,iBAA0B;IAE1B,MAAM,SAAS,GAAG,cAAc,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;IAClD,MAAM,YAAY,GAAG,sCAAgB,CACnC,cAAc,EACd,OAAO,EACP,iBAAiB,CAClB,CAAC;IACF,MAAM,MAAM,GAAG,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,iBAAiB,CAAC;IACjE,MAAM,iBAAiB,GAAG,WAAW;QACnC,CAAC,CAAC,GAAG,GAAG,CAAC,IAAI,KAAK,WAAW,GAAG;QAChC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC;IACb,MAAM,SAAS,GACb,eAAK,CAAC,IAAI,CAAC,KAAK,CAAC,eAAe,GAAG,iBAAiB,GAAG,SAAS,CAAC;QACjE,2BAA2B;QAC3B,GAAG,CAAC,GAAG;QACP,MAAM;QACN,CAAC,YAAY,CAAC,CAAC,CAAC,GAAG,YAAY,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;QAC3C,CAAC,GAAG,CAAC,WAAW;YACd,CAAC,CAAC,sCAAsC;gBACtC,MAAM;gBACN,WAAW;gBACX,iDAAiD;YACnD,CAAC,CAAC,eAAK,CAAC,IAAI,CAAC,GAAG,CACZ,mDAAmD;gBACjD,oCAAoC;gBACpC,SAAS;gBACT,MAAM,CACT,CAAC;QACN,CAAC,GAAG,CAAC,YAAY;YACf,CAAC,CAAC,eAAK,CAAC,MAAM,CACV,2CAA2C;gBACzC,+CAA+C;gBAC/C,mBAAmB;gBACnB,SAAS;gBACT,MAAM,CACT;YACH,CAAC,CAAC,EAAE,CAAC,CAAC;IAEV,OAAO,OAAO,CAAC,IAAI;QACjB,CAAC,CAAC,IAAI,CAAC,SAAS,CACZ,MAAM,CAAC,EAAE,EAAE,GAAG,EAAE;YACd,SAAS;YACT,cAAc;SACf,CAAC,CACH;QACH,CAAC,CAAC,SAAS,CAAC;AAChB,CAAC;AApDD,kDAoDC;AAED,SAAS,cAAc,CAAC,KAAa,EAAE,GAAY;IACjD,MAAM,QAAQ,GAAG,GAAG,CAAC,KAAK,CAAC,gBAAM,CAAC,GAAG,CAAC,CAAC;IACvC,IAAI,MAAM,GAAG,EAAE,CAAC;IAChB,IAAI,GAAG,EAAE;QACP,MAAM,GAAG,OAAO,GAAG,GAAG,CAAC;KACxB;IACD,QAAQ,CAAC,QAAQ,GAAG,MAAM,GAAG,SAAS,CAAC;IACvC,MAAM,SAAS,GAAG,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IAEvC,mCAAmC;IACnC,QAAQ,CAAC,QAAQ,GAAG,MAAM,GAAG,WAAW,GAAG,KAAK,CAAC;IACjD,OAAO,SAAS,CAAC;AACnB,CAAC;;;;;;;;;;;;AClGD,wCAAkC;AAClC,2CAA0B;AAE1B,4CAIoC;AAEpC,+CAKsB;AAEtB,MAAM,kBAAkB,GAEpB;IACF,CAAC,qBAAY,CAAC,QAAQ,CAAC,EAAE;QACvB,KAAK,EAAE,eAAK,CAAC,SAAS;QACtB,IAAI,EAAE,WAAW;QACjB,IAAI,EAAE,WAAW;KAClB;IACD,CAAC,qBAAY,CAAC,OAAO,CAAC,EAAE;QACtB,KAAK,EAAE,eAAK,CAAC,MAAM;QACnB,IAAI,EAAE,uBAAuB;QAC7B,IAAI,EAAE,uBAAuB;KAC9B;IACD,CAAC,qBAAY,CAAC,aAAa,CAAC,EAAE;QAC5B,KAAK,EAAE,eAAK,CAAC,UAAU;QACvB,IAAI,EAAE,eAAe;QACrB,IAAI,EAAE,eAAe;KACtB;IACD,CAAC,qBAAY,CAAC,OAAO,CAAC,EAAE;QACtB,KAAK,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG;QACnB,IAAI,EAAE,EAAE;QACR,IAAI,EAAE,eAAe;KACtB;CACF,CAAC;AAEF,SAAgB,kBAAkB,CAAC,YAA2B;IAC5D,IAAI,CAAC,YAAY,EAAE;QACjB,OAAO,EAAE,CAAC;KACX;IACD,MAAM,aAAa,GAAG,kBAAkB,CAAC,YAAY,CAAC,CAAC;IACvD,MAAM,QAAQ,GAAG,aAAa,CAAC,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC;IACpE,MAAM,IAAI,GACR,aAAa,IAAI,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,aAAa,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;IAEvE,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC;AACnC,CAAC;AAVD,gDAUC;AAED,SAAgB,mBAAmB,CAAC,YAA2B;IAC7D,IAAI,CAAC,YAAY,EAAE;QACjB,OAAO,EAAE,CAAC;KACX;IACD,MAAM,aAAa,GAAG,kBAAkB,CAAC,YAAY,CAAC,CAAC;IACvD,OAAO,aAAa,CAAC,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;AACjD,CAAC;AAND,kDAMC;AAED,SAAgB,mBAAmB,CAAC,YAA2B;IAC7D,IAAI,CAAC,YAAY,EAAE;QACjB,OAAO,EAAE,CAAC;KACX;IACD,MAAM,aAAa,GAAG,kBAAkB,CAAC,YAAY,CAAC,CAAC;IACvD,OAAO,aAAa,CAAC,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;AACjD,CAAC;AAND,kDAMC;AAED,SAAgB,uBAAuB,CACrC,eAAiC;IAEjC,MAAM,mBAAmB,GAAG,eAAe,CAAC,MAAM,CAChD,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,YAAY,KAAK,qBAAY,CAAC,QAAQ,CAChD,CAAC,MAAM,CAAC;IAET,IAAI,mBAAmB,GAAG,CAAC,EAAE;QAC3B,MAAM,QAAQ,GACZ,mBAAmB,KAAK,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,iBAAiB,CAAC;QAClE,OAAO,sBAAsB,mBAAmB,IAAI,QAAQ,yBAAyB,CAAC;KACvF;IAED,OAAO,EAAE,CAAC;AACZ,CAAC;AAdD,0DAcC;AAED,SAAS,yBAAyB,CAChC,cAA0B,EAC1B,YAAoB;IAEpB,MAAM,WAAW,GAAG,IAAI,GAAG,EAAU,CAAC;IACtC,KAAK,MAAM,IAAI,IAAI,cAAc,EAAE;QACjC,IAAI,WAAW,CAAC,IAAI,IAAI,YAAY,EAAE;YACpC,MAAM;SACP;QACD,WAAW,CAAC,GAAG,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC,CAAC;KAC5C;IACD,OAAO,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,CAAC;AAC1C,CAAC;AAED,SAAgB,oBAAoB,CAClC,oBAAsD,EACtD,YAAoB,EACpB,QAAoE;IAEpE,MAAM,KAAK,GAAG,qBAAoB,aAApB,oBAAoB,uBAApB,oBAAoB,CAAE,KAAK,KAAI,EAAE,CAAC;IAChD,MAAM,SAAS,GAAG,qBAAoB,aAApB,oBAAoB,uBAApB,oBAAoB,CAAE,SAAS,KAAI,CAAC,CAAC;IACvD,MAAM,aAAa,GAAG,yBAAyB,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;IACrE,MAAM,UAAU,GAAG,SAAS,GAAG,aAAa,CAAC,MAAM,CAAC;IAEpD,OAAO,QAAQ,CAAC,aAAa,EAAE,UAAU,CAAC,CAAC;AAC7C,CAAC;AAXD,oDAWC;AAED,SAAgB,mBAAmB,CAAC,IAAc;IAChD,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,sCAA0B,CAAC,CAAC,IAAI,CAAC,0BAAc,CAAC,CAAC;IAC5E,MAAM,IAAI,GAAG,IAAI;SACd,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,uCAA2B,EAAE,IAAI,CAAC,MAAM,CAAC;SAC7D,IAAI,CAAC,0BAAc,CAAC,CAAC;IACxB,OAAO,GAAG,IAAI,GAAG,0BAAc,GAAG,gCAAoB,GAAG,0BAAc,GAAG,IAAI,EAAE,CAAC;AACnF,CAAC;AAND,kDAMC;;;;;;;;;;;;ACtHD,2CAA0B;AAC1B,+CAAyD;AAIzD,gDAAwD;AAExD,SAAgB,cAAc,CAC5B,GAAiC,EACjC,OAA8B;IAE9B,MAAM,WAAW,GAAG,EAAE,CAAC,CAAC,iBAAiB;IACzC,MAAM,cAAc,GAAG,GAAG,CAAC,cAAc,IAAI,OAAO,CAAC,cAAc,CAAC;IACpE,MAAM,UAAU,GAAG,GAAG,CAAC,UAAU,IAAI,GAAG,CAAC,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC;IAC3E,MAAM,UAAU,GAAG,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC;IAChD,MAAM,IAAI,GAAG,GAAG,CAAC,GAAG;QAClB,CAAC,CAAC,CAAC,eAAK,CAAC,IAAI,CAAC,8BAAkB,CAAC,gBAAgB,EAAE,WAAW,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC;QAC3E,CAAC,CAAC,EAAE,CAAC;IACP,IAAI,OAAO,CAAC,GAAG,EAAE;QACf,IAAI,CAAC,IAAI,CACP,eAAK,CAAC,IAAI,CAAC,8BAAkB,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;YACnD,qCAAwB,CAAC,cAAc,CAAC,CAC3C,CAAC;KACH;SAAM;QACL,IAAI,CAAC,IAAI,CACP,eAAK,CAAC,IAAI,CAAC,8BAAkB,CAAC,mBAAmB,EAAE,WAAW,CAAC,CAAC;YAC9D,cAAc,CACjB,CAAC;KACH;IACD,IAAI,UAAU,EAAE;QACd,IAAI,CAAC,IAAI,CACP,eAAK,CAAC,IAAI,CAAC,8BAAkB,CAAC,eAAe,EAAE,WAAW,CAAC,CAAC,GAAG,UAAU,CAC1E,CAAC;KACH;IACD,IAAI,GAAG,CAAC,WAAW,EAAE;QACnB,IAAI,CAAC,IAAI,CACP,eAAK,CAAC,IAAI,CAAC,8BAAkB,CAAC,gBAAgB,EAAE,WAAW,CAAC,CAAC;YAC3D,GAAG,CAAC,WAAW,CAClB,CAAC;KACH;IACD,IAAI,OAAO,CAAC,MAAM,EAAE;QAClB,IAAI,CAAC,IAAI,CACP,eAAK,CAAC,IAAI,CAAC,8BAAkB,CAAC,gBAAgB,EAAE,WAAW,CAAC,CAAC;YAC3D,OAAO,CAAC,IAAI,CACf,CAAC;QAEF,IAAI,GAAG,CAAC,QAAQ,EAAE;YAChB,IAAI,CAAC,IAAI,CACP,eAAK,CAAC,IAAI,CAAC,8BAAkB,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC;gBACvD,GAAG,CAAC,QAAQ,CACf,CAAC;SACH;KACF;SAAM;QACL,IAAI,CAAC,IAAI,CACP,eAAK,CAAC,IAAI,CAAC,8BAAkB,CAAC,eAAe,EAAE,WAAW,CAAC,CAAC,GAAG,UAAU,CAC1E,CAAC;QACF,IAAI,CAAC,IAAI,CACP,eAAK,CAAC,IAAI,CAAC,8BAAkB,CAAC,gBAAgB,EAAE,WAAW,CAAC,CAAC;YAC3D,OAAO,CAAC,IAAI,CACf,CAAC;KACH;IACD,IAAI,GAAG,CAAC,WAAW,KAAK,WAAW,EAAE;QACnC,MAAM,SAAS,GAAe,GAAiB,CAAC;QAChD,IAAI,SAAS,CAAC,MAAM,IAAI,SAAS,CAAC,MAAM,CAAC,SAAS,EAAE;YAClD,IAAI,CAAC,IAAI,CACP,eAAK,CAAC,IAAI,CAAC,8BAAkB,CAAC,cAAc,EAAE,WAAW,CAAC,CAAC;gBACzD,SAAS,CAAC,MAAM,CAAC,SAAS,CAC7B,CAAC;SACH;QAED,IAAI,SAAS,CAAC,gBAAgB,EAAE;YAC9B,IAAI,CAAC,IAAI,CACP,eAAK,CAAC,IAAI,CAAC,8BAAkB,CAAC,qBAAqB,EAAE,WAAW,CAAC,CAAC;gBAChE,eAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CACvB,CAAC;YACF,IACE,SAAS,CAAC,cAAc;gBACxB,SAAS,CAAC,cAAc,CAAC,0BAA0B,EACnD;gBACA,IAAI,CAAC,IAAI,CACP,eAAK,CAAC,IAAI,CACR,8BAAkB,CAAC,6BAA6B,EAAE,WAAW,CAAC,CAC/D,GAAG,eAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CACrB,CAAC;aACH;SACF;QACD,IAAI,SAAS,CAAC,cAAc,EAAE;YAC5B,IAAI,CAAC,IAAI,CACP,eAAK,CAAC,IAAI,CAAC,8BAAkB,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC;gBACvD,eAAK,CAAC,KAAK,CAAC,SAAS,CAAC,CACzB,CAAC;SACH;KACF;IAED,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACzB,CAAC;AAxFD,wCAwFC;;;;;;;;;;;;AC7FD,SAAgB,0BAA0B,CACxC,iBAAiB,EACjB,OAA8B;IAE9B,MAAM,WAAW,GAAG,iBAAiB,CAAC,MAAM,CAAC;IAC7C,IAAI,WAAW,EAAE;QACf,IAAI,OAAO,CAAC,aAAa,EAAE;YACzB,OAAO,KAAK,WAAW,cACrB,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,kBAC3B,GAAG,CAAC;SACL;QACD,OAAO,KAAK,WAAW,cAAc,CAAC;KACvC;IAED,IAAI,OAAO,CAAC,aAAa,EAAE;QACzB,OAAO,mCAAmC,CAAC;KAC5C;IAED,OAAO,yBAAyB,CAAC;AACnC,CAAC;AAnBD,gEAmBC;;;;;;;;;;;;ACrBD,4CAA2D;AAE3D,SAAgB,gBAAgB,CAAC,QAA2B;IAC1D,OAAO,mBAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,KAAK,QAAQ,CAAE,CAAC,KAAK,CAAC;AACnE,CAAC;AAFD,4CAEC;;;;;;;;;;;ACJD,qCAMc;AALZ,uIAAwB;AACxB,qIAAuB;AACvB,2HAAkB;AAClB,iIAAqB;AACrB,+IAA4B;AAG9B,sCAgBc;AAfZ,+HAAoB;AACpB,iIAAqB;AACrB,iIAAqB;AACrB,2HAAkB;AAClB,+GAAY;AACZ,mHAAc;AACd,iIAAqB;AACrB,2HAAkB;AAClB,uIAAwB;AACxB,iIAAqB;AACrB,uIAAwB;AACxB,yHAAiB;AAEjB,yIAAyB;AACzB,mHAAc;;;;;;;;;;;;ACvBhB,2CAA0B;AAC1B,2CAAsC;AACtC,yCAA+B;AAC/B,2CAAgC;AAChC,yCAAoC;AACpC,8CAAgD;AAChD,6CAA8C;AAM9C,qEAAkE;AAClE,yDAA0D;AAE1D,4CAAuE;AAEvE,4CAAuD;AACvD,wDAA4D;AAC5D,iDAAmD;AACnD,6CAA8C;AAC9C,4CAAqC;AACrC,yCAAqD;AACrD,MAAM,KAAK,GAAG,KAAK,CAAC,YAAY,CAAC,CAAC;AAElC,SAAS,cAAc,CACrB,KAAwB,EACxB,KAAc,EACd,IAAc;IAEd,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;IACvC,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,eAAK,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IAErE,IAAI,YAAY,GAAG,EAAE,CAAC;IACtB,IAAI,IAAI,EAAE;QACR,kEAAkE;QAClE,MAAM,OAAO,GAAG,2CAAS,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;QACnC,YAAY,GAAG,uBAAuB,OAAO,EAAE,CAAC;KACjD;IAED,OAAO,CACL,4BAAmB,CACjB,KAAK,CAAC,QAAQ,EACd,KAAK,YAAI,CAAC,KAAK,IAAI,eAAK,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,QAAQ,KAAK,mCAAa,CACrE,KAAK,CAAC,QAAQ,CACf,YAAY,CACd;QACD,KAAK,KAAK,CAAC,EAAE,GAAG;QAChB,IAAI;QACJ,YAAY;QACZ,IAAI,CACL,CAAC;AACJ,CAAC;AAED,SAAgB,qBAAqB,CACnC,OAAwB,EACxB,cAAsB,EACtB,IAAY,EACZ,MAAc;IAEd,MAAM,eAAe,GAAG;QACtB,eAAK,CAAC,IAAI,CAAC,KAAK,CAAC,kCAAkC,CAAC;KACrD,CAAC;IAEF,MAAM,MAAM,GAAG,KAAK,CAAC;IAErB,MAAM,MAAM,GAAwB,OAAO,CAAC,MAAM,CAAC,kBAAkB,CAAC;IACtE,KAAK,CAAC,wBAAwB,MAAM,CAAC,MAAM,SAAS,CAAC,CAAC;IAEtD,MAAM;SACH,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,qCAAgB,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,qCAAgB,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;SAC3E,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;QACjB,eAAe,CAAC,IAAI,CAClB,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,eAAe,CAAC,CACrD,CAAC;IACJ,CAAC,CAAC,CAAC;IAEL,MAAM,gBAAgB,GAAa,EAAE,CAAC;IACtC,KAAK,CAAC,wBAAwB,eAAe,CAAC,MAAM,cAAc,CAAC,CAAC;IACpE,IAAI,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE;QAC9B,gBAAgB,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;KACnD;IAED,IAAI,IAAI,GAAG,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,MAAM,GAAG,IAAI,CAAC;IAEzD,MAAM,aAAa,GAAG,SAAS,MAAM,CAAC,MAAM,SAAS,CAAC;IACtD,MAAM,OAAO,GAAG,cAAc,GAAG,IAAI,GAAG,eAAK,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IAEtE,IAAI,GAAG,IAAI,GAAG,MAAM,GAAG,OAAO,CAAC;IAE/B,OAAO,MAAM,GAAG,IAAI,CAAC;AACvB,CAAC;AArCD,sDAqCC;AAED,SAAgB,4BAA4B,CAC1C,aAAiC;IAEjC,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;IAC1D,OAAO;;;;UAIC,QAAQ;;EAEhB,aAAa,CAAC,aAAa,EAAE,CAAC;AAChC,CAAC;AAXD,oEAWC;AAED,SAAgB,wBAAwB,CAAC,IAAwB;IAC/D,QAAQ,IAAI,EAAE;QACZ,KAAK,WAAW,CAAC,CAAC;YAChB,OAAO,YAAY,CAAC;SACrB;QACD,KAAK,YAAY,CAAC,CAAC;YACjB,OAAO,MAAM,CAAC;SACf;QACD,KAAK,iBAAiB,CAAC,CAAC;YACtB,OAAO,WAAW,CAAC;SACpB;QACD,KAAK,sBAAsB,CAAC,CAAC;YAC3B,OAAO,gBAAgB,CAAC;SACzB;QACD,KAAK,WAAW,CAAC,CAAC;YAChB,OAAO,KAAK,CAAC;SACd;QACD,OAAO,CAAC,CAAC;YACP,OAAO,wBAAwB,CAAC;SACjC;KACF;AACH,CAAC;AArBD,4DAqBC;AAID,8CAA8C;AAC9C,MAAM,gBAAgB,GAAG,aAAa,CAAC;AAEvC,SAAgB,uBAAuB,CACrC,gBAAmC;IAEnC,wFAAwF;IACxF,mCAAmC;IACnC,MAAM,QAAQ,GAAG,sBAAa,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QACtD,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,gBAAgB,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QAChD,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACzB,IAAI,QAAgB,CAAC;IACrB,IAAI;QACF,QAAQ,GAAG,uBAAiB,EAAE,GAAG,GAAG,CAAC;KACtC;IAAC,MAAM;QACN,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC,2FAA2F;KACpI;IACD,MAAM,MAAM,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC,OAAuB,EAAE,GAAG,EAAE,EAAE;QACtE,IAAI,GAAG,CAAC,MAAM,EAAE;YACd,+DAA+D;YAC/D,wDAAwD;YACxD,MAAM,UAAU,GAAG,yBAAyB,CAC1C,QAAQ,EACR,QAAQ,EACR,GAAG,CAAC,UAAU,CACf,CAAC;YACF,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;gBAC3D,KAAK;gBACL,UAAU;aACX,CAAC,CAAC,CAAC;YACJ,OAAO,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,CAAC;SACzB;QACD,OAAO,OAAO,CAAC;IACjB,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,MAAM,IAAI,GAAe;QACvB,MAAM,EAAE;YACN,IAAI,EAAE,UAAU;YAChB,QAAQ,EAAE,6BAA6B;YACvC,OAAO,EAAE,oBAAU,EAAE;YACrB,cAAc,EACZ,2DAA2D;YAC7D,KAAK,EAAE,0BAA0B,CAAC,MAAM,CAAC;SAC1C;KACF,CAAC;IACF,OAAO;QACL,OAAO,EACL,gGAAgG;QAClG,OAAO,EAAE,OAAO;QAChB,IAAI,EAAE;YACJ;gBACE,sFAAsF;gBACtF,kBAAkB,EAAE;oBAClB,CAAC,gBAAgB,CAAC,EAAE;wBAClB,GAAG,EAAE,mBAAa,CAAC,QAAQ,CAAC,CAAC,IAAI;wBACjC,WAAW,EAAE;4BACX,IAAI,EAAE,2CAA2C;yBAClD;qBACF;iBACF;gBAED,IAAI;gBACJ,iBAAiB,EAAE;oBACjB,EAAE,EAAE,UAAU;iBACf;gBACD,OAAO,EAAE,gCAAgC,CAAC,MAAM,CAAC;aAClD;SACF;KACF,CAAC;AACJ,CAAC;AAlED,0DAkEC;AAED,SAAgB,0BAA0B,CACxC,OAAuB;IAEvB,MAAM,IAAI,GAA8C,EAAE,CAAC;IAE3D,OAAO,CAAC,OAAO,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE;QAC5B,IAAI,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE;YAClB,OAAO;SACR;QACD,wEAAwE;QACxE,MAAM,mBAAmB,GAAG,KAAK,CAAC,OAAO;YACvC,CAAC,CAAC,GAAG,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,eAAe,KAAK,CAAC,OAAO,EAAE;YAC7D,CAAC,CAAC,GAAG,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC;QAC7C,MAAM,SAAS,GAAG,KAAK,CAAC,cAAc,CAAC,KAAK;YAC1C,CAAC,CAAC,qBAAqB,KAAK,CAAC,cAAc,CAAC,KAAK,MAAM;YACvD,CAAC,CAAC,EAAE,CAAC;QACP,MAAM,aAAa,GAAG,KAAK,CAAC,cAAc,CAAC,KAAK;YAC9C,CAAC,CAAC,yBAAyB,KAAK,CAAC,cAAc,CAAC,KAAK,MAAM;YAC3D,CAAC,CAAC,EAAE,CAAC;QACP,MAAM,UAAU,GAAG,KAAK,CAAC,cAAc,CAAC,MAAM;YAC5C,CAAC,CAAC,gCAAgC,KAAK,CAAC,cAAc,CAAC,MAAM,MAAM;YACnE,CAAC,CAAC,EAAE,CAAC;QACP,MAAM,cAAc,GAAG,KAAK,CAAC,cAAc,CAAC,MAAM;YAChD,CAAC,CAAC,oCAAoC,KAAK,CAAC,cAAc,CAAC,MAAM,MAAM;YACvE,CAAC,CAAC,EAAE,CAAC;QACP,MAAM,WAAW,GAAG,KAAK,CAAC,cAAc,CAAC,OAAO;YAC9C,CAAC,CAAC,iCAAiC,KAAK,CAAC,cAAc,CAAC,OAAO,EAAE;YACjE,CAAC,CAAC,EAAE,CAAC;QACP,MAAM,eAAe,GAAG,KAAK,CAAC,cAAc,CAAC,OAAO;YAClD,CAAC,CAAC,qCAAqC,KAAK,CAAC,cAAc,CAAC,OAAO,EAAE;YACrE,CAAC,CAAC,EAAE,CAAC;QACP,MAAM,IAAI,GAAG,CAAC,UAAU,CAAC,CAAC;QAC1B,IAAI,KAAK,CAAC,OAAO,EAAE;YACjB,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;SAC1B;QACD,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG;YACf,EAAE,EAAE,KAAK,CAAC,EAAE;YACZ,IAAI,EAAE,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC;YAC1D,gBAAgB,EAAE;gBAChB,IAAI,EAAE,GAAG,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,eAAe,KAAK,CAAC,KAAK,EAAE;aAChE;YACD,eAAe,EAAE;gBACf,IAAI,EAAE,mBAAmB;aAC1B;YACD,IAAI,EAAE;gBACJ,IAAI,EAAE,GAAG,SAAS,GAAG,UAAU,GAAG,WAAW,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC;gBACpE,QAAQ,EAAE,GAAG,aAAa,GAAG,cAAc,GAAG,eAAe,EAAE,CAAC,OAAO,CACrE,OAAO,EACP,EAAE,CACH;aACF;YACD,oBAAoB,EAAE;gBACpB,KAAK,EAAE,4BAAa,CAAC,KAAK,CAAC,QAAQ,CAAC;aACrC;YACD,UAAU,EAAE;gBACV,IAAI;gBACJ,OAAO,EAAE;oBACP,QAAQ,EAAE,KAAK,CAAC,QAAQ;iBACzB;aACF;YACD,OAAO,EAAE,KAAK,CAAC,aAAa;SAC7B,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,OAAO,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AAC7B,CAAC;AAjED,gEAiEC;AAED,SAAgB,gCAAgC,CAC9C,MAAsB;IAEtB,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,UAAU,EAAE,KAAK,EAAE,EAAE,EAAE;QAC1C,MAAM,aAAa,GAAG,KAAK,CAAC,UAAU,IAAI,KAAK,CAAC,UAAU,IAAI,CAAC,CAAC;QAChE,wEAAwE;QACxE,MAAM,aAAa,GAAG,KAAK,CAAC,OAAO;YACjC,CAAC,CAAC,kBAAkB,KAAK,CAAC,OAAO,EAAE;YACnC,CAAC,CAAC,EAAE,CAAC;QACP,OAAO;YACL,MAAM,EAAE,KAAK,CAAC,EAAE;YAChB,OAAO,EAAE;gBACP,IAAI,EAAE,kCAAkC,KAAK,CAAC,QAAQ,6BAA6B,aAAa,EAAE;aACnG;YACD,SAAS,EAAE;gBACT;oBACE,gBAAgB,EAAE;wBAChB,gBAAgB,EAAE;4BAChB,GAAG,EAAE,UAAU;4BACf,SAAS,EAAE,gBAAgB;yBAC5B;wBACD,qEAAqE;wBACrE,4FAA4F;wBAC5F,GAAG,CAAC,aAAa,IAAI;4BACnB,MAAM,EAAE;gCACN,SAAS,EAAE,KAAK,CAAC,UAAU;6BAC5B;yBACF,CAAC;qBACH;iBACF;aACF;SACF,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC;AAjCD,4EAiCC;AAED,SAAS,yBAAyB,CAChC,QAAgB,EAChB,QAAgB,EAChB,QAAgB;IAEhB,MAAM,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IACzE,OAAO,QAAQ,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;AACxC,CAAC;AAED,SAAgB,kBAAkB,CAAC,aAA4B;IAC7D,IAAI,WAAW,GAAW,aAAa,CAAC,WAAW,CAAC;IACpD,IAAI,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,YAAY,EAAE;QAC/B,sDAAsD;QACtD,WAAW,GAAG,aAAa,CAAC,YAAY,CAAC,OAAO,CAC9C,oCAAoC,EACpC,IAAI,CACL,CAAC;KACH;IACD,OAAO,uCAAuC,gBAAM,CAAC,IAAI,QAAQ,aAAa,CAAC,OAAO,4BAA4B,WAAW,EAAE,CAAC;AAClI,CAAC;AAVD,gDAUC;;;;;;;;;;;ACnUD,wCAAmE;AAA1D,mIAAqB;AAAE,6HAAkB;AAClD,uCAA0C;AAAjC,0HAAiB;;;;;;;;;;;;ACD1B,wCAAyB;AAGzB,2CAAkD;AAGlD,SAAgB,qBAAqB,CAAC,YAA8B;IAClE,MAAM,iBAAiB,GAAa,EAAE,CAAC;IAEvC,MAAM,WAAW,GAAG,cAAM,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;IAClD,iBAAiB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAEpC,MAAM,sBAAsB,GAAG,kBAAkB,CAAC,YAAY,CAAC,CAAC;IAChE,iBAAiB,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;IAE/C,OAAO,iBAAiB,CAAC,IAAI,CAAC,QAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/C,CAAC;AAVD,sDAUC;AAMD,SAAS,gCAAgC,CACvC,YAA8B;IAE9B,OAAO,YAAY,CAAC,MAAM,CAAC,CAAC,eAAe,EAAE,OAAO,EAAE,EAAE;QACtD,MAAM,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC;QACrC,IAAI,MAAM,EAAE;YACV,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,EAAE;gBAC5B,eAAe,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC;aAC9B;YAED,eAAe,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;SACvC;QAED,OAAO,eAAe,CAAC;IACzB,CAAC,EAAE,EAAE,CAAC,CAAC;AACT,CAAC;AAED,SAAgB,kBAAkB,CAAC,YAA8B;IAC/D,MAAM,oBAAoB,GAAG,gCAAgC,CAAC,YAAY,CAAC,CAAC;IAC5E,OAAO,MAAM,CAAC,OAAO,CAAC,oBAAoB,CAAC;SACxC,GAAG,CAAC,CAAC,CAAC,aAAa,EAAE,YAAY,CAAC,EAAE,EAAE,CACrC,aAAa,CAAC,aAAa,EAAE,YAAY,CAAC,CAC3C;SACA,IAAI,CAAC,QAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AACzB,CAAC;AAPD,gDAOC;AAED,SAAS,aAAa,CACpB,aAAqB,EACrB,YAAkC;IAElC,MAAM,UAAU,GAAG,sBAAc,GAAG,QAAQ,CAAC;IAC7C,MAAM,eAAe,GAAG,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;IAEtD,OAAO,CACL,sBAAc;QACd,cAAM,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC;QAClC,QAAG;QACH,UAAU;QACV,YAAY;aACT,GAAG,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC,WAAW,CAAC,QAAQ,CAAC;aAC1C,IAAI,CAAC,QAAG,GAAG,eAAe,CAAC,CAC/B,CAAC;AACJ,CAAC;;;;;;;;;;;;AChED,wCAAyB;AACzB,4CAAyE;AACzE,2CAAkC;AAErB,yBAAiB,GAAG,cAAM,CAAC,IAAI,CAAC,IAAI,CAC/C,qBAAY,GAAG,QAAG,GAAG,8BAAqB,CAC3C,CAAC;;;;;;;;;;;;ACHF,4CAAqD;AAcrD,SAAgB,cAAc,CAAC,EAC7B,mBAAmB,EACnB,aAAa,EAAE,WAAW,EAC1B,YAAY,GACS;IACrB,MAAM,iBAAiB,GAAG,0BAA0B,CAAC,mBAAmB,CAAC,CAAC;IAE1E,OAAO;QACL,iBAAiB;QACjB,QAAQ,EAAE,WAAW;QACrB,MAAM,EAAE,gBAAgB,CAAC,iBAAiB,EAAE;YAC1C,mBAAmB;YACnB,YAAY;SACb,CAAC;KACH,CAAC;AACJ,CAAC;AAfD,wCAeC;AAED,SAAS,gBAAgB,CACvB,iBAAmD,EACnD,EACE,mBAAmB,EACnB,YAAY,GACuD;IAErE,MAAM,eAAe,GAAG,mBAAmB,CAAC,MAAM,CAChD,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,kBAAkB,CAAC,MAAM,CACpD,CAAC,MAAM,CAAC;IAET,MAAM,kBAAkB,GAAG,mBAAmB,CAAC,MAAM,GAAG,eAAe,CAAC;IAExE,IAAI,WAAW,GAAG,CAAC,CAAC;IAEpB,MAAM,qBAAqB,GAAG,EAAmC,CAAC;IAClE,MAAM,CAAC,MAAM,CAAC,iBAAQ,CAAC,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE;;QAC3C,qBAAqB,CAAC,QAAQ,CAAC,GAAG,wBAAiB,CAAC,QAAQ,CAAC,0CAAE,MAAM,KAAI,CAAC,CAAC;QAC3E,WAAW,IAAI,qBAAqB,CAAC,QAAQ,CAAC,CAAC;IACjD,CAAC,CAAC,CAAC;IAEH,OAAO;QACL,OAAO,EAAE,YAAY;QACrB,eAAe;QACf,kBAAkB;QAClB,gBAAgB,EAAE,qBAAqB;QACvC,MAAM,EAAE,WAAW;KACpB,CAAC;AACJ,CAAC;AAED,SAAS,0BAA0B,CACjC,mBAAsC;IAEtC,MAAM,mBAAmB,GAAqC,EAAE,CAAC;IAEjE,mBAAmB,CAAC,OAAO,CAAC,CAAC,kBAAkB,EAAE,EAAE;QACjD,kBAAkB,CAAC,MAAM,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;YAC7D,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE;gBACxC,mBAAmB,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC;aAC1C;YAED,mBAAmB,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC;gBACvC,KAAK;gBACL,UAAU,EAAE,kBAAkB,CAAC,UAAU;gBACzC,WAAW,EAAE,kBAAkB,CAAC,MAAM,CAAC,WAAW;aACnD,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,OAAO,mBAAmB,CAAC;AAC7B,CAAC;AAED,SAAgB,yBAAyB,CACvC,qBAA0C,EAC1C,WAAmB,EACnB,OAAe;IAEf,MAAM,iBAAiB,GAAG,oCAAoC,CAC5D,qBAAqB,CACtB,CAAC;IAEF,IAAI,WAAW,GAAG,CAAC,CAAC;IAEpB,MAAM,qBAAqB,GAAG,EAAmC,CAAC;IAClE,MAAM,CAAC,MAAM,CAAC,iBAAQ,CAAC,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE;;QAC3C,qBAAqB,CAAC,QAAQ,CAAC,GAAG,wBAAiB,CAAC,QAAQ,CAAC,0CAAE,MAAM,KAAI,CAAC,CAAC;QAC3E,WAAW,IAAI,qBAAqB,CAAC,QAAQ,CAAC,CAAC;IACjD,CAAC,CAAC,CAAC;IAEH,MAAM,aAAa,GAAG,UAAU,CAAC,qBAAqB,CAAC,CAAC;IACxD,MAAM,oBAAoB,GAAG,oBAAoB,CAAC,qBAAqB,CAAC,CAAC;IACzE,MAAM,uBAAuB,GAAG,aAAa,GAAG,oBAAoB,CAAC;IAErE,OAAO;QACL,iBAAiB;QACjB,QAAQ,EAAE,EAAE,WAAW,EAAE,OAAO,EAAE;QAClC,MAAM,EAAE;YACN,OAAO,EAAE,CAAC;YACV,eAAe,EAAE,oBAAoB;YACrC,kBAAkB,EAAE,uBAAuB;YAC3C,MAAM,EAAE,WAAW;YACnB,gBAAgB,EAAE,qBAAqB;SACxC;KACF,CAAC;AACJ,CAAC;AAhCD,8DAgCC;AAED,SAAS,oBAAoB,CAAC,OAAiB;IAC7C,IAAI,OAAO,IAAI,OAAO,CAAC,eAAe,EAAE;QACtC,MAAM,KAAK,GAAG,IAAI,GAAG,EAAU,CAAC;QAEhC,KAAK,MAAM,aAAa,IAAI,OAAO,CAAC,eAAe,EAAE;YACnD,IAAI,aAAa,CAAC,QAAQ,CAAC,IAAI,EAAE;gBAC/B,KAAK,CAAC,GAAG,CAAC,aAAa,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;aACxC;SACF;QAED,OAAO,KAAK,CAAC,IAAI,CAAC;KACnB;IAED,OAAO,CAAC,CAAC;AACX,CAAC;AAED,SAAS,UAAU,CAAC,OAAiB;IACnC,IAAI,OAAO,KAAI,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,SAAS,GAAE;QACjC,MAAM,KAAK,GAAG,IAAI,GAAG,EAAU,CAAC;QAEhC,KAAK,MAAM,QAAQ,IAAI,OAAO,CAAC,SAAS,EAAE;YACxC,IAAI,QAAQ,CAAC,IAAI,EAAE;gBACjB,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;aAC1B;SACF;QAED,OAAO,KAAK,CAAC,IAAI,CAAC;KACnB;IAED,OAAO,CAAC,CAAC;AACX,CAAC;AAED,SAAS,oCAAoC,CAC3C,qBAA0C;IAE1C,MAAM,iBAAiB,GAAG,EAAsC,CAAC;IAEjE,IAAI,qBAAqB,aAArB,qBAAqB,uBAArB,qBAAqB,CAAE,eAAe,EAAE;QAC1C,qBAAqB,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,aAAa,EAAE,EAAE;YAC9D,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC,QAAQ,CAAC,EAAE;gBAC9C,iBAAiB,CAAC,aAAa,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC;aAChD;YAED,iBAAiB,CAAC,aAAa,CAAC,QAAQ,CAAE,CAAC,IAAI,CAAC;gBAC9C,KAAK,EAAE,kCAAkC,CAAC,aAAa,CAAC;gBACxD,UAAU,EAAE,aAAa,CAAC,QAAQ,CAAC,IAAI;gBACvC,WAAW,EAAE,aAAa,CAAC,QAAQ,CAAC,IAAI;aACzC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;KACJ;IAED,OAAO,iBAAiB,CAAC;AAC3B,CAAC;AAED,SAAS,kCAAkC,CACzC,aAA4B;IAE5B,OAAO;QACL,EAAE,EAAE,aAAa,CAAC,IAAI,CAAC,EAAE;QACzB,QAAQ,EAAE,aAAa,CAAC,IAAI,CAAC,EAAE;QAC/B,QAAQ,EAAE,aAAa,CAAC,QAAQ;QAChC,KAAK,EAAE,aAAa,CAAC,IAAI,CAAC,KAAK;QAC/B,SAAS,EAAE,aAAa,CAAC,OAAO;QAChC,UAAU,EAAE,aAAa,CAAC,QAAQ,CAAC,IAAI;QACvC,eAAe,EAAE,qBAAqB,CAAC,aAAa,CAAC;QACrD,OAAO,EAAE,EAAE;QACX,cAAc,EAAE;YACd,KAAK,EAAE,EAAE;YACT,MAAM,EAAE,EAAE;YACV,OAAO,EAAE,EAAE;SACZ;QACD,KAAK,EAAE,EAAE;QACT,MAAM,EAAE,EAAE;QACV,OAAO,EAAE,EAAE;QACX,GAAG,EAAE,EAAE;QACP,UAAU,EAAE,EAAE;KACf,CAAC;AACJ,CAAC;AAED,SAAS,qBAAqB,CAAC,aAA4B;IACzD,MAAM,eAAe,GAAG,aAAa,CAAC,QAAQ,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAE7D,IAAI,aAAa,CAAC,QAAQ,CAAC,IAAI,EAAE;QAC/B,eAAe,CAAC,IAAI,CAAC,GAAG,aAAa,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;KACtD;IAED,OAAO,eAAe,CAAC;AACzB,CAAC;;;;;;;;;;;AC/MD,+CAAsD;AAA7C,0IAAqB;AAC9B,gDAAsD;AAA7C,yIAAoB;AAC7B,iDAOyB;AANvB,0HAAY;AACZ,8HAAc;AACd,4IAAqB;AACrB,4IAAqB;AACrB,sIAAkB;AAClB,kJAAwB;AAE1B,gDAIyB;AAHvB,kJAAwB;AACxB,gIAAe;AACf,sJAA0B;AAE5B,4CAIoB;AAHlB,uIAAqB;AACrB,iIAAkB;AAClB,+HAAiB;AAGnB,8CAAyE;AAAhE,iJAAyB;AAAE,2HAAc;;;;;;;;;;;;ACrBlD,wCAAyB;AACzB,8CAAgD;AAChD,2CAA0C;AAC1C,yCAA+B;AAE/B,2CAAkD;AAClD,2CAAsC;AACtC,4CAAwD;AAOxD,SAAgB,qBAAqB,CACnC,iBAAmD,EACnD,OAAiB;IAEjB,MAAM,WAAW,GAAG,cAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IAE3C,IAAI,OAAO,CAAC,iBAAiB,CAAC,EAAE;QAC9B,OAAO,CACL,WAAW;YACX,QAAG;YACH,sBAAc;YACd,cAAM,CAAC,OAAO,CAAC,IAAI,CAAC,iCAAiC,CAAC,CACvD,CAAC;KACH;IAED,MAAM,sBAAsB,GAAG,MAAM,CAAC,MAAM,CAAC,iBAAQ,CAAC;SACnD,MAAM,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC;SACnD,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE;QAChB,MAAM,eAAe,GACnB,iBAAiB,CAAC,QAAQ,CAAC,CAAC;QAE9B,MAAM,WAAW,GAAG,cAAM,CAAC,KAAK,CAC9B,GAAG,UAAU,CAAC,QAAQ,CAAC,qBAAqB,eAAe,CAAC,MAAM,EAAE,CACrE,CAAC;QAEF,MAAM,YAAY,GAAG,eAAe;aACjC,IAAI,CACH,CAAC,eAAe,EAAE,eAAe,EAAE,EAAE,CACnC,eAAe,CAAC,UAAU,CAAC,aAAa,CACtC,eAAe,CAAC,UAAU,CAC3B;YACD,eAAe,CAAC,KAAK,CAAC,EAAE,CAAC,aAAa,CAAC,eAAe,CAAC,KAAK,CAAC,EAAE,CAAC,CACnE;aACA,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,mBAAW,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;aAC7C,IAAI,CAAC,QAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;QAEvB,KAAK,CACH,wBAAwB,QAAQ,aAAa,eAAe,CAAC,MAAM,SAAS,CAC7E,CAAC;QAEF,OAAO,WAAW,GAAG,QAAG,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC;IACpD,CAAC,CAAC;SACD,IAAI,CAAC,QAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;IAEvB,OAAO,WAAW,GAAG,QAAG,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,sBAAsB,CAAC;AAC9D,CAAC;AA7CD,sDA6CC;;;;;;;;;;;;AC3DD,8CAAgD;AAChD,2CAA0B;AAC1B,wCAAyB;AACzB,+CAAgE;AAChE,qEAAqE;AACrE,2CAAkD;AAKlD,SAAgB,WAAW,CACzB,MAA6B,EAC7B,OAAiB;IAEjB,MAAM,WAAW,GAAG,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAE9C,MAAM,gBAAgB,GAAG,gBAAgB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC3D,OAAO,CACL,sBAAc;QACd,WAAW;QACX,QAAG;QACH,sBAAc;QACd,gBAAgB,CAAC,IAAI,CAAC,QAAG,GAAG,sBAAc,CAAC,CAC5C,CAAC;AACJ,CAAC;AAdD,kCAcC;AAED,SAAS,WAAW,CAAC,KAAwB;IAC3C,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC;IAChC,MAAM,WAAW,GAAG,cAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,CAC7C,IAAI,UAAU,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,KAAK,eAAK,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAC/D,CAAC;IAEF,OAAO,WAAW,CAAC;AACrB,CAAC;AAED,SAAS,UAAU,CAAC,KAAwB;IAC1C,MAAM,SAAS,GAAG,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC;IAC7C,MAAM,WAAW,GAAG,KAAK,CAAC,cAAc,CAAC,MAAM,CAAC;IAEhD,IAAI,CAAC,SAAS,EAAE;QACd,OAAO,WAAW,CAAC;KACpB;IAED,IAAI,CAAC,WAAW,EAAE;QAChB,OAAO,SAAS,CAAC;KAClB;IAED,OAAO,GAAG,SAAS,GAAG,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,WAAW,EAAE,CAAC;AAC7E,CAAC;AAED,SAAS,gBAAgB,CACvB,MAA6B,EAC7B,OAAiB;;IAEjB,MAAM,cAAc,GAAG,+BAAmB,aAAnB,+BAAmB,uBAAnB,+BAAmB,CAAG,MAAM,CAAC,WAAW,CAAC,CAAC;IAEjE,MAAM,UAAU,GAAG;QACjB,CAAC,MAAM,EAAE,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAClC;YACE,MAAM;YACN,MAAM,CAAC,KAAK,CAAC,uBAAuB;gBAClC,CAAC,CAAC,eAAe,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE;gBAClC,CAAC,CAAC,eAAK,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,aAAa,IAAI,EAAE,CAAC;SACtD;QACD,CAAC,MAAM,EAAE,2CAAS,CAAC,MAAM,CAAC,KAAK,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC;QACpD;YACE,MAAM;YACN,GAAG,MAAM,CAAC,UAAU,GAClB,QAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,qBAAqB;gBAC9B,iBAAiB,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC;gBACxC,CAAC,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,UAAU,EAAE;gBAC/B,CAAC,CAAC,EACN,EAAE;SACH;QACD;YACE,SAAS;YACT,cAAc,WAAI,MAAM,CAAC,KAAK,CAAC,WAAW,0CAAG,cAAc,EAAC;gBAC1D,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,cAAc,CAAC;gBAC1C,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO;SACxC;KACF,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAuB,CAAC;IAEnD,MAAM,qBAAqB,GAAG,IAAI,CAAC,GAAG,CACpC,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,CACzC,CAAC;IAEF,OAAO,UAAU,CAAC,GAAG,CACnB,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CACf,GAAG,GAAG,KAAK,GAAG,CAAC,MAAM,CAAC,qBAAqB,GAAG,GAAG,CAAC,MAAM,CAAC,GAAG,KAAK,EAAE,CACtE,CAAC;AACJ,CAAC;AAED,SAAS,iBAAiB,CAAC,UAA8B;IACvD,OAAO,CACL,OAAO,UAAU,KAAK,QAAQ,IAAI,UAAW,GAAG,CAAC,IAAI,UAAW,GAAG,CAAC,KAAK,CAAC,CAC3E,CAAC;AACJ,CAAC;;;;;;;;;;;;AC/FD,4CAAqC;AACrC,wCAAyB;AACzB,2CAAiD;AAEjD,SAAgB,wBAAwB,CAAC,aAA4B;IACnE,OAAO,CACL,cAAM,CAAC,KAAK,CAAC,iBAAiB,CAAC;QAC/B,QAAG;QACH,QAAG;QACH,sBAAc;QACd,sCAAsC;QACtC,cAAM,CAAC,KAAK,CAAC,GAAG,gBAAM,CAAC,IAAI,QAAQ,aAAa,CAAC,OAAO,WAAW,CAAC;QACpE,QAAG;QACH,sBAAc;QACd,kBAAkB;QAClB,cAAM,CAAC,KAAK,CAAC,aAAa,CAAC,WAAW,CAAC,CACxC,CAAC;AACJ,CAAC;AAbD,4DAaC;AAEY,uBAAe,GAC1B,cAAM,CAAC,KAAK,CAAC,KAAK,CAAC;IACnB,QAAG;IACH,QAAG;IACH,sBAAc;IACd,kEAAkE;IAClE,cAAM,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;AAEd,kCAA0B,GACrC,sBAAc;IACd,cAAM,CAAC,UAAU,CACf,sHAAsH,CACvH,CAAC;;;;;;;;;;;;AChCJ,wCAAyB;AACzB,+CAAwD;AACxD,2CAAsC;AAEtC,2CAAiC;AAGjC,MAAM,UAAU,GAAG,EAAE,CAAC,CAAC,iBAAiB;AACxC,MAAM,MAAM,GAAG,IAAI,CAAC;AAEpB,SAAgB,oBAAoB,CAAC,QAAqB;IACxD,MAAM,KAAK,GAAG,cAAM,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;IAC3C,MAAM,eAAe,GAAa,CAAC,KAAK,CAAC,CAAC;IAE1C,IAAI,QAAQ,CAAC,QAAQ,EAAE;QACrB,eAAe,CAAC,IAAI,CAAC,qBAAqB,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC;KAChE;IAED,eAAe,CAAC,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;IAE3D,OAAO,eAAe,CAAC,IAAI,CAAC,QAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AAC7C,CAAC;AAXD,oDAWC;AAED,SAAS,qBAAqB,CAAC,OAAsB;IACnD,MAAM,qBAAqB,GAAuB,EAAE,CAAC;IAErD,IAAI,OAAO,CAAC,OAAO,EAAE;QACnB,qBAAqB,CAAC,IAAI,CAAC,CAAC,cAAc,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;KAC/D;IAED,IAAI,OAAO,CAAC,WAAW,EAAE;QACvB,qBAAqB,CAAC,IAAI,CAAC,CAAC,cAAc,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC;KACnE;IAED,MAAM,WAAW,GAAG,qBAAqB;SACtC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CACpB,8BAAkB,CAAC,GAAG,MAAM,GAAG,GAAG,KAAK,KAAK,EAAE,EAAE,UAAU,CAAC,CAC5D;SACA,IAAI,CAAC,QAAG,CAAC,CAAC;IAEb,OAAO,WAAW,CAAC;AACrB,CAAC;AAED,SAAS,mBAAmB,CAAC,UAAyB;IACpD,MAAM,uBAAuB,GAAa,EAAE,CAAC;IAE7C,uBAAuB,CAAC,IAAI,CAC1B,GAAG,cAAM,CAAC,OAAO,CAAC,IAAI,CACpB,YAAI,CAAC,KAAK,CACX,0BAA0B,cAAM,CAAC,IAAI,CAAC,IAAI,CACzC,GAAG,UAAU,CAAC,kBAAkB,EAAE,CACnC,EAAE,CACJ,CAAC;IAEF,uBAAuB,CAAC,IAAI,CAC1B,GAAG,cAAM,CAAC,OAAO,CAAC,IAAI,CAAC,YAAI,CAAC,KAAK,CAAC,uBAAuB,cAAM,CAAC,IAAI,CAAC,IAAI,CACvE,GAAG,UAAU,CAAC,eAAe,EAAE,CAChC,EAAE,CACJ,CAAC;IAEF,uBAAuB,CAAC,IAAI,CAC1B,GAAG,MAAM,mBAAmB,cAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC,OAAO,EAAE,CAAC,EAAE,CACxE,CAAC;IAEF,uBAAuB,CAAC,IAAI,CAC1B,GAAG,MAAM,iBAAiB,cAAM,CAAC,IAAI,CAAC,IAAI,CACxC,GAAG,UAAU,CAAC,MAAM,EAAE,CACvB,MAAM,cAAM,CAAC,UAAU,CAAC,QAAQ,CAC/B,GAAG,UAAU,CAAC,gBAAgB,CAAC,QAAQ,WAAW,CACnD,KAAK,cAAM,CAAC,UAAU,CAAC,IAAI,CAC1B,GAAG,UAAU,CAAC,gBAAgB,CAAC,IAAI,OAAO,CAC3C,KAAK,cAAM,CAAC,UAAU,CAAC,MAAM,CAC5B,GAAG,UAAU,CAAC,gBAAgB,CAAC,MAAM,SAAS,CAC/C,KAAK,cAAM,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,UAAU,CAAC,gBAAgB,CAAC,GAAG,MAAM,CAAC,IAAI,CAC1E,CAAC;IAEF,OAAO,uBAAuB,CAAC,IAAI,CAAC,QAAG,CAAC,CAAC;AAC3C,CAAC;;;;;;;;;;;;AC5ED,2CAAiC;AAEjC;;GAEG;AACU,oBAAY,GAAG,cAAM,CAAC,IAAI,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC;AAE5E;;GAEG;AACU,sBAAc,GAAG,cAAM,CAAC,IAAI,CACvC,2DAA2D,CAC5D,CAAC;AAEF;;GAEG;AACU,6BAAqB,GAAG,cAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;AAEpE;;GAEG;AACU,0BAAkB,GAAG,cAAM,CAAC,IAAI,CAC3C,mDAAmD,CACpD,CAAC;AAEF;;GAEG;AACU,gCAAwB,GAAG,cAAM,CAAC,IAAI,CACjD,4HAA4H,CAC7H,CAAC;AAEF;;GAEG;AACH,SAAgB,qBAAqB,CACnC,OAAqB,EACrB,uBAAiC;IAEjC,OAAO,CAAC,CAAC,CACP,CAAC,OAAO,CAAC,IAAI;QACb,CAAC,OAAO,CAAC,KAAK;QACd,CAAC,OAAO,CAAC,KAAK;QACd,uBAAuB,CACxB,CAAC;AACJ,CAAC;AAVD,sDAUC;;;;;;;;;;;;AC/CD,2CAAqC;AAgBxB,cAAM,GAAoB;IACrC,UAAU,EAAE;QACV,QAAQ,EAAE,eAAK,CAAC,OAAO;QACvB,IAAI,EAAE,eAAK,CAAC,GAAG;QACf,MAAM,EAAE,eAAK,CAAC,MAAM;QACpB,GAAG,EAAE,eAAK,CAAC,KAAK;KACjB;IACD,OAAO,EAAE,eAAK,CAAC,GAAG;IAClB,OAAO,EAAE,eAAK,CAAC,KAAK;IACpB,IAAI,EAAE,eAAK,CAAC,KAAK;IACjB,KAAK,EAAE,eAAK,CAAC,KAAK,CAAC,IAAI;IACvB,UAAU,EAAE,eAAK,CAAC,IAAI;CACvB,CAAC;AAEW,sBAAc,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;;;;;;;;;;;;;;;;;;;;;AC9B5C,oDAAoD;AAA3C,iIAAc;AACvB,oEAAgF;AAAvE,yKAA0B;AACnC,+DAAsE;AAA7D,0JAAqB;AAC9B,uDAAqD;AAA5C,gIAAY;AACrB,8DAAuE;AAA9D,6JAAuB;AAChC,mEAAgF;AAAvE,0KAA2B;AACpC,uDAAgE;AAAvD,sJAAuB;AAEhC,0DAGmC;AAFjC,4JAAwB;AACxB,kJAAmB;AAGrB,kDAAyB;;;;;;;;;;;;ACbzB,MAAM,IAAI,GAAG,mBAAO,CAAC,KAAa,CAAC,CAAC;AACpC,2CAA0B;AAE1B,4CAAsC;AAEtC,4CAAiD;AACjD,iDAA+D;AAC/D,sDAGoC;AAOpC,gEAAuE;AACvE,yDAA4D;AAC5D,4CAAiE;AACjE,+CAA8C;AAE9C,SAAgB,YAAY,CAC1B,IAAiB,EACjB,OAA8B;IAE9B,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAC/B,MAAM,cAAc,GAAG,OAAO,CAAC,cAAe,CAAC;IAC/C,MAAM,gBAAgB,GAAG,sBAAa,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACrD,MAAM,cAAc,GAAG,IAAI,CACzB,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;QAClB,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE;YACb,OAAO,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;SAC5B;QACD,OAAO,CAAC,CAAC,IAAI,CAAC;IAChB,CAAC,CAAC,CACH,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAEb,MAAM,UAAU,GAAG;QACjB,YAAY,EAAE,+BAA+B,CAAC;YAC5C,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,QAAQ;YAChC,gBAAgB,EAAE,IAAI,CAAC,gBAAgB;YACvC,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI;YACxB,WAAW,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI;YAC/B,KAAK,EAAE,KAAK;SACb,CAAC;QACF,iBAAiB,EAAE,wBAAwB,GAAG,cAAc;QAC5D,WAAW,EAAE,iBAAiB,GAAG,IAAI,CAAC,KAAK;QAC3C,IAAI,EACF,UAAU;YACV,eAAK,CAAC,SAAS,CAAC,gBAAM,CAAC,kBAAkB,GAAG,QAAQ,GAAG,MAAM,CAAC;QAChE,SAAS,EAAE,6BAA6B,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,aAAa,CAAC;QAC1E,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,eAAK,CAAC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE;QAChE,eAAe,EACb,IAAI,CAAC,QAAQ,CAAC,IAAI,KAAK,SAAS,IAAI,gBAAgB;YAClD,CAAC,CAAC,qBAAqB,CAAC,IAAI,EAAE,cAAc,CAAC;YAC7C,CAAC,CAAC,EAAE;QACR,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE;QACtD,iBAAiB,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,yBAAyB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE;QACxE,iBAAiB,EAAE,IAAI,CAAC,sBAAsB;YAC5C,CAAC,CAAC,eAAK,CAAC,IAAI,CAAC,2BAA2B,CAAC;gBACvC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;gBACb,oDAAuB,CAAC,IAAI,CAAC,sBAAsB,EAAE,CAAC,CAAC;YACzD,CAAC,CAAC,EAAE;QACN,YAAY,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,wBAAwB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE;KACtE,CAAC;IAEF,OAAO,CACL,GAAG,UAAU,CAAC,YAAY,IAAI;QAC9B,GAAG,UAAU,CAAC,WAAW,IAAI;QAC7B,GAAG,UAAU,CAAC,IAAI,IAAI;QACtB,GAAG,UAAU,CAAC,iBAAiB,IAAI;QACnC,UAAU,CAAC,SAAS;QACpB,8BAA8B;QAC9B,UAAU,CAAC,YAAY;QACvB,UAAU,CAAC,eAAe;QAC1B,UAAU,CAAC,iBAAiB;QAC5B,UAAU,CAAC,OAAO;QAClB,UAAU,CAAC,SAAS;QACpB,UAAU,CAAC,iBAAiB,CAC7B,CAAC;AACJ,CAAC;AA3DD,oCA2DC;AAUD,SAAS,+BAA+B,CAAC,EACvC,QAAQ,EACR,gBAAgB,EAChB,IAAI,EACJ,WAAW,EACX,KAAK,GAC2B;IAChC,2DAA2D;IAC3D,MAAM,YAAY,GAAG,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC;IAEpE,IAAI,mBAAmB,GAAG,EAAE,CAAC;IAC7B,IAAI,gBAAgB,IAAI,gBAAgB,KAAK,QAAQ,EAAE;QACrD,mBAAmB,GAAG,gBAAgB,aAAa,CAAC,gBAAgB,CAAC,GAAG,CAAC;KAC1E;IAED,OAAO,CACL,4BAAmB,CACjB,QAAQ,EACR,IAAI;QACF,aAAa,CAAC,QAAQ,CAAC;QACvB,YAAY,mBAAmB,GAAG;QAClC,YAAY;QACZ,YAAY;QACZ,eAAK,CAAC,SAAS,CAAC,WAAW,CAAC,CAC/B,GAAG,eAAK,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAC9C,CAAC;AACJ,CAAC;AAED,SAAgB,aAAa,CAAC,IAAI;IAChC,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAC/C,CAAC;AAFD,sCAEC;AAED,SAAS,yBAAyB,CAAC,IAAI;IACrC,IAAI,IAAI,CAAC,qBAAqB,EAAE;QAC9B,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;QAC3C,OAAO,qBAAqB,IAAI,CAAC,qBAAqB,GAAG,CAAC;KAC3D;IAED,IAAI,IAAI,CAAC,eAAe,EAAE;QACxB,OAAO,mDAAmD,IAAI,CAAC,eAAe,GAAG,CAAC;KACnF;IAED,OAAO,EAAE,CAAC;AACZ,CAAC;AACD,SAAS,6BAA6B,CACpC,QAA0B,EAC1B,IAAmB;IAEnB,IAAI,IAAI,KAAK,MAAM,EAAE;QACnB,OAAO,EAAE,CAAC;KACX;IACD,MAAM,sBAAsB,GAAG,IAAI,KAAK,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IACzD,MAAM,cAAc,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAEnD,MAAM,sBAAsB,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;QACtD,MAAM,sBAAsB,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAC1C,6BAA6B;QAC7B,IAAI,sBAAsB,CAAC,MAAM,EAAE;YACjC,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,0BAAc,CAAC,CAAC;SACxC;QACD,oCAAoC;QACpC,OAAO,CAAC,CAAC;IACX,CAAC,CAAC,CAAC;IAEH,MAAM,mBAAmB,GAAG,cAAc,CAAC,MAAM,GAAG,sBAAsB,CAAC;IAC3E,MAAM,mBAAmB,GAAG,cAAc,CAAC,MAAM,GAAG,sBAAsB,CAAC;IAC3E,MAAM,aAAa,GAAG,WAAW,mBAAmB,UAAU,CAAC;IAC/D,MAAM,kBAAkB,GAAG,sBAAsB;SAC9C,KAAK,CAAC,CAAC,EAAE,sBAAsB,CAAC;SAChC,IAAI,CAAC,YAAY,CAAC,CAAC;IAEtB,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE;QAC7B,OAAO,CACL,UAAU;YACV,kBAAkB;YAClB,CAAC,mBAAmB,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,CAC3C,CAAC;KACH;AACH,CAAC;AAED,SAAS,iBAAiB,CAAC,IAAiB;IAC1C,IAAK,IAAoB,CAAC,qBAAqB,EAAE;QAC/C,OAAO,eAAK,CAAC,IAAI,CACf,gBAAgB,GAAI,IAAoB,CAAC,qBAAqB,CAC/D,CAAC;KACH;SAAM,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;QAClD,OAAO,eAAK,CAAC,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;KAC/D;IAED,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,SAAS,wBAAwB,CAAC,IAAiB;IACjD,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;QACtB,OAAO,EAAE,CAAC;KACX;IACD,MAAM,gBAAgB,GAAG,yCAAmB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IAChE,IAAI,CAAC,gBAAgB,EAAE;QACrB,OAAO,EAAE,CAAC;KACX;IACD,OAAO,qBAAqB,gBAAgB,EAAE,CAAC;AACjD,CAAC;AAED,SAAS,qBAAqB,CAC5B,IAAiB,EACjB,cAAwC;IAExC,IACE,IAAI,CAAC,OAAO;QACZ,qDAAkC,CAAC,QAAQ,CAAC,cAAc,CAAC,EAC3D;QACA,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC5C,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QAC7D,MAAM,gBAAgB,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QACzD,MAAM,WAAW,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAC;QACxC,IAAI,UAAU,EAAE;YACd,OAAO,eAAK,CAAC,IAAI,CACf,uDAAuD,IAAI,CAAC,IAAI,eAAe,SAAS,EAAE,CAC3F,CAAC;SACH;aAAM;YACL,OAAO,eAAK,CAAC,IAAI,CACf,mDAAmD,WAAW,OAAO,IAAI,CAAC,IAAI,IAAI,SAAS,EAAE,CAC9F,CAAC;SACH;KACF;IAED,IAAI,IAAI,CAAC,SAAS,KAAK,IAAI,EAAE;QAC3B,MAAM,iBAAiB,GAAG,IAAI,CAC5B,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;YAClB,MAAM,mBAAmB,GAAG,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;YAC/C,MAAM,sBAAsB,GAAG,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;YAElD,IAAI,mBAAmB,EAAE;gBACvB,mDAAmD;gBACnD,kDAAkD;gBAClD,uCAAuC;gBACvC,MAAM,eAAe,GACnB,CAAC,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC;oBACtB,CAAC,CAAC,0BAA0B,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,0BAAc,CAAC,GAAG;oBACjE,CAAC,CAAC,EAAE,CAAC;gBACT,MAAM,iBAAiB,GAAG,gCAAU,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAW,CAAC,CAAC;gBACjE,OAAO,CACL,wCAAwC,iBAAiB,CAAC,CAAC,CAAC,GAAG;oBAC/D,CAAC,eAAe,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,eAAe,EAAE,CACrD,CAAC;aACH;YACD,IAAI,sBAAsB,EAAE;gBAC1B,MAAM,oBAAoB,GAAG,CAAC,CAAC,WAAW;qBACvC,KAAK,CAAC,CAAC,CAAC;qBACR,IAAI,CAAC,0BAAc,CAAC,CAAC;gBACxB,MAAM,eAAe,GAAG,CAAC,CAAC,WAAW,CAAC,MAAM;oBAC1C,CAAC,CAAC,0BAA0B,oBAAoB,GAAG;oBACnD,CAAC,CAAC,EAAE,CAAC;gBAEP,OAAO,6BAA6B,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,eAAe,EAAE,CAAC;aAC1F;YAED,OAAO,2EAA2E,CAAC;QACrF,CAAC,CAAC,CACH,CAAC;QACF,OAAO,eAAK,CAAC,IAAI,CACf,yBAAyB,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAC5D,CAAC;KACH;IAED,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;QAC3C,OAAO,iBAAiB,CAAC,IAAI,CAAC,CAAC;KAChC;IAED,OAAO,EAAE,CAAC;AACZ,CAAC;;;;;;;;;;;;ACrQD,wCAAkC;AAClC,2CAA0B;AAI1B,SAAgB,uBAAuB,CACrC,iBAAqC,EACrC,aAAa,GAAG,CAAC;IAEjB,MAAM,YAAY,GAAa,iBAAiB,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CACjE,IAAI,CACF,eAAK,CAAC,IAAI,CAAC,SAAS,SAAS,CAAC,WAAW,IAAI,CAAC,GAAG,SAAS,CAAC,YAAY,EACvE,GAAG,CACJ;SACE,KAAK,CAAC,IAAI,CAAC;SACX,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAC1C,CAAC;IACF,OAAO,YAAY,CAAC,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC;AAC7D,CAAC;AAbD,0DAaC;;;;;;;;;;;;AClBD,2CAA0B;AAC1B,2CAAgC;AAChC,4CAAsC;AAetC,4CAAiE;AACjE,gEAAuE;AACvE,yDAG+B;AAM/B,+CAA8C;AAC9C,wDAAwD;AAExD,iDAAiD;AACjD,MAAM,mBAAmB,GAAG,CAAC,CAAC;AAE9B,SAAgB,2BAA2B,CACzC,KAAoB,EACpB,eAAmC,EACnC,OAAoB;;IAEpB,MAAM,aAAa,GAEf,EAAE,CAAC;IAEP,MAAM,gBAAgB,GAElB,EAAE,CAAC;IACP,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;QACxB,MAAM,iBAAiB,GAAyB,EAAE,SAAS,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC;QAC5E,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,IAAI,EAAE;YAC7B,MAAM,mBAAmB,GAAG,YAAK,CAAC,cAAc,0CAAE,KAAK,KAAI,EAAE,CAAC;YAC9D,KAAK,MAAM,sBAAsB,IAAI,mBAAmB,EAAE;gBACxD,iBAAiB,CAAC,KAAK,GAAG,iBAAiB,CAAC,KAAK,CAAC,MAAM,CACtD,sBAAsB,CAAC,SAAS,CACjC,CAAC;gBACF,iBAAiB,CAAC,SAAS,IAAI,sBAAsB,CAAC,SAAS,CAAC,MAAM,CAAC;aACxE;SACF;QACD,MAAM,QAAQ,GAAG;YACf,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,gBAAgB,EAAE,IAAI,CAAC,gBAAgB;YACvC,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI;YACxB,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,iBAAiB,EAAE,IAAI,CAAC,sBAAsB;YAC9C,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;YACnC,YAAY,EAAE,IAAI,CAAC,YAAY;YAC/B,oBAAoB,EAAE,iBAAiB;SACxC,CAAC;QAEF,IAAI,QAAQ,CAAC,IAAI,KAAK,SAAS,EAAE;YAC/B,gBAAgB,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC;SAC/C;aAAM;YACL,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC;SAC5C;KACF;IAED,MAAM,OAAO,GAAG,CAAC,EAAE,CAAC,CAAC;IAErB,IAAI,gBAA0B,CAAC;IAC/B,IAAI,eAAe,CAAC,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE;QAClE,MAAM,kBAAkB,GAA8B,EAAE,CAAC;QACzD,KAAK,MAAM,WAAW,IAAI,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,EAAE;YAC9D,KAAK,MAAM,YAAY,IAAI,eAAe,CAAC,OAAO,CAAC,WAAW,CAAC;iBAC5D,QAAQ,EAAE;gBACX,IAAI,CAAC,kBAAkB,CAAC,YAAY,CAAC,EAAE;oBACrC,kBAAkB,CAAC,YAAY,CAAC,GAAG,EAAE,CAAC;iBACvC;gBACD,kBAAkB,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC;oBACpC,IAAI,EAAE,WAAW;oBACjB,OAAO,EAAE,eAAe,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,SAAS;iBACxD,CAAC,CAAC;aACJ;SACF;QACD,gBAAgB,GAAG,gBAAgB,CACjC,eAAe,CAAC,GAAG,EACnB,kBAAkB,EAClB,aAAa,EACb,OAAO,CACR,CAAC;QACF,MAAM,UAAU,GAAG,IAAI,GAAG,EAAE,CAAC;QAC7B,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,CAChD,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CACtE,CAAC;QACF,eAAe,CAAC,UAAU,GAAG,eAAe,CAAC,UAAU,CAAC,MAAM,CAC5D,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CACrC,CAAC;KACH;SAAM;QACL,gBAAgB,GAAG,qBAAqB,CACtC,eAAe,CAAC,OAAO,EACvB,aAAa,EACb,OAAO,CACR,CAAC;KACH;IACD,IAAI,gBAAgB,CAAC,MAAM,GAAG,CAAC,EAAE;QAC/B,OAAO,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;KAC3C;IAED,MAAM,gBAAgB,GAAG,oBAAoB,CAC3C,eAAe,CAAC,KAAK,EACrB,aAAa,EACb,OAAO,CACR,CAAC;IAEF,IAAI,gBAAgB,CAAC,MAAM,GAAG,CAAC,EAAE;QAC/B,OAAO,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;KAC3C;IAED,MAAM,wBAAwB,GAAG,sBAAsB,CACrD,eAAe,CAAC,UAAU,EAC1B,aAAa,EACb,OAAO,CACR,CAAC;IAEF,IAAI,wBAAwB,CAAC,MAAM,GAAG,CAAC,EAAE;QACvC,OAAO,CAAC,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;KACnD;IAED,MAAM,sBAAsB,GAAG,oBAAoB,CACjD,gBAAgB,EAChB,OAAO,CACR,CAAC;IAEF,IAAI,sBAAsB,CAAC,MAAM,GAAG,CAAC,EAAE;QACrC,OAAO,CAAC,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;KACjD;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AArHD,kEAqHC;AAED,SAAS,oBAAoB,CAC3B,gBAEC,EACD,WAAwB;IAExB,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE;QAC/C,OAAO,EAAE,CAAC;KACX;IAED,MAAM,gBAAgB,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC,CAAC;IAEjE,KAAK,MAAM,EAAE,IAAI,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,EAAE;QAC9C,MAAM,WAAW,GAAG,WAAW,CAC7B,EAAE,EACF,gBAAgB,CAAC,EAAE,CAAC,CAAC,KAAK,EAC1B,gBAAgB,CAAC,EAAE,CAAC,CAAC,QAAQ,EAC7B,gBAAgB,CAAC,EAAE,CAAC,CAAC,KAAK,EAC1B,GAAG,gBAAgB,CAAC,EAAE,CAAC,CAAC,IAAI,IAAI,gBAAgB,CAAC,EAAE,CAAC,CAAC,OAAO,EAAE,EAC9D,gBAAgB,CAAC,EAAE,CAAC,CAAC,KAAK,EAC1B,WAAW,EACX,gBAAgB,CAAC,EAAE,CAAC,CAAC,IAAI,EACzB,SAAS,EAAE,mEAAmE;QAC9E,gBAAgB,CAAC,EAAE,CAAC,CAAC,iBAAiB,CACvC,CAAC;QACF,gBAAgB,CAAC,IAAI,CAAC,IAAI,GAAG,WAAW,CAAC,CAAC;KAC3C;IACD,OAAO,gBAAgB,CAAC;AAC1B,CAAC;AAED,SAAS,oBAAoB,CAC3B,OAEC,EACD,aAEC,EACD,WAAwB;IAExB,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE;QACtC,OAAO,EAAE,CAAC;KACX;IACD,MAAM,gBAAgB,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC,CAAC;IACnE,KAAK,MAAM,EAAE,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE;QACrC,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,EAAE;YACtB,SAAS;SACV;QACD,IAAI,aAAa,CAAC,EAAE,CAAC,CAAC,IAAI,KAAK,SAAS,EAAE;YACxC,SAAS;SACV;QAED,qCAAqC;QACrC,MAAM,gBAAgB,GAAG,GAAG,aAAa,CAAC,EAAE,CAAC,CAAC,IAAI,IAAI,aAAa,CAAC,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC;QAClF,MAAM,WAAW,GAAG,2BAA2B,eAAK,CAAC,IAAI,CAAC,WAAW,CACnE,gBAAgB,CACjB,IAAI,CAAC;QACN,MAAM,cAAc,GAAG,WAAW,CAChC,EAAE,EACF,aAAa,CAAC,EAAE,CAAC,CAAC,KAAK,EACvB,aAAa,CAAC,EAAE,CAAC,CAAC,QAAQ,EAC1B,aAAa,CAAC,EAAE,CAAC,CAAC,KAAK,EACvB,GAAG,aAAa,CAAC,EAAE,CAAC,CAAC,IAAI,IAAI,aAAa,CAAC,EAAE,CAAC,CAAC,OAAO,EAAE,EACxD,aAAa,CAAC,EAAE,CAAC,CAAC,KAAK,EACvB,WAAW,EACX,aAAa,CAAC,EAAE,CAAC,CAAC,IAAI,EACtB,aAAa,CAAC,EAAE,CAAC,CAAC,gBAAgB,CACnC,CAAC;QACF,gBAAgB,CAAC,IAAI,CAAC,WAAW,GAAG,cAAc,CAAC,CAAC;KACrD;IAED,OAAO,gBAAgB,CAAC;AAC1B,CAAC;AAED,SAAS,gBAAgB,CACvB,OAAiB,EACjB,aAA4C,EAC5C,WAAwB;IAExB,OAAO,OAAO;SACX,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC,CAAC,wEAAwE;SAC1G,IAAI,CACH,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CACP,qCAAgB,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;QAC3C,qCAAgB,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAC9C;SACA,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC;SACpD,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CACV,WAAW,CACT,EAAE,EACF,aAAa,CAAC,EAAE,CAAC,CAAC,KAAK,EACvB,aAAa,CAAC,EAAE,CAAC,CAAC,QAAQ,EAC1B,aAAa,CAAC,EAAE,CAAC,CAAC,KAAK,EACvB,GAAG,aAAa,CAAC,EAAE,CAAC,CAAC,IAAI,IAAI,aAAa,CAAC,EAAE,CAAC,CAAC,OAAO,EAAE,EACxD,aAAa,CAAC,EAAE,CAAC,CAAC,KAAK,EACvB,WAAW,EACX,aAAa,CAAC,EAAE,CAAC,CAAC,IAAI,EACtB,aAAa,CAAC,EAAE,CAAC,CAAC,gBAAgB,EAClC,EAAE,EACF,aAAa,CAAC,EAAE,CAAC,CAAC,YAAY,EAC9B,aAAa,CAAC,EAAE,CAAC,CAAC,oBAAoB,CACvC,CACF;SACA,IAAI,CAAC,IAAI,CAAC,CAAC;AAChB,CAAC;AAED,SAAS,eAAe,CACtB,IAAc,EACd,aAAiD,EACjD,IAAc,EACd,aAA4C,EAC5C,WAAwB;IAExB,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE;QACtB,MAAM,IAAI,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC;QAChC,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC;QACpC,MAAM,OAAO,GACV,IAA2B,CAAC,KAAK,IAAK,IAAuB,CAAC,KAAK,CAAC;QACvE,MAAM,WAAW,GAAG,eAAe,eAAK,CAAC,IAAI,CAAC,WAAW,CACvD,GAAG,CACJ,OAAO,eAAK,CAAC,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,WAAW,CAAC;QACxD,IAAI,CAAC,IAAI,CACP,WAAW,GAAG,gBAAgB,CAAC,OAAO,EAAE,aAAa,EAAE,WAAW,CAAC,CACpE,CAAC;KACH;AACH,CAAC;AAED,SAAS,qBAAqB,CAC5B,QAA2B,EAC3B,aAEC,EACD,WAAwB;IAExB,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE;QACvC,OAAO,EAAE,CAAC;KACX;IAED,MAAM,gBAAgB,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,KAAK,CAAC,+BAA+B,CAAC,CAAC,CAAC;IAC7E,eAAe,CACb,gBAAgB,EAChB,QAAQ,EACR,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,EACrB,aAAa,EACb,WAAW,CACZ,CAAC;IACF,OAAO,gBAAgB,CAAC;AAC1B,CAAC;AAED,SAAS,gBAAgB,CACvB,IAAoB,EACpB,kBAA6C,EAAE,qDAAqD;AACpG,aAA4C,EAC5C,WAAwB;IAExB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE;QAC7B,OAAO,EAAE,CAAC;KACX;IAED,MAAM,gBAAgB,GAAa,EAAE,CAAC;IACtC,gBAAgB,CAAC,IAAI,CACnB,eAAK,CAAC,IAAI,CAAC,KAAK,CAAC,4CAA4C,CAAC,CAC/D,CAAC;IAEF,yBAAyB;IAEzB,MAAM,YAAY,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,CAC3C,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,YAAY,CACnC,CAAC;IACF,IAAI,YAAY,CAAC,MAAM,EAAE;QACvB,eAAe,CACb,gBAAgB,EAChB,IAAI,EACJ,YAAY,EACZ,aAAa,EACb,WAAW,CACZ,CAAC;KACH;IAED,eAAe;IACf,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,YAAY,CAAC,CAAC;IAE7E,IAAI,QAAQ,CAAC,MAAM,EAAE;QACnB,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE;YAC9B,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC;YAC3B,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC;YAC3B,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC;YACpC,MAAM,WAAW,GAAG,WAAW,eAAK,CAAC,IAAI,CAAC,WAAW,CACnD,OAAO,CACR,OAAO,eAAK,CAAC,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,SAAS,CAAC;YACtD,gBAAgB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YACnC,gBAAgB,CAAC,IAAI,CACnB,gBAAgB,CAAC,OAAO,EAAE,aAAa,EAAE,WAAW,CAAC,CACtD,CAAC;YAEF,yFAAyF;YACzF,MAAM,gCAAgC,GAAG,IAAI,GAAG,EAAE,CAAC;YACnD,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE;gBACzB,KAAK,MAAM,WAAW,IAAI,kBAAkB,CAC1C,OAAO,GAAG,GAAG,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC,OAAO,CAC3C,IAAI,EAAE,EAAE;oBACP,MAAM,MAAM,GAAG,GAAG,WAAW,CAAC,IAAI,KAAK,WAAW,CAAC,OAAO,EAAE,CAAC;oBAC7D,IAAI,CAAC,gCAAgC,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE;wBACjD,gCAAgC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;wBAC7C,gBAAgB,CAAC,IAAI,CACnB,yEAAyE;4BACvE,GAAG,WAAW,CAAC,IAAI,OAAO,WAAW,CAAC,OAAO,EAAE,CAClD,CAAC;qBACH;iBACF;aACF;SACF;KACF;IAED,OAAO,gBAAgB,CAAC;AAC1B,CAAC;AAED,SAAS,sBAAsB,CAC7B,UAAuB,EACvB,aAA4C,EAC5C,WAAwB;IAExB,IAAI,CAAC,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE;QAC5B,OAAO,EAAE,CAAC;KACX;IACD,MAAM,wBAAwB,GAAG;QAC/B,eAAK,CAAC,IAAI,CAAC,KAAK,CAAC,2CAA2C,CAAC;KAC9D,CAAC;IACF,KAAK,MAAM,KAAK,IAAI,UAAU,EAAE;QAC9B,MAAM,SAAS,GAAG,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAC1C,IAAI,CAAC,SAAS,EAAE;YACd,wEAAwE;YACxE,SAAS;SACV;QAED,MAAM,SAAS,GACb,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM;YACnC,CAAC,CAAC,yCAAyC,eAAK,CAAC,IAAI,CACjD,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CACzB,EAAE;YACL,CAAC,CAAC,mCAAmC,CAAC;QAC1C,wBAAwB,CAAC,IAAI,CAC3B,WAAW,CACT,KAAK,CAAC,EAAE,EACR,KAAK,CAAC,KAAK,EACX,KAAK,CAAC,QAAQ,EACd,KAAK,CAAC,KAAK,EACX,GAAG,KAAK,CAAC,WAAW,IAAI,KAAK,CAAC,OAAO,EAAE,EACvC,SAAS,CAAC,KAAK,EACf,WAAW,EACX,SAAS,CAAC,IAAI,EACd,SAAS,CAAC,gBAAgB,EAC1B,EAAE,EACF,KAAK,CAAC,YAAY,CACnB,GAAG,GAAG,SAAS,EAAE,CACnB,CAAC;KACH;IAED,IAAI,wBAAwB,CAAC,MAAM,KAAK,CAAC,EAAE;QACzC,2BAA2B;QAC3B,kDAAkD;QAClD,OAAO,EAAE,CAAC;KACX;IAED,OAAO,wBAAwB,CAAC;AAClC,CAAC;AAED,SAAgB,SAAS,CAAC,IAAc,EAAE,KAAK,GAAG,CAAC;IACjD,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,0BAAc,CAAC,CAAC;AAChD,CAAC;AAFD,8BAEC;AAED,SAAgB,WAAW,CACzB,EAAU,EACV,KAAa,EACb,QAAkB,EAClB,KAAc,EACd,gBAAwB,EACxB,KAAiB,EACjB,WAAwB,EACxB,IAAoB,EACpB,gBAA2B,EAC3B,iBAAsC,EACtC,YAA2B,EAC3B,oBAA2C;IAE3C,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;IACvC,MAAM,IAAI,GAAG,gBAAgB,CAAC,CAAC,CAAC,OAAO,eAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IAC3E,IAAI,4BAA4B,CAAC;IACjC,IAAI,iBAAiB,EAAE;QACrB,4BAA4B,GAAG,oDAAuB,CAAC,iBAAiB,CAAC,CAAC;KAC3E;IACD,IAAI,gBAAgB,GAAG,EAAE,CAAC;IAC1B,IAAI,YAAY,EAAE;QAChB,gBAAgB,GAAG,wCAAkB,CAAC,YAAY,CAAC,CAAC;KACrD;IAED,IAAI,YAAY,GAAG,EAAE,CAAC;IAEtB,IACE,WAAW,CAAC,aAAa,KAAK,MAAM;QACpC,KAAK;QACL,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,EAC/B;QACA,kEAAkE;QAClE,MAAM,OAAO,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QACpC,YAAY;YACV,KAAK,CAAC,MAAM,KAAK,CAAC;gBAChB,CAAC,CAAC,uBAAuB,OAAO,EAAE;gBAClC,CAAC,CAAC,uBAAuB,OAAO,QAAQ,eAAK,CAAC,UAAU,CACpD,EAAE,GAAG,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CACxB,gBAAgB,CAAC;KACzB;SAAM,IAAI,WAAW,CAAC,aAAa,KAAK,KAAK,IAAI,KAAK,EAAE;QACvD,YAAY;YACV,sBAAsB;gBACtB,KAAK;qBACF,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC;qBACd,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;qBACnC,IAAI,CAAC,EAAE,CAAC,CAAC;QACd,IAAI,KAAK,CAAC,MAAM,GAAG,IAAI,EAAE;YACvB,YAAY,IAAI,aAAa,eAAK,CAAC,UAAU,CAC3C,EAAE,GAAG,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CACxB,gBAAgB,CAAC;SACnB;KACF;IAED,MAAM,YAAY,GAAG,0CAAoB,CACvC,oBAAoB,EACpB,mBAAmB,EACnB,sBAAsB,CACvB,CAAC;IAEF,IAAI,mBAAmB,GAAG,EAAE,CAAC;IAC7B,IAAI,gBAAgB,IAAI,gBAAgB,KAAK,QAAQ,EAAE;QACrD,mBAAmB,GAAG,gBAAgB,aAAa,CAAC,gBAAgB,CAAC,GAAG,CAAC;KAC1E;IAED,OAAO,CACL,4BAAmB,CACjB,QAAQ,EACR,KAAK,YAAI,CAAC,KAAK,IAAI,eAAK,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,QAAQ,KAAK,aAAa,CAC/D,QAAQ,CACT,YAAY,mBAAmB,GAAG,CACpC;QACD,gBAAgB;QAChB,IAAI,gBAAM,CAAC,kBAAkB,SAAS,EAAE,GAAG;QAC3C,IAAI;QACJ,YAAY;QACZ,YAAY;QACZ,CAAC,4BAA4B;YAC3B,CAAC,CAAC,GAAG,eAAK,CAAC,IAAI,CACX,0BAA0B,CAC3B,UAAU,4BAA4B,EAAE;YAC3C,CAAC,CAAC,EAAE,CAAC;QACP,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,eAAK,CAAC,IAAI,CAAC,YAAY,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAC1D,CAAC;AACJ,CAAC;AApFD,kCAoFC;AAED,SAAS,aAAa,CAAC,IAAI;IACzB,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAC/C,CAAC;AAED,SAAS,sBAAsB,CAC7B,WAAqB,EACrB,eAAuB;IAEvB,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,IAAI,eAAe,KAAK,CAAC,EAAE;QACrD,OAAO,EAAE,CAAC;KACX;IACD,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE;QAC5B,OAAO,gCAAgC,eAAe,QAAQ,CAAC;KAChE;IACD,IAAI,YAAY,GAAG,wBAAwB,CAAC;IAC5C,KAAK,MAAM,CAAC,IAAI,WAAW,EAAE;QAC3B,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;KAC9B;IACD,IAAI,eAAe,GAAG,CAAC,EAAE;QACvB,YAAY,IAAI,oBAAoB,eAAK,CAAC,UAAU,CAClD,EAAE,GAAG,eAAe,CACrB,gBAAgB,CAAC;KACnB;IACD,OAAO,YAAY,CAAC;AACtB,CAAC;;;;;;;;;;;;ACnhBD,4CAA+C;AAC/C,MAAM,UAAU,GAAG,mBAAO,CAAC,KAAmB,CAAC,CAAC;AAEhD,SAAgB,8BAA8B,CAC5C,WAAyB;IAEzB,MAAM,QAAQ,GAAc;QAC1B,OAAO,EAAE,OAAO;QAChB,IAAI,EAAE,EAAE;KACT,CAAC;IAEF,WAAW,CAAC,OAAO,CAAC,CAAC,UAAU,EAAE,EAAE;QACjC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;YACjB,IAAI,EAAE,OAAO,CAAC,UAAU,CAAC;YACzB,OAAO,EAAE,UAAU,CAAC,UAAU,CAAC;SAChC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,OAAO,QAAQ,CAAC;AAClB,CAAC;AAhBD,wEAgBC;AAED,SAAgB,aAAa,CAC3B,QAA2B;IAE3B,OAAO,QAAQ,KAAK,iBAAQ,CAAC,IAAI,IAAI,QAAQ,KAAK,iBAAQ,CAAC,QAAQ;QACjE,CAAC,CAAC,OAAO;QACT,CAAC,CAAC,SAAS,CAAC;AAChB,CAAC;AAND,sCAMC;AAED,SAAgB,OAAO,CAAC,UAAU;IAChC,MAAM,IAAI,GAAe;QACvB,MAAM,EAAE;YACN,IAAI,EAAE,gBAAgB;YACtB,KAAK,EAAE,EAAE;SACV;KACF,CAAC;IAEF,IAAI,CAAC,UAAU,CAAC,eAAe,EAAE;QAC/B,OAAO,IAAI,CAAC;KACb;IAED,MAAM,SAAS,GAAG,EAAE,CAAC;IACrB,IAAI,CAAC,MAAM,CAAC,KAAK,GAAG,UAAU,CAAC,eAAe;SAC3C,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;QACZ,IAAI,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE;YACtB,OAAO;SACR;QACD,MAAM,KAAK,GAAG,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC3C,MAAM,GAAG,GAAG,IAAI,CAAC,aAAa,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAC1C,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC;QAC1B,OAAO;YACL,EAAE,EAAE,IAAI,CAAC,EAAE;YACX,gBAAgB,EAAE;gBAChB,IAAI,EAAE,GAAG,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,eAChC,IAAI,CAAC,KACP,qBAAqB,IAAI,CAAC,WAAW,EAAE;aACxC;YACD,eAAe,EAAE;gBACf,IAAI,EAAE,GAAG;oBACP,CAAC,CAAC,IAAI,GAAG,KAAK,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,OAAO,EAAE;oBACzC,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,OAAO,EAAE;aACnC;YACD,IAAI,EAAE;gBACJ,IAAI,EAAE,EAAE;gBACR,QAAQ,EAAE,IAAI,CAAC,WAAW;aAC3B;YACD,oBAAoB,EAAE;gBACpB,KAAK,EAAE,KAAK;aACb;YACD,UAAU,EAAE;gBACV,IAAI,EAAE,CAAC,UAAU,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC;aAC5C;SACF,CAAC;IACJ,CAAC,CAAC;SACD,MAAM,CAAC,OAAO,CAAC,CAAC;IACnB,OAAO,IAAI,CAAC;AACd,CAAC;AA/CD,0BA+CC;AAED,SAAgB,UAAU,CAAC,UAAU;IACnC,MAAM,OAAO,GAAmB,EAAE,CAAC;IAEnC,IAAI,CAAC,UAAU,CAAC,eAAe,EAAE;QAC/B,OAAO,OAAO,CAAC;KAChB;IACD,UAAU,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;QAC1C,OAAO,CAAC,IAAI,CAAC;YACX,MAAM,EAAE,IAAI,CAAC,EAAE;YACf,OAAO,EAAE;gBACP,IAAI,EAAE,qCAAqC,IAAI,CAAC,WAAW,mBAAmB,IAAI,CAAC,QAAQ,0BAA0B;aACtH;YACD,SAAS,EAAE;gBACT;oBACE,gBAAgB,EAAE;wBAChB,gBAAgB,EAAE;4BAChB,GAAG,EAAE,UAAU,CAAC,iBAAiB;yBAClC;wBACD,MAAM,EAAE;4BACN,SAAS,EAAE,IAAI,CAAC,UAAU,IAAI,CAAC;yBAChC;qBACF;iBACF;aACF;SACF,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IACH,OAAO,OAAO,CAAC;AACjB,CAAC;AA3BD,gCA2BC;;;;;;;;;;;;AC3GD,2DAA8D;AAE9D,SAAgB,kBAAkB,CAChC,cAAc,EACd,OAAO,EACP,iBAAiB;IAEjB,IACE,cAAc,KAAK,QAAQ;QAC3B,CAAC,iBAAiB;QAClB,0CAAkB,CAAC,OAAO,CAAC,EAC3B;QACA,OAAO,EAAE,CAAC;KACX;IACD,OAAO,CACL,+CAA+C,iBAAiB,KAAK;QACrE,iDAAiD,CAClD,CAAC;AACJ,CAAC;AAhBD,gDAgBC;;;;;;;;;;;;AClBD,2DAA8D;AAE9D,SAAgB,wBAAwB,CACtC,cAAc,EACd,OAAO,EACP,iBAAiB;IAEjB,IACE,cAAc,KAAK,QAAQ;QAC3B,CAAC,iBAAiB;QAClB,0CAAkB,CAAC,OAAO,CAAC;QAC3B,OAAO,CAAC,cAAc,EACtB;QACA,OAAO,EAAE,CAAC;KACX;IAED,OAAO,CACL,gDAAgD,iBAAiB,KAAK;QACtE,uDAAuD,CACxD,CAAC;AACJ,CAAC;AAlBD,4DAkBC;;;;;;;;;;;;ACjBD,2DAA6D;AAC7D,8DAAuE;AAEvE,SAAgB,gBAAgB,CAC9B,WAA6D,EAC7D,OAA8B,EAC9B,iBAA0B;IAE1B,MAAM,oBAAoB,GAAG,oDAAwB,CACnD,WAAW,EACX,OAAO,EACP,iBAAiB,CAClB,CAAC;IACF,IAAI,oBAAoB,EAAE;QACxB,OAAO,oBAAoB,CAAC;KAC7B;IACD,MAAM,cAAc,GAAG,0CAAkB,CACvC,WAAW,EACX,OAAO,EACP,iBAAiB,CAClB,CAAC;IACF,IAAI,cAAc,EAAE;QAClB,OAAO,cAAc,CAAC;KACvB;IACD,OAAO,EAAE,CAAC;AACZ,CAAC;AAtBD,4CAsBC;;;;;;;;;;;;AC5BD,sCAAyB;AACzB,wCAA6B;AAE7B,SAAgB,eAAe,CAC7B,IAAY,EACZ,QAAgB;IAKhB,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IAC9C,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE;QAC5B,MAAM,IAAI,KAAK,CACb,WAAW,GAAG,QAAQ,GAAG,0BAA0B,GAAG,QAAQ,CAC/D,CAAC;KACH;IACD,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IACnD,OAAO;QACL,OAAO;QACP,QAAQ;KACT,CAAC;AACJ,CAAC;AAlBD,0CAkBC;;;;;;;;;;;;ACVD,IAAY,cAOX;AAPD,WAAY,cAAc;IACxB,mCAAiB;IACjB,+CAA6B;IAC7B,yDAAuC;IACvC,mCAAiB;IACjB,yCAAuB;IACvB,8CAA4B;AAC9B,CAAC,EAPW,cAAc,GAAd,sBAAc,KAAd,sBAAc,QAOzB;AAEY,mCAA2B,GAAsB;IAC5D,cAAc,CAAC,GAAG;IAClB,cAAc,CAAC,SAAS;IACxB,cAAc,CAAC,cAAc;IAC7B,cAAc,CAAC,GAAG;IAClB,cAAc,CAAC,SAAS;IACxB,cAAc,CAAC,MAAM;CACtB,CAAC;AAEW,2BAAmB,GAAwC;IACtE,SAAS,EAAE,KAAK;IAChB,oBAAoB,EAAE,gBAAgB;IACtC,SAAS,EAAE,YAAY;IACvB,eAAe,EAAE,WAAW;CAC7B,CAAC;;;;;;;;;;;;AClCF,wCAA8B;AAC9B,0CAA+B;AAC/B,gDAA8C;AAE9C,SAAgB,wBAAwB,CAAC,CAAS;IAChD,OAAO,iBAAiB,CAAC,0BAA0B,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1D,CAAC;AAFD,4DAEC;AAED,SAAgB,iBAAiB,CAAC,GAAY;IAC5C,MAAM,IAAI,GAAG,YAAY,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,WAAW,EAAE,iBAAiB,CAAC,EAAE;QAC3E,GAAG;KACJ,CAAC,CAAC;IACH,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE;QACrB,MAAM,IAAI,KAAK,EAAE,CAAC;KACnB;IACD,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,CAAC;AACvC,CAAC;AARD,8CAQC;AAED,SAAgB,0BAA0B,CAAC,CAAS;IAClD,IAAI,aAAQ,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,EAAE;QAC7B,OAAO,CAAC,CAAC;KACV;IACD,OAAO,cAAO,CAAC,CAAC,CAAC,CAAC;AACpB,CAAC;AALD,gEAKC;;;;;;;;;;;;ACrBD,SAAgB,kBAAkB,CAChC,OAAwE;IAExE,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,IAAI,OAAO,CAAC,cAAc,CAAC,CAAC;AAC3D,CAAC;AAJD,gDAIC;;;;;;;;;;;;ACND,MAAM,KAAK,GAAG,mBAAO,CAAC,KAAO,CAAC,CAAC,WAAW,CAAC,CAAC;AAE5C;;;;GAIG;AACH,SAAgB,wBAAwB,CAAC,GAAQ;IAC/C,IAAI,GAAG,GAAG,EAAE,CAAC;IACb,IAAI;QACF,yBAAyB;QACzB,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QACnC,OAAO,GAAG,CAAC;KACZ;IAAC,OAAO,GAAG,EAAE;QACZ,6CAA6C;QAC7C,KAAK,CAAC,2DAA2D,EAAE,GAAG,CAAC,CAAC;QACxE,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;QAC1B,OAAO,GAAG,CAAC;KACZ;AACH,CAAC;AAZD,4DAYC;;;;;;;;;;;;ACnBD,MAAM,KAAK,GAAG,mBAAO,CAAC,KAAc,CAAC,CAAC;AACtC,yCAA+B;AAG/B,MAAM,KAAK,GAAG,KAAK,CAAC,kBAAkB,CAAC,CAAC;AAExC,SAAgB,UAAU,CAAC,MAAM,EAAE,MAAM;IACvC,OAAO;QACL,KAAK,CAAC,OAAO,CACX,IAAI,EACJ,UAAU,EACV,OAAO;YAEP,MAAM,aAAa,GAAG,KAAK,CACzB;gBACE,IAAI,EAAE,OAAO,CAAC,eAAe;aAC9B,EACD,OAAO,CACR,CAAC;YAEF,KAAK,CAAC,0BAA0B,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,aAAa,EAAE,CAAC,CAAC;YACvE,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,UAAU,EAAE,aAAa,CAAC,CAAC;YACnE,KAAK,CAAC,uBAAuB,CAAC,CAAC;YAE/B,0CAA0C;YAC1C,IAAI,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;gBAClC,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC;aACzC;YAED,OAAO,IAAI,CAAC;QACd,CAAC;KACF,CAAC;AACJ,CAAC;AA1BD,gCA0BC;;;;;;;;;;;;AC9BD,SAAgB,4BAA4B,CAAC,OAAgB;IAC3D,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,IAAI,OAAO,CAAC,YAAY,EAAE;QACxB,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE;YACpD,MAAM,GAAG,GAAG,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;YACvC,IAAI,GAAG,EAAE;gBACP,KAAK,IAAI,CAAC,GAAG,4BAA4B,CAAC,GAAG,CAAC,CAAC;aAChD;SACF;KACF;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAXD,oEAWC;;;;;;;;;;;;ACbD;;;;;;;GAOG;AACH,mDAAqC;AAGxB,yBAAiB,GAAG,kBAAkB,CAAC;AACvC,0CAAkC,GAAG,EAAE,CAAC;AACrD,6FAA6F;AAChF,8BAAsB,GAAG,GAAG,CAAC;AAEnC,KAAK,UAAU,eAAe,CACnC,EAAE,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,GAAG;IAClC,OAAO,EAAE,IAAI,IAAI,EAAE;IACnB,UAAU,EAAE,0CAAkC;IAC9C,QAAQ,EAAE,OAAO,CAAC,GAAG,EAAE;CACxB;IAED,MAAM,2CAA2C,GAAG,2CAA2C,CAC7F,OAAO,EACP,UAAU,CACX,CAAC;IACF,MAAM,aAAa,GAAG,MAAM,SAAS,CACnC,2CAA2C,EAC3C,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,EACpC,QAAQ,EACR,SAAS,CACV,CAAC;IACF,MAAM,KAAK,GAAuB,WAAW,CAAC,aAAa,CAAC,CAAC;IAC7D,OAAO,KAAK,CAAC,mBAAmB,EAAE,CAAC;AACrC,CAAC;AAnBD,0CAmBC;AAED,MAAa,aAAa;IAIxB,YAAY,WAAmB,EAAE,eAAuB;QACtD,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QAC/B,IAAI,CAAC,eAAe,GAAG,eAAe,CAAC;IACzC,CAAC;CACF;AARD,sCAQC;AAED,MAAa,kBAAkB;IAG7B,YAAY,WAA4B;QACtC,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;IACjC,CAAC;IAEM,MAAM,CAAC,KAAK;QACjB,OAAO,IAAI,kBAAkB,CAAC,EAAE,CAAC,CAAC;IACpC,CAAC;IAEM,aAAa,CAAC,IAAmB;QACtC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC9B,CAAC;IAEM,qBAAqB;QAC1B,MAAM,kBAAkB,GAAG,IAAI,CAAC,qBAAqB,EAAE,CAAC;QACxD,OAAO,kBAAkB,CAAC,IAAI,CAAC;IACjC,CAAC;IAEM,eAAe;QACpB,OAAO,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC;IACjC,CAAC;IAEM,qBAAqB;QAC1B,MAAM,2BAA2B,GAAa,IAAI,CAAC,WAAW,CAAC,GAAG,CAChE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,CACrB,CAAC;QACF,MAAM,kBAAkB,GAAgB,IAAI,GAAG,CAC7C,2BAA2B,CAC5B,CAAC;QACF,OAAO,kBAAkB,CAAC;IAC5B,CAAC;IAEM,mBAAmB;QACxB,MAAM,kBAAkB,GAAG,IAAI,CAAC,qBAAqB,EAAE,CAAC;QACxD,MAAM,YAAY,GAAkB,EAAE,CAAC;QACvC,KAAK,MAAM,qBAAqB,IAAI,kBAAkB,EAAE;YACtD,MAAM,qBAAqB,GAAG,IAAI,CAAC,4BAA4B,CAC7D,qBAAqB,CACtB,CAAC;YACF,YAAY,CAAC,IAAI,CAAC;gBAChB,KAAK,EAAE,qBAAqB;gBAC5B,cAAc,EAAE,qBAAqB;aACtC,CAAC,CAAC;SACJ;QACD,OAAO,YAAY,CAAC;IACtB,CAAC;IAEM,4BAA4B,CAAC,iBAAyB;QAC3D,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,WAAW,EAAE;YACrC,IAAI,MAAM,CAAC,WAAW,KAAK,iBAAiB,EAAE;gBAC5C,OAAO,MAAM,CAAC,eAAe,CAAC;aAC/B;SACF;QACD,OAAO,EAAE,CAAC;IACZ,CAAC;CACF;AAzDD,gDAyDC;AAED,SAAgB,eAAe,CAAC,OAAe;IAC7C,MAAM,cAAc,GAAG,OAAO,CAAC,KAAK,CAAC,yBAAiB,CAAC,CAAC;IACxD,MAAM,WAAW,GAAG,cAAc,CAAC,CAAC,CAAC,CAAC;IACtC,MAAM,eAAe,GAAG,cAAc,CAAC,CAAC,CAAC,CAAC;IAC1C,MAAM,UAAU,GAAG,IAAI,aAAa,CAAC,WAAW,EAAE,eAAe,CAAC,CAAC;IACnE,OAAO,UAAU,CAAC;AACpB,CAAC;AAND,0CAMC;AAED,SAAgB,WAAW,CAAC,MAAc;IACxC,IAAI,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;QACxB,OAAO,kBAAkB,CAAC,KAAK,EAAE,CAAC;KACnC;IACD,MAAM,QAAQ,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC;IACvC,MAAM,YAAY,GAAoB,QAAQ,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;IACpE,MAAM,KAAK,GAAuB,IAAI,kBAAkB,CAAC,YAAY,CAAC,CAAC;IACvE,OAAO,KAAK,CAAC;AACf,CAAC;AARD,kCAQC;AAED;;GAEG;AACH,SAAgB,2CAA2C,CACzD,IAAU,EACV,iBAAyB,0CAAkC;IAE3D,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;IACpC,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,GAAG,IAAI,CAAC,CAAC;IACpD,MAAM,kBAAkB,GAAG,KAAK,CAAC;IACjC,MAAM,uBAAuB,GAAG,cAAc,GAAG,kBAAkB,CAAC;IACpE,MAAM,yBAAyB,GAAG,WAAW,GAAG,uBAAuB,CAAC;IACxE,OAAO,yBAAyB,CAAC;AACnC,CAAC;AAVD,kGAUC;AAEM,KAAK,UAAU,SAAS,CAC7B,kCAA0C,EAC1C,gCAAwC,EACxC,QAAgB,EAChB,UAAsE;IAEtE,IAAI;QACF,MAAM,aAAa,GAAG,0CAA0C,yBAAiB,MAAM,yBAAiB,MAAM,yBAAiB,iBAAiB,kCAAkC,cAAc,gCAAgC,iBAAiB,8BAAsB,EAAE,CAAC;QAC1Q,MAAM,YAAY,GAAW,MAAM,UAAU,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC;QACvE,OAAO,YAAY,CAAC;KACrB;IAAC,MAAM;QACN,OAAO,EAAE,CAAC;KACX;AACH,CAAC;AAbD,8BAaC;AAED,SAAgB,aAAa,CAAC,SAAiB;IAC7C,MAAM,iBAAiB,GAAG,IAAI,CAAC;IAC/B,MAAM,mBAAmB,GAAG,MAAM,CAAC;IACnC,MAAM,GAAG,GAAG,IAAI,MAAM,CAAC,GAAG,iBAAiB,IAAI,mBAAmB,EAAE,CAAC,CAAC;IACtE,MAAM,KAAK,GAAG,SAAS,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC1C,OAAO,KAAK,CAAC;AACf,CAAC;AAND,sCAMC;AAED,SAAgB,SAAS,CACvB,GAAW,EACX,gBAAwB;IAExB,MAAM,OAAO,GAAG;QACd,GAAG,EAAE,gBAAgB;KACtB,CAAC;IAEF,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,oBAAI,CAAC,GAAG,EAAE,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE;YAC3C,IAAI,KAAK,EAAE;gBACT,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC;gBAE5B,MAAM,CAAC,GAAG,IAAI,aAAa,CACzB,KAAK,CAAC,OAAO,EACb,QAAQ,EACR,MAAM,EACN,MAAM,EACN,KAAK,CACN,CAAC;gBACF,MAAM,CAAC,CAAC,CAAC,CAAC;aACX;iBAAM;gBACL,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;aACnC;QACH,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC;AA1BD,8BA0BC;AAED,MAAa,aAAc,SAAQ,KAAK;IAMtC,YACE,OAAe,EACf,QAA4B,EAC5B,MAAc,EACd,MAAc,EACd,UAA6B;QAE7B,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;IAC/B,CAAC;CACF;AAnBD,sCAmBC;;;;;;;;;;;;AC/MD,SAAgB,aAAa,CAAC,OAAgB;IAC5C,IAAI,OAAO,CAAC,YAAY,EAAE;QACxB,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;QAC/C,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE;YACrB,OAAO,OAAO,CAAC,YAAY,CAAC;SAC7B;aAAM;YACL,KAAK,MAAM,CAAC,IAAI,IAAI,EAAE;gBACpB,aAAa,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;aACxC;SACF;KACF;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAZD,sCAYC;;;;;;;;;;;;ACPD,SAAgB,oBAAoB,CAAC,OAAgB;IACnD,MAAM,YAAY,GAAG,EAAE,CAAC;IACxB,MAAM,WAAW,GAAa,EAAE,CAAC;IAEjC,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE;QACzB,OAAO;YACL,eAAe,EAAE,OAAO;YACxB,WAAW;SACZ,CAAC;KACH;IAED,KAAK,MAAM,MAAM,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE;QACtD,MAAM,GAAG,GAAG,OAAO,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;QACzC,IACG,GAAW,CAAC,oBAAoB;YACjC,CAAE,GAAW,CAAC,MAAM,IAAK,GAAW,CAAC,MAAM,CAAC,oBAAoB,CAAC,EACjE;YACA,wCAAwC;YACxC,WAAW,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;SAChD;aAAM;YACL,YAAY,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC;SAC5B;KACF;IACD,MAAM,eAAe,GAAY;QAC/B,GAAG,OAAO;QACV,YAAY,EAAE,YAAY;KAC3B,CAAC;IAEF,OAAO;QACL,eAAe;QACf,WAAW;KACZ,CAAC;AACJ,CAAC;AAhCD,oDAgCC;;;;;;;;;;;;ACvCD,yCAA+B;AAC/B,wCAA6B;AAC7B,+CAA+C;AAC/C,uCAA2B;AAC3B,+CAAoE;AACpE,6CAAyC;AACzC,4CAA+B;AAC/B,sCAAyB;AACzB,MAAM,GAAG,GAAG,mBAAO,CAAC,KAAY,CAAC,CAAC;AAClC,2CAAgC;AAChC,6CAA0C;AAY1C,kDAAuD;AACvD,4CAKmB;AACnB,2CAAsC;AACtC,sDAAuE;AACvE,8DAA0E;AAC1E,6DAAiE;AACjE,qDAAkD;AAClD,oDAA6C;AAC7C,4CAA8C;AAO9C,2CAAwD;AACxD,qDAAmE;AACnE,2CAKiB;AACjB,2CAAiD;AACjD,0CAAoC;AACpC,kDAAsD;AAEtD,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC;AAE5B,MAAM,4BAA4B,GAAG,IAAI,CAAC;AA+BnC,KAAK,UAAU,OAAO,CAC3B,IAAY,EACZ,IAAiB,EACjB,cAA8B,EAC9B,OAAiD,EACjD,UAA0B,EAC1B,sBAA+B,EAC/B,YAA4B,EAC5B,iBAAqC,EACrC,IAAY;IAEZ,iCAAqB,EAAE,CAAC;IAExB,MAAM,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC;IAC3C,SAAS,CAAC,GAAG,CAAC,gBAAgB,EAAE,cAAc,CAAC,CAAC;IAChD,SAAS,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAE3C,IAAI,cAAc,CAAC,QAAQ,EAAE;QAC3B,OAAO,MAAM,eAAe,CAC1B,IAAI,EACJ,IAAI,EACJ,cAAc,EACd,UAAU,EACV,OAAO,EACP,sBAAsB,EACtB,YAAY,EACZ,iBAAiB,EACjB,IAAI,CACL,CAAC;KACH;IAED,IAAI,mDAAgC,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE;QAC7D,OAAO,MAAM,0BAA0B,CACrC,IAAI,EACJ,IAAI,EACJ,cAAc,EACd,UAAU,EACV,OAAO,EACP,sBAAsB,EACtB,YAAY,EACZ,iBAAiB,EACjB,IAAI,CACL,CAAC;KACH;IAED,OAAO,MAAM,cAAc,CACzB,IAAI,EACJ,IAAI,EACJ,cAAc,EACd,UAAU,EACV,OAAO,EACP,sBAAsB,EACtB,YAAY,EACZ,iBAAiB,EACjB,IAAI,CACL,CAAC;AACJ,CAAC;AAxDD,0BAwDC;AAED,KAAK,UAAU,cAAc,CAC3B,IAAY,EACZ,IAAiB,EACjB,cAA8B,EAC9B,UAA0B,EAC1B,OAAuC,EACvC,sBAA+B,EAC/B,YAA4B,EAC5B,iBAAqC,EACrC,IAAY;;IAEZ,IAAI,eAAe,GAAa,EAAE,CAAC;IAEnC,MAAM,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC;IAE3C,IAAI,OAAO,GAAG,cAAc,CAAC,OAAO,CAAC;IAErC,IAAI,CAAC,OAAO,EAAE;QACZ,KAAK,CACH,wEAAwE,CACzE,CAAC;QACF,MAAM,IAAI,6BAAoB,CAC5B,8BAAqB,CAAC,8CAA8C,CAAC,CACtE,CAAC;KACH;IAED,IAAI,gBAAgB,CAAC;IACrB,IAAI,IAAI,CAAC,KAAK,EAAE;QACd,KAAK,CAAC,yCAAyC,CAAC,CAAC;QACjD,gBAAgB,GAAG,uDAA4B,CAAC,OAAO,CAAC,CAAC;QACzD,SAAS,CAAC,GAAG,CAAC,kBAAkB,EAAE,gBAAgB,CAAC,CAAC;QACpD,KAAK,CAAC,wBAAwB,EAAE,gBAAgB,CAAC,CAAC;QAClD,KAAK,CAAC,kBAAkB,CAAC,CAAC;QAC1B,OAAO,GAAG,MAAM,0BAAS,CAAC,OAAO,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;QACxD,KAAK,CAAC,2BAA2B,CAAC,CAAC;KACpC;IACD,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,cAAc,CAAC,EAAE;QACjD,MAAM,EAAE,eAAe,EAAE,WAAW,EAAE,GAAG,8CAAoB,CAAC,OAAO,CAAC,CAAC;QACvE,OAAO,GAAG,eAAe,CAAC;QAC1B,eAAe,GAAG,WAAW,CAAC;KAC/B;IAED,IAAI,aAAa,CAAC;IAElB,IAAI,sBAAsB,EAAE;QAC1B,MAAM,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,sBAAsB,CAAC,CAAC;QACnD,aAAa,GAAG,GAAG,CAAC;KACrB;IAED,MAAM,MAAM,GAAG,MAAM,0BAAiB,CACpC,IAAI,EACJ,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,cAAe,EAC1C,OAAO,EACP,OAAO,EACP,aAAa,CACd,CAAC;IAEF,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,OAAO,CAAC,cAAc,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;IAE5E,IAAI,mBAAW,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,MAAM,EAAE;QACxC,SAAS,CAAC,GAAG,CAAC,cAAc,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;KAC9C;IAED,OAAO,GAAG,+BAAa,CAAC,OAAO,CAAC,CAAC;IAEjC,IAAI,gBAAgB,CAAC;IACrB,IACE,OAAO,CAAC,cAAc,WACrB,cAAc,CAAC,SAA4B,0CAAE,UAAU,GACxD;QACA,MAAM,GAAG,GAAG,cAAc,CAAC,SAA2B,CAAC;QACvD,SAAS,CAAC,GAAG,CACX,gBAAgB,EAChB,kCAAmB,CACjB,GAAG,CAAC,UAAU,CAAC,QAAQ,EAAE,EACzB,4BAA4B,CAC7B,CACF,CAAC;QACF,MAAM,CAAC,cAAc,CAAC;YACpB;gBACE,IAAI,EAAE,OAAO;gBACb,IAAI,EAAE,oBAAoB;gBAC1B,GAAG,EAAE,GAAG,CAAC,OAAO;aACjB;SACF,CAAC,CAAC;KACJ;SAAM,IAAI,cAAc,CAAC,SAAS,EAAE;QACnC,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,GAAG,+CAA6B,CACvE,cAAc,CAAC,SAAsB,CACtC,CAAC;QACF,KAAK,CACH,6CAA6C,SAAS,iBAAiB,SAAS,EAAE,CACnF,CAAC;QAEF,MAAM,gBAAgB,GAAG,GAAG,CAAC,UAAU,EAAE,uBAAuB,EAAE,EAAE,CAAC,CAAC;QACtE,SAAS,CAAC,GAAG,CAAC,kBAAkB,EAAE;YAChC,kBAAkB,EAAE,SAAS;YAC7B,kBAAkB,EAAE,SAAS;YAC7B,GAAG,gBAAgB;SACpB,CAAC,CAAC;QACH,gBAAgB,GAAG,SAAS,CAAC;KAC9B;IAED,IAAI,CAAC,OAAO,EAAE;QACZ,KAAK,CACH,wEAAwE,CACzE,CAAC;QACF,MAAM,IAAI,6BAAoB,CAC5B,8BAAqB,CAAC,8CAA8C,CAAC,CACtE,CAAC;KACH;IAED,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,MAAM,qBAAW,CAAC;QACtC,IAAI,EAAE;YACJ,IAAI,EAAE;gBACJ,MAAM,EAAE,IAAI,CAAC,MAAM;gBACnB,QAAQ,EAAE,EAAE,CAAC,QAAQ,EAAE;gBACvB,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,OAAO,CAAC,IAAI;gBAC3B,EAAE,EAAE,YAAI,EAAE;gBACV,GAAG,EAAE,OAAO,CAAC,GAAG;gBAChB,IAAI,EAAE,OAAO,CAAC,OAAO;gBACrB,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ;gBAC5B,IAAI,EAAE,sBAAc,CAAC,cAAc,EAAE,OAAO,EAAE,IAAI,CAAC;gBACnD,OAAO,EAAE,OAAO,CAAC,OAAO;gBACxB,GAAG,EAAE,gBAAM,CAAC,GAAG,CAAC,CAAC,CAAC,kBAAkB,CAAC,gBAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS;gBAC5D,UAAU,EAAE,UAAU,CAAC,IAAI;gBAC3B,aAAa,EAAE,UAAU,CAAC,OAAO;gBACjC,WAAW,EAAE,eAAe;gBAC5B,aAAa,EAAE,UAAU,CAAC,aAAa;gBACvC,eAAe,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS;gBACtE,gBAAgB,EAAE,OAAO,CAAC,MAAM;oBAC9B,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,gBAAgB;oBACjC,CAAC,CAAC,SAAS;gBACb,WAAW,EAAE,sBAAc,CAAC,cAAc,EAAE,IAAI,CAAC;gBACjD,gBAAgB;gBAChB,YAAY,EAAE,KAAK;gBACnB,gBAAgB,EAAE,IAAI,CAAC,SAAS,OAAC,cAAc,CAAC,IAAI,0CAAE,gBAAgB,CAAC;gBACvE,iBAAiB,QAAE,cAAc,CAAC,IAAI,0CAAE,iBAAiB;gBACzD,QAAQ,QAAE,cAAc,CAAC,IAAI,0CAAE,QAAQ;aACxC;YACD,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,SAAS;YAC9C,OAAO,EAAE,OAAO;YAChB,SAAS,EAAE,gBAAgB;YAC3B,0CAA0C;YAC1C,gEAAgE;YAChE,MAAM;YACN,qEAAqE;YACrE,UAAU,EAAE,qBAAa,CAAC,cAAc,EAAE,UAAU,CAAC;YACrD,sBAAsB;YACtB,eAAe,EAAE,IAAI,CAAC,eAAe;YACrC,YAAY;YACZ,iBAAiB;YACjB,IAAI;SACU;QAChB,IAAI,EAAE,IAAI;QACV,MAAM,EAAE,KAAK;QACb,OAAO,EAAE;YACP,aAAa,EAAE,yBAAa,EAAE;YAC9B,kBAAkB,EAAE,MAAM;SAC3B;QACD,GAAG,EAAE,gBAAM,CAAC,GAAG,GAAG,WAAW,GAAG,cAAc;QAC9C,IAAI,EAAE,IAAI;KACX,CAAC,CAAC;IAEH,IAAI,GAAG,CAAC,UAAU,IAAI,GAAG,CAAC,UAAU,IAAI,GAAG,IAAI,GAAG,CAAC,UAAU,IAAI,GAAG,EAAE;QACpE,OAAO,IAAqB,CAAC;KAC9B;SAAM;QACL,MAAM,WAAW,GAAG,IAAI,IAAI,IAAI,CAAC,WAAW,CAAC;QAC7C,IAAI,CAAC,WAAW,IAAI,GAAG,CAAC,UAAU,KAAK,GAAG,EAAE;YAC1C,MAAM,IAAI,+BAAsB,EAAE,CAAC;SACpC;aAAM;YACL,MAAM,IAAI,qBAAY,CAAC,GAAG,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC;SACrD;KACF;AACH,CAAC;AAEM,KAAK,UAAU,eAAe,CACnC,IAAY,EACZ,IAAiB,EACjB,cAA8B,EAC9B,UAA0B,EAC1B,OAAuC,EACvC,sBAA+B,EAC/B,YAA4B,EAC5B,iBAAqC,EACrC,IAAY;;IAEZ,MAAM,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC;IAC3C,SAAS,CAAC,GAAG,CAAC,iBAAiB,EAAE,IAAI,CAAC,CAAC;IAEvC,IAAI,QAAQ,GAAG,cAAc,CAAC,QAAQ,CAAC;IAEvC,IAAI,CAAC,QAAQ,EAAE;QACb,KAAK,CACH,wEAAwE,CACzE,CAAC;QACF,MAAM,IAAI,6BAAoB,CAC5B,+CAA+C,CAChD,CAAC;KACH;IAED,IAAI,aAAa,CAAC;IAElB,IAAI,sBAAsB,EAAE;QAC1B,MAAM,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,sBAAsB,CAAC,CAAC;QACnD,aAAa,GAAG,GAAG,CAAC;KACrB;IAED,MAAM,MAAM,GAAG,MAAM,0BAAiB,CACpC,IAAI,EACJ,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,cAAe,EAC1C,OAAO,EACP,SAAS,EACT,aAAa,CACd,CAAC;IAEF,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,OAAO,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC;IACnE,IAAI,mBAAW,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,MAAM,EAAE;QACxC,SAAS,CAAC,GAAG,CAAC,cAAc,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;KAC9C;IAED,MAAM,eAAe,GAAG,OAAO,CAAC,4BAA4B,CAAC;IAC7D,QAAQ,GAAG,MAAM,kBAAU,CAAC,QAAQ,EAAE,cAAc,EAAE,eAAe,CAAC,CAAC;IAEvE,IAAI,gBAAgB,CAAC;IACrB,IACE,OAAO,CAAC,cAAc,WACrB,cAAc,CAAC,SAA4B,0CAAE,UAAU,GACxD;QACA,MAAM,GAAG,GAAG,cAAc,CAAC,SAA2B,CAAC;QACvD,SAAS,CAAC,GAAG,CACX,gBAAgB,EAChB,kCAAmB,CACjB,GAAG,CAAC,UAAU,CAAC,QAAQ,EAAE,EACzB,4BAA4B,CAC7B,CACF,CAAC;QACF,MAAM,CAAC,cAAc,CAAC;YACpB;gBACE,IAAI,EAAE,OAAO;gBACb,IAAI,EAAE,oBAAoB;gBAC1B,GAAG,EAAE,GAAG,CAAC,OAAO;aACjB;SACF,CAAC,CAAC;KACJ;SAAM,IAAI,cAAc,CAAC,SAAS,EAAE;QACnC,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,GAAG,+CAA6B,CACvE,cAAc,CAAC,SAAsB,CACtC,CAAC;QACF,KAAK,CACH,6CAA6C,SAAS,iBAAiB,SAAS,EAAE,CACnF,CAAC;QAEF,MAAM,gBAAgB,GAAG,GAAG,CAAC,UAAU,EAAE,uBAAuB,EAAE,EAAE,CAAC,CAAC;QACtE,SAAS,CAAC,GAAG,CAAC,kBAAkB,EAAE;YAChC,kBAAkB,EAAE,SAAS;YAC7B,kBAAkB,EAAE,SAAS;YAC7B,GAAG,gBAAgB;SACpB,CAAC,CAAC;QACH,gBAAgB,GAAG,SAAS,CAAC;KAC9B;IAED,IAAI,CAAC,QAAQ,EAAE;QACb,KAAK,CACH,wEAAwE,CACzE,CAAC;QACF,MAAM,IAAI,6BAAoB,CAC5B,8BAAqB,CAAC,8CAA8C,CAAC,CACtE,CAAC;KACH;IAED,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,MAAM,qBAAW,CAAC;QACtC,IAAI,EAAE;YACJ,IAAI,EAAE;gBACJ,MAAM,EAAE,IAAI,CAAC,MAAM;gBACnB,QAAQ,EAAE,EAAE,CAAC,QAAQ,EAAE;gBACvB,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,QAAQ,CAAC,OAAO,CAAC,IAAI;gBACpC,EAAE,EAAE,YAAI,EAAE;gBACV,GAAG,EAAE,OAAO,CAAC,GAAG;gBAChB,IAAI,EAAE,OAAO,CAAC,OAAO;gBACrB,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ;gBAC5B,IAAI,EAAE,uBAAe,CAAC,cAAc,EAAE,QAAQ,EAAE,IAAI,CAAC;gBACrD,OAAO,EAAE,QAAQ,CAAC,OAAO,CAAC,OAAO;gBACjC,GAAG,EAAE,gBAAM,CAAC,GAAG,CAAC,CAAC,CAAC,kBAAkB,CAAC,gBAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS;gBAC5D,UAAU,EAAE,UAAU,CAAC,IAAI;gBAC3B,aAAa,EAAE,UAAU,CAAC,OAAO;gBACjC,WAAW,EAAE,sBAAc,CAAC,cAAc,EAAE,IAAI,CAAC;gBACjD,YAAY,EAAE,IAAI;gBAClB,gBAAgB,EAAE,IAAI,CAAC,SAAS,OAAC,cAAc,CAAC,IAAI,0CAAE,gBAAgB,CAAC;gBACvE,iBAAiB,QAAE,cAAc,CAAC,IAAI,0CAAE,iBAAiB;aAC1D;YACD,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,SAAS;YAC9C,YAAY,EAAE,QAAQ;YACtB,0CAA0C;YAC1C,gEAAgE;YAChE,MAAM;YACN,UAAU,EAAE,qBAAa,CAAC,cAAc,EAAE,UAAU,CAAC;YACrD,sBAAsB;YACtB,eAAe,EAAE,IAAI,CAAC,eAAe;YACrC,YAAY;YACZ,SAAS,EAAE,gBAAgB;YAC3B,iBAAiB;YACjB,IAAI;SACU;QAChB,IAAI,EAAE,IAAI;QACV,MAAM,EAAE,KAAK;QACb,OAAO,EAAE;YACP,aAAa,EAAE,yBAAa,EAAE;YAC9B,kBAAkB,EAAE,MAAM;SAC3B;QACD,GAAG,EAAE,GAAG,gBAAM,CAAC,GAAG,YAAY,cAAc,QAAQ;QACpD,IAAI,EAAE,IAAI;KACX,CAAC,CAAC;IAEH,IAAI,GAAG,CAAC,UAAU,IAAI,GAAG,CAAC,UAAU,IAAI,GAAG,IAAI,GAAG,CAAC,UAAU,IAAI,GAAG,EAAE;QACpE,OAAO,IAAqB,CAAC;KAC9B;SAAM;QACL,MAAM,WAAW,GAAG,IAAI,IAAI,IAAI,CAAC,WAAW,CAAC;QAC7C,IAAI,CAAC,WAAW,IAAI,GAAG,CAAC,UAAU,KAAK,GAAG,EAAE;YAC1C,MAAM,IAAI,+BAAsB,EAAE,CAAC;SACpC;aAAM;YACL,MAAM,IAAI,qBAAY,CAAC,GAAG,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC;SACrD;KACF;AACH,CAAC;AAnJD,0CAmJC;AAED,KAAK,UAAU,0BAA0B,CACvC,IAAY,EACZ,IAAiB,EACjB,cAA8B,EAC9B,UAA0B,EAC1B,OAAuC,EACvC,sBAA+B,EAC/B,YAA4B,EAC5B,iBAAqC,EACrC,IAAY;IAEZ,MAAM,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC;IAE3C,IAAI,eAAqC,CAAC;IAC1C,IAAI,OAAO,GAAG,cAAc,CAAC,OAAO,CAAC;IAErC,IAAI,CAAC,OAAO,EAAE;QACZ,KAAK,CACH,wEAAwE,CACzE,CAAC;QACF,MAAM,IAAI,6BAAoB,CAC5B,8BAAqB,CAAC,6CAA6C,CAAC,CACrE,CAAC;KACH;IAED,IAAI,aAAa,CAAC;IAElB,IAAI,sBAAsB,EAAE;QAC1B,MAAM,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,sBAAsB,CAAC,CAAC;QACnD,aAAa,GAAG,GAAG,CAAC;KACrB;IAED,MAAM,MAAM,GAAG,MAAM,0BAAiB,CACpC,IAAI,EACJ,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,cAAe,EAC1C,OAAO;IACP,uEAAuE;IACvE,8CAA8C;IAC9C,OAAO,EACP,aAAa,CACd,CAAC;IAEF,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,cAAc,CAAC,EAAE;QACjD,MAAM,EAAE,eAAe,EAAE,WAAW,EAAE,GAAG,8CAAoB,CAAC,OAAO,CAAC,CAAC;QACvE,OAAO,GAAG,eAAe,CAAC;QAC1B,eAAe,GAAG,WAAW,CAAC;KAC/B;IAED,MAAM,QAAQ,GAAyB,MAAM,WAAW,CAAC,MAAM,CAAC,cAAc,CAC5E,OAAO,EACP,cAAc,CACf,CAAC;IACF,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,OAAO,CAAC,cAAc,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;IAE5E,IAAI,mBAAW,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,MAAM,EAAE;QACxC,SAAS,CAAC,GAAG,CAAC,cAAc,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;KAC9C;IAED,IAAI,WAAW,GAAG,QAAQ,CAAC;IAC3B,IAAI,gBAAgB,CAAC;IACrB,IAAI,IAAI,CAAC,KAAK,EAAE;QACd,KAAK,CAAC,2BAA2B,CAAC,CAAC;QACnC,gBAAgB,GAAG,6BAAqB,CAAC,QAAQ,CAAC,CAAC;QACnD,KAAK,CAAC,wBAAwB,GAAG,gBAAgB,CAAC,CAAC;QACnD,WAAW,GAAG,MAAM,kBAAU,CAAC,QAAQ,EAAE,cAAc,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;KACtE;IAED,IAAI,CAAC,OAAO,EAAE;QACZ,KAAK,CACH,wEAAwE,CACzE,CAAC;QACF,MAAM,IAAI,6BAAoB,CAC5B,8BAAqB,CAAC,8CAA8C,CAAC,CACtE,CAAC;KACH;IACD,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,MAAM,qBAAW,CAAC;QACtC,IAAI,EAAE;YACJ,IAAI,EAAE;gBACJ,MAAM,EAAE,IAAI,CAAC,MAAM;gBACnB,QAAQ,EAAE,EAAE,CAAC,QAAQ,EAAE;gBACvB,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,OAAO,CAAC,IAAI;gBAC3B,EAAE,EAAE,YAAI,EAAE;gBACV,GAAG,EAAE,OAAO,CAAC,GAAG;gBAChB,IAAI,EAAE,OAAO,CAAC,OAAO;gBACrB,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ;gBAC5B,IAAI,EAAE,uBAAe,CAAC,cAAc,EAAE,QAAQ,EAAE,IAAI,CAAC;gBACrD,OAAO,EAAE,QAAQ,CAAC,OAAO,CAAC,OAAO;gBACjC,GAAG,EAAE,gBAAM,CAAC,GAAG,CAAC,CAAC,CAAC,kBAAkB,CAAC,gBAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS;gBAC5D,UAAU,EAAE,UAAU,CAAC,IAAI;gBAC3B,aAAa,EAAE,UAAU,CAAC,OAAO;gBACjC,aAAa,EAAE,UAAU,CAAC,aAAa;gBACvC,eAAe,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS;gBACtE,gBAAgB,EAAE,OAAO,CAAC,MAAM;oBAC9B,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,gBAAgB;oBACjC,CAAC,CAAC,SAAS;gBACb,WAAW,EAAE,sBAAc,CAAC,cAAc,EAAE,IAAI,CAAC;gBACjD,gBAAgB;gBAChB,WAAW,EAAE,eAAe;gBAC5B,YAAY,EAAE,IAAI;aACnB;YACD,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,SAAS;YAC9C,YAAY,EAAE,WAAW;YACzB,0CAA0C;YAC1C,gEAAgE;YAChE,MAAM;YACN,UAAU,EAAE,qBAAa,CAAC,cAAc,EAAE,UAAU,CAAC;YACrD,sBAAsB;YACtB,eAAe,EAAE,IAAI,CAAC,eAAe;YACrC,YAAY;YACZ,iBAAiB;YACjB,IAAI;SACU;QAChB,IAAI,EAAE,IAAI;QACV,MAAM,EAAE,KAAK;QACb,OAAO,EAAE;YACP,aAAa,EAAE,yBAAa,EAAE;YAC9B,kBAAkB,EAAE,MAAM;SAC3B;QACD,GAAG,EAAE,GAAG,gBAAM,CAAC,GAAG,YAAY,cAAc,QAAQ;QACpD,IAAI,EAAE,IAAI;KACX,CAAC,CAAC;IAEH,IAAI,GAAG,CAAC,UAAU,IAAI,GAAG,CAAC,UAAU,IAAI,GAAG,IAAI,GAAG,CAAC,UAAU,IAAI,GAAG,EAAE;QACpE,OAAO,IAAqB,CAAC;KAC9B;SAAM;QACL,MAAM,WAAW,GAAG,IAAI,IAAI,IAAI,CAAC,WAAW,CAAC;QAC7C,IAAI,CAAC,WAAW,IAAI,GAAG,CAAC,UAAU,KAAK,GAAG,EAAE;YAC1C,MAAM,IAAI,+BAAsB,EAAE,CAAC;SACpC;aAAM;YACL,MAAM,IAAI,qBAAY,CAAC,GAAG,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC;SACrD;KACF;AACH,CAAC;;;;;;;;;;;;ACzlBD,+CAA+C;AAGxC,KAAK,UAAU,SAAS,CAC7B,IAAa,EACb,kBAA0B;IAE1B,kDAAkD;IAClD,gBAAgB;IAChB,MAAM,KAAK,GAAG,MAAM,WAAW,CAAC,MAAM,CAAC,cAAc,CACnD,IAAI,EACJ,kBAAkB,CACnB,CAAC;IACF,MAAM,UAAU,GAAY,CAAC,MAAM,WAAW,CAAC,MAAM,CAAC,cAAc,CAClE,KAAK,EACL,kBAAkB,EAClB,EAAE,6BAA6B,EAAE,IAAI,EAAE,CACxC,CAAY,CAAC;IACd,0FAA0F;IAC1F,IAAI,CAAC,YAAY,GAAG,UAAU,CAAC,YAAY,CAAC;IAC5C,OAAO,IAAI,CAAC;AACd,CAAC;AAlBD,8BAkBC;;;;;;;;;;;;ACpBD,+CAKsB;AAKtB,SAAgB,cAAc,CAC5B,cAA8B,EAC9B,OAAgB,EAChB,IAAiB;IAEjB,IAAI,uBAAW,CAAC,cAAc,CAAC,EAAE;QAC/B,OAAO,4BAAgB,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC;KAC/C;IACD,OAAO,OAAO,CAAC,IAAI,CAAC;AACtB,CAAC;AATD,wCASC;AAED,SAAgB,eAAe,CAC7B,cAA8B,EAC9B,QAA8B,EAC9B,IAAiB;;IAEjB,IAAI,uBAAW,CAAC,cAAc,CAAC,EAAE;QAC/B,OAAO,4BAAgB,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC;KAC/C;IACD,aAAO,QAAQ,CAAC,OAAO,0CAAE,IAAI,CAAC;AAChC,CAAC;AATD,0CASC;AAED,SAAgB,cAAc,CAC5B,cAA8B,EAC9B,IAAiB;;IAEjB,IAAI,uBAAW,CAAC,cAAc,CAAC,EAAE;QAC/B,OAAO,mCAAuB,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC;KACtD;IAED,IAAI,IAAI,CAAC,cAAc,CAAC,WAAI,cAAc,CAAC,IAAI,0CAAE,WAAW,GAAE;QAC5D,OAAO,cAAc,CAAC,IAAI,CAAC,WAAW,CAAC;KACxC;IAED,OAAO,IAAI,CAAC,cAAc,CAAC,CAAC;AAC9B,CAAC;AAbD,wCAaC;AAED,SAAgB,aAAa,CAC3B,cAA8B,EAC9B,UAA0B;IAE1B,IAAI,uBAAW,CAAC,cAAc,CAAC,EAAE;QAC/B,OAAO,kCAAsB,CAAC,cAAc,CAAC,CAAC;KAC/C;IACD,OAAO,UAAU,CAAC,UAAU,CAAC;AAC/B,CAAC;AARD,sCAQC;;;;;;;;;;;;ACvDD,4CAA8B;AAE9B,kDAAoD;AACpD,2DAA6D;AAC7D,4CAAoE;AACpE,0CAAmC;AAE5B,KAAK,UAAU,eAAe,CACnC,OAA6D,EAC7D,cAAyC;IAEzC,IAAI,OAAO,CAAC,cAAc,EAAE;QAC1B,MAAM,CAAC,cAAc,CAAC;YACpB;gBACE,IAAI,EAAE,SAAS;gBACf,IAAI,EAAE,uBAAuB;gBAC7B,GAAG,EAAE,cAAc,CAAC,4BAA4B;aACjD;SACF,CAAC,CAAC;KACJ;IAED,IAAI,OAAO,CAAC,cAAc,EAAE;QAC1B,mFAAmF;QACnF,IAAI,CAAC,cAAc,IAAI,CAAC,0CAAkB,CAAC,OAAO,CAAC,EAAE;YACnD,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;SACxD;QACD,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,gBAAM,CAAC,GAAG,CAAC;QAEtC,IAAI;YACF,MAAM,cAAc,CAAC,eAAe,CAAC,GAAG,EAAE,OAAO,EAAE,cAAc,CAAC,CAAC;SACpE;QAAC,OAAO,GAAG,EAAE;YACZ,IACE,GAAG,YAAY,iDAAwC;gBACvD,GAAG,CAAC,OAAO,KAAK,iBAAiB;gBACjC,GAAG,CAAC,WAAW,EACf;gBACA,MAAM,CAAC,cAAc,CAAC;oBACpB;wBACE,IAAI,EAAE,OAAO;wBACb,IAAI,EAAE,sBAAsB;wBAC5B,GAAG,EAAE,GAAG,CAAC,WAAW;qBACrB;iBACF,CAAC,CAAC;aACJ;iBAAM;gBACL,MAAM,GAAG,CAAC;aACX;SACF;KACF;AACH,CAAC;AAzCD,0CAyCC;;;;;;;;;;;;AC/CD,wEAAsF;AAGtF,SAAgB,+BAA+B,CAC7C,UAAwC,EACxC,cAAyC,EACzC,UAAmB;IAEnB,uEAAuE;IACvE,uDAAuD;IACvD,OAAO;QACL,MAAM,EAAE,UAAU,CAAC,MAAM;QACzB,eAAe,EAAE,mEAA8B,CAC7C,UAAU,CAAC,eAAe,EAC1B,UAAU,CAAC,MAAM,EAChB,UAAU,CAAC,MAAM,CAAC,cAA2C;YAC5D,cAAc,EAChB,UAAU,CACX;KACF,CAAC;AACJ,CAAC;AAjBD,0EAiBC;;;;;;;;;;;;ACjBD,SAAgB,8BAA8B,CAC5C,eAA2D,EAC3D,UAA0B,EAC1B,cAAyC,EACzC,UAAmB;IAEnB,uDAAuD;IACvD,qBAAqB;IACrB,OAAO,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;QAC9B,CAA0B,CAAC,MAAM;YAC/B,CAA0B,CAAC,MAAM,IAAI,UAAU,CAAC;QAClD,CAA0B,CAAC,UAAU,GAAG,CAAC,CAAC,UAAU,IAAI,UAAU,CAAC;QACnE,CAA0B,CAAC,cAAc,GAAI,CAA0B;aACrE,cAAc;YACf,CAAC,CAAE,CAA0B,CAAC,cAAc;YAC5C,CAAC,CAAE,cAA2C,CAAC;QAChD,CAA0B,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC;QAC1C,OAAO,CAAyB,CAAC;IACnC,CAAC,CAAC,CAAC;AACL,CAAC;AAnBD,wEAmBC;;;;;;;;;;;;ACnBD,SAAgB,gCAAgC,CAC9C,UAAyC,EACzC,cAAyC;IAEzC,IAAI,CAAC,cAAc,EAAE;QACnB,cAAc,GAAG,UAAU,CAAC,MAAM;aAC/B,cAA0C,CAAC;KAC/C;IACD,IAAI,UAAU,CAAC,eAAe,EAAE;QAC9B,OAAO,qBAAqB,CAAC,UAAU,EAAE,cAAc,CAAC,CAAC;KAC1D;SAAM;QACL,OAAO,oBAAoB,CAAC,UAAU,EAAE,cAAc,CAAC,CAAC;KACzD;AACH,CAAC;AAbD,4EAaC;AAED,SAAS,qBAAqB,CAC5B,UAAyC,EACzC,cAAwC;IAExC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,eAAe,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,UAAU,CAAC;IAC1E,OAAO;QACL,MAAM;QACN,eAAe,EAAE;YACf;gBACE,MAAM,EAAE,MAAa;gBACrB,QAAQ;gBACR,SAAS,EAAE,SAAsB;gBACjC,IAAI;gBACJ,UAAU,EAAE,MAAM,CAAC,UAAU;gBAC7B,cAAc;aACf;SACF;KACF,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAS,oBAAoB,CAC3B,UAAyC,EACzC,cAAwC;IAExC,IACE,UAAU,CAAC,OAAO;QAClB,CAAC,UAAU,CAAC,OAAO,CAAC,UAAU;QAC9B,UAAU,CAAC,MAAM,EACjB;QACA,UAAU,CAAC,OAAO,CAAC,UAAU,GAAG,UAAU,CAAC,MAAM,CAAC,UAAU,CAAC;KAC9D;IACD,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,UAAU,CAAC;IAEjE,IAAI,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,IAAI,MAAM,EAAE;QAC5C,OAAO,CAAC,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;KACxC;IAED,OAAO;QACL,MAAM;QACN,eAAe,EAAE;YACf;gBACE,MAAM,EAAE,MAAa;gBACrB,OAAO;gBACP,SAAS,EAAE,SAAsB;gBACjC,IAAI;gBACJ,UAAU,EAAE,MAAM,CAAC,UAAU;gBAC7B,cAAc;aACf;SACF;KACF,CAAC;AACJ,CAAC;;;;;;;;;;;;ACrED,SAAgB,qBAAqB,CACnC,cAAoC,EACpC,SAAuD,EACvD,OAEC;IAED,kDAAkD;IAClD,oBAAoB;IACpB,MAAM,cAAc,GAClB,cAAc,CAAC,cAAc;QAC7B,CAAC,SAAS,CAAC,MAAM,IAAI,SAAS,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;IAExD,IAAI,cAAc,EAAE;QAClB,OAAO,cAAc,CAAC;KACvB;IAED,IAAI,CAAC,cAAc,IAAI,OAAO,CAAC,cAAc,EAAE;QAC7C,qCAAqC;QACrC,OAAO,OAAO,CAAC,cAAc,CAAC;KAC/B;IAED,sBAAsB;IACtB,OAAO,SAAS,CAAC;AACnB,CAAC;AAxBD,sDAwBC;;;;;;;;;;;;AC5BD,+CAAqC;AACrC,2CAAgC;AAChC,2CAA0B;AAC1B,2CAAgC;AAChC,mDAAgE;AAChE,gDAAqC;AAErC,4CAA2D;AAC3D,6DAGmC;AACnC,6DAAmE;AACnE,4CAImB;AACnB,6CAA2C;AAC3C,gFAAgG;AAChG,8EAA6F;AAC7F,4DAA+E;AAG/E,MAAM,KAAK,GAAG,WAAW,CAAC,WAAW,CAAC,CAAC;AAEvC,MAAM,sBAAsB,GAAG;IAC7B,cAAc,EAAE;QACd,OAAO,EAAE,8CAAqB;QAC9B,KAAK,EAAE,CAAC,cAAc,CAAC;KACxB;IACD,WAAW,EAAE;QACX,OAAO,EAAE,8CAAoB;QAC7B,KAAK,EAAE,8BAAqB;KAC7B;CACF,CAAC;AAEF,mEAAmE;AAC5D,KAAK,UAAU,iBAAiB,CACrC,IAAY,EACZ,OAAiD;IAEjD,IAAI,UAAmC,CAAC;IAExC,IAAI,MAAM,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE;QACnE,MAAM,QAAQ,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,aAAa,CAAC;QAC3E,MAAM,UAAU,GAAG,OAAO,CAAC,cAAc,CAAC;QAC1C,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACjE,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,GAAG,MAAM,iBAAI,CACtD,IAAI,EACJ,MAAM,EACN,sBAAsB,CAAC,QAAQ,CAAC,CAAC,KAAK,EACtC,UAAU,CACX,CAAC;QACF,KAAK,CACH,qCAAqC,WAAW,CAAC,MAAM,EAAE,EACzD,WAAW,CACZ,CAAC;QACF,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE;YAC5B,MAAM,uCAA8B,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;SAC9C;QACD,0CAA0C;QAC1C,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC;QAC9B,UAAU,GAAG,MAAM,sBAAsB,CAAC,QAAQ,CAAC,CAAC,OAAO,CACzD,IAAI,EACJ,OAAO,EACP,WAAW,CACZ,CAAC;QACF,MAAM,eAAe,GAAG,UAAU,CAAC,eAAe,CAAC;QACnD,MAAM,YAAY,GAAG;YACnB,eAAe,EAAE,eAAe,CAAC,MAAM;YACvC,WAAW;YACX,eAAe,EAAE,WAAW,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CACxC,qCAA4B,CAAC,IAAI,CAAC,CACnC;YACD,UAAU;YACV,MAAM;SACP,CAAC;QACF,SAAS,CAAC,GAAG,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;QACtC,KAAK,CACH,SAAS,eAAe,CAAC,MAAM,kBAAkB,aAAa,CAAC,MAAM,qBAAqB,CAC3F,CAAC;QACF,MAAM,kBAAkB,GAAG,iCAAiC,CAC1D,eAAe,EACf,aAAa,EACb,IAAI,CACL,CAAC;QAEF,IAAI,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,IAAI,kBAAkB,EAAE;YACzD,OAAO,CAAC,IAAI,CAAC,eAAK,CAAC,IAAI,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC,CAAC;SAClD;QACD,OAAO,UAAU,CAAC;KACnB;IAED,2DAA2D;IAC3D,iEAAiE;IACjE,IAAI,CAAC,OAAO,CAAC,gBAAgB,EAAE;QAC7B,OAAO,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,0BAAiB,CAAC,IAAI,CAAC,CAAC;KACxD;IACD,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,CAAC,CAAC,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC,cAAc,CAAC,EAAE;QAChE,MAAM,uCAA8B,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;KACjD;IACD,UAAU,GAAG,MAAM,gDAAqB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAExD,IAAI,CAAC,4BAAS,CAAC,aAAa,CAAC,UAAU,CAAC,EAAE;QACxC,IAAI,CAAC,UAAU,CAAC,OAAO,IAAI,CAAC,UAAU,CAAC,eAAe,EAAE;YACtD,kDAAkD;YAClD,MAAM,KAAK,CACT,mCACE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,cACtC,GAAG,GAAG,4DAA4D,CACnE,CAAC;SACH;QAED,OAAO,6EAAgC,CAAC,UAAU,EAAE,OAAO,CAAC,cAAc,CAAC,CAAC;KAC7E;IACD,mGAAmG;IACnG,qDAAqD;IACrD,+EAA+E;IAC9E,OAAe,CAAC,YAAY,GAAG,UAAU,CAAC,eAAe,CAAC,GAAG,CAC5D,CAAC,cAAc,EAAE,EAAE,wBAAC,cAAc,aAAd,cAAc,uBAAd,cAAc,CAAE,OAAO,0CAAE,IAAI,IAClD,CAAC;IACF,OAAO,0EAA+B,CAAC,UAAU,EAAE,OAAO,CAAC,cAAc,CAAC,CAAC;AAC7E,CAAC;AArFD,8CAqFC;AAED,SAAgB,iCAAiC,CAC/C,eAAiC,EACjC,aAAuB,EACvB,IAAY;IAEZ,MAAM,uBAAuB,GAAG,CAAC,UAAU,EAAE,EAAE,CAC7C,UAAU;QACV,CAAC,UAAU,CAAC,QAAQ,CAAC,cAAc,CAAC;YAClC,UAAU,CAAC,QAAQ,CAAC,kBAAkB,CAAC,CAAC,CAAC;IAC7C,MAAM,kBAAkB,GAAG,eAAe;SACvC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;;QACT,MAAM,UAAU,GAAG,QAAC,CAAC,IAAI,0CAAE,UAAU,KAAI,CAAC,CAAC,UAAU,CAAC;QACtD,OAAO,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAC/D,CAAC,CAAC;SACD,MAAM,CAAC,uBAAuB,CAAC,CAAC;IACnC,MAAM,mBAAmB,GAAG,aAAa,CAAC,MAAM,CAAC,uBAAuB,CAAC,CAAC;IAC1E,MAAM,IAAI,GAAG,mBAAmB,CAAC,MAAM,CACrC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,kBAAkB,CAAC,QAAQ,CAAC,IAAI,CAAC,CAC7C,CAAC;IAEF,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;QACnB,KAAK,CACH,kEAAkE,IAAI,CAAC,IAAI,CACzE,KAAK,CACN,EAAE,CACJ,CAAC;QACF,OAAO,GAAG,YAAI,CAAC,KAAK,IAAI,IAAI,CAAC,MAAM,IAAI,mBAAmB,CAAC,MAAM,sOAAsO,CAAC;KACzS;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AA7BD,8EA6BC;;;;;;;;;;;;ACzJD,gDAAqC;AACrC,4CAAkD;AAG3C,KAAK,UAAU,oBAAoB,CACxC,IAAY,EACZ,OAAgB,EAChB,aAAsC;IAEtC,IAAI,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,SAAS,EAAE;QACvC,OAAO,SAAS,CAAC;KAClB;IACD,IACE,aAAa,CAAC,MAAM,CAAC,IAAI;QACzB,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,kBAAkB;QAC5C,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,MAAM,GAAG,CAAC,EACvD;QACA,OAAO,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC;KAC5D;IACD,IAAI;QACF,MAAM,EAAE,KAAK,EAAE,gBAAgB,EAAE,GAAG,MAAM,iBAAI,CAC5C,IAAI,EACJ,EAAE,EACF,8BAAqB,CACtB,CAAC;QACF,MAAM,kBAAkB,GACtB,gBAAgB,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QACxE,OAAO,kBAAkB,CAAC;KAC3B;IAAC,OAAO,CAAC,EAAE;QACV,OAAO,SAAS,CAAC;KAClB;AACH,CAAC;AA3BD,oDA2BC;;;;;;;;;;;;AChCD,6CAA8C;AAC9C,2CAAgC;AAChC,gDAAoD;AACpD,2CAA0B;AAC1B,2CAAgC;AAChC,+CAAqC;AAGrC,4CAAyD;AAEzD,6DAAmE;AACnE,gFAAgG;AAChG,8EAA6F;AAG7F,4CAAwE;AACxE,4DAA+E;AAE/E,MAAM,KAAK,GAAG,WAAW,CAAC,WAAW,CAAC,CAAC;AAmBhC,KAAK,UAAU,oBAAoB,CACxC,IAAY,EACZ,OAAiD,EACjD,WAAqB;;IAErB,MAAM,UAAU,GAA2B,EAAE,CAAC;IAC9C,MAAM,aAAa,GAA6B,EAAE,CAAC;IAEnD,oCAAoC;IACpC,gFAAgF;IAChF,MAAM,EACJ,eAAe,EACf,gBAAgB,GACjB,GAAG,MAAM,6BAA6B,CAAC,IAAI,EAAE,OAAO,EAAE,WAAW,CAAC,CAAC;IACpE,UAAU,CAAC,IAAI,CAAC,GAAG,eAAe,CAAC,CAAC;IACpC,KAAK,CAAC,4BAA4B,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAClE,mDAAmD;IACnD,KAAK,MAAM,UAAU,IAAI,gBAAgB,EAAE;QACzC,MAAM,YAAY,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC;QACxC,YAAY,CAAC,IAAI,GAAG,OAAO,CAAC,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;QACvD,YAAY,CAAC,cAAc,GAAG,qCAA4B,CACxD,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,CAC7B,CAAC;QACF,IAAI;YACF,MAAM,UAAU,GAAG,MAAM,gDAAqB,CAC5C,IAAI,EACJ,YAAY,EACZ,YAAY,CAAC,IAAI,CAClB,CAAC;YACF,IAAI,yBAAuE,CAAC;YAE5E,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,aAAa,CAAC,UAAU,CAAC,EAAE;gBACxD,yBAAyB,GAAG,6EAAgC,CAC1D,UAAU,EACV,YAAY,CAAC,cAAc,CAC5B,CAAC;aACH;iBAAM;gBACL,yBAAyB,GAAG,UAAU,CAAC;aACxC;YAED,MAAM,qCAAqC,GAAG,0EAA+B,CAC3E,yBAAyB,EACzB,YAAY,CAAC,cAAc,EAC3B,YAAY,CAAC,IAAI,CAClB,CAAC;YACF,qEAAqE;YACrE,qBAAqB;YACrB,4DAA4D;YAC3D,OAAe,CAAC,YAAY,GAAG,yBAAyB,CAAC,eAAe,CAAC,GAAG,CAC3E,CAAC,cAAc,EAAE,EAAE,wBAAC,cAAc,aAAd,cAAc,uBAAd,cAAc,CAAE,OAAO,0CAAE,IAAI,IAClD,CAAC;YAEF,UAAU,CAAC,IAAI,CAAC,GAAG,qCAAqC,CAAC,eAAe,CAAC,CAAC;SAC3E;QAAC,OAAO,KAAK,EAAE;YACd,MAAM,UAAU,SACd,KAAK,CAAC,OAAO,mCAAI,2CAA2C,CAAC;YAC/D,qEAAqE;YACrE,aAAa,CAAC,IAAI,CAAC;gBACjB,UAAU;gBACV,KAAK;gBACL,UAAU,EAAE,UAAU;aACvB,CAAC,CAAC;YACH,KAAK,CACH,eAAK,CAAC,IAAI,CAAC,GAAG,CACZ,KAAK,YAAI,CAAC,KAAK,mCAAmC,UAAU,YAAY,UAAU,IAAI,CACvF,CACF,CAAC;SACH;KACF;IAED,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE;QACtB,MAAM,IAAI,6BAAoB,CAC5B,8BAAqB,CACnB,sCAAsC,WAAW,CAAC,MAAM,sBAAsB,CAC/E,CACF,CAAC;KACH;IAED,OAAO;QACL,MAAM,EAAE;YACN,IAAI,EAAE,oBAAoB;SAC3B;QACD,eAAe,EAAE,UAAU;QAC3B,aAAa;KACd,CAAC;AACJ,CAAC;AArFD,oDAqFC;AAED,KAAK,UAAU,6BAA6B,CAC1C,IAAY,EACZ,OAAiD,EACjD,WAAqB;IAKrB,IAAI;QACF,MAAM,EAAE,eAAe,EAAE,GAAG,MAAM,8CAAqB,CACrD,IAAI,EACJ;YACE,eAAe,EAAE,OAAO,CAAC,eAAe;YACxC,GAAG,EAAE,OAAO,CAAC,GAAG;SACjB,EACD,WAAW,CACZ,CAAC;QAEF,MAAM,gBAAgB,GAAG,4BAA4B,CACnD,IAAI,EACJ,eAAe,EACf,WAAW,CACZ,CAAC;QACF,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,CAAC;KAC9C;IAAC,OAAO,CAAC,EAAE;QACV,KAAK,CAAC,wDAAwD,EAAE,CAAC,CAAC,CAAC;QACnE,OAAO,EAAE,eAAe,EAAE,EAAE,EAAE,gBAAgB,EAAE,WAAW,EAAE,CAAC;KAC/D;AACH,CAAC;AAED,SAAgB,4BAA4B,CAC1C,IAAY,EACZ,eAAuC,EACvC,cAAwB;IAExB,MAAM,WAAW,GAAa,EAAE,CAAC;IAEjC,MAAM,OAAO,GAAG,eAAe;SAC5B,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAW,CAAC;SACzB,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IACvD,MAAM,GAAG,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACrC,IAAI,EAAE,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;QAC7C,QAAQ,EAAE,CAAC;KACZ,CAAC,CAAC,CAAC;IAEJ,KAAK,MAAM,KAAK,IAAI,GAAG,EAAE;QACvB,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,KAAK,CAAC;QACjC,MAAM,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAErC,IAAI,CAAC,CAAC,cAAc,EAAE,WAAW,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;YACjD,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAC3B,SAAS;SACV;QACD,8BAA8B;QAC9B,2DAA2D;QAC3D,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC,EAAE;YAChE,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAC3B,SAAS;SACV;KACF;IACD,OAAO,WAAW,CAAC;AACrB,CAAC;AA/BD,oEA+BC;;;;;;;;;;;;ACzLD,2CAA8B;AAC9B,iDAA4C;AAIrC,KAAK,UAAU,qBAAqB,CACzC,IAAY,EACZ,OAAiD,EACjD,UAAmB;IAEnB,MAAM,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;IAC1D,MAAM,UAAU,GAAG,wBAAU,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;IACtD,MAAM,UAAU,GAA4B,MAAM,UAAU,CAAC,OAAO,CAClE,IAAI,EACJ,UAAU,IAAI,OAAO,CAAC,IAAI,EAC1B,EAAE,GAAG,OAAO,EAAE,CACf,CAAC;IACF,OAAO,UAAU,CAAC;AACpB,CAAC;AAbD,sDAaC;;;;;;;;;;;;AClBD,kDAA6C;AAC7C,6CAA6C;AAC7C,gDAAmD;AACnD,4CAA6C;AAC7C,gDAAmD;AACnD,4CAA2C;AAC3C,+CAAiD;AACjD,6CAA6C;AAC7C,gDAAgD;AAChD,mDAA+D;AAC/D,4CAAmD;AAGnD,4CAA2D;AAE3D,SAAgB,UAAU,CACxB,cAAoD;IAEpD,QAAQ,cAAc,EAAE;QACtB,KAAK,KAAK,CAAC,CAAC;YACV,OAAO,YAAY,CAAC;SACrB;QACD,KAAK,UAAU,CAAC,CAAC;YACf,OAAO,cAAc,CAAC;SACvB;QACD,KAAK,OAAO,CAAC,CAAC;YACZ,OAAO,SAAS,CAAC;SAClB;QACD,KAAK,QAAQ,CAAC,CAAC;YACb,OAAO,YAAY,CAAC;SACrB;QACD,KAAK,KAAK,CAAC,CAAC;YACV,OAAO,SAAS,CAAC;SAClB;QACD,KAAK,MAAM,CAAC,CAAC;YACX,OAAO,YAAY,CAAC;SACrB;QACD,KAAK,KAAK,CAAC;QACX,KAAK,QAAQ,CAAC,CAAC;YACb,OAAO,YAAY,CAAC;SACrB;QACD,KAAK,WAAW,CAAC;QACjB,KAAK,WAAW,CAAC;QACjB,KAAK,UAAU,CAAC,CAAC;YACf,OAAO,QAAQ,CAAC;SACjB;QACD,KAAK,OAAO,CAAC,CAAC;YACZ,OAAO,WAAW,CAAC;SACpB;QACD,KAAK,OAAO,CAAC,CAAC;YACZ,OAAO,WAAW,CAAC;SACpB;QACD,KAAK,UAAU,CAAC,CAAC;YACf,OAAO,SAAS,CAAC;SAClB;QACD,KAAK,WAAW,CAAC,CAAC;YAChB,OAAO,eAAe,CAAC;SACxB;QACD,KAAK,KAAK,CAAC,CAAC;YACV,OAAO,SAAS,CAAC;SAClB;QACD,OAAO,CAAC,CAAC;YACP,MAAM,IAAI,uCAA8B,CAAC,cAAc,CAAC,CAAC;SAC1D;KACF;AACH,CAAC;AAlDD,gCAkDC;;;;;;;;;;;;ACjED,iDAAsD;AACtD,8CAAgD;AAEhD,6CAA6C;AAC7C,8DAA+E;AAGxE,KAAK,UAAU,OAAO,CAC3B,IAAY,EACZ,UAAkB,EAClB,UAAyB,EAAE;;IAE3B,IAAI,CAAC,UAAU,EAAE;QACf,MAAM,iDAAsB,CAAC,IAAI,CAAC,CAAC;KACpC;IACD,MAAM,eAAe,GACnB,UAAU,CAAC,QAAQ,CAAC,mBAAmB,CAAC;QACxC,UAAU,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;IAEnC,MAAM,eAAe,GAAG,eAAe,IAAI,CAAC,OAAO,CAAC,mBAAmB,CAAC;IACxE,MAAM,OAAO,GAAQ,eAAe;QAClC,CAAC,CAAC,MAAM,UAAU,CAAC,KAAK,CAAC,IAAI,EAAE,UAAU,EAAE,OAAO,CAAC;QACnD,CAAC,CAAC,MAAM,aAAa,CAAC,KAAK,CAAC,IAAI,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;IAEzD,UAAI,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,IAAI,0CAAE,eAAe,EAAE;QAClC,SAAS,CAAC,GAAG,CAAC,iBAAiB,EAAE,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;KAChE;IAED,OAAO;QACL,MAAM,EAAE;YACN,IAAI,EAAE,6BAA6B;YACnC,OAAO,EAAE,OAAO,CAAC,OAAO;SACzB;QACD,eAAe,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC;KAC/B,CAAC;AACJ,CAAC;AA5BD,0BA4BC;;;;;;;;;;;;ACnCD,6CAAmC;AACnC,MAAM,KAAK,GAAG,SAAS,CAAC,WAAW,CAAC,CAAC;AACrC,wCAA6B;AAC7B,6CAAwC;AACxC,6CAA6C;AAC7C,sCAAyB;AACzB,gDAA8D;AAIvD,KAAK,UAAU,KAAK,CACzB,IAAY,EACZ,UAAkB,EAClB,OAAgB;IAEhB,MAAM,gBAAgB,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;IACxD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,gBAAgB,CAAC,EAAE;QACpC,MAAM,IAAI,KAAK,CACb,WAAW,GAAG,UAAU,GAAG,0BAA0B,GAAG,gBAAgB,CACzE,CAAC;KACH;IAED,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;IAC9C,MAAM,oBAAoB,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC;IACxE,MAAM,kBAAkB,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,EAAE,qBAAqB,CAAC,CAAC;IAE7E,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,oBAAoB,CAAC,EAAE;QACxC,MAAM,IAAI,KAAK,CACb,kCAAkC,oBAAoB,GAAG;YACvD,sBAAsB,UAAU,GAAG,CACtC,CAAC;KACH;IAED,IAAI,EAAE,CAAC,UAAU,CAAC,kBAAkB,CAAC,EAAE;QACrC,MAAM,IAAI,KAAK,CACb,mEAAmE;YACjE,QAAQ,CAAC,GAAG;YACZ,KAAK;YACL,sEAAsE,CACzE,CAAC;KACH;IAED,SAAS,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IAC7B,SAAS,CAAC,GAAG,CAAC,iCAAiC,EAAE;QAC/C,QAAQ,EAAE,IAAI;QACd,UAAU;KACX,CAAC,CAAC;IACH,MAAM,yBAAyB,GAAG,kCAAkC,gBAAgB,EAAE,CAAC;IACvF,KAAK,CAAC,yBAAyB,CAAC,CAAC;IACjC,IAAI;QACF,MAAM,iBAAO,CAAC,yBAAyB,CAAC,CAAC;QACzC,MAAM,eAAe,GAAG,OAAO,CAAC,eAAe,KAAK,KAAK,CAAC;QAC1D,OAAO,cAAc,CAAC,qBAAqB,CACzC,IAAI,EACJ,oBAAoB,EACpB,gBAAgB,EAChB,OAAO,CAAC,GAAG,EACX,eAAe,CAChB,CAAC;KACH;YAAS;QACR,MAAM,iBAAO,CAAC,KAAK,CAAO,yBAAyB,CAAC,EAAE,CAAC;KACxD;AACH,CAAC;AApDD,sBAoDC;;;;;;;;;;;;AC9DD,wCAA6B;AAC7B,sCAAyB;AACzB,mDAAqD;AACrD,6CAAmC;AACnC,MAAM,OAAO,GAAG,mBAAO,CAAC,KAAgB,CAAC,CAAC;AAC1C,6CAAwC;AACxC,6CAA6C;AAE7C,uDAA0D;AAE1D,MAAM,KAAK,GAAG,SAAS,CAAC,oBAAoB,CAAC,CAAC;AAEvC,KAAK,UAAU,KAAK,CACzB,IAAY,EACZ,UAAkB,EAClB,OAAgB;IAEhB,IAAI,UAAU,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE;QACpC,OAAO,CAAC,IAAI;YACV,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC;KACrE;IAED,qEAAqE;IACrE,IAAI,UAAU,CAAC,QAAQ,CAAC,mBAAmB,CAAC,EAAE;QAC5C,OAAO,CAAC,IAAI;YACV,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,mBAAmB,EAAE,cAAc,CAAC,CAAC;KAC7E;IACD,kCAAkC;IAClC,MAAM,mBAAmB,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,IAAK,CAAC,CAAC;IAC9D,MAAM,cAAc,GAAG,OAAO,CAAC,cAAc,IAAI,KAAK,CAAC;IAEvD,IAAI;QACF,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAC5B,mCAAe,CAAC,IAAI,EAAE,mBAAmB,CAAC,CAAC,OAAO,CACnD,CAAC;QAEF,IAAI,YAAY,GAAG,WAAW,CAAC,YAAY,CAAC;QAC5C,IAAI,OAAO,CAAC,GAAG,EAAE;YACf,YAAY,GAAG,EAAE,GAAG,YAAY,EAAE,GAAG,WAAW,CAAC,eAAe,EAAE,CAAC;SACpE;QACD,IAAI,OAAO,CAAC,YAAY,CAAC,EAAE;YACzB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAC7B,OAAO,CAAC;gBACN,IAAI,EAAE,WAAW,CAAC,IAAI,IAAI,cAAc;gBACxC,YAAY,EAAE,EAAE;gBAChB,OAAO,EAAE,WAAW,CAAC,OAAO;aAC7B,CAAC,CACH,CAAC;SACH;KACF;IAAC,OAAO,CAAC,EAAE;QACV,KAAK,CAAC,kBAAkB,mBAAmB,YAAY,CAAC,EAAE,CAAC,CAAC;QAC5D,MAAM,IAAI,KAAK,CACb,kBAAkB,mBAAmB,YAAY,CAAC,CAAC,OAAO,EAAE,CAC7D,CAAC;KACH;IACD,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAC/B,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC,EAC5C,cAAc,CACf,CAAC;IAEF,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,eAAe,CAAC,EAAE;QACnC,uBAAuB;QACvB,MAAM,IAAI,KAAK,CACb,6CAA6C;YAC3C,sCAAsC,cAAc,kBAAkB,CACzE,CAAC;KACH;IACD,SAAS,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IAC7B,SAAS,CAAC,GAAG,CAAC,iCAAiC,EAAE;QAC/C,QAAQ,EAAE,KAAK;QACf,UAAU;KACX,CAAC,CAAC;IAEH,MAAM,yBAAyB,GAC7B,iCAAiC;QACjC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC;IAC/C,IAAI;QACF,MAAM,iBAAO,CAAC,KAAK,CAAO,yBAAyB,CAAC,EAAE,CAAC;QACvD,MAAM,iBAAO,CAAC,yBAAyB,CAAC,CAAC;QACzC,OAAO,eAAe,CACpB,IAAI,EACJ,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,OAAO,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CACnD,CAAC;KACH;YAAS;QACR,MAAM,iBAAO,CAAC,KAAK,CAAO,yBAAyB,CAAC,EAAE,CAAC;KACxD;AACH,CAAC;AA1ED,sBA0EC;;;;;;;;;;;;ACtFD,6CAAmC;AACnC,4CAAiC;AACjC,MAAM,MAAM,GAAG,mBAAO,CAAC,KAAe,CAAC,CAAC;AACxC,MAAM,OAAO,GAAG,mBAAO,CAAC,KAAgB,CAAC,CAAC;AAC1C,8CAAyC;AAEzC,MAAM,KAAK,GAAG,SAAS,CAAC,sBAAsB,CAAC,CAAC;AAChD,gDAA8D;AAK9D,uDAA0D;AAC1D,4CAA8D;AAEvD,KAAK,UAAU,qBAAqB,CACzC,IAAY,EACZ,QAIC,EACD,WAAqB;IAErB,oDAAoD;IACpD,mDAAmD;IACnD,MAAM,iBAAiB,GAAG,WAAW;SAClC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;SAC/C,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,cAAc,EAAE,WAAW,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;IACrE,MAAM,MAAM,GAAG,MAAM,CAAC,iBAAiB,EAAE,KAAK,CAAC,CAAC;IAChD,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IAEvC,MAAM,eAAe,GAMjB,OAAO,CAAC;IAEZ,KAAK,CAAC,yCAAyC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC;IACtE,IAAI,QAAQ,CAAC,cAAc,IAAI,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE;QACxE,MAAM,uCAA8B,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;KAC9C;IACD,IAAI,iBAAiB,GAAG,EAAE,CAAC;IAC3B,MAAM,sBAAsB,GAAG,EAAE,CAAC;IAClC,MAAM,MAAM,GAA6B;QACvC,MAAM,EAAE;YACN,IAAI,EAAE,6BAA6B;YACnC,OAAO,EAAE,OAAO,CAAC,OAAO;SACzB;QACD,eAAe,EAAE,EAAE;KACpB,CAAC;IACF,IAAI,4BAA4B,GAAG,EAAE,CAAC;IACtC,4CAA4C;IAC5C,KAAK,MAAM,SAAS,IAAI,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,EAAE;QACpD,KAAK,CAAC,cAAc,SAAS,gCAAgC,CAAC,CAAC;QAC/D,IAAI,sBAAsB,GAAG,KAAK,CAAC;QACnC,IAAI,iBAAiB,GAAG,KAAK,CAAC;QAC9B,MAAM,mBAAmB,GAAG,QAAQ,CAAC,IAAI,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC;QACrE,MAAM,WAAW,GAAG,mCAAe,CAAC,IAAI,EAAE,mBAAmB,CAAC,CAAC;QAC/D,iBAAiB,GAAG;YAClB,GAAG,iBAAiB;YACpB,GAAG,gBAAgB,CAAC,WAAW,CAAC;SACjC,CAAC;QACF,KAAK,MAAM,aAAa,IAAI,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,EAAE;YAC1D,MAAM,KAAK,GAAG,6BAA6B,CACzC,mBAAmB,EACnB,iBAAiB,EACjB,aAAa,CACd,CAAC;YACF,IAAI,KAAK,EAAE;gBACT,KAAK,CAAC,GAAG,mBAAmB,wCAAwC,CAAC,CAAC;gBACtE,sBAAsB,CAAC,mBAAmB,CAAC,GAAG;oBAC5C,IAAI,EAAE,aAAa;iBACpB,CAAC;gBACF,sBAAsB,GAAG,IAAI,CAAC;aAC/B;YACD,IAAI,mBAAmB,KAAK,aAAa,EAAE;gBACzC,iBAAiB,GAAG,IAAI,CAAC;gBACzB,4BAA4B,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;aAChE;SACF;QAED,IAAI,CAAC,CAAC,sBAAsB,IAAI,iBAAiB,CAAC,EAAE;YAClD,KAAK,CACH,GAAG,mBAAmB,kDAAkD,CACzE,CAAC;YACF,SAAS;SACV;QACD,IAAI;YACF,MAAM,OAAO,GAAG,sBAAsB;gBACpC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,sBAAsB,CAAC,mBAAmB,CAAC,CAAC,IAAI,CAAC;gBACpE,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC;YAC1C,MAAM,oBAAoB,GAAG,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;YACjE,MAAM,QAAQ,GAAG,MAAM,mCAAe,CAAC,IAAI,EAAE,oBAAoB,CAAC,CAAC;YAEnE,IACE,4BAA4B,CAAC,cAAc,CAAC,aAAa,CAAC;gBAC1D,cAAc,CAAC,mBAAmB,CAAC,QAAQ,CAAC,OAAO,CAAC;oBAClD,cAAc,CAAC,YAAY,CAAC,KAAK,EACnC;gBACA,MAAM,qBAAqB,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;gBAC9D,WAAW,CAAC,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC;oBACnC,GAAG,qBAAqB;oBACxB,WAAW,EAAE,4BAA4B,CAAC,aAAa,CAAC;iBACzD,CAAC,CAAC;aACJ;YAED,MAAM,GAAG,GAAG,MAAM,cAAc,CAAC,YAAY,CAC3C,WAAW,CAAC,OAAO,EACnB,QAAQ,CAAC,OAAO,EAChB,QAAQ,CAAC,GAAG,EACZ,cAAc,CAAC,YAAY,CAAC,IAAI,EAChC,QAAQ,CAAC,eAAe,KAAK,KAAK,CACnC,CAAC;YACF,MAAM,OAAO,GAAyB;gBACpC,cAAc,EAAE,MAAM;gBACtB,UAAU,EAAE,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC,QAAQ,CAAC;gBACzD,OAAO,EAAE,GAAU;gBACnB,MAAM,EAAE;oBACN,IAAI,EAAE,6BAA6B;oBACnC,OAAO,EAAE,OAAO,CAAC,OAAO;iBACzB;aACF,CAAC;YACF,MAAM,CAAC,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;SACtC;QAAC,OAAO,CAAC,EAAE;YACV,IAAI,QAAQ,CAAC,cAAc,EAAE;gBAC3B,MAAM,CAAC,CAAC;aACT;YACD,KAAK,CAAC,4BAA4B,mBAAmB,YAAY,CAAC,EAAE,CAAC,CAAC;SACvE;KACF;IACD,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,MAAM,EAAE;QAClC,KAAK,CACH,6CAA6C,WAAW,CAAC,MAAM,gBAAgB,CAChF,CAAC;KACH;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AA5HD,sDA4HC;AAQD,SAAgB,gBAAgB,CAAC,IAGhC;IACC,MAAM,iBAAiB,GAAG,EAAE,CAAC;IAC7B,IAAI,CAAC,IAAI,EAAE;QACT,OAAO,iBAAiB,CAAC;KAC1B;IAED,IAAI;QACF,MAAM,6BAA6B,GAAG,cAAc,CAAC,iBAAiB,CACpE,IAAI,CAAC,OAAO,CACb,CAAC;QAEF,IAAI,6BAA6B,IAAI,6BAA6B,CAAC,MAAM,EAAE;YACzE,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG;gBACjC,UAAU,EAAE,6BAA6B;aAC1C,CAAC;SACH;KACF;IAAC,OAAO,CAAC,EAAE;QACV,KAAK,CAAC,+BAA+B,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC;KACnD;IACD,OAAO,iBAAiB,CAAC;AAC3B,CAAC;AAvBD,4CAuBC;AAED,SAAgB,6BAA6B,CAC3C,mBAA2B,EAC3B,iBAAoC,EACpC,aAAqB;IAErB,MAAM,mBAAmB,GAAG,QAAQ,CAAC,OAAO,CAC1C,aAAa,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAClC,CAAC;IACF,MAAM,eAAe,GAAG,CACtB,iBAAiB,CAAC,aAAa,CAAC,CAAC,UAAU,IAAI,EAAE,CAClD,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,mBAAmB,EAAE,SAAS,CAAC,CAAC,CAAC;IAEpE,MAAM,KAAK,GAAG,UAAU,CAAC,OAAO,CAC9B,mBAAmB,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,EACvC,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CACxB,QAAQ,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAC/D,CACF,CAAC;IACF,OAAO,KAAK,CAAC;AACf,CAAC;AAnBD,sEAmBC;;;;;;;;;;;;AC/LD,+CAAgD;AAChD,8DAA+E;AAC/E,6DAA6E;AAC7E,uCAAkC;AAI3B,KAAK,UAAU,OAAO,CAC3B,IAAY,EACZ,UAAkB,EAClB,UAAyB,EAAE;IAE3B,IAAI,CAAC,UAAU,EAAE;QACf,MAAM,iDAAsB,CAAC,IAAI,CAAC,CAAC;KACpC;IACD,MAAM,KAAK,GAAG,MAAM,WAAW,CAAC,IAAI,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;IAE3D,OAAO;QACL,MAAM,EAAE;YACN,IAAI,EAAE,kBAAkB;YACxB,OAAO,EAAE,SAAS;SACnB;QACD,eAAe,EAAE;YACf;gBACE,OAAO,EAAE;oBACP,IAAI,EAAE,KAAK,CAAC,WAAW;oBACvB,UAAU,EAAE,KAAK,CAAC,UAAU;oBAC5B,YAAY,EAAE,wBAAwB,CAAC,KAAK,CAAC;iBAC9C;aACF;SACF;KACF,CAAC;AACJ,CAAC;AAzBD,0BAyBC;AAED,SAAS,wBAAwB,CAAC,KAAK;IACrC,MAAM,iBAAiB,GAAG,GAAG,CAAC,KAAK,EAAE,4BAA4B,CAAC,CAAC;IACnE,MAAM,aAAa,GAAG,GAAG,CAAC,KAAK,EAAE,wBAAwB,CAAC,CAAC;IAC3D,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAC1B,iBAAiB,IAAI,aAAa,EAClC,QAAQ,CACT,CAAC,QAAQ,EAAE,CAAC;IACb,MAAM,YAAY,GAAG,yBAAyB,CAAC,QAAQ,CAAC,CAAC;IACzD,OAAO,YAAY,CAAC;AACtB,CAAC;AAED,KAAK,UAAU,WAAW,CACxB,IAAY,EACZ,UAAkB,EAClB,OAAsB;IAEtB,KAAK,MAAM,SAAS,IAAI,uBAAU,EAAE;QAClC,IAAI,SAAS,CAAC,SAAS,CAAC,UAAU,CAAC,EAAE;YACnC,OAAO,MAAM,SAAS,CAAC,WAAW,CAAC,IAAI,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;SAC/D;KACF;IAED,MAAM,IAAI,KAAK,CAAC,mCAAmC,UAAU,EAAE,CAAC,CAAC;AACnE,CAAC;;;;;;;;;;;;ACzDD,wCAA6B;AAC7B,kDAA4C;AAI5C;;;;;;;GAOG;AAEH,MAAM,wBAAwB,GAAG,4BAA4B,CAAC;AAC9D,MAAM,kBAAkB,GAAG,2BAA2B,CAAC;AAEvD,SAAgB,SAAS,CAAC,IAAY;IACpC,OAAO,CAAC,CAAC,IAAI,IAAI,wBAAwB,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;AACtE,CAAC;AAFD,8BAEC;AAEM,KAAK,UAAU,WAAW,CAC/B,IAAY,EACZ,MAAc,EACd,OAAsB;IAEtB,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IACzC,MAAM,aAAa,GAAG,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACtD,yDAAyD;IACzD,MAAM,WAAW,GAAG,MAAM,yBAAU,CAClC,IAAI,EACJ,aAAa,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,CACrD,CAAC;IAEF,IAAI,WAAW,EAAE;QACf,MAAM,eAAe,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QAC5C,OAAO;YACL,WAAW,EAAE,OAAO,CAAC,cAAc;gBACjC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,GAAG,CAAC;gBACjC,CAAC,CAAC,eAAe;YACnB,UAAU,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC;YAChC,KAAK,EAAE,EAAE,WAAW,EAAE;SACvB,CAAC;KACH;SAAM;QACL,MAAM,IAAI,KAAK,CACb,kBAAkB,MAAM,IAAI,cAAc,wBAAwB;YAChE,6DAA6D;YAC7D,0GAA0G,CAC7G,CAAC;KACH;AACH,CAAC;AA7BD,kCA6BC;;;;;;;;;;;;AClDD,wCAA6B;AAC7B,kDAAmD;AAGnD,MAAM,OAAO,GAAG,YAAY,CAAC;AAE7B,SAAgB,SAAS,CAAC,IAAY;IACpC,OAAO,CAAC,CAAC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACtC,CAAC;AAFD,8BAEC;AAEM,KAAK,UAAU,WAAW,CAAC,IAAY,EAAE,MAAc;IAC5D,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IACzC,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IACvC,MAAM,KAAK,GAAU,EAAE,CAAC;IAExB,MAAM,OAAO,GAAG,MAAM,yBAAU,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC,CAAC;IAEzE,IAAI,OAAO,EAAE;QACX,KAAK,CAAC,OAAO,GAAG,OAAO,CAAC;KACzB;SAAM;QACL,MAAM,IAAI,KAAK,CAAC,mBAAmB,MAAM,EAAE,CAAC,CAAC;KAC9C;IAED,MAAM,WAAW,GAAG,MAAM,yBAAU,CAClC,IAAI,EACJ,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,cAAc,CAAC,CACrC,CAAC;IAEF,IAAI,WAAW,EAAE;QACf,KAAK,CAAC,WAAW,GAAG,WAAW,CAAC;KACjC;IAED,OAAO;QACL,WAAW,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;QAChC,UAAU,EAAE,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,UAAU,CAAC;QAC5C,KAAK;KACN,CAAC;AACJ,CAAC;AA3BD,kCA2BC;;;;;;;;;;;;ACrCD,0CAAqC;AACrC,2CAAqC;AASxB,kBAAU,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;;;;;;;;;;;;ACV7C,wCAA6B;AAC7B,sCAAyB;AAYlB,KAAK,UAAU,UAAU,CAC9B,GAAW,EACX,IAAY;IAEZ,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IACzC,IAAI,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE;QAC3B,OAAO;YACL,IAAI;YACJ,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC;SACpE,CAAC;KACH;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAZD,gCAYC;;;;;;;;;;;;ACzBD,iDAI2B;AAE3B,4CAAkD;AAClD,+CAAsC;AACtC,4CAAkC;AAClC,iDAAsD;AACtD,6CAAwC;AAGxC,2CAAiD;AACjD,4CAGkB;AAClB,oDAAgD;AAChD,kDAAyC;AACzC,2CAA0B;AAC1B,4CAAkC;AAClC,iDAA0D;AAE1D,MAAM,KAAK,GAAG,QAAQ,CAAC,WAAW,CAAC,CAAC;AAE7B,KAAK,UAAU,8BAA8B,CAClD,IAAY,EACZ,OAAgB,EAChB,YAA0B,EAC1B,SAAiB;IAEjB,MAAM,iBAAO,CAAC,QAAQ,EAAE,CAAC;IACzB,8BAAsB,EAAE,CAAC;IACzB,MAAM,YAAY,GAAG,MAAM,eAAe,CACxC,IAAI,EACJ,OAAO,EACP,YAAY,EACZ,SAAS,CACV,CAAC;IACF,iBAAO,CAAC,QAAQ,EAAE,CAAC;IACnB,OAAO,oBAAoB,CAAC,YAAY,CAAC,CAAC;AAC5C,CAAC;AAhBD,wEAgBC;AAED,KAAK,UAAU,eAAe,CAC5B,IAAY,EACZ,OAAgB,EAChB,YAA0B,EAC1B,SAAiB;;IAEjB,MAAM,wBAAwB,GAAG,iBAAiB,CAAC,YAAY,CAAC,CAAC;IACjE,IAAI,wBAAwB,EAAE;QAC5B,0BAA0B,CAAC,YAAY,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC;KAC9D;IAED,MAAM,MAAM,GAAG,UAAU,CAAC;IAC1B,MAAM,OAAO,GAAG,wBAAwB;QACtC,CAAC,CAAC,YAAY,CAAC,eAAe,CAAC,GAAG;QAClC,CAAC,CAAC,mCAAqB,EAAE,CAAC;IAE5B,MAAM,cAAc,GAAG,+BAAiB,EAAE,CAAC;IAC3C,KAAK,CAAC,4BAA4B,cAAc,EAAE,CAAC,CAAC;IAEpD,uGAAuG;IACvG,iEAAiE;IACjE,gEAAgE;IAChE,4EAA4E;IAC5E,IAAI,OAAO,CAAC,GAAG,CAAC,UAAU,IAAI,OAAO,CAAC,GAAG,CAAC,UAAU,EAAE;QACpD,OAAO,CAAC,GAAG,CAAC,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,UAAU,IAAI,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC;KAC3E;IACD,IAAI,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,OAAO,CAAC,GAAG,CAAC,WAAW,EAAE;QACtD,OAAO,CAAC,GAAG,CAAC,WAAW;YACrB,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC;KACtD;IAED,MAAM,QAAQ,GAAG,+BAAc,CAAC,OAAO,CAAC,CAAC;IACzC,IAAI,QAAQ,EAAE;QACZ,wBAAS,CAAC;YACR,4BAA4B,EAAE,EAAE;SACjC,CAAC,CAAC;KACJ;IAED,MAAM,YAAY,GAAG,eAAG,EAAE,IAAI,EAAE,CAAC;IAEjC,MAAM,QAAQ,GAAG,OAAO,CAAC,iBAAiB;QACxC,CAAC,CAAC,0BAA0B,CAAC,OAAO,CAAC,iBAAiB,CAAC;QACvD,CAAC,CAAC,8BAAgB,CAAC,IAAI,CAAC;IAC1B,MAAM,MAAM,GAAG,MAAM,4BAAc,CAAC;QAClC,UAAU,EAAE,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,SAAS,EAAE,cAAc,EAAE;QACxE,eAAe,EAAE,EAAE,QAAQ,EAAE;QAC7B,WAAW,EAAE,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,EAAE;QAC9B,eAAe,EAAE;YACf,SAAS,EAAE,KAAK;YAChB,IAAI,EAAE,MAAM;YACZ,cAAc,EAAE,YAAY,CAAC,GAAG;YAChC,WAAW,EAAE,gBAAM,CAAC,YAAY;YAChC,GAAG,EAAE;gBACH,IAAI,EAAE,YAAY,CAAC,GAAG,IAAI,SAAS;gBACnC,WAAW,EAAE,SAAS;gBACtB,QAAQ,EAAE,SAAS;gBACnB,KAAK,EAAE,EAAE;aACV;SACF;QACD,SAAS,EAAE,YAAY,CAAC,kBAAkB;KAC3C,CAAC,CAAC;IAEH,UAAI,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,UAAU,CAAC,qBAAqB,0CAAE,MAAM,EAAE;QACpD,KAAK,CACH,IAAI,EACJ,eAAK,CAAC,MAAM,CACV,qFAAqF,2BAAa,qBAAqB;YACrH,GAAG,MAAM,CAAC,UAAU,CAAC,qBAAqB;SAC3C,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CACf,CACF,CAAC;KACH;IAED,IAAI,OAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,eAAe,CAAC,IAAI,MAAK,OAAO,EAAE;QAC5C,OAAO,MAAM,CAAC,eAAe,CAAC,KAAK,CAAC;KACrC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,0BAA0B,CAAC,QAAkB;IACpD,IAAI,QAAQ,KAAK,iBAAQ,CAAC,QAAQ,EAAE;QAClC,MAAM,IAAI,2CAAkC,CAAC,iBAAQ,CAAC,QAAQ,CAAC,CAAC;KACjE;IACD,MAAM,aAAa,GAAG;QACpB,GAAG,EAAE,CAAC;QACN,MAAM,EAAE,CAAC;QACT,IAAI,EAAE,CAAC;KACR,CAAC;IACF,OAAO,aAAa,CAAC,QAAQ,CAAC,CAAC;AACjC,CAAC;AAED,SAAS,oBAAoB,CAAC,YAAwB;IACpD,IAAI,gBAAgB,CAAC;IAErB,IAAI,CAAC,YAAY,EAAE;QACjB,OAAO,YAAY,CAAC;KACrB;IAED,MAAM,KAAK,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;IACrD,MAAM,OAAO,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;IAE7C,IAAI,KAAK,EAAE;QACT,gBAAgB,GAAG,mBAAmB,CAAC,KAAK,CAAC,CAAC;QAC9C,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC;KAC1E;IACD,IAAI,OAAO,IAAI,gBAAgB,EAAE;QAC/B,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,GAAG,sBAAsB,CACnD,OAAO,EACP,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAC9B,CAAC;KACH;IAED,OAAO,YAAY,CAAC;AACtB,CAAC;AAED,SAAS,mBAAmB,CAC1B,KAA4B;IAE5B,MAAM,gBAAgB,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE;;QAClD,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC;QACxC,MAAM,cAAc,SAAG,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,UAAU,0CAAE,IAAI,CACjD,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,WAAW,EAAE,KAAK,UAAU,CACpD,CAAC;QACF,IAAI,cAAc,EAAE;YAClB,GAAG,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC;SACpB;QACD,OAAO,GAAG,CAAC;IACb,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,OAAO,gBAAgB,CAAC;AAC1B,CAAC;AAED,SAAS,sBAAsB,CAC7B,OAAiB,EACjB,aAAuB;IAEvB,MAAM,eAAe,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,GAAa,EAAE,MAAc,EAAE,EAAE;QACvE,MAAM,YAAY,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,MAAK,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,MAAM,EAAC,CAAC;QACvE,IAAI,YAAY,EAAE;YAChB,MAAM,CAAC,SAAS,GAAG,aAAa,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;YACvD,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;SAClB;QACD,OAAO,GAAG,CAAC;IACb,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,OAAO,eAAe,CAAC;AACzB,CAAC;AAED,SAAS,iBAAiB,CAAC,YAA0B;IACnD,MAAM,EAAE,WAAW,EAAE,eAAe,EAAE,GAAG,YAAY,CAAC;IAEtD,OAAO,WAAW,IAAI,eAAe,CAAC,OAAO,CAAC;AAChD,CAAC;AAED,SAAS,0BAA0B,CAAC,kBAA0B;IAC5D,IAAI,kBAAkB,CAAC,MAAM,KAAK,CAAC,EAAE;QACnC,MAAM,IAAI,kCAAyB,CACjC,0JAA0J,CAC3J,CAAC;KACH;AACH,CAAC;;;;;;;;;;;;AC5MD,6CAA4C;AAE5C,+CAAgD;AAChD,4CAAkC;AAClC,4CAA6D;AAGtD,KAAK,UAAU,qBAAqB,CAAC,GAAG;IAC7C,MAAM,QAAQ,GAAG,MAAM,qBAAW,CAAC;QACjC,MAAM,EAAE,KAAK;QACb,OAAO,EAAE;YACP,aAAa,EAAE,yBAAa,EAAE;SAC/B;QACD,EAAE,EAAE,4BAAmB,CAAC,EAAE,GAAG,EAAE,CAAC;QAChC,GAAG,EAAE,GAAG,gBAAM,CAAC,GAAG,2BAA2B;QAC7C,IAAI,EAAE,IAAI;QACV,IAAI,EAAE,IAAI;KACX,CAAC,CAAC;IAEH,OAAO,QAAQ,CAAC,IAAoB,CAAC;AACvC,CAAC;AAbD,sDAaC;AAEM,KAAK,UAAU,UAAU,CAAC,GAAG;IAClC,MAAM,QAAQ,GAAG,MAAM,qBAAW,CAAC;QACjC,MAAM,EAAE,MAAM;QACd,OAAO,EAAE;YACP,aAAa,EAAE,yBAAa,EAAE;SAC/B;QACD,EAAE,EAAE,4BAAmB,CAAC,EAAE,GAAG,EAAE,CAAC;QAChC,GAAG,EAAE,GAAG,gBAAM,CAAC,GAAG,uBAAuB;QACzC,IAAI,EAAE,IAAI;QACV,IAAI,EAAE,IAAI;KACX,CAAC,CAAC;IAEH,OAAO,QAAQ,CAAC,IAA0B,CAAC;AAC7C,CAAC;AAbD,gCAaC;;;;;;;;;;;ACnCD,+DAA0E;AAAjE,kKAAyB;AAClC,uEAA2F;AAAlF,4LAAkC;;;;;;;;;;;;ACD3C,kDAA2D;AAE3D,MAAa,yBAA0B,SAAQ,0BAAW;IAGxD,YAAY,MAAc,EAAE,kBAAkB,GAAG,EAAE;QACjD,KAAK,CAAC,6BAA6B,MAAM,GAAG,CAAC,CAAC;QAC9C,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC;QAChB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QAErB,IAAI,CAAC,WAAW,GAAG,0CAA0C,MAAM,MAAM,kBAAkB,EAAE,CAAC;IAChG,CAAC;CACF;AAVD,8DAUC;;;;;;;;;;;;ACZD,kDAA2D;AAE3D,MAAa,kCAAmC,SAAQ,0BAAW;IAGjE,YAAY,OAAe,EAAE,kBAAkB,GAAG,EAAE;QAClD,KAAK,CAAC,0BAA0B,OAAO,GAAG,CAAC,CAAC;QAC5C,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC;QAChB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QAEvB,IAAI,CAAC,WAAW,GAAG,IAAI,OAAO,qCAAqC,kBAAkB,EAAE,CAAC;IAC1F,CAAC;CACF;AAVD,gFAUC;;;;;;;;;;;;ACXD,yCAA+B;AAC/B,2CAA0B;AAC1B,2CAA6C;AAC7C,4CAA0E;AAC1E,+CAAwD;AAIxD,MAAM,KAAK,GAAG,KAAK,CAAC,aAAa,CAAC,CAAC;AAEnC,SAAgB,sBAAsB,CACpC,QAAa,EACb,IAAY,EACZ,MAAc;IAEd,IAAI,MAAM,GAAkC,EAAE,CAAC;IAE/C,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE;QAC5B,MAAM,OAAO,GAAmB,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;QAEzD,MAAM,QAAQ,GAEV,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;QAE1D,MAAM,GAAG,SAAS,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;KACvC;IAED,MAAM,UAAU,GACd,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACtE,MAAM,aAAa,GAAG,aAAK,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,YAAI,CAAC,KAAK,iBAAiB,CAAC,CAAC;IAC3E,MAAM,gBAAgB,GAAG,oBAAoB,CAAC,MAAM,CAAC,CAAC;IAEtD,OAAO,CACL,MAAM;QACN,UAAU;QACV,IAAI;QACJ,aAAa;QACb,MAAM;QACN,IAAI;QACJ,MAAM;QACN,eAAK,CAAC,IAAI,CAAC,UAAU,CAAC;QACtB,MAAM;QACN,gBAAgB;QAChB,MAAM,CACP,CAAC;AACJ,CAAC;AAnCD,wDAmCC;AAED,SAAS,oBAAoB,CAAC,MAAqC;IACjE,MAAM,eAAe,GAAG,MAAM,CAAC,GAAG,CAAC,MAAM;QACvC,CAAC,CAAC,4BAAmB,CAAC,iBAAQ,CAAC,GAAG,EAAE,KAAK,MAAM,CAAC,GAAG,CAAC,MAAM,SAAS,CAAC;QACpE,CAAC,CAAC,EAAE,CAAC;IACP,MAAM,kBAAkB,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM;QAC7C,CAAC,CAAC,4BAAmB,CACjB,iBAAQ,CAAC,MAAM,EACf,KAAK,MAAM,CAAC,MAAM,CAAC,MAAM,YAAY,CACtC;QACH,CAAC,CAAC,EAAE,CAAC;IACP,MAAM,gBAAgB,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM;QACzC,CAAC,CAAC,4BAAmB,CAAC,iBAAQ,CAAC,IAAI,EAAE,KAAK,MAAM,CAAC,IAAI,CAAC,MAAM,UAAU,CAAC;QACvE,CAAC,CAAC,EAAE,CAAC;IAEP,MAAM,cAAc,GAClB,MAAM,CAAC,GAAG,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;IAChE,MAAM,cAAc,GAAG,KAAK,cAAc,cACxC,cAAc,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAC7B,QAAQ,CAAC;IACT,MAAM,oBAAoB,GACxB,gBAAgB,GAAG,kBAAkB,GAAG,eAAe,CAAC;IAC1D,MAAM,aAAa,GAAG,aAAK,CAAC,MAAM,CAAC,OAAO,CACxC,GAAG,YAAI,CAAC,KAAK,iCAAiC,CAC/C,CAAC;IAEF,OAAO,cAAc,GAAG,CAAC;QACvB,CAAC,CAAC,cAAc,GAAG,IAAI,GAAG,oBAAoB;QAC9C,CAAC,CAAC,aAAa,CAAC;AACpB,CAAC;AAED,SAAS,SAAS,CAChB,OAAuB,EACvB,QAAyD;IAEzD,MAAM,UAAU,GAAkC;QAChD,GAAG,EAAE,EAAE;QACP,MAAM,EAAE,EAAE;QACV,IAAI,EAAE,EAAE;KACT,CAAC;IAEF,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;;QACzC,UAAI,GAAG,CAAC,SAAS,0CAAE,MAAM,EAAE;YACzB,MAAM,QAAQ,GAAG,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC;YACnD,IAAI,GAAG,CAAC,KAAK,KAAI,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,gBAAgB,MAAI,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,MAAM,GAAE;gBAC/D,MAAM,QAAQ,GAAG,oBAAoB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;gBACjD,MAAM,MAAM,GAAG,GAAG,CAAC,MAAO,CAAC;gBAC3B,IAAI,CAAC,CAAC,MAAM,IAAI,QAAQ,CAAC,EAAE;oBACzB,KAAK,CAAC,0CAA0C,CAAC,CAAC;iBACnD;gBACD,MAAM,QAAQ,GACZ,eAAQ,CAAC,MAAM,CAAC,CAAC,gBAAgB,0CAAE,IAAI;oBACvC,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI;oBACrB,EAAE,CAAC;gBACL,MAAM,kBAAkB,GAAG,4BAAmB,CAC5C,QAAQ,EACR,IAAI,YAAI,CAAC,KAAK,KAAK,QAAQ,KAAK,eAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CACvD,CAAC;gBACF,MAAM,mBAAmB,GAAG,QAAQ,CAAC,gBAAgB,CAAC,GAAG,CAAC;gBAC1D,MAAM,SAAS,GAAG,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC;gBAC5C,MAAM,IAAI,GAAG,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC;gBAC9B,MAAM,KAAK,GAAG,kBAAkB,CAAC;gBACjC,MAAM,IAAI,GAAG,WAAW,mBAAmB,UAAU,SAAS,EAAE,CAAC;gBACjE,MAAM,IAAI,GAAG,WAAW,IAAI,EAAE,CAAC;gBAC/B,GAAG,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,KAAK,OAAO,IAAI,OAAO,IAAI,MAAM,CAAC,CAAC;aACxE;SACF;QACD,OAAO,GAAG,CAAC;IACb,CAAC,EAAE,UAAU,CAAC,CAAC;IAEf,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,WAAW,CAClB,KAAkC;IAElC,MAAM,YAAY,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE;QAC9C,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC;QACpB,OAAO,GAAG,CAAC;IACb,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,OAAO,YAAY,CAAC;AACtB,CAAC;AAED,SAAS,oBAAoB,CAC3B,uBAA2D;IAE3D,MAAM,aAAa,GAAG;QACpB,IAAI,EAAE,KAAK;QACX,OAAO,EAAE,QAAQ;QACjB,KAAK,EAAE,MAAM;KACd,CAAC;IAEF,OAAO,aAAa,CAAC,uBAAuB,CAAW,CAAC;AAC1D,CAAC;AAED,SAAgB,OAAO,CAAC,OAAgB,EAAE,IAAY;IACpD,MAAM,WAAW,GAAG,EAAE,CAAC,CAAC,iBAAiB;IACzC,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,IAAI,EAAE,CAAC;IAClC,MAAM,WAAW,GAAG,OAAO,CAAC,IAAI,IAAI,IAAI,CAAC;IACzC,MAAM,IAAI,GAAG;QACX,8BAAkB,CAAC,gBAAgB,EAAE,WAAW,CAAC,GAAG,eAAK,CAAC,IAAI,CAAC,OAAO,CAAC;KACxE,CAAC;IACF,IAAI,CAAC,IAAI,CACP,8BAAkB,CAAC,aAAa,EAAE,WAAW,CAAC;QAC5C,eAAK,CAAC,IAAI,CAAC,sBAAsB,CAAC,CACrC,CAAC;IACF,IAAI,CAAC,IAAI,CACP,8BAAkB,CAAC,gBAAgB,EAAE,WAAW,CAAC,GAAG,eAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAC5E,CAAC;IAEF,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACzB,CAAC;AAhBD,0BAgBC;AAED,SAAgB,SAAS,CAAC,IAAY;IACpC,OAAO,eAAK,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,GAAG,IAAI,GAAG,UAAU,CAAC,CAAC;AAC5D,CAAC;AAFD,8BAEC;;;;;;;;;;;;ACnKD,2CAA0B;AAC1B,4CAAkC;AAClC,0CAAoC;AACpC,6CAA4D;AAC5D,8CAA6C;AAC7C,mDAIgC;AAEhC,4CAA0E;AAC1E,0CAAsD;AACtD,6CAA6C;AAE7C,MAAM,KAAK,GAAG,QAAQ,CAAC,WAAW,CAAC,CAAC;AAEvB,kBAAU,GAAoB;IACzC,qFAAqF;IACrF,uFAAuF;IACvF,KAAK,CAAC,IAAI;QACR,OAAO,IAAW,CAAC;IACrB,CAAC;IACD,KAAK,CAAC,OAAO;QACX,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO;;QACvB,MAAM,SAAS,GAAG,SAAM,EAAE,CAAC;QAC3B,KAAK,CAAC,eAAe,SAAS,EAAE,CAAC,CAAC;QAClC,IAAI;YACF,SAAS,CAAC,GAAG,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;YACjC,MAAM,YAAY,GAAG,MAAM,0BAAe,CAAC,OAAO,CAAC,CAAC;YACpD,wCAAwC;YACxC,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;YAEtB,MAAM,gBAAgB,GAAG,MAAM,yCAA8B,CAC3D,IAAI,EACJ,OAAO,EACP,YAAY,EACZ,SAAS,CACV,CAAC;YAEF,IAAI,CAAC,gBAAgB,EAAE;gBACrB,MAAM,IAAI,6BAAoB,EAAE,CAAC;aAClC;YACD,MAAM,WAAW,GAAG,6BAAiB,CAAC,IAAI,0CAAG,CAAC,EAAE,OAAO,0CAAE,MAAM,KAAI,CAAC,CAAC;YACrE,SAAS,CAAC,GAAG,CAAC,mBAAmB,EAAE,WAAW,CAAC,CAAC;YAChD,IAAI,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC;YACzB,IAAI,CAAC,MAAM,IAAI,YAAY,CAAC,GAAG,EAAE;gBAC/B,MAAM,GAAG,YAAY,CAAC,GAAG,CAAC;aAC3B;YACD,MAAM,IAAI,GAAG,uBAAO,CAAC,EAAE,GAAG,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE,IAAI,CAAC,CAAC;YACxD,MAAM,MAAM,GAAG,yBAAS,CAAC,IAAI,CAAC,CAAC;YAC/B,IAAI,cAAc,GAAG,sCAAsB,CACzC,gBAAiB,EACjB,IAAI,EACJ,MAAM,CACP,CAAC;YACF,IAAI,WAAW,GAAG,CAAC,IAAI,OAAO,CAAC,aAAa,CAAC,EAAE;gBAC7C,4BAAgB,CAAC,IAAI,0CAAG,CAAC,EAAE,OAAO,0CAAE,OAAO,CAAC,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE;oBAC1D,OAAO,OAAO,CAAC,QAAQ,CAAC;gBAC1B,CAAC,EAAE;aACJ;YACD,IAAI,WAA+B,CAAC;YACpC,IAAI,OAAO,CAAC,mBAAmB,CAAC,EAAE;gBAChC,WAAW,GAAG,+BAAwB,CAAC,gBAAgB,CAAC,CAAC;aAC1D;YACD,IAAI,UAA8B,CAAC;YACnC,IAAI,OAAO,CAAC,kBAAkB,CAAC,EAAE;gBAC/B,UAAU,GAAG,+BAAwB,CAAC,gBAAgB,CAAC,CAAC;aACzD;YACD,IAAI,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,IAAI,EAAE;gBACjC,cAAc,GAAG,+BAAwB,CAAC,gBAAgB,CAAC,CAAC;aAC7D;YACD,IAAI,WAAW,GAAG,CAAC,EAAE;gBACnB,gBAAgB,CAAC,EAAE,cAAc,EAAE,WAAW,EAAE,UAAU,EAAE,CAAC,CAAC;aAC/D;YACD,OAAO,WAAW,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,CAAC;SAC3E;QAAC,OAAO,KAAK,EAAE;YACd,IAAI,GAAU,CAAC;YACf,IAAI,iBAAiB,CAAC,KAAK,CAAC,EAAE;gBAC5B,MAAM,cAAc,GAAG,mBAAmB,CAAC,KAAK,CAAC;oBAC/C,CAAC,CAAC,gBAAgB;oBAClB,CAAC,CAAC,EAAE,CAAC;gBACP,GAAG,GAAG,IAAI,6BAAoB,CAC5B,GAAG,cAAc,2BAA2B,EAC5C,KAAK,CAAC,UAAU,CACjB,CAAC;aACH;iBAAM,IAAI,KAAK,YAAY,KAAK,EAAE;gBACjC,GAAG,GAAG,KAAK,CAAC;aACb;iBAAM,IAAI,mBAAmB,CAAC,KAAK,CAAC,EAAE;gBACrC,GAAG,GAAG,IAAI,6BAAoB,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;aAC3D;iBAAM;gBACL,GAAG,GAAG,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC;aACxB;YACD,KAAK,CACH,eAAK,CAAC,IAAI,CAAC,GAAG,CACZ,cAAc,SAAS,eAAe,KAAK,CAAC,IAAI;gBAC9C,KAAK,CAAC,UAAU,cAAc,KAAK,CAAC,UAAU,IAAI,KAAK,CAAC,OAAO,EAAE,CACpE,CACF,CAAC;YACF,MAAM,GAAG,CAAC;SACX;IACH,CAAC;CACF,CAAC;AAEF,SAAS,iBAAiB,CAAC,KAAa;IACtC,OAAO,CACL,KAAK,CAAC,cAAc,CAAC,YAAY,CAAC;QAClC,KAAK,CAAC,cAAc,CAAC,YAAY,CAAC;QAClC,KAAK,CAAC,cAAc,CAAC,SAAS,CAAC,CAChC,CAAC;AACJ,CAAC;AAED,SAAS,mBAAmB,CAAC,KAAU;IACrC,OAAO,CACL,KAAK,CAAC,UAAU,KAAK,GAAG;QACxB,KAAK,CAAC,UAAU,KAAK,GAAG;QACxB,KAAK,CAAC,IAAI,KAAK,GAAG;QAClB,KAAK,CAAC,IAAI,KAAK,GAAG,CACnB,CAAC;AACJ,CAAC;AAED,SAAS,gBAAgB,CAAC,IAIzB;IACC,MAAM,GAAG,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,cAAc,CAAQ,CAAC;IAClD,GAAG,CAAC,IAAI,GAAG,OAAO,CAAC;IACnB,IAAI,IAAI,CAAC,WAAW,KAAK,SAAS,EAAE;QAClC,GAAG,CAAC,uBAAuB,GAAG,IAAI,CAAC,WAAW,CAAC;KAChD;IACD,IAAI,IAAI,CAAC,UAAU,KAAK,SAAS,EAAE;QACjC,GAAG,CAAC,sBAAsB,GAAG,IAAI,CAAC,UAAU,CAAC;KAC9C;IACD,MAAM,GAAG,CAAC;AACZ,CAAC;;;;;;;;;;;;ACvID,4CAAkC;AAClC,4CAA6D;AAE7D,4CAKsB;AAEf,KAAK,UAAU,eAAe,CAAC,OAAgB;IACpD,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,gBAAM,CAAC,GAAG,CAAC;IAEtC,yEAAyE;IACzE,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE;QACjB,MAAM,IAAI,uCAA8B,CAAC,GAAG,CAAC,CAAC;KAC/C;IAED,MAAM,oBAAoB,GAAG,MAAM,8BAAqB,CAAC,GAAG,CAAC,CAAC;IAE9D,IACE,qBAAoB,aAApB,oBAAoB,uBAApB,oBAAoB,CAAE,IAAI,MAAK,GAAG;QAClC,qBAAoB,aAApB,oBAAoB,uBAApB,oBAAoB,CAAE,IAAI,MAAK,GAAG,EAClC;QACA,MAAM,wBAAe,CACnB,oBAAoB,CAAC,KAAK,EAC1B,oBAAoB,CAAC,IAAI,CAC1B,CAAC;KACH;IAED,IAAI,qBAAoB,aAApB,oBAAoB,uBAApB,oBAAoB,CAAE,IAAI,MAAK,GAAG,EAAE;QACtC,MAAM,IAAI,sBAAa,CAAC,oBAAoB,aAApB,oBAAoB,uBAApB,oBAAoB,CAAE,WAAW,CAAC,CAAC;KAC5D;IAED,IAAI,CAAC,oBAAoB,CAAC,WAAW,EAAE;QACrC,MAAM,IAAI,uCAA8B,CACtC,GAAG,EACH,WAAW,EACX,gCAAgC,CACjC,CAAC;KACH;IAED,MAAM,kBAAkB,GAAG,MAAM,mBAAU,CAAC,GAAG,CAAC,CAAC;IACjD,IAAI,kBAAkB,CAAC,IAAI,KAAK,GAAG,EAAE;QACnC,MAAM,IAAI,6BAAoB,CAC5B,kBAAkB,CAAC,WAAW,EAC9B,kBAAkB,CAAC,IAAI,CACxB,CAAC;KACH;IACD,OAAO,oBAAoB,CAAC;AAC9B,CAAC;AAxCD,0CAwCC;;;;;;;;;;;ACpDD,+CAAuD;AAA9C,4IAAsB;;;;;;;;;;;;ACA/B,iDAA2D;AAC3D,6CAA2C;AAC3C,4CAAkC;AAElC,SAAgB,sBAAsB;IACpC,IAAI,cAAc,GAAG,EAAE,CAAC;IACxB,MAAM,WAAW,GAAG,CAAC,OAAe,EAA6B,EAAE;QACjE,IAAI,cAAc,KAAK,OAAO;YAAE,OAAO;QAEvC,iBAAO,CAAC,KAAK,CAAO,cAAc,CAAC,EAAE,CAAC;QACtC,cAAc,GAAG,OAAO,CAAC;QACzB,OAAO,iBAAO,CAAC,OAAO,CAAC,CAAC;IAC1B,CAAC,CAAC;IAEF,qBAAW,CAAC,EAAE,CAAC,sBAAsB,EAAE,GAAG,EAAE,CAC1C,WAAW,CAAC,6BAA6B,CAAC,CAC3C,CAAC;IACF,qBAAW,CAAC,EAAE,CAAC,mBAAmB,EAAE,CAAC,SAAiB,EAAE,EAAE,CACxD,WAAW,CAAC,mBAAmB,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,GAAG,CAAC,IAAI,CAAC,CAChE,CAAC;IACF,qBAAW,CAAC,EAAE,CAAC,sBAAsB,EAAE,CAAC,SAAiB,EAAE,KAAa,EAAE,EAAE,CAC1E,WAAW,CAAC,yBAAyB,SAAS,MAAM,KAAK,EAAE,CAAC,CAC7D,CAAC;IACF,qBAAW,CAAC,EAAE,CAAC,sBAAsB,EAAE,CAAC,SAAiB,EAAE,KAAa,EAAE,EAAE,CAC1E,WAAW,CAAC,oBAAoB,SAAS,MAAM,KAAK,EAAE,CAAC,CACxD,CAAC;IACF,qBAAW,CAAC,EAAE,CAAC,iBAAiB,EAAE,CAAC,IAAS,EAAE,EAAE,CAC9C,WAAW,CAAC,GAAG,IAAI,CAAC,MAAM,KAAK,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,GAAG,GAAG,CAAC,GAAG,CAAC,CACnE,CAAC;IACF,qBAAW,CAAC,EAAE,CAAC,WAAW,EAAE,CAAC,KAAK,EAAE,EAAE;QACpC,MAAM,KAAK,CAAC;IACd,CAAC,CAAC,CAAC;IACH,qBAAW,CAAC,EAAE,CAAC,eAAe,EAAE,CAAC,IAAI,EAAE,EAAE;QACvC,MAAM,KAAK,GAAG,QAAQ,CAAC,WAAW,CAAC,CAAC;QACpC,KAAK,CAAC,uBAAuB,EAAE,IAAI,CAAC,CAAC;IACvC,CAAC,CAAC,CAAC;AACL,CAAC;AAhCD,wDAgCC;;;;;;;;;;;;ACpCD,iDAA6C;AAC7C,+CAAqC;AAGrC,sCAAkC;AAGlC,6CAA0C;AAE1C,MAAM,KAAK,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC;AAE3B,KAAK,UAAU,iBAAiB,CACrC,IAAY,EACZ,QAA6D,EAC7D,OAAsB,EACtB,GAAqB,EACrB,oBAA6B;IAE7B,MAAM,QAAQ,GAAG,QAAQ,KAAK,QAAQ,CAAC;IACvC,MAAM,aAAa,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IACzD,UAAU;IACV,IAAI,eAAe,GAAa;QAC9B,OAAO,CAAC,aAAa,CAAC,IAAI,oBAAoB,IAAI,IAAI;KACvD,CAAC;IACF,IAAI,QAAQ,EAAE;QACZ,eAAe,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,KAAK,IAAI,CAAC,CAAC;KACjE;SAAM,IAAI,aAAa,EAAE;QACxB,uDAAuD;QACvD,0CAA0C;QAC1C,eAAe,GAAG,eAAe,CAAC,MAAM,CAAC,gBAAa,CAAC,GAAkB,CAAC,CAAC,CAAC;KAC7E;IAED,KAAK,CAAC,mCAAmC,EAAE,eAAe,CAAC,CAAC;IAC5D,SAAS,CAAC,GAAG,CAAC,UAAU,EAAE,eAAe,CAAC,MAAM,CAAC,CAAC;IAClD,SAAS,CAAC,GAAG,CAAC,iBAAiB,EAAE,eAAe,CAAC,CAAC;IAElD,IAAI,eAAe,CAAC,MAAM,KAAK,CAAC,EAAE;QAChC,OAAO;KACR;IACD,IAAI,MAAM,CAAC;IACX,IAAI;QACF,MAAM,GAAG,MAAM,aAAa,CAAC,IAAI,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC;KAC7D;IAAC,OAAO,GAAG,EAAE;QACZ,iDAAiD;QACjD,6CAA6C;QAC7C,IAAI,GAAG,CAAC,IAAI,KAAK,QAAQ,IAAI,GAAG,CAAC,IAAI,KAAK,SAAS,EAAE;YACnD,MAAM,GAAG,CAAC;SACX;KACF;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAvCD,8CAuCC;;;;;;;;;;;AClDD,kDAAiD;AAAxC,6HAAa;AACtB,uDAA2D;AAAlD,2IAAiB;;;;;;;;;;;;ACD1B,MAAM,OAAO,GAAG,mBAAO,CAAC,IAAgB,CAAC,CAAC;AAG1C,SAAgB,aAAa,CAAC,GAAoB;IAChD,IAAI,CAAC,GAAG,EAAE;QACR,OAAO,EAAE,CAAC;KACX;IAED,IAAI,GAAG,CAAC,IAAI,EAAE;QACZ,OAAO,GAAG,CAAC,IAAI,CAAC;KACjB;IAED,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;QACrB,OAAO,EAAE,CAAC;KACX;IAED,OAAO,OAAO,CACZ,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC;SAC1B,GAAG,CAAC,CAAC,IAAY,EAAE,EAAE,CAAC,aAAa,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC;SAC5D,MAAM,CAAC,OAAO,CAAC,CACnB,CAAC;AACJ,CAAC;AAlBD,sCAkBC;;;;;;;;;;;;ACrBD,4CAAkC;AAOlC,4CAAiD;AAE1C,KAAK,UAAU,aAAa,CACjC,aAAqB,EACrB,WAAmB,EACnB,YAAoB;IAEpB,aAAa,EAAE,CAAC;IAChB,oBAAoB,CAAC,WAAW,CAAC,CAAC,aAAa,CAAC,CAAC;IACjD,MAAM,cAAK,CAAC,YAAY,CAAC,CAAC;AAC5B,CAAC;AARD,sCAQC;AAED,SAAS,oBAAoB,CAAC,WAAmB;IAC/C,OAAO,CAAC,aAAqB,EAAgB,EAAE;QAC7C,IAAI,aAAa,GAAG,WAAW,EAAE;YAC/B,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;SACjD;IACH,CAAC,CAAC;AACJ,CAAC;AAED,SAAgB,mCAAmC,CAAC,EAClD,IAAI,EACJ,MAAM,EACN,QAAQ,EACR,MAAM,EACN,eAAe,GACJ;IACX,OAAO;QACL,IAAI;QACJ,MAAM;QACN,QAAQ;QACR,MAAM;QACN,eAAe;KAChB,CAAC;AACJ,CAAC;AAdD,kFAcC;AAED,SAAgB,sBAAsB,CACpC,QAAsE;IAEtE,IAAI,SAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,MAAM,MAAK,WAAW,IAAI,SAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,MAAM,MAAK,OAAO,EAAE;QACpE,MAAM,IAAI,6BAAoB,CAC5B,4IAA4I,CAC7I,CAAC;KACH;AACH,CAAC;AARD,wDAQC;;;;;;;;;;;;ACnDD,4CAA+B;AAC/B,2CAAgC;AAChC,6CAAiD;AAGjD,4CAAiE;AACjE,+CAA6C;AAO7C,4CAAiE;AACjE,4CAGoC;AAE7B,KAAK,UAAU,0BAA0B,CAC9C,OAAgB,EAChB,OAAgB,EAChB,UAAsB;IAEtB,IAAI,WAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,MAAM,KAAI,UAAU,CAAC,MAAM,CAAC,WAAW,CAAC,KAAK,EAAE,EAAE;QAC/D,UAAU,CAAC,MAAM,CAAC,WAAW,CAAC,GAAG,UAAU,CAAC,IAAI,CAAC;KAClD;IAED,MAAM,OAAO,GAAG;QACd,MAAM,EAAE,KAAK;QACb,GAAG,EAAE,GAAG,gBAAM,CAAC,GAAG,uBAAuB;QACzC,IAAI,EAAE,IAAI;QACV,OAAO,EAAE;YACP,SAAS,EAAE,YAAI,EAAE;YACjB,aAAa,EAAE,yBAAa,EAAE;SAC/B;QACD,IAAI,EAAE;YACJ,OAAO;YACP,UAAU;YACV,MAAM,EAAE,KAAK;SACd;QACD,EAAE,EAAE,EAAE,GAAG,4BAAmB,CAAC,OAAO,CAAC,EAAE;KACxC,CAAC;IACF,OAAO,MAAM,qBAAW,CAAiC,OAAO,CAAC,CAAC;AACpE,CAAC;AAzBD,gEAyBC;AAEM,KAAK,UAAU,gCAAgC,CACpD,KAAa,EACb,OAAgB,EAChB,OAAgB,EAChB,YAAoB,EACpB,aAAqB,EACrB,WAAW,GAAG,QAAQ,EACtB,cAA0C,EAC1C,eAA8B,EAAE;IAEhC,MAAM,OAAO,GAAG;QACd,MAAM,EAAE,KAAK;QACb,GAAG,EAAE,GAAG,gBAAM,CAAC,GAAG,yBAAyB,KAAK,EAAE;QAClD,IAAI,EAAE,IAAI;QACV,OAAO,EAAE;YACP,SAAS,EAAE,YAAI,EAAE;YACjB,aAAa,EAAE,yBAAa,EAAE;SAC/B;QACD,EAAE,EAAE,EAAE,GAAG,4BAAmB,CAAC,OAAO,CAAC,EAAE;QACvC,IAAI,EAAE;YACJ,OAAO;YACP,cAAc;YACd,YAAY;YACZ,MAAM,EAAE,KAAK;YACb,IAAI,EAAE,sBAAY,CAAC,OAAO,CAAC;YAC3B,UAAU,EAAE,mCAAyB,CAAC,OAAO,CAAC;YAC9C,WAAW,EACT,eAAc,aAAd,cAAc,uBAAd,cAAc,CAAE,IAAI,KAAI,OAAO,CAAC,cAAc,CAAC,IAAI,gBAAM,CAAC,YAAY;SACzE;KACF,CAAC;IAEF,MAAM,QAAQ,GAAG,MAAM,qBAAW,CAAiC,OAAO,CAAC,CAAC;IAE5E,+BAAsB,CAAC,QAAQ,CAAC,CAAC;IAEjC,IAAI,QAAQ,CAAC,EAAE,IAAI,QAAQ,CAAC,WAAW,EAAE;QACvC,OAAO,QAAQ,CAAC;KACjB;IAED,MAAM,sBAAa,CAAC,aAAa,EAAE,WAAW,EAAE,YAAY,CAAC,CAAC;IAC9D,OAAO,MAAM,gCAAgC,CAC3C,KAAK,EACL,OAAO,EACP,OAAO,EACP,YAAY,EACZ,aAAa,EACb,WAAW,EACX,cAAc,EACd,YAAY,CACb,CAAC;AACJ,CAAC;AAlDD,4EAkDC;;;;;;;;;;;;AChGD,4CAA+B;AAC/B,2CAAgC;AAChC,6CAAiD;AAGjD,4CAA0D;AAC1D,+CAA6C;AAI7C,4CAAiE;AAG1D,KAAK,UAAU,uBAAuB,CAC3C,OAAgB,EAChB,OAAgB,EAChB,UAAsB;IAEtB,MAAM,OAAO,GAAG;QACd,MAAM,EAAE,MAAM;QACd,GAAG,EAAE,GAAG,gBAAM,CAAC,GAAG,oBAAoB;QACtC,IAAI,EAAE,IAAI;QACV,OAAO,EAAE;YACP,SAAS,EAAE,YAAI,EAAE;YACjB,aAAa,EAAE,yBAAa,EAAE;SAC/B;QACD,IAAI,EAAE;YACJ,OAAO;YACP,UAAU;SACX;QACD,EAAE,EAAE,4BAAmB,CAAC,OAAO,CAAC;KACjC,CAAC;IACF,OAAO,MAAM,qBAAW,CAA8B,OAAO,CAAC,CAAC;AACjE,CAAC;AApBD,0DAoBC;AAEM,KAAK,UAAU,6BAA6B,CACjD,KAAa,EACb,IAAY,EACZ,OAAgB,EAChB,YAAoB,EACpB,aAAqB,EACrB,WAAW,GAAG,QAAQ;IAEtB,MAAM,OAAO,GAAG;QACd,MAAM,EAAE,KAAK;QACb,GAAG,EAAE,GAAG,gBAAM,CAAC,GAAG,sBAAsB,KAAK,EAAE;QAC/C,IAAI,EAAE,IAAI;QACV,OAAO,EAAE;YACP,SAAS,EAAE,YAAI,EAAE;YACjB,aAAa,EAAE,yBAAa,EAAE;SAC/B;QACD,EAAE,EAAE,EAAE,GAAG,4BAAmB,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE;KAC9C,CAAC;IAEF,MAAM,QAAQ,GAAG,MAAM,qBAAW,CAA8B,OAAO,CAAC,CAAC;IAEzE,+BAAsB,CAAC,QAAQ,CAAC,CAAC;IAEjC,IAAI,QAAQ,CAAC,MAAM,EAAE;QACnB,MAAM,EACJ,MAAM,EACN,UAAU,EACV,YAAY,EACZ,aAAa,EACb,qBAAqB,EACrB,eAAe,EACf,IAAI,EACJ,eAAe,EACf,cAAc,GACf,GAAG,QAAQ,CAAC,MAAM,CAAC;QACpB,OAAO;YACL,MAAM;YACN,UAAU;YACV,YAAY;YACZ,aAAa;YACb,qBAAqB;YACrB,eAAe;YACf,IAAI;YACJ,eAAe;YACf,cAAc;SACf,CAAC;KACH;IAED,MAAM,sBAAa,CAAC,aAAa,EAAE,WAAW,EAAE,YAAY,CAAC,CAAC;IAC9D,OAAO,MAAM,6BAA6B,CACxC,KAAK,EACL,IAAI,EACJ,OAAO,EACP,YAAY,EACZ,aAAa,EACb,WAAW,CACZ,CAAC;AACJ,CAAC;AAzDD,sEAyDC;;;;;;;;;;;;AC5FD,4CAA8B;AAC9B,+CAA+C;AAG/C,2CAAgD;AAChD,0CAAkD;AAE3C,KAAK,UAAU,kBAAkB,CACtC,OAAiC,EACjC,QAA8B;IAE9B,2EAA2E;IAC3E,MAAM,eAAe,GAAG,6BAAqB,CAAC,QAAQ,CAAC,CAAC;IACxD,MAAM,eAAe,GAAG,eAAe,GAAG,gBAAM,CAAC,oBAAoB,CAAC;IAEtE,IAAI,CAAC,eAAe,EAAE;QACpB,MAAM,OAAO,GAAG,CAAC,MAAM,WAAW,CAAC,MAAM,CAAC,cAAc,CACtD,QAAQ,EACR,QAAQ,CAAC,UAAU,CAAC,IAAI,CACzB,CAAsB,CAAC;QACxB,iBAAiB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;KACrC;SAAM;QACL,IAAI,OAAO,CAAC,YAAY,CAAC,EAAE;YACzB,IAAI,OAAO,CAAC,IAAI,EAAE;gBAChB,OAAO,CAAC,IAAI,CACV,uGAAuG,CACxG,CAAC;gBACF,+DAA+D;gBAC/D,OAAO,CAAC,GAAG,CAAC,+BAAwB,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;aAC1D;iBAAM;gBACL,OAAO,CAAC,IAAI,CACV,4EAA4E,CAC7E,CAAC;aACH;SACF;KACF;AACH,CAAC;AA7BD,gDA6BC;AAED,6DAA6D;AAC7D,2FAA2F;AAC3F,SAAgB,iBAAiB,CAC/B,OAAiC,EACjC,WAA8B;IAE9B,IAAI,OAAO,CAAC,YAAY,CAAC,EAAE;QACzB,IAAI,OAAO,CAAC,IAAI,EAAE;YAChB,wEAAwE;YACxE,OAAO,CAAC,GAAG,CAAC,+BAAwB,CAAC,WAAW,CAAC,CAAC,CAAC;SACpD;aAAM;YACL,gBAAgB,CAAC,EAAE,CAAC,WAAW,CAAC,IAAK,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC;SACxD;KACF;AACH,CAAC;AAZD,8CAYC;AAED,SAAS,gBAAgB,CAAC,OAAgB,EAAE,MAAM,GAAG,EAAE;IACrD,IAAI,OAAO,GAAG,CAAC,CAAC;IAChB,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAClC,KAAK,MAAM,IAAI,IAAI,IAAI,EAAE;QACvB,MAAM,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;QAC1B,IAAI,MAAM,GAAG,KAAK,CAAC;QACnB,MAAM,IAAI,GAAG,OAAO,KAAK,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;QACzC,IAAI,IAAI,EAAE;YACR,MAAM,GAAG,KAAK,CAAC;SAChB;QACD,OAAO,CAAC,GAAG,CACT,MAAM;YACJ,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;YACtB,GAAG,CAAC,IAAI;YACR,KAAK;YACL,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CACnC,CAAC;QACF,IAAI,GAAG,CAAC,YAAY,EAAE;YACpB,gBAAgB,CAAC,GAAG,CAAC,YAAY,EAAE,MAAM,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;SACrE;QACD,OAAO,EAAE,CAAC;KACX;AACH,CAAC;;;;;;;;;;;;AC5ED,oDAA0D;AAC1D,0DAAsE;AAGtE,8DAA2E;AAG3E,MAAM,eAAe,GAAG,CAAC,sBAAsB,EAAE,gBAAgB,CAAC,CAAC;AAM5D,KAAK,UAAU,OAAO,CAC3B,cAA8B,EAC9B,OAAgB,EAChB,WAAqB;IAErB,MAAM,eAAe,GAAG,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,QAAQ,IAAI,KAAK,CAAC;IACpE,KAAK,MAAM,OAAO,IAAI,eAAe,EAAE;QACrC,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC;YACnC,eAAe;YACf,cAAc;YACd,WAAW;SACZ,CAAC,CAAC;QAEH,IAAI,MAAM,EAAE;YACV,MAAM,SAAS,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC;YAE7C,IAAI,CAAC,SAAS,EAAE;gBACd,OAAO,MAAM,CAAC;aACf;YAED,IAAI,OAAO,SAAS,KAAK,QAAQ,EAAE;gBACjC,MAAM,IAAI,gDAAqB,EAAE,CAAC;aACnC;YACD,OAAO,EAAE,GAAG,MAAM,EAAE,SAAS,EAAE,CAAC;SACjC;KACF;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AA5BD,0BA4BC;;;;;;;;;;;;ACrCM,KAAK,UAAU,OAAO,CAAC,EAC5B,eAAe,EACf,cAAc,EACd,WAAW,GAKZ;;IACC,eAAe;IACf,IAAI,CAAC,eAAe,EAAE;QACpB,OAAO,IAAI,CAAC;KACb;IAED,MAAM,sBAAsB,GAC1B,cAAc,CAAC,IAAI,IAAI,cAAc,CAAC,IAAI,CAAC,SAAS,CAAC;IACvD,OAAO;QACL,KAAK,EACH,sBAAsB,WACrB,WAAmB,0CAAE,KAAK,MAC3B,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,IAAI;KACpB,CAAC;AACJ,CAAC;AAtBD,0BAsBC;;;;;;;;;;;;AC1BD,uCAA2B;AAC3B,8CAAiD;AAGjD,gDAAgD;AAChD,MAAM,WAAW,GAAG,kBAAkB,CAAC;AAEhC,KAAK,UAAU,OAAO,CAAC,EAC5B,eAAe,EACf,GAAG,GAIJ;IACC,eAAe;IACf,IAAI,eAAe,EAAE;QACnB,OAAO,IAAI,CAAC;KACb;IAED,MAAM,MAAM,GAAc,EAAE,CAAC;IAE7B,IAAI;QACF,MAAM,MAAM,GAA8B,CACxC,MAAM,UAAU,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,QAAQ,EAAE,SAAS,EAAE,QAAQ,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,CAC1E,CAAC,IAAI,EAAE,CAAC;QAET,IAAI,MAAM,EAAE;YACV,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,GAAG,EAAE,EAAE,GAAG,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YAE5D,sDAAsD;YACtD,IAAI,IAAI,IAAI,QAAQ,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE;gBACtE,iCAAiC;gBACjC,MAAM,CAAC,SAAS,GAAG,UAAU,IAAI,GAAG,QAAQ,EAAE,CAAC;aAChD;iBAAM;gBACL,MAAM,SAAS,GAAG,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBAC3C,IAAI,SAAS,IAAI,SAAS,CAAC,CAAC,CAAC,IAAI,SAAS,CAAC,CAAC,CAAC,EAAE;oBAC7C,MAAM,CAAC,SAAS,GAAG,UAAU,SAAS,CAAC,CAAC,CAAC,IAAI,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;iBAC7D;qBAAM;oBACL,yBAAyB;oBACzB,MAAM,CAAC,SAAS,GAAG,MAAM,CAAC;iBAC3B;aACF;SACF;KACF;IAAC,OAAO,GAAG,EAAE;QACZ,sFAAsF;QACtF,0BAA0B;KAC3B;IAED,IAAI;QACF,MAAM,CAAC,MAAM,GAAG,CACd,MAAM,UAAU,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,WAAW,EAAE,cAAc,EAAE,MAAM,CAAC,EAAE;YACrE,GAAG;SACJ,CAAC,CACH,CAAC,IAAI,EAAE,CAAC;KACV;IAAC,OAAO,GAAG,EAAE;QACZ,sFAAsF;QACtF,0BAA0B;KAC3B;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AArDD,0BAqDC;;;;;;;;;;;;ACnDD,SAAgB,WAAW,CAAC,MAAW;IACrC,OAAO,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,SAAS,CAAC,CAAC;AACvD,CAAC;AAFD,kCAEC;;;;;;;;;;;;ACXD,0CAAgC;AAChC,+CAAmD;AAGnD,4CAA8B;AAC9B,4CAA4C;AAC5C,6CAA8C;AAE9C,2CAAgD;AAEhD,MAAM,KAAK,GAAG,MAAM,CAAC,YAAY,CAAC,CAAC;AAEnC,MAAM,EAAE,cAAc,EAAE,cAAc,EAAE,GAAG,kBAAM,CAAC;AAE3C,KAAK,UAAU,UAAU,CAC9B,QAAkB,EAClB,cAAwC,EACxC,eAAe,GAAG,KAAK;IAEvB,MAAM,kBAAkB,GAAG,6BAAqB,CAAC,QAAQ,CAAC,CAAC;IAC3D,MAAM,YAAY,GAAG,kBAAkB,GAAG,gBAAM,CAAC,oBAAoB,CAAC;IAEtE,KAAK,CAAC,SAAS,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC;IACnC,KAAK,CAAC,sBAAsB,GAAG,kBAAkB,CAAC,CAAC;IACnD,KAAK,CAAC,cAAc,EAAE,YAAY,CAAC,CAAC;IACpC,SAAS,CAAC,GAAG,CAAC,qBAAqB,EAAE,kBAAkB,CAAC,CAAC;IACzD,IAAI,YAAY,IAAI,eAAe,EAAE;QACnC,KAAK,CAAC,2BAA2B,CAAC,CAAC;QACnC,MAAM,cAAc,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAClC,MAAM,UAAU,GAAG,CAAC,MAAM,cAAc,CAAC,QAAQ,EAAE,cAAc,EAAE;YACjE,6BAA6B,EAAE,IAAI;SACpC,CAAC,CAAY,CAAC;QACf,MAAM,kBAAkB,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACtC,SAAS,CAAC,GAAG,CACX,2BAA2B,EAC3B,kBAAkB,GAAG,cAAc,CACpC,CAAC;QACF,MAAM,WAAW,GAAG,MAAM,cAAc,CAAC,UAAU,EAAE,cAAc,CAAC,CAAC;QACrE,SAAS,CAAC,GAAG,CAAC,2BAA2B,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,kBAAkB,CAAC,CAAC;QAC5E,MAAM,mBAAmB,GAAG,6BAAqB,CAAC,WAAW,CAAC,CAAC;QAC/D,SAAS,CAAC,GAAG,CAAC,sBAAsB,EAAE,mBAAmB,CAAC,CAAC;QAC3D,KAAK,CAAC,qBAAqB,GAAG,mBAAmB,CAAC,CAAC;QACnD,IAAI,mBAAmB,GAAG,gBAAM,CAAC,cAAc,EAAE;YAC/C,KAAK,CAAC,uCAAuC,CAAC,CAAC;YAC/C,qFAAqF;YACrF,MAAM,IAAI,yBAAgB,EAAE,CAAC;SAC9B;QACD,OAAO,WAAW,CAAC;KACpB;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AApCD,gCAoCC;;;;;;;;;;;;AClDD,4CAA2C;AAG3C,sDAG4B;AAC5B,mDAA+D;AAC/D,4CAIkB;AAElB,2DAA6D;AAC7D,yCAAiC;AAEjC,MAAM,WAAW,GAAG,gBAAgB,CAAC;AAErC,SAAgB,6BAA6B,CAC3C,SAAoB;IAMpB,OAAO;QACL,SAAS,EAAE,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC;QACzC,SAAS,EAAE,SAAS,CAAC,SAAS,EAAE;QAChC,SAAS,EAAE,SAAS,CAAC,SAAS,EAAE;KACjC,CAAC;AACJ,CAAC;AAZD,sEAYC;AAEM,KAAK,UAAU,eAAe,CACnC,GAAQ,EACR,OAA6D,EAC7D,cAAyC;IAEzC,IACE,cAAc;QACd,CAAC,0CAAkB,CAAC,OAAO,CAAC;QAC5B,CAAC,6DAA0C,CAAC,QAAQ,CAAC,cAAc,CAAC,EACpE;QACA,MAAM,IAAI,iDAAwC,CAChD,iBAAiB,EACjB,cAAc,EACd,iIAAiI,CAClI,CAAC;KACH;IACD,MAAM,0BAA0B,GAAG,MAAM,4CAA4B,CACnE,WAAW,EACX,GAAG,CACJ,CAAC;IAEF,IAAI,0BAA0B,CAAC,IAAI,KAAK,GAAG,EAAE;QAC3C,MAAM,wBAAe,CACnB,0BAA0B,CAAC,KAAK,EAChC,0BAA0B,CAAC,IAAI,CAChC,CAAC;KACH;IACD,IAAI,0BAA0B,CAAC,WAAW,EAAE;QAC1C,MAAM,IAAI,oCAA2B,CACnC,WAAW,EACX,0BAA0B,CAAC,WAAW,CACvC,CAAC;KACH;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAlCD,0CAkCC;AAEY,oCAA4B,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CACjE,GAAG,KAAK,CAAC,IAAI,CAAC,OAAO,4TAA4T,CAClV,CAAC;;;;;;;;;;;;ACvEF,+CAA6C;AAC7C,2CAAmC;AAE5B,KAAK,UAAU,WAAW,CAAI,OAAY;IAC/C,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,OAAO,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;YAChD,IAAI,KAAK,EAAE;gBACT,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;aACtB;YACD,IAAI,GAAG,CAAC,UAAU,KAAK,GAAG,EAAE;gBAC1B,OAAO,MAAM,CAAC;oBACZ,IAAI,EAAE,GAAG,CAAC,UAAU;oBACpB,OAAO,EAAE,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,OAAO;iBACvB,CAAC,CAAC;aACJ;YACD,OAAO,CAAC,IAAI,CAAC,CAAC;QAChB,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC;AAfD,kCAeC;AAED;;;;;GAKG;AACI,KAAK,UAAU,eAAe,CAAI,OAAY;IACnD,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;;QACrC,OAAO,CAAC,OAAO,SAAG,OAAO,CAAC,OAAO,mCAAI;YACnC,cAAc,EAAE,0BAA0B;YAC1C,aAAa,EAAE,yBAAa,EAAE;SAC/B,CAAC;QACF,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC;QACpB,OAAO,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;YAChD,IAAI,KAAK,EAAE;gBACT,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;aACtB;YACD,IAAI,GAAG,CAAC,UAAU,IAAI,GAAG,EAAE;gBACzB,OAAO,MAAM,CAAC;oBACZ,IAAI,EAAE,GAAG,CAAC,UAAU;oBACpB,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,IAAW,CAAC;iBAC9B,CAAC,CAAC;aACJ;YACD,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,IAAW,CAAM,CAAC,CAAC;QACxC,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC;AApBD,0CAoBC;;;;;;;;;;;;AC9CD,SAAgB,kBAAkB,CAAC,CAAS,EAAE,OAAe;IAC3D,MAAM,SAAS,GAAG,OAAO,GAAG,CAAC,CAAC,MAAM,CAAC;IACrC,IAAI,SAAS,IAAI,CAAC,EAAE;QAClB,OAAO,CAAC,CAAC;KACV;IAED,OAAO,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;AACnC,CAAC;AAPD,gDAOC;;;;;;;;;;;;ACPD,wCAA6B;AAC7B,4CAA+B;AAC/B,2CAAgC;AAChC,+CAA0C;AAI1C,4CAA+C;AAC/C,6CAAqC;AACrC,2CAAsE;AACtE,+CAAoD;AACpD,4CAAqD;AAE9C,KAAK,UAAU,yBAAyB,CAC7C,SAAoB,EACpB,OAA8C;IAE9C,qEAAqE;IACrE,IAAI,gBAAgB,GAAG,uBAAuB,CAAC;IAC/C,IAAI,OAAO,CAAC,MAAM,EAAE;QAClB,gBAAgB,GAAG,6BAA6B,CAAC;KAClD;SAAM,IAAI,OAAO,CAAC,cAAc,EAAE;QACjC,gBAAgB,GAAG,OAAO,CAAC,cAAc,GAAG,oBAAoB,CAAC;KAClE;IAED,MAAM,UAAU,GACd,YAAY;QACZ,gBAAgB;QAChB,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;YAC9D,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,cAAc,CAAC,CAAC;IAE/C,iBAAO,CAAC,KAAK,CAAO,UAAU,CAAC,EAAE,CAAC;IAClC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE;QAClB,MAAM,iBAAO,CAAC,UAAU,CAAC,CAAC;KAC3B;IAED,IAAI;QACF,MAAM,MAAM,GAAG,sBAAS,CAAC,SAAS,CAAC,CAAC;QACpC,MAAM,cAAc,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAElD,MAAM,QAAQ,GAAc,EAAE,CAAC;QAE/B,yGAAyG;QACzG,KAAK,MAAM,UAAU,IAAI,cAAc,CAAC,WAAW,EAAE;YACnD,2EAA2E;YAC3E,MAAM,MAAM,GAAG,MAAM,uCAA8B,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;YACzE,IAAI,MAAM,KAAK,SAAS,EAAE;gBACxB,UAAU,CAAC,MAAM,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC;aACvC;YAED,6FAA6F;YAC7F,UAAU,CAAC,IAAI;gBACb,OAAO,CAAC,cAAc,CAAC,IAAI,gBAAM,CAAC,YAAY,IAAI,UAAU,CAAC,IAAI,CAAC;YAEpE,QAAQ,CAAC,IAAI,CAAC;gBACZ,MAAM,EAAE,MAAM;gBACd,GAAG,EAAE,GAAG,gBAAM,CAAC,GAAG,GAAG,OAAO,CAAC,0BAA0B;oBACrD,oBAAoB,EAAE;gBACxB,IAAI,EAAE,IAAI;gBACV,OAAO,EAAE;oBACP,SAAS,EAAE,YAAI,EAAE;oBACjB,aAAa,EAAE,yBAAa,EAAE;iBAC/B;gBACD,IAAI,EAAE;oBACJ,UAAU;iBACX;gBACD,EAAE,EAAE,4BAAmB,CAAC,OAAO,CAAC;aACjC,CAAC,CAAC;SACJ;QAED,OAAO,QAAQ,CAAC;KACjB;IAAC,OAAO,KAAK,EAAE;QACd,IAAI,SAAS,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,KAAK,yBAAyB,EAAE;YACzE,MAAM,IAAI,iCAAwB,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;SAClD;QACD,IAAI,SAAS,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,KAAK,sBAAsB,EAAE;YACtE,MAAM,IAAI,iCAAwB,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;SAClD;QAED,MAAM,KAAK,CAAC;KACb;YAAS;QACR,iBAAO,CAAC,KAAK,CAAO,UAAU,CAAC,EAAE,CAAC;KACnC;AACH,CAAC;AAtED,8DAsEC;;;;;;;;;;;;ACnFD,0CAAwC;AASxC,4CAAsC;AActC,IAAY,QAKX;AALD,WAAY,QAAQ;IAClB,uBAAW;IACX,6BAAiB;IACjB,yBAAa;IACb,iCAAqB;AACvB,CAAC,EALW,QAAQ,GAAR,gBAAQ,KAAR,gBAAQ,QAKnB;AAED,IAAY,YAKX;AALD,WAAY,YAAY;IACtB,qCAAqB;IACrB,mCAAmB;IACnB,+CAA+B;IAC/B,mCAAmB;AACrB,CAAC,EALW,YAAY,GAAZ,oBAAY,KAAZ,oBAAY,QAKvB;AAuTD,SAAS,iCAAiC,CACxC,GAAyB,EACzB,QAA8B,EAC9B,cAAiD,EACjD,OAA8B;IAE9B,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC;IAE1B,MAAM,eAAe,GAAG,IAAI,GAAG,EAAoB,CAAC;IAEpD,KAAK,MAAM,OAAO,IAAI,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE;QACjD,KAAK,MAAM,QAAQ,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;YAC7C,IAAI,QAAQ,CAAC,OAAO,IAAI,QAAQ,CAAC,OAAO,CAAC,YAAY,EAAE;gBACrD,KAAK,MAAM,WAAW,IAAI,QAAQ,CAAC,OAAO,CAAC,YAAY,EAAE;oBACvD,MAAM,cAAc,GAAG,mBAAmB,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;oBAC7D,MAAM,cAAc,GAAG,iBAAiB,CACtC,QAAQ,CAAC,OAAO,EAChB,cAAc,CACf,CAAC;oBACF,eAAe,CAAC,cAAc,CAAC,GAAG,mBAAmB,CACnD,WAAW,CAAC,IAAI,CACjB,CAAC;iBACH;aACF;SACF;KACF;IAED,4EAA4E;IAC5E,4DAA4D;IAC5D,MAAM,KAAK,GAAqB,EAAE,CAAC;IAEnC,KAAK,MAAM,OAAO,IAAI,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE;QACjD,KAAK,MAAM,WAAW,IAAI,QAAQ,CAAC,cAAc,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;YAC9D,MAAM,cAAc,GAAG,mBAAmB,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC,CAAC;YAClE,KAAK,MAAM,QAAQ,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;gBAC7C,MAAM,cAAc,GAAG,iBAAiB,CACtC,QAAQ,CAAC,OAAO,EAChB,cAAc,CACf,CAAC;gBACF,MAAM,WAAW,GAAG,eAAe,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC;gBAE1D,+EAA+E;gBAC/E,+CAA+C;gBAC/C,kFAAkF;gBAClF,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,CAClC,EAAE,EACF,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,EACnC;oBACE,IAAI,EAAE,cAAc;oBACpB,WAAW;oBACX,YAAY,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC;oBAClD,WAAW,EAAE,QAAQ,CAAC,OAAO,CAAC,WAAW;oBACzC,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,IAAI;oBACtB,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,OAAiB;oBACtC,qBAAqB,EAAE,QAAQ,CAAC,OAAO,CAAC,qBAAqB;iBAC9D,CAC8B,CAAC,CAAC,4CAA4C;gBAE/E,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;aAC5B;SACF;KACF;IAED,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC;IAEhC,IAAI,SAAS,IAAI,SAAS,CAAC,aAAa,EAAE;QACxC,MAAM,aAAa,GAAG,SAAS,CAAC,aAAa,CAAC;QAC9C,KAAK,MAAM,OAAO,IAAI,MAAM,CAAC,aAAa,CAAC,YAAY,CAAC,EAAE;YACxD,KAAK,MAAM,QAAQ,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;gBAC7C,MAAM,aAAa,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI;oBACrC,GAAG;oBACH,OAAO,CAAC,GAAG,CAAC,OAAO,CAAW,CAAC;gBACjC,MAAM,cAAc,GAAI,MAAM,CAAC,MAAM,CACnC,EAAE,EACF,aAAa,CAAC,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,EAC1C;oBACE,IAAI,EAAE,CAAC,UAAU,EAAE,aAAa,CAAC;oBACjC,WAAW,EAAE,EAAE;oBACf,YAAY,EAAE,KAAK;oBACnB,WAAW,EAAE,KAAK;oBAClB,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,IAAI;oBACtB,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,OAAiB;oBACtC,qBAAqB,EAAE,QAAQ,CAAC,OAAO,CAAC,qBAAqB;iBAC9D,CACwB,CAAC,CAAC,mDAAmD;gBAChF,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;aAC5B;SACF;KACF;IAED,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC;IAE5B,MAAM,iBAAiB,GACrB,OAAO,CAAC,iBAAiB,KAAK,QAAQ,CAAC,GAAG;QACxC,CAAC,CAAC,SAAS;QACX,CAAC,CAAC,OAAO,CAAC,iBAAiB,CAAC;IAEhC,MAAM,SAAS,GAAwB;QACrC,eAAe,EAAE,KAAK;QACtB,EAAE,EAAE,KAAK,CAAC,MAAM,KAAK,CAAC;QACtB,eAAe,EAAE,QAAQ,CAAC,OAAO,EAAE,CAAC,MAAM,GAAG,CAAC;QAC9C,GAAG,EAAE,IAAI,CAAC,GAAG;QACb,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,SAAS,EAAE,CAAC,IAAI,CAAC,QAAQ;QACzB,cAAc,EAAE,IAAI,CAAC,cAAc,IAAI,IAAI;QAC3C,cAAc;QACd,SAAS,EAAE,IAAI,CAAC,SAAS;QACzB,cAAc,EAAE,IAAI,CAAC,cAAc,IAAI,IAAI;QAC3C,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,OAAO,EAAE,UAAU,CAAC,KAAK,EAAE,iBAAiB,CAAC;QAC7C,iBAAiB;QACjB,WAAW,EAAE,MAAM,CAAC,WAAW;KAChC,CAAC;IAEF,OAAO,SAAS,CAAC;AACnB,CAAC;AAsEQ,8EAAiC;AApE1C,SAAS,iBAAiB,CAAC,OAAe,EAAE,QAAkB;IAC5D,OAAO,OAAO,GAAG,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;AAClD,CAAC;AAED,SAAS,mBAAmB,CAAC,OAAc;IACzC,OAAO,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;AACpC,CAAC;AAED,SAAS,mBAAmB,CAC1B,WAA8B;IAE9B,OAAO,WAAW;SACf,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC;SACjC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;QACZ,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;YACpB,OAAO,KAAK,CAAC;SACd;QAED,OAAO,GAAG,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;IAC3C,CAAC,CAAC,CAAC;AACP,CAAC;AAED,SAAS,aAAa,CAAC,GAAQ;IAC7B,OAAO,GAAG,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,OAAO,IAAI,GAAG,EAAE,CAAC;AAC7C,CAAC;AAED,SAAS,UAAU,CAAC,KAAe,EAAE,iBAA4B;IAC/D,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC;IAC3B,IAAI,SAAS,GAAG,EAAE,GAAG,KAAK,CAAC;IAC3B,MAAM,eAAe,GAAa,EAAE,CAAC;IACrC,MAAM,eAAe,GAAG,mBAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC;IAC7D,IAAI,iBAAiB,EAAE;QACrB,eAAe;aACZ,KAAK,CAAC,eAAe,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC;aACjD,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;YACf,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC5B,CAAC,CAAC,CAAC;KACN;IAED,IAAI,CAAC,KAAK,EAAE;QACV,IAAI,eAAe,CAAC,MAAM,EAAE;YAC1B,OAAO,MAAM,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,2BAA2B,CAAC;SACtE;QACD,OAAO,0BAA0B,CAAC;KACnC;IAED,IAAI,eAAe,CAAC,MAAM,EAAE;QAC1B,SAAS,IAAI,GAAG,GAAG,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,WAAW,CAAC;KAC/D;IAED,OAAO,GAAG,SAAS,0BAA0B,EAAE,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,CAAC;AACnE,CAAC;AAED,SAAS,EAAE,CAAC,IAAI,EAAE,KAAK;IACrB,MAAM,GAAG,GAAG;QACV,CAAC,EAAE,KAAK;QACR,OAAO,EAAE,GAAG;KACb,CAAC;IAEF,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC;IAElC,IAAI,KAAK,GAAG,CAAC,EAAE;QACb,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,GAAG,GAAG,CAAC,OAAO,CAAC,CAAC;KAC9D;IAED,OAAO,IAAI,CAAC;AACd,CAAC;;;;;;;;;;;;ACjhBD,sCAAyB;AACzB,uCAAkC;AAClC,wCAA6B;AAC7B,4CAAiC;AACjC,+CAAqC;AACrC,2CAA0B;AAC1B,2CAAgC;AAChC,iDAAmE;AACnE,+CAA+C;AAC/C,yCAAyC;AAEzC,4CASkB;AAClB,4CAWmB;AACnB,uCAA4B;AAC5B,2CAAgC;AAChC,0CAAmC;AACnC,4CAA+B;AAC/B,6CAA0C;AAC1C,gDAAsE;AAEtE,kDAAuD;AAQvD,2CAAsC;AACtC,yDAAoE;AAKpE,6DAA2E;AAC3E,6DAA0E;AAC1E,qDAAmE;AACnE,sDAAuD;AACvD,4CAA8C;AAQ9C,0CAAoC;AACpC,kDAAsD;AACtD,+CAA6C;AAC7C,+CAA6C;AAE7C,uDAAgE;AAChE,6CAAyC;AACzC,6CAAqC;AAErC,MAAM,KAAK,GAAG,WAAW,CAAC,eAAe,CAAC,CAAC;AAE3C,MAAM,4BAA4B,GAAG,IAAI,CAAC;AAE1C,SAAS,yBAAyB,CAChC,OAAgB,EAChB,QAAkC,EAClC,OAA8B;IAE9B,MAAM,SAAS,GAAG,yBAAY,CAAC,OAAO,CAAC,CAAC;IACxC,OAAO,SAAS;QACd,CAAC,CAAC,kCAAkC,CAAC,OAAO,EAAE,QAAQ,EAAE,OAAO,CAAC;QAChE,CAAC,CAAC,kCAAkC,CAAC,OAAO,CAAC,CAAC;AAClD,CAAC;AAED,SAAS,kCAAkC,CACzC,OAAgB,EAChB,QAAkC,EAClC,OAA8B;;IAE9B,MAAM,uBAAuB,GAAG,OAAO,CAAC,IAE3B,CAAC;IACd,MAAM,WAAW,GAAG,uBAAuB,aAAvB,uBAAuB,uBAAvB,uBAAuB,CAAE,UAAU,CAAC;IACxD,MAAM,YAAY,SAChB,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,MAAM,0CAAE,YAAY,CAAC;IACjC,MAAM,QAAQ,GACZ,YAAY,KAAK,SAAS;QACxB,CAAC,CAAC,WAAW,CAAC,cAAc,CAAC,YAAY,CAAC;QAC1C,CAAC,CAAC,SAAS,CAAC;IAChB,MAAM,qBAAqB,GAAG,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,KAAK,CAAC,IAAI,CACnD,CAAC,IAAI,EAAE,EAAE,CACP,IAAI,CAAC,IAAI,KAAK,oBAAoB;QAClC,IAAI,CAAC,IAAI,KAAK,8BAA8B,CAC/C,CAAC;IAEF,MAAM,kBAAkB,SAAG,qBAAqB,aAArB,qBAAqB,uBAArB,qBAAqB,CAAE,IAAI,0CAAE,kBAAkB,CAAC;IAC3E,MAAM,WAAW,GAAG,YAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,IAAI,MAAI,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,OAAO,CAAC,IAAI,EAAC;IAChE,MAAM,cAAc,GAAG,iBAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,QAAQ,0CAAE,IAA6B,CAAC;IAC5E,MAAM,UAAU,GAAG,kBAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,QAAQ,0CAAE,UAAU,KAAI,OAAO,CAAC,IAAI,CAAC;IACrE,MAAM,QAAQ,eAAG,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,QAAQ,0CAAE,IAAI,0CAAE,QAAQ,CAAC;IAEvD,SAAS,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC;IACtC,SAAS,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAE5C,OAAO;QACL,QAAQ;QACR,kBAAkB;QAClB,WAAW;QACX,UAAU;QACV,UAAU,EAAE,cAAc;QAC1B,iBAAiB,EAAE,UAAU;QAC7B,iBAAiB,EAAE,SAAS;QAC5B,aAAa,EAAE,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,MAAM;QAClC,QAAQ;QACR,UAAU,EAAE,WAAW;KACxB,CAAC;AACJ,CAAC;AAED,SAAS,kCAAkC,CAAC,OAAgB;IAC1D,MAAM,WAAW,GAAG,OAAO,CAAC,IAA+B,CAAC;IAC5D,MAAM,aAAa,GAAG,WAAW,IAAI,WAAW,CAAC,MAAM,CAAC;IACxD,MAAM,QAAQ,GAAG,WAAW,IAAI,WAAW,CAAC,QAAQ,CAAC;IACrD,MAAM,UAAU,GACd,QAAQ;QACR,QAAQ,CAAC,UAAU;QAClB,QAAQ,CAAC,UAAU,CAAC,IAA8B,CAAC;IACtD,MAAM,UAAU,GAAG,WAAW,IAAI,WAAW,CAAC,UAAU,CAAC;IACzD,MAAM,WAAW,GACf,YAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,mBAAmB,MAAI,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,mBAAmB,EAAC;IACvE,MAAM,iBAAiB,GAAG,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,iBAAiB,CAAC;IACzD,MAAM,iBAAiB,GAAG,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,iBAAiB,CAAC;IACzD,IAAI,kBAAkB,CAAC;IACvB,IACE,WAAW;QACX,WAAW,CAAC,MAAM;QAClB,WAAW,CAAC,MAAM,CAAC,kBAAkB,EACrC;QACA,kBAAkB,GAAG,WAAW,CAAC,MAAM,CAAC,kBAAkB,CAAC;KAC5D;IACD,SAAS,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC;IACtC,SAAS,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,WAAW,IAAI,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC;IACjE,OAAO;QACL,QAAQ;QACR,aAAa;QACb,UAAU;QACV,UAAU;QACV,WAAW;QACX,iBAAiB;QACjB,iBAAiB;QACjB,kBAAkB;KACnB,CAAC;AACJ,CAAC;AAED,SAAS,0BAA0B,CACjC,QAGuB;;IAEvB,MAAM,+BAA+B,GAAG,QAAoC,CAAC;IAC7E,OAAO,sCAA+B,aAA/B,+BAA+B,uBAA/B,+BAA+B,CAAE,MAAM,0CAAE,MAAM,MAAK,SAAS,CAAC;AACvE,CAAC;AAED,SAAS,2BAA2B,CAClC,QAGuB;IAEvB,IAAI,CAAE,QAAgB,CAAC,MAAM,EAAE;QAC7B,OAAO,QAAQ,CAAC;KACjB;IAED,IAAI,CAAC,0BAA0B,CAAC,QAAQ,CAAC,EAAE;QACzC,OAAO,QAAQ,CAAC;KACjB;IAED,QAAQ,CAAC,MAAM,CAAC,cAAc,CAAC,GAAG,yBAAyB,CACzD,QAAQ,CAAC,MAAM,CAAC,MAAM,CACvB,CAAC;IACF,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,SAAS,yBAAyB,CAAC,MAAe;IAChD,MAAM,MAAM,GAAqB,EAAE,CAAC;IAEpC,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE;QAC1B,MAAM,SAAS,GAAG,GAAG,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,UAAU,IAAI,EAAE,EAAE,CAAC;QAE/D,IAAI,MAAM,CAAC,SAAS,CAAC,KAAK,SAAS,EAAE;YACnC,MAAM,CAAC,SAAS,CAAC,GAAG;gBAClB,GAAG,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,CAAC,UAAU,EAAE;gBACvD,MAAM,EAAE,EAAE;aACX,CAAC;SACH;QAED,MAAM,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,KAAK,CAAC;KACjD;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,KAAK,UAAU,mBAAmB,CAChC,QAAmB,EACnB,UAAkB,EAClB,IAAY,EACZ,OAA8B;IAE9B,MAAM,OAAO,GAAiB,EAAE,CAAC;IACjC,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE;QAC9B,MAAM,iBAAO,CAAC,KAAK,CAAO,UAAU,CAAC,EAAE,CAAC;QACxC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE;YAClB,MAAM,iBAAO,CAAC,UAAU,CAAC,CAAC;SAC3B;QACD,kFAAkF;QAClF,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;QAC/C,MAAM,GAAG,GAAG,MAAM,eAAe,CAAC,OAAO,CAAC,CAAC;QAC3C,MAAM,EACJ,QAAQ,EACR,aAAa,EACb,UAAU,EACV,UAAU,EACV,WAAW,EACX,iBAAiB,EACjB,iBAAiB,EACjB,kBAAkB,EAClB,QAAQ,EACR,UAAU,GACX,GAAG,yBAAyB,CAC3B,WAAW,EACX,GAA+B,EAC/B,OAAO,CACR,CAAC;QAEF,MAAM,SAAS,GAAG,yBAAY,CAAC,OAAO,CAAC,CAAC;QACxC,IAAI,SAAS,IAAI,OAAO,CAAC,YAAY,CAAC,EAAE;YACtC,MAAM,iBAAO,CAAC,KAAK,CAAO,UAAU,CAAC,EAAE,CAAC;YACxC,MAAM,+BAAkB,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;SAC7C;QAED,MAAM,SAAS,GAAG,2BAA2B,CAAC,GAAG,CAAC,CAAC;QAEnD,MAAM,MAAM,GAAG,MAAM,QAAQ,CAC3B,QAAQ,EACR,UAAU,EACV,SAAgC,EAChC,OAAO,EACP,OAAO,EACP,aAAa,EACb,IAAI,EACJ,kBAAkB,CACnB,CAAC;QAEF,OAAO,CAAC,IAAI,CAAC;YACX,GAAG,MAAM;YACT,UAAU;YACV,WAAW;YACX,iBAAiB;YACjB,iBAAiB;YACjB,QAAQ;YACR,UAAU;SACX,CAAC,CAAC;KACJ;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAEM,KAAK,UAAU,OAAO,CAC3B,WAA8C,EAC9C,IAAY,EACZ,OAA8B;IAE9B,MAAM,UAAU,GAAG,sCAAsC,CAAC;IAC1D,IAAI;QACF,MAAM,mCAAe,CAAC,OAAO,EAAE,OAAO,CAAC,cAAc,CAAC,CAAC;QACvD,MAAM,QAAQ,GAAG,MAAM,gBAAgB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QACvD,OAAO,MAAM,mBAAmB,CAAC,QAAQ,EAAE,UAAU,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;KACvE;IAAC,OAAO,KAAK,EAAE;QACd,KAAK,CAAC,oBAAoB,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;QACvC,4DAA4D;QAC5D,4BAA4B;QAC5B,MAAM,mBAAmB,GACvB,KAAK,CAAC,IAAI,KAAK,GAAG,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAAC,CAAC;QAEtE,MAAM,6BAA6B,GACjC,KAAK,CAAC,IAAI,KAAK,GAAG;YAClB,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,iCAAiC,CAAC;YACtD,CAAC,KAAK,CAAC,WAAW,CAAC;QAErB,IAAI,mBAAmB,EAAE;YACvB,MAAM,uCAA8B,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;SAC9C;QACD,IAAI,6BAA6B,EAAE;YACjC,MAAM,gDAAuC,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;SACjE;QACD,IACE,yBAAY,CAAC,OAAO,CAAC,KAAK,QAAQ;YAClC,KAAK,CAAC,UAAU,KAAK,GAAG;YACxB;gBACE,yBAAyB;gBACzB,gDAAgD;aACjD,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,EACzB;YACA,MAAM,IAAI,iCAAwB,CAAC,IAAI,CAAC,CAAC;SAC1C;QAED,MAAM,IAAI,6BAAoB,CAC5B,KAAK,CAAC,WAAW;YACf,KAAK,CAAC,OAAO;YACb,kBAAkB,WAAW,UAAU,EACzC,KAAK,CAAC,IAAI,CACX,CAAC;KACH;YAAS;QACR,iBAAO,CAAC,KAAK,CAAO,UAAU,CAAC,EAAE,CAAC;KACnC;AACH,CAAC;AAhDD,0BAgDC;AAED,KAAK,UAAU,QAAQ,CACrB,QAA0C,EAC1C,UAA6C,EAC7C,GAAwB,EACxB,OAA8B,EAC9B,OAAgB,EAChB,aAAiC,EACjC,IAAY,EACZ,kBAAuB;;IAEvB,8CAA8C;IAC9C,sCAAsC;IACtC,uBAAuB;IACvB,IAAI,QAAQ,IAAI,UAAU,EAAE;QAC1B,GAAG,GAAG,0CAAiC,CACpC,GAAmC,EAAE,0DAA0D;QAChG,QAAQ,EACR,UAAU,EACV,OAAO,CACR,CAAC;QACF,uFAAuF;QACvF,IAAI,OAAO,CAAC,OAAO,EAAE;YACnB,GAAG,CAAC,eAAe;gBACjB,OAAO,CAAC,OAAO,CAAC,eAAe,IAAI,QAAQ,CAAC,OAAO,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC;YACnE,IAAI,GAAG,CAAC,eAAe,EAAE;gBACvB,GAAG,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;oBACnC,IAAI,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE;wBAC5C,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,CACnC,IAAI,CAAC,IAAI,EACT,IAAI,CAAC,IAAI,EACT,IAAI,CAAC,OAAO,CACb,CAAC;wBACF,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;wBACrC,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;wBACrC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;wBAE/B,+DAA+D;wBAC/D,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE;4BAC1B,OAAO;yBACR;wBAED,MAAM,SAAS,GAAG,gCAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;wBAC/C,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,CAClC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EACrB,SAAS,CAAC,IAAI,EACd,SAAS,CAAC,OAAO,CAClB,CAAC;wBACF,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC,OAAO,CAAC;qBACrC;gBACH,CAAC,CAAC,CAAC;aACJ;SACF;KACF;IACD,4EAA4E;IAC5E,qFAAqF;IACrF,SAAS,CAAC,GAAG,CAAC,kBAAkB,EAAE,GAAG,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;IAC9D,GAAG,CAAC,gBAAgB,GAAG,CAAC,CAAC,aAAa,CAAC;IACvC,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,EAAE;QAC7B,GAAG,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,IAAK,aAAwB,CAAC;QACrD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAC1D,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;KAChC;IACD,SAAS,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;IAEnD,IAAI,GAAG,CAAC,MAAM,IAAI,kBAAkB,EAAE;QACpC,GAAG,CAAC,eAAe,GAAG,GAAG,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;YACrD,MAAM,iBAAiB,GAAG,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACtE,IAAI,iBAAiB,EAAE;gBACpB,IAAoB,CAAC,qBAAqB;oBACzC,iBAAiB,CAAC,cAAc,CAAC;aACpC;YACA,IAAoB,CAAC,eAAe,GAAG,GAAG,CAAC,MAAO,CAAC,SAAS,CAAC;YAC9D,OAAO,IAAI,CAAC;QACd,CAAC,CAAC,CAAC;KACJ;IACD,IACE,OAAO,CAAC,MAAM,WACd,GAAG,CAAC,MAAM,0CAAE,SAAS;QACrB,OAAO,CAAC,0BAA0B,CAAC,EACnC;QACA,MAAM,aAAa,GAAG,GAAG,CAAC,eAAe,CAAC,MAAM,CAC9C,CAAC,IAAI,EAAE,EAAE,CAAE,IAAoB,CAAC,qBAAqB,CACtD,CAAC;QACF,qFAAqF;QACrF,IACE,GAAG,CAAC,eAAe,CAAC,MAAM,KAAK,CAAC;YAChC,aAAa,CAAC,MAAM,KAAK,CAAC;YAC1B,CAAC,GAAG,CAAC,EAAE,EACP;YACA,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC;SACf;QACD,GAAG,CAAC,eAAe,GAAG,aAAa,CAAC;KACrC;IAED,GAAG,CAAC,WAAW,GAAG,gBAAgB,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;IAExD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,eAAe,CACtB,OAAgB;;IAIhB,MAAM,WAAW,GAAG,OAAO,CAAC,IAAW,CAAC;IACxC,MAAM,gBAAgB,GACpB,OAAO,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,YAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,MAAM,YAAI,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,UAAU,0CAAE,MAAM,EAAC,CAAC;IAC7E,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,qBAAW,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;YACxC,IAAI,KAAK,EAAE;gBACT,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;aACtB;YACD,IAAI,GAAG,CAAC,UAAU,KAAK,GAAG,EAAE;gBAC1B,MAAM,GAAG,GAAG,2BAA2B,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;gBACnD,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC;aACpB;YAED,IAAI,CAAC,gBAAgB,GAAG,gBAAgB,CAAC;YACzC,OAAO,CAAC,IAAI,CAAC,CAAC;QAChB,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,2BAA2B,CAAC,GAAG,EAAE,IAAI;IAC5C,MAAM,EAAE,UAAU,EAAE,GAAG,GAAG,CAAC;IAC3B,IAAI,GAAG,CAAC;IACR,MAAM,WAAW,GAAG,IAAI,IAAI,IAAI,CAAC,WAAW,CAAC;IAC7C,QAAQ,UAAU,EAAE;QAClB,KAAK,GAAG,CAAC;QACT,KAAK,GAAG;YACN,GAAG,GAAG,wBAAe,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;YAC/C,GAAG,CAAC,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC;YAC5B,MAAM;QACR,KAAK,GAAG;YACN,GAAG,GAAG,IAAI,sBAAa,CAAC,WAAW,CAAC,CAAC;YACrC,GAAG,CAAC,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC;YAC5B,MAAM;QACR,KAAK,GAAG;YACN,GAAG,GAAG,IAAI,oCAA2B,CAAC,gBAAgB,CAAC,CAAC;YACxD,GAAG,CAAC,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC;YAC5B,MAAM;QACR,KAAK,GAAG;YACN,GAAG,GAAG,IAAI,4BAAmB,CAAC,WAAW,CAAC,CAAC;YAC3C,GAAG,CAAC,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC;YAC5B,MAAM;QACR;YACE,GAAG,GAAG,IAAI,wCAA+B,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;YACnE,GAAG,CAAC,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC;KAC/B;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,gBAAgB,CACvB,IAAY,EACZ,OAA8B;IAE9B,IAAI,OAAO,CAAC;IACZ,IAAI,OAAO,CAAC,MAAM,EAAE;QAClB,OAAO,GAAG,IAAI,CAAC;KAChB;SAAM;QACL,iFAAiF;QACjF,OAAO,GAAG,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;KAC/B;IACD,SAAS,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAEhC,MAAM,SAAS,GAAG,yBAAY,CAAC,OAAO,CAAC,CAAC;IACxC,IAAI,SAAS,EAAE;QACb,OAAO,6CAAyB,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;KACtD;IACD,IAAI,OAAO,EAAE;QACX,OAAO,qBAAqB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;KAC7C;IACD,OAAO,sBAAsB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;AAC/C,CAAC;AAED,oFAAoF;AACpF,KAAK,UAAU,qBAAqB,CAClC,IAAI,EACJ,OAA8C;;IAE9C,qEAAqE;IACrE,IAAI,gBAAgB,GAAG,uBAAuB,CAAC;IAC/C,IAAI,OAAO,CAAC,MAAM,EAAE;QAClB,gBAAgB,GAAG,0BAA0B,CAAC;KAC/C;SAAM,IAAI,OAAO,CAAC,cAAc,EAAE;QACjC,gBAAgB,GAAG,OAAO,CAAC,cAAc,GAAG,oBAAoB,CAAC;KAClE;IAED,MAAM,UAAU,GACd,YAAY;QACZ,gBAAgB;QAChB,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;YACtD,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,cAAc,CAAC,CAAC;IAE/C,IAAI;QACF,MAAM,QAAQ,GAAc,EAAE,CAAC;QAC/B,MAAM,iBAAO,CAAC,KAAK,CAAO,UAAU,CAAC,EAAE,CAAC;QACxC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE;YAClB,MAAM,iBAAO,CAAC,UAAU,CAAC,CAAC;SAC3B;QAED,MAAM,IAAI,GAAG,MAAM,wCAAiB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QACpD,MAAM,aAAa,GAAI,IAAiC,CAAC,aAAa,CAAC;QACvE,IAAI,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,MAAM,EAAE;YACzB,MAAM,iBAAO,CAAC,KAAK,CAAO,UAAU,CAAC,EAAE,CAAC;YACxC,IAAI,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE;gBACnC,OAAO,CAAC,IAAI,CACV,eAAK,CAAC,IAAI,CAAC,GAAG,CACZ,GAAG,YAAI,CAAC,KAAK,IAAI,aAAa,CAAC,MAAM,IAAI,aAAa,CAAC,MAAM;oBAC3D,IAAI,CAAC,eAAe;yBACjB,MAAM,iDAAiD,CAC7D,CACF,CAAC;gBACF,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;oBAC1B,IAAI,CAAC,CAAC,UAAU,EAAE;wBAChB,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC;qBAC5D;oBACD,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;gBAC9D,CAAC,CAAC,CAAC;aACJ;YACD,KAAK,CACH,oEAAoE,EACpE,aAAa,CACd,CAAC;YACF,IAAI,OAAO,CAAC,WAAW,CAAC,EAAE;gBACxB,MAAM,IAAI,6BAAoB,CAC5B,8BAAqB,CAAC,2CAA2C,CAAC,CACnE,CAAC;aACH;SACF;QACD,SAAS,CAAC,GAAG,CAAC,YAAY,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAC9C,MAAM,WAAW,GAAG,GAAG,CACrB,IAAI,CAAC,MAAM,EACX,oDAAoD,EACpD,IAAI,CACL,CAAC;QACF,MAAM,UAAU,GAAG,GAAG,CACpB,IAAI,CAAC,MAAM,EACX,mDAAmD,EACnD,IAAI,CACL,CAAC;QACF,MAAM,UAAU,GAAG,GAAG,CACpB,IAAI,CAAC,MAAM,EACX,mDAAmD,EACnD,IAAI,CACL,CAAC;QACF,IAAI,WAAW,EAAE;YACf,SAAS,CAAC,GAAG,CAAC,aAAa,EAAE,WAAW,CAAC,CAAC;SAC3C;QACD,IAAI,UAAU,EAAE;YACd,SAAS,CAAC,GAAG,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC;SACzC;QACD,IAAI,UAAU,EAAE;YACd,SAAS,CAAC,GAAG,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC;SACzC;QAED,KAAK,MAAM,cAAc,IAAI,IAAI,CAAC,eAAe,EAAE;YACjD,IAAI,CAAC,cAAc,CAAC,OAAO,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE;gBACvD,KAAK,CACH,wEAAwE,CACzE,CAAC;gBACF,MAAM,IAAI,6BAAoB,CAC5B,8BAAqB,CAAC,2CAA2C,CAAC,CACnE,CAAC;aACH;YAED,wCAAwC;YACxC,sCAAsC;YACtC,MAAM,GAAG,GAGO,cAAc,CAAC,QAAQ;gBACrC,CAAC,CAAC,cAAc,CAAC,QAAQ;gBACzB,CAAC,CAAC,cAAc,CAAC,OAAO,CAAC;YAE3B,IAAI,OAAO,CAAC,YAAY,CAAC,EAAE;gBACzB,IAAI,cAAc,CAAC,QAAQ,EAAE;oBAC3B,MAAM,iBAAO,CAAC,KAAK,CAAO,UAAU,CAAC,EAAE,CAAC;oBACxC,+BAAkB,CAAC,OAAO,EAAE,GAA2B,CAAC,CAAC;iBAC1D;qBAAM;oBACL,MAAM,iBAAO,CAAC,KAAK,CAAO,UAAU,CAAC,EAAE,CAAC;oBACxC,8BAAiB,CAAC,OAAO,EAAE,GAAc,CAAC,CAAC;iBAC5C;aACF;YACD,MAAM,OAAO,GAAG,cAAsC,CAAC;YACvD,MAAM,cAAc,GAAG,+CAAqB,CAAC,OAAO,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;YAErE,IAAK,GAAe,CAAC,MAAM,EAAE;gBAC3B,MAAM,uBAAuB,GAAI,GAAe,CAAC,MAAM,CAAC,SAAS,CAAC;gBAClE,IAAI,CAAC,uBAAuB,IAAI,OAAO,CAAC,YAAY,CAAC,EAAE;oBACpD,GAAe,CAAC,MAAM,CAAC,SAAS,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;iBAC3D;gBAED,IAAI,uBAAuB,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE;oBACrE,SAAS,CAAC,GAAG,CAAC,WAAW,EAAE,uBAAuB,CAAC,CAAC;oBACpD,SAAS,CAAC,GAAG,CAAC,aAAa,EAAE,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;iBACvD;aACF;YAED,0EAA0E;YAC1E,MAAM,UAAU,GACd,cAAc,CAAC,UAAU,IAAI,IAAI,CAAC,MAAM,CAAC,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;YAEtE,gFAAgF;YAChF,MAAM,sBAAsB,GAAG,UAAU;gBACvC,CAAC,CAAC,QAAQ,CAAC,OAAO,CACd,QAAQ,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC,IAAI,IAAI,IAAI,EAAE,CAAC,EAC3C,UAAU,CACX;gBACH,CAAC,CAAC,EAAE,CAAC;YAEP,IAAI,aAAa,CAAC;YAElB,IAAI,sBAAsB,EAAE;gBAC1B,MAAM,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,sBAAsB,CAAC,CAAC;gBACnD,aAAa,GAAG,GAAG,CAAC;aACrB;YAED,MAAM,MAAM,GAAG,MAAM,0BAAiB,CACpC,IAAI,EACJ,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,cAAe,EAC3C,OAAO;YACP,uEAAuE;YACvE,8CAA8C;YAC9C,GAAG,EACH,aAAa,CACd,CAAC;YAEF,SAAS,CAAC,GAAG,CAAC,gBAAgB,EAAE,cAAc,CAAC,CAAC;YAChD,IAAI,cAAc,CAAC,QAAQ,EAAE;gBAC3B,MAAM,QAAQ,GAAG,GAA2B,CAAC;gBAC7C,mBAAmB,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC,OAAO,CAAC,OAAQ,CAAC,CAAC;aACvE;YACD,IAAI,cAAc,CAAC,OAAO,EAAE;gBAC1B,MAAM,OAAO,GAAG,GAAc,CAAC;gBAC/B,mBAAmB,CAAC,OAAO,CAAC,IAAK,EAAE,OAAO,CAAC,OAAQ,CAAC,CAAC;aACtD;YAED,IAAI,MAA0C,CAAC;YAC/C,IAAI,cAAc,CAAC,QAAQ,EAAE;gBAC3B,MAAM,GAAG,MAAM,eAAe,CAAC,OAAO,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC;aACjE;iBAAM;gBACL,MAAM,GAAG,MAAM,eAAe,CAAC,OAAO,CACpC,cAAc,EACd,OAAO,EACP,GAAc,CACf,CAAC;aACH;YAED,MAAM,mBAAmB,GAAG,cAAc,CAAC,QAAQ;gBACjD,CAAC,CAAE,GAA4B,CAAC,OAAO,CAAC,IAAI;gBAC5C,CAAC,CAAE,GAAe,CAAC,IAAI,CAAC;YAE1B,MAAM,IAAI,GAAgB;gBACxB,qEAAqE;gBACrE,UAAU,EAAE,OAAO,CAAC,MAAM,CAAC,UAAU;gBAErC,yEAAyE;gBACzE,sBAAsB,EAAE,GAAG,sBAAsB,EAAE;gBACnD,eAAe,EAAE,OAAO,CAAC,kBAAkB,CAAC;gBAC5C,mBAAmB,EAAE,OAAO,CAAC,WAAW;gBACxC,mBAAmB;gBACnB,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,SAAS;gBAC9C,iBAAiB,EAAE,MAAM,8CAAoB,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC;gBAClE,iBAAiB,EAAE,UAAU;gBAC7B,MAAM,EAAG,GAAe,CAAC,MAAM;gBAC/B,kBAAkB,EAAG,GAAW,CAAC,kBAAkB;gBACnD,MAAM;aACP,CAAC;YAEF,IAAI,QAA8B,CAAC;YACnC,IAAI,cAAc,CAAC,QAAQ,EAAE;gBAC3B,QAAQ,GAAG,cAAc,CAAC,QAAQ,CAAC;aACpC;iBAAM;gBACL,sDAAsD;gBACtD,yFAAyF;gBACzF,KAAK,CAAC,kCAAkC,EAAE;oBACxC,IAAI,EAAG,GAAe,CAAC,IAAI;oBAC3B,UAAU,EAAE,cAAc,CAAC,UAAU,IAAI,OAAO,CAAC,IAAI;iBACtD,CAAC,CAAC;gBACH,QAAQ,GAAG,MAAM,WAAW,CAAC,MAAM,CAAC,cAAc,CAChD,GAAc,EACd,cAAe,CAChB,CAAC;gBACF,KAAK,CAAC,uCAAuC,EAAE;oBAC7C,eAAe,EAAE,QAAQ,CAAC,OAAO,EAAE,CAAC,MAAM;iBAC3C,CAAC,CAAC;aACJ;YAED,MAAM,eAAe,GAAG,OAAO,CAAC,4BAA4B,CAAC;YAE7D,IAAI,cAAc,EAAE;gBAClB,QAAQ,GAAG,MAAM,kBAAU,CAAC,QAAQ,EAAE,cAAc,EAAE,eAAe,CAAC,CAAC;aACxE;YACD,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;YAEzB,IACE,OAAO,CAAC,cAAc,WACrB,cAAc,CAAC,SAA4B,0CAAE,OAAO,GACrD;gBACA,MAAM,GAAG,GAAG,cAAc,CAAC,SAA2B,CAAC;gBACvD,MAAM,cAAc,GAAG,GAAG,CAAC,UAAU,IAAI,GAAG,CAAC;gBAC7C,SAAS,CAAC,GAAG,CAAC,gBAAgB,EAAE;oBAC9B,SAAS,QAAE,cAAc,CAAC,WAAW,0CAAE,IAAI;oBAC3C,OAAO,EAAE,kCAAmB,CAC1B,cAAc,CAAC,OAAO,CAAC,QAAQ,EAAE,EACjC,4BAA4B,CAC7B;iBACF,CAAC,CAAC;gBACH,MAAM,CAAC,cAAc,CAAC;oBACpB;wBACE,IAAI,EAAE,OAAO;wBACb,IAAI,EAAE,oBAAoB;wBAC1B,GAAG,EAAE,GAAG,CAAC,OAAO;qBACjB;iBACF,CAAC,CAAC;aACJ;iBAAM,IAAI,cAAc,CAAC,SAAS,EAAE;gBACnC,MAAM,EACJ,SAAS,EACT,SAAS,EACT,SAAS,GACV,GAAG,+CAA6B,CAC/B,cAAc,CAAC,SAAsB,CACtC,CAAC;gBACF,KAAK,CACH,6CAA6C,SAAS,iBAAiB,SAAS,EAAE,CACnF,CAAC;gBAEF,MAAM,gBAAgB,GAAG,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,uBAAuB,EAAE,EAAE,CAAC,CAAC;gBACvE,SAAS,CAAC,GAAG,CAAC,kBAAkB,EAAE;oBAChC,kBAAkB,EAAE,SAAS;oBAC7B,kBAAkB,EAAE,SAAS;oBAC7B,GAAG,gBAAgB;iBACpB,CAAC,CAAC;gBACH,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;aAC5B;YACD,MAAM,MAAM,GACV,gBAAM,CAAC,GAAG;gBACV,CAAC,OAAO,CAAC,0BAA0B;oBACjC,OAAO,CAAC,YAAY;oBACpB,iBAAiB,CAAC,CAAC;YACvB,MAAM,OAAO,GAAY;gBACvB,MAAM,EAAE,MAAM;gBACd,GAAG,EAAE,MAAM;gBACX,IAAI,EAAE,IAAI;gBACV,OAAO,EAAE;oBACP,SAAS,EAAE,YAAI,EAAE;oBACjB,aAAa,EAAE,yBAAa,EAAE;iBAC/B;gBACD,EAAE,EAAE,MAAM,CAAC,mBAAmB,CAAC,OAAO,CAAC;gBACvC,IAAI;aACL,CAAC;YAEF,IAAI,cAAc,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,OAAO,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,EAAE;gBACpE,MAAM,eAAe,GACnB,UAAU;oBACV,CAAC,UAAU,CAAC,QAAQ,CAAC,mBAAmB,CAAC;wBACvC,UAAU,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC;gBACtC,IAAI,CAAC,eAAe,IAAI,OAAO,CAAC,mBAAmB,EAAE;oBACnD,OAAO,CAAC,OAAO,GAAG,GAA6B,CAAC,CAAC,iCAAiC;iBACnF;aACF;YACD,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;SACxB;QACD,OAAO,QAAQ,CAAC;KACjB;YAAS;QACR,MAAM,iBAAO,CAAC,KAAK,CAAO,UAAU,CAAC,EAAE,CAAC;KACzC;AACH,CAAC;AAED,iEAAiE;AACjE,KAAK,UAAU,sBAAsB,CAAC,IAAI,EAAE,OAAO;IACjD,MAAM,GAAG,GAAG,gCAAc,CAAC,IAAI,CAAC,CAAC;IACjC,KAAK,CAAC,oBAAoB,EAAE,GAAG,CAAC,IAAI,GAAG,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,CAAC;IAC1D,mBAAmB,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;IAC3C,MAAM,WAAW,GAAG,kBAAkB,CAAC,GAAG,CAAC,IAAI,GAAG,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,CAAC;IACrE,oFAAoF;IACpF,MAAM,GAAG,GAAG,GAAG,gBAAM,CAAC,GAAG,GAAG,OAAO,CAAC,YAAY;QAC9C,SAAS,OAAO,CAAC,cAAc,EAAE,IAAI,WAAW,EAAE,CAAC;IACrD,OAAO;QACL;YACE,MAAM,EAAE,KAAK;YACb,GAAG;YACH,EAAE,EAAE,MAAM,CAAC,mBAAmB,CAAC,OAAO,CAAC;YACvC,IAAI,EAAE,IAAI;YACV,OAAO,EAAE;gBACP,SAAS,EAAE,YAAI,EAAE;gBACjB,aAAa,EAAE,yBAAa,EAAE;aAC/B;SACF;KACF,CAAC;AACJ,CAAC;AAED,SAAS,mBAAmB,CAAC,IAAY,EAAE,OAAe;IACxD,SAAS,CAAC,GAAG,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC;IACnC,SAAS,CAAC,GAAG,CAAC,gBAAgB,EAAE,OAAO,CAAC,CAAC;IACzC,SAAS,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,GAAG,GAAG,GAAG,OAAO,CAAC,CAAC;AACjD,CAAC;AAED,SAAS,gBAAgB,CAAC,KAAuB;IAC/C,MAAM,IAAI,GAAG,EAAE,CAAC;IAChB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;QACxB,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC;KACtB;IACD,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC;AAClC,CAAC;;;;;;;;;;;;ACr0BD,gDAA8C;AAE9C,SAAgB,OAAO,CACrB,OAAe,EACf,IAAc,EACd,OAAqC;IAErC,MAAM,YAAY,GAA8B,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;IAChE,IAAI,OAAO,IAAI,OAAO,CAAC,GAAG,EAAE;QAC1B,YAAY,CAAC,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC;KAChC;IAED,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,IAAI,MAAM,GAAG,EAAE,CAAC;QAChB,IAAI,MAAM,GAAG,EAAE,CAAC;QAEhB,MAAM,IAAI,GAAG,YAAY,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,EAAE,YAAY,CAAC,CAAC;QAC7D,IAAI,IAAI,CAAC,MAAM,EAAE;YACf,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE;gBAC9B,MAAM,IAAI,IAAI,CAAC;YACjB,CAAC,CAAC,CAAC;SACJ;QACD,IAAI,IAAI,CAAC,MAAM,EAAE;YACf,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE;gBAC9B,MAAM,IAAI,IAAI,CAAC;YACjB,CAAC,CAAC,CAAC;SACJ;QAED,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE;YACxB,IAAI,IAAI,KAAK,CAAC,EAAE;gBACd,OAAO,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,CAAC;aACjC;YACD,OAAO,CAAC,MAAM,IAAI,MAAM,CAAC,CAAC;QAC5B,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC;AAjCD,0BAiCC;;;;;;;;ACnCD,mBAAmB,mBAAO,CAAC,KAAU;;AAErC;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA,iBAAiB,mBAAO,CAAC,KAAa;;AAEtC;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH,CAAC;;AAED,YAAY,mBAAO,CAAC,KAAa;AACjC,cAAc,mBAAO,CAAC,KAAa;;AAEnC;AACA,cAAc,iCAA+B;;;;;;;;AC9B7C,gBAAgB,mBAAO,CAAC,KAAe;;AAEvC;;AAEA;AACA;AACA;AACA;AACA;AACA,mBAAmB;AACnB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8EAA8E;AAC9E;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,2CAA2C;AAC3C;AACA;AACA;AACA,yDAAyD;AACzD;AACA;;;;;;;;AChDA;;AAEA,eAAe,mBAAO,CAAC,KAAW;AAClC,QAAQ,UAAU,EAAE,mBAAO,CAAC,IAAY;AACxC,cAAc,mBAAO,CAAC,KAAO;AAC7B,WAAW,mBAAO,CAAC,KAAqB;AACxC,QAAQ,iCAAiC,EAAE,mBAAO,CAAC,KAAW;AAC9D,QAAQ,qBAAqB,EAAE,mBAAO,CAAC,KAA0B;;AAEjE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,IAAI;AACJ;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA","sources":["webpack://snyk/./node_modules/@yarnpkg/core/lib|sync","webpack://snyk/./node_modules/keyv/src|sync","webpack://snyk/./src/cli/commands/monitor/index.ts","webpack://snyk/./src/cli/commands/monitor/process-json-monitor.ts","webpack://snyk/./src/cli/commands/process-command-args.ts","webpack://snyk/./src/cli/commands/types.ts","webpack://snyk/./src/lib/check-paths.ts","webpack://snyk/./src/lib/code-config.ts","webpack://snyk/./src/lib/constants.ts","webpack://snyk/./src/lib/ecosystems/common.ts","webpack://snyk/./src/lib/ecosystems/index.ts","webpack://snyk/./src/lib/ecosystems/monitor.ts","webpack://snyk/./src/lib/ecosystems/plugin-analytics.ts","webpack://snyk/./src/lib/ecosystems/plugins.ts","webpack://snyk/./src/lib/ecosystems/policy.ts","webpack://snyk/./src/lib/ecosystems/resolve-monitor-facts.ts","webpack://snyk/./src/lib/ecosystems/resolve-test-facts.ts","webpack://snyk/./src/lib/ecosystems/test.ts","webpack://snyk/./src/lib/error-format.ts","webpack://snyk/./src/lib/errors/invalid-remote-url-error.ts","webpack://snyk/./src/lib/feature-flags/index.ts","webpack://snyk/./src/lib/find-files.ts","webpack://snyk/./src/lib/formatters/docker/format-docker-advice.ts","webpack://snyk/./src/lib/formatters/docker/format-docker-binary-heading.ts","webpack://snyk/./src/lib/formatters/docker/format-docker-binary-issues.ts","webpack://snyk/./src/lib/formatters/docker/index.ts","webpack://snyk/./src/lib/formatters/format-error-result-summary.ts","webpack://snyk/./src/lib/formatters/format-monitor-response.ts","webpack://snyk/./src/lib/formatters/format-reachability.ts","webpack://snyk/./src/lib/formatters/format-test-meta.ts","webpack://snyk/./src/lib/formatters/format-vulnerable-result-summary.ts","webpack://snyk/./src/lib/formatters/get-severity-value.ts","webpack://snyk/./src/lib/formatters/iac-output/index.ts","webpack://snyk/./src/lib/formatters/iac-output/v1/index.ts","webpack://snyk/./src/lib/formatters/iac-output/v2/failures/index.ts","webpack://snyk/./src/lib/formatters/iac-output/v2/failures/list.ts","webpack://snyk/./src/lib/formatters/iac-output/v2/failures/tip.ts","webpack://snyk/./src/lib/formatters/iac-output/v2/formatters.ts","webpack://snyk/./src/lib/formatters/iac-output/v2/index.ts","webpack://snyk/./src/lib/formatters/iac-output/v2/issues-list/index.ts","webpack://snyk/./src/lib/formatters/iac-output/v2/issues-list/issue.ts","webpack://snyk/./src/lib/formatters/iac-output/v2/share-results.ts","webpack://snyk/./src/lib/formatters/iac-output/v2/test-summary.ts","webpack://snyk/./src/lib/formatters/iac-output/v2/user-messages.ts","webpack://snyk/./src/lib/formatters/iac-output/v2/utils.ts","webpack://snyk/./src/lib/formatters/index.ts","webpack://snyk/./src/lib/formatters/legacy-format-issue.ts","webpack://snyk/./src/lib/formatters/legal-license-instructions.ts","webpack://snyk/./src/lib/formatters/remediation-based-format-issues.ts","webpack://snyk/./src/lib/formatters/sarif-output.ts","webpack://snyk/./src/lib/formatters/show-all-projects-tip.ts","webpack://snyk/./src/lib/formatters/show-all-sub-projects-tip.ts","webpack://snyk/./src/lib/formatters/show-multi-scan-tip.ts","webpack://snyk/./src/lib/get-file-contents.ts","webpack://snyk/./src/lib/iac/constants.ts","webpack://snyk/./src/lib/iac/git.ts","webpack://snyk/./src/lib/is-multi-project-scan.ts","webpack://snyk/./src/lib/json.ts","webpack://snyk/./src/lib/module-info/index.ts","webpack://snyk/./src/lib/monitor/count-total-deps-in-tree.ts","webpack://snyk/./src/lib/monitor/dev-count-analysis.ts","webpack://snyk/./src/lib/monitor/drop-empty-deps.ts","webpack://snyk/./src/lib/monitor/filter-out-missing-deps.ts","webpack://snyk/./src/lib/monitor/index.ts","webpack://snyk/./src/lib/monitor/prune-dep-tree.ts","webpack://snyk/./src/lib/monitor/utils.ts","webpack://snyk/./src/lib/options-validator.ts","webpack://snyk/./src/lib/plugins/convert-multi-plugin-res-to-multi-custom.ts","webpack://snyk/./src/lib/plugins/convert-scanned-projects-to-custom.ts","webpack://snyk/./src/lib/plugins/convert-single-splugin-res-to-multi-custom.ts","webpack://snyk/./src/lib/plugins/extract-package-manager.ts","webpack://snyk/./src/lib/plugins/get-deps-from-plugin.ts","webpack://snyk/./src/lib/plugins/get-extra-project-count.ts","webpack://snyk/./src/lib/plugins/get-multi-plugin-result.ts","webpack://snyk/./src/lib/plugins/get-single-plugin-result.ts","webpack://snyk/./src/lib/plugins/index.ts","webpack://snyk/./src/lib/plugins/nodejs-plugin/index.ts","webpack://snyk/./src/lib/plugins/nodejs-plugin/npm-lock-parser.ts","webpack://snyk/./src/lib/plugins/nodejs-plugin/npm-modules-parser.ts","webpack://snyk/./src/lib/plugins/nodejs-plugin/yarn-workspaces-parser.ts","webpack://snyk/./src/lib/plugins/rubygems/index.ts","webpack://snyk/./src/lib/plugins/rubygems/inspectors/gemfile.ts","webpack://snyk/./src/lib/plugins/rubygems/inspectors/gemspec.ts","webpack://snyk/./src/lib/plugins/rubygems/inspectors/index.ts","webpack://snyk/./src/lib/plugins/rubygems/inspectors/try-get-spec.ts","webpack://snyk/./src/lib/plugins/sast/analysis.ts","webpack://snyk/./src/lib/plugins/sast/checks.ts","webpack://snyk/./src/lib/plugins/sast/errors/index.ts","webpack://snyk/./src/lib/plugins/sast/errors/missing-configuration-error.ts","webpack://snyk/./src/lib/plugins/sast/errors/unsupported-feature-snyk-code-error.ts","webpack://snyk/./src/lib/plugins/sast/format/output-format.ts","webpack://snyk/./src/lib/plugins/sast/index.ts","webpack://snyk/./src/lib/plugins/sast/settings.ts","webpack://snyk/./src/lib/plugins/sast/utils/index.ts","webpack://snyk/./src/lib/plugins/sast/utils/testEmitter.ts","webpack://snyk/./src/lib/policy/find-and-load-policy.ts","webpack://snyk/./src/lib/policy/index.ts","webpack://snyk/./src/lib/policy/pluck-policies.ts","webpack://snyk/./src/lib/polling/common.ts","webpack://snyk/./src/lib/polling/polling-monitor.ts","webpack://snyk/./src/lib/polling/polling-test.ts","webpack://snyk/./src/lib/print-deps.ts","webpack://snyk/./src/lib/project-metadata/index.ts","webpack://snyk/./src/lib/project-metadata/target-builders/container.ts","webpack://snyk/./src/lib/project-metadata/target-builders/git.ts","webpack://snyk/./src/lib/project-metadata/types.ts","webpack://snyk/./src/lib/prune.ts","webpack://snyk/./src/lib/reachable-vulns.ts","webpack://snyk/./src/lib/request/promise.ts","webpack://snyk/./src/lib/right-pad.ts","webpack://snyk/./src/lib/snyk-test/assemble-payloads.ts","webpack://snyk/./src/lib/snyk-test/legacy.ts","webpack://snyk/./src/lib/snyk-test/run-test.ts","webpack://snyk/./src/lib/sub-process.ts","webpack://snyk/./src/lib/index.js","webpack://snyk/./src/lib/plugins/rubygems/gemfile-lock-to-dependencies.js","webpack://snyk/./src/lib/snyk-test/index.js"],"sourcesContent":["function webpackEmptyContext(req) {\n\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\te.code = 'MODULE_NOT_FOUND';\n\tthrow e;\n}\nwebpackEmptyContext.keys = () => ([]);\nwebpackEmptyContext.resolve = webpackEmptyContext;\nwebpackEmptyContext.id = 61452;\nmodule.exports = webpackEmptyContext;","function webpackEmptyContext(req) {\n\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\te.code = 'MODULE_NOT_FOUND';\n\tthrow e;\n}\nwebpackEmptyContext.keys = () => ([]);\nwebpackEmptyContext.resolve = webpackEmptyContext;\nwebpackEmptyContext.id = 3196;\nmodule.exports = webpackEmptyContext;","import chalk from 'chalk';\nimport * as fs from 'fs';\nimport * as Debug from 'debug';\nimport * as pathUtil from 'path';\nimport { legacyPlugin as pluginApi } from '@snyk/cli-interface';\nimport { validateOptions } from '../../../lib/options-validator';\nimport { checkOSSPaths } from '../../../lib/check-paths';\n\nimport {\n MonitorOptions,\n MonitorMeta,\n MonitorResult,\n Options,\n Contributor,\n ProjectAttributes,\n PROJECT_CRITICALITY,\n PROJECT_ENVIRONMENT,\n PROJECT_LIFECYCLE,\n Tag,\n} from '../../../lib/types';\nimport config from '../../../lib/config';\nimport * as detect from '../../../lib/detect';\nimport { GoodResult, BadResult } from './types';\nimport { spinner } from '../../../lib/spinner';\nimport * as analytics from '../../../lib/analytics';\nimport { MethodArgs } from '../../args';\nimport { apiOrOAuthTokenExists } from '../../../lib/api-token';\nimport { maybePrintDepTree, maybePrintDepGraph } from '../../../lib/print-deps';\nimport { monitor as snykMonitor } from '../../../lib/monitor';\nimport { processJsonMonitorResponse } from './process-json-monitor';\nimport snyk = require('../../../lib'); // TODO(kyegupov): fix import\nimport { formatMonitorOutput } from '../../../lib/formatters';\nimport { getDepsFromPlugin } from '../../../lib/plugins/get-deps-from-plugin';\nimport { getExtraProjectCount } from '../../../lib/plugins/get-extra-project-count';\nimport { extractPackageManager } from '../../../lib/plugins/extract-package-manager';\nimport { MultiProjectResultCustom } from '../../../lib/plugins/get-multi-plugin-result';\nimport { convertMultiResultToMultiCustom } from '../../../lib/plugins/convert-multi-plugin-res-to-multi-custom';\nimport { convertSingleResultToMultiCustom } from '../../../lib/plugins/convert-single-splugin-res-to-multi-custom';\nimport { PluginMetadata } from '@snyk/cli-interface/legacy/plugin';\nimport { getContributors } from '../../../lib/monitor/dev-count-analysis';\nimport {\n FailedToRunTestError,\n MonitorError,\n MissingArgError,\n ValidationError,\n} from '../../../lib/errors';\nimport { isMultiProjectScan } from '../../../lib/is-multi-project-scan';\nimport { getEcosystem, monitorEcosystem } from '../../../lib/ecosystems';\nimport { getFormattedMonitorOutput } from '../../../lib/ecosystems/monitor';\nimport { processCommandArgs } from '../process-command-args';\n\nconst SEPARATOR = '\\n-------------------------------------------------------\\n';\nconst debug = Debug('snyk');\n\n// This is used instead of `let x; try { x = await ... } catch { cleanup }` to avoid\n// declaring the type of x as possibly undefined.\nasync function promiseOrCleanup<T>(\n p: Promise<T>,\n cleanup: (x?) => void,\n): Promise<T> {\n return p.catch((error) => {\n cleanup();\n throw error;\n });\n}\n\n// Returns an array of Registry responses (one per every sub-project scanned), a single response,\n// or an error message.\nexport default async function monitor(...args0: MethodArgs): Promise<any> {\n const { options, paths } = processCommandArgs(...args0);\n const results: Array<GoodResult | BadResult> = [];\n\n if (options.id) {\n snyk.id = options.id;\n }\n\n if (options.allSubProjects && options['project-name']) {\n throw new Error(\n '`--all-sub-projects` is currently not compatible with `--project-name`',\n );\n }\n\n if (!options.docker) {\n checkOSSPaths(paths, options);\n }\n\n if (options.docker && options['remote-repo-url']) {\n throw new Error('`--remote-repo-url` is not supported for container scans');\n }\n\n // TODO remove once https://github.com/snyk/cli/pull/3433 is merged\n if (options.docker && !options['app-vulns']) {\n options['exclude-app-vulns'] = true;\n }\n\n // Handles no image arg provided to the container command until\n // a validation interface is implemented in the docker plugin.\n if (options.docker && paths.length === 0) {\n throw new MissingArgError();\n }\n\n apiOrOAuthTokenExists();\n\n let contributors: Contributor[] = [];\n if (!options.docker && analytics.allowAnalytics()) {\n try {\n contributors = await getContributors();\n } catch (err) {\n debug('error getting repo contributors', err);\n }\n }\n\n const ecosystem = getEcosystem(options);\n if (ecosystem) {\n const commandResult = await monitorEcosystem(\n ecosystem,\n paths,\n options,\n contributors,\n );\n\n const [monitorResults, monitorErrors] = commandResult;\n\n return await getFormattedMonitorOutput(\n results,\n monitorResults,\n monitorErrors,\n options,\n );\n }\n\n // Part 1: every argument is a scan target; process them sequentially\n for (const path of paths) {\n debug(`Processing ${path}...`);\n try {\n validateMonitorPath(path, options.docker);\n let analysisType = 'all';\n let packageManager;\n if (isMultiProjectScan(options)) {\n analysisType = 'all';\n } else if (options.docker) {\n analysisType = 'docker';\n } else {\n packageManager = detect.detectPackageManager(path, options);\n }\n\n await validateOptions(\n options as Options & MonitorOptions,\n packageManager,\n );\n\n const targetFile =\n !options.scanAllUnmanaged && options.docker && !options.file // snyk monitor --docker (without --file)\n ? undefined\n : options.file || detect.detectPackageFile(path);\n\n const displayPath = pathUtil.relative(\n '.',\n pathUtil.join(path, targetFile || ''),\n );\n\n const analyzingDepsSpinnerLabel =\n 'Analyzing ' +\n (packageManager ? packageManager : analysisType) +\n ' dependencies for ' +\n displayPath;\n\n await spinner(analyzingDepsSpinnerLabel);\n\n // Scan the project dependencies via a plugin\n debug('getDepsFromPlugin ...');\n\n // each plugin will be asked to scan once per path\n // some return single InspectResult & newer ones return Multi\n const inspectResult = await promiseOrCleanup(\n getDepsFromPlugin(path, {\n ...options,\n path,\n packageManager,\n }),\n spinner.clear(analyzingDepsSpinnerLabel),\n );\n analytics.add('pluginName', inspectResult.plugin.name);\n\n // We send results from \"all-sub-projects\" scanning as different Monitor objects\n // multi result will become default, so start migrating code to always work with it\n let perProjectResult: MultiProjectResultCustom;\n\n if (!pluginApi.isMultiResult(inspectResult)) {\n perProjectResult = convertSingleResultToMultiCustom(inspectResult);\n } else {\n perProjectResult = convertMultiResultToMultiCustom(inspectResult);\n }\n\n const failedResults = (inspectResult as MultiProjectResultCustom)\n .failedResults;\n if (failedResults?.length) {\n failedResults.forEach((result) => {\n results.push({\n ok: false,\n data: new MonitorError(500, result.errMessage),\n path: result.targetFile || '',\n });\n });\n }\n\n const postingMonitorSpinnerLabel =\n 'Posting monitor snapshot for ' + displayPath + ' ...';\n await spinner(postingMonitorSpinnerLabel);\n\n // Post the project dependencies to the Registry\n for (const projectDeps of perProjectResult.scannedProjects) {\n try {\n if (!projectDeps.depGraph && !projectDeps.depTree) {\n debug(\n 'scannedProject is missing depGraph or depTree, cannot run test/monitor',\n );\n throw new FailedToRunTestError(\n 'Your monitor request could not be completed. Please email support@snyk.io',\n );\n }\n const extractedPackageManager = extractPackageManager(\n projectDeps,\n perProjectResult,\n options as MonitorOptions & Options,\n );\n\n analytics.add('packageManager', extractedPackageManager);\n\n const projectName = getProjectName(projectDeps);\n if (projectDeps.depGraph) {\n debug(`Processing ${projectDeps.depGraph.rootPkg?.name}...`);\n maybePrintDepGraph(options, projectDeps.depGraph);\n }\n\n if (projectDeps.depTree) {\n debug(`Processing ${projectDeps.depTree.name}...`);\n maybePrintDepTree(options, projectDeps.depTree);\n }\n\n const tFile = projectDeps.targetFile || targetFile;\n const targetFileRelativePath =\n projectDeps.plugin.targetFile ||\n (tFile && pathUtil.join(pathUtil.resolve(path), tFile)) ||\n '';\n\n const res: MonitorResult = await promiseOrCleanup(\n snykMonitor(\n path,\n generateMonitorMeta(options, extractedPackageManager),\n projectDeps,\n options,\n projectDeps.plugin as PluginMetadata,\n targetFileRelativePath,\n contributors,\n generateProjectAttributes(options),\n generateTags(options),\n ),\n spinner.clear(postingMonitorSpinnerLabel),\n );\n\n res.path = path;\n const monOutput = formatMonitorOutput(\n extractedPackageManager,\n res,\n options,\n projectName,\n await getExtraProjectCount(path, options, inspectResult),\n );\n // push a good result\n results.push({ ok: true, data: monOutput, path, projectName });\n } catch (err) {\n // pushing this error allow this inner loop to keep scanning the projects\n // even if 1 in 100 fails\n results.push({ ok: false, data: err, path });\n }\n }\n } catch (err) {\n // push this error, the loop continues\n results.push({ ok: false, data: err, path });\n } finally {\n spinner.clearAll();\n }\n }\n // Part 2: process the output from the Registry\n if (options.json) {\n return processJsonMonitorResponse(results);\n }\n\n const output = results\n .map((res) => {\n if (res.ok) {\n return res.data;\n }\n\n const errorMessage =\n res.data && res.data.userMessage\n ? chalk.bold.red(res.data.userMessage)\n : res.data\n ? res.data.message\n : 'Unknown error occurred.';\n\n return (\n chalk.bold.white('\\nMonitoring ' + res.path + '...\\n\\n') + errorMessage\n );\n })\n .join('\\n' + SEPARATOR);\n\n if (results.every((res) => res.ok)) {\n return output;\n }\n\n throw new Error(output);\n}\n\nfunction generateMonitorMeta(options, packageManager?): MonitorMeta {\n return {\n method: 'cli',\n packageManager,\n 'policy-path': options['policy-path'],\n 'project-name': options['project-name'] || config.PROJECT_NAME,\n isDocker: !!options.docker,\n prune: !!options.pruneRepeatedSubdependencies,\n 'remote-repo-url': options['remote-repo-url'],\n targetReference: options['target-reference'],\n };\n}\n\n/**\n * Parse an attribute from the CLI into the relevant enum type.\n *\n * @param attribute The project attribute (e.g. environment)\n * @param permitted Permitted options\n * @param options CLI options provided\n * @returns An array of attributes to set on the project or undefined to mean \"do not touch\".\n */\nfunction getProjectAttribute<T>(\n attribute: string,\n permitted: Record<string, T>,\n options: Options,\n): T[] | undefined {\n const permittedValues: T[] = Object.values(permitted);\n\n if (options[attribute] === undefined) {\n return undefined;\n }\n\n // Explicit flag to clear the existing values for this attribute already set on the project\n // e.g. if you specify --environment=\n // then this means you want to remove existing environment values on the project.\n if (options[attribute] === '') {\n return [];\n }\n\n // When it's specified without the =, we raise an explicit error to avoid\n // accidentally clearing the existing values.\n if (options[attribute] === true) {\n throw new ValidationError(\n `--${attribute} must contain an '=' with a comma-separated list of values. To clear all existing values, pass no values i.e. --${attribute}=`,\n );\n }\n\n const values = options[attribute].split(',');\n const extra = values.filter((value) => !permittedValues.includes(value));\n if (extra.length > 0) {\n throw new ValidationError(\n `${extra.length} invalid ${attribute}: ${extra.join(', ')}. ` +\n `Possible values are: ${permittedValues.join(', ')}`,\n );\n }\n\n return values;\n}\n\nexport function validateProjectAttributes(options): void {\n // The validation is deep within the parsing, so call the generate but throw away the return for simplicity.\n // Using this method makes it much clearer what the intent is of the caller.\n generateProjectAttributes(options);\n}\n\nexport function generateProjectAttributes(options): ProjectAttributes {\n return {\n criticality: getProjectAttribute(\n 'project-business-criticality',\n PROJECT_CRITICALITY,\n options,\n ),\n environment: getProjectAttribute(\n 'project-environment',\n PROJECT_ENVIRONMENT,\n options,\n ),\n lifecycle: getProjectAttribute(\n 'project-lifecycle',\n PROJECT_LIFECYCLE,\n options,\n ),\n };\n}\n\n/**\n * Parse CLI --tags options into an internal data structure.\n *\n * If this returns undefined, it means \"do not touch the existing tags on the project\".\n *\n * Anything else means \"replace existing tags on the project with this list\" even if empty.\n *\n * @param options CLI options\n * @returns List of parsed tags or undefined if they are to be left untouched.\n */\nexport function generateTags(options): Tag[] | undefined {\n if (options['project-tags'] === undefined && options['tags'] === undefined) {\n return undefined;\n }\n\n if (options['project-tags'] !== undefined && options['tags'] !== undefined) {\n throw new ValidationError(\n 'Only one of --tags or --project-tags may be specified, not both',\n );\n }\n\n const rawTags =\n options['tags'] === undefined ? options['project-tags'] : options['tags'];\n\n if (rawTags === '') {\n return [];\n }\n\n // When it's specified without the =, we raise an explicit error to avoid\n // accidentally clearing the existing tags;\n if (rawTags === true) {\n throw new ValidationError(\n `--project-tags must contain an '=' with a comma-separated list of pairs (also separated with an '='). To clear all existing values, pass no values i.e. --project-tags=`,\n );\n }\n\n const keyEqualsValuePairs = rawTags.split(',');\n\n const tags: Tag[] = [];\n for (const keyEqualsValue of keyEqualsValuePairs) {\n const parts = keyEqualsValue.split('=');\n if (parts.length !== 2) {\n throw new ValidationError(\n `The tag \"${keyEqualsValue}\" does not have an \"=\" separating the key and value. For example: --project-tag=KEY=VALUE`,\n );\n }\n tags.push({\n key: parts[0],\n value: parts[1],\n });\n }\n\n return tags;\n}\n\nexport function validateTags(options): void {\n // The validation is deep within the parsing, so call the generate but throw away the return for simplicity.\n // Using this method makes it much clearer what the intent is of the caller.\n generateTags(options);\n}\n\nfunction validateMonitorPath(path: string, isDocker?: boolean): void {\n const exists = fs.existsSync(path);\n if (!exists && !isDocker) {\n throw new Error('\"' + path + '\" is not a valid path for \"snyk monitor\"');\n }\n}\n\nfunction getProjectName(projectDeps): string {\n return (\n projectDeps.meta?.gradleProjectName ||\n projectDeps.depGraph?.rootPkg?.name ||\n projectDeps.depTree?.name\n );\n}\n","import { GoodResult, BadResult } from './types';\n\nexport function processJsonMonitorResponse(\n results: Array<GoodResult | BadResult>,\n): string {\n let dataToSend = results.map((result) => {\n if (result.ok) {\n const jsonData = JSON.parse(result.data);\n if (result.projectName) {\n jsonData.projectName = result.projectName;\n }\n return jsonData;\n }\n return { ok: false, error: result.data.message, path: result.path };\n });\n // backwards compat - strip array if only one result\n dataToSend = dataToSend.length === 1 ? dataToSend[0] : dataToSend;\n const stringifiedData = JSON.stringify(dataToSend, null, 2);\n\n if (results.every((res) => res.ok)) {\n return stringifiedData;\n }\n const err = new Error(stringifiedData) as any;\n err.json = stringifiedData;\n throw err;\n}\n","import { Options } from '../../lib/types';\n\nexport function processCommandArgs<CommandOptions>(\n ...args\n): { paths: string[]; options: Options & CommandOptions } {\n let options = ({} as any) as Options & CommandOptions;\n\n if (typeof args[args.length - 1] === 'object') {\n options = (args.pop() as any) as Options & CommandOptions;\n }\n args = args.filter(Boolean);\n\n // For repository scanning, populate with default path (cwd) if no path given\n if (args.length === 0 && !options.docker) {\n args.unshift(process.cwd());\n }\n\n return { options, paths: args };\n}\n","export type MethodResult = CommandResult | string | void;\n\nexport class CommandResult {\n result: string;\n constructor(result: string) {\n this.result = result;\n }\n\n public toString(): string {\n return this.result;\n }\n\n public getDisplayResults() {\n return this.result;\n }\n}\n\nexport abstract class TestCommandResult extends CommandResult {\n protected jsonResult = '';\n protected sarifResult = '';\n\n public getJsonResult(): string {\n return this.jsonResult;\n }\n\n public getSarifResult(): string {\n return this.sarifResult;\n }\n\n public static createHumanReadableTestCommandResult(\n humanReadableResult: string,\n jsonResult: string,\n sarifResult?: string,\n ): HumanReadableTestCommandResult {\n return new HumanReadableTestCommandResult(\n humanReadableResult,\n jsonResult,\n sarifResult,\n );\n }\n\n public static createJsonTestCommandResult(\n stdout: string,\n jsonResult?: string,\n sarifResult?: string,\n ): JsonTestCommandResult {\n return new JsonTestCommandResult(stdout, jsonResult, sarifResult);\n }\n}\n\nclass HumanReadableTestCommandResult extends TestCommandResult {\n protected jsonResult = '';\n protected sarifResult = '';\n\n constructor(\n humanReadableResult: string,\n jsonResult: string,\n sarifResult?: string,\n ) {\n super(humanReadableResult);\n this.jsonResult = jsonResult;\n if (sarifResult) {\n this.sarifResult = sarifResult;\n }\n }\n\n public getJsonResult(): string {\n return this.jsonResult;\n }\n\n public getSarifResult(): string {\n return this.sarifResult;\n }\n}\n\nclass JsonTestCommandResult extends TestCommandResult {\n constructor(stdout: string, jsonResult?: string, sarifResult?: string) {\n super(stdout);\n if (jsonResult) {\n this.jsonResult = jsonResult;\n }\n if (sarifResult) {\n this.sarifResult = sarifResult;\n } else {\n this.jsonResult = stdout;\n }\n }\n\n public getJsonResult(): string {\n return this.jsonResult;\n }\n\n public getSarifResult(): string {\n return this.sarifResult;\n }\n}\n\nexport interface IgnoreMetadata {\n reason: string;\n expires: Date;\n created: Date;\n}\n\nexport interface IgnoreRulePathData {\n [path: string]: IgnoreMetadata;\n}\n\nexport interface IgnoreRules {\n [issueId: string]: IgnoreRulePathData[];\n}\n","import {\n MissingTargetFileError,\n UnsupportedOptionCombinationError,\n} from './errors';\nimport { isPathToPackageFile } from './detect';\nimport { Options } from './types';\n\n// Throw error if user specifies package file name as part of path,\n// and if user specifies multiple paths and used project-name option.\nexport function checkOSSPaths(paths: string[], options: Options) {\n let count = 0;\n for (const path of paths) {\n if (typeof path === 'string' && isPathToPackageFile(path)) {\n throw MissingTargetFileError(path);\n } else if (typeof path === 'string') {\n if (++count > 1 && options['project-name']) {\n throw new UnsupportedOptionCombinationError([\n 'multiple paths',\n 'project-name',\n ]);\n }\n }\n }\n}\n","import config from './config';\nimport { config as userConfig } from './user-config';\n\nexport function getCodeClientProxyUrl() {\n const url = new URL(config.API);\n const domain = url.origin;\n return (\n config.CODE_CLIENT_PROXY_URL ||\n domain.replace(/\\/\\/(ap[pi]\\.)?/, '//deeproxy.')\n );\n}\n\nexport function getBase64Encoding(\n enabled = userConfig.get('use-base64-encoding'),\n): boolean {\n if (enabled) {\n return enabled.toLowerCase() === 'true';\n }\n return false;\n}\n","// Separator used while displaying various paths (e.g. package paths, call\n// paths) to the user\nexport const PATH_SEPARATOR = ' > ';\n\n// String used to signify hidden path elements e.g. for abbreviated paths\nexport const PATH_HIDDEN_ELEMENTS = '...';\n\n// Number of function names to show in the beginning of an abbreviated call path\nexport const CALL_PATH_LEADING_ELEMENTS = 2;\n\n// Number of function names to show in the end of an abbreviated call path\nexport const CALL_PATH_TRAILING_ELEMENTS = 2;\n","import { Ecosystem } from './types';\n\nexport function isUnmanagedEcosystem(ecosystem: Ecosystem): boolean {\n return ecosystem === 'cpp';\n}\n","import { Options } from '../types';\nimport { Ecosystem } from './types';\n\nexport { testEcosystem } from './test';\nexport { monitorEcosystem } from './monitor';\nexport { getPlugin } from './plugins';\n\n/**\n * Ecosystems are listed here if you opt in to the new plugin test flow.\n * This is a breaking change to the old plugin formats, so only a select few\n * plugins currently work with it.\n *\n * Currently container scanning is not yet ready to work with this flow,\n * hence this is in a separate function from getEcosystem().\n */\nexport function getEcosystemForTest(options: Options): Ecosystem | null {\n if (options.unmanaged) {\n return 'cpp';\n }\n if (options.code) {\n return 'code';\n }\n return null;\n}\n\nexport function getEcosystem(options: Options): Ecosystem | null {\n if (options.unmanaged) {\n return 'cpp';\n }\n\n if (options.docker) {\n return 'docker';\n }\n return null;\n}\n","import { InspectResult } from '@snyk/cli-interface/legacy/plugin';\nimport chalk from 'chalk';\nimport config from '../config';\nimport { isCI } from '../is-ci';\nimport { makeRequest } from '../request/promise';\nimport { Contributor, MonitorResult, Options, PolicyOptions } from '../types';\nimport { spinner } from '../../lib/spinner';\nimport { getPlugin } from './plugins';\nimport { BadResult, GoodResult } from '../../cli/commands/monitor/types';\nimport { formatErrorMonitorOutput, formatMonitorOutput } from '../formatters';\nimport { getExtraProjectCount } from '../plugins/get-extra-project-count';\nimport {\n AuthFailedError,\n DockerImageNotFoundError,\n MonitorError,\n} from '../errors';\nimport {\n Ecosystem,\n ScanResult,\n EcosystemMonitorResult,\n EcosystemMonitorError,\n MonitorDependenciesRequest,\n MonitorDependenciesResponse,\n} from './types';\nimport { findAndLoadPolicyForScanResult } from './policy';\nimport { getAuthHeader } from '../api-token';\nimport { resolveAndMonitorFacts } from './resolve-monitor-facts';\nimport {\n generateProjectAttributes,\n generateTags,\n validateProjectAttributes,\n validateTags,\n} from '../../cli/commands/monitor';\nimport { isUnmanagedEcosystem } from './common';\nimport { findAndLoadPolicy } from '../policy';\n\nconst SEPARATOR = '\\n-------------------------------------------------------\\n';\n\nexport async function monitorEcosystem(\n ecosystem: Ecosystem,\n paths: string[],\n options: Options & PolicyOptions,\n contributors?: Contributor[],\n): Promise<[EcosystemMonitorResult[], EcosystemMonitorError[]]> {\n const plugin = getPlugin(ecosystem);\n\n validateTags(options);\n validateProjectAttributes(options);\n\n const scanResultsByPath: { [dir: string]: ScanResult[] } = {};\n for (const path of paths) {\n try {\n await spinner(`Analyzing dependencies in ${path}`);\n options.path = path;\n const pluginResponse = await plugin.scan(options);\n scanResultsByPath[path] = pluginResponse.scanResults;\n\n const policy = await findAndLoadPolicy(path, 'cpp', options);\n if (policy) {\n scanResultsByPath[path].forEach(\n (scanResult) => (scanResult.policy = policy.toString()),\n );\n }\n } catch (error) {\n if (\n ecosystem === 'docker' &&\n error.statusCode === 401 &&\n error.message === 'authentication required'\n ) {\n throw new DockerImageNotFoundError(path);\n }\n if (ecosystem === 'docker' && error.message === 'invalid image format') {\n throw new DockerImageNotFoundError(path);\n }\n\n throw error;\n } finally {\n spinner.clearAll();\n }\n }\n const [monitorResults, errors] = await selectAndExecuteMonitorStrategy(\n ecosystem,\n scanResultsByPath,\n options,\n contributors,\n );\n return [monitorResults, errors];\n}\n\nasync function selectAndExecuteMonitorStrategy(\n ecosystem: Ecosystem,\n scanResultsByPath: { [dir: string]: ScanResult[] },\n options: Options,\n contributors?: Contributor[],\n): Promise<[EcosystemMonitorResult[], EcosystemMonitorError[]]> {\n return isUnmanagedEcosystem(ecosystem)\n ? await resolveAndMonitorFacts(scanResultsByPath, options, contributors)\n : await monitorDependencies(scanResultsByPath, options);\n}\n\nexport async function generateMonitorDependenciesRequest(\n scanResult: ScanResult,\n options: Options,\n): Promise<MonitorDependenciesRequest> {\n // WARNING! This mutates the payload. The project name logic should be handled in the plugin.\n scanResult.name =\n options['project-name'] || config.PROJECT_NAME || scanResult.name;\n // WARNING! This mutates the payload. Policy logic should be in the plugin.\n const policy = await findAndLoadPolicyForScanResult(scanResult, options);\n if (policy !== undefined) {\n scanResult.policy = policy.toString();\n }\n\n return {\n scanResult,\n method: 'cli',\n projectName: options['project-name'] || config.PROJECT_NAME || undefined,\n tags: generateTags(options),\n attributes: generateProjectAttributes(options),\n };\n}\n\nasync function monitorDependencies(\n scans: {\n [dir: string]: ScanResult[];\n },\n options: Options,\n): Promise<[EcosystemMonitorResult[], EcosystemMonitorError[]]> {\n const results: EcosystemMonitorResult[] = [];\n const errors: EcosystemMonitorError[] = [];\n for (const [path, scanResults] of Object.entries(scans)) {\n await spinner(`Monitoring dependencies in ${path}`);\n for (const scanResult of scanResults) {\n const monitorDependenciesRequest = await generateMonitorDependenciesRequest(\n scanResult,\n options,\n );\n\n const configOrg = config.org ? decodeURIComponent(config.org) : undefined;\n\n const payload = {\n method: 'PUT',\n url: `${config.API}/monitor-dependencies`,\n json: true,\n headers: {\n 'x-is-ci': isCI(),\n authorization: getAuthHeader(),\n },\n body: monitorDependenciesRequest,\n qs: {\n org: options.org || configOrg,\n },\n };\n try {\n const response = await makeRequest<MonitorDependenciesResponse>(\n payload,\n );\n results.push({\n ...response,\n path,\n scanResult,\n });\n } catch (error) {\n if (error.code === 401) {\n throw AuthFailedError();\n }\n if (error.code >= 400 && error.code < 500) {\n throw new MonitorError(error.code, error.message);\n }\n errors.push({\n error: 'Could not monitor dependencies in ' + path,\n path,\n scanResult,\n });\n }\n }\n spinner.clearAll();\n }\n return [results, errors];\n}\n\nexport async function getFormattedMonitorOutput(\n results: Array<GoodResult | BadResult>,\n monitorResults: EcosystemMonitorResult[],\n errors: EcosystemMonitorError[],\n options: Options,\n): Promise<string> {\n for (const monitorResult of monitorResults) {\n let monOutput = '';\n if (monitorResult.ok) {\n monOutput = formatMonitorOutput(\n monitorResult.scanResult.identity.type,\n monitorResult as MonitorResult,\n options,\n monitorResult.projectName,\n await getExtraProjectCount(\n monitorResult.path,\n options,\n // TODO: Fix to pass the old \"inspectResult.plugin.meta.allSubProjectNames\", which ecosystem uses this?\n // \"allSubProjectNames\" can become a Fact returned by a plugin.\n {} as InspectResult,\n ),\n );\n } else {\n monOutput = formatErrorMonitorOutput(\n monitorResult.scanResult.identity.type,\n monitorResult as MonitorResult,\n options,\n );\n }\n results.push({\n ok: true,\n data: monOutput,\n path: monitorResult.path,\n projectName: monitorResult.id,\n });\n }\n for (const monitorError of errors) {\n results.push({\n ok: false,\n data: new MonitorError(500, monitorError.error),\n path: monitorError.path,\n });\n }\n\n const outputString = results\n .map((res) => {\n if (res.ok) {\n return res.data;\n }\n\n const errorMessage =\n res.data && res.data.userMessage\n ? chalk.bold.red(res.data.userMessage)\n : res.data\n ? res.data.message\n : 'Unknown error occurred.';\n\n return (\n chalk.bold.white('\\nMonitoring ' + res.path + '...\\n\\n') + errorMessage\n );\n })\n .join('\\n' + SEPARATOR);\n\n if (results.every((res) => res.ok)) {\n return outputString;\n }\n\n throw new Error(outputString);\n}\n","import { Analytics } from './types';\nimport * as analytics from '../../lib/analytics';\n\nexport function extractAndApplyPluginAnalytics(\n pluginAnalytics: Analytics[],\n asyncRequestToken?: string,\n): void {\n if (asyncRequestToken) {\n analytics.add('asyncRequestToken', asyncRequestToken);\n }\n for (const { name, data } of pluginAnalytics) {\n analytics.add(name, data);\n }\n}\n","import * as cppPlugin from 'snyk-cpp-plugin';\nimport * as dockerPlugin from 'snyk-docker-plugin';\nimport { codePlugin } from '../plugins/sast';\nimport { Ecosystem, EcosystemPlugin } from './types';\n\nconst EcosystemPlugins: {\n readonly [ecosystem in Ecosystem]: EcosystemPlugin;\n} = {\n cpp: cppPlugin as EcosystemPlugin,\n // TODO: not any\n docker: dockerPlugin as any,\n code: codePlugin,\n};\n\nexport function getPlugin(ecosystem: Ecosystem): EcosystemPlugin {\n return EcosystemPlugins[ecosystem];\n}\n","import * as path from 'path';\n\nimport { SupportedPackageManagers } from '../package-managers';\nimport { findAndLoadPolicy } from '../policy';\nimport { Options, PolicyOptions } from '../types';\nimport { Issue, IssuesData, ScanResult } from './types';\nimport { Policy } from '../policy/find-and-load-policy';\n\nexport async function findAndLoadPolicyForScanResult(\n scanResult: ScanResult,\n options: Options & PolicyOptions,\n): Promise<object | undefined> {\n const targetFileRelativePath = scanResult.identity.targetFile\n ? path.join(path.resolve(`${options.path}`), scanResult.identity.targetFile)\n : undefined;\n const targetFileDir = targetFileRelativePath\n ? path.parse(targetFileRelativePath).dir\n : undefined;\n const scanType = options.docker\n ? 'docker'\n : (scanResult.identity.type as SupportedPackageManagers);\n // TODO: fix this and send only send when we used resolve-deps for node\n // it should be a ExpandedPkgTree type instead\n const packageExpanded = undefined;\n\n const policy = (await findAndLoadPolicy(\n options.path,\n scanType,\n options,\n packageExpanded,\n targetFileDir,\n )) as object | undefined; // TODO: findAndLoadPolicy() does not return a string!\n return policy;\n}\n\nexport function filterIgnoredIssues(\n issues: Issue[],\n issuesData: IssuesData,\n policy?: Policy,\n): [Issue[], IssuesData] {\n if (!policy?.ignore) {\n return [issues, issuesData];\n }\n\n const filteredIssuesData: IssuesData = { ...issuesData };\n const filteredIssues: Issue[] = issues.filter((issue) => {\n const ignoredIssue = policy.ignore[issue.issueId];\n if (!ignoredIssue) {\n return true;\n }\n\n const allResourcesRule = ignoredIssue.find((element) => '*' in element);\n if (!allResourcesRule) {\n return true;\n }\n\n const expiredIgnoreRule =\n new Date(allResourcesRule['*'].expires) < new Date();\n if (!expiredIgnoreRule) {\n delete filteredIssuesData[issue.issueId];\n return false;\n }\n\n return true;\n });\n\n return [filteredIssues, filteredIssuesData];\n}\n","import { Contributor, Options } from '../types';\nimport { spinner } from '../../lib/spinner';\nimport {\n ScanResult,\n EcosystemMonitorError,\n EcosystemMonitorResult,\n} from './types';\nimport {\n requestMonitorPollingToken,\n pollingMonitorWithTokenUntilDone,\n} from '../polling/polling-monitor';\nimport { extractAndApplyPluginAnalytics } from './plugin-analytics';\nimport { AuthFailedError, MonitorError } from '../errors';\nimport { extractResolutionMetaFromScanResult } from '../polling/common';\n\nexport async function resolveAndMonitorFacts(\n scans: {\n [dir: string]: ScanResult[];\n },\n options: Options,\n contributors?: Contributor[],\n): Promise<[EcosystemMonitorResult[], EcosystemMonitorError[]]> {\n const results: EcosystemMonitorResult[] = [];\n const errors: EcosystemMonitorError[] = [];\n\n for (const [path, scanResults] of Object.entries(scans)) {\n await spinner(`Resolving and Monitoring fileSignatures in ${path}`);\n for (const scanResult of scanResults) {\n try {\n const res = await requestMonitorPollingToken(options, true, scanResult);\n if (scanResult.analytics) {\n extractAndApplyPluginAnalytics(scanResult.analytics, res.token);\n }\n const resolutionMeta = extractResolutionMetaFromScanResult(scanResult);\n const { maxAttempts, pollInterval } = res.pollingTask;\n const attemptsCount = 0;\n const response = await pollingMonitorWithTokenUntilDone(\n res.token,\n true,\n options,\n pollInterval,\n attemptsCount,\n maxAttempts,\n resolutionMeta,\n contributors,\n );\n\n const ecosystemMonitorResult: EcosystemMonitorResult = {\n ...response,\n path,\n scanResult,\n };\n\n results.push(ecosystemMonitorResult);\n } catch (error) {\n if (error.code === 401) {\n throw AuthFailedError();\n }\n\n if (error.code >= 400 && error.code < 500) {\n throw new MonitorError(error.code, error.message);\n }\n errors.push({\n error: 'Could not monitor dependencies in ' + path,\n path,\n scanResult,\n });\n }\n }\n spinner.clearAll();\n }\n\n return [results, errors];\n}\n","import { Options, PolicyOptions } from '../types';\nimport { spinner } from '../../lib/spinner';\nimport { Ecosystem, ScanResult, TestResult } from './types';\nimport {\n requestTestPollingToken,\n pollingTestWithTokenUntilDone,\n} from '../polling/polling-test';\nimport { extractAndApplyPluginAnalytics } from './plugin-analytics';\nimport { findAndLoadPolicy } from '../policy';\nimport { filterIgnoredIssues } from './policy';\nimport { IssueData, Issue } from '../snyk-test/legacy';\n\nexport async function resolveAndTestFacts(\n ecosystem: Ecosystem,\n scans: {\n [dir: string]: ScanResult[];\n },\n options: Options & PolicyOptions,\n): Promise<[TestResult[], string[]]> {\n const results: any[] = [];\n const errors: string[] = [];\n const packageManager = 'Unmanaged (C/C++)';\n\n for (const [path, scanResults] of Object.entries(scans)) {\n await spinner(`Resolving and Testing fileSignatures in ${path}`);\n for (const scanResult of scanResults) {\n try {\n const res = await requestTestPollingToken(options, true, scanResult);\n if (scanResult.analytics) {\n extractAndApplyPluginAnalytics(scanResult.analytics, res.token);\n }\n const { maxAttempts, pollInterval } = res.pollingTask;\n const attemptsCount = 0;\n const response = await pollingTestWithTokenUntilDone(\n res.token,\n ecosystem,\n options,\n pollInterval,\n attemptsCount,\n maxAttempts,\n );\n\n const policy = await findAndLoadPolicy(path, 'cpp', options);\n const [issues, issuesData] = filterIgnoredIssues(\n response.issues,\n response.issuesData,\n policy,\n );\n\n const issuesMap: Map<string, Issue> = new Map();\n response.issues.forEach((i) => {\n issuesMap[i.issueId] = i;\n });\n\n const vulnerabilities: IssueData[] = [];\n for (const issuesDataKey in response.issuesData) {\n const issueData = response.issuesData[issuesDataKey];\n const pkgCoordinate = `${issuesMap[issuesDataKey].pkgName}@${issuesMap[issuesDataKey].pkgVersion}`;\n issueData.from = [pkgCoordinate];\n issueData.name = pkgCoordinate;\n issueData.packageManager = packageManager;\n vulnerabilities.push(issueData);\n }\n\n const dependencyCount = response?.depGraphData?.graph?.nodes?.find(\n (graphNode) => {\n return graphNode.nodeId === 'root-node';\n },\n )?.deps?.length;\n\n results.push({\n issues,\n issuesData,\n depGraphData: response?.depGraphData,\n depsFilePaths: response?.depsFilePaths,\n fileSignaturesDetails: response?.fileSignaturesDetails,\n vulnerabilities,\n path,\n dependencyCount,\n packageManager,\n });\n } catch (error) {\n const hasStatusCodeError = error.code >= 400 && error.code <= 500;\n if (hasStatusCodeError) {\n errors.push(error.message);\n continue;\n }\n const failedPath = path ? `in ${path}` : '.';\n errors.push(`Could not test dependencies ${failedPath}`);\n }\n }\n }\n spinner.clearAll();\n return [results, errors];\n}\n","import config from '../config';\nimport { isCI } from '../is-ci';\nimport { makeRequest } from '../request/promise';\nimport { Options, PolicyOptions } from '../types';\nimport { TestCommandResult } from '../../cli/commands/types';\nimport { spinner } from '../../lib/spinner';\nimport { Ecosystem, ScanResult, TestResult } from './types';\nimport { getPlugin } from './plugins';\nimport { TestDependenciesResponse } from '../snyk-test/legacy';\nimport { assembleQueryString } from '../snyk-test/common';\nimport { getAuthHeader } from '../api-token';\nimport { resolveAndTestFacts } from './resolve-test-facts';\nimport { isUnmanagedEcosystem } from './common';\n\nexport async function testEcosystem(\n ecosystem: Ecosystem,\n paths: string[],\n options: Options & PolicyOptions,\n): Promise<TestCommandResult> {\n const plugin = getPlugin(ecosystem);\n // TODO: this is an intermediate step before consolidating ecosystem plugins\n // to accept flows that act differently in the testDependencies step\n if (plugin.test) {\n const { readableResult: res, sarifResult: sarifRes } = await plugin.test(\n paths,\n options,\n );\n return TestCommandResult.createHumanReadableTestCommandResult(\n res,\n '',\n sarifRes,\n );\n }\n const scanResultsByPath: { [dir: string]: ScanResult[] } = {};\n for (const path of paths) {\n await spinner(`Scanning dependencies in ${path}`);\n options.path = path;\n const pluginResponse = await plugin.scan(options);\n scanResultsByPath[path] = pluginResponse.scanResults;\n }\n spinner.clearAll();\n\n const [testResults, errors] = await selectAndExecuteTestStrategy(\n ecosystem,\n scanResultsByPath,\n options,\n );\n\n const stringifiedData = JSON.stringify(testResults, null, 2);\n if (options.json) {\n return TestCommandResult.createJsonTestCommandResult(stringifiedData);\n }\n const emptyResults: ScanResult[] = [];\n const scanResults = emptyResults.concat(...Object.values(scanResultsByPath));\n\n const readableResult = await plugin.display(\n scanResults,\n testResults,\n errors,\n options,\n );\n\n return TestCommandResult.createHumanReadableTestCommandResult(\n readableResult,\n stringifiedData,\n );\n}\n\nexport async function selectAndExecuteTestStrategy(\n ecosystem: Ecosystem,\n scanResultsByPath: { [dir: string]: ScanResult[] },\n options: Options & PolicyOptions,\n): Promise<[TestResult[], string[]]> {\n return isUnmanagedEcosystem(ecosystem)\n ? await resolveAndTestFacts(ecosystem, scanResultsByPath, options)\n : await testDependencies(scanResultsByPath, options);\n}\n\nasync function testDependencies(\n scans: {\n [dir: string]: ScanResult[];\n },\n options: Options,\n): Promise<[TestResult[], string[]]> {\n const results: TestResult[] = [];\n const errors: string[] = [];\n for (const [path, scanResults] of Object.entries(scans)) {\n await spinner(`Testing dependencies in ${path}`);\n for (const scanResult of scanResults) {\n const payload = {\n method: 'POST',\n url: `${config.API}/test-dependencies`,\n json: true,\n headers: {\n 'x-is-ci': isCI(),\n authorization: getAuthHeader(),\n },\n body: {\n scanResult,\n },\n qs: assembleQueryString(options),\n };\n try {\n const response = await makeRequest<TestDependenciesResponse>(payload);\n results.push({\n issues: response.result.issues,\n issuesData: response.result.issuesData,\n depGraphData: response.result.depGraphData,\n });\n } catch (error) {\n if (error.code >= 400 && error.code < 500) {\n throw new Error(error.message);\n }\n errors.push('Could not test dependencies in ' + path);\n }\n }\n }\n spinner.clearAll();\n return [results, errors];\n}\n","export function abridgeErrorMessage(\n msg: string,\n maxLen: number,\n ellipsis = ' ... ',\n): string {\n if (msg.length <= maxLen) {\n return msg;\n }\n const toKeep = Math.floor((maxLen - ellipsis.length) / 2);\n return (\n msg.slice(0, toKeep) + ellipsis + msg.slice(msg.length - toKeep, msg.length)\n );\n}\n","import { CustomError } from './custom-error';\n\nexport class InvalidRemoteUrlError extends CustomError {\n private static ERROR_MESSAGE =\n 'Invalid argument provided for --remote-repo-url. Value must be a string.';\n\n constructor() {\n super(InvalidRemoteUrlError.ERROR_MESSAGE);\n }\n}\n","import { makeRequest } from '../request';\nimport { getAuthHeader } from '../api-token';\nimport config from '../config';\nimport { assembleQueryString } from '../snyk-test/common';\nimport { OrgFeatureFlagResponse } from './types';\nimport { Options } from '../types';\nimport { AuthFailedError } from '../errors';\n\nexport async function isFeatureFlagSupportedForOrg(\n featureFlag: string,\n org,\n): Promise<OrgFeatureFlagResponse> {\n const response = await makeRequest({\n method: 'GET',\n headers: {\n Authorization: getAuthHeader(),\n },\n qs: assembleQueryString({ org }),\n url: `${config.API}/cli-config/feature-flags/${featureFlag}`,\n gzip: true,\n json: true,\n });\n\n return (response as any).body;\n}\n\nexport async function hasFeatureFlag(\n featureFlag: string,\n options: Options,\n): Promise<boolean | undefined> {\n const { code, error, ok } = await isFeatureFlagSupportedForOrg(\n featureFlag,\n options.org,\n );\n\n if (code === 401 || code === 403) {\n throw AuthFailedError(error, code);\n }\n return ok;\n}\n","import * as fs from 'fs';\nimport * as pathLib from 'path';\nconst sortBy = require('lodash.sortby');\nconst groupBy = require('lodash.groupby');\nimport { detectPackageManagerFromFile } from './detect';\nimport * as debugModule from 'debug';\nconst debug = debugModule('snyk:find-files');\n\n// TODO: use util.promisify once we move to node 8\n\n/**\n * Returns files inside given file path.\n *\n * @param path file path.\n */\nexport async function readDirectory(path: string): Promise<string[]> {\n return await new Promise((resolve, reject) => {\n fs.readdir(path, (err, files) => {\n if (err) {\n reject(err);\n }\n resolve(files);\n });\n });\n}\n\n/**\n * Returns file stats object for given file path.\n *\n * @param path path to file or directory.\n */\nexport async function getStats(path: string): Promise<fs.Stats> {\n return await new Promise((resolve, reject) => {\n fs.stat(path, (err, stats) => {\n if (err) {\n reject(err);\n }\n resolve(stats);\n });\n });\n}\n\ninterface FindFilesRes {\n files: string[];\n allFilesFound: string[];\n}\n\n/**\n * Find all files in given search path. Returns paths to files found.\n *\n * @param path file path to search.\n * @param ignore (optional) files to ignore. Will always ignore node_modules.\n * @param filter (optional) file names to find. If not provided all files are returned.\n * @param levelsDeep (optional) how many levels deep to search, defaults to two, this path and one sub directory.\n */\nexport async function find(\n path: string,\n ignore: string[] = [],\n filter: string[] = [],\n levelsDeep = 4,\n): Promise<FindFilesRes> {\n const found: string[] = [];\n const foundAll: string[] = [];\n\n // ensure we ignore find against node_modules path.\n if (path.endsWith('node_modules')) {\n return { files: found, allFilesFound: foundAll };\n }\n // ensure node_modules is always ignored\n if (!ignore.includes('node_modules')) {\n ignore.push('node_modules');\n }\n try {\n if (levelsDeep < 0) {\n return { files: found, allFilesFound: foundAll };\n } else {\n levelsDeep--;\n }\n const fileStats = await getStats(path);\n if (fileStats.isDirectory()) {\n const { files, allFilesFound } = await findInDirectory(\n path,\n ignore,\n filter,\n levelsDeep,\n );\n found.push(...files);\n foundAll.push(...allFilesFound);\n } else if (fileStats.isFile()) {\n const fileFound = findFile(path, filter);\n if (fileFound) {\n found.push(fileFound);\n foundAll.push(fileFound);\n }\n }\n const filteredOutFiles = foundAll.filter((f) => !found.includes(f));\n if (filteredOutFiles.length) {\n debug(\n `Filtered out ${filteredOutFiles.length}/${\n foundAll.length\n } files: ${filteredOutFiles.join(', ')}`,\n );\n }\n return { files: filterForDefaultManifests(found), allFilesFound: foundAll };\n } catch (err) {\n throw new Error(`Error finding files in path '${path}'.\\n${err.message}`);\n }\n}\n\nfunction findFile(path: string, filter: string[] = []): string | null {\n if (filter.length > 0) {\n const filename = pathLib.basename(path);\n if (filter.includes(filename)) {\n return path;\n }\n } else {\n return path;\n }\n return null;\n}\n\nasync function findInDirectory(\n path: string,\n ignore: string[] = [],\n filter: string[] = [],\n levelsDeep = 4,\n): Promise<FindFilesRes> {\n const files = await readDirectory(path);\n const toFind = files\n .filter((file) => !ignore.includes(file))\n .map((file) => {\n const resolvedPath = pathLib.resolve(path, file);\n if (!fs.existsSync(resolvedPath)) {\n debug('File does not seem to exist, skipping: ', file);\n return { files: [], allFilesFound: [] };\n }\n return find(resolvedPath, ignore, filter, levelsDeep);\n });\n\n const found = await Promise.all(toFind);\n return {\n files: Array.prototype.concat.apply(\n [],\n found.map((f) => f.files),\n ),\n allFilesFound: Array.prototype.concat.apply(\n [],\n found.map((f) => f.allFilesFound),\n ),\n };\n}\n\nfunction filterForDefaultManifests(files: string[]): string[] {\n // take all the files in the same dir & filter out\n // based on package Manager\n if (files.length <= 1) {\n return files;\n }\n\n const filteredFiles: string[] = [];\n\n const beforeSort = files\n .filter(Boolean)\n .filter((p) => fs.existsSync(p))\n .map((p) => ({\n path: p,\n ...pathLib.parse(p),\n packageManager: detectProjectTypeFromFile(p),\n }));\n const sorted = sortBy(beforeSort, 'dir');\n const foundFiles = groupBy(sorted, 'dir');\n\n for (const directory of Object.keys(foundFiles)) {\n const filesInDirectory = foundFiles[directory];\n const beforeGroup = filesInDirectory.filter((p) => !!p.packageManager);\n\n const groupedFiles = groupBy(beforeGroup, 'packageManager');\n\n for (const packageManager of Object.keys(groupedFiles)) {\n const filesPerPackageManager = groupedFiles[packageManager];\n\n if (filesPerPackageManager.length <= 1) {\n const shouldSkip = shouldSkipAddingFile(\n packageManager,\n filesPerPackageManager[0].path,\n filteredFiles,\n );\n if (shouldSkip) {\n continue;\n }\n filteredFiles.push(filesPerPackageManager[0].path);\n continue;\n }\n const defaultManifestFileName = chooseBestManifest(\n filesPerPackageManager,\n packageManager,\n );\n if (defaultManifestFileName) {\n const shouldSkip = shouldSkipAddingFile(\n packageManager,\n filesPerPackageManager[0].path,\n filteredFiles,\n );\n if (shouldSkip) {\n continue;\n }\n filteredFiles.push(defaultManifestFileName);\n }\n }\n }\n return filteredFiles;\n}\n\nfunction detectProjectTypeFromFile(file: string): string | null {\n try {\n const packageManager = detectPackageManagerFromFile(file);\n if (['yarn', 'npm'].includes(packageManager)) {\n return 'node';\n }\n return packageManager;\n } catch (error) {\n return null;\n }\n}\n\nfunction shouldSkipAddingFile(\n packageManager: string,\n filePath: string,\n filteredFiles: string[],\n): boolean {\n if (['gradle'].includes(packageManager) && filePath) {\n const rootGradleFile = filteredFiles\n .filter(\n (targetFile) =>\n targetFile.endsWith('build.gradle') ||\n targetFile.endsWith('build.gradle.kts'),\n )\n .filter((targetFile) => {\n const parsedPath = pathLib.parse(targetFile);\n const relativePath = pathLib.relative(parsedPath.dir, filePath);\n return !relativePath.startsWith(`..${pathLib.sep}`);\n });\n return !!rootGradleFile.length;\n }\n return false;\n}\n\nfunction chooseBestManifest(\n files: Array<{ base: string; path: string }>,\n projectType: string,\n): string | null {\n switch (projectType) {\n case 'node': {\n const lockFile = files.filter((path) =>\n ['package-lock.json', 'yarn.lock'].includes(path.base),\n )[0];\n debug(\n `Encountered multiple node lockfiles files, defaulting to ${lockFile.path}`,\n );\n if (lockFile) {\n return lockFile.path;\n }\n const packageJson = files.filter((path) =>\n ['package.json'].includes(path.base),\n )[0];\n debug(\n `Encountered multiple npm manifest files, defaulting to ${packageJson.path}`,\n );\n return packageJson.path;\n }\n case 'rubygems': {\n const defaultManifest = files.filter((path) =>\n ['Gemfile.lock'].includes(path.base),\n )[0];\n debug(\n `Encountered multiple gem manifest files, defaulting to ${defaultManifest.path}`,\n );\n return defaultManifest.path;\n }\n case 'cocoapods': {\n const defaultManifest = files.filter((path) =>\n ['Podfile'].includes(path.base),\n )[0];\n debug(\n `Encountered multiple cocoapods manifest files, defaulting to ${defaultManifest.path}`,\n );\n return defaultManifest.path;\n }\n case 'pip': {\n const defaultManifest = files.filter((path) =>\n ['Pipfile'].includes(path.base),\n )[0];\n debug(\n `Encountered multiple pip manifest files, defaulting to ${defaultManifest.path}`,\n );\n return defaultManifest.path;\n }\n case 'gradle': {\n const defaultManifest = files.filter((path) =>\n ['build.gradle'].includes(path.base),\n )[0];\n debug(\n `Encountered multiple gradle manifest files, defaulting to ${defaultManifest.path}`,\n );\n return defaultManifest.path;\n }\n case 'poetry': {\n const defaultManifest = files.filter((path) =>\n ['pyproject.toml'].includes(path.base),\n )[0];\n debug(\n `Encountered multiple poetry manifest files, defaulting to ${defaultManifest.path}`,\n );\n return defaultManifest.path;\n }\n case 'hex': {\n const defaultManifest = files.filter((path) =>\n ['mix.exs'].includes(path.base),\n )[0];\n debug(\n `Encountered multiple hex manifest files, defaulting to ${defaultManifest.path}`,\n );\n return defaultManifest.path;\n }\n default: {\n return null;\n }\n }\n}\n","import chalk from 'chalk';\nimport {\n TestResult,\n BaseImageRemediationAdvice,\n} from '../../../lib/snyk-test/legacy';\n\nexport function dockerRemediationForDisplay(res: TestResult) {\n if (!res.docker || !res.docker.baseImageRemediation) {\n return '';\n }\n const { advice, message } = res.docker.baseImageRemediation;\n const out = [] as any[];\n\n if (advice) {\n for (const item of advice) {\n out.push(getTerminalStringFormatter(item)(item.message));\n }\n } else if (message) {\n out.push(message);\n } else {\n return '';\n }\n return `\\n\\n${out.join('\\n')}`;\n}\n\nfunction getTerminalStringFormatter({\n color,\n bold,\n}: BaseImageRemediationAdvice) {\n let formatter = chalk;\n if (color && formatter[color]) {\n formatter = formatter[color];\n }\n if (bold) {\n formatter = formatter.bold;\n }\n return formatter;\n}\n","const values = require('lodash.values');\nimport chalk from 'chalk';\n\nexport function createDockerBinaryHeading(pkgInfo): string {\n const binaryName = pkgInfo.pkg.name;\n const binaryVersion = pkgInfo.pkg.version;\n const numOfVulns = values(pkgInfo.issues).length;\n const vulnCountText = numOfVulns > 1 ? 'vulnerabilities' : 'vulnerability';\n return numOfVulns\n ? chalk.bold.white(\n `------------ Detected ${numOfVulns} ${vulnCountText}` +\n ` for ${binaryName}@${binaryVersion} ------------`,\n '\\n',\n )\n : '';\n}\n","const values = require('lodash.values');\nimport { createDockerBinaryHeading } from './format-docker-binary-heading';\nimport { Options, TestOptions } from '../../../lib/types';\nimport { formatIssues } from '../legacy-format-issue';\n\nexport function formatDockerBinariesIssues(\n dockerBinariesSortedGroupedVulns,\n binariesVulns,\n options: Options & TestOptions,\n): string[] {\n const binariesIssuesOutput = [] as string[];\n for (const pkgInfo of values(binariesVulns.affectedPkgs)) {\n binariesIssuesOutput.push(createDockerBinaryHeading(pkgInfo));\n const binaryIssues = dockerBinariesSortedGroupedVulns.filter(\n (vuln) => vuln.metadata.name === pkgInfo.pkg.name,\n );\n const formattedBinaryIssues = binaryIssues.map((vuln) =>\n formatIssues(vuln, options),\n );\n binariesIssuesOutput.push(formattedBinaryIssues.join('\\n\\n'));\n }\n return binariesIssuesOutput;\n}\n","export { dockerRemediationForDisplay } from './format-docker-advice';\nexport { formatDockerBinariesIssues } from './format-docker-binary-issues';\nexport { createDockerBinaryHeading } from './format-docker-binary-heading';\n","import { errorMessageWithRetry } from '../errors';\n\nexport function summariseErrorResults(errorResultsLength: number): string {\n const projects = errorResultsLength > 1 ? 'projects' : 'project';\n if (errorResultsLength > 0) {\n return errorMessageWithRetry(\n ` Failed to test ${errorResultsLength} ${projects}.`,\n );\n }\n\n return '';\n}\n","const assign = require('lodash.assign');\nimport chalk from 'chalk';\nimport * as url from 'url';\n\nimport { MonitorResult } from '../types';\nimport config from '../config';\nimport { showMultiScanTip } from './show-multi-scan-tip';\n\nexport function formatErrorMonitorOutput(\n packageManager,\n res: MonitorResult,\n options,\n projectName?: string,\n): string {\n const humanReadableName = projectName\n ? `${res.path} (${projectName})`\n : res.path;\n const strOutput =\n chalk.bold.white('\\nMonitoring ' + humanReadableName + '...\\n\\n') +\n '\\n\\n' +\n (packageManager === 'maven'\n ? chalk.yellow('Detected 0 dependencies (no project created)')\n : '');\n return options.json\n ? JSON.stringify(\n assign({}, res, {\n packageManager,\n }),\n )\n : strOutput;\n}\n\nexport function formatMonitorOutput(\n packageManager,\n res: MonitorResult,\n options,\n projectName?: string,\n foundProjectCount?: number,\n): string {\n const manageUrl = buildManageUrl(res.id, res.org);\n const multiScanTip = showMultiScanTip(\n packageManager,\n options,\n foundProjectCount,\n );\n const issues = res.licensesPolicy ? 'issues' : 'vulnerabilities';\n const humanReadableName = projectName\n ? `${res.path} (${projectName})`\n : res.path;\n const strOutput =\n chalk.bold.white('\\nMonitoring ' + humanReadableName + '...\\n\\n') +\n 'Explore this snapshot at ' +\n res.uri +\n '\\n\\n' +\n (multiScanTip ? `${multiScanTip}\\n\\n` : '') +\n (res.isMonitored\n ? 'Notifications about newly disclosed ' +\n issues +\n ' related ' +\n 'to these dependencies will be emailed to you.\\n'\n : chalk.bold.red(\n 'Project is inactive, so notifications are turned ' +\n 'off.\\nActivate this project here: ' +\n manageUrl +\n '\\n\\n',\n )) +\n (res.trialStarted\n ? chalk.yellow(\n \"You're over the free plan usage limit, \\n\" +\n 'and are now on a free 14-day premium trial.\\n' +\n 'View plans here: ' +\n manageUrl +\n '\\n\\n',\n )\n : '');\n\n return options.json\n ? JSON.stringify(\n assign({}, res, {\n manageUrl,\n packageManager,\n }),\n )\n : strOutput;\n}\n\nfunction buildManageUrl(resId: string, org?: string): string {\n const endpoint = url.parse(config.API);\n let leader = '';\n if (org) {\n leader = '/org/' + org;\n }\n endpoint.pathname = leader + '/manage';\n const manageUrl = url.format(endpoint);\n\n // TODO: what was this meant to do?\n endpoint.pathname = leader + '/monitor/' + resId;\n return manageUrl;\n}\n","import * as wrap from 'wrap-ansi';\nimport chalk from 'chalk';\n\nimport {\n AnnotatedIssue,\n CallPath,\n REACHABILITY,\n} from '../../lib/snyk-test/legacy';\nimport { SampleReachablePaths } from './types';\nimport {\n CALL_PATH_LEADING_ELEMENTS,\n PATH_SEPARATOR,\n CALL_PATH_TRAILING_ELEMENTS,\n PATH_HIDDEN_ELEMENTS,\n} from '../constants';\n\nconst reachabilityLevels: {\n [key in REACHABILITY]: { color: Function; text: string; json: string };\n} = {\n [REACHABILITY.FUNCTION]: {\n color: chalk.redBright,\n text: 'Reachable',\n json: 'reachable',\n },\n [REACHABILITY.PACKAGE]: {\n color: chalk.yellow,\n text: 'Potentially reachable',\n json: 'potentially-reachable',\n },\n [REACHABILITY.NOT_REACHABLE]: {\n color: chalk.blueBright,\n text: 'Not reachable',\n json: 'not-reachable',\n },\n [REACHABILITY.NO_INFO]: {\n color: (str) => str,\n text: '',\n json: 'no-path-found',\n },\n};\n\nexport function formatReachability(reachability?: REACHABILITY): string {\n if (!reachability) {\n return '';\n }\n const reachableInfo = reachabilityLevels[reachability];\n const textFunc = reachableInfo ? reachableInfo.color : (str) => str;\n const text =\n reachableInfo && reachableInfo.text ? `[${reachableInfo.text}]` : '';\n\n return wrap(textFunc(text), 100);\n}\n\nexport function getReachabilityText(reachability?: REACHABILITY): string {\n if (!reachability) {\n return '';\n }\n const reachableInfo = reachabilityLevels[reachability];\n return reachableInfo ? reachableInfo.text : '';\n}\n\nexport function getReachabilityJson(reachability?: REACHABILITY): string {\n if (!reachability) {\n return '';\n }\n const reachableInfo = reachabilityLevels[reachability];\n return reachableInfo ? reachableInfo.json : '';\n}\n\nexport function summariseReachableVulns(\n vulnerabilities: AnnotatedIssue[],\n): string {\n const reachableVulnsCount = vulnerabilities.filter(\n (v) => v.reachability === REACHABILITY.FUNCTION,\n ).length;\n\n if (reachableVulnsCount > 0) {\n const vulnText =\n reachableVulnsCount === 1 ? 'vulnerability' : 'vulnerabilities';\n return `In addition, found ${reachableVulnsCount} ${vulnText} with a reachable path.`;\n }\n\n return '';\n}\n\nfunction getDistinctReachablePaths(\n reachablePaths: CallPath[],\n maxPathCount: number,\n): string[] {\n const uniquePaths = new Set<string>();\n for (const path of reachablePaths) {\n if (uniquePaths.size >= maxPathCount) {\n break;\n }\n uniquePaths.add(formatReachablePath(path));\n }\n return Array.from(uniquePaths.values());\n}\n\nexport function formatReachablePaths(\n sampleReachablePaths: SampleReachablePaths | undefined,\n maxPathCount: number,\n template: (samplePaths: string[], extraPathsCount: number) => string,\n): string {\n const paths = sampleReachablePaths?.paths || [];\n const pathCount = sampleReachablePaths?.pathCount || 0;\n const distinctPaths = getDistinctReachablePaths(paths, maxPathCount);\n const extraPaths = pathCount - distinctPaths.length;\n\n return template(distinctPaths, extraPaths);\n}\n\nexport function formatReachablePath(path: CallPath): string {\n const head = path.slice(0, CALL_PATH_LEADING_ELEMENTS).join(PATH_SEPARATOR);\n const tail = path\n .slice(path.length - CALL_PATH_TRAILING_ELEMENTS, path.length)\n .join(PATH_SEPARATOR);\n return `${head}${PATH_SEPARATOR}${PATH_HIDDEN_ELEMENTS}${PATH_SEPARATOR}${tail}`;\n}\n","import chalk from 'chalk';\nimport { rightPadWithSpaces } from '../../lib/right-pad';\nimport { TestOptions, Options } from '../../lib/types';\nimport { TestResult } from '../../lib/snyk-test/legacy';\nimport { IacTestResponse } from '../../lib/snyk-test/iac-test-result';\nimport { capitalizePackageManager } from './iac-output';\n\nexport function formatTestMeta(\n res: TestResult | IacTestResponse,\n options: Options & TestOptions,\n): string {\n const padToLength = 19; // chars to align\n const packageManager = res.packageManager || options.packageManager;\n const targetFile = res.targetFile || res.displayTargetFile || options.file;\n const openSource = res.isPrivate ? 'no' : 'yes';\n const meta = res.org\n ? [chalk.bold(rightPadWithSpaces('Organization: ', padToLength)) + res.org]\n : [];\n if (options.iac) {\n meta.push(\n chalk.bold(rightPadWithSpaces('Type: ', padToLength)) +\n capitalizePackageManager(packageManager),\n );\n } else {\n meta.push(\n chalk.bold(rightPadWithSpaces('Package manager: ', padToLength)) +\n packageManager,\n );\n }\n if (targetFile) {\n meta.push(\n chalk.bold(rightPadWithSpaces('Target file: ', padToLength)) + targetFile,\n );\n }\n if (res.projectName) {\n meta.push(\n chalk.bold(rightPadWithSpaces('Project name: ', padToLength)) +\n res.projectName,\n );\n }\n if (options.docker) {\n meta.push(\n chalk.bold(rightPadWithSpaces('Docker image: ', padToLength)) +\n options.path,\n );\n\n if (res.platform) {\n meta.push(\n chalk.bold(rightPadWithSpaces('Platform: ', padToLength)) +\n res.platform,\n );\n }\n } else {\n meta.push(\n chalk.bold(rightPadWithSpaces('Open source: ', padToLength)) + openSource,\n );\n meta.push(\n chalk.bold(rightPadWithSpaces('Project path: ', padToLength)) +\n options.path,\n );\n }\n if (res.payloadType !== 'k8sconfig') {\n const legacyRes: TestResult = res as TestResult;\n if (legacyRes.docker && legacyRes.docker.baseImage) {\n meta.push(\n chalk.bold(rightPadWithSpaces('Base image: ', padToLength)) +\n legacyRes.docker.baseImage,\n );\n }\n\n if (legacyRes.filesystemPolicy) {\n meta.push(\n chalk.bold(rightPadWithSpaces('Local Snyk policy: ', padToLength)) +\n chalk.green('found'),\n );\n if (\n legacyRes.ignoreSettings &&\n legacyRes.ignoreSettings.disregardFilesystemIgnores\n ) {\n meta.push(\n chalk.bold(\n rightPadWithSpaces('Local Snyk policy ignored: ', padToLength),\n ) + chalk.red('yes'),\n );\n }\n }\n if (legacyRes.licensesPolicy) {\n meta.push(\n chalk.bold(rightPadWithSpaces('Licenses: ', padToLength)) +\n chalk.green('enabled'),\n );\n }\n }\n\n return meta.join('\\n');\n}\n","import { Options, TestOptions } from '../../lib/types';\n\nexport function summariseVulnerableResults(\n vulnerableResults,\n options: Options & TestOptions,\n): string {\n const vulnsLength = vulnerableResults.length;\n if (vulnsLength) {\n if (options.showVulnPaths) {\n return `, ${vulnsLength} contained ${\n options.iac ? 'issues' : 'vulnerable paths'\n }.`;\n }\n return `, ${vulnsLength} had issues.`;\n }\n\n if (options.showVulnPaths) {\n return ', no vulnerable paths were found.';\n }\n\n return ', no issues were found.';\n}\n","import { SEVERITIES, SEVERITY } from '../snyk-test/common';\n\nexport function getSeverityValue(severity: SEVERITY | 'none'): number {\n return SEVERITIES.find((s) => s.verboseName === severity)!.value;\n}\n","export {\n capitalizePackageManager,\n createSarifOutputForIac,\n shareResultsOutput,\n getIacDisplayedOutput,\n getIacDisplayErrorFileOutput,\n} from './v1';\n\nexport {\n formatIacTestSummary,\n getIacDisplayedIssues,\n formatIacTestFailures,\n formatFailuresList,\n iacTestTitle,\n spinnerMessage,\n spinnerSuccessMessage,\n customRulesMessage,\n customRulesReportMessage,\n shouldLogUserMessages,\n formatShareResultsOutput,\n failuresTipOutput,\n IaCTestFailure,\n formatSnykIacTestTestData,\n formatTestData,\n} from './v2';\n","import chalk from 'chalk';\nimport { icon } from '../../../theme';\nimport * as Debug from 'debug';\nimport * as pathLib from 'path';\nimport { pathToFileURL } from 'url';\nimport * as upperFirst from 'lodash.upperfirst';\nimport * as camelCase from 'lodash.camelcase';\n\nimport {\n IacTestResponse,\n AnnotatedIacIssue,\n} from '../../../../lib/snyk-test/iac-test-result';\nimport { printPath } from '../../remediation-based-format-issues';\nimport { titleCaseText } from '../../legacy-format-issue';\nimport * as sarif from 'sarif';\nimport { colorTextBySeverity } from '../../../../lib/snyk-test/common';\nimport { IacFileInDirectory, IacOutputMeta } from '../../../../lib/types';\nimport { isLocalFolder } from '../../../../lib/detect';\nimport { getSeverityValue } from '../../get-severity-value';\nimport { getIssueLevel } from '../../sarif-output';\nimport { getVersion } from '../../../version';\nimport config from '../../../config';\nimport { getRepositoryRoot } from '../../../iac/git';\nconst debug = Debug('iac-output');\n\nfunction formatIacIssue(\n issue: AnnotatedIacIssue,\n isNew: boolean,\n path: string[],\n): string {\n const newBadge = isNew ? ' (new)' : '';\n const name = issue.subType ? ` in ${chalk.bold(issue.subType)}` : '';\n\n let introducedBy = '';\n if (path) {\n // In this mode, we show only one path by default, for compactness\n const pathStr = printPath(path, 0);\n introducedBy = `\\n introduced by ${pathStr}`;\n }\n\n return (\n colorTextBySeverity(\n issue.severity,\n ` ${icon.ISSUE} ${chalk.bold(issue.title)}${newBadge} [${titleCaseText(\n issue.severity,\n )} Severity]`,\n ) +\n ` [${issue.id}]` +\n name +\n introducedBy +\n '\\n'\n );\n}\n\nexport function getIacDisplayedOutput(\n iacTest: IacTestResponse,\n testedInfoText: string,\n meta: string,\n prefix: string,\n): string {\n const issuesTextArray = [\n chalk.bold.white('\\nInfrastructure as code issues:'),\n ];\n\n const NotNew = false;\n\n const issues: AnnotatedIacIssue[] = iacTest.result.cloudConfigResults;\n debug(`iac display output - ${issues.length} issues`);\n\n issues\n .sort((a, b) => getSeverityValue(b.severity) - getSeverityValue(a.severity))\n .forEach((issue) => {\n issuesTextArray.push(\n formatIacIssue(issue, NotNew, issue.cloudConfigPath),\n );\n });\n\n const issuesInfoOutput: string[] = [];\n debug(`Iac display output - ${issuesTextArray.length} issues text`);\n if (issuesTextArray.length > 0) {\n issuesInfoOutput.push(issuesTextArray.join('\\n'));\n }\n\n let body = issuesInfoOutput.join('\\n\\n') + '\\n\\n' + meta;\n\n const vulnCountText = `found ${issues.length} issues`;\n const summary = testedInfoText + ', ' + chalk.red.bold(vulnCountText);\n\n body = body + '\\n\\n' + summary;\n\n return prefix + body;\n}\n\nexport function getIacDisplayErrorFileOutput(\n iacFileResult: IacFileInDirectory,\n): string {\n const fileName = pathLib.basename(iacFileResult.filePath);\n return `\n\n-------------------------------------------------------\n\nTesting ${fileName}...\n\n${iacFileResult.failureReason}`;\n}\n\nexport function capitalizePackageManager(type: string | undefined) {\n switch (type) {\n case 'k8sconfig': {\n return 'Kubernetes';\n }\n case 'helmconfig': {\n return 'Helm';\n }\n case 'terraformconfig': {\n return 'Terraform';\n }\n case 'cloudformationconfig': {\n return 'CloudFormation';\n }\n case 'armconfig': {\n return 'ARM';\n }\n default: {\n return 'Infrastructure as Code';\n }\n }\n}\n\ntype ResponseIssues = { issue: AnnotatedIacIssue; targetPath: string }[];\n\n// Used to reference the base path in results.\nconst PROJECT_ROOT_KEY = 'PROJECTROOT';\n\nexport function createSarifOutputForIac(\n iacTestResponses: IacTestResponse[],\n): sarif.Log {\n // If the CLI scans a singular file, then the base path is the current working directory\n // Otherwise it's the computed path\n const basePath = isLocalFolder(iacTestResponses[0].path)\n ? pathLib.resolve('.', iacTestResponses[0].path)\n : pathLib.resolve('.');\n let repoRoot: string;\n try {\n repoRoot = getRepositoryRoot() + '/';\n } catch {\n repoRoot = pathLib.join(basePath, '/'); // the slash at the end is required, otherwise the artifactLocation.uri starts with a slash\n }\n const issues = iacTestResponses.reduce((collect: ResponseIssues, res) => {\n if (res.result) {\n // targetFile is the computed relative path of the scanned file\n // so needs to be cleaned up before assigning to the URI\n const targetPath = getPathRelativeToRepoRoot(\n repoRoot,\n basePath,\n res.targetFile,\n );\n const mapped = res.result.cloudConfigResults.map((issue) => ({\n issue,\n targetPath,\n }));\n collect.push(...mapped);\n }\n return collect;\n }, []);\n\n const tool: sarif.Tool = {\n driver: {\n name: 'Snyk IaC',\n fullName: 'Snyk Infrastructure as Code',\n version: getVersion(),\n informationUri:\n 'https://docs.snyk.io/products/snyk-infrastructure-as-code',\n rules: extractReportingDescriptor(issues),\n },\n };\n return {\n $schema:\n 'https://raw.githubusercontent.com/oasis-tcs/sarif-spec/master/Schemata/sarif-schema-2.1.0.json',\n version: '2.1.0',\n runs: [\n {\n // https://docs.oasis-open.org/sarif/sarif/v2.1.0/os/sarif-v2.1.0-os.html#_Toc34317498\n originalUriBaseIds: {\n [PROJECT_ROOT_KEY]: {\n uri: pathToFileURL(repoRoot).href,\n description: {\n text: 'The root directory for all project files.',\n },\n },\n },\n\n tool,\n automationDetails: {\n id: 'snyk-iac',\n },\n results: mapIacTestResponseToSarifResults(issues),\n },\n ],\n };\n}\n\nexport function extractReportingDescriptor(\n results: ResponseIssues,\n): sarif.ReportingDescriptor[] {\n const tool: Record<string, sarif.ReportingDescriptor> = {};\n\n results.forEach(({ issue }) => {\n if (tool[issue.id]) {\n return;\n }\n // custom rules may not have some of these fields so we check them first\n const fullDescriptionText = issue.subType\n ? `${upperFirst(issue.severity)} severity - ${issue.subType}`\n : `${upperFirst(issue.severity)} severity`;\n const issueText = issue.iacDescription.issue\n ? `The issue is... \\n${issue.iacDescription.issue}\\n\\n`\n : '';\n const issueMarkdown = issue.iacDescription.issue\n ? `**The issue is...** \\n${issue.iacDescription.issue}\\n\\n`\n : '';\n const impactText = issue.iacDescription.impact\n ? ` The impact of this is... \\n ${issue.iacDescription.impact}\\n\\n`\n : '';\n const impactMarkdown = issue.iacDescription.impact\n ? ` **The impact of this is...** \\n ${issue.iacDescription.impact}\\n\\n`\n : '';\n const resolveText = issue.iacDescription.resolve\n ? ` You can resolve this by... \\n${issue.iacDescription.resolve}`\n : '';\n const resolveMarkdown = issue.iacDescription.resolve\n ? ` **You can resolve this by...** \\n${issue.iacDescription.resolve}`\n : '';\n const tags = ['security'];\n if (issue.subType) {\n tags.push(issue.subType);\n }\n tool[issue.id] = {\n id: issue.id,\n name: upperFirst(camelCase(issue.title)).replace(/ /g, ''),\n shortDescription: {\n text: `${upperFirst(issue.severity)} severity - ${issue.title}`,\n },\n fullDescription: {\n text: fullDescriptionText,\n },\n help: {\n text: `${issueText}${impactText}${resolveText}`.replace(/^\\s+/g, ''),\n markdown: `${issueMarkdown}${impactMarkdown}${resolveMarkdown}`.replace(\n /^\\s+/g,\n '',\n ),\n },\n defaultConfiguration: {\n level: getIssueLevel(issue.severity),\n },\n properties: {\n tags,\n problem: {\n severity: issue.severity,\n },\n },\n helpUri: issue.documentation,\n };\n });\n\n return Object.values(tool);\n}\n\nexport function mapIacTestResponseToSarifResults(\n issues: ResponseIssues,\n): sarif.Result[] {\n return issues.map(({ targetPath, issue }) => {\n const hasLineNumber = issue.lineNumber && issue.lineNumber >= 0;\n // custom rules may not have some of these fields so we check them first\n const affectingText = issue.subType\n ? ` affecting the ${issue.subType}`\n : '';\n return {\n ruleId: issue.id,\n message: {\n text: `This line contains a potential ${issue.severity} severity misconfiguration${affectingText}`,\n },\n locations: [\n {\n physicalLocation: {\n artifactLocation: {\n uri: targetPath,\n uriBaseId: PROJECT_ROOT_KEY,\n },\n // We exclude the `region` key when the line number is missing or -1.\n // https://docs.oasis-open.org/sarif/sarif/v2.0/csprd02/sarif-v2.0-csprd02.html#_Toc10127873\n ...(hasLineNumber && {\n region: {\n startLine: issue.lineNumber,\n },\n }),\n },\n },\n ],\n };\n });\n}\n\nfunction getPathRelativeToRepoRoot(\n repoRoot: string,\n basePath: string,\n filePath: string,\n) {\n const fullPath = pathLib.resolve(basePath, filePath).replace(/\\\\/g, '/');\n return fullPath.replace(repoRoot, '');\n}\n\nexport function shareResultsOutput(iacOutputMeta: IacOutputMeta): string {\n let projectName: string = iacOutputMeta.projectName;\n if (iacOutputMeta?.gitRemoteUrl) {\n // from \"http://github.com/snyk/cli.git\" to \"snyk/cli\"\n projectName = iacOutputMeta.gitRemoteUrl.replace(\n /^https?:\\/\\/github.com\\/(.*)\\.git$/,\n '$1',\n );\n }\n return `Your test results are available at: ${config.ROOT}/org/${iacOutputMeta.orgName}/projects under the name ${projectName}`;\n}\n","export { formatIacTestFailures, formatFailuresList } from './list';\nexport { failuresTipOutput } from './tip';\n","import { EOL } from 'os';\n\nimport { IacFileInDirectory } from '../../../../types';\nimport { colors, contentPadding } from '../utils';\nimport { IaCTestFailure } from '../types';\n\nexport function formatIacTestFailures(testFailures: IaCTestFailure[]): string {\n const sectionComponents: string[] = [];\n\n const titleOutput = colors.title(`Test Failures`);\n sectionComponents.push(titleOutput);\n\n const testFailuresListOutput = formatFailuresList(testFailures);\n sectionComponents.push(testFailuresListOutput);\n\n return sectionComponents.join(EOL.repeat(2));\n}\n\ninterface TestFailuresByFailureReason {\n [reason: string]: IacFileInDirectory[];\n}\n\nfunction groupTestFailuresByFailureReason(\n testFailures: IaCTestFailure[],\n): TestFailuresByFailureReason {\n return testFailures.reduce((groupedFailures, failure) => {\n const reason = failure.failureReason;\n if (reason) {\n if (!groupedFailures[reason]) {\n groupedFailures[reason] = [];\n }\n\n groupedFailures[reason].push(failure);\n }\n\n return groupedFailures;\n }, {});\n}\n\nexport function formatFailuresList(testFailures: IaCTestFailure[]): string {\n const testFailuresByReason = groupTestFailuresByFailureReason(testFailures);\n return Object.entries(testFailuresByReason)\n .map(([failureReason, testFailures]) =>\n formatFailure(failureReason, testFailures),\n )\n .join(EOL.repeat(2));\n}\n\nfunction formatFailure(\n failureReason: string,\n testFailures: IacFileInDirectory[],\n): string {\n const pathPrefix = contentPadding + 'Path: ';\n const pathLeftPadding = ' '.repeat(pathPrefix.length);\n\n return (\n contentPadding +\n colors.failure.bold(failureReason) +\n EOL +\n pathPrefix +\n testFailures\n .map((testFailure) => testFailure.filePath)\n .join(EOL + pathLeftPadding)\n );\n}\n","import { EOL } from 'os';\nimport { contactSupportMessage, reTryMessage } from '../../../../common';\nimport { colors } from '../utils';\n\nexport const failuresTipOutput = colors.info.bold(\n reTryMessage + EOL + contactSupportMessage,\n);\n","import { FormattedResult } from '../../../../cli/commands/test/iac/local-execution/types';\nimport { Results, Vulnerability } from '../../../iac/test/v2/scan/results';\nimport { AnnotatedIacIssue } from '../../../snyk-test/iac-test-result';\nimport { SEVERITY } from '../../../snyk-test/legacy';\nimport { IacOutputMeta } from '../../../types';\nimport {\n FormattedOutputResultsBySeverity,\n IacTestCounts,\n IacTestData,\n} from './types';\n\ninterface FormatTestDataParams {\n oldFormattedResults: FormattedResult[];\n iacOutputMeta: IacOutputMeta | undefined;\n ignoresCount: number;\n}\n\nexport function formatTestData({\n oldFormattedResults,\n iacOutputMeta: iacTestMeta,\n ignoresCount,\n}: FormatTestDataParams): IacTestData {\n const resultsBySeverity = formatScanResultsNewOutput(oldFormattedResults);\n\n return {\n resultsBySeverity,\n metadata: iacTestMeta,\n counts: formatTestCounts(resultsBySeverity, {\n oldFormattedResults,\n ignoresCount,\n }),\n };\n}\n\nfunction formatTestCounts(\n resultsBySeverity: FormattedOutputResultsBySeverity,\n {\n oldFormattedResults,\n ignoresCount,\n }: Pick<FormatTestDataParams, 'ignoresCount' | 'oldFormattedResults'>,\n): IacTestCounts {\n const filesWithIssues = oldFormattedResults.filter(\n (result) => result.result.cloudConfigResults.length,\n ).length;\n\n const filesWithoutIssues = oldFormattedResults.length - filesWithIssues;\n\n let totalIssues = 0;\n\n const issuesCountBySeverity = {} as { [key in SEVERITY]: number };\n Object.values(SEVERITY).forEach((severity) => {\n issuesCountBySeverity[severity] = resultsBySeverity[severity]?.length || 0;\n totalIssues += issuesCountBySeverity[severity];\n });\n\n return {\n ignores: ignoresCount,\n filesWithIssues,\n filesWithoutIssues,\n issuesBySeverity: issuesCountBySeverity,\n issues: totalIssues,\n };\n}\n\nfunction formatScanResultsNewOutput(\n oldFormattedResults: FormattedResult[],\n): FormattedOutputResultsBySeverity {\n const newFormattedResults: FormattedOutputResultsBySeverity = {};\n\n oldFormattedResults.forEach((oldFormattedResult) => {\n oldFormattedResult.result.cloudConfigResults.forEach((issue) => {\n if (!newFormattedResults[issue.severity]) {\n newFormattedResults[issue.severity] = [];\n }\n\n newFormattedResults[issue.severity].push({\n issue,\n targetFile: oldFormattedResult.targetFile,\n projectType: oldFormattedResult.result.projectType,\n });\n });\n });\n\n return newFormattedResults;\n}\n\nexport function formatSnykIacTestTestData(\n snykIacTestScanResult: Results | undefined,\n projectName: string,\n orgName: string,\n): IacTestData {\n const resultsBySeverity = formatSnykIacTestScanResultNewOutput(\n snykIacTestScanResult,\n );\n\n let totalIssues = 0;\n\n const issuesCountBySeverity = {} as { [key in SEVERITY]: number };\n Object.values(SEVERITY).forEach((severity) => {\n issuesCountBySeverity[severity] = resultsBySeverity[severity]?.length || 0;\n totalIssues += issuesCountBySeverity[severity];\n });\n\n const allFilesCount = countFiles(snykIacTestScanResult);\n const filesWithIssuesCount = countFilesWithIssues(snykIacTestScanResult);\n const filesWithoutIssuesCount = allFilesCount - filesWithIssuesCount;\n\n return {\n resultsBySeverity,\n metadata: { projectName, orgName },\n counts: {\n ignores: 0,\n filesWithIssues: filesWithIssuesCount,\n filesWithoutIssues: filesWithoutIssuesCount,\n issues: totalIssues,\n issuesBySeverity: issuesCountBySeverity,\n },\n };\n}\n\nfunction countFilesWithIssues(results?: Results): number {\n if (results && results.vulnerabilities) {\n const files = new Set<string>();\n\n for (const vulnerability of results.vulnerabilities) {\n if (vulnerability.resource.file) {\n files.add(vulnerability.resource.file);\n }\n }\n\n return files.size;\n }\n\n return 0;\n}\n\nfunction countFiles(results?: Results): number {\n if (results && results?.resources) {\n const files = new Set<string>();\n\n for (const resource of results.resources) {\n if (resource.file) {\n files.add(resource.file);\n }\n }\n\n return files.size;\n }\n\n return 0;\n}\n\nfunction formatSnykIacTestScanResultNewOutput(\n snykIacTestScanResult: Results | undefined,\n): FormattedOutputResultsBySeverity {\n const resultsBySeverity = {} as FormattedOutputResultsBySeverity;\n\n if (snykIacTestScanResult?.vulnerabilities) {\n snykIacTestScanResult.vulnerabilities.forEach((vulnerability) => {\n if (!resultsBySeverity[vulnerability.severity]) {\n resultsBySeverity[vulnerability.severity] = [];\n }\n\n resultsBySeverity[vulnerability.severity]!.push({\n issue: formatSnykIacTestScanVulnerability(vulnerability),\n targetFile: vulnerability.resource.file,\n projectType: vulnerability.resource.type,\n });\n });\n }\n\n return resultsBySeverity;\n}\n\nfunction formatSnykIacTestScanVulnerability(\n vulnerability: Vulnerability,\n): AnnotatedIacIssue {\n return {\n id: vulnerability.rule.id,\n publicId: vulnerability.rule.id,\n severity: vulnerability.severity,\n title: vulnerability.rule.title,\n isIgnored: vulnerability.ignored,\n lineNumber: vulnerability.resource.line,\n cloudConfigPath: formatCloudConfigPath(vulnerability),\n subType: '',\n iacDescription: {\n issue: '',\n impact: '',\n resolve: '',\n },\n issue: '',\n impact: '',\n resolve: '',\n msg: '',\n references: [],\n };\n}\n\nfunction formatCloudConfigPath(vulnerability: Vulnerability): string[] {\n const cloudConfigPath = vulnerability.resource.id.split('.');\n\n if (vulnerability.resource.path) {\n cloudConfigPath.push(...vulnerability.resource.path);\n }\n\n return cloudConfigPath;\n}\n","export { getIacDisplayedIssues } from './issues-list';\nexport { formatIacTestSummary } from './test-summary';\nexport {\n iacTestTitle,\n spinnerMessage,\n spinnerSuccessMessage,\n shouldLogUserMessages,\n customRulesMessage,\n customRulesReportMessage,\n} from './user-messages';\nexport {\n formatShareResultsOutput,\n shareResultsTip,\n shareCustomRulesDisclaimer,\n} from './share-results';\nexport {\n formatIacTestFailures,\n formatFailuresList,\n failuresTipOutput,\n} from './failures';\nexport { IaCTestFailure } from './types';\nexport { formatSnykIacTestTestData, formatTestData } from './formatters';\n","import { EOL } from 'os';\nimport * as capitalize from 'lodash.capitalize';\nimport * as isEmpty from 'lodash.isempty';\nimport * as debug from 'debug';\n\nimport { colors, contentPadding } from '../utils';\nimport { formatIssue } from './issue';\nimport { SEVERITY } from '../../../../snyk-test/common';\nimport {\n FormattedOutputResult,\n FormattedOutputResultsBySeverity,\n} from '../types';\nimport { Options } from './types';\n\nexport function getIacDisplayedIssues(\n resultsBySeverity: FormattedOutputResultsBySeverity,\n options?: Options,\n): string {\n const titleOutput = colors.title('Issues');\n\n if (isEmpty(resultsBySeverity)) {\n return (\n titleOutput +\n EOL +\n contentPadding +\n colors.success.bold('No vulnerable paths were found!')\n );\n }\n\n const severitySectionsOutput = Object.values(SEVERITY)\n .filter((severity) => !!resultsBySeverity[severity])\n .map((severity) => {\n const severityResults: FormattedOutputResult[] =\n resultsBySeverity[severity];\n\n const titleOutput = colors.title(\n `${capitalize(severity)} Severity Issues: ${severityResults.length}`,\n );\n\n const issuesOutput = severityResults\n .sort(\n (severityResult1, severityResult2) =>\n severityResult1.targetFile.localeCompare(\n severityResult2.targetFile,\n ) ||\n severityResult1.issue.id.localeCompare(severityResult2.issue.id),\n )\n .map((result) => formatIssue(result, options))\n .join(EOL.repeat(2));\n\n debug(\n `iac display output - ${severity} severity ${severityResults.length} issues`,\n );\n\n return titleOutput + EOL.repeat(2) + issuesOutput;\n })\n .join(EOL.repeat(2));\n\n return titleOutput + EOL.repeat(2) + severitySectionsOutput;\n}\n","import * as capitalize from 'lodash.capitalize';\nimport chalk from 'chalk';\nimport { EOL } from 'os';\nimport { iacRemediationTypes } from '../../../../iac/constants';\nimport { printPath } from '../../../remediation-based-format-issues';\nimport { colors, contentPadding } from '../utils';\nimport { FormattedOutputResult } from '../types';\nimport { AnnotatedIacIssue } from '../../../../snyk-test/iac-test-result';\nimport { Options } from './types';\n\nexport function formatIssue(\n result: FormattedOutputResult,\n options?: Options,\n): string {\n const titleOutput = formatTitle(result.issue);\n\n const propertiesOutput = formatProperties(result, options);\n return (\n contentPadding +\n titleOutput +\n EOL +\n contentPadding +\n propertiesOutput.join(EOL + contentPadding)\n );\n}\n\nfunction formatTitle(issue: AnnotatedIacIssue): string {\n const severity = issue.severity;\n const titleOutput = colors.severities[severity](\n `[${capitalize([issue.severity])}] ${chalk.bold(issue.title)}`,\n );\n\n return titleOutput;\n}\n\nfunction formatInfo(issue: AnnotatedIacIssue): string | undefined {\n const issueDesc = issue.iacDescription.issue;\n const issueImpact = issue.iacDescription.impact;\n\n if (!issueDesc) {\n return issueImpact;\n }\n\n if (!issueImpact) {\n return issueDesc;\n }\n\n return `${issueDesc}${!issueDesc.endsWith('.') ? '.' : ''} ${issueImpact}`;\n}\n\nfunction formatProperties(\n result: FormattedOutputResult,\n options?: Options,\n): string[] {\n const remediationKey = iacRemediationTypes?.[result.projectType];\n\n const properties = [\n ['Info', formatInfo(result.issue)],\n [\n 'Rule',\n result.issue.isGeneratedByCustomRule\n ? `custom rule ${result.issue.id}`\n : chalk.underline(result.issue.documentation || ''),\n ],\n ['Path', printPath(result.issue.cloudConfigPath, 0)],\n [\n 'File',\n `${result.targetFile}${\n options?.shouldShowLineNumbers &&\n isValidLineNumber(result.issue.lineNumber)\n ? `:${result.issue.lineNumber}`\n : ''\n }`,\n ],\n [\n 'Resolve',\n remediationKey && result.issue.remediation?.[remediationKey]\n ? result.issue.remediation[remediationKey]\n : result.issue.iacDescription.resolve,\n ],\n ].filter(([, val]) => !!val) as [string, string][];\n\n const maxPropertyNameLength = Math.max(\n ...properties.map(([key]) => key.length),\n );\n\n return properties.map(\n ([key, value]) =>\n `${key}: ${' '.repeat(maxPropertyNameLength - key.length)}${value}`,\n );\n}\n\nfunction isValidLineNumber(lineNumber: number | undefined): boolean {\n return (\n typeof lineNumber === 'number' && lineNumber! > 0 && lineNumber! % 1 === 0\n );\n}\n","import { IacOutputMeta } from '../../../types';\nimport config from '../../../config';\nimport { EOL } from 'os';\nimport { colors, contentPadding } from './utils';\n\nexport function formatShareResultsOutput(iacOutputMeta: IacOutputMeta) {\n return (\n colors.title('Report Complete') +\n EOL +\n EOL +\n contentPadding +\n 'Your test results are available at: ' +\n colors.title(`${config.ROOT}/org/${iacOutputMeta.orgName}/projects`) +\n EOL +\n contentPadding +\n 'under the name: ' +\n colors.title(iacOutputMeta.projectName)\n );\n}\n\nexport const shareResultsTip =\n colors.title('Tip') +\n EOL +\n EOL +\n contentPadding +\n 'New: Share your test results in the Snyk Web UI with the option ' +\n colors.title('--report');\n\nexport const shareCustomRulesDisclaimer =\n contentPadding +\n colors.suggestion(\n 'Please note that your custom rules will not be sent to the platform, and will not be available on the projects page.',\n );\n","import { EOL } from 'os';\nimport { rightPadWithSpaces } from '../../../right-pad';\nimport { icon } from '../../../theme';\nimport { IacOutputMeta } from '../../../types';\nimport { colors } from './utils';\nimport { IacTestCounts, IacTestData } from './types';\n\nconst PAD_LENGTH = 19; // chars to align\nconst INDENT = ' ';\n\nexport function formatIacTestSummary(testData: IacTestData): string {\n const title = colors.title('Test Summary');\n const summarySections: string[] = [title];\n\n if (testData.metadata) {\n summarySections.push(formatTestMetaSection(testData.metadata));\n }\n\n summarySections.push(formatCountsSection(testData.counts));\n\n return summarySections.join(EOL.repeat(2));\n}\n\nfunction formatTestMetaSection(iacMeta: IacOutputMeta): string {\n const metaSectionProperties: [string, string][] = [];\n\n if (iacMeta.orgName) {\n metaSectionProperties.push(['Organization', iacMeta.orgName]);\n }\n\n if (iacMeta.projectName) {\n metaSectionProperties.push(['Project name', iacMeta.projectName]);\n }\n\n const metaSection = metaSectionProperties\n .map(([key, value]) =>\n rightPadWithSpaces(`${INDENT}${key}: ${value}`, PAD_LENGTH),\n )\n .join(EOL);\n\n return metaSection;\n}\n\nfunction formatCountsSection(testCounts: IacTestCounts): string {\n const countsSectionProperties: string[] = [];\n\n countsSectionProperties.push(\n `${colors.success.bold(\n icon.VALID,\n )} Files without issues: ${colors.info.bold(\n `${testCounts.filesWithoutIssues}`,\n )}`,\n );\n\n countsSectionProperties.push(\n `${colors.failure.bold(icon.ISSUE)} Files with issues: ${colors.info.bold(\n `${testCounts.filesWithIssues}`,\n )}`,\n );\n\n countsSectionProperties.push(\n `${INDENT}Ignored issues: ${colors.info.bold(`${testCounts.ignores}`)}`,\n );\n\n countsSectionProperties.push(\n `${INDENT}Total issues: ${colors.info.bold(\n `${testCounts.issues}`,\n )} [ ${colors.severities.critical(\n `${testCounts.issuesBySeverity.critical} critical`,\n )}, ${colors.severities.high(\n `${testCounts.issuesBySeverity.high} high`,\n )}, ${colors.severities.medium(\n `${testCounts.issuesBySeverity.medium} medium`,\n )}, ${colors.severities.low(`${testCounts.issuesBySeverity.low} low`)} ]`,\n );\n\n return countsSectionProperties.join(EOL);\n}\n","import { IaCTestFlags } from '../../../../cli/commands/test/iac/local-execution/types';\nimport { colors } from './utils';\n\n/**\n * Displayed as the title of the test output.\n */\nexport const iacTestTitle = colors.info.bold('Snyk Infrastructure as Code');\n\n/**\n * Progress indication message while files are tested.\n */\nexport const spinnerMessage = colors.info(\n 'Snyk testing Infrastructure as Code configuration issues.',\n);\n\n/**\n * Displayed when a test resolves successfully.\n */\nexport const spinnerSuccessMessage = colors.info('Test completed.');\n\n/**\n * Message for using custom rules.\n */\nexport const customRulesMessage = colors.info(\n 'Using custom rules to generate misconfigurations.',\n);\n\n/**\n * Message for using custom rules.\n */\nexport const customRulesReportMessage = colors.info(\n \"Please note that your custom rules will not be sent to the Snyk platform, and will not be available on the project's page.\",\n);\n\n/**\n * @returns whether or not to include user messages in the output.\n */\nexport function shouldLogUserMessages(\n options: IaCTestFlags,\n iacCliOutputFeatureFlag?: boolean,\n): boolean {\n return !!(\n !options.json &&\n !options.sarif &&\n !options.quiet &&\n iacCliOutputFeatureFlag\n );\n}\n","import chalk, { Chalk } from 'chalk';\nimport { SEVERITY } from '../../../snyk-test/common';\n\ninterface IacOutputColors {\n severities: SeverityColor;\n failure: Chalk;\n success: Chalk;\n info: Chalk;\n title: Chalk;\n suggestion: Chalk;\n}\n\ntype SeverityColor = {\n [severity in SEVERITY]: Chalk;\n};\n\nexport const colors: IacOutputColors = {\n severities: {\n critical: chalk.magenta,\n high: chalk.red,\n medium: chalk.yellow,\n low: chalk.reset,\n },\n failure: chalk.red,\n success: chalk.green,\n info: chalk.reset,\n title: chalk.reset.bold,\n suggestion: chalk.gray,\n};\n\nexport const contentPadding = ' '.repeat(2);\n","export { formatTestMeta } from './format-test-meta';\nexport { summariseVulnerableResults } from './format-vulnerable-result-summary';\nexport { summariseErrorResults } from './format-error-result-summary';\nexport { formatIssues } from './legacy-format-issue';\nexport { formatLegalInstructions } from './legal-license-instructions';\nexport { formatIssuesWithRemediation } from './remediation-based-format-issues';\nexport { summariseReachableVulns } from './format-reachability';\n\nexport {\n formatErrorMonitorOutput,\n formatMonitorOutput,\n} from './format-monitor-response';\n\nexport * from './docker';\n","const uniq = require('lodash.uniq');\nimport chalk from 'chalk';\n\nimport config from '../../lib/config';\nimport { Options, TestOptions, ShowVulnPaths } from '../../lib/types';\nimport { isLocalFolder } from '../../lib/detect';\nimport { parsePackageString as snykModule } from 'snyk-module';\nimport {\n PINNING_SUPPORTED_PACKAGE_MANAGERS,\n SupportedPackageManagers,\n} from '../../lib/package-managers';\nimport {\n GroupedVuln,\n AnnotatedIssue,\n DockerIssue,\n SEVERITY,\n} from '../../lib/snyk-test/legacy';\nimport { formatLegalInstructions } from './legal-license-instructions';\nimport { getReachabilityText } from './format-reachability';\nimport { colorTextBySeverity } from '../../lib/snyk-test/common';\nimport { PATH_SEPARATOR } from '../constants';\n\nexport function formatIssues(\n vuln: GroupedVuln,\n options: Options & TestOptions,\n) {\n const vulnID = vuln.list[0].id;\n const packageManager = options.packageManager!;\n const localPackageTest = isLocalFolder(options.path);\n const uniquePackages = uniq(\n vuln.list.map((i) => {\n if (i.from[1]) {\n return i.from && i.from[1];\n }\n return i.from;\n }),\n ).join(', ');\n\n const vulnOutput = {\n issueHeading: createSeverityBasedIssueHeading({\n severity: vuln.metadata.severity,\n originalSeverity: vuln.originalSeverity,\n type: vuln.metadata.type,\n packageName: vuln.metadata.name,\n isNew: false,\n }),\n introducedThrough: ' Introduced through: ' + uniquePackages,\n description: ' Description: ' + vuln.title,\n info:\n ' Info: ' +\n chalk.underline(config.PUBLIC_VULN_DB_URL + '/vuln/' + vulnID),\n fromPaths: createTruncatedVulnsPathsText(vuln.list, options.showVulnPaths),\n extraInfo: vuln.note ? chalk.bold('\\n Note: ' + vuln.note) : '',\n remediationInfo:\n vuln.metadata.type !== 'license' && localPackageTest\n ? createRemediationText(vuln, packageManager)\n : '',\n fixedIn: options.docker ? createFixedInText(vuln) : '',\n dockerfilePackage: options.docker ? dockerfileInstructionText(vuln) : '',\n legalInstructions: vuln.legalInstructionsArray\n ? chalk.bold('\\n Legal instructions:\\n') +\n ' '.repeat(2) +\n formatLegalInstructions(vuln.legalInstructionsArray, 2)\n : '',\n reachability: vuln.reachability ? createReachabilityInText(vuln) : '',\n };\n\n return (\n `${vulnOutput.issueHeading}\\n` +\n `${vulnOutput.description}\\n` +\n `${vulnOutput.info}\\n` +\n `${vulnOutput.introducedThrough}\\n` +\n vulnOutput.fromPaths +\n // Optional - not always there\n vulnOutput.reachability +\n vulnOutput.remediationInfo +\n vulnOutput.dockerfilePackage +\n vulnOutput.fixedIn +\n vulnOutput.extraInfo +\n vulnOutput.legalInstructions\n );\n}\n\ntype CreateSeverityBasedIssueHeading = {\n severity: SEVERITY;\n originalSeverity?: SEVERITY;\n type: string;\n packageName: string;\n isNew: boolean;\n};\n\nfunction createSeverityBasedIssueHeading({\n severity,\n originalSeverity,\n type,\n packageName,\n isNew,\n}: CreateSeverityBasedIssueHeading) {\n // Example: ✗ Medium severity vulnerability found in xmldom\n const vulnTypeText = type === 'license' ? 'issue' : 'vulnerability';\n\n let originalSeverityStr = '';\n if (originalSeverity && originalSeverity !== severity) {\n originalSeverityStr = ` (originally ${titleCaseText(originalSeverity)})`;\n }\n\n return (\n colorTextBySeverity(\n severity,\n '✗ ' +\n titleCaseText(severity) +\n ` severity${originalSeverityStr} ` +\n vulnTypeText +\n ' found in ' +\n chalk.underline(packageName),\n ) + chalk.bold.magenta(isNew ? ' (new)' : '')\n );\n}\n\nexport function titleCaseText(text) {\n return text[0].toUpperCase() + text.slice(1);\n}\n\nfunction dockerfileInstructionText(vuln) {\n if (vuln.dockerfileInstruction) {\n JSON.stringify(vuln.dockerfileInstruction);\n return `\\n Image layer: '${vuln.dockerfileInstruction}'`;\n }\n\n if (vuln.dockerBaseImage) {\n return `\\n Image layer: Introduced by your base image (${vuln.dockerBaseImage})`;\n }\n\n return '';\n}\nfunction createTruncatedVulnsPathsText(\n vulnList: AnnotatedIssue[],\n show: ShowVulnPaths,\n) {\n if (show === 'none') {\n return '';\n }\n const numberOfPathsToDisplay = show === 'all' ? 1000 : 3;\n const fromPathsArray = vulnList.map((i) => i.from);\n\n const formatedFromPathsArray = fromPathsArray.map((i) => {\n const fromWithoutBaseProject = i.slice(1);\n // If more than one From path\n if (fromWithoutBaseProject.length) {\n return i.slice(1).join(PATH_SEPARATOR);\n }\n // Else issue is in the core package\n return i;\n });\n\n const notShownPathsNumber = fromPathsArray.length - numberOfPathsToDisplay;\n const shouldTruncatePaths = fromPathsArray.length > numberOfPathsToDisplay;\n const truncatedText = `\\n and ${notShownPathsNumber} more...`;\n const formattedPathsText = formatedFromPathsArray\n .slice(0, numberOfPathsToDisplay)\n .join('\\n From: ');\n\n if (fromPathsArray.length > 0) {\n return (\n ' From: ' +\n formattedPathsText +\n (shouldTruncatePaths ? truncatedText : '')\n );\n }\n}\n\nfunction createFixedInText(vuln: GroupedVuln): string {\n if ((vuln as DockerIssue).nearestFixedInVersion) {\n return chalk.bold(\n '\\n Fixed in: ' + (vuln as DockerIssue).nearestFixedInVersion,\n );\n } else if (vuln.fixedIn && vuln.fixedIn.length > 0) {\n return chalk.bold('\\n Fixed in: ' + vuln.fixedIn.join(', '));\n }\n\n return '';\n}\n\nfunction createReachabilityInText(vuln: GroupedVuln): string {\n if (!vuln.reachability) {\n return '';\n }\n const reachabilityText = getReachabilityText(vuln.reachability);\n if (!reachabilityText) {\n return '';\n }\n return `\\n Reachability: ${reachabilityText}`;\n}\n\nfunction createRemediationText(\n vuln: GroupedVuln,\n packageManager: SupportedPackageManagers,\n): string {\n if (\n vuln.fixedIn &&\n PINNING_SUPPORTED_PACKAGE_MANAGERS.includes(packageManager)\n ) {\n const toVersion = vuln.fixedIn.join(' or ');\n const transitive = vuln.list.every((i) => i.from.length > 2);\n const fromVersionArray = vuln.list.map((v) => v.from[1]);\n const fromVersion = fromVersionArray[0];\n if (transitive) {\n return chalk.bold(\n `\\n Remediation:\\n Pin the transitive dependency ${vuln.name} to version ${toVersion}`,\n );\n } else {\n return chalk.bold(\n `\\n Remediation:\\n Upgrade direct dependency ${fromVersion} to ${vuln.name}@${toVersion}`,\n );\n }\n }\n\n if (vuln.isFixable === true) {\n const upgradePathsArray = uniq(\n vuln.list.map((v) => {\n const shouldUpgradeItself = !!v.upgradePath[0];\n const shouldUpgradeDirectDep = !!v.upgradePath[1];\n\n if (shouldUpgradeItself) {\n // If we are testing a library/package like express\n // Then we can suggest they get the latest version\n // Example command: snyk test express@3\n const selfUpgradeInfo =\n v.upgradePath.length > 0\n ? ` (triggers upgrades to ${v.upgradePath.join(PATH_SEPARATOR)})`\n : '';\n const testedPackageName = snykModule(v.upgradePath[0] as string);\n return (\n `You've tested an outdated version of ${testedPackageName[0]}.` +\n +` Upgrade to ${v.upgradePath[0]}${selfUpgradeInfo}`\n );\n }\n if (shouldUpgradeDirectDep) {\n const formattedUpgradePath = v.upgradePath\n .slice(1)\n .join(PATH_SEPARATOR);\n const upgradeTextInfo = v.upgradePath.length\n ? ` (triggers upgrades to ${formattedUpgradePath})`\n : '';\n\n return `Upgrade direct dependency ${v.from[1]} to ${v.upgradePath[1]}${upgradeTextInfo}`;\n }\n\n return 'Some paths have no direct dependency upgrade that can address this issue.';\n }),\n );\n return chalk.bold(\n `\\n Remediation:\\n ${upgradePathsArray.join('\\n ')}`,\n );\n }\n\n if (vuln.fixedIn && vuln.fixedIn.length > 0) {\n return createFixedInText(vuln);\n }\n\n return '';\n}\n","import * as wrap from 'wrap-ansi';\nimport chalk from 'chalk';\n\nimport { LegalInstruction } from '../../lib/snyk-test/legacy';\n\nexport function formatLegalInstructions(\n legalInstructions: LegalInstruction[],\n paddingLength = 4,\n): string {\n const legalContent: string[] = legalInstructions.map((legalData) =>\n wrap(\n chalk.bold(`○ for ${legalData.licenseName}: `) + legalData.legalContent,\n 100,\n )\n .split('\\n')\n .join('\\n' + ' '.repeat(paddingLength)),\n );\n return legalContent.join('\\n' + ' '.repeat(paddingLength));\n}\n","import chalk from 'chalk';\nimport { icon } from '../theme';\nimport config from '../../lib/config';\nimport { TestOptions } from '../../lib/types';\nimport {\n DependencyPins,\n DependencyUpdates,\n GroupedVuln,\n IssueData,\n LegalInstruction,\n PatchRemediation,\n PinRemediation,\n REACHABILITY,\n RemediationChanges,\n SEVERITY,\n UpgradeRemediation,\n} from '../../lib/snyk-test/legacy';\nimport { colorTextBySeverity } from '../../lib/snyk-test/common';\nimport { formatLegalInstructions } from './legal-license-instructions';\nimport {\n formatReachability,\n formatReachablePaths,\n} from './format-reachability';\nimport {\n BasicVulnInfo,\n SampleReachablePaths,\n UpgradesByAffectedPackage,\n} from './types';\nimport { PATH_SEPARATOR } from '../constants';\nimport { getSeverityValue } from './get-severity-value';\n\n// How many reachable paths to show in the output\nconst MAX_REACHABLE_PATHS = 2;\n\nexport function formatIssuesWithRemediation(\n vulns: GroupedVuln[],\n remediationInfo: RemediationChanges,\n options: TestOptions,\n): string[] {\n const basicVulnInfo: {\n [name: string]: BasicVulnInfo;\n } = {};\n\n const basicLicenseInfo: {\n [name: string]: BasicVulnInfo;\n } = {};\n for (const vuln of vulns) {\n const allReachablePaths: SampleReachablePaths = { pathCount: 0, paths: [] };\n for (const issue of vuln.list) {\n const issueReachablePaths = issue.reachablePaths?.paths || [];\n for (const functionReachablePaths of issueReachablePaths) {\n allReachablePaths.paths = allReachablePaths.paths.concat(\n functionReachablePaths.callPaths,\n );\n allReachablePaths.pathCount += functionReachablePaths.callPaths.length;\n }\n }\n const vulnData = {\n title: vuln.title,\n severity: vuln.severity,\n originalSeverity: vuln.originalSeverity,\n isNew: vuln.isNew,\n name: vuln.name,\n type: vuln.metadata.type,\n version: vuln.version,\n fixedIn: vuln.fixedIn,\n note: vuln.note,\n legalInstructions: vuln.legalInstructionsArray,\n paths: vuln.list.map((v) => v.from),\n reachability: vuln.reachability,\n sampleReachablePaths: allReachablePaths,\n };\n\n if (vulnData.type === 'license') {\n basicLicenseInfo[vuln.metadata.id] = vulnData;\n } else {\n basicVulnInfo[vuln.metadata.id] = vulnData;\n }\n }\n\n const results = [''];\n\n let upgradeTextArray: string[];\n if (remediationInfo.pin && Object.keys(remediationInfo.pin).length) {\n const upgradesByAffected: UpgradesByAffectedPackage = {};\n for (const topLevelPkg of Object.keys(remediationInfo.upgrade)) {\n for (const targetPkgStr of remediationInfo.upgrade[topLevelPkg]\n .upgrades) {\n if (!upgradesByAffected[targetPkgStr]) {\n upgradesByAffected[targetPkgStr] = [];\n }\n upgradesByAffected[targetPkgStr].push({\n name: topLevelPkg,\n version: remediationInfo.upgrade[topLevelPkg].upgradeTo,\n });\n }\n }\n upgradeTextArray = constructPinText(\n remediationInfo.pin,\n upgradesByAffected,\n basicVulnInfo,\n options,\n );\n const allVulnIds = new Set();\n Object.keys(remediationInfo.pin).forEach((name) =>\n remediationInfo.pin[name].vulns.forEach((vid) => allVulnIds.add(vid)),\n );\n remediationInfo.unresolved = remediationInfo.unresolved.filter(\n (issue) => !allVulnIds.has(issue.id),\n );\n } else {\n upgradeTextArray = constructUpgradesText(\n remediationInfo.upgrade,\n basicVulnInfo,\n options,\n );\n }\n if (upgradeTextArray.length > 0) {\n results.push(upgradeTextArray.join('\\n'));\n }\n\n const patchedTextArray = constructPatchesText(\n remediationInfo.patch,\n basicVulnInfo,\n options,\n );\n\n if (patchedTextArray.length > 0) {\n results.push(patchedTextArray.join('\\n'));\n }\n\n const unfixableIssuesTextArray = constructUnfixableText(\n remediationInfo.unresolved,\n basicVulnInfo,\n options,\n );\n\n if (unfixableIssuesTextArray.length > 0) {\n results.push(unfixableIssuesTextArray.join('\\n'));\n }\n\n const licenseIssuesTextArray = constructLicenseText(\n basicLicenseInfo,\n options,\n );\n\n if (licenseIssuesTextArray.length > 0) {\n results.push(licenseIssuesTextArray.join('\\n'));\n }\n\n return results;\n}\n\nfunction constructLicenseText(\n basicLicenseInfo: {\n [name: string]: BasicVulnInfo;\n },\n testOptions: TestOptions,\n): string[] {\n if (!(Object.keys(basicLicenseInfo).length > 0)) {\n return [];\n }\n\n const licenseTextArray = [chalk.bold.green('\\nLicense issues:')];\n\n for (const id of Object.keys(basicLicenseInfo)) {\n const licenseText = formatIssue(\n id,\n basicLicenseInfo[id].title,\n basicLicenseInfo[id].severity,\n basicLicenseInfo[id].isNew,\n `${basicLicenseInfo[id].name}@${basicLicenseInfo[id].version}`,\n basicLicenseInfo[id].paths,\n testOptions,\n basicLicenseInfo[id].note,\n undefined, // We can never override license rules, so no originalSeverity here\n basicLicenseInfo[id].legalInstructions,\n );\n licenseTextArray.push('\\n' + licenseText);\n }\n return licenseTextArray;\n}\n\nfunction constructPatchesText(\n patches: {\n [name: string]: PatchRemediation;\n },\n basicVulnInfo: {\n [name: string]: BasicVulnInfo;\n },\n testOptions: TestOptions,\n): string[] {\n if (!(Object.keys(patches).length > 0)) {\n return [];\n }\n const patchedTextArray = [chalk.bold.green('\\nPatchable issues:')];\n for (const id of Object.keys(patches)) {\n if (!basicVulnInfo[id]) {\n continue;\n }\n if (basicVulnInfo[id].type === 'license') {\n continue;\n }\n\n // todo: add vulnToPatch package name\n const packageAtVersion = `${basicVulnInfo[id].name}@${basicVulnInfo[id].version}`;\n const patchedText = `\\n Patch available for ${chalk.bold.whiteBright(\n packageAtVersion,\n )}\\n`;\n const thisPatchFixes = formatIssue(\n id,\n basicVulnInfo[id].title,\n basicVulnInfo[id].severity,\n basicVulnInfo[id].isNew,\n `${basicVulnInfo[id].name}@${basicVulnInfo[id].version}`,\n basicVulnInfo[id].paths,\n testOptions,\n basicVulnInfo[id].note,\n basicVulnInfo[id].originalSeverity,\n );\n patchedTextArray.push(patchedText + thisPatchFixes);\n }\n\n return patchedTextArray;\n}\n\nfunction thisUpgradeFixes(\n vulnIds: string[],\n basicVulnInfo: Record<string, BasicVulnInfo>,\n testOptions: TestOptions,\n) {\n return vulnIds\n .filter((id) => basicVulnInfo[id]) // basicVulnInfo only contains issues with the specified severity levels\n .sort(\n (a, b) =>\n getSeverityValue(basicVulnInfo[a].severity) -\n getSeverityValue(basicVulnInfo[b].severity),\n )\n .filter((id) => basicVulnInfo[id].type !== 'license')\n .map((id) =>\n formatIssue(\n id,\n basicVulnInfo[id].title,\n basicVulnInfo[id].severity,\n basicVulnInfo[id].isNew,\n `${basicVulnInfo[id].name}@${basicVulnInfo[id].version}`,\n basicVulnInfo[id].paths,\n testOptions,\n basicVulnInfo[id].note,\n basicVulnInfo[id].originalSeverity,\n [],\n basicVulnInfo[id].reachability,\n basicVulnInfo[id].sampleReachablePaths,\n ),\n )\n .join('\\n');\n}\n\nfunction processUpgrades(\n sink: string[],\n upgradesByDep: DependencyUpdates | DependencyPins,\n deps: string[],\n basicVulnInfo: Record<string, BasicVulnInfo>,\n testOptions: TestOptions,\n) {\n for (const dep of deps) {\n const data = upgradesByDep[dep];\n const upgradeDepTo = data.upgradeTo;\n const vulnIds =\n (data as UpgradeRemediation).vulns || (data as PinRemediation).vulns;\n const upgradeText = `\\n Upgrade ${chalk.bold.whiteBright(\n dep,\n )} to ${chalk.bold.whiteBright(upgradeDepTo)} to fix\\n`;\n sink.push(\n upgradeText + thisUpgradeFixes(vulnIds, basicVulnInfo, testOptions),\n );\n }\n}\n\nfunction constructUpgradesText(\n upgrades: DependencyUpdates,\n basicVulnInfo: {\n [name: string]: BasicVulnInfo;\n },\n testOptions: TestOptions,\n): string[] {\n if (!(Object.keys(upgrades).length > 0)) {\n return [];\n }\n\n const upgradeTextArray = [chalk.bold.green('\\nIssues to fix by upgrading:')];\n processUpgrades(\n upgradeTextArray,\n upgrades,\n Object.keys(upgrades),\n basicVulnInfo,\n testOptions,\n );\n return upgradeTextArray;\n}\n\nfunction constructPinText(\n pins: DependencyPins,\n upgradesByAffected: UpgradesByAffectedPackage, // classical \"remediation via top-level dep\" upgrades\n basicVulnInfo: Record<string, BasicVulnInfo>,\n testOptions: TestOptions,\n): string[] {\n if (!Object.keys(pins).length) {\n return [];\n }\n\n const upgradeTextArray: string[] = [];\n upgradeTextArray.push(\n chalk.bold.green('\\nIssues to fix by upgrading dependencies:'),\n );\n\n // First, direct upgrades\n\n const upgradeables = Object.keys(pins).filter(\n (name) => !pins[name].isTransitive,\n );\n if (upgradeables.length) {\n processUpgrades(\n upgradeTextArray,\n pins,\n upgradeables,\n basicVulnInfo,\n testOptions,\n );\n }\n\n // Second, pins\n const pinables = Object.keys(pins).filter((name) => pins[name].isTransitive);\n\n if (pinables.length) {\n for (const pkgName of pinables) {\n const data = pins[pkgName];\n const vulnIds = data.vulns;\n const upgradeDepTo = data.upgradeTo;\n const upgradeText = `\\n Pin ${chalk.bold.whiteBright(\n pkgName,\n )} to ${chalk.bold.whiteBright(upgradeDepTo)} to fix`;\n upgradeTextArray.push(upgradeText);\n upgradeTextArray.push(\n thisUpgradeFixes(vulnIds, basicVulnInfo, testOptions),\n );\n\n // Finally, if we have some upgrade paths that fix the same issues, suggest them as well.\n const topLevelUpgradesAlreadySuggested = new Set();\n for (const vid of vulnIds) {\n for (const topLevelPkg of upgradesByAffected[\n pkgName + '@' + basicVulnInfo[vid].version\n ] || []) {\n const setKey = `${topLevelPkg.name}\\n${topLevelPkg.version}`;\n if (!topLevelUpgradesAlreadySuggested.has(setKey)) {\n topLevelUpgradesAlreadySuggested.add(setKey);\n upgradeTextArray.push(\n ' The issues above can also be fixed by upgrading top-level dependency ' +\n `${topLevelPkg.name} to ${topLevelPkg.version}`,\n );\n }\n }\n }\n }\n }\n\n return upgradeTextArray;\n}\n\nfunction constructUnfixableText(\n unresolved: IssueData[],\n basicVulnInfo: Record<string, BasicVulnInfo>,\n testOptions: TestOptions,\n) {\n if (!(unresolved.length > 0)) {\n return [];\n }\n const unfixableIssuesTextArray = [\n chalk.bold.white('\\nIssues with no direct upgrade or patch:'),\n ];\n for (const issue of unresolved) {\n const issueInfo = basicVulnInfo[issue.id];\n if (!issueInfo) {\n // basicVulnInfo only contains issues with the specified severity levels\n continue;\n }\n\n const extraInfo =\n issue.fixedIn && issue.fixedIn.length\n ? `\\n This issue was fixed in versions: ${chalk.bold(\n issue.fixedIn.join(', '),\n )}`\n : '\\n No upgrade or patch available';\n unfixableIssuesTextArray.push(\n formatIssue(\n issue.id,\n issue.title,\n issue.severity,\n issue.isNew,\n `${issue.packageName}@${issue.version}`,\n issueInfo.paths,\n testOptions,\n issueInfo.note,\n issueInfo.originalSeverity,\n [],\n issue.reachability,\n ) + `${extraInfo}`,\n );\n }\n\n if (unfixableIssuesTextArray.length === 1) {\n // seems we still only have\n // the initial section title, so nothing to return\n return [];\n }\n\n return unfixableIssuesTextArray;\n}\n\nexport function printPath(path: string[], slice = 1) {\n return path.slice(slice).join(PATH_SEPARATOR);\n}\n\nexport function formatIssue(\n id: string,\n title: string,\n severity: SEVERITY,\n isNew: boolean,\n vulnerableModule: string,\n paths: string[][],\n testOptions: TestOptions,\n note: string | false,\n originalSeverity?: SEVERITY,\n legalInstructions?: LegalInstruction[],\n reachability?: REACHABILITY,\n sampleReachablePaths?: SampleReachablePaths,\n): string {\n const newBadge = isNew ? ' (new)' : '';\n const name = vulnerableModule ? ` in ${chalk.bold(vulnerableModule)}` : '';\n let legalLicenseInstructionsText;\n if (legalInstructions) {\n legalLicenseInstructionsText = formatLegalInstructions(legalInstructions);\n }\n let reachabilityText = '';\n if (reachability) {\n reachabilityText = formatReachability(reachability);\n }\n\n let introducedBy = '';\n\n if (\n testOptions.showVulnPaths === 'some' &&\n paths &&\n paths.find((p) => p.length > 1)\n ) {\n // In this mode, we show only one path by default, for compactness\n const pathStr = printPath(paths[0]);\n introducedBy =\n paths.length === 1\n ? `\\n introduced by ${pathStr}`\n : `\\n introduced by ${pathStr} and ${chalk.cyanBright(\n '' + (paths.length - 1),\n )} other path(s)`;\n } else if (testOptions.showVulnPaths === 'all' && paths) {\n introducedBy =\n '\\n introduced by:' +\n paths\n .slice(0, 1000)\n .map((p) => '\\n ' + printPath(p))\n .join('');\n if (paths.length > 1000) {\n introducedBy += `\\n and ${chalk.cyanBright(\n '' + (paths.length - 1),\n )} other path(s)`;\n }\n }\n\n const reachableVia = formatReachablePaths(\n sampleReachablePaths,\n MAX_REACHABLE_PATHS,\n reachablePathsTemplate,\n );\n\n let originalSeverityStr = '';\n if (originalSeverity && originalSeverity !== severity) {\n originalSeverityStr = ` (originally ${titleCaseText(originalSeverity)})`;\n }\n\n return (\n colorTextBySeverity(\n severity,\n ` ${icon.ISSUE} ${chalk.bold(title)}${newBadge} [${titleCaseText(\n severity,\n )} Severity${originalSeverityStr}]`,\n ) +\n reachabilityText +\n `[${config.PUBLIC_VULN_DB_URL}/vuln/${id}]` +\n name +\n reachableVia +\n introducedBy +\n (legalLicenseInstructionsText\n ? `${chalk.bold(\n '\\n Legal instructions',\n )}:\\n ${legalLicenseInstructionsText}`\n : '') +\n (note ? `${chalk.bold('\\n Note')}:\\n ${note}` : '')\n );\n}\n\nfunction titleCaseText(text) {\n return text[0].toUpperCase() + text.slice(1);\n}\n\nfunction reachablePathsTemplate(\n samplePaths: string[],\n extraPathsCount: number,\n): string {\n if (samplePaths.length === 0 && extraPathsCount === 0) {\n return '';\n }\n if (samplePaths.length === 0) {\n return `\\n reachable via at least ${extraPathsCount} paths`;\n }\n let reachableVia = '\\n reachable via:\\n';\n for (const p of samplePaths) {\n reachableVia += ` ${p}\\n`;\n }\n if (extraPathsCount > 0) {\n reachableVia += ` and at least ${chalk.cyanBright(\n '' + extraPathsCount,\n )} other path(s)`;\n }\n return reachableVia;\n}\n","import * as sarif from 'sarif';\nimport { TestResult } from '../snyk-test/legacy';\nimport { SEVERITY } from '../snyk-test/legacy';\nconst upperFirst = require('lodash.upperfirst');\n\nexport function createSarifOutputForContainers(\n testResults: TestResult[],\n): sarif.Log {\n const sarifRes: sarif.Log = {\n version: '2.1.0',\n runs: [],\n };\n\n testResults.forEach((testResult) => {\n sarifRes.runs.push({\n tool: getTool(testResult),\n results: getResults(testResult),\n });\n });\n\n return sarifRes;\n}\n\nexport function getIssueLevel(\n severity: SEVERITY | 'none',\n): sarif.ReportingConfiguration.level {\n return severity === SEVERITY.HIGH || severity === SEVERITY.CRITICAL\n ? 'error'\n : 'warning';\n}\n\nexport function getTool(testResult): sarif.Tool {\n const tool: sarif.Tool = {\n driver: {\n name: 'Snyk Container',\n rules: [],\n },\n };\n\n if (!testResult.vulnerabilities) {\n return tool;\n }\n\n const pushedIds = {};\n tool.driver.rules = testResult.vulnerabilities\n .map((vuln) => {\n if (pushedIds[vuln.id]) {\n return;\n }\n const level = getIssueLevel(vuln.severity);\n const cve = vuln['identifiers']['CVE'][0];\n pushedIds[vuln.id] = true;\n return {\n id: vuln.id,\n shortDescription: {\n text: `${upperFirst(vuln.severity)} severity - ${\n vuln.title\n } vulnerability in ${vuln.packageName}`,\n },\n fullDescription: {\n text: cve\n ? `(${cve}) ${vuln.name}@${vuln.version}`\n : `${vuln.name}@${vuln.version}`,\n },\n help: {\n text: '',\n markdown: vuln.description,\n },\n defaultConfiguration: {\n level: level,\n },\n properties: {\n tags: ['security', ...vuln.identifiers.CWE],\n },\n };\n })\n .filter(Boolean);\n return tool;\n}\n\nexport function getResults(testResult): sarif.Result[] {\n const results: sarif.Result[] = [];\n\n if (!testResult.vulnerabilities) {\n return results;\n }\n testResult.vulnerabilities.forEach((vuln) => {\n results.push({\n ruleId: vuln.id,\n message: {\n text: `This file introduces a vulnerable ${vuln.packageName} package with a ${vuln.severity} severity vulnerability.`,\n },\n locations: [\n {\n physicalLocation: {\n artifactLocation: {\n uri: testResult.displayTargetFile,\n },\n region: {\n startLine: vuln.lineNumber || 1,\n },\n },\n },\n ],\n });\n });\n return results;\n}\n","import { isMultiProjectScan } from '../is-multi-project-scan';\n\nexport function showAllProjectsTip(\n packageManager,\n options,\n foundProjectCount,\n): string {\n if (\n packageManager === 'gradle' ||\n !foundProjectCount ||\n isMultiProjectScan(options)\n ) {\n return '';\n }\n return (\n `Tip: Detected multiple supported manifests (${foundProjectCount}), ` +\n 'use --all-projects to scan all of them at once.'\n );\n}\n","import { isMultiProjectScan } from '../is-multi-project-scan';\n\nexport function showGradleSubProjectsTip(\n packageManager,\n options,\n foundProjectCount,\n): string {\n if (\n packageManager !== 'gradle' ||\n !foundProjectCount ||\n isMultiProjectScan(options) ||\n options.allSubProjects\n ) {\n return '';\n }\n\n return (\n `Tip: This project has multiple sub-projects (${foundProjectCount}), ` +\n 'use --all-sub-projects flag to scan all sub-projects.'\n );\n}\n","import { SupportedPackageManagers } from '../package-managers';\nimport { Options, SupportedProjectTypes, TestOptions } from '../types';\n\nimport { showAllProjectsTip } from './show-all-projects-tip';\nimport { showGradleSubProjectsTip } from './show-all-sub-projects-tip';\n\nexport function showMultiScanTip(\n projectType: SupportedProjectTypes | SupportedPackageManagers,\n options: Options & TestOptions,\n foundProjectCount?: number,\n): string {\n const gradleSubProjectsTip = showGradleSubProjectsTip(\n projectType,\n options,\n foundProjectCount,\n );\n if (gradleSubProjectsTip) {\n return gradleSubProjectsTip;\n }\n const allProjectsTip = showAllProjectsTip(\n projectType,\n options,\n foundProjectCount,\n );\n if (allProjectsTip) {\n return allProjectsTip;\n }\n return '';\n}\n","import * as fs from 'fs';\nimport * as path from 'path';\n\nexport function getFileContents(\n root: string,\n fileName: string,\n): {\n content: string;\n fileName: string;\n} {\n const fullPath = path.resolve(root, fileName);\n if (!fs.existsSync(fullPath)) {\n throw new Error(\n 'Manifest ' + fileName + ' not found at location: ' + fileName,\n );\n }\n const content = fs.readFileSync(fullPath, 'utf-8');\n return {\n content,\n fileName,\n };\n}\n","import { ParserFileType } from '@snyk/cloud-config-parser';\n\nexport type IacProjectTypes =\n | 'k8sconfig'\n | 'terraformconfig'\n | 'cloudformationconfig'\n | 'armconfig'\n | 'customconfig'\n | 'multiiacconfig';\nexport type IacFileTypes = ParserFileType | 'tf' | 'tfvars';\n\nexport enum IacProjectType {\n K8S = 'k8sconfig',\n TERRAFORM = 'terraformconfig',\n CLOUDFORMATION = 'cloudformationconfig',\n ARM = 'armconfig',\n CUSTOM = 'customconfig',\n MULTI_IAC = 'multiiacconfig',\n}\n\nexport const TEST_SUPPORTED_IAC_PROJECTS: IacProjectTypes[] = [\n IacProjectType.K8S,\n IacProjectType.TERRAFORM,\n IacProjectType.CLOUDFORMATION,\n IacProjectType.ARM,\n IacProjectType.MULTI_IAC,\n IacProjectType.CUSTOM,\n];\n\nexport const iacRemediationTypes: { [k in IacProjectTypes]?: string } = {\n armconfig: 'arm',\n cloudformationconfig: 'cloudformation',\n k8sconfig: 'kubernetes',\n terraformconfig: 'terraform',\n};\n","import { statSync } from 'fs';\nimport { dirname } from 'path';\nimport * as childProcess from 'child_process';\n\nexport function getRepositoryRootForPath(p: string) {\n return getRepositoryRoot(getWorkingDirectoryForPath(p));\n}\n\nexport function getRepositoryRoot(cwd?: string) {\n const proc = childProcess.spawnSync('git', ['rev-parse', '--show-toplevel'], {\n cwd,\n });\n if (proc.status !== 0) {\n throw new Error();\n }\n return proc.stdout.toString().trim();\n}\n\nexport function getWorkingDirectoryForPath(p: string) {\n if (statSync(p).isDirectory()) {\n return p;\n }\n return dirname(p);\n}\n","import { Options, TestOptions, MonitorOptions, PolicyOptions } from './types';\n\nexport function isMultiProjectScan(\n options: Partial<Options & TestOptions & MonitorOptions & PolicyOptions>,\n): boolean {\n return !!(options.allProjects || options.yarnWorkspaces);\n}\n","const debug = require('debug')('snyk-json');\n\n/**\n * Attempt to json-stringify an object which is potentially very large and might exceed the string limit.\n * If it does exceed the string limit, try again without pretty-print to hopefully come out below the string limit.\n * @param obj the object from which you want to get a JSON string\n */\nexport function jsonStringifyLargeObject(obj: any): string {\n let res = '';\n try {\n // first try pretty-print\n res = JSON.stringify(obj, null, 2);\n return res;\n } catch (err) {\n // if that doesn't work, try non-pretty print\n debug('JSON.stringify failed - trying again without pretty print', err);\n res = JSON.stringify(obj);\n return res;\n }\n}\n","const merge = require('lodash.merge');\nimport * as Debug from 'debug';\nimport { legacyPlugin as pluginApi } from '@snyk/cli-interface';\n\nconst debug = Debug('snyk-module-info');\n\nexport function ModuleInfo(plugin, policy) {\n return {\n async inspect(\n root,\n targetFile,\n options,\n ): Promise<pluginApi.SinglePackageResult | pluginApi.MultiProjectResult> {\n const pluginOptions = merge(\n {\n args: options._doubleDashArgs,\n },\n options,\n );\n\n debug('calling plugin inspect()', { root, targetFile, pluginOptions });\n const info = await plugin.inspect(root, targetFile, pluginOptions);\n debug('plugin inspect() done');\n\n // attach policy if not provided by plugin\n if (policy && !info.package.policy) {\n info.package.policy = policy.toString();\n }\n\n return info;\n },\n };\n}\n","import { DepTree } from '../types';\n\nexport function countTotalDependenciesInTree(depTree: DepTree): number {\n let count = 0;\n if (depTree.dependencies) {\n for (const name of Object.keys(depTree.dependencies)) {\n const dep = depTree.dependencies[name];\n if (dep) {\n count += 1 + countTotalDependenciesInTree(dep);\n }\n }\n }\n return count;\n}\n","/**\n * This is to count the number of \"contributing\" developers using Snyk on a given repo.\n * \"Contributing\" is defined as having contributed a commit in the last 90 days.\n * This is use only on the `snyk monitor` command as that is used to monitor a project's dependencies in an\n * on-going manner.\n * It collects the email of a git user and the most recent commit timestamp (both per the `git log`\n * output) and can be disabled by config (see https://snyk.io/policies/tracking-and-analytics/).\n */\nimport { exec } from 'child_process';\nimport { Contributor } from '../types';\n\nexport const SERIOUS_DELIMITER = '_SNYK_SEPARATOR_';\nexport const CONTRIBUTING_DEVELOPER_PERIOD_DAYS = 90;\n// Limit the number of commits returned from `git log` command to stay within maxBuffer limit\nexport const MAX_COMMITS_IN_GIT_LOG = 500;\n\nexport async function getContributors(\n { endDate, periodDays, repoPath } = {\n endDate: new Date(),\n periodDays: CONTRIBUTING_DEVELOPER_PERIOD_DAYS,\n repoPath: process.cwd(),\n },\n): Promise<Contributor[]> {\n const timestampStartOfContributingDeveloperPeriod = getTimestampStartOfContributingDevTimeframe(\n endDate,\n periodDays,\n );\n const gitLogResults = await runGitLog(\n timestampStartOfContributingDeveloperPeriod,\n Math.floor(endDate.getTime() / 1000),\n repoPath,\n execShell,\n );\n const stats: GitRepoCommitStats = parseGitLog(gitLogResults);\n return stats.getRepoContributors();\n}\n\nexport class GitCommitInfo {\n authorEmail: string;\n commitTimestamp: string; // use ISO 8601 format\n\n constructor(authorEmail: string, commitTimestamp: string) {\n this.authorEmail = authorEmail;\n this.commitTimestamp = commitTimestamp;\n }\n}\n\nexport class GitRepoCommitStats {\n commitInfos: GitCommitInfo[];\n\n constructor(commitInfos: GitCommitInfo[]) {\n this.commitInfos = commitInfos;\n }\n\n public static empty(): GitRepoCommitStats {\n return new GitRepoCommitStats([]);\n }\n\n public addCommitInfo(info: GitCommitInfo): void {\n this.commitInfos.push(info);\n }\n\n public getUniqueAuthorsCount(): number {\n const uniqueAuthorEmails = this.getUniqueAuthorEmails();\n return uniqueAuthorEmails.size;\n }\n\n public getCommitsCount(): number {\n return this.commitInfos.length;\n }\n\n public getUniqueAuthorEmails(): Set<string> {\n const allCommitAuthorHashedEmails: string[] = this.commitInfos.map(\n (c) => c.authorEmail,\n );\n const uniqueAuthorEmails: Set<string> = new Set(\n allCommitAuthorHashedEmails,\n );\n return uniqueAuthorEmails;\n }\n\n public getRepoContributors(): Contributor[] {\n const uniqueAuthorEmails = this.getUniqueAuthorEmails();\n const contributors: Contributor[] = [];\n for (const nextUniqueAuthorEmail of uniqueAuthorEmails) {\n const latestCommitTimestamp = this.getMostRecentCommitTimestamp(\n nextUniqueAuthorEmail,\n );\n contributors.push({\n email: nextUniqueAuthorEmail,\n lastCommitDate: latestCommitTimestamp,\n });\n }\n return contributors;\n }\n\n public getMostRecentCommitTimestamp(authorHashedEmail: string): string {\n for (const nextGI of this.commitInfos) {\n if (nextGI.authorEmail === authorHashedEmail) {\n return nextGI.commitTimestamp;\n }\n }\n return '';\n }\n}\n\nexport function parseGitLogLine(logLine: string): GitCommitInfo {\n const lineComponents = logLine.split(SERIOUS_DELIMITER);\n const authorEmail = lineComponents[2];\n const commitTimestamp = lineComponents[3];\n const commitInfo = new GitCommitInfo(authorEmail, commitTimestamp);\n return commitInfo;\n}\n\nexport function parseGitLog(gitLog: string): GitRepoCommitStats {\n if (gitLog.trim() === '') {\n return GitRepoCommitStats.empty();\n }\n const logLines = separateLines(gitLog);\n const logLineInfos: GitCommitInfo[] = logLines.map(parseGitLogLine);\n const stats: GitRepoCommitStats = new GitRepoCommitStats(logLineInfos);\n return stats;\n}\n\n/**\n * @returns time stamp in seconds-since-epoch of 90 days ago since 90 days is the \"contributing devs\" timeframe\n */\nexport function getTimestampStartOfContributingDevTimeframe(\n dNow: Date,\n timespanInDays: number = CONTRIBUTING_DEVELOPER_PERIOD_DAYS,\n): number {\n const nowUtcEpocMS = dNow.getTime();\n const nowUtcEpocS = Math.floor(nowUtcEpocMS / 1000);\n const ONE_DAY_IN_SECONDS = 86400;\n const lookbackTimespanSeconds = timespanInDays * ONE_DAY_IN_SECONDS;\n const startOfPeriodEpochSeconds = nowUtcEpocS - lookbackTimespanSeconds;\n return startOfPeriodEpochSeconds;\n}\n\nexport async function runGitLog(\n timestampEpochSecondsStartOfPeriod: number,\n timestampEpochSecondsEndOfPeriod: number,\n repoPath: string,\n fnShellout: (cmd: string, workingDirectory: string) => Promise<string>,\n): Promise<string> {\n try {\n const gitLogCommand = `git --no-pager log --pretty=tformat:\"%H${SERIOUS_DELIMITER}%an${SERIOUS_DELIMITER}%ae${SERIOUS_DELIMITER}%aI\" --after=\"${timestampEpochSecondsStartOfPeriod}\" --until=\"${timestampEpochSecondsEndOfPeriod}\" --max-count=${MAX_COMMITS_IN_GIT_LOG}`;\n const gitLogStdout: string = await fnShellout(gitLogCommand, repoPath);\n return gitLogStdout;\n } catch {\n return '';\n }\n}\n\nexport function separateLines(inputText: string): string[] {\n const linuxStyleNewLine = '\\n';\n const windowsStyleNewLine = '\\r\\n';\n const reg = new RegExp(`${linuxStyleNewLine}|${windowsStyleNewLine}`);\n const lines = inputText.trim().split(reg);\n return lines;\n}\n\nexport function execShell(\n cmd: string,\n workingDirectory: string,\n): Promise<string> {\n const options = {\n cwd: workingDirectory,\n };\n\n return new Promise((resolve, reject) => {\n exec(cmd, options, (error, stdout, stderr) => {\n if (error) {\n const exitCode = error.code;\n\n const e = new ShellOutError(\n error.message,\n exitCode,\n stdout,\n stderr,\n error,\n );\n reject(e);\n } else {\n resolve(stdout ? stdout : stderr);\n }\n });\n });\n}\n\nexport class ShellOutError extends Error {\n public innerError: Error | undefined;\n public exitCode: number | undefined;\n public stdout: string | undefined;\n public stderr: string | undefined;\n\n constructor(\n message: string,\n exitCode: number | undefined,\n stdout: string,\n stderr: string,\n innerError: Error | undefined,\n ) {\n super(message);\n this.exitCode = exitCode;\n this.stdout = stdout;\n this.stderr = stderr;\n this.innerError = innerError;\n }\n}\n","import { DepTree } from '../types';\n\nexport function dropEmptyDeps(depTree: DepTree) {\n if (depTree.dependencies) {\n const keys = Object.keys(depTree.dependencies);\n if (keys.length === 0) {\n delete depTree.dependencies;\n } else {\n for (const k of keys) {\n dropEmptyDeps(depTree.dependencies[k]);\n }\n }\n }\n return depTree;\n}\n","import { DepTree } from '../types';\n\ninterface FilteredDepTree {\n filteredDepTree: DepTree;\n missingDeps: string[];\n}\n\nexport function filterOutMissingDeps(depTree: DepTree): FilteredDepTree {\n const filteredDeps = {};\n const missingDeps: string[] = [];\n\n if (!depTree.dependencies) {\n return {\n filteredDepTree: depTree,\n missingDeps,\n };\n }\n\n for (const depKey of Object.keys(depTree.dependencies)) {\n const dep = depTree.dependencies[depKey];\n if (\n (dep as any).missingLockFileEntry ||\n ((dep as any).labels && (dep as any).labels.missingLockFileEntry)\n ) {\n // TODO(kyegupov): add field to the type\n missingDeps.push(`${dep.name}@${dep.version}`);\n } else {\n filteredDeps[depKey] = dep;\n }\n }\n const filteredDepTree: DepTree = {\n ...depTree,\n dependencies: filteredDeps,\n };\n\n return {\n filteredDepTree,\n missingDeps,\n };\n}\n","import * as Debug from 'debug';\nimport * as path from 'path';\nimport * as depGraphLib from '@snyk/dep-graph';\nimport * as snyk from '..';\nimport { apiOrOAuthTokenExists, getAuthHeader } from '../api-token';\nimport { makeRequest } from '../request';\nimport config from '../config';\nimport * as os from 'os';\nconst get = require('lodash.get');\nimport { isCI } from '../is-ci';\nimport * as analytics from '../analytics';\nimport {\n DepTree,\n MonitorMeta,\n MonitorResult,\n PolicyOptions,\n MonitorOptions,\n Options,\n Contributor,\n ProjectAttributes,\n Tag,\n} from '../types';\nimport * as projectMetadata from '../project-metadata';\nimport {\n MonitorError,\n ConnectionTimeoutError,\n FailedToRunTestError,\n errorMessageWithRetry,\n} from '../errors';\nimport { pruneGraph } from '../prune';\nimport { GRAPH_SUPPORTED_PACKAGE_MANAGERS } from '../package-managers';\nimport { countTotalDependenciesInTree } from './count-total-deps-in-tree';\nimport { filterOutMissingDeps } from './filter-out-missing-deps';\nimport { dropEmptyDeps } from './drop-empty-deps';\nimport { pruneTree } from './prune-dep-tree';\nimport { findAndLoadPolicy } from '../policy';\nimport { PluginMetadata } from '@snyk/cli-interface/legacy/plugin';\nimport {\n CallGraph,\n CallGraphError,\n ScannedProject,\n} from '@snyk/cli-interface/legacy/common';\nimport { isGitTarget } from '../project-metadata/types';\nimport { serializeCallGraphWithMetrics } from '../reachable-vulns';\nimport {\n getNameDepTree,\n getNameDepGraph,\n getProjectName,\n getTargetFile,\n} from './utils';\nimport { countPathsToGraphRoot } from '../utils';\nimport * as alerts from '../alerts';\nimport { abridgeErrorMessage } from '../error-format';\n\nconst debug = Debug('snyk');\n\nconst ANALYTICS_PAYLOAD_MAX_LENGTH = 1024;\n\ninterface MonitorBody {\n meta: Meta;\n policy: string;\n package?: DepTree;\n callGraph?: CallGraph;\n target: {};\n targetFileRelativePath: string;\n targetFile: string;\n contributors?: Contributor[];\n}\n\ninterface Meta {\n method?: string;\n hostname: string;\n id: string;\n ci: boolean;\n pid: number;\n node: string;\n master: boolean;\n name: string;\n version: string;\n org?: string;\n pluginName: string;\n pluginRuntime: string;\n dockerImageId?: string;\n dockerBaseImage?: string;\n projectName: string;\n}\n\nexport async function monitor(\n root: string,\n meta: MonitorMeta,\n scannedProject: ScannedProject,\n options: Options & MonitorOptions & PolicyOptions,\n pluginMeta: PluginMetadata,\n targetFileRelativePath?: string,\n contributors?: Contributor[],\n projectAttributes?: ProjectAttributes,\n tags?: Tag[],\n): Promise<MonitorResult> {\n apiOrOAuthTokenExists();\n\n const packageManager = meta.packageManager;\n analytics.add('packageManager', packageManager);\n analytics.add('isDocker', !!meta.isDocker);\n\n if (scannedProject.depGraph) {\n return await monitorDepGraph(\n root,\n meta,\n scannedProject,\n pluginMeta,\n options,\n targetFileRelativePath,\n contributors,\n projectAttributes,\n tags,\n );\n }\n\n if (GRAPH_SUPPORTED_PACKAGE_MANAGERS.includes(packageManager)) {\n return await monitorDepGraphFromDepTree(\n root,\n meta,\n scannedProject,\n pluginMeta,\n options,\n targetFileRelativePath,\n contributors,\n projectAttributes,\n tags,\n );\n }\n\n return await monitorDepTree(\n root,\n meta,\n scannedProject,\n pluginMeta,\n options,\n targetFileRelativePath,\n contributors,\n projectAttributes,\n tags,\n );\n}\n\nasync function monitorDepTree(\n root: string,\n meta: MonitorMeta,\n scannedProject: ScannedProject,\n pluginMeta: PluginMetadata,\n options: MonitorOptions & PolicyOptions,\n targetFileRelativePath?: string,\n contributors?: Contributor[],\n projectAttributes?: ProjectAttributes,\n tags?: Tag[],\n): Promise<MonitorResult> {\n let treeMissingDeps: string[] = [];\n\n const packageManager = meta.packageManager;\n\n let depTree = scannedProject.depTree;\n\n if (!depTree) {\n debug(\n 'scannedProject is missing depGraph or depTree, cannot run test/monitor',\n );\n throw new FailedToRunTestError(\n errorMessageWithRetry('Your monitor request could not be completed.'),\n );\n }\n\n let prePruneDepCount;\n if (meta.prune) {\n debug('prune used, counting total dependencies');\n prePruneDepCount = countTotalDependenciesInTree(depTree);\n analytics.add('prePruneDepCount', prePruneDepCount);\n debug('total dependencies: %d', prePruneDepCount);\n debug('pruning dep tree');\n depTree = await pruneTree(depTree, meta.packageManager);\n debug('finished pruning dep tree');\n }\n if (['npm', 'yarn'].includes(meta.packageManager)) {\n const { filteredDepTree, missingDeps } = filterOutMissingDeps(depTree);\n depTree = filteredDepTree;\n treeMissingDeps = missingDeps;\n }\n\n let targetFileDir;\n\n if (targetFileRelativePath) {\n const { dir } = path.parse(targetFileRelativePath);\n targetFileDir = dir;\n }\n\n const policy = await findAndLoadPolicy(\n root,\n meta.isDocker ? 'docker' : packageManager!,\n options,\n depTree,\n targetFileDir,\n );\n\n const target = await projectMetadata.getInfo(scannedProject, meta, depTree);\n\n if (isGitTarget(target) && target.branch) {\n analytics.add('targetBranch', target.branch);\n }\n\n depTree = dropEmptyDeps(depTree);\n\n let callGraphPayload;\n if (\n options.reachableVulns &&\n (scannedProject.callGraph as CallGraphError)?.innerError\n ) {\n const err = scannedProject.callGraph as CallGraphError;\n analytics.add(\n 'callGraphError',\n abridgeErrorMessage(\n err.innerError.toString(),\n ANALYTICS_PAYLOAD_MAX_LENGTH,\n ),\n );\n alerts.registerAlerts([\n {\n type: 'error',\n name: 'missing-call-graph',\n msg: err.message,\n },\n ]);\n } else if (scannedProject.callGraph) {\n const { callGraph, nodeCount, edgeCount } = serializeCallGraphWithMetrics(\n scannedProject.callGraph as CallGraph,\n );\n debug(\n `Adding call graph to payload, node count: ${nodeCount}, edge count: ${edgeCount}`,\n );\n\n const callGraphMetrics = get(pluginMeta, 'meta.callGraphMetrics', {});\n analytics.add('callGraphMetrics', {\n callGraphEdgeCount: edgeCount,\n callGraphNodeCount: nodeCount,\n ...callGraphMetrics,\n });\n callGraphPayload = callGraph;\n }\n\n if (!depTree) {\n debug(\n 'scannedProject is missing depGraph or depTree, cannot run test/monitor',\n );\n throw new FailedToRunTestError(\n errorMessageWithRetry('Your monitor request could not be completed.'),\n );\n }\n\n const { res, body } = await makeRequest({\n body: {\n meta: {\n method: meta.method,\n hostname: os.hostname(),\n id: snyk.id || depTree.name,\n ci: isCI(),\n pid: process.pid,\n node: process.version,\n master: snyk.config.isMaster,\n name: getNameDepTree(scannedProject, depTree, meta),\n version: depTree.version,\n org: config.org ? decodeURIComponent(config.org) : undefined,\n pluginName: pluginMeta.name,\n pluginRuntime: pluginMeta.runtime,\n missingDeps: treeMissingDeps,\n dockerImageId: pluginMeta.dockerImageId,\n dockerBaseImage: depTree.docker ? depTree.docker.baseImage : undefined,\n dockerfileLayers: depTree.docker\n ? depTree.docker.dockerfileLayers\n : undefined,\n projectName: getProjectName(scannedProject, meta),\n prePruneDepCount, // undefined unless 'prune' is used,\n monitorGraph: false,\n versionBuildInfo: JSON.stringify(scannedProject.meta?.versionBuildInfo),\n gradleProjectName: scannedProject.meta?.gradleProjectName,\n platform: scannedProject.meta?.platform,\n },\n policy: policy ? policy.toString() : undefined,\n package: depTree,\n callGraph: callGraphPayload,\n // we take the targetFile from the plugin,\n // because we want to send it only for specific package-managers\n target,\n // WARNING: be careful changing this as it affects project uniqueness\n targetFile: getTargetFile(scannedProject, pluginMeta),\n targetFileRelativePath,\n targetReference: meta.targetReference,\n contributors,\n projectAttributes,\n tags,\n } as MonitorBody,\n gzip: true,\n method: 'PUT',\n headers: {\n authorization: getAuthHeader(),\n 'content-encoding': 'gzip',\n },\n url: config.API + '/monitor/' + packageManager,\n json: true,\n });\n\n if (res.statusCode && res.statusCode >= 200 && res.statusCode <= 299) {\n return body as MonitorResult;\n } else {\n const userMessage = body && body.userMessage;\n if (!userMessage && res.statusCode === 504) {\n throw new ConnectionTimeoutError();\n } else {\n throw new MonitorError(res.statusCode, userMessage);\n }\n }\n}\n\nexport async function monitorDepGraph(\n root: string,\n meta: MonitorMeta,\n scannedProject: ScannedProject,\n pluginMeta: PluginMetadata,\n options: MonitorOptions & PolicyOptions,\n targetFileRelativePath?: string,\n contributors?: Contributor[],\n projectAttributes?: ProjectAttributes,\n tags?: Tag[],\n): Promise<MonitorResult> {\n const packageManager = meta.packageManager;\n analytics.add('monitorDepGraph', true);\n\n let depGraph = scannedProject.depGraph;\n\n if (!depGraph) {\n debug(\n 'scannedProject is missing depGraph or depTree, cannot run test/monitor',\n );\n throw new FailedToRunTestError(\n 'Your monitor request could not be completed. ',\n );\n }\n\n let targetFileDir;\n\n if (targetFileRelativePath) {\n const { dir } = path.parse(targetFileRelativePath);\n targetFileDir = dir;\n }\n\n const policy = await findAndLoadPolicy(\n root,\n meta.isDocker ? 'docker' : packageManager!,\n options,\n undefined,\n targetFileDir,\n );\n\n const target = await projectMetadata.getInfo(scannedProject, meta);\n if (isGitTarget(target) && target.branch) {\n analytics.add('targetBranch', target.branch);\n }\n\n const pruneIsRequired = options.pruneRepeatedSubdependencies;\n depGraph = await pruneGraph(depGraph, packageManager, pruneIsRequired);\n\n let callGraphPayload;\n if (\n options.reachableVulns &&\n (scannedProject.callGraph as CallGraphError)?.innerError\n ) {\n const err = scannedProject.callGraph as CallGraphError;\n analytics.add(\n 'callGraphError',\n abridgeErrorMessage(\n err.innerError.toString(),\n ANALYTICS_PAYLOAD_MAX_LENGTH,\n ),\n );\n alerts.registerAlerts([\n {\n type: 'error',\n name: 'missing-call-graph',\n msg: err.message,\n },\n ]);\n } else if (scannedProject.callGraph) {\n const { callGraph, nodeCount, edgeCount } = serializeCallGraphWithMetrics(\n scannedProject.callGraph as CallGraph,\n );\n debug(\n `Adding call graph to payload, node count: ${nodeCount}, edge count: ${edgeCount}`,\n );\n\n const callGraphMetrics = get(pluginMeta, 'meta.callGraphMetrics', {});\n analytics.add('callGraphMetrics', {\n callGraphEdgeCount: edgeCount,\n callGraphNodeCount: nodeCount,\n ...callGraphMetrics,\n });\n callGraphPayload = callGraph;\n }\n\n if (!depGraph) {\n debug(\n 'scannedProject is missing depGraph or depTree, cannot run test/monitor',\n );\n throw new FailedToRunTestError(\n errorMessageWithRetry('Your monitor request could not be completed.'),\n );\n }\n\n const { res, body } = await makeRequest({\n body: {\n meta: {\n method: meta.method,\n hostname: os.hostname(),\n id: snyk.id || depGraph.rootPkg.name,\n ci: isCI(),\n pid: process.pid,\n node: process.version,\n master: snyk.config.isMaster,\n name: getNameDepGraph(scannedProject, depGraph, meta),\n version: depGraph.rootPkg.version,\n org: config.org ? decodeURIComponent(config.org) : undefined,\n pluginName: pluginMeta.name,\n pluginRuntime: pluginMeta.runtime,\n projectName: getProjectName(scannedProject, meta),\n monitorGraph: true,\n versionBuildInfo: JSON.stringify(scannedProject.meta?.versionBuildInfo),\n gradleProjectName: scannedProject.meta?.gradleProjectName,\n },\n policy: policy ? policy.toString() : undefined,\n depGraphJSON: depGraph, // depGraph will be auto serialized to JSON on send\n // we take the targetFile from the plugin,\n // because we want to send it only for specific package-managers\n target,\n targetFile: getTargetFile(scannedProject, pluginMeta),\n targetFileRelativePath,\n targetReference: meta.targetReference,\n contributors,\n callGraph: callGraphPayload,\n projectAttributes,\n tags,\n } as MonitorBody,\n gzip: true,\n method: 'PUT',\n headers: {\n authorization: getAuthHeader(),\n 'content-encoding': 'gzip',\n },\n url: `${config.API}/monitor/${packageManager}/graph`,\n json: true,\n });\n\n if (res.statusCode && res.statusCode >= 200 && res.statusCode <= 299) {\n return body as MonitorResult;\n } else {\n const userMessage = body && body.userMessage;\n if (!userMessage && res.statusCode === 504) {\n throw new ConnectionTimeoutError();\n } else {\n throw new MonitorError(res.statusCode, userMessage);\n }\n }\n}\n\nasync function monitorDepGraphFromDepTree(\n root: string,\n meta: MonitorMeta,\n scannedProject: ScannedProject,\n pluginMeta: PluginMetadata,\n options: MonitorOptions & PolicyOptions,\n targetFileRelativePath?: string,\n contributors?: Contributor[],\n projectAttributes?: ProjectAttributes,\n tags?: Tag[],\n): Promise<MonitorResult> {\n const packageManager = meta.packageManager;\n\n let treeMissingDeps: string[] | undefined;\n let depTree = scannedProject.depTree;\n\n if (!depTree) {\n debug(\n 'scannedProject is missing depGraph or depTree, cannot run test/monitor',\n );\n throw new FailedToRunTestError(\n errorMessageWithRetry('Your monitor request could not be completed'),\n );\n }\n\n let targetFileDir;\n\n if (targetFileRelativePath) {\n const { dir } = path.parse(targetFileRelativePath);\n targetFileDir = dir;\n }\n\n const policy = await findAndLoadPolicy(\n root,\n meta.isDocker ? 'docker' : packageManager!,\n options,\n // TODO: fix this and send only send when we used resolve-deps for node\n // it should be a ExpandedPkgTree type instead\n depTree,\n targetFileDir,\n );\n\n if (['npm', 'yarn'].includes(meta.packageManager)) {\n const { filteredDepTree, missingDeps } = filterOutMissingDeps(depTree);\n depTree = filteredDepTree;\n treeMissingDeps = missingDeps;\n }\n\n const depGraph: depGraphLib.DepGraph = await depGraphLib.legacy.depTreeToGraph(\n depTree,\n packageManager,\n );\n const target = await projectMetadata.getInfo(scannedProject, meta, depTree);\n\n if (isGitTarget(target) && target.branch) {\n analytics.add('targetBranch', target.branch);\n }\n\n let prunedGraph = depGraph;\n let prePruneDepCount;\n if (meta.prune) {\n debug('Trying to prune the graph');\n prePruneDepCount = countPathsToGraphRoot(depGraph);\n debug('pre prunedPathsCount: ' + prePruneDepCount);\n prunedGraph = await pruneGraph(depGraph, packageManager, meta.prune);\n }\n\n if (!depTree) {\n debug(\n 'scannedProject is missing depGraph or depTree, cannot run test/monitor',\n );\n throw new FailedToRunTestError(\n errorMessageWithRetry('Your monitor request could not be completed.'),\n );\n }\n const { res, body } = await makeRequest({\n body: {\n meta: {\n method: meta.method,\n hostname: os.hostname(),\n id: snyk.id || depTree.name,\n ci: isCI(),\n pid: process.pid,\n node: process.version,\n master: snyk.config.isMaster,\n name: getNameDepGraph(scannedProject, depGraph, meta),\n version: depGraph.rootPkg.version,\n org: config.org ? decodeURIComponent(config.org) : undefined,\n pluginName: pluginMeta.name,\n pluginRuntime: pluginMeta.runtime,\n dockerImageId: pluginMeta.dockerImageId,\n dockerBaseImage: depTree.docker ? depTree.docker.baseImage : undefined,\n dockerfileLayers: depTree.docker\n ? depTree.docker.dockerfileLayers\n : undefined,\n projectName: getProjectName(scannedProject, meta),\n prePruneDepCount, // undefined unless 'prune' is used\n missingDeps: treeMissingDeps,\n monitorGraph: true,\n },\n policy: policy ? policy.toString() : undefined,\n depGraphJSON: prunedGraph, // depGraph will be auto serialized to JSON on send\n // we take the targetFile from the plugin,\n // because we want to send it only for specific package-managers\n target,\n targetFile: getTargetFile(scannedProject, pluginMeta),\n targetFileRelativePath,\n targetReference: meta.targetReference,\n contributors,\n projectAttributes,\n tags,\n } as MonitorBody,\n gzip: true,\n method: 'PUT',\n headers: {\n authorization: getAuthHeader(),\n 'content-encoding': 'gzip',\n },\n url: `${config.API}/monitor/${packageManager}/graph`,\n json: true,\n });\n\n if (res.statusCode && res.statusCode >= 200 && res.statusCode <= 299) {\n return body as MonitorResult;\n } else {\n const userMessage = body && body.userMessage;\n if (!userMessage && res.statusCode === 504) {\n throw new ConnectionTimeoutError();\n } else {\n throw new MonitorError(res.statusCode, userMessage);\n }\n }\n}\n","import * as depGraphLib from '@snyk/dep-graph';\nimport { DepTree } from '../types';\n\nexport async function pruneTree(\n tree: DepTree,\n packageManagerName: string,\n): Promise<DepTree> {\n // Pruning requires conversion to the graph first.\n // This is slow.\n const graph = await depGraphLib.legacy.depTreeToGraph(\n tree,\n packageManagerName,\n );\n const prunedTree: DepTree = (await depGraphLib.legacy.graphToDepTree(\n graph,\n packageManagerName,\n { deduplicateWithinTopLevelDeps: true },\n )) as DepTree;\n // Transplant pruned dependencies in the original tree (we want to keep all other fields):\n tree.dependencies = prunedTree.dependencies;\n return tree;\n}\n","import { ScannedProject, DepTree } from '@snyk/cli-interface/legacy/common';\nimport {\n getContainerTargetFile,\n getContainerProjectName,\n getContainerName,\n isContainer,\n} from '../container';\nimport * as depGraphLib from '@snyk/dep-graph';\nimport { MonitorMeta } from '../types';\nimport { PluginMetadata } from '@snyk/cli-interface/legacy/plugin';\n\nexport function getNameDepTree(\n scannedProject: ScannedProject,\n depTree: DepTree,\n meta: MonitorMeta,\n): string | undefined {\n if (isContainer(scannedProject)) {\n return getContainerName(scannedProject, meta);\n }\n return depTree.name;\n}\n\nexport function getNameDepGraph(\n scannedProject: ScannedProject,\n depGraph: depGraphLib.DepGraph,\n meta: MonitorMeta,\n): string | undefined {\n if (isContainer(scannedProject)) {\n return getContainerName(scannedProject, meta);\n }\n return depGraph.rootPkg?.name;\n}\n\nexport function getProjectName(\n scannedProject: ScannedProject,\n meta: MonitorMeta,\n): string | undefined {\n if (isContainer(scannedProject)) {\n return getContainerProjectName(scannedProject, meta);\n }\n\n if (meta['project-name'] && scannedProject.meta?.projectName) {\n return scannedProject.meta.projectName;\n }\n\n return meta['project-name'];\n}\n\nexport function getTargetFile(\n scannedProject: ScannedProject,\n pluginMeta: PluginMetadata,\n): string | undefined {\n if (isContainer(scannedProject)) {\n return getContainerTargetFile(scannedProject);\n }\n return pluginMeta.targetFile;\n}\n","import { MonitorOptions, Options, TestOptions } from './types';\nimport config from './config';\nimport { SupportedPackageManagers } from './package-managers';\nimport * as reachableVulns from './reachable-vulns';\nimport { isMultiProjectScan } from './is-multi-project-scan';\nimport { FeatureNotSupportedByPackageManagerError } from './errors';\nimport * as alerts from './alerts';\n\nexport async function validateOptions(\n options: (Options & TestOptions) | (Options & MonitorOptions),\n packageManager?: SupportedPackageManagers,\n): Promise<void> {\n if (options.reachableVulns) {\n alerts.registerAlerts([\n {\n type: 'warning',\n name: 'reachable deprecation',\n msg: reachableVulns.reachableVulnsRemovalMessage,\n },\n ]);\n }\n\n if (options.reachableVulns) {\n // Throwing error only in case when both packageManager and allProjects not defined\n if (!packageManager && !isMultiProjectScan(options)) {\n throw new Error('Could not determine package manager');\n }\n const org = options.org || config.org;\n\n try {\n await reachableVulns.validatePayload(org, options, packageManager);\n } catch (err) {\n if (\n err instanceof FeatureNotSupportedByPackageManagerError &&\n err.feature === 'Reachable vulns' &&\n err.userMessage\n ) {\n alerts.registerAlerts([\n {\n type: 'error',\n name: 'pkgman-not-supported',\n msg: err.userMessage,\n },\n ]);\n } else {\n throw err;\n }\n }\n }\n}\n","import { legacyPlugin as pluginApi } from '@snyk/cli-interface';\nimport { MultiProjectResultCustom } from './get-multi-plugin-result';\nimport { convertScannedProjectsToCustom } from './convert-scanned-projects-to-custom';\nimport { SupportedPackageManagers } from '../package-managers';\n\nexport function convertMultiResultToMultiCustom(\n inspectRes: pluginApi.MultiProjectResult,\n packageManager?: SupportedPackageManagers,\n targetFile?: string,\n): MultiProjectResultCustom {\n // convert all results from the same plugin to MultiProjectResultCustom\n // and annotate each scannedProject with packageManager\n return {\n plugin: inspectRes.plugin,\n scannedProjects: convertScannedProjectsToCustom(\n inspectRes.scannedProjects,\n inspectRes.plugin,\n (inspectRes.plugin.packageManager as SupportedPackageManagers) ||\n packageManager,\n targetFile,\n ),\n };\n}\n","import * as cliInterface from '@snyk/cli-interface';\nimport { ScannedProjectCustom } from './get-multi-plugin-result';\nimport { SupportedPackageManagers } from '../package-managers';\nimport { PluginMetadata } from '@snyk/cli-interface/legacy/plugin';\n\nexport function convertScannedProjectsToCustom(\n scannedProjects: cliInterface.legacyCommon.ScannedProject[],\n pluginMeta: PluginMetadata,\n packageManager?: SupportedPackageManagers,\n targetFile?: string,\n): ScannedProjectCustom[] {\n // annotate the package manager & targetFile to be used\n // for test & monitor\n return scannedProjects.map((a) => {\n (a as ScannedProjectCustom).plugin =\n (a as ScannedProjectCustom).plugin || pluginMeta;\n (a as ScannedProjectCustom).targetFile = a.targetFile || targetFile;\n (a as ScannedProjectCustom).packageManager = (a as ScannedProjectCustom)\n .packageManager\n ? (a as ScannedProjectCustom).packageManager\n : (packageManager as SupportedPackageManagers);\n (a as ScannedProjectCustom).meta = a.meta;\n return a as ScannedProjectCustom;\n });\n}\n","import { legacyPlugin as pluginApi } from '@snyk/cli-interface';\nimport { MultiProjectResultCustom } from './get-multi-plugin-result';\nimport { SupportedPackageManagers } from '../package-managers';\nimport { CallGraph } from '@snyk/cli-interface/legacy/common';\n\nexport function convertSingleResultToMultiCustom(\n inspectRes: pluginApi.SinglePackageResult,\n packageManager?: SupportedPackageManagers,\n): MultiProjectResultCustom {\n if (!packageManager) {\n packageManager = inspectRes.plugin\n .packageManager as SupportedPackageManagers;\n }\n if (inspectRes.dependencyGraph) {\n return convertDepGraphResult(inspectRes, packageManager);\n } else {\n return convertDepTreeResult(inspectRes, packageManager);\n }\n}\n\nfunction convertDepGraphResult(\n inspectRes: pluginApi.SinglePackageResult,\n packageManager: SupportedPackageManagers,\n): MultiProjectResultCustom {\n const { plugin, meta, dependencyGraph: depGraph, callGraph } = inspectRes;\n return {\n plugin,\n scannedProjects: [\n {\n plugin: plugin as any,\n depGraph,\n callGraph: callGraph as CallGraph,\n meta,\n targetFile: plugin.targetFile,\n packageManager,\n },\n ],\n };\n}\n\n/**\n * @deprecated @boost: delete me when all languages uses depGraph\n */\nfunction convertDepTreeResult(\n inspectRes: pluginApi.SinglePackageResult,\n packageManager: SupportedPackageManagers,\n): MultiProjectResultCustom {\n if (\n inspectRes.package &&\n !inspectRes.package.targetFile &&\n inspectRes.plugin\n ) {\n inspectRes.package.targetFile = inspectRes.plugin.targetFile;\n }\n const { plugin, meta, package: depTree, callGraph } = inspectRes;\n\n if (depTree && !depTree.targetFile && plugin) {\n depTree.targetFile = plugin.targetFile;\n }\n\n return {\n plugin,\n scannedProjects: [\n {\n plugin: plugin as any,\n depTree,\n callGraph: callGraph as CallGraph,\n meta,\n targetFile: plugin.targetFile,\n packageManager,\n },\n ],\n };\n}\n","import * as cliInterface from '@snyk/cli-interface';\nimport { ScannedProjectCustom } from './get-multi-plugin-result';\nimport { SupportedPackageManagers } from '../package-managers';\n\nexport function extractPackageManager(\n scannedProject: ScannedProjectCustom,\n pluginRes: cliInterface.legacyPlugin.MultiProjectResult,\n options: {\n packageManager?: SupportedPackageManagers;\n },\n): SupportedPackageManagers | undefined {\n // try and use the package Manager from the plugin\n // result if present\n const packageManager =\n scannedProject.packageManager ||\n (pluginRes.plugin && pluginRes.plugin.packageManager);\n\n if (packageManager) {\n return packageManager;\n }\n\n if (!packageManager && options.packageManager) {\n // fallback to Options packageManager\n return options.packageManager;\n }\n\n // for example: docker\n return undefined;\n}\n","import * as debugModule from 'debug';\nimport * as pathLib from 'path';\nimport chalk from 'chalk';\nimport { icon } from '../theme';\nimport { legacyPlugin as pluginApi } from '@snyk/cli-interface';\nimport { find } from '../find-files';\nimport { Options, TestOptions, MonitorOptions } from '../types';\nimport { NoSupportedManifestsFoundError } from '../errors';\nimport {\n getMultiPluginResult,\n MultiProjectResultCustom,\n} from './get-multi-plugin-result';\nimport { getSinglePluginResult } from './get-single-plugin-result';\nimport {\n detectPackageFile,\n AUTO_DETECTABLE_FILES,\n detectPackageManagerFromFile,\n} from '../detect';\nimport analytics = require('../analytics');\nimport { convertSingleResultToMultiCustom } from './convert-single-splugin-res-to-multi-custom';\nimport { convertMultiResultToMultiCustom } from './convert-multi-plugin-res-to-multi-custom';\nimport { processYarnWorkspaces } from './nodejs-plugin/yarn-workspaces-parser';\nimport { ScannedProject } from '@snyk/cli-interface/legacy/common';\n\nconst debug = debugModule('snyk-test');\n\nconst multiProjectProcessors = {\n yarnWorkspaces: {\n handler: processYarnWorkspaces,\n files: ['package.json'],\n },\n allProjects: {\n handler: getMultiPluginResult,\n files: AUTO_DETECTABLE_FILES,\n },\n};\n\n// Force getDepsFromPlugin to return scannedProjects for processing\nexport async function getDepsFromPlugin(\n root: string,\n options: Options & (TestOptions | MonitorOptions),\n): Promise<pluginApi.MultiProjectResult | MultiProjectResultCustom> {\n let inspectRes: pluginApi.InspectResult;\n\n if (Object.keys(multiProjectProcessors).some((key) => options[key])) {\n const scanType = options.yarnWorkspaces ? 'yarnWorkspaces' : 'allProjects';\n const levelsDeep = options.detectionDepth;\n const ignore = options.exclude ? options.exclude.split(',') : [];\n const { files: targetFiles, allFilesFound } = await find(\n root,\n ignore,\n multiProjectProcessors[scanType].files,\n levelsDeep,\n );\n debug(\n `auto detect manifest files, found ${targetFiles.length}`,\n targetFiles,\n );\n if (targetFiles.length === 0) {\n throw NoSupportedManifestsFoundError([root]);\n }\n // enable full sub-project scan for gradle\n options.allSubProjects = true;\n inspectRes = await multiProjectProcessors[scanType].handler(\n root,\n options,\n targetFiles,\n );\n const scannedProjects = inspectRes.scannedProjects;\n const analyticData = {\n scannedProjects: scannedProjects.length,\n targetFiles,\n packageManagers: targetFiles.map((file) =>\n detectPackageManagerFromFile(file),\n ),\n levelsDeep,\n ignore,\n };\n analytics.add(scanType, analyticData);\n debug(\n `Found ${scannedProjects.length} projects from ${allFilesFound.length} detected manifests`,\n );\n const userWarningMessage = warnSomeGradleManifestsNotScanned(\n scannedProjects,\n allFilesFound,\n root,\n );\n\n if (!options.json && !options.quiet && userWarningMessage) {\n console.warn(chalk.bold.red(userWarningMessage));\n }\n return inspectRes;\n }\n\n // TODO: is this needed for the auto detect handling above?\n // don't override options.file if scanning multiple files at once\n if (!options.scanAllUnmanaged) {\n options.file = options.file || detectPackageFile(root);\n }\n if (!options.docker && !(options.file || options.packageManager)) {\n throw NoSupportedManifestsFoundError([...root]);\n }\n inspectRes = await getSinglePluginResult(root, options);\n\n if (!pluginApi.isMultiResult(inspectRes)) {\n if (!inspectRes.package && !inspectRes.dependencyGraph) {\n // something went wrong if both are not present...\n throw Error(\n `error getting dependencies from ${\n options.docker ? 'docker' : options.packageManager\n } ` + \"plugin: neither 'package' nor 'scannedProjects' were found\",\n );\n }\n\n return convertSingleResultToMultiCustom(inspectRes, options.packageManager);\n }\n // We are using \"options\" to store some information returned from plugin that we need to use later,\n // but don't want to send to Registry in the Payload.\n // TODO(kyegupov): decouple inspect and payload so that we don't need this hack\n (options as any).projectNames = inspectRes.scannedProjects.map(\n (scannedProject) => scannedProject?.depTree?.name,\n );\n return convertMultiResultToMultiCustom(inspectRes, options.packageManager);\n}\n\nexport function warnSomeGradleManifestsNotScanned(\n scannedProjects: ScannedProject[],\n allFilesFound: string[],\n root: string,\n): string | null {\n const gradleTargetFilesFilter = (targetFile) =>\n targetFile &&\n (targetFile.endsWith('build.gradle') ||\n targetFile.endsWith('build.gradle.kts'));\n const scannedGradleFiles = scannedProjects\n .map((p) => {\n const targetFile = p.meta?.targetFile || p.targetFile;\n return targetFile ? pathLib.resolve(root, targetFile) : null;\n })\n .filter(gradleTargetFilesFilter);\n const detectedGradleFiles = allFilesFound.filter(gradleTargetFilesFilter);\n const diff = detectedGradleFiles.filter(\n (file) => !scannedGradleFiles.includes(file),\n );\n\n if (diff.length > 0) {\n debug(\n `These Gradle manifests did not return any dependency results:\\n${diff.join(\n ',\\n',\n )}`,\n );\n return `${icon.ISSUE} ${diff.length}/${detectedGradleFiles.length} detected Gradle manifests did not return dependencies. They may have errored or were not included as part of a multi-project build. You may need to scan them individually with --file=path/to/file. Run with \\`-d\\` for more info.`;\n }\n return null;\n}\n","import { legacyPlugin as pluginApi } from '@snyk/cli-interface';\nimport { find } from '../find-files';\nimport { AUTO_DETECTABLE_FILES } from '../detect';\nimport { Options } from '../types';\n\nexport async function getExtraProjectCount(\n root: string,\n options: Options,\n inspectResult: pluginApi.InspectResult,\n): Promise<number | undefined> {\n if (options.docker || options.unmanaged) {\n return undefined;\n }\n if (\n inspectResult.plugin.meta &&\n inspectResult.plugin.meta.allSubProjectNames &&\n inspectResult.plugin.meta.allSubProjectNames.length > 0\n ) {\n return inspectResult.plugin.meta.allSubProjectNames.length;\n }\n try {\n const { files: extraTargetFiles } = await find(\n root,\n [],\n AUTO_DETECTABLE_FILES,\n );\n const foundProjectsCount =\n extraTargetFiles.length > 1 ? extraTargetFiles.length - 1 : undefined;\n return foundProjectsCount;\n } catch (e) {\n return undefined;\n }\n}\n","import * as cloneDeep from 'lodash.clonedeep';\nimport * as pathLib from 'path';\nimport * as cliInterface from '@snyk/cli-interface';\nimport chalk from 'chalk';\nimport { icon } from '../theme';\nimport * as debugModule from 'debug';\n\nimport { TestOptions, Options, MonitorOptions } from '../types';\nimport { detectPackageManagerFromFile } from '../detect';\nimport { SupportedPackageManagers } from '../package-managers';\nimport { getSinglePluginResult } from './get-single-plugin-result';\nimport { convertSingleResultToMultiCustom } from './convert-single-splugin-res-to-multi-custom';\nimport { convertMultiResultToMultiCustom } from './convert-multi-plugin-res-to-multi-custom';\nimport { PluginMetadata } from '@snyk/cli-interface/legacy/plugin';\nimport { CallGraph } from '@snyk/cli-interface/legacy/common';\nimport { errorMessageWithRetry, FailedToRunTestError } from '../errors';\nimport { processYarnWorkspaces } from './nodejs-plugin/yarn-workspaces-parser';\n\nconst debug = debugModule('snyk-test');\nexport interface ScannedProjectCustom\n extends cliInterface.legacyCommon.ScannedProject {\n packageManager: SupportedPackageManagers;\n plugin: PluginMetadata;\n callGraph?: CallGraph;\n}\n\ninterface FailedProjectScanError {\n targetFile?: string;\n error?: Error;\n errMessage: string;\n}\nexport interface MultiProjectResultCustom\n extends cliInterface.legacyPlugin.MultiProjectResult {\n scannedProjects: ScannedProjectCustom[];\n failedResults?: FailedProjectScanError[];\n}\n\nexport async function getMultiPluginResult(\n root: string,\n options: Options & (TestOptions | MonitorOptions),\n targetFiles: string[],\n): Promise<MultiProjectResultCustom> {\n const allResults: ScannedProjectCustom[] = [];\n const failedResults: FailedProjectScanError[] = [];\n\n // process any yarn workspaces first\n // the files need to be proceeded together as they provide context to each other\n const {\n scannedProjects,\n unprocessedFiles,\n } = await processYarnWorkspacesProjects(root, options, targetFiles);\n allResults.push(...scannedProjects);\n debug(`Not part of a workspace: ${unprocessedFiles.join(', ')}}`);\n // process the rest 1 by 1 sent to relevant plugins\n for (const targetFile of unprocessedFiles) {\n const optionsClone = cloneDeep(options);\n optionsClone.file = pathLib.relative(root, targetFile);\n optionsClone.packageManager = detectPackageManagerFromFile(\n pathLib.basename(targetFile),\n );\n try {\n const inspectRes = await getSinglePluginResult(\n root,\n optionsClone,\n optionsClone.file,\n );\n let resultWithScannedProjects: cliInterface.legacyPlugin.MultiProjectResult;\n\n if (!cliInterface.legacyPlugin.isMultiResult(inspectRes)) {\n resultWithScannedProjects = convertSingleResultToMultiCustom(\n inspectRes,\n optionsClone.packageManager,\n );\n } else {\n resultWithScannedProjects = inspectRes;\n }\n\n const pluginResultWithCustomScannedProjects = convertMultiResultToMultiCustom(\n resultWithScannedProjects,\n optionsClone.packageManager,\n optionsClone.file,\n );\n // annotate the package manager, project name & targetFile to be used\n // for test & monitor\n // TODO: refactor how we display meta to not have to do this\n (options as any).projectNames = resultWithScannedProjects.scannedProjects.map(\n (scannedProject) => scannedProject?.depTree?.name,\n );\n\n allResults.push(...pluginResultWithCustomScannedProjects.scannedProjects);\n } catch (error) {\n const errMessage =\n error.message ?? 'Something went wrong getting dependencies';\n // TODO: propagate this all the way back and include in --json output\n failedResults.push({\n targetFile,\n error,\n errMessage: errMessage,\n });\n debug(\n chalk.bold.red(\n `\\n${icon.ISSUE} Failed to get dependencies for ${targetFile}\\nERROR: ${errMessage}\\n`,\n ),\n );\n }\n }\n\n if (!allResults.length) {\n throw new FailedToRunTestError(\n errorMessageWithRetry(\n `Failed to get dependencies for all ${targetFiles.length} potential projects.`,\n ),\n );\n }\n\n return {\n plugin: {\n name: 'custom-auto-detect',\n },\n scannedProjects: allResults,\n failedResults,\n };\n}\n\nasync function processYarnWorkspacesProjects(\n root: string,\n options: Options & (TestOptions | MonitorOptions),\n targetFiles: string[],\n): Promise<{\n scannedProjects: ScannedProjectCustom[];\n unprocessedFiles: string[];\n}> {\n try {\n const { scannedProjects } = await processYarnWorkspaces(\n root,\n {\n strictOutOfSync: options.strictOutOfSync,\n dev: options.dev,\n },\n targetFiles,\n );\n\n const unprocessedFiles = filterOutProcessedWorkspaces(\n root,\n scannedProjects,\n targetFiles,\n );\n return { scannedProjects, unprocessedFiles };\n } catch (e) {\n debug('Error during detecting or processing Yarn Workspaces: ', e);\n return { scannedProjects: [], unprocessedFiles: targetFiles };\n }\n}\n\nexport function filterOutProcessedWorkspaces(\n root: string,\n scannedProjects: ScannedProjectCustom[],\n allTargetFiles: string[],\n): string[] {\n const targetFiles: string[] = [];\n\n const scanned = scannedProjects\n .map((p) => p.targetFile!)\n .map((p) => pathLib.resolve(process.cwd(), root, p));\n const all = allTargetFiles.map((p) => ({\n path: pathLib.resolve(process.cwd(), root, p),\n original: p,\n }));\n\n for (const entry of all) {\n const { path, original } = entry;\n const { base } = pathLib.parse(path);\n\n if (!['package.json', 'yarn.lock'].includes(base)) {\n targetFiles.push(original);\n continue;\n }\n // standardise to package.json\n // we discover the lockfiles but targetFile is package.json\n if (!scanned.includes(path.replace('yarn.lock', 'package.json'))) {\n targetFiles.push(original);\n continue;\n }\n }\n return targetFiles;\n}\n","import plugins = require('.');\nimport { ModuleInfo } from '../module-info';\nimport { legacyPlugin as pluginApi } from '@snyk/cli-interface';\nimport { TestOptions, Options, MonitorOptions } from '../types';\n\nexport async function getSinglePluginResult(\n root: string,\n options: Options & (TestOptions | MonitorOptions),\n targetFile?: string,\n): Promise<pluginApi.InspectResult> {\n const plugin = plugins.loadPlugin(options.packageManager);\n const moduleInfo = ModuleInfo(plugin, options.policy);\n const inspectRes: pluginApi.InspectResult = await moduleInfo.inspect(\n root,\n targetFile || options.file,\n { ...options },\n );\n return inspectRes;\n}\n","import * as rubygemsPlugin from './rubygems';\nimport * as mvnPlugin from 'snyk-mvn-plugin';\nimport * as gradlePlugin from 'snyk-gradle-plugin';\nimport * as sbtPlugin from 'snyk-sbt-plugin';\nimport * as pythonPlugin from 'snyk-python-plugin';\nimport * as goPlugin from 'snyk-go-plugin';\nimport * as nugetPlugin from 'snyk-nuget-plugin';\nimport * as phpPlugin from 'snyk-php-plugin';\nimport * as nodejsPlugin from './nodejs-plugin';\nimport * as cocoapodsPlugin from '@snyk/snyk-cocoapods-plugin';\nimport * as hexPlugin from '@snyk/snyk-hex-plugin';\nimport * as types from './types';\nimport { SupportedPackageManagers } from '../package-managers';\nimport { UnsupportedPackageManagerError } from '../errors';\n\nexport function loadPlugin(\n packageManager: SupportedPackageManagers | undefined,\n): types.Plugin {\n switch (packageManager) {\n case 'npm': {\n return nodejsPlugin;\n }\n case 'rubygems': {\n return rubygemsPlugin;\n }\n case 'maven': {\n return mvnPlugin;\n }\n case 'gradle': {\n return gradlePlugin;\n }\n case 'sbt': {\n return sbtPlugin;\n }\n case 'yarn': {\n return nodejsPlugin;\n }\n case 'pip':\n case 'poetry': {\n return pythonPlugin;\n }\n case 'golangdep':\n case 'gomodules':\n case 'govendor': {\n return goPlugin;\n }\n case 'nuget': {\n return nugetPlugin;\n }\n case 'paket': {\n return nugetPlugin;\n }\n case 'composer': {\n return phpPlugin;\n }\n case 'cocoapods': {\n return cocoapodsPlugin;\n }\n case 'hex': {\n return hexPlugin;\n }\n default: {\n throw new UnsupportedPackageManagerError(packageManager);\n }\n }\n}\n","import * as modulesParser from './npm-modules-parser';\nimport * as lockParser from './npm-lock-parser';\nimport * as types from '../types';\nimport * as analytics from '../../analytics';\nimport { MissingTargetFileError } from '../../errors/missing-targetfile-error';\nimport { MultiProjectResult } from '@snyk/cli-interface/legacy/plugin';\n\nexport async function inspect(\n root: string,\n targetFile: string,\n options: types.Options = {},\n): Promise<MultiProjectResult> {\n if (!targetFile) {\n throw MissingTargetFileError(root);\n }\n const isLockFileBased =\n targetFile.endsWith('package-lock.json') ||\n targetFile.endsWith('yarn.lock');\n\n const getLockFileDeps = isLockFileBased && !options.traverseNodeModules;\n const depTree: any = getLockFileDeps\n ? await lockParser.parse(root, targetFile, options)\n : await modulesParser.parse(root, targetFile, options);\n\n if (depTree?.meta?.lockfileVersion) {\n analytics.add('lockfileVersion', depTree.meta.lockfileVersion);\n }\n\n return {\n plugin: {\n name: 'snyk-nodejs-lockfile-parser',\n runtime: process.version,\n },\n scannedProjects: [{ depTree }],\n };\n}\n","import * as baseDebug from 'debug';\nconst debug = baseDebug('snyk-test');\nimport * as path from 'path';\nimport { spinner } from '../../spinner';\nimport * as analytics from '../../analytics';\nimport * as fs from 'fs';\nimport * as lockFileParser from 'snyk-nodejs-lockfile-parser';\nimport { PkgTree } from 'snyk-nodejs-lockfile-parser';\nimport { Options } from '../types';\n\nexport async function parse(\n root: string,\n targetFile: string,\n options: Options,\n): Promise<PkgTree> {\n const lockFileFullPath = path.resolve(root, targetFile);\n if (!fs.existsSync(lockFileFullPath)) {\n throw new Error(\n 'Lockfile ' + targetFile + ' not found at location: ' + lockFileFullPath,\n );\n }\n\n const fullPath = path.parse(lockFileFullPath);\n const manifestFileFullPath = path.resolve(fullPath.dir, 'package.json');\n const shrinkwrapFullPath = path.resolve(fullPath.dir, 'npm-shrinkwrap.json');\n\n if (!fs.existsSync(manifestFileFullPath)) {\n throw new Error(\n `Could not find package.json at ${manifestFileFullPath} ` +\n `(lockfile found at ${targetFile})`,\n );\n }\n\n if (fs.existsSync(shrinkwrapFullPath)) {\n throw new Error(\n 'Both `npm-shrinkwrap.json` and `package-lock.json` were found in ' +\n fullPath.dir +\n '.\\n' +\n 'Please run your command again specifying `--file=package.json` flag.',\n );\n }\n\n analytics.add('local', true);\n analytics.add('generating-node-dependency-tree', {\n lockFile: true,\n targetFile,\n });\n const resolveModuleSpinnerLabel = `Analyzing npm dependencies for ${lockFileFullPath}`;\n debug(resolveModuleSpinnerLabel);\n try {\n await spinner(resolveModuleSpinnerLabel);\n const strictOutOfSync = options.strictOutOfSync !== false;\n return lockFileParser.buildDepTreeFromFiles(\n root,\n manifestFileFullPath,\n lockFileFullPath,\n options.dev,\n strictOutOfSync,\n );\n } finally {\n await spinner.clear<void>(resolveModuleSpinnerLabel)();\n }\n}\n","import * as path from 'path';\nimport * as fs from 'fs';\nimport * as resolveNodeDeps from 'snyk-resolve-deps';\nimport * as baseDebug from 'debug';\nconst isEmpty = require('lodash.isempty');\nimport { spinner } from '../../spinner';\nimport * as analytics from '../../analytics';\nimport { Options } from '../types';\nimport { getFileContents } from '../../get-file-contents';\n\nconst debug = baseDebug('snyk-nodejs-plugin');\n\nexport async function parse(\n root: string,\n targetFile: string,\n options: Options,\n): Promise<resolveNodeDeps.PackageExpanded> {\n if (targetFile.endsWith('yarn.lock')) {\n options.file =\n options.file && options.file.replace('yarn.lock', 'package.json');\n }\n\n // package-lock.json falls back to package.json (used in wizard code)\n if (targetFile.endsWith('package-lock.json')) {\n options.file =\n options.file && options.file.replace('package-lock.json', 'package.json');\n }\n // check if there any dependencies\n const packageJsonFileName = path.resolve(root, options.file!);\n const packageManager = options.packageManager || 'npm';\n\n try {\n const packageJson = JSON.parse(\n getFileContents(root, packageJsonFileName).content,\n );\n\n let dependencies = packageJson.dependencies;\n if (options.dev) {\n dependencies = { ...dependencies, ...packageJson.devDependencies };\n }\n if (isEmpty(dependencies)) {\n return new Promise((resolve) =>\n resolve({\n name: packageJson.name || 'package.json',\n dependencies: {},\n version: packageJson.version,\n }),\n );\n }\n } catch (e) {\n debug(`Failed to read ${packageJsonFileName}: Error: ${e}`);\n throw new Error(\n `Failed to read ${packageJsonFileName}. Error: ${e.message}`,\n );\n }\n const nodeModulesPath = path.join(\n path.dirname(path.resolve(root, targetFile)),\n 'node_modules',\n );\n\n if (!fs.existsSync(nodeModulesPath)) {\n // throw a custom error\n throw new Error(\n \"Missing node_modules folder: we can't test \" +\n `without dependencies.\\nPlease run '${packageManager} install' first.`,\n );\n }\n analytics.add('local', true);\n analytics.add('generating-node-dependency-tree', {\n lockFile: false,\n targetFile,\n });\n\n const resolveModuleSpinnerLabel =\n 'Analyzing npm dependencies for ' +\n path.dirname(path.resolve(root, targetFile));\n try {\n await spinner.clear<void>(resolveModuleSpinnerLabel)();\n await spinner(resolveModuleSpinnerLabel);\n return resolveNodeDeps(\n root,\n Object.assign({}, options, { noFromArrays: true }),\n );\n } finally {\n await spinner.clear<void>(resolveModuleSpinnerLabel)();\n }\n}\n","import * as baseDebug from 'debug';\nimport * as pathUtil from 'path';\nconst sortBy = require('lodash.sortby');\nconst groupBy = require('lodash.groupby');\nimport * as micromatch from 'micromatch';\n\nconst debug = baseDebug('snyk-yarn-workspaces');\nimport * as lockFileParser from 'snyk-nodejs-lockfile-parser';\nimport {\n MultiProjectResultCustom,\n ScannedProjectCustom,\n} from '../get-multi-plugin-result';\nimport { getFileContents } from '../../get-file-contents';\nimport { NoSupportedManifestsFoundError } from '../../errors';\n\nexport async function processYarnWorkspaces(\n root: string,\n settings: {\n strictOutOfSync?: boolean;\n dev?: boolean;\n yarnWorkspaces?: boolean;\n },\n targetFiles: string[],\n): Promise<MultiProjectResultCustom> {\n // the order of yarnTargetFiles folders is important\n // must have the root level most folders at the top\n const mappedAndFiltered = targetFiles\n .map((p) => ({ path: p, ...pathUtil.parse(p) }))\n .filter((res) => ['package.json', 'yarn.lock'].includes(res.base));\n const sorted = sortBy(mappedAndFiltered, 'dir');\n const grouped = groupBy(sorted, 'dir');\n\n const yarnTargetFiles: {\n [dir: string]: Array<{\n path: string;\n base: string;\n dir: string;\n }>;\n } = grouped;\n\n debug(`Processing potential Yarn workspaces (${targetFiles.length})`);\n if (settings.yarnWorkspaces && Object.keys(yarnTargetFiles).length === 0) {\n throw NoSupportedManifestsFoundError([root]);\n }\n let yarnWorkspacesMap = {};\n const yarnWorkspacesFilesMap = {};\n const result: MultiProjectResultCustom = {\n plugin: {\n name: 'snyk-nodejs-yarn-workspaces',\n runtime: process.version,\n },\n scannedProjects: [],\n };\n let rootWorkspaceManifestContent = {};\n // the folders must be ordered highest first\n for (const directory of Object.keys(yarnTargetFiles)) {\n debug(`Processing ${directory} as a potential Yarn workspace`);\n let isYarnWorkspacePackage = false;\n let isRootPackageJson = false;\n const packageJsonFileName = pathUtil.join(directory, 'package.json');\n const packageJson = getFileContents(root, packageJsonFileName);\n yarnWorkspacesMap = {\n ...yarnWorkspacesMap,\n ...getWorkspacesMap(packageJson),\n };\n for (const workspaceRoot of Object.keys(yarnWorkspacesMap)) {\n const match = packageJsonBelongsToWorkspace(\n packageJsonFileName,\n yarnWorkspacesMap,\n workspaceRoot,\n );\n if (match) {\n debug(`${packageJsonFileName} matches an existing workspace pattern`);\n yarnWorkspacesFilesMap[packageJsonFileName] = {\n root: workspaceRoot,\n };\n isYarnWorkspacePackage = true;\n }\n if (packageJsonFileName === workspaceRoot) {\n isRootPackageJson = true;\n rootWorkspaceManifestContent = JSON.parse(packageJson.content);\n }\n }\n\n if (!(isYarnWorkspacePackage || isRootPackageJson)) {\n debug(\n `${packageJsonFileName} is not part of any detected workspace, skipping`,\n );\n continue;\n }\n try {\n const rootDir = isYarnWorkspacePackage\n ? pathUtil.dirname(yarnWorkspacesFilesMap[packageJsonFileName].root)\n : pathUtil.dirname(packageJsonFileName);\n const rootYarnLockfileName = pathUtil.join(rootDir, 'yarn.lock');\n const yarnLock = await getFileContents(root, rootYarnLockfileName);\n\n if (\n rootWorkspaceManifestContent.hasOwnProperty('resolutions') &&\n lockFileParser.getYarnLockfileType(yarnLock.content) ===\n lockFileParser.LockfileType.yarn2\n ) {\n const parsedManifestContent = JSON.parse(packageJson.content);\n packageJson.content = JSON.stringify({\n ...parsedManifestContent,\n resolutions: rootWorkspaceManifestContent['resolutions'],\n });\n }\n\n const res = await lockFileParser.buildDepTree(\n packageJson.content,\n yarnLock.content,\n settings.dev,\n lockFileParser.LockfileType.yarn,\n settings.strictOutOfSync !== false,\n );\n const project: ScannedProjectCustom = {\n packageManager: 'yarn',\n targetFile: pathUtil.relative(root, packageJson.fileName),\n depTree: res as any,\n plugin: {\n name: 'snyk-nodejs-lockfile-parser',\n runtime: process.version,\n },\n };\n result.scannedProjects.push(project);\n } catch (e) {\n if (settings.yarnWorkspaces) {\n throw e;\n }\n debug(`Error process workspace: ${packageJsonFileName}. ERROR: ${e}`);\n }\n }\n if (!result.scannedProjects.length) {\n debug(\n `No yarn workspaces detected in any of the ${targetFiles.length} target files.`,\n );\n }\n return result;\n}\n\ninterface YarnWorkspacesMap {\n [packageJsonName: string]: {\n workspaces: string[];\n };\n}\n\nexport function getWorkspacesMap(file: {\n content: string;\n fileName: string;\n}): YarnWorkspacesMap {\n const yarnWorkspacesMap = {};\n if (!file) {\n return yarnWorkspacesMap;\n }\n\n try {\n const rootFileWorkspacesDefinitions = lockFileParser.getYarnWorkspaces(\n file.content,\n );\n\n if (rootFileWorkspacesDefinitions && rootFileWorkspacesDefinitions.length) {\n yarnWorkspacesMap[file.fileName] = {\n workspaces: rootFileWorkspacesDefinitions,\n };\n }\n } catch (e) {\n debug('Failed to process a workspace', e.message);\n }\n return yarnWorkspacesMap;\n}\n\nexport function packageJsonBelongsToWorkspace(\n packageJsonFileName: string,\n yarnWorkspacesMap: YarnWorkspacesMap,\n workspaceRoot: string,\n): boolean {\n const workspaceRootFolder = pathUtil.dirname(\n workspaceRoot.replace(/\\\\/g, '/'),\n );\n const workspacesGlobs = (\n yarnWorkspacesMap[workspaceRoot].workspaces || []\n ).map((workspace) => pathUtil.join(workspaceRootFolder, workspace));\n\n const match = micromatch.isMatch(\n packageJsonFileName.replace(/\\\\/g, '/'),\n workspacesGlobs.map((p) =>\n pathUtil.normalize(pathUtil.join(p, '**')).replace(/\\\\/g, '/'),\n ),\n );\n return match;\n}\n","import { inspectors, Spec } from './inspectors';\nimport { MissingTargetFileError } from '../../errors/missing-targetfile-error';\nimport gemfileLockToDependencies = require('./gemfile-lock-to-dependencies');\nimport * as get from 'lodash.get';\nimport { MultiProjectResult } from '@snyk/cli-interface/legacy/plugin';\nimport * as types from '../types';\n\nexport async function inspect(\n root: string,\n targetFile: string,\n options: types.Options = {},\n): Promise<MultiProjectResult> {\n if (!targetFile) {\n throw MissingTargetFileError(root);\n }\n const specs = await gatherSpecs(root, targetFile, options);\n\n return {\n plugin: {\n name: 'bundled:rubygems',\n runtime: 'unknown',\n },\n scannedProjects: [\n {\n depTree: {\n name: specs.packageName,\n targetFile: specs.targetFile,\n dependencies: getDependenciesFromSpecs(specs),\n },\n },\n ],\n };\n}\n\nfunction getDependenciesFromSpecs(specs) {\n const gemfileLockBase64 = get(specs, 'files.gemfileLock.contents');\n const gemspecBase64 = get(specs, 'files.gemspec.contents');\n const contents = Buffer.from(\n gemfileLockBase64 || gemspecBase64,\n 'base64',\n ).toString();\n const dependencies = gemfileLockToDependencies(contents);\n return dependencies;\n}\n\nasync function gatherSpecs(\n root: string,\n targetFile: string,\n options: types.Options,\n): Promise<Spec> {\n for (const inspector of inspectors) {\n if (inspector.canHandle(targetFile)) {\n return await inspector.gatherSpecs(root, targetFile, options);\n }\n }\n\n throw new Error(`Could not handle rubygems file: ${targetFile}`);\n}\n","import * as path from 'path';\nimport { tryGetSpec } from './try-get-spec';\nimport { Spec } from './index';\nimport * as types from '../../types';\n\n/* Supported example patterns:\n * Gemfile\n * Gemfile.lock\n * rails.2.4.5.gemfile\n * rails.2.4.5.gemfile.lock\n * gemfiles/Gemfile.rails-2.4.5.lock\n * gemfiles/Gemfile.lock.rails-2.4.5\n */\n\nconst gemfileOrLockfilePattern = /.*[gG]emfile.*(\\.lock)?.*$/;\nconst gemfileLockPattern = /.*[gG]emfile.*(\\.lock).*$/;\n\nexport function canHandle(file: string): boolean {\n return !!file && gemfileOrLockfilePattern.test(path.basename(file));\n}\n\nexport async function gatherSpecs(\n root: string,\n target: string,\n options: types.Options,\n): Promise<Spec> {\n const { dir, name } = path.parse(target);\n const isGemfileLock = gemfileLockPattern.test(target);\n // if the target is a Gemfile we treat is as the lockfile\n const gemfileLock = await tryGetSpec(\n root,\n isGemfileLock ? target : path.join(target + '.lock'),\n );\n\n if (gemfileLock) {\n const basePackageName = path.basename(root);\n return {\n packageName: options.allSubProjects\n ? path.join(basePackageName, dir)\n : basePackageName,\n targetFile: path.join(dir, name),\n files: { gemfileLock },\n };\n } else {\n throw new Error(\n `Could not read ${target || 'Gemfile.lock'} lockfile: can't test ` +\n 'without dependencies.\\nPlease run `bundle install` first or' +\n ' if this is a custom file name re-run with --file=path/to/custom.gemfile.lock --package-manager=rubygems',\n );\n }\n}\n","import * as path from 'path';\nimport { Files, tryGetSpec } from './try-get-spec';\nimport { Spec } from './index';\n\nconst pattern = /\\.gemspec$/;\n\nexport function canHandle(file: string): boolean {\n return !!file && pattern.test(file);\n}\n\nexport async function gatherSpecs(root: string, target: string): Promise<Spec> {\n const targetName = path.basename(target);\n const targetDir = path.dirname(target);\n const files: Files = {};\n\n const gemspec = await tryGetSpec(root, path.join(targetDir, targetName));\n\n if (gemspec) {\n files.gemspec = gemspec;\n } else {\n throw new Error(`File not found: ${target}`);\n }\n\n const gemfileLock = await tryGetSpec(\n root,\n path.join(targetDir, 'Gemfile.lock'),\n );\n\n if (gemfileLock) {\n files.gemfileLock = gemfileLock;\n }\n\n return {\n packageName: path.basename(root),\n targetFile: path.join(targetDir, targetName),\n files,\n };\n}\n","import * as gemfile from './gemfile';\nimport * as gemspec from './gemspec';\nimport { Files } from './try-get-spec';\n\nexport interface Spec {\n packageName: string;\n targetFile: string;\n files: Files;\n}\n\nexport const inspectors = [gemfile, gemspec];\n","import * as path from 'path';\nimport * as fs from 'fs';\n\ninterface File {\n name: string;\n contents: string;\n}\n\nexport interface Files {\n gemfileLock?: File;\n gemspec?: File;\n}\n\nexport async function tryGetSpec(\n dir: string,\n name: string,\n): Promise<File | null> {\n const filePath = path.resolve(dir, name);\n if (fs.existsSync(filePath)) {\n return {\n name,\n contents: Buffer.from(fs.readFileSync(filePath)).toString('base64'),\n };\n }\n return null;\n}\n","import {\n analyzeFolders,\n AnalysisSeverity,\n MAX_FILE_SIZE,\n} from '@snyk/code-client';\nimport { ReportingDescriptor, Result } from 'sarif';\nimport { SEVERITY } from '../../snyk-test/legacy';\nimport { api } from '../../api-token';\nimport config from '../../config';\nimport { getBase64Encoding } from '../../code-config';\nimport { spinner } from '../../spinner';\nimport { Options } from '../../types';\nimport { SastSettings, Log } from './types';\nimport { analysisProgressUpdate } from './utils';\nimport {\n FeatureNotSupportedBySnykCodeError,\n MissingConfigurationError,\n} from './errors';\nimport { getProxyForUrl } from 'proxy-from-env';\nimport { bootstrap } from 'global-agent';\nimport chalk from 'chalk';\nimport * as debugLib from 'debug';\nimport { getCodeClientProxyUrl } from '../../code-config';\n\nconst debug = debugLib('snyk-code');\n\nexport async function getCodeAnalysisAndParseResults(\n root: string,\n options: Options,\n sastSettings: SastSettings,\n requestId: string,\n): Promise<Log | null> {\n await spinner.clearAll();\n analysisProgressUpdate();\n const codeAnalysis = await getCodeAnalysis(\n root,\n options,\n sastSettings,\n requestId,\n );\n spinner.clearAll();\n return parseSecurityResults(codeAnalysis);\n}\n\nasync function getCodeAnalysis(\n root: string,\n options: Options,\n sastSettings: SastSettings,\n requestId: string,\n): Promise<Log | null> {\n const isLocalCodeEngineEnabled = isLocalCodeEngine(sastSettings);\n if (isLocalCodeEngineEnabled) {\n validateLocalCodeEngineUrl(sastSettings.localCodeEngine.url);\n }\n\n const source = 'snyk-cli';\n const baseURL = isLocalCodeEngineEnabled\n ? sastSettings.localCodeEngine.url\n : getCodeClientProxyUrl();\n\n const base64Encoding = getBase64Encoding();\n debug(`base64 encoding enabled: ${base64Encoding}`);\n\n // TODO(james) This mirrors the implementation in request.ts and we need to use this for deeproxy calls\n // This ensures we support lowercase http(s)_proxy values as well\n // The weird IF around it ensures we don't create an envvar with\n // a value of undefined, which throws error when trying to use it as a proxy\n if (process.env.HTTP_PROXY || process.env.http_proxy) {\n process.env.HTTP_PROXY = process.env.HTTP_PROXY || process.env.http_proxy;\n }\n if (process.env.HTTPS_PROXY || process.env.https_proxy) {\n process.env.HTTPS_PROXY =\n process.env.HTTPS_PROXY || process.env.https_proxy;\n }\n\n const proxyUrl = getProxyForUrl(baseURL);\n if (proxyUrl) {\n bootstrap({\n environmentVariableNamespace: '',\n });\n }\n\n const sessionToken = api() || '';\n\n const severity = options.severityThreshold\n ? severityToAnalysisSeverity(options.severityThreshold)\n : AnalysisSeverity.info;\n const result = await analyzeFolders({\n connection: { baseURL, sessionToken, source, requestId, base64Encoding },\n analysisOptions: { severity },\n fileOptions: { paths: [root] },\n analysisContext: {\n initiator: 'CLI',\n flow: source,\n orgDisplayName: sastSettings.org,\n projectName: config.PROJECT_NAME,\n org: {\n name: sastSettings.org || 'unknown',\n displayName: 'unknown',\n publicId: 'unknown',\n flags: {},\n },\n },\n languages: sastSettings.supportedLanguages,\n });\n\n if (result?.fileBundle.skippedOversizedFiles?.length) {\n debug(\n '\\n',\n chalk.yellow(\n `Warning!\\nFiles were skipped in the analysis due to their size being greater than ${MAX_FILE_SIZE}B. Skipped files: ${[\n ...result.fileBundle.skippedOversizedFiles,\n ].join(', ')}`,\n ),\n );\n }\n\n if (result?.analysisResults.type === 'sarif') {\n return result.analysisResults.sarif;\n }\n return null;\n}\n\nfunction severityToAnalysisSeverity(severity: SEVERITY): AnalysisSeverity {\n if (severity === SEVERITY.CRITICAL) {\n throw new FeatureNotSupportedBySnykCodeError(SEVERITY.CRITICAL);\n }\n const severityLevel = {\n low: 1,\n medium: 2,\n high: 3,\n };\n return severityLevel[severity];\n}\n\nfunction parseSecurityResults(codeAnalysis: Log | null): Log | null {\n let securityRulesMap;\n\n if (!codeAnalysis) {\n return codeAnalysis;\n }\n\n const rules = codeAnalysis.runs[0].tool.driver.rules;\n const results = codeAnalysis.runs[0].results;\n\n if (rules) {\n securityRulesMap = getSecurityRulesMap(rules);\n codeAnalysis.runs[0].tool.driver.rules = Object.values(securityRulesMap);\n }\n if (results && securityRulesMap) {\n codeAnalysis.runs[0].results = getSecurityResultsOnly(\n results,\n Object.keys(securityRulesMap),\n );\n }\n\n return codeAnalysis;\n}\n\nfunction getSecurityRulesMap(\n rules: ReportingDescriptor[],\n): { [ruleId: string]: ReportingDescriptor[] } {\n const securityRulesMap = rules.reduce((acc, rule) => {\n const { id: ruleId, properties } = rule;\n const isSecurityRule = properties?.categories?.some(\n (category) => category.toLowerCase() === 'security',\n );\n if (isSecurityRule) {\n acc[ruleId] = rule;\n }\n return acc;\n }, {});\n\n return securityRulesMap;\n}\n\nfunction getSecurityResultsOnly(\n results: Result[],\n securityRules: string[],\n): Result[] {\n const securityResults = results.reduce((acc: Result[], result: Result) => {\n const securityRule = securityRules.find((sr) => sr === result?.ruleId);\n if (securityRule) {\n result.ruleIndex = securityRules.indexOf(securityRule);\n acc.push(result);\n }\n return acc;\n }, []);\n\n return securityResults;\n}\n\nfunction isLocalCodeEngine(sastSettings: SastSettings): boolean {\n const { sastEnabled, localCodeEngine } = sastSettings;\n\n return sastEnabled && localCodeEngine.enabled;\n}\n\nfunction validateLocalCodeEngineUrl(localCodeEngineUrl: string): void {\n if (localCodeEngineUrl.length === 0) {\n throw new MissingConfigurationError(\n 'Snyk Code Local Engine. Refer to our docs on https://docs.snyk.io/products/snyk-code/deployment-options/snyk-code-local-engine/cli-and-ide to learn more',\n );\n }\n}\n","import { makeRequest } from '../../request';\n\nimport { getAuthHeader } from '../../api-token';\nimport config from '../../config';\nimport { assembleQueryString } from '../../snyk-test/common';\nimport { SastSettings, TrackUsageResponse } from './types';\n\nexport async function getSastSettingsForOrg(org): Promise<SastSettings> {\n const response = await makeRequest({\n method: 'GET',\n headers: {\n Authorization: getAuthHeader(),\n },\n qs: assembleQueryString({ org }),\n url: `${config.API}/cli-config/settings/sast`,\n gzip: true,\n json: true,\n });\n\n return response.body as SastSettings;\n}\n\nexport async function trackUsage(org): Promise<TrackUsageResponse> {\n const response = await makeRequest({\n method: 'POST',\n headers: {\n Authorization: getAuthHeader(),\n },\n qs: assembleQueryString({ org }),\n url: `${config.API}/track-sast-usage/cli`,\n gzip: true,\n json: true,\n });\n\n return response.body as TrackUsageResponse;\n}\n","export { MissingConfigurationError } from './missing-configuration-error';\nexport { FeatureNotSupportedBySnykCodeError } from './unsupported-feature-snyk-code-error';\n","import { CustomError } from '../../../errors/custom-error';\n\nexport class MissingConfigurationError extends CustomError {\n public readonly action: string;\n\n constructor(action: string, additionalUserHelp = '') {\n super(`Missing configuration for ${action}.`);\n this.code = 422;\n this.action = action;\n\n this.userMessage = `'Configuration is missing or wrong for ${action}'. ${additionalUserHelp}`;\n }\n}\n","import { CustomError } from '../../../errors/custom-error';\n\nexport class FeatureNotSupportedBySnykCodeError extends CustomError {\n public readonly feature: string;\n\n constructor(feature: string, additionalUserHelp = '') {\n super(`Unsupported action for ${feature}.`);\n this.code = 422;\n this.feature = feature;\n\n this.userMessage = `'${feature}' is not supported for snyk code. ${additionalUserHelp}`;\n }\n}\n","import * as Sarif from 'sarif';\nimport * as Debug from 'debug';\nimport chalk from 'chalk';\nimport { icon, color } from '../../../theme';\nimport { colorTextBySeverity, SEVERITY } from '../../../snyk-test/common';\nimport { rightPadWithSpaces } from '../../../right-pad';\nimport { Options } from '../../../types';\nimport { Log } from '../types';\n\nconst debug = Debug('code-output');\n\nexport function getCodeDisplayedOutput(\n codeTest: Log,\n meta: string,\n prefix: string,\n): string {\n let issues: { [index: string]: string[] } = {};\n\n if (codeTest.runs[0].results) {\n const results: Sarif.Result[] = codeTest.runs[0].results;\n\n const rulesMap: {\n [ruleId: string]: Sarif.ReportingDescriptor;\n } = getRulesMap(codeTest.runs[0].tool.driver.rules || []);\n\n issues = getIssues(results, rulesMap);\n }\n\n const issuesText =\n issues.low.join('') + issues.medium.join('') + issues.high.join('');\n const summaryOKText = color.status.success(`${icon.VALID} Test completed`);\n const codeIssueSummary = getCodeIssuesSummary(issues);\n\n return (\n prefix +\n issuesText +\n '\\n' +\n summaryOKText +\n '\\n\\n' +\n meta +\n '\\n\\n' +\n chalk.bold('Summary:') +\n '\\n\\n' +\n codeIssueSummary +\n '\\n\\n'\n );\n}\n\nfunction getCodeIssuesSummary(issues: { [index: string]: string[] }): string {\n const lowSeverityText = issues.low.length\n ? colorTextBySeverity(SEVERITY.LOW, ` ${issues.low.length} [Low] `)\n : '';\n const mediumSeverityText = issues.medium.length\n ? colorTextBySeverity(\n SEVERITY.MEDIUM,\n ` ${issues.medium.length} [Medium] `,\n )\n : '';\n const highSeverityText = issues.high.length\n ? colorTextBySeverity(SEVERITY.HIGH, ` ${issues.high.length} [High] `)\n : '';\n\n const codeIssueCount =\n issues.low.length + issues.medium.length + issues.high.length;\n const codeIssueFound = ` ${codeIssueCount} Code issue${\n codeIssueCount > 0 ? 's' : ''\n } found`;\n const issuesBySeverityText =\n highSeverityText + mediumSeverityText + lowSeverityText;\n const vulnPathsText = color.status.success(\n `${icon.VALID} Awesome! No issues were found.`,\n );\n\n return codeIssueCount > 0\n ? codeIssueFound + '\\n' + issuesBySeverityText\n : vulnPathsText;\n}\n\nfunction getIssues(\n results: Sarif.Result[],\n rulesMap: { [ruleId: string]: Sarif.ReportingDescriptor },\n): { [index: string]: string[] } {\n const issuesInit: { [index: string]: string[] } = {\n low: [],\n medium: [],\n high: [],\n };\n\n const issues = results.reduce((acc, res) => {\n if (res.locations?.length) {\n const location = res.locations[0].physicalLocation;\n if (res.level && location?.artifactLocation && location?.region) {\n const severity = sarifToSeverityLevel(res.level);\n const ruleId = res.ruleId!;\n if (!(ruleId in rulesMap)) {\n debug('Rule ID does not exist in the rules list');\n }\n const ruleName =\n rulesMap[ruleId].shortDescription?.text ||\n rulesMap[ruleId].name ||\n '';\n const ruleIdSeverityText = colorTextBySeverity(\n severity,\n ` ${icon.ISSUE} [${severity}] ${chalk.bold(ruleName)}`,\n );\n const artifactLocationUri = location.artifactLocation.uri;\n const startLine = location.region.startLine;\n const text = res.message.text;\n const title = ruleIdSeverityText;\n const path = ` Path: ${artifactLocationUri}, line ${startLine}`;\n const info = ` Info: ${text}`;\n acc[severity.toLowerCase()].push(`${title} \\n ${path} \\n ${info}\\n\\n`);\n }\n }\n return acc;\n }, issuesInit);\n\n return issues;\n}\n\nfunction getRulesMap(\n rules: Sarif.ReportingDescriptor[],\n): { [ruleId: string]: Sarif.ReportingDescriptor } {\n const rulesMapByID = rules.reduce((acc, rule) => {\n acc[rule.id] = rule;\n return acc;\n }, {});\n\n return rulesMapByID;\n}\n\nfunction sarifToSeverityLevel(\n sarifConfigurationLevel: Sarif.ReportingConfiguration.level,\n): string {\n const severityLevel = {\n note: 'Low',\n warning: 'Medium',\n error: 'High',\n };\n\n return severityLevel[sarifConfigurationLevel] as string;\n}\n\nexport function getMeta(options: Options, path: string): string {\n const padToLength = 19; // chars to align\n const orgName = options.org || '';\n const projectPath = options.path || path;\n const meta = [\n rightPadWithSpaces('Organization: ', padToLength) + chalk.bold(orgName),\n ];\n meta.push(\n rightPadWithSpaces('Test type: ', padToLength) +\n chalk.bold('Static code analysis'),\n );\n meta.push(\n rightPadWithSpaces('Project path: ', padToLength) + chalk.bold(projectPath),\n );\n\n return meta.join('\\n');\n}\n\nexport function getPrefix(path: string): string {\n return chalk.bold.white('\\nTesting ' + path + ' ...\\n\\n');\n}\n","import chalk from 'chalk';\nimport * as debugLib from 'debug';\nimport { v4 as uuidv4 } from 'uuid';\nimport { getCodeAnalysisAndParseResults } from './analysis';\nimport { getSastSettings } from './settings';\nimport {\n getCodeDisplayedOutput,\n getPrefix,\n getMeta,\n} from './format/output-format';\nimport { EcosystemPlugin } from '../../ecosystems/types';\nimport { FailedToRunTestError, NoSupportedSastFiles } from '../../errors';\nimport { jsonStringifyLargeObject } from '../../json';\nimport * as analytics from '../../analytics';\n\nconst debug = debugLib('snyk-code');\n\nexport const codePlugin: EcosystemPlugin = {\n // We currently don't use scan/display. we will need to consolidate ecosystem plugins\n // to accept flows that act differently in the `testDependencies` step, as we have here\n async scan() {\n return null as any;\n },\n async display() {\n return '';\n },\n async test(paths, options) {\n const requestId = uuidv4();\n debug(`Request ID: ${requestId}`);\n try {\n analytics.add('sast-scan', true);\n const sastSettings = await getSastSettings(options);\n // Currently code supports only one path\n const path = paths[0];\n\n const sarifTypedResult = await getCodeAnalysisAndParseResults(\n path,\n options,\n sastSettings,\n requestId,\n );\n\n if (!sarifTypedResult) {\n throw new NoSupportedSastFiles();\n }\n const numOfIssues = sarifTypedResult!.runs?.[0].results?.length || 0;\n analytics.add('sast-issues-found', numOfIssues);\n let newOrg = options.org;\n if (!newOrg && sastSettings.org) {\n newOrg = sastSettings.org;\n }\n const meta = getMeta({ ...options, org: newOrg }, path);\n const prefix = getPrefix(path);\n let readableResult = getCodeDisplayedOutput(\n sarifTypedResult!,\n meta,\n prefix,\n );\n if (numOfIssues > 0 && options['no-markdown']) {\n sarifTypedResult.runs?.[0].results?.forEach(({ message }) => {\n delete message.markdown;\n });\n }\n let sarifResult: string | undefined;\n if (options['sarif-file-output']) {\n sarifResult = jsonStringifyLargeObject(sarifTypedResult);\n }\n let jsonResult: string | undefined;\n if (options['json-file-output']) {\n jsonResult = jsonStringifyLargeObject(sarifTypedResult);\n }\n if (options.sarif || options.json) {\n readableResult = jsonStringifyLargeObject(sarifTypedResult);\n }\n if (numOfIssues > 0) {\n throwIssuesError({ readableResult, sarifResult, jsonResult });\n }\n return sarifResult ? { readableResult, sarifResult } : { readableResult };\n } catch (error) {\n let err: Error;\n if (isCodeClientError(error)) {\n const isUnauthorized = isUnauthorizedError(error)\n ? 'Unauthorized: '\n : '';\n err = new FailedToRunTestError(\n `${isUnauthorized}Failed to run 'code test'`,\n error.statusCode,\n );\n } else if (error instanceof Error) {\n err = error;\n } else if (isUnauthorizedError(error)) {\n err = new FailedToRunTestError(error.message, error.code);\n } else {\n err = new Error(error);\n }\n debug(\n chalk.bold.red(\n `requestId: ${requestId} statusCode:${error.code ||\n error.statusCode}, message: ${error.statusText || error.message}`,\n ),\n );\n throw err;\n }\n },\n};\n\nfunction isCodeClientError(error: object): boolean {\n return (\n error.hasOwnProperty('statusCode') &&\n error.hasOwnProperty('statusText') &&\n error.hasOwnProperty('apiName')\n );\n}\n\nfunction isUnauthorizedError(error: any): boolean {\n return (\n error.statusCode === 401 ||\n error.statusCode === 403 ||\n error.code === 403 ||\n error.code === 401\n );\n}\n\nfunction throwIssuesError(args: {\n readableResult: string;\n sarifResult: string | undefined;\n jsonResult: string | undefined;\n}): Error {\n const err = new Error(args.readableResult) as any;\n err.code = 'VULNS';\n if (args.sarifResult !== undefined) {\n err.sarifStringifiedResults = args.sarifResult;\n }\n if (args.jsonResult !== undefined) {\n err.jsonStringifiedResults = args.jsonResult;\n }\n throw err;\n}\n","import { Options } from '../../types';\nimport { SastSettings } from './types';\nimport config from '../../config';\nimport { getSastSettingsForOrg, trackUsage } from './checks';\n\nimport {\n AuthFailedError,\n FailedToRunTestError,\n FeatureNotSupportedForOrgError,\n NotFoundError,\n} from '../../errors';\n\nexport async function getSastSettings(options: Options): Promise<SastSettings> {\n const org = options.org || config.org;\n\n // This is an unexpected path, code plugin executed for non-code command.\n if (!options.code) {\n throw new FeatureNotSupportedForOrgError(org);\n }\n\n const sastSettingsResponse = await getSastSettingsForOrg(org);\n\n if (\n sastSettingsResponse?.code === 401 ||\n sastSettingsResponse?.code === 403\n ) {\n throw AuthFailedError(\n sastSettingsResponse.error,\n sastSettingsResponse.code,\n );\n }\n\n if (sastSettingsResponse?.code === 404) {\n throw new NotFoundError(sastSettingsResponse?.userMessage);\n }\n\n if (!sastSettingsResponse.sastEnabled) {\n throw new FeatureNotSupportedForOrgError(\n org,\n 'Snyk Code',\n 'enable in Settings > Snyk Code',\n );\n }\n\n const trackUsageResponse = await trackUsage(org);\n if (trackUsageResponse.code === 429) {\n throw new FailedToRunTestError(\n trackUsageResponse.userMessage,\n trackUsageResponse.code,\n );\n }\n return sastSettingsResponse;\n}\n","export { analysisProgressUpdate } from './testEmitter';\n","import { emitter as codeEmitter } from '@snyk/code-client';\nimport { spinner } from '../../../spinner';\nimport * as debugLib from 'debug';\n\nexport function analysisProgressUpdate(): void {\n let currentMessage = '';\n const showSpinner = (message: string): Promise<void> | undefined => {\n if (currentMessage === message) return;\n\n spinner.clear<void>(currentMessage)();\n currentMessage = message;\n return spinner(message);\n };\n\n codeEmitter.on('supportedFilesLoaded', () =>\n showSpinner(`Supported extensions loaded`),\n );\n codeEmitter.on('scanFilesProgress', (processed: number) =>\n showSpinner(`Scanning files: ${Math.round(processed / 100)}00`),\n );\n codeEmitter.on('createBundleProgress', (processed: number, total: number) =>\n showSpinner(`Batching file upload: ${processed} / ${total}`),\n );\n codeEmitter.on('uploadBundleProgress', (processed: number, total: number) =>\n showSpinner(`Upload progress: ${processed} / ${total}`),\n );\n codeEmitter.on('analyseProgress', (data: any) =>\n showSpinner(`${data.status}: ${Math.round(data.progress * 100)}%`),\n );\n codeEmitter.on('sendError', (error) => {\n throw error;\n });\n codeEmitter.on('apiRequestLog', (data) => {\n const debug = debugLib('snyk-code');\n debug('---> API request log ', data);\n });\n}\n","import * as snykPolicyLib from 'snyk-policy';\nimport * as debugModule from 'debug';\nimport { PackageExpanded } from 'snyk-resolve-deps';\n\nimport { pluckPolicies } from '.';\nimport { SupportedPackageManagers } from '../package-managers';\nimport { PackageJson, PolicyOptions } from '../types';\nimport * as analytics from '../analytics';\n\nconst debug = debugModule('snyk');\n\nexport async function findAndLoadPolicy(\n root: string,\n scanType: SupportedPackageManagers | 'docker' | 'iac' | 'cpp',\n options: PolicyOptions,\n pkg?: PackageExpanded,\n scannedProjectFolder?: string,\n): Promise<Policy | undefined> {\n const isDocker = scanType === 'docker';\n const isNodeProject = ['npm', 'yarn'].includes(scanType);\n // monitor\n let policyLocations: string[] = [\n options['policy-path'] || scannedProjectFolder || root,\n ];\n if (isDocker) {\n policyLocations = policyLocations.filter((loc) => loc !== root);\n } else if (isNodeProject) {\n // TODO: pluckPolicies expects a package.json object to\n // find and apply policies in node_modules\n policyLocations = policyLocations.concat(pluckPolicies(pkg as PackageJson));\n }\n\n debug('Potential policy locations found:', policyLocations);\n analytics.add('policies', policyLocations.length);\n analytics.add('policyLocations', policyLocations);\n\n if (policyLocations.length === 0) {\n return;\n }\n let policy;\n try {\n policy = await snykPolicyLib.load(policyLocations, options);\n } catch (err) {\n // note: inline catch, to handle error from .load\n // if the .snyk file wasn't found, it is fine\n if (err.code !== 'ENOENT' && err.code !== 'ENOTDIR') {\n throw err;\n }\n }\n return policy;\n}\n\nexport interface Policy {\n filter(vulns: any, root?: string, matchStrategy?: string): any;\n exclude?: { [key: string]: string[] };\n ignore?: any;\n}\n","export { pluckPolicies } from './pluck-policies';\nexport { findAndLoadPolicy } from './find-and-load-policy';\n","const flatten = require('lodash.flatten');\nimport { PackageExpanded } from 'snyk-resolve-deps';\n\nexport function pluckPolicies(pkg: PackageExpanded): string[] | string {\n if (!pkg) {\n return [];\n }\n\n if (pkg.snyk) {\n return pkg.snyk;\n }\n\n if (!pkg.dependencies) {\n return [];\n }\n\n return flatten(\n Object.keys(pkg.dependencies)\n .map((name: string) => pluckPolicies(pkg.dependencies[name]))\n .filter(Boolean),\n );\n}\n","import { sleep } from '../common';\nimport { ScanResult } from '../ecosystems/types';\nimport {\n ResolutionMeta,\n ResolveAndMonitorFactsResponse,\n ResolveAndTestFactsResponse,\n} from './types';\nimport { FailedToRunTestError } from '../errors';\n\nexport async function delayNextStep(\n attemptsCount: number,\n maxAttempts: number,\n pollInterval: number,\n): Promise<void> {\n attemptsCount++;\n checkPollingAttempts(maxAttempts)(attemptsCount);\n await sleep(pollInterval);\n}\n\nfunction checkPollingAttempts(maxAttempts: number) {\n return (attemptsCount: number): void | Error => {\n if (attemptsCount > maxAttempts) {\n throw new Error('Exceeded Polling maxAttempts');\n }\n };\n}\n\nexport function extractResolutionMetaFromScanResult({\n name,\n target,\n identity,\n policy,\n targetReference,\n}: ScanResult): ResolutionMeta {\n return {\n name,\n target,\n identity,\n policy,\n targetReference,\n };\n}\n\nexport function handleProcessingStatus(\n response: ResolveAndMonitorFactsResponse | ResolveAndTestFactsResponse,\n): void {\n if (response?.status === 'CANCELLED' || response?.status === 'ERROR') {\n throw new FailedToRunTestError(\n 'Failed to process the project. Please run the command again with the `-d` flag and contact support@snyk.io with the contents of the output',\n );\n }\n}\n","import config from '../config';\nimport { isCI } from '../is-ci';\nimport { makeRequest } from '../request/promise';\nimport { Contributor, Options } from '../types';\n\nimport { assembleQueryString } from '../../lib/snyk-test/common';\nimport { getAuthHeader } from '../api-token';\nimport { MonitorDependenciesResponse, ScanResult } from '../ecosystems/types';\nimport {\n ResolutionMeta,\n ResolveAndMonitorFactsResponse,\n ResolveFactsState,\n} from './types';\nimport { delayNextStep, handleProcessingStatus } from './common';\nimport {\n generateProjectAttributes,\n generateTags,\n} from '../../cli/commands/monitor';\n\nexport async function requestMonitorPollingToken(\n options: Options,\n isAsync: boolean,\n scanResult: ScanResult,\n): Promise<ResolveFactsState> {\n if (scanResult?.target && scanResult.target['remoteUrl'] === '') {\n scanResult.target['remoteUrl'] = scanResult.name;\n }\n\n const payload = {\n method: 'PUT',\n url: `${config.API}/monitor-dependencies`,\n json: true,\n headers: {\n 'x-is-ci': isCI(),\n authorization: getAuthHeader(),\n },\n body: {\n isAsync,\n scanResult,\n method: 'cli',\n },\n qs: { ...assembleQueryString(options) },\n };\n return await makeRequest<ResolveAndMonitorFactsResponse>(payload);\n}\n\nexport async function pollingMonitorWithTokenUntilDone(\n token: string,\n isAsync: boolean,\n options: Options,\n pollInterval: number,\n attemptsCount: number,\n maxAttempts = Infinity,\n resolutionMeta: ResolutionMeta | undefined,\n contributors: Contributor[] = [],\n): Promise<MonitorDependenciesResponse> {\n const payload = {\n method: 'PUT',\n url: `${config.API}/monitor-dependencies/${token}`,\n json: true,\n headers: {\n 'x-is-ci': isCI(),\n authorization: getAuthHeader(),\n },\n qs: { ...assembleQueryString(options) },\n body: {\n isAsync,\n resolutionMeta,\n contributors,\n method: 'cli',\n tags: generateTags(options),\n attributes: generateProjectAttributes(options),\n projectName:\n resolutionMeta?.name || options['project-name'] || config.PROJECT_NAME,\n },\n };\n\n const response = await makeRequest<ResolveAndMonitorFactsResponse>(payload);\n\n handleProcessingStatus(response);\n\n if (response.ok && response.isMonitored) {\n return response;\n }\n\n await delayNextStep(attemptsCount, maxAttempts, pollInterval);\n return await pollingMonitorWithTokenUntilDone(\n token,\n isAsync,\n options,\n pollInterval,\n attemptsCount,\n maxAttempts,\n resolutionMeta,\n contributors,\n );\n}\n","import config from '../config';\nimport { isCI } from '../is-ci';\nimport { makeRequest } from '../request/promise';\nimport { Options } from '../types';\n\nimport { assembleQueryString } from '../snyk-test/common';\nimport { getAuthHeader } from '../api-token';\nimport { ScanResult } from '../ecosystems/types';\n\nimport { ResolveAndTestFactsResponse } from './types';\nimport { delayNextStep, handleProcessingStatus } from './common';\nimport { TestDependenciesResult } from '../snyk-test/legacy';\n\nexport async function requestTestPollingToken(\n options: Options,\n isAsync: boolean,\n scanResult: ScanResult,\n): Promise<ResolveAndTestFactsResponse> {\n const payload = {\n method: 'POST',\n url: `${config.API}/test-dependencies`,\n json: true,\n headers: {\n 'x-is-ci': isCI(),\n authorization: getAuthHeader(),\n },\n body: {\n isAsync,\n scanResult,\n },\n qs: assembleQueryString(options),\n };\n return await makeRequest<ResolveAndTestFactsResponse>(payload);\n}\n\nexport async function pollingTestWithTokenUntilDone(\n token: string,\n type: string,\n options: Options,\n pollInterval: number,\n attemptsCount: number,\n maxAttempts = Infinity,\n): Promise<TestDependenciesResult> {\n const payload = {\n method: 'GET',\n url: `${config.API}/test-dependencies/${token}`,\n json: true,\n headers: {\n 'x-is-ci': isCI(),\n authorization: getAuthHeader(),\n },\n qs: { ...assembleQueryString(options), type },\n };\n\n const response = await makeRequest<ResolveAndTestFactsResponse>(payload);\n\n handleProcessingStatus(response);\n\n if (response.result) {\n const {\n issues,\n issuesData,\n depGraphData,\n depsFilePaths,\n fileSignaturesDetails,\n vulnerabilities,\n path,\n dependencyCount,\n packageManager,\n } = response.result;\n return {\n issues,\n issuesData,\n depGraphData,\n depsFilePaths,\n fileSignaturesDetails,\n vulnerabilities,\n path,\n dependencyCount,\n packageManager,\n };\n }\n\n await delayNextStep(attemptsCount, maxAttempts, pollInterval);\n return await pollingTestWithTokenUntilDone(\n token,\n type,\n options,\n pollInterval,\n attemptsCount,\n maxAttempts,\n );\n}\n","import config from './config';\nimport * as depGraphLib from '@snyk/dep-graph';\nimport { DepDict, Options, MonitorOptions } from './types';\nimport { legacyCommon as legacyApi } from '@snyk/cli-interface';\nimport { countPathsToGraphRoot } from './utils';\nimport { jsonStringifyLargeObject } from './json';\n\nexport async function maybePrintDepGraph(\n options: Options | MonitorOptions,\n depGraph: depGraphLib.DepGraph,\n) {\n // TODO @boost: remove this logic once we get a valid depGraph print format\n const graphPathsCount = countPathsToGraphRoot(depGraph);\n const hasTooManyPaths = graphPathsCount > config.PRUNE_DEPS_THRESHOLD;\n\n if (!hasTooManyPaths) {\n const depTree = (await depGraphLib.legacy.graphToDepTree(\n depGraph,\n depGraph.pkgManager.name,\n )) as legacyApi.DepTree;\n maybePrintDepTree(options, depTree);\n } else {\n if (options['print-deps']) {\n if (options.json) {\n console.warn(\n '--print-deps --json option not yet supported for large projects. Displaying graph json output instead',\n );\n // TODO @boost: add as output graphviz 'dot' file to visualize?\n console.log(jsonStringifyLargeObject(depGraph.toJSON()));\n } else {\n console.warn(\n '--print-deps option not yet supported for large projects. Try with --json.',\n );\n }\n }\n }\n}\n\n// This option is still experimental and might be deprecated.\n// It might be a better idea to convert it to a command (i.e. do not perform test/monitor).\nexport function maybePrintDepTree(\n options: Options | MonitorOptions,\n rootPackage: legacyApi.DepTree,\n) {\n if (options['print-deps']) {\n if (options.json) {\n // Will produce 2 JSON outputs, one for the deps, one for the vuln scan.\n console.log(jsonStringifyLargeObject(rootPackage));\n } else {\n printDepsForTree({ [rootPackage.name!]: rootPackage });\n }\n }\n}\n\nfunction printDepsForTree(depDict: DepDict, prefix = '') {\n let counter = 0;\n const keys = Object.keys(depDict);\n for (const name of keys) {\n const dep = depDict[name];\n let branch = '├─ ';\n const last = counter === keys.length - 1;\n if (last) {\n branch = '└─ ';\n }\n console.log(\n prefix +\n (prefix ? branch : '') +\n dep.name +\n ' @ ' +\n (dep.version ? dep.version : ''),\n );\n if (dep.dependencies) {\n printDepsForTree(dep.dependencies, prefix + (last ? ' ' : '│ '));\n }\n counter++;\n }\n}\n","import * as gitTargetBuilder from './target-builders/git';\nimport * as containerTargetBuilder from './target-builders/container';\nimport { GitTarget, ContainerTarget } from './types';\nimport { DepTree } from '../types';\nimport { InvalidRemoteUrlError } from '../errors/invalid-remote-url-error';\nimport { ScannedProject } from '@snyk/cli-interface/legacy/common';\n\nconst TARGET_BUILDERS = [containerTargetBuilder, gitTargetBuilder];\ninterface Options {\n 'remote-repo-url'?: string;\n docker?: boolean; // docker is coming from Options/TestOptions\n isDocker?: boolean; // isDocker coming from MonitorMeta\n}\nexport async function getInfo(\n scannedProject: ScannedProject,\n options: Options,\n packageInfo?: DepTree,\n): Promise<GitTarget | ContainerTarget | null> {\n const isFromContainer = options.docker || options.isDocker || false;\n for (const builder of TARGET_BUILDERS) {\n const target = await builder.getInfo({\n isFromContainer,\n scannedProject,\n packageInfo,\n });\n\n if (target) {\n const remoteUrl = options['remote-repo-url'];\n\n if (!remoteUrl) {\n return target;\n }\n\n if (typeof remoteUrl !== 'string') {\n throw new InvalidRemoteUrlError();\n }\n return { ...target, remoteUrl };\n }\n }\n\n return null;\n}\n","import { DepTree } from '../../types';\nimport { ContainerTarget } from '../types';\nimport { ScannedProject } from '@snyk/cli-interface/legacy/common';\n\nexport async function getInfo({\n isFromContainer,\n scannedProject,\n packageInfo,\n}: {\n isFromContainer: boolean;\n scannedProject: ScannedProject;\n packageInfo?: DepTree;\n}): Promise<ContainerTarget | null> {\n // safety check\n if (!isFromContainer) {\n return null;\n }\n\n const imageNameOnProjectMeta =\n scannedProject.meta && scannedProject.meta.imageName;\n return {\n image:\n imageNameOnProjectMeta ||\n (packageInfo as any)?.image ||\n packageInfo?.name,\n };\n}\n","import * as url from 'url';\nimport subProcess = require('../../sub-process');\nimport { GitTarget } from '../types';\n\n// for scp-like syntax [user@]server:project.git\nconst originRegex = /(.+@)?(.+):(.+$)/;\n\nexport async function getInfo({\n isFromContainer,\n cwd,\n}: {\n isFromContainer: boolean;\n cwd?: string;\n}): Promise<GitTarget | null> {\n // safety check\n if (isFromContainer) {\n return null;\n }\n\n const target: GitTarget = {};\n\n try {\n const origin: string | null | undefined = (\n await subProcess.execute('git', ['remote', 'get-url', 'origin'], { cwd })\n ).trim();\n\n if (origin) {\n const { protocol, host, pathname = '' } = url.parse(origin);\n\n // Not handling git:// as it has no connection options\n if (host && protocol && ['ssh:', 'http:', 'https:'].includes(protocol)) {\n // same format for parseable URLs\n target.remoteUrl = `http://${host}${pathname}`;\n } else {\n const originRes = originRegex.exec(origin);\n if (originRes && originRes[2] && originRes[3]) {\n target.remoteUrl = `http://${originRes[2]}/${originRes[3]}`;\n } else {\n // else keep the original\n target.remoteUrl = origin;\n }\n }\n }\n } catch (err) {\n // Swallowing exception since we don't want to break the monitor if there is a problem\n // executing git commands.\n }\n\n try {\n target.branch = (\n await subProcess.execute('git', ['rev-parse', '--abbrev-ref', 'HEAD'], {\n cwd,\n })\n ).trim();\n } catch (err) {\n // Swallowing exception since we don't want to break the monitor if there is a problem\n // executing git commands.\n }\n\n return target;\n}\n","export interface GitTarget {\n remoteUrl?: string;\n branch?: string;\n}\n\nexport interface ContainerTarget {\n image?: string;\n}\n\nexport function isGitTarget(target: any): target is GitTarget {\n return target && (target.branch || target.remoteUrl);\n}\n","import * as _debug from 'debug';\nimport { DepGraph, legacy } from '@snyk/dep-graph';\n\nimport { DepTree } from './types';\nimport config from './config';\nimport { TooManyVulnPaths } from './errors';\nimport * as analytics from '../lib/analytics';\nimport { SupportedPackageManagers } from './package-managers';\nimport { countPathsToGraphRoot } from './utils';\n\nconst debug = _debug('snyk:prune');\n\nconst { depTreeToGraph, graphToDepTree } = legacy;\n\nexport async function pruneGraph(\n depGraph: DepGraph,\n packageManager: SupportedPackageManagers,\n pruneIsRequired = false,\n): Promise<DepGraph> {\n const prePrunePathsCount = countPathsToGraphRoot(depGraph);\n const isDenseGraph = prePrunePathsCount > config.PRUNE_DEPS_THRESHOLD;\n\n debug('rootPkg', depGraph.rootPkg);\n debug('prePrunePathsCount: ' + prePrunePathsCount);\n debug('isDenseGraph', isDenseGraph);\n analytics.add('prePrunedPathsCount', prePrunePathsCount);\n if (isDenseGraph || pruneIsRequired) {\n debug('Trying to prune the graph');\n const pruneStartTime = Date.now();\n const prunedTree = (await graphToDepTree(depGraph, packageManager, {\n deduplicateWithinTopLevelDeps: true,\n })) as DepTree;\n const graphToTreeEndTime = Date.now();\n analytics.add(\n 'prune.graphToTreeDuration',\n graphToTreeEndTime - pruneStartTime,\n );\n const prunedGraph = await depTreeToGraph(prunedTree, packageManager);\n analytics.add('prune.treeToGraphDuration', Date.now() - graphToTreeEndTime);\n const postPrunePathsCount = countPathsToGraphRoot(prunedGraph);\n analytics.add('postPrunedPathsCount', postPrunePathsCount);\n debug('postPrunePathsCount' + postPrunePathsCount);\n if (postPrunePathsCount > config.MAX_PATH_COUNT) {\n debug('Too many paths to process the project');\n //TODO replace the throw below with TooManyPaths we do not calculate vuln paths there\n throw new TooManyVulnPaths();\n }\n return prunedGraph;\n }\n return depGraph;\n}\n","import * as graphlib from '@snyk/graphlib';\nimport { CallGraph } from '@snyk/cli-interface/legacy/common';\n\nimport {\n REACHABLE_VULNS_SUPPORTED_PACKAGE_MANAGERS,\n SupportedPackageManagers,\n} from './package-managers';\nimport { isFeatureFlagSupportedForOrg } from './feature-flags';\nimport {\n AuthFailedError,\n FeatureNotSupportedByPackageManagerError,\n UnsupportedFeatureFlagError,\n} from './errors';\nimport { MonitorOptions, Options, TestOptions } from './types';\nimport { isMultiProjectScan } from './is-multi-project-scan';\nimport * as theme from './theme';\n\nconst featureFlag = 'reachableVulns';\n\nexport function serializeCallGraphWithMetrics(\n callGraph: CallGraph,\n): {\n callGraph: any;\n nodeCount: number;\n edgeCount: number;\n} {\n return {\n callGraph: graphlib.json.write(callGraph),\n nodeCount: callGraph.nodeCount(),\n edgeCount: callGraph.edgeCount(),\n };\n}\n\nexport async function validatePayload(\n org: any,\n options: (Options & TestOptions) | (Options & MonitorOptions),\n packageManager?: SupportedPackageManagers,\n): Promise<boolean> {\n if (\n packageManager &&\n !isMultiProjectScan(options) &&\n !REACHABLE_VULNS_SUPPORTED_PACKAGE_MANAGERS.includes(packageManager)\n ) {\n throw new FeatureNotSupportedByPackageManagerError(\n 'Reachable vulns',\n packageManager,\n `For a list of supported package managers go to https://support.snyk.io/hc/en-us/articles/360010554837-Reachable-Vulnerabilities`,\n );\n }\n const reachableVulnsSupportedRes = await isFeatureFlagSupportedForOrg(\n featureFlag,\n org,\n );\n\n if (reachableVulnsSupportedRes.code === 401) {\n throw AuthFailedError(\n reachableVulnsSupportedRes.error,\n reachableVulnsSupportedRes.code,\n );\n }\n if (reachableVulnsSupportedRes.userMessage) {\n throw new UnsupportedFeatureFlagError(\n featureFlag,\n reachableVulnsSupportedRes.userMessage,\n );\n }\n return true;\n}\n\nexport const reachableVulnsRemovalMessage = theme.color.status.warn(\n `${theme.icon.WARNING} Starting on 15 August 2022, the reachable (--reachable) flag will no longer be supported and will have no effect. We are currently developing new and improved capabilities for prioritizing vulnerabilities. Please follow https://updates.snyk.io for news and updates. We are sorry for the temporary inconvenience.\\n`,\n);\n","import { getAuthHeader } from '../api-token';\nimport * as request from './index';\n\nexport async function makeRequest<T>(payload: any): Promise<T> {\n return new Promise((resolve, reject) => {\n request.makeRequest(payload, (error, res, body) => {\n if (error) {\n return reject(error);\n }\n if (res.statusCode !== 200) {\n return reject({\n code: res.statusCode,\n message: body?.message,\n });\n }\n resolve(body);\n });\n });\n}\n\n/**\n * All rest request will essentially be the same and are JSON by default\n * Thus if no headers provided default headers are used\n * @param {any} payload for the request\n * @returns\n */\nexport async function makeRequestRest<T>(payload: any): Promise<T> {\n return new Promise((resolve, reject) => {\n payload.headers = payload.headers ?? {\n 'Content-Type': 'application/vnd.api+json',\n authorization: getAuthHeader(),\n };\n payload.json = true;\n request.makeRequest(payload, (error, res, body) => {\n if (error) {\n return reject(error);\n }\n if (res.statusCode >= 400) {\n return reject({\n code: res.statusCode,\n body: JSON.parse(body as any),\n });\n }\n resolve(JSON.parse(body as any) as T);\n });\n });\n}\n","export function rightPadWithSpaces(s: string, padding: number) {\n const padLength = padding - s.length;\n if (padLength <= 0) {\n return s;\n }\n\n return s + ' '.repeat(padLength);\n}\n","import * as path from 'path';\nimport config from '../config';\nimport { isCI } from '../is-ci';\nimport { getPlugin } from '../ecosystems';\nimport { Ecosystem } from '../ecosystems/types';\nimport { Options, PolicyOptions, TestOptions } from '../types';\nimport { Payload } from './types';\nimport { assembleQueryString } from './common';\nimport { spinner } from '../spinner';\nimport { findAndLoadPolicyForScanResult } from '../ecosystems/policy';\nimport { getAuthHeader } from '../../lib/api-token';\nimport { DockerImageNotFoundError } from '../errors';\n\nexport async function assembleEcosystemPayloads(\n ecosystem: Ecosystem,\n options: Options & TestOptions & PolicyOptions,\n): Promise<Payload[]> {\n // For --all-projects packageManager is yet undefined here. Use 'all'\n let analysisTypeText = 'all dependencies for ';\n if (options.docker) {\n analysisTypeText = 'container dependencies for ';\n } else if (options.packageManager) {\n analysisTypeText = options.packageManager + ' dependencies for ';\n }\n\n const spinnerLbl =\n 'Analyzing ' +\n analysisTypeText +\n (path.relative('.', path.join(options.path, options.file || '')) ||\n path.relative('..', '.') + ' project dir');\n\n spinner.clear<void>(spinnerLbl)();\n if (!options.quiet) {\n await spinner(spinnerLbl);\n }\n\n try {\n const plugin = getPlugin(ecosystem);\n const pluginResponse = await plugin.scan(options);\n\n const payloads: Payload[] = [];\n\n // TODO: This is a temporary workaround until the plugins themselves can read policy files and set names!\n for (const scanResult of pluginResponse.scanResults) {\n // WARNING! This mutates the payload. Policy logic should be in the plugin.\n const policy = await findAndLoadPolicyForScanResult(scanResult, options);\n if (policy !== undefined) {\n scanResult.policy = policy.toString();\n }\n\n // WARNING! This mutates the payload. The project name logic should be handled in the plugin.\n scanResult.name =\n options['project-name'] || config.PROJECT_NAME || scanResult.name;\n\n payloads.push({\n method: 'POST',\n url: `${config.API}${options.testDepGraphDockerEndpoint ||\n '/test-dependencies'}`,\n json: true,\n headers: {\n 'x-is-ci': isCI(),\n authorization: getAuthHeader(),\n },\n body: {\n scanResult,\n },\n qs: assembleQueryString(options),\n });\n }\n\n return payloads;\n } catch (error) {\n if (ecosystem === 'docker' && error.message === 'authentication required') {\n throw new DockerImageNotFoundError(options.path);\n }\n if (ecosystem === 'docker' && error.message === 'invalid image format') {\n throw new DockerImageNotFoundError(options.path);\n }\n\n throw error;\n } finally {\n spinner.clear<void>(spinnerLbl)();\n }\n}\n","import * as values from 'lodash.values';\nimport * as depGraphLib from '@snyk/dep-graph';\nimport {\n DepsFilePaths,\n ScanResult,\n FileSignaturesDetails,\n} from '../ecosystems/types';\nimport { SupportedPackageManagers } from '../package-managers';\nimport { Options, SupportedProjectTypes, TestOptions } from '../types';\nimport { SEVERITIES } from './common';\n\ninterface Pkg {\n name: string;\n version?: string;\n}\n\ninterface Patch {\n version: string;\n id: string;\n urls: string[];\n modificationTime: string;\n}\n\nexport enum SEVERITY {\n LOW = 'low',\n MEDIUM = 'medium',\n HIGH = 'high',\n CRITICAL = 'critical',\n}\n\nexport enum REACHABILITY {\n FUNCTION = 'function',\n PACKAGE = 'package',\n NOT_REACHABLE = 'not-reachable',\n NO_INFO = 'no-info',\n}\n\nexport interface VulnMetaData {\n id: string;\n title: string;\n description: string;\n type: 'license' | 'vuln';\n name: string;\n info: string;\n severity: SEVERITY;\n severityValue: number;\n isNew: boolean;\n version: string;\n packageManager: SupportedPackageManagers | 'upstream';\n}\n\nexport interface GroupedVuln {\n list: AnnotatedIssue[];\n metadata: VulnMetaData;\n isIgnored: boolean;\n title: string;\n note: string | false;\n severity: SEVERITY;\n originalSeverity?: SEVERITY;\n isNew: boolean;\n name: string;\n version: string;\n isFixable: boolean;\n fixedIn: string[];\n legalInstructionsArray?: LegalInstruction[];\n reachability?: REACHABILITY;\n}\n\nexport interface LegalInstruction {\n licenseName: string;\n legalContent: string;\n}\nexport interface IssueData {\n id: string;\n packageName: string;\n version: string;\n moduleName?: string;\n below: string; // Vulnerable below version\n semver: {\n vulnerable: string | string[];\n vulnerableHashes?: string[];\n vulnerableByDistro?: {\n [distroNameAndVersion: string]: string[];\n };\n };\n patches: Patch[];\n isNew: boolean;\n description: string;\n title: string;\n severity: SEVERITY;\n fixedIn: string[];\n legalInstructions?: string;\n reachability?: REACHABILITY;\n packageManager?: SupportedProjectTypes;\n from?: string[];\n name?: string;\n}\n\nexport type CallPath = string[];\n\nexport interface ReachableFunctionPaths {\n functionName: string;\n callPaths: CallPath[];\n}\n\nexport interface ReachablePaths {\n pathCount: number;\n paths: ReachableFunctionPaths[];\n}\n\ninterface AnnotatedIssue extends IssueData {\n credit: string[];\n name: string;\n version: string;\n from: string[];\n upgradePath: Array<string | boolean>;\n isUpgradable: boolean;\n isPatchable: boolean;\n severity: SEVERITY;\n originalSeverity?: SEVERITY;\n\n // These fields present for \"node_module\" based scans to allow remediation\n bundled?: any;\n shrinkwrap?: any;\n __filename?: string;\n parentDepType: string;\n\n type?: 'license';\n title: string;\n patch?: any;\n note?: string | false;\n publicationTime?: string;\n\n reachablePaths?: ReachablePaths;\n identifiers?: {\n [name: string]: string[];\n };\n}\n\n// Mixin, to be added to GroupedVuln / AnnotatedIssue\nexport interface DockerIssue {\n nearestFixedInVersion?: string;\n dockerfileInstruction?: any;\n dockerBaseImage?: any;\n}\n\nexport interface IgnoreSettings {\n adminOnly: boolean;\n reasonRequired: boolean;\n disregardFilesystemIgnores: boolean;\n}\n\nexport interface BasicResultData {\n ok: boolean;\n payloadType?: string;\n org: string;\n isPrivate: boolean;\n summary: string;\n packageManager?: SupportedProjectTypes;\n severityThreshold?: string;\n platform?: string;\n}\n\nexport interface LegacyVulnApiResult extends BasicResultData {\n vulnerabilities: AnnotatedIssue[];\n dependencyCount: number;\n policy: string;\n licensesPolicy: object | null;\n ignoreSettings: IgnoreSettings | null;\n docker?: {\n baseImage?: any;\n binariesVulns?: unknown;\n baseImageRemediation?: BaseImageRemediation;\n };\n projectId?: string;\n filesystemPolicy?: boolean;\n uniqueCount?: any;\n remediation?: RemediationChanges;\n}\n\nexport interface BaseImageRemediation {\n code: string;\n advice: BaseImageRemediationAdvice[];\n message?: string; // TODO: check if this is still being sent\n}\n\nexport interface BaseImageRemediationAdvice {\n message: string;\n bold?: boolean;\n color?: string;\n}\n\nexport interface TestResult extends LegacyVulnApiResult {\n targetFile?: string;\n projectName?: string;\n targetFilePath?: string;\n displayTargetFile?: string; // used for display only\n foundProjectCount?: number;\n scanResult?: ScanResult;\n}\n\ninterface UpgradePathItem {\n name: string;\n version: string;\n newVersion?: string;\n isDropped?: boolean;\n}\n\ninterface UpgradePath {\n path: UpgradePathItem[];\n}\n\ninterface FixInfo {\n upgradePaths: UpgradePath[];\n isPatchable: boolean;\n nearestFixedInVersion?: string;\n}\n\nexport interface AffectedPackages {\n [pkgId: string]: {\n pkg: Pkg;\n issues: {\n [issueId: string]: Issue;\n };\n };\n}\n\ninterface TestDepGraphResult {\n issuesData: {\n [issueId: string]: IssueData;\n };\n affectedPkgs: AffectedPackages;\n docker: {\n binariesVulns?: TestDepGraphResult;\n baseImage?: any;\n };\n remediation?: RemediationChanges;\n}\n\nexport interface Issue {\n pkgName: string;\n pkgVersion?: string;\n issueId: string;\n fixInfo: FixInfo;\n}\n\nexport interface TestDependenciesResult {\n issuesData: {\n [issueId: string]: IssueData;\n };\n issues: Issue[];\n docker?: {\n baseImage: string;\n baseImageRemediation: BaseImageRemediation;\n binariesVulns: TestDepGraphResult;\n };\n remediation?: RemediationChanges;\n depsFilePaths?: DepsFilePaths;\n depGraphData: depGraphLib.DepGraphData;\n fileSignaturesDetails: FileSignaturesDetails;\n vulnerabilities: IssueData[];\n path: string;\n dependencyCount: number;\n packageManager: SupportedProjectTypes;\n}\n\nexport interface TestDepGraphMeta {\n isPublic: boolean;\n isLicensesEnabled: boolean;\n licensesPolicy?: {\n severities: {\n [type: string]: string;\n };\n };\n projectId?: string;\n ignoreSettings?: IgnoreSettings;\n policy: string;\n org: string;\n}\n\nexport interface TestDepGraphResponse {\n result: TestDepGraphResult;\n meta: TestDepGraphMeta;\n}\n\nexport interface TestDependenciesResponse {\n result: TestDependenciesResult;\n meta: TestDepGraphMeta;\n}\n\nexport interface Ignores {\n [path: string]: {\n paths: string[][];\n meta: {\n days?: number;\n reason?: string;\n };\n };\n}\n\nexport interface PatchObject {\n [name: string]: {\n patched: string;\n };\n}\n\nexport interface Upgrade {\n upgradeTo: string; // name@version\n}\n\nexport interface UpgradeVulns extends Upgrade {\n vulns: string[];\n}\n\nexport interface UpgradeRemediation extends UpgradeVulns {\n upgrades: string[];\n}\n\nexport interface PatchRemediation {\n paths: PatchObject[];\n}\n\nexport interface DependencyUpdates {\n [from: string]: UpgradeRemediation;\n}\n\nexport interface PinRemediation extends UpgradeVulns {\n isTransitive: boolean;\n}\n\nexport interface DependencyPins {\n [name: string]: PinRemediation;\n}\n\n// Remediation changes to be applied to the project,\n// including information on all and unresolved issues.\nexport interface RemediationChanges {\n unresolved: IssueData[];\n upgrade: DependencyUpdates;\n patch: {\n [name: string]: PatchRemediation;\n };\n ignore: unknown;\n pin: DependencyPins;\n}\n\nfunction convertTestDepGraphResultToLegacy(\n res: TestDepGraphResponse,\n depGraph: depGraphLib.DepGraph,\n packageManager: SupportedProjectTypes | undefined,\n options: Options & TestOptions,\n): LegacyVulnApiResult {\n const result = res.result;\n\n const upgradePathsMap = new Map<string, string[]>();\n\n for (const pkgInfo of values(result.affectedPkgs)) {\n for (const pkgIssue of values(pkgInfo.issues)) {\n if (pkgIssue.fixInfo && pkgIssue.fixInfo.upgradePaths) {\n for (const upgradePath of pkgIssue.fixInfo.upgradePaths) {\n const legacyFromPath = pkgPathToLegacyPath(upgradePath.path);\n const vulnPathString = getVulnPathString(\n pkgIssue.issueId,\n legacyFromPath,\n );\n upgradePathsMap[vulnPathString] = toLegacyUpgradePath(\n upgradePath.path,\n );\n }\n }\n }\n }\n\n // generate the legacy vulns array (vuln-data + metada per vulnerable path).\n // use the upgradePathsMap to find available upgrade-paths\n const vulns: AnnotatedIssue[] = [];\n\n for (const pkgInfo of values(result.affectedPkgs)) {\n for (const vulnPkgPath of depGraph.pkgPathsToRoot(pkgInfo.pkg)) {\n const legacyFromPath = pkgPathToLegacyPath(vulnPkgPath.reverse());\n for (const pkgIssue of values(pkgInfo.issues)) {\n const vulnPathString = getVulnPathString(\n pkgIssue.issueId,\n legacyFromPath,\n );\n const upgradePath = upgradePathsMap[vulnPathString] || [];\n\n // TODO: we need the full issue-data for every path only for the --json output,\n // consider picking only the required fields,\n // and append the full data only for --json, to minimize chance of out-of-memory\n const annotatedIssue = Object.assign(\n {},\n result.issuesData[pkgIssue.issueId],\n {\n from: legacyFromPath,\n upgradePath,\n isUpgradable: !!upgradePath[0] || !!upgradePath[1],\n isPatchable: pkgIssue.fixInfo.isPatchable,\n name: pkgInfo.pkg.name,\n version: pkgInfo.pkg.version as string,\n nearestFixedInVersion: pkgIssue.fixInfo.nearestFixedInVersion,\n },\n ) as AnnotatedIssue & DockerIssue; // TODO(kyegupov): get rid of type assertion\n\n vulns.push(annotatedIssue);\n }\n }\n }\n\n const dockerRes = result.docker;\n\n if (dockerRes && dockerRes.binariesVulns) {\n const binariesVulns = dockerRes.binariesVulns;\n for (const pkgInfo of values(binariesVulns.affectedPkgs)) {\n for (const pkgIssue of values(pkgInfo.issues)) {\n const pkgAndVersion = (pkgInfo.pkg.name +\n '@' +\n pkgInfo.pkg.version) as string;\n const annotatedIssue = (Object.assign(\n {},\n binariesVulns.issuesData[pkgIssue.issueId],\n {\n from: ['Upstream', pkgAndVersion],\n upgradePath: [],\n isUpgradable: false,\n isPatchable: false,\n name: pkgInfo.pkg.name,\n version: pkgInfo.pkg.version as string,\n nearestFixedInVersion: pkgIssue.fixInfo.nearestFixedInVersion,\n },\n ) as any) as AnnotatedIssue; // TODO(kyegupov): get rid of forced type assertion\n vulns.push(annotatedIssue);\n }\n }\n }\n\n const meta = res.meta || {};\n\n const severityThreshold =\n options.severityThreshold === SEVERITY.LOW\n ? undefined\n : options.severityThreshold;\n\n const legacyRes: LegacyVulnApiResult = {\n vulnerabilities: vulns,\n ok: vulns.length === 0,\n dependencyCount: depGraph.getPkgs().length - 1,\n org: meta.org,\n policy: meta.policy,\n isPrivate: !meta.isPublic,\n licensesPolicy: meta.licensesPolicy || null,\n packageManager,\n projectId: meta.projectId,\n ignoreSettings: meta.ignoreSettings || null,\n docker: result.docker,\n summary: getSummary(vulns, severityThreshold),\n severityThreshold,\n remediation: result.remediation,\n };\n\n return legacyRes;\n}\n\nfunction getVulnPathString(issueId: string, vulnPath: string[]) {\n return issueId + '|' + JSON.stringify(vulnPath);\n}\n\nfunction pkgPathToLegacyPath(pkgPath: Pkg[]): string[] {\n return pkgPath.map(toLegacyPkgId);\n}\n\nfunction toLegacyUpgradePath(\n upgradePath: UpgradePathItem[],\n): Array<string | boolean> {\n return upgradePath\n .filter((item) => !item.isDropped)\n .map((item) => {\n if (!item.newVersion) {\n return false;\n }\n\n return `${item.name}@${item.newVersion}`;\n });\n}\n\nfunction toLegacyPkgId(pkg: Pkg) {\n return `${pkg.name}@${pkg.version || '*'}`;\n}\n\nfunction getSummary(vulns: object[], severityThreshold?: SEVERITY): string {\n const count = vulns.length;\n let countText = '' + count;\n const severityFilters: string[] = [];\n const severitiesArray = SEVERITIES.map((s) => s.verboseName);\n if (severityThreshold) {\n severitiesArray\n .slice(severitiesArray.indexOf(severityThreshold))\n .forEach((sev) => {\n severityFilters.push(sev);\n });\n }\n\n if (!count) {\n if (severityFilters.length) {\n return `No ${severityFilters.join(' or ')} severity vulnerabilities`;\n }\n return 'No known vulnerabilities';\n }\n\n if (severityFilters.length) {\n countText += ' ' + severityFilters.join(' or ') + ' severity';\n }\n\n return `${countText} vulnerable dependency ${pl('path', count)}`;\n}\n\nfunction pl(word, count) {\n const ext = {\n y: 'ies',\n default: 's',\n };\n\n const last = word.split('').pop();\n\n if (count > 1) {\n return word.slice(0, -1) + (ext[last] || last + ext.default);\n }\n\n return word;\n}\n\nexport { convertTestDepGraphResultToLegacy, AnnotatedIssue };\n","import * as fs from 'fs';\nimport * as get from 'lodash.get';\nimport * as path from 'path';\nimport * as pathUtil from 'path';\nimport * as debugModule from 'debug';\nimport chalk from 'chalk';\nimport { icon } from '../theme';\nimport { parsePackageString as moduleToObject } from 'snyk-module';\nimport * as depGraphLib from '@snyk/dep-graph';\nimport * as theme from '../../lib/theme';\n\nimport {\n AffectedPackages,\n AnnotatedIssue,\n convertTestDepGraphResultToLegacy,\n DockerIssue,\n LegacyVulnApiResult,\n TestDependenciesResponse,\n TestDepGraphResponse,\n TestResult,\n} from './legacy';\nimport {\n AuthFailedError,\n DockerImageNotFoundError,\n FailedToGetVulnerabilitiesError,\n FailedToGetVulnsFromUnavailableResource,\n FailedToRunTestError,\n InternalServerError,\n NoSupportedManifestsFoundError,\n UnsupportedFeatureFlagError,\n NotFoundError,\n errorMessageWithRetry,\n} from '../errors';\nimport * as snyk from '../';\nimport { isCI } from '../is-ci';\nimport * as common from './common';\nimport config from '../config';\nimport * as analytics from '../analytics';\nimport { maybePrintDepGraph, maybePrintDepTree } from '../print-deps';\nimport { ContainerTarget, GitTarget } from '../project-metadata/types';\nimport * as projectMetadata from '../project-metadata';\nimport {\n DepTree,\n Options,\n PolicyOptions,\n SupportedProjectTypes,\n TestOptions,\n} from '../types';\nimport { pruneGraph } from '../prune';\nimport { getDepsFromPlugin } from '../plugins/get-deps-from-plugin';\nimport {\n MultiProjectResultCustom,\n ScannedProjectCustom,\n} from '../plugins/get-multi-plugin-result';\nimport { extractPackageManager } from '../plugins/extract-package-manager';\nimport { getExtraProjectCount } from '../plugins/get-extra-project-count';\nimport { serializeCallGraphWithMetrics } from '../reachable-vulns';\nimport { validateOptions } from '../options-validator';\nimport { findAndLoadPolicy } from '../policy';\nimport {\n Payload,\n PayloadBody,\n DepTreeFromResolveDeps,\n TestDependenciesRequest,\n} from './types';\nimport { CallGraphError, CallGraph } from '@snyk/cli-interface/legacy/common';\nimport * as alerts from '../alerts';\nimport { abridgeErrorMessage } from '../error-format';\nimport { getAuthHeader } from '../api-token';\nimport { getEcosystem } from '../ecosystems';\nimport { Issue } from '../ecosystems/types';\nimport { assembleEcosystemPayloads } from './assemble-payloads';\nimport { makeRequest } from '../request';\nimport { spinner } from '../spinner';\n\nconst debug = debugModule('snyk:run-test');\n\nconst ANALYTICS_PAYLOAD_MAX_LENGTH = 1024;\n\nfunction prepareResponseForParsing(\n payload: Payload,\n response: TestDependenciesResponse,\n options: Options & TestOptions,\n): any {\n const ecosystem = getEcosystem(options);\n return ecosystem\n ? prepareEcosystemResponseForParsing(payload, response, options)\n : prepareLanguagesResponseForParsing(payload);\n}\n\nfunction prepareEcosystemResponseForParsing(\n payload: Payload,\n response: TestDependenciesResponse,\n options: Options & TestOptions,\n) {\n const testDependenciesRequest = payload.body as\n | TestDependenciesRequest\n | undefined;\n const payloadBody = testDependenciesRequest?.scanResult;\n const depGraphData: depGraphLib.DepGraphData | undefined =\n response?.result?.depGraphData;\n const depGraph =\n depGraphData !== undefined\n ? depGraphLib.createFromJSON(depGraphData)\n : undefined;\n const imageUserInstructions = payloadBody?.facts.find(\n (fact) =>\n fact.type === 'dockerfileAnalysis' ||\n fact.type === 'autoDetectedUserInstructions',\n );\n\n const dockerfilePackages = imageUserInstructions?.data?.dockerfilePackages;\n const projectName = payloadBody?.name || depGraph?.rootPkg.name;\n const packageManager = payloadBody?.identity?.type as SupportedProjectTypes;\n const targetFile = payloadBody?.identity?.targetFile || options.file;\n const platform = payloadBody?.identity?.args?.platform;\n\n analytics.add('depGraph', !!depGraph);\n analytics.add('isDocker', !!options.docker);\n\n return {\n depGraph,\n dockerfilePackages,\n projectName,\n targetFile,\n pkgManager: packageManager,\n displayTargetFile: targetFile,\n foundProjectCount: undefined,\n payloadPolicy: payloadBody?.policy,\n platform,\n scanResult: payloadBody,\n };\n}\n\nfunction prepareLanguagesResponseForParsing(payload: Payload) {\n const payloadBody = payload.body as PayloadBody | undefined;\n const payloadPolicy = payloadBody && payloadBody.policy;\n const depGraph = payloadBody && payloadBody.depGraph;\n const pkgManager =\n depGraph &&\n depGraph.pkgManager &&\n (depGraph.pkgManager.name as SupportedProjectTypes);\n const targetFile = payloadBody && payloadBody.targetFile;\n const projectName =\n payloadBody?.projectNameOverride || payloadBody?.originalProjectName;\n const foundProjectCount = payloadBody?.foundProjectCount;\n const displayTargetFile = payloadBody?.displayTargetFile;\n let dockerfilePackages;\n if (\n payloadBody &&\n payloadBody.docker &&\n payloadBody.docker.dockerfilePackages\n ) {\n dockerfilePackages = payloadBody.docker.dockerfilePackages;\n }\n analytics.add('depGraph', !!depGraph);\n analytics.add('isDocker', !!(payloadBody && payloadBody.docker));\n return {\n depGraph,\n payloadPolicy,\n pkgManager,\n targetFile,\n projectName,\n foundProjectCount,\n displayTargetFile,\n dockerfilePackages,\n };\n}\n\nfunction isTestDependenciesResponse(\n response:\n | TestDepGraphResponse\n | TestDependenciesResponse\n | LegacyVulnApiResult,\n): response is TestDependenciesResponse {\n const assumedTestDependenciesResponse = response as TestDependenciesResponse;\n return assumedTestDependenciesResponse?.result?.issues !== undefined;\n}\n\nfunction convertIssuesToAffectedPkgs(\n response:\n | TestDepGraphResponse\n | TestDependenciesResponse\n | LegacyVulnApiResult,\n): TestDepGraphResponse | TestDependenciesResponse | LegacyVulnApiResult {\n if (!(response as any).result) {\n return response;\n }\n\n if (!isTestDependenciesResponse(response)) {\n return response;\n }\n\n response.result['affectedPkgs'] = getAffectedPkgsFromIssues(\n response.result.issues,\n );\n return response;\n}\n\nfunction getAffectedPkgsFromIssues(issues: Issue[]): AffectedPackages {\n const result: AffectedPackages = {};\n\n for (const issue of issues) {\n const packageId = `${issue.pkgName}@${issue.pkgVersion || ''}`;\n\n if (result[packageId] === undefined) {\n result[packageId] = {\n pkg: { name: issue.pkgName, version: issue.pkgVersion },\n issues: {},\n };\n }\n\n result[packageId].issues[issue.issueId] = issue;\n }\n\n return result;\n}\n\nasync function sendAndParseResults(\n payloads: Payload[],\n spinnerLbl: string,\n root: string,\n options: Options & TestOptions,\n): Promise<TestResult[]> {\n const results: TestResult[] = [];\n for (const payload of payloads) {\n await spinner.clear<void>(spinnerLbl)();\n if (!options.quiet) {\n await spinner(spinnerLbl);\n }\n /** sendTestPayload() deletes the request.body from the payload once completed. */\n const payloadCopy = Object.assign({}, payload);\n const res = await sendTestPayload(payload);\n const {\n depGraph,\n payloadPolicy,\n pkgManager,\n targetFile,\n projectName,\n foundProjectCount,\n displayTargetFile,\n dockerfilePackages,\n platform,\n scanResult,\n } = prepareResponseForParsing(\n payloadCopy,\n res as TestDependenciesResponse,\n options,\n );\n\n const ecosystem = getEcosystem(options);\n if (ecosystem && options['print-deps']) {\n await spinner.clear<void>(spinnerLbl)();\n await maybePrintDepGraph(options, depGraph);\n }\n\n const legacyRes = convertIssuesToAffectedPkgs(res);\n\n const result = await parseRes(\n depGraph,\n pkgManager,\n legacyRes as LegacyVulnApiResult,\n options,\n payload,\n payloadPolicy,\n root,\n dockerfilePackages,\n );\n\n results.push({\n ...result,\n targetFile,\n projectName,\n foundProjectCount,\n displayTargetFile,\n platform,\n scanResult,\n });\n }\n return results;\n}\n\nexport async function runTest(\n projectType: SupportedProjectTypes | undefined,\n root: string,\n options: Options & TestOptions,\n): Promise<TestResult[]> {\n const spinnerLbl = 'Querying vulnerabilities database...';\n try {\n await validateOptions(options, options.packageManager);\n const payloads = await assemblePayloads(root, options);\n return await sendAndParseResults(payloads, spinnerLbl, root, options);\n } catch (error) {\n debug('Error running test', { error });\n // handling denial from registry because of the feature flag\n // currently done for go.mod\n const isFeatureNotAllowed =\n error.code === 403 && error.message.includes('Feature not allowed');\n\n const hasFailedToGetVulnerabilities =\n error.code === 404 &&\n error.name.includes('FailedToGetVulnerabilitiesError') &&\n !error.userMessage;\n\n if (isFeatureNotAllowed) {\n throw NoSupportedManifestsFoundError([root]);\n }\n if (hasFailedToGetVulnerabilities) {\n throw FailedToGetVulnsFromUnavailableResource(root, error.code);\n }\n if (\n getEcosystem(options) === 'docker' &&\n error.statusCode === 401 &&\n [\n 'authentication required',\n '{\"details\":\"incorrect username or password\"}\\n',\n ].includes(error.message)\n ) {\n throw new DockerImageNotFoundError(root);\n }\n\n throw new FailedToRunTestError(\n error.userMessage ||\n error.message ||\n `Failed to test ${projectType} project`,\n error.code,\n );\n } finally {\n spinner.clear<void>(spinnerLbl)();\n }\n}\n\nasync function parseRes(\n depGraph: depGraphLib.DepGraph | undefined,\n pkgManager: SupportedProjectTypes | undefined,\n res: LegacyVulnApiResult,\n options: Options & TestOptions,\n payload: Payload,\n payloadPolicy: string | undefined,\n root: string,\n dockerfilePackages: any,\n): Promise<TestResult> {\n // TODO: docker doesn't have a package manager\n // so this flow will not be applicable\n // refactor to separate\n if (depGraph && pkgManager) {\n res = convertTestDepGraphResultToLegacy(\n (res as any) as TestDepGraphResponse, // Double \"as\" required by Typescript for dodgy assertions\n depGraph,\n pkgManager,\n options,\n );\n // For Node.js: inject additional information (for remediation etc.) into the response.\n if (payload.modules) {\n res.dependencyCount =\n payload.modules.numDependencies || depGraph.getPkgs().length - 1;\n if (res.vulnerabilities) {\n res.vulnerabilities.forEach((vuln) => {\n if (payload.modules && payload.modules.pluck) {\n const plucked = payload.modules.pluck(\n vuln.from,\n vuln.name,\n vuln.version,\n );\n vuln.__filename = plucked.__filename;\n vuln.shrinkwrap = plucked.shrinkwrap;\n vuln.bundled = plucked.bundled;\n\n // this is an edgecase when we're testing the directly vuln pkg\n if (vuln.from.length === 1) {\n return;\n }\n\n const parentPkg = moduleToObject(vuln.from[1]);\n const parent = payload.modules.pluck(\n vuln.from.slice(0, 2),\n parentPkg.name,\n parentPkg.version,\n );\n vuln.parentDepType = parent.depType;\n }\n });\n }\n }\n }\n // TODO: is this needed? we filter on the other side already based on policy\n // this will move to be filtered server side soon & it will support `'ignore-policy'`\n analytics.add('vulns-pre-policy', res.vulnerabilities.length);\n res.filesystemPolicy = !!payloadPolicy;\n if (!options['ignore-policy']) {\n res.policy = res.policy || (payloadPolicy as string);\n const policy = await snyk.policy.loadFromText(res.policy);\n res = policy.filter(res, root);\n }\n analytics.add('vulns', res.vulnerabilities.length);\n\n if (res.docker && dockerfilePackages) {\n res.vulnerabilities = res.vulnerabilities.map((vuln) => {\n const dockerfilePackage = dockerfilePackages[vuln.name.split('/')[0]];\n if (dockerfilePackage) {\n (vuln as DockerIssue).dockerfileInstruction =\n dockerfilePackage.installCommand;\n }\n (vuln as DockerIssue).dockerBaseImage = res.docker!.baseImage;\n return vuln;\n });\n }\n if (\n options.docker &&\n res.docker?.baseImage &&\n options['exclude-base-image-vulns']\n ) {\n const filteredVulns = res.vulnerabilities.filter(\n (vuln) => (vuln as DockerIssue).dockerfileInstruction,\n );\n // `exclude-base-image-vulns` might have left us with no vulns, so `ok` is now `true`\n if (\n res.vulnerabilities.length !== 0 &&\n filteredVulns.length === 0 &&\n !res.ok\n ) {\n res.ok = true;\n }\n res.vulnerabilities = filteredVulns;\n }\n\n res.uniqueCount = countUniqueVulns(res.vulnerabilities);\n\n return res;\n}\n\nfunction sendTestPayload(\n payload: Payload,\n): Promise<\n LegacyVulnApiResult | TestDepGraphResponse | TestDependenciesResponse\n> {\n const payloadBody = payload.body as any;\n const filesystemPolicy =\n payload.body && !!(payloadBody?.policy || payloadBody?.scanResult?.policy);\n return new Promise((resolve, reject) => {\n makeRequest(payload, (error, res, body) => {\n if (error) {\n return reject(error);\n }\n if (res.statusCode !== 200) {\n const err = handleTestHttpErrorResponse(res, body);\n return reject(err);\n }\n\n body.filesystemPolicy = filesystemPolicy;\n resolve(body);\n });\n });\n}\n\nfunction handleTestHttpErrorResponse(res, body) {\n const { statusCode } = res;\n let err;\n const userMessage = body && body.userMessage;\n switch (statusCode) {\n case 401:\n case 403:\n err = AuthFailedError(userMessage, statusCode);\n err.innerError = body.stack;\n break;\n case 404:\n err = new NotFoundError(userMessage);\n err.innerError = body.stack;\n break;\n case 405:\n err = new UnsupportedFeatureFlagError('reachableVulns');\n err.innerError = body.stack;\n break;\n case 500:\n err = new InternalServerError(userMessage);\n err.innerError = body.stack;\n break;\n default:\n err = new FailedToGetVulnerabilitiesError(userMessage, statusCode);\n err.innerError = body.error;\n }\n return err;\n}\n\nfunction assemblePayloads(\n root: string,\n options: Options & TestOptions,\n): Promise<Payload[]> {\n let isLocal;\n if (options.docker) {\n isLocal = true;\n } else {\n // TODO: Refactor this check so we don't require files when tests are using mocks\n isLocal = fs.existsSync(root);\n }\n analytics.add('local', isLocal);\n\n const ecosystem = getEcosystem(options);\n if (ecosystem) {\n return assembleEcosystemPayloads(ecosystem, options);\n }\n if (isLocal) {\n return assembleLocalPayloads(root, options);\n }\n return assembleRemotePayloads(root, options);\n}\n\n// Payload to send to the Registry for scanning a package from the local filesystem.\nasync function assembleLocalPayloads(\n root,\n options: Options & TestOptions & PolicyOptions,\n): Promise<Payload[]> {\n // For --all-projects packageManager is yet undefined here. Use 'all'\n let analysisTypeText = 'all dependencies for ';\n if (options.docker) {\n analysisTypeText = 'docker dependencies for ';\n } else if (options.packageManager) {\n analysisTypeText = options.packageManager + ' dependencies for ';\n }\n\n const spinnerLbl =\n 'Analyzing ' +\n analysisTypeText +\n (path.relative('.', path.join(root, options.file || '')) ||\n path.relative('..', '.') + ' project dir');\n\n try {\n const payloads: Payload[] = [];\n await spinner.clear<void>(spinnerLbl)();\n if (!options.quiet) {\n await spinner(spinnerLbl);\n }\n\n const deps = await getDepsFromPlugin(root, options);\n const failedResults = (deps as MultiProjectResultCustom).failedResults;\n if (failedResults?.length) {\n await spinner.clear<void>(spinnerLbl)();\n if (!options.json && !options.quiet) {\n console.warn(\n chalk.bold.red(\n `${icon.ISSUE} ${failedResults.length}/${failedResults.length +\n deps.scannedProjects\n .length} potential projects failed to get dependencies.`,\n ),\n );\n failedResults.forEach((f) => {\n if (f.targetFile) {\n console.warn(theme.color.status.error(`${f.targetFile}:`));\n }\n console.warn(theme.color.status.error(` ${f.errMessage}`));\n });\n }\n debug(\n 'getDepsFromPlugin returned failed results, cannot run test/monitor',\n failedResults,\n );\n if (options['fail-fast']) {\n throw new FailedToRunTestError(\n errorMessageWithRetry('Your test request could not be completed.'),\n );\n }\n }\n analytics.add('pluginName', deps.plugin.name);\n const javaVersion = get(\n deps.plugin,\n 'meta.versionBuildInfo.metaBuildVersion.javaVersion',\n null,\n );\n const mvnVersion = get(\n deps.plugin,\n 'meta.versionBuildInfo.metaBuildVersion.mvnVersion',\n null,\n );\n const sbtVersion = get(\n deps.plugin,\n 'meta.versionBuildInfo.metaBuildVersion.sbtVersion',\n null,\n );\n if (javaVersion) {\n analytics.add('javaVersion', javaVersion);\n }\n if (mvnVersion) {\n analytics.add('mvnVersion', mvnVersion);\n }\n if (sbtVersion) {\n analytics.add('sbtVersion', sbtVersion);\n }\n\n for (const scannedProject of deps.scannedProjects) {\n if (!scannedProject.depTree && !scannedProject.depGraph) {\n debug(\n 'scannedProject is missing depGraph or depTree, cannot run test/monitor',\n );\n throw new FailedToRunTestError(\n errorMessageWithRetry('Your test request could not be completed.'),\n );\n }\n\n // prefer dep-graph fallback on dep tree\n // TODO: clean up once dep-graphs only\n const pkg:\n | DepTree\n | depGraphLib.DepGraph\n | undefined = scannedProject.depGraph\n ? scannedProject.depGraph\n : scannedProject.depTree;\n\n if (options['print-deps']) {\n if (scannedProject.depGraph) {\n await spinner.clear<void>(spinnerLbl)();\n maybePrintDepGraph(options, pkg as depGraphLib.DepGraph);\n } else {\n await spinner.clear<void>(spinnerLbl)();\n maybePrintDepTree(options, pkg as DepTree);\n }\n }\n const project = scannedProject as ScannedProjectCustom;\n const packageManager = extractPackageManager(project, deps, options);\n\n if ((pkg as DepTree).docker) {\n const baseImageFromDockerfile = (pkg as DepTree).docker.baseImage;\n if (!baseImageFromDockerfile && options['base-image']) {\n (pkg as DepTree).docker.baseImage = options['base-image'];\n }\n\n if (baseImageFromDockerfile && deps.plugin && deps.plugin.imageLayers) {\n analytics.add('BaseImage', baseImageFromDockerfile);\n analytics.add('imageLayers', deps.plugin.imageLayers);\n }\n }\n\n // todo: normalize what target file gets used across plugins and functions\n const targetFile =\n scannedProject.targetFile || deps.plugin.targetFile || options.file;\n\n // Forcing options.path to be a string as pathUtil requires is to be stringified\n const targetFileRelativePath = targetFile\n ? pathUtil.resolve(\n pathUtil.resolve(`${options.path || root}`),\n targetFile,\n )\n : '';\n\n let targetFileDir;\n\n if (targetFileRelativePath) {\n const { dir } = path.parse(targetFileRelativePath);\n targetFileDir = dir;\n }\n\n const policy = await findAndLoadPolicy(\n root,\n options.docker ? 'docker' : packageManager!,\n options,\n // TODO: fix this and send only send when we used resolve-deps for node\n // it should be a ExpandedPkgTree type instead\n pkg,\n targetFileDir,\n );\n\n analytics.add('packageManager', packageManager);\n if (scannedProject.depGraph) {\n const depGraph = pkg as depGraphLib.DepGraph;\n addPackageAnalytics(depGraph.rootPkg.name, depGraph.rootPkg.version!);\n }\n if (scannedProject.depTree) {\n const depTree = pkg as DepTree;\n addPackageAnalytics(depTree.name!, depTree.version!);\n }\n\n let target: GitTarget | ContainerTarget | null;\n if (scannedProject.depGraph) {\n target = await projectMetadata.getInfo(scannedProject, options);\n } else {\n target = await projectMetadata.getInfo(\n scannedProject,\n options,\n pkg as DepTree,\n );\n }\n\n const originalProjectName = scannedProject.depGraph\n ? (pkg as depGraphLib.DepGraph).rootPkg.name\n : (pkg as DepTree).name;\n\n const body: PayloadBody = {\n // WARNING: be careful changing this as it affects project uniqueness\n targetFile: project.plugin.targetFile,\n\n // TODO: Remove relativePath prop once we gather enough ruby related logs\n targetFileRelativePath: `${targetFileRelativePath}`, // Forcing string\n targetReference: options['target-reference'],\n projectNameOverride: options.projectName,\n originalProjectName,\n policy: policy ? policy.toString() : undefined,\n foundProjectCount: await getExtraProjectCount(root, options, deps),\n displayTargetFile: targetFile,\n docker: (pkg as DepTree).docker,\n hasDevDependencies: (pkg as any).hasDevDependencies,\n target,\n };\n\n let depGraph: depGraphLib.DepGraph;\n if (scannedProject.depGraph) {\n depGraph = scannedProject.depGraph;\n } else {\n // Graphs are more compact and robust representations.\n // Legacy parts of the code are still using trees, but will eventually be fully migrated.\n debug('converting dep-tree to dep-graph', {\n name: (pkg as DepTree).name,\n targetFile: scannedProject.targetFile || options.file,\n });\n depGraph = await depGraphLib.legacy.depTreeToGraph(\n pkg as DepTree,\n packageManager!,\n );\n debug('done converting dep-tree to dep-graph', {\n uniquePkgsCount: depGraph.getPkgs().length,\n });\n }\n\n const pruneIsRequired = options.pruneRepeatedSubdependencies;\n\n if (packageManager) {\n depGraph = await pruneGraph(depGraph, packageManager, pruneIsRequired);\n }\n body.depGraph = depGraph;\n\n if (\n options.reachableVulns &&\n (scannedProject.callGraph as CallGraphError)?.message\n ) {\n const err = scannedProject.callGraph as CallGraphError;\n const analyticsError = err.innerError || err;\n analytics.add('callGraphError', {\n errorType: analyticsError.constructor?.name,\n message: abridgeErrorMessage(\n analyticsError.message.toString(),\n ANALYTICS_PAYLOAD_MAX_LENGTH,\n ),\n });\n alerts.registerAlerts([\n {\n type: 'error',\n name: 'missing-call-graph',\n msg: err.message,\n },\n ]);\n } else if (scannedProject.callGraph) {\n const {\n callGraph,\n nodeCount,\n edgeCount,\n } = serializeCallGraphWithMetrics(\n scannedProject.callGraph as CallGraph,\n );\n debug(\n `Adding call graph to payload, node count: ${nodeCount}, edge count: ${edgeCount}`,\n );\n\n const callGraphMetrics = get(deps.plugin, 'meta.callGraphMetrics', {});\n analytics.add('callGraphMetrics', {\n callGraphEdgeCount: edgeCount,\n callGraphNodeCount: nodeCount,\n ...callGraphMetrics,\n });\n body.callGraph = callGraph;\n }\n const reqUrl =\n config.API +\n (options.testDepGraphDockerEndpoint ||\n options.vulnEndpoint ||\n '/test-dep-graph');\n const payload: Payload = {\n method: 'POST',\n url: reqUrl,\n json: true,\n headers: {\n 'x-is-ci': isCI(),\n authorization: getAuthHeader(),\n },\n qs: common.assembleQueryString(options),\n body,\n };\n\n if (packageManager && ['yarn', 'npm'].indexOf(packageManager) !== -1) {\n const isLockFileBased =\n targetFile &&\n (targetFile.endsWith('package-lock.json') ||\n targetFile.endsWith('yarn.lock'));\n if (!isLockFileBased || options.traverseNodeModules) {\n payload.modules = pkg as DepTreeFromResolveDeps; // See the output of resolve-deps\n }\n }\n payloads.push(payload);\n }\n return payloads;\n } finally {\n await spinner.clear<void>(spinnerLbl)();\n }\n}\n\n// Payload to send to the Registry for scanning a remote package.\nasync function assembleRemotePayloads(root, options): Promise<Payload[]> {\n const pkg = moduleToObject(root);\n debug('testing remote: %s', pkg.name + '@' + pkg.version);\n addPackageAnalytics(pkg.name, pkg.version);\n const encodedName = encodeURIComponent(pkg.name + '@' + pkg.version);\n // options.vulnEndpoint is only used by `snyk protect` (i.e. local filesystem tests)\n const url = `${config.API}${options.vulnEndpoint ||\n `/vuln/${options.packageManager}`}/${encodedName}`;\n return [\n {\n method: 'GET',\n url,\n qs: common.assembleQueryString(options),\n json: true,\n headers: {\n 'x-is-ci': isCI(),\n authorization: getAuthHeader(),\n },\n },\n ];\n}\n\nfunction addPackageAnalytics(name: string, version: string): void {\n analytics.add('packageName', name);\n analytics.add('packageVersion', version);\n analytics.add('package', name + '@' + version);\n}\n\nfunction countUniqueVulns(vulns: AnnotatedIssue[]): number {\n const seen = {};\n for (const curr of vulns) {\n seen[curr.id] = true;\n }\n return Object.keys(seen).length;\n}\n","import * as childProcess from 'child_process';\n\nexport function execute(\n command: string,\n args: string[],\n options?: { cwd: string | undefined },\n): Promise<string> {\n const spawnOptions: childProcess.SpawnOptions = { shell: true };\n if (options && options.cwd) {\n spawnOptions.cwd = options.cwd;\n }\n\n return new Promise((resolve, reject) => {\n let stdout = '';\n let stderr = '';\n\n const proc = childProcess.spawn(command, args, spawnOptions);\n if (proc.stdout) {\n proc.stdout.on('data', (data) => {\n stdout += data;\n });\n }\n if (proc.stderr) {\n proc.stderr.on('data', (data) => {\n stderr += data;\n });\n }\n\n proc.on('close', (code) => {\n if (code !== 0) {\n return reject(stdout || stderr);\n }\n resolve(stdout || stderr);\n });\n });\n}\n","const snykConfig = require('./config');\n\n// This module is kind of \"world object\" that is used to indirectly import modules.\n// This also introduces some circular imports.\n\n// TODO(kyegupov): untangle this, resolve circular imports, convert to Typescript\n\nconst snyk = {};\nmodule.exports = snyk;\n\nsnyk.id = snykConfig.id;\n\nconst apiToken = require('./api-token');\n\n// make snyk.api *always* get the latest api token from the config store\nObject.defineProperty(snyk, 'api', {\n enumerable: true,\n configurable: true,\n get: function() {\n return apiToken.api();\n },\n set: function(value) {\n snykConfig.api = value;\n },\n});\n\nsnyk.test = require('./snyk-test');\nsnyk.policy = require('snyk-policy');\n\n// this is the user config, and not the internal config\nsnyk.config = require('./user-config').config;\n","const gemfile = require('@snyk/gemfile');\n\nmodule.exports = gemfileLockToDependencies;\n\nconst detectCycles = (dep, chain) => {\n if (chain.indexOf(dep) >= 0) {\n const error = Error('Cyclic dependency detected in lockfile');\n const UNPROCESSABLE_ENTITY = 422;\n error.code = UNPROCESSABLE_ENTITY;\n error.meta = { dep, chain };\n throw error;\n }\n};\n\nconst gemfileReducer = (lockFile, allDeps, ancestors) => (deps, dep) => {\n const gemspec = lockFile.specs[dep];\n // If for some reason a dependency isn't included in the specs then its\n // better to just ignore it (otherwise all processing fails).\n // This happens for bundler itself, it isn't included in the Gemfile.lock\n // specs, even if its a dependency! (and that isn't documented anywhere)\n if (gemspec) {\n detectCycles(dep, ancestors);\n if (allDeps.has(dep)) {\n deps[dep] = allDeps.get(dep);\n } else {\n deps[dep] = {\n name: dep,\n version: gemspec.version,\n };\n allDeps.set(dep, deps[dep]);\n deps[dep].dependencies = Object.keys(gemspec)\n .filter((k) => k !== 'version')\n .reduce(gemfileReducer(lockFile, allDeps, ancestors.concat([dep])), {});\n }\n }\n return deps;\n};\n\nfunction gemfileLockToDependencies(fileContents) {\n const lockFile = gemfile.interpret(fileContents, true);\n\n return (\n Object.keys(lockFile.dependencies || {})\n // this is required to sanitise git deps with no exact version\n // listed as `rspec!`\n .map((dep) => dep.match(/[^!]+/)[0])\n .reduce(gemfileReducer(lockFile, new Map(), []), {})\n );\n}\n","module.exports = test;\n\nconst detect = require('../detect');\nconst { runTest } = require('./run-test');\nconst chalk = require('chalk');\nconst pm = require('../package-managers');\nconst { UnsupportedPackageManagerError } = require('../errors');\nconst { isMultiProjectScan } = require('../is-multi-project-scan');\n\nasync function test(root, options, callback) {\n if (typeof options === 'function') {\n callback = options;\n options = {};\n }\n if (!options) {\n options = {};\n }\n const promise = executeTest(root, options);\n if (callback) {\n promise\n .then((res) => {\n callback(null, res);\n })\n .catch(callback);\n }\n return promise;\n}\n\nasync function executeTest(root, options) {\n try {\n if (!options.allProjects) {\n options.packageManager = detect.detectPackageManager(root, options);\n }\n return run(root, options).then((results) => {\n for (const res of results) {\n if (!res.packageManager) {\n res.packageManager = options.packageManager;\n }\n }\n if (results.length === 1) {\n // Return only one result if only one found as this is the default usecase\n return results[0];\n }\n // For gradle, yarnWorkspaces, allProjects we may be returning more than one result\n return results;\n });\n } catch (error) {\n return Promise.reject(\n chalk.red.bold(error.message ? error.message : error),\n );\n }\n}\n\nfunction run(root, options) {\n const projectType = options.packageManager;\n validateProjectType(options, projectType);\n return runTest(projectType, root, options);\n}\n\nfunction validateProjectType(options, projectType) {\n if (\n !(\n options.docker ||\n isMultiProjectScan(options) ||\n pm.SUPPORTED_PACKAGE_MANAGER_NAME[projectType]\n )\n ) {\n throw new UnsupportedPackageManagerError(projectType);\n }\n}\n"],"names":[],"sourceRoot":""} |