{"version":3,"file":"main.js","mappings":";;;;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACTyE;AAEnC;AACkD;AACe;;;;;;;;;;;;;;;;IC0B/E,iFAAmE;IAAA,qEAAU;IAAA,4DAAa;;;IAKlF,iFAA4D;IAC5D,uDACA;IAAA,4DAAa;;;IAFgC,0EAAc;IAC3D,0DACA;IADA,mFACA;;;IAHJ,mFAA+G;IAC3G,gKAEa;IACjB,4DAAe;;;;IAJgD,kHAA+C;IAC7E,0DAAc;IAAd,mFAAc;;;IAFnD,wEAAiD;IAC7C,qJAIe;;IACnB,qEAAe;;;IALqB,0DAA6B;IAA7B,+JAA6B;;ADhBlF,MAAM,OAAO,GAAG,CAAC,GAAa,EAAE,KAAa,EAAY,EAAE;IAChE,MAAM,WAAW,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC;IAExC,OAAO,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC;AACtE,CAAC,CAAC;AAOK,MAAM,sBAAsB;IAWjC,YACkC,IAAS,EAClC,SAA+C,EAC9C,EAAe,EACf,GAAe,EACf,MAAc;QAJU,SAAI,GAAJ,IAAI,CAAK;QAClC,cAAS,GAAT,SAAS,CAAsC;QAC9C,OAAE,GAAF,EAAE,CAAa;QACf,QAAG,GAAH,GAAG,CAAY;QACf,WAAM,GAAN,MAAM,CAAQ;QAfxB,eAAU,GAAc,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC;YACpC,WAAW,EAAE,EAAE;SAChB,CAAC,CAAC;QACH,eAAU,GAAgB,EAAE,CAAC;IAazB,CAAC;IAEL,QAAQ;QACN,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,aAAa,CAAE,CAAC,YAAY;aAC7C,IAAI,CACH,4DAAY,CAAC,GAAG,CAAC,EACjB,mDAAG,CAAC,CAAC,GAAG,EAAE,EAAE;YACV,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;YACnB,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;YACrB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;YACtB,IAAI,IAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,MAAM,IAAG,CAAC,EAAE;gBACnB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;aACzB;iBAAM;gBACL,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;aAC1B;QACH,CAAC,CAAC,EACF,yDAAS,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAM,QAAQ,EAAE,WAAW,EAAE,EAAE,KAAK,EAAE,EAAE,IAAI,CAAC;aAC1E,IAAI,CACH,wDAAQ,CAAC,GAAG,EAAE;YACZ,IAAI,CAAC,SAAS,GAAG,KAAK;QACxB,CAAC,CAAC,CACH,CACF,CACF;aACA,SAAS,CAAC,IAAI,CAAC,EAAE;YAChB,IAAI,CAAC,SAAS,GAAG,KAAK;YACtB,IAAI,CAAC,IAAI,EAAE;gBACT,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;gBACzB,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;aACtB;iBAAM,IAAI,IAAI,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE;gBACpC,IAAI,CAAC,QAAQ,GAAG,YAAY,CAAC;gBAC7B,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;aACtB;iBAAM;gBACL,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;gBACnB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;aACxB;YAED,IAAI,CAAC,kBAAkB,GAAG,wCAAE,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAChD,CAAC,CAAC,CAAC;IACP,CAAC;IAEK,QAAQ,CAAC,KAAmB;;YAChC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YACnB,MAAM,GAAG,GAAG,SAAS,CAAC;YACtB,IAAI,EAAU,CAAC;YACf,IAAI,IAAY,CAAC;YACjB,IAAI,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC;YAEvB,QAAQ,KAAK,CAAC,KAAK,EAAE;gBACnB,KAAK,IAAI,CAAC,kBAAkB,CAAC,8HAA+B,CAAC;oBAC3D,IAAI,GAAG,GAAG,CAAC,CAAC,oBAAoB;oBAChC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,WAAW,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;oBAC7D,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;oBACvB,MAAM;gBACR,KAAK,IAAI,CAAC,kBAAkB,CAAC,6HAA8B,CAAC;oBAC1D,IAAI,GAAG,GAAG,CAAC,CAAC,oBAAoB;oBAChC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,WAAW,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;oBAC7D,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;oBACvB,MAAM;gBACR,KAAK,IAAI,CAAC,kBAAkB,CAAC,0HAA2B,CAAC;oBACvD,IAAI,GAAG,GAAG,CAAC;oBACX,IAAI,CAAC,GAAG,CAAC,IAAI,CAAM,OAAO,EAAE,WAAW,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE;wBACrE,IAAI,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,KAAK,EAAE;4BAClB,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;4BACvB,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;4BAC3D,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;yBACxB;oBACH,CAAC,CAAC,CAAC;oBACH,MAAM;gBACR,KAAK,IAAI,CAAC,kBAAkB,CAAC,4HAA6B,CAAC;oBACzD,IAAI,GAAG,GAAG,CAAC;oBACX,IAAI,CAAC,GAAG,CAAC,IAAI,CAAM,SAAS,EAAE,WAAW,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE;wBAC7E,IAAI,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,KAAK,EAAE;4BAClB,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;4BACvB,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;4BAC3D,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;yBACxB;oBACH,CAAC,CAAC,CAAC;oBACH,MAAM;gBAER;oBACE,MAAM;aACT;QACH,CAAC;KAAA;IAEO,YAAY,CAAC,KAAa;QAChC,IAAI,KAAK,EAAE;YACT,OAAO,IAAI,CAAC,UAAU;iBACnB,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,EAAC,WAAW,EAAE,KAAK,CAAC,WAAW,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,EAAC,CAAC,CAAC;iBACpF,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;SAC5C;QAED,OAAO,IAAI,CAAC,UAAU,CAAC;IACzB,CAAC;IAED,kBAAkB,CAAC,IAAW;QAC5B,QAAQ,IAAI,EAAE;YACZ,KAAK,8HAA+B;gBAClC,OAAO,WAAW,CAAC;YACrB,KAAK,6HAA8B;gBACjC,OAAO,oBAAoB,CAAC;YAC9B,KAAK,0HAA2B;gBAC9B,OAAO,YAAY,CAAC;YACtB,KAAK,4HAA6B;gBAChC,OAAO,SAAS,CAAC;YAEnB;gBACE,OAAO,EAAE,CAAC;SACb;IACH,CAAC;;4FA9HU,sBAAsB,kEAYvB,qEAAe;oHAZd,sBAAsB;QC/BnC,wEAAqB;QACjB,iFAA2D;QACzD,qFAA8C;QAC5C,yEAA4B;QAC1B,uEAAM;QAAA,4EAAiB;QAAA,4DAAO;QAC9B,0EAA8D;QAAlC,4IAAS,qBAAsB,IAAE;QAAC,2EAAU;QAAA,gEAAK;QAAA,4DAAW;QAAA,4DAAO;QACjG,4DAAM;QACR,4DAAkB;QACpB,4DAAc;QAChB,4DAAK;QAGL,yEAA4I;QAC1I,0EACwC;QAEtC,0EAAwB;QACtB,0EAAkD;QAE9C,2EAAkD;QAC9C,sFAAiG;QAC7F,8EAAyE;QACrE,4EAAU;QAAA,mEAAO;QAAA,4DAAW;QAC9B,4DAAS;QACb,6EAAW;QAAA,kEAAM;QAAA,4DAAY;QAC7B,wEAIqC;QACnC,4FAAiK;QAA7F,iLAAkB,8EAAyE,IAAC;QAE5J,mIAA0F;QAG1F,uIAMe;QACrB,4DAAmB;QACrB,4DAAiB;QACnB,4DAAO;QAEb,4DAAM;QAER,4DAAM;QAEN,0EAAuB;QAAA,6MAAiJ;QAAA,4DAAK;QAE/K,4DAAM;QAER,4DAAM;;;QAnC6B,2DAAwB;QAAxB,qFAAwB;QAUpC,0DAA6B;QAA7B,gFAA6B;QAGjB,0DAA+B;QAA/B,mGAA+B;QAG7B,0DAAgC;QAAhC,oGAAgC;;;;;;;;;;;;;;;;;;;;;;ACnCE;;;;;;;AAUlE,MAAM,sBAAsB;IAQjC,YACkC,IAAS,EACjC,SAA+C,EAC/C,GAAe;QAFS,SAAI,GAAJ,IAAI,CAAK;QACjC,cAAS,GAAT,SAAS,CAAsC;QAC/C,QAAG,GAAH,GAAG,CAAY;QARzB,mBAAc,GAAG,KAAK,CAAC;QACvB,cAAS,GAAG,IAAI,CAAC;QACjB,cAAS,GAAW,oBAAoB,CAAC;QACzC,gBAAW,GAAW,qBAAqB,CAAC;IAMxC,CAAC;IAEL,QAAQ;QACN,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC;QACrC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC;QAEzC,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;YACnB,IAAI,CAAC,GAAG,CAAC,IAAI,CAAM,SAAS,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE;gBAC1E,IAAI,OAAO,IAAI,OAAO,CAAC,MAAM,EAAE;oBAC7B,IAAI,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;oBACxB,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC;iBAChC;YACH,CAAC,CAAC,CAAC;SACJ;IACH,CAAC;IAED,eAAe;QACb,MAAM,IAAI,GAAG,IAAI,CAAC;QAClB,UAAU,CAAC,GAAG,EAAE;YACd,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC9C,CAAC,EAAE,GAAG,CAAC,CAAC;IACV,CAAC;IAED,YAAY,CAAC,IAAS;QACpB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;IAC1B,CAAC;IAED,aAAa,CAAC,IAAa;QACzB,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;IAC7B,CAAC;IAED,QAAQ;QACN,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IACzC,CAAC;IAED,aAAa;QACX,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC7B,CAAC;IAED,WAAW;QACT,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IACzC,CAAC;IAED,iBAAiB,CAAC,MAAW;;QAC3B,IAAI,MAAM,KAAI,YAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,MAAM,0CAAE,QAAQ,MAAI,kBAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,MAAM,0CAAE,QAAQ,0CAAE,GAAG,GAAE;YACvE,MAAM,OAAO,GAAiB;gBAC5B,EAAE,EAAE,MAAM,CAAC,EAAE;gBACb,IAAI,EAAE,MAAM,CAAC,IAAI;gBACjB,MAAM,EAAE;oBACN,QAAQ,oBAAQ,YAAM,CAAC,MAAM,0CAAE,QAAQ,CAAE;iBAC1C;aACF;YACD,IAAI,IAAI,CAAC,YAAY,EAAE;gBACrB,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,OAAO,EAAE,0BAA0B,EAAE,qBAAqB,CAAC,CAAC;aAC9F;iBAAM;gBACL,sEAAsE;gBACtE,8DAA8D;gBAC9D,MAAM,IAAI,GAAG,IAAI,CAAC;gBAClB,UAAU,CAAC,GAAG,EAAE;oBACd,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,OAAO,EAAE,0BAA0B,EAAE,qBAAqB,CAAC,CAAC;gBAC/F,CAAC,EAAE,IAAI,CAAC,CAAC;aACV;SACF;IACH,CAAC;;4FA3EU,sBAAsB,kEASvB,qEAAe;oHATd,sBAAsB;;;;;;QCXnC,yEAAkC;QAChC,6FACwG;QADzB,2KAAe,iBAAkB,IAAC,uHAC9F,mBAAoB,IAD0E;QAEjH,4DAA0B;QAC5B,4DAAM;QACN,yEAA8B;QAC5B,qFAEmC;QAFwB,8KAAmB,yBAAqB,IAAC,gHAClF,wBAAoB,IAD8D;QAGpG,4DAAe;QACjB,4DAAM;;QATqB,0DAAmB;QAAnB,4EAAmB;QAKhB,0DAA8B;QAA9B,uFAA8B;;;;;;;;;;;;;;;;;;;;;ACNmB;;;;;;;ICC7E,4EAE+B;IAA7B,mUAA4B;IAAC,uDAAqB;IAAA,4DAAS;;;IAA9B,0DAAqB;IAArB,kFAAqB;;;;IAElD,4EAEiC;IADiD,iUAA0B;IAC3E,uDAAmB;IAAA,4DAAS;;;IAA3D,yFAA8B;IAAC,0DAAmB;IAAnB,gFAAmB;;;;IAEtD,4EAE6B;IAA3B,iUAA0B;IAAC,uDAAsB;IAAA,4DAAS;;;IAFpD,2FAAgC;IAEX,0DAAsB;IAAtB,mFAAsB;;ADJ9C,MAAM,0BAA0B;IAarC;QAXS,eAAU,GAAG,KAAK,CAAC;QACnB,kBAAa,GAAG,KAAK,CAAC;QACtB,iBAAY,GAAG,KAAK,CAAC;QACrB,wBAAmB,GAAG,EAAE,CAAC;QACzB,gBAAW,GAAG,MAAM,CAAC;QACrB,aAAQ,GAAG,MAAM,CAAC;QAClB,eAAU,GAAG,QAAQ,CAAC;QACrB,gBAAW,GAAG,IAAI,uDAAY,EAAQ,CAAC;QACvC,gBAAW,GAAG,IAAI,uDAAY,EAAQ,CAAC;QACvC,kBAAa,GAAG,IAAI,uDAAY,EAAQ,CAAC;IAEnC,CAAC;IAEjB,QAAQ;IACR,CAAC;IAED,SAAS;QACP,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;IAC1B,CAAC;IAED,SAAS;QACP,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;IAC1B,CAAC;IAED,WAAW;QACT,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;IAC5B,CAAC;;oGA5BU,0BAA0B;wHAA1B,0BAA0B;QCPvC,yEAAuC;QACrC,4HAE6D;QAC7D,0EAAyC;QACvC,4HAE6D;QAC/D,4DAAO;QACP,4HAE4D;QAC9D,4DAAM;;QAXK,0DAAqB;QAArB,gFAAqB;QAGxB,0DAAkC;QAAlC,+FAAkC;QAC7B,0DAAsB;QAAtB,iFAAsB;QAIS,0DAAqB;QAArB,gFAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACTyC;;;;;;;;;;;;;;;;;;ICQtG,oEAC2D;;;IAD4B,yFAAyB;;;;IAW5G,uEAEwE;;;IADtE,yGAAiC;IACjC,mHAAkC;IAAC,mHAAkC;IAFM,8FAA6B;;;IAG1G,uEAEwE;;;IADtE,yGAAiC;IACjC,mHAAkC;IAAC,mHAAkC;IAFW,kEAAS;;;IAJ7F,oFAAwD;IACtD,kJAEwE;IACxE,kJAEwE;IAC1E,4DAAiB;;;IANP,0DAAqC;IAArC,wGAAqC;IAGrC,0DAAoC;IAApC,uGAAoC;;;IAK9C,0EAAkE;IAAA,uDAA0B;IAAA,4DAAM;;;IAAhC,0DAA0B;IAA1B,6FAA0B;;;IAX9F,sEAA+B;IAE7B,iJAOiB;IAEjB,2HAAkG;IACpG,4DAAM;;;IAVkC,0DAAgB;IAAhB,mFAAgB;IASP,0DAAiB;IAAjB,oFAAiB;;;IAS5D,iFAAgE;IAAA,uDAAa;IAAA,4DAAa;;;IAA5C,8EAAiB;IAAC,0DAAa;IAAb,8EAAa;;;;IAHjF,oFAAwD;IACtD,iFAC2E;IACzE,2JAA0F;IAC5F,4DAAa;IACf,4DAAiB;;;IAJkB,0DAAgB;IAAhB,iFAAgB;IAEnB,0DAAgB;IAAhB,0FAAgB;;;IAIhD,0EAAkE;IAAA,uDAA0B;IAAA,4DAAM;;;IAAhC,0DAA0B;IAA1B,6FAA0B;;;IAT9F,sEAAgC;IAE9B,iJAKiB;IAEjB,2HAAkG;IACpG,4DAAM;;;IARkC,0DAAgB;IAAhB,mFAAgB;IAOP,0DAAiB;IAAjB,oFAAiB;;;IAS5D,iFAAgE;IAAA,uDAAa;IAAA,4DAAa;;;IAA5C,8EAAiB;IAAC,0DAAa;IAAb,8EAAa;;;IAHjF,oFAAwD;IACtD,iFAC2E;IACzE,2JAA0F;IAC5F,4DAAa;IACf,4DAAiB;;;IAJkB,0DAAgB;IAAhB,iFAAgB;IAEnB,0DAAgB;IAAhB,0FAAgB;;;IAIhD,0EAAkE;IAAA,uDAA0B;IAAA,4DAAM;;;IAAhC,0DAA0B;IAA1B,6FAA0B;;;IAT9F,sEAAwC;IAEtC,iJAKiB;IAEjB,2HAAkG;IACpG,4DAAM;;;IARkC,0DAAgB;IAAhB,mFAAgB;IAOP,0DAAiB;IAAjB,oFAAiB;;;IAW1D,uEAA0C;IACxC,uDACF;IAAA,4DAAO;;;IADL,0DACF;IADE,6MACF;;;IAEF,iFAAgE;IAAA,uDAAa;IAAA,4DAAa;;;IAA5C,8EAAiB;IAAC,0DAAa;IAAb,8EAAa;;;IATjF,oFAAwD;IACtD,iFACoF;IAClF,qFAAoB;IAClB,uDACA;IAAA,+IAEO;IACT,4DAAqB;IACrB,2JAA0F;IAC5F,4DAAa;IACf,4DAAiB;;;IAVkB,0DAAgB;IAAhB,iFAAgB;IAG7C,0DACA;IADA,2HACA;IAAO,0DAAiC;IAAjC,qIAAiC;IAId,0DAAgB;IAAhB,0FAAgB;;;IAK9C,2EAAgD;IAC9C,oFAAuC;IAAA,uDAAS;IAAA,4DAAgB;IAClE,4DAAW;;;IAD8B,0DAAS;IAAT,0EAAS;;;IAFpD,0EAAkE;IAChE,4IAEW;IACb,4DAAM;;;IAHwB,0DAAkB;IAAlB,uFAAkB;;;IAhBlD,sEAAoC;IAElC,iJAWiB;IAEjB,2HAIM;IACR,4DAAM;;;IAlBkC,0DAAgB;IAAhB,mFAAgB;IAaP,0DAAiB;IAAjB,oFAAiB;;;IAShE,oFAAwD;IACtD,uEAA6F;IAC7F,uFAAwE;IACxE,sFAAyC;IAC3C,4DAAiB;;;;IAHC,0DAAwB;IAAxB,+EAAwB;IACP,0DAAc;IAAd,qEAAc;;;IAIjD,0EAAiF;IAAA,uDACjF;;IAAA,4DAAM;;;IAD2E,0DACjF;IADiF,yKACjF;;;IACA,0EAAkF;IAAA,8DAAG;IAAA,4DAAM;;;IAV7F,sEAA4B;IAE1B,kJAIiB;IAEjB,4HACM;IACN,4HAA2F;IAC7F,4DAAM;;;IATkC,0DAAgB;IAAhB,mFAAgB;IAMP,0DAAgC;IAAhC,0GAAgC;IAEhC,0DAAiC;IAAjC,2GAAiC;;;IAMhF,oFAAwD;IACtD,0EACmF;IACrF,4DAAiB;;;IADb,0DAAkC;IAAlC,mHAAkC;IAAC,mHAAkC;IADzB,oFAAmB;;;IAInE,0EAAkE;IAAA,uDAAiB;IAAA,4DAAM;;;IAAvB,0DAAiB;IAAjB,oFAAiB;;;IAPrF,sEAAgC;IAE9B,kJAGiB;IAEjB,4HAAyF;IAC3F,4DAAM;;;IANkC,0DAAgB;IAAhB,mFAAgB;IAKP,0DAAiB;IAAjB,oFAAiB;;;IAMhE,8EACe;;;IADkB,8FAA6B;;;IAG9D,0EAAkE;IAAA,uDAAgC;IAAA,4DAAM;;;IAAtC,0DAAgC;IAAhC,mGAAgC;;;IALpG,sEAAgC;IAE9B,+IACe;IAEf,4HAAwG;IAC1G,4DAAM;;;IAJW,0DAAgB;IAAhB,mFAAgB;IAGgB,0DAAiB;IAAjB,oFAAiB;;;IAWlE,uEAA8B;IAC5B,uDACF;IAAA,4DAAO;;;IADL,0DACF;IADE,4GACF;;;IACA,uEAA+B;IAC7B,uDACF;IAAA,4DAAO;;;IADL,0DACF;IADE,mIACF;;;IANF,gFAAwE;IACtE,qIAEO;IACP,qIAEO;IACT,4DAAY;;;IANH,0DAAqB;IAArB,wFAAqB;IAGrB,0DAAsB;IAAtB,yFAAsB;;;;;AD/G1B,MAAM,yBAAyB;IAkCpC,YACU,GAAe,EACf,IAA0B;QAD1B,QAAG,GAAH,GAAG,CAAY;QACf,SAAI,GAAJ,IAAI,CAAsB;QA/B3B,eAAU,GAAG,KAAK,CAAC;QAClB,eAAU,GAAG,IAAI,uDAAY,EAAO,CAAC;QACrC,aAAQ,GAAG,IAAI,uDAAY,EAAO,CAAC;IA8BzC,CAAC;IA5BL,IAAI,OAAO;QACT,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;YACnD,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC;SACjD;aAAM;YACL,OAAO,KAAK,CAAC;SACd;IACH,CAAC;IACD,IAAI,OAAO;QACT,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;YACnD,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC;SACjD;aAAM;YACL,OAAO,KAAK,CAAC;SACd;IACH,CAAC;IACD,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC;IACnD,CAAC;IACD,IAAI,UAAU;QACZ,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;YACnD,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC;SACjD;aAAM;YACL,OAAO,IAAI,CAAC;SACb;IACH,CAAC;IAOD,QAAQ;QACN,IAAI,IAAI,CAAC,KAAK,CAAC,cAAc,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,KAAK,IAAI,EAAE;YAC1D,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;SAC1B;IACH,CAAC;IAED,eAAe;QACb,IAAI,IAAI,CAAC,KAAK,CAAC,WAAW,KAAK,kBAAkB,EAAE;YACjD,IAAI,CAAC,UAAU,EAAE,CAAC;SACnB;IACH,CAAC;IAEY,aAAa,CAAC,CAAC;;YAC1B,MAAM,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;YAEvC,aAAa;YACb,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,cAAc,EAAE;gBAC9B,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;gBACpB,OAAO;aACR;YAED,MAAM,SAAS,GAAG,IAAI,CAAC,KAA6B,CAAC;YAErD,iBAAiB;YACjB,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,SAAS,CAAC,YAAY,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;YAEhE,IAAI,IAAI,CAAC;YACT,IAAI,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC;YACrC,IAAI,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC;YACvC,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC;YACrC,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,GAAG,CAAQ,OAAO,EAAE,UAAU,EAAE,IAAI,CAAC,CAAC,SAAS,EAAE;iBAC1E,IAAI,CAAC,GAAG,CAAC,EAAE;gBACV,IAAI,GAAG,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;oBACpB,OAAO,EAAE,GAAG,EAAE,IAAI,CAAC,QAAQ,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;gBACxD,CAAC,CAAC,CAAC;gBACH,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAChD,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;gBACb,OAAO,CAAC,KAAK,CAAC,mBAAmB,EAAE,GAAG,CAAC,CAAC;gBACxC,IAAI,GAAG,EAAE,CAAC;YACZ,CAAC,CAAC,CAAC;YAEL,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,SAAS,CAAC,YAAY,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;QACpE,CAAC;KAAA;IAEY,UAAU;;YACrB,MAAM,SAAS,GAAG,IAAI,CAAC,KAA6B,CAAC;YAErD,IAAI,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC;YACrC,IAAI,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC;YACvC,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC;YACrC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAQ,OAAO,EAAE,UAAU,EAAE,IAAI,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE;;gBAChE,MAAM,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;oBAC7B,OAAO,EAAE,GAAG,EAAE,IAAI,CAAC,QAAQ,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;gBACxD,CAAC,CAAC,CAAC;gBACH,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC9C,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,SAAS,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;gBAEzD,IAAI,UAAI,CAAC,KAAK,0CAAE,UAAU,EAAE;oBAC1B,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC;oBAC9C,IAAI,GAAG,EAAE;wBACP,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,SAAS,CAAC,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC;qBACvD;iBACF;YACH,CAAC,CAAC,CAAC;QACL,CAAC;KAAA;IAEY,aAAa;;YACxB,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC;YAEpD,IAAI,CAAC,GAAG;gBACN,OAAO;YAET,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,GAAG,CAAC;QACzB,CAAC;KAAA;;kGAhHU,yBAAyB;uHAAzB,yBAAyB;QCZtC,yEAE+E;QAG7E,sEAAK;QACH,2EAC2F;QAAA,uDAAe;QAAA,4DAAQ;QAClH,qHAC2D;QAC7D,4DAAM;QAGN,yEAAoC;QAGlC,qHAYM;QAGN,qHAUM;QAGN,qHAUM;QAGN,qHAoBM;QAEN,uHAWM;QAGN,uHAQM;QAGN,uHAMM;QAGR,4DAAM;QAMN,mIAOY;QAEd,4DAAM;;QA/HJ,2PAAmI;QAM/H,0DAAwF;QAAxF,0MAAwF;QADnF,+EAAsB;QAC8D,0DAAe;QAAf,gFAAe;QACnD,0DAA8B;QAA9B,kGAA8B;QAKlF,0DAA8B;QAA9B,2FAA8B;QAG3B,0DAAuB;QAAvB,mFAAuB;QAevB,0DAAwB;QAAxB,oFAAwB;QAaxB,0DAAgC;QAAhC,4FAAgC;QAahC,0DAA4B;QAA5B,wFAA4B;QAsB5B,0DAAoB;QAApB,gFAAoB;QAcpB,0DAAwB;QAAxB,oFAAwB;QAWxB,0DAAwB;QAAxB,oFAAwB;QAepB,0DAAyB;QAAzB,6FAAyB;;;;;;;;;;;;;;;;;;;;;;;ACvHmD;;;;;;;;;ICGtF,yEAAwD;IACtD,yEAA0B;IACxB,4FAC0D;IADR,4VAAgC;IAElF,4DAAyB;IAC3B,4DAAM;IACR,4DAAM;;;;IAJsB,0DAAyB;IAAzB,yFAAyB;;;IAOnD,4EAC+E;IAC7E,uDACF;IAAA,4DAAS;;;IAF6C,wFAAwB;IAC5E,0DACF;IADE,mGACF;;;;IACA,6EAC+D;IAA3B,oUAA0B;IAC5D,mEACF;IAAA,4DAAS;;;IARX,yEAA4D;IAC1D,4HAGS;IACT,4HAGS;IACX,4DAAM;;;IARgB,0DAA4B;IAA5B,0FAA4B;IAI5B,0DAA4B;IAA5B,0FAA4B;;ADL/C,MAAM,oBAAoB;IAuB/B,YACU,mBAAwC;QAAxC,wBAAmB,GAAnB,mBAAmB,CAAqB;QAtBzC,WAAM,GAAqB,EAAE,CAAC;QAC9B,aAAQ,GAAG,KAAK,CAAC;QACjB,SAAI,GAAG,QAAQ,CAAC;QAChB,eAAU,GAAG,IAAI,CAAC;QAClB,qBAAgB,GAAG,QAAQ,CAAC;QAC5B,uBAAkB,GAAG,KAAK,CAAC;QAC3B,0BAAqB,GAAG,KAAK,CAAC;QAC9B,eAAU,GAAG,KAAK,CAAC;QAElB,sBAAiB,GAAG,IAAI,uDAAY,EAAO,CAAC;IAclD,CAAC;IAXL,uBAAuB;IACvB,IAAI,OAAO;QACT,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;IACzB,CAAC;IAED,OAAO;QACL,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;IACzB,CAAC;IAMD,QAAQ;QACN,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,mBAAmB,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAE9D,IAAI,IAAI,CAAC,QAAQ,EAAE;YACjB,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;SACrB;IACH,CAAC;IAED,QAAQ;QACN,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;IAC3C,CAAC;IAED,UAAU;QACR,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAED,SAAS;QACP,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACtB,CAAC;IAED,WAAW;QACT,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IACxB,CAAC;IAED,WAAW,CAAC,IAAW;QACrB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,mBAAmB,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;IACzD,CAAC;IAEM,oBAAoB,CAAC,IAAI;QAC9B,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;YACzC,OAAO,IAAI,CAAC,GAAG,KAAK,IAAI,CAAC,GAAG,CAAC;QAC/B,CAAC,CAAC,CAAC;QACH,IAAI,UAAU,EAAE;YACd,MAAM,aAAa,GAAG,UAAkC,CAAC;YACzD,aAAa,CAAC,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC;SACnC;IACH,CAAC;IAEM,WAAW,CAAC,IAAI;QACrB,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACxC,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;YACzC,OAAO,IAAI,CAAC,GAAG,KAAK,IAAI,CAAC,GAAG,CAAC;QAC/B,CAAC,CAAyB,CAAC;QAC3B,IAAI,UAAU,IAAI,CAAC,WAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,KAAK,GAAE;YACpC,MAAM,WAAW,GAAG,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;gBACjD,OAAO,IAAI,CAAC,GAAG,KAAK,IAAI,CAAC,IAAI,CAAC;YAChC,CAAC,CAAC,CAAC;YAEH,IAAI,OAAO,IAAI,WAAW,EAAE;gBAC1B,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;aACrC;SACF;IACH,CAAC;;wFA/EU,oBAAoB;kHAApB,oBAAoB;QCXjC,sEAAK;QACH,0EAAiD;QAA3C,gJAAY,cAAU,IAAC;QAE3B,gHAMM;QAEN,gHASM;QACR,4DAAO;QACT,4DAAM;;QArB0B,0DAAkB;QAAlB,+EAAkB;QAEvB,0DAAc;QAAd,+EAAc;QAQX,0DAAgC;QAAhC,2FAAgC;;;;;;;;;;;;;;;;;;;ACVX;;AAK5C,MAAM,mBAAmB;IAK9B,YAAoB,GAAe;QAAf,QAAG,GAAH,GAAG,CAAY;IAAI,CAAC;IAGjC,OAAO,CAAC,OAAmB;;QAChC,IAAI,WAAI,CAAC,GAAG,CAAC,aAAa,0CAAE,KAAK,KAAI,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,KAAK,KAAK,EAAE;YACtE,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,KAAK,GAAG,uEAAyB,CAAC,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;;YAExG,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,KAAK,GAAG,IAAI,CAAC;IACxC,CAAC;;sFAbU,mBAAmB;iHAAnB,mBAAmB;iJAAnB,mBAAe;;;;;;;;;;;;;;;;;ACNrB,MAAM,cAAc;;AAET,qBAAM,GAAG,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE;IACvC,IAAI,CAAC,KAAK;QACN,OAAO,IAAI,CAAC;IAEhB,IAAI,GAAG,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC1B,IAAI,MAAM,GAAG,KAAK,CAAC;IAEnB,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,SAAS,IAAK,GAAG,IAAI,GAAG;QAChD,MAAM,GAAG,GAAG,CAAC,QAAQ,EAAE,CAAC;SACvB,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,SAAS,IAAK,GAAG,IAAI,GAAG;QACrD,MAAM,GAAG,GAAG,CAAC,QAAQ,EAAE,CAAC;IAE5B,OAAO,MAAM,CAAC;AAClB,CAAC;AAEa,yBAAU,GAAG,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;IACtC,IAAI,CAAC,KAAK;QACN,OAAO,IAAI,CAAC;IAEhB,IAAI,MAAM,GAAG,KAAK,CAAC;IACnB,IAAI,cAAc,CAAC,mBAAmB,CAAC,KAAK,EAAE,GAAG,CAAC;QAC9C,MAAM,GAAG,cAAc,CAAC,gBAAgB,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC;IAExF,OAAO,MAAM,CAAC;AAClB,CAAC;AAEc,kCAAmB,GAAG,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;;IAChD,IAAI,CAAC,GAAG;QACJ,OAAO,KAAK,CAAC;IAEjB,IAAI,MAAM,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC;IAC9B,IACI,MAAM;QACN,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC;QACpB,mBAAM,CAAC,KAAK,CAAC,GAAG,CAAC,0CAAG,CAAC,CAAC,0CAAE,MAAM,KAAI,GAAG,EACrC;QACA,OAAO,IAAI,CAAC;KACb;SAAM;QACL,OAAO,KAAK,CAAC;KACd;AACL,CAAC;AAEc,+BAAgB,GAAI,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE;IACpD,IAAI,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,MAAM,CAAC,EACjC,WAAW,GAAG,MAAM,GAAG,UAAU,EACjC,YAAY,GAAG,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,WAAW,CAAC,CAAC;IAEzE,OAAO,YAAY,GAAG,UAAU,CAAC;AACrC,CAAC,CAAC;;;;;;;;;;;;;;;;;;ACjD6C;;AAK5C,MAAM,eAAe;IAQ1B,YAAoB,GAAe;QAAf,QAAG,GAAH,GAAG,CAAY;IAAI,CAAC;IAGjC,OAAO,CAAC,OAAmB;;QAChC,IAAI,WAAI,CAAC,GAAG,CAAC,aAAa,0CAAE,KAAK,KAAI,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,KAAK,KAAK,EAAE;YACtE,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,KAAK,GAAG,mEAAqB,CAAC,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;;YAEvG,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,KAAK,GAAG,IAAI,CAAC;IACxC,CAAC;;8EAhBU,eAAe;6GAAf,eAAe;6IAAf,mBAAe;;;;;;;;;;;;;;;;;ACNrB,MAAM,UAAU;;AACL,kBAAO,GAAG,SAAS,CAAC;AACpB,mBAAQ,GAAG,UAAU,CAAC;AACtB,gBAAK,GAAG,OAAO,CAAC;AAChB,uBAAY,GAAG,eAAe,CAAC;AAC/B,sBAAW,GAAG,aAAa;AAC3B,qBAAU,GAAG,YAAY;;;;;;;;;;;;;;;;;;;;;;;;ACLM;AACR;AACQ;AACe;AACL;AACV;AACF;AACP;AAEjC,MAAM,cAAc;IA+VvB;;;OAGG;IAEK,MAAM,CAAC,OAAO;QAClB,MAAM,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;QACxB,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QAChC,MAAM,KAAK,GAAG,GAAG,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;QACxD,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;QACjD,MAAM,UAAU,GAAG,GAAG,IAAI,IAAI,KAAK,IAAI,GAAG,EAAE,CAAC;QAE7C,OAAO,UAAU,CAAC;IACtB,CAAC;;AA1WD,0DAA0D;AAC5C,4BAAa,GAAqB;IAE5C,IAAI,wDAAY,CAAC;QACb,GAAG,EAAE,6DAAkB;QACvB,KAAK,EAAE,cAAc;QACrB,KAAK,EAAE,EAAE;QACT,OAAO,EAAE,qCAAqC;QAC9C,QAAQ,EAAE,IAAI;QACd,IAAI,EAAE,MAAM;QACZ,IAAI,EAAE,kGAAkG;QACxG,KAAK,EAAE,CAAC;QACR,SAAS,EAAE,GAAG;QACd,SAAS,EAAE,CAAC;KACf,CAAC;IAEF,IAAI,0DAAa,CAAC;QACd,GAAG,EAAE,6DAAkB;QACvB,KAAK,EAAE,cAAc;QACrB,QAAQ,EAAE,IAAI;QACd,OAAO,EAAE;YACL,EAAE,GAAG,EAAE,oBAAoB,EAAE,KAAK,EAAE,oBAAoB,EAAE;YAC1D,EAAE,GAAG,EAAE,kBAAkB,EAAE,KAAK,EAAE,kBAAkB,EAAE;YACtD,EAAE,GAAG,EAAE,sBAAsB,EAAE,KAAK,EAAE,sBAAsB,EAAE;YAC9D,EAAE,GAAG,EAAE,sBAAsB,EAAE,KAAK,EAAE,sBAAsB,EAAE;YAC9D,EAAE,GAAG,EAAE,8BAA8B,EAAE,KAAK,EAAE,8BAA8B,EAAE;YAC9E,EAAE,GAAG,EAAE,mBAAmB,EAAE,KAAK,EAAE,mBAAmB,EAAE;YACxD,EAAE,GAAG,EAAE,kBAAkB,EAAE,KAAK,EAAE,kBAAkB,EAAE;YACtD,EAAE,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;SACnC;QACD,IAAI,EAAE,4EAA4E;QAClF,KAAK,EAAE,CAAC;KACX,CAAC;IAEF,IAAI,0DAAa,CAAC;QACd,GAAG,EAAE,+DAAoB;QACzB,KAAK,EAAE,gBAAgB;QACvB,QAAQ,EAAE,IAAI;QACd,OAAO,EAAE;YACL,EAAE,GAAG,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE;YACpC,EAAE,GAAG,EAAE,aAAa,EAAE,KAAK,EAAE,aAAa,EAAE;YAC5C,EAAE,GAAG,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,EAAE;YACtC,EAAE,GAAG,EAAE,WAAW,EAAE,KAAK,EAAE,WAAW,EAAE;YACxC,EAAE,GAAG,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,EAAE;YACtC,EAAE,GAAG,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE;SACvC;QACD,IAAI,EAAE,kCAAkC;QACxC,OAAO,EAAE,SAAS;QAClB,KAAK,EAAE,CAAC;KACX,CAAC;IAEF,sBAAsB;IACtB,6BAA6B;IAC7B,2BAA2B;IAC3B,uBAAuB;IACvB,iBAAiB;IACjB,wDAAwD;IACxD,wDAAwD;IACxD,0CAA0C;IAC1C,uEAAuE;IACvE,SAAS;IACT,eAAe;IACf,MAAM;CACT,CAAC;AAEF,2BAA2B;AACb,qCAAsB,GAAqB;IAErD,IAAI,0DAAa,CAAC;QACd,GAAG,EAAE,kEAAuB;QAC5B,KAAK,EAAE,mBAAmB;QAC1B,KAAK,EAAE,EAAE;QACT,OAAO,EAAE,uBAAuB;QAChC,QAAQ,EAAE,IAAI;QACd,IAAI,EAAE,MAAM;QACZ,KAAK,EAAE,CAAC;QACR,SAAS,EAAE,GAAG;QACd,SAAS,EAAE,CAAC;QACZ,IAAI,EAAE,8KAA8K;QACpL,IAAI,EAAE,CAAC;KACV,CAAC;CACL,CAAC;AAGF,uBAAuB;AACT,iCAAkB,GAAqB;IAEjD,IAAI,oEAAmB,CAAC;QACpB,GAAG,EAAE,8DAAmB;QACxB,KAAK,EAAE,eAAe;QACtB,QAAQ,EAAE,IAAI;QACd,OAAO,EAAE;YACL,EAAE,GAAG,EAAE,cAAc,EAAE,KAAK,EAAE,cAAc,EAAE;YAC9C,EAAE,GAAG,EAAE,gBAAgB,EAAE,KAAK,EAAE,gBAAgB,EAAE;YAClD,EAAE,GAAG,EAAE,gBAAgB,EAAE,KAAK,EAAE,gBAAgB,EAAE;YAClD,EAAE,GAAG,EAAE,cAAc,EAAE,KAAK,EAAE,cAAc,EAAE;YAC9C,EAAE,GAAG,EAAE,+BAA+B,EAAE,KAAK,EAAE,+BAA+B,EAAE;YAChF,EAAE,GAAG,EAAE,4BAA4B,EAAE,KAAK,EAAE,4BAA4B,EAAE;YAC1E,EAAE,GAAG,EAAE,wBAAwB,EAAE,KAAK,EAAE,wBAAwB,EAAE;YAClE,EAAE,GAAG,EAAE,wBAAwB,EAAE,KAAK,EAAE,wBAAwB,EAAE;YAClE,EAAE,GAAG,EAAE,qBAAqB,EAAE,KAAK,EAAE,qBAAqB,EAAE;YAC5D,EAAE,GAAG,EAAE,uBAAuB,EAAE,KAAK,EAAE,uBAAuB,EAAE;YAChE,EAAE,GAAG,EAAE,eAAe,EAAE,KAAK,EAAE,eAAe,EAAE;YAChD,EAAE,GAAG,EAAE,YAAY,EAAE,KAAK,EAAE,YAAY,EAAE;YAE1C,EAAE,GAAG,EAAE,aAAa,EAAE,KAAK,EAAE,aAAa,EAAE;YAC5C,EAAE,GAAG,EAAE,oBAAoB,EAAE,KAAK,EAAE,oBAAoB,EAAE;YAC1D,EAAE,GAAG,EAAE,yBAAyB,EAAE,KAAK,EAAE,yBAAyB,EAAE;YACpE,EAAE,GAAG,EAAE,+BAA+B,EAAE,KAAK,EAAE,+BAA+B,EAAE;YAChF,EAAE,GAAG,EAAE,0BAA0B,EAAE,KAAK,EAAE,0BAA0B,EAAE;YACtE,EAAE,GAAG,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,EAAE;YACtC,EAAE,GAAG,EAAE,sBAAsB,EAAE,KAAK,EAAE,sBAAsB,EAAE;SACjE;QACD,IAAI,EAAE,mKAAmK;QACzK,KAAK,EAAE,CAAC;KACX,CAAC;IAEF,IAAI,oEAAmB,CAAC;QACpB,GAAG,EAAE,mEAAwB;QAC7B,KAAK,EAAE,YAAY;QACnB,QAAQ,EAAE,IAAI;QACd,OAAO,EAAE;YACL,EAAE,GAAG,EAAE,gCAAgC,EAAE,KAAK,EAAE,gCAAgC,EAAE;YAClF,EAAE,GAAG,EAAE,uDAAuD,EAAE,KAAK,EAAE,uDAAuD,EAAE;YAChI,EAAE,GAAG,EAAE,kCAAkC,EAAE,KAAK,EAAE,kCAAkC,EAAE;YACtF,EAAE,GAAG,EAAE,8BAA8B,EAAE,KAAK,EAAE,8BAA8B,EAAE;YAC9E,EAAE,GAAG,EAAE,kCAAkC,EAAE,KAAK,EAAE,kCAAkC,EAAE;YACtF,EAAE,GAAG,EAAE,uCAAuC,EAAE,KAAK,EAAE,uCAAuC,EAAE;YAChG,EAAE,GAAG,EAAE,qCAAqC,EAAE,KAAK,EAAE,qCAAqC,EAAE;YAC5F,EAAE,GAAG,EAAE,qDAAqD,EAAE,KAAK,EAAE,qDAAqD,EAAE;YAC5H,EAAE,GAAG,EAAE,4BAA4B,EAAE,KAAK,EAAE,4BAA4B,EAAE;YAC1E,EAAE,GAAG,EAAE,4BAA4B,EAAE,KAAK,EAAE,4BAA4B,EAAE;SAC7E;QACD,IAAI,EAAE,0FAA0F;QAChG,KAAK,EAAE,CAAC;KACX,CAAC;CACL,CAAC;AAEY,6BAAc,GAAqB;IAE7C,IAAI,wDAAY,CAAC;QACb,GAAG,EAAE,8DAAmB;QACxB,KAAK,EAAE,eAAe;QACtB,KAAK,EAAE,EAAE;QACT,OAAO,EAAE,EAAE;QACX,QAAQ,EAAE,IAAI;QACd,IAAI,EAAE,MAAM;QACZ,IAAI,EAAE,uCAAuC;QAC7C,KAAK,EAAE,CAAC;QACR,SAAS,EAAE,EAAE;QACb,SAAS,EAAE,CAAC;KACf,CAAC;IAEF,IAAI,0DAAa,CAAC;QACd,GAAG,EAAE,gEAAqB;QAC1B,KAAK,EAAE,QAAQ;QACf,QAAQ,EAAE,IAAI;QACd,OAAO,EAAE;YACL,EAAE,GAAG,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,EAAE;YACtC,EAAE,GAAG,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE;YACpC,EAAE,GAAG,EAAE,aAAa,EAAE,KAAK,EAAE,aAAa,EAAE;YAC5C,EAAE,GAAG,EAAE,WAAW,EAAE,KAAK,EAAE,WAAW,EAAE;YACxC,EAAE,GAAG,EAAE,WAAW,EAAE,KAAK,EAAE,WAAW,EAAE;SAC3C;QACD,OAAO,EAAE,UAAU;QACnB,KAAK,EAAE,CAAC;KACX,CAAC;IAEF,IAAI,yEAAoB,CAAC;QACrB,GAAG,EAAE,mEAAwB;QAC7B,KAAK,EAAE,kBAAkB;QACzB,QAAQ,EAAE,IAAI;QACd,OAAO,EAAE,EAAE;QACX,WAAW,EAAE,cAAc;QAC3B,UAAU,EAAE,kBAAkB;QAC9B,QAAQ,EAAE,MAAM;QAChB,KAAK,EAAE,CAAC;QACR,UAAU,EAAE,IAAI;KACnB,CAAC;IAEF,IAAI,kDAAS,CAAC;QACV,GAAG,EAAE,uEAA4B;QACjC,IAAI,EAAE,MAAM;QACZ,KAAK,EAAE,yBAAyB;QAChC,KAAK,EAAE,IAAI,IAAI,EAAE;QACjB,QAAQ,EAAE,IAAI;KACjB,CAAC;CAGL,CAAC;AAGY,iCAAkB,GAAqB;IAEjD,IAAI,kDAAS,CAAC;QACV,GAAG,EAAE,sEAA2B;QAChC,IAAI,EAAE,MAAM;QACZ,KAAK,EAAE,wBAAwB;QAC/B,QAAQ,EAAE,KAAK;KAClB,CAAC;IAEF,IAAI,wDAAY,CAAC;QACb,GAAG,EAAE,8DAAmB;QACxB,KAAK,EAAE,YAAY;QACnB,KAAK,EAAE,EAAE;QACT,OAAO,EAAE,EAAE;QACX,QAAQ,EAAE,KAAK;QACf,IAAI,EAAE,MAAM;QACZ,IAAI,EAAE,EAAE;QACR,KAAK,EAAE,CAAC;QACR,SAAS,EAAE,EAAE;QACb,SAAS,EAAE,CAAC;KACf,CAAC;IAEF,IAAI,wDAAY,CAAC;QACb,GAAG,EAAE,+DAAoB;QACzB,KAAK,EAAE,gBAAgB;QACvB,KAAK,EAAE,EAAE;QACT,OAAO,EAAE,EAAE;QACX,QAAQ,EAAE,KAAK;QACf,IAAI,EAAE,QAAQ;QACd,IAAI,EAAE,EAAE;QACR,KAAK,EAAE,CAAC;QACR,wBAAwB,EAAE,IAAI;QAC9B,eAAe,EAAE,CAAC;KACrB,CAAC;IAEF,IAAI,0DAAa,CAAC;QACd,GAAG,EAAE,8DAAmB;QACxB,IAAI,EAAE,UAAU;QAChB,KAAK,EAAE,uEAAuE;QAC9E,KAAK,EAAE,KAAK;QACZ,QAAQ,EAAE,KAAK;KAClB,CAAC;CACL,CAAC;AAEF,6BAA6B;AACf,iCAAkB,GAAqB;IAEjD,IAAI,0DAAa,CAAC;QACd,GAAG,EAAE,oEAAyB;QAC9B,KAAK,EAAE,yBAAyB;QAChC,KAAK,EAAE,EAAE;QACT,OAAO,EAAE,uBAAuB;QAChC,QAAQ,EAAE,IAAI;QACd,IAAI,EAAE,MAAM;QACZ,KAAK,EAAE,CAAC;QACR,SAAS,EAAE,GAAG;QACd,SAAS,EAAE,CAAC;QACZ,IAAI,EAAE,CAAC;KACV,CAAC;CACL,CAAC;AAEF,4BAA4B;AACd,+BAAgB,GAAqB;IAE/C,IAAI,0DAAa,CAAC;QACd,GAAG,EAAE,mEAAwB;QAC7B,KAAK,EAAE,wBAAwB;QAC/B,KAAK,EAAE,EAAE;QACT,OAAO,EAAE,uBAAuB;QAChC,QAAQ,EAAE,IAAI;QACd,IAAI,EAAE,MAAM;QACZ,KAAK,EAAE,CAAC;QACR,SAAS,EAAE,GAAG;QACd,SAAS,EAAE,CAAC;QACZ,IAAI,EAAE,CAAC;KACV,CAAC;CACL,CAAC;AAGY,kCAAmB,GAAqB;IAElD,IAAI,0DAAa,CAAC;QACd,GAAG,EAAE,+DAAoB;QACzB,QAAQ,EAAE,IAAI;QACd,OAAO,EAAE;YACL,EAAE,GAAG,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE;YACpC,EAAE,GAAG,EAAE,aAAa,EAAE,KAAK,EAAE,aAAa,EAAE;YAC5C,EAAE,GAAG,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,EAAE;YACtC,EAAE,GAAG,EAAE,WAAW,EAAE,KAAK,EAAE,WAAW,EAAE;YACxC,EAAE,GAAG,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,EAAE;SACzC;QACD,OAAO,EAAE,UAAU;QACnB,KAAK,EAAE,CAAC;KACX,CAAC;IAEF,IAAI,0DAAa,CAAC;QACd,GAAG,EAAE,8DAAmB;QACxB,KAAK,EAAE,eAAe;QACtB,QAAQ,EAAE,IAAI;QACd,OAAO,EAAE;YACL,EAAE,GAAG,EAAE,oBAAoB,EAAE,KAAK,EAAE,oBAAoB,EAAE;YAC1D,EAAE,GAAG,EAAE,kBAAkB,EAAE,KAAK,EAAE,kBAAkB,EAAE;YACtD,EAAE,GAAG,EAAE,sBAAsB,EAAE,KAAK,EAAE,sBAAsB,EAAE;YAC9D,EAAE,GAAG,EAAE,sBAAsB,EAAE,KAAK,EAAE,sBAAsB,EAAE;YAC9D,EAAE,GAAG,EAAE,8BAA8B,EAAE,KAAK,EAAE,8BAA8B,EAAE;YAC9E,EAAE,GAAG,EAAE,mBAAmB,EAAE,KAAK,EAAE,mBAAmB,EAAE;YACxD,EAAE,GAAG,EAAE,kBAAkB,EAAE,KAAK,EAAE,kBAAkB,EAAE;YACtD,EAAE,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;SACnC;QACD,IAAI,EAAE,EAAE;QACR,KAAK,EAAE,CAAC;KACX,CAAC;CACL,CAAC;AAEY,iCAAkB,GAAqB;IAEjD,IAAI,wDAAY,CAAC;QACb,GAAG,EAAE,+DAAoB;QACzB,IAAI,EAAE,QAAQ;QACd,KAAK,EAAE,gBAAgB;QACvB,QAAQ,EAAE,IAAI;QACd,KAAK,EAAE,CAAC;KACX,CAAC;IAEF,IAAI,wDAAY,CAAC;QACb,GAAG,EAAE,8DAAmB;QACxB,IAAI,EAAE,QAAQ;QACd,KAAK,EAAE,eAAe;QACtB,QAAQ,EAAE,KAAK;QACf,KAAK,EAAE,CAAC;KACX,CAAC;IAEF,IAAI,0DAAa,CAAC;QACd,GAAG,EAAE,8DAAmB;QACxB,IAAI,EAAE,UAAU;QAChB,KAAK,EAAE,qCAAqC;QAC5C,KAAK,EAAE,KAAK;QACZ,QAAQ,EAAE,KAAK;KAClB,CAAC;CAEL,CAAC;AAEY,0BAAW,GAAqB;IAE1C,IAAI,wDAAY,CAAC;QACb,GAAG,EAAE,2DAAgB;QACrB,KAAK,EAAE,iBAAiB;QACxB,KAAK,EAAE,EAAE;QACT,OAAO,EAAE,EAAE;QACX,QAAQ,EAAE,IAAI;QACd,IAAI,EAAE,MAAM;QACZ,IAAI,EAAE,EAAE;QACR,KAAK,EAAE,CAAC;KACX,CAAC;CACL,CAAC;;;;;;;;;;;;;;;;ACtWC,MAAM,SAAS;IAWlB,YAAY,UAUR,EAAE;QACF,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;QAC3B,IAAI,CAAC,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,EAAE,CAAC;QAC7B,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,EAAE,CAAC;QACjC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,EAAE,CAAC;QACrC,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC;QACnC,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC;QAC7D,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,IAAI,EAAE,CAAC;QAC7C,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,EAAE,CAAC;QACvC,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,IAAI,CAAC;IACrC,CAAC;CACJ;;;;;;;;;;;;;;;;;AChCwC;AAElC,MAAM,aAAc,SAAQ,kDAAiB;IAIlD,YAAY,UAAc,EAAE;QAC1B,KAAK,CAAC,OAAO,CAAC,CAAC;QAJjB,gBAAW,GAAG,UAAU,CAAC;QAKvB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC;IAC5C,CAAC;CACF;;;;;;;;;;;;;;;;;ACVwC;AAElC,MAAM,SAAU,SAAQ,kDAAiB;IAI9C,YAAY,UAAc,EAAE;QAC1B,KAAK,CAAC,OAAO,CAAC,CAAC;QAJjB,gBAAW,GAAG,MAAM,CAAC;QAKnB,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;IACpC,CAAC;CACF;;;;;;;;;;;;;;;;;ACVwC;AAElC,MAAM,aAAc,SAAQ,kDAAiB;IAMlD,YAAY,UAAc,EAAE;QAC1B,KAAK,CAAC,OAAO,CAAC,CAAC;QANjB,gBAAW,GAAG,UAAU,CAAC;QACzB,YAAO,GAAqC,EAAE,CAAC;QAM7C,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;QACxC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC;QAC1C,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,YAAY,CAAC,IAAI,KAAK,CAAC;IACnD,CAAC;CACF;;;;;;;;;;;;;;;;;ACdwC;AAElC,MAAM,oBAAqB,SAAQ,kDAAiB;IAWzD,YAAY,UAAc,EAAE;QAC1B,KAAK,CAAC,OAAO,CAAC,CAAC;QAXjB,gBAAW,GAAG,kBAAkB,CAAC;QACjC,YAAO,GAAqC,EAAE,CAAC;QAW7C,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;QAClB,IAAI,CAAC,cAAc,GAAG,OAAO,CAAC,gBAAgB,CAAC,IAAI,KAAK,CAAC;QACzD,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC;QAClD,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,aAAa,CAAC,IAAI,IAAI,CAAC;QAClD,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,YAAY,CAAC,IAAI,IAAI,CAAC;QAChD,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC;QAC5C,IAAI,CAAC,cAAc,GAAG,OAAO,CAAC,gBAAgB,CAAC,IAAI,EAAE,CAAC;QACtD,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,YAAY,CAAC,IAAI,KAAK,CAAC;IACnD,CAAC;CACF;;;;;;;;;;;;;;;;;ACxBwC;AAElC,MAAM,mBAAoB,SAAQ,kDAAiB;IAKxD,YAAY,UAAc,EAAE;QAC1B,KAAK,CAAC,OAAO,CAAC,CAAC;QALjB,gBAAW,GAAG,cAAc,CAAC;QAC7B,YAAO,GAAqC,EAAE,CAAC;QAK7C,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;QACxC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC;IAC5C,CAAC;CACF;;;;;;;;;;;;;;;;;ACZwC;AAElC,MAAM,aAAc,SAAQ,kDAAiB;IAOlD,YAAY,UAAc,EAAE;QAC1B,KAAK,CAAC,OAAO,CAAC,CAAC;QAPjB,gBAAW,GAAG,UAAU,CAAC;QAQvB,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;QAClC,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;QAClC,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;QAC5C,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;IAC9C,CAAC;CACF;;;;;;;;;;;;;;;;;AChBwC;AAElC,MAAM,YAAa,SAAQ,kDAAiB;IAYjD,YAAY,UAAc,EAAE;QAC1B,KAAK,CAAC,OAAO,CAAC,CAAC;QAZjB,gBAAW,GAAG,SAAS,CAAC;QAatB,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;QAClC,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;QAC5C,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;QAC5C,IAAI,CAAC,cAAc,GAAG,OAAO,CAAC,gBAAgB,CAAC,IAAI,KAAK,CAAC;QACzD,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC;QAClD,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC;QAC1C,IAAI,CAAC,cAAc,GAAG,OAAO,CAAC,gBAAgB,CAAC,IAAI,EAAE,CAAC;QACtD,IAAI,CAAC,wBAAwB,GAAG,OAAO,CAAC,0BAA0B,CAAC,IAAI,KAAK,CAAC;QAC7E,IAAI,CAAC,eAAe,GAAG,OAAO,CAAC,iBAAiB,CAAC,IAAI,IAAI,CAAC;IAC5D,CAAC;CACF;;;;;;;;;;;;;;;;AC1BD,2CAA2C;AAEpC,MAAM,MAAM;;AACf;;GAEG;AAEH,eAAe;AACD,kBAAW,GAAG,cAAc,CAAC;AAE3C,uBAAuB;AACT,qBAAc,GAAG,iBAAiB;AAEhD,wBAAwB;AACV,sBAAe,GAAG,kBAAkB;AAElD,eAAe;AACD,kBAAW,GAAG,cAAc,CAAC;AAE3C,qBAAqB;AACP,oBAAa,GAAG,gBAAgB,CAAC;AAE/C,oBAAoB;AACN,uBAAgB,GAAG,mBAAmB,CAAC;AAErD,gBAAgB;AACF,mBAAY,GAAG,eAAe,CAAC;AAE7C,EAAE;AACY,wBAAiB,GAAG,oBAAoB;AAEtD;;GAEG;AAEH,gBAAgB;AACF,mBAAY,GAAG,eAAe,CAAC;AAE7C,gBAAgB;AACF,mBAAY,GAAG,eAAe,CAAC;AAE7C,gBAAgB;AACF,oBAAa,GAAG,gBAAgB,CAAC;AAE/C,kBAAkB;AACJ,qBAAc,GAAG,iBAAiB,CAAC;AAEjD,0BAA0B;AACZ,4BAAqB,GAAG,yBAAyB,CAAC;AAEhE,yBAAyB;AACX,2BAAoB,GAAG,wBAAwB,CAAC;AAE9D,aAAa;AACC,wBAAiB,GAAG,qBAAqB,CAAC;AAExD,MAAM;AACQ,mBAAY,GAAG,eAAe,CAAC;AAE7C,gBAAgB;AACF,oBAAa,GAAG,gBAAgB,CAAC;AAE/C,gBAAgB;AACF,mBAAY,GAAG,eAAe,CAAC;AAE7C;;EAEE;AAEY,yBAAkB,GAAG,qBAAqB,CAAC;AAEzD;;EAEE;AAEY,wBAAiB,GAAG,oBAAoB,CAAC;AAEvD;;GAEG;AAEH,YAAY;AACE,gBAAS,GAAG,YAAY;AACtC,eAAe;AACD,kBAAW,GAAG,cAAc,CAAC;AAE3C,cAAc;AACA,iBAAU,GAAG,aAAa,CAAC;AAEzC,gBAAgB;AACF,mBAAY,GAAG,eAAe,CAAC;AAE7C,iBAAiB;AACH,oBAAa,GAAG,gBAAgB,CAAC;AAE/C,gBAAgB;AACF,mBAAY,GAAG,eAAe,CAAC;AAG7C;;GAEG;AACH,OAAO;AACO,gBAAS,GAAG,YAAY,CAAC;AAEvC,iBAAiB;AACH,oBAAa,GAAG,gBAAgB,CAAC;AAE/C,wBAAwB;AACV,kBAAW,GAAG,cAAc,CAAC;;;;;;;;;;;;;;;;;;;ACvFxC,MAAe,YAAY;IAC9B,YAAY,aAAqB;QAC7B,IAAI,CAAC,cAAc,GAAG,aAAa,CAAC;IACxC,CAAC;CAMJ;AAEM,MAAM,sBAAuB,SAAQ,YAAY;IAEpD,YAAY,SAAiB;QACzB,KAAK,CAAC,kBAAkB,CAAC,aAAa,CAAC,CAAC;QACxC,IAAI,CAAC,aAAa,GAAG,SAAS,CAAC;IACnC,CAAC;IAEM,UAAU,CAAC,GAAW;QACzB,OAAO,IAAI,CAAC,aAAa,KAAK,GAAG,CAAC;IACtC,CAAC;IAED,MAAM,CAAC,GAAW;QACd,IAAI,CAAC,aAAa,GAAG,GAAG,CAAC;IAC7B,CAAC;CACJ;AAEM,MAAM,sBAAuB,SAAQ,YAAY;IAEpD,YAAY,SAAmB;QAC3B,KAAK,CAAC,kBAAkB,CAAC,aAAa,CAAC,CAAC;QAF5C,mBAAc,GAAa,EAAE,CAAC;QAG1B,IAAI,CAAC,cAAc,GAAG,SAAS,CAAC;IACpC,CAAC;IAEM,UAAU,CAAC,GAAW;QACzB,OAAO,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;IAC7C,CAAC;IAED,MAAM,CAAC,GAAW;QACd,IAAI,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;YACnC,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC;SACtE;aACI;YACD,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;SACjC;IACL,CAAC;CACJ;AAkID;;GAEG;AACI,MAAM,kBAAkB;;AACb,sBAAG,GAAW,KAAK,CAAC;AACpB,6BAAU,GAAW,YAAY,CAAC;AAClC,8BAAW,GAAW,aAAa,CAAC;AACpC,sBAAG,GAAW,KAAK,CAAC;AACpB,uBAAI,GAAW,MAAM,CAAC;AACtB,sBAAG,GAAW,KAAK,CAAC;AACpB,2BAAQ,GAAW,UAAU,CAAC;AAC9B,gCAAa,GAAW,eAAe,CAAC;AACxC,gCAAa,GAAW,eAAe,CAAC;AACxC,gCAAa,GAAW,eAAe,CAAC;AACxC,gCAAa,GAAW,eAAe,CAAC;;;;;;;;;;;;;;;;ACpNnD,MAAM,YAAY;;AACP,mBAAM,GAAW,QAAQ,CAAC;AAC1B,mBAAM,GAAW,QAAQ,CAAC;;;;;;;;;;;;;;;;ACarC,MAAM,WAAW;;AACN,uBAAW,GAAW,cAAc,CAAC;AACrC,0BAAc,GAAW,iBAAiB,CAAC;AAC3C,wBAAY,GAAW,YAAY,CAAC;;;;;;;;;;;;;;;;ACX7C,IAAI,WAAW,GAAsB;IAC1C,EAAE,EAAE,EAAC,EAAE,EAAE,OAAO,EAAE,wBAAwB,EAAE,OAAO,EAAE,6BAA6B,EAAE,UAAU,EAAE,cAAc,EAAE;IAChH,EAAE,EAAE,EAAC,EAAE,EAAE,OAAO,EAAE,cAAc,EAAE,OAAO,EAAE,6BAA6B,EAAE,UAAU,EAAE,cAAc,EAAE;IACtG,EAAE,EAAE,EAAC,EAAE,EAAE,OAAO,EAAE,yBAAyB,EAAE,OAAO,EAAE,2BAA2B,EAAE,UAAU,EAAE,cAAc,EAAE;IAC/G,EAAE,EAAE,EAAC,EAAE,EAAE,OAAO,EAAE,uBAAuB,EAAE,OAAO,EAAE,2BAA2B,EAAE,UAAU,EAAE,cAAc,EAAE;IAC7G,EAAE,EAAE,EAAC,EAAE,EAAE,OAAO,EAAE,kDAAkD,EAAE,OAAO,EAAE,6EAA6E,EAAE,UAAU,EAAE,cAAc,EAAE;IAC1L,EAAE,EAAE,EAAC,EAAE,EAAE,OAAO,EAAE,0BAA0B,EAAE,OAAO,EAAE,0BAA0B,EAAE,UAAU,EAAE,0BAA0B,EAAE;IAC3H,EAAE,EAAE,EAAC,EAAE,EAAE,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,0BAA0B,EAAE;IAC/F,EAAE,EAAE,EAAC,EAAE,EAAE,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,0BAA0B,EAAE;IAC/F,EAAE,EAAE,EAAC,EAAE,EAAE,OAAO,EAAE,2CAA2C,EAAE,OAAO,EAAE,2CAA2C,EAAE,UAAU,EAAE,0BAA0B,EAAE;IAC7J,EAAE,EAAE,EAAC,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,sEAAsE,EAAE,UAAU,EAAE,cAAc,EAAE;IACxI,EAAE,EAAE,EAAC,EAAE,EAAE,OAAO,EAAE,8BAA8B,EAAE,OAAO,EAAE,sEAAsE,EAAE,UAAU,EAAE,cAAc,EAAE;IAC/J,EAAE,EAAE,EAAC,EAAE,EAAE,OAAO,EAAE,2BAA2B,EAAE,OAAO,EAAE,sEAAsE,EAAE,UAAU,EAAE,cAAc,EAAE;IAC5J,EAAE,EAAE,EAAC,EAAE,EAAE,OAAO,EAAE,cAAc,EAAE,OAAO,EAAE,sEAAsE,EAAE,UAAU,EAAE,cAAc,EAAE;IAC/I,EAAE,EAAE,EAAC,EAAE,EAAE,OAAO,EAAE,qCAAqC,EAAE,OAAO,EAAE,qCAAqC,EAAE,UAAU,EAAE,oBAAoB,EAAE;IAC3I,EAAE,EAAE,EAAC,EAAE,EAAE,OAAO,EAAE,iCAAiC,EAAE,OAAO,EAAE,iCAAiC,EAAE,UAAU,EAAE,oBAAoB,EAAE;IACnI,EAAE,EAAE,EAAC,EAAE,EAAE,OAAO,EAAE,6BAA6B,EAAE,OAAO,EAAE,mDAAmD,EAAE,UAAU,EAAE,2BAA2B,EAAE;IACxJ,EAAE,EAAE,EAAC,EAAE,EAAE,OAAO,EAAE,2BAA2B,EAAE,OAAO,EAAE,mDAAmD,EAAE,UAAU,EAAE,2BAA2B,EAAE;IACtJ,EAAE,EAAE,EAAC,EAAE,EAAE,OAAO,EAAE,4BAA4B,EAAE,OAAO,EAAE,6CAA6C,EAAE,UAAU,EAAE,2BAA2B,EAAE;IACjJ,EAAE,EAAE,EAAC,EAAE,EAAE,OAAO,EAAE,0BAA0B,EAAE,OAAO,EAAE,6CAA6C,EAAE,UAAU,EAAE,2BAA2B,EAAE;IAC/I,EAAE,EAAE,EAAC,EAAE,EAAE,OAAO,EAAE,wBAAwB,EAAE,OAAO,EAAE,kCAAkC,EAAE,UAAU,EAAE,2BAA2B,EAAE;IAClI,EAAE,EAAE,EAAC,EAAE,EAAE,OAAO,EAAE,sBAAsB,EAAE,OAAO,EAAE,kCAAkC,EAAE,UAAU,EAAE,2BAA2B,EAAE;IAChI,EAAE,EAAE,EAAC,EAAE,EAAE,OAAO,EAAE,iGAAiG,EAAE,OAAO,EAAE,gFAAgF,EAAE,UAAU,EAAE,2BAA2B,EAAE;IACzP,EAAE,EAAE,EAAC,EAAE,EAAE,OAAO,EAAE,+FAA+F,EAAE,OAAO,EAAE,gFAAgF,EAAE,UAAU,EAAE,2BAA2B,EAAE;IACvP,EAAE,EAAE,EAAC,EAAE,EAAE,OAAO,EAAE,2EAA2E,EAAE,OAAO,EAAE,8EAA8E,EAAE,UAAU,EAAE,2BAA2B,EAAE;IACjO,EAAE,EAAE,EAAC,EAAE,EAAE,OAAO,EAAE,yEAAyE,EAAE,OAAO,EAAE,8EAA8E,EAAE,UAAU,EAAE,2BAA2B,EAAE;IAC/N,EAAE,EAAE,EAAC,EAAE,EAAE,OAAO,EAAE,qCAAqC,EAAE,OAAO,EAAE,qCAAqC,EAAE,UAAU,EAAE,2BAA2B,EAAE;IAClJ,EAAE,EAAE,EAAC,EAAE,EAAE,OAAO,EAAE,4BAA4B,EAAE,OAAO,EAAE,4BAA4B,EAAE,UAAU,EAAE,2BAA2B,EAAE;IAChI,EAAE,EAAE,EAAC,EAAE,EAAE,OAAO,EAAE,wDAAwD,EAAE,OAAO,EAAE,wDAAwD,EAAE,UAAU,EAAE,qBAAqB,EAAE;IAClL,EAAE,EAAE,EAAC,EAAE,EAAE,OAAO,EAAE,+BAA+B,EAAE,OAAO,EAAE,+BAA+B,EAAE,UAAU,EAAE,qBAAqB,EAAE;IAChI,EAAE,EAAE,EAAC,EAAE,EAAE,OAAO,EAAE,sCAAsC,EAAE,OAAO,EAAE,sCAAsC,EAAE,UAAU,EAAE,qBAAqB,EAAE;IAC9I,EAAE,EAAE,EAAC,EAAE,EAAE,OAAO,EAAE,qBAAqB,EAAE,OAAO,EAAE,qBAAqB,EAAE,UAAU,EAAE,qBAAqB,EAAE;IAC5G,EAAE,EAAE,EAAC,EAAE,EAAE,OAAO,EAAE,2CAA2C,EAAE,OAAO,EAAE,2CAA2C,EAAE,UAAU,EAAE,0BAA0B,EAAE;IAC7J,EAAE,EAAE,EAAC,EAAE,EAAE,OAAO,EAAE,sCAAsC,EAAE,OAAO,EAAE,sCAAsC,EAAE,UAAU,EAAE,0BAA0B,EAAE;IACnJ,EAAE,EAAE,EAAC,EAAE,EAAE,OAAO,EAAE,+BAA+B,EAAE,OAAO,EAAE,+BAA+B,EAAE,UAAU,EAAE,0BAA0B,EAAE;IACrI,EAAE,EAAE,EAAC,EAAE,EAAE,OAAO,EAAE,iDAAiD,EAAE,OAAO,EAAE,iDAAiD,EAAE,UAAU,EAAE,0BAA0B,EAAE;IACzK,EAAE,EAAE,EAAC,EAAE,EAAE,OAAO,EAAE,2BAA2B,EAAE,OAAO,EAAE,qBAAqB,EAAE,UAAU,EAAE,wCAAwC,EAAE;IACrI,EAAE,EAAE,EAAC,EAAE,EAAE,OAAO,EAAE,oCAAoC,EAAE,OAAO,EAAE,qBAAqB,EAAE,UAAU,EAAE,wCAAwC,EAAE;IAC9I,EAAE,EAAE,EAAC,EAAE,EAAE,OAAO,EAAE,4BAA4B,EAAE,OAAO,EAAE,qBAAqB,EAAE,UAAU,EAAE,wCAAwC,EAAE;IACtI,EAAE,EAAE,EAAC,EAAE,EAAE,OAAO,EAAE,iDAAiD,EAAE,OAAO,EAAE,qBAAqB,EAAE,UAAU,EAAE,wCAAwC,EAAE;IAC3J,EAAE,EAAE,EAAC,EAAE,EAAE,OAAO,EAAE,4BAA4B,EAAE,OAAO,EAAE,4BAA4B,EAAE,UAAU,EAAE,iCAAiC,EAAE;IACtI,EAAE,EAAE,EAAC,EAAE,EAAE,OAAO,EAAE,oBAAoB,EAAE,OAAO,EAAE,oBAAoB,EAAE,UAAU,EAAE,iCAAiC,EAAE;IACtH,EAAE,EAAE,EAAC,EAAE,EAAE,OAAO,EAAE,kBAAkB,EAAE,OAAO,EAAE,kBAAkB,EAAE,UAAU,EAAE,iCAAiC,EAAE;IAClH,EAAE,EAAE,EAAC,EAAE,EAAE,OAAO,EAAE,0BAA0B,EAAE,OAAO,EAAE,0BAA0B,EAAE,UAAU,EAAE,wBAAwB,EAAE;IACzH,EAAE,EAAE,EAAC,EAAE,EAAE,OAAO,EAAE,iDAAiD,EAAE,OAAO,EAAE,iDAAiD,EAAE,UAAU,EAAE,wBAAwB,EAAE;CACxK;;;;;;;;;;;;;;;;AC/CI,SAAS,QAAQ;IACpB,OAAO;QACC,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE;QAC1B,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE;KAC5B,CAAC;AACV,CAAC;;;;;;;;;;;;;;;;;;;;;;;ACT8D;AAMd;;;;;AAS1C,MAAM,KAAK;CAEjB;AAEM,MAAM,OAAO;CAEnB;AAED,MAAM,cAAc;CAAI;AAKjB,MAAM,UAAU;IAMnB,YAAoB,IAAgB,EAAU,aAAmC,EAAU,IAA0B;QAAjG,SAAI,GAAJ,IAAI,CAAY;QAAU,kBAAa,GAAb,aAAa,CAAsB;QAAU,SAAI,GAAJ,IAAI,CAAsB;QAJrH,gBAAW,GAAgC,IAAI,GAAG,EAA0B,CAAC;QAKzE,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE,CAAC,SAAS,CAAC,CAAC,IAAmB,EAAE,EAAE;YAC7D,IAAI,CAAC,eAAe,GAAG;gBACnB,OAAO,EAAE,IAAI,CAAC,OAAO;aACxB;QACL,CAAC,CAAC,CAAC;QAEH,6CAA6C;QAC7C,MAAM;IACV,CAAC;IAED,kFAAkF;IAClF,IAAI,CAAI,UAAkB,EAAE,MAAc,EAAE,IAAS,EAAE,WAAoB,IAAI;QAE3E,IAAI,GAAG,GAAqB,IAAI,+CAAa,CAAI,CAAC,CAAC,CAAC;QAEpD,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE,CAAC,SAAS,CAAC,CAAC,MAAqB,EAAE,EAAE;YAC/D,IAAI,CAAC,eAAe,GAAG;gBACnB,OAAO,EAAE,MAAM,CAAC,OAAO;aAC1B;YAED,0BAA0B;YAC1B,IAAI,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;YAEvC,+BAA+B;YAC/B,IAAI,CAAC,GAAG;gBACJ,GAAG,GAAG,IAAI,CAAC,eAAe,CAAC;YAG/B,0CAA0C;YAC1C,IAAI,GAAG,GAAW,GAAG,CAAC,OAAO,GAAG,UAAU,GAAG,GAAG,GAAG,MAAM,CAAC;YAE1D,eAAe;YACf,IAAI,QAAQ,EAAE;gBACV,IAAI,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;gBAErC,MAAM,WAAW,GAAG;oBAChB,OAAO,EAAE,IAAI,6DAAW,CAAC;wBACrB,cAAc,EAAE,kBAAkB;wBAClC,eAAe,EAAE,SAAS,GAAG,SAAS;qBACzC,CAAC;iBACL,CAAC;gBACF,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAI,GAAG,EAAE,IAAI,EAAE,WAAW,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE;oBAC7D,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBAClB,CAAC,EAAE,KAAK,CAAC,EAAE,GAAG,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,EAAC,CAAC,CAAC,CAAC;aACrC;;gBAEG,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAI,GAAG,EAAE,IAAI,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE;oBAChD,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBAClB,CAAC,EAAE,KAAK,CAAC,EAAE,GAAG,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,EAAC,CAAC,CAAC,CAAC;QAC1C,CAAC,EAAE,KAAK,CAAC,EAAE;YACP,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACzB,CAAC,CAAC,CAAC;QAEH,OAAO,GAAG,CAAC;IACf,CAAC;IAED,kFAAkF;IAClF,WAAW,CAAI,UAAkB,EAAE,MAAc,EAAE,IAAS,EAAE,WAAoB,IAAI;QAEpF,IAAI,GAAG,GAAqB,IAAI,+CAAa,CAAI,CAAC,CAAC,CAAC;QAEpD,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE,CAAC,SAAS,CAAC,CAAC,MAAqB,EAAE,EAAE;YAC/D,IAAI,CAAC,eAAe,GAAG;gBACnB,OAAO,EAAE,MAAM,CAAC,OAAO;aAC1B;YAED,0BAA0B;YAC1B,IAAI,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;YAEvC,+BAA+B;YAC/B,IAAI,CAAC,GAAG;gBACJ,GAAG,GAAG,IAAI,CAAC,eAAe,CAAC;YAG/B,0CAA0C;YAC1C,IAAI,GAAG,GAAW,GAAG,CAAC,OAAO,GAAG,UAAU,GAAG,GAAG,GAAG,MAAM,CAAC;YAE1D,eAAe;YACf,IAAI,QAAQ,EAAE;gBACV,IAAI,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;gBAErC,MAAM,WAAW,GAAG;oBAChB,OAAO,EAAE,IAAI,6DAAW,CAAC;wBACrB,cAAc,EAAE,kBAAkB;wBAClC,eAAe,EAAE,SAAS,GAAG,SAAS;qBACzC,CAAC;oBACF,YAAY,EAAE,MAAgB;iBACjC,CAAC;gBAEJ,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAI,GAAG,EAAE,IAAI,EAAE,WAAW,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE;oBAC3D,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBAClB,CAAC,EAAE,KAAK,CAAC,EAAE,GAAG,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,EAAC,CAAC,CAAC,CAAC;aACrC;;gBAEG,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAI,GAAG,EAAE,IAAI,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE;oBAChD,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBAClB,CAAC,EAAE,KAAK,CAAC,EAAE,GAAG,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,EAAC,CAAC,CAAC,CAAC;QAC1C,CAAC,EAAE,KAAK,CAAC,EAAE;YACP,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACzB,CAAC,CAAC,CAAC;QAEH,OAAO,GAAG,CAAC;IACb,CAAC;IAED,GAAG,CAAI,UAAkB,EAAE,MAAc,EAAE,WAAoB,IAAI;QAC/D,IAAI,GAAG,GAAqB,IAAI,+CAAa,CAAI,CAAC,CAAC,CAAC;QAEpD,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE,CAAC,SAAS,CAAC,CAAC,IAAmB,EAAE,EAAE;YAC7D,IAAI,CAAC,eAAe,GAAG;gBACnB,OAAO,EAAE,IAAI,CAAC,OAAO;aACxB;YAED,0BAA0B;YAC1B,IAAI,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;YAEvC,+BAA+B;YAC/B,IAAI,CAAC,GAAG;gBACJ,GAAG,GAAG,IAAI,CAAC,eAAe,CAAC;YAG/B,0CAA0C;YAC1C,IAAI,GAAG,GAAW,GAAG,CAAC,OAAO,GAAG,UAAU,GAAG,GAAG,GAAG,MAAM,CAAC;YAE1D,eAAe;YACf,IAAI,QAAQ,EAAE;gBACV,IAAI,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;gBAErC,MAAM,WAAW,GAAG;oBAChB,OAAO,EAAE,IAAI,6DAAW,CAAC;wBACrB,cAAc,EAAE,kBAAkB;wBAClC,eAAe,EAAE,SAAS,GAAG,SAAS;qBACzC,CAAC;iBACL,CAAC;gBACF,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAI,GAAG,EAAE,WAAW,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE;oBACtD,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBAClB,CAAC,EAAE,KAAK,CAAC,EAAE,GAAG,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,EAAC,CAAC,CAAC,CAAC;aACrC;;gBAEG,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAI,GAAG,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE;oBACzC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBAClB,CAAC,EAAE,KAAK,CAAC,EAAE,GAAG,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,EAAC,CAAC,CAAC,CAAC;QAC1C,CAAC,EAAE,KAAK,CAAC,EAAE;YACP,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACzB,CAAC,CAAC,CAAC;QAEH,OAAO,GAAG,CAAC;IACf,CAAC;IAED,WAAW;QACP,OAAO,IAAI,CAAC,IAAI,CAAO,MAAM,EAAE,YAAY,EAAE,IAAI,CAAC,CAAC;IACvD,CAAC;;oEA7JQ,UAAU;2GAAV,UAAU,WAAV,UAAU,mBAFP,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;ACzByC;AACS;;;;;AAMxE,qCAAqC;AACrC,wCAAwC;AACjC,MAAM,KAAK;IAMhB,mCAAmC;IACnC,sFAAsF;IACtF,UAAU;QAER,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,SAAS,CAAC;YAC7B,CAAC,IAAI,CAAC,OAAO,IAAI,SAAS,CAAC;YAC3B,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,GAAG,IAAI,IAAI,EAAE,CAAC,CAAC;IACrC,CAAC;IAED,WAAW;QACT,IAAG,CAAC,IAAI,CAAC,UAAU,EAAE;YACnB,OAAO,eAAe;aACpB;YACF,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ;gBACjE,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,GAAG,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC;iBACzD;gBACH,OAAO,MAAM,CAAC;aACf;SACF;IACH,CAAC;IAED,6CAA6C;IAC7C,uEAAuE;IACvE,2GAA2G;IAC3G,OAAO;QACL,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;YACpB,OAAO,eAAe;aAEtB,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS;YACxC,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC;aAC3B,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK;YACzB,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;;YAE1B,OAAO,MAAM;IACnB,CAAC;CACF;AAGD,gEAAgE;AAChE,yDAAyD;AACzD,kDAAkD;AAC3C,MAAM,IAAI;CAGhB;AAED,6BAA6B;AAC7B,4CAA4C;AAC5C,mEAAmE;AAC5D,MAAM,OAAO;CAInB;AAED,8CAA8C;AAC9C,mDAAmD;AAI5C,MAAM,oBAAoB;IA+C/B,6EAA6E;IAC7E,YAAoB,IAAgB,EAAU,MAA4B,EAAU,MAAc;QAA9E,SAAI,GAAJ,IAAI,CAAY;QAAU,WAAM,GAAN,MAAM,CAAsB;QAAU,WAAM,GAAN,MAAM,CAAQ;QA1BlG,oDAAoD;QACpD,gEAAgE;QAChE,+CAA+C;QAC/C,gBAAW,GAAY,KAAK,CAAC;QAC7B,iBAAY,GAAY,KAAK,CAAC;QAO9B,6BAA6B;QAC7B,UAAK,GAAU,IAAI,KAAK,EAAE,CAAC;QAS3B,+FAA+F;QACvF,kBAAa,GAAyB,IAAI,+CAAa,CAAQ,CAAC,CAAC,CAAC;QAClE,gBAAW,GAAmB,IAAI,yCAAO,EAAS,CAAC;QAIzD,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;QACxB,8DAA8D;QAC9D,MAAM,CAAC,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC,CAAC;QAE1E,sDAAsD;QACtD,IAAI,CAAC,cAAc,EAAE,CAAC;QAEtB,MAAM,CAAC,SAAS,EAAE,CAAC,SAAS,CAAC,CAAC,GAAG,EAAE,EAAE;YACnC,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC,aAAa,CAAC;QAChC,CAAC,CAAC;QAGF,kCAAkC;QAClC,IAAI,SAAS,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC;QAC3D,IAAI,MAAM,GAAG,EAAE,CAAC;QAEhB,qBAAqB;QACrB,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;YACpB,IAAI,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACtB,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;QACxB,CAAC,CAAC;QAEF,4DAA4D;QAC5D,qDAAqD;QACrD,IAAI,MAAM,CAAC,MAAM,CAAC,EAAE;YAClB,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;SACpC;aACI,IAAI,IAAI,CAAC,KAAK,EAAE;YACnB,IAAI,CAAC,aAAa,EAAE,CAAC;SACtB;aACI;YACH,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;SAC1B;IACH,CAAC;IAjFD,WAAW;QACT,IAAI,IAAI,CAAC,MAAM,EAAE;YACf,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;SAC3B;QAED,IAAI,IAAI,CAAC,kBAAkB,EAAE;YAC3B,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;SAC9C;IACH,CAAC;IACD,QAAQ;IACR,CAAC;IAyED,0DAA0D;IAC1D,cAAc;QACZ,IAAI;YACF,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC;SAC/D;QAAC,WAAM,GAAG;QAEX,IAAI;YACF,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC,CAAC;SAC7E;QAAC,WAAM,GAAG;QAEX,IAAI;YACF,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC;SACnE;QAAC,WAAM,GAAG;QAEX,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,YAAY,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;YACtD,IAAI;gBACF,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC;aAC7D;YAAC,WAAM,GAAG;YAEX,IAAI;gBACF,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC,CAAC;aAC3E;YAAC,WAAM,GAAG;YAEX,IAAI;gBACF,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC;aACjE;YAAC,WAAM,GAAG;SACZ;IACH,CAAC;IAGD,sCAAsC;IACtC,cAAc,CAAC,GAAG;QAChB,wBAAwB;QACxB,IAAI,CAAC,GAAG,CAAC,IAAI;YACX,OAAO;QAET,kEAAkE;QAClE,IAAI,GAAG,CAAC,IAAI,CAAC,IAAI,KAAK,MAAM,EAAE;YAC5B,QAAQ,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE;gBACvB,KAAK,MAAM;oBACT,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;oBAClC,IAAI,CAAC,YAAY,EAAE,CAAC;oBACpB,MAAM;gBACR,KAAK,UAAU;oBACb,qEAAqE;oBAErE,IAAI,GAAG,CAAC,IAAI,CAAC,KAAK;wBAChB,cAAc,CAAC,OAAO,CAAC,YAAY,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;oBACrE,YAAY,CAAC,OAAO,CAAC,YAAY,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;oBACrE,IAAI,GAAG,CAAC,IAAI,CAAC,YAAY;wBACvB,cAAc,CAAC,OAAO,CAAC,mBAAmB,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC;oBACnF,YAAY,CAAC,OAAO,CAAC,mBAAmB,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC;oBACnF,IAAI,GAAG,CAAC,IAAI,CAAC,OAAO;wBAClB,cAAc,CAAC,OAAO,CAAC,cAAc,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;oBACzE,YAAY,CAAC,OAAO,CAAC,cAAc,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;oBAEzE,IAAI,CAAC,cAAc,EAAE,CAAC;oBAEtB,IAAI,CAAC,YAAY,EAAE,CAAC;oBAEpB,IAAI,IAAI,CAAC,KAAK,EAAE;wBACd,IAAI,CAAC,aAAa,EAAE,CAAC;qBACtB;oBACD,MAAM;gBAER,KAAK,OAAO;oBACV,MAAM,CAAC,KAAK,EAAE,CAAC;oBACf,MAAM;gBAER,KAAK,MAAM;oBACT,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;oBAEzC,IAAI,CAAC,YAAY,EAAE,CAAC;oBACpB,MAAM;gBAER;oBACE,MAAM;aACT;SACF;IACH,CAAC;IAED,8DAA8D;IAC9D,YAAY;QACV,IAAI,IAAI,CAAC,OAAO;YACd,UAAU,CAAC,GAAG,EAAE;gBACd,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC;YACrF,CAAC,EAAE,IAAI,CAAC,CAAC;IACb,CAAC;IAED,+HAA+H;IAC/H,QAAQ;QACN,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IAED,eAAe;QACb,OAAO,IAAI,CAAC,YAAY,CAAC;IAC3B,CAAC;IAGD,uDAAuD;IACvD,aAAa;QACX,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;QAExB,IAAI,IAAI,CAAC,kBAAkB,EAAE;YAC3B,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;YAC7C,IAAI,CAAC,kBAAkB,GAAG,SAAS,CAAC;SACrC;QAED,IAAI,IAAI,CAAC,SAAS;YAChB,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC;QAC/B,wCAAwC;QACxC,IAAI,CAAC,SAAS;YACZ,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE;gBACzC,iBAAiB;gBACjB,IAAI,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBACtC,IAAI,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBAE1C,oFAAoF;gBACpF,qBAAqB;gBACrB,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE;oBACd,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;oBACzB,IAAI,CAAC,MAAM,EAAE,CAAC;oBACd,OAAO;iBACR;gBAED,IAAI,KAAK,CAAC,GAAG,KAAK,OAAO,CAAC,GAAG;oBAC3B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;gBAErB,qDAAqD;gBACrD,IAAI,QAAQ,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC;gBAC3B,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBAElC,IAAI,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;gBAErB,gEAAgE;gBAChE,IAAI,QAAQ,IAAI,GAAG,EAAE;oBACnB,IAAI,CAAC,WAAW,GAAG,KAAK;oBACxB,IAAI,CAAC,UAAU,EAAE,CAAC;oBAClB,OAAO;iBACR;gBAED,iCAAiC;gBACjC,IAAI,CAAC,GAAG,IAAI,IAAI,EAAE,CAAC;gBACnB,CAAC,CAAC,EAAE,GAAG,KAAK,CAAC,GAAG,CAAC;gBACjB,CAAC,CAAC,OAAO,GAAG,QAAQ,CAAC;gBAErB,oCAAoC;gBACpC,IAAI,CAAC,GAAG,IAAI,OAAO,EAAE,CAAC;gBACtB,CAAC,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;gBACxB,CAAC,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,OAAO,CAAC,kBAAkB,CAAC,IAAI,EAAE,CAAC;gBACrE,CAAC,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC,iBAAiB,CAAC,IAAI,EAAE,CAAC;gBAElE,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC;gBACpB,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,CAAC,CAAC;gBAEvB,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YAExC,CAAC,CAAC,CAAC;IACP,CAAC;IAEK,OAAO,CAAC,OAAc,EAAE,OAAO;;YACnC,IAAI,KAAK,GAAG,KAAK,CAAC;YAElB,IAAI,OAAO,GAAG;gBACZ,OAAO,EAAE,IAAI,6DAAW,EAAE;qBACvB,GAAG,CAAC,eAAe,EAAE,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC;aAChD;YAED,IAAI,aAAa,GAAQ;gBACvB,YAAY,EAAE,OAAO,CAAC,KAAK;aAC5B;YAED,IAAI;gBACF,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,CAAW,OAAO,GAAG,cAAc,EAAE,OAAO,CAAC,CAAC,SAAS,EAAE,CAAC;gBAC/F,IAAI,CAAC,IAAI,CAAC,kBAAkB;oBACpB,IAAI,CAAC,kBAAkB,GAAG,MAAM,CAAC,UAAU,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,aAAa,EAAE,EAAC,CAAC,EAAE,EAAE,GAAG,IAAI,CAAC;aAC/F;YAAC,OAAO,GAAG,EAAE;gBACZ,KAAK,GAAG,IAAI,CAAC;gBACb,OAAO,CAAC,GAAG,CAAC,4BAA4B,GAAG,GAAG,CAAC,CAAC;aACjD;YAED,IAAI;gBACF,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAM,OAAO,GAAG,WAAW,EAAE,aAAa,EAAE,OAAO,CAAC,CAAC,SAAS,EAAE,CAAC;aACxG;YAAC,OAAO,GAAG,EAAE;gBACZ,KAAK,GAAG,IAAI,CAAC;gBACb,OAAO,CAAC,GAAG,CAAC,2BAA2B,GAAG,GAAG,CAAC,CAAC;aAChD;YAED,IAAG,KAAK,EAAC;gBACP,IAAI,CAAC,MAAM,EAAE,CAAC;aACf;iBAAM;gBACL,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBACpC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;aACnC;QAEH,CAAC;KAAA;IAED,uCAAuC;IACvC,uCAAuC;IACvC,QAAQ,CAAC,KAAK;QACZ,IAAI;YACF,IAAI,SAAS,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YACpC,IAAI,MAAM,GAAG,SAAS,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;YAC7D,IAAI,WAAW,GAAG,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC;gBACzE,OAAO,GAAG,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;YAC/D,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;YAEb,OAAO,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;SAChC;QACD,WAAM;YACJ,OAAO,EAAE,CAAC;SACX;IACH,CAAC;IAED,wDAAwD;IACxD,OAAO;QACL,OAAO,IAAI,CAAC,aAAa,CAAC;IAC5B,CAAC;IAED,aAAa;QACX,OAAO,IAAI,CAAC,WAAW,CAAC,CAAC,gDAAgD;IAC3E,CAAC;IAED,8BAA8B;IAC9B,QAAQ;QACN,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IAED,kCAAkC;IAClC,SAAS;QACP,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,IAAI,CAAC,IAAI,CAAC,WAAW;YAC/C,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAEjD,OAAO,IAAI,CAAC,aAAa,CAAC;IAC5B,CAAC;IAED,yBAAyB;IACzB,2CAA2C;IAC3C,UAAU,CAAC,MAAe;QACxB,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;YACd,UAAU,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;SACtD;aACI;YACH,IAAI,IAAI,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;YAC7B,IAAI,WAAW,GAAG,IAAI,GAAG,0BAA0B,CAAC;YACpD,IAAI,QAAQ,GAAG,MAAM,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,qBAAqB,GAAG,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,GAAG,wDAAwD,GAAG,WAAW,CAAC;YAEvO,IAAI,MAAM,EAAE;gBACV,MAAM,CAAC,QAAQ,CAAC,IAAI,GAAG,QAAQ;aAChC;iBACI;gBACH,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC;aACrC;SACF;QAED,OAAO,IAAI,CAAC,aAAa,CAAC;IAC5B,CAAC;IAED,UAAU;QACR,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;QACzB,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;YACd,UAAU,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;SAChD;aACI;YACH,qFAAqF;YAErF,wCAAwC;YACxC,IAAI,IAAI,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;YAC7B,IAAI,WAAW,GAAG,IAAI,GAAG,0BAA0B,CAAC;YACpD,IAAI,UAAU,GAAG,MAAM,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC;YAG7G,gBAAgB;YAChB,IAAI,OAAO,GAAG,IAAI,eAAe,EAAE,CAAC;YACpC,OAAO,CAAC,GAAG,CAAC,YAAY,EAAE,eAAe,CAAC,CAAC;YAC3C,OAAO,CAAC,GAAG,CAAC,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAE7C,IAAI,IAAI,CAAC,YAAY,IAAI,SAAS;gBAChC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YAEjC,OAAO,CAAC,GAAG,CAAC,eAAe,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;YAEhD,IAAI,MAAM,GAAG;gBACX,OAAO,EAAE,IAAI,6DAAW,EAAE;qBACvB,GAAG,CAAC,cAAc,EAAE,mCAAmC,CAAC;qBACxD,GAAG,CAAC,eAAe,EAAE,SAAS,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,GAAG,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC;aAC5F;YACD,iCAAiC;YACjC,sBAAsB;YACtB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAM,UAAU,EAAE,OAAO,CAAC,QAAQ,EAAE,EAAE,MAAM,CAAC,CAAC,SAAS,CAAC,CAAC,QAAQ,EAAE,EAAE;gBACjF,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;gBAE1B,cAAc,CAAC,OAAO,CAAC,YAAY,EAAE,QAAQ,CAAC,YAAY,CAAC,CAAC;gBAC5D,YAAY,CAAC,OAAO,CAAC,YAAY,EAAE,QAAQ,CAAC,YAAY,CAAC,CAAC;gBAC1D,IAAI,QAAQ,CAAC,aAAa;oBACxB,cAAc,CAAC,OAAO,CAAC,mBAAmB,EAAE,QAAQ,CAAC,aAAa,CAAC,CAAC;gBACpE,YAAY,CAAC,OAAO,CAAC,mBAAmB,EAAE,QAAQ,CAAC,aAAa,CAAC,CAAC;gBACpE,IAAI,QAAQ,CAAC,QAAQ;oBACnB,cAAc,CAAC,OAAO,CAAC,cAAc,EAAE,QAAQ,CAAC,QAAQ,CAAC,CAAC;gBAC1D,YAAY,CAAC,OAAO,CAAC,cAAc,EAAE,QAAQ,CAAC,QAAQ,CAAC,CAAC;gBAE1D,IAAI,MAAM,GAAG,IAAI,CAAC,aAAa,EAAE;gBAEjC,MAAM,CAAC,WAAW,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,QAAQ,CAAC,YAAY,EAAE,YAAY,EAAE,QAAQ,CAAC,aAAa,EAAE,OAAO,EAAE,QAAQ,CAAC,QAAQ,EAAE,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;YACnL,CAAC,EAAE,GAAG,CAAC,EAAE;gBACP,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;YAC5B,CAAC,CACA,CAAC;SAEH;IACH,CAAC;IAED,sDAAsD;IACtD,aAAa,CAAC,IAAY;QAExB,2CAA2C;QAC3C,yCAAyC;QACzC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;YACd,UAAU,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;SACvD;aACI;YACH,qFAAqF;YAErF,wCAAwC;YACxC,IAAI,IAAI,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;YAC7B,IAAI,WAAW,GAAG,IAAI,GAAG,0BAA0B,CAAC;YACpD,IAAI,QAAQ,GAAG,MAAM,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC;YAG3G,iBAAiB;YACjB,IAAI,OAAO,GAAG,IAAI,eAAe,EAAE,CAAC;YACpC,OAAO,CAAC,GAAG,CAAC,YAAY,EAAE,oBAAoB,CAAC,CAAC;YAChD,OAAO,CAAC,GAAG,CAAC,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAC7C,OAAO,CAAC,GAAG,CAAC,cAAc,EAAE,WAAW,CAAC,CAAC;YACzC,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;YAE1B,sCAAsC;YACtC,IAAI,MAAM,GAAG;gBACX,OAAO,EAAE,IAAI,6DAAW,EAAE;qBACvB,GAAG,CAAC,cAAc,EAAE,mCAAmC,CAAC;qBACxD,GAAG,CAAC,eAAe,EAAE,SAAS,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,GAAG,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC;aAC5F;YAED,gCAAgC;YAChC,4BAA4B;YAC5B,IAAI,CAAC,IAAI,CAAC,IAAI,CAAM,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,EAAE,MAAM,CAAC,CAAC,SAAS,CAAC,CAAC,QAAQ,EAAE,EAAE;gBAC/E,cAAc,CAAC,OAAO,CAAC,YAAY,EAAE,QAAQ,CAAC,YAAY,CAAC,CAAC;gBAC5D,cAAc,CAAC,OAAO,CAAC,mBAAmB,EAAE,QAAQ,CAAC,aAAa,CAAC,CAAC;gBACpE,cAAc,CAAC,OAAO,CAAC,cAAc,EAAE,QAAQ,CAAC,QAAQ,CAAC,CAAC;gBAC1D,YAAY,CAAC,OAAO,CAAC,YAAY,EAAE,QAAQ,CAAC,YAAY,CAAC,CAAC;gBAC1D,YAAY,CAAC,OAAO,CAAC,mBAAmB,EAAE,QAAQ,CAAC,aAAa,CAAC,CAAC;gBAClE,YAAY,CAAC,OAAO,CAAC,cAAc,EAAE,QAAQ,CAAC,QAAQ,CAAC,CAAC;gBAExD,IAAI,MAAM,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;gBAElC,MAAM,CAAC,WAAW,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,QAAQ,CAAC,YAAY,EAAE,YAAY,EAAE,QAAQ,CAAC,aAAa,EAAE,OAAO,EAAE,QAAQ,CAAC,QAAQ,EAAE,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;YACnL,CAAC,CACA,CAAC;SAEH;IAEH,CAAC;IAED,aAAa;QACX,IAAI,MAAM,GAAG,SAAS,CAAC;QAEvB,IAAI,SAAS,GAAG,KAAK,CAAC;QAEtB,IAAI;YACF,IAAI,MAAM,CAAC,MAAM;gBACf,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC;;gBAEhE,SAAS,GAAG,IAAI,CAAC;SACpB;QACD,WACA;YACE,SAAS,GAAG,IAAI,CAAC;SAClB;QAED,IAAI,SAAS;YACX,MAAM,GAAG,MAAM,CAAC;;YAEhB,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;QAEzB,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,4CAA4C;IAC5C,UAAU;QACR,IAAI,IAAI,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC;QAC7D,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC;YACpB,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QACzC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,wCAAwC;IACxC,UAAU;QACR,OAAO,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC;IACjC,CAAC;IAED,8BAA8B;IAC9B,UAAU;QAER,IAAI,CAAC,KAAK,GAAG,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC;QACvB,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC;QACzB,cAAc,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;QACxC,cAAc,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC;QAC1C,YAAY,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;QACtC,YAAY,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC;IAE1C,CAAC;IAED,0BAA0B;IAC1B,YAAY;QACV,IAAI,CAAC,YAAY,GAAG,SAAS,CAAC;QAC9B,cAAc,CAAC,UAAU,CAAC,mBAAmB,CAAC,CAAC;QAC/C,YAAY,CAAC,UAAU,CAAC,mBAAmB,CAAC,CAAC;IAC/C,CAAC;IAED,8BAA8B;IAC9B,MAAM;QAEJ,IAAI,IAAI,CAAC,kBAAkB,KAAK,SAAS;YACvC,YAAY,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;QAExC,UAAU,CAAC,GAAG,EAAE;YACd,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;YACzB,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;YAE1B,IAAI,IAAI,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;YAC7B,IAAI,WAAW,GAAG,IAAI,GAAG,0BAA0B,CAAC;YACpD,IAAI,SAAS,GAAG,MAAM,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,cAAc,GAAG,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,GAAG,sDAAsD,GAAG,WAAW,CAAC;YAE/N,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YACtC,UAAU,CAAC,GAAG,EAAE;gBACd,6CAA6C;gBAC7C,IAAI,CAAC,UAAU,EAAE,CAAC;gBAClB,IAAI,CAAC,YAAY,EAAE,CAAC;gBACpB,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YAC9B,CAAC,EAAE,EAAE,CAAC;QACR,CAAC,EAAE,GAAG,CAAC,CAAC;QAER,OAAO,IAAI,CAAC,aAAa,CAAC;IAC5B,CAAC;;wFAhhBU,oBAAoB;qHAApB,oBAAoB,WAApB,oBAAoB,mBAFnB,MAAM;;;;;;;;;;;;;;;;;;;;;;ACzE6B;;;AACjD,wCAAwC;AAGxC,uBAAuB;AAChB,MAAM,aAAa;IASxB,wEAAwE;IACxE,OAAO;QACL,OAAO,CAAC,IAAI,CAAC,aAAa,IAAI,SAAS,CAAC;YACtC,CAAC,IAAI,CAAC,GAAG,IAAI,SAAS,CAAC,CAAC;QAC1B,sDAAsD;IACxD,CAAC;CACF;AAsCD,sFAAsF;AAI/E,MAAM,oBAAoB;IAI/B,uEAAuE;IACvE,YAAoB,IAAgB;QAAhB,SAAI,GAAJ,IAAI,CAAY;QAJpC,4EAA4E;QACpE,gBAAW,GAAiC,IAAI,+CAAa,CAAgB,CAAC,CAAC,CAAC;QAWxF,2EAA2E;QAC3E,mDAAmD;QACnD,kBAAa,GAAW,mBAAmB,CAAC;QAC5C,iBAAY,GAAW,kBAAkB,CAAC;QAC1C,iBAAY,GAAW,kBAAkB,CAAC;QAC1C,uBAAkB,GAAW,yBAAyB,CAAC;QACvD,oBAAe,GAAW,qBAAqB,CAAC;QAEhD,WAAM,GAAkB,IAAI,aAAa,EAAE,CAAC;QAE5C,eAAU,GAAW,GAAG,CAAC;QAjBvB,wCAAwC;QACxC,yFAAyF;QACzF,8FAA8F;QAC9F,+GAA+G;QAC/G,sEAAsE;IACxE,CAAC;IAkBD,0CAA0C;IAC1C,IAAI;QACF,0DAA0D;QAC1D,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;YACxB,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAM,wBAAwB,CAAC,CAAC;YAEnE,qFAAqF;YACrF,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE;gBAClC,IAAI,GAAG,IAAI,GAAG,CAAC,QAAQ,EAAE;oBACvB,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC;oBAClC,IAAI,CAAC,UAAU,GAAG,GAAG,CAAC,QAAQ,CAAC;iBAChC;qBACI;oBACH,IAAI,CAAC,WAAW,EAAE,CAAC;iBACpB;gBACD,IAAI,CAAC,OAAO,EAAE,CAAC;YACjB,CAAC,EAAE,GAAG,CAAC,EAAE;gBACP,8GAA8G;gBAC9G,IAAI,CAAC,WAAW,EAAE,CAAC;gBACnB,IAAI,CAAC,OAAO,EAAE,CAAC;YACjB,CAAC,CAAC,CAAC;SACJ;IACH,CAAC;IAED,WAAW;QACT,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC;QACzC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC;YACpC,IAAI,CAAC,UAAU,IAAI,OAAO,CAAC;IAC/B,CAAC;IAED,sEAAsE;IACtE,OAAO;QACL,IAAI,CAAC,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC;QACtC,sBAAsB;QACtB,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;YACpD,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAa,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,CAAC;YACpF,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE;gBAChC,IAAI,CAAC,MAAM,CAAC,aAAa,GAAG,GAAG,CAAC;gBAChC,IAAI,CAAC,aAAa,EAAE;YACtB,CAAC,EAAE,GAAG,CAAC,EAAE;gBACP,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACrB,CAAC,CAAC,CAAC;SACJ;QAED,qBAAqB;QACrB,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE;YACpB,IAAI,CAAC,IAAI,CAAC,GAAG,CAAY,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE;gBAC5E,IAAI,CAAC,MAAM,CAAC,GAAG,GAAG,GAAG,CAAC;gBACtB,IAAI,CAAC,aAAa,EAAE;YACtB,CAAC,EAAE,GAAG,CAAC,EAAE;YAET,CAAC,CAAC,CAAC;SACJ;QAED,qBAAqB;QACrB,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE;YACpB,IAAI,CAAC,IAAI,CAAC,GAAG,CAAY,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE;gBAC5E,IAAI,CAAC,MAAM,CAAC,GAAG,GAAG,GAAG,CAAC;gBACtB,IAAI,CAAC,aAAa,EAAE;YACtB,CAAC,EAAE,GAAG,CAAC,EAAE;YAET,CAAC,CAAC,CAAC;SACJ;QAED,2BAA2B;QAC3B,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE;YACpB,IAAI,CAAC,IAAI,CAAC,GAAG,CAAkB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,kBAAkB,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE;gBACxF,IAAI,CAAC,MAAM,CAAC,UAAU,GAAG,GAAG,CAAC;gBAC7B,IAAI,CAAC,aAAa,EAAE;YACtB,CAAC,EAAE,GAAG,CAAC,EAAE;YAET,CAAC,CAAC,CAAC;SACJ;QAED,wBAAwB;QACxB,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE;YACvB,IAAI,CAAC,IAAI,CAAC,GAAG,CAAe,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,eAAe,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE;gBAClF,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,GAAG,CAAC;gBACzB,IAAI,CAAC,aAAa,EAAE;YACtB,CAAC,EAAE,GAAG,CAAC,EAAE;YAET,CAAC,CAAC,CAAC;SACJ;QAED,IAAI,CAAC,sBAAsB,EAAE,CAAC;IAEhC,CAAC;IAED,8BAA8B;IAC9B,aAAa;QACX,mEAAmE;QACnE,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE;YACzB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;SACpC;IAEH,CAAC;IAGD,uFAAuF;IACvF,MAAM;QACJ,IAAI,CAAC,KAAK,EAAE,CAAC;QACb,IAAI,CAAC,IAAI,EAAE,CAAC;IACd,CAAC;IAED,uCAAuC;IAC/B,KAAK;QACX,IAAI,CAAC,QAAQ,EAAE,CAAC;QAChB,IAAI,CAAC,SAAS,EAAE,CAAC;QACjB,IAAI,CAAC,QAAQ,EAAE,CAAC;IAClB,CAAC;IAED,8GAA8G;IAC9G,8EAA8E;IACtE,SAAS;QACf,IAAI,CAAC,MAAM,CAAC,aAAa,GAAG,SAAS,CAAC;IACxC,CAAC;IAEO,QAAQ;QACd,IAAI,CAAC,MAAM,CAAC,GAAG,GAAG,SAAS,CAAC;IAC9B,CAAC;IAEO,QAAQ;QACd,IAAI,CAAC,MAAM,CAAC,GAAG,GAAG,SAAS,CAAC;IAC9B,CAAC;IAGD,iHAAiH;IAC1G,SAAS;QACd,qDAAqD;QACrD,wFAAwF;QACxF,IAAI,CAAC,IAAI,EAAE,CAAC;QACZ,OAAO,IAAI,CAAC,WAAW,CAAC;IAC1B,CAAC;IAED,oDAAoD;IACpD,sBAAsB;QACpB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACrC,CAAC;IAEK,cAAc,CAAC,SAAS;;YAC5B,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAM,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC,CAAC,SAAS,EAAE,CAAC;QACrE,CAAC;KAAA;;wFA1KU,oBAAoB;qHAApB,oBAAoB,WAApB,oBAAoB,mBAFnB,MAAM;;;;;;;;;;;;;;;;;;;AC7D6B;;;AAQ1C,MAAM,gBAAgB;IAKzB,uEAAuE;IACvE,YAAoB,GAAgB;QAAhB,QAAG,GAAH,GAAG,CAAa;QAJ5B,gBAAW,GAA4B,IAAI,+CAAa,CAAW,CAAC,CAAC,CAAC;QACtE,iBAAY,GAAwB,IAAI,+CAAa,CAAO,CAAC,CAAC,CAAC;QAInE,yCAAyC;QACzC,yFAAyF;QACzF,8FAA8F;QAC9F,+GAA+G;QAC/G,sEAAsE;IAC1E,CAAC;IAED,QAAQ;QACJ,UAAU,CAAE,GAAG,EAAE;YACjB,IAAI,CAAC,GAAG,CAAC,GAAG,CAAW,WAAW,EAAE,UAAU,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE;gBAC5D,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAC7B,CAAC,EAAE,KAAK,CAAC,EAAE;gBACT,iDAAiD;gBACjD,OAAO,CAAC,KAAK,CAAC,UAAU,KAAK,mDAAmD,CAAC,CAAC;YACpF,CAAC,CAAC,CAAC;QACL,CAAC,EAAE,EAAE,CAAC,CAAC;QAEP,OAAO,IAAI,CAAC,WAAW,CAAC;IAC5B,CAAC;IAED,WAAW,CAAC,EAAW;QACnB,UAAU,CAAE,GAAG,EAAE;YACjB,IAAI,CAAC,GAAG,CAAC,IAAI,CAAO,WAAW,EAAE,SAAS,EAAE,EAAE,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE;gBAC5D,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAC9B,CAAC,EAAE,KAAK,CAAC,EAAE;gBACT,iDAAiD;gBACjD,OAAO,CAAC,KAAK,CAAC,UAAU,KAAK,mDAAmD,CAAC,CAAC;YACpF,CAAC,CAAC,CAAC;QACL,CAAC,EAAE,EAAE,CAAC,CAAC;QAEP,OAAO,IAAI,CAAC,YAAY,CAAC;IAE7B,CAAC;;gFAvCQ,gBAAgB;iHAAhB,gBAAgB,WAAhB,gBAAgB,mBAFb,MAAM;;;;;;;;;;;;;;;;;;;ACN8C;AACrC;;AAMxB,MAAM,mBAAmB;IAI9B;QAFO,kBAAa,GAAG,IAAI,yCAAO,EAAU,CAAC;IAE7B,CAAC;IAEjB,WAAW,CAAC,SAA2B;QACrC,MAAM,KAAK,GAAQ,EAAE,CAAC;QAEtB,IAAI,CAAC,SAAS,EAAE;YACd,SAAS,GAAG,EAAE,CAAC;SAChB;QACD,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;YAC3B,IAAI,QAAQ,CAAC,WAAW,KAAK,cAAc,EAAE;gBAC3C,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;oBAClC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,uDAAW,CAAC,OAAO,CAAC,KAAK,IAAI,EAAE,EAAE,+DAAmB,CAAC;wBAC/F,CAAC,CAAC,IAAI,uDAAW,CAAC,OAAO,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;gBAC3C,CAAC,CAAC,CAAC;aACJ;iBAAM;gBACL,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,uDAAW,CAAC,QAAQ,CAAC,KAAK,IAAI,EAAE,EAAE,+DAAmB,CAAC;oBAClG,CAAC,CAAC,IAAI,uDAAW,CAAC,QAAQ,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;aAC3C;QACH,CAAC,CAAC,CAAC;QAEH,OAAO,IAAI,qDAAS,CAAC,KAAK,CAAC,CAAC;IAC9B,CAAC;;sFAzBU,mBAAmB;oHAAnB,mBAAmB,WAAnB,mBAAmB,mBAFlB,MAAM;;;;;;;;;;;;;;;;;;;;ACLwC;AACsB;AACjB;;AAK1D,MAAM,YAAY;IAEvB,gBAAgB,CAAC;IAEjB,SAAS,CAAC,UAAkB;QAC1B,IAAI,MAAM,CAAC;QAEX,QAAQ,UAAU,EAAE;YAClB,KAAK,yEAAkB;gBACrB,MAAM,GAAG,qGAA4B,CAAC;gBACtC,MAAM;YACR,KAAK,0EAAmB;gBACtB,MAAM,GAAG,sGAA6B,CAAC;gBACvC,MAAM;YACR,KAAK,8EAAuB;gBAC1B,MAAM,GAAG,0GAAiC,CAAC;gBAC3C,MAAM;YACR,KAAK,kBAAkB;gBACrB,MAAM,GAAG,8GAAqC,CAAC;gBAC/C,MAAM;YACR,KAAK,cAAc;gBACjB,MAAM,GAAG,0GAAiC,CAAC;gBAC3C,MAAM;YACR,KAAK,qBAAqB;gBACxB,MAAM,GAAG,2GAAkC,CAAC;gBAC5C,MAAM;YACR,KAAK,gBAAgB;gBACnB,MAAM,GAAG,sGAA6B;gBACtC,MAAM;YACR,KAAK,oBAAoB;gBACvB,MAAM,GAAG,0GAAiC;gBAC1C,MAAM;YACR,KAAK,6EAAsB;gBACzB,MAAM,GAAG,0GAAiC;gBAC1C,MAAM;YACR,KAAK,4EAAqB;gBACxB,MAAM,GAAG,wGAA+B;gBACxC,MAAM;YACR,KAAK,oBAAoB;gBACvB,MAAM,GAAG,0GAAiC;gBAC1C,MAAM;YACR,KAAK,uEAAgB;gBACnB,MAAM,GAAG,mGAA0B;gBACnC,MAAM;YACR,oCAAoC;YAEpC;gBACE,MAAM;SACT;QAED,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QAEhC,qBAAqB;QACrB,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;YACrB,IAAI,KAAK,CAAC,OAAO,EAAE;gBACjB,MAAM,WAAW,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;oBAC5C,OAAO,IAAI,CAAC,KAAK,KAAK,KAAK,CAAC,OAAO,CAAC;gBACtC,CAAC,CAAC,CAAC;gBAEH,4CAA4C;gBAC5C,IAAI,WAAW,EAAE;oBACf,KAAK,CAAC,KAAK,GAAG,WAAW,CAAC,GAAG,CAAC;iBAC/B;aACF;QACH,CAAC,CAAC,CAAC;QAEH,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;IAClD,CAAC;IAED,iBAAiB,CAAC,SAAiB,EAAE,MAAW;QAC9C,sGAAsG;QACtG,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;QAC5C,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,kBAAkB,CAAC,CAAC;QACtD,MAAM,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;QAE5C,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;YACrB,MAAM,QAAQ,GAAG,KAAK,CAAC,GAAG,CAAC;YAC3B,MAAM,UAAU,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC;YAE5C,IAAI,UAAU,EAAE;gBACd,KAAK,CAAC,KAAK,GAAG,UAAU,CAAC;gBAEzB,wBAAwB;gBACxB,IAAI,KAAK,CAAC,WAAW,KAAK,UAAU,EAAE;oBACpC,MAAM,WAAW,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;wBAC5C,OAAO,IAAI,CAAC,KAAK,KAAK,UAAU,CAAC;oBACnC,CAAC,CAAC,CAAC;oBAEH,4CAA4C;oBAC5C,IAAI,WAAW,EAAE;wBACf,KAAK,CAAC,KAAK,GAAG,WAAW,CAAC,GAAG,CAAC;qBAC/B;iBACF;gBAED,WAAW;gBACX,IAAI,KAAK,CAAC,WAAW,KAAK,cAAc,EAAE;oBACxC,MAAM,YAAY,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;wBAC7C,OAAO,IAAI,CAAC,KAAK,KAAK,UAAU,CAAC;oBACnC,CAAC,CAAC,CAAC;oBAEH,IAAI,YAAY,EAAE;wBAChB,KAAK,CAAC,KAAK,GAAG,YAAY,CAAC,GAAG,CAAC;qBAChC;iBAEF;aACF;YAED,8CAA8C;QAChD,CAAC,CAAC,CAAC;QAEH,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,sBAAsB,CAAC,SAAiB,EAAE,MAAW,EAAE,WAAqB;QAC1E,sGAAsG;QACtG,IAAI,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;QAE5C,IAAI,WAAW,EAAE;YACf,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,GAAG,OAAO,CAAC,CAAC,GAAG,KAAK,mFAAmB,EAAC,CAAC,CAAC,CAAC;SACvE;QAED,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;YACrB,MAAM,QAAQ,GAAG,KAAK,CAAC,GAAG,CAAC;YAC3B,MAAM,UAAU,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC;YAE5C,IAAI,UAAU,EAAE;gBACd,KAAK,CAAC,KAAK,GAAG,UAAU,CAAC;gBAEzB,IAAI,KAAK,CAAC,WAAW,KAAK,cAAc,EAAE;oBACxC,MAAM,YAAY,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;wBAC7C,OAAO,IAAI,CAAC,KAAK,KAAK,UAAU,CAAC;oBACnC,CAAC,CAAC,CAAC;oBAEH,IAAI,YAAY,EAAE;wBAChB,KAAK,CAAC,KAAK,GAAG,YAAY,CAAC,GAAG,CAAC;qBAChC;iBAEF;aACF;QACH,CAAC,CAAC,CAAC;QAEH,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,wBAAwB,CAAC,SAAiB,EAAE,MAAW;QACrD,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;QAEzC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;YACrB,MAAM,QAAQ,GAAG,KAAK,CAAC,GAAG,CAAC;YAC3B,MAAM,UAAU,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC;YAE5C,IAAI,UAAU,EAAE;gBACd,KAAK,CAAC,KAAK,GAAG,UAAU,CAAC;gBAEzB,wBAAwB;gBACxB,IAAI,KAAK,CAAC,WAAW,KAAK,UAAU,EAAE;oBACpC,MAAM,WAAW,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;wBAC5C,OAAO,IAAI,CAAC,KAAK,KAAK,UAAU,CAAC;oBACnC,CAAC,CAAC,CAAC;oBAEH,4CAA4C;oBAC5C,IAAI,WAAW,EAAE;wBACf,KAAK,CAAC,KAAK,GAAG,WAAW,CAAC,GAAG,CAAC;qBAC/B;iBACF;gBAED,IAAI,KAAK,CAAC,WAAW,KAAK,cAAc,EAAE;oBACxC,MAAM,YAAY,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;wBAC7C,OAAO,IAAI,CAAC,KAAK,KAAK,UAAU,CAAC;oBACnC,CAAC,CAAC,CAAC;oBAEH,IAAI,YAAY,EAAE;wBAChB,KAAK,CAAC,KAAK,GAAG,YAAY,CAAC,GAAG,CAAC;qBAChC;iBAEF;aACF;QACH,CAAC,CAAC,CAAC;QAEH,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,uBAAuB;IACf,SAAS,CAAC,GAAW;QAC3B,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;IACzC,CAAC;;wEAzLU,YAAY;6GAAZ,YAAY,WAAZ,YAAY,mBAFX,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;ACLuB;AAG2F;AAE/B;;;;;AAoChG,MAAM,yBAAyB;IAIpC,YACU,GAAe,EACf,IAAgB,EAChB,MAA4B;QAF5B,QAAG,GAAH,GAAG,CAAY;QACf,SAAI,GAAJ,IAAI,CAAY;QAChB,WAAM,GAAN,MAAM,CAAsB;QAL/B,yBAAoB,GAAkB,IAAI,yCAAO,EAAQ,CAAC;IAQjE,CAAC;IAEM,UAAU,CAAC,MAAW,EAAE,iBAA0B,KAAK;QAC5D,IAAI,GAAG,GAAG,IAAI,yCAAO,EAAe,CAAC;QAErC,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE;YACvC,IAAI,MAAM,GAAG,EAAE,CAAC;YAEhB,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;gBACjB,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;oBACzB,IAAI,KAAK,CAAC,QAAQ,IAAI,GAAG,CAAC,SAAS,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;wBACzD,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;qBACpB;gBACH,CAAC,CAAC;YACJ,CAAC,CAAC;YAEF,IAAI,MAAM,CAAC,MAAM,IAAI,CAAC,EAAE;gBACtB,UAAU,CAAC,GAAG,EAAE,GAAG,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;gBAC3C,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;aAC3B;YAED,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;gBACrB,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE,KAAK,EAAE,cAAc,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,EAAC,CAAC,CAAC,CAAC;YAC5F,CAAC,CAAC;QAEJ,CAAC,CAAC;QACF,OAAO,GAAG,CAAC;IACb,CAAC;IAEM,SAAS,CAAC,KAAU,EAAE,aAAsB,KAAK,EAAE,iBAA0B,KAAK;QACvF,IAAI,GAAG,GAAG,IAAI,yCAAO,EAAe,CAAC;QAErC,IAAI,MAAM,GAAG,EAAE,CAAC;QAEhB,IAAI,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;YACtC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;gBACzB,IAAI,KAAK,CAAC,QAAQ,IAAI,GAAG,CAAC,SAAS,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE;oBACxG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;iBACpB;YACH,CAAC,CAAC;QACJ,CAAC,CAAC;QAEF,IAAI,MAAM,CAAC,MAAM,IAAI,CAAC,EAAE;YACtB,UAAU,CAAC,GAAG,EAAE,GAAG,GAAG,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,EAAC,CAAC,EAAE,GAAG,CAAC,CAAC;SACnE;QACD,IAAI,MAAM,GAAG,EAAE,CAAC;QAChB,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;YACrB,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,KAAK,EAAE,cAAc,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,EAAC,CAAC,CAAC,CAAC;QAC1F,CAAC,CAAC;QAEJ,OAAO,GAAG,CAAC;IAEb,CAAC;IAEM,SAAS,CAAC,KAAa,EAAE,aAAsB,KAAK,EAAE,iBAA0B,KAAK;QAC1F,IAAI,GAAG,GAAG,IAAI,yCAAO,EAAe,CAAC;QAErC,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE;YACvC,IAAI,MAAM,GAAG,EAAE,CAAC;YAEhB,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;gBACjB,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;oBACzB,IAAI,KAAK,CAAC,QAAQ,IAAI,GAAG,CAAC,SAAS,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE;wBACxG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;qBACpB;gBACH,CAAC,CAAC;YACJ,CAAC,CAAC;YAEF,IAAI,MAAM,CAAC,MAAM,IAAI,CAAC,EAAE;gBACtB,UAAU,CAAC,GAAG,EAAE,GAAG,GAAG,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,EAAC,CAAC,EAAE,GAAG,CAAC,CAAC;gBAClE,OAAO;aACR;YACD,IAAI,MAAM,GAAG,EAAE,CAAC;YAChB,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;gBACrB,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,KAAK,EAAE,cAAc,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,EAAC,CAAC,CAAC,CAAC;YAC1F,CAAC,CAAC;QACJ,CAAC,CAAC;QAEF,OAAO,GAAG,CAAC;IAEb,CAAC;IAEY,wBAAwB,CAAC,GAAW,EAAE,KAAa;;YAC9D,MAAM,WAAW,GAAG,GAAG,GAAG,eAAe,KAAK,wlBAAwlB,CAAC,CAAC,8BAA8B;YACtqB,MAAM,GAAG,GAAQ,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,CAAM,WAAW,CAAC,CAAC,SAAS,EAAE,CAAC;YAEnE,IAAI,GAAG,KAAI,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,MAAM,GAAE;gBACtB,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;aAC7E;iBAAM;gBACL,OAAO,IAAI,CAAC;aACb;QACH,CAAC;KAAA;IAEY,sBAAsB,CAAC,GAAW,EAAE,KAAa;;;YAC5D,MAAM,WAAW,GAAG,GAAG,GAAG,eAAe,KAAK,+lBAA+lB,CAAC,CAAC,8BAA8B;YAC7qB,MAAM,GAAG,GAAQ,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,CAAM,WAAW,CAAC,CAAC,SAAS,EAAE,CAAC;YAEnE,IAAI,GAAG,KAAI,eAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,QAAQ,0CAAG,CAAC,CAAC,0CAAE,QAAQ,GAAE;gBACvC,OAAO,eAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,QAAQ,0CAAG,CAAC,CAAC,0CAAE,QAAQ,CAAC;aACrC;iBAAM;gBACL,OAAO,IAAI,CAAC;aACb;;KACF;IAEO,iBAAiB,CAAC,MAAW,EAAE,KAAe,EAAE,iBAA0B,KAAK;QACrF,OAAO,CAAC,GAAG,CAAC,UAAU,EAAE,MAAM,CAAC;QAC/B,IAAI,GAAG,GAAG,IAAI,yCAAO,EAAe,CAAC;QAErC,IAAI,IAAI,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,OAAO,EAAE,CAAC,aAAa,CAAC;QAEnD,IAAI,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QACpB,IAAI,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QAErB,IAAI,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,OAAO,EAAE,CAAC,OAAO,EAAE,CAAC;QAClD,IAAI,KAAK,CAAC,QAAQ,CAAC,OAAO,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE;YAChE,UAAU,CAAC,GAAG,EAAE;gBACd,IAAI,GAAG,GAAG,EAAE;gBACZ,GAAG,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,oEAAoE,EAAE,CAAC,CAAC;gBAC1H,GAAG,CAAC,QAAQ,EAAE,CAAC;YACjB,CAAC,EAAE,GAAG,CAAC,CAAC;SACT;aACI;YACH,UAAU,CAAC,GAAG,EAAE;gBACd,QAAQ,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE;oBACzB,KAAK,mFAA6B;wBAChC;4BACG,KAAK,CAAC,MAAM,CAAC,KAAiC,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE;gCACrE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAM,EAAE,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,aAAa,IAAI,SAAS,IAAI,KAAK,CAAC,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,GAAG,KAAK,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE;oCACxL,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,EAAE,EAAE,cAAc,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;gCAC3E,CAAC,EACC,GAAG,CAAC,EAAE;oCACJ,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,EAAE,EAAE,cAAc,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;gCACzE,CAAC,CAAC;4BAEN,CAAC,CAAC;yBACH;wBACD,MAAM;oBACR,KAAK,oFAA8B,CAAC;oBACpC,KAAK,4EAAsB;wBACzB;4BACE,IAAI,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;gCACjD,IAAI,GAAG,GAAG,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC;gCACpC,IAAI,QAAQ,GAAG,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC;gCAC5C,IAAI,GAAG,GAAG,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;gCAC/C,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;oCACd,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;wCACnB,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;wCAC7B,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;oCACzB,CAAC,CAAC;gCACJ,CAAC,CAAC;gCACF,GAAG,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC;gCAC7C,GAAG,CAAC,QAAQ,EAAE,CAAC;6BAEhB;yBACF;wBACD,MAAM;iBACT;YACH,CAAC,EAAE,GAAG,CAAC,CAAC;SACT;QAED,OAAO,GAAG,CAAC;IACb,CAAC;IAEO,MAAM,CAAC,GAAG,EAAE,EAAE,EAAE,cAAc,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM;QACxE,IAAI,oBAAoB,GAAG,EAAE,CAAC;QAC9B,IAAI,oBAAoB,GAAG,EAAE,CAAC;QAC9B,IAAI,IAAI,CAAC,MAAM,EAAE;YACf,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;gBAC5B,oBAAoB,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC;gBACnD,oBAAoB,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;YACrD,CAAC,CAAC,CAAC;SACJ;QAED,IAAI,GAAG,GAAG,EAAE,CAAC,GAAG,GAAG,0FAA0F,MAAM,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,cAAc,MAAM,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,iBAAiB,KAAK,IAAI,MAAM,kCAAkC,cAAc,EAAE;QAC7S,IAAI,KAAK,CAAC,QAAQ,CAAC,aAAa,IAAI,KAAK,CAAC,QAAQ,CAAC,aAAa,CAAC,MAAM;YACrE,GAAG,IAAI,kBAAkB,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;QACvE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAM,GAAG,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE;YACvC,IAAI,IAAI,CAAC,OAAO,EAAE;gBAChB,IAAI,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC;gBAC5B,IAAI,GAAG,GAAG,EAAE,CAAC;gBACb,IAAI,MAAM,GAAG,EAAE,CAAC;gBAChB,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;oBACzB,IAAI,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;wBACjE,OAAO;oBAET,IAAI,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;oBAE5E,IAAI,CAAC,UAAU,EAAE;wBACf,UAAU,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK;qBACrG;oBAED,IAAI,IAAI,GACR;wBACE,EAAE,EAAE,OAAO,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC,KAAK,CAAC;wBAC7F,IAAI,EAAE,UAAU;wBAChB,IAAI,EAAE,EAAE;wBACR,GAAG,EAAE,EAAE;qBACR,CAAC;oBAEF,IAAI,cAAc,IAAI,OAAO,CAAC,QAAQ,EAAE;wBACtC,IAAI,KAAK,GAAG,IAAI,EAAE,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,YAAY,CAAC,OAAO,CAAC;wBAE1D,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;4BACnB,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;4BAC7B,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;wBAC5B,CAAC,CAAC,CAAC;wBAEH,IAAI,CAAC,GAAG,GAAG,KAAK,CAAC;qBAClB;oBAED,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;wBAChD,IAAI,KAAK,CAAC,KAAK,EAAE;4BACf,IAAI,GAAG,GAAG,SAAS,CAAC;4BAEpB,IAAI,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC;gCACjC,GAAG,GAAG,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;iCACnC,IAAI,OAAO,CAAC,UAAU,CAAC,oBAAoB,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;gCAC5D,GAAG,GAAG,OAAO,CAAC,UAAU,CAAC,oBAAoB,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;iCACzD,IAAI,OAAO,CAAC,UAAU,CAAC,oBAAoB,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;gCAC5D,GAAG,GAAG,OAAO,CAAC,UAAU,CAAC,oBAAoB,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;4BAE9D,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;yBAClD;6BACI,IAAI,KAAK,CAAC,MAAM;4BACnB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;oBAC9D,CAAC,CAAC,CAAC;oBAEH,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC;oBACvB,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACjB,CAAC,CAAC;gBAEF,GAAG,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC;gBAC7C,GAAG,CAAC,QAAQ,EAAE,CAAC;aAChB;QACH,CAAC,CAAC;IACJ,CAAC;IAEO,gBAAgB,CAAC,KAAU,EAAE,KAAe,EAAE,iBAA0B,KAAK;QACnF,IAAI,GAAG,GAAG,IAAI,yCAAO,EAAe,CAAC;QAErC,IAAI,IAAI,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,OAAO,EAAE,CAAC,aAAa,CAAC;QACnD,IAAI,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QACpB,IAAI,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QAErB,UAAU,CAAC,GAAG,EAAE;;YACd,QAAQ,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE;gBACzB,KAAK,mFAA6B;oBAChC;wBACE,IAAI,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,OAAO,EAAE,CAAC,eAAe,EAAE,CAAC;wBAExD,KAAK,CAAC,MAAM,CAAC,KAAiC,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE;4BACrE,IAAI,GAAG,GAAG,EAAE,CAAC,GAAG,GAAG,mEAAmE,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,cAAc,MAAM,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,iBAAiB,KAAK,IAAI,MAAM,kCAAkC,cAAc,EAAE;4BAE1P,IAAI,KAAK,CAAC,QAAQ,CAAC,aAAa,IAAI,KAAK,CAAC,QAAQ,CAAC,aAAa,CAAC,MAAM;gCACrE,GAAG,IAAI,kBAAkB,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;4BAEvE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAM,GAAG,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE;gCACvC,IAAI,IAAI,CAAC,OAAO,EAAE;oCAChB,IAAI,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC;oCAC5B,IAAI,GAAG,GAAG,EAAE,CAAC;oCACb,IAAI,MAAM,GAAG,EAAE,CAAC;oCAChB,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;wCACzB,IAAI,IAAI,GACR;4CACE,EAAE,EAAE,OAAO,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC,KAAK,CAAC;4CAC7F,IAAI,EAAE,OAAO,CAAC,gBAAgB,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC,KAAK,CAAC,KAAK,CAAC;4CAC3J,IAAI,EAAE,EAAE;4CACR,GAAG,EAAE,EAAE,CAAC,oBAAoB;yCAC7B,CAAC;wCAEF,IAAI,cAAc,IAAI,OAAO,CAAC,QAAQ,EAAE;4CACtC,IAAI,KAAK,GAAG,IAAI,EAAE,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,YAAY,CAAC,OAAO,CAAC;4CAC1D,IAAI,CAAC,GAAG,GAAG,KAAK,CAAC;yCAClB;wCAED,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;4CAChD,IAAI,KAAK,CAAC,KAAK;gDACb,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;iDAC1E,IAAI,KAAK,CAAC,MAAM;gDACnB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;wCAC9D,CAAC,CAAC,CAAC;wCAEH,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC;wCACvB,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;oCACjB,CAAC,CAAC;oCAEF,GAAG,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC;oCAC7C,GAAG,CAAC,QAAQ,EAAE,CAAC;iCAChB;4BACH,CAAC,CAAC;wBAEJ,CAAC,CAAC,CAAC;qBACJ;oBACD,MAAM;gBACR,KAAK,oFAA8B;oBACjC;wBACG,KAAK,CAAC,MAAM,CAAC,KAAyC,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE;4BAC7E,IAAI,GAAG,GAAG,EAAE,CAAC,GAAG,GAAG,0CAA0C,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,qLAAqL,cAAc,2hBAA2hB,CAAC;4BAEhzB,IAAI,CAAC,IAAI,CAAC,GAAG,CAAM,GAAG,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE;gCACvC,IAAI,IAAI,CAAC,QAAQ,EAAE;oCACjB,IAAI,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;oCAC7B,IAAI,GAAG,GAAG,EAAE,CAAC;oCACb,IAAI,MAAM,GAAG,EAAE,CAAC;oCAChB,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;wCACzB,IAAI,IAAI,GACR;4CACE,EAAE,EAAE,OAAO,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC,KAAK,CAAC;4CAC7F,IAAI,EAAE,OAAO,CAAC,gBAAgB,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC,KAAK,CAAC,KAAK,CAAC;4CAC3J,IAAI,EAAE,EAAE;4CACR,GAAG,EAAE,EAAE,CAAC,oBAAoB;yCAC7B,CAAC;wCAEF,IAAI,cAAc,IAAI,OAAO,CAAC,QAAQ,EAAE;4CACtC,IAAI,KAAK,GAAG,IAAI,EAAE,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,YAAY,CAAC,OAAO,CAAC;4CAC1D,IAAI,CAAC,GAAG,GAAG,KAAK,CAAC;yCAClB;wCAED,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;4CAChD,IAAI,KAAK,CAAC,KAAK;gDACb,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;iDAC1E,IAAI,KAAK,CAAC,MAAM;gDACnB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;wCAC9D,CAAC,CAAC,CAAC;wCAEH,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC;wCACvB,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;oCACjB,CAAC,CAAC;oCAEF,GAAG,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC;oCAC7C,GAAG,CAAC,QAAQ,EAAE,CAAC;iCAChB;4BACH,CAAC,CAAC;wBAEJ,CAAC,CAAC,CAAC;qBACJ;oBACD,MAAM;gBACR,KAAK,4EAAsB;oBACzB;wBACE,IAAI,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,YAAK,CAAC,QAAQ,0CAAE,QAAQ,GAAE;4BAC9E,IAAI,GAAG,GAAG,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC;4BACpC,IAAI,QAAQ,GAAG,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC;4BAC5C,QAAQ,GAAG,IAAI,CAAC,qBAAqB,CAAC,QAAQ,EAAE,KAAK,CAAC;4BACtD,IAAI,GAAG,GAAG,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;4BAC/C,GAAG,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC;4BAC7C,GAAG,CAAC,QAAQ,EAAE,CAAC;yBAChB;wBAED,IAAI,WAAK,CAAC,QAAQ,0CAAE,QAAQ,EAAE;4BAC5B,oDAAoD;4BAClD,IAAI,GAAG,GAAG,YAAK,CAAC,QAAQ,0CAAE,QAAQ,IAAG,0CAA0C,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,qLAAqL,cAAc,2hBAA2hB,CAAC;4BAEl0B,IAAI,CAAC,IAAI,CAAC,GAAG,CAAM,GAAG,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE;gCACvC,IAAI,IAAI,CAAC,QAAQ,EAAE;oCACjB,IAAI,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;oCAC7B,IAAI,GAAG,GAAG,EAAE,CAAC;oCACb,IAAI,MAAM,GAAG,EAAE,CAAC;oCAChB,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;wCACzB,IAAI,IAAI,GACR;4CACE,EAAE,EAAE,OAAO,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC,KAAK,CAAC;4CAC7F,IAAI,EAAE,OAAO,CAAC,gBAAgB,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC,KAAK,CAAC,KAAK,CAAC;4CAC3J,IAAI,EAAE,EAAE;4CACR,GAAG,EAAE,EAAE,CAAC,oBAAoB;yCAC7B,CAAC;wCAEF,IAAI,cAAc,IAAI,OAAO,CAAC,QAAQ,EAAE;4CACtC,IAAI,KAAK,GAAG,IAAI,EAAE,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,YAAY,CAAC,OAAO,CAAC;4CAC1D,IAAI,CAAC,GAAG,GAAG,KAAK,CAAC;yCAClB;wCAED,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;4CAChD,IAAI,KAAK,CAAC,KAAK;gDACb,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;iDAC1E,IAAI,KAAK,CAAC,MAAM;gDACnB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;wCAC9D,CAAC,CAAC,CAAC;wCAEH,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC;wCACvB,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;oCACjB,CAAC,CAAC;oCAEF,GAAG,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC;oCAC7C,GAAG,CAAC,QAAQ,EAAE,CAAC;iCAChB;4BACH,CAAC,CAAC;yBACL;qBACF;oBACD,MAAM;aACT;QACH,CAAC,EAAE,GAAG,CAAC,CAAC;QAER,OAAO,GAAG,CAAC;IACb,CAAC;IAEO,gBAAgB,CAAC,KAAa,EAAE,KAAe,EAAE,iBAA0B,KAAK;QACtF,IAAI,GAAG,GAAG,IAAI,yCAAO,EAAe,CAAC;QAErC,IAAI,IAAI,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,OAAO,EAAE,CAAC,aAAa,CAAC;QACnD,IAAI,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QACpB,IAAI,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QAErB,UAAU,CAAC,GAAG,EAAE;YACd,QAAQ,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE;gBACzB,KAAK,mFAA6B;oBAChC;wBACE,IAAI,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,OAAO,EAAE,CAAC,eAAe,EAAE,CAAC;wBAExD,KAAK,CAAC,MAAM,CAAC,KAAiC,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE;4BACrE,IAAI,GAAG,GAAG,EAAE,CAAC,GAAG,GAAG,IAAI,KAAK,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,+BAA+B,KAAK,mBAAmB,cAAc,cAAc;4BAEzI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAM,GAAG,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE;gCACvC,IAAI,IAAI,CAAC,QAAQ,EAAE;oCACjB,IAAI,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;oCAC7B,IAAI,GAAG,GAAG,EAAE,CAAC;oCACb,IAAI,MAAM,GAAG,EAAE,CAAC;oCAChB,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;wCAEzB,IAAI,IAAI,GACR;4CACE,EAAE,EAAE,OAAO,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC,KAAK,CAAC;4CAC7F,IAAI,EAAE,OAAO,CAAC,gBAAgB,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC,KAAK,CAAC,KAAK,CAAC;4CAC1I,IAAI,EAAE,EAAE;4CACR,GAAG,EAAE,EAAE,CAAC,oBAAoB;yCAC7B,CAAC;wCAEF,IAAI,cAAc,IAAI,OAAO,CAAC,QAAQ,EAAE;4CACtC,IAAI,KAAK,GAAG,IAAI,EAAE,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,YAAY,CAAC,OAAO,CAAC;4CAC1D,IAAI,CAAC,GAAG,GAAG,KAAK,CAAC;yCAClB;wCAED,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;4CAChD,IAAI,KAAK,CAAC,KAAK;gDACb,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;iDAC1E,IAAI,KAAK,CAAC,MAAM;gDACnB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;wCAC9D,CAAC,CAAC,CAAC;wCAEH,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC;wCACvB,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;oCACjB,CAAC,CAAC;oCAEF,GAAG,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC;oCAC7C,GAAG,CAAC,QAAQ,EAAE,CAAC;iCAChB;4BACH,CAAC,CAAC;wBAEJ,CAAC,CAAC,CAAC;qBACJ;oBACD,MAAM;aACT;QACH,CAAC,EAAE,GAAG,CAAC,CAAC;QAER,OAAO,GAAG,CAAC;IACb,CAAC;IAED,kBAAkB,CAAC,KAAK;QACtB,IAAI,GAAG,GAAG,KAAK,CAAC,SAAS,EAAE,CAAC;QAC5B,wCAAwC;QACxC,IAAI,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,OAAO,EAAE,CAAC,eAAe,EAAE,CAAC;QACrD,IAAI,QAAQ,GAAG,GAAG,CAAC,mBAAmB,CAAC,EAAE,CAAC,CAAC;QAC3C,QAAQ,GAAG,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;YAC7B,IAAI,IAAI,CAAC,0BAA0B,EAAE;gBACnC,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,0BAA0B,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE;aACvH;iBACI;gBACH,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE;aAC/B;QACH,CAAC,CAAC;QAEF,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,qBAAqB,CAAC,QAAQ,EAAE,KAAK;QACnC,OAAO,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE;YAC5B,IAAI,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,WAAW,EAAE,CAAC;YAC9B,OAAO,CAAC,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC;QACvC,CAAC,CAAC,CAAC;IACL,CAAC;IAED,cAAc,CAAC,QAAQ,EAAE,KAAK;QAC5B,IAAI,GAAG,GAAG,EAAE,CAAC;QACb,IAAI,MAAM,GAAG,EAAE,CAAC;QAChB,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE;YACpB,IAAI,OAAO,GAAG,EAAE,CAAC,GAAG,CAAC;YACrB,IAAI,CAAC,OAAO,CAAC,WAAW;gBACtB,OAAO,CAAC,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC;YAExC,IAAI,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE;gBACpE,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;gBACjF,OAAO;aACR;YAED,IAAI,IAAI,GACR;gBACE,EAAE,EAAE,OAAO,CAAC,WAAW,CAAC,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC,KAAK,CAAC;gBAC5D,IAAI,EAAE,OAAO,CAAC,WAAW,CAAC,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC,KAAK,CAAC,KAAK,CAAC;gBACjE,IAAI,EAAE,EAAE;gBACR,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;gBACZ,SAAS,EAAE,KAAK;aACjB,CAAC;YAEF,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;gBAChD,IAAI,KAAK,CAAC,KAAK;oBACb,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC,WAAW,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;qBAC3E,IAAI,KAAK,CAAC,MAAM;oBACnB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;YAC9D,CAAC,CAAC,CAAC;YAEH,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC;YACvB,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACjB,CAAC,CAAC;QAEF,OAAO,GAAG,CAAC;IACb,CAAC;IAED,aAAa,CAAC,GAAW;QACvB,mEAAmE;QACnE,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,SAAS,EAAE,CAAC,QAAQ,EAAE,CAAC;QACtD,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,WAAC,eAAC,aAAD,CAAC,uBAAD,CAAC,CAAE,OAAO,0CAAE,EAAE,MAAK,cAAc,IAAC,CAAC;QACtE,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,WAAC,eAAC,aAAD,CAAC,uBAAD,CAAC,CAAE,OAAO,0CAAE,EAAE,MAAK,eAAe,IAAC,CAAC;QACvE,MAAM,eAAe,GAAG,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,WAAC,eAAC,aAAD,CAAC,uBAAD,CAAC,CAAE,OAAO,0CAAE,EAAE,MAAK,GAAG,IAAC,CAAC;QAC1F,MAAM,eAAe,GAAG,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,WAAC,eAAC,aAAD,CAAC,uBAAD,CAAC,CAAE,OAAO,0CAAE,EAAE,MAAK,GAAG,IAAC,CAAC;QAC1F,MAAM,UAAU,GAAG,eAAe,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,eAAe,IAAI,IAAI,CAAC;QAC/E,OAAO,UAAU,CAAC;IACpB,CAAC;IAEK,oBAAoB,CAAC,UAAU,EAAE,SAAS;;YAC9C,IAAI,GAAG,EAAE,KAAK,CAAC;YAEf,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;YAC1E,MAAM,SAAS,GAAG,GAAG,CAAC,SAAS,CAAC,CAAC;YAEjC,IAAI,GAAG,EAAE,UAAU,CAAC;YACpB,QAAQ,UAAU,EAAE;gBAClB,KAAK,4HAA6B;oBAChC,uCAAuC;oBACvC,6EAA6E;oBAC7E,GAAG,GAAG,GAAG,SAAS,CAAC,4HAA6B,CAAC,GAAG,CAAC;oBACrD,KAAK,GAAG,YAAY,SAAS,EAAE,CAAC;oBAChC,MAAM;gBACR,KAAK,6HAA8B;oBACjC,sCAAsC;oBACtC,4EAA4E;oBAC5E,GAAG,GAAG,GAAG,SAAS,CAAC,6HAA8B,CAAC,GAAG,CAAC;oBACtD,KAAK,GAAG,YAAY,SAAS,EAAE,CAAC;oBAChC,MAAM;gBACR,KAAK,0HAA2B;oBAC9B,wCAAwC;oBACxC,8EAA8E;oBAC9E,GAAG,GAAG,GAAG,SAAS,CAAC,0HAA2B,CAAC,GAAG,CAAC;oBACnD,KAAK,GAAG,SAAS,SAAS,GAAG,CAAC;oBAC9B,MAAM;gBACR,KAAK,6HAA8B;oBACjC,uCAAuC;oBACvC,6EAA6E;oBAC7E,GAAG,GAAG,GAAG,SAAS,CAAC,6HAA8B,CAAC,GAAG,CAAC;oBACtD,KAAK,GAAG,SAAS,SAAS,GAAG,CAAC;oBAC9B,MAAM;gBACR,KAAK,8HAA+B;oBAClC,wCAAwC;oBACxC,8EAA8E;oBAC9E,GAAG,GAAG,GAAG,SAAS,CAAC,8HAA+B,CAAC,GAAG,CAAC;oBACvD,KAAK,GAAG,SAAS,SAAS,GAAG,CAAC;oBAC9B,MAAM;gBAER;oBACE,MAAM;aACT;YAED,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,wBAAwB,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;YAE/D,OAAO,MAAM,CAAC;QAChB,CAAC;KAAA;IAEK,kBAAkB,CAAC,UAAU,EAAE,SAAS;;YAC5C,IAAI,GAAG,EAAE,KAAK,CAAC;YAEf,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;YAC1E,MAAM,SAAS,GAAG,GAAG,CAAC,SAAS,CAAC,CAAC;YAEjC,QAAQ,UAAU,EAAE;gBAClB,KAAK,4HAA6B;oBAChC,GAAG,GAAG,GAAG,SAAS,CAAC,4HAA6B,CAAC,GAAG,CAAC;oBACrD,KAAK,GAAG,YAAY,SAAS,EAAE,CAAC;oBAChC,MAAM;gBACR,KAAK,6HAA8B;oBACjC,GAAG,GAAG,GAAG,SAAS,CAAC,6HAA8B,CAAC,GAAG,CAAC;oBACtD,KAAK,GAAG,YAAY,SAAS,EAAE,CAAC;oBAChC,MAAM;gBACR,KAAK,0HAA2B;oBAC9B,GAAG,GAAG,GAAG,SAAS,CAAC,0HAA2B,CAAC,GAAG,CAAC;oBACnD,KAAK,GAAG,SAAS,SAAS,GAAG,CAAC;oBAC9B,MAAM;gBACR,KAAK,6HAA8B;oBACjC,GAAG,GAAG,GAAG,SAAS,CAAC,6HAA8B,CAAC,GAAG,CAAC;oBACtD,KAAK,GAAG,SAAS,SAAS,GAAG,CAAC;oBAC9B,MAAM;gBACR,KAAK,8HAA+B;oBAClC,GAAG,GAAG,GAAG,SAAS,CAAC,8HAA+B,CAAC,GAAG,CAAC;oBACvD,KAAK,GAAG,SAAS,SAAS,GAAG,CAAC;oBAC9B,MAAM;gBAER;oBACE,MAAM;aACT;YAED,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,sBAAsB,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;YAElE,OAAO,WAAW,CAAC;QACrB,CAAC;KAAA;;kGA5mBU,yBAAyB;0HAAzB,yBAAyB,WAAzB,yBAAyB,mBAFxB,MAAM;;;;;;;;;;;;;;;;;;;;;;ACvC2C;AACkI;AAC9I;;;;;AAQ5C,MAAM,UAAU;IAMrB,YACU,IAAgB,EAChB,GAAe,EACf,OAA0B;QAF1B,SAAI,GAAJ,IAAI,CAAY;QAChB,QAAG,GAAH,GAAG,CAAY;QACf,YAAO,GAAP,OAAO,CAAmB;QAP5B,eAAU,GAAmC,IAAI,iDAAe,CAAC,IAAI,CAAC,CAAC;QACvE,mBAAc,GAAmC,IAAI,iDAAe,CAAC,IAAI,CAAC,CAAC;QAC3E,gBAAW,GAA+B,IAAI,iDAAe,CAAC,IAAI,CAAC,CAAC;IAMxE,CAAC;IAEE,gBAAgB;QACrB,OAAO,IAAI,CAAC,OAAO,CAAC,gBAAgB,EAAE,CAAC;IACzC,CAAC;IAEM,YAAY;QACjB,6DAA6D;QAC7D,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,EAAE;YAC/B,uDAAuD;YACvD,IAAI,CAAC,cAAc,EAAE,CAAC;SACvB;QACD,OAAO,IAAI,CAAC,UAAU,CAAC,YAAY,EAAE,CAAC;IACxC,CAAC;IAEM,gBAAgB;QACrB,6DAA6D;QAC7D,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,EAAE;YACnC,uDAAuD;YACvD,IAAI,CAAC,kBAAkB,EAAE,CAAC;SAC3B;QACD,OAAO,IAAI,CAAC,cAAc,CAAC,YAAY,EAAE,CAAC;IAC5C,CAAC;IAEM,WAAW;QAChB,6DAA6D;QAC7D,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,EAAE;YAC/B,uDAAuD;YACvD,IAAI,CAAC,gBAAgB,EAAE,CAAC;SACzB;QACD,OAAO,IAAI,CAAC,WAAW,CAAC,YAAY,EAAE,CAAC;IACzC,CAAC;IAEO,YAAY,CAAC,WAA0B;QAC7C,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IACpC,CAAC;IAEO,gBAAgB,CAAC,WAA0B;QACjD,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IACxC,CAAC;IAEO,WAAW,CAAC,IAAe;QACjC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC9B,CAAC;IAEO,cAAc;QACpB,IAAI,CAAC,GAAG,CAAC,GAAG,CAAc,KAAK,EAAE,cAAc,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE;YAC/D,MAAM,UAAU,GAAG,IAAI,CAAC,kBAAkB,CAAC,GAAkB,CAAC,CAAC;YAC/D,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;QAChC,CAAC,EAAE,KAAK,CAAC,EAAE;YACT,iDAAiD;YACjD,OAAO,CAAC,KAAK,CAAC,UAAU,KAAK,mDAAmD,CAAC,CAAC;QACpF,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,kBAAkB;QACxB,IAAI,CAAC,GAAG,CAAC,GAAG,CAAc,KAAK,EAAE,kBAAkB,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE;YACnE,MAAM,UAAU,GAAG,IAAI,CAAC,kBAAkB,CAAC,GAAkB,CAAC,CAAC;YAC/D,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC;QACpC,CAAC,EAAE,KAAK,CAAC,EAAE;YACT,iDAAiD;YACjD,OAAO,CAAC,KAAK,CAAC,UAAU,KAAK,mDAAmD,CAAC,CAAC;QACpF,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,gBAAgB;QACtB,IAAI,CAAC,GAAG,CAAC,GAAG,CAAY,KAAK,EAAE,gBAAgB,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE;YAC/D,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;QACxB,CAAC,EAAE,KAAK,CAAC,EAAE;YACT,iDAAiD;YACjD,OAAO,CAAC,KAAK,CAAC,UAAU,KAAK,qDAAqD,CAAC,CAAC;QACtF,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,kBAAkB,CAAC,QAAqB;QAC9C,iDAAiD;QACjD,MAAM,YAAY,GAAkB,EAAE,CAAC;QAEvC,mDAAmD;QACnD,QAAQ,CAAC,eAAe,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;YACrC,MAAM,MAAM,GAAgB;gBAC1B,YAAY,EAAE,GAAG,CAAC,GAAG;gBACrB,OAAO,EAAE,GAAG,CAAC,YAAY;gBACzB,MAAM,EAAE,EAAE;gBACV,IAAI,EAAE,GAAG,CAAC,IAAI;gBACd,WAAW,EAAE,GAAG,CAAC,WAAW;gBAC5B,QAAQ,EAAE,GAAG,CAAC,QAAQ;aACvB,CAAC;YAEF,sBAAsB;YACtB,IAAI,GAAG,CAAC,aAAa,KAAK,sFAAgC,EAAE;gBAC1D,MAAM,CAAC,SAAS,GAAG,IAAI,4EAAsB,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC;aACxE;iBAAM,IAAI,GAAG,CAAC,aAAa,KAAK,sFAAgC,EAAE;gBACjE,MAAM,CAAC,SAAS,GAAG,IAAI,4EAAsB,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;aACrE;YAED,0EAA0E;YAC1E,MAAM,WAAW,GAAG,GAAG,CAAC,WAAW,CAAC;YACpC,MAAM,eAAe,GAAG,QAAQ,CAAC,WAAW,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE;gBAC/D,OAAO,WAAW,CAAC,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;YAC9C,CAAC,CAAC,CAAC;YAEH,qDAAqD;YACrD,eAAe,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;gBAC/B,0DAA0D;gBAC1D,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC;gBAChC,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;oBAC3B,MAAM,YAAY,GAAG,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;wBAC9C,OAAO,GAAG,CAAC,GAAG,KAAK,QAAQ,CAAC;oBAC9B,CAAC,CAAC,CAAC;oBAEH,0BAA0B;oBAC1B,IAAI,YAAY,EAAE;wBAChB,2BAA2B;wBAC3B,MAAM,QAAQ,GAAa;4BACzB,GAAG,EAAE,YAAY,CAAC,GAAG;4BACrB,IAAI,EAAE,YAAY,CAAC,IAAI;4BACvB,OAAO,EAAE,YAAY,CAAC,OAAO;yBAC9B,CAAC;wBAEF,4CAA4C;wBAC5C,IAAI,iFAA2B,IAAI,YAAY,EAAE;4BAC/C,IAAI,CAAC,iBAAiB,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;yBAChD;wBAED,IAAI,QAAQ,IAAI,YAAY,EAAE;4BAC5B,QAAQ,CAAC,MAAM,GAAG,YAAY,CAAC,MAAM,CAAC;yBACvC;wBAGD,6DAA6D;wBAC7D,QAAQ,CAAC,MAAM,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;wBAC9C,IAAI,4EAAsB,IAAI,YAAY,EAAE;4BAC1C,QAAQ,CAAC,MAAM,CAAC,IAAI,GAAG,4EAAsB,CAAC;4BAC9C,QAAQ,CAAC,MAAM,CAAC,KAAK,GAAG,YAAY,CAAC,GAAG,CAAC;yBAC1C;6BAAM,IAAI,mFAA6B,IAAI,YAAY,EAAE;4BACxD,QAAQ,CAAC,MAAM,CAAC,IAAI,GAAG,mFAA6B,CAAC;4BACrD,QAAQ,CAAC,MAAM,CAAC,KAAK,GAAG,YAAY,CAAC,UAAU,CAAC;4BAEhD,IAAI,CAAC,YAAY,CAAC,MAAM,IAAI,YAAY,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,EAAE;gCAC3D,IAAI,CAAC,mBAAmB,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;6BAClD;iCAAM;gCACL,QAAQ,CAAC,MAAM,GAAG,YAAY,CAAC,MAAM,CAAC;6BACvC;yBAEF;6BAAM,IAAI,oFAA8B,IAAI,YAAY,EAAE;4BACzD,QAAQ,CAAC,MAAM,CAAC,IAAI,GAAG,oFAA8B,CAAC;4BACtD,QAAQ,CAAC,MAAM,CAAC,KAAK,GAAG,YAAY,CAAC,WAAW,CAAC;4BAEjD,IAAI,CAAC,YAAY,CAAC,MAAM,IAAI,YAAY,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,EAAE;gCAC3D,IAAI,CAAC,mBAAmB,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;6BAClD;yBACF;6BAAM,IAAI,6EAAuB,IAAI,YAAY,EAAE;4BAClD,QAAQ,CAAC,MAAM,CAAC,IAAI,GAAG,6EAAuB,CAAC;4BAC/C,QAAQ,CAAC,MAAM,CAAC,KAAK,GAAG,YAAY,CAAC,IAAI,CAAC;yBAC3C;6BAAM,IAAI,4EAAsB,IAAI,YAAY,EAAE;4BACjD,QAAQ,CAAC,MAAM,CAAC,IAAI,GAAG,4EAAsB,CAAC;4BAC9C,QAAQ,CAAC,MAAM,CAAC,KAAK,GAAG,YAAY,CAAC,GAAG,CAAC;yBAC1C;6BAAM,IAAI,4EAAsB,IAAI,YAAY,EAAE;4BACjD,QAAQ,CAAC,MAAM,CAAC,IAAI,GAAG,4EAAsB,CAAC;4BAC9C,QAAQ,CAAC,MAAM,CAAC,KAAK,GAAG,YAAY,CAAC,GAAG,CAAC;yBAC1C;wBAED,mCAAmC;wBACnC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;qBAC9B;gBACH,CAAC,CAAC,CAAC;YACL,CAAC,CAAC,CAAC;YAEH,0CAA0C;YAC1C,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC5B,CAAC,CAAC,CAAC;QAEH,OAAO,YAAY,CAAC;IACtB,CAAC;IAED,iBAAiB,CAAC,YAA+B,EAAE,QAAkB;QACnE,QAAQ,CAAC,QAAQ,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAC,4CAA4C;IACzF,CAAC;IAED,mBAAmB,CAAC,YAA+B,EAAE,QAAkB;QACrE,QAAQ,CAAC,MAAM,GAAG,EAAE,CAAC;QAErB,IAAI,GAAG,CAAC;QACR,IAAI,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,UAAU,EAAE;YAC5B,GAAG,GAAG,YAAY,CAAC,UAAU,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC;SACpD;aAAM,IAAI,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,WAAW,EAAE;YACpC,GAAG,GAAG,YAAY,CAAC,WAAW,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC;SACrD;aAAM;YACL,GAAG,GAAG,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC;SACzB;QAED,GAAG,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE;YAE3B,IAAI,OAAO,GAAG,SAAS,CAAC;YACxB,IAAI,EAAE,CAAC,YAAY,EAAE;gBACnB,IAAI,EAAE,CAAC,YAAY,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE;oBACxC,IAAI,EAAE,GAAG,EAAE,CAAC,YAAY,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;oBAC1E,IAAI,EAAE,CAAC,MAAM;wBACX,OAAO,GAAG,EAAE,CAAC;iBAChB;aAEF;YAED,MAAM,WAAW,GAAG;gBAClB,OAAO,EAAE,IAAI,6DAAW,CAAC;oBACvB,QAAQ,EAAE,kBAAkB;iBAC7B,CAAC;aACH,CAAC;YAEF,IAAI,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,eAAe,EAAE,EAAE,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE;gBACvD,IAAI,GAAG,GAAG,EAAE,CAAC,GAAG,GAAG,SAAS,CAAC;gBAE7B,IAAI,CAAC,IAAI,CAAC,GAAG,CAAM,GAAG,EAAE,WAAW,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE;;oBACnD,IAAI,CAAC,GAAG,CAAC,WAAW,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,QAAQ,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,IAAI,GAAG,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,KAAK,QAAQ,EAAE;wBACjI,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;wBACjB,OAAO;qBACR;oBAED,QAAQ,CAAC,MAAM,CAAC,IAAI,CAClB;wBACE,KAAK,EAAE,YAAY,CAAC,IAAI;wBACxB,OAAO,EAAE,EAAE,MAAM,EAAE,eAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,WAAW,0CAAE,QAAQ,0CAAE,MAAM,EAAE;qBACxD,CAAC,CAAC;gBACP,CAAC,EAAE,GAAG,CAAC,EAAE;oBACP,QAAQ,CAAC,MAAM,GAAG,SAAS,CAAC;gBAC9B,CAAC,CAAC;aACH;iBAAM;gBACL,IAAI,GAAG,GAAG,EAAE,CAAC,GAAG,GAAG,0BAA0B,CAAC;gBAE9C,IAAI,CAAC,IAAI,CAAC,GAAG,CAAM,GAAG,EAAE,WAAW,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE;oBACnD,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE;wBACf,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;wBACjB,OAAO;qBACR;oBAED,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;wBAEzB,IAAI,OAAO,IAAI,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,GAAG,EAAE,CAAC,CAAC,EAAE;4BACtD,OAAO;yBACR;wBAED,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE;4BAChC,IAAI,CAAC,QAAQ,CAAC,MAAM;gCAClB,QAAQ,CAAC,MAAM,GAAG,EAAE,CAAC;4BACvB,QAAQ,CAAC,MAAM,CAAC,IAAI,CAClB;gCACE,KAAK,EAAE,UAAU,CAAC,KAAK;oCACrB,KAAK,CAAC,IAAI;oCACV,YAAY,CAAC,IAAI;gCACnB,OAAO,EAAE,EAAE,GAAG,EAAE,yBAAyB,UAAU,CAAC,SAAS,EAAE,EAAE;6BAClE,CAAC,CAAC;wBACP,CAAC,CAAC;oBACJ,CAAC,CAAC;gBACJ,CAAC,EAAE,GAAG,CAAC,EAAE;oBACP,QAAQ,CAAC,MAAM,GAAG,SAAS,CAAC;gBAC9B,CAAC,CAAC;aACH;YACD,iDAAiD;YAEjD,0DAA0D;YAC1D,uBAAuB;YACvB,wBAAwB;YACxB,cAAc;YACd,MAAM;YAEN,kCAAkC;YAElC,gEAAgE;YAChE,gBAAgB;YAChB,QAAQ;YAER,2CAA2C;YAC3C,8BAA8B;YAC9B,gCAAgC;YAChC,8BAA8B;YAC9B,YAAY;YACZ,uCAAuC;YACvC,4BAA4B;YAC5B,iCAAiC;YACjC,8EAA8E;YAC9E,cAAc;YACd,SAAS;YACT,OAAO;YACP,cAAc;YACd,iCAAiC;YACjC,KAAK;QAEP,CAAC,CAAC;IACJ,CAAC;;oEA3SU,UAAU;2GAAV,UAAU,WAAV,UAAU,mBAFT,MAAM;;;;;;;;;;;;;;;;;;;ACJwC;;AAUrD,MAAM,iBAAiB;IAiB5B;QAbA,YAAO,GAAY,KAAK,CAAC;QAEzB,eAAU,GAAQ,SAAS,CAAC;QAEpB,gBAAW,GAAiB,IAAI,yCAAO,EAAE,CAAC;QAE1C,eAAU,GAAyB,IAAI,iDAAe,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;QACvE,aAAQ,GAAyB,IAAI,iDAAe,CAAC,CAAC,CAAC,CAAC;QACxD,eAAU,GAAyB,IAAI,iDAAe,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAG7E,cAAS,GAAY,KAAK,CAAC;QAIzB,8DAA8D;QAC9D,MAAM,CAAC,4BAA4B,GAAG,IAAI,CAAC,4BAA4B,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACnF,MAAM,CAAC,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC3D,MAAM,CAAC,iBAAiB,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAE7D,MAAM,CAAC,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC,CAAC;IAE5E,CAAC;IAED,YAAY;QACV,OAAO,IAAI,CAAC,UAAU,CAAC,YAAY,EAAE,CAAC;IACxC,CAAC;IAED,YAAY;QACV,OAAO,IAAI,CAAC,UAAU,CAAC,YAAY,EAAE,CAAC;IACxC,CAAC;IAED,UAAU;QACR,OAAO,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE,CAAC;IACtC,CAAC;IAEO,YAAY,CAAC,SAAc;QACjC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAClC,CAAC;IAEO,YAAY,CAAC,SAAc;QACjC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAClC,CAAC;IAEO,UAAU,CAAC,OAAY;QAC7B,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC9B,CAAC;IAED,cAAc,CAAC,GAAG;QAEhB,wBAAwB;QACxB,IAAI,CAAC,GAAG,CAAC,IAAI;YACX,OAAO;QAET,iCAAiC;QACjC,IAAI,GAAG,CAAC,IAAI,CAAC,MAAM,KAAK,KAAK;YAC3B,OAAO;QAET,kEAAkE;QAElE,QAAQ,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE;YACpB,KAAK,oBAAoB;gBACvB;oBACE,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;iBACrB;gBAAA,CAAC;gBAAC,MAAM;YACX,KAAK,gBAAgB;gBACnB;oBACE,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;iBACtB;gBAAA,CAAC;gBAAC,MAAM;YACX,KAAK,kBAAkB;gBACrB;iBACC;gBAAA,CAAC;gBAAC,MAAM;YACX,KAAK,eAAe;gBAClB;oBACE,yEAAyE;oBACzE,IAAI;oBACJ,wBAAwB;oBACxB,wNAAwN;oBACxN,iCAAiC;oBACjC,aAAa;oBACb,IAAI;oBACJ,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC;oBAChB,IAAI,CAAC,UAAU,GAAG,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC;oBAChC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;iBACxC;gBAAA,CAAC;gBAAC,MAAM;YACX,KAAK,mBAAmB;gBACtB;oBACE,MAAM,SAAS,qBAAQ,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAE,CAAC;oBAC9C,MAAM,GAAG,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;oBAC5F,IAAI,IAAI,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,OAAO,EAAE,CAAC,OAAO,EAAE,CAAC;oBAC/C,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;oBAC7B,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;oBACvB,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;iBACvB;gBAAA,CAAC;gBAAC,MAAM;YACX,KAAK,eAAe;gBAClB;iBAEC;gBAAA,CAAC;gBAAC,MAAM;YACX,KAAK,cAAc;gBACjB;iBAEC;gBAAA,CAAC;gBAAC,MAAM;YACX,OAAO,CAAC,CAAC;aACR;SACF;IAEH,CAAC;IAEM,cAAc,CAAC,KAAa;QACjC,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;IAC3B,CAAC;IAEM,cAAc;QACnB,OAAO,IAAI,CAAC,WAAW,CAAC;IAC1B,CAAC;IAEM,YAAY,CAAC,SAAkB;QACpC,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAC7B,CAAC;IAEM,YAAY;QACjB,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IAEM,aAAa,CAAC,aAA4B;QAC/C,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;QACnC,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC;IAClC,CAAC;IAEM,gBAAgB;QACrB,OAAO,IAAI,CAAC,aAAa,CAAC;IAC5B,CAAC;IAEM,WAAW,CAAC,QAAmB;QACpC,IAAI,CAAC,cAAc,CAAC,gBAAgB,EAAE,QAAQ,CAAC;IACjD,CAAC;IAEM,SAAS,CAAC,IAAY,EAAE,SAA6C,EAAE,WAAmB,EAAE,OAAe,EAAE,OAAe;QACjI,MAAM,CAAC,GAAG,GAAG,EAAE,KAAK,EAAE,EAAE,EAAE,oBAAoB,EAAE,IAAI,EAAE,CAAC;QACvD,MAAM,CAAC,SAAS,CAAC,IAAI,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC;IAC9H,CAAC;IAEM,UAAU;QACf,IAAI,MAAM,CAAC,MAAM;YAAE,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;IAC9C,CAAC;IAED,oCAAoC;IAC5B,WAAW,CAAC,MAAqB;QACvC,MAAM,CAAC,WAAW,CAAC,EAAE,WAAW,EAAE,KAAK,EAAE,GAAG,EAAE,cAAc,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IACxG,CAAC;IAEO,cAAc,CAAC,OAAe,EAAE,IAAS;QAC/C,MAAM,CAAC,WAAW,CAAC,EAAE,WAAW,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IAC/F,CAAC;IAED,wDAAwD;IAExD,4BAA4B,CAAC,GAAW,EAAE,YAAoB;QAC5D,KAAK,IAAI,GAAG,IAAI,IAAI,CAAC,aAAa,EAAE;YAClC,IAAI,GAAG,CAAC,YAAY,KAAK,GAAG,EAAE;gBAC5B,GAAG,CAAC,OAAO,GAAG,YAAY,CAAC;gBAE3B,IAAI,IAAI,GAAG,EAAE,YAAY,EAAE,GAAG,CAAC,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,CAAC;gBAC1E,IAAI,CAAC,cAAc,CAAC,4BAA4B,EAAE,IAAI,CAAC,CAAC;gBACxD,MAAM;aACP;SACF;IACH,CAAC;IAGD,+HAA+H;IAC/H,gBAAgB,CAAC,GAAW;QAC1B,KAAK,IAAI,GAAG,IAAI,IAAI,CAAC,aAAa,EAAE;YAClC,KAAK,IAAI,KAAK,IAAI,GAAG,CAAC,MAAM,EAAE;gBAC5B,IAAI,KAAK,CAAC,GAAG,KAAK,GAAG,EAAE;oBACrB,GAAG,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;oBAC1B,IAAI,IAAI,GAAG,CAAC,EAAE,YAAY,EAAE,GAAG,CAAC,YAAY,EAAE,SAAS,EAAE,GAAG,CAAC,SAAS,EAAE,CAAC,CAAC;oBAC1E,IAAI,CAAC,cAAc,CAAC,yBAAyB,EAAE,IAAI,CAAC,CAAC;iBACtD;aACF;SACF;IACH,CAAC;IAED,sDAAsD;IACtD,iBAAiB,CAAC,GAAW;QAC3B,KAAK,IAAI,GAAG,IAAI,IAAI,CAAC,aAAa,EAAE;YAClC,KAAK,IAAI,KAAK,IAAI,GAAG,CAAC,MAAM,EAAE;gBAC5B,IAAI,KAAK,CAAC,GAAG,KAAK,GAAG,EAAE;oBACrB,GAAG,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM;oBAEjC,IAAI,IAAI,GAAG,CAAC,EAAE,YAAY,EAAE,GAAG,CAAC,YAAY,EAAE,SAAS,EAAE,GAAG,CAAC,SAAS,EAAE,CAAC,CAAC;oBAC1E,IAAI,CAAC,cAAc,CAAC,yBAAyB,EAAE,IAAI,CAAC,CAAC;iBACtD;aAEF;SACF;IACH,CAAC;IAED,gBAAgB,CAAC,UAAsB;QACrC,IAAI,CAAC,cAAc,CAAC,sBAAsB,EAAE,UAAU,CAAC,CAAC;IAC1D,CAAC;IAED,WAAW,CAAC,KAAa;QACvB,MAAM,QAAQ,GAAG,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;QACvD,IAAI,CAAC,cAAc,CAAC,sBAAsB,EAAE,EAAE,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;IAC5F,CAAC;IAED,mBAAmB;QAEjB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACpB,IAAI,CAAC,cAAc,CAAC,sBAAsB,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC;QACnE,OAAO,IAAI,CAAC,WAAW,CAAC,YAAY,EAAE,CAAC;IACzC,CAAC;IAED,SAAS;QACP,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAED,QAAQ;QACN,OAAO,IAAI,CAAC,UAAU,IAAI,SAAS,CAAC;IACtC,CAAC;IAED,WAAW;QACT,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC;QAC3B,IAAI,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC;QAC1B,IAAI,CAAC,cAAc,CAAC,SAAS,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;QAC1D,UAAU,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,cAAc,CAAC,aAAa,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;QAC1E,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;QAC5B,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;QACrB,OAAO,GAAG,CAAC;IACb,CAAC;IAED,UAAU;QACR,IAAI,CAAC,cAAc,CAAC,SAAS,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;IAC5D,CAAC;IAED,UAAU;QACR,IAAI,CAAC,cAAc,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC;IAC/C,CAAC;IAED,WAAW;QACT,IAAI,CAAC,cAAc,CAAC,gBAAgB,EAAE,SAAS,CAAC,CAAC;IACnD,CAAC;IAED,QAAQ,CAAC,GAAQ;QACf,IAAI,CAAC,cAAc,CAAC,aAAa,EAAE,GAAG,CAAC,CAAC;IAC1C,CAAC;IAEM,QAAQ;QACb,IAAI,CAAC,cAAc,CAAC,gBAAgB,EAAE,IAAI,CAAC,CAAC;IAC9C,CAAC;IAEM,OAAO,CAAC,IAAc;QAC3B,OAAO,CAAC,GAAG,CAAC,sBAAsB,EAAE,IAAI,CAAC;QAGzC,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,GAAG,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,EAAC,CAAC,CAAC,CAAC;QAEjD,IAAI,CAAC,cAAc,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC;QAEvC,OAAO,IAAI,CAAC,WAAW,CAAC,YAAY,EAAE,CAAC;IACzC,CAAC;IAEM,QAAQ,CAAC,KAAU;QACxB,OAAO,CAAC,GAAG,CAAC,sBAAsB,EAAE,KAAK,CAAC;QAC1C,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;YACpB,KAAK,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;SACpB;QACD,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACpB,IAAI,OAAO,GAAG,IAAI,EAAE,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAC3D,IAAI,CAAC,cAAc,CAAC,gBAAgB,EAAE,OAAO,CAAC,CAAC;QAC/C,OAAO,IAAI,CAAC,WAAW,CAAC,YAAY,EAAE,CAAC;IACzC,CAAC;IAEM,cAAc,KAAK,OAAO,IAAI,CAAC,WAAW,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC;IAE5D,eAAe,CAAC,KAAU;QAC/B,IAAI,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QAEpC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACpB,IAAI,CAAC,cAAc,CAAC,gBAAgB,EAAE,OAAO,CAAC,CAAC;QAC/C,OAAO,IAAI,CAAC,WAAW,CAAC,YAAY,EAAE,CAAC;IACzC,CAAC;;kFA9RU,iBAAiB;kHAAjB,iBAAiB,WAAjB,iBAAiB,mBAFhB,MAAM;;;;;;;;;;;;;;;;;;ACZM;;AAKnB,MAAM,iBAAiB;IAK5B;QAHO,mBAAc,GAAG,uqBAAuqB,CAAC;QACzrB,aAAQ,GAAG,kQAAkQ,CAAC;IAErQ,CAAC;IAEV,uBAAuB,CAAC,KAAU;QACvC,MAAM,MAAM,GAAG,IAAI,+CAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC7C,MAAM,IAAI,GAAG,IAAI,+CAAU,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QACjD,MAAM,MAAM,qBAAQ,KAAK,CAAE,CAAC;QAE5B,sDAAiB,GAAG,CAAC,GAAG,EAAE,EAAE;YACxB,MAAM,IAAI,KAAK,CAAC,UAAU,GAAG,GAAG,CAAC,CAAC;QACtC,CAAC,CAAC;QAEF,KAAK,MAAM,OAAO,IAAI,MAAM,CAAC,QAAQ,EAAE;YACrC,KAAK,MAAM,WAAW,IAAI,OAAO,CAAC,QAAQ,CAAC,WAAW,EAAE;gBACtD,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,WAAW,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;oBACvD,MAAM,SAAS,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC;oBACrC,MAAM,aAAa,GAAG,oDAAe,CAAC,MAAM,EAAE,IAAI,EAAE,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC;oBACxE,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC;iBACzD;aACF;SACF;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;;kFA3BU,iBAAiB;kHAAjB,iBAAiB,WAAjB,iBAAiB,mBAFhB,MAAM;;;;;;;;;;;;;;;;;;ACKb,MAAM,aAAa;IAUxB,gBAAc,CAAC;IAEf,QAAQ;IAER,CAAC;IAED,WAAW,CAAC,IAAS;QACnB,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;IAC7B,CAAC;IAED,WAAW;QACT,OAAO,IAAI,CAAC,cAAc,CAAC;IAC7B,CAAC;IAED,aAAa,CAAC,IAAS;QACrB,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IACrC,CAAC;IAED,aAAa;QACX,OAAO,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC;IACxC,CAAC;IAED,iBAAiB,CAAC,IAAS;QACzB,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;IAC7B,CAAC;IAED,iBAAiB;QACf,OAAO,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC;IACpC,CAAC;IAED,oBAAoB,CAAC,IAAS;QAC5B,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,GAAG;YAChD,OAAO,GAAG,CAAC,MAAM,CAAC,aAAa,KAAK,UAAU;QAChD,CAAC,CAAC,CAAC;IACL,CAAC;IAED,oBAAoB;QAClB,OAAO,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC;IACvC,CAAC;IAED,oBAAoB,CAAC,IAAS;QAC5B,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;IAChC,CAAC;IAED,oBAAoB;QAClB,OAAO,IAAI,CAAC,iBAAiB,CAAC;IAChC,CAAC;IAED,qBAAqB,CAAC,IAAS;QAC7B,IAAI,CAAC,kBAAkB,GAAG,IAAI;IAChC,CAAC;IAED,qBAAqB;QACnB,OAAO,IAAI,CAAC,kBAAkB,CAAC;IACjC,CAAC;IAED,cAAc,CAAC,IAAS;QACtB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;IAC1B,CAAC;IAED,cAAc;QACZ,OAAO,IAAI,CAAC,WAAW,CAAC;IAC1B,CAAC;;0EAxEU,aAAa;8GAAb,aAAa,WAAb,aAAa,mBAFZ,MAAM;;;;;;;;;;;;;;;;;;;;;;ACP2D;;;;;;;;AAQxE,MAAM,qBAAqB;IAWhC,YAAoB,MAAc;QAAd,WAAM,GAAN,MAAM,CAAQ;QAHxB,qBAAgB,GAAsB,IAAI,uDAAY,EAAE,CAAC;IAG9B,CAAC;IAEtC,QAAQ;QACN,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC7B,CAAC;IAED,cAAc,CAAC,CAAM;QACnB,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC5C,CAAC;IAED,WAAW,CAAC,EAAO;QACjB,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,yBAAyB,EAAE,cAAc,IAAI,CAAC,SAAS,mBAAmB,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC;IAC7H,CAAC;;0FAvBU,qBAAqB;mHAArB,qBAAqB;QCRlC,yEACkF;QAChF,yEACuB;QACrB,8EAAwF;QACtF,qFAAiD;QAC/C,oFAA6C;QAAA,uDAC7C;QAAA,4DAAiB;QACjB,yEAAsF;QACpF,8EAA2C;QAAjC,qJAAS,0BAAsB,IAAC;QAAC,iEAAM;QAAA,4DAAW;QAC9D,4DAAM;QACR,4DAAkB;QAClB,mFAAkB;QAChB,uEAAK;QACH,qEAAG;QAAA,2EAA4B;QAAA,0EAAc;QAAA,4DAAO;QAAA,2EAA8B;QAC9E,wDAAyB;QAAA,4DAAO;QAAA,4DAAI;QACxC,qEAAG;QAAA,2EAA4B;QAAA,mFAAuB;QAAA,4DAAO;QAAA,2EAA8B;QACvF,wDAAyB;QAAA,4DAAO;QAAA,4DAAI;QACxC,qEAAG;QAAA,2EAA4B;QAAA,mEAAO;QAAA,4DAAO;QAAA,2EAA8B;QAAC,wDAA2B;QAAA,4DAAO;QAC9G,4DAAI;QACJ,qEAAG;QAAA,2EAA4B;QAAA,uEAAW;QAAA,4DAAO;QAAA,2EAA8B;QAC3E,wDAAkC;QAAA,4DAAO;QAAA,4DAAI;QACjD,uEAAK;QACH,0EAAkF;QAChF,yEAA2D;QAAnC,yIAAS,gCAAwB,IAAC;QAAC,0EAAQ;QAAA,wEAAY;QAAA,4DAAS;QAAA,4DAAI;QAC9F,4DAAM;QACR,4DAAM;QACR,4DAAM;QACR,4DAAmB;QACrB,4DAAW;QACb,4DAAM;QACR,4DAAM;;QAzB+C,0DAC7C;QAD6C,4FAC7C;QACyB,0DAA4D;QAA5D,8KAA4D;QAO/E,0DAAyB;QAAzB,oGAAyB;QAEzB,0DAAyB;QAAzB,oGAAyB;QAC+C,0DAA2B;QAA3B,sGAA2B;QAGnG,0DAAkC;QAAlC,6GAAkC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACpBS;AACgB;;;;;;;;;;;;;;;;ICiB/D,iFAA4D;IAC1D,uDACF;IAAA,4DAAa;;;IAF0B,gFAAoB;IACzD,0DACF;IADE,yFACF;;;IAMA,iFAA2D;IACzD,uDACF;IAAA,4DAAa;;;IAF0B,+EAAmB;IACxD,0DACF;IADE,wFACF;;ADfH,MAAM,6BAA6B;IAMxC,YACU,SAAsD,EACtD,YAA0B,EAC1B,MAAc,EACd,MAA4B,EACJ,SAAiB;QAJzC,cAAS,GAAT,SAAS,CAA6C;QACtD,iBAAY,GAAZ,YAAY,CAAc;QAC1B,WAAM,GAAN,MAAM,CAAQ;QACd,WAAM,GAAN,MAAM,CAAsB;QACJ,cAAS,GAAT,SAAS,CAAQ;QAKnD,6BAAwB,GAAgB,IAAI,uDAAW,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,+DAAmB,CAAC,CAAC;QAC/G,4BAAuB,GAAgB,IAAI,uDAAW,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE,+DAAmB,CAAC,CAAC;QAE7G,SAAI,GAAU,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;QAC7B,UAAK,GAAU,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;IAR1B,CAAC;IAUL,QAAQ;QACN,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,qBAAqB,CAAC,CAAC;QAEjE,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC,SAAS,CAAC,CAAC,GAAG,EAAE,EAAE;YACzD,IAAI,CAAC,YAAY,GAAG,GAAG,CAAC,MAAM,CAAC;YAC/B,IAAI,CAAC,sBAAsB,EAAE,CAAC;QAChC,CAAC,CAAC,CAAC;IACL,CAAC;IAED,WAAW;QACT,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC;IAC/B,CAAC;IAED,QAAQ;QACN,4DAA4D;QAC5D,MAAM,IAAI,GAAQ,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAC3C,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;QACvB,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,8BAA8B,IAAI,CAAC,KAAK,SAAS,IAAI,CAAC,IAAI,YAAY,IAAI,CAAC,OAAO,cAAc,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,wBAAwB;IACvK,CAAC;IAED,OAAO;QACL,IAAI,IAAI,CAAC,wBAAwB,IAAI,IAAI,CAAC,wBAAwB,CAAC,KAAK;YACtE,IAAI,CAAC,uBAAuB,IAAI,IAAI,CAAC,uBAAuB,CAAC,KAAK,EAAE;YACpE,OAAO,IAAI,CAAC;SACb;aAAM;YACL,OAAO,KAAK,CAAC;SACd;IACH,CAAC;IAED,SAAS;QACP,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;IACzB,CAAC;IAED,SAAS;QACP,IAAI,CAAC,uBAAuB,CAAC,KAAK,EAAE,CAAC;QACrC,IAAI,CAAC,aAAa,EAAE,CAAC;QACrB,IAAI,CAAC,uBAAuB,CAAC,MAAM,EAAE,CAAC;IACxC,CAAC;IAED,oFAAoF;IACpF,sBAAsB;QACpB,MAAM,UAAU,GAAG,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE;YACpE,OAAO,EAAE,IAAI,EAAE,GAAG,CAAC,SAAS,EAAE,CAAC;QACjC,CAAC,CAAC,CAAC,CAAC;QACJ,IAAI,CAAC,IAAI,GAAG,UAAU,CAAC;QACvB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACtD,CAAC;IAED,aAAa;QACX,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE;YACvE,OAAO,GAAG,CAAC,SAAS,KAAK,IAAI,CAAC,wBAAwB,CAAC,KAAK,CAAC;QAC/D,CAAC,CAAC,CAAC,CAAC;QAEJ,IAAI,CAAC,YAAY,EAAE;YACjB,IAAI,CAAC,KAAK,GAAG,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;YAC5B,OAAO;SACR;QAED,MAAM,KAAK,GAAG,YAAY,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;YAChD,OAAO,EAAE,IAAI,EAAE,GAAG,CAAC,QAAQ,EAAE,CAAC;QAChC,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACvD,CAAC;IAEO,iBAAiB;;QACvB,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE;;YACvE,OAAO,GAAG,CAAC,SAAS,MAAK,UAAI,CAAC,wBAAwB,0CAAE,KAAK,EAAC;QAChE,CAAC,CAAC,CAAC,CAAC;QACJ,MAAM,WAAW,GAAG,YAAY,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE;;YACtD,OAAO,GAAG,CAAC,QAAQ,MAAK,UAAI,CAAC,uBAAuB,0CAAE,KAAK,EAAC;QAC9D,CAAC,CAAC,CAAC,CAAC;QAEJ,MAAM,IAAI,GAA2B;YACnC,KAAK,EAAE,WAAI,CAAC,wBAAwB,0CAAE,KAAK,KAAI,IAAI;YACnD,IAAI,EAAE,WAAI,CAAC,uBAAuB,0CAAE,KAAK,KAAI,IAAI;YACjD,OAAO,EAAE,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,MAAM;YAC5B,SAAS,EAAE,IAAI,CAAC,SAAS;SAC1B,CAAC;QAEF,OAAO,IAAI,CAAC;IACd,CAAC;;0GAvGU,6BAA6B,unBAW9B,qEAAe;2HAXd,6BAA6B;;;;;;QCb1C,wEAAqB;QACnB,iFAA2D;QACzD,qFAA8C;QAC5C,uEAAM;QAAA,2EAAgB;QAAA,4DAAO;QAC/B,4DAAkB;QACpB,4DAAc;QAChB,4DAAK;QAGL,yEAAmG;QACjG,yEACwC;QACtC,wEAAuB;QAAA,oHAAyD;QAAA,4DAAK;QACrF,sEAAK;QACH,qFAA4C;QAC1C,6EAAW;QAAA,oFAAwB;QAAA,4DAAY;QAC/C,oFACkC;QAAhC,8KAAmB,eAAW,IAAC;QAC/B,yIAEa;QACf,4DAAa;QACf,4DAAiB;QACjB,qFAA4C;QAC1C,6EAAW;QAAA,2EAAe;QAAA,4DAAY;QACtC,sFAAsF;QACpF,yIAEa;QACf,4DAAa;QACf,4DAAiB;QACnB,4DAAM;QAGN,2EAAoE;QAClE,2EAA4D;QAC1D,8EACoD;QAAtB,sJAAS,eAAW,IAAC;QAAC,kEAAM;QAAA,4DAAS;QACrE,4DAAM;QACN,2EAA4D;QAC1D,8EACoG;QAArC,sJAAS,cAAU,IAAC;QAAiB,wEAC1F;QAAA,4DAAS;QACrB,4DAAM;QACR,4DAAM;QAER,4DAAM;QACR,4DAAM;;QA/BkD,2DAAwC;QAAxC,qGAAwC;QAExD,0DAAO;QAAP,6EAAO;QAOO,0DAAuC;QAAvC,oGAAuC;QACtD,0DAAQ;QAAR,8EAAQ;QAc/B,0DAAuB;QAAvB,oFAAuB;;;;;;;;;;;;;;;;;;;;;;ACxCkC;;;;;;AAQlE,MAAM,6BAA6B;IAIxC,YACkC,IAAS,EACjC,SAAsD,EACtD,MAAc;QAFU,SAAI,GAAJ,IAAI,CAAK;QACjC,cAAS,GAAT,SAAS,CAA6C;QACtD,WAAM,GAAN,MAAM,CAAQ;IACpB,CAAC;IAEL,QAAQ;IAER,CAAC;IAGD,cAAc;QACZ,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,wBAAwB,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;QACzE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC7B,CAAC;IAED,aAAa;QACX,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC7B,CAAC;;0GAtBU,6BAA6B,kEAK9B,qEAAe;2HALd,6BAA6B;QCR1C,yEAAmG;QACjG,yEACwC;QACtC,sEAAK;QACH,oEAAG;QACD,kHACF;QAAA,4DAAI;QACN,4DAAM;QAEN,yEAAoE;QAClE,yEAA4D;QAC1D,4EACyD;QAA3B,qJAAS,oBAAgB,IAAC;QAAC,8DAAG;QAAA,4DAAS;QACvE,4DAAM;QACN,yEAA4D;QAC1D,6EAEkB;QAD6C,sJAAS,mBAAe,IAAC;QACtE,8DAAE;QAAA,4DAAS;QAC/B,4DAAM;QACR,4DAAM;QACR,4DAAM;QACR,4DAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACnBmF;AACA;AAGb;AACD;;;;;;;;;;;;;;;;;;ICuBvE,0EACwD;IAEtD,0EACyG;IAEvG,+EAAmG;IACjG,kFAAiB;IACf,qFAA8D;IAC5D,uEAAM;IAAA,8DAAG;IAAA,4DAAO;IAChB,qEAE2D;IAC7D,4DAAiB;IACnB,4DAAkB;IAClB,uFAA4C;IAC1C,uFAEyC;IADvC,+VAAqC;IACE,4DAAe;IAC1D,4DAAmB;IACrB,4DAAW;IAEb,4DAAM;IAER,4DAAM;;IAbM,0DAAmL;IAAnL,4OAAmL;IAKhK,0DAA0B;IAA1B,mFAA0B;;AD7BtD,MAAM,uBAAuB;IAkBlC,YACU,YAA0B,EAC1B,GAAe,EACf,MAAc,EACd,MAAiB,EACjB,KAAqB;QAJrB,iBAAY,GAAZ,YAAY,CAAc;QAC1B,QAAG,GAAH,GAAG,CAAY;QACf,WAAM,GAAN,MAAM,CAAQ;QACd,WAAM,GAAN,MAAM,CAAW;QACjB,UAAK,GAAL,KAAK,CAAgB;QAhB/B,cAAS,GAAG,IAAI,CAAC;QAKjB,gBAAW,GAAG,SAAS;QAarB,IAAI,CAAC,QAAQ,EAAE,CAAC;IAClB,CAAC;IAED,QAAQ;QACN,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC;QAC5D,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,oBAAoB,CAAC,CAAC;QAEpE,eAAe;QACf,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE;YACxC,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;YACpC,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;YAClC,IAAI,CAAC,SAAS,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,WAAW,EAAE,KAAK,MAAM,CAAC,CAAC;YAC9D,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC;QACjD,CAAC,CAAC,CAAC;QAEH,kCAAkC;QAClC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;YACnB,IAAI,CAAC,mBAAmB,EAAE,CAAC;SAC5B;QAED,oCAAoC;QACpC,IAAI,IAAI,CAAC,SAAS,EAAE;YAClB,IAAI,CAAC,GAAG,CAAC,IAAI,CAAM,SAAS,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE;gBACzE,IAAI,OAAO,IAAI,OAAO,CAAC,MAAM,EAAE;oBAC7B,IAAI,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;oBACxB,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC;iBAChC;YACH,CAAC,CAAC,CAAC;SACJ;IAEH,CAAC;IAED,cAAc,CAAC,MAAW;QACxB,IAAI,YAAY,GAAQ,EAAE,CAAC;QAC3B,YAAY,CAAC,IAAI,GAAG,MAAM,CAAC,oBAAoB,CAAC,aAAa,CAAC;QAC9D,YAAY,CAAC,MAAM,GAAG,EAAE,CAAC;QACzB,YAAY,CAAC,MAAM,CAAC,cAAc,GAAG,MAAM,CAAC,oBAAoB,CAAC,eAAe,CAAC;QACjF,YAAY,CAAC,MAAM,CAAC,iBAAiB,GAAG,MAAM,CAAC,oBAAoB,CAAC,mBAAmB,CAAC;QACxF,YAAY,CAAC,MAAM,CAAC,qBAAqB,GAAG,MAAM,CAAC,oBAAoB,CAAC,uBAAuB,CAAC;QAChG,YAAY,CAAC,MAAM,CAAC,YAAY,GAAG,MAAM,CAAC,gBAAgB,CAAC,aAAa,CAAC;QACzE,YAAY,CAAC,MAAM,CAAC,aAAa,GAAG,gGAAyB,CAAC,MAAM,CAAC,gBAAgB,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC;QACzG,YAAY,CAAC,MAAM,CAAC,oBAAoB,GAAG,MAAM,CAAC,gBAAgB,CAAC,sBAAsB,CAAC;QAC1F,YAAY,CAAC,MAAM,CAAC,YAAY,GAAG,MAAM,CAAC,gBAAgB,CAAC,aAAa,CAAC;QACzE,YAAY,CAAC,MAAM,CAAC,SAAS,GAAG,MAAM,CAAC,UAAU,CAAC;QAClD,YAAY,CAAC,MAAM,CAAC,YAAY,GAAG,MAAM,CAAC,aAAa,CAAC;QACxD,YAAY,CAAC,MAAM,CAAC,YAAY,GAAG,MAAM,CAAC,aAAa,CAAC;QACxD,IAAI,IAAI,CAAC,SAAS,EAAE;YAClB,YAAY,CAAC,MAAM,CAAC,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,QAAQ,CAAC;SACjE;QAED,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,mGAAsB,EAAE;YACzD,KAAK,EAAE,OAAO;YACd,IAAI,EAAE,oBAAoB;YAC1B,YAAY,EAAE,IAAI;SACnB,CAAC,CAAC;QACH,IAAI,CAAC,GAAG,CAAC,IAAI,CAAM,UAAU,EAAE,QAAQ,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,SAAS,EAAE,SAAS,EAAE,YAAY,EAAE,EAAE,IAAI,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE;YACvH,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YACtB,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YACpB,SAAS,CAAC,KAAK,EAAE,CAAC;YAClB,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE;gBACjB,+CAA+C;gBAC/C,mCAAmC;aACpC;iBACI;gBACH,qBAAqB;gBACrB,oDAAoD;gBACpD,oBAAoB;gBACpB,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;aAClC;QACH,CAAC,EAAE,KAAK,CAAC,EAAE;YACT,SAAS,CAAC,KAAK,EAAE,CAAC;YAClB,oCAAoC;YACpC,2FAA2F;QAC7F,CAAC,CAAC,CAAC;IACL,CAAC;IAED,OAAO,CAAC,CAAM;QACZ,MAAM,oBAAoB,GAAG,IAAI,CAAC,gBAAgB,CAAC,UAAU,EAAE,CAAC;QAChE,MAAM,gBAAgB,GAAG,IAAI,CAAC,YAAY,CAAC,UAAU,EAAE,CAAC;QAExD,IAAI,MAAM,GAAG;YACX,oBAAoB;YACpB,gBAAgB;YAChB,UAAU,EAAE,IAAI,CAAC,SAAS;YAC1B,aAAa,EAAE,IAAI,CAAC,WAAW;YAC/B,aAAa,EAAE,IAAI,CAAC,YAAY;SACjC,CAAC;QAEF,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;IAC9B,CAAC;IAED,OAAO;QACL,IAAI,IAAI,CAAC,gBAAgB,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,SAAS,EAAE;YAChE,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC;YAChD,OAAO,CAAC,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,IAAI,OAAO,CAAC,CAAC;SACpF;aAAM,IAAI,IAAI,CAAC,gBAAgB,IAAI,IAAI,CAAC,YAAY,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;YACxE,OAAO,CAAC,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC,CAAC;SACzE;aAAM;YACL,OAAO,KAAK,CAAC;SACd;IACH,CAAC;IAED,MAAM;QACJ,IAAI,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,mGAAsB,EAAE;YACvD,KAAK,EAAE,OAAO;YACd,IAAI,EAAE,EAAE,KAAK,EAAE,iBAAiB,EAAE,IAAI,EAAE,uDAAuD,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE;YAC/H,YAAY,EAAE,KAAK;SACpB,CAAC,CAAC;QAGH,SAAS,CAAC,WAAW,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE;YACvC,IAAI,IAAI,EAAE;gBACR,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,wBAAwB,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;aACrE;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAED,SAAS,CAAC,EAAU;QAClB,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,yBAAyB,EAAE,cAAc,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;IACvF,CAAC;IAED,YAAY,CAAC,IAAkB;QAC7B,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QACxB,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAClB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;IAC1B,CAAC;IAED,QAAQ;QACN,IAAI,CAAC,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,SAAS;YACrC,OAAO,0DAA0D,CAAC;;YAElE,OAAO,EAAE,CAAC;IACd,CAAC;IAGD,QAAQ,CAAC,KAAM;QACb,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,WAAW,CAAC;QACvC,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,UAAU,CAAC;QAErC,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,EAAE;YAC5B,IAAI,CAAC,WAAW,GAAG,QAAQ,CAAC;SAC7B;aAAM;YACL,IAAI,CAAC,WAAW,GAAG,QAAQ,CAAC;SAC7B;IACH,CAAC;IAED,mBAAmB;QACjB,MAAM,aAAa,GAAG,CAAC,kGAAoB,CAAC,CAAC;QAE7C,aAAa,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;YAC9B,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE,EAAE;gBAClD,OAAO,IAAI,CAAC,GAAG,KAAK,OAAO,CAAC;YAC9B,CAAC,CAAC,CAAC;YACH,IAAI,QAAQ,EAAE;gBACZ,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;aACrC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAED,iBAAiB,CAAC,MAAW;;QAC3B,IAAI,MAAM,KAAI,YAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,MAAM,0CAAE,QAAQ,MAAI,kBAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,MAAM,0CAAE,QAAQ,0CAAE,GAAG,GAAE;YACvE,MAAM,OAAO,GAAiB;gBAC5B,EAAE,EAAE,MAAM,CAAC,EAAE;gBACb,IAAI,EAAE,MAAM,CAAC,IAAI;gBACjB,MAAM,EAAE;oBACN,QAAQ,oBAAQ,YAAM,CAAC,MAAM,0CAAE,QAAQ,CAAE;iBAC1C;aACF;YACD,IAAI,IAAI,CAAC,OAAO,EAAE;gBAChB,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,OAAO,EAAE,0BAA0B,EAAE,qBAAqB,CAAC,CAAC;aACzF;iBAAM;gBACL,sEAAsE;gBACtE,8DAA8D;gBAC9D,MAAM,IAAI,GAAG,IAAI,CAAC;gBAClB,UAAU,CAAC,GAAG,EAAE;oBACd,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,OAAO,EAAE,0BAA0B,EAAE,qBAAqB,CAAC,CAAC;gBAC1F,CAAC,EAAE,IAAI,CAAC,CAAC;aACV;SACF;IACH,CAAC;;8FA5MU,uBAAuB;qHAAvB,uBAAuB;;;;;;;;;;uJAAvB,oBAAgB;;QClB7B,yEAAsB;QAGpB,yEAA6E;QAG3E,yEACsE;QAGpE,yEAAoG;QAClG,wEAA6B;QAAA,+EAC7B;QAAA,4DAAK;QACP,4DAAM;QAGN,4EACiD;QAAnB,+IAAS,YAAQ,IAAC;QAAC,iEAAM;QAAA,4DAAS;QAChE,yEAA+B;QAC7B,4EACyD;QAAvD,qJAAS,mBAAe,IAAC;QAA8B,gEAAI;QAAA,4DAAS;QACxE,4DAAM;QAER,4DAAM;QAEN,qEAGM;QAGN,sHAwBM;QAIN,2EACwD;QAEtD,2EACuB;QACrB,gFAAyF;QAEvF,2EAA8B;QAC5B,gFAAmC;QACjC,uFAAgD;QAC9C,sFAAmC;QAAA,wEAAY;QAAA,4DAAiB;QAClE,4DAAkB;QAClB,oFAAkB;QAChB,2EAAiF;QAAA,yEAAa;QAAA,4DAAM;QACpG,2EAAoE;QAAA,wDAA+B;QAAA,4DAAM;QACzG,2EAAiF;QAAA,kFAAsB;QAAA,4DAAM;QAC7G,2EAAoE;QAAA,wDAAgC;QAAA,4DAAM;QAC1G,uFAAyE;QAC3E,4DAAmB;QACrB,4DAAW;QACb,4DAAM;QACR,4DAAW;QACb,4DAAM;QAGN,2EACuB;QACrB,gFAAwF;QACtF,2EAA8B;QAC5B,gFAAmC;QACjC,uFAAgD;QAC9C,sFAAmC;QAAA,8EAAkB;QAAA,4DAAiB;QACxE,4DAAkB;QAClB,oFAAkB;QAChB,uFAAyE;QACzE,uEAAK;QAAA,yEAA4H;QAAA,mGAAuC;QAAA,4DAAI;QAAA,4DAAM;QACpL,4DAAmB;QACrB,4DAAW;QACb,4DAAM;QACR,4DAAW;QACb,4DAAM;QAER,4DAAM;QACR,4DAAM;QAtGR,4DAAsB;;QAkBX,0DAAyB;QAAzB,sFAAyB;QAEA,0DAA4B;QAA5B,oFAA4B;QAWtD,0DAAe;QAAf,+EAAe;QA0C2D,2DAA+B;QAA/B,yFAA+B;QAE/B,0DAAgC;QAAhC,0FAAgC;QAChE,0DAAiB;QAAjB,8EAAiB;QAiBrB,2DAAqB;QAArB,kFAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC1FuC;AAEnB;AACA;AACF;AAE+B;AAEhD;AACK;AAKC;;;;;;;;;;;;;;;;;;;;;;;ICKtE,8EAC4B;IAA5B,yUAA2B;IAAC,4EAAgB;IAAA,6DAAS;;;;IA2B7C,wFAEyC;IADvC,mXAAqC;IAEvC,6DAAe;;IAH2B,yFAA+B;;;;;IAf/E,2EAC4F;IAE1F,gFAAsF;IACpF,mFAAiB;IACf,sFAA8D;IAAA,wEAAY;IAAA,6DAAiB;IAC3F,2EAAoG;IAClG,+FAG4I;IAF1I,iWAAoC;IAGtC,6DAA0B;IAC5B,6DAAM;IACR,6DAAkB;IAClB,wFAA4C;IAC1C,4IAGe;IACjB,6DAAmB;IACrB,6DAAW;IACb,6DAAM;;;IAfkC,2DAAiE;IAAjE,8LAAiE;IACxE,2DAA6B;IAA7B,yFAA6B;IAQzC,2DAAgB;IAAhB,oFAAgB;;;IAyB/B,2EAAsH;IAAA,wEAEtH;IAAA,6DAAM;;;IACN,2EAAmF;IACjF,wDACF;IAAA,6DAAM;;;IADJ,2DACF;IADE,mGACF;;;IACA,2EAAsH;IAAA,0EAEtH;IAAA,6DAAM;;;IACN,2EAAmF;IACjF,wDACF;IAAA,6DAAM;;;IADJ,2DACF;IADE,sGACF;;;IACA,2EAAsH;IAAA,kFACtG;IAAA,6DAAM;;;IACtB,2EAAmF;IACjF,wDACF;IAAA,6DAAM;;;IADJ,2DACF;IADE,sGACF;;;IACA,sEAAqD;;;IAIrD,uEAAgD;IAC9C,2EAAsD;IAAA,qEAAS;IAAA,6DAAM;IACrE,2EAA0D;IACxD,wDAA2D;;IAAA,6DAAM;IACrE,6DAAM;;;IADF,2DAA2D;IAA3D,kQAA2D;;;IAE/D,2EAAgI;IAAA,iFACvH;IAAA,6DAAM;;;IACf,2EAA6F;IAC3F,wDAAsD;;IAAA,6DAAM;;;IAA5D,2DAAsD;IAAtD,6NAAsD;;;IACxD,2EAAgI;IAAA,gFACvH;IAAA,6DAAM;;;IACf,2EAA6F;IAC3F,wDAAqD;;IAAA,6DAAM;;;IAA3D,2DAAqD;IAArD,4NAAqD;;;;IAsBrD,sEAAqC;IACnC,uFAEwD;IADtD,qXAAgD;IACM,6DAAc;IACxE,6DAAK;;;;IAHmB,2DAAmB;IAAnB,iFAAmB;;;IAF7C,0EAA6C;IAC3C,uHAIK;IACP,6DAAK;;;IALqB,2DAAW;IAAX,sFAAW;;;IAMrC,uEAA+B;IAC7B,2EAA+B;IAAA,wGAA4C;IAAA,6DAAM;IACnF,6DAAM;;;IAOd,2EACuB;IACrB,gFAA6D;IAC3D,uFAAmD;IACjD,sFAAmC;IAAA,+EACnC;IAAA,6DAAiB;IACnB,6DAAkB;IAClB,oFAAkB;IAChB,2EAA6B;IAC3B,2FACuB;IACzB,6DAAM;IACR,6DAAmB;IACrB,6DAAW;IACb,6DAAM;;;IALiC,2DAAqC;IAArC,mIAAqC;;ADlI3E,MAAM,qBAAqB;IAgChC,YACU,KAAqB,EACrB,GAAe,EACf,MAAiB,EACjB,YAA0B,EAC1B,MAAc;QAJd,UAAK,GAAL,KAAK,CAAgB;QACrB,QAAG,GAAH,GAAG,CAAY;QACf,WAAM,GAAN,MAAM,CAAW;QACjB,iBAAY,GAAZ,YAAY,CAAc;QAC1B,WAAM,GAAN,MAAM,CAAQ;QA9BxB,gBAAW,GAAG,OAAO,CAAC;QACtB,0BAAqB,GAAG,QAAQ;QAChC,kBAAa,GAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;QACpC,8BAAyB,GAAW,GAAG,CAAC;QACxC,0BAAqB,GAAW,GAAG,CAAC;QAGpC,WAAM,GAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;QAC7B,aAAQ,GAAU,EAAE,CAAC;QAGrB,eAAU,GAAG,KAAK,CAAC;QACnB,cAAS,GAAG,KAAK,CAAC;QAMlB,cAAS,GAAG,KAAK,CAAC;QAGlB,aAAQ,GAAU,EAAE,CAAC;IAUjB,CAAC;IAEL,QAAQ;QACN,OAAO,CAAC,GAAG,CAAC,iCAAiC,EAAE,IAAI,CAAC,cAAc,CAAC;QACnE,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE;YACxC,IAAI,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;YACtB,IAAI,SAAS,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC;YACpC,IAAI,CAAC,cAAc,GAAG,MAAM,CAAC,gBAAgB,CAAC;YAC9C,IAAI,EAAE,IAAI,SAAS;gBACjB,OAAO;YAET,IAAI,GAAG,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC;YACvB,IAAI,CAAC,UAAU,GAAG,GAAG,CAAC;YACtB,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC;YAErC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAM,UAAU,EAAE,UAAU,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE;gBACxE,IAAI,OAAO,IAAI,OAAO,CAAC,KAAK,EAAE;oBAC5B,IAAI,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;oBAC5B,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;iBACzB;gBACD,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC;YAC9B,CAAC,CAAC,CAAC;YAEH,IAAI,CAAC,cAAc,EAAE,CAAC;QACxB,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,QAAQ,EAAE,CAAC;IAClB,CAAC;IAED,eAAe;;QACb,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,MAAM,EAAE;YACjD,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,UAAI,CAAC,MAAM,0CAAE,EAAE,CAAC,CAAC;SACxC;IACH,CAAC;IAED,iBAAiB,CAAC,GAAQ;QACxB,IAAI,CAAC,GAAG,CAAC,IAAI,CAAM,SAAS,EAAE,SAAS,EAAE,EAAE,QAAQ,EAAE,GAAG,EAAE,EAAE,IAAI,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE;YACpF,IAAI,MAAM,GAAG,OAAO,CAAC;YACrB,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC;YAC/B,IAAI,CAAC,YAAY,EAAE,CAAC;QACtB,CAAC,CAAC,CAAC;IACL,CAAC;IAED,aAAa;QACX,OAAO,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,IAAI,IAAI,CAAC,iBAAiB,CAAC,OAAO,EAAE,CAAC;IACxE,CAAC;IAED,UAAU;QACR,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;QACxB,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC1C,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACtD,CAAC;IAED,MAAM,CAAC,GAAG;QACR,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,mGAAsB,EAAE;YACvD,KAAK,EAAE,OAAO;YACd,IAAI,EAAE,kBAAkB;YACxB,YAAY,EAAE,IAAI;SACnB,CAAC,CAAC;QAEH,IAAI,CAAC,GAAG,CAAC,IAAI,CAAM,UAAU,EAAE,QAAQ,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE;YAClE,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE;gBACd,OAAO,CAAC,KAAK,EAAE,CAAC;gBAChB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,iGAAoB,EAAE;oBACrC,KAAK,EAAE,OAAO;oBACd,IAAI,EAAE,GAAG,CAAC,QAAQ;oBAClB,YAAY,EAAE,KAAK;iBACpB,CAAC,CAAC;gBACH,OAAO;aACR;YAED,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC;YAC3B,OAAO,CAAC,KAAK,EAAE,CAAC;YAEhB,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;YAExB,IAAI,IAAI,CAAC,SAAS,EAAE;gBAClB,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,CAAC;aAC/B;QAEH,CAAC,EAAE,GAAG,CAAC,EAAE;YACP,OAAO,CAAC,KAAK,EAAE,CAAC;YAChB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,iGAAoB,EAAE;gBACrC,KAAK,EAAE,OAAO;gBACd,IAAI,EAAE,CAAC,oBAAoB,EAAE,GAAG,CAAC,OAAO,CAAC;gBACzC,YAAY,EAAE,KAAK;aACpB,CAAC,CAAC;QACL,CAAC,CAAC;IACJ,CAAC;IAED,aAAa,CAAC,IAAS;QACrB,IAAI,YAAY,GAAQ,EAAE,CAAC;QAC3B,YAAY,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QAC9B,YAAY,CAAC,MAAM,GAAG,EAAE,CAAC;QACzB,YAAY,CAAC,MAAM,CAAC,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC;QAC9C,YAAY,CAAC,MAAM,CAAC,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC;QAC5C,YAAY,CAAC,MAAM,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC;QACvD,YAAY,CAAC,MAAM,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY;QACpD,YAAY,CAAC,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QAEvC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAM,SAAS,EAAE,QAAQ,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,EAAE,IAAI,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE;YACvH,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YACtB,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YACpB,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE;gBACjB,iDAAiD;gBACjD,mCAAmC;aACpC;iBACI;gBACH,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;aACzC;QACH,CAAC,EAAE,KAAK,CAAC,EAAE;YACT,oCAAoC;YACpC,2FAA2F;QAC7F,CAAC,CAAC;IACJ,CAAC;IAGD,aAAa,CAAC,GAAG;QACf,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,mGAAsB,EAAE;YACvD,KAAK,EAAE,OAAO;YACd,+CAA+C;YAC/C,IAAI,EAAE,gBAAgB;YACtB,YAAY,EAAE,IAAI;SACnB,CAAC,CAAC;QAEH,IAAI,CAAC,GAAG,CAAC,IAAI,CAAM,SAAS,EAAE,QAAQ,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE;YACjE,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE;gBACd,OAAO,CAAC,KAAK,EAAE,CAAC;gBAChB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,iGAAoB,EAAE;oBACrC,KAAK,EAAE,OAAO;oBACd,IAAI,EAAE,GAAG,CAAC,QAAQ;oBAClB,YAAY,EAAE,KAAK;iBACpB,CAAC,CAAC;gBACH,OAAO;aACR;YAED,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YACxC,OAAO,CAAC,KAAK,EAAE,CAAC;YAEhB,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;QAE1B,CAAC,EAAE,GAAG,CAAC,EAAE;YACP,OAAO,CAAC,KAAK,EAAE,CAAC;YAChB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,iGAAoB,EAAE;gBACrC,KAAK,EAAE,OAAO;gBACd,IAAI,EAAE,CAAC,oBAAoB,EAAE,GAAG,CAAC,OAAO,CAAC;gBACzC,YAAY,EAAE,KAAK;aACpB,CAAC,CAAC;QACL,CAAC,CAAC;IACJ,CAAC;IAED,aAAa;;QACX,MAAM,eAAe,GAAG,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE,CAAC;QACtD,MAAM,qBAAqB,GAAG,IAAI,CAAC,iBAAiB,CAAC,UAAU,EAAE,CAAC;QAClE,IAAI,YAAY,GAAc,EAAE,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;QACzF,YAAY,CAAC,IAAI,GAAG,eAAe,CAAC,aAAa,CAAC;QAClD,YAAY,CAAC,MAAM,CAAC,cAAc,GAAG,eAAe,CAAC,eAAe,CAAC;QACrE,YAAY,CAAC,MAAM,CAAC,iBAAiB,GAAG,eAAe,CAAC,mBAAmB,CAAC;QAC5E,YAAY,CAAC,MAAM,CAAC,qBAAqB,GAAG,eAAe,CAAC,uBAAuB,CAAC;QACpF,YAAY,CAAC,MAAM,CAAC,oBAAoB,GAAG,qBAAqB,CAAC,sBAAsB,CAAC;QACxF,YAAY,CAAC,MAAM,CAAC,YAAY,GAAG,qBAAqB,CAAC,aAAa,CAAC;QACvE,YAAY,CAAC,MAAM,CAAC,aAAa,GAAG,gGAAyB,CAAC,qBAAqB,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC;QACvG,YAAY,CAAC,MAAM,CAAC,YAAY,GAAG,qBAAqB,CAAC,aAAa,CAAC;QACvE,YAAY,CAAC,MAAM,CAAC,QAAQ,GAAG,iBAAI,CAAC,WAAW,0CAAE,MAAM,0CAAE,QAAQ,KAAI,EAAE,CAAC;QAExE,OAAO,YAAY,CAAC;IACtB,CAAC;IAED,cAAc;QACZ,IAAI,IAAI,CAAC,UAAU,EAAE;YACnB,6BAA6B;YAC7B,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;YACrC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;SACtB;aAAM;YACL,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;SACxB;IACH,CAAC;IAED,cAAc;QACZ,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,wBAAwB,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;IACtE,CAAC;IAED,UAAU,CAAC,IAAY;QACrB,IAAI,CAAC,IAAI,EAAE;YACT,OAAO,IAAI,GAAG,EAAE,CAAC;SAClB;aAAM;YACL,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC;SACtB;IACH,CAAC;IAEK,cAAc;;YAClB,IAAI,CAAC,GAAG,CAAC,IAAI,CAAM,SAAS,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE;;gBAC/E,IAAI,OAAO,IAAI,OAAO,CAAC,MAAM,EAAE;oBAC7B,IAAI,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;oBACxB,IAAI,CAAC,OAAO,GAAG,aAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,MAAM,0CAAE,gBAAgB,KAAI,IAAI,CAAC;oBACxD,IAAI,CAAC,QAAQ,GAAG,aAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,MAAM,0CAAE,QAAQ,KAAI,EAAE,CAAC;iBAChD;YACH,CAAC,CAAC,CAAC;QACL,CAAC;KAAA;IAED,UAAU,CAAC,MAAW;QACpB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACtB,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACzB,MAAM,cAAc,GAAQ,EAAE,CAAC;QAC/B,MAAM,kBAAkB,GAAQ,EAAE,CAAC;QAEnC,cAAc,CAAC,iGAAmB,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;QACvD,cAAc,CAAC,mGAAqB,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC;QACnE,cAAc,CAAC,sGAAwB,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC;QACzE,cAAc,CAAC,0GAA4B,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,qBAAqB,CAAC,CAAC;QAElG,kBAAkB,CAAC,yGAA2B,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC;QACpG,kBAAkB,CAAC,iGAAmB,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC;QACnE,kBAAkB,CAAC,kGAAoB,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC;QACrE,kBAAkB,CAAC,iGAAmB,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC;QAEnE,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC;QAC7C,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC;QAC7C,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC;QACvC,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAEvC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,wBAAwB,CAAC,wFAAmB,EAAE,cAAc,CAAC,CAAC;QAC9F,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,YAAY,CAAC,wBAAwB,CAAC,4FAAuB,EAAE,kBAAkB,CAAC,CAAC;QAE1G,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC1C,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAEpD,OAAO;QACP,IAAI,CAAC,aAAa,EAAE,CAAC;QAErB,kCAAkC;QAClC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;YACnB,IAAI,CAAC,mBAAmB,EAAE,CAAC;SAC5B;QAED,uBAAuB;QACvB,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,OAAO,EAAE;YAClC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,EAAE,CAAC,CAAC;SACnC;IACH,CAAC;IAED,aAAa;QACX,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACtB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,+HAAsB,EAAE;YACxD,KAAK,EAAE,MAAM;YACb,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,WAAW,EAAE,SAAS,EAAE,wBAAwB,EAAE,WAAW,EAAE,qBAAqB,EAAE,KAAK,EAAE,IAAI,CAAC,SAAS,EAAE;YACnI,YAAY,EAAE,IAAI;SACnB,CAAC,CAAC;QAEH,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE;YAC5C,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;YACtB,IAAI,IAAI,EAAE;gBACR,0BAA0B;gBAC1B,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;gBACxB,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;gBACrC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;aACtB;YAED,IAAI,CAAC,aAAa,EAAE,CAAC;QACvB,CAAC,CAAC,CAAC;IACL,CAAC;IAED,aAAa;QACX,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;QACvB,IAAI,CAAC,SAAS,EAAE,CAAC;IACnB,CAAC;IAED,SAAS;QACP,UAAU,CAAC,GAAG,EAAE;YACd,IAAI,CAAC,aAAa,EAAE,CAAC;QACvB,CAAC,EAAE,GAAG,CAAC,CAAC;IACV,CAAC;IAED,YAAY,CAAC,IAAkB;QAC7B,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;IAC1B,CAAC;IAED,aAAa;;QACX,IAAI,IAAI,CAAC,MAAM,KAAI,UAAI,CAAC,MAAM,0CAAE,QAAQ,MAAI,gBAAI,CAAC,MAAM,0CAAE,QAAQ,0CAAE,GAAG,GAAE;YACtE,MAAM,OAAO,GAAiB;gBAC5B,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE;gBAClB,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI;gBACtB,MAAM,EAAE;oBACN,QAAQ,oBAAQ,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAE;iBACvC;aACF;YACD,IAAI,IAAI,CAAC,OAAO,EAAE;gBAChB,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;aAC9B;iBAAM;gBACL,sEAAsE;gBACtE,8DAA8D;gBAC9D,MAAM,IAAI,GAAG,IAAI,CAAC;gBAClB,UAAU,CAAC,GAAG,EAAE;oBACd,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;gBAC/B,CAAC,EAAE,IAAI,CAAC,CAAC;aACV;SACF;QAED,oCAAoC;QACpC,IAAI,IAAI,CAAC,SAAS,EAAE;YAClB,IAAI,CAAC,GAAG,CAAC,IAAI,CAAM,SAAS,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE;gBACzE,IAAI,OAAO,IAAI,OAAO,CAAC,MAAM,EAAE;oBAC7B,IAAI,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;oBACxB,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC;iBAChC;YACH,CAAC,CAAC,CAAC;SACJ;IACH,CAAC;IAED,aAAa;QACX,IAAI,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,mGAAsB,EAAE;YACvD,KAAK,EAAE,OAAO;YACd,IAAI,EAAE,EAAE,KAAK,EAAE,gBAAgB,EAAE,IAAI,EAAE,mKAAmK,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE;YAC1O,YAAY,EAAE,KAAK;SACpB,CAAC,CAAC;QAGH,SAAS,CAAC,WAAW,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE;YACvC,IAAI,IAAI,EAAE;gBACR,SAAS;gBACT,IAAI,CAAC,YAAY,EAAE,CAAC;gBACpB,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;aACvB;iBAAM;gBACL,mBAAmB;aACpB;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAEK,mBAAmB,CAAC,IAAS;;YACjC,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,mGAAsB,EAAE;gBACtD,KAAK,EAAE,OAAO;gBACd,IAAI,EAAE,mBAAmB;gBACzB,YAAY,EAAE,IAAI;aACnB,CAAC,CAAC;YAEH,IAAI,GAAG,GAAG,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE;YAEzB,IAAI,CAAC,GAAG,CAAC,IAAI,CAAM,SAAS,EAAE,QAAQ,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE;gBACjE,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE;oBACd,MAAM,CAAC,KAAK,EAAE,CAAC;oBACf,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,iGAAoB,EAAE;wBACrC,KAAK,EAAE,OAAO;wBACd,IAAI,EAAE,GAAG,CAAC,QAAQ;wBAClB,YAAY,EAAE,KAAK;qBACpB,CAAC,CAAC;oBACH,OAAO;iBACR;gBAED,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;gBACxC,MAAM,CAAC,KAAK,EAAE,CAAC;YACjB,CAAC,EAAE,GAAG,CAAC,EAAE;gBACP,MAAM,CAAC,KAAK,EAAE,CAAC;gBACf,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,iGAAoB,EAAE;oBACrC,KAAK,EAAE,OAAO;oBACd,IAAI,EAAE,CAAC,oBAAoB,EAAE,GAAG,CAAC,OAAO,CAAC;oBACzC,YAAY,EAAE,KAAK;iBACpB,CAAC,CAAC;YACL,CAAC,CAAC;QACJ,CAAC;KAAA;IAED,cAAc;QACZ,IAAI,CAAC,GAAG,CAAC,IAAI,CAAM,SAAS,EAAE,SAAS,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE;YAC/F,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;YACxB,IAAI,QAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,MAAM,IAAG,CAAC,EAAE;gBACvB,IAAI,CAAC,YAAY,EAAE,CAAC;gBACpB,IAAI,CAAC,eAAe,EAAE,CAAC;aACxB;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAEK,YAAY;;YAChB,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,mGAAsB,EAAE;gBACtD,KAAK,EAAE,OAAO;gBACd,IAAI,EAAE,oBAAoB;gBAC1B,YAAY,EAAE,IAAI;aACnB,CAAC,CAAC;YAEH,IAAI,GAAG,GAAG,EAAE,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE;YAEhC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAM,UAAU,EAAE,QAAQ,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE;gBAClE,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE;oBACd,MAAM,CAAC,KAAK,EAAE,CAAC;oBACf,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,iGAAoB,EAAE;wBACrC,KAAK,EAAE,OAAO;wBACd,IAAI,EAAE,GAAG,CAAC,QAAQ;wBAClB,YAAY,EAAE,KAAK;qBACpB,CAAC,CAAC;oBACH,OAAO;iBACR;gBAED,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC;gBACzB,MAAM,CAAC,KAAK,EAAE,CAAC;gBAEf,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,wBAAwB,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;YACtE,CAAC,EAAE,GAAG,CAAC,EAAE;gBACP,MAAM,CAAC,KAAK,EAAE,CAAC;gBACf,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,iGAAoB,EAAE;oBACrC,KAAK,EAAE,OAAO;oBACd,IAAI,EAAE,CAAC,oBAAoB,EAAE,GAAG,CAAC,OAAO,CAAC;oBACzC,YAAY,EAAE,KAAK;iBACpB,CAAC,CAAC;YACL,CAAC,CAAC;QACJ,CAAC;KAAA;IAED,iBAAiB,CAAC,SAAkB;QAClC,IAAI,SAAS,EAAE;YACb,IAAI,CAAC,yBAAyB,GAAG,GAAG,CAAC;YACrC,IAAI,CAAC,qBAAqB,GAAG,EAAE,CAAC;SACjC;aAAM;YACL,IAAI,CAAC,yBAAyB,GAAG,EAAE,CAAC;YACpC,IAAI,CAAC,qBAAqB,GAAG,GAAG,CAAC;SAClC;IACH,CAAC;IAGD,QAAQ,CAAC,KAAM;QACb,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,WAAW,CAAC;QACvC,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,UAAU,CAAC;QAErC,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,EAAE;YAC5B,IAAI,CAAC,WAAW,GAAG,SAAS,CAAC;SAC9B;aAAM;YACL,IAAI,CAAC,WAAW,GAAG,QAAQ,CAAC;SAC7B;IACH,CAAC;IAED,mBAAmB;QACjB,MAAM,aAAa,GAAG,CAAC,kGAAoB,CAAC,CAAC;QAE7C,aAAa,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;YAC9B,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE,EAAE;gBAClD,OAAO,IAAI,CAAC,GAAG,KAAK,OAAO,CAAC;YAC9B,CAAC,CAAC,CAAC;YACH,IAAI,QAAQ,EAAE;gBACZ,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;aACrC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAED,iBAAiB,CAAC,MAAW;QAC3B,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC;QAC5B,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;QAC5B,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QAChC,MAAM,aAAa,GAAQ,EAAE,CAAC;QAE9B,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;YACnC,aAAa,CAAC,8FAAgB,CAAC,GAAG,OAAO,CAAC,EAAE,CAAC;YAC7C,aAAa,CAAC,+FAAiB,CAAC,GAAG,OAAO,CAAC,UAAU,CAAC;YACtD,aAAa,CAAC,gGAAkB,CAAC,GAAG,OAAO,CAAC,WAAW,CAAC;YACxD,aAAa,CAAC,iGAAmB,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC;YACnD,aAAa,CAAC,kGAAoB,CAAC,GAAG,OAAO,CAAC,aAAa,CAAC;YAC5D,aAAa,CAAC,iGAAmB,CAAC,GAAG,OAAO,CAAC,YAAY,CAAC;QAC5D,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC;QAEnC,IAAI,CAAC,cAAc,EAAE,CAAC;IAExB,CAAC;IAED,eAAe;QAEb,IAAI,IAAI,CAAC,QAAQ,EAAE;YACjB,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;gBAChD,OAAO;oBACL,aAAa,EAAE,CAAC,CAAC,aAAa,GAAG,CAAC,CAAC,aAAa;oBAChD,YAAY,EAAE,CAAC,CAAC,YAAY,GAAG,CAAC,CAAC,YAAY;iBAC9C,CAAC;YACJ,CAAC,CAAC;SACH;QAED,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IACjC,CAAC;IAED,UAAU;QACR,IAAI,aAAa,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,sHAAyB,EAAE;YAC9D,KAAK,EAAE,OAAO;YACd,YAAY,EAAE,IAAI;SACnB,CAAC,CAAC;QAGH,aAAa,CAAC,WAAW,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE;YAC3C,IAAI,IAAI,EAAE;gBACR,0BAA0B;gBAC1B,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;aAC1B;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAED,oBAAoB,CAAC,IAAS;QAC5B,OAAO,CAAC,GAAG,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC;QAClC,IAAI,YAAY,GAAc,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;QAC3E,YAAY,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QAC9B,YAAY,CAAC,MAAM,GAAG,EAAE,CAAC;QACzB,YAAY,CAAC,MAAM,CAAC,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC;QAC9C,YAAY,CAAC,MAAM,CAAC,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC;QAC5C,YAAY,CAAC,MAAM,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC;QACvD,YAAY,CAAC,MAAM,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY;QACpD,YAAY,CAAC,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QAEvC,OAAO,YAAY,CAAC;IACtB,CAAC;IAED,oBAAoB,CAAC,IAAS;QAC5B,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,GAAG,OAAO,IAAI,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,EAAC,CAAC,CAAC,CAAC;QAC/E,IAAI,SAAS,EAAE;YACb,IAAI,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,mGAAsB,EAAE;gBACvD,KAAK,EAAE,OAAO;gBACd,IAAI,EAAE,EAAE,KAAK,EAAE,gBAAgB,EAAE,IAAI,EAAE,qDAAqD,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE;gBAC5H,YAAY,EAAE,KAAK;aACpB,CAAC,CAAC;YAGH,SAAS,CAAC,WAAW,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE;gBACvC,IAAI,IAAI,EAAE;oBACR,SAAS;oBACT,IAAI,CAAC,mBAAmB,CAAC,SAAS,CAAC,CAAC;iBACrC;qBAAM;oBACL,mBAAmB;iBACpB;YACH,CAAC,CAAC,CAAC;SACJ;IACH,CAAC;IAED,iBAAiB,CAAC,IAAS;QACzB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,UAAU,GAAG;YAChD,OAAO,GAAG,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC;QAChC,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,YAAY,EAAE,CAAC;IACtB,CAAC;IAED,cAAc,CAAC,IAAS;QACtB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACzB,IAAI,CAAC,YAAY,EAAE,CAAC;IACtB,CAAC;IAED,YAAY;QACV,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,WAAW,GAAG,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,GAAG,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACjH,CAAC;IAED,eAAe;QACb,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC;IACnD,CAAC;IAED,eAAe;QACb,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,eAAe,IAAI,CAAC,MAAM,CAAC,EAAE,SAAS,CAAC,CAAC;IACpE,CAAC;IAED,iBAAiB,CAAC,MAAW;;QAC3B,IAAI,MAAM,KAAI,YAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,MAAM,0CAAE,QAAQ,MAAI,kBAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,MAAM,0CAAE,QAAQ,0CAAE,GAAG,GAAE;YACvE,MAAM,OAAO,GAAiB;gBAC5B,EAAE,EAAE,MAAM,CAAC,EAAE;gBACb,IAAI,EAAE,MAAM,CAAC,IAAI;gBACjB,MAAM,EAAE;oBACN,QAAQ,oBAAQ,YAAM,CAAC,MAAM,0CAAE,QAAQ,CAAE;iBAC1C;aACF;YACD,IAAI,IAAI,CAAC,OAAO,EAAE;gBAChB,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,OAAO,EAAE,0BAA0B,EAAE,qBAAqB,EAAE,IAAI,CAAC,CAAC;aAC/F;iBAAM;gBACL,sEAAsE;gBACtE,8DAA8D;gBAC9D,MAAM,IAAI,GAAG,IAAI,CAAC;gBAClB,UAAU,CAAC,GAAG,EAAE;oBACd,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,OAAO,EAAE,0BAA0B,EAAE,qBAAqB,EAAE,IAAI,CAAC,CAAC;gBAChG,CAAC,EAAE,IAAI,CAAC,CAAC;aACV;SACF;IACH,CAAC;;0FAhmBU,qBAAqB;oHAArB,qBAAqB;;;;;;;;;;;;;;sJAArB,oBAAgB;;QCxB7B,0EAAsB;QAGpB,0EAA+G;QAG7G,0EACsE;QAGpE,0EAAoG;QAClG,yEAA6B;QAAA,wDAA6B;QAAA,6DAAK;QACjE,6DAAM;QAGN,6EACmJ;QAA1B,8IAAS,mBAAe,IAAC;QAAC,kEAAM;QAAA,6DAAS;QAElK,6EAC6B;QAA3B,8IAAS,oBAAgB,IAAC;QAAC,2EAAe;QAAA,6DAAS;QAGrD,0HACqD;QAGvD,6DAAM;QAGN,2EACkF;QAEhF,gFAC6D;QAE3D,qHAqBM;QAIN,4EAC4F;QAE1F,iFAA2E;QACzE,wFAAmD;QACjD,uFAAmC;QAAA,6EACnC;QAAA,6DAAiB;QACjB,4EAAoG;QAClG,gGAEwC;QADtC,4KAAe,oBAAqB,IAAC,uHAAkB,gBAAiB,IAAnC,mHACtB,oBAAqB,IADC;QAEvC,6DAA0B;QAC5B,6DAAM;QACR,6DAAkB;QAClB,qFAAkB;QAChB,qHAEM;QACN,qHAEM;QACN,qHAEM;QACN,qHAEM;QACN,qHACsB;QACtB,qHAEM;QACN,qHAAqD;QACrD,wFAAwG;QACxG,wFACmB;QACnB,qHAIM;QACN,qHACe;QACf,qHAC8D;QAC9D,qHACe;QACf,qHAC6D;QAC/D,6DAAmB;QACrB,6DAAW;QACb,6DAAM;QACR,6DAAW;QACb,6DAAM;QAEN,4EACiF;QAE/E,4EAAyG;QACvG,iFAA6D;QAC3D,wFAAmD;QACjD,uFAAmC;QAAA,6EACnC;QAAA,6DAAiB;QACjB,4EAA2D;QACzD,+EAAyJ;QAAvB,+IAAS,gBAAY,IAAC;QAAC,kEAAK;QAAA,6DAAS;QACzK,6DAAM;QACR,6DAAkB;QAClB,qFAAkB;QAChB,4EAAgC;QAC9B,mHAMK;QACL,qHAEM;QACR,6DAAM;QACR,6DAAmB;QACrB,6DAAW;QACb,6DAAM;QAGN,qHAcM;QAER,6DAAM;QAER,6DAAM;QAER,6DAAM;;QAlKyE,2DAAiC;QAAjC,sFAAiC;QAQ3E,2DAA6B;QAA7B,qHAA6B;QAKL,2DAAiE;QAAjE,yLAAiE;QAM/G,2DAAoB;QAApB,gFAAoB;QAW3B,2DAAoC;QAApC,kGAAoC;QAE9B,2DAAe;QAAf,gFAAe;QAyBhB,2DAAgC;QAAhC,8FAAgC;QAOG,2DAAiE;QAAjE,yLAAiE;QACxE,2DAA8B;QAA9B,uFAA8B;QAOnD,2DAAsB;QAAtB,kFAAsB;QAGtB,2DAAsB;QAAtB,kFAAsB;QAGtB,2DAAsB;QAAtB,kFAAsB;QAGtB,2DAAsB;QAAtB,kFAAsB;QAGtB,2DAAsB;QAAtB,kFAAsB;QAEtB,2DAAsB;QAAtB,kFAAsB;QAGJ,2DAAqB;QAArB,iFAAqB;QACd,2DAA8B;QAA9B,uFAA8B;QACxB,2DAA8B;QAA9B,uFAA8B;QAE7D,2DAAwC;QAAxC,mGAAwC;QAKxC,2DAAsB;QAAtB,kFAAsB;QAEtB,2DAAsB;QAAtB,kFAAsB;QAEtB,2DAAsB;QAAtB,kFAAsB;QAEtB,2DAAsB;QAAtB,kFAAsB;QAiBoC,2DAAiE;QAAjE,yLAAiE;QAK9G,2DAAwB;QAAxB,yFAAwB;QAOrC,2DAAuB;QAAvB,wFAAuB;QAS/B,2DAAoB;QAApB,gFAAoB;;;;;;;;;;;;;;;;;;;;;AC1IzB,MAAM,iBAAiB;IAE5B,gBAAgB,CAAC;IAEjB,QAAQ;IACR,CAAC;;kFALU,iBAAiB;+GAAjB,iBAAiB;QCP9B,2EAA+B;;;;;;;;;;;;;;;;;;;;;;;ACOxB,MAAM,cAAc;IAEzB,gBAAgB,CAAC;IAEjB,QAAQ;IACR,CAAC;;4EALU,cAAc;4GAAd,cAAc;QCP3B,yEAA0E;QACxE,2EAA+B;QACjC,4DAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACDmD;AACgB;;;;;;;;;;;;;;ICyB7D,iFAAsD;IACpD,uDACF;IAAA,4DAAa;;;IAF0B,0EAAc;IACnD,0DACF;IADE,mFACF;;ADnBL,MAAM,eAAe;IAO1B,YACkC,IAAS,EACjC,SAAwC,EACxC,GAAe;QAFS,SAAI,GAAJ,IAAI,CAAK;QACjC,cAAS,GAAT,SAAS,CAA+B;QACxC,QAAG,GAAH,GAAG,CAAY;QARzB,UAAK,GAAa,CAAC,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAE,OAAO,CAAC;QACrF,oBAAe,GAAG,uDAAuD;YACzE,yEAAyE;YACzE,+EAA+E;QAQ/E,uBAAkB,GAAgB,IAAI,uDAAW,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,+DAAmB,CAAC,CAAC;QACzG,wBAAmB,GAAgB,IAAI,uDAAW,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,+DAAmB,CAAC,CAAC;QAC1G,uBAAkB,GAAgB,IAAI,uDAAW,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,+DAAmB,CAAC,CAAC;IAJrG,CAAC;IAML,QAAQ;IACR,CAAC;IAED,SAAS;QACP,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;IACzB,CAAC;IAED,OAAO;QACL,IAAI,IAAI,CAAC,kBAAkB,IAAI,IAAI,CAAC,kBAAkB,CAAC,KAAK;eACvD,IAAI,CAAC,mBAAmB,IAAI,IAAI,CAAC,mBAAmB,CAAC,KAAK;eAC1D,IAAI,CAAC,kBAAkB,IAAI,IAAI,CAAC,kBAAkB,CAAC,KAAK,EAAE;YAC7D,OAAO,IAAI,CAAC;SACb;aAAM;YACL,OAAO,KAAK,CAAC;SACd;IACH,CAAC;IAED,QAAQ;QACN,IAAI,OAAO,GAAG,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC;QAC5C,IAAI,QAAQ,GAAG,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC;QAC9C,IAAI,OAAO,GAAG,IAAI,CAAC,kBAAkB,CAAC,KAAK;QAE3C,IAAI,SAAS,GACb;YACE,MAAM,EAAE,OAAO;YACf,UAAU,EAAE,QAAQ;YACpB,SAAS,EAAE,OAAO;SACnB;QAED,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;IAClC,CAAC;;8EA/CU,eAAe,kEAQhB,qEAAe;6GARd,eAAe;QCT5B,wEAAqB;QACjB,iFAA2D;QACzD,qFAA8C;QAC5C,sEAAK;QACH,uEAAM;QAAA,2EAAgB;QAAA,4DAAO;QAC/B,4DAAM;QACR,4DAAkB;QACpB,4DAAc;QAChB,4DAAK;QAGL,yEAAmG;QACjG,yEACwC;QACtC,sEAAK;QACH,oFAA4C;QAC1C,6EAAW;QAAA,6EAAiB;QAAA,4DAAY;QACxC,0EAAoH;QACtH,4DAAiB;QACjB,qFAA4C;QAC1C,6EAAW;QAAA,sFAA0B;QAAA,4DAAY;QACjD,0EAAuH;QACzH,4DAAiB;QACjB,qFAA4C;QAC1C,6EAAW;QAAA,6EAAiB;QAAA,4DAAY;QACxC,sFAAoF;QAClF,4HAEa;QACf,4DAAa;QACf,4DAAiB;QACnB,4DAAM;QAEN,uEAAK;QACH,yEAAO;QACL,wEAAM;QACJ,qEAAG;QAAA,2HAA+D;QAAA,0EAAQ;QAAA,+EAAmB;QAAA,4DAAS;QAAC,mLAAsH;QAAA,4DAAI;QACnO,4DAAO;QACT,4DAAQ;QACV,4DAAM;QAGN,2EAAoE;QAClE,2EAA4D;QAC1D,8EACoD;QAAtB,wIAAS,eAAW,IAAC;QAAC,kEAAM;QAAA,4DAAS;QACrE,4DAAM;QACN,2EAA4D;QAC1D,8EACoG;QAArC,wIAAS,cAAU,IAAC;QAAiB,+DAAG;QAAA,4DAAS;QAClH,4DAAM;QACR,4DAAM;QACR,4DAAM;QACR,4DAAM;;QApCuC,2DAAkC;QAAlC,+FAAkC;QAIhC,0DAAmC;QAAnC,gGAAmC;QAIzC,0DAAkC;QAAlC,+FAAkC;QACpC,0DAAQ;QAAR,8EAAQ;QAsB/B,2DAAuB;QAAvB,oFAAuB;;;;;;;;;;;;;;;;;;;;;;;;;AC1ClC,MAAM,kBAAkB;IAE7B,gBAAgB,CAAC;IAEjB,QAAQ;IACR,CAAC;;oFALU,kBAAkB;gHAAlB,kBAAkB;QCN/B,wEAAqB;QACjB,iFAA2D;QACzD,qFAA8C;QAC5C,sEAAK;QACH,uEAAM;QAAA,8EAAmB;QAAA,4DAAO;QAClC,4DAAM;QACR,4DAAkB;QACpB,4DAAc;QAChB,4DAAK;QAGL,yEAA4I;QAC1I,yEACwC;QAEtC,yEAAwB;QACtB,oEA0BM;QAER,4DAAM;QAER,4DAAM;QAER,4DAAM;;;;;;;;;;;;;;;;;;;;;;;;;ACzCD,MAAM,2BAA2B;IAEtC,YAAoB,SAAoD;QAApD,cAAS,GAAT,SAAS,CAA2C;IAAI,CAAC;IAE7E,QAAQ;IACR,CAAC;;sGALU,2BAA2B;yHAA3B,2BAA2B;QCRxC,yEAAmG;QACjG,yEACwC;QACtC,sEAAK;QACH,oEAAG;QACD,sOACF;QAAA,4DAAI;QACN,4DAAM;QACR,4DAAM;QACR,4DAAM;QACN,yEAA6C;QAC3C,yEAAiF;QAC/E,4EAAuI;QAAA,gEAAK;QAAA,4DAAS;QACvJ,4DAAM;QACR,4DAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACZqD;AACG;AACD;AAC4B;AACA;AACF;AAMa;;;;;;;;;ICP5F,yEAAkE;IAAC,8EAAkB;IAAA,4DAAK;;;IAC1F,yEAAmC;IAAC,uDAAa;IAAA,4DAAK;;;IAAlB,0DAAa;IAAb,wFAAa;;;IAKjD,yEAAkE;IAAC,yEAAa;IAAA,4DAAK;;;IACrF,yEAAmC;IAAC,uDAAiB;IAAA,4DAAK;;;IAAtB,0DAAiB;IAAjB,4FAAiB;;;IAKrD,yEAAkE;IAAC,iEAAK;IAAA,4DAAK;;;IAC7E,yEAAmC;IAAC,uDAAgB;IAAA,4DAAK;;;IAArB,0DAAgB;IAAhB,2FAAgB;;;IAKpD,oEAAuE;;;;IACvE,yEAAmC;IACjC,6EAAiF;IAA1B,0XAAyB;IAAE,oEAAQ;IAAA,4DAAS;IACrG,4DAAK;;;IAGP,oEAA4D;;;IAC5D,oEAAkE;;;ADXjE,MAAM,gBAAgB;IAU3B,YACU,GAAe,EACf,MAAiB;QADjB,QAAG,GAAH,GAAG,CAAY;QACf,WAAM,GAAN,MAAM,CAAW;QAX3B,qBAAgB,GAAa,CAAC,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;QAExE,eAAU,GAAG,IAAI,uEAAkB,CAAM,EAAE,CAAC,CAAC;IAUvC,CAAC;IAEP,QAAQ;QACN,IAAI,CAAC,YAAY,EAAE,CAAC;IACtB,CAAC;IAED,YAAY;QACV,IAAI,CAAC,UAAU,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;QAC3C,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,CAAgB,CAAC,CAAC;QAC9D,IAAI,CAAC,UAAU,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QAEjC,IAAI,CAAC,UAAU,CAAC,mBAAmB,GAAG,CAAC,IAAS,EAAE,YAAoB,EAAU,EAAE;YAChF,IAAI,YAAY,IAAI,MAAM,EAAE;gBAC1B,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,iBAAiB,EAAE,CAAC;aAC3C;YAED,IAAI,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,QAAQ,EAAE;gBAC1C,OAAO,IAAI,CAAC,YAAY,CAAC,CAAC,iBAAiB,EAAE,CAAC;aAC/C;YAED,OAAO,IAAI,CAAC,YAAY,CAAC,CAAC;QAC5B,CAAC,CAAC;QAEF,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,mGAAsB,EAAE;YACvD,KAAK,EAAE,OAAO;YACd,IAAI,EAAE,SAAS;YACf,YAAY,EAAE,IAAI;SACnB,CAAC,CAAC;QAEH,IAAI,CAAC,GAAG,CAAC,GAAG,CAAQ,cAAc,EAAE,QAAQ,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE;YAE5D,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC;YAChB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,GAAG;gBACxC,OAAO,GAAG,CAAC,IAAI,KAAK,uBAAuB;YAC7C,CAAC,CAAC,CAAC;YAEH,IAAI,CAAC,cAAc,EAAE,CAAC;QACxB,CAAC,CAAC,CAAC;QACH,OAAO,CAAC,KAAK,EAAE,CAAC;IAElB,CAAC;IAGD,cAAc;QACZ,IAAI,CAAC,UAAU,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,+CAA8C;IACjF,CAAC;IAED,UAAU,CAAC,GAAQ;QACjB,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,mGAAsB,EAAE;YACvD,KAAK,EAAE,OAAO;YACd,IAAI,EAAE,SAAS;YACf,YAAY,EAAE,IAAI;SACnB,CAAC,CAAC;QAEH,IAAI,CAAC,GAAG,CAAC,IAAI,CAAQ,OAAO,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE;YAC5D,IAAI,GAAG,EAAE;gBACP,IAAI,KAAK,GAAG,GAAG,CAAC;gBAChB,IAAI,cAAc,GAAG,KAAK,CAAC;gBAC3B,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;oBAChB,IAAG,CAAC,CAAC,YAAY,KAAK,GAAG,CAAC,IAAI,EAAC;wBAC7B,cAAc,GAAG,IAAI,CAAC;wBACtB,OAAM;qBACP;gBACH,CAAC,CAAC,CAAC;gBAEH,OAAO,CAAC,KAAK,EAAE,CAAC;gBAEhB,IAAG,cAAc,EAAC;oBAChB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,6GAA2B,EAAE;wBAC5C,KAAK,EAAE,OAAO;wBACd,YAAY,EAAE,KAAK;qBACpB,CAAC,CAAC;iBAEJ;gBAGD,IAAG,CAAC,cAAc,EAAC;oBACjB,IAAI,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,mGAAsB,EAAE;wBACvD,KAAK,EAAE,OAAO;wBACd,IAAI,EAAE,EAAE,KAAK,EAAE,iBAAiB,EAAE,IAAI,EAAE,sUAAsU,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE;qBAC/Y,CAAC,CAAC;oBAEH,SAAS,CAAC,WAAW,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE;wBACvC,IAAI,IAAI,EAAE;4BACR,SAAS;4BACT,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;yBACzB;6BAAM;4BACL,mBAAmB;yBACpB;oBACH,CAAC,CAAC,CAAC;iBACJ;aACF;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAGK,aAAa,CAAC,IAAS;;YAC3B,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,mGAAsB,EAAE;gBACtD,KAAK,EAAE,OAAO;gBACd,IAAI,EAAE,wBAAwB;gBAC9B,YAAY,EAAE,IAAI;aACnB,CAAC,CAAC;YAEH,IAAI,GAAG,GAAG,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE;YAEzB,IAAI,CAAC,GAAG,CAAC,IAAI,CAAM,cAAc,EAAE,QAAQ,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE;gBACtE,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE;oBACd,MAAM,CAAC,KAAK,EAAE,CAAC;oBACf,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,iGAAoB,EAAE;wBACrC,KAAK,EAAE,OAAO;wBACd,IAAI,EAAE,GAAG,CAAC,QAAQ;wBAClB,YAAY,EAAE,KAAK;qBACpB,CAAC,CAAC;oBACH,OAAO;iBACR;gBAED,IAAI,CAAC,YAAY,EAAE,CAAC;gBACpB,MAAM,CAAC,KAAK,EAAE,CAAC;YACjB,CAAC,EAAE,GAAG,CAAC,EAAE;gBACP,MAAM,CAAC,KAAK,EAAE,CAAC;gBACf,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,iGAAoB,EAAE;oBACrC,KAAK,EAAE,OAAO;oBACd,IAAI,EAAE,CAAC,oBAAoB,EAAE,GAAG,CAAC,OAAO,CAAC;oBACzC,YAAY,EAAE,KAAK;iBACpB,CAAC,CAAC;YACL,CAAC,CAAC;QACJ,CAAC;KAAA;;gFA3IU,gBAAgB;8GAAhB,gBAAgB;kEAOhB,2DAAO;kEACP,sEAAY;;;;;;QC3BvB,yEAAyE;QACvE,2EAAsG;QAGpG,2EAAkC;QAChC,0GAA0F;QAC1F,0GAAsD;QACxD,qEAAe;QAGf,2EAAsC;QACpC,0GAAqF;QACrF,0GAA0D;QAC5D,qEAAe;QAGf,2EAAqC;QACnC,0GAA6E;QAC7E,4GAAyD;QAC3D,qEAAe;QAGf,4EAAqC;QACnC,4GAAuE;QACvE,4GAEK;QACP,qEAAe;QAEf,4GAA4D;QAC5D,4GAAkE;QACpE,4DAAQ;QAER,gFAAoG;QACtG,4DAAM;;QAjC4C,0DAAyB;QAAzB,sFAAyB;QA4BnD,2DAAiC;QAAjC,iGAAiC;QACpB,0DAA0B;QAA1B,kGAA0B;QAG9C,0DAAe;QAAf,wEAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AChCyB;AACG;AACD;AAC4B;AACrB;AAKI;AACyB;;;;;;;;;;ICNzF,yEAAkE;IAAC,sEAAU;IAAA,4DAAK;;;IAClF,yEAAoC;IAAC,uDAAc;IAAA,4DAAK;;;IAAnB,0DAAc;IAAd,yFAAc;;;IAKnD,yEAAkE;IAAC,uEAAW;IAAA,4DAAK;;;IACnF,yEAAoC;IAAC,uDAAe;IAAA,4DAAK;;;IAApB,0DAAe;IAAf,0FAAe;;;IAKpD,yEAAkE;IAAC,kEAAM;IAAA,4DAAK;;;IAC9E,yEAAoC;IAAC,uDAAe;IAAA,4DAAK;;;IAApB,0DAAe;IAAf,0FAAe;;;IAKpD,yEAAkE;IAAC,yEAAa;IAAA,4DAAK;;;IACrF,yEAAoC;IAAC,uDAAwB;IAAA,4DAAK;;;IAA7B,0DAAwB;IAAxB,iGAAwB;;;IAK7D,oEAAuE;;;;IACvE,yEAAoC;IAClC,6EAA0F;IAAnC,qYAAkC;IAAE,gFAAoB;IAAA,4DAAS;IAC1H,4DAAK;;;IAGP,oEAA4D;;;IAC5D,oEAAkE;;;ADlBjE,MAAM,iBAAiB;IAU5B,YACU,GAAe,EACf,MAAiB,EACjB,IAA0B;QAF1B,QAAG,GAAH,GAAG,CAAY;QACf,WAAM,GAAN,MAAM,CAAW;QACjB,SAAI,GAAJ,IAAI,CAAsB;QAZpC,qBAAgB,GAAa,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,SAAS,CAAC,CAAC;QAEnF,eAAU,GAAG,IAAI,uEAAkB,CAAO,EAAE,CAAC,CAAC;QAC9C,aAAQ,GAAW,2EAAQ,EAAE,CAAC;QAC9B,oBAAe,GAAa,EAAE,CAAC;IASzB,CAAC;IAEP,QAAQ;QAEN,IAAI,CAAC,UAAU,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;QAC3C,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,WAAW,EAAE,KAAK,EAAE,KAAK,EAAE,CAAgB,CAAC,CAAC;QACnE,IAAI,CAAC,UAAU,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QAEjC,IAAI,CAAC,UAAU,CAAC,mBAAmB,GAAG,CAAC,IAAS,EAAE,YAAoB,EAAU,EAAE;YAChF,IAAI,YAAY,IAAI,WAAW,EAAE;gBAC/B,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,iBAAiB,EAAE,CAAC;aAC3D;YAED,IAAI,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,QAAQ,EAAE;gBAC1C,OAAO,IAAI,CAAC,YAAY,CAAC,CAAC,iBAAiB,EAAE,CAAC;aAC/C;YAED,OAAO,IAAI,CAAC,YAAY,CAAC,CAAC;QAC5B,CAAC,CAAC;QAEF,IAAI,CAAC,aAAa,EAAE,CAAC;IACvB,CAAC;IAED,aAAa;QAEX,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,mGAAsB,EAAE;YACvD,KAAK,EAAE,OAAO;YACd,IAAI,EAAE,eAAe;YACrB,YAAY,EAAE,IAAI;SACnB,CAAC,CAAC;QAGH,IAAI,CAAC,GAAG,CAAC,IAAI,CAAS,OAAO,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE;YAE7D,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC;YACjB,IAAI,CAAC,cAAc,EAAE,CAAC;YACtB,OAAO,CAAC,KAAK,EAAE,CAAC;QAClB,CAAC,CAAC;IACJ,CAAC;IAED,cAAc;QACZ,IAAI,CAAC,UAAU,CAAC,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,+CAA8C;IAClF,CAAC;IAED,kBAAkB,CAAC,IAAU;QAC3B,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,gFAAkB,EAAE;YACrD,KAAK,EAAE,OAAO;YACd,IAAI,EAAE,IAAI;SACX,CAAC,CAAC;QAEH,SAAS,CAAC,WAAW,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE;YACzC,IAAI,MAAM,EAAE;gBAEV,IAAI,GAAG,GACP;oBACE,EAAE,EAAE,IAAI,CAAC,EAAE;oBACX,KAAK,EAAE,MAAM,CAAC,KAAK;oBACnB,UAAU,EAAE,MAAM,CAAC,YAAY,CAAC,IAAI;iBACrC,CAAC;gBAEF,IAAI,CAAC,GAAG,CAAC,IAAI,CAAM,OAAO,EAAE,wBAAwB,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE;oBAC/E,IAAI,CAAC,GAAG,CAAC,KAAK,IAAI,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,sBAAsB,CAAC,EAAE;wBAC/D,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,0GAA0B,EAAE;4BAC3C,KAAK,EAAE,OAAO;yBACf,CAAC,CAAC;qBACJ;yBAAM;wBACL,IAAI,CAAC,aAAa,EAAE,CAAC;qBACtB;gBACH,CAAC,CAAC,CAAC;aAEJ;YACD,OAAO,CAAC,GAAG,CAAC,uBAAuB,EAAE,MAAM,CAAC,CAAC;QAE/C,CAAC,CAAC,CAAC;IACL,CAAC;;kFAxFU,iBAAiB;+GAAjB,iBAAiB;kEAOjB,2DAAO;kEACP,sEAAY;;;;;;QC1BvB,yEAAyE;QACvE,2EAAsG;QAGpG,2EAAkC;QAChC,2GAAkF;QAClF,2GAAwD;QAC1D,qEAAe;QAGf,2EAAmC;QACjC,2GAAmF;QACnF,2GAAyD;QAC3D,qEAAe;QAGf,2EAAmC;QACjC,2GAA8E;QAC9E,6GAAyD;QAC3D,qEAAe;QAGf,4EAA0C;QACxC,6GAAqF;QACrF,6GAAkE;QACpE,qEAAe;QAGf,4EAAqC;QACnC,6GAAuE;QACvE,6GAEK;QACP,qEAAe;QAEf,6GAA4D;QAC5D,8GAAkE;QACpE,4DAAQ;QAER,gFAAoG;QACtG,4DAAM;;QAvC4C,0DAAyB;QAAzB,sFAAyB;QAkCnD,2DAAiC;QAAjC,iGAAiC;QACpB,0DAA0B;QAA1B,kGAA0B;QAG9C,0DAAe;QAAf,wEAAe;;;;;;;;;;;;;;;;;;;;;;;;;AChC3B,MAAM,0BAA0B;IAErC,YAAoB,SAAmD;QAAnD,cAAS,GAAT,SAAS,CAA0C;IAAI,CAAC;IAE5E,QAAQ;IACR,CAAC;IAED,SAAS;QACP,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;IACzB,CAAC;;oGATU,0BAA0B;wHAA1B,0BAA0B;QCRvC,yEAAmG;QACjG,yEACwC;QACtC,sEAAK;QACH,oEAAG;QACD,kXACF;QAAA,4DAAI;QACN,4DAAM;QACR,4DAAM;QACR,4DAAM;QACN,yEAA6C;QAC3C,yEAAiF;QAC/E,4EAAuI;QAAA,gEAAK;QAAA,4DAAS;QACvJ,4DAAM;QACR,4DAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACTwD;;;;;;;;;;;;;;;ICKlD,6EAC2B;IAAzB,gUAAwB;IAAC,qEAAU;IAAA,4DAAS;;;IAchD,qFAAyC;;;IAIzC,oFAAsC;;ADfzC,MAAM,sBAAsB;IAuBjC,YACU,MAAiB,EACjB,GAAe;QADf,WAAM,GAAN,MAAM,CAAW;QACjB,QAAG,GAAH,GAAG,CAAY;QAxBzB,cAAS,GAAG;YACV,KAAK,EAAE,OAAO;YACd,IAAI,EAAE,MAAM;SACb;QACD,gBAAW,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;IAqB/B,CAAC;IAhBL,0CAA0C;IAC1C,IAA2C,UAAU,CAAC,OAAyB;QAC5E,IAAG,OAAO,EAAE;YACP,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;SAC5B;IACJ,CAAC;IAED,IAA4C,WAAW,CAAC,OAA0B;QAChF,IAAG,OAAO,EAAE;YACP,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC;SAC7B;IACJ,CAAC;IAOA,QAAQ;IACR,CAAC;IAED,cAAc,CAAC,GAAQ;QACrB,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACvB,IAAI,CAAC,WAAW,GAAG,GAAG,CAAC,KAAK,CAAC;IAC/B,CAAC;IAED,YAAY;QACV,IAAI,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,uEAAe,EAAE;YAChD,KAAK,EAAE,OAAO;YACd,YAAY,EAAE,KAAK;SACpB,CAAC,CAAC;QAGH,SAAS,CAAC,WAAW,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE;YACvC,IAAI,IAAI,EAAE;gBACR,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;aACtB;QACH,CAAC,CAAC,CAAC;IAEL,CAAC;IAED,SAAS,CAAC,IAAS;QACjB,IAAI,YAAY,GAAQ,EAAE,CAAC;QAC3B,YAAY,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QAC9B,YAAY,CAAC,MAAM,GAAG,EAAE,CAAC;QACzB,YAAY,CAAC,MAAM,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC7C,YAAY,CAAC,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;QAE3C,IAAI,CAAC,GAAG,CAAC,IAAI,CAAM,cAAc,EAAE,QAAQ,EAAE,YAAY,EAAG,IAAI,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE;YACnF,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE;gBACjB,iDAAiD;gBACjD,mCAAmC;aACpC;iBACI;gBACH,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE,CAAC;aAC9B;QACH,CAAC,EAAE,KAAK,CAAC,EAAE;YACT,oCAAoC;YACpC,2FAA2F;QAC7F,CAAC,CAAC;IACJ,CAAC;;4FAtEU,sBAAsB;oHAAtB,sBAAsB;;;;;;;;QCdnC,yEACsC;QAEpC,8EAAwG;QAEtG,yEAA6B;QAC3B,yEAA8D;QAC5D,yEAAwE;QACtE,wEAA8B;QAAA,+EAAoB;QAAA,4DAAK;QACvD,0EAAiC;QAC/B,wHAC8C;QAChD,4DAAO;QACT,4DAAM;QACR,4DAAM;QAEN,yEAAgC;QAC9B,kGAA0G;QAAlC,wKAAU,0BAAsB,IAAC;QACrG,yFACY;QAAA,iEAAK;QAAA,4DAAoB;QACrC,yFAAoE;QAAA,yEAAa;QAAA,4DAAoB;QACzG,4DAA0B;QAC5B,4DAAM;QAEN,qIAEc;QAEd,qIAEc;QAChB,4DAAM;QACR,4DAAW;QACb,4DAAM;;QAvB+B,0DAA8C;QAA9C,wGAA8C;QAQ5B,0DAAyB;QAAzB,sFAAyB;QAEzB,0DAAwB;QAAxB,qFAAwB;QAI5D,0DAAkD;QAAlD,yGAAkD;QAIlD,0DAAiD;QAAjD,wGAAiD;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC3BX;AACgB;;;;;;;;;;;;;ICiB/D,iFAAmD;IACjD,uDACF;IAAA,4DAAa;;;IAFwB,yEAAa;IAChD,0DACF;IADE,uFACF;;ADXH,MAAM,kBAAkB;IAM7B,YACU,SAA2C,EAC3C,GAAe,EACS,IAAS;QAFjC,cAAS,GAAT,SAAS,CAAkC;QAC3C,QAAG,GAAH,GAAG,CAAY;QACS,SAAI,GAAJ,IAAI,CAAK;QAkB3C,mBAAc,GAAgB,IAAI,uDAAW,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,+DAAmB,CAAC,CAAC;IAlBtD,CAAC;IAEhD,QAAQ;QACN,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;QAE7B,IAAI,CAAC,GAAG,CAAC,GAAG,CAAQ,cAAc,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE;YAClE,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC;YAEhB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAErD,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;gBACvC,OAAO,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC;YAC9C,CAAC,CAAC,CAAC;YACH,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAChC,CAAC,CAAC,CAAC;IACL,CAAC;IAKD,SAAS;QACP,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;IACzB,CAAC;IAED,OAAO;QACL,OAAO,IAAI;IACb,CAAC;IAED,QAAQ;QAEN,IAAI,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC;QAC3C,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QAEvB,IAAI,UAAU,GACd;YACE,OAAO,EAAE,KAAK;YACd,cAAc,EAAE,UAAU;SAC3B;QAED,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;IAEnC,CAAC;;oFAlDU,kBAAkB,qVASnB,qEAAe;gHATd,kBAAkB;QCT/B,wEAAqB;QACnB,iFAA2D;QACzD,qFAA8C;QAC5C,sEAAK;QACH,uEAAM;QAAA,8EAAmB;QAAA,4DAAO;QAClC,4DAAM;QACR,4DAAkB;QACpB,4DAAc;QAChB,4DAAK;QAGL,yEAAmG;QACjG,yEACwC;QACtC,wEAAuB;QAAA,uDAAc;QAAA,4DAAK;QAC1C,0EAA0B;QACxB,qFAA4C;QAC1C,oFAA2F;QAA1B,iMAAyB;QACxF,+HAEa;QACf,4DAAa;QACf,4DAAiB;QACnB,4DAAM;QAGN,2EAAoE;QAClE,2EAA4D;QAC1D,8EACoD;QAAtB,2IAAS,eAAW,IAAC;QAAC,kEAAM;QAAA,4DAAS;QACrE,4DAAM;QACN,2EAA4D;QAC1D,8EACoG;QAArC,2IAAS,cAAU,IAAC;QAAiB,kEAAM;QAAA,4DAAS;QACrH,4DAAM;QACR,4DAAM;QACR,4DAAM;QACR,4DAAM;;QAvBqB,0DAAc;QAAd,0EAAc;QAGC,0DAA8B;QAA9B,2FAA8B;QAClC,0DAAO;QAAP,6EAAO;QAc7B,0DAAuB;QAAvB,oFAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;AChCkC;AAEJ;;;;;;;;;;ICczD,2FAA6G;IACzG,uDACJ;IAAA,4DAAmB;;;IAFsE,+EAAmB;IACxG,0DACJ;IADI,wFACJ;;ADTL,MAAM,oBAAoB;IAQ/B,YACS,SAA6C,EACpB,IAAS;QADlC,cAAS,GAAT,SAAS,CAAoC;QACpB,SAAI,GAAJ,IAAI,CAAK;QAR3C,aAAQ,GAAY,oEAAQ,EAAE,CAAC,CAAC,mFAAmF;IAQrE,CAAC;IAE/C,SAAS;QACP,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;QACvB,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC;IAChC,CAAC;IAED,SAAS;QACP,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IAC1C,CAAC;IAED,QAAQ;QAEN,KAAI,IAAI,IAAI,IAAI,IAAI,CAAC,QAAQ,EAC7B;YACE,IAAG,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,WAAW,EAAC;gBACpC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,IAAI;aAC9B;SACF;QACD,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC;IAChC,CAAC;;wFA9BU,oBAAoB,uMAUrB,qEAAe;kHAVd,oBAAoB;QCVjC,wEAAqB;QACnB,iFAA2D;QACzD,qFAA8C;QAC5C,uEAAM;QAAA,sEAAW;QAAA,4DAAO;QAC1B,4DAAkB;QACpB,4DAAc;QAChB,4DAAK;QAEL,yEAAmG;QAC/F,yEAC0C;QACtC,yEAA0B;QACtB,uEAA6F;QAAA,uDAC7F;QAAA,4DAAI;QACR,4DAAM;QACN,sFAC2C;QADmD,yMAA0B;QAEpH,4IAEmB;QACvB,4DAAkB;QACtB,4DAAM;QACV,4DAAM;QAEN,0EAAoE;QAClE,2EAA4D;QAC1D,8EACoD;QAAtB,6IAAS,eAAW,IAAC;QAAC,kEAAM;QAAA,4DAAS;QACrE,4DAAM;QACN,2EAA4D;QAC1D,8EACoD;QAAA,kEAAM;QAAA,4DAAS;QACrE,4DAAM;QACR,4DAAM;;QArBmG,0DAC7F;QAD6F,yFAC7F;QAE0F,0DAA0B;QAA1B,qFAA0B;QAExC,0DAAW;QAAX,iFAAW;QAc7F,0DAAiC;QAAjC,8FAAiC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC9BsB;AACF;AACG;AAEe;AAEX;AACqB;;;;;;;;;;;;ICOzE,yEAAkE;IAAC,sEAAU;IAAA,4DAAK;;;IAClF,yEAAoC;IAAC,uDAAc;IAAA,4DAAK;;;IAAnB,0DAAc;IAAd,yFAAc;;;IAKnD,yEAAkE;IAAC,uEAAW;IAAA,4DAAK;;;IACnF,yEAAoC;IAAC,uDAAe;IAAA,4DAAK;;;IAApB,0DAAe;IAAf,0FAAe;;;IAKpD,yEAAkE;IAAC,kEAAM;IAAA,4DAAK;;;IAC9E,yEAAoC;IAAC,uDAAe;IAAA,4DAAK;;;IAApB,0DAAe;IAAf,0FAAe;;;IAKpD,yEAAkE;IAAC,6EAAiB;IAAA,4DAAK;;;IACzF,yEAAoC;IAAC,uDAAsC;IAAA,4DAAK;;;IAA3C,0DAAsC;IAAtC,+GAAsC;;;IAK3E,yEAAkE;IAAC,iEAAK;IAAA,4DAAK;;;IAC7E,yEAAoC;IAAC,uDAAqB;IAAA,4DAAK;;;IAA1B,0DAAqB;IAArB,gGAAqB;;;IAK1D,oEAAuE;;;;IACvE,yEAAoC;IAClC,6EAAuE;IAA/B,8XAA8B;IAAC,sEAAW;IAAA,4DAAS;IAC7F,4DAAK;;;IAGP,oEAA4D;;;IAC5D,oEAAkE;;;ADnCvE,MAAM,cAAc;IAazB,YACU,GAAe,EACf,MAAiB,EACjB,IAA0B;QAF1B,QAAG,GAAH,GAAG,CAAY;QACf,WAAM,GAAN,MAAM,CAAW;QACjB,SAAI,GAAJ,IAAI,CAAsB;QAfpC,qBAAgB,GAAa,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,SAAS,CAAC,CAAC;QAEnG,eAAU,GAAG,IAAI,uEAAkB,CAAO,EAAE,CAAC,CAAC;QAC9C,aAAQ,GAAW,oEAAQ,EAAE,CAAC;QAC9B,oBAAe,GAAa,EAAE,CAAC;QAE/B,iBAAY,GAAY,KAAK,CAAC;IASU,CAAC;IAGzC,QAAQ;QACN,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,SAAS,EAAE;YACrC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,SAAS,CAAC,CAAC,KAAK,EAAE,EAAE;gBAExC,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;gBACxB,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;oBACtB,IAAI,CAAC,WAAW,EAAE,CAAC;iBACpB;YAEH,CAAC,CAAC;SACH;aACI;YACH,IAAI,CAAC,WAAW,EAAE,CAAC;SACpB;IACH,CAAC;IAED,WAAW;QACT,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;QACzB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC;QAC/C,IAAI,CAAC,UAAU,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;QAC3C,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,WAAW,EAAE,KAAK,EAAE,KAAK,EAAE,CAAgB,CAAC,CAAC;QACnE,IAAI,CAAC,UAAU,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QAEjC,IAAI,CAAC,UAAU,CAAC,mBAAmB,GAAG,CAAC,IAAS,EAAE,YAAoB,EAAU,EAAE;YAChF,IAAI,YAAY,IAAI,WAAW,EAAE;gBAC/B,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,iBAAiB,EAAE,CAAC;aAC3D;YAED,IAAI,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,QAAQ,EAAE;gBAC1C,OAAO,IAAI,CAAC,YAAY,CAAC,CAAC,iBAAiB,EAAE,CAAC;aAC/C;YAED,OAAO,IAAI,CAAC,YAAY,CAAC,CAAC;QAC5B,CAAC,CAAC;QACN,QAAQ,CAAC;QACL,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,4FAAsB,EAAE;YACvD,KAAK,EAAE,OAAO;YACd,IAAI,EAAE,eAAe;YACrB,YAAY,EAAE,IAAI;SACnB,CAAC,CAAC;QAEH,IAAI,GAAG,GAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC;QAE7C,IAAI,CAAC,GAAG,CAAC,IAAI,CAAS,OAAO,EAAE,aAAa,EAAE,EAAE,YAAY,EAAE,GAAG,EAAE,EAAE,IAAI,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE;YAEzF,IAAI,CAAC,eAAe,GAAG,EAAE,CAAC;YAE1B,KAAK,IAAI,IAAI,IAAI,IAAI,CAAC,QAAQ;gBAC5B,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAEvC,gEAAgE;YAChE,qEAAqE;YACrE,KAAK,IAAI,GAAG,IAAI,GAAG,EAAE;gBACnB,IAAI,QAAQ,GAAG,GAAG,CAAC,KAAK,CAAC;gBACzB,GAAG,CAAC,KAAK,GAAG,EAAE,CAAC;gBACf,KAAK,IAAI,IAAI,IAAI,QAAQ;oBACvB,IAAI,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,IAAI,CAAC;wBACrC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;aAC1B;YAED,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC;YACjB,IAAI,CAAC,cAAc,EAAE,CAAC;YACtB,OAAO,CAAC,KAAK,EAAE,CAAC;QAClB,CAAC,CAAC;IACN,CAAC;IAED,cAAc;QACZ,IAAI,CAAC,UAAU,CAAC,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,+CAA8C;IAClF,CAAC;IAED,cAAc,CAAC,IAAU;QACvB,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,sFAAoB,EAAE;YACvD,KAAK,EAAE,OAAO;YACd,IAAI,EAAE,IAAI;SACX,CAAC,CAAC;QAEH,SAAS,CAAC,WAAW,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE;YACzC,IAAI,MAAM,EAAE;gBACV,IAAI,YAAY,GAAG,EAAE,CAAC;gBAEtB,KAAK,IAAI,IAAI,IAAI,IAAI,CAAC,QAAQ;oBAC5B,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM;wBACtB,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC;gBAE7B,IAAI,GAAG,GACP;oBACE,QAAQ,EAAE,YAAY;oBACpB,MAAM,EAAE,MAAM;oBACd,EAAE,EAAE,IAAI,CAAC,EAAE;oBACX,KAAK,EAAE,IAAI,CAAC,KAAK;iBACpB,CAAC;gBAEF,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,4FAAsB,EAAE;oBACvD,KAAK,EAAE,OAAO;oBACd,IAAI,EAAE,cAAc;oBACpB,YAAY,EAAE,IAAI;iBACnB,CAAC,CAAC;gBAEH,IAAI,CAAC,GAAG,CAAC,IAAI,CAAM,OAAO,EAAE,aAAa,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE;oBACpE,IAAI,QAAQ,GAAG,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC;oBAChC,GAAG,CAAC,KAAK,GAAG,EAAE,CAAC;oBACf,KAAK,IAAI,IAAI,IAAI,QAAQ;wBACvB,IAAI,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,IAAI,CAAC;4BACrC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;oBACzB,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC;oBAEvB,IAAI,GAAG,GAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC;oBAE7C,IAAI,CAAC,GAAG,CAAC,IAAI,CAAS,OAAO,EAAE,aAAa,EAAE,EAAE,YAAY,EAAE,GAAG,EAAE,EAAE,IAAI,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE;wBAEzF,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC;wBACjB,IAAI,CAAC,cAAc,EAAE,CAAC;wBAEtB,OAAO,CAAC,KAAK,EAAE,CAAC;oBAClB,CAAC,CAAC,CAAC;gBACL,CAAC,CAAC,CAAC;aAEJ;YACD,OAAO,CAAC,GAAG,CAAC,uBAAuB,EAAE,MAAM,CAAC,CAAC;QAC/C,CAAC,CAAC,CAAC;IACL,CAAC;;4EA3IU,cAAc;4GAAd,cAAc;kEAUd,2DAAO;kEACP,qEAAY;;;;;;QC5BzB,yEACsC;QAEpC,8EAAwG;QAEtG,yEAA6B;QAC3B,yEAA8B;QAC5B,yEAA6D;QAC3D,wEAA8B;QAAA,uDAAiC;QAAA,4DAAK;QACtE,4DAAM;QACN,yEAAuF;QACrF,2EAAsG;QAGpG,2EAAkC;QAChC,0GAAkF;QAClF,2GAAwD;QAC1D,qEAAe;QAGf,6EAAmC;QACjC,0GAAmF;QACnF,2GAAyD;QAC3D,qEAAe;QAGf,6EAAmC;QACjC,0GAA8E;QAC9E,2GAAyD;QAC3D,qEAAe;QAGf,6EAA2C;QACzC,0GAAyF;QACzF,2GAAgF;QAClF,qEAAe;QAGf,6EAAyC;QACvC,0GAA6E;QAC7E,2GAA+D;QACjE,qEAAe;QAGf,6EAAqC;QACnC,0GAAuE;QACvE,2GAEK;QACP,qEAAe;QAEf,2GAA4D;QAC5D,2GAAkE;QACpE,4DAAQ;QAER,gFAAoG;QACtG,4DAAM;QACR,4DAAM;QACR,4DAAM;QACR,4DAAW;QACb,4DAAM;;QApDkC,0DAAiC;QAAjC,sGAAiC;QAGf,0DAAyB;QAAzB,sFAAyB;QAwCnD,2DAAiC;QAAjC,iGAAiC;QACpB,0DAA0B;QAA1B,kGAA0B;QAG9C,0DAAe;QAAf,wEAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;AC9CjC,MAAM,YAAY;IAOvB,YACU,aAAmC,EACnC,GAAe;QADf,kBAAa,GAAb,aAAa,CAAsB;QACnC,QAAG,GAAH,GAAG,CAAY;QARzB,UAAK,GAAG,sCAAsC,CAAC;QAI/C,cAAS,GAAG,KAAK,EAAC,mCAAmC;IAK/C,CAAC;;wEAVI,YAAY;0GAAZ,YAAY;QCTzB,2EAA+B;QAC/B,yEAA2B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACA+B;AAEX;AACgC;AACtB;AACA;AACgC;AAC1B;AACY;AACQ;AACS;AACd;AACT;AACe;AACxB;AACN;AAC6B;AACvB;AACN;AACwB;AACmC;AAChC;AACrB;AACqB;AACN;AACxB;AAC2B;AACG;AAC0B;AACZ;AACN;AACQ;AACC;AAChC;AACE;AACX;AACG;AACM;AACwH;AACnH;AACA;AACH;AACL;AACH;AACe;AACnB;AACU;AACf;AACsB;AAC6B;AACiB;AACjE;AACc;AACL;AACE;AACoB;AACM;AACR;AACc;AACM;AACS;AAC9C;AAC6B;AACN;AAC0B;AACC;AACrD;AACuC;AACU;AACvB;AAC0C;AACpE;AACuC;AACN;AACN;AAC5C;AAC6B;AACH;AACsB;AACA;AACoB;AACzD;AACoB;AACA;AACvB;AACoC;AAC9B;AAC2B;AACJ;AACY;AAC6B;AACd;AACvB;AACF;AACG;AACG;AACT;AACS;AACsC;AACF;AACtD;AACQ;AACE;AACG;;AA4H/E,MAAM,SAAS;;kEAAT,SAAS;uGAAT,SAAS,cAFR,wDAAY;4GARb;QACT;YACE,OAAO,EAAE,oEAAiB;YAC1B,QAAQ,EAAE,oDAAM,CAAC,CAAC,CAAC,2DAAsB,CAAC,CAAC,CAAC,2DAAsB;YAClE,KAAK,EAAE,IAAI;SACZ;QACD,yDAAW;KACZ,YAjBQ;YACP,mEAAgB;YAChB,8DAAgB;YAChB,sEAAa;YACb,6DAAc;YACd,oEAAgB;YAChB,2FAAuB;YACvB,yDAAW;YACX,iEAAmB;SACpB;oIAWU,SAAS,mBAxHlB,wDAAY;QACZ,kEAAc;QACd,mEAAc;QACd,gEAAa;QACb,8EAAiB;QACjB,4EAAiB;QACjB,6DAAY;QACZ,sEAAe;QACf,iFAAkB;QAClB,4EAAiB;QACjB,yEAAgB;QAChB,kEAAc;QACd,wEAAc;QACd,sEAAe;QACf,wEAAmB;QACnB,wEAAmB;QACnB,kFAA6B;QAC7B,4EAAuB;QACvB,2EAAsB;QACtB,0FAAmB;QACnB,0EAAqB;QACrB,kFAAe;QACf,iFAAkB;QAClB,kGAAoB;QACpB,8EAAiB;QACjB,sEAAe;QACf,4GAAuB;QACvB,qHAA0B;QAC1B,2GAAsB;QACtB,mGAAoB;QACpB,oFAAoB;QACpB,qFAAkB;QAClB,wFAAmB;QACnB,2FAAoB;QACpB,6FAAsB;QACtB,2FAAoB;QACpB,sEAAe;QACf,gEAAa;QACb,2FAAmB;QACnB,wFAAkB;QAClB,4FAAsB;QACtB,yGAAsB;QACtB,2HAAyB;QACzB,8EAAkB;QAClB,8FAAmB;QACnB,uFAAiB;QACjB,qGAAqB;QACrB,+GAAoB;QACpB,gIAAyB;QACzB,gEAAa;QACb,8EAAiB;QACjB,yEAAgB;QAChB,2EAAgB;QAChB,+FAAoB;QACpB,qGAAsB;QACtB,6FAAsB;QACtB,2GAA0B;QAC1B,iHAA4B;QAC5B,0HAA4B;QAC5B,4EAAiB;QACjB,yGAAuB;QACvB,mGAAqB;QACrB,6HAA6B;QAC7B,6HAA0B;QAC1B,yEAAgB;QAChB,gHAAyB;QACzB,yHAAsB;QACtB,mGAAqB;QACrB,6IAA6B;QAC7B,yEAAgB;QAChB,gHAAyB;QACzB,0GAAuB;QACvB,oGAAgB;QAChB,qFAAoB;QACpB,kFAAmB;QACnB,wGAAyB;QACzB,wGAAuB;QACvB,4HAA6B;QAC7B,mEAAc;QACd,uFAAkB;QAClB,uFAAoB;QACpB,gEAAa;QACb,oGAAsB;QACtB,sEAAe;QACf,iGAAqB;QACrB,6FAAsB;QACtB,yGAAsB;QACtB,sIAA+B;QAC/B,uHAAsB;QACtB,iGAAsB;QACtB,+FAAgB;QAChB,kGAAiB;QACjB,qGAAkB;QAClB,4FAAe;QACf,qGAAkB;QAClB,2IAA2B;QAC3B,yIAA0B;QAC1B,6FAAoB;QACpB,gGAAuB,aAGvB,mEAAgB;QAChB,8DAAgB;QAChB,sEAAa;QACb,6DAAc;QACd,oEAAgB;QAChB,2FAAuB;QACvB,yDAAW;QACX,iEAAmB;;;;;;;;;;;;;;;;;;;;;;;;AC9MhB,MAAM,oBAAoB;IAG/B,YAAoB,KAAqB,EAAU,MAAc,EAAU,IAA0B;QAAjF,UAAK,GAAL,KAAK,CAAgB;QAAU,WAAM,GAAN,MAAM,CAAQ;QAAU,SAAI,GAAJ,IAAI,CAAsB;QAErG,SAAI,GAAmB,EAAE,CAAC;IAF+E,CAAC;IAI1G,WAAW;QACT,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IACnD,CAAC;IACD,QAAQ;QACN,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;YACpB,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;YACjD,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC;SAChB;QAED,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW;aAClC,SAAS,CAAC,MAAM,CAAC,EAAE;YAClB,IAAI,MAAM,CAAC,UAAU,EAAE;gBACrB,IAAI,KAAK,GAAG,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBAEzC,IAAI,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;gBACpB,IAAI,KAAK,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC1G,IAAI,EAAE,GAAG,EAAE,CAAC;gBAEZ,KAAK,IAAI,GAAG,IAAI,KAAK,EAAE;oBACrB,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,kBAAkB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;iBACzC;gBAED,sEAAsE;gBACtE,oHAAoH;gBACpH,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE;oBACzD,UAAU,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;gBACjF,CAAC,CAAC,CAAC,CAAC;gBAEJ,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;oBACrD,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;iBACvB;aACF;iBACI;gBACH,mCAAmC;gBACnC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;aAC7B;QACH,CAAC,CAAC,CAAC,CAAC;IAER,CAAC;IAED,KAAK;QACH,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;IACxB,CAAC;;wFAjDU,oBAAoB;kHAApB,oBAAoB;QCVjC,yEAAiE;QAC/D,8EAAkC;QAChC,iFAAgB;QACd,oEAAG;QAAA,0EAAe;QAAA,4DAAI;QACxB,4DAAiB;QACjB,mFAAkB;QAChB,oEAAG;QAAA,mIAAwE;QAAA,4DAAI;QAC/E,gEAAK;QACL,uEAAgD;QAC9C,wEAA0E;QAAlB,wIAAS,WAAO,IAAC;QAAC,mEAAO;QAAA,4DAAI;QACvF,4DAAI;QACN,4DAAmB;QACrB,4DAAW;QACb,4DAAM;;;;;;;;;;;;;;;;;;;;;ACZqD;;;;;AAOpD,MAAM,sBAAsB;IAGjC,YAA4C,IAA0B;QAA1B,SAAI,GAAJ,IAAI,CAAsB;IAAI,CAAC;IAE3E,QAAQ;IACR,CAAC;;4FANU,sBAAsB,kEAGb,qEAAe;oHAHxB,sBAAsB;QCRnC,uEAAoH;QAClH,uDAAoC;QAAA,4DAAI;QAC1C,kEAAoG;QAEpG,yEAAmG;QACjG,yEACwC;QACtC,yEAA0B;QACxB,wEAA0E;QACxE,uDACF;QAAA,4DAAK;QACP,4DAAM;QAER,4DAAM;QACR,4DAAM;QACN,yEAAoE;QAClE,yEAA4D;QAC1D,6EAC+D;QAAA,wDAAe;QAAA,4DAAS;QACzF,4DAAM;QACN,0EAA4D;QAC1D,6EAC2F;QAAA,wDAAgB;QAAA,4DAAS;QACtH,4DAAM;QACR,4DAAM;;QAvBJ,0DAAoC;QAApC,6GAAoC;QAQ9B,0DACF;QADE,yFACF;QAOM,0DAA0B;QAA1B,mFAA0B;QAC6B,0DAAe;QAAf,gFAAe;QAGtE,0DAAyB;QAAzB,kFAAyB;QAC0D,0DAAgB;QAAhB,iFAAgB;;;;;;;;;;;;;;;;;;;;;;;;;ACdxG,MAAM,sBAAsB;IAEjC,YAAoB,SAA+C;QAA/C,cAAS,GAAT,SAAS,CAAsC;IAAI,CAAC;IAExE,QAAQ;IACR,CAAC;IAED,SAAS;QACP,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;IACzB,CAAC;;4FATU,sBAAsB;oHAAtB,sBAAsB;QCRnC,uEAEkC;QAAA,qEAAU;QAAA,4DAAI;QAEhD,yEAAmG;QACjG,yEACwC;QACtC,sEAAK;QACH,oEAAG;QACD,mHAAuD;QAAA,uEAChB;QAAA,+DAAI;QAAA,4DAAI;QAAA,gEAAM;QACvD,4DAAI;QACJ,qEAAG;QACD,iHAAoD;QAAA,wEAAwC;QAAA,gEAAI;QAAA,4DAAI;QAAA,iEAAM;QAC5G,4DAAI;QACN,4DAAM;QACR,4DAAM;QACR,4DAAM;QACN,0EAA6C;QAC3C,0EAAiF;QAC/E,6EAA+E;QAA5C,+IAAS,eAAW,IAAC;QAAuB,iEAAK;QAAA,4DAAS;QAC/F,4DAAM;QACR,4DAAM;;;;;;;;;;;;;;;;;;;;;;;;;AClBmF;;;;;;;;;ICczE,0EAA0F;IACxF,qEAAkF;IACpF,4DAAM;;;IAF2B,2FAA+B;;;IAKlE,0EACqD;IACnD,oEAAG;IAAA,uDAAc;IAAA,4DAAI;IACrB,oEAAG;IAAA,uDAAc;IAAA,4DAAI;IACvB,4DAAM;;;;IAHJ,yGAAkD;IAC/C,0DAAc;IAAd,8EAAc;IACd,0DAAc;IAAd,8EAAc;;;;IAlBzB,yEACyG;IACvG,uEACgJ;IAC9I,oEAC2I;IAC3I,0EACqE;IACnE,0EAAkD;IAChD,6EAAiC;IAAA,uDAAc;IAAA,4DAAS;IACxD,8HAEM;IACR,4DAAM;IAEN,8HAIM;IACR,4DAAM;IACR,4DAAI;IACN,4DAAM;;;;IArBJ,yGAAkD;IAC/C,0DAAsD;IAAtD,kHAAsD;IAE5B,0DAAe;IAAf,wIAAe;IAKL,0DAAc;IAAd,8EAAc;IACmB,0DAAsB;IAAtB,qFAAsB;IAKhC,0DAAa;IAAb,kFAAa;;;IAjB/E,yEACkB;IAChB,wHAsBM;IACR,4DAAM;;;IAvBkB,0DAAM;IAAN,2EAAM;;ADG7B,MAAM,qBAAqB;IAKhC,YAAoB,MAAiB,EAAU,gBAAmC;QAA9D,WAAM,GAAN,MAAM,CAAW;QAAU,qBAAgB,GAAhB,gBAAgB,CAAmB;QAH3E,aAAQ,GAAG,EAAE,CAAC;QACd,cAAS,GAAG,SAAS,CAAC;IAEyD,CAAC;IACvF,WAAW;QACT,IAAG,IAAI,CAAC,SAAS,IAAI,SAAS;YAC5B,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAClC,CAAC;IAED,OAAO;QACL,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,mGAAsB,EAAE;YACvD,KAAK,EAAE,OAAO;YACd,IAAI,EAAE,mBAAmB;YACzB,YAAY,EAAE,KAAK;SACpB,CAAC,CAAC;QACH,IAAI,CAAC,gBAAgB,CAAC,QAAQ,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE;YAClD,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC;YACvB,UAAU,CAAC,GAAG,EAAE,GAAG,OAAO,CAAC,KAAK,EAAE,GAAC,EAAE,GAAG,CAAC;QAC3C,CAAC,CAAC;IACJ,CAAC;IAED,QAAQ;QAEN,gEAAgE;QAEhE,IAAI,CAAC,OAAO,EAAE,CAAC;IACjB,CAAC;;0FA5BU,qBAAqB;mHAArB,qBAAqB;QCXlC,yEAA+E;QAC7E,yEAAmG;QACjG,kEAAqD;QACrD,yEAE0E;QACxE,iHAyBM;QACR,4DAAM;QAER,4DAAM;QACR,4DAAM;;QA7BqB,0DAAW;QAAX,iFAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACFmD;AAID;;;;;;;;;;ICC5E,2EAA6D;IAAA,uDAAuD;;IAAA,4DAAO;;;IAA9D,0DAAuD;IAAvD,2NAAuD;;;IAThI,yEAAyE;IACvE,yEAAmG;IACjG,yEACmD;IACjD,yEAA0D;IACxD,yEAAY;IACV,4EAA2E;IAAA,uDAAgB;IAAA,4DAAS;IACpG,sEAAK;IACH,uEAAM;IAAA,uEAAsE;IAAA,+EAAsB;IAAA,4DAAI;IAAA,4DAAO;IAC7G,uHAA2H;IAC7H,4DAAM;IACR,4DAAM;IACN,0EAAyC;IACvC,2EAAyB;IAAA,wDAA+B;IAAA,4DAAM;IAChE,4DAAM;IACV,4DAAM;IACN,4DAAM;IACN,2EACgE;IAC9D,yEAAgG;IAClG,4DAAM;IAER,4DAAM;IACR,4DAAM;;;IAjB+E,0DAAgB;IAAhB,oFAAgB;IAGlF,0DAA0B;IAA1B,2HAA0B;IAIV,0DAA+B;IAA/B,iIAA+B;IAMU,0DAAgB;IAAhB,qJAAgB;;ADJrF,MAAM,iBAAiB;IAM5B,YAAoB,MAAiB,EAAU,gBAAkC,EAAU,KAAqB,EACtG,GAAe,EAAU,SAAuB;QADtC,WAAM,GAAN,MAAM,CAAW;QAAU,qBAAgB,GAAhB,gBAAgB,CAAkB;QAAU,UAAK,GAAL,KAAK,CAAgB;QACtG,QAAG,GAAH,GAAG,CAAY;QAAU,cAAS,GAAT,SAAS,CAAc;QALnD,WAAM,GAAS,SAAS,CAAC;IAK8B,CAAC;IAE/D,QAAQ;QAEN,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE;YACxC,IAAI,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;YAEtB,IAAI,EAAE,IAAI,SAAS;gBACjB,OAAO;YAET,IAAI,GAAG,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC;YAGvB,IAAI,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,mGAAsB,EAAE;gBACrD,KAAK,EAAE,OAAO;gBACd,IAAI,EAAE,uBAAuB;gBAC7B,YAAY,EAAE,KAAK;aACpB,CAAC,CAAC;YAEH,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE;gBACxD,IAAI,MAAM,EAAE;oBACV,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;iBACtB;gBACD,UAAU,CAAC,GAAG,EAAE,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;gBAE5C,qBAAqB;gBACrB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBAEzC,IAAI,CAAC,mBAAmB,EAAE,CAAC;YAC7B,CAAC,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC;IAED,MAAM,CAAC,MAAM;QACX,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACzB,OAAO,IAAI,CAAC,SAAS,CAAC,8BAA8B,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACpE,CAAC;IAEK,mBAAmB;;;YACvB,IAAI,WAAI,CAAC,MAAM,0CAAE,iBAAiB,MAAI,UAAI,CAAC,MAAM,0CAAE,eAAe,GAAE;gBAClE,MAAM,IAAI,GAA2B,MAAM,8EAAa,CAAC;oBACvD,GAAG,EAAE,UAAI,CAAC,MAAM,0CAAE,eAAe;oBACjC,KAAK,EAAE,GAAG,UAAI,CAAC,MAAM,0CAAE,iBAAiB,cAAc;oBACtD,cAAc,EAAE,KAAK;oBACrB,SAAS,EAAE,CAAC,UAAI,CAAC,MAAM,0CAAE,iBAAiB,CAAC;oBAC3C,iBAAiB,EAAE,CAAC;iBACrB,CAA2B,CAAC;gBAE5B,IAAI,WAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,QAAQ,0CAAE,MAAM,IAAG,CAAC,EAAE;oBAC/B,MAAM,QAAQ,GAAS,iBAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,QAAQ,CAAC,CAAC,CAAC,0CAAE,UAAU,0CAAG,UAAI,CAAC,MAAM,0CAAE,iBAAiB,CAAC,KAAI,IAAI;oBAC9F,IAAI,CAAC,MAAM,CAAC,YAAY,GAAG,QAAQ,CAAC;iBACpC;aACH;;KACF;;kFA5DU,iBAAiB;+GAAjB,iBAAiB;QCf9B,8GAuBM;;QAvBqD,4EAAY;;;;;;;;;;;;;;;;;;;;;ACOhE,MAAM,kBAAkB;IAE7B,gBAAgB,CAAC;IAEjB,QAAQ;IACR,CAAC;;oFALU,kBAAkB;gHAAlB,kBAAkB;QCP/B,2EAA+B;;;;;;;;;;;;;;;;;;;;;ACC4B;;;;;AAOpD,MAAM,mBAAmB;IAE9B,YAA4C,IAAkB;QAAlB,SAAI,GAAJ,IAAI,CAAc;IAAI,CAAC;IAGnE,QAAQ;IACR,CAAC;;sFANU,mBAAmB,kEAEV,qEAAe;iHAFxB,mBAAmB;QCRhC,uEACoC;QAAA,uDAAoC;QAAA,4DAAI;QAE5E,yEAAmG;QAC/F,yEAAuH;QACnH,yEAA0B;QACtB,wEAAsD;QAClD,uDACJ;QAAA,4DAAK;QACT,4DAAM;QAEV,4DAAM;QACV,4DAAM;QACN,yEAA6C;QACzC,yEAAiF;QAC7E,4EAAoF;QAAA,iEAAK;QAAA,4DAAS;QACtG,4DAAM;QACV,4DAAM;;QAhB8B,0DAAoC;QAApC,mGAAoC;QAMxD,0DACJ;QADI,yFACJ;QAO+B,0DAA0B;QAA1B,mFAA0B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACXmB;AACC;;;;;;;;;;;ICqCzE,sEAAyC;IACvC,oEAAG;IAAA,uDAAY;IAAA,4DAAI;IACrB,4DAAM;;;IADD,0DAAY;IAAZ,4EAAY;;;IAkBrB,0EAAgD;IAC9C,qEAAsC;IACxC,4DAAM;;;IADC,0DAAgB;IAAhB,6IAAgB;;;IAWrB,sEAAsC;IACpC,oEAAG;IAAA,uDAAgB;IAAA,4DAAI;IACzB,4DAAM;;;IADD,0DAAgB;IAAhB,gFAAgB;;ADvD5B,MAAM,oBAAoB;IAsB/B,YACU,KAAqB,EACrB,aAA4B,EAC5B,MAAiB;QAFjB,UAAK,GAAL,KAAK,CAAgB;QACrB,kBAAa,GAAb,aAAa,CAAe;QAC5B,WAAM,GAAN,MAAM,CAAW;QAX3B,YAAO,GAAU,EAAE,CAAC;IAWY,CAAC;IAEjC,QAAQ;QACN,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,mGAAsB,EAAE;YACvD,KAAK,EAAE,OAAO;YACd,IAAI,EAAE,eAAe;YACrB,YAAY,EAAE,IAAI;SACnB,CAAC,CAAC;QAEH,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE;YACxC,IAAI,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;YAC1B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;YACjB,IAAI,IAAI,IAAI,SAAS;gBACnB,OAAO;YAET,IAAI,CAAC,mBAAmB,EAAE,CAAC;YAE3B,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,aAAa,CAAC,oBAAoB,EAAE,CAAC;YACnE,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,aAAa,CAAC,iBAAiB,EAAE,CAAC;YAC7D,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE,CAAC;YACjD,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,aAAa,EAAE,CAAC;YACrD,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,aAAa,CAAC,oBAAoB,EAAE,CAAC;YACnE,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,EAAE,CAAC;YACvD,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,aAAa,CAAC,qBAAqB,EAAE,CAAC;QACvE,CAAC,CAAC,CAAC;QAGH,OAAO,CAAC,KAAK,EAAE,CAAC;IAClB,CAAC;IAED,qBAAqB,CAAC,IAAS;QAC7B,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;QAElB,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,UAAU,MAAM;YACnC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAEtB,CAAC,CAAC,CAAC;IACL,CAAC;IAED,eAAe;QACb,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,mGAAsB,EAAE;YACxD,KAAK,EAAE,OAAO;YACd,IAAI,EAAE,iBAAiB;YACvB,YAAY,EAAE,IAAI;SACnB,CAAC,CAAC;QACH,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACzB,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IACxC,CAAC;IAEK,mBAAmB;;;YAEvB,MAAM,IAAI,GAA2B,MAAM,8EAAa,CAAC;gBACvD,GAAG,EAAE,gGAAgG;gBACrG,KAAK,EAAE,SAAS,IAAI,CAAC,IAAI,GAAG;gBAC5B,cAAc,EAAE,KAAK;gBACrB,SAAS,EAAE;oBACT,UAAU;oBACV,UAAU;oBACV,kBAAkB;oBAClB,wBAAwB;iBACzB;gBACD,iBAAiB,EAAE,CAAC;aACrB,CAA2B,CAAC;YAE7B,IAAI,WAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,QAAQ,0CAAE,MAAM,IAAG,CAAC,EAAE;gBAC9B,IAAI,CAAC,OAAO,GAAG,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,QAAQ,CAAC,CAAC,CAAC,CAAC;gBACjC,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,gBAAgB,CAAC;gBACnE,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,sBAAsB,CAAC;gBACxE,IAAI,CAAC,wBAAwB,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC;gBACjE,IAAI,CAAC,4BAA4B,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC;aACtE;;KAEF;IAGD,YAAY;QACV,MAAM,CAAC,KAAK,EAAE,CAAC;IACjB,CAAC;IAEO,aAAa;QACnB,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC;QAE5B,GAAG,CAAC,IAAI,CAAC,gBAAgB,EAAE,GAAG,EAAE;YAC9B,MAAM,SAAS,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;YACnD,MAAM,IAAI,GAAG,GAAG,CAAC,OAAO,EAAE,CAAC;YAC3B,SAAS,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;YAC1B,SAAS,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;YAC3B,MAAM,UAAU,GAAG,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;YAE9C,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAC1B,QAAQ,CAAC,gBAAgB,CAAC,kBAAkB,CAAC,EAC7C,UAAU,MAAM;gBACd,IAAI,MAAM,CAAC,KAAK,GAAG,CAAC,EAAE;oBACpB,MAAM,OAAO,GAAG,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,OAAO,CAAC;oBAChD,UAAU,CAAC,WAAW,GAAG,OAAO,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;oBAC9D,MAAM,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC;oBACzC,iEAAiE;oBACjE,MAAM,MAAM,GAAG,SAAS;yBACrB,KAAK,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC;yBAChC,KAAK,CAAC,GAAG,CAAC;yBACV,GAAG,CAAC,MAAM,CAAC,CAAC;oBACf,gDAAgD;oBAChD,wBAAwB,CAAC,SAAS,CAAC,YAAY,CAAC,KAAK,CACnD,UAAU,EACV,MAAM,CACP,CAAC;oBACF,UAAU,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;iBACpC;YACH,CAAC,CACF,CAAC;YAGF,IAAI,CAAC,QAAQ,GAAG,SAAS,CAAC,SAAS,EAAE,CAAC;YAEtC,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;QAEzB,CAAC,CAAC,CAAC;QAEH,UAAU,CAAC,GAAG,EAAE,GAAG,GAAG,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IAC/C,CAAC;IAEO,iBAAiB;QACvB,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC;QAC5B,MAAM,IAAI,GAAG,IAAI,CAAC;QAClB,GAAG,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,CAAC,EAAE,EAAE;YACtB,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;YACxB,IAAI,CAAC,aAAa,EAAE,CAAC;QACvB,CAAC,CAAC,CAAC;IACL,CAAC;;wFAzJU,oBAAoB;kHAApB,oBAAoB;;;;;;QCnBjC,yEAAsB;QAEpB,yEAAuD;QACrD,yEAAqI;QACnI,sEAAK;QACH,4EAAmJ;QAAzB,4IAAS,kBAAc,IAAC;QAAC,gEAAK;QAAA,4DAAS;QACnK,4DAAM;QACR,4DAAM;QAGN,yEAA8C;QAG5C,yEAIsB;QAGpB,yEAAkB;QAChB,yEAA8C;QAE5C,uEAAK;QACH,yEAA0B;QAAA,kHAAsD;QAAA,4DAAK;QACrF,sEAAI;QAAA,wDAA4B;QAAA,4DAAK;QACvC,4DAAM;QAER,4DAAM;QACR,4DAAM;QACN,0EAAiB;QACf,0EAA8C;QAE5C,0EAA0B;QAExB,uEAAK;QACH,sEAAI;QAAA,qEAAG;QAAA,8EAAkB;QAAA,4DAAI;QAAA,4DAAK;QAClC,qEAAG;QAAA,wDAA0B;QAAA,4DAAI;QACnC,4DAAM;QAEN,uEAAK;QACH,sEAAI;QAAA,qEAAG;QAAA,iFAAqB;QAAA,4DAAI;QAAA,4DAAK;QACrC,mHAEM;QACR,4DAAM;QAEV,4DAAM;QAEN,4DAAM;QACR,4DAAM;QAEN,0EAAiB;QACf,0EAA8C;QAE5C,2EAA6B;QAC3B,mFAEe;QACjB,4DAAM;QAEN,mHAEM;QAER,4DAAM;QACR,4DAAM;QAEN,0EAAiB;QACf,0EAA8C;QAE5C,uEAAK;QACH,sEAAI;QAAA,qEAAG;QAAA,kFAAsB;QAAA,4DAAI;QAAA,4DAAK;QACtC,mHAEM;QACR,4DAAM;QAER,4DAAM;QACR,4DAAM;QAEN,0EAAiB;QACf,0EAA8C;QAE5C,uEAAK;QACH,uEAAK;QACH,sEAAI;QAAA,qEAAG;QAAA,8FAAkC;QAAA,4DAAI;QAAA,4DAAK;QAClD,uEAAK;QACH,qEAAG;QAAA,wDAAuB;QAAA,wEAAM;QAAA,wEAAY;QAAA,4DAAO;QAAA,iFAAqB;QAAA,4DAAI;QAC5E,qEAAG;QAAA,wDAA0B;QAAA,wEAAM;QAAA,wEAAY;QAAA,4DAAO;QAAA,4FAAgC;QAAA,4DAAI;QAC1F,qEAAG;QAAA,wDAAqC;QAAA,wEAAM;QAAA,wEAAY;QAAA,4DAAO;QAAA,wGAA4C;QAAA,4DAAI;QACjH,qEAAG;QAAA,wDAA0C;;QAAA,wEAAM;QAAA,wEAAY;QAAA,4DAAO;QAAA,6FAAiC;QAAA,4DAAI;QAC3G,qEAAG;QAAA,wDAAuC;;QAAA,wEAAM;QAAA,wEAAY;QAAA,4DAAO;QAAA,qGAAyC;QAAA,4DAAI;QAChH,qEAAG;QAAA,wDAAsC;;QAAA,wEAAM;QAAA,wEAAY;QAAA,4DAAO;QAAA,0FAA8B;QAAA,4DAAI;QACtG,4DAAM;QACR,4DAAM;QACR,4DAAM;QAER,4DAAM;QACR,4DAAM;QAER,4DAAM;QAER,4DAAM;QAER,4DAAM;QACR,4DAAM;QACN,oEAA8C;;QA7FnC,0DAAuB;QAAvB,gFAAuB;QAWhB,0DAA4B;QAA5B,+FAA4B;QAY3B,0DAA0B;QAA1B,sFAA0B;QAKH,0DAAa;QAAb,mFAAa;QAclB,0DAA+B;QAA/B,wFAA+B;QAKxB,0DAAc;QAAd,8EAAc;QAYnB,0DAAW;QAAX,iFAAW;QAe7B,2DAAuB;QAAvB,mFAAuB;QACvB,0DAA0B;QAA1B,sFAA0B;QAC1B,0DAAqC;QAArC,iGAAqC;QACrC,0DAA0C;QAA1C,gKAA0C;QAC1C,0DAAuC;QAAvC,0JAAuC;QACvC,0DAAsC;QAAtC,yJAAsC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC1F8B;AAEO;AAEP;AACF;AAGjB;;;;;;;;;;;;;;;;;;;;ICwGtD,uEAAgD;IAC9C,mFAAmD;IACrD,6DAAM;;;IADc,2DAAa;IAAb,2EAAa;;;IAFnC,uEAAuE;IACrE,uHAEM;IACR,6DAAM;;;IAHkB,2DAAwB;IAAxB,6FAAwB;;;IAIhD,2EAAkG;IAChG,uGACF;IAAA,6DAAM;;;IAGJ,uEAAkD;IAChD,mFAAmD;IACrD,6DAAM;;;IADc,2DAAa;IAAb,2EAAa;;;IAFnC,uEAA2E;IACzE,uHAEM;IACR,6DAAM;;;IAHkB,2DAA0B;IAA1B,+FAA0B;;;IAIlD,2EAAsG;IACpG,yGACF;IAAA,6DAAM;;;IAwCJ,uEAA6C;IAC3C,uEAAK;IACH,yEAAgC;IAAA,wDAAgB;IAAA,6DAAI;IACtD,6DAAM;IACR,6DAAM;;;IAF8B,2DAAgB;IAAhB,kFAAgB;;;IAHtD,2EAAuF;IACrF,uHAIM;IACR,6DAAM;;;IALqB,2DAAkB;IAAlB,uFAAkB;;;IAM7C,2EAAsF;IACpF,iGACF;IAAA,6DAAM;;;;IAoBJ,uEAAqC;IACnC,oFAA6E;IAA3C,yWAA0C;IAAC,6DAAW;IAC1F,6DAAM;;;IADgB,2DAAa;IAAb,2EAAa;;;IAFrC,uEAAiD;IAC/C,wHAEM;IACR,6DAAM;;;IAHkB,2DAAa;IAAb,kFAAa;;;IAIrC,2EAA4E;IAC1E,4EACF;IAAA,6DAAM;;ADjLb,MAAM,kBAAkB;IAmB7B,YACU,KAAqB,EACrB,GAAe,EACf,aAA4B,EAC5B,MAAiB,EACjB,YAA0B,EAC1B,MAAc;QALd,UAAK,GAAL,KAAK,CAAgB;QACrB,QAAG,GAAH,GAAG,CAAY;QACf,kBAAa,GAAb,aAAa,CAAe;QAC5B,WAAM,GAAN,MAAM,CAAW;QACjB,iBAAY,GAAZ,YAAY,CAAc;QAC1B,WAAM,GAAN,MAAM,CAAQ;QAtBxB,gBAAW,GAAG,SAAS,CAAC;QAGxB,WAAM,GAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;QAG7B,UAAK,GAAU,EAAE,CAAC;QAElB,uBAAkB,GAAkB,EAAE,CAAC;QACvC,qBAAgB,GAAkB,EAAE,CAAC;QACrC,eAAU,GAAU,EAAE,CAAC;IAanB,CAAC;IAEL,QAAQ;QACN,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE;YACxC,IAAI,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;YAC1B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;YACjB,IAAI,IAAI,IAAI,SAAS;gBACnB,OAAO;YAET,IAAI,CAAC,GAAG,CAAC,IAAI,CAAM,OAAO,EAAE,WAAW,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE;gBAC3E,IAAI,OAAO,IAAI,OAAO,CAAC,KAAK,EAAE;oBAC5B,IAAI,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;oBAC5B,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;iBACzB;YACH,CAAC,CAAC,CAAC;YAEH,IAAI,CAAC,GAAG,CAAC,IAAI,CAAM,OAAO,EAAE,sBAAsB,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE;gBACtF,IAAI,OAAO,IAAI,OAAO,CAAC,KAAK,EAAE;oBAC5B,IAAI,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;oBAC5B,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;iBAC/B;YACH,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,QAAQ,EAAE,CAAC;IAClB,CAAC;IAED,eAAe;QACb,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,eAAe,IAAI,CAAC,MAAM,CAAC,EAAE,SAAS,CAAC,CAAC;IACpE,CAAC;IAED,UAAU,CAAC,MAAW;;QACpB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QAErB,IAAI,CAAC,KAAK,GAAG,EAAE,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;QAExF,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE;YAC5B,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;SACjB;aAAM;YACL,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC;SACtC;QAED,MAAM,IAAI,GAAG,EAAE,kBAAkB,EAAE,iBAAI,CAAC,KAAK,0CAAE,MAAM,0CAAE,KAAK,KAAI,EAAE,EAAE,CAAC;QACrE,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC,sBAAsB,CAAC,uFAAkB,EAAE,IAAI,EAAE,IAAI,CAAC;QAC3F,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAEzC,iCAAiC;QACjC,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACnD,IAAI,CAAC,aAAa,CAAC,oBAAoB,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,iBAAiB,CAAC;QAC7E,IAAI,CAAC,aAAa,EAAE,CAAC;IACvB,CAAC;IAED,gBAAgB,CAAC,MAAW;QAC1B,IAAI,CAAC,kBAAkB,GAAG,MAAM,CAAC;QACjC,IAAI,CAAC,eAAe,EAAE,CAAC;QACvB,IAAI,CAAC,gBAAgB,EAAE,CAAC;IAC1B,CAAC;IAED,eAAe;QACb,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE;YAC5B,IAAI,CAAC,gBAAgB,GAAG,EAAE,CAAC;YAC3B,IAAI,CAAC,kBAAkB,GAAG,EAAE,CAAC;YAC7B,OAAO;SACR;QAED,MAAM,EAAE,GAAkB,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE;;YAC9D,OAAO;gBACL,MAAM,EAAE,QAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,IAAI,KAAI,EAAE;gBAC3B,YAAY,EAAE,2BAA2B;gBACzC,YAAY,EAAE,cAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,MAAM,0CAAE,gBAAgB,KAAI,EAAE;gBACrD,OAAO,EAAE,mBAAmB;gBAC5B,MAAM,EAAE,OAAO,CAAC,EAAE;gBAClB,MAAM,EAAE,cAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,MAAM,0CAAE,aAAa,KAAI,EAAE;aAC7C,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,MAAM,UAAU,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,GAAG,OAAO,CAAC,CAAC,CAAC,MAAM,KAAK,SAAS,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,aAAa,EAAC,CAAC,CAAC,CAAC;QACrG,MAAM,YAAY,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,GAAG,OAAO,CAAC,CAAC,MAAM,KAAK,SAAS,IAAI,CAAC,CAAC,MAAM,KAAK,aAAa,EAAC,CAAC,CAAC,CAAC;QACrG,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;YAC5B,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,EAAE;gBAAE,OAAO,CAAC,CAAC,CAAC;aAAE;YACvC,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,EAAE;gBAAE,OAAO,CAAC,CAAC;aAAE;YACtC,OAAO,CAAC,CAAC;QACX,CAAC,CAAC,CAAC;QACH,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;YAC9B,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,EAAE;gBAAE,OAAO,CAAC,CAAC,CAAC;aAAE;YACvC,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,EAAE;gBAAE,OAAO,CAAC,CAAC;aAAE;YACtC,OAAO,CAAC,CAAC;QACX,CAAC,CAAC,CAAC;QAGH,IAAI,CAAC,gBAAgB,GAAG,UAAU,CAAC;QACnC,IAAI,CAAC,aAAa,CAAC,iBAAiB,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QAC5D,IAAI,CAAC,aAAa,CAAC,qBAAqB,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;QAClE,IAAI,CAAC,aAAa,CAAC,oBAAoB,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;QACjE,IAAI,CAAC,kBAAkB,GAAG,YAAY,CAAC;IACzC,CAAC;IAED,gBAAgB;QACd,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE;YAC5B,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;YACrB,OAAO;SACR;QAED,IAAI,QAAQ,GAAG,EAAE,CAAC;QAClB,IAAI,IAAI,CAAC,kBAAkB,EAAE;YAC3B,QAAQ,GAAG,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE;;gBAC/C,OAAO,aAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,MAAM,0CAAE,gBAAgB,CAAC;YAC3C,CAAC,CAAC,CAAC;SACJ;QAED,mBAAmB;QACnB,IAAI,QAAQ,GAAG,EAAE,CAAC;QAClB,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;;YACxC,IAAI,aAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,MAAM,0CAAE,QAAQ,EAAE;gBAC7B,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;aACrD;QACH,CAAC,CAAC,CAAC;QAEH,MAAM,YAAY,GAAG,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE;YAC1C,OAAO,OAAO,CAAC,IAAI,CAAC;QACtB,CAAC,CAAC,CAAC;QAEH,IAAI,WAAW,GAAG,YAAY,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAChD,WAAW,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC;QAC/C,WAAW,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;YAChC,OAAO,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;QAC/B,CAAC,CAAC,CAAC;QAEH,OAAO;QACP,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;YAC7B,IAAI,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,EAAE;gBAAE,OAAO,CAAC,CAAC,CAAC;aAAE;YACnC,IAAI,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,EAAE;gBAAE,OAAO,CAAC,CAAC;aAAE;YAClC,OAAO,CAAC,CAAC;QACX,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,UAAU,GAAG,WAAW,CAAC;QAC9B,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAClD,CAAC;IAED,aAAa;QACX,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,KAAK,OAAO,EAAE;YAC5K,MAAM,OAAO,GAAiB;gBAC5B,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE;gBAClB,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI;gBACtB,MAAM,EAAE;oBACN,QAAQ,oBAAQ,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAE;iBAC9C;aACF;YACD,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YAC7B,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,OAAO,CAAC;SAC3C;IACH,CAAC;IAED;;OAEG;IAEH,OAAO;QACL,IAAI,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,0GAAsB,EAAE;YACxD,KAAK,EAAE,OAAO;YACd,YAAY,EAAE,IAAI;SACnB,CAAC,CAAC;QAGH,UAAU,CAAC,WAAW,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE;YACxC,IAAI,IAAI,EAAE;gBACR,0BAA0B;gBAC1B,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;gBACvB,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;gBACrC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;aACtB;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAED,cAAc,CAAC,CAAM;QACnB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,UAAU,GAAG;YAC1C,OAAO,GAAG,CAAC,OAAO,KAAK,CAAC,CAAC,OAAO,CAAC;QACnC,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,SAAS,EAAE,CAAC;IACnB,CAAC;IAED,aAAa;QACX,IAAI,YAAY,GAAc,EAAE,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;QACzF,YAAY,CAAC,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QAEvC,OAAO,YAAY,CAAC;IACtB,CAAC;IAID,WAAW,CAAC,IAAS;QACnB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACtB,IAAI,CAAC,SAAS,EAAE,CAAC;IACnB,CAAC;IAED,SAAS;QACP,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;YAC5B,OAAO,CAAC,CAAC,QAAQ,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC/H,CAAC,CAAC,CAAC;IACL,CAAC;IAED,MAAM,CAAC,GAAG;QACR,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,mGAAsB,EAAE;YACvD,KAAK,EAAE,OAAO;YACd,IAAI,EAAE,gBAAgB;YACtB,YAAY,EAAE,IAAI;SACnB,CAAC,CAAC;QAEH,IAAI,CAAC,GAAG,CAAC,IAAI,CAAM,OAAO,EAAE,QAAQ,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE;YAC/D,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE;gBACd,OAAO,CAAC,KAAK,EAAE,CAAC;gBAChB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,iGAAoB,EAAE;oBACrC,KAAK,EAAE,OAAO;oBACd,IAAI,EAAE,GAAG,CAAC,QAAQ;oBAClB,YAAY,EAAE,KAAK;iBACpB,CAAC,CAAC;gBACH,OAAO;aACR;YAED,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC;YAC3B,OAAO,CAAC,KAAK,EAAE,CAAC;YAEhB,IAAI,CAAC,SAAS,EAAE,CAAC;QAEnB,CAAC,EAAE,GAAG,CAAC,EAAE;YACP,OAAO,CAAC,KAAK,EAAE,CAAC;YAChB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,iGAAoB,EAAE;gBACrC,KAAK,EAAE,OAAO;gBACd,IAAI,EAAE,CAAC,oBAAoB,EAAE,GAAG,CAAC,OAAO,CAAC;gBACzC,YAAY,EAAE,KAAK;aACpB,CAAC,CAAC;QACL,CAAC,CAAC;IACJ,CAAC;IAED,iBAAiB,CAAC,CAAM;QACtB,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,GAAG,OAAO,IAAI,CAAC,OAAO,KAAK,CAAC,CAAC,OAAO,EAAC,CAAC,CAAC,CAAC;QACnF,IAAI,SAAS,EAAE;YACb,IAAI,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,mGAAsB,EAAE;gBACvD,KAAK,EAAE,OAAO;gBACd,IAAI,EAAE,EAAE,KAAK,EAAE,gBAAgB,EAAE,IAAI,EAAE,oDAAoD,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE;gBAC3H,YAAY,EAAE,KAAK;aACpB,CAAC,CAAC;YAGH,SAAS,CAAC,WAAW,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE;gBACvC,IAAI,IAAI,EAAE;oBACR,SAAS;oBACT,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC;oBACtB,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;oBACrC,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;iBAChC;qBAAM;oBACL,mBAAmB;iBACpB;YACH,CAAC,CAAC,CAAC;SACJ;IACH,CAAC;IAEK,gBAAgB,CAAC,IAAS;;YAC9B,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,mGAAsB,EAAE;gBACtD,KAAK,EAAE,OAAO;gBACd,IAAI,EAAE,gBAAgB;gBACtB,YAAY,EAAE,IAAI;aACnB,CAAC,CAAC;YAEH,IAAI,CAAC,GAAG,CAAC,IAAI,CAAM,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE;gBAChE,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE;oBACd,MAAM,CAAC,KAAK,EAAE,CAAC;oBACf,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,iGAAoB,EAAE;wBACrC,KAAK,EAAE,OAAO;wBACd,IAAI,EAAE,GAAG,CAAC,QAAQ;wBAClB,YAAY,EAAE,KAAK;qBACpB,CAAC,CAAC;oBACH,OAAO;iBACR;gBAED,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC;gBAC3B,MAAM,CAAC,KAAK,EAAE,CAAC;gBAEf,IAAI,CAAC,SAAS,EAAE,CAAC;YAEnB,CAAC,EAAE,GAAG,CAAC,EAAE;gBACP,MAAM,CAAC,KAAK,EAAE,CAAC;gBACf,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,iGAAoB,EAAE;oBACrC,KAAK,EAAE,OAAO;oBACd,IAAI,EAAE,CAAC,oBAAoB,EAAE,GAAG,CAAC,OAAO,CAAC;oBACzC,YAAY,EAAE,KAAK;iBACpB,CAAC,CAAC;YACL,CAAC,CAAC;QACJ,CAAC;KAAA;IAGD,QAAQ,CAAC,KAAM;QACb,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,WAAW,CAAC;QACvC,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,UAAU,CAAC;QAErC,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,EAAE;YAC5B,IAAI,CAAC,WAAW,GAAG,SAAS,CAAC;SAC9B;aAAM;YACL,IAAI,CAAC,WAAW,GAAG,SAAS,CAAC;SAC9B;IACH,CAAC;IAED,cAAc;QACZ,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,yBAAyB,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC;IACnE,CAAC;;oFA3UU,kBAAkB;iHAAlB,kBAAkB;;;;;;;;;;mJAAlB,oBAAgB;;QC3B7B,0EAAsB;QAGpB,0EAA+G;QAG7G,0EACsE;QAGpE,0EAAoG;QAClG,yEAA6B;QAAA,wDAA4B;QAAA,6DAAK;QAChE,6DAAM;QAEN,6EAC6B;QAA3B,2IAAS,oBAAgB,IAAC;QAAC,wEAAY;QAAA,6DAAS;QAGlD,6EAC8B;QAA5B,2IAAS,qBAAiB,IAAC;QAAC,4EAAgB;QAAA,6DAAS;QAGzD,6DAAM;QAGN,2EACkF;QAEhF,gFACwB;QAEtB,2EAC4F;QAE1F,iFAAsF;QACpF,oFAAiB;QACf,uFAA8D;QAAA,2EAAc;QAAA,6DAAiB;QAC/F,6DAAkB;QAClB,yFAA4C;QAC1C,oFAEe;QACjB,6DAAmB;QACrB,6DAAW;QACb,6DAAM;QAIN,4EACuB;QAErB,iFAA2E;QACzE,wFAAmD;QACjD,uFAAmC;QAAA,6EACnC;QAAA,6DAAiB;QACnB,6DAAkB;QAClB,qFAAkB;QAChB,4EAAuE;QAAA,4EAAe;QAAA,6DAAM;QAC5F,4EAA0D;QAAA,yDAA4B;QAAA,6DAAM;QAE5F,4EAAuE;QAAA,+EAAkB;QAAA,6DAAM;QAC/F,4EAA0D;QAAA,yDAC1D;QAAA,6DAAM;QAEN,4EAAqE;QAAA,kFAAqB;QAAA,6DAAM;QAEhG,4EAA8E;QAAA,0FAC9E;QAAA,6DAAM;QAEN,4EAAuE;QAAA,iEAAI;QAAA,6DAAM;QACjF,4EAA0D;QAAA,yDAC1D;QAAA,6DAAM;QAEN,4EAAuE;QAAA,kEAAK;QAAA,6DAAM;QAClF,4EAA0D;QAAA,yDAC1D;QAAA,6DAAM;QAEN,4EAAuE;QAAA,kEAAK;QAAA,6DAAM;QAClF,4EAA0D;QAAA,yDAC1D;QAAA,6DAAM;QAEN,4EAA8E;QAAA,+EAC9E;QAAA,6DAAM;QAEN,4EAAuE;QAAA,iEAAI;QAAA,6DAAM;QACjF,4EAA0D;QAAA,yDAC1D;QAAA,6DAAM;QAEN,4EAAuE;QAAA,kEAAK;QAAA,6DAAM;QAClF,4EAA0D;QAAA,yDAC1D;QAAA,6DAAM;QAEN,4EAAuE;QAAA,kEAAK;QAAA,6DAAM;QAClF,4EAA0D;QAAA,yDAC1D;QAAA,6DAAM;QACR,6DAAmB;QACrB,6DAAW;QACb,6DAAM;QACR,6DAAW;QACb,6DAAM;QAGN,4EACkF;QAEhF,4EAAyG;QACvG,iFAA0E;QACxE,wFAAmD;QACjD,uFAAmC;QAAA,mFACnC;QAAA,6DAAiB;QACnB,6DAAkB;QAClB,qFAAkB;QAChB,4EAAkC;QAChC,4EAAuC;QAAA,4EAAe;QAAA,6DAAM;QAC5D,kHAIM;QACN,kHAEM;QACN,4EAAyB;QAAA,8EAAiB;QAAA,6DAAM;QAChD,kHAIM;QACN,kHAEM;QACR,6DAAM;QACR,6DAAmB;QACrB,6DAAW;QACb,6DAAM;QAGN,4EACuB;QACrB,iFAA2E;QACzE,wFAAmD;QACjD,uFAAmC;QAAA,mFACnC;QAAA,6DAAiB;QACnB,6DAAkB;QAClB,qFAAkB;QAChB,4EAA8B;QAC5B,wFACmB;QACrB,6DAAM;QACR,6DAAmB;QACrB,6DAAW;QACb,6DAAM;QAER,6DAAM;QAGN,4EACkF;QAGhF,4EACuB;QACrB,iFAA2E;QACzE,wFAAmD;QACjD,uFAAmC;QAAA,oFACnC;QAAA,6DAAiB;QACnB,6DAAkB;QAClB,qFAAkB;QAChB,4EAAqC;QACnC,kHAMM;QACN,kHAEM;QACR,6DAAM;QACR,6DAAmB;QACrB,6DAAW;QACb,6DAAM;QAGN,4EACuB;QACrB,kFAA2E;QACzE,yFAAmD;QACjD,wFAAmC;QAAA,4EACnC;QAAA,6DAAiB;QACjB,6EAA4F;QAC1F,gFAAoF;QAApB,6IAAS,aAAS,IAAC;QAAC,mEAAK;QAAA,6DAAS;QACpG,6DAAM;QACR,6DAAkB;QAClB,sFAAkB;QAChB,6EAA8B;QAC5B,oHAIM;QACN,oHAEM;QACR,6DAAM;QACR,6DAAmB;QACrB,6DAAW;QACb,6DAAM;QACR,6DAAM;QAIR,6DAAM;QACR,6DAAM;;QAnNyE,2DAAiC;QAAjC,sFAAiC;QAQ3E,2DAA4B;QAA5B,uFAA4B;QA4B5B,4DAA+B;QAA/B,yFAA+B;QAmBI,4DAA4B;QAA5B,uFAA4B;QAG5B,2DAC1D;QAD0D,qHAC1D;QAQ0D,2DAC1D;QAD0D,mHAC1D;QAG0D,2DAC1D;QAD0D,oHAC1D;QAG0D,2DAC1D;QAD0D,oHAC1D;QAM0D,2DAC1D;QAD0D,mHAC1D;QAG0D,2DAC1D;QAD0D,oHAC1D;QAG0D,2DAC1D;QAD0D,oHAC1D;QAoBM,4DAA+D;QAA/D,0HAA+D;QAKvC,2DAAkE;QAAlE,6HAAkE;QAI1F,2DAAmE;QAAnE,8HAAmE;QAK3C,2DAAsE;QAAtE,iIAAsE;QAkB3E,2DAAmB;QAAnB,6EAAmB;QAuBV,4DAAmD;QAAnD,8GAAmD;QAOvD,2DAAsD;QAAtD,iHAAsD;QAe3B,2DAAgC;QAAhC,0FAAgC;QAMnF,2DAAyC;QAAzC,oGAAyC;QAKjB,2DAA4C;QAA5C,uGAA4C;;;;;;;;;;;;;;;;;;;;;ACnMjF,MAAM,cAAc;IAEzB,gBAAgB,CAAC;IAEjB,QAAQ;IACR,CAAC;;4EALU,cAAc;4GAAd,cAAc;QCP3B,2EAA+B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACC0B;AAEG;AACqD;AAC/B;;;;;;;;;;;;;;;;;ICS9E,yEAOC;IACD,yEAAqF;IAEnF,yEAAkE;IAEhE,yEAAiB;IACf,0EAAyD;IACvD,qEACyE;IAC3E,4DAAM;IACR,4DAAM;IACN,0EAAiD;IAC/C,0EAA6B;IAC3B,qEAAI;IAAA,qEAAU;IAAA,4DAAK;IACrB,4DAAM;IACR,4DAAM;IACN,2EAAiD;IAC/C,2EAA6B;IAC3B,sEAAI;IAAA,qFAAyB;IAAA,4DAAK;IACpC,4DAAM;IACR,4DAAM;IACR,4DAAM;IAER,4DAAM;IAEJ,2EAA2E;IACzE,0EAA0C;IAAA,iFAAqB;IAAA,4DAAK;IACtE,4DAAM;IAGN,2EAKC;IACC,uEAAK;IACH,uIACF;IAAA,4DAAM;IACN,sEAAqC;IACvC,4DAAM;IAEN,2EAAmD;IACjD,sFAA4C;IAC1C,6EAAW;IAAA,iEAAK;IAAA,4DAAY;IAC5B,4EAOE;IACJ,4DAAiB;IACnB,4DAAM;IAEN,sEAAqC;IAGrC,2EAA8D;IAC5D,2EAQC;IAEC,8EAQC;IADC,2TAAoB;IAEpB,+EACF;IAAA,4DAAS;IACX,4DAAM;IACN,2EAA4D;IAC1D,yEAAyE;IAAA,wEAAY;IAAA,4DAAI;IAC3F,4DAAM;IACR,4DAAM;IACR,4DAAM;;;IArCE,2DAAgC;IAAhC,gGAAgC;IAkBlC,0DAAgC;IAAhC,gGAAgC;IAS9B,0DAAuB;IAAvB,uFAAuB;;;IAY/B,0EAOC;IACC,yEAA0C;IAAA,gFAAqB;IAAA,4DAAK;IACpE,yEAA2B;IAC7B,4DAAM;;;IAEN,0EAMC;IACC,0EAA0C;IACxC,yEAA0C;IAAA,mEAAQ;IAAA,4DAAK;IACzD,4DAAM;IAEN,0EAA0C;IACxC,qEAAI;IAAA,uLAA4H;IAAA,4DAAK;IACvI,4DAAM;IACN,0EAA0C;IACxC,qEAAI;IACH,mOACD;IAAA,4DAAK;IAIP,4DAAM;IACN,2EAA0C;IACxC,yEAA+C;IAAA,wEAAY;IAAA,4DAAI;IACjE,4DAAM;IAER,4DAAM;;;;IAEN,0EAMC;IACC,0EAA0C;IACxC,yEAA0C;IAAA,gFAAqB;IAAA,4DAAK;IACtE,4DAAM;IAEN,oEAAG;IACD,0EACF;IAAA,4DAAI;IAEJ,oEAAG;IACD,sGAA0C;IAAA,wEACL;IAAA,kEAAO;IAAA,4DAAI;IAAA,8DAClD;IAAA,4DAAI;IAEJ,2EAA0C;IACxC,8EAAsC;IAAnB,yTAAkB;IAAC,iEAAK;IAAA,4DAAS;IACtD,4DAAM;IAEN,2EAA0C;IACxC,yEAA+C;IAAA,wEAAY;IAAA,4DAAI;IACjE,4DAAM;IACR,4DAAM;;ADxKV,iEAAiE;AACjE,IAAY,KAKX;AALD,WAAY,KAAK;IACf,mCAAK;IACL,mDAAa;IACb,iCAAI;IACJ,mCAAK;AACP,CAAC,EALW,KAAK,KAAL,KAAK,QAKhB;AAOM,MAAM,uBAAuB;IAclC,YACU,YAAiC,EACjC,GAAe,EACf,MAAiB;QAFjB,iBAAY,GAAZ,YAAY,CAAqB;QACjC,QAAG,GAAH,GAAG,CAAY;QACf,WAAM,GAAN,MAAM,CAAW;QAT3B,iCAAiC;QACjC,SAAI,GAAU,KAAK,CAAC,KAAK,CAAC;QAE1B,gDAAgD;QAChD,UAAK,GAAG,KAAK,CAAC;IAMV,CAAC;IAEL,QAAQ;QACN,IAAI,CAAC,gBAAgB,GAAG,IAAI,uDAAW,CAAC,EAAE,EAAE;YAC1C,+DAAmB;YACnB,4DAAgB;SACjB,CAAC,CAAC;IACL,CAAC;IAED,eAAe;QACb,uEAAuE;QACvE,UAAU,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,gBAAgB,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC;IAC9E,CAAC;IAED,wDAAwD;IACxD,OAAO;QACL,OAAO,IAAI,CAAC,gBAAgB,CAAC,KAAK;IACpC,CAAC;IAED,QAAQ;QACN,uEAAuE;QACvE,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,aAAa,CAAC;QAEhC,gCAAgC;QAChC,MAAM,MAAM,GAAuB,IAAI,qEAAkB,EAAE,CAAC;QAE5D,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC;QAE3C,4CAA4C;QAC5C,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,CAAC,MAAM,EAAE,EAAE;YAC5D,mGAAmG;YACnG,IAAI,MAAM,CAAC,KAAK,EAAE;gBAChB,+DAA+D;gBAC/D,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;aACxB;iBACI;gBACH,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;gBACpB,6CAA6C;gBAC7C,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC;aACzB;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAED,gEAAgE;IAChE,MAAM;QACJ,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC;IAC1B,CAAC;IAED,UAAU;QACR,2CAA2C;QAC3C,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,yHAA4B,EAAE;YAC/D,KAAK,EAAE,OAAO;YACd,IAAI,EAAE,EAAE;SACT,CAAC,CAAC;QAEH,SAAS,CAAC,WAAW,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE;YACzC,aAAa;QACf,CAAC,CAAC,CAAC;IACL,CAAC;;8FA5EU,uBAAuB;qHAAvB,uBAAuB;kEAMpB,sEAAY;;;;;QC3B5B,yEAGC;QACC,8EAQC;QAEC,oHA6FM;QAEN,mHAUM;QAEN,oHA0BM;QAEN,oHA2BM;QAER,4DAAW;QACb,4DAAM;;QA/JC,0DAAyB;QAAzB,6FAAyB;QA8FzB,0DAAiC;QAAjC,qGAAiC;QAYjC,0DAAwB;QAAxB,4FAAwB;QA4BxB,0DAAyB;QAAzB,6FAAyB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACzJyB;AACgB;AAGG;;;;;;;;;;;;;;;;;;;;ICDtE,sEAAoB;IAClB,uEAAM;IAAA,uEAAY;IAAA,4DAAO;IAC3B,4DAAM;;;IACN,sEAAqB;IACnB,uEAAM;IAAA,sEAAW;IAAA,4DAAO;IAC1B,4DAAM;;;IAaF,iFAA+D;IAC7D,uDACF;IAAA,4DAAa;;;IAF+B,8EAAkB;IAC5D,0DACF;IADE,uFACF;;;IAMA,iFAAmE;IACjE,uDACF;IAAA,4DAAa;;;IAFmC,8EAAkB;IAChE,0DACF;IADE,uFACF;;ADhBH,MAAM,yBAAyB;IAapC,YACkC,IAAS,EACjC,SAAkD,EAClD,YAA0B,EAC1B,MAAc,EACd,MAA4B,EAC5B,GAAe;QALS,SAAI,GAAJ,IAAI,CAAK;QACjC,cAAS,GAAT,SAAS,CAAyC;QAClD,iBAAY,GAAZ,YAAY,CAAc;QAC1B,WAAM,GAAN,MAAM,CAAQ;QACd,WAAM,GAAN,MAAM,CAAsB;QAC5B,QAAG,GAAH,GAAG,CAAY;QAbzB,iBAAY,GAAmB,EAAE,CAAC;QAClC,aAAQ,GAAG,KAAK,CAAC;QAEjB,sBAAsB;QACtB,gBAAW,GAAU,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;QACpC,oBAAe,GAAU,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;QAYxC,0BAAqB,GAAgB,IAAI,uDAAW,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,+DAAmB,CAAC,CAAC;QAC5G,2BAAsB,GAAgB,IAAI,uDAAW,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,+DAAmB,CAAC,CAAC;QAC7G,uBAAkB,GAAgB,IAAI,uDAAW,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,+DAAmB,CAAC,CAAC;QACzG,sBAAiB,GAAgB,IAAI,uDAAW,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;QACnF,qBAAgB,GAAgB,IAAI,uDAAW,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,+DAAmB,CAAC,CAAC;IAPpG,CAAC;IASL,QAAQ;QACN,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC,SAAS,CAAC,CAAC,GAAG,EAAE,EAAE;YACzD,IAAI,CAAC,YAAY,GAAG,GAAG,CAAC,MAAM,CAAC;YAC/B,IAAI,CAAC,sBAAsB,EAAE,CAAC;YAC9B,IAAG,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAC;gBACjC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC;gBACnC,IAAI,CAAC,aAAa,EAAE,CAAC;aACtB;QACH,CAAC,CAAC;IAEJ,CAAC;IAED,WAAW;QACT,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC;IAC/B,CAAC;IAEK,aAAa;;YACjB,IAAI,CAAC,qBAAqB,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;YAClE,IAAI,CAAC,oBAAoB,EAAE;YAC3B,IAAI,CAAC,sBAAsB,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;YACpE,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;YAClE,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;YAChE,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAC1D,CAAC;KAAA;IAED,oFAAoF;IACpF,sBAAsB;QACpB,MAAM,eAAe,GAAG,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE;YAC1E,OAAO,EAAE,IAAI,EAAE,GAAG,CAAC,OAAO,EAAE,CAAC;QAC/B,CAAC,CAAC,CAAC,CAAC;QACJ,IAAI,CAAC,WAAW,GAAG,eAAe,CAAC;QACnC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC9D,CAAC;IAED,oBAAoB;QAClB,MAAM,iBAAiB,GAAG,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE;YAC7E,OAAO,GAAG,CAAC,OAAO,KAAK,IAAI,CAAC,qBAAqB,CAAC,KAAK,CAAC;QAC1D,CAAC,CAAC,CAAC,CAAC;QAEJ,IAAI,CAAC,iBAAiB,EAAE;YACtB,IAAI,CAAC,OAAO,GAAG,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;YAC9B,OAAO;SACR;QAED,MAAM,YAAY,GAAG,iBAAiB,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;YAC1D,OAAO,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,CAAC;QAC5B,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,eAAe,GAAG,YAAY,CAAC;QACpC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAClE,CAAC;IAED,SAAS;QACP,IAAI,CAAC,sBAAsB,CAAC,KAAK,EAAE,CAAC;QACpC,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAC5B,IAAI,CAAC,sBAAsB,CAAC,MAAM,EAAE,CAAC;IACvC,CAAC;IAED,QAAQ;QACN,IAAI,UAAU,GAAG,IAAI,CAAC,qBAAqB,CAAC,KAAK,CAAC;QAClD,IAAI,WAAW,GAAG,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC;QACpD,IAAI,WAAW,GAAG,gGAAyB,CAAC,IAAI,CAAC,kBAAkB,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;QAC9E,IAAI,UAAU,GAAG,gGAAyB,CAAC,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;QAC5E,IAAI,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC;QAE5C,IAAI,aAAa,GACjB;YACE,IAAI,EAAE,CAAC;YACP,MAAM,EAAE,WAAW;YACnB,SAAS,EAAE,UAAU;YACrB,eAAe,EAAE,WAAW;YAC5B,cAAc,EAAE,UAAU;YAC1B,OAAO,EAAE,SAAS;SACnB;QAED,IAAG,IAAI,CAAC,QAAQ,EAAC;YACf,aAAa,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;SACzC;QAED,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;IACtC,CAAC;IAED,aAAa;QACX,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC7B,CAAC;IAED,OAAO;QACL,IAAI,IAAI,CAAC,qBAAqB,IAAI,IAAI,CAAC,qBAAqB,CAAC,KAAK;YAChE,IAAI,CAAC,sBAAsB,IAAI,IAAI,CAAC,sBAAsB,CAAC,KAAK;YAChE,IAAI,CAAC,kBAAkB,IAAI,IAAI,CAAC,kBAAkB,CAAC,KAAK,EAAE;YAC1D,OAAO,IAAI,CAAC;SACb;aAAM;YACL,OAAO,KAAK,CAAC;SACd;IACH,CAAC;;kGA1HU,yBAAyB,kEAc1B,qEAAe;uHAdd,yBAAyB;QCftC,wEAAqB;QACnB,iFAA2D;QACzD,qFAA8C;QAC5C,qHAEM;QACN,qHAEM;QACR,4DAAkB;QACpB,4DAAc;QAChB,4DAAK;QAGL,yEAAmG;QACjG,yEACwC;QACtC,sEAAK;QACH,oFAA4C;QAC1C,4EAAW;QAAA,gFAAoB;QAAA,4DAAY;QAC3C,oFAA+H;QAA/C,0KAAmB,eAAW,IAAC;QAC7G,qIAEa;QACf,4DAAa;QACf,4DAAiB;QACjB,qFAA4C;QAC1C,6EAAW;QAAA,wEAAY;QAAA,4DAAY;QACnC,sFAAmG;QACjG,qIAEa;QACf,4DAAa;QACf,4DAAiB;QACjB,qFAA4C;QAC1C,6EAAW;QAAA,0EAAc;QAAA,4DAAY;QACrC,4EAUa;QACf,4DAAiB;QACjB,qFAA4C;QAC1C,6EAAW;QAAA,yEAAa;QAAA,4DAAY;QACpC,4EASa;QACf,4DAAiB;QACjB,uEAAK;QACH,oFAAuF;QAAA,2FACvF;QAAA,4DAAe;QACjB,4DAAM;QAER,4DAAM;QAGN,2EAAoE;QAClE,2EAA4D;QAC1D,8EACwD;QAA1B,kJAAS,mBAAe,IAAC;QAAC,kEAAM;QAAA,4DAAS;QACzE,4DAAM;QACN,2EAA4D;QAC1D,8EAEkB;QAD6C,kJAAS,cAAU,IAAC;QACjE,gEAAI;QAAA,4DAAS;QACjC,4DAAM;QACR,4DAAM;QACR,4DAAM;QACR,4DAAM;;QA9EM,0DAAa;QAAb,8EAAa;QAGb,0DAAc;QAAd,+EAAc;QAcwB,0DAAqC;QAArC,kGAAqC;QACjD,0DAAc;QAAd,oFAAc;QAOA,0DAAsC;QAAtC,mGAAsC;QACpD,0DAAkB;QAAlB,wFAAkB;QAW9C,0DAAkC;QAAlC,+FAAkC;QAalC,0DAAiC;QAAjC,8FAAiC;QASX,0DAAgC;QAAhC,6FAAgC;QAahD,0DAAuB;QAAvB,oFAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC5EwC;AAEK;AACF;AAGY;;;;;;;;;;AAOvF,MAAM,gBAAgB;IAY3B,YACU,MAAiB,EACjB,GAAe;QADf,WAAM,GAAN,MAAM,CAAW;QACjB,QAAG,GAAH,GAAG,CAAY;QARhB,aAAQ,GAAU,EAAE,CAAC;QAEpB,oBAAe,GAAsB,IAAI,uDAAY,EAAE,CAAC;QAExD,mBAAc,GAAsB,IAAI,uDAAY,EAAE,CAAC;IAK9D,CAAC;IAEJ,QAAQ;QACN,OAAO,CAAC,GAAG,CAAC,iBAAiB,EAAE,IAAI,CAAC,OAAO,CAAC;QAC5C,OAAO,CAAC,GAAG,CAAC,kBAAkB,EAAE,IAAI,CAAC,cAAc,CAAC;IACtD,CAAC;IAGD,WAAW;QACT,IAAI,aAAa,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,uGAAyB,EAAE;YAC9D,KAAK,EAAE,OAAO;YACd,YAAY,EAAE,KAAK;YACnB,IAAI,EAAE,EAAE,SAAS,EAAE,IAAI,CAAC,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE;SACpD,CAAC,CAAC;QAGH,aAAa,CAAC,WAAW,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE;YAC3C,IAAI,IAAI,EAAE;gBACR,IAAI,YAAY,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC;gBACnD,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC;aACjC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAED,oBAAoB,CAAC,IAAS;QAC5B,OAAO,CAAC,GAAG,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC;QAClC,IAAI,YAAY,GAAc,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;QAC3E,YAAY,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QAC9B,YAAY,CAAC,MAAM,GAAG,EAAE,CAAC;QACzB,YAAY,CAAC,MAAM,CAAC,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC;QAC9C,YAAY,CAAC,MAAM,CAAC,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC;QAC5C,YAAY,CAAC,MAAM,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC;QACvD,YAAY,CAAC,MAAM,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY;QACpD,YAAY,CAAC,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QAEvC,OAAO,YAAY,CAAC;IACtB,CAAC;IAGD,aAAa,CAAC,GAAG;QACf,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,4FAAsB,EAAE;YACvD,KAAK,EAAE,OAAO;YACd,+CAA+C;YAC/C,IAAI,EAAE,gBAAgB;YACtB,YAAY,EAAE,IAAI;SACnB,CAAC,CAAC;QAEH,IAAI,CAAC,GAAG,CAAC,IAAI,CAAM,SAAS,EAAE,QAAQ,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE;YACjE,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE;gBACd,OAAO,CAAC,KAAK,EAAE,CAAC;gBAChB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,0FAAoB,EAAE;oBACrC,KAAK,EAAE,OAAO;oBACd,IAAI,EAAE,GAAG,CAAC,QAAQ;oBAClB,YAAY,EAAE,KAAK;iBACpB,CAAC,CAAC;gBACH,OAAO;aACR;YAED,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,MAAM,CAAC;YACpC,OAAO,CAAC,KAAK,EAAE,CAAC;QAElB,CAAC,EAAE,GAAG,CAAC,EAAE;YACP,OAAO,CAAC,KAAK,EAAE,CAAC;YAChB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,0FAAoB,EAAE;gBACrC,KAAK,EAAE,OAAO;gBACd,IAAI,EAAE,CAAC,oBAAoB,EAAE,GAAG,CAAC,OAAO,CAAC;gBACzC,YAAY,EAAE,KAAK;aACpB,CAAC,CAAC;QACL,CAAC,CAAC;IACJ,CAAC;IAED,mBAAmB,CAAC,GAAG;QACrB,OAAO,CAAC,GAAG,CAAC,+BAA+B,CAAC,CAAC;QAE7C,IAAI,CAAC,OAAO,CAAC,WAAW,GAAG,GAAG,CAAC,WAAW,CAAC;QAC3C,IAAI,CAAC,OAAO,CAAC,UAAU,GAAG,GAAG,CAAC,UAAU,CAAC;QACzC,IAAI,CAAC,OAAO,CAAC,aAAa,GAAG,GAAG,CAAC,aAAa,CAAC;QAC/C,IAAI,CAAC,OAAO,CAAC,YAAY,GAAG,GAAG,CAAC,YAAY,CAAC;QAC7C,IAAI,CAAC,OAAO,CAAC,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC;QAG/B,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC;IAE7B,CAAC;IAED,aAAa,CAAC,CAAM;QAClB,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC1C,CAAC;;gFAtGU,gBAAgB;8GAAhB,gBAAgB;QCb7B,yEACkF;QAChF,yEACuB;QACrB,8EAAwF;QACtF,qFAAiD;QAC/C,oFAA6C;QAAA,uDAC7C;QAAA,4DAAiB;QACjB,yEAAkG;QAChG,8EAA0C;QAAhC,gJAAS,yBAAqB,IAAC;QAAC,iEAAM;QAAA,4DAAW;QAC7D,4DAAM;QACR,4DAAkB;QAClB,mFAAkB;QAChB,uEAAK;QAEH,qEAAG;QAAA,2EAA4B;QAAA,iFAAqB;QAAA,4DAAO;QAAA,2EAA8B;QACrF,wDAAsB;QAAA,4DAAO;QAAA,4DAAI;QACrC,qEAAG;QAAA,2EAA4B;QAAA,sEAAU;QAAA,4DAAO;QAAA,2EAA8B;QAC1E,wDAA+B;QAAA,4DAAO;QAAA,4DAAI;QAC9C,qEAAG;QAAA,2EAA4B;QAAA,2EAAe;QAAA,4DAAO;QAAA,2EAA8B;QAC/E,wDAAsC;;QAAA,4DAAO;QAAA,4DAAI;QACrD,qEAAG;QAAA,2EAA4B;QAAA,0EAAc;QAAA,4DAAO;QAAA,2EAA8B;QAC9E,wDAAqC;;QAAA,4DAAO;QAAA,4DAAI;QACpD,uEAAK;QACH,0EAA2J;QACzJ,yEAAgD;QAAxB,oIAAS,iBAAa,IAAC;QAAC,0EAAQ;QAAA,gEAAI;QAAA,4DAAS;QAAA,4DAAI;QAC3E,4DAAM;QACR,4DAAM;QACR,4DAAM;QACR,4DAAmB;QACrB,4DAAW;QACb,4DAAM;QACR,4DAAM;;QA1B+C,0DAC7C;QAD6C,kGAC7C;QACyB,0DAAwE;QAAxE,8LAAwE;QAQ3F,0DAAsB;QAAtB,iGAAsB;QAEtB,0DAA+B;QAA/B,2GAA+B;QAE/B,0DAAsC;QAAtC,sKAAsC;QAEtC,0DAAqC;QAArC,qKAAqC;QAEb,0DAAwE;QAAxE,8LAAwE;;;;;;;;;;;;;;;;;;;;;;;;ACxB/B;;;;;;;;;ICUrE,uEAAyD;IAAA,0EACR;IAAA,uDAAwB;IAAA,4DAAO;IAAA,0EACpD;IAAA,uDAAsB;IAAA,4DAAO;IAAA,4DAAI;;;IADZ,0DAAwB;IAAxB,qGAAwB;IAC7C,0DAAsB;IAAtB,0FAAsB;;;;IAK9C,2EAAmF;IAA7B,0TAA4B;IAChF,+EAA2C;IAAA,kEAAO;IAAA,4DAAW;IAC/D,4DAAO;;IADK,0DAAgC;IAAhC,yFAAgC;;;;IAE5C,2EAAyF;IAAhC,6TAA+B;IACtF,+EAA4C;IAAA,+EAAoB;IAAA,4DAAW;IAC7E,4DAAO;;IADK,0DAAiC;IAAjC,0FAAiC;;;;IAE7C,2EAA+E;IAAxB,sTAAuB;IAC5E,+EAAyC;IAAA,wEAAa;IAAA,4DAAW;IACnE,4DAAO;;IADK,0DAA8B;IAA9B,uFAA8B;;;;IAE1C,2EAAgF;IAAxB,wTAAuB;IAAC,wEAAa;IAAA,4DAAO;;ADjB3G,MAAM,oBAAoB;IAM/B,YAAoB,MAAc;QAAd,WAAM,GAAN,MAAM,CAAQ;QAJzB,SAAI,GAAgB,IAAI,CAAC;QACxB,SAAI,GAAuB,IAAI,uDAAY,EAAQ,CAAC;QACpD,YAAO,GAAuB,IAAI,uDAAY,EAAQ,CAAC;IAE3B,CAAC;IAEvC,QAAQ;IACR,CAAC;IAED,MAAM;;QACJ,IAAI,WAAI,CAAC,IAAI,0CAAE,SAAS,MAAI,UAAI,CAAC,IAAI,0CAAE,OAAO,GAAE;YAC9C,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,cAAc,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;SACzJ;aAAM;YACL,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;SACtF;IACH,CAAC;IAED,WAAW;QACT,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;IACnB,CAAC;IAED,cAAc;QACZ,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;IACtB,CAAC;;wFAzBU,oBAAoB;kHAApB,oBAAoB;QCTjC,yEACkF;QAChF,yEACuB;QACrB,8EAAwF;QACtF,mFAAkB;QAChB,yEAA6B;QAC3B,uEAAiD;QAAA,uDAAe;QAAA,4DAAI;QACpE,uEAA6B;QAAA,0EAAmD;QAAA,uDAC9E;QAAA,4DAAO;QAAA,2EAA8B;QAAA,wDAAqB;QAAA,4DAAO;QAAA,4DAAI;QACvE,8GAE6D;QAC/D,4DAAM;QACN,0EAAiC;QAC/B,uEAAK;QACH,2EAA8C;QAC5C,qHAEO;QACP,qHAEO;QACP,qHAEO;QACP,qHAAoG;QACtG,4DAAM;QACR,4DAAM;QACR,4DAAM;QACR,4DAAmB;QACrB,4DAAW;QACb,4DAAM;QACR,4DAAM;;QA1BqD,0DAAe;QAAf,gFAAe;QACgB,0DAC9E;QAD8E,iGAC9E;QAAqC,0DAAqB;QAArB,sFAAqB;QAC9B,0DAAyB;QAAzB,kHAAyB;QAO5C,0DAAsB;QAAtB,+GAAsB;QAGtB,0DAAyB;QAAzB,kHAAyB;QAGzB,0DAAuB;QAAvB,gHAAuB;QAGvB,0DAAwB;QAAxB,mHAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;;ACnBtC,MAAM,eAAe;IAE1B,gBAAgB,CAAC;IAEjB,QAAQ;IACR,CAAC;;8EALU,eAAe;6GAAf,eAAe;QCP5B,yEAAwH;QAGtH,yEACgC;QAC9B,uEAAmG;QAAA,oEACW;QAC9G,4DAAI;QACN,4DAAM;QAEN,yEACW;QAET,yEAA0F;QACxF,8EAA8E;QAChF,4DAAM;QAEN,yEAAoH;QAClH,+EAAmD;QACrD,4DAAM;QAER,4DAAM;QAER,4DAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACrBqD;AACG;AACD;AAIqC;AAMa;;;;;;;;;;;;;;;ICsBjG,yEAAyE;IAAC,iEAAK;IAAA,4DAAK;;;IACpF,yEAAuC;IAAC,uDAAiB;IAAA,4DAAK;;;IAAtB,0DAAiB;IAAjB,4FAAiB;;;IAKzD,yEAAuE;IAAC,+DAAG;IAAA,4DAAK;;;IAChF,yEAAuC;IAAC,uDAAe;IAAA,4DAAK;;;IAApB,0DAAe;IAAf,0FAAe;;;IAKvD,yEAAuE;IAAC,0EAAc;IAAA,4DAAK;;;IAC3F,yEAAuC;IAAC,uDAA0C;;IAAA,4DAAK;;;IAA/C,0DAA0C;IAA1C,8KAA0C;;;IAKlF,yEAAyE;IAAC,iEAAK;IAAA,4DAAK;;;IACpF,yEAAuC;IAAC,uDAAwB;IAAA,4DAAK;;;IAA7B,0DAAwB;IAAxB,mGAAwB;;;IAKhE,yEAA2E;IAAC,mEAAO;IAAA,4DAAK;;;IACxF,yEAAuC;IAAC,uDAA0B;IAAA,4DAAK;;;IAA/B,0DAA0B;IAA1B,qGAA0B;;;IAKlE,yEAA2E;IAAC,sFAA0B;IAAA,4DAAK;;;IAC3G,yEAAuC;IAAC,uDAA6B;IAAA,4DAAK;;;IAAlC,0DAA6B;IAA7B,wGAA6B;;;IAKrE,oEAAgF;;;;IAChF,yEAA8F;IAAlC,mYAAiC;IAAC,+DAAI;IAAA,4DAAK;;;IAIzG,oEAA4D;;;IAC5D,oEAAkE;;;ADzDvE,MAAM,iBAAiB;IAS5B,YACU,GAAe,EACf,MAAiB,EACjB,IAA0B,EAC1B,MAAc;QAHd,QAAG,GAAH,GAAG,CAAY;QACf,WAAM,GAAN,MAAM,CAAW;QACjB,SAAI,GAAJ,IAAI,CAAsB;QAC1B,WAAM,GAAN,MAAM,CAAQ;QAZxB,qBAAgB,GAAa,CAAC,MAAM,EAAC,IAAI,EAAC,UAAU,EAAC,aAAa,EAAC,eAAe,EAAE,kBAAkB,EAAE,MAAM,CAAC,yBAAuB;QAEtI,eAAU,GAAG,IAAI,uEAAkB,CAAU,EAAE,CAAC,CAAC;IAW7C,CAAC;IAEL,QAAQ;QACN,IAAI,CAAC,UAAU,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;QAC3C,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,CAAgB,CAAC,CAAC;QAC9D,IAAI,CAAC,UAAU,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QAEjC,IAAI,CAAC,UAAU,CAAC,mBAAmB,GAAG,CAAC,IAAS,EAAE,YAAoB,EAAU,EAAE;YAChF,IAAI,YAAY,IAAI,MAAM,EAAE;gBAC1B,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,iBAAiB,EAAE,CAAC;aACzC;YAED,IAAI,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,QAAQ,EAAE;gBAC1C,OAAO,IAAI,CAAC,YAAY,CAAC,CAAC,iBAAiB,EAAE,CAAC;aAC/C;YAED,OAAO,IAAI,CAAC,YAAY,CAAC,CAAC;QAC5B,CAAC,CAAC;QAMF,IAAI,CAAC,GAAG,CAAC,GAAG,CAAY,SAAS,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE;YACpE,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,UAAS,CAAC;gBACtC,OAAO,CAAC,SAAS,EAAC,aAAa,EAAE,UAAU,EAAE,SAAS,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,aAAa,CAAC;YACnF,CAAC,CAAC,CAAC;YAEH,IAAI,OAAO,GAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC;YAEjD,IAAI,gBAAgB,GAAG,EAAE,CAAC;YAC1B,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;gBAC9B,IAAG,OAAO,CAAC,gBAAgB,KAAK,OAAO,EAAC;oBACtC,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;iBAChC;YACH,CAAC,CAAC,CAAC;YAGH,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;;gBAC9B,IAAG,aAAO,CAAC,QAAQ,0CAAE,MAAM,EAAC;oBAC1B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;wBACjC,IAAG,OAAO,CAAC,IAAI,KAAK,OAAO,EAAC;4BAC1B,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;yBAChC;oBACH,CAAC,CAAC;iBACH;YACH,CAAC,CAAC;YAEF,IAAI,CAAC,QAAQ,GAAG,gBAAgB;YAEhC,IAAI,CAAC,cAAc,EAAE,CAAC;QACxB,CAAC,CAAC,CAAC;IACL,CAAC;IAGD,cAAc;QACZ,IAAI,CAAC,UAAU,CAAC,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC;IACvC,CAAC;IAED,UAAU;QACR,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,0GAA0B,EAAE;YAC7D,KAAK,EAAE,OAAO;YACd,IAAI,EAAE,EAAE;SACT,CAAC,CAAC;QAEH,SAAS,CAAC,WAAW,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE;QAC3C,CAAC,CAAC,CAAC;IACL,CAAC;IAED,aAAa;QACX,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,sHAAsB,EAAE;YACvC,KAAK,EAAE,OAAO;YACd,IAAI,EAAE,EAAE;SACT,CAAC,CAAC;IACL,CAAC;IAED,WAAW,CAAC,EAAO;QACjB,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,wBAAwB,EAAE,EAAE,CAAC,CAAC;IAC1D,CAAC;;kFA5FU,iBAAiB;+GAAjB,iBAAiB;kEAMjB,2DAAO;kEACP,sEAAY;;;;;;QC5BzB,yEAA8B;QAC5B,yEAC8D;QAC5D,8EAAiF;QAC/E,wEAAwD;QAAA,uEAAY;QAAA,4DAAK;QACzE,yEAA6D;QAC3D,4EAA+H;QAAvH,yIAAS,mBAAe,IAAC;QAA8F,yEACpH;QAAA,4DAAS;QACtB,4DAAM;QACN,yEAAmE;QACjE,4EACmC;QAAA,8EAC1B;QAAA,4DAAS;QAClB,0EAC4C;QAD6C,uIAAS,gBAAY,IAAC;QAA/G,4DAC4C;QAC9C,4DAAM;QACR,4DAAW;QACb,4DAAM;QAGN,0EACwC;QAEtC,gFAAwG;QAEtG,2EAA6B;QAE3B,uEAAK;QACH,0EAA8B;QAAA,+EAAmB;QAAA,4DAAK;QACxD,4DAAM;QACN,2EAAuF;QACrF,6EAAyG;QAIvG,6EAAkC;QAChC,8GAAoF;QACpF,8GAA8D;QAChE,qEAAe;QAGf,6EAAgC;QAC9B,8GAAgF;QAChF,8GAA4D;QAC9D,qEAAe;QAGf,6EAAsC;QACpC,8GAA2F;QAC3F,8GAAuF;QACzF,qEAAe;QAGf,6EAAyC;QACvC,8GAAoF;QACpF,8GAAqE;QACvE,qEAAe;QAGf,6EAA2C;QACzC,8GAAwF;QACxF,8GAAuE;QACzE,qEAAe;QAGf,6EAA8C;QAC5C,8GAA2G;QAC3G,8GAA0E;QAC5E,qEAAe;QAGf,6EAAkC;QAChC,8GAAgF;QAChF,8GAAuG;QACzG,qEAAe;QAGf,8GAA4D;QAC5D,8GAAkE;QACpE,4DAAQ;QAER,gFAAoF;QACtF,4DAAM;QAER,4DAAM;QAER,4DAAW;QAEb,4DAAM;QAER,4DAAM;;QApFoC,0DAAsB;QAAtB,+EAAsB;QAG1B,0DAAkC;QAAlC,2FAAkC;QAsBX,2DAAyB;QAAzB,sFAAyB;QA8CtD,2DAAiC;QAAjC,iGAAiC;QACpB,0DAA0B;QAA1B,kGAA0B;QAG9C,0DAA+B;QAA/B,kJAA+B;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC5E4B;;;;;;;;;;;;;IC2D5E,wEAA+G;IAA5B,iTAA2B;IAAC,kEAAO;IAAA,4DAAI;;;;IAC1H,wEAA2I;IAAvD,+SAAyB;IAA8B,uEAAY;IAAA,4DAAI;;IAArI,uFAA8B;;ADrDrD,MAAM,aAAa;IAKxB,YAAoB,IAA0B,EAAU,MAAc,EAAU,MAAiB;QAA7E,SAAI,GAAJ,IAAI,CAAsB;QAAU,WAAM,GAAN,MAAM,CAAQ;QAAU,WAAM,GAAN,MAAM,CAAW;QAHjG,SAAI,GAAmB,EAAE,CAAC;QAC1B,gBAAW,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;IAGzC,CAAC;IAED,QAAQ;QACN,IAAI,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE;YAEvD,IAAG,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,8BAA8B,CAAC,EACtD;gBACE,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;aACrC;YACD,IAAI,KAAK,CAAC,IAAI,CAAC,YAAY,IAAI,uBAAuB,EAAC;gBACrD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC;gBACvB,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;aACtC;QACH,CAAC,CAAC,CAAC;QAEL,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC3B,CAAC;IAED,WAAW;QACT,KAAK,IAAI,GAAG,IAAI,IAAI,CAAC,IAAI,EAAE;YACzB,GAAG,CAAC,WAAW,EAAE,CAAC;SACnB;IACH,CAAC;IAED,QAAQ;QACN,OAAO,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;IAChC,CAAC;IAED,aAAa;QACX,IAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE;YACzB,IAAI,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACjC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,YAAY,IAAI,KAAK,CAAC,IAAI,CAAC,YAAY,KAAK,uBAAuB,EAAE;gBACnF,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC;aACpC;iBACI;gBACH,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC;aACrC;SACF;IACH,CAAC;IAED,aAAa;QACX,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACpB,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,4FAAsB,EAAE;YACzD,KAAK,EAAE,OAAO;YACd,IAAI,EAAE,EAAE;SACT,CAAC,CAAC;QAEH,SAAS,CAAC,WAAW,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE;QAG3C,CAAC,CAAC,CAAC;IACL,CAAC;IAED,eAAe;QACb,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,WAAW,CAAC,CAAC;IACrC,CAAC;IAED,aAAa;QACX,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,CAAC;IACnC,CAAC;;0EAjEU,aAAa;2GAAb,aAAa;QCZ1B,yEAAqC;QACnC,yEACmL;QACjL,oEACM;QACR,4DAAM;QACR,4DAAM;QAEN,yEAAiH;QAC/G,yEAA4G;QAC1G,yEAA8B;QAAA,uDAE9B;QAAA,4DAAM;QACN,8EAAoE;QACtE,4DAAM;QAEN,yEAAqF;QAEnF,yEAAkE;QAChE,qEAAkB;QAClB,2EAAiB;QACf,2EAA+D;QAC7D,sEACyE;QAC3E,4DAAM;QACR,4DAAM;QACN,2EAA6D;QAC3D,2EAA4B;QAC1B,sEAAI;QAAA,wGAA4C;QAAA,4DAAK;QACrD,sEAAI;QAAA,2IAA+E;QAAA,4DAAK;QAC1F,4DAAM;QACR,4DAAM;QACR,4DAAM;QAER,4DAAM;QAIN,2EAAoE;QAClE,2EACkG;QAChG,2EAAuE;QACrE,0EAAoD;QAAA,4EACpD;QAAA,4DAAK;QACL,2EAAsD;QACpD,yEAAgC;QAAA,wpBAKoE;QAAA,4DAAI;QACxG,yEAAgC;QAAA,4aAG8C;QAAA,4DAAI;QACpF,4DAAM;QACR,4DAAM;QACN,8EAA6C;QAC7C,2EACgC;QAC9B,0EACoF;QAClF,qHACF;QAAA,4DAAK;QACL,wGAA0H;QAC1H,wGAA2J;QAC3J,yEAAyF;QAA1B,iIAAS,mBAAe,IAAC;QAAC,sEAAU;QAAA,4DAAI;QACvG,yEAAyF;QAA1B,iIAAS,mBAAe,IAAC;QAAC,2EAAe;QAAA,4DAAI;QAC9G,4DAAM;QACR,4DAAM;QACR,4DAAM;QACR,4DAAM;;QA7D4B,0DAE9B;QAF8B,4KAE9B;QA6Ce,2DAAiB;QAAjB,0EAAiB;QAOxB,0DAAiB;QAAjB,iFAAiB;QACjB,0DAAgB;QAAhB,gFAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACjEmD;AAGK;AACF;AACa;;;;;;;;;;;;AAUxF,MAAM,mBAAmB;IAY9B,YACU,MAAc,EACd,MAAiB,EACjB,GAAe,EACf,IAA0B;QAH1B,WAAM,GAAN,MAAM,CAAQ;QACd,WAAM,GAAN,MAAM,CAAW;QACjB,QAAG,GAAH,GAAG,CAAY;QACf,SAAI,GAAJ,IAAI,CAAsB;QAR1B,uBAAkB,GAAsB,IAAI,uDAAY,EAAE,CAAC;IASlE,CAAC;IAEJ,QAAQ;QACN,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;QACjD,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAC/B,CAAC;IAED,gBAAgB,CAAC,CAAM;QACrB,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAChD,CAAC;IAED,cAAc;QACZ,IAAI,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,uGAAyB,EAAE;YAC3D,KAAK,EAAE,OAAO;YACd,YAAY,EAAE,KAAK;YACnB,IAAI,EAAE,EAAE,YAAY,EAAE,IAAI,CAAC,UAAU,EAAE,UAAU,EAAE,IAAI,EAAE,eAAe,EAAE,KAAK,EAAE;SAClF,CAAC,CAAC;QAGH,UAAU,CAAC,WAAW,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE;YACxC,IAAI,IAAI,EAAE;gBACR,IAAI,YAAY,GAAG,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,CAAC;gBACtD,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC;aACpC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAED,uBAAuB,CAAC,IAAS;QAC/B,IAAI,YAAY,GAAc,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;QAC3E,YAAY,CAAC,IAAI,GAAG,YAAY,CAAC;QACjC,YAAY,CAAC,MAAM,GAAG,EAAE,CAAC;QACzB,YAAY,CAAC,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QACrC,YAAY,CAAC,MAAM,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC;QACvD,YAAY,CAAC,MAAM,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;QAGnD,OAAO,YAAY,CAAC;IACtB,CAAC;IAED,gBAAgB,CAAC,GAAG;QAClB,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,4FAAsB,EAAE;YACvD,KAAK,EAAE,OAAO;YACd,+CAA+C;YAC/C,IAAI,EAAE,gBAAgB;YACtB,YAAY,EAAE,IAAI;SACnB,CAAC,CAAC;QAEH,IAAI,CAAC,GAAG,CAAC,IAAI,CAAM,MAAM,EAAE,QAAQ,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE;YAC9D,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE;gBACd,OAAO,CAAC,KAAK,EAAE,CAAC;gBAChB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,0FAAoB,EAAE;oBACrC,KAAK,EAAE,OAAO;oBACd,IAAI,EAAE,GAAG,CAAC,QAAQ;oBAClB,YAAY,EAAE,KAAK;iBACpB,CAAC,CAAC;gBACH,OAAO;aACR;YAED,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,MAAM,CAAC;YACvC,OAAO,CAAC,KAAK,EAAE,CAAC;QAElB,CAAC,EAAE,GAAG,CAAC,EAAE;YACP,OAAO,CAAC,KAAK,EAAE,CAAC;YAChB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,0FAAoB,EAAE;gBACrC,KAAK,EAAE,OAAO;gBACd,IAAI,EAAE,CAAC,oBAAoB,EAAE,GAAG,CAAC,OAAO,CAAC;gBACzC,YAAY,EAAE,KAAK;aACpB,CAAC,CAAC;QACL,CAAC,CAAC;IACJ,CAAC;IAED,sBAAsB,CAAC,GAAG;QACxB,OAAO,CAAC,GAAG,CAAC,mCAAmC,CAAC,CAAC;QAEjD,IAAI,CAAC,UAAU,CAAC,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;QAChC,IAAI,CAAC,UAAU,CAAC,YAAY,GAAG,GAAG,CAAC,YAAY,CAAC;QAChD,IAAI,CAAC,UAAU,CAAC,WAAW,GAAG,GAAG,CAAC,WAAW,CAAC;IAEhD,CAAC;;sFA/FU,mBAAmB;iHAAnB,mBAAmB;QCfhC,yEACkF;QAChF,yEACuB;QACrB,8EAAwF;QACtF,sFAA0C;QACxC,yEAA6B;QAE3B,oEAAG;QAAA,uDAAmB;QAAA,4DAAI;QAC5B,4DAAM;QACN,yEAAiC;QAC/B,sEAAK;QACH,yEAA6C;QAC3C,qEAAG;QAAA,sEAAI;QAAA,wDAA+D;;QAAA,4DAAK;QAAA,4DAAI;QACjF,4DAAM;QACN,0EAAsF;QACpF,+EAA6C;QAAnC,oJAAS,4BAAwB,IAAC;QAAC,kEAAM;QAAA,4DAAW;QAChE,4DAAM;QACN,0EAAsF;QACpF,+EAAqC;QAA3B,8IAAS,oBAAgB,IAAC;QAAC,gEAAI;QAAA,4DAAW;QACtD,4DAAM;QACR,4DAAM;QACR,4DAAM;QACR,4DAAmB;QACrB,4DAAW;QACb,4DAAM;QACR,4DAAM;;QAlBO,0DAAmB;QAAnB,oFAAmB;QAKX,0DAA+D;QAA/D,0MAA+D;QAE/C,0DAA4D;QAA5D,8KAA4D;QAG5D,0DAA4D;QAA5D,8KAA4D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACjBxC;AACgB;AAChB;AAI+B;AAClD;;;;;;;;;;;;;;;;;;;ICa1B,iFAAiE;IAC/D,uDACF;IAAA,4DAAa;;;IAFgC,gFAAmB;IAC9D,0DACF;IADE,yFACF;;;;IAeA,6EACkE;IAAjC,sUAAgC;IAC/D,wEACF;IAAA,4DAAS;;;;IAET,6EAC4C;IAA3B,gUAA0B;IACzC,wEACF;IAAA,4DAAS;;;IAMf,wEAA2B;IAEzB,uEAAM;IACJ,uDACF;IAAA,4DAAO;IACT,4DAAQ;;;IAFJ,0DACF;IADE,mGACF;;;IAEF,wEAAqB;IAEnB,uEAAM;IACJ,uDACF;IAAA,4DAAO;IACT,4DAAQ;;;IAFJ,0DACF;IADE,6FACF;;;IAIF,wEAAqB;IAEnB,2EAA4B;IAC1B,uDACF;IAAA,4DAAO;IACT,4DAAQ;;;IAFJ,0DACF;IADE,+FACF;;;IAEF,wEAA8B;IAE5B,2EAA4B;IAC1B,uDACF;IAAA,4DAAO;IACT,4DAAQ;;;IAFJ,0DACF;IADE,wGACF;;;IAEF,wEAA+B;IAE7B,2EAA4B;IAC1B,uDACF;IAAA,4DAAO;IACT,4DAAQ;;;IAFJ,0DACF;IADE,0GACF;;;IAEF,wEAAkC;IAEhC,2EAA4B;IAC1B,uDACF;IAAA,4DAAO;IACT,4DAAQ;;;IAFJ,0DACF;IADE,kGACF;;;IAEF,wEAAkC;IAEhC,2EAA4B;IAC1B,uDACF;IAAA,4DAAO;IACT,4DAAQ;;;IAFJ,0DACF;IADE,6GACF;;AD9ED,MAAM,qBAAqB;IA6BhC,YACkC,IAAS,EACjC,SAA8C,EAC9C,GAAe,EACf,QAAmC,EACnC,MAAyB,EACzB,IAAuB;QALC,SAAI,GAAJ,IAAI,CAAK;QACjC,cAAS,GAAT,SAAS,CAAqC;QAC9C,QAAG,GAAH,GAAG,CAAY;QACf,aAAQ,GAAR,QAAQ,CAA2B;QACnC,WAAM,GAAN,MAAM,CAAmB;QACzB,SAAI,GAAJ,IAAI,CAAmB;QA9BjC,aAAQ,GAAG,KAAK,CAAC;QACjB,gBAAW,GAAU,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC;QACnE,kBAAa,GAAY,KAAK,CAAC;QAC/B,WAAM,GAAW,IAAI,sDAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC3C,gBAAW,GAAG,2DAAW,CAAC;QAC1B,aAAQ,GAAU,EAAE,CAAC;QAErB,oBAAe,GAAG,KAAK,CAAC;QACxB,gBAAW,GAAG,KAAK,CAAC;QACpB,UAAK,GAAG,KAAK,CAAC;QACd,UAAK,GAAG,KAAK,CAAC;QACd,mBAAc,GAAG,KAAK,CAAC;QACvB,oBAAe,GAAG,KAAK,CAAC;QACxB,uBAAkB,GAAG,KAAK,CAAC;QAC3B,uBAAkB,GAAG,KAAK,CAAC;QAC3B,iBAAY,GAAG,kEAAkE,CAAC;QAClF,0BAAqB,GAAG,4HAA4H,CAAC;QACrJ,2BAAsB,GAAG,+CAA+C;QACxE,mBAAc,GAAG,4BAA4B,CAAC;QAC9C,qBAAgB,GAAG,uIAAuI;YACxJ,kKAAkK,CAAC;QACrK,eAAU,GAAG,wGAAwG,CAAC;QACtH,8BAAyB,GAAG,0HAA0H,CAAC;QAcvJ,0BAAqB,GAAgB,IAAI,uDAAW,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,+DAAmB,CAAC,CAAC;QAC5G,0BAAqB,GAAgB,IAAI,uDAAW,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE,+DAAmB,CAAC,CAAC;IANvH,CAAC;IAQL,QAAQ;QACN,IAAI,CAAC,aAAa,EAAE,CAAC;QACrB,IAAI,CAAC,iBAAiB,EAAE,CAAC;IAC3B,CAAC;IAED,WAAW;IACX,CAAC;IAEK,aAAa;;YACjB,IAAI,CAAC,qBAAqB,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;QACnD,CAAC;KAAA;IAED,iBAAiB;QACf,IAAI,IAAI,CAAC,qBAAqB,CAAC,KAAK,KAAK,WAAW,EAAE;YACpD,IAAI,CAAC,KAAK,EAAE,CAAC;YACb,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;YACxB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;SACpB;aAAM,IAAI,IAAI,CAAC,qBAAqB,CAAC,KAAK,KAAK,UAAU,EAAE;YAC1D,IAAI,CAAC,KAAK,EAAE,CAAC;YACb,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;YACzB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;SACnB;IACH,CAAC;IAED,aAAa;QACX,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC7B,CAAC;IAED,KAAK;QACH,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;QAC5B,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;QAC7B,IAAI,CAAC,kBAAkB,GAAG,KAAK,CAAC;QAChC,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;QAC7B,IAAI,CAAC,kBAAkB,GAAG,KAAK,CAAC;QAChC,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;QACnB,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;IACrB,CAAC;IAED,OAAO;QACL,OAAO,IAAI,CAAC;IACd,CAAC;IAED,eAAe;QAEb,4FAAyB,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE;;YAC1C,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;YAE7B,IAAI,CAAC,KAAK,EAAE,CAAC;YACb,kCAAkC;YAClC,sEAAsE;YACtE,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,qEAAqB,CAAC,CAAC;YAE5C,IAAI,gBAAgB,GAAG,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC;YAChD,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;YAC9B,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;YAC/B,IAAI,CAAC,QAAQ,GAAG,cAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,QAAQ,0CAAE,IAAI,CAAC;YAEzC,IAAI,IAAI,GAAG,KAAK,CAAC;YACjB,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE;gBACtC,IAAI,IAAI,EAAE;oBACR,OAAO;iBACR;gBACD,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,KAAK,OAAO,EAAE;oBAClC,IAAI,GAAG,IAAI,CAAC;oBACZ,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;oBAC3B,OAAM;iBACP;gBACD,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,KAAK,YAAY,EAAE;oBACvC,IAAI,GAAG,IAAI,CAAC;oBACZ,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;oBAC3B,OAAM;iBACP;gBACD,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;gBAC9B,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;YACtC,CAAC,CACA;YAED,IAAI,EAAE,GAAG,WAAW,CAAC,GAAG,EAAE;gBACxB,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE,GAAG,gBAAgB,CAAC,EAAE;oBACtD,IAAI,CAAC,aAAa,EAAE,CAAC;oBACrB,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;oBAChC,aAAa,CAAC,EAAE,CAAC,CAAC;oBAClB,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;iBAC7B;YACH,CAAC,EAAE,IAAI,CAAC,CAAC;QACX,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;YACf,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QACpB,CAAC,CAAC,CAAC;IACL,CAAC;IAED,SAAS;QACP,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;IAC1C,CAAC;IAED,SAAS,CAAC,GAAG;QACX,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;QAE7B,IAAI,CAAC,KAAK,EAAE,CAAC;QACb,kCAAkC;QAClC,sEAAsE;QACtE,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,qEAAqB,CAAC,CAAC;QAE5C,MAAM,KAAK,GAAG,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC;QAE/B,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;YACpB,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC;YAC/B,OAAO;SACR;QAED,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QAE1B,IAAI,CAAC,CAAC,QAAQ,CAAC,IAAI,KAAK,sCAAsC,IAAI,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW,EAAE,KAAK,KAAK,CAAC,EAAE;YACnJ,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC;YAC/B,OAAO;SACR;QAED,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC,IAAI;QAE7B,MAAM,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;QAChC,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;QAE5B,MAAM,CAAC,MAAM,GAAG,GAAG,EAAE;YACnB,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YAC3B,MAAM,YAAY,GAAG,MAAM,CAAC,MAAgB,CAAC;YAC7C,MAAM,OAAO,GAAG,oDAAG,CAAC,IAAI,SAAS,EAAE,CAAC,eAAe,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC,CAAC;YAC/E,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YAErB,MAAM,UAAU,GAAG,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,GAAG,OAAO,CAAC,CAAC,QAAQ,CAAC,IAAI,KAAK,SAAS,EAAC,CAAC,CAAC,CAAC;YACxF,IAAI,UAAU,EAAE;gBACd,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;gBAC3B,OAAO;aACR;YAED,IAAI,OAAO,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;gBAC/B,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC;gBAC/B,OAAO;aACR;YAED,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,uBAAuB,CAAC,OAAO,CAAC;YAC1D,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;gBACjC,MAAM,IAAI,GAAG;oBACX,QAAQ,EAAE;wBACR,IAAI,EAAE,IAAI;wBACV,WAAW,EAAE,OAAO,CAAC,QAAQ,CAAC,WAAW;wBACzC,IAAI,EAAE,SAAS;qBAChB;oBACD,UAAU,EAAE,EAAC,GAAG,EAAE,CAAC,EAAC;oBACpB,IAAI,EAAE,SAAS;iBAChB,CAAC;gBACF,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;YAChC,CAAC,CAAC,CAAC;YAEH,IAAI,CAAC,aAAa,EAAE,CAAC;YACrB,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;YAChC,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;QAC9B,CAAC,CAAC;QAEF,MAAM,CAAC,OAAO,GAAG,GAAG,EAAE;YACpB,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC5B,CAAC,CAAC;IACJ,CAAC;IAGD,kBAAkB,CAAC,QAAQ;QACzB,8GAA8G;QAC9G,IAAI,CAAC,QAAQ;YAAE,OAAO;QACtB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC/B,CAAC;IAED,aAAa;QACX,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;QAC3B,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;IACtB,CAAC;IAED,SAAS;QACP,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACtC,CAAC;;0FA7NU,qBAAqB,kEA8BtB,sEAAe;mHA9Bd,qBAAqB;;;;;;QCflC,wEAAqB;QACnB,iFAA2D;QACzD,qFAA8C;QAC5C,sEAAK;QACH,uEAAM;QAAA,iEAAM;QAAA,4DAAO;QACrB,4DAAM;QACR,4DAAkB;QACpB,4DAAc;QAChB,4DAAK;QAGL,yEAAmG;QACjG,yEACwC;QACtC,wEAAuB;QAAA,qGAA0C;QAAA,4DAAK;QACtE,0EAAwB;QACtB,0EAAkD;QAChD,qFAA4C;QAC1C,qFAC0D;QAAxD,sKAAmB,uBAAmB,IAAC;QACvC,kIAEa;QACf,4DAAa;QACf,4DAAiB;QACnB,4DAAM;QACN,2EAAuE;QACrE,sFAA4E;QAC1E,4EAA0G;QAC5G,4DAAiB;QACjB,2EAA0C;QACxC,8EAAuD;QAAlB,8IAAS,WAAO,IAAC;QACpD,gFAAsC;QAAA,iEAAK;QAAA,4DAAW;QACxD,4DAAS;QACX,4DAAM;QACN,2EAA+C;QAC7C,6EAAkC;QAChC,0HAGS;QACT,iFAA8D;QAAlC,qJAAU,qBAAsB,IAAC;QAA7D,4DAA8D;QAC9D,0HAGS;QACX,4DAAQ;QACV,4DAAM;QACR,4DAAM;QACR,4DAAM;QACN,uEAAK;QACH,wHAKQ;QACR,wHAKQ;QACV,4DAAM;QACN,uEAAK;QACH,wHAKQ;QACR,wHAKQ;QACR,wHAKQ;QACR,wHAKQ;QACR,wHAKQ;QACV,4DAAM;QAGN,2EAAoE;QAClE,2EAA4D;QAC1D,8EACwD;QAA1B,8IAAS,mBAAe,IAAC;QAAC,kEAAM;QAAA,4DAAS;QACzE,4DAAM;QACN,2EAA4D;QAC1D,8EAEqC;QAD0C,8IAAS,eAAgB,IAAC;QACpE,kEAAM;QAAA,4DAAS;QACtD,4DAAM;QACR,4DAAM;QACR,4DAAM;QACR,4DAAM;;QA5FwC,2DAAqC;QAArC,kGAAqC;QAE1C,0DAAc;QAAd,oFAAc;QAQL,0DAAqC;QAArC,kGAAqC;QASlE,0DAAsB;QAAtB,iFAAsB;QAKtB,0DAAgB;QAAhB,2EAAgB;QASvB,0DAAiB;QAAjB,iFAAiB;QAMjB,0DAAW;QAAX,2EAAW;QAQX,0DAAW;QAAX,2EAAW;QAMX,0DAAoB;QAApB,oFAAoB;QAMpB,0DAAqB;QAArB,qFAAqB;QAMrB,0DAAwB;QAAxB,wFAAwB;QAMxB,0DAAwB;QAAxB,wFAAwB;QAetB,0DAAuB;QAAvB,oFAAuB;;;;;;;;;;;;;;;;;;;AClGhC,MAAM,eAAe;IAE1B,gBAAgB,CAAC;IAEjB,QAAQ;IACR,CAAC;;8EALU,eAAe;6GAAf,eAAe;QCP5B,oEAAG;QAAA,wEAAa;QAAA,4DAAI;;;;;;;;;;;;;;;;;;;;;;;;;;ACCqC;AACgB;;;;;;;;;;AAQlE,MAAM,sBAAsB;IAEjC,YACkC,IAAS,EACjC,SAA+C,EAC/C,GAAe;QAFS,SAAI,GAAJ,IAAI,CAAK;QACjC,cAAS,GAAT,SAAS,CAAsC;QAC/C,QAAG,GAAH,GAAG,CAAY;IACrB,CAAC;IAKL,QAAQ;QAEN,IAAI,CAAC,eAAe,GAAG,IAAI,uDAAW,CAAC,EAAE,EAAE;YACzC,+DAAmB;SACpB,CAAC,CAAC;QAEH,IAAI,CAAC,0BAA0B,GAAG,IAAI,uDAAW,CAAC,EAAE,EAAE;YACpD,+DAAmB;SACpB,CAAC,CAAC;IACL,CAAC;IAED,QAAQ;QACN,IAAI,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC;QAC1C,IAAI,YAAY,GAAG,IAAI,CAAC,0BAA0B,CAAC,KAAK,CAAC;QAEzD,IAAI,UAAU,GACd;YACE,SAAS,EAAE,QAAQ;YACnB,UAAU,EAAE,YAAY;SACzB;QAED,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;IACnC,CAAC;IAED,aAAa;QACX,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC7B,CAAC;IAED,OAAO;QACL,IAAI,IAAI,CAAC,eAAe,CAAC,KAAK,IAAI,IAAI,CAAC,0BAA0B,CAAC,KAAK,EAAE;YACvE,OAAO,IAAI,CAAC;SACb;aAAM;YACL,OAAO,KAAK,CAAC;SACd;IACH,CAAC;;4FA7CU,sBAAsB,kEAGvB,qEAAe;oHAHd,sBAAsB;QCTnC,wEAAqB;QACnB,iFAA2D;QACzD,qFAA8C;QAC5C,uEAAM;QAAA,uEAAY;QAAA,4DAAO;QAC3B,4DAAkB;QACpB,4DAAc;QAChB,4DAAK;QAGL,yEAAmG;QACjG,yEACwC;QACtC,sEAAK;QACH,oFAA4C;QAC1C,4EAAW;QAAA,4EAAgB;QAAA,4DAAY;QACvC,0EAC8D;QAChE,4DAAiB;QACjB,qFAA4C;QAC1C,6EAAW;QAAA,oEAAQ;QAAA,4DAAY;QAC/B,0EAC0D;QAC5D,4DAAiB;QACnB,4DAAM;QAGN,2EAAoE;QAClE,2EAA4D;QAC1D,8EACwD;QAA1B,+IAAS,mBAAe,IAAC;QAAC,kEAAM;QAAA,4DAAS;QACzE,4DAAM;QACN,2EAA4D;QAC1D,8EAEkB;QAD6C,+IAAS,cAAU,IAAC;QACjE,gEAAI;QAAA,4DAAS;QACjC,4DAAM;QACR,4DAAM;QACR,4DAAM;QACR,4DAAM;;QAvB4D,2DAA0C;QAA1C,uGAA0C;QAKlD,0DAA+B;QAA/B,4FAA+B;QAYzE,0DAAuB;QAAvB,oFAAuB;;;;;;;;;;;;;;;;;;;;;;ACjCgD;;;;;;AAOhF,MAAM,aAAa;IAQxB;QAJU,iBAAY,GAAsB,IAAI,uDAAY,EAAE,CAAC;IAI/C,CAAC;IAEjB,QAAQ;QACN,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACzB,CAAC;IAED,UAAU,CAAC,CAAM;QACf,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACpC,CAAC;IAED,UAAU;;QACR,IAAI,UAAI,CAAC,IAAI,0CAAE,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE;YACzC,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;SAC1B;aAAM;YACL,OAAO,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;SACjC;IACH,CAAC;;0EAxBU,aAAa;2GAAb,aAAa;QCP1B,yEACkF;QAChF,yEACuB;QACrB,8EAAwF;QACtF,gFACkB;QAClB,mFAAkB;QAChB,sEAAK;QACH,sEAAK;QACH,uEAAuC;QAAA,uDAAiB;QAAA,4DAAI;QAC9D,4DAAM;QACN,sEAAK;QACH,0EAAwB;QACtB,wEAA8D;QAAA,wDAAgB;QAAA,4DAAI;QACpF,4DAAM;QACN,0EAA0D;QACxD,+EAAuC;QAA7B,8IAAS,sBAAkB,IAAC;QAAC,kEAAM;QAAA,4DAAW;QAC1D,4DAAM;QACR,4DAAM;QACR,4DAAM;QACR,4DAAmB;QACrB,4DAAW;QACb,4DAAM;QACR,4DAAM;;QAd6C,0DAAiB;QAAjB,kFAAiB;QAInC,0DAA0B;QAA1B,gJAA0B;QAAiB,0DAAgB;QAAhB,iFAAgB;QAEvD,0DAAgC;QAAhC,yFAAgC;;;;;;;;;;;;;;;;;;;;;ACfI;;;;;AAQlE,MAAM,sBAAsB;IAEjC,YAA4C,OAAe;QAAf,YAAO,GAAP,OAAO,CAAQ;IAAI,CAAC;IAEhE,QAAQ;IACR,CAAC;;4FALU,sBAAsB,kEAEb,qEAAe;oHAFxB,sBAAsB;QCTnC,uEACoC;QAAA,sEAAW;QAAA,4DAAI;QAEnD,yEAAmG;QAC/F,yEAAuG;QAE/F,4EAA2C;QAC3C,uEAA6F;QACzF,uDACJ;QAAA,4DAAI;QAEZ,4DAAM;QACV,4DAAM;;QAJU,0DACJ;QADI,uFACJ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IEPR,yEAA8G;IAC5G,4EAA2E;IAAlB,8SAAiB;IAAC,kEAAO;IAAA,4DAAS;IAC3F,uEAAuD;IAAA,kEAAO;IAAA,4DAAI;IACpE,4DAAM;;;;IACN,yEAA6G;IAC3G,oEAAG;IAAA,uDAAyB;IAAA,4DAAI;IAChC,4EAAwD;IAAnB,+SAAkB;IAAC,iEAAM;IAAA,4DAAS;IACzE,4DAAM;;;IAFD,0DAAyB;IAAzB,sGAAyB;;ADC3B,MAAM,cAAc;IAIzB,YAAoB,aAAoC;QAApC,kBAAa,GAAb,aAAa,CAAuB;QAFxD,gBAAW,GAAY,eAAe,CAAC;QAIrC,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,EAAE;YAC5C,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC;QAClC,CAAC,CAAC,CAAC;IACL,CAAC;IAED,QAAQ;IACR,CAAC;IAED,KAAK;QACH,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE,CAAC,SAAS,CAAC,CAAC,KAAK,EAAE,EAAE;QAGnD,CAAC,CAAC;IACJ,CAAC;IAED,MAAM;QACJ,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC;IAC9B,CAAC;IAED,UAAU;QACR,OAAO,IAAI,CAAC,aAAa,CAAC,UAAU,EAAE,CAAC;IACzC,CAAC;IAED,WAAW;QACT,OAAO,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC,OAAO,EAAE,IAAI,IAAI,CAAC,WAAW,CAAC;IACrE,CAAC;;4EA/BU,cAAc;4GAAd,cAAc;QCR3B,yEAAkC;QAChC,8EAAuC;QACrC,0GAGM;QACN,0GAGM;QACR,4DAAW;QACb,4DAAM;;QATuF,0DAAmB;QAAnB,mFAAmB;QAInB,0DAAkB;QAAlB,kFAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;IEN/G,oEAAwB;IAAA,wEAAa;IAAA,4DAAI;;;IACzC,oEAAuB;IAAA,8IAAmF;IAAA,4DAAI;;ADSvG,MAAM,eAAe;IAE1B,YAAoB,IAA2B,EAAU,MAAc;QAAnD,SAAI,GAAJ,IAAI,CAAuB;QAAU,WAAM,GAAN,MAAM,CAAQ;IAAI,CAAC;IAG5E,QAAQ;QACN,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE;YAClD,UAAU,CAAC,GAAG,EAAE;gBAEd,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YAC7B,CAAC,EAAE,GAAG,CAAC;QACT,CAAC,CAAC;IACJ,CAAC;IAED,WAAW;QACT,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC;IAC/B,CAAC;IAED,SAAS;QACP,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;IACjC,CAAC;;8EApBU,eAAe;6GAAf,eAAe;QCV5B,uGAAyC;QACzC,uGAA8G;;QAD1G,kFAAkB;QAClB,0DAAiB;QAAjB,iFAAiB;;;;;;;;;;;;;;;;;;;;;;;;;ACMd,MAAM,aAAa;IAExB,gBAAgB,CAAC;IAEjB,QAAQ;IACR,CAAC;;0EALU,aAAa;2GAAb,aAAa;QCP1B,yEAAiH;QAC/G,wEAAyB;QACzB,yEAAiF;QAC/E,8EAA4C;QAC9C,4DAAM;QACR,4DAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAqD;AACG;AAIyB;;;;;;;;;;;;;;;ICyD3E,wEAEwC;IAAA,sEAAW;IAAA,4DAAI;;;IADvB,6JAA+B;;;IAzCvE,8EAAgE;IAC9D,0EAC6C;IAC3C,0EAA0C;IACxC,qEAA4G;IAC9G,4DAAM;IACN,0EACiE;IAC/D,0EAAuF;IACrF,yEAAQ;IAAA,8DAAG;IAAA,4DAAS;IACpB,sEAAK;IAAA,uDAAc;IAAA,4DAAM;IAC3B,4DAAM;IACN,2EAAuF;IACrF,0EAAQ;IAAA,iEAAK;IAAA,4DAAS;IACtB,uEAAK;IAAA,wDAAgB;IAAA,4DAAM;IAC7B,4DAAM;IACN,2EAAuF;IACrF,0EAAQ;IAAA,yEAAa;IAAA,4DAAS;IAC9B,uEAAK;IAAA,wDAA2B;IAAA,4DAAM;IACxC,4DAAM;IACN,2EAAuF;IACrF,0EAAQ;IAAA,yEAAa;IAAA,4DAAS;IAC9B,uEAAK;IAAA,wDAAyC;IAAA,4DAAM;IACtD,4DAAM;IAKR,4DAAM;IACN,2EACuG;IACrG,oFAA+E;IAAA,+EAC/E;IAAA,4DAAe;IACf,2EACuE;IACrE,yEAEgD;IAAA,0EAAc;IAAA,4DAAI;IAClE,yEACiC;IAAA,uEAAW;IAAA,4DAAI;IAChD,yHAEuD;IACzD,4DAAM;IACR,4DAAM;IACR,4DAAM;IACR,4DAAW;;;;IA1CiC,0DAAmE;IAAnE,mMAAmE;IAMlG,0DAAc;IAAd,8EAAc;IAId,0DAAgB;IAAhB,gFAAgB;IAIhB,0DAA2B;IAA3B,kGAA2B;IAI3B,0DAAyC;IAAzC,gHAAyC;IASX,0DAAyC;IAAzC,kGAAyC;IAKzC,0DAA+B;IAA/B,8JAA+B;IAES,0DAA+B;IAA/B,8JAA+B;IAGzC,0DAAwB;IAAxB,8FAAwB;;;ADlD9F,MAAM,kBAAkB;IAc7B,YAAoB,GAAe,EAAU,IAA2B,EAC9D,MAAiB;QADP,QAAG,GAAH,GAAG,CAAY;QAAU,SAAI,GAAJ,IAAI,CAAuB;QAC9D,WAAM,GAAN,MAAM,CAAW;QAd3B,qBAAgB,GAAa,CAAC,MAAM,EAAE,WAAW,EAAE,UAAU,EAAE,SAAS,CAAC,CAAC;QAC1E,+CAA+C;QAC/C,SAAI,GAAG,EAAE,CAAC;QACV,YAAO,GAAG,EAAE,CAAC;QACb,eAAU,GAAG,EAAE,CAAC;QAChB,WAAM,GAAG,GAAG;QAEZ,gBAAW,GAAG,IAAI,CAAC;IAOY,CAAC;IAEhC,QAAQ;QAEN,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC;QAE1B,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,4FAAsB,EAAE;YACvD,KAAK,EAAE,OAAO;YACd,IAAI,EAAE,2BAA2B;YACjC,YAAY,EAAE,IAAI;SACnB,CAAC,CAAC;QAEH,IAAI,CAAC,GAAG,CAAC,GAAG,CAAM,YAAY,EAAE,aAAa,CAAC,CAAC,SAAS,CAAC,WAAW,CAAC,EAAE;YACrE,IAAI,CAAC,OAAO,GAAG,WAAW,CAAC;YAC3B,UAAU,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;QAE9E,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE;YACnC,IAAI,KAAK,GAAG,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC;YAE3C,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC;QAEvC,CAAC,CAAC;IACJ,CAAC;IAED,UAAU,CAAC,KAAa,EAAE,MAAc;QACtC,IAAI,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,GAAG,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,GAAG,OAAO,GAAG,CAAC,EAAE,EAAC,CAAC,CAAC,CAAC;QAE/E,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,4FAAsB,EAAE;YACvD,KAAK,EAAE,OAAO;YACd,IAAI,EAAE,oCAAoC;YAC1C,YAAY,EAAE,IAAI;SACnB,CAAC,CAAC;QAEH,IAAI,CAAC,GAAG,CAAC,IAAI,CAAM,YAAY,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC,SAAS,CAAC,WAAW,CAAC,EAAE;YACnE,IAAI,CAAC,UAAU,GAAG,WAAW,CAAC;YAC9B,OAAO,CAAC,KAAK,EAAE,CAAC;QAClB,CAAC,CAAC,CAAC;IACL,CAAC;IAED,MAAM,CAAC,GAAW;QAChB,IAAI,GAAG,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC;QACtB,GAAG,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;QACvB,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC,OAAO,EAAE,GAAG,GAAG,GAAG,GAAG,CAAC,WAAW,EAAE,CAAC;IAC9E,CAAC;IAED,OAAO;QACL,IAAI,CAAC,IAAI,CAAC,WAAW;YACnB,OAAO,IAAI,CAAC,IAAI,CAAC;QAEnB,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE;YAC5B,OAAO,GAAG,CAAC,SAAS,IAAI,IAAI,CAAC,MAAM;QACrC,CAAC,CAAC;IACJ,CAAC;IAED,WAAW;IAEX,CAAC;IAED,cAAc,CAAC,GAAQ;QACrB,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC;QAC5B,IAAI,GAAG,IAAI,GAAG,CAAC,KAAK;YAClB,IAAI,CAAC,WAAW,GAAG,CAAC,GAAG,CAAC,KAAK,KAAK,MAAM,CAAC,CAAC;QAE5C,qBAAqB;QACrB,IAAI,CAAC,IAAI,CAAC,WAAW;YACnB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC;aAE3B;YACE,IAAI,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC;YAErC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE;gBACpC,OAAO,GAAG,CAAC,SAAS,IAAI,IAAI,CAAC,EAAE,CAAC;YAClC,CAAC,CAAC;SACH;QAED,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;QACzC,IAAI,CAAC,SAAS,CAAC,eAAe,GAAG,CAAC,CAAC,EAAC,EAAE,EAAC,EAAE,CAAC;QAE1C,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,CAAC;QAC3B,IAAI,CAAC,UAAU,CAAC,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,IAAI,CAAC,CAAC,CAAC;IACnD,CAAC;IAED,QAAQ,CAAC,KAAa,EAAE,OAAY;QAClC,IAAI,CAAC,OAAO,CAAC,MAAM;YACjB,OAAO;QAET,OAAO,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAC/B,CAAC;IAED,SAAS,CAAC,IAAU;QAElB,IAAI,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;QAChC,IAAI,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;QAEtB,IAAI,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,sBAAsB,CAAC;YAC7C,OAAO,IAAI,CAAC;QAGd,OAAO,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,IAAI,CAAC,EAAE,CAAC;IAEtC,CAAC;IAED,aAAa,CAAC,IAAU;QACtB,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,4FAAsB,EAAE;YACvD,KAAK,EAAE,OAAO;YACd,IAAI,EAAE,mCAAmC;YACzC,YAAY,EAAE,IAAI;SACnB,CAAC,CAAC;QAEH,4EAA4E;QAC5E,qCAAqC;QACrC,+BAA+B;QAC/B,yEAAyE;QACzE,yBAAyB;QACzB,kCAAkC;QAClC,UAAU;QACV,MAAM;QACN,qBAAqB;QACrB,KAAK;IACP,CAAC;;oFAxIU,kBAAkB;gHAAlB,kBAAkB;kEAUlB,2DAAO;kEACP,qEAAY;;;;;;QC7BzB,yEAC4G;QAE1G,yEAC4D;QAE1D,wEAA4F;QAC1F,8EACF;QAAA,4DAAK;QAEL,yEAAuG;QACrG,gGAA0G;QAAnD,mKAAU,0BAAsB,IAAC;QACtF,uFAAoF;QAAA,gFACpF;QAAA,4DAAoB;QACpB,uFAA8G;QAC5G,kFAAqB;QAAA,4DAAoB;QAC7C,4DAA0B;QAC5B,4DAAM;QAEN,mEAEI;QAEN,4DAAM;QACN,0EACkE;QAEhE,6HA8CW;QACb,4DAAM;QACN,2EACsG;QACpG,gFAAkH;QACpH,4DAAM;QACR,4DAAM;;QAjE6E,0DAAkC;QAAlC,2FAAkC;QAanF,0DAAa;QAAb,mFAAa;QAkDE,0DAA+B;QAA/B,kJAA+B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC5EnC;AACc;AAEX;AACwC;;;;;;;;;;;;;;;ICOxE,iFAEuE;IACnE,0EACkD;IAC9C,2EAAwE;IAAA,uDAAiB;IAAA,4DAAO;IAChG,2EAAoD;IAAA,yEAAQ;IAAA,kEAAO;IAAA,4DAAS;IAAA,uDAAiB;IAAA,4DAAO;IACpG,2EAAoD;IAAA,yEAAQ;IAAA,sEAAU;IAAA,4DAAS;IAAA,wDAAoB;IAAA,4DAAO;IAC9G,4DAAM;IACV,4DAAa;;;IAPwC,6EAAiB;IAGU,0DAAiB;IAAjB,iFAAiB;IACb,0DAAiB;IAAjB,iFAAiB;IACd,0DAAoB;IAApB,oFAAoB;;;;IAS/G,gFAAuD;IACnD,0EACiK;IAC7J,0EAA2K;IACvK,wEAAyL;IAAA,uDAAiB;IAAA,4DAAI;IAC9M,6EAAqI;IAA/D,6YAAyB;IAC3F,2EAAU;IAAA,gEAAK;IAAA,4DAAW;IAC9B,4DAAS;IACb,4DAAM;IACN,2EAAoG;IAAA,yEAAQ;IAAA,mEACxG;IAAA,4DAAS;IAAA,wDAAiB;IAAA,4DAAO;IACrC,4EAAmG;IAAA,0EAAQ;IAAA,sEACvG;IAAA,4DAAS;IAAA,wDAAoB;IAAA,4DAAO;IAC5C,4DAAM;IACV,4DAAgB;;;IAVqL,0DAAiB;IAAjB,iFAAiB;IAMjM,0DAAiB;IAAjB,iFAAiB;IAEjB,0DAAoB;IAApB,oFAAoB;;ADZ9C,MAAM,yBAAyB;IAEpC,YAA4C,IAAoB;QAApB,SAAI,GAAJ,IAAI,CAAgB;QAWhE,oBAAe,GAAuB,EAAE,CAAC;QACzC,4BAAuB,GAAuB,EAAE,CAAC;QAEjD,gBAAW,GAAG,IAAI,uDAAW,EAAE,CAAC;QAb9B,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC,kBAAkB,CAAC;QAEvD,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY;aAClD,IAAI,CACH,yDAAS,CAAC,EAAE,CAAC,EACb,mDAAG,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,CAC9C,CAAC;IACN,CAAC;IAYO,eAAe,CAAC,OAAY;QAClC,IAAI,WAAW,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,uBAAuB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAC1G,IAAI,aAAa,GAAG,uFAAkB,CAAE,CAAC,CAAC,EAAE,CAAC,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAE1E,IAAG,CAAC,OAAO;YACT,OAAO,aAAa,CAAC;QAEvB,MAAM,WAAW,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;QAExF,OAAO,aAAa,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,OAAO,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE;YACrO,IAAI,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;YACxD,IAAI,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;YAExD,IAAI,GAAG,IAAI,CAAC,CAAC;gBACX,GAAG,GAAG,IAAI,CAAC;YACb,IAAI,GAAG,IAAI,CAAC,CAAC;gBACX,GAAG,GAAG,IAAI,CAAC;YAEb,IAAI,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;YACxD,IAAI,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;YAExD,IAAI,GAAG,IAAI,CAAC,CAAC;gBACX,GAAG,GAAG,GAAG,CAAC;YACZ,IAAI,GAAG,IAAI,CAAC,CAAC;gBACX,GAAG,GAAG,GAAG,CAAC;YAEZ,IAAI,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;YAC3D,IAAI,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;YAE3D,IAAI,GAAG,IAAI,CAAC,CAAC;gBACX,GAAG,GAAG,GAAG,CAAC;YACZ,IAAI,GAAG,IAAI,CAAC,CAAC;gBACX,GAAG,GAAG,GAAG,CAAC;YAEZ,OAAO,CAAE,CAAC,IAAI,GAAG,GAAG,CAAC,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,CAAE,GAAG,CAAE,CAAE,GAAG,GAAG,GAAG,CAAE,GAAG,CAAE,GAAG,GAAG,GAAG,CAAE,CAAE,GAAG,CAAE,CAAE,GAAG,GAAG,GAAG,CAAE,GAAG,CAAE,GAAG,GAAG,GAAG,CAAE,CAAE,CAAC;QACjH,CAAC,CAAC;IACJ,CAAC;IAED,MAAM,CAAC,KAAK;QACV,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC9C,KAAK,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;QACxB,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QAC9B,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;IAClC,CAAC;IAED,MAAM,CAAC,OAAwB;QAE7B,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,OAAO,CAAC,EAAE,CAAE;IAChF,CAAC;IAED,SAAS,CAAC,OAAwB;QAChC,OAAO,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,GAAG,KAAK,GAAG,OAAO,CAAC,KAAK,GAAG,KAAK,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;IACzF,CAAC;IAED,QAAQ;IACR,CAAC;;kGA7EU,yBAAyB,kEAEhB,qEAAe;uHAFxB,yBAAyB;;;;;;QC5BtC,uEAEoC;QAAA,+EAAoB;QAAA,4DAAI;QAE5D,yEAA0E;QACtE,qEAAI;QAAA,uDAAgD;QAAA,4DAAK;QACzD,yEAA8H;QAC1H,oFAAwE;QACpE,yEACiF;QACjF,yFACwG;QAAlC,mLAAkB,kBAAc,IAAC;QACnG,sIASa;;QACjB,4DAAmB;QACvB,4DAAiB;QAErB,4DAAM;QACN,0EAAuE;QACnE,qFAA2C;QACvC,6IAcgB;QACpB,4DAAgB;QACpB,4DAAM;QACV,4DAAM;QACN,2EAA6C;QACzC,2EAA8E;QAC1E,8EAA6F;QAAA,kEAAM;QAAA,4DAAS;QAC5G,8EAC0B;QAAA,+DAAG;QAAA,4DAAS;QAC1C,4DAAM;QACV,4DAAM;;;QA/CE,0DAAgD;QAAhD,0HAAgD;QAGsC,0DAAwB;QAAxB,gFAAwB;QAG9D,0DAAyB;QAAzB,sFAAyB;QAGzC,0DAA2B;QAA3B,2JAA2B;QAcpB,0DAAkB;QAAlB,wFAAkB;QAoBjB,0DAA8B;QAA9B,uFAA8B;QAC/B,0DAAoC;QAApC,iGAAoC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC5CI;AAE9B;AAG0D;AAC9B;AAEE;AACO;AACN;;;;;;;;;;;;;;;;;;;;;ICDlF,8EAEqG;IADjD,4UAA0B;IAE5E,4EAAU;IAAA,gEAAI;IAAA,6DAAW;IAC3B,6DAAS;;;IAJD,0FAAgC;;;IAL1C,2EAAwF;IACtF,yEAA4E;IAC1E,wDACF;IAAA,6DAAI;IAEJ,6HAIS;IACX,6DAAM;;;IARF,2DACF;IADE,+FACF;IAIqD,2DAAuB;IAAvB,kGAAuB;;;;IAI9E,2EAAoG;IAClG,sFAAkD;IAChD,6EAAW;IAAA,iFAAqB;IAAA,6DAAY;IAC5C,4EACoB;IACtB,6DAAiB;IAEjB,8EACgD;IADY,kUAA0B;IAEpF,4EAAU;IAAA,iEAAK;IAAA,6DAAW;IAC5B,6DAAS;IAET,8EAC8D;IADS,4TAAoB;IAEzF,6EAAU;IAAA,kEAAK;IAAA,6DAAW;IAC5B,6DAAS;IACX,6DAAM;;;IAbgC,2DAA+B;IAA/B,gGAA+B;IAUjE,2DAAmC;IAAnC,oGAAmC;;;;IAQvC,8EAC8D;IAA5C,kUAAuB;IAAqB,mFAAuB;IAAA,6DAAS;;;IADtF,wFAA8B;;;;IA0C9B,8EACwE;IAAtE,kUAAsB;IAAgD,gFAC/D;IAAA,6DAAS;;;IAF8B,uFAAsB;;;;IAa9D,8EAGsD;IAFF,ybAAgC;IAGlF,4EAAU;IAAA,iEAAK;IAAA,6DAAW;IAC5B,6DAAS;;IAHP,kGAAwC;;;IAVhD,gFAAqG;IACnG,2EACuE;IACrE,2EAAgD;IAC9C,yEAC4G;IAC1G,wDACF;IAAA,6DAAI;IACJ,mIAKS;IACX,6DAAM;IACN,2EAAsF;IACpF,0EAAQ;IAAA,kEAAM;IAAA,6DAAS;IACvB,uEAAK;IAAA,yDAAiB;IAAA,6DAAM;IAC9B,6DAAM;IACN,4EAAsF;IACpF,2EAAQ;IAAA,sEAAS;IAAA,6DAAS;IAC1B,wEAAK;IAAA,yDAAoB;IAAA,6DAAM;IACjC,6DAAM;IACR,6DAAM;IACR,6DAAW;;;;IAlBH,2DACF;IADE,8FACF;IAG4C,2DAAqC;IAArC,uHAAqC;IAO5E,2DAAiB;IAAjB,mFAAiB;IAIjB,2DAAoB;IAApB,sFAAoB;;;;IAqBrC,8EAA2G;IAA5B,uUAA2B;IAAC,yEACjG;IAAA,6DAAS;;;;IACnB,8EAAkF;IAArB,gUAAoB;IAAC,uEAAW;IAAA,6DAAS;;;IAgB9F,yEAAuF;IACrF,kFAAqB;IAAA,6DAAI;;;;IAG3B,8EAA8F;IAAlC,0VAAiC;IAAC,sEACvF;IAAA,6DAAS;;;;IAChB,8EAA6F;IAAlC,0VAAiC;IAAC,iFAC3E;IAAA,6DAAS;;;;IAC3B,8EAA8E;IAAxB,gVAAuB;IAAC,yEACrE;IAAA,6DAAS;;;;IAnBxB,gFAA6D;IAC3D,sFAA8B;IAC5B,2EAAiD;IAC/C,qEAAG;IAAA,wDAAgD;IAAA,6DAAI;IACvD,8EACoC;IAAlC,+UAAiC;IAAC,6DAAC;IAAA,6DAAS;IAChD,6DAAM;IACR,6DAAiB;IACjB,wFAA6C;IAC3C,2EAAgF;IAC9E,yHAC2B;IAC3B,+EAC8B;IAA5B,0UAA2B;IAAC,iEAAI;IAAA,6DAAS;IAC3C,qIACgB;IAChB,qIAC2B;IAC3B,qIACkB;IACpB,6DAAM;IACR,6DAAmB;IACrB,6DAAW;;;IAnBF,2DAAgD;IAAhD,yHAAgD;IAOiB,2DAAiB;IAAjB,qFAAiB;IAE7E,2DAAwB;IAAxB,yFAAwB;IAEvB,2DAAiB;IAAjB,qFAAiB;IAEjB,2DAAgB;IAAhB,oFAAgB;IAEhB,2DAAgB;IAAhB,oFAAgB;;;ADhIlC,MAAM,mBAAmB;IAgD9B,YACU,UAAsB,EAAU,KAAqB,EACrD,MAAyB,EAAU,IAA0B,EAC7D,MAAiB,EACjB,GAAe,EAAU,MAAc;QAHvC,eAAU,GAAV,UAAU,CAAY;QAAU,UAAK,GAAL,KAAK,CAAgB;QACrD,WAAM,GAAN,MAAM,CAAmB;QAAU,SAAI,GAAJ,IAAI,CAAsB;QAC7D,WAAM,GAAN,MAAM,CAAW;QACjB,QAAG,GAAH,GAAG,CAAY;QAAU,WAAM,GAAN,MAAM,CAAQ;QAlDjD,gBAAW,GAAsB,sFAAiB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAUhD,cAAS,GAAuC,CAAC,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC,iCAAiC;QAEvG,gBAAW,GAAW,CAAC,CAAC;QAExB,YAAO,GAAW,EAAE,CAAC;QAErB,YAAO,GAAW,CAAC,CAAC;QAEpB,kBAAa,GAAuD,CAAC,CAAC,kBAAkB,EAAE,kBAAkB,EAAE,CAAC,kBAAkB,EAAE,iBAAiB,CAAC;QAItJ,oBAAe,GAAG,KAAK,CAAC;QAazB,gBAAW,GAAG,KAAK,CAAC;QACpB,kBAAa,GAAG,KAAK,CAAC;QAgB7B,WAAM,GAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;IAFwB,CAAC;IAhDtD,UAAU,CAAC,EAAE;QACX,IAAI,OAAO,GAAG,CAAC,uFAAkB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;QACnD,IAAI,OAAO,CAAC,MAAM;YAChB,OAAO,OAAO,CAAC,CAAC,CAAC,CAAC;QAEpB,OAAO,IAAI,CAAC;IACd,CAAC;IA8CD,QAAQ;QACN,IAAI,CAAC,OAAO,EAAE,CAAC;QACf,IAAI,CAAC,eAAe,GAAG,IAAI,wDAAW,CAAC,EAAE,EAAE;YACzC,gEAAmB;YACnB,iEAAoB,CAAC,EAAE,CAAC;YACxB,iEAAoB,CAAC,CAAC,CAAC;SACxB,CAAC,CAAC;QACH,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,UAAU,CAAC,gBAAgB,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE;YACxE,IAAI,MAAM,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE;gBACnC,0BAA0B;gBAC1B,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC;gBAC5B,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;gBAC5B,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;gBAClC,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,sBAAsB,CAAC,CAAC;gBACrD,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE;oBACjD,oCAAoC;gBACtC,CAAC,CAAC,CAAC;aAEJ;iBAAM,IAAI,MAAM,EAAE;gBACjB,+DAA+D;aAChE;QACH,CAAC,CAAC,CAAC;QAKH,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE;YACxC,IAAI,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;YACtB,IAAI,EAAE,IAAI,SAAS;gBACjB,OAAO;YAET,IAAI,GAAG,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC;YAGvB,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,4FAAsB,EAAE;gBACvD,KAAK,EAAE,OAAO;gBACd,IAAI,EAAE,mCAAmC;gBACzC,YAAY,EAAE,IAAI;aACnB,CAAC,CAAC;YAEH,IAAI,CAAC,GAAG,CAAC,IAAI,CAAM,YAAY,EAAE,KAAK,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE;gBACjE,IAAI,OAAO,IAAI,OAAO,CAAC,MAAM,EAAE;oBAC7B,IAAI,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;oBACxB,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;iBACzB;gBACD,OAAO,CAAC,KAAK,EAAE,CAAC;YAClB,CAAC,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC;IAED,UAAU,CAAC,MAAM;QACf,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE;YAC3C,IAAI,GAAG,GAAG,EAAE,GAAG,EAAE,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE;YACjE,IAAI,CAAC,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC;YACtC,IAAI,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO;gBAChC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;;gBAE9C,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;YAE/C,IAAI,CAAC,QAAQ,EAAE,CAAC;YAChB,UAAU,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAC,CAAC,EAAE,GAAG,CAAC,CAAC;SACtD;QAED,IAAI,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,gBAAgB,EAAE;YACnD,IAAI,IAAI,GAAG,EAAE,CAAC;YACd,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;gBACvC,IAAI,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;gBAClC,IAAI,GAAG;oBACL,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;YAClB,CAAC,CAAC;YAEF,MAAM,CAAC,MAAM,CAAC,gBAAgB,GAAG,IAAI,CAAC;SACvC;IACH,CAAC;IAED,iBAAiB,CAAC,GAAW;QAC3B,IAAI,GAAG,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC;QACtB,GAAG,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;QACvB,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC,OAAO,EAAE,GAAG,GAAG,GAAG,GAAG,CAAC,WAAW,EAAE,CAAC;IAC9E,CAAC;IAED,QAAQ,CAAC,KAAa,EAAE,OAAY;QAClC,IAAI,CAAC,OAAO,CAAC,MAAM;YACjB,OAAO;QAET,OAAO,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAC/B,CAAC;IAGD,cAAc;QACZ,IAAI,CAAC,WAAW,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC;QACrC,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAClD,CAAC;IAGD,OAAO;QACL,OAAO,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,aAAa,CAAC;IAChD,CAAC;IAED,QAAQ;QACN,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,KAAK;YAC7B,OAAO;QAET,IAAI,GAAG,GAAG,EAAE,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,CAAC;QAGnE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IACnB,CAAC;IAED,SAAS,CAAC,IAAS;QACjB,IAAI,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;QAChC,IAAI,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;QAEtB,IAAI,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,sBAAsB,CAAC;YAC7C,OAAO,IAAI,CAAC;QAGd,OAAO,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,IAAI,CAAC,EAAE,CAAC;IAEtC,CAAC;IAGD,MAAM,CAAC,GAAG;QACR,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,4FAAsB,EAAE;YACvD,KAAK,EAAE,OAAO;YACd,IAAI,EAAE,0BAA0B;YAChC,YAAY,EAAE,IAAI;SACnB,CAAC,CAAC;QAEH,IAAI,CAAC,GAAG,CAAC,IAAI,CAAM,YAAY,EAAE,QAAQ,EAAE,GAAG,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE;YAC9D,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE;gBACd,OAAO,CAAC,KAAK,EAAE,CAAC;gBAChB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,0FAAoB,EAAE;oBACrC,KAAK,EAAE,OAAO;oBACd,IAAI,EAAE,GAAG,CAAC,QAAQ;oBAClB,YAAY,EAAE,KAAK;iBACpB,CAAC,CAAC;gBACH,OAAO;aACR;YAED,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC;YAC3B,OAAO,CAAC,KAAK,EAAE,CAAC;YAEhB,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;QAE3B,CAAC,EAAE,GAAG,CAAC,EAAE;YACP,OAAO,CAAC,KAAK,EAAE,CAAC;YAChB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,0FAAoB,EAAE;gBACrC,KAAK,EAAE,OAAO;gBACd,IAAI,EAAE,CAAC,oBAAoB,EAAE,GAAG,CAAC,OAAO,CAAC;gBACzC,YAAY,EAAE,KAAK;aACpB,CAAC,CAAC;QACL,CAAC,CAAC;IACJ,CAAC;IAGD,WAAW;QACT,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,4FAAsB,EAAE;YACvD,KAAK,EAAE,OAAO;YACd,IAAI,EAAE,EAAE,KAAK,EAAE,gBAAgB,EAAE,IAAI,EAAE,kCAAkC,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,GAAG,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE;YAClI,YAAY,EAAE,IAAI;SACnB,CAAC,CAAC;QAEH,OAAO,CAAC,WAAW,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE;YAGpC,IAAI,GAAG,EAAE;gBAEP,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,4FAAsB,EAAE;oBACtD,KAAK,EAAE,OAAO;oBACd,IAAI,EAAE,4BAA4B;oBAClC,YAAY,EAAE,IAAI;iBACnB,CAAC,CAAC;gBAEH,IAAI,GAAG,GAAG,EAAE,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE;gBAEhC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAM,YAAY,EAAE,QAAQ,EAAE,GAAG,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE;oBAC9D,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE;wBACd,MAAM,CAAC,KAAK,EAAE,CAAC;wBACf,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,0FAAoB,EAAE;4BACrC,KAAK,EAAE,OAAO;4BACd,IAAI,EAAE,GAAG,CAAC,QAAQ;4BAClB,YAAY,EAAE,KAAK;yBACpB,CAAC,CAAC;wBACH,OAAO;qBACR;oBAED,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC;oBACzB,MAAM,CAAC,KAAK,EAAE,CAAC;oBAEf,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,EAAE,EAAE,UAAU,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC;gBAG9D,CAAC,EAAE,GAAG,CAAC,EAAE;oBACP,MAAM,CAAC,KAAK,EAAE,CAAC;oBACf,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,0FAAoB,EAAE;wBACrC,KAAK,EAAE,OAAO;wBACd,IAAI,EAAE,CAAC,oBAAoB,EAAE,GAAG,CAAC,OAAO,CAAC;wBACzC,YAAY,EAAE,KAAK;qBACpB,CAAC,CAAC;gBACL,CAAC,CAAC;aAEH;QACH,CAAC,CAAC;IACJ,CAAC;IAGD,aAAa,CAAC,OAAO;QACnB,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,gBAAgB,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,gBAAgB,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,OAAO,CAAC,EAAE,CAAC;QAEjH,IAAI,GAAG,GAAG,EAAE,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,gBAAgB,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,gBAAgB,EAAE,EAAE,CAAC;QAC5H,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IACnB,CAAC;IAED,UAAU;QAER,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,uGAAyB,EAAE;YAC1D,KAAK,EAAE,QAAQ;YACf,IAAI,EAAE,EAAE,kBAAkB,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,gBAAgB,IAAI,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE;YAC/F,YAAY,EAAE,IAAI;SACnB,CAAC,CAAC;QAEH,OAAO,CAAC,WAAW,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE;YAGpC,IAAI,GAAG,IAAI,GAAG,CAAC,MAAM,EAAE;gBACrB,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,gBAAgB,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,gBAAgB,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;gBAE1H,IAAI,GAAG,GAAG,EAAE,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,gBAAgB,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,gBAAgB,EAAE,EAAE,CAAC;gBAC5H,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;aAClB;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAED,cAAc;QACZ,IAAI,CAAC,GAAG,CAAC,IAAI,CAAM,YAAY,EAAE,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE;YAC3E,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACjB,IAAI,CAAC,GAAG,CAAC,IAAI,CAAM,YAAY,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE;gBAC5E,IAAI,OAAO,IAAI,OAAO,CAAC,MAAM,EAAE;oBAC7B,IAAI,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;oBACxB,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;iBACzB;YACH,CAAC,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC;IAED,WAAW;QACT,mEAAmE;QACnE,qBAAqB;QACrB,mCAAmC;QACnC,uBAAuB;QACvB,MAAM;QAEN,2CAA2C;QAI3C,MAAM;IACR,CAAC;IAoBD,WAAW,CAAC,GAAQ;QAClB,IAAI,MAAM,GAAG,IAAI,EAAE,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC;QACjC,IAAI,CAAC,GAAG,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;QAEhC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IAElB,CAAC;IAED,QAAQ,CAAC,KAAU;QACjB,IAAI,MAAM,GAAG,IAAI,EAAE,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACrC,IAAI,CAAC,GAAG,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;QAElC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,OAAO,CAAC,CAAM;QAEZ,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAE3B,IAAI,GAAG,GAAG,EAAE,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;QAElC,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC,SAAS,EAAE,CAAC,CAAC;QAEnD,IAAI,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAE7C,IAAI,CAAC,cAAc,CAAC,SAAS,EAAE,CAAC,KAAK,EAAE,CAAC;QACxC,IAAI,CAAC,cAAc,CAAC,SAAS,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;IAChD,CAAC;IAED,OAAO;QACL,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QAC7F,UAAU,CAAC,GAAG,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,aAAa,EAAE,EAAC,CAAC,EAAE,GAAG,CAAC,CAAC;QAE3D,IAAI,CAAC,iBAAiB,EAAE,CAAC;IAC3B,CAAC;IAED,mBAAmB;QACjB,IAAI,IAAI,CAAC,cAAc;YACrB,OAAO;QACT,IAAI,CAAC,cAAc,GAAG,IAAI,EAAE,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;QAE5C,IAAI,GAAG,GAAG,IAAI,EAAE,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;QACjC,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;QAEnC,IAAI,GAAG,GAAG,IAAI,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC;YAC3B,IAAI,EAAE,IAAI,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC;gBACtB,KAAK,EAAE,oBAAoB;aAC5B,CAAC;YACF,MAAM,EAAE,IAAI,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC;gBAC1B,KAAK,EAAE,qBAAqB;gBAC5B,KAAK,EAAE,CAAC;aACT,CAAC;SACH,CAAC,CAAC;QACH,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;QAElC,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QAEpC,MAAM,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IAChD,CAAC;IAEO,iBAAiB;QACvB,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;QAEvB,IAAI,GAAG,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC;QAE1B,IAAI,GAAG,GAAG,IAAI,EAAE,CAAC,OAAO,CAAC,YAAY,CAAC;YACpC,MAAM,EAAE,IAAI,CAAC,aAAa;SAC3B,CAAC,CAAC;QAEH,GAAG,CAAC,cAAc,GAAG,GAAG,CAAC,YAAY,CAAC;QACtC,IAAI,IAAI,GAAG,IAAI,CAAC;QAEhB,GAAG,CAAC,kBAAkB,GAAG;YAEvB,IAAI,GAAG,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE;YAE/C,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;QAC5B,CAAC;QAGD,IAAI,EAAE,GAAG,IAAI,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QAEnD,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC;QAI/B,IAAI,8BAA8B,GAAG,QAAQ,CAAC,cAAc,CAAC,uBAAuB,CAAC,CAAC;QACtF,IAAI,CAAC,gCAAgC,GAAG,8BAA8B,CAAC,YAAY,CAAC;QAEpF,IAAI,sBAAsB,GAAG,QAAQ,CAAC,cAAc,CAAC,eAAe,CAAC,CAAC;QAEtE,IAAI,CAAC,qBAAqB,GAAG,IAAI,EAAE,CAAC,OAAO,CAAC;YAC1C,OAAO,EAAE,8BAA8B;YACvC,WAAW,EAAE,eAAe;YAC5B,OAAO,EAAE;gBACP,MAAM,EAAE,EAAE;aACX;SACF,CAAC,CAAC;QACH,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;IAE7C,CAAC;IAED,eAAe;QACb,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;QAE1B,IAAI,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;QAGlE,IAAI,IAAI,CAAC,UAAU;YACjB,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC;QAEhC,IAAI,CAAC,UAAU;YACb,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAEnD,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;IAExC,CAAC;IAED,iBAAiB;QAEf,IAAI,EAAE,GAAG,SAAS,CAAC;QACnB,IAAI,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,SAAS,EAAE,CAAC,MAAM;QAC/C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACtC,IAAI,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;YACtB,IAAI,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,qBAAqB,EAAE;gBAC7C,EAAE,GAAG,KAAK,CAAC;gBACX,MAAM;aACP;SACF;QAED,IAAI,CAAC,EAAE;YACL,OAAO,CAAC,KAAK,CAAC,6BAA6B,CAAC,CAAC,CAAC,sBAAsB;QAEtE,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;IACtB,CAAC;IAED,gBAAgB,CAAC,QAAQ;QAEvB,OAAO,CAAC,GAAG,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC;QAErC,8GAA8G;QAC9G,IAAI,CAAC,QAAQ;YAAE,OAAO;QAEtB,IAAI,CAAC,UAAU,GAAG,QAAQ,CAAC;QAE3B,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,WAAW,GAAG,QAAQ;QAEzC,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAEzB,IAAI,CAAC,IAAI,CAAC,SAAS;YAAE,OAAO,CAAC,gBAAgB;QAE7C,IAAI,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,CAAC,cAAc,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QAErE,IAAI,CAAC,IAAI;YACP,wBAAwB;YACxB,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC;QAErD,IAAI,CAAC,IAAI,EAAE;YACT,OAAO;SACR;QAED,IAAI,GAAG,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC,SAAS,EAAE,CAAC;QACzC,IAAI,MAAM,GAAG,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;QAEtC,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;QAE7C,IAAI,CAAC,6BAA6B,CAAC,MAAM,CAAC,CAAC;QAE3C,kCAAkC;IAEpC,CAAC;IAGD,6BAA6B,CAAC,MAAgB;QAE5C,OAAO,CAAC,GAAG,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC;QAEpC,IAAI,OAAO,GAAG,IAAI,CAAC,qBAAqB,CAAC;QAEzC,kBAAkB;QAClB,UAAU,CAAC,GAAG,EAAE,GAAG,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;QAExD,mBAAmB;QACnB,IAAI,SAAS,GAAG,QAAQ,CAAC,cAAc,CAAC,uBAAuB,CAAC,CAAC;QAEjE,sCAAsC;QACtC,IAAI,SAAS,CAAC,QAAQ,CAAC,MAAM,IAAI,CAAC,EAAE;YAClC,IAAI,GAAG,GAAG,QAAQ,CAAC,cAAc,CAAC,+BAA+B,CAAC,CAAC;YACnE,SAAS,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;SAC5B;IACH,CAAC;IAED,qBAAqB;QAGnB,IAAI,mBAAmB,CAAC;QACxB,mCAAmC;QACnC,MAAM,CAAC,MAAM,EAAE,CAAC,eAAe,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,UAAU,WAAW;YACxE,IAAI,WAAW,YAAY,EAAE,CAAC,WAAW,CAAC,eAAe,EAAE;gBACzD,mBAAmB,GAAG,WAAW,CAAC;aACnC;QACH,CAAC,CAAC,CAAC;QAEH,kBAAkB;QAClB,IAAI,mBAAmB;YACrB,MAAM,CAAC,MAAM,EAAE,CAAC,iBAAiB,CAAC,mBAAmB,CAAC,CAAC;QAGzD,IAAI,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,mBAAmB,EAAE,CAAC;QAE7C,IAAI,CAAC,IAAI,CAAC,UAAU;YAClB,IAAI,CAAC,UAAU;gBACb,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QACrD,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,WAAW,GAAG,QAAQ,CAAC;IAC5C,CAAC;IAED,eAAe;QAEb,sCAAsC;QACtC,IAAI,QAAQ,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC;QAKvB,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE;YACvD,IAAI,GAAG,GAAG;gBACR,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE;oBAClD,QAAQ,EAAE;wBACR,GAAG,EAAE,IAAI,CAAC,UAAU,CAAC,GAAG;wBACxB,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC,KAAK;qBAC7B;oBACD,IAAI,EAAE,IAAI;iBACX;aACF,CAAC;YAEF,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACnB,CAAC,CAAC,CAAC;IACL,CAAC;IAED,qBAAqB;QACnB,IAAI,CAAC,QAAQ,EAAE,CAAC;IAClB,CAAC;IAED,QAAQ;QACN,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;QAC1B,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;QAC5B,IAAI,CAAC,qBAAqB,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;QAClD,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QACrC,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;IAC7B,CAAC;IAED,wBAAwB,CAAC,UAAoB;QAC3C,wDAAwD;QACxD,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,4FAAsB,EAAE;YAC3D,KAAK,EAAE,OAAO;YACd,IAAI,EAAE,qBAAqB;YAC3B,YAAY,EAAE,IAAI;SACnB,CAAC,CAAC;QAEH,IAAI,EAAE,GAAG,IAAI,0CAAO,EAAO,CAAC;QAE5B,IAAI,GAAG,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC;QAC1B,IAAI,QAAQ,GAAG,GAAG,CAAC,OAAO,EAAE,CAAC;QAC7B,IAAI,IAAI,GAAG,IAAI,CAAC;QAEhB,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QAExB,IAAI,EAAE,GAAG,SAAS,CAAC;QACnB,IAAI,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,SAAS,EAAE,CAAC,MAAM;QAC/C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACtC,IAAI,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;YACtB,IAAI,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,qBAAqB,EAAE;gBAC7C,EAAE,GAAG,KAAK,CAAC;gBACX,MAAM;aACP;SACF;QAED,IAAI,OAAO,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;QAC/B,IAAI,GAAG,GAAG,EAAE,CAAC;QAEb,IAAI;YACF,GAAG,GAAG,EAAE,CAAC,SAAS,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC,SAAS,EAAE,CAAC;SACtF;QACD,OAAO,EAAE,EAAE;YACT,WAAW,CAAC,KAAK,EAAE,CAAC;YACpB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,0FAAoB,EAAE;gBACrC,KAAK,EAAE,OAAO;gBACd,IAAI,EAAE,CAAC,2BAA2B,EAAE,sGAAsG,CAAC;gBAC3I,YAAY,EAAE,IAAI;aACnB,CAAC,CAAC;YACH,MAAM,EAAE,CAAC;SACV;QAED,IAAI,QAAQ,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC;QAE7B,iCAAiC;QACjC,8BAA8B;QAC9B,kCAAkC;QAClC,QAAQ;QACR,kCAAkC;QAClC,oCAAoC;QACpC,eAAe;QACf,OAAO;QACP,MAAM;QACN,oBAAoB;QAEpB,IAAI,EAAE,GAAG,GAAG,CAAC,OAAO,EAAE,CAAC;QACvB,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE;YACV,IAAI,EAAE,UAAU;YAChB,OAAO,EAAE,KAAK;YACd,OAAO,EAAE,OAAO;SACjB,CAAC,CAAC;QAEH,GAAG,CAAC,IAAI,CAAC,gBAAgB,EAAE;YACzB,IAAI,SAAS,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;YAEjD,SAAS,CAAC,KAAK,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;YAChC,SAAS,CAAC,MAAM,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;YACjC,IAAI,UAAU,GAAG,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;YAC5C,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAC1B,QAAQ,CAAC,gBAAgB,CAAC,kBAAkB,CAAC,EAC7C,UAAU,MAAM;gBACd,IAAI,MAAM,CAAC,KAAK,GAAG,CAAC,EAAE;oBACpB,IAAI,OAAO,GAAG,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,OAAO,CAAC;oBAC9C,UAAU,CAAC,WAAW,GAAG,OAAO,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;oBAC9D,IAAI,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC;oBACvC,iEAAiE;oBACjE,IAAI,MAAM,GAAG,SAAS;yBACnB,KAAK,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC;yBAChC,KAAK,CAAC,GAAG,CAAC;yBACV,GAAG,CAAC,MAAM,CAAC,CAAC;oBACf,gDAAgD;oBAChD,wBAAwB,CAAC,SAAS,CAAC,YAAY,CAAC,KAAK,CACnD,UAAU,EACV,MAAM,CACP,CAAC;oBACF,UAAU,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;iBACpC;YACH,CAAC,CACF,CAAC;YAEF,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;YAEtB,WAAW,CAAC,KAAK,EAAE,CAAC;YAEpB,UAAU,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;YAE3D,wBAAwB;YAGxB,iDAAiD;YACjD,wDAAwD;YACxD,oDAAoD;YACpD,gBAAgB;QAGlB,CAAC,CAAC,CAAC;QAEH,oHAAoH;QACpH,UAAU,CAAC,GAAG,EAAE,GAAG,GAAG,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;QAE7C,OAAO,EAAE,CAAC,YAAY,EAAE,CAAC;IAC3B,CAAC;IAED,WAAW;QACT,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;QACzB,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;IAC9B,CAAC;IAED,QAAQ;QACN,OAAO,IAAI,CAAC,UAAU,IAAI,SAAS,CAAC;IACtC,CAAC;IAED,aAAa,CAAC,CAAC;QACb,QAAQ,CAAC,CAAC,KAAK,EAAE;YACf,KAAK,MAAM;gBACT,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,eAAe,CAAC,CAAC;gBAC9C,MAAM;YACR,KAAK,QAAQ;gBACX,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,sBAAsB,CAAC,CAAC;gBACrD,MAAM;YACR;gBACE,MAAM;SACT;IACH,CAAC;;sFA/sBU,mBAAmB;kHAAnB,mBAAmB;QC5BhC,0EAC+H;QAC7H,0EAC2E;QACzE,wEAAkG;QAAA,uFAC/E;QAAA,6DAAI;QACzB,6DAAM;QACN,0EAC6G;QAC3G,gHAUM;QACN,iHAgBM;QAKN,sHAC8F;QAEhG,6DAAM;QACN,0EACkE;QAEhE,0EACkG;QAChG,gFAAwD;QACtD,4EAC+C;QAE7C,4EACsE;QACpE,4EAAuF;QACrF,2EAAQ;QAAA,0EAAa;QAAA,6DAAS;QAC9B,wEAAK;QAAA,yDAAqC;QAAA,6DAAM;QAClD,6DAAM;QACN,4EAAuF;QACrF,2EAAQ;QAAA,0EAAa;QAAA,6DAAS;QAC9B,wEAAK;QAAA,yDAAwC;QAAA,6DAAM;QACrD,6DAAM;QACN,4EAAuF;QACrF,0EAEgD;QAAA,2EAAc;QAAA,6DAAI;QACpE,6DAAM;QACR,6DAAM;QAER,6DAAM;QACR,6DAAW;QACX,4EAEyC;QACvC,0EACsH;QACpH,gFACF;QAAA,6DAAI;QACJ,4EAA6C;QAC3C,4EAC2G;QACzG,yHAEkB;QAClB,4EACyD;QACvD,8HAwBW;QACb,6DAAM;QACR,6DAAM;QACR,6DAAM;QACR,6DAAM;QACR,6DAAM;QACN,4EAAwE;QACtE,uEACM;QACN,4EAAoE;QAClE,oGAA+G;QAAxD,sKAAU,yBAAqB,IAAC;QACrF,0FAA8F;QAAA,oEAC9F;QAAA,6DAAoB;QACpB,0FAAoF;QAAA,wEACpF;QAAA,6DAAoB;QACtB,6DAA0B;QAC5B,6DAAM;QACN,4EAAmE;QACjE,yHACmB;QACnB,yHAAsG;QACxG,6DAAM;QAEN,4EAAkB;QAChB,qEAA8C;QAC9C,4EAAiD;QAC/C,8HAsBW;QACb,6DAAM;QAER,6DAAM;QACN,uEACM;QAGR,6DAAM;QACR,6DAAM;QAGR,6DAAM;;QAnKgD,2DAAkB;QAAlB,mFAAkB;QAWlB,2DAAiB;QAAjB,kFAAiB;QAqB3B,2DAAuB;QAAvB,4FAAuB;QAiBhD,4DAAqC;QAArC,2GAAqC;QAIrC,2DAAwC;QAAxC,8GAAwC;QAIV,2DAA8B;QAA9B,gKAA8B;QASvE,2DAAsC;QAAtC,gGAAsC;QAQzB,2DAAqC;QAArC,8GAAqC;QAKsB,2DAAiC;QAAjC,wGAAiC;QAiCtG,2DAAoC;QAApC,8FAAoC;QAQpC,2DAAoC;QAApC,8FAAoC;QAC9B,2DAAqC;QAArC,8GAAqC;QAErC,2DAAmB;QAAnB,oFAAmB;QAMuB,2DAAU;QAAV,uEAAU;;;;;;;;;;;;;;;;;;;AClI9D,MAAM,eAAe;;8EAAf,eAAe;6GAAf,eAAe;;;;;;;;;;;;;;;;;;;ACN6C;;;;ICDzE,sEAAsC;IAClC,oEAAG;IAAA,uDAAW;IAAA,4DAAI;IACtB,4DAAM;;;IADC,0DAAW;IAAX,2EAAW;;ADOX,MAAM,oBAAoB;IAE/B,YAA4C,QAAkB;QAAlB,aAAQ,GAAR,QAAQ,CAAU;IAAI,CAAC;IAEnE,QAAQ;IACR,CAAC;;wFALU,oBAAoB,kEAEX,qEAAe;kHAFxB,oBAAoB;QCTjC,oEAAG;QAAA,yFAA8B;QAAA,4DAAI;QACrC,gHAEM;;QAFmB,0DAAW;QAAX,iFAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACDsD;AAE7C;AAEkD;;;;;;;;;;;;;ICGzF,8EAC+C;IAAxB,+TAAuB;IAC5C,iEAAK;IAAA,4DAAW;;;IAGhB,iFAA2F;IACzF,uEAAM;IAAA,uDAAkB;IAAA,4DAAO;IAAC,8DAChC;IAAA,wEAAO;IAAA,uDAA4B;IAAA,4DAAQ;IAC7C,4DAAa;;;IAH0D,+EAAmB;IAClF,0DAAkB;IAAlB,kFAAkB;IACjB,0DAA4B;IAA5B,qGAA4B;;ADDtC,MAAM,kBAAkB;IAmB7B,YACU,gBAAkC;QAAlC,qBAAgB,GAAhB,gBAAgB,CAAkB;QAlB5C,eAAU,GAAG,IAAI,uDAAW,EAAE,CAAC;QAE/B,eAAU,GAAgB,EAAE,CAAC;QAE7B,mBAAc,GAAG,uVAAuV,CAAC;QAEhW,cAAS,GAAQ,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,qBAAqB;QAEjE,qBAAgB,GAA6B,IAAI,uDAAY,EAAE,CAAC;QAEhE,gBAAW,GAAuB,IAAI,uDAAY,EAAE,CAAC;IAS3D,CAAC;IAEL,QAAQ;QACN,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,gBAAgB,CAAC,aAAa,EAAE,CAAC,SAAS,CAAC,UAAU,CAAC,EAAE;YACjF,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC/B,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE;YAC9D,IAAI,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK;YACjC,IAAI,KAAK,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE;gBAC1B,IAAI,CAAC,gBAAgB,CAAC,eAAe,EAAE,CAAC;aACzC;YACD,IAAI,CAAC,gBAAgB,CAAC,gBAAgB,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;QACtF,CAAC,CAAC,CAAC;IACL,CAAC;IAED,WAAW;QACT,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE,CAAC;QACjC,IAAI,CAAC,cAAc,CAAC,WAAW,EAAE,CAAC;IACpC,CAAC;IAED,YAAY,CAAC,iBAA4B;QACvC,MAAM,cAAc,GAAc,IAAI,CAAC,UAAU,CAAC,IAAI,CACpD,SAAS,CAAC,EAAE,CAAC,SAAS,CAAC,IAAI,KAAK,iBAAiB,CAAC,IAAI;YACpD,SAAS,CAAC,QAAQ,CAAC,CAAC,KAAK,iBAAiB,CAAC,QAAQ,CAAC,CAAC;YACrD,SAAS,CAAC,QAAQ,CAAC,CAAC,KAAK,iBAAiB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;QAE3D,MAAM,UAAU,GAAG,CAAC,CAAC;QAErB,IAAI,cAAc,CAAC,MAAM,KAAK,yFAAwB,EAAE;YACtD,MAAM,cAAc,GAAG;gBACrB,UAAU,EAAE,CAAC,cAAc,CAAC;gBAC5B,WAAW,EAAE,UAAU;gBACvB,aAAa,EAAE,CAAC;aACH,CAAC;YAChB,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;SAC5C;aAAM;YACL,MAAM,eAAe,GAAG;gBACtB,UAAU,EAAE,CAAC,cAAc,CAAC;gBAC5B,WAAW,EAAE,UAAU;gBACvB,aAAa,EAAE,CAAC;aACH,CAAC;YAChB,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;SAC7C;IACH,CAAC;IAED,WAAW;QACT,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QAC7B,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;IAC1B,CAAC;IAED,aAAa,CAAC,IAAe;QAC3B,IAAI,IAAI,EAAE;YACR,OAAO,IAAI,CAAC,IAAI,CAAC;SAClB;aAAM;YACL,OAAO,IAAI,CAAC;SACb;IACH,CAAC;;oFA9EU,kBAAkB;gHAAlB,kBAAkB;QCb/B,yEAA8B;QAE5B,0EAAkH;QAEhH,oFAA0C;QACxC,sEAA6G;QAC7G,8EAAgC;QAAA,iEAAM;QAAA,4DAAW;QACjD,wHAEkB;QAClB,yFACqF;QAAnF,4KAAkB,qCAAiC,IAAC;QACpD,4HAGa;QACf,4DAAmB;QACrB,4DAAiB;QAEnB,4DAAO;QAET,4DAAM;;;QAnBsB,0DAAuF;QAAvF,4JAAuF;QAGpD,0DAAwB;QAAxB,gFAAwB;QAEtE,0DAAoG;QAApG,8KAAoG;QAIxD,0DAA6B;QAA7B,0FAA6B;QAC1B,0DAAa;QAAb,mFAAa;;;;;;;;;;;;;;;;;;;;;;;;ACVG;AACG;AACF;;;AAQ1E,MAAM,gBAAgB;IAY3B,YACU,GAAe;QAAf,QAAG,GAAH,GAAG,CAAY;QAXR,gBAAW,GAAuC,CAAC,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,qBAAqB;QAE3F,yBAAoB,GAAW,EAAE,CAAC;QAE3C,gBAAW,GAAiC,IAAI,iDAAe,CAAC,EAAE,CAAC,CAAC;QAE3D,4BAAuB,GAAW,KAAK,CAAC,CAAC,oGAAoG;QAEtJ,SAAI,GAAmB,EAAE,CAAC;IAI9B,CAAC;IAEE,aAAa;QAClB,OAAO,IAAI,CAAC,WAAW,CAAC,YAAY,EAAE,CAAC;IACzC,CAAC;IAEO,aAAa,CAAC,YAAyB;QAC7C,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IACtC,CAAC;IAED,gBAAgB,CACd,QAAgB,EAChB,SAA8C,EAC9C,aAAsB;QAGtB,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;YACpB,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;gBACtB,GAAG,CAAC,WAAW,EAAE,CAAC;YACpB,CAAC,CAAC;YAEF,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC;SAChB;QACD,IAAI,CAAC,QAAQ,EAAE;YACb,IAAI,CAAC,eAAe,EAAE,CAAC;SACxB;QAED,IAAI,CAAC,SAAS,EAAE;YACd,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC;SAC9B;QAED,IAAI,CAAC,aAAa,EAAE;YAClB,aAAa,GAAG,IAAI,CAAC,oBAAoB,CAAC;SAC3C;QAED,IAAI,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,iBAAiB,EAAE;YAClE,OAAO;SACR;QAED,IAAI,cAAc,GAAyB,IAAI,yCAAO,EAAe,CAAC;QAEtE,IAAI,GAAG,GAAG,EAAE,CAAC;QAEb,IAAI,SAAS,GAAG,cAAc,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE;YAChD,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YACzB,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;QAC1B,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,IAAI,GAAG,CAAC,SAAS,CAAC,CAAC;QAGxB,IAAI,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,EAAE;YAC/B,MAAM,UAAU,GAAG,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC;YACrD,MAAM,SAAS,GAAG,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,UAAU,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC;YAClE,MAAM,cAAc,GAAG;gBACrB,IAAI,EAAE,QAAQ;gBACd,QAAQ,EAAE,EAAE,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE;gBAC9C,MAAM,EAAE;oBACN,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,uBAAuB;oBACjD,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,uBAAuB;oBACjD,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,uBAAuB;oBACjD,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,uBAAuB;iBACvC;gBACZ,MAAM,EAAE,yFAAwB;aACpB,CAAC;YAEf,uCAAuC;YACvC,cAAc,CAAC,IAAI,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC;SACvC;QAQD,IAAI;YACF,IAAI,CAAC,GAAG,CAAC,IAAI,CAAc,aAAa,EAAE,eAAe,EAAE,EAAE,YAAY,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC;iBAC9F,SAAS,CAAC,GAAG,CAAC,EAAE;gBACf,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAC3B,CAAC,CAAC;SACL;QAAC,WAAM;SACP;QAED,oEAAO,CAAC,QAAQ,EAAE;YAChB,MAAM,EAAE;gBACN,QAAQ,EAAE,GAAG,SAAS,CAAC,CAAC,CAAC,IAAI,SAAS,CAAC,CAAC,CAAC,EAAE;gBAC3C,WAAW,EAAE,KAAK;aACnB;SACF,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE;YACtB,IAAI,aAAa,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE;gBACxC,IAAI,CAAC,eAAe,EAAE,CAAC;gBACvB,OAAO;aACR;YACD,4CAA4C;YAC5C,yCAAyC;YACzC,gBAAgB;YAChB,4BAA4B;YAC5B,gBAAgB;YAChB,4BAA4B;YAC5B,iBAAiB;YACjB,cAAc;YACd,KAAK;YACL,aAAa,CAAC,WAAW,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE;gBAC7C,IAAG,CAAC,UAAU,CAAC,YAAY,EAC3B;oBACG,oEAAO,CAAC;wBACP,UAAU,EAAE,UAAU,CAAC,IAAI;wBAC3B,QAAQ,EAAE,UAAU,CAAC,QAAQ;wBAC7B,WAAW,EAAE,KAAK;wBAClB,MAAM,EAAE;4BACN,YAAY,EAAE,aAAa;4BAC3B,KAAK,EAAE,MAAM,CAAC,gCAAgC;yBAC/C;qBACF,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;wBACf,IAAI,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;4BAC5C,OAAO;gCACL,IAAI,EAAE,IAAI,CAAC,OAAO;gCAClB,QAAQ,oBAAO,IAAI,CAAC,QAAQ,CAAE;gCAC9B,MAAM,oBAAO,IAAI,CAAC,MAAM,CAAE;gCAC1B,MAAM,EAAE,wFAAuB;6BACnB,CAAC;wBACjB,CAAC,CAAC,CAAC;wBACH,cAAc,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;oBAClC,CAAC,CAAC;iBACH;qBAED;oBACE,yBAAyB;oBACzB,2BAA2B;oBAC3B,oBAAoB;oBACpB,kBAAkB;oBAClB,uCAAuC;oBACvC,oBAAoB;iBACrB;YACH,CAAC,CAAC;QAEJ,CAAC,CAAC;IAGJ,CAAC;IAEM,eAAe;QACpB,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;IACzB,CAAC;IAEO,YAAY,CAAC,QAAgB;QACnC,MAAM,UAAU,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAC;QACnC,MAAM,aAAa,GAAG,sCAAsC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAE9E,IACE,UAAU;YACV,aAAa;YACb,UAAU,CAAC,MAAM,IAAI,CAAC,EAAE,8EAA8E;SACxG;YACE,OAAO,IAAI,CAAC;SACb;aAAM;YACL,OAAO,KAAK,CAAC;SACd;IACH,CAAC;IAEO,kBAAkB,CAAC,aAAqB;QAC9C,qEAAqE;QACrE,MAAM,WAAW,GAAG,aAAa,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACpD,MAAM,QAAQ,GAAG;YACf,CAAC,EAAE,UAAU,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;YAC7B,CAAC,EAAE,UAAU,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;SACpB,CAAC;QACZ,OAAO,QAAQ,IAAI,IAAI,CAAC;IAC1B,CAAC;;gFAvLU,gBAAgB;iHAAhB,gBAAgB,WAAhB,gBAAgB,mBAFf,MAAM;;;;;;;;;;;;;;;;;;ACTqC;AAGzD,IAAY,WAKX;AALD,WAAY,WAAW;IACnB,6CAAI;IACJ,uDAAS;IACT,yDAAU;IACV,uDAAS;AACb,CAAC,EALW,WAAW,KAAX,WAAW,QAKtB;AAEM,MAAM,MAAM;IAOf,YAAoB,QAAmC;QAAnC,aAAQ,GAAR,QAAQ,CAA2B;QAN/C,UAAK,GAAgB,WAAW,CAAC,IAAI,CAAC;QAC9C,YAAO,GAAU,EAAE,CAAC;QACpB,UAAK,GAAW,CAAC,CAAC;QAKd,IAAI,CAAC,GAAG,GAAG,IAAI,yCAAO,EAAO,CAAC;IAClC,CAAC;IAED,MAAM,CAAC,MAAW;QACd,IAAI,CAAC,KAAK,GAAG,WAAW,CAAC,SAAS,CAAC;IACvC,CAAC;IAED,QAAQ;QACJ,OAAO,IAAI,CAAC,KAAK,CAAC;IACtB,CAAC;IAED,QAAQ,CAAC,KAAkB;QACvB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACvB,CAAC;IAED,QAAQ;QACJ,OAAO,IAAI,CAAC,KAAK,CAAC;IACtB,CAAC;IAED,cAAc;QACV,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;IAC/B,CAAC;IAED,gBAAgB;QACZ,IAAI,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM;YAChC,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC;QAEnC,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,aAAa;QACT,OAAO,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;IAC5C,CAAC;IAED,iBAAiB;QACb,OAAO,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;IAC1B,CAAC;IAED,UAAU;QACN,IAAI,CAAC,KAAK,EAAE,CAAC;IACjB,CAAC;IAED,cAAc;QACV,IAAI,CAAC,KAAK,EAAE,CAAC;IACjB,CAAC;IAED,KAAK;QACD,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;QACf,IAAI,CAAC,KAAK,GAAG,WAAW,CAAC,IAAI,CAAC;QAC9B,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;IACtB,CAAC;IAED,QAAQ;QACJ,OAAO,IAAI,CAAC,GAAG,CAAC;IACpB,CAAC;CACJ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACvEwD;AAMmB;AAEO;AAGpC;AAEsC;AACQ;;;;;;;;;;;;;;;;;;;;;;ICCzF,2EAAyE;IAApE,sVAAS,UAAa,IAAC;IAC1B,uEAAK;IACH,yEAA0B;IAAC,kFAAqB;IAAA,6DAAI;IACtD,6DAAM;IACR,6DAAM;;;;IAqBN,gFAA2G;IACzG,sFAA8B;IAC5B,2EAAiD;IAC/C,qEAAG;IAAA,wDAA6B;IAAA,6DAAI;IACpC,8EAAmG;IAAlC,wUAAiC;IAAC,6DAAC;IAAA,6DAAS;IAC/G,6DAAM;IACR,6DAAiB;IACjB,mFACmB;IACrB,6DAAW;;;IANF,2DAA6B;IAA7B,2GAA6B;;;;IAYlC,2EAAoG;IAClG,2EAAgD;IAC9C,0EAAQ;IAAA,sEAAU;IAAA,6DAAS;IAC3B,8EAC4B;IAA1B,2TAAyB;IAAC,6DAAC;IAAA,6DAAS;IACxC,6DAAM;IACR,6DAAM;;;;IACN,2EAAoG;IAClG,2EAAgD;IAC9C,0EAAQ;IAAA,qEAAS;IAAA,6DAAS;IAC1B,8EAC4B;IAA1B,2TAAyB;IAAC,6DAAC;IAAA,6DAAS;IACxC,6DAAM;IACR,6DAAM;;;;IACN,2EAAqG;IACnG,2EAAgD;IAC9C,0EAAQ;IAAA,0EAAc;IAAA,6DAAS;IAC/B,uEAAK;IAAA,wDAAsD;IAAA,6DAAM;IACjE,8EAC4B;IAA1B,2TAAyB;IAAC,6DAAC;IAAA,6DAAS;IACxC,6DAAM;IACR,6DAAM;;;IAJG,2DAAsD;IAAtD,2HAAsD;;;;IAY7D,2EACgC;IAC9B,8EAC2C;IADU,sVAAgC;IAC1C,6DAAI;IAAA,6DAAS;IACxD,2EAAgD;IAC9C,yEAAoD;IAAA,wDAAyB;IAAA,6DAAI;IACjF,yEAA+B;IAAA,8DAAE;IAAA,6DAAI;IACrC,yEAAoD;IAAA,wDAA2B;IAAA,6DAAI;IACrF,6DAAM;IACN,+EACuC;IADc,mVAA4B;IAC1C,8DAAI;IAAA,6DAAS;IACtD,6DAAM;;;IARF,2DAAwC;IAAxC,0GAAwC;IAEY,2DAAyB;IAAzB,+FAAyB;IAEzB,2DAA2B;IAA3B,iGAA2B;IAG/E,2DAAoC;IAApC,sGAAoC;;;IAhB5C,wFAAiG;IAC/F,2EAAgF;IAC9E,2EAAgD;IAC9C,0EAAQ;IAAA,kEAAM;IAAA,6DAAS;IACvB,uEAAK;IAAA,wDAAkC;IAAA,6DAAM;IAC/C,6DAAM;IACN,+HAWM;IAGR,6DAAM;IACR,6DAAmB;;;IAjBR,2DAAkC;IAAlC,uGAAkC;IAEb,2DAAiC;IAAjC,qGAAiC;;;ADrDhE,MAAM,YAAY;IAEvB,YACU,UAAsB,EACtB,MAAyB,EACzB,MAAiB,EACjB,GAAe,EACf,QAAmC,EACnC,KAAqB,EACrB,IAA0B;QAN1B,eAAU,GAAV,UAAU,CAAY;QACtB,WAAM,GAAN,MAAM,CAAmB;QACzB,WAAM,GAAN,MAAM,CAAW;QACjB,QAAG,GAAH,GAAG,CAAY;QACf,aAAQ,GAAR,QAAQ,CAA2B;QACnC,UAAK,GAAL,KAAK,CAAgB;QACrB,SAAI,GAAJ,IAAI,CAAsB;QAGpC,WAAM,GAAW,IAAI,2CAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAElC,cAAS,GAAuC,CAAC,CAAC,iBAAiB,EAAE,iBAAiB,CAAC,CAAC,CAAC,4BAA4B;QAErH,gBAAW,GAAW,CAAC,CAAC;QAExB,YAAO,GAAW,EAAE,CAAC;QAErB,YAAO,GAAW,CAAC,CAAC;QAEpB,kBAAa,GAAuD,CAAC,CAAC,kBAAkB,EAAE,kBAAkB,EAAE,CAAC,kBAAkB,EAAE,gBAAgB,CAAC,CAAC;QAiBtJ,oBAAe,GAAG,KAAK,CAAC;QAwBhC,gBAAW,GAAG,gDAAW,CAAC;QAK1B,kBAAa,GAAY,KAAK,CAAC;QA8wB/B,oBAAe,GAAQ;YACrB,UAAU,EAAE,KAAK;YACjB,aAAa,EAAE,KAAK;YACpB,SAAS,EAAE,EAAE;YACb,UAAU,EAAE,EAAE;YACd,gBAAgB,EAAE,EAAE;YACpB,MAAM,EAAE,EAAE;YACV,aAAa,EAAE,EAAE;SAClB,CAAC;IAh1BE,CAAC;IAiEL,QAAQ;QACN,IAAI,CAAC,OAAO,EAAE,CAAC;QACf,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,UAAU,CAAC,YAAY,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE;YACpE,IAAI,MAAM,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE;gBACnC,0BAA0B;gBAC1B,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC;gBAC5B,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;gBAC5B,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;gBAClC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;oBACnB,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;wBACzB,IAAI,KAAK,CAAC,QAAQ,IAAI,GAAG,CAAC,SAAS,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;4BACzD,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;yBAC7E;oBACH,CAAC,CAAC;gBACJ,CAAC,CAAC;aAEH;iBAAM,IAAI,MAAM,EAAE;gBACjB,+DAA+D;aAChE;QACH,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,UAAU,GAAG,QAAQ,CAAC,iBAAiB,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;QAE9D,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE;YACnE,IAAI,CAAC,gBAAgB,GAAG,SAAS,CAAC;QACpC,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE;YACnE,IAAI,CAAC,gBAAgB,GAAG,SAAS,CAAC;YAClC,IAAI,CAAC,yBAAyB,EAAE,CAAC;QACnC,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE;YAC7D,OAAO,CAAC,GAAG,CAAC,UAAU,EAAE,OAAO,CAAC;YAChC,IAAI,CAAC,cAAc,GAAG,OAAO,CAAC;QAChC,CAAC,CAAC,CAAC;QAEH,MAAM,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAEvD,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE;YACxC,IAAI,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;YACtB,IAAI,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;YAC1B,IAAI,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;YAE1B,IAAI,EAAE,IAAI,SAAS,IAAI,IAAI,IAAI,SAAS;gBACtC,OAAO;YAET,IAAI,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAEhC,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,4FAAsB,EAAE;gBACvD,KAAK,EAAE,OAAO;gBACd,IAAI,EAAE,0BAA0B;gBAChC,YAAY,EAAE,IAAI;aACnB,CAAC,CAAC;YAEH,IAAI,IAAI,KAAK,GAAG,EAAE;gBAChB,IAAI,CAAC,GAAG,CAAC,IAAI,CAAM,SAAS,EAAE,KAAK,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE;oBAC9D,IAAI,OAAO,IAAI,OAAO,CAAC,MAAM,EAAE;wBAC7B,IAAI,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;wBACxB,IAAI,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE;4BAC3C,IAAI,GAAG,GAAG,EAAE,GAAG,EAAE,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE;4BACjE,UAAU,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAC,CAAC,EAAE,IAAI,CAAC,CAAC;4BACtD,UAAU,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,kBAAkB,CAAC,GAAG,EAAE,iHAA6B,CAAC,EAAC,CAAC,EAAE,IAAI,CAAC,CAAC;4BACxF,UAAU,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,uBAAuB,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAC,CAAC,EAAE,IAAI,CAAC,CAAC;yBACtF;qBACF;oBACD,OAAO,CAAC,KAAK,EAAE,CAAC;gBAClB,CAAC,CAAC;aACH;iBAAM,IAAI,IAAI,KAAK,GAAG,EAAE;gBACvB,IAAI,CAAC,GAAG,CAAC,IAAI,CAAM,OAAO,EAAE,KAAK,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE;oBAC5D,IAAI,OAAO,IAAI,OAAO,CAAC,MAAM,EAAE;wBAC7B,IAAI,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;wBAC5B,IAAI,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE;4BAC3C,IAAI,GAAG,GAAG,EAAE,GAAG,EAAE,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE;4BACjE,UAAU,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAC,CAAC,EAAE,IAAI,CAAC,CAAC;4BACtD,UAAU,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,kBAAkB,CAAC,GAAG,EAAE,+GAA2B,CAAC,EAAC,CAAC,EAAE,IAAI,CAAC,CAAC;4BACtF,UAAU,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,uBAAuB,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAC,CAAC,EAAE,IAAI,CAAC,CAAC;yBACtF;qBACF;oBACD,OAAO,CAAC,KAAK,EAAE,CAAC;gBAClB,CAAC,CAAC;aACH;iBACI,IAAI,IAAI,KAAK,GAAG,EAAE;gBACrB,IAAI,CAAC,GAAG,CAAC,IAAI,CAAM,UAAU,EAAE,UAAU,EAAE,GAAG,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE;oBAClE,IAAI,OAAO,IAAI,OAAO,CAAC,KAAK,EAAE;wBAC5B,IAAI,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;wBAC5B,IAAI,MAAM,CAAC,QAAQ,EAAE;4BACnB,IAAI,GAAG,GAAG,EAAE,GAAG,EAAE,MAAM,CAAC,QAAQ,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE;4BAC1D,UAAU,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAC,CAAC,EAAE,IAAI,CAAC,CAAC;4BACtD,UAAU,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,kBAAkB,CAAC,GAAG,EAAE,kHAA8B,CAAC,EAAC,CAAC,EAAE,IAAI,CAAC,CAAC;4BACzF,UAAU,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,uBAAuB,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAC,CAAC,EAAE,IAAI,CAAC,CAAC;yBAC/E;qBACF;oBACD,OAAO,CAAC,KAAK,EAAE,CAAC;gBAClB,CAAC,CAAC;aACH;iBAAM,IAAI,IAAI,KAAK,GAAG,EAAE;gBACvB,IAAI,CAAC,0BAA0B,CAAC,IAAI,EAAE,kHAA8B,EAAE,OAAO,CAAC,CAAC;aAChF;iBAAM,IAAI,IAAI,KAAK,GAAG,EAAE;gBACvB,IAAI,CAAC,0BAA0B,CAAC,IAAI,EAAE,mHAA+B,EAAE,OAAO,CAAC,CAAC;aACjF;iBAAM;gBACL,OAAO,CAAC,KAAK,EAAE,CAAC;aACjB;QACH,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,MAAM,GAAG,IAAI,2CAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAExC,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,SAAS,CAAC,GAAG,EAAE;YACpC,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAC3B,CAAC,CAAC;QAEF,IAAI,IAAI,GAAG,IAAI,CAAC;QAEhB,IAAI,CAAC,cAAc,GAAG,IAAI,cAAc,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,aAAa,EAAE,EAAC,CAAC,CAAC,CAAC;QACzE,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACtF,CAAC;IAED,WAAW;QACT,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;QACzB,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE,CAAC;QAChC,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE,CAAC;QAChC,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE,CAAC;QAChC,IAAI,IAAI,CAAC,UAAU;YACjB,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC;QAChC,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,QAAQ,CAAC,oBAAoB,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACxF,CAAC;IAEK,0BAA0B,CAAC,IAAI,EAAE,GAAG,EAAE,OAAO;;YACjD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,oBAAoB,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;YACnE,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,kBAAkB,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;YACtE,UAAU,CAAC,GAAG,EAAE;gBACd,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;gBAChC,IAAI,CAAC,WAAW,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;gBAC1B,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;gBAChC,OAAO,CAAC,KAAK,EAAE,CAAC;YAClB,CAAC,EAAE,IAAI,CAAC,CAAC;QACX,CAAC;KAAA;IAED,kBAAkB,CAAC,GAAG,EAAE,QAAiB;QACvC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,YAAY,GAAG,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE;YACtE,IAAI,CAAC,eAAe,CAAC,UAAU,GAAG,IAAI,CAAC;YACvC,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,CAAC;YACxG,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;YAEhD,IAAI,GAAG,CAAC,OAAO,IAAI,GAAG,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;gBACzC,IAAI,KAAK,GAAG,GAAG,CAAC,OAAO,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC/E,IAAI,KAAK,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,GAAG,KAAK,CAAC,CAAC;gBAE/C,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;oBAC3B,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC;gBACjE,CAAC,CAAC;gBAEF,IAAI,QAAQ,EAAE;oBACZ,MAAM,MAAM,GAAG,EAAE,CAAC;oBAClB,MAAM,CAAC,QAAQ,CAAC,qBAAQ,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAE;oBAClE,IAAI,CAAC,eAAe,CAAC,SAAS,qBAAQ,MAAM,CAAC,CAAE;iBAChD;gBAED,IAAI,CAAC,QAAQ,CAAC,oBAAoB,CAAC,IAAI,EAAE,CAAC;aAC3C;QAEH,CAAC,CAAC,CAAC;IACL,CAAC;IAED,uBAAuB,CAAC,GAAG;QACzB,MAAM,MAAM,GAAG,IAAI,EAAE,CAAC,MAAM,CAAC,GAAG,EAAE;QAClC,MAAM,OAAO,GAAG,MAAM,CAAC,YAAY,CAAC,GAAG,EAAE;YACvC,cAAc,EAAE,WAAW;YAC3B,iBAAiB,EAAE,WAAW;SAC/B,CAAC,CAAC;QACH,IAAI,CAAC,cAAc,EAAE,CAAC;QACtB,IAAI,CAAC,cAAc,CAAC,SAAS,EAAE,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;IACvD,CAAC;IAED,WAAW,CAAC,KAAe;QAEzB,IAAI,KAAK,CAAC,QAAQ;YAChB,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC;gBAC5C,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;QAEhF,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC1C,CAAC;IAED,aAAa,CAAC,KAAe;QAE3B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACnB,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC;QAE3C,IAAI,KAAK,CAAC,QAAQ;YAChB,IAAI,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC;gBAC3C,OAAO,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAErD,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;QAG5C,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC3C,CAAC;IAED,aAAa,CAAC,KAAU;QACtB,IAAI,CAAC,MAAM,CAAC,4BAA4B,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;IACrE,CAAC;IAED,0DAA0D;IAC1D,OAAO;QAEL,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QAC9F,UAAU,CAAC,GAAG,EAAE;YACd,MAAM,CAAC,MAAM,EAAE,CAAC,kBAAkB,EAAE;QACtC,CAAC,EAAE,IAAI,CAAC,CAAC;QAET,IAAI,CAAC,iBAAiB,EAAE,CAAC;IAC3B,CAAC;IAEO,iBAAiB;QACvB,IAAI,GAAG,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC;QAE1B,IAAI,GAAG,GAAG,IAAI,EAAE,CAAC,OAAO,CAAC,YAAY,CAAC;YACpC,MAAM,EAAE,IAAI,CAAC,aAAa;SAC3B,CAAC,CAAC;QAEH,GAAG,CAAC,cAAc,GAAG,GAAG,CAAC,YAAY,CAAC;QACtC,IAAI,IAAI,GAAG,IAAI,CAAC;QAEhB,GAAG,CAAC,kBAAkB,GAAG;YACvB,IAAI,EAAE,GAAG,QAAQ,CAAC,iBAAiB,CAAC,YAAY,CAAC,CAAC;YAClD,IAAI,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;YACvB,IAAI,EAAE,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC;YAEtB,IAAI,OAAO,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;YAC3B,IAAI,EAAE,CAAC,MAAM;gBACX,OAAO,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC;YAElC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,EAAE;gBACzB,IAAI,EAAE,EAAE,CAAC,OAAO,EAAE;gBAClB,QAAQ,EAAE,IAAI;gBACd,OAAO,EAAE,OAAO;aACjB,CAAC,CAAC;QACL,CAAC;QAED,IAAI,8BAA8B,GAAG,QAAQ,CAAC,cAAc,CAAC,uBAAuB,CAAC,CAAC;QACtF,IAAI,CAAC,gCAAgC,GAAG,8BAA8B,CAAC,YAAY,CAAC;QAEpF,IAAI,sBAAsB,GAAG,QAAQ,CAAC,cAAc,CAAC,eAAe,CAAC,CAAC;QAEtE,IAAI,CAAC,qBAAqB,GAAG,IAAI,EAAE,CAAC,OAAO,CAAC;YAC1C,OAAO,EAAE,8BAA8B;YACvC,WAAW,EAAE,eAAe;YAC5B,OAAO,EAAE;gBACP,MAAM,EAAE,EAAE;aACX;SACF,CAAC,CAAC;QAEH,IAAI,CAAC,aAAa,GAAG,IAAI,EAAE,CAAC,OAAO,CAAC;YAClC,OAAO,EAAE,sBAAsB;YAC/B,WAAW,EAAE,eAAe;YAC5B,OAAO,EAAE;gBACP,MAAM,EAAE,EAAE;aACX;SACF,CAAC,CAAC;QAIH,IAAI,EAAE,GAAG,IAAI,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QAEnD,UAAU,CAAC,GAAG,EAAE,GAAG,GAAG,CAAC,YAAY,CAAC,EAAE,cAAc,EAAE,cAAc,CAAC,EAAE,CAAC,EAAC,CAAC,EAAE,IAAI,CAAC,CAAC;QAClF,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC;QAC/B,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;QAC3C,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QACnC,MAAM,CAAC,GAAG,GAAG,GAAG,CAAC;QAEjB,GAAG,CAAC,EAAE,CAAC,aAAa,EAAE,CAAC,GAAG,EAAE,EAAE;YAC5B,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;QACxB,CAAC,CAAC;QAGF,IAAI,eAAe,GAAG,aAAa,EAAC,UAAU,OAAO;YACnD,SAAS,eAAe,CAAC,WAAW;gBAClC,IAAI,OAAO,GAAG,WAAW,IAAI,EAAE,CAAC;gBAEhC,IAAI,MAAM,GAAG,QAAQ,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;gBAE9C,IAAI,CAAC,MAAM,EAAE;oBACX,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;oBAC1C,MAAM,CAAC,SAAS,GAAG,6WAA6W,CAAC;iBAClY;gBAED,IAAI,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;gBAC5C,OAAO,CAAC,SAAS,GAAG,0CAA0C,CAAC;gBAC/D,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;gBAE5B,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE;oBACjB,OAAO,EAAE,OAAO;oBAChB,MAAM,EAAE,OAAO,CAAC,MAAM;iBACvB,CAAC,CAAC;gBAEH,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC,CAAC;YAC7E,CAAC;YAED,IAAI,OAAO;gBAAE,eAAe,CAAC,SAAS,GAAG,OAAO,CAAC;YACjD,eAAe,CAAC,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,OAAO,IAAI,OAAO,CAAC,SAAS,CAAC,CAAC;YACxE,eAAe,CAAC,SAAS,CAAC,WAAW,GAAG,eAAe,CAAC;YAExD,eAAe,CAAC,SAAS,CAAC,iBAAiB,GAAG,SAAS,iBAAiB;gBACtE,IAAI,CAAC,MAAM,EAAE,CAAC,OAAO,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;YACzC,CAAC,CAAC;YAGF,OAAO,eAAe,CAAC;QACzB,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;QAEvB,IAAI,CAAC,2BAA2B,EAAE,CAAC;IAIrC,CAAC;IAGD,0BAA0B;QACxB,IAAI,CAAC,eAAe,EAAE,CAAC;QACvB,IAAI,CAAC,eAAe,CAAC,gBAAgB,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;YACrD,MAAM,CAAC,SAAS,GAAG,KAAK,CAAC;YACzB,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;gBACrB,CAAC,CAAC,GAAG,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;YAC5B,CAAC,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC;IAED,mBAAmB,CAAC,GAAQ;QAC1B,IAAI,IAAI,CAAC,OAAO,EAAE;YAChB,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC;YAC5B,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;SACpB;QAED,IAAI,CAAC,0BAA0B,EAAE,CAAC;QAElC,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QAE3C,IAAI,CAAC,eAAe,CAAC,gBAAgB,GAAG,EAAE,CAAC;QAE3C,IAAI,CAAC,sBAAsB,CAAC,SAAS,EAAE,CAAC,gCAAgC,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC,CAAC,EAAE,EAAE;YAC7F,IAAI,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YAC3B,IAAI,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YAEvB,IAAI,KAAK,EAAE;gBACT,IAAI,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;gBACnD,IAAI,CAAC,EAAE;oBACL,CAAC,CAAC,SAAS,GAAG,IAAI,CAAC;oBACnB,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;wBAChB,CAAC,CAAC,GAAG,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;oBAC3B,CAAC,CAAC;oBACF,IAAI,CAAC,eAAe,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;oBAE9C,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;iBACxC;qBACI;oBACH,OAAO,CAAC,GAAG,CAAC,cAAc,GAAG,KAAK,GAAG,GAAG,GAAG,EAAE,EAAE,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;oBACtF,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;iBACf;aACF;QACH,CAAC,CAAC;IACJ,CAAC;IAED,wBAAwB,CAAC,GAAQ;QAC/B,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa;YACjF,OAAO;QAET,IAAI,CAAC,cAAc,EAAE,CAAC;QAEtB,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QACnC,IAAI,CAAC,mCAAmC,CAAC,GAAG,CAAC,UAAU,CAAC;IAC1D,CAAC;IAED,WAAW,CAAC,GAAQ;QAClB,IAAI,CAAC,wBAAwB,CAAC,GAAG,CAAC,CAAC;QACnC,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC;IAChC,CAAC;IAED,cAAc;QACZ,IAAI,CAAC,IAAI,CAAC,cAAc;YACtB,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAE7B,IAAI,GAAG,GAAG,IAAI,CAAC,cAAc,CAAC,SAAS,EAAE;QACzC,GAAG,CAAC,KAAK,EAAE,CAAC;IACd,CAAC;IAED,iBAAiB;QAEf,IAAI,CAAC,cAAc,EAAE,CAAC;QAGtB,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,IAAI,0DAAqB;YACjD,OAAO;QAGT,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,gBAAgB,EAAE,CAAC;QAEvC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC;QACd,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;QAC3B,IAAI,GAAG,GAAG,EAAE,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;QAElC,KAAK,IAAI,IAAI,IAAI,CAAC,EAAE;YAClB,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC,SAAS,EAAE,CAAC,CAAC;SACvD;QAED,IAAI,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAE7C,IAAI,CAAC,cAAc,CAAC,SAAS,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;QAE/C,IAAI,CAAC,mCAAmC,CAAC,MAAM,CAAC;IAClD,CAAC;IAED,oBAAoB;QAClB,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC;QAC7B,IAAI,CAAC,iBAAiB,EAAE,CAAC;IAC3B,CAAC;IAED,gBAAgB;QACd,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;QACzB,IAAI,CAAC,iBAAiB,EAAE,CAAC;IAC3B,CAAC;IAED,mBAAmB;QACjB,IAAI,CAAC,cAAc,GAAG,IAAI,EAAE,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;QAE5C,IAAI,GAAG,GAAG,IAAI,EAAE,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;QACjC,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;QAEnC,IAAI,GAAG,GAAG,IAAI,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC;YAC3B,IAAI,EAAE,IAAI,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC;gBACtB,KAAK,EAAE,kBAAkB;aAC1B,CAAC;YACF,MAAM,EAAE,IAAI,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC;gBAC1B,KAAK,EAAE,uBAAuB;gBAC9B,KAAK,EAAE,CAAC;aACT,CAAC;SACH,CAAC,CAAC;QACH,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;QAElC,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QAEpC,MAAM,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IAChD,CAAC;IAED,gBAAgB,CAAC,UAAsB;QACrC,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC;IAC3C,CAAC;IAED,WAAW;QACT,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;IAC5B,CAAC;IAED,iBAAiB;QAEf,IAAI,EAAE,GAAG,SAAS,CAAC;QACnB,IAAI,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,SAAS,EAAE,CAAC,MAAM;QAC/C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACtC,IAAI,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;YACtB,IAAI,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,qBAAqB,EAAE;gBAC7C,EAAE,GAAG,KAAK,CAAC;gBACX,MAAM;aACP;SACF;QAED,IAAI,CAAC,EAAE;YACL,OAAO,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAC,CAAC,sBAAsB;QAEhE,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;IACtB,CAAC;IAED,mCAAmC,CAAC,MAAgB;QAElD,IAAI,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC;QAEjC,kBAAkB;QAClB,UAAU,CAAC,GAAG,EAAE,GAAG,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;QAExD,mBAAmB;QACnB,IAAI,SAAS,GAAG,QAAQ,CAAC,cAAc,CAAC,eAAe,CAAC,CAAC;QAEzD,sCAAsC;QACtC,IAAI,SAAS,CAAC,QAAQ,CAAC,MAAM,IAAI,CAAC,EAAE;YAClC,IAAI,GAAG,GAAG,QAAQ,CAAC,cAAc,CAAC,uBAAuB,CAAC,CAAC;YAC3D,SAAS,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;SAC5B;IACH,CAAC;IAED,eAAe;QACb,4FAAyB,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE;YAC1C,kCAAkC;YAClC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,0DAAqB,CAAC,CAAC;YAC5C,IAAI,KAAK,GAAG,EAAE,CAAC;YAEf,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,4FAAsB,EAAE;gBACvD,KAAK,EAAE,OAAO;gBACd,IAAI,EAAE,mBAAmB;gBACzB,YAAY,EAAE,IAAI;aACnB,CAAC,CAAC;YACH,IAAI,gBAAgB,GAAG,QAAQ,CAAC,MAAM,CAAC;YACvC,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;YAC9B,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;YAC/B,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;gBACtB,IAAI,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;gBAE7C,IAAI,IAAI,CAAC,UAAU;oBACjB,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC;gBAEhC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;YACvE,CAAC,CACA;YAED,IAAI,EAAE,GAAG,WAAW,CAAC,GAAG,EAAE;gBACxB,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE,GAAG,gBAAgB,CAAC,EAAE;oBACtD,4DAA4D;oBAC5D,IAAI,GAAG,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC;oBAC1B,IAAI,OAAO,GAAG,GAAG,CAAC,OAAO,EAAE,CAAC;oBAC5B,IAAI,CAAC,wBAAwB,CAAC,OAAO,CAAC,CAAC,SAAS,EAAE,CAAC;oBAEnD,8GAA8G;oBAC9G,IAAI,gBAAgB,GAAG,CAAC,EAAE;wBACxB,IAAI,EAAE,GAAG,GAAG,CAAC,OAAO,EAAE,CAAC;wBACvB,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;qBAC9B;oBAED,IAAI,CAAC,aAAa,EAAE,CAAC;oBACrB,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;oBAChC,aAAa,CAAC,EAAE,CAAC,CAAC;oBAClB,OAAO,CAAC,KAAK,EAAE,CAAC;iBACjB;YACH,CAAC,EAAE,IAAI,CAAC,CAAC;QAEX,CAAC,CAAC;aACC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;YACb,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACnB,CAAC,CAAC,CAAC;IAEP,CAAC;IAED,wBAAwB,CAAC,UAAoB;QAC3C,yDAAyD;QACzD,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,4FAAsB,EAAE;YAC3D,KAAK,EAAE,OAAO;YACd,IAAI,EAAE,qBAAqB;YAC3B,YAAY,EAAE,IAAI;SACnB,CAAC,CAAC;QAEH,IAAI,EAAE,GAAG,IAAI,0CAAO,EAAO,CAAC;QAE5B,IAAI,GAAG,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC;QAC1B,IAAI,QAAQ,GAAG,GAAG,CAAC,OAAO,EAAE,CAAC;QAC7B,IAAI,IAAI,GAAG,IAAI,CAAC;QAEhB,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QAExB,IAAI,EAAE,GAAG,SAAS,CAAC;QACnB,IAAI,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,SAAS,EAAE,CAAC,MAAM;QAC/C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACtC,IAAI,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;YACtB,IAAI,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,qBAAqB,EAAE;gBAC7C,EAAE,GAAG,KAAK,CAAC;gBACX,MAAM;aACP;SACF;QAAA,CAAC;QAEF,IAAI,OAAO,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;QAC/B,IAAI,GAAG,GAAG,EAAE,CAAC;QAEb,IAAI;YACF,GAAG,GAAG,EAAE,CAAC,SAAS,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC,SAAS,EAAE,CAAC;SACtF;QACD,OAAO,EAAE,EAAE;YACT,WAAW,CAAC,KAAK,EAAE,CAAC;YACpB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,sFAAoB,EAAE;gBACrC,KAAK,EAAE,OAAO;gBACd,IAAI,EAAE,CAAC,2BAA2B,EAAE,sGAAsG,CAAC;gBAC3I,YAAY,EAAE,IAAI;aACnB,CAAC,CAAC;YACH,MAAM,EAAE,CAAC;SACV;QAED,IAAI,EAAE,GAAG,GAAG,CAAC,OAAO,EAAE,CAAC;QACvB,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE;YACV,IAAI,EAAE,UAAU;YAChB,OAAO,EAAE,KAAK;YACd,OAAO,EAAE,OAAO;SACjB,CAAC,CAAC;QAEH,GAAG,CAAC,IAAI,CAAC,gBAAgB,EAAE;YACzB,IAAI,SAAS,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;YAEjD,SAAS,CAAC,KAAK,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;YAChC,SAAS,CAAC,MAAM,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;YACjC,IAAI,UAAU,GAAG,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;YAC5C,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAC1B,QAAQ,CAAC,gBAAgB,CAAC,kBAAkB,CAAC,EAC7C,UAAU,MAAM;gBACd,IAAI,MAAM,CAAC,KAAK,GAAG,CAAC,EAAE;oBACpB,IAAI,OAAO,GAAG,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,OAAO,CAAC;oBAC9C,UAAU,CAAC,WAAW,GAAG,OAAO,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;oBAC9D,IAAI,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC;oBACvC,iEAAiE;oBACjE,IAAI,MAAM,GAAG,SAAS;yBACnB,KAAK,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC;yBAChC,KAAK,CAAC,GAAG,CAAC;yBACV,GAAG,CAAC,MAAM,CAAC,CAAC;oBACf,gDAAgD;oBAChD,wBAAwB,CAAC,SAAS,CAAC,YAAY,CAAC,KAAK,CACnD,UAAU,EACV,MAAM,CACP,CAAC;oBACF,UAAU,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;iBACpC;YACH,CAAC,CACF,CAAC;YAEF,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;YAEtB,WAAW,CAAC,KAAK,EAAE,CAAC;YAEpB,UAAU,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;QAC7D,CAAC,CAAC,CAAC;QAEH,qHAAqH;QACrH,UAAU,CAAC,GAAG,EAAE,GAAG,GAAG,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;QAE7C,OAAO,EAAE,CAAC,YAAY,EAAE,CAAC;IAC3B,CAAC;IAED,6BAA6B,CAAC,MAAgB;QAE5C,IAAI,OAAO,GAAG,IAAI,CAAC,qBAAqB,CAAC;QAEzC,mBAAmB;QACnB,UAAU,CAAC,GAAG,EAAE,GAAG,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;QAExD,oBAAoB;QACpB,IAAI,SAAS,GAAG,QAAQ,CAAC,cAAc,CAAC,uBAAuB,CAAC,CAAC;QAEjE,uCAAuC;QACvC,IAAI,SAAS,CAAC,QAAQ,CAAC,MAAM,IAAI,CAAC,EAAE;YAClC,IAAI,GAAG,GAAG,QAAQ,CAAC,cAAc,CAAC,+BAA+B,CAAC,CAAC;YACnE,SAAS,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;SAC5B;IACH,CAAC;IAED,qBAAqB,CAAC,GAAa;QACjC,IAAI,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC;QAEzB,IAAI,EAAE,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC;QAEtB,8BAA8B;QAC9B,IAAI,OAAO,GAAG,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;QAEhC,IAAI,IAAI,CAAC,UAAU;YACjB,OAAO,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC;QAG5C,IAAI,IAAI,CAAC,gCAAgC,EAAE;YACzC,OAAO,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,gCAAgC,CAAC;SACrD;QAED,qKAAqK;QACrK,qBAAqB;QACrB,kBAAkB;QAClB,0BAA0B;QAC1B,qBAAqB;QACrB,sBAAsB;QACtB,wBAAwB;QAExB,QAAQ;QACR,WAAW;IACb,CAAC;IAED,kBAAkB,CAAC,QAAQ;QACzB,8GAA8G;QAC9G,IAAI,CAAC,QAAQ;YAAE,OAAO;QAEtB,IAAI,CAAC,UAAU,GAAG,QAAQ,CAAC;QAG3B,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAEzB,IAAI,CAAC,IAAI,CAAC,SAAS;YAAE,OAAO,CAAC,gBAAgB;QAE7C,IAAI,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,CAAC,cAAc,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QAErE,IAAI,CAAC,IAAI;YACP,wBAAwB;YACxB,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC;QAErD,IAAI,CAAC,IAAI,EAAE;YACT,OAAO;SACR;QAED,IAAI,GAAG,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC,SAAS,EAAE,CAAC;QACzC,IAAI,MAAM,GAAG,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;QAEtC,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;QAExC,IAAI,CAAC,6BAA6B,CAAC,MAAM,CAAC,CAAC;QAE3C,IAAI,IAAI,CAAC,UAAU;YACjB,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC;QAChC,IAAI,CAAC,UAAU;YACb,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IAE7E,CAAC;IAED,gBAAgB,CAAC,QAAQ;QACvB,+GAA+G;QAC/G,IAAI,CAAC,QAAQ;YAAE,OAAO;QAEtB,IAAI,CAAC,UAAU,GAAG,QAAQ,CAAC;QAE3B,IAAI,CAAC,WAAW,GAAG,QAAQ;QAE3B,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAEzB,IAAI,CAAC,IAAI,CAAC,SAAS;YAAE,OAAO,CAAC,iBAAiB;QAE9C,IAAI,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,CAAC,cAAc,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QAErE,IAAI,CAAC,IAAI;YACP,yBAAyB;YACzB,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC;QAErD,IAAI,CAAC,IAAI,EAAE;YACT,OAAO;SACR;QAED,IAAI,GAAG,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC,SAAS,EAAE,CAAC;QACzC,IAAI,MAAM,GAAG,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;QAEtC,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;QAE7C,IAAI,CAAC,6BAA6B,CAAC,MAAM,CAAC,CAAC;IAC7C,CAAC;IAED,UAAU,CAAC,MAAgB;QACzB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,sFAAoB,EAAE;YACrC,KAAK,EAAE,OAAO;YACd,IAAI,EAAE,MAAM;SACb,CAAC,CAAC;IACL,CAAC;IAED,qBAAqB;QACnB,IAAI,CAAC,QAAQ,EAAE,CAAC;IAClB,CAAC;IAED,aAAa;QACX,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;QAC3B,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;QACpB,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;QAC1C,IAAI,IAAI,CAAC,cAAc;YACrB,IAAI,CAAC,cAAc,CAAC,SAAS,EAAE,CAAC,KAAK,EAAE,CAAC;IAC5C,CAAC;IAED,SAAS;QACP,OAAO,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;IACjC,CAAC;IAED,OAAO;QACL,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;IAChC,CAAC;IAED,QAAQ;QACN,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;QAC1B,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;QAC5B,IAAI,CAAC,qBAAqB,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;IACpD,CAAC;IAED,UAAU;QACR,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;IAC3B,CAAC;IAED,WAAW;QACT,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;IAC5B,CAAC;IAaD,yBAAyB;QACvB,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,UAAU;YAClC,OAAO;QAET,IAAI,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC;QACzB,IAAI,EAAE,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC;QACtB,IAAI,CAAC,eAAe,CAAC,aAAa,GAAG,EAAE,CAAC,eAAe,EAAE,CAAC;QAE1D,IAAI,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;QAC3H,IAAI,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;QAC3H,IAAI,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;QAC3H,IAAI,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;QAE3H,IAAI,CAAC,eAAe,CAAC,aAAa,GAAG,CAAC,CAAC,SAAS,IAAI,SAAS,IAAI,SAAS,IAAI,SAAS,CAAC;IAE1F,CAAC;IAED,sBAAsB;QACpB,IAAI,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC;QACzB,IAAI,EAAE,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC;QACtB,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE;YAClC,IAAI,EAAE,EAAE,CAAC,OAAO,EAAE;YAClB,QAAQ,EAAE,IAAI;YACd,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;SACtB,CAAC,CAAC;IACL,CAAC;IAED,cAAc;QACZ,IAAI,IAAI,CAAC,OAAO;YACd,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC;QAE9B,IAAI,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC;QACzB,IAAI,EAAE,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC;QACtB,IAAI,CAAC,eAAe;YACpB;gBACE,UAAU,EAAE,KAAK;gBACjB,aAAa,EAAE,KAAK;gBACpB,SAAS,EAAE,EAAE;gBACb,UAAU,EAAE,EAAE;gBACd,gBAAgB,EAAE,EAAE;gBACpB,MAAM,EAAE,EAAE;gBACV,aAAa,EAAE,EAAE;aAClB,CAAC;QAGF,IAAI,CAAC,eAAe,CAAC,MAAM,GAAG,EAAE,CAAC,eAAe,EAAE,CAAC;QAGnD,IAAI,GAAG,GAAG,EAAE,CAAC,eAAe,EAAE,CAAC;QAC/B,IAAI,CAAC,sBAAsB,EAAE,CAAC;QAE9B,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CAAC,EAAE;YAC3D,IAAI,OAAO,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;YAC9C,IAAI,OAAO,GAAG,IAAI,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YACtC,IAAI,GAAG,GAAG,IAAI,CAAC,kBAAkB,CAAC,SAAS,EAAE,CAAC;YAC9C,GAAG,CAAC,KAAK,EAAE,CAAC;YACZ,GAAG,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;SAC5B;QAED,IAAI,GAAG,GAAG,IAAI,CAAC,sBAAsB,CAAC,SAAS,EAAE,CAAC;QAClD,GAAG,CAAC,KAAK,EAAE,CAAC;QAGZ,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;YAC/B,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;gBACzB,IAAI,KAAK,CAAC,QAAQ,IAAI,KAAK,CAAC,QAAQ,CAAC,OAAO,IAAI,GAAG,CAAC,SAAS,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC;oBACjF,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;YACrF,CAAC,CAAC;QACJ,CAAC,CAAC;QAEF,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE;YAClD,IAAI,CAAC,eAAe,CAAC,UAAU,GAAG,IAAI,CAAC;YACvC,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,CAAC;YACxG,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;YAEhD,IAAI,GAAG,CAAC,OAAO,IAAI,GAAG,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;gBACzC,IAAI,KAAK,GAAG,GAAG,CAAC,OAAO,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC/E,IAAI,KAAK,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,GAAG,KAAK,CAAC,CAAC;gBAE/C,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;oBAC3B,GAAG,CAAC,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;oBAC5B,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC;gBACjE,CAAC,CAAC;aACH;QAEH,CAAC,CAAC;IAEJ,CAAC;IAED,qBAAqB,CAAC,KAAK;QACzB,IAAI,IAAI,CAAC,OAAO;YACd,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC;QAE9B,IAAI,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC;QACzB,IAAI,EAAE,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC;QACtB,IAAI,CAAC,eAAe;YACpB;gBACE,UAAU,EAAE,KAAK;gBACjB,aAAa,EAAE,KAAK;gBACpB,SAAS,EAAE,EAAE;gBACb,UAAU,EAAE,EAAE;gBACd,gBAAgB,EAAE,EAAE;gBACpB,MAAM,EAAE,EAAE;gBACV,aAAa,EAAE,EAAE;aAClB,CAAC;QAGF,IAAI,CAAC,eAAe,CAAC,MAAM,GAAG,EAAE,CAAC,eAAe,EAAE,CAAC;QAGnD,IAAI,GAAG,GAAG,EAAE,CAAC,eAAe,EAAE,CAAC;QAC/B,IAAI,CAAC,sBAAsB,EAAE,CAAC;QAE9B,IAAI,GAAG,GAAG,IAAI,CAAC,sBAAsB,CAAC,SAAS,EAAE,CAAC;QAClD,GAAG,CAAC,KAAK,EAAE,CAAC;QAGZ,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;YAC/B,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;gBACzB,IAAI,KAAK,CAAC,QAAQ,IAAI,KAAK,CAAC,QAAQ,CAAC,OAAO,IAAI,GAAG,CAAC,SAAS,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC;oBACjF,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;YACrF,CAAC,CAAC;QACJ,CAAC,CAAC;QAEF,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE;YAC1D,IAAI,CAAC,eAAe,CAAC,UAAU,GAAG,IAAI,CAAC;YACvC,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,CAAC;YACxG,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;YAEhD,IAAI,GAAG,CAAC,OAAO,IAAI,GAAG,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;gBACzC,IAAI,KAAK,GAAG,GAAG,CAAC,OAAO,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC/E,IAAI,KAAK,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,GAAG,KAAK,CAAC,CAAC;gBAE/C,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;oBAC3B,GAAG,CAAC,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;oBAC5B,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC;gBACjE,CAAC,CAAC;aACH;QAEH,CAAC,CAAC;IAEJ,CAAC;IAKD,sBAAsB;QACpB,IAAI,CAAC,IAAI,CAAC,sBAAsB;YAC9B,IAAI,CAAC,2BAA2B,EAAE,CAAC;QAErC,IAAI,GAAG,GAAG,IAAI,CAAC,sBAAsB,CAAC,SAAS,EAAE;IACnD,CAAC;IAED,2BAA2B;QACzB,IAAI,IAAI,CAAC,sBAAsB;YAC7B,OAAO;QACT,IAAI,CAAC,sBAAsB,GAAG,IAAI,EAAE,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;QACpD,IAAI,CAAC,kBAAkB,GAAG,IAAI,EAAE,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;QAEhD,IAAI,GAAG,GAAG,IAAI,EAAE,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;QACjC,IAAI,QAAQ,GAAG,IAAI,EAAE,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;QAEtC,IAAI,CAAC,sBAAsB,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;QAC3C,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;QAE5C,IAAI,GAAG,GAAG,UAAU,OAAO;YACzB,IAAI,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC;gBAC1B,OAAO,IAAI,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC;oBACxB,IAAI,EAAE,IAAI,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC;wBACtB,KAAK,EAAE,kBAAkB;qBAC1B,CAAC;oBACF,MAAM,EAAE,IAAI,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC;wBAC1B,KAAK,EAAE,uBAAuB;wBAC9B,KAAK,EAAE,CAAC;qBACT,CAAC;iBACH,CAAC,CAAC;QACP,CAAC;QAED,IAAI,QAAQ,GAAG,IAAI,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC;YAChC,IAAI,EAAE,IAAI,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC;gBACtB,KAAK,EAAE,wBAAwB;aAChC,CAAC;YACF,MAAM,EAAE,IAAI,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC;gBAC1B,KAAK,EAAE,wBAAwB;gBAC/B,KAAK,EAAE,CAAC;aACT,CAAC;SACH,CAAC,CAAC;QAEH,IAAI,CAAC,sBAAsB,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;QAC1C,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QAE3C,IAAI,CAAC,sBAAsB,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QAC5C,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QAExC,MAAM,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;QACtD,MAAM,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;QAElD,MAAM,CAAC,QAAQ,CAAC,6BAA6B,CAAC,GAAG,IAAI,CAAC,sBAAsB,CAAC;QAC7E,MAAM,CAAC,QAAQ,CAAC,yBAAyB,CAAC,GAAG,IAAI,CAAC,kBAAkB,CAAC;IAEvE,CAAC;IAGD,gBAAgB,CAAC,MAAc;QAC7B,IAAI,CAAC,eAAe,EAAE,CAAC;QACvB,OAAO,CAAC,GAAG,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC;QAEpC,IAAI,IAAI,CAAC,cAAc,EAAE;YACvB,MAAM,GAAG,GAAG,IAAI,CAAC,cAAc,CAAC,SAAS,EAAE,CAAC;YAC5C,GAAG,CAAC,KAAK,EAAE,CAAC;SACb;QAED,IAAI,CAAC,0BAA0B,EAAE,CAAC;QAElC,IAAI,CAAC,IAAI,CAAC,sBAAsB;YAC9B,IAAI,CAAC,2BAA2B,EAAE,CAAC;QACrC,MAAM,CAAC,SAAS,GAAG,IAAI,CAAC;QAExB,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;YACvB,GAAG,CAAC,GAAG,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;QAC7B,CAAC,CAAC;IACJ,CAAC;IAED,kBAAkB,CAAC,MAAc;QAC/B,IAAI,CAAC,eAAe,EAAE,CAAC;QACvB,IAAI,IAAI,CAAC,cAAc,EAAE;YACvB,MAAM,GAAG,GAAG,IAAI,CAAC,cAAc,CAAC,SAAS,EAAE,CAAC;YAC5C,GAAG,CAAC,KAAK,EAAE,CAAC;SACb;QACD,IAAI,CAAC,sBAAsB,EAAE,CAAC;QAC9B,MAAM,CAAC,SAAS,GAAG,KAAK,CAAC;QACzB,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;YACvB,GAAG,CAAC,GAAG,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;QAC9B,CAAC,CAAC;IACJ,CAAC;IAED,aAAa,CAAC,MAAc;QAC1B,IAAI,EAAE,GAAG,QAAQ,CAAC,iBAAiB,CAAC,YAAY,CAAC,CAAC;QAClD,IAAI,GAAG,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC;QAC1B,IAAI,IAAI,GAAG,GAAG,CAAC,OAAO,EAAE,CAAC;QAEzB,IAAI,OAAO,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;QAC/B,IAAI,EAAE,CAAC,MAAM;YACX,OAAO,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC;QAElC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,EAAE;YACpC,IAAI,EAAE,GAAG,CAAC,OAAO,EAAE;YACnB,QAAQ,EAAE,IAAI;YACd,OAAO,EAAE,OAAO;SACjB,CAAC,CAAC;IACL,CAAC;IAED,YAAY,CAAC,MAAM,EAAE,WAAqB;QACxC,IAAI,EAAE,GAAG,QAAQ,CAAC,iBAAiB,CAAC,YAAY,CAAC,CAAC;QAClD,IAAI,GAAG,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC;QAC1B,IAAI,IAAI,GAAG,GAAG,CAAC,OAAO,EAAE,CAAC;QAEzB,IAAI,OAAO,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;QACnC,IAAI,WAAW,EAAE;YACf,OAAO,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;SAC5B;QAED,IAAI,EAAE,CAAC,MAAM;YACX,OAAO,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC;QAElC,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE;YACf,IAAI,EAAE,GAAG,CAAC,OAAO,EAAE;YACnB,QAAQ,EAAE,IAAI;YACd,OAAO,EAAE,OAAO;SACjB,CAAC,CAAC;IACL,CAAC;IAED,aAAa,CAAC,MAAc;QAC1B,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;IAClC,CAAC;IAED,aAAa;QACX,MAAM,CAAC,MAAM,EAAE,CAAC,aAAa,EAAE,CAAC;IAClC,CAAC;IAED,aAAa,CAAC,IAAS;QACrB,IAAI,MAAM,GAAG,IAAI,EAAE,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,UAAU;QAChD,IAAI,CAAC,GAAG,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QAEjC,IAAI,CAAC,aAAa,CAAC,kBAAkB,EAAE,qBAAqB,CAAC,CAAC;QAE9D,IAAI,CAAC,eAAe,EAAE,CAAC;QACvB,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;IAC1C,CAAC;IAED,eAAe;QACb,IAAI,IAAI,CAAC,QAAQ;YACf,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,CAAC,KAAK,EAAE,CAAC;IACtC,CAAC;IAED,aAAa,CAAC,SAAe,EAAE,WAAiB;QAC9C,IAAI,IAAI,CAAC,QAAQ;YACf,OAAO;QACT,IAAI,CAAC,QAAQ,GAAG,IAAI,EAAE,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;QAEtC,IAAI,GAAG,GAAG,IAAI,EAAE,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;QACjC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;QAE7B,IAAI,GAAG,GAAG,IAAI,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC;YAC3B,IAAI,EAAE,IAAI,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC;gBACtB,KAAK,EAAE,SAAS,IAAI,kBAAkB;aACvC,CAAC;YACF,MAAM,EAAE,IAAI,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC;gBAC1B,KAAK,EAAE,WAAW,IAAI,qBAAqB;gBAC3C,KAAK,EAAE,CAAC;aACT,CAAC;SACH,CAAC,CAAC;QACH,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;QAE5B,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QAE9B,MAAM,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC1C,CAAC;;wEA1pCU,YAAY;2GAAZ,YAAY;;;;;;;;;QClCzB,2FAAgH;QAC9G,oFACuC;QADgC,wKAA8B,IAAI,IAAC,+GAC1E,KAAK,IADqE;QAExG,6FAM0F;QALxF,iTAAiB,WAAc,IAAC,2GAA6C,uBAAmB,IAAhE,+GACf,yBAAqB,IADN,+GACyB,yBAAqB,IAD9C,qHAEZ,4BAAwB,IAFZ,yHAEoC,8BAA0B,IAF9D,+GAGf,yBAAqB,IAHN,6GAGwB,yBAAqB,IAAI,CAAC,IAHlD,+GAIf,yBAAqB,IAJN,2HAIkC,4BAAwB,IAJ1D,qHAKT,oBAAgB,IALP,6HAKiC,yBAAqB,IALtD;QAMlC,6DAAsB;QAExB,6DAAa;QACb,sFAAoB;QAClB,qEAAuB;QACvB,0EAAyE;QACvE,mEAA8C;QAChD,6DAAM;QACN,yGAIM;QACN,sFACiG;QADnC,0KAAoB,4BAAwB,IAAC,iGAC1F,iBAAa,IAD6E;QAE3G,6DAAiB;QAEjB,4EAA+B;QAC7B,+EAA0G;QAA3B,sIAAS,oBAAgB,IAAC;QAAC,+EAC/F;QAAA,6DAAS;QACtB,6DAAM;QAER,6DAAqB;QACvB,6DAAuB;QAQvB,4EAAkB;QAChB,4EAAiD;QAC/C,sHASW;QACb,6DAAM;QACN,4EAAyC;QACvC,iFAAgD;QAE9C,uFAA8B;QAC5B,4GAMM;QACN,4GAMM;QACN,4GAOM;QACR,6DAAiB;QACjB,sIAqBmB;QACrB,6DAAW;QACb,6DAAM;QACR,6DAAM;QAEN,uEACM;QAEN,uEACM;;QA9GmD,2DAAe;QAAf,yEAAe;QAEtC,2DAAmC;QAAnC,iGAAmC;QAeb,2DAAmB;QAAnB,oFAAmB;QAKvD,2DAA6C;QAA7C,6IAA6C;QAKpB,2DAAuC;QAAvC,iGAAuC;QAe/B,2DAAwD;QAAxD,iIAAwD;QAenD,2DAAgD;QAAhD,qHAAgD;QAOhD,2DAAgD;QAAhD,qHAAgD;QAOhD,2DAAiD;QAAjD,sHAAiD;QASvD,2DAAiD;QAAjD,sHAAiD;;;;;;;;;;;;;;;;;;;;;;;;AChFc;AAC1C;;;;;;;;AAQlE,MAAM,mBAAmB;IAE9B,YACS,SAA4C,EACnB,cAAmB;QAD5C,cAAS,GAAT,SAAS,CAAmC;QACnB,mBAAc,GAAd,cAAc,CAAK;IAAG,CAAC;IAKzD,QAAQ;QACN,IAAI,CAAC,eAAe,GAAG,IAAI,uDAAW,CAAC,EAAE,EAAE;YACzC,+DAAmB;YACnB,gEAAoB,CAAC,EAAE,CAAC;YACxB,gEAAoB,CAAC,CAAC,CAAC;SACxB,CAAC,CAAC;IACL,CAAC;IAED,OAAO;QACL,OAAO,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC;IACpC,CAAC;IAED,UAAU;QACR,IAAI,CAAC,cAAc,CAAC,IAAI,GAAG,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC;QACtD,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IAC5C,CAAC;IAGD,SAAS;QACP,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;QACvB,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC;IAClC,CAAC;;sFA9BU,mBAAmB,uMAIpB,qEAAe;iHAJd,mBAAmB;QCVhC,uEACoC;QAAA,mFAAwB;QAAA,4DAAI;QAEhE,yEAAmG;QAC/F,yEAAoG;QAChG,oEAA0F;QAC1F,yEAA0B;QACtB,uEAA6F;QACzF,oFAAkD;QAC9C,4EAAW;QAAA,gFAAqB;QAAA,4DAAY;QAC5C,0EAAwH;QAC5H,4DAAiB;QACrB,4DAAI;QACR,4DAAM;QACV,4DAAM;QACV,4DAAM;QACN,0EAA6C;QACzC,2EAA8E;QAC1E,8EAA+E;QAA5C,4IAAS,eAAW,IAAC;QAAuB,kEAAM;QAAA,4DAAS;QAC9F,8EAA4H;QAA7D,4IAAS,gBAAY,IAAC;QAAuC,gEAAI;QAAA,4DAAS;QAC7I,4DAAM;QACV,4DAAM;;QAhBuB,0DAA+B;QAA/B,oKAA+B;QAKN,0DAA+B;QAA/B,4FAA+B;QASrE,0DAAuB;QAAvB,oFAAuB;;;;;;;;;;;;;;;;;;;;;;;;;ACZhC,MAAM,oBAAoB;IAE/B,gBAAgB,CAAC;IAEjB,QAAQ;IACR,CAAC;;wFALU,oBAAoB;kHAApB,oBAAoB;QCPjC,uEACoC;QAAA,iFAAsB;QAAA,4DAAI;QAE9D,yEAAmG;QAC/F,yEAAsG;QAClG,yEAA0B;QACtB,uEAA6F;QACzF,oSAEJ;QAAA,4DAAI;QACR,4DAAM;QACV,4DAAM;QACV,4DAAM;QACN,yEAA6C;QACzC,yEAAiF;QAC7E,4EAA+E;QAAA,iEAAK;QAAA,4DAAS;QACjG,4DAAM;QACV,4DAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACjB6G;;;;;;;;;;;;;;;;ICWvG,+EAA4D;IAAA,qEAAU;IAAA,4DAAW;;;IAGjF,+EAA2D;IAAA,wEAAa;IAAA,4DAAW;;;;IAIrF,iFACwE;IAAtE,2dAAwC;IAA8B,4DAAa;;;IADtD,sFAA0B;;;;IAKrD,oFAAmH;IACjH,0FAE0E;IAAxE,qkBAA0D;IAAc,4DAAsB;IAClG,4DAAgB;;;;;IAHO,0DAAa;IAAb,8EAAa;;;IAP1C,0EAA8D;IAC5D,wJACqF;IACrF,2EAAU;IACR,yEAA2B;IAC3B,kFAAiB;IACf,8JAIgB;IAClB,4DAAkB;IACpB,4DAAW;IACb,4DAAM;;;IAXwC,0DAA0B;IAA1B,yFAA0B;IAIjC,0DAAkB;IAAlB,uFAAkB;;;IAnB7D,yEAAgE;IAC9D,4FAAwG;IACtG,6FAA4B;IAC1B,sFAAoC;IAClC,uDACF;IAAA,4DAAkB;IAClB,uEAAM;IACJ,6IAAiF;IACnF,4DAAO;IACP,uEAAM;IACJ,6IAAmF;IACrF,4DAAO;IACT,4DAA6B;IAC7B,qIAaM;IACR,4DAAsB;IACxB,4DAAM;;;;;IA3B2C,0DAAwD;IAAxD,mJAAwD;IAGjG,0DACF;IADE,4FACF;IAEsC,0DAAsB;IAAtB,+EAAsB;IAGtB,0DAAqB;IAArB,8EAAqB;IAGxB,0DAAuB;IAAvB,0FAAuB;;;IAhBpE,yEAC0B;IACxB,sFAAyF;IACvF,6HA4BM;IACR,4DAAgB;IAClB,4DAAM;;;IA/BwB,0DAAyB;IAAzB,6EAAyB;IACzB,0DAAa;IAAb,sFAAa;;;IAmCzC,0EACwC;IACtC,0EAA+D;IAC7D,wEAA8B;IAAA,kHAAuD;IAAA,4DAAI;IAC3F,4DAAM;IACR,4DAAM;;;IASI,+EAA4D;IAAA,qEAAU;IAAA,4DAAW;;;IAGjF,+EAA2D;IAAA,wEAAa;IAAA,4DAAW;;;IAO/E,kFAAsG;;;IAApF,4EAAe;;;IADnC,sEAA2C;IACzC,+LAAsG;IACxG,4DAAM;;;;IAD+B,0DAA8C;IAA9C,kHAA8C;;;IAJzF,0EAAgE;IAC9D,2EAAU;IACR,mFAAqB;IACnB,+JAEM;IACR,4DAAgB;IAClB,4DAAW;IACb,4DAAM;;;IALuB,0DAAkB;IAAlB,wFAAkB;;;IAfjD,6FAA+F;IAC7F,6FAA4B;IAC1B,sFAAoC;IAClC,uDACF;IAAA,4DAAkB;IAClB,uEAAM;IACJ,mKAAiF;IACnF,4DAAO;IACP,uEAAM;IACJ,mKAAmF;IACrF,4DAAO;IACT,4DAA6B;IAC7B,yJAQM;IAER,4DAAsB;;;;;IAtBO,4EAAmB;IAG1C,0DACF;IADE,6FACF;IAEsC,0DAAsB;IAAtB,gFAAsB;IAGtB,0DAAqB;IAArB,+EAAqB;IAGxB,0DAAyB;IAAzB,iGAAyB;;;IAblE,0EAA8D;IAC5D,oKAsBsB;IACxB,4DAAM;;;;IAvB8C,0DAAyB;IAAzB,iGAAyB;;;IAVjF,0EACmC;IACjC,6HAKM;IACN,sFAAyF;IACvF,6HAwBM;IACR,4DAAgB;IAClB,4DAAM;;;IAhCD,0DAAmC;IAAnC,sGAAmC;IAKV,0DAAyB;IAAzB,6EAAyB;IACzB,0DAAa;IAAb,sFAAa;;;;IA6B3C,0EAAsG;IAEpG,mGAE+F;IAD7F,4VAAoB,qCAAkC,IAAC,wSAAuB,uCAAoC,IAA3D;IAEzD,4DAA+B;IAEjC,4DAAM;;;IAL0B,0DAAwC;IAAxC,mGAAwC;;ADlEjE,MAAM,0BAA0B;IA4DrC;QA1DS,eAAU,GAAkB,EAAE,CAAC;QAE/B,SAAI,GAAW,QAAQ,CAAC;QAEvB,kBAAa,GAA2B,IAAI,uDAAY,EAAE,CAAC;QAC3D,oBAAe,GAA2B,IAAI,uDAAY,EAAE,CAAC;QAC7D,kBAAa,GAAsB,IAAI,uDAAY,EAAE,CAAC;QAGtD,yBAAoB,GAAsB,IAAI,uDAAY,EAAE,CAAC;QAC7D,qBAAgB,GAAyB,IAAI,uDAAY,EAAE,CAAC;QAC5D,uBAAkB,GAAyB,IAAI,uDAAY,EAAE,CAAC;QAC9D,kBAAa,GAAyB,IAAI,uDAAY,EAAE,CAAC;QACzD,kBAAa,GAAyB,IAAI,uDAAY,EAAE,CAAC;QACzD,2BAAsB,GAA0B,IAAI,uDAAY,EAAE,CAAC;QACnE,wBAAmB,GAA0B,IAAI,uDAAY,EAAE,CAAC;QAChE,iBAAY,GAA2B,IAAI,uDAAY,EAAE,CAAC;QAEpD,oBAAe,GAAQ;YACrC,UAAU,EAAE,IAAI;YAChB,aAAa,EAAE,IAAI;YACnB,SAAS,EAAE,EAAE;YACb,MAAM,EAAE,EAAE;SACX,CAAC;IAmCc,CAAC;IA9BV,SAAS;QACd,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;YACvC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YACrB,OAAO,CAAC,IAAI,EAAE,CAAC;QACjB,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;YACtC,OAAO,CAAC,MAAM,EAAE,CAAC;QACnB,CAAC,CAAC;IACJ,CAAC;IAEM,UAAU,CAAC,IAAI;QACpB,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;QAC7B,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC/B,CAAC;IAEM,cAAc,CAAC,KAAa,EAAE,EAAU;QAC7C,IAAI,CAAC,SAAS,EAAE,CAAC;QAEjB,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;YACtC,IAAI,OAAO,CAAC,KAAK,CAAC,GAAG,KAAK,KAAK,EAAE;gBAC/B,OAAO,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC;aAC5B;QACH,CAAC,CAAC;IACJ,CAAC;IAED,gBAAgB;QACd,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACzC,CAAC;IAID,QAAQ;IACR,CAAC;IAED,eAAe,CAAC,QAAqB,EAAE,KAAe,EAAE,QAAiB;QACvE,IAAI,QAAQ;YACV,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;;YAE/B,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACrC,CAAC;IAED,aAAa,CAAC,QAAqB,EAAE,KAAsB;QACzD,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,QAAQ,CAAC,YAAY,EAAE,OAAO,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC;IAChF,CAAC;IAED,SAAS,CAAC,QAAqB;QAC7B,IAAI,QAAQ,CAAC,MAAM;YACjB,KAAK,IAAI,KAAK,IAAI,QAAQ,CAAC,MAAM,EAAE;gBACjC,IAAI,QAAQ,CAAC,SAAS,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC;oBACrF,OAAO,IAAI,CAAC;aACf;QAEH,OAAO,KAAK,CAAC;IACf,CAAC;IAED,UAAU,CAAC,QAAqB;QAC9B,IAAI,QAAQ,CAAC,MAAM;YACjB,KAAK,IAAI,KAAK,IAAI,QAAQ,CAAC,MAAM,EAAE;gBACjC,IAAI,QAAQ,CAAC,SAAS,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,IAAI,MAAM;oBACrJ,OAAO,IAAI,CAAC;aACf;QAEH,OAAO,KAAK,CAAC;IACf,CAAC;IAED,UAAU;QACR,KAAK,IAAI,GAAG,IAAI,IAAI,CAAC,UAAU,EAAE;YAC/B,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC;gBACnB,OAAO,IAAI,CAAC;SACf;QAED,OAAO,KAAK,CAAC;IACf,CAAC;IAED,OAAO,CAAC,QAAqB;QAC3B,IAAI,QAAQ,CAAC,MAAM;YACjB,KAAK,IAAI,KAAK,IAAI,QAAQ,CAAC,MAAM,EAAE;gBACjC,IAAI,QAAQ,CAAC,SAAS,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,IAAI,MAAM;oBACrJ,OAAO,IAAI,CAAC;aACf;QAEH,OAAO,KAAK,CAAC;IACf,CAAC;IAED,sBAAsB;QACpB,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC,MAAM,GAAG,CAAC;IAC/D,CAAC;IAED,0BAA0B;QACxB,KAAK,IAAI,QAAQ,IAAI,IAAI,CAAC,UAAU,EAAE;YACpC,KAAK,IAAI,KAAK,IAAI,QAAQ,CAAC,MAAM,EAAE;gBACjC,IAAI,QAAQ,CAAC,SAAS,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,MAAM;oBAC1D,OAAO,IAAI,CAAC;aACf;SACF;QACD,OAAO,KAAK;IACd,CAAC;IAED,aAAa,CAAC,IAAI;QAChB,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACvC,CAAC;;oGAnIU,0BAA0B;wHAA1B,0BAA0B;;;;;;;;QCVvC,sHAiCM;QAGN,sHAmCM;QAGN,sHAOM;;QAjFA,sFAAqB;QAoCrB,0DAAqB;QAArB,sFAAqB;QAsCiD,0DAAwB;QAAxB,yFAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;;AC3ED;AAErC;AAEF;;;;;;;;;;ICAtD,uEAA4F;IAAA,uDAAqD;IAAA,4DAAI;;;IAAzD,0DAAqD;IAArD,6HAAqD;;;;IACjJ,yEAA4F;IAE1F,uEAAM;IACJ,sEACA;IAAA,6EAAuF;IAA1B,kUAAyB;IACpF,+EAAgC;IAAA,8EAAmB;IAAA,4DAAW;IAChE,4DAAS;IACT,uDACA;IAAA,6EAAyF;IAA3B,mUAA0B;IACtF,+EAAgC;IAAA,+EAAoB;IAAA,4DAAW;IACjE,4DAAS;IACX,4DAAO;IAET,4DAAM;;;IAT0B,0DAAgC;IAAhC,2FAAgC;IAG5D,0DACA;IADA,8KACA;IAA4B,0DAAiC;IAAjC,4FAAiC;;ADFhE,MAAM,+BAA+B;IAuB1C,YACU,KAAqB,EACrB,QAAmC;QADnC,UAAK,GAAL,KAAK,CAAgB;QACrB,aAAQ,GAAR,QAAQ,CAA2B;QAvB7B,oBAAe,GAAQ;YACrC,UAAU,EAAE,KAAK;YACjB,aAAa,EAAE,KAAK;YACpB,SAAS,EAAE,EAAE;YACb,MAAM,EAAE,EAAE;SACX,CAAC;QAEQ,qBAAgB,GAAsB,IAAI,uDAAY,EAAE,CAAC;QACzD,yBAAoB,GAAsB,IAAI,uDAAY,EAAE,CAAC;QAC7D,uBAAkB,GAAsB,IAAI,uDAAY,EAAE,CAAC;QAC3D,iBAAY,GAA2B,IAAI,uDAAY,EAAE,CAAC;QAEpE,gBAAW,GAAyB,IAAI,iDAAe,CAAM,EAAE,CAAC,CAAC;QAEjE,eAAU,GAAW,CAAC,CAAC;QACvB,cAAS,GAAG,KAAK,CAAC;IASd,CAAC;IAEL,QAAQ;QACN,IAAI,CAAC,UAAU,EAAE,CAAC;QAElB,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,QAAQ,CAAC,oBAAoB,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE;YACpE,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;YACvB,IAAI,CAAC,UAAU,EAAE,CAAC;QACpB,CAAC,CAAC,CAAC;IACL,CAAC;IAED,WAAW;QACT,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE,CAAC;IACnC,CAAC;IAED,SAAS;QACP,IAAI,CAAC,UAAU,EAAE;IACnB,CAAC;IAEO,UAAU;QAChB,iFAAiF;QACjF,qHAAqH;QACrH,0FAA0F;QAC1F,IACE,IAAI,CAAC,eAAe,CAAC,UAAU;YAC/B,CACE,IAAI,CAAC,oBAAoB,CAAC,gFAA6B,CAAC;gBACxD,IAAI,CAAC,oBAAoB,CAAC,8EAA2B,CAAC;gBACtD,IAAI,CAAC,oBAAoB,CAAC,iFAA8B,CAAC;gBACzD,IAAI,CAAC,kBAAkB,EAAE,CAAC;YAC5B,CACE,IAAI,CAAC,uBAAuB,CAAC,gFAA6B,CAAC;gBAC3D,IAAI,CAAC,uBAAuB,CAAC,8EAA2B,CAAC;gBACzD,IAAI,CAAC,uBAAuB,CAAC,iFAA8B,CAAC;gBAC5D,IAAI,CAAC,uBAAuB,EAAE,CAC/B;YACD,IAAI,CAAC,SAAS,KAAK,KAAK,EACxB;YACA,IAAI,CAAC,iBAAiB,EAAE,CAAC;YACzB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;SACvB;aAAM,IACL,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,UAAU;YAC/B,IAAI,CAAC,uBAAuB,CAAC,gFAA6B,CAAC;YAC3D,IAAI,CAAC,uBAAuB,CAAC,8EAA2B,CAAC;YACzD,IAAI,CAAC,uBAAuB,CAAC,iFAA8B,CAAC;YAC5D,IAAI,CAAC,qBAAqB,EAAE,CAC7B;YACD,CAAC,IAAI,CAAC,SAAS,KAAK,IAAI,CAAC,EACzB;YACA,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;YACvB,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;YACpB,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC;SACvB;IACH,CAAC;IAEO,oBAAoB,CAAC,GAAW;;QACtC,IACE,WAAI,CAAC,eAAe,CAAC,SAAS,0CAAG,GAAG,CAAC;YACrC,iBAAI,CAAC,eAAe,CAAC,SAAS,0CAAG,GAAG,CAAC,0CAAE,MAAM,MAAK,OAAO,EACvD;YACA,OAAO,IAAI,CAAC;SACf;aAAM,IAAI,CAAC,WAAI,CAAC,eAAe,CAAC,SAAS,0CAAG,GAAG,CAAC,GAAE;YACjD,OAAO,IAAI,CAAC;SACb;aAAM;YACL,OAAO,KAAK,CAAC;SACd;IACH,CAAC;IAEO,uBAAuB,CAAC,GAAW;;QACzC,IACE,WAAI,CAAC,eAAe,CAAC,SAAS,0CAAG,GAAG,CAAC;YACrC,iBAAI,CAAC,eAAe,CAAC,SAAS,0CAAG,GAAG,CAAC,0CAAE,MAAM,MAAK,OAAO,EACvD;YACA,OAAO,IAAI,CAAC;SACf;aAAM,IAAI,CAAC,WAAI,CAAC,eAAe,CAAC,SAAS,0CAAG,GAAG,CAAC,GAAE;YACjD,OAAO,KAAK,CAAC;SACd;aAAM;YACL,OAAO,KAAK,CAAC;SACd;IACH,CAAC;IAEO,uBAAuB,CAAC,GAAW;;QACzC,IACE,WAAI,CAAC,eAAe,CAAC,SAAS,0CAAG,GAAG,CAAC;YACrC,uBAAI,CAAC,eAAe,CAAC,SAAS,0CAAG,GAAG,CAAC,0CAAE,OAAO,0CAAE,MAAM,IAAG,CAAC,EACxD;YACA,OAAO,IAAI,CAAC;SACf;aAAO,IAAI,CAAC,WAAI,CAAC,eAAe,CAAC,SAAS,0CAAG,GAAG,CAAC,GAAE;YAClD,OAAO,KAAK,CAAC;SACd;aAAM;YACL,OAAO,KAAK,CAAC;SACd;IACH,CAAC;IAED,cAAc;QACZ,OAAO,IAAI,CAAC,WAAW,CAAC;IAC1B,CAAC;IAED,UAAU,CAAC,MAAM;QACf,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC;IAC5B,CAAC;IAED,aAAa;;QACX,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,UAAU;YAAE,OAAO,IAAI,CAAC;QAElD,MAAM,aAAa,GAAG,iBAAI,CAAC,eAAe,CAAC,SAAS,0CAAG,gFAA6B,CAAC,0CAAE,OAAO,KAAI,EAAE,CAAC;QACrG,MAAM,WAAW,GAAG,iBAAI,CAAC,eAAe,CAAC,SAAS,0CAAG,8EAA2B,CAAC,0CAAE,OAAO,KAAI,EAAE,CAAC;QACjG,MAAM,SAAS,GAAG,iBAAI,CAAC,eAAe,CAAC,SAAS,0CAAG,iFAA8B,CAAC,0CAAE,OAAO,KAAI,EAAE,CAAC;QAClG,MAAM,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC,CAAC;QAEnE,IAAI,UAAU,GAAG,WAAW,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;QACnD,UAAU,GAAG,UAAU,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QAC1C,UAAU,GAAG,UAAU,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;QAC/C,OAAO,UAAU,CAAC,MAAM,CAAC;IAC3B,CAAC;IAED,SAAS;QACP,IAAI,IAAI,CAAC,UAAU,GAAG,CAAC,KAAK,IAAI,CAAC,aAAa,EAAE;YAAE,OAAO;QAEzD,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC,CAAC;QAE1C,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;QAEtC,IAAI,CAAC,iBAAiB,EAAE,CAAC;IAC3B,CAAC;IAED,QAAQ;QACN,IAAI,IAAI,CAAC,UAAU,KAAK,CAAC;YAAE,OAAO;QAElC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC,CAAC;QAE1C,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;QAEtC,IAAI,CAAC,iBAAiB,EAAE,CAAC;IAC3B,CAAC;IAED,YAAY;QACV,OAAO,CAAC,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;IACtD,CAAC;IAED,WAAW;QACT,OAAO,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;IAC7B,CAAC;IAED,OAAO,CAAC,IAAI;QACV,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;IAC1B,CAAC;IAED,UAAU,CAAC,MAAM;QACf,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACjC,CAAC;IAEO,SAAS,CAAC,MAAW;QAC3B,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACrC,CAAC;IAEO,WAAW,CAAC,MAAW;QAC7B,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACvC,CAAC;IAEM,kBAAkB;QACvB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC,CAAC;IAC5C,CAAC;IAEO,gBAAgB;;QACtB,MAAM,cAAc,GAAG,iBAAI,CAAC,eAAe,CAAC,SAAS,0CAAG,gFAA6B,CAAC,0CAAE,OAAO,KAAI,EAAE,CAAC;QACtG,MAAM,YAAY,GAAG,iBAAI,CAAC,eAAe,CAAC,SAAS,0CAAG,8EAA2B,CAAC,0CAAE,OAAO,KAAI,EAAE,CAAC;QAClG,MAAM,eAAe,GAAG,iBAAI,CAAC,eAAe,CAAC,SAAS,0CAAG,iFAA8B,CAAC,0CAAE,OAAO,KAAI,EAAE,CAAC;QACxG,MAAM,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC,CAAC;QAEnE,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;YACzB,CAAC,CAAC,EAAE,GAAG,gFAA6B,CAAC;QACvC,CAAC,CAAC,CAAC;QACH,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;YAC3B,IAAI,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,EAAE;gBAAE,OAAO,CAAC,CAAC,CAAC;aAAE;YACnC,IAAI,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,EAAE;gBAAE,OAAO,CAAC,CAAC;aAAE;YAClC,OAAO,CAAC,CAAC;QACX,CAAC,CAAC,CAAC;QACH,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;YACvB,CAAC,CAAC,EAAE,GAAG,8EAA2B,CAAC;QACrC,CAAC,CAAC,CAAC;QACH,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;YACzB,IAAI,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,EAAE;gBAAE,OAAO,CAAC,CAAC,CAAC;aAAE;YACnC,IAAI,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,EAAE;gBAAE,OAAO,CAAC,CAAC;aAAE;YAClC,OAAO,CAAC,CAAC;QACX,CAAC,CAAC,CAAC;QACH,eAAe,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;YAC1B,CAAC,CAAC,EAAE,GAAG,iFAA8B,CAAC;QACxC,CAAC,CAAC,CAAC;QACH,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;YAC5B,IAAI,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,EAAE;gBAAE,OAAO,CAAC,CAAC,CAAC;aAAE;YACnC,IAAI,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,EAAE;gBAAE,OAAO,CAAC,CAAC;aAAE;YAClC,OAAO,CAAC,CAAC;QACX,CAAC,CAAC,CAAC;QACH,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;YACzB,CAAC,CAAC,EAAE,GAAG,6EAA0B,CAAC;QACpC,CAAC,CAAC,CAAC;QACH,IAAI,UAAU,GAAG,YAAY,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;QACrD,UAAU,GAAG,UAAU,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;QAChD,UAAU,GAAG,UAAU,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;QAC/C,MAAM,OAAO,qBAAQ,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,CAAE,CAAC;QACnD,IAAI,CAAC,kBAAkB,GAAG,OAAO,CAAC,EAAE,CAAC;QACrC,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,cAAc,CAAC,aAAa;QAC1B,QAAQ,IAAI,CAAC,kBAAkB,EAAE;YAC/B,KAAK,gFAA6B;gBAChC,OAAO,aAAa,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC;YACjD,KAAK,8EAA2B;gBAC9B,OAAO,aAAa,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,YAAY,CAAC;YACvD,KAAK,iFAA8B;gBACjC,OAAO,aAAa,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,UAAU,CAAC;YACnD;gBACE,OAAO,EAAE,CAAC;SACb;IACH,CAAC;IAEO,iBAAiB;QACvB,MAAM,IAAI,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACrC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC5B,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IACvB,CAAC;IAEO,eAAe,CAAC,gBAAyB,KAAK;QACpD,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;YACxD,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC;QAChD,CAAC,CAAC,CAAC;QACH,MAAM,UAAU,GAAG,CAAC,iFAA8B,EAAE,8EAA2B,EAAE,gFAA6B,CAAC,CAAC;QAChH,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC;aAC3D,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;aACxC,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;YACnB,GAAG,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;YAC/C,OAAO,GAAG,CAAC;QACb,CAAC,EAAE,EAAE,CAAC,CAAC;QACT,MAAM,OAAO,GAAU,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;QAEjD,OAAO,OAAO,CAAC;IACjB,CAAC;IAEO,cAAc,CAAC,UAAU;QAC/B,MAAM,cAAc,GAAG,EAAE,CAAC;QAC1B,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;YACrB,MAAM,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC;YAClB,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;gBACpB,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC;gBACZ,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACzB,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,OAAO,cAAc,CAAC;IACxB,CAAC;IAEO,kBAAkB;QACxB,OAAO,IAAI,CAAC,eAAe,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,EAAC,aAAD,CAAC,uBAAD,CAAC,CAAE,MAAM,MAAK,OAAO,CAAC,CAAC;IAClE,CAAC;IAEO,qBAAqB;QAC3B,OAAO,IAAI,CAAC,eAAe,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAC,aAAD,CAAC,uBAAD,CAAC,CAAE,MAAM,MAAK,OAAO,CAAC,CAAC;IACjE,CAAC;IAEO,uBAAuB;QAC7B,OAAO,IAAI,CAAC,eAAe,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,WAAC,eAAC,aAAD,CAAC,uBAAD,CAAC,CAAE,OAAO,0CAAE,MAAM,IAAG,CAAC,IAAC,CAAC;IAClE,CAAC;IAED,aAAa,CAAC,IAAI;QAChB,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACvC,CAAC;;8GArSU,+BAA+B;6HAA/B,+BAA+B;QCX5C,yEAA4E;QAE1E,yEAAgH;QAC9G,yEAA+D;QAC7D,uHAAqJ;QACrJ,4HAaM;QACR,4DAAM;QACR,4DAAM;QAEN,sFAAkH;QAChH,sEAAK;QACH,wFAEuG;QADpE,6KAAW,mBAAoB,IAAC,+HAAiB,sBAAuB,IAAxC,qIAC3C,wBAAyB,IADkB,+IACQ,yBAA0B,IADlC;QAEnE,4DAAqB;QACvB,4DAAM;QAER,4DAAgB;QAElB,4DAAM;;QA5BI,0DAAuD;QAAvD,iHAAuD;QACvB,0DAAsD;QAAtD,gHAAsD;QAiBlE,0DAAyB;QAAzB,6EAAyB;QAE7B,0DAA8B;QAA9B,sFAA8B;;;;;;;;;;;;;;;;;ACxBjD,MAAM,kBAAkB;;AACb,6BAAU,GAAG,iBAAiB,CAAC;AAC/B,8BAAW,GAAG,kBAAkB,CAAC;AACjC,2BAAQ,GAAG,eAAe,CAAC;AAC3B,8BAAW,GAAG,eAAe,CAAC;AAC9B,+BAAY,GAAG,aAAa,CAAC;AAC7B,0BAAO,GAAG,cAAc,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACN6D;AAUlB;;;;;;;;;;;;;;;;;ICVtF,yEACuE;IACrE,yEAA6G;IAC3G,uEAA8B;IAC5B,yEACF;IAAA,4DAAI;IACJ,yEAAyB;IACvB,yEAA2B;IAC7B,4DAAM;IACR,4DAAM;IACR,4DAAM;;;IAEN,yEAAkG;IAChG,mJACF;IAAA,4DAAM;;;IAcM,+EAA6D;IAAA,qEAAU;IAAA,4DAAW;;;IAGlF,+EAA4D;IAAA,wEAAa;IAAA,4DAAW;;;IAgDpF,+EAA6D;IAAA,qEAAU;IAAA,4DAAW;;;IAGlF,+EAA4D;IAAA,wEAAa;IAAA,4DAAW;;;IAWhF,+EAA0D;IAAA,qEAAU;IAAA,4DAAW;;;IAG/E,+EAAyD;IAAA,wEAAa;IAAA,4DAAW;;;;IAU3E,+EACyE;IAAvE,qeAAsE;IAAC,kEAAO;IAAA,4DAAW;;IAD7C,yFAAgC;;;IAJpF,sEAAwH;IACpH,2EACwC;IAAA,uDAA+E;IAAA,4DAAO;IAAA,2EACzF;IACnC,gJAC2F;IAC7F,4DAAO;IACX,4DAAM;;;IAPD,iFAA6B;IAEU,0DAA+E;IAA/E,kJAA+E;IAE1G,0DAAiC;IAAjC,iGAAiC;;;IALpD,sEAAkE;IAChE,gIAOM;;IACR,4DAAM;;;IARgD,0DAAkE;IAAlE,keAAkE;;;IASxH,sEAAmE;IACjE,2EAA4C;IAAA,8EAAmB;IAAA,4DAAO;IACxE,4DAAM;;;IAYF,+EAA2D;IAAA,qEAAU;IAAA,4DAAW;;;IAGhF,+EAA0D;IAAA,wEAAa;IAAA,4DAAW;;;;IAOpF,0EAAkJ;IAChJ,2EAA4C;IAAA,uDAAY;IAAA,4DAAO;IAAA,2EAAyC;IACtG,+EAC0E;IAAxE,6bAAuE;IAAC,kEAAO;IAAA,4DAAW;IAC9F,4DAAO;IACT,4DAAM;;;IALD,iFAA6B;IACY,0DAAY;IAAZ,6EAAY;IAC5C,0DAAgC;IAAhC,yFAAgC;;;IAHhD,sEAAkE;IAChE,gIAKM;;IACR,4DAAM;;;IAN0E,0DAAkE;IAAlE,keAAkE;;;IAOlJ,0EAA6F;IAC3F,2EAA4C;IAAA,8EAAmB;IAAA,4DAAO;IACxE,4DAAM;;;IAWJ,+EAA2D;IAAA,qEAAU;IAAA,4DAAW;;;IAGhF,+EAA0D;IAAA,wEAAa;IAAA,4DAAW;;;;IAShF,2EAA2E;IACzE,+EACsE;IAApE,8dAAmE;IAAC,kEAAO;IAAA,4DAAW;IAC1F,4DAAO;;IAFK,0DAAgC;IAAhC,yFAAgC;;;;IAG5C,2EAA+E;IAC7E,+EAAiF;IAArC,4bAAoC;IAC9E,gFAAoB;IAAA,4DAAW;IACnC,4DAAO;;IAFK,0DAAiC;IAAjC,0FAAiC;;;;IAG7C,2EAC4D;IAA1D,kaAAqB,gBAAgB,6BAAoB;IACzD,+EAAyC;IAAA,wEAAa;IAAA,4DAAW;IACnE,4DAAO;;IADK,0DAA8B;IAA9B,uFAA8B;;;IAb5C,0EAA6I;IAC3I,2EACwC;IAAA,uDAAuE;IAAA,4DAAO;IACtH,wIAGO;IACP,wIAGO;IACP,wIAGO;IACT,4DAAM;;;IAfD,iFAA6B;IAEQ,0DAAuE;IAAvE,4IAAuE;IACxG,0DAAmC;IAAnC,mGAAmC;IAIA,0DAAmC;IAAnC,mGAAmC;IAItE,0DAAmC;IAAnC,mGAAmC;;;IAZ9C,sEAA6D;IAC3D,gIAeM;;IACR,4DAAM;;;IAhB0E,0DAA6D;IAA7D,mdAA6D;;;IAiB7I,sEAA8D;IAC5D,2EAA4C;IAAA,8EAAmB;IAAA,4DAAO;IACxE,4DAAM;;;IAmBR,+EAA4D;IAAA,qEAAU;IAAA,4DAAW;;;IAGjF,+EAA2D;IAAA,wEAAa;IAAA,4DAAW;;;;;IAMnF,uFAEuE;IAArE,seAAoE;IACtE,4DAAmB;;;;IAFjB,qaAA0T;;;IAF9T,sEAAmC;IACjC,2JAGmB;IACrB,4DAAM;;;IAJ8B,0DAAa;IAAb,kFAAa;;;IAMjD,0EAAgE;IAC9D,6FACF;IAAA,4DAAM;;;;IA3MhB,yEAC0F;IAGxF,uFAAyF;IACvF,0EAA4B;IAC1B,8FAAkE;IAChE,6FAA4B;IAC1B,sFAAoC;IAClC,oEACF;IAAA,4DAAkB;IAClB,uEAAM;IACJ,qIAAkF;IACpF,4DAAO;IACP,wEAAM;IACJ,qIAAoF;IACtF,4DAAO;IACT,4DAA6B;IAC7B,2EAAiC;IAG/B,2EAAkC;IAChC,4EAAwC;IAAA,wEAAY;IAAA,4DAAO;IAC3D,4EAA4C;IAAA,wDAAuB;IAAA,4DAAO;IAC5E,4DAAM;IAGN,2EAAkC;IAChC,4EAAwC;IAAA,0EAAc;IAAA,4DAAO;IAC7D,4EAA4C;IAAA,wDAAwC;IAAA,4DAAO;IAC7F,4DAAM;IAGN,2EAAkC;IAChC,4EAAwC;IAAA,4EAAgB;IAAA,4DAAO;IAC/D,4EAA4C;IAAA,wDAA0C;IAAA,4DAAO;IAC/F,4DAAM;IAGN,2EAAkC;IAChC,4EAAwC;IAAA,uFAA2B;IAAA,4DAAO;IAC1E,4EAA4C;IAAA,wDAA6C;IAAA,4DAAO;IAClG,4DAAM;IAGN,2EAAkC;IAChC,yEAAuF;IAA7D,iTAAqB,kBAAkB,wDAAqB;IAAC,yEAAa;IAAA,4DAAI;IAC1G,4DAAM;IAER,4DAAM;IACR,4DAAsB;IACxB,4DAAM;IACR,4DAAgB;IAGhB,wFAAyF;IACvF,2EAA4B;IAC1B,+FAAmE;IACjE,8FAA4B;IAC1B,uFAAoC;IAClC,+EACF;IAAA,4DAAkB;IAClB,wEAAM;IACJ,qIAAkF;IACpF,4DAAO;IACP,wEAAM;IACJ,qIAAoF;IACtF,4DAAO;IACT,4DAA6B;IAC7B,uEAAK;IAEH,+FAAgE;IAC9D,8FAA4B;IAC1B,uFAAoC;IAClC,mFACF;IAAA,4DAAkB;IAClB,wEAAM;IACJ,qIAA+E;IACjF,4DAAO;IACP,wEAAM;IACJ,qIAAiF;IACnF,4DAAO;IACT,4DAA6B;IAC7B,2EAAiC;IAE/B,2HASM;IACN,2HAEM;IAER,4DAAM;IACR,4DAAsB;IAEtB,+FAAiE;IAC/D,8FAA4B;IAC1B,uFAAoC;IAClC,kFACF;IAAA,4DAAkB;IAClB,uEAAK;IACH,wEAAM;IACJ,qIAAgF;IAClF,4DAAO;IACP,wEAAM;IACJ,qIAAkF;IACpF,4DAAO;IACT,4DAAM;IACR,4DAA6B;IAC7B,2EAAiC;IAE/B,2HAOM;IACN,2HAEM;IAER,4DAAM;IACR,4DAAsB;IAEtB,+FAAiE;IAC/D,8FAA4B;IAC1B,uFAAoC;IAClC,2EACF;IAAA,4DAAkB;IAClB,wEAAM;IACJ,qIAAgF;IAClF,4DAAO;IACP,wEAAM;IACJ,qIAAkF;IACpF,4DAAO;IACT,4DAA6B;IAC7B,2EAAiC;IAE/B,2HAiBM;IACN,2HAEM;IAER,4DAAM;IACR,4DAAsB;IAExB,4DAAM;IACR,4DAAsB;IACxB,4DAAM;IACR,4DAAgB;IAGhB,wFAAyF;IACvF,2EAA4B;IAC1B,+FAAkE;IAChE,8FAA4B;IAC1B,uFAAoC;IAClC,wEACF;IAAA,4DAAkB;IAClB,wEAAM;IACJ,qIAAiF;IACnF,4DAAO;IACP,wEAAM;IACJ,qIAAmF;IACrF,4DAAO;IACT,4DAA6B;IAC7B,uEAAK;IAEH,6HAKM;IAEN,6HAEM;IAER,4DAAM;IACR,4DAAsB;IACxB,4DAAM;IACR,4DAAgB;IAElB,4DAAM;;;;;;;;;IA9MwB,0DAAyB;IAAzB,6EAAyB;IAED,0DAAiB;IAAjB,0EAAiB;IAMvB,0DAAuB;IAAvB,+EAAuB;IAGvB,0DAAsB;IAAtB,8EAAsB;IAQd,0DAAuB;IAAvB,gHAAuB;IAMvB,0DAAwC;IAAxC,kKAAwC;IAMxC,0DAA0C;IAA1C,oKAA0C;IAM1C,0DAA6C;IAA7C,uKAA6C;IAcvE,0DAAyB;IAAzB,6EAAyB;IAED,0DAAkB;IAAlB,2EAAkB;IAMxB,0DAAuB;IAAvB,gFAAuB;IAGvB,0DAAsB;IAAtB,+EAAsB;IAKf,0DAAkB;IAAlB,2EAAkB;IAMrB,0DAAoB;IAApB,gFAAoB;IAGpB,0DAAmB;IAAnB,+EAAmB;IAKnD,0DAA0D;IAA1D,uZAA0D;IAU1D,0DAA2D;IAA3D,0ZAA2D;IAOvB,0DAAkB;IAAlB,2EAAkB;IAOpB,0DAAqB;IAArB,gFAAqB;IAGrB,0DAAoB;IAApB,+EAAoB;IAMtD,0DAA0D;IAA1D,uZAA0D;IAQhC,0DAA2D;IAA3D,0ZAA2D;IAOjD,0DAAkB;IAAlB,2EAAkB;IAMtB,0DAAqB;IAArB,gFAAqB;IAGrB,0DAAoB;IAApB,+EAAoB;IAKpD,0DAAqD;IAArD,wYAAqD;IAkBrD,0DAAsD;IAAtD,2YAAsD;IAa5C,0DAAyB;IAAzB,6EAAyB;IAEF,0DAAkB;IAAlB,2EAAkB;IAMvB,0DAAsB;IAAtB,gFAAsB;IAGtB,0DAAqB;IAArB,+EAAqB;IAKrD,0DAA2B;IAA3B,yFAA2B;IAOC,0DAA4B;IAA5B,0FAA4B;;;IAuB5D,+EAA6D;IAAA,qEAAU;IAAA,4DAAW;;;IAGlF,+EAA4D;IAAA,wEAAa;IAAA,4DAAW;;;IASlF,yEAAuF;IAAA,uDACvF;IAAA,4DAAK;;;IADkF,0DACvF;IADuF,0FACvF;;;IAkCF,+EAA6D;IAAA,qEAAU;IAAA,4DAAW;;;IAGlF,+EAA4D;IAAA,wEAAa;IAAA,4DAAW;;;;;IAMpF,uFAEoI;IAAlI,ueAAoE,kWAAwB,SAAS,2BAAsB,GAAG,OAA1D;IACtE,4DAAmB;;;IAFjB,yYAA2R;;;IAF/R,sEAAiC;IAC/B,0JAGmB;IACrB,4DAAM;;;IAJ+B,0DAAc;IAAd,mFAAc;;;IAMnD,0EAA8D;IAC5D,6FACF;IAAA,4DAAM;;;;IA5EhB,yEAC0F;IAGxF,uFAAyF;IACvF,0EAA4B;IAC1B,8FAAkE;IAChE,6FAA4B;IAC1B,sFAAoC;IAClC,oEACF;IAAA,4DAAkB;IAClB,uEAAM;IACJ,qIAAkF;IACpF,4DAAO;IACP,wEAAM;IACJ,qIAAoF;IACtF,4DAAO;IACT,4DAA6B;IAC7B,2EAAiC;IAG/B,2EAAkC;IAChC,4EAAwC;IAAA,sEAAU;IAAA,4DAAO;IACzD,sEAAI;IACF,yHACK;IACP,4DAAK;IACP,4DAAM;IAGN,2EAAkC;IAChC,4EAAwC;IAAA,gFAAoB;IAAA,4DAAO;IACnE,4EAA4C;IAAA,wDAA8C;IAAA,4DAAO;IACjG,4EAA+B;IAC7B,gFACmG;IAAjG,ycAAgG;IAAC,oEACnG;IAAA,4DAAW;IACb,4DAAO;IACT,4DAAM;IAGN,2EAAkC;IAChC,yEAAyF;IAA/D,iTAAqB,gBAAgB,4DAAyB;IAAC,yEAAa;IAAA,4DAAI;IAC5G,4DAAM;IAER,4DAAM;IACR,4DAAsB;IACxB,4DAAM;IACR,4DAAgB;IAGhB,wFAAyF;IACvF,2EAA4B;IAC1B,+FAAkE;IAChE,8FAA4B;IAC1B,uFAAoC;IAClC,oFACF;IAAA,4DAAkB;IAClB,wEAAM;IACJ,qIAAkF;IACpF,4DAAO;IACP,wEAAM;IACJ,qIAAoF;IACtF,4DAAO;IACT,4DAA6B;IAC7B,uEAAK;IAEH,2HAKM;IAEN,2HAEM;IAER,4DAAM;IACR,4DAAsB;IACxB,4DAAM;IACR,4DAAgB;IAElB,4DAAM;;;;IA/EwB,0DAAyB;IAAzB,6EAAyB;IAED,0DAAiB;IAAjB,0EAAiB;IAMvB,0DAAuB;IAAvB,gFAAuB;IAGvB,0DAAsB;IAAtB,+EAAsB;IASlC,0DAAyB;IAAzB,wJAAyB;IAQL,0DAA8C;IAA9C,wKAA8C;IAE9E,0DAAgC;IAAhC,yFAAgC;IAiB1B,0DAAyB;IAAzB,6EAAyB;IAED,0DAAiB;IAAjB,0EAAiB;IAMvB,0DAAuB;IAAvB,gFAAuB;IAGvB,0DAAsB;IAAtB,+EAAsB;IAKtD,0DAAyB;IAAzB,qHAAyB;IAOG,0DAA0B;IAA1B,wHAA0B;;;IAuB1D,+EAA6D;IAAA,qEAAU;IAAA,4DAAW;;;IAGlF,+EAA4D;IAAA,wEAAa;IAAA,4DAAW;;;;IAfhG,yEAC0F;IAGxF,uFAAyF;IACvF,0EAA4B;IAC1B,8FAAkE;IAChE,6FAA4B;IAC1B,sFAAoC;IAClC,oEACF;IAAA,4DAAkB;IAClB,uEAAM;IACJ,qIAAkF;IACpF,4DAAO;IACP,wEAAM;IACJ,qIAAoF;IACtF,4DAAO;IACT,4DAA6B;IAC7B,2EAAiC;IAG/B,2EAAkC;IAChC,4EAAwC;IAAA,2EAAe;IAAA,4DAAO;IAC9D,4EAA4C;IAAA,wDAAyC;IAAA,4DAAO;IAC9F,4DAAM;IAGN,2EAAkC;IAChC,4EAAwC;IAAA,oFAAwB;IAAA,4DAAO;IACvE,4EAA4C;IAAA,wDAAyC;IAAA,4DAAO;IAC9F,4DAAM;IAGN,2EAAkC;IAChC,4EAAwC;IAAA,oEAAQ;IAAA,4DAAO;IACvD,4EAA4C;IAAA,wDAA2C;IAAA,4DAAO;IAChG,4DAAM;IAGN,2EAAkC;IAChC,4EAAwC;IAAA,8EAAkB;IAAA,4DAAO;IACjE,4EAA4C;IAAA,wDAA8C;IAAA,4DAAO;IACnG,4DAAM;IAGN,2EAAkC;IAChC,4EAAwC;IAAA,qFAAyB;IAAA,4DAAO;IACxE,4EAA4C;IAAA,wDAAiF;;IAAA,4DAAO;IACtI,4DAAM;IAGN,2EAAkC;IAChC,4EAAwC;IAAA,oFAAwB;IAAA,4DAAO;IACvE,4EAA4C;IAAA,wDAAgF;;IAAA,4DAAO;IACrI,4DAAM;IAGN,2EAAkC;IAChC,yEAA0L;IAAhK,iTAAqB,mBAAmB,8OAAuH;IAAC,yEAAa;IAAA,4DAAI;IAC7M,4DAAM;IAER,4DAAM;IACR,4DAAsB;IACxB,4DAAM;IACR,4DAAgB;IAElB,4DAAM;;;;IA9DwB,0DAAyB;IAAzB,6EAAyB;IAED,0DAAiB;IAAjB,0EAAiB;IAMvB,0DAAuB;IAAvB,gFAAuB;IAGvB,0DAAsB;IAAtB,+EAAsB;IAQd,0DAAyC;IAAzC,0IAAyC;IAMzC,0DAAyC;IAAzC,0IAAyC;IAMzC,0DAA2C;IAA3C,4IAA2C;IAM3C,0DAA8C;IAA9C,+IAA8C;IAM9C,0DAAiF;IAAjF,8OAAiF;IAMjF,0DAAgF;IAAhF,6OAAgF;;;IA4B5H,+EAA6D;IAAA,qEAAU;IAAA,4DAAW;;;IAGlF,+EAA4D;IAAA,wEAAa;IAAA,4DAAW;;;IAKtF,0EAAoE;IAClE,2EAAwC;IAAA,uDAAe;IAAA,4DAAO;IAC9D,2EAA4C;IAAA,uDAAoB;IAAA,4DAAO;IACzE,4DAAM;;;IAFoC,0DAAe;IAAf,uFAAe;IACX,0DAAoB;IAApB,mFAAoB;;;IAtB5E,yEAC0F;IAGxF,uFAAyF;IACvF,0EAA4B;IAC1B,8FAAkE;IAChE,6FAA4B;IAC1B,sFAAoC;IAClC,oEACF;IAAA,4DAAkB;IAClB,uEAAM;IACJ,qIAAkF;IACpF,4DAAO;IACP,wEAAM;IACJ,qIAAoF;IACtF,4DAAO;IACT,4DAA6B;IAC7B,2EAAiC;IAE/B,2HAGM;IAER,4DAAM;IACR,4DAAsB;IACxB,4DAAM;IACR,4DAAgB;IAElB,4DAAM;;;;IA1BwB,0DAAyB;IAAzB,6EAAyB;IAED,0DAAiB;IAAjB,0EAAiB;IAMvB,0DAAuB;IAAvB,gFAAuB;IAGvB,0DAAsB;IAAtB,+EAAsB;IAKX,0DAAiB;IAAjB,qFAAiB;;AD7XrE,MAAM,sBAAsB;IAEjC,YACU,GAAe,EACf,MAAc,EACd,QAAmC,EACnC,MAA4B,EAC5B,UAAsB;QAJtB,QAAG,GAAH,GAAG,CAAY;QACf,WAAM,GAAN,MAAM,CAAQ;QACd,aAAQ,GAAR,QAAQ,CAA2B;QACnC,WAAM,GAAN,MAAM,CAAsB;QAC5B,eAAU,GAAV,UAAU,CAAY;QAIvB,YAAO,GAAY,CAAC,CAAC;QACrB,eAAU,GAAG,KAAK,CAAC;QACnB,gBAAW,GAAG,KAAK,CAAC;QAEnB,qBAAgB,GAAyB,IAAI,uDAAY,EAAE,CAAC;QAC5D,uBAAkB,GAAyB,IAAI,uDAAY,EAAE,CAAC;QAC9D,uBAAkB,GAAuB,IAAI,uDAAY,EAAE,CAAC;QAC5D,kBAAa,GAAyB,IAAI,uDAAY,EAAE,CAAC;QACzD,yBAAoB,GAAsB,IAAI,uDAAY,EAAE,CAAC;QAC7D,iBAAY,GAA2B,IAAI,uDAAY,EAAE,CAAC;QAC1D,YAAO,GAAyB,IAAI,uDAAY,EAAE,CAAC;QAM7D,OAAE,GAAQ,EAAE,CAAC;QACb,eAAU,GAAQ,EAAE,CAAC;QACrB,UAAK,GAAU,EAAE,CAAC;QAClB,WAAM,GAAQ,EAAE,CAAC;QAGjB,aAAQ,GAAG;YACT,OAAO,EAAE,KAAK;YACd,IAAI,EAAE,KAAK;YACX,UAAU,EAAE,KAAK;SAClB,CAAC;QACF,cAAS,GAAG;YACV,OAAO,EAAE,yGAA6B;YACtC,QAAQ,EAAE,0GAA8B;YACxC,KAAK,EAAE,uGAA2B;YAClC,QAAQ,EAAE,0GAA8B;YACxC,SAAS,EAAE,2GAA+B;SAC3C;IApCG,CAAC;IAsCL,QAAQ;QACN,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE;;YAC3B,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;gBACd,IAAI,CAAC,KAAK,EAAE,CAAC;gBACb,OAAO;aACR;YAED,MAAM,GAAG,GAAG,WAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,GAAG,OAAO,CAAC,CAAC,IAAI,KAAK,UAAU,EAAC,CAAC,CAAC,0CAAE,KAAK,KAAI,IAAI,CAAC;YAClF,IAAI,GAAG,EAAE;gBACP,IAAI,KAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,EAAE,MAAK,yGAA6B,EAAE;oBAC9C,IAAI,CAAC,WAAW,GAAG,yGAA6B,CAAC;oBACjD,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;iBAChC;qBAAM,IAAI,KAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,EAAE,MAAK,uGAA2B,EAAE;oBACnD,IAAI,CAAC,WAAW,GAAG,uGAA2B,CAAC;oBAC/C,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;iBAC9B;qBACI,IAAI,KAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,EAAE,MAAK,0GAA8B,EAAE;oBACpD,IAAI,CAAC,WAAW,GAAG,0GAA8B,CAAC;oBAClD,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;iBACjC;qBAAM;oBACL,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;iBACzB;aACF;YACD,IAAI,KAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,EAAE,MAAK,sGAA0B,EAAE;gBAC3C,IAAI,CAAC,WAAW,GAAG,sGAA0B,CAAC;gBAC9C,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;aAC3B;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAED,cAAc,CAAC,IAAS;QACtB,IAAI,IAAI,CAAC;QACT,IAAI,CAAC,UAAU,CAAC,YAAY,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE;YAChD,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;gBACjB,MAAM,KAAK,GAAG,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,MAAK,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,GAAG,EAAC,CAAC;gBACtD,IAAI,KAAK,EAAE;oBACT,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;iBACnB;YACH,CAAC,CAAC,CAAC;YAEH,IAAI,CAAC,SAAS,GAAG,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,IAAI,CAAC;YAC5B,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC1B,CAAC,CAAC,CAAC;IACL,CAAC;IAED,cAAc,CAAC,IAAI,EAAE,GAAG;QACtB,IAAI,CAAC,QAAQ,CAAC,OAAO,GAAG,IAAI,CAAC;QAC7B,IAAI,CAAC,QAAQ,CAAC,UAAU,GAAG,IAAI,CAAC;QAChC,IAAI,CAAC,QAAQ,CAAC,IAAI,GAAG,IAAI,CAAC;QAC1B,IAAI,CAAC,GAAG,CAAC,IAAI,CAAM,SAAS,EAAE,KAAK,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE;YACxE,IAAI,OAAO,IAAI,OAAO,CAAC,MAAM,EAAE;gBAC7B,IAAI,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;gBACxB,IAAI,CAAC,QAAQ,CAAC,OAAO,GAAG,KAAK,CAAC;gBAC9B,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;aACzB;iBAAM;gBACL,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;aACrB;QACH,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,GAAG,CAAC,IAAI,CAAM,UAAU,EAAE,SAAS,EAAE,EAAE,QAAQ,EAAE,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE;YACzF,MAAM,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAC,aAAD,CAAC,uBAAD,CAAC,CAAE,SAAS,MAAK,IAAI,CAAC,CAAC;YAC5D,IAAI,CAAC,KAAK,GAAG,QAAQ,CAAC;YACtB,IAAI,CAAC,QAAQ,CAAC,UAAU,GAAG,KAAK,CAAC;YACjC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;gBACvB,IAAI,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,EAAE;oBAAE,OAAO,CAAC,CAAC,CAAC;iBAAE;gBACnC,IAAI,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,EAAE;oBAAE,OAAO,CAAC,CAAC;iBAAE;gBAClC,OAAO,CAAC,CAAC;YACX,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,GAAG,CAAC,IAAI,CAAM,SAAS,EAAE,mBAAmB,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE;;YACtF,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC;YACtB,IAAI,CAAC,QAAQ,CAAC,IAAI,GAAG,KAAK,CAAC;YAC3B,IAAI,IAAI,CAAC,MAAM,KAAI,wCAAI,CAAC,MAAM,0CAAE,MAAM,0CAAE,KAAK,0CAAE,IAAI,0CAAE,UAAU,0CAAE,KAAK,0CAAE,IAAI,KAAI,MAAM,CAAC,IAAI,CAAC,wCAAI,CAAC,MAAM,0CAAE,MAAM,0CAAE,KAAK,0CAAE,IAAI,0CAAE,UAAU,0CAAE,KAAK,0CAAE,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,wCAAI,CAAC,MAAM,0CAAE,MAAM,0CAAE,KAAK,0CAAE,IAAI,0CAAE,UAAU,0CAAE,KAAK,0CAAE,IAAI,CAAC,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE;gBAC7P,wCAAI,CAAC,MAAM,0CAAE,MAAM,0CAAE,KAAK,0CAAE,IAAI,0CAAE,UAAU,0CAAE,KAAK,+CAAE,IAAI,CAAC,cAAc,CAAC,CAAC;aAClF;YACD,IAAI,IAAI,CAAC,MAAM,KAAI,wCAAI,CAAC,MAAM,0CAAE,MAAM,0CAAE,KAAK,0CAAE,IAAI,0CAAE,KAAK,0CAAE,KAAK,0CAAE,IAAI,KAAI,MAAM,CAAC,IAAI,CAAC,0CAAI,CAAC,MAAM,0CAAE,MAAM,0CAAE,KAAK,0CAAE,IAAI,0CAAE,KAAK,4CAAE,KAAK,4CAAE,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,8CAAI,CAAC,MAAM,4CAAE,MAAM,4CAAE,KAAK,4CAAE,IAAI,4CAAE,KAAK,4CAAE,KAAK,4CAAE,IAAI,CAAC,CAAC,QAAQ,CAAC,gBAAgB,CAAC,EAAE;gBAChP,8CAAI,CAAC,MAAM,4CAAE,MAAM,4CAAE,KAAK,4CAAE,IAAI,4CAAE,KAAK,4CAAE,KAAK,iDAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC;aAC/E;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAED,eAAe,CAAC,IAAI,EAAE,GAAG;QACvB,IAAI,CAAC,QAAQ,CAAC,OAAO,GAAG,IAAI,CAAC;QAC7B,IAAI,CAAC,GAAG,CAAC,IAAI,CAAM,UAAU,EAAE,UAAU,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE;;YAC5E,IAAI,OAAO,IAAI,OAAO,CAAC,MAAM,EAAE;gBAC7B,IAAI,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;gBAC5B,IAAI,CAAC,QAAQ,CAAC,OAAO,GAAG,KAAK,CAAC;gBAC9B,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC;gBACzB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,WAAI,CAAC,UAAU,0CAAE,IAAI,KAAI,EAAE,CAAC,CAAC;aAChD;iBAAM;gBACL,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;gBACrB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,WAAI,CAAC,UAAU,0CAAE,IAAI,KAAI,EAAE,CAAC,CAAC;aAChD;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAED,WAAW,CAAC,IAAY;QACtB,IAAI,CAAC,GAAG,CAAC,IAAI,CAAM,OAAO,EAAE,WAAW,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE;YACrE,IAAI,OAAO,IAAI,OAAO,CAAC,KAAK,EAAE;gBAC5B,IAAI,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;gBAC5B,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,EAAE,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC;aACtD;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAED,YAAY,CAAC,IAAI,EAAE,GAAG;QACpB,IAAI,CAAC,QAAQ,CAAC,OAAO,GAAG,IAAI,CAAC;QAC7B,IAAI,CAAC,QAAQ,CAAC,UAAU,GAAG,IAAI,CAAC;QAChC,IAAI,CAAC,QAAQ,CAAC,IAAI,GAAG,IAAI,CAAC;QAC1B,IAAI,CAAC,GAAG,CAAC,IAAI,CAAM,OAAO,EAAE,KAAK,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE;;YACtE,IAAI,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,MAAM,EAAE;gBACnB,IAAI,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;gBAC5B,IAAI,CAAC,QAAQ,CAAC,OAAO,GAAG,KAAK,CAAC;gBAE9B,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;gBAExB,MAAM,IAAI,GAAG,UAAI,CAAC,EAAE,0CAAE,IAAI,CAAC;gBAC3B,IAAI,CAAC,GAAG,CAAC,IAAI,CAAM,OAAO,EAAE,sBAAsB,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,SAAS,CAAC,WAAW,CAAC,EAAE;oBACpF,IAAI,WAAW,IAAI,WAAW,CAAC,KAAK,EAAE;wBACpC,IAAI,CAAC,QAAQ,CAAC,UAAU,GAAG,KAAK,CAAC;wBACjC,IAAI,CAAC,QAAQ,CAAC,IAAI,GAAG,KAAK,CAAC;wBAC3B,IAAI,CAAC,MAAM,GAAG,WAAW,CAAC,MAAM,CAAC;wBACjC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;4BACxB,IAAI,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,EAAE;gCAAE,OAAO,CAAC,CAAC,CAAC;6BAAE;4BACnC,IAAI,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,EAAE;gCAAE,OAAO,CAAC,CAAC;6BAAE;4BAClC,OAAO,CAAC,CAAC;wBACX,CAAC,CAAC,CAAC;qBACJ;gBACH,CAAC,CAAC,CAAC;aACJ;iBAAM;gBACL,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;aACrB;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAED,UAAU,CAAC,MAAM;;QACf,IAAI,CAAC,EAAE,GAAG,MAAM,CAAC;QAEjB,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,WAAI,CAAC,EAAE,0CAAE,IAAI,KAAI,EAAE,CAAC,CAAC,CAAC;IAC3C,CAAC;IAEM,MAAM;QACX,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;YACrC,OAAO,CAAC,IAAI,EAAE,CAAC;QACjB,CAAC,CAAC,CAAC;IACL,CAAC;IAED,cAAc,CAAC,EAAU;QACvB,IAAI,CAAC,MAAM,EAAE,CAAC;QACd,UAAU,CAAC,GAAG,EAAE;YACd,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;gBAC3C,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC;gBACpB,IAAI,OAAO,CAAC,aAAa,CAAC,EAAE,KAAK,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE;oBAC1C,OAAO,CAAC,aAAa,CAAC,cAAc,EAAE,CAAC;iBACxC;YACH,CAAC,CAAC;QACJ,CAAC,EAAE,GAAG,CAAC,CAAC;IACV,CAAC;IAED,SAAS,CAAC,MAAc;QACtB,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACrC,CAAC;IAED,WAAW,CAAC,MAAc;QACxB,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACvC,CAAC;IAEK,oBAAoB,CAAC,UAAU,EAAE,SAAS;;YAC9C,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,oBAAoB,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;YAC/E,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,kBAAkB,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;YAClF,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;YACxB,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;QAClC,CAAC;KAAA;IAED,aAAa,CAAC,IAAS;QACrB,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACvC,CAAC;IAED,MAAM,CAAC,MAAc;QACnB,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAClC,CAAC;IAED,UAAU,CAAC,MAAM;QACf,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACpB,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACjC,CAAC;IAED,MAAM,CAAC,GAAG,EAAE,WAAW;QACrB,IAAI,CAAC,kBAAkB,CAAC,IAAI,EAAE,CAAC;QAC/B,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,WAAW,EAAE,CAAC;IAC9C,CAAC;IAED,UAAU;QACR,OAAO,IAAI,CAAC,QAAQ,CAAC,OAAO,IAAI,IAAI,CAAC,QAAQ,CAAC,UAAU,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;IACjF,CAAC;IAED,KAAK;QACH,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;QACb,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;QAChB,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;QACjB,IAAI,CAAC,QAAQ,GAAG;YACd,OAAO,EAAE,KAAK;YACd,IAAI,EAAE,KAAK;YACX,UAAU,EAAE,KAAK;SAClB,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,CAAC;QACL,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACvB,CAAC;IAED,UAAU,CAAC,IAAY;QACrB,IAAI,CAAC,IAAI,EAAE;YACT,OAAO,IAAI,GAAG,EAAE,CAAC;SAClB;aAAM;YACL,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC;SACtB;IACH,CAAC;IAEO,eAAe,CAAC,SAAS;QAC/B,MAAM,UAAU,GAAG,CAAC,0GAA8B,EAAE,uGAA2B,EAAE,yGAA6B,CAAC,CAAC;QAChH,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC;aACtC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;aACxC,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;YACnB,GAAG,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC;YAC1B,OAAO,GAAG,CAAC;QACb,CAAC,EAAE,EAAE,CAAC,CAAC;QACT,MAAM,OAAO,GAAU,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;QAEjD,OAAO,OAAO,CAAC;IACjB,CAAC;;4FArRU,sBAAsB;oHAAtB,sBAAsB;;;;;;;;QCrBnC,kHAUM;QAEN,kHAEM;QAEN,qHAkNM;QAEN,oHAmFM;QAEN,oHAkEM;QAGN,mHA8BM;;QA5ZA,0HAAiE;QAYjE,0DAA6C;QAA7C,uGAA6C;QAI7C,0DAAyG;QAAzG,iKAAyG;QAoNzG,0DAAuG;QAAvG,+JAAuG;QAqFvG,0DAA0G;QAA1G,kKAA0G;QAqE1G,0DAAsG;QAAtG,8JAAsG;;;;;;;;;;;;;;;;;;;;;;;;;AC9XJ;;;;;;;;;;;;ICCxG,6EAAsD;IAClD,yEAA6G;IACzG,oEAAG;IAAA,uDAAgB;IAAA,4DAAI;IACvB,uEAA8B;IAC1B,uDACJ;IAAA,4DAAI;IACR,4DAAM;IACV,4DAAU;;;IALC,0DAAgB;IAAhB,kFAAgB;IAEf,0DACJ;IADI,2QACJ;;;IAKR,6EAAgD;IAC5C,yEAA6G;IACzG,oEAAG;IAAA,uDAAgB;IAAA,4DAAI;IACvB,uEAA8B;IAC1B,gFACJ;IAAA,4DAAI;IACR,4DAAM;IACV,4DAAU;;;IALC,0DAAgB;IAAhB,kFAAgB;;;IAQ3B,6EAAqD;IACjD,yEAA6G;IACzG,oEAAG;IAAA,uDAAgB;IAAA,4DAAI;IACvB,uEAA8B;IAC1B,yEACJ;IAAA,4DAAI;IACJ,yEAAyB;IACrB,yEAA2B;IAC/B,4DAAM;IACV,4DAAM;IACV,4DAAU;;;IARC,0DAAgB;IAAhB,kFAAgB;;;IAW3B,6EAAuG;IACnG,yEAA6G;IACzG,oEAAG;IAAA,uDAAgB;IAAA,4DAAI;IACvB,uEAA8B;IAC1B,wEACJ;IAAA,4DAAI;IACR,4DAAM;IACV,4DAAU;;;IALC,0DAAgB;IAAhB,kFAAgB;;;IAmBf,sEAAmB;IACf,wEAA2D;IACvD,uDACJ;IAAA,4DAAI;IACR,4DAAM;;;IAFE,0DACJ;IADI,wFACJ;;;IAOQ,0EAAsK;IAClK,6EAA+B;IAAA,uDAAe;IAAA,4DAAS;IACvD,sEAAK;IAAA,uDAAe;IAAA,4DAAM;IAC9B,4DAAM;;;IAF6B,0DAAe;IAAf,yFAAe;IACzC,0DAAe;IAAf,gFAAe;;;IAM5B,6EAAgH;IAAA,uDAA6D;IAAA,4DAAS;;;IAA/I,mGAA0C;IAA+B,0DAA6D;IAA7D,gIAA6D;;;;;IAbrL,8EAA4J;IACxJ,0EAEuC;IADsC,qZAAgC;IAEzG,0EAAqF;IACjF,mIAGM;IACV,4DAAM;IACN,0EAA4F;IACxF,+DAAO;IACX,4DAAM;IACN,yIAAsL;IACtL,6EAAqG;IAAzB,2YAAwB;IAAC,kEAAO;IAAA,4DAAS;IACzH,4DAAM;IAEV,4DAAM;;;;IAjB8F,4EAAgB;IAE5G,0DAA+D;IAA/D,2HAA+D;IAGkB,0DAAc;IAAd,mFAAc;IAK1E,0DAAsE;IAAtE,mJAAsE;IAGR,0DAA2B;IAA3B,8FAA2B;IAC3E,0DAAwC;IAAxC,iGAAwC;;;IAInF,qEAEM;;;IApClB,6EAAoD;IAChD,4FAA8C;IAC1C,6FAA4B;IACxB,kFAAiB;IACb,uDACJ;IAAA,4DAAkB;IAClB,mFAEwB;IAC5B,4DAA6B;IAC7B,yEAAmF;IAC/E,4HAIM;IACN,6HAiBM;IACN,+HAEM;IACV,4DAAM;IACV,4DAAsB;IAC1B,4DAAU;;;IAtCsB,0DAAiB;IAAjB,0EAAiB;IAGjC,0DACJ;IADI,6HACJ;IAMM,0DAAW;IAAX,8EAAW;IAKuE,0DAAU;IAAV,mFAAU;IAkBjC,0DAAc;IAAd,iFAAc;;ADjEpF,MAAM,sBAAsB;IAEjC;QAKS,WAAM,GAAW,KAAK,CAAC;QACvB,UAAK,GAAY,SAAS,CAAC;QAC3B,YAAO,GAAY,CAAC,CAAC;QAIpB,qBAAgB,GAAyB,IAAI,uDAAY,EAAE,CAAC;QAC5D,uBAAkB,GAAyB,IAAI,uDAAY,EAAE,CAAC;QAC9D,kBAAa,GAAyB,IAAI,uDAAY,EAAE,CAAC;QACzD,kBAAa,GAAyB,IAAI,uDAAY,EAAE,CAAC;IAdnD,CAAC;IAmBjB,QAAQ;IACR,CAAC;IAEM,MAAM;QACX,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;YACrC,OAAO,CAAC,IAAI,EAAE,CAAC;QACjB,CAAC,CAAC,CAAC;IACL,CAAC;IAED,cAAc,CAAC,EAAU;QACvB,IAAI,CAAC,MAAM,EAAE,CAAC;QACd,UAAU,CAAC,GAAG,EAAE;YACd,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;gBAC3C,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC;gBACpB,IAAI,OAAO,CAAC,aAAa,CAAC,EAAE,KAAK,CAAC,EAAE,GAAG,EAAE,CAAC,EAC1C;oBACE,OAAO,CAAC,aAAa,CAAC,cAAc,EAAE,CAAC;iBACxC;YACH,CAAC,CAAC;QACJ,CAAC,EAAE,GAAG,CAAC,CAAC;IACV,CAAC;IAGD,SAAS,CAAC,MAAc;QACtB,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACrC,CAAC;IAED,WAAW,CAAC,MAAc;QACxB,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACvC,CAAC;IAED,MAAM,CAAC,MAAc;QACnB,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAClC,CAAC;IAED,MAAM,CAAC,MAAc;QACnB,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAClC,CAAC;IAED,WAAW;QACT,OAAO,IAAI,CAAC,MAAM,IAAI,WAAW,CAAC;IACpC,CAAC;IAED,MAAM;QACJ,OAAO,IAAI,CAAC,MAAM,IAAI,MAAM,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;IACvD,CAAC;IAED,YAAY;QACV,OAAO,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO;IACvH,CAAC;IAED,UAAU;QACR,OAAO,CAAC,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC;IAClD,CAAC;IAED,KAAK,CAAC,CAAC;QACL,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACvB,CAAC;;4FA9EU,sBAAsB;oHAAtB,sBAAsB;;;;;;;;QCZnC,0HAOU;QAGV,0HAOU;QAGV,0HAUU;QAGV,0HAOU;QAGV,2HAuCU;;QAlFsB,oFAAoB;QAUpB,0DAAc;QAAd,8EAAc;QAUd,0DAAmB;QAAnB,mFAAmB;QAanB,0DAAqE;QAArE,iJAAqE;QAUrE,0DAAkB;QAAlB,kFAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;IErC1C,8EAAgE;IAAA,qEAAU;IAAA,4DAAW;;;IAGrF,8EAA+D;IAAA,wEAAa;IAAA,4DAAW;;;IAKzF,qEAC+H;;;IADxD,uJAA8B;;;IAErG,qEAEM;;;IAFkC,0GAAmD;;;IAG3F,qEAGM;;;IAFJ,+KAAkH;;;IAGpH,qEAEM;;;IAFmC,iGAA2C;;;IAXtF,yEAC2F;IACzF,iIAC+H;IAC/H,kIAEM;IACN,kIAGM;IACN,kIAEM;IACN,2EAA6B;IAAA,uDAAoB;IAAA,4DAAO;IAC1D,4DAAM;;;IAbsB,0DAA2C;IAA3C,gLAA2C;IAE/D,0DAAgC;IAAhC,mKAAgC;IAGhC,0DAAuB;IAAvB,oHAAuB;IAIvB,0DAAiC;IAAjC,oKAAiC;IAGV,0DAAoB;IAApB,oFAAoB;;;IA3BvD,6EAA2E;IACzE,4FAAuE;IACrE,6FAA4B;IAC1B,qFAA8C;IAC5C,uDACF;IAAA,4DAAkB;IAClB,uEAAM;IACJ,oIAAqF;IACvF,4DAAO;IACP,uEAAM;IACJ,oIAAuF;IACzF,4DAAO;IACT,4DAA6B;IAC7B,4HAeM;IACR,4DAAsB;IACxB,4DAAU;;;;IA7ByB,0DAAiB;IAAjB,0EAAiB;IAG5C,0DACF;IADE,6FACF;IAEsC,0DAA0B;IAA1B,+EAA0B;IAG1B,0DAAyB;IAAzB,8EAAyB;IAGrC,0DAAe;IAAf,wFAAe;;ADFxC,MAAM,oBAAoB;IAQ/B;QAJA,kBAAa,GAAU,EAAE,CAAC;QAC1B,SAAI,GAAmB,EAAE,CAAC;IAGV,CAAC;IAEjB,QAAQ;;QACN,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;YACrD,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAA6B,CAAC;YAC/D,IAAI,CAAC,WAAW,GAAG,QAAQ,SAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,MAAM,0CAAE,KAAK,CAAC,CAAC,CAAC,KAAK,SAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,MAAM,0CAAE,KAAK,CAAC,CAAC,CAAC,KAAK,SAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,MAAM,0CAAE,KAAK,CAAC,CAAC,CAAC,KAAK,UAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,MAAM,0CAAE,KAAK,CAAC,CAAC,CAAC,IAAG,GAAG,GAAG,CAAC;SACzI;IACH,CAAC;IACD,WAAW;QACT,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,WAAW,EAAE,EAAC,CAAC,CAAC,CAAC;IAClD,CAAC;;wFAlBU,oBAAoB;kHAApB,oBAAoB;QCXjC,yHA8BU;;QA9BsB,6GAAyC;;;;;;;;;;;;;;;;;;;;;;;;ACAM;AACD;;;;;;;;;ICC1E,kFAAmH;IAA1C,6VAA2B;IAClG,2EAAyB;IAAA,uDAAgB;IAAA,4DAAO;IAClD,4DAAe;;;IAFqC,oFAAoB;IAC7C,0DAAgB;IAAhB,kFAAgB;;;;IAE3C,uFACiB;IADiE,qWAA2B;IAE3G,2EAAyB;IAAA,uDAAgB;IAAA,4DAAO;IAClD,4DAAmB;;;IAHD,mFAAmB;IAEV,0DAAgB;IAAhB,kFAAgB;;;IAGzC,qEAMI;;IAFF,iGAAwC;;;IAG1C,qEAKI;;;IACJ,qEAMI;;IADF,8FAAqC;;;IA3B3C,yEAAkE;IAChE,0IAEe;IACf,kJAGmB;IACnB,yEAA4E;IAC1E,wHAMI;IACJ,wHAKI;IACJ,wHAMI;IACN,4DAAM;IACR,4DAAM;;;IA7BkG,0DAAW;IAAX,8EAAW;IAI9G,0DAAY;IAAZ,+EAAY;IAOV,0DAAyC;IAAzC,mHAAyC;IAOzC,0DAAoB;IAApB,uFAAoB;IAMpB,0DAA6C;IAA7C,uHAA6C;;ADf/C,MAAM,sBAAsB;IAcjC;QAZS,aAAQ,GAAY,IAAI,CAAC;QAEzB,UAAK,GAAY,IAAI,CAAC;QAItB,kBAAa,GAAW,6FAAgC,CAAC;QAIxD,oBAAe,GAA0B,IAAI,uDAAY,EAAE,CAAC;IAEtD,CAAC;IAEjB,QAAQ;IACR,CAAC;IAED,QAAQ,CAAC,KAAyB;QAEhC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAC3C,CAAC;;4FAtBU,sBAAsB;oHAAtB,sBAAsB;QCXnC,6EAAmD;QACjD,kHA8BM;QACR,4DAAU;;QA/BF,0DAAsB;QAAtB,uFAAsB;;;;;;;;;;;;;;;;;;;;ACD9B,oBAAoB;AAEsE;;;;;AASnF,MAAM,uBAAuB;IAqClC;QApCU,kBAAa,GAAuB,IAAI,uDAAY,EAAE,CAAC;QAEvD,iBAAY,GAAmD,IAAI,uDAAY,EAAE,CAAC;QAElF,iBAAY,GAA2B,IAAI,uDAAY,EAAE,CAAC;QAE1D,yBAAoB,GAAsB,IAAI,uDAAY,EAAE,CAAC;QAK7D,gBAAW,GAA2B,IAAI,uDAAY,EAAE,CAAC;QACzD,kBAAa,GAA2B,IAAI,uDAAY,EAAE,CAAC;QAG3D,oBAAe,GAA0B,IAAI,uDAAY,EAAE,CAAC;QAG5D,kBAAa,GAAsB,IAAI,uDAAY,EAAE,CAAC;QAMtD,qBAAgB,GAAyB,IAAI,uDAAY,EAAE,CAAC;QAC5D,uBAAkB,GAAyB,IAAI,uDAAY,EAAE,CAAC;QAC9D,kBAAa,GAAyB,IAAI,uDAAY,EAAE,CAAC;QACzD,kBAAa,GAAyB,IAAI,uDAAY,EAAE,CAAC;QACzD,2BAAsB,GAA0B,IAAI,uDAAY,EAAE,CAAC;QACnE,wBAAmB,GAA0B,IAAI,uDAAY,EAAE,CAAC;QAE1E,aAAQ,GAAW,QAAQ,CAAC;IAKZ,CAAC;IAEjB,QAAQ;IACR,CAAC;IAEM,YAAY,CAAC,CAAC;QACnB,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;QACd,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC;QAExB,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC5B,CAAC;IAEM,YAAY;QACjB,IAAI,CAAC,QAAQ,GAAG,UAAU,CAAC;IAC7B,CAAC;IAEM,cAAc,CAAC,KAAa,EAAE,EAAU;QAC7C,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IACzC,CAAC;IAED,aAAa,CAAC,KAAe;QAC3B,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC/B,CAAC;IAED,eAAe,CAAC,KAAe;QAC7B,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACjC,CAAC;IAED,cAAc,CAAC,GAAQ;QACrB,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC/B,CAAC;IAED,UAAU,CAAC,MAAM;QACf,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QACvB,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACjC,CAAC;IAED,aAAa,CAAC,IAAI;QAChB,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACvC,CAAC;;8FA5EU,uBAAuB;qHAAvB,uBAAuB;;;;;;QCXpC,yEAAgD;QAC9C,yEAA8B;QAC5B,2EACA;QAAA,yEAA4D;QAAvD,4IAAS,wBAAoB,IAAC;QACjC,uEAA0B;QAAC,gFAAoB;QAAA,4DAAI;QACrD,4DAAM;QACR,4DAAM;QAEN,yEAAyB;QACvB,gGAA0G;QAAhC,wKAAU,wBAAoB,IAAC;QAEvG,uFAAmF;QAAA,qEACnF;QAAA,4DAAoB;QAEpB,wFAAyE;QAAA,kEAAM;QAAA,4DAAoB;QAEnG,wFAAyE;QAAA,mEACzE;QAAA,4DAAoB;QACtB,4DAA0B;QAC5B,4DAAM;QACN,2EAAqB;QACnB,2EAAyB;QACvB,kGAMkI;QANjG,4LAAoB,iCAAkC,IAAC,8HACrE,8BAA+B,IADsC,4HACpB,sBAAkB,IADE,8HAErE,8BAA+B,IAFsC,wIAEd,mCAAoC,IAFtB,8HAIrE,yBAAqB,IAJgD,kIAI3B,2BAAuB,IAJI,8HAKrE,0BAAsB,IAL+C,gJAKnB,uCAAmC,IALhB,0IAM/D,oCAAgC,IAN+B,4IAMmB,yBAAqB,IANxC;QAM0C,4DAAyB;QAC7J,4DAAM;QACR,4DAAM;QAER,4DAAM;;;QAvBuB,0DAAkB;QAAlB,+EAAkB;QAmBkB,2DAAuB;QAAvB,2EAAuB;QAHhF,gGAAmC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACzBgB;AACJ;AACW;AACT;AACU;AACJ;AACF;AACA;AACN;AACA;AACA;AACI;AACmB;AACnB;AACF;AACF;AACU;AACJ;AACA;AACG;AACO;AACd;AACO;AACV;AACkB;AACP;AACN;AAGE;;AAgEtD,MAAM,cAAc;;4EAAd,cAAc;2GAAd,cAAc;+GA5DhB;YACP,qEAAe;YACf,iEAAa;YACb,4EAAkB;YAClB,mEAAc;YACd,6EAAmB;YACnB,yEAAiB;YACjB,uEAAgB;YAChB,uEAAgB;YAChB,iEAAa;YACb,kEAAa;YACb,kEAAa;YACb,sEAAe;YACf,yFAAwB;YACxB,sEAAe;YACf,oEAAc;YACd,kEAAa;YACb,4EAAkB;YAClB,wEAAgB;YAChB,wEAAgB;YAChB,2EAAiB;YACjB,kFAAqB;YACrB,oEAAc;YACd,2EAAiB;YACjB,kEAAa;YACb,mFAAqB;YACrB,4EAAkB;YAClB,sEAAe;YACf,wEAAmB;SACpB,EAEC,qEAAe;QACf,iEAAa;QACb,4EAAkB;QAClB,mEAAc;QACd,6EAAmB;QACnB,yEAAiB;QACjB,uEAAgB;QAChB,uEAAgB;QAChB,iEAAa;QACb,kEAAa;QACb,kEAAa;QACb,sEAAe;QACf,yFAAwB;QACxB,sEAAe;QACf,oEAAc;QACd,kEAAa;QACb,4EAAkB;QAClB,wEAAgB;QAChB,wEAAgB;QAChB,2EAAiB;QACjB,kFAAqB;QACrB,oEAAc;QACd,2EAAiB;QACjB,kEAAa;QACb,mFAAqB;QACrB,4EAAkB;QAClB,sEAAe;mIAGN,cAAc,cA3DvB,qEAAe;QACf,iEAAa;QACb,4EAAkB;QAClB,mEAAc;QACd,6EAAmB;QACnB,yEAAiB;QACjB,uEAAgB;QAChB,uEAAgB;QAChB,iEAAa;QACb,kEAAa;QACb,kEAAa;QACb,sEAAe;QACf,yFAAwB;QACxB,sEAAe;QACf,oEAAc;QACd,kEAAa;QACb,4EAAkB;QAClB,wEAAgB;QAChB,wEAAgB;QAChB,2EAAiB;QACjB,kFAAqB;QACrB,oEAAc;QACd,2EAAiB;QACjB,kEAAa;QACb,mFAAqB;QACrB,4EAAkB;QAClB,sEAAe;QACf,wEAAmB,aAGnB,qEAAe;QACf,iEAAa;QACb,4EAAkB;QAClB,mEAAc;QACd,6EAAmB;QACnB,yEAAiB;QACjB,uEAAgB;QAChB,uEAAgB;QAChB,iEAAa;QACb,kEAAa;QACb,kEAAa;QACb,sEAAe;QACf,yFAAwB;QACxB,sEAAe;QACf,oEAAc;QACd,kEAAa;QACb,4EAAkB;QAClB,wEAAgB;QAChB,wEAAgB;QAChB,2EAAiB;QACjB,kFAAqB;QACrB,oEAAc;QACd,2EAAiB;QACjB,kEAAa;QACb,mFAAqB;QACrB,4EAAkB;QAClB,sEAAe;;;;;;;;;;;;;;;;;;ACnFZ,MAAM,iBAAiB;IAE5B,gBAAgB,CAAC;IAEjB,eAAe,CAAC,EAAE;QAChB,OAAO;YACL,KAAK,EAAE,EAAE;YACT,OAAO,EAAE,cAAc;YACvB,kBAAkB,EAAE,OAAO;YAC3B,iBAAiB,EAAE,YAAY;SAChC;IAEH,CAAC;IACD,aAAa,CAAC,EAAE;QACd,OAAO;YACL,KAAK,EAAE,EAAE;YACT,gBAAgB,EAAE,EACjB;YACD,KAAK,EAAE,MAAM;YACb,SAAS,EAAE,CAAC;YACZ,WAAW,EAAE,YAAY;YACzB,UAAU,EAAE,YAAY;YACxB,WAAW,EAAE,QAAQ;YACrB,OAAO,EAAE,gBAAgB;YACzB,WAAW,EAAE,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,GAAG,IAAI;YACxC,KAAK,EAAE,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,GAAG,IAAI,GAAG,IAAI;YACzC,KAAK,EAAE,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,GAAG,IAAI;YAClC,KAAK,EAAE,MAAM;YACb,UAAU,EAAE,MAAM;SACnB;IACH,CAAC;IAGD,QAAQ;IACR,CAAC;IAED,QAAQ;QACN,4CAA4C;QAC5C,kFAAkF;QAClF,IAAI,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;QAC9B,MAAM,CAAC,WAAW,CAChB;YACE,IAAI,EAAE,MAAM;YACZ,MAAM,EAAE,UAAU;YAClB,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;YAC9C,YAAY,EAAE,SAAS;YACvB,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;SACnD,EAAE,wBAAwB,CAAC,CAAC;IACjC,CAAC;IAGD,WAAW;QACT,IAAI,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;QAC9B,MAAM,CAAC,WAAW,CAChB;YACE,IAAI,EAAE,MAAM;YACZ,MAAM,EAAE,UAAU;YAClB,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;YAC9C,YAAY,EAAE,SAAS;YACvB,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;SACnD,EAAE,wBAAwB,CAAC,CAAC;IACjC,CAAC;IACD,WAAW;QACT,IAAI,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;QAC9B,MAAM,CAAC,WAAW,CAChB;YACE,IAAI,EAAE,MAAM;YACZ,MAAM,EAAE,UAAU;YAClB,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;YAC9C,YAAY,EAAE,SAAS;YACvB,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;SACnD,EAAE,wBAAwB,CAAC,CAAC;IACjC,CAAC;IAED,OAAO;QACL,IAAI,MAAM,CAAC,MAAM;YACf,MAAM,CAAC,KAAK,EAAE,CAAC;IACnB,CAAC;IAED,SAAS;QACP,IAAI,MAAM,CAAC,MAAM;YACf,OAAO,MAAM,CAAC;QAEhB,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,SAAS;QACP,IAAI,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;QAC9B,MAAM,CAAC,WAAW,CAChB;YACE,IAAI,EAAE,MAAM;YACZ,MAAM,EAAE,UAAU;YAClB,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;YAC9C,YAAY,EAAE,SAAS;YACvB,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;SACnD,EAAE,wBAAwB,CAAC,CAAC;IACjC,CAAC;IAGD,MAAM,CAAC,KAAK;QAEV,IAAI,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QAChC,IAAI,GAAG,GAAG,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;QAE9B,IAAI,SAAS,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAClC,IAAI,MAAM,GAAG,SAAS,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QAC7D,IAAI,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC;QAC3B,IAAI,UAAU,GAAG,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC;YAChD,OAAO,GAAG,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAC/D,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;QACX,IAAI,WAAW,GAAG,kBAAkB,CAAC,UAAU,CAAC,CAAC;QACjD,IAAI,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;QAEjC,OAAO,GAAG;IACZ,CAAC;;kFAlHU,iBAAiB;+GAAjB,iBAAiB;QCP9B,oEAAG;QAAA,0FAA+B;QAAA,4DAAI;QACtC,4EAAuC;QAArB,yIAAS,cAAU,IAAC;QAAC,mEAAQ;QAAA,4DAAS;QAAA,gEAAK;QAC7D,4EAAiD;QAAxB,yIAAS,iBAAa,IAAC;QAAC,uEAAY;QAAA,4DAAS;QAAA,gEAAK;QAC3E,4EAA6C;QAAxB,yIAAS,iBAAa,IAAC;QAAC,6EAAkB;QAAA,4DAAS;QAAA,iEAAK;QAC7E,6EAAyC;QAAtB,0IAAS,eAAW,IAAC;QAAC,wEAAY;QAAA,4DAAS;QAAA,iEAAK;QAAA,iEAAK;QAAA,iEAAK;QAC7E,6EAAuC;QAApB,0IAAS,aAAS,IAAC;QAAC,oEAAQ;QAAA,4DAAS;;;;;;;;;;;;;;;;;;;;;;;;ACAH;AAGyC;AAEF;;;AAG5F,sFAAsF;AAI/E,MAAM,wBAAyB,SAAQ,wFAAoB;IAG9D,YAAoB,KAAiB;QACjC,KAAK,CAAC,KAAK,CAAC,CAAC;QADG,UAAK,GAAL,KAAK,CAAY;QAFrC,WAAM,GAAiC,IAAI,+CAAa,EAAiB,CAAC;QAItE,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;QACnC,IAAI,GAAG,GAAG,IAAI,iFAAa,EAAE,CAAC;QAC9B,GAAG,CAAC,OAAO,GAAG,sBAAsB;QAEpC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC1B,CAAC;IAED,SAAS;QACL,OAAO,IAAI,CAAC,MAAM,CAAC;IACvB,CAAC;;gGAdQ,wBAAwB;yHAAxB,wBAAwB,WAAxB,wBAAwB,mBAFrB,MAAM;AAoBtB,IAAI,SAAS,GACb,EAEC;AAED,IAAI,UAAU,GACd;IACI,MAAM,EAAE,gBAAgB;IACxB,UAAU,EAAE,QAAQ;IACpB,UAAU,EAAE,KAAK;IACjB,cAAc,EAAE,aAAa;IAC7B,eAAe,EAAE,yBAAyB;IAC1C,gBAAgB,EAAE,0BAA0B;IAC5C,kBAAkB,EAAE,4BAA4B;IAChD,sBAAsB,EAAE,GAAG;IAC3B,uBAAuB,EAAE,6BAA6B;IACtD,QAAQ,EAAE,KAAK;CAClB;AAED,IAAI,SAAS,GACb;IACI,YAAY,EAAE,KAAK;IACnB,aAAa,EAAE,KAAK;IACpB,QAAQ,EAAE,KAAK;CAClB;AAED,IAAI,eAAe,GAAG,CAAC,YAAY,EAAE,8BAA8B,EAAE,gBAAgB,EAAE,eAAe,CAAC;AACvG,IAAI,WAAW,GAAG,CAAC,YAAY,EAAE,8BAA8B,EAAE,gBAAgB,EAAE,eAAe,CAAC,CAAC;AACpG,IAAI,SAAS,GAAG,CAAC,wBAAwB,EAAE,eAAe,EAAE,eAAe,EAAE,cAAc,EAAE,kBAAkB,EAAE,2BAA2B,EAAE,2BAA2B,EAAE,cAAc,EAAE,YAAY,EAAE,wBAAwB,EAAE,eAAe,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,sBAAsB,EAAE,cAAc,EAAE,YAAY,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,sBAAsB,EAAE,kBAAkB,EAAE,8BAA8B,EAAE,YAAY,EAAE,wBAAwB,EAAE,eAAe,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,cAAc,EAAE,YAAY,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,sBAAsB,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,eAAe,EAAE,cAAc,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,2BAA2B,CAAC,CAAC;AAG32B,MAAM,sBAAsB;IAU/B,YAAoB,QAAkB;QAAlB,aAAQ,GAAR,QAAQ,CAAU;QATtC,UAAK,GACD;YACI,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,qBAAqB,EAAE,KAAK,EAAE,EAAE,EAAE;YACtF,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,uBAAuB,EAAE,KAAK,EAAE,CAAC,oBAAoB,CAAC,EAAE;YAC9G,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,oBAAoB,EAAE,KAAK,EAAE,CAAC,cAAc,CAAC,EAAE;YAClG,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,qBAAqB,EAAE,KAAK,EAAE,CAAC,eAAe,CAAC,EAAE;YACrG,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,qBAAqB,EAAE,KAAK,EAAE,CAAC,eAAe,EAAE,WAAW,CAAC,EAAE;SACvH;QA8JL,kBAAa,GACT;YACI,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,EAAE,EAAE;YAChE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,EAAE;YAClF,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,EAAE;YACnG,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,EAAE;YACpF,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,EAAE;YACnG,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,EAAE;YAClF,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,EAAE;YAClF,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,EAAE;YAClG,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,EAAE;YAClF,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,EAAE;SACrF,CAAC;QAEN,uBAAkB,GACd;YACI,EAAE,EAAE,EAAE,CAAC,EAAE;YACT,EAAE,EAAE,EAAE,CAAC,EAAE;YACT,EAAE,EAAE,EAAE,CAAC,EAAE,SAAS,EAAE,GAAG,EAAE;YACzB,EAAE,EAAE,EAAE,CAAC,EAAE;YACT,EAAE,EAAE,EAAE,CAAC,EAAE,SAAS,EAAE,GAAG,EAAE;YACzB,EAAE,EAAE,EAAE,CAAC,EAAE;YACT,EAAE,EAAE,EAAE,CAAC,EAAE;YACT,EAAE,EAAE,EAAE,CAAC,EAAE,SAAS,EAAE,GAAG,EAAE;YACzB,EAAE,EAAE,EAAE,CAAC,GAAG;YACV,EAAE,EAAE,EAAE,CAAC,GAAG;SACb,CAAC;IAtLoC,CAAC;IAE3C,QAAQ,CAAC,OAAyB;QAE9B,oDAAoD;QAEpD,IAAI,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;QACpD,IAAI,QAAQ;YACR,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;QAE/C,IAAI,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QAEpC,IAAI,IAAI,GAAa,EAAE,CAAC;QAExB,QAAQ,KAAK,CAAC,GAAG,EAAE;YACf,KAAK,MAAM;gBAAE,IAAI,GAAG,EAAE,CAAC;gBAAC,MAAM,CAAC,UAAU;YACzC,KAAK,MAAM;gBAAE,IAAI,GAAG,eAAe,CAAC;gBAAC,MAAM,CAAC,cAAc;YAC1D,KAAK,MAAM;gBAAE,IAAI,GAAG,WAAW,CAAC;gBAAC,MAAM,CAAC,SAAS;YACjD,KAAK,MAAM;gBAAE,IAAI,GAAG,SAAS,CAAC;gBAAC,MAAM,CAAC,WAAW;SACpD;QAED,OAAO,wCAAE,CAAC,IAAI,8DAAY,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;IAC7D,CAAC;IAED,SAAS,CAAC,OAAyB;QAE/B,oDAAoD;QAEpD,IAAI,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;QACpD,IAAI,QAAQ;YACR,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;QAE/C,IAAI,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QAEpC,KAAK,CAAC,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,GAAG,IAAI,GAAG,GAAG,CAAC;QAC9C,KAAK,CAAC,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC;QAExC,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;QAEjC,OAAO,wCAAE,CAAC,IAAI,8DAAY,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC;IAChF,CAAC;IAID,YAAY,CAAC,KAAU;QAEnB,IAAI,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QAChC,IAAI,GAAG,GAAG,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;QAE9B,IAAI,SAAS,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAClC,IAAI,MAAM,GAAG,SAAS,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QAC7D,IAAI,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC;QAC3B,IAAI,UAAU,GAAG,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC;YAC9C,OAAO,GAAG,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QACjE,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;QACX,IAAI,WAAW,GAAG,kBAAkB,CAAC,UAAU,CAAC,CAAC;QACjD,IAAI,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;QAEjC,OAAO,GAAG;IACd,CAAC;IAED,SAAS,CAAC,OAAyB;QAE/B,oDAAoD;QAEpD,IAAI,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;QACpD,IAAI,QAAQ;YACR,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;QAE/C,IAAI,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QAGpC,QAAQ,KAAK,CAAC,GAAG,EAAE;YACf,KAAK,MAAM;gBAAE,OAAO,wCAAE,CAAC,IAAI,8DAAY,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;gBAAC,MAAM,CAAC,WAAW;SAClG;QAED,OAAO,wCAAE,CAAC,IAAI,8DAAY,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;IACjD,CAAC;IAED,WAAW,CAAC,OAAyB;QAEjC,IAAI,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;QACpD,IAAI,QAAQ;YACR,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;QAE/C,IAAI,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QAGpC,QAAQ,KAAK,CAAC,GAAG,EAAE;YACf,KAAK,MAAM;gBACP;oBACI,oFAAoF;oBACpF,IAAI,UAAU,GAAG,SAAS,CAAC;oBAC3B,KAAK,IAAI,GAAG,IAAI,IAAI,CAAC,KAAK,EAAE;wBACxB,IAAI,GAAG,CAAC,EAAE,IAAI,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE;4BAC3B,UAAU,GAAG,GAAG,CAAC;4BACjB,MAAM;yBACT;qBACJ;oBAED,IAAI,CAAC,UAAU;wBACX,OAAO,wCAAE,CAAC,IAAI,8DAAY,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;yBAC5C;wBACD,IAAI,QAAQ,GAAG,UAAU,CAAC,KAAK,CAAC;wBAEhC,UAAU,CAAC,KAAK,GAAG,EAAE,CAAC;wBAEtB,KAAK,IAAI,IAAI,IAAI,QAAQ,EAAE;4BACvB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;gCACvC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;6BAC9B;yBACJ;wBAED,KAAK,IAAI,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,MAAM;4BAChC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;wBAEhC,OAAO,wCAAE,CAAC,IAAI,8DAAY,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC;qBAClE;iBACJ;SACR;QAED,OAAO,wCAAE,CAAC,IAAI,8DAAY,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;IACjD,CAAC;IAED,cAAc,CAAC,OAAyB;QAEpC,IAAI,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;QACpD,IAAI,QAAQ;YACR,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;QAE/C,IAAI,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QAGpC,QAAQ,KAAK,CAAC,GAAG,EAAE;YACf,KAAK,MAAM,CAAC;YACZ,KAAK,MAAM,CAAC;YACZ,KAAK,MAAM;gBACP;oBACI,IAAI,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;oBAE1B,IAAI,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,GAAG,IAAI;wBACnC,OAAO,wCAAE,CAAC,IAAI,8DAAY,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,iCAAiC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;oBAG3I,MAAM,CAAC,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,KAAK,CAAC;oBAC7C,OAAO,wCAAE,CAAC,IAAI,8DAAY,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC;iBAEvF;gBAAA,CAAC;gBAAC,MAAM;YACb,SAAS,6CAA6C;gBAClD,OAAO,wCAAE,CAAC,IAAI,8DAAY,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;SACpD;QAED,OAAO,wCAAE,CAAC,IAAI,8DAAY,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;IACjD,CAAC;IA+BD,QAAQ;QACJ,OAAO,wCAAE,CAAC,IAAI,8DAAY,CAAC;YACvB,IAAI,EAAE;gBACF;oBACI;wBACI,IAAI,EAAE,8EAA8E;wBACpF,IAAI,EAAE,CAAC;wBACP,MAAM,EAAE,wGAAwG;wBAChH,OAAO,EAAE;4BACL;gCACI,OAAO,EAAE,+BAA+B;gCACxC,OAAO,EAAE,KAAK;6BACjB;yBACJ;wBACD,OAAO,EAAE,aAAa;qBACzB;iBACJ;gBACD;oBACI;wBACI,IAAI,EAAE,4EAA4E;wBAClF,IAAI,EAAE,CAAC;wBACP,MAAM,EAAE,sGAAsG;wBAC9G,OAAO,EAAE,EAER;wBACD,OAAO,EAAE,mBAAmB;wBAC5B,aAAa,EAAE,wEAAwE;qBAC1F;iBACJ;aACJ;SACJ,CAAC,CAAC;IACP,CAAC;IAGD,mBAAmB,CAAC,OAAyB;QAEzC,OAAO,wCAAE,CAAC,IAAI,8DAAY,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,kBAAkB,EAAE,EAAE,CAAC,CAAC,CAAC;IACzG,CAAC;IAED,cAAc,CAAC,OAA8B;QACzC,OAAO,wCAAE,CAAC,IAAI,8DAAY,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,OAAO,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,EAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;IAC3I,CAAC;IAED,mBAAmB,CAAC,QAAgB;QAChC,MAAM,cAAc,GAAG;YACnB,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE;YAC7H,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,cAAc,EAAE;SACzI,CAAC;QACF,MAAM,kBAAkB,GAAG,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE;YACpD,OAAO,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAC;QACpE,CAAC,CAAC;QACF,OAAO,wCAAE,CAAC,IAAI,8DAAY,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,kBAAkB,EAAE,CAAC,CAAC,CAAC;IAC3E,CAAC;IAED,QAAQ,CAAC,KAAoB;QACzB,IAAI;YACA,IAAI,SAAS,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YACpC,IAAI,MAAM,GAAG,SAAS,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;YAC7D,IAAI,WAAW,GAAG,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC;gBACvE,OAAO,GAAG,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;YACjE,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;YAEb,OAAO,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;SAClC;QACD,WAAM;YACF,OAAO,EAAE,CAAC;SACb;IACL,CAAC;IAED,YAAY;QACR,OAAO,wCAAE,CAAC,IAAI,8DAAY,CACtB;YACI,IAAI,EAAE;gBACF,SAAS,EAAE,QAAQ;gBACnB,aAAa,EAAE,GAAG;gBAClB,WAAW,EAAE,GAAG;aACnB;SACJ,CAAC,CAAC,CAAC;IACZ,CAAC;IAGD,SAAS,CAAC,OAAyB,EAAE,IAAiB;QAClD,OAAO,CAAC,GAAG,CAAC,uBAAuB,GAAG,OAAO,CAAC,GAAG,GAAG,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;QAC9E,QAAQ,OAAO,CAAC,MAAM,EAAE;YACpB,KAAK,KAAK;gBACN,QAAQ,OAAO,CAAC,GAAG,EAAE;oBACjB,KAAK,wBAAwB;wBACzB,OAAO,wCAAE,CAAC,IAAI,8DAAY,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;wBAC7C,MAAM;oBACV,KAAK,6CAA6C;wBAC9C,OAAO,wCAAE,CAAC,IAAI,8DAAY,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC;wBAC/D,MAAM;oBACV,KAAK,4CAA4C;wBAC7C,OAAO,wCAAE,CAAC,IAAI,8DAAY,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;wBACvD,MAAM;oBACV,KAAK,4CAA4C;wBAC7C,yBAAyB;wBACzB,OAAO,wCAAE,CAAC,IAAI,8DAAY,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,mBAAO,CAAC,8CAAoC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;wBACpG,MAAM;oBACV,KAAK,gDAAgD;wBACjD,OAAO,wCAAE,CAAC,IAAI,8DAAY,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,mBAAO,CAAC,0CAAgC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;wBAChG,MAAM;oBACV,KAAK,8CAA8C;wBAC/C,yBAAyB;wBACzB,OAAO,wCAAE,CAAC,IAAI,8DAAY,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,mBAAO,CAAC,2CAAiC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;wBACjG,MAAM;oBACV,KAAK,wCAAwC;wBACzC,OAAO,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;oBAClC,KAAK,wCAAwC;wBACzC,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;oBACnC,KAAK,kDAAkD;wBACnD,OAAO,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC;oBAC7C,KAAK,8CAA8C;wBAC/C,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC;oBAC3B,KAAK,iBAAiB;wBAClB,OAAO,IAAI,CAAC,YAAY,EAAE,CAAC;iBAElC;gBACD,MAAM;YACV,KAAK,MAAM;gBACP,QAAQ,OAAO,CAAC,GAAG,EAAE;oBACjB,KAAK,+CAA+C;wBAChD,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;wBAC/B,MAAM;oBACV,KAAK,6CAA6C;wBAC9C,OAAO,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;wBACjC,MAAM;oBACV,KAAK,6CAA6C;wBAC9C,OAAO,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;wBACpC,MAAM;oBACV,KAAK,qDAAqD;wBACtD,OAAO,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;wBAC3D,MAAM;oBACV,KAAK,0CAA0C;wBAC3C,OAAO,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;iBAC3C;gBAED,MAAM;SACb;QACD,IAAI,OAAO,CAAC,MAAM,KAAK,KAAK,IAAI,OAAO,CAAC,GAAG,KAAK,6BAA6B,EAAE;YAC3E,OAAO,wCAAE,CAAC,IAAI,8DAAY,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC;SAC1E;QAED,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC;QACjC,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAChC,CAAC;;4FAnVQ,sBAAsB;uHAAtB,sBAAsB,WAAtB,sBAAsB;AAwV5B,MAAM,sBAAsB;IAC/B,YAAoB,QAAkB;QAAlB,aAAQ,GAAR,QAAQ,CAAU;IAAI,CAAC;IAE3C,SAAS,CAAC,OAAyB,EAAE,IAAiB;QAClD,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;IAC/B,CAAC;;4FALQ,sBAAsB;uHAAtB,sBAAsB,WAAtB,sBAAsB;;;;;;;;;;;;;;;;;;;;ACnZ5B,MAAM,iBAAiB;IAE5B,gBAAgB,CAAC;IAEjB,QAAQ;IACR,CAAC;;kFALU,iBAAiB;+GAAjB,iBAAiB;QCP9B,oEAAG;QAAA,kFAAuB;QAAA,4DAAI;QAC9B,uEAAkB;QAAA,+DAAI;QAAA,4DAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACA+C;AAGR;AACK;;;;;;;;;;;;ICA9D,sEAA2B;IACzB,uEAAM;IAAA,0EAAe;IAAA,4DAAO;IAC9B,4DAAM;;;IACN,sEAA4B;IAC1B,uEAAM;IAAA,yEAAc;IAAA,4DAAO;IAC7B,4DAAM;;;IANR,sEAAmB;IACjB,2HAEM;IACN,2HAEM;IACR,4DAAM;;;IANE,0DAAmB;IAAnB,sFAAmB;IAGnB,0DAAoB;IAApB,uFAAoB;;;IAK1B,sEAA2B;IACzB,uEAAM;IAAA,2EAAgB;IAAA,4DAAO;IAC/B,4DAAM;;;IACN,sEAA4B;IAC1B,uEAAM;IAAA,0EAAe;IAAA,4DAAO;IAC9B,4DAAM;;;IANR,sEAAkB;IAChB,2HAEM;IACN,2HAEM;IACR,4DAAM;;;IANE,0DAAmB;IAAnB,sFAAmB;IAGnB,0DAAoB;IAApB,uFAAoB;;ADF3B,MAAM,yBAAyB;IAQpC,YACU,SAAkD,EAClD,YAA0B,EAC1B,IAA0B,EACF,IAAS;QAHjC,cAAS,GAAT,SAAS,CAAyC;QAClD,iBAAY,GAAZ,YAAY,CAAc;QAC1B,SAAI,GAAJ,IAAI,CAAsB;QACF,SAAI,GAAJ,IAAI,CAAK;IACvC,CAAC;IAIL,QAAQ;QACN,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;QAEjD,IAAG,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,EAAC;YACrF,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC;YAC7C,IAAI,CAAC,aAAa,KAAK,IAAI,CAAC,CAAC;gBAC7B,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,oFAAsB,CAAC,CAAC,CAAC;gBACnE,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,mFAAqB,CAAC,CAAC;SAClE;aAAM,IAAG,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,EAAC;YAChD,4BAA4B;YAC5B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;YACjB,IAAI,CAAC,aAAa,GAAG,IAAI;YACzB,IAAI,iBAAiB,GAAI,IAAI,CAAC,IAAI,CAAC,WAAW;YAC9C,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;YAE/B,MAAM,iBAAiB,GAAQ,EAAE,CAAC;YAClC,iBAAiB,CAAC,gGAAyB,CAAC,GAAG,iBAAiB,CAAC,IAAI,CAAC;YACtE,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,wBAAwB,CAAC,oFAAsB,EAAE,iBAAiB,CAAC,CAAC;SAGrG;aAAM;YACL,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;YACjB,IAAI,CAAC,aAAa,GAAG,KAAK;YAC1B,2BAA2B;YAC3B,IAAI,gBAAgB,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU;YAC3C,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;YAE9B,MAAM,gBAAgB,GAAQ,EAAE,CAAC;YACjC,gBAAgB,CAAC,+FAAwB,CAAC,GAAG,gBAAgB,CAAC,IAAI,CAAC;YACnE,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,wBAAwB,CAAC,mFAAqB,EAAE,gBAAgB,CAAC,CAAC;SACnG;IACH,CAAC;IAED,eAAe;QACb,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACzC,CAAC;IAED,OAAO;QACL,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE;YAC1C,OAAO,IAAI,CAAC;SACb;aAAM;YACL,OAAO,KAAK,CAAC;SACd;IACH,CAAC;IAGD,QAAQ;QACN,IAAI,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC;QAE1C,IAAI,UAAU,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,aAAa,EAAE,IAAI,CAAC,aAAa,EAAE,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,IAAI,EAAE,SAAS,EAAC;QAC5G,IAAG,QAAQ,CAAC,cAAc,CAAC,qBAAqB,CAAC,EAAC;YAChD,UAAU;gBACV;oBACE,IAAI,EAAE,CAAC;oBACP,eAAe,EAAE,IAAI,CAAC,aAAa;oBACnC,aAAa,EAAE,IAAI,CAAC,WAAW;oBAC/B,MAAM,EAAE,QAAQ,CAAC,mBAAmB;iBACrC;YACD,IAAG,IAAI,CAAC,IAAI,EAAC;gBACX,UAAU,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE;aACzC;SACF;aAAM;YACL,UAAU;gBACV;oBACE,IAAI,EAAE,CAAC;oBACP,eAAe,EAAE,IAAI,CAAC,aAAa;oBACnC,aAAa,EAAE,IAAI,CAAC,WAAW;oBAC/B,MAAM,EAAE,QAAQ,CAAC,kBAAkB;iBACpC;YACD,IAAG,IAAI,CAAC,IAAI,EAAC;gBACX,UAAU,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;aACxC;SACF;QAED,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;IACnC,CAAC;IAED,SAAS;QACP,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;IACzB,CAAC;;kGAhGU,yBAAyB,mfAY1B,qEAAe;uHAZd,yBAAyB;;;;;;QCbtC,wEAAqB;QACnB,iFAA2D;QACzD,qFAA8C;QAC5C,qHAOM;QACN,qHAOM;QACR,4DAAkB;QACpB,4DAAc;QAChB,4DAAK;QAGL,yEAAmG;QACjG,yEACwC;QACtC,yEAAkC;QAChC,oFAAqG;QACvG,4DAAM;QAEN,0EAAoE;QAClE,2EAA4D;QAC1D,8EACoD;QAAtB,kJAAS,eAAW,IAAC;QAAC,kEAAM;QAAA,4DAAS;QACrE,4DAAM;QACN,2EAA4D;QAC1D,8EAEkB;QAD6C,kJAAS,cAAU,IAAC;QACjE,gEAAI;QAAA,4DAAS;QACjC,4DAAM;QACR,4DAAM;QAER,4DAAM;QACR,4DAAM;;QAzCM,0DAAW;QAAX,2EAAW;QAQX,0DAAU;QAAV,0EAAU;QAiBQ,0DAAmB;QAAnB,4EAAmB;QASjC,0DAAuB;QAAvB,oFAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACtCwC;AAGK;AACF;AACa;;;;;;;;;;;;AAUxF,MAAM,oBAAoB;IAa/B,YACU,MAAc,EACd,MAAiB,EACjB,GAAe,EACf,IAA0B;QAH1B,WAAM,GAAN,MAAM,CAAQ;QACd,WAAM,GAAN,MAAM,CAAW;QACjB,QAAG,GAAH,GAAG,CAAY;QACf,SAAI,GAAJ,IAAI,CAAsB;QAT1B,wBAAmB,GAAsB,IAAI,uDAAY,EAAE,CAAC;IAUnE,CAAC;IAEJ,QAAQ;QACN,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;QACjD,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAChC,CAAC;IAED,iBAAiB,CAAC,CAAM;QACtB,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAClD,CAAC;IAED,eAAe;QACb,IAAI,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,uGAAyB,EAAE;YAC3D,KAAK,EAAE,OAAO;YACd,YAAY,EAAE,KAAK;YACnB,IAAI,EAAE,EAAE,aAAa,EAAE,IAAI,CAAC,WAAW,EAAE,UAAU,EAAE,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE;SACnF,CAAC,CAAC;QAGH,UAAU,CAAC,WAAW,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE;YACxC,IAAI,IAAI,EAAE;gBACR,IAAI,YAAY,GAAG,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,CAAC;gBACvD,IAAI,CAAC,iBAAiB,CAAC,YAAY,CAAC;aACrC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAED,wBAAwB,CAAC,IAAS;QAChC,IAAI,YAAY,GAAc,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;QAC3E,YAAY,CAAC,IAAI,GAAG,IAAI,CAAC,aAAa,KAAK,IAAI,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,YAAY,CAAC;QAC/E,YAAY,CAAC,MAAM,GAAG,EAAE,CAAC;QACzB,YAAY,CAAC,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QACrC,YAAY,CAAC,MAAM,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC;QACvD,YAAY,CAAC,MAAM,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;QAGnD,OAAO,YAAY,CAAC;IACtB,CAAC;IAGD,iBAAiB,CAAC,GAAG;QACnB,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,4FAAsB,EAAE;YACvD,KAAK,EAAE,OAAO;YACd,+CAA+C;YAC/C,IAAI,EAAE,gBAAgB;YACtB,YAAY,EAAE,IAAI;SACnB,CAAC,CAAC;QAEH,IAAI,CAAC,GAAG,CAAC,IAAI,CAAM,MAAM,EAAE,QAAQ,EAAE,GAAG,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE;YACxD,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE;gBACd,OAAO,CAAC,KAAK,EAAE,CAAC;gBAChB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,0FAAoB,EAAE;oBACrC,KAAK,EAAE,OAAO;oBACd,IAAI,EAAE,GAAG,CAAC,QAAQ;oBAClB,YAAY,EAAE,KAAK;iBACpB,CAAC,CAAC;gBACH,OAAO;aACR;YAED,IAAI,CAAC,uBAAuB,CAAC,GAAG,CAAC,MAAM,CAAC;YACxC,OAAO,CAAC,KAAK,EAAE,CAAC;QAElB,CAAC,EAAE,GAAG,CAAC,EAAE;YACP,OAAO,CAAC,KAAK,EAAE,CAAC;YAChB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,0FAAoB,EAAE;gBACrC,KAAK,EAAE,OAAO;gBACd,IAAI,EAAE,CAAC,oBAAoB,EAAE,GAAG,CAAC,OAAO,CAAC;gBACzC,YAAY,EAAE,KAAK;aACpB,CAAC,CAAC;QACL,CAAC,CAAC;IACJ,CAAC;IAED,uBAAuB,CAAC,GAAG;QACzB,OAAO,CAAC,GAAG,CAAC,mCAAmC,CAAC,CAAC;QAEjD,IAAI,CAAC,WAAW,CAAC,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;QACjC,IAAI,CAAC,WAAW,CAAC,YAAY,GAAG,GAAG,CAAC,YAAY,CAAC;QACjD,IAAI,CAAC,WAAW,CAAC,QAAQ,GAAG,GAAG,CAAC,QAAQ,CAAC;IAE3C,CAAC;;wFAjGU,oBAAoB;kHAApB,oBAAoB;QCfjC,yEACkF;QAChF,yEACuB;QACrB,8EAAwF;QACtF,sFAA0C;QACxC,yEAA6B;QAE3B,oEAAG;QAAA,uDAAoB;QAAA,4DAAI;QAC7B,4DAAM;QACN,yEAAiC;QAC/B,sEAAK;QACH,yEAA6C;QAC3C,qEAAG;QAAA,sEAAI;QAAA,wDAAiE;;QAAA,4DAAK;QAAA,4DAAI;QACnF,4DAAM;QACN,0EAAsF;QACpF,+EAA8C;QAApC,qJAAS,6BAAyB,IAAC;QAAC,kEAAM;QAAA,4DAAW;QACjE,4DAAM;QACN,0EAAsF;QACpF,+EAAsC;QAA5B,+IAAS,qBAAiB,IAAC;QAAC,gEAAI;QAAA,4DAAW;QACvD,4DAAM;QACR,4DAAM;QACR,4DAAM;QACR,4DAAmB;QACrB,4DAAW;QACb,4DAAM;QACR,4DAAM;;QAlBO,0DAAoB;QAApB,qFAAoB;QAKZ,0DAAiE;QAAjE,4MAAiE;QAEjD,0DAA4D;QAA5D,8KAA4D;QAG5D,0DAA4D;QAA5D,8KAA4D;;;;;;;;;;;;;;;;;;;ACX1F,MAAM,cAAc;IAEzB,gBAAgB,CAAC;IAEjB,QAAQ;IACR,CAAC;;4EALU,cAAc;4GAAd,cAAc;QCP3B,oEACM;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAmD;AAEgB;;;;;;;;;;;;;ICgB/D,iFAAgE;IAC9D,uDACF;IAAA,4DAAa;;;IAFgC,8EAAkB;IAC7D,0DACF;IADE,uFACF;;;IAOA,iFAA2D;IACzD,uDACF;IAAA,4DAAa;;;IAF0B,+EAAmB;IACxD,0DACF;IADE,wFACF;;ADjBH,MAAM,yBAAyB;IAEpC,YACkC,IAAS,EACjC,SAAkD,EAClD,GAAe;QAFS,SAAI,GAAJ,IAAI,CAAK;QACjC,cAAS,GAAT,SAAS,CAAyC;QAClD,QAAG,GAAH,GAAG,CAAY;QAQzB,iBAAY,GAAmB,EAAE,CAAC;QAClC,WAAW;QACX,UAAK,GAAU,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE;YAC3D,EAAE,IAAI,EAAE,gBAAgB,EAAE,EAAE,EAAE,IAAI,EAAE,sBAAsB,EAAE;YAC5D,EAAE,IAAI,EAAE,YAAY,EAAE,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC,CAAC;IAX7C,CAAC;IAaL,QAAQ;QACN,MAAM,IAAI,GAAG,IAAI,CAAC;QAElB,IAAI,CAAC,kBAAkB,GAAG,IAAI,uDAAW,CAAC,EAAE,EAAE;YAC5C,+DAAmB;SACpB,CAAC,CAAC;QAEH,IAAI,CAAC,sBAAsB,GAAG,IAAI,uDAAW,CAAC,EAAE,EAAE;YAChD,+DAAmB;SACpB,CAAC,CAAC;QAGH,IAAI,CAAC,GAAG,CAAC,GAAG,CAAiB,cAAc,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE;;YAC9E,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;gBACxB,OAAO,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;YAClE,CAAC,CAAC,CAAC;YACH,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC;YAEnB,IAAI,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC;YAE7B,8BAA8B;YAC9B,IAAI,WAAW,GAAG,CAAC,UAAI,CAAC,IAAI,0CAAE,OAAO,CAAC,CAAC;YACvC,MAAM,eAAe,GAAG,WAAI,CAAC,IAAI,0CAAE,eAAe,KAAI,EAAE,CAAC;YACzD,MAAM,mBAAmB,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,GAAG,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;YAC3E,WAAW,GAAG,WAAW,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC;YAEtD,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC,MAAM,CAAC,UAAU,GAAG;gBACnD,OAAO,CAAC,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YACzC,CAAC,CAAC;QACJ,CAAC,CAAC,CAAC;IAEL,CAAC;IAED,QAAQ;QACN,IAAI,OAAO,GAAG,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC;QAC5C,IAAI,IAAI,GAAG,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC;QAE7C,IAAI,aAAa,GACjB;YACE,MAAM,EAAE,OAAO;YACf,MAAM,EAAE,IAAI;SACb;QAED,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;IACtC,CAAC;IAED,aAAa;QACX,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC7B,CAAC;IAED,OAAO;QACL,IAAI,IAAI,CAAC,kBAAkB,CAAC,KAAK,IAAI,IAAI,CAAC,sBAAsB,CAAC,KAAK,EAAE;YACtE,OAAO,IAAI,CAAC;SACb;aAAM;YACL,OAAO,KAAK,CAAC;SACd;IACH,CAAC;;kGA3EU,yBAAyB,kEAG1B,qEAAe;uHAHd,yBAAyB;QCZtC,wEAAqB;QACnB,iFAA2D;QACzD,qFAA8C;QAC5C,uEAAM;QAAA,0EAAe;QAAA,4DAAO;QAC9B,4DAAkB;QACpB,4DAAc;QAChB,4DAAK;QAGL,yEAAmG;QACjG,yEACwC;QACtC,wEAAuB;QAAA,oMAAyI;QAAA,4DAAK;QACrK,sEAAK;QACH,qFAA4C;QAC1C,6EAAW;QAAA,mEAAO;QAAA,4DAAY;QAE9B,oFAAuF;QACrF,qIAEa;QACf,4DAAa;QACf,4DAAiB;QACjB,qFAA4C;QAC1C,6EAAW;QAAA,4EAAgB;QAAA,4DAAY;QAEvC,sFAA4G;QAC1G,qIAEa;QACf,4DAAa;QACf,4DAAiB;QACnB,4DAAM;QAGN,2EAAoE;QAClE,2EAA4D;QAC1D,8EACwD;QAA1B,kJAAS,mBAAe,IAAC;QAAC,kEAAM;QAAA,4DAAS;QACzE,4DAAM;QACN,2EAA4D;QAC1D,8EAEkB;QAD6C,kJAAS,cAAU,IAAC;QACjE,gEAAI;QAAA,4DAAS;QACjC,4DAAM;QACR,4DAAM;QACR,4DAAM;QACR,4DAAM;;QA9BsC,2DAAkC;QAAlC,+FAAkC;QACxC,0DAAe;QAAf,qFAAe;QAQD,0DAAsC;QAAtC,mGAAsC;QACnD,0DAAQ;QAAR,8EAAQ;QAc/B,0DAAuB;QAAvB,oFAAuB;;;;;;;;;;;;;;;;;;;;;;AC1CgD;;;;;;;AAShF,MAAM,gBAAgB;IAQ3B;QAFU,oBAAe,GAAsB,IAAI,uDAAY,EAAE,CAAC;IAEnD,CAAC;IAEhB,QAAQ;QACN,IAAI,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;QAC/C,IAAI,CAAC,OAAO,CAAC,IAAI,GAAG,YAAY,CAAC;QACjC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC5B,CAAC;IAED,aAAa,CAAC,CAAM;QAClB,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC1C,CAAC;;gFAlBU,gBAAgB;8GAAhB,gBAAgB;QCT7B,yEACkF;QAChF,yEACuB;QACrB,8EAAwF;QACtF,qFAAiD;QAC/C,oFAA6C;QAAA,uDAC7C;QAAA,4DAAiB;QACjB,yEAAsF;QACpF,8EAA0C;QAAhC,gJAAS,yBAAqB,IAAC;QAAC,iEAAM;QAAA,4DAAW;QAC7D,4DAAM;QACR,4DAAkB;QAClB,mFAAkB;QAChB,wEAA2B;QAAA,wDAAgB;QAAA,4DAAI;QACjD,4DAAmB;QACrB,4DAAW;QACb,4DAAM;QACR,4DAAM;;QAX+C,0DAC7C;QAD6C,2FAC7C;QACyB,0DAA4D;QAA5D,8KAA4D;QAK1D,0DAAgB;QAAhB,iFAAgB;;;;;;;;;;;;;;;;;;;ACN5C,MAAM,eAAe;IAE1B,gBAAgB,CAAC;IAEjB,QAAQ;IACR,CAAC;;8EALU,eAAe;6GAAf,eAAe;QCP5B,oEAAG;QAAA,wEAAa;QAAA,4DAAI;;;;;;;;;;;;;;;;;;;;;;;;;ACQb,MAAM,4BAA4B;IAEvC,YAAoB,SAAqD;QAArD,cAAS,GAAT,SAAS,CAA4C;IAAI,CAAC;IAE9E,QAAQ;IACR,CAAC;IAED,SAAS;QACP,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;IACzB,CAAC;;wGATU,4BAA4B;0HAA5B,4BAA4B;QCRzC,uEAEkC;QAAA,uEAAY;QAAA,4DAAI;QAElD,yEAAmG;QACjG,yEACwC;QACtC,sEAAK;QACH,oEAAG;QACD,2WACF;QAAA,4DAAI;QAEN,4DAAM;QACR,4DAAM;QACR,4DAAM;QACN,yEAA6C;QAC3C,yEAAiF;QAC/E,4EAA+E;QAA5C,oJAAS,eAAW,IAAC;QAAuB,iEAAK;QAAA,4DAAS;QAC/F,4DAAM;QACR,4DAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AClBuC;AAEc;AACG;AACD;AACuB;AAG7C;AAEqB;AACiD;;;;;;;;;;;;;;;;;;;ICE7F,iFAA2D;IACzD,uDACF;IAAA,4DAAa;;;IAF0B,gFAAmB;IACxD,0DACF;IADE,yFACF;;;IASA,iFAAwD;IACtD,uDACF;IAAA,4DAAa;;;IAFwB,+EAAkB;IACrD,0DACF;IADE,wFACF;;;IASA,iFAAkE;IAChE,uDACF;IAAA,4DAAa;;;IAF+B,kFAAqB;IAC/D,0DACF;IADE,2FACF;;;IASA,iFAA8D;IAC5D,uDACF;IAAA,4DAAa;;;IAF4B,iFAAoB;IAC3D,0DACF;IADE,0FACF;;;IASA,iFAAwE;IACtE,uDACF;IAAA,4DAAa;;;IAFmC,oFAAuB;IACrE,0DACF;IADE,6FACF;;;IASA,iFAA4F;IAC1F,uDACF;IAAA,4DAAa;;;IAFgD,2FAA8B;IACzF,0DACF;IADE,oGACF;;;IA2DF,yEAAuE;IAAC,+DAAG;IAAA,4DAAK;;;IAChF,yEAAuC;IAAC,uDAAe;IAAA,4DAAK;;;IAApB,0DAAe;IAAf,0FAAe;;;IAKvD,yEAAyE;IAAC,iEAAK;IAAA,4DAAK;;;IACpF,yEAAuC;IAAC,uDAAiB;IAAA,4DAAK;;;IAAtB,0DAAiB;IAAjB,4FAAiB;;;IAKzD,yEAAyE;IAAC,iEAAK;IAAA,4DAAK;;;IACpF,yEAAuC;IAAC,uDAAiB;IAAA,4DAAK;;;IAAtB,0DAAiB;IAAjB,4FAAiB;;;IAKzD,yEAA2E;IAAC,sFAA0B;IAAA,4DAAK;;;IAC3G,yEAAuC;IAAC,uDAAoB;IAAA,4DAAK;;;IAAzB,0DAAoB;IAApB,+FAAoB;;;IAK5D,yEAA2E;IAAC,mEAAO;IAAA,4DAAK;;;IACxF,yEAAuC;IAAC,uDAAmB;IAAA,4DAAK;;;IAAxB,0DAAmB;IAAnB,8FAAmB;;;IAK3D,yEAAuE;IAAC,0EAAc;IAAA,4DAAK;;;IAC3F,yEAAuC;IAAC,uDAA2C;;IAAA,4DAAK;;;IAAhD,0DAA2C;IAA3C,+KAA2C;;;IAKnF,oEAAgF;;;;IAChF,yEAA8F;IAAlC,yYAAiC;IAAC,kEAAO;IAAA,4DAAK;;;IAG5G,oEAA4D;;;IAC5D,oEAAkE;;;IAKtE,0EAA0D;IACxD,uEAAM;IAAA,iGAAsC;IAAA,4DAAO;IACrD,4DAAM;;;AD/JP,MAAM,sBAAsB;IA8CjC,YACU,GAAe,EACf,MAAiB,EACjB,SAAsB;QAFtB,QAAG,GAAH,GAAG,CAAY;QACf,WAAM,GAAN,MAAM,CAAW;QACjB,cAAS,GAAT,SAAS,CAAa;QA/ChC,aAAQ,GAAG,EAAE,CAAC;QACd,qBAAgB,GAAa,CAAC,IAAI,EAAE,MAAM,EAAC,MAAM,EAAC,SAAS,EAAC,QAAQ,EAAC,UAAU,EAAC,MAAM,CAAC,CAAC;QAExF,eAAU,GAAG,IAAI,uEAAkB,CAAU,EAAE,CAAC,CAAC;QAEjD,aAAQ,GAAU,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE;YACtB,EAAE,IAAI,EAAE,aAAa,EAAE;YACvB,EAAE,IAAI,EAAE,UAAU,EAAE;YACpB,EAAE,IAAI,EAAE,UAAU,EAAE;YACpB,EAAE,IAAI,EAAE,SAAS,EAAE;SACpB,CAAC;QAChB,UAAK,GAAU,CAAC,EAAE,IAAI,EAAC,oBAAoB,EAAC;YAC5B,EAAE,IAAI,EAAE,kBAAkB,EAAE;YAC5B,EAAE,IAAI,EAAE,sBAAsB,EAAE;YAChC,EAAE,IAAI,EAAE,sBAAsB,EAAE;YAChC,EAAE,IAAI,EAAE,8BAA8B,EAAE;YACxC,EAAE,IAAI,EAAE,mBAAmB,EAAE;YAC7B,EAAE,IAAI,EAAE,kBAAkB,EAAE;YAC5B,EAAE,IAAI,EAAE,OAAO,EAAE;SAClB,CAAC;QAEhB,WAAM,GAAU,EAAE,CAAC;QACnB,eAAU,GAAU,EAAE,CAAC;QACvB,qBAAgB,GAAQ,EAAE,CAAC;QAS3B,qCAAqC;QACrC,0GAA0G;QAC1G,8BAAyB,GAAgB,IAAI,uDAAW,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;QAC3F,2BAAsB,GAAgB,IAAI,uDAAW,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;QACxF,4BAAuB,GAAgB,IAAI,uDAAW,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;QACzF,6BAAwB,GAAgB,IAAI,uDAAW,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;QAC1F,gCAA2B,GAAgB,IAAI,uDAAW,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;QAC7F,uCAAkC,GAAgB,IAAI,uDAAW,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;QACpG,uCAAkC,GAAgB,IAAI,uDAAW,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;QACpG,qCAAgC,GAAgB,IAAI,uDAAW,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;QAClG,wBAAmB,GAAgB,IAAI,uDAAW,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;IAMpF,CAAC;IAEL,QAAQ;QACN,IAAI,CAAC,UAAU,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;QAC3C,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,EAAE,CAAgB,CAAC,CAAC;QACnE,IAAI,CAAC,UAAU,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QACjC,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC;QAC5B,IAAI,CAAC,OAAO,GAAG,IAAI,IAAI,EAAE,CAAC;QAC1B,IAAI,CAAC,UAAU,CAAC,mBAAmB,GAAG,CAAC,IAAS,EAAE,YAAoB,EAAU,EAAE;YAChF,IAAI,YAAY,IAAI,MAAM,EAAE;gBAC1B,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,iBAAiB,EAAE,CAAC;aACzC;YAED,IAAI,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,QAAQ,EAAE;gBAC1C,OAAO,IAAI,CAAC,YAAY,CAAC,CAAC,iBAAiB,EAAE,CAAC;aAC/C;YAED,OAAO,IAAI,CAAC,YAAY,CAAC,CAAC;QAC5B,CAAC,CAAC;QAEF,IAAI,CAAC,GAAG,CAAC,IAAI,CAAM,SAAS,EAAE,cAAc,EAAE,EAAE,WAAW,EAAE,SAAS,EAAE,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE;YAC3F,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC;YAEvB,IAAI,CAAC,cAAc,EAAE,CAAC;QACxB,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,GAAG,CAAC,GAAG,CAAQ,cAAc,EAAE,QAAQ,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE;YAC/D,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;gBACnB,OAAO,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;YAClE,CAAC,CAAC,CAAC;YACH,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC;QACrB,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,GAAG,CAAC,GAAG,CAAQ,OAAO,EAAE,aAAa,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE;YAC7D,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,OAAO,EAAE,IAAI,EAAE,CAAC,EAAE,EAAC,CAAC,CAAC,CAAC;YACtD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;gBACxB,OAAO,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;YAClE,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,GAAG,CAAC,GAAG,CAAQ,WAAW,EAAE,aAAa,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE;YACjE,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,OAAO,EAAE,IAAI,EAAE,CAAC,EAAE,EAAC,CAAC,CAAC,CAAC;YAC1D,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;gBAC5B,OAAO,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;YAClE,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,GAAG,CAAC,GAAG,CAAQ,cAAc,EAAE,kBAAkB,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE;YACzE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;gBACnB,OAAO,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;YAClE,CAAC,CAAC,CAAC;YACH,IAAI,CAAC,gBAAgB,GAAG,MAAM,CAAC;QACjC,CAAC,CAAC,CAAC;IACL,CAAC;IAED,eAAe;QACb,uEAAuE;QACvE,UAAU,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,gBAAgB,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC;IAC9E,CAAC;IAED,cAAc;QACZ,IAAI,CAAC,UAAU,CAAC,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC;IACvC,CAAC;IAED,WAAW,CAAC,EAAO;QACjB,MAAM,GAAG,GAAG,GAAG,QAAQ,CAAC,MAAM,0BAA0B,EAAE,EAAE,CAAC;QAC7D,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;IAC7B,CAAC;IAED,WAAW;QACT,IAAI,aAAa,GAAG,IAAI,CAAC,yBAAyB,CAAC,KAAK,CAAC;QACzD,IAAI,UAAU,GAAG,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC;QACnD,IAAI,WAAW,GAAG,IAAI,CAAC,uBAAuB,CAAC,KAAK,CAAC;QACrD,IAAI,YAAY,GAAG,IAAI,CAAC,wBAAwB,CAAC,KAAK,CAAC;QACvD,IAAI,eAAe,GAAG,IAAI,CAAC,2BAA2B,CAAC,KAAK,CAAC;QAC7D,IAAI,sBAAsB,GAAG,IAAI,CAAC,kCAAkC,CAAC,KAAK,CAAC;QAC3E,IAAI,2BAA2B,GAAG,IAAI,CAAC,kCAAkC,CAAC,KAAK,CAAC;QAChF,IAAI,yBAAyB,GAAG,IAAI,CAAC,gCAAgC,CAAC,KAAK,CAAC;QAE5E,MAAM,aAAa;SAQlB;QAED,IAAI,OAAO,GAAG,IAAI,aAAa,EAAE,CAAC;QAElC,IAAG,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE;YACvD,OAAO,CAAC,KAAK,GAAG,WAAW,IAAI,EAAE,CAAC;SACnC;QAED,IAAG,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE;YAC3D,OAAO,CAAC,QAAQ,GAAG,aAAa,IAAI,EAAE,CAAC;SACxC;QAED,IAAG,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE;YACrD,OAAO,CAAC,IAAI,GAAG,UAAU,IAAI,EAAE,CAAC;SACjC;QAED,IAAG,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE;YACzD,OAAO,CAAC,MAAM,GAAG,YAAY,IAAI,EAAE,CAAC;SACrC;QAED,IAAG,KAAK,CAAC,OAAO,CAAC,eAAe,CAAC,IAAI,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE;YAC/D,OAAO,CAAC,UAAU,GAAG,eAAe,IAAI,EAAE,CAAC;SAC5C;QAED,IAAG,KAAK,CAAC,OAAO,CAAC,sBAAsB,CAAC,IAAI,sBAAsB,CAAC,MAAM,GAAG,CAAC,EAAE;YAC7E,OAAO,CAAC,gBAAgB,GAAG,sBAAsB,IAAI,EAAE,CAAC;SACzD;QAED,IAAI,2BAA2B,IAAI,IAAI,IAAI,yBAAyB,IAAI,IAAI,EAAE;YAC5E,OAAO,CAAC,2BAA2B,GAAG,CAAC,2BAA2B,EAAE,yBAAyB,CAAC,CAAC,CAAC,6CAA6C;SAC9I;QAED,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,4FAAsB,EAAE;YACzD,KAAK,EAAE,OAAO;YACd,IAAI,EAAE,kBAAkB;YACxB,YAAY,EAAE,IAAI;SACnB,CAAC,CAAC;QACH,IAAI,CAAC,GAAG,CAAC,IAAI,CAAM,SAAS,EAAE,cAAc,EAAE,OAAO,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE;YACxE,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC;YAEvB,SAAS,CAAC,KAAK,EAAE,CAAC;YAElB,IAAI,CAAC,cAAc,EAAE,CAAC;QACxB,CAAC,CAAC,CAAC;IACL,CAAC;IAED,WAAW;QACT,IAAI,CAAC,yBAAyB,CAAC,KAAK,EAAE,CAAC;QACvC,IAAI,CAAC,sBAAsB,CAAC,KAAK,EAAE,CAAC;QACpC,IAAI,CAAC,uBAAuB,CAAC,KAAK,EAAE,CAAC;QACrC,IAAI,CAAC,wBAAwB,CAAC,KAAK,EAAE,CAAC;QACtC,IAAI,CAAC,2BAA2B,CAAC,KAAK,EAAE,CAAC;QACzC,IAAI,CAAC,kCAAkC,CAAC,KAAK,EAAE,CAAC;QAChD,IAAI,CAAC,kCAAkC,CAAC,KAAK,EAAE,CAAC;QAChD,IAAI,CAAC,gCAAgC,CAAC,KAAK,EAAE,CAAC;QAE9C,IAAI,CAAC,GAAG,CAAC,IAAI,CAAM,SAAS,EAAE,cAAc,EAAE,EAAE,WAAW,EAAE,SAAS,EAAE,EAAE,IAAI,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE;YACjG,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC;YAEvB,IAAI,CAAC,cAAc,EAAE,CAAC;QACxB,CAAC,CAAC,CAAC;IACL,CAAC;IAEM,QAAQ,CAAC,GAAW;QACzB,IAAI,CAAC,YAAY,GAAG,GAAG,CAAC;IAC1B,CAAC;IAED,MAAM,CAAC,IAAS;QACd,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,UAAU,GAAG;YAChD,OAAO,GAAG,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC;QAChC,CAAC,CAAC,CAAC;IACL,CAAC;IAED,MAAM;QACJ,IAAI,IAAI,CAAC,YAAY,IAAI,OAAO,EAAE;YAChC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;YAC5B,IAAI,CAAC,WAAW,EAAE,CAAC;SACpB;aACI;YACH,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;YAChC,IAAI,CAAC,eAAe,EAAE,CAAC;SACxB;IACH,CAAC;IAEK,WAAW;;YACf,IAAI,aAAa,GAAG,IAAI,CAAC,yBAAyB,CAAC,KAAK;YACxD,IAAI,UAAU,GAAG,IAAI,CAAC,sBAAsB,CAAC,KAAK;YAClD,IAAI,WAAW,GAAG,IAAI,CAAC,uBAAuB,CAAC,KAAK;YACpD,IAAI,YAAY,GAAG,IAAI,CAAC,wBAAwB,CAAC,KAAK;YACtD,IAAI,eAAe,GAAG,IAAI,CAAC,2BAA2B,CAAC,KAAK;YAC5D,IAAI,sBAAsB,GAAG,IAAI,CAAC,kCAAkC,CAAC,KAAK,CAAC;YAC3E,IAAI,2BAA2B,GAAG,IAAI,CAAC,kCAAkC,CAAC,KAAK,CAAC;YAChF,IAAI,yBAAyB,GAAG,IAAI,CAAC,gCAAgC,CAAC,KAAK,CAAC;YAE5E,MAAM,aAAa;aAQlB;YAED,IAAI,OAAO,GAAG,IAAI,aAAa,EAAE,CAAC;YAElC,IAAG,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE;gBACvD,OAAO,CAAC,KAAK,GAAG,WAAW,IAAI,EAAE,CAAC;aACnC;YAED,IAAG,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE;gBAC3D,OAAO,CAAC,QAAQ,GAAG,aAAa,IAAI,EAAE,CAAC;aACxC;YAED,IAAG,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE;gBACrD,OAAO,CAAC,IAAI,GAAG,UAAU,IAAI,EAAE,CAAC;aACjC;YAED,IAAG,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE;gBACzD,OAAO,CAAC,MAAM,GAAG,YAAY,IAAI,EAAE,CAAC;aACrC;YAED,IAAG,KAAK,CAAC,OAAO,CAAC,eAAe,CAAC,IAAI,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE;gBAC/D,OAAO,CAAC,UAAU,GAAG,eAAe,IAAI,EAAE,CAAC;aAC5C;YAED,IAAG,KAAK,CAAC,OAAO,CAAC,sBAAsB,CAAC,IAAI,sBAAsB,CAAC,MAAM,GAAG,CAAC,EAAE;gBAC7E,OAAO,CAAC,gBAAgB,GAAG,sBAAsB,IAAI,EAAE,CAAC;aACzD;YAED,IAAI,2BAA2B,IAAI,IAAI,IAAI,yBAAyB,IAAI,IAAI,EAAE;gBAC5E,OAAO,CAAC,2BAA2B,GAAG,CAAC,2BAA2B,EAAE,yBAAyB,CAAC,CAAC,CAAC,6CAA6C;aAC9I;YAED,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,4FAAsB,EAAE;gBACzD,KAAK,EAAE,OAAO;gBACd,IAAI,EAAE,mBAAmB;gBACzB,YAAY,EAAE,IAAI;aACnB,CAAC,CAAC;YAEH,IAAI,CAAC,GAAG,CAAC,WAAW,CAAM,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE;gBAC/E,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;gBACtB,qDAAM,CAAC,QAAQ,EAAE,oBAAoB,CAAC,CAAC;gBAEvC,SAAS,CAAC,KAAK,EAAE,CAAC;YACpB,CAAC,CAAC;QACJ,CAAC;KAAA;IAEK,eAAe;;YACnB,IAAI,aAAa,GAAG,IAAI,CAAC,yBAAyB,CAAC,KAAK;YACxD,IAAI,UAAU,GAAG,IAAI,CAAC,sBAAsB,CAAC,KAAK;YAClD,IAAI,WAAW,GAAG,IAAI,CAAC,uBAAuB,CAAC,KAAK;YACpD,IAAI,YAAY,GAAG,IAAI,CAAC,wBAAwB,CAAC,KAAK;YACtD,IAAI,eAAe,GAAG,IAAI,CAAC,2BAA2B,CAAC,KAAK;YAC5D,IAAI,sBAAsB,GAAG,IAAI,CAAC,kCAAkC,CAAC,KAAK,CAAC;YAC3E,IAAI,2BAA2B,GAAG,IAAI,CAAC,kCAAkC,CAAC,KAAK,CAAC;YAChF,IAAI,yBAAyB,GAAG,IAAI,CAAC,gCAAgC,CAAC,KAAK,CAAC;YAE5E,MAAM,aAAa;aAQlB;YAED,IAAI,OAAO,GAAG,IAAI,aAAa,EAAE,CAAC;YAElC,IAAG,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE;gBACvD,OAAO,CAAC,KAAK,GAAG,WAAW,IAAI,EAAE,CAAC;aACnC;YAED,IAAG,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE;gBAC3D,OAAO,CAAC,QAAQ,GAAG,aAAa,IAAI,EAAE,CAAC;aACxC;YAED,IAAG,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE;gBACrD,OAAO,CAAC,IAAI,GAAG,UAAU,IAAI,EAAE,CAAC;aACjC;YAED,IAAG,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE;gBACzD,OAAO,CAAC,MAAM,GAAG,YAAY,IAAI,EAAE,CAAC;aACrC;YAED,IAAG,KAAK,CAAC,OAAO,CAAC,eAAe,CAAC,IAAI,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE;gBAC/D,OAAO,CAAC,UAAU,GAAG,eAAe,IAAI,EAAE,CAAC;aAC5C;YAED,IAAG,KAAK,CAAC,OAAO,CAAC,sBAAsB,CAAC,IAAI,sBAAsB,CAAC,MAAM,GAAG,CAAC,EAAE;gBAC7E,OAAO,CAAC,gBAAgB,GAAG,sBAAsB,IAAI,EAAE,CAAC;aACzD;YAED,IAAI,2BAA2B,IAAI,IAAI,IAAI,yBAAyB,IAAI,IAAI,EAAE;gBAC5E,OAAO,CAAC,2BAA2B,GAAG,CAAC,2BAA2B,EAAE,yBAAyB,CAAC,CAAC;aAChG;YAED,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,4FAAsB,EAAE;gBACzD,KAAK,EAAE,OAAO;gBACd,IAAI,EAAE,sBAAsB;gBAC5B,YAAY,EAAE,IAAI;aACnB,CAAC,CAAC;YAEH,IAAI,CAAC,GAAG,CAAC,WAAW,CAAM,WAAW,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE;gBACnF,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;gBACtB,qDAAM,CAAC,QAAQ,EAAE,mBAAmB,CAAC,CAAC;gBAEtC,SAAS,CAAC,KAAK,EAAE,CAAC;YACpB,CAAC,CAAC;QACJ,CAAC;KAAA;IACD,UAAU;QACR,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,uHAA4B,EAAE;YAC/D,KAAK,EAAE,OAAO;YACd,IAAI,EAAE,EAAE;SACT,CAAC,CAAC;QAEH,SAAS,CAAC,WAAW,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE;QAC3C,CAAC,CAAC,CAAC;IACL,CAAC;IACD,YAAY,CAAC,OAAe,EAAE,MAAc;QAC1C,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QACrC,IAAI,CAAC,YAAY,CAAC,oBAAoB,EAAE,OAAO,CAAC,CAAC;IACnD,CAAC;;4FAxWU,sBAAsB;oHAAtB,sBAAsB;kEA8BtB,4DAAO;kEACP,sEAAY;kEACT,uEAAY;;;;;;;;QCnD5B,yEAAyB;QAEvB,yEAA8B;QAC5B,yEAC8D;QAE5D,yEAAmD;QACjD,8EAA2G;QACzG,wEAA8B;QAAA,kEAAO;QAAA,4DAAK;QAC1C,oEAA4C;QAC5C,sEAAK;QACH,oFAA4C;QAC1C,6EAAW;QAAA,gEAAI;QAAA,4DAAY;QAC3B,oFAAmF;QACjF,mIAEa;QACf,4DAAa;QACf,4DAAiB;QACnB,4DAAM;QAEN,uEAAK;QACH,qFAA4C;QAC1C,6EAAW;QAAA,wEAAY;QAAA,4DAAY;QACnC,sFAAgF;QAC9E,mIAEa;QACf,4DAAa;QACf,4DAAiB;QACnB,4DAAM;QAEN,uEAAK;QACH,qFAA4C;QAC1C,6EAAW;QAAA,kEAAM;QAAA,4DAAY;QAC7B,sFAAyF;QACvF,mIAEa;QACf,4DAAa;QACf,4DAAiB;QACnB,4DAAM;QAEN,uEAAK;QACH,qFAA4C;QAC1C,6EAAW;QAAA,sEAAU;QAAA,4DAAY;QACjC,sFAAsF;QACpF,mIAEa;QACf,4DAAa;QACf,4DAAiB;QACnB,4DAAM;QAEN,uEAAK;QACH,qFAA4C;QAC1C,6EAAW;QAAA,8EAAkB;QAAA,4DAAY;QACzC,sFAA+F;QAC7F,mIAEa;QACf,4DAAa;QACf,4DAAiB;QACnB,4DAAM;QAEN,uEAAK;QACH,qFAA4C;QAC1C,6EAAW;QAAA,4EAAgB;QAAA,4DAAY;QACvC,sFAAoH;QAClH,mIAEa;QACf,4DAAa;QACf,4DAAiB;QACnB,4DAAM;QACN,uEAAK;QACH,qFAA4C;QAC1C,6EAAW;QAAA,oFAAwB;QAAA,4DAAY;QAC/C,4FAA6D;QAC3D,wEAAgG;QAChG,wEAA0F;QAC5F,4DAAuB;QACvB,wFAA4E;QAC5E,8FAAuD;QACzD,4DAAiB;QACnB,4DAAM;QAEN,2EAA+B;QAC7B,uEAAK;QACH,8EACwB;QAAxB,+IAAS,iBAAa,IAAC;QAAC,iEAAK;QAAA,4DAAS;QAEtC,8EAC0B;QAAxB,+IAAS,iBAAa,IAAC;QAAC,iEAAK;QAAA,4DAAS;QAC1C,4DAAM;QACR,4DAAM;QACR,4DAAW;QACb,4DAAM;QACR,4DAAM;QAEN,2EACsC;QAEtC,gFAAwG;QAEtG,2EAA6B;QAE3B,uEAAK;QACH,2EAAe;QACb,yEAA8B;QAAA,oEAAQ;QAAA,4DAAK;QAC7C,4DAAM;QACN,2EAAc;QACZ,2EAC0C;QAD8C,4IAAS,gBAAY,IAAC;QAA9G,4DAC0C;QAC5C,4DAAM;QACN,2EAAe;QACf,mGAAwJ;QAAjC,iTAAU,wBAAqB,IAAC;QACrJ,yFAAiC;QAAA,iEAAK;QAAA,4DAAoB;QAC1D,yFAAqC;QAAA,qEAAS;QAAA,4DAAoB;QACpE,4DAA0B;QAC5B,4DAAM;QACJ,2EAAe;QACb,8EAA8H;QAAnB,+IAAS,YAAQ,IAAC;QAAC,kEAAM;QAAA,4DAAS;QAC/I,4DAAM;QACR,4DAAM;QACN,2EAAuF;QACrF,6EAAyG;QAGvG,6EAAgC;QAC9B,mHAAgF;QAChF,mHAA4D;QAC9D,qEAAe;QAGf,6EAAkC;QAChC,mHAAoF;QACpF,mHAA8D;QAChE,qEAAe;QAGf,6EAAkC;QAChC,mHAAoF;QACpF,mHAA8D;QAChE,qEAAe;QAGf,6EAAqC;QACnC,mHAA2G;QAC3G,mHAAiE;QACnE,qEAAe;QAGf,6EAAoC;QAClC,qHAAwF;QACxF,qHAAgE;QAClE,qEAAe;QAGf,8EAAsC;QACpC,qHAA2F;QAC3F,qHAAwF;QAC1F,qEAAe;QAGf,8EAAkC;QAChC,qHAAgF;QAChF,qHAA0G;QAC5G,qEAAe;QAEf,qHAA4D;QAC5D,qHAAkE;QACpE,4DAAQ;QAER,iFAAoG;QACtG,4DAAM;QACN,uHAEM;QAER,4DAAM;QAER,4DAAW;QAEX,4DAAM;QACR,4DAAM;QAER,4DAAM;;;QApLmF,0DAAyB;QAAzB,6EAAyB;QAMlE,0DAAuC;QAAvC,oGAAuC;QAC1C,0DAAQ;QAAR,8EAAQ;QAUP,0DAAsC;QAAtC,mGAAsC;QACxC,0DAAO;QAAP,6EAAO;QAUC,0DAAyC;QAAzC,sGAAyC;QAC9C,0DAAW;QAAX,iFAAW;QAUR,0DAAwC;QAAxC,qGAAwC;QAC5C,0DAAS;QAAT,+EAAS;QAUC,0DAA2C;QAA3C,wGAA2C;QAClD,0DAAa;QAAb,mFAAa;QAUQ,0DAAkD;QAAlD,+GAAkD;QAChE,0DAAmB;QAAnB,yFAAmB;QASvC,0DAAsB;QAAtB,6EAAsB;QACnC,0DAAkD;QAAlD,+GAAkD;QAClD,0DAAgD;QAAhD,6GAAgD;QAEpB,0DAAc;QAAd,qEAAc;QAkCW,2DAAsB;QAAtB,mFAAsB;QAUrC,2DAAyB;QAAzB,sFAAyB;QA4CtD,2DAAiC;QAAjC,iGAAiC;QACpB,0DAA0B;QAA1B,kGAA0B;QAG9C,0DAAe;QAAf,wEAAe;QAEJ,0DAA4B;QAA5B,sHAA4B;;;;;;;;;;;;;;;;;;;;;;;;;ACxKzD,MAAM,0BAA0B;IAErC,YAAoB,SAAmD;QAAnD,cAAS,GAAT,SAAS,CAA0C;IAAI,CAAC;IAE5E,QAAQ;IACR,CAAC;IAED,SAAS;QACP,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;IACzB,CAAC;;oGATU,0BAA0B;wHAA1B,0BAA0B;QCRvC,uEAEkC;QAAA,yEAAc;QAAA,4DAAI;QAEpD,yEAAmG;QACjG,yEACwC;QACtC,sEAAK;QACH,oEAAG;QACD,uZAGF;QAAA,4DAAI;QAEJ,oEAAG;QACD,6VAEF;QAAA,4DAAI;QACN,4DAAM;QACR,4DAAM;QACR,4DAAM;QACN,yEAA6C;QAC3C,0EAAiF;QAC/E,6EAA+E;QAA5C,mJAAS,eAAW,IAAC;QAAuB,iEAAK;QAAA,4DAAS;QAC/F,4DAAM;QACR,4DAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACtBmF;AACc;AAEjC;;;;;;;;;;;;;;;;AAW/D,MAAM,sBAAsB;IAejC,YACU,YAA0B,EAC1B,GAAe,EACf,MAAc,EACd,MAAiB,EAClB,WAAiC;QAJhC,iBAAY,GAAZ,YAAY,CAAc;QAC1B,QAAG,GAAH,GAAG,CAAY;QACf,WAAM,GAAN,MAAM,CAAQ;QACd,WAAM,GAAN,MAAM,CAAW;QAClB,gBAAW,GAAX,WAAW,CAAsB;QAZ1C,gBAAW,GAAG,QAAQ;QAcpB,IAAI,CAAC,QAAQ,EAAE,CAAC;IAClB,CAAC;IAED,QAAQ;QACN,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,uFAAkB,CAAC,CAAC;QAC9D,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,kBAAkB,CAAC,CAAC,CAAC,+BAA+B;QACvG,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;QAC/D,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC;QAC1C,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC;IACzC,CAAC;IAED,aAAa,CAAC,MAAW;QACvB,IAAI,YAAY,GAAQ,EAAE,CAAC;QAC3B,YAAY,CAAC,IAAI,GAAG,MAAM,CAAC,WAAW,CAAC,YAAY,CAAC;QACpD,YAAY,CAAC,MAAM,GAAG,EAAE,CAAC;QACzB,YAAY,CAAC,MAAM,CAAC,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC,YAAY,CAAC;QAClE,YAAY,CAAC,MAAM,CAAC,aAAa,GAAG,MAAM,CAAC,WAAW,CAAC,cAAc,CAAC;QACtE,YAAY,CAAC,MAAM,CAAC,gBAAgB,GAAG,MAAM,CAAC,aAAa,CAAC,iBAAiB,CAAC;QAC9E,YAAY,CAAC,MAAM,CAAC,YAAY,GAAG,MAAM,CAAC,SAAS,CAAC,aAAa,CAAC;QAClE,YAAY,CAAC,MAAM,CAAC,iBAAiB,GAAG,MAAM,CAAC,SAAS,CAAC,kBAAkB,CAAC;QAC5E,YAAY,CAAC,MAAM,CAAC,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,QAAQ,CAAC;QAChE,YAAY,CAAC,MAAM,CAAC,gBAAgB,GAAG,IAAI,CAAC,OAAO,CAAC;QAEpD,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,mGAAsB,EAAE;YACzD,KAAK,EAAE,OAAO;YACd,IAAI,EAAE,mBAAmB;YACzB,YAAY,EAAE,IAAI;SACnB,CAAC,CAAC;QACH,IAAI,CAAC,GAAG,CAAC,IAAI,CAAM,SAAS,EAAE,QAAQ,EAAE,YAAY,EAAE,IAAI,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE;YAE7E,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE;gBACjB,+CAA+C;gBAC/C,mCAAmC;aACpC;iBACI;gBACH,qBAAqB;gBACrB,oDAAoD;gBACpD,oBAAoB;gBACpB,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;aAClC;YACD,SAAS,CAAC,KAAK,EAAE,CAAC;QACpB,CAAC,EAAE,KAAK,CAAC,EAAE;YACT,oCAAoC;YACpC,2FAA2F;YAC3F,SAAS,CAAC,KAAK,EAAE,CAAC;QACpB,CAAC,CAAC;IACJ,CAAC;IAGD,OAAO,CAAC,CAAM;QACZ,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC;QAC9C,MAAM,aAAa,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,CAAC;QAClD,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC;QAE1C,IAAI,MAAM,GAAG,EAAE,WAAW,EAAE,aAAa,EAAE,SAAS,EAAE,CAAC;QAEvD,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;QAC3B,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QACzB,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAEvB,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAEpB,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;IAC7B,CAAC;IAED,OAAO;QACL,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,WAAW,EAAE;YACpE,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;SACrF;aAAM;YACL,OAAO,KAAK,CAAC;SACd;IACH,CAAC;IAED,SAAS,CAAC,EAAU;QAClB,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,wBAAwB,EAAE,EAAE,CAAC,CAAC;IAC1D,CAAC;IAGD,QAAQ,CAAC,KAAM;QACb,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,WAAW,CAAC;QACvC,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,UAAU,CAAC;QAErC,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,EAAE;YAC5B,IAAI,CAAC,WAAW,GAAG,QAAQ,CAAC;SAC7B;aAAM;YACL,IAAI,CAAC,WAAW,GAAG,QAAQ,CAAC;SAC7B;IACH,CAAC;IAED,UAAU;QACR,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,iHAA0B,EAAE;YAC7D,KAAK,EAAE,OAAO;YACd,IAAI,EAAE,EAAE;SACT,CAAC,CAAC;QAEH,SAAS,CAAC,WAAW,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE;QAC3C,CAAC,CAAC,CAAC;IACL,CAAC;IAED,YAAY,CAAC,IAAkB;QAC7B,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QACxB,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAClB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;IAC1B,CAAC;IAED,QAAQ;QACN,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;YACrB,OAAO,yDAAyD,CAAC;SAClE;aACI;YACH,OAAO,EAAE,CAAC;SACX;IACH,CAAC;;4FAtIU,sBAAsB;oHAAtB,sBAAsB;;;;;;;;;;sJAAtB,oBAAgB;;QCjB7B,yEAAsB;QAGpB,yEAA+G;QAI7G,yEACsE;QAGpE,yEAAoG;QAClG,wEAA6B;QAAA,8EAC7B;QAAA,4DAAK;QACL,yEAC4C;QAD4C,2IAAS,gBAAY,IAAC;QAA9G,4DAC4C;QAC9C,4DAAM;QAGN,4EACqD;QAAA,iEAAM;QAAA,4DAAS;QACpE,yEAA+B;QAC7B,6EACyD;QAAvD,qJAAS,mBAAe,IAAC;QAA8B,gEAAI;QAAA,4DAAS;QACxE,4DAAM;QAGR,4DAAM;QAEN,qEAGM;QAGN,2EACwD;QAEtD,2EACyG;QAEvG,gFAAmG;QACjG,mFAAiB;QACf,sFAA2C;QACzC,wEAAM;QAAA,+DAAG;QAAA,4DAAO;QAChB,sEAE2D;QAC7D,4DAAiB;QACnB,4DAAkB;QAClB,wFAA4C;QAC1C,oFACgF;QADnC,yKAAgB,wBAAoB,IAAC;QACF,4DAAe;QACjG,4DAAmB;QACrB,4DAAW;QAEb,4DAAM;QAGR,4DAAM;QAGN,2EACwD;QAEtD,2EACuB;QACrB,gFAAyF;QAEvF,2EAA8B;QAC5B,gFAAmC;QACjC,uFAAgD;QAC9C,kFAAgB;QAAA,+EAAmB;QAAA,4DAAiB;QACtD,4DAAkB;QAClB,oFAAkB;QAChB,uFAAgE;QAClE,4DAAmB;QACrB,4DAAW;QACb,4DAAM;QAER,4DAAW;QACb,4DAAM;QAGN,2EACuB;QACrB,gFAAwF;QACtF,2EAA8B;QAC5B,gFAAmC;QACjC,uFAAgD;QAC9C,kFAAgB;QAAA,sFAA0B;QAAA,4DAAiB;QAC7D,4DAAkB;QAClB,oFAAkB;QAChB,uFAAmE;QACrE,4DAAmB;QACrB,4DAAW;QACb,4DAAM;QAER,4DAAW;QACb,4DAAM;QAGN,2EACuB;QACrB,gFAAwF;QACtF,gFAAmC;QACjC,uFAAgD;QAC9C,kFAAgB;QAAA,6EAAiB;QAAA,4DAAiB;QACpD,4DAAkB;QAClB,oFAAkB;QAChB,uFAA2E;QAC7E,4DAAmB;QACrB,4DAAW;QAEb,4DAAW;QACb,4DAAM;QAGR,4DAAM;QAGR,4DAAM;QAER,4DAAM;;QAxHyE,0DAAiC;QAAjC,qFAAiC;QAkBrG,0DAAyB;QAAzB,sFAAyB;QAEA,0DAA4B;QAA5B,oFAA4B;QAuBhD,2DAA6K;QAA7K,sOAA6K;QAKnK,0DAA8B;QAA9B,uFAA8B;QAwBb,2DAAiB;QAAjB,8EAAiB;QAkBnB,2DAAsB;QAAtB,mFAAsB;QAiBpB,0DAA0B;QAA1B,uFAA0B;;;;;;;;;;;;;;;;;;;;;;;;;ACvG9D,MAAM,6BAA6B;IAIxC,gBAAgB,CAAC;IAEjB,QAAQ;QACN,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC3B,CAAC;;0GARU,6BAA6B;2HAA7B,6BAA6B;QCP1C,yEACkF;QAChF,yEACuB;QACrB,8EAAwF;QACtF,mFAAkB;QAChB,sEAAK;QACH,oEAAG;QAAA,0EAA4B;QAAA,2EAAgB;QAAA,4DAAO;QAAC,0EAA8B;QAAA,uDAA0B;QAAA,4DAAO;QAAA,4DAAI;QAC1H,qEAAG;QAAA,2EAA4B;QAAA,kFAAsB;QAAA,4DAAO;QAAC,2EAA8B;QAAA,wDAAsB;QAAA,4DAAO;QAAA,4DAAI;QAC5H,qEAAG;QAAA,2EAA4B;QAAA,6EAAiB;QAAA,4DAAO;QAAC,2EAA8B;QAAA,wDAAqC;;QAAA,4DAAO;QAAA,4DAAI;QACtI,qEAAG;QAAA,2EAA4B;QAAA,4EAAgB;QAAA,4DAAO;QAAC,2EAA8B;QAAA,wDAAoC;;QAAA,4DAAO;QAAA,4DAAI;QACtI,4DAAM;QACR,4DAAmB;QACrB,4DAAW;QACb,4DAAM;QACR,4DAAM;;QARyF,0DAA0B;QAA1B,yFAA0B;QACpB,0DAAsB;QAAtB,sFAAsB;QAC3B,0DAAqC;QAArC,2JAAqC;QACtC,0DAAoC;QAApC,0JAAoC;;;;;;;;;;;;;;;;;;;;;;;;;ACH5H,MAAM,uBAAuB;IAIlC,gBAAgB,CAAC;IAEjB,QAAQ;QACN,OAAO,CAAC,GAAG,CAAC,wBAAwB,EAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IAC5D,CAAC;;8FARU,uBAAuB;qHAAvB,uBAAuB;QCPpC,yEACkF;QAChF,yEACuB;QACrB,8EAAwF;QACtF,mFAAkB;QAChB,sEAAK;QACH,oEAAG;QAAA,0EAA4B;QAAA,kFAAuB;QAAA,4DAAO;QAAC,0EAA8B;QAAA,uDAAkD;;QAAA,4DAAO;QAAA,4DAAI;QACzJ,qEAAG;QAAA,2EAA4B;QAAA,kFAAsB;QAAA,4DAAO;QAAC,2EAA8B;QAAA,wDAAiD;;QAAA,4DAAO;QAAA,4DAAI;QACvJ,qEAAG;QAAA,2EAA4B;QAAA,iFAAqB;QAAA,4DAAO;QAAC,2EAA8B;QAAA,wDAAyD;;QAAA,4DAAO;QAAA,4DAAI;QAC9J,qEAAG;QAAA,2EAA4B;QAAA,gFAAoB;QAAA,4DAAO;QAAC,2EAA8B;QAAA,wDAAwD;;QAAA,4DAAO;QAAA,4DAAI;QAC9J,4DAAM;QACR,4DAAmB;QACrB,4DAAW;QACb,4DAAM;QACR,4DAAM;;QARgG,0DAAkD;QAAlD,wKAAkD;QACnD,0DAAiD;QAAjD,uKAAiD;QAClD,0DAAyD;QAAzD,+KAAyD;QAC1D,0DAAwD;QAAxD,+KAAwD;;;;;;;;;;;;;;;;;;;;;;;ACTzE;;;;;;;ICU1E,oEAAkC;IAAA,uDAAkE;IAAA,4DAAI;;;IAAtE,0DAAkE;IAAlE,iIAAkE;;;IACpG,kEAAyF;;;IAAvC,2JAAkC;;;IACpF,oEAAmD;IAAA,8EAAmB;IAAA,4DAAI;;;ADL3E,MAAM,gBAAgB;IAM3B;QAHS,kBAAa,GAAG,KAAK,CAAC;QACtB,YAAO,GAAG,KAAK,CAAC;IAET,CAAC;IAEjB,QAAQ;IACR,CAAC;IAED,aAAa;QACX,IAAI,UAAU,GAAG,EAAE,CAAC;QACpB,MAAM,SAAS,GAAG,IAAI,CAAC;QAEvB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;YAC9B,MAAM,OAAO,GAAG,CAAC,CAAC,KAAe,CAAC;YAClC,MAAM,OAAO,GAAG,CAAC,CAAC,KAAe,CAAC;YAClC,MAAM,IAAI,GAAG,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAW,CAAC;YAC5D,MAAM,IAAI,GAAG,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAW,CAAC;YAC5D,OAAO,IAAI,GAAG,IAAI,CAAC;QACrB,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,GAAG,EAAE,EAAE;YACzC,IAAI,IAAI,CAAC,OAAO,EAAE;gBAChB,IAAI,OAAO,CAAC,KAAK,KAAK,2EAA6B,EAAE;oBACnD,UAAU,GAAG,GAAG,UAAU,6DAA6D,OAAO,CAAC,KAAK,KAAK,OAAO,CAAC,KAAK,KAAK,OAAO,CAAC,KAAK,cAAc,CAAC,GAAG,KAAK,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,SAAS,CAAC;iBACtQ;qBAAM;oBACL,UAAU,GAAG,GAAG,UAAU,8BAA8B,OAAO,CAAC,KAAK,KAAK,OAAO,CAAC,KAAK,UAAU,CAAC,GAAG,KAAK,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,SAAS,CAAC;iBACjN;aACF;iBAAM;gBACL,UAAU,GAAG,GAAG,UAAU,GAAG,OAAO,CAAC,KAAK,KAAK,OAAO,CAAC,KAAK,UAAU,SAAS,EAAE,CAAC;aACnF;YAED,gGAAgG;YAChG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;gBACjB,IAAI,GAAG,KAAK,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,GAAG,SAAS,CAAC,MAAM,CAAC,EAAE;oBACtF,UAAU,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC,EAAE,UAAU,CAAC,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC;iBAC5E;gBAAA,CAAC;aACH;QACH,CAAC,CAAC,CAAC;QAEH,uDAAuD;QACvD,IAAI,UAAU,KAAK,EAAE,EAAE;YACrB,UAAU,GAAG,iBAAiB,CAAC;SAChC;QAED,OAAO,UAAU,CAAC;IACpB,CAAC;;gFAhDU,gBAAgB;8GAAhB,gBAAgB;QCR7B,yEACkF;QAChF,yEAC8E;QAC5E,8EAA2E;QACzE,kFAAiB;QACf,oFAA6C;QAC3C,uDACF;QAAA,4DAAiB;QACnB,4DAAkB;QAClB,sFAA0C;QACxC,wGAAwG;QACxG,wGAAyF;QACzF,wGAA0E;QAC5E,4DAAmB;QACrB,4DAAW;QACb,4DAAM;QACR,4DAAM;;QAdmB,0DAAsD;QAAtD,6JAAsD;QAIrE,0DACF;QADE,kIACF;QAGI,0DAA4B;QAA5B,uFAA4B;QAC5B,0DAA4C;QAA5C,sGAA4C;QAC5C,0DAA6C;QAA7C,uGAA6C;;;;;;;;;;;;;;;;;ACblD,MAAM,gBAAgB;;AACX,2BAAU,GAAG,YAAY,CAAC;AAC1B,0BAAS,GAAG,WAAW,CAAC;AACxB,2BAAU,GAAG,YAAY,CAAC;AAC1B,2BAAU,GAAG,OAAO,CAAC;AACrB,qBAAI,GAAG,MAAM,CAAC;AACd,uBAAM,GAAG,SAAS,CAAC;AACnB,uBAAM,GAAG,QAAQ,CAAC;AAClB,sBAAK,GAAG,OAAO,CAAC;AAChB,sBAAK,GAAG,OAAO,CAAC;AAChB,qBAAI,GAAG,MAAM,CAAC;AACd,0BAAS,GAAG,WAAW,CAAC;AACxB,wBAAO,GAAG,SAAS,CAAC;AACpB,wBAAO,GAAG,SAAS,CAAC;AACpB,qBAAI,GAAG,MAAM,CAAC;AACd,2BAAU,GAAG;IACvB,SAAS,EAAE,oBAAoB;IAC/B,KAAK,EAAE,YAAY;IACnB,SAAS,EAAE,WAAW;IACtB,SAAS,EAAE,WAAW;CACzB,CAAC;AACY,6BAAY,GAAG,gBAAgB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;ACX3C,MAAM,uBAAuB;IAOlC,YACS,iBAAoC;QAApC,sBAAiB,GAAjB,iBAAiB,CAAmB;QANpC,eAAU,GAAW,SAAS,CAAC;QAExC,aAAQ,GAAuB,EAAE,CAAC;IAK9B,CAAC;IAEL,QAAQ;QACN,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE,EAAE;YAC/D,IAAI,IAAI,EAAE;gBACR,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;aACtB;QACH,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,cAAc,EAAE,CAAC;IACxB,CAAC;IAED,WAAW;QACT,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC7B,IAAI,CAAC,iBAAiB,CAAC,UAAU,EAAE,CAAC;QACpC,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;IAC5B,CAAC;IAED,QAAQ,CAAC,SAAiB;QACxB,IAAI,SAAS,IAAI,IAAI,CAAC,UAAU,KAAK,SAAS,EAAE;YAC9C,IAAI,CAAC,iBAAiB,CAAC,eAAe,CAAC,SAAS,EAAE,SAAS,EAAE,mBAAmB,CAAC,CAAC;SACnF;aAAM,IAAI,SAAS,IAAI,IAAI,CAAC,UAAU,KAAK,UAAU,EAAE;YACtD,IAAI,CAAC,iBAAiB,CAAC,eAAe,CAAC,SAAS,EAAE,UAAU,EAAE,oBAAoB,CAAC,CAAC;SACrF;IACH,CAAC;IAED,cAAc;QACZ,IAAI,CAAC,QAAQ,GAAG,WAAW,CAAC,GAAG,EAAE;YAC/B,OAAO,CAAC,GAAG,CAAC,YAAY,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;YACtE,IAAI,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,QAAQ,EAAE,EAAE;gBAC9C,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;gBAC9B,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;aAC9B;YACD,OAAO,CAAC,GAAG,CAAC,kBAAkB,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;YAChD,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAChC,CAAC,EAAE,KAAK,CAAC,CAAC;IACZ,CAAC;;8FA7CU,uBAAuB;qHAAvB,uBAAuB;QCVpC,yEAEuB;QACrB,yEAAmC;QACjC,6EACe;;QACjB,4DAAM;QACN,yEAAwB;QACtB,6EACe;;QACjB,4DAAM;QACN,yEAAwB;QACtB,6EACe;;QACjB,4DAAM;QACN,0EAAwB;QACtB,8EACqD;;QACvD,4DAAM;QACR,4DAAM;;QAfY,0DAAoD;QAApD,sKAAoD;QAIpD,0DAAoD;QAApD,sKAAoD;QAIpD,0DAAoD;QAApD,sKAAoD;QAIpD,0DAAsB;QAAtB,+EAAsB;;;;;;;;;;;;;;;;;;;;;;;;;ACdwB;AAIqC;;;;;AAK9F,MAAM,iBAAiB;IAK5B,YACU,WAAwB,EACxB,GAAe,EACf,MAA4B;QAF5B,gBAAW,GAAX,WAAW,CAAa;QACxB,QAAG,GAAH,GAAG,CAAY;QACf,WAAM,GAAN,MAAM,CAAsB;QAPtC,aAAQ,GAAwC,IAAI,iDAAe,CAAqB,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC;QAC/G,aAAQ,GAA6B,IAAI,iDAAe,CAAU,KAAK,CAAC,CAAC;IAOrE,CAAC;IAEL,eAAe,CAAC,SAAiB,EAAE,MAAc,EAAE,MAAc;QAC/D,IAAI,CAAC,GAAG,CAAC,IAAI,CAAM,MAAM,EAAE,MAAM,EAAE,CAAC,SAAS,CAAC,EAAE,IAAI,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE;;YACpE,IAAI,GAAG,IAAI,gBAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,MAAM,0CAAE,KAAK,0CAAE,MAAM,MAAK,sEAAwB,EAAE;gBAClE,uBAAuB;gBACvB,IAAI,CAAC,WAAW,CAAC,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,MAAM,CAAC,CAAC;gBAC9B,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;aAC1B;iBAAM,IAAI,GAAG,IAAI,gBAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,MAAM,0CAAE,KAAK,0CAAE,MAAM,MAAK,sEAAwB,EAAE;gBACzE,0CAA0C;gBAC1C,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;aAC3B;iBAAM;gBACL,eAAe;gBACf,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;aAC3B;QACH,CAAC,EAAE,GAAG,CAAC,EAAE;YACP,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YACvB,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACnB,eAAe;YACf,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC5B,CAAC,CAAC,CAAC;IACL,CAAC;IAEK,WAAW,CAAC,OAAY;;YAC5B,MAAM,QAAQ,GAAuB,EAAE,CAAC;YAExC,iBAAiB;YACjB,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,OAAO,EACpD,yEAA2B,EAC3B,mEAAqB,EACrB,mFAAqC,CACtC,CAAC;YAEF,aAAa;YACb,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,OAAO,EACjD,yEAA2B,EAC3B,mEAAqB,EACrB,+EAAiC,CAClC,CAAC;YAEF,YAAY;YACZ,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,OAAO,EACpD,yEAA2B,EAC3B,mEAAqB,EACrB,mFAAqC,CACtC,CAAC;YAEF,YAAY;YACZ,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,OAAO,EACpD,wEAA0B,EAC1B,mEAAqB,EACrB,mFAAqC,CACtC,CAAC;YAEF,kBAAkB;YAClB,QAAQ,CAAC,SAAS,GAAG,YAAY,CAAC;YAClC,QAAQ,CAAC,KAAK,GAAG,SAAS,CAAC;YAC3B,QAAQ,CAAC,SAAS,GAAG,YAAY,CAAC;YAClC,QAAQ,CAAC,SAAS,GAAG,YAAY,CAAC;YAElC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC/B,CAAC;KAAA;IAEa,cAAc,CAAC,OAAY,EAAE,OAAe,EAAE,QAAgB,EAAE,KAAa;;;YACzF,kEAAkE;YAClE,MAAM,QAAQ,GAAG,gCAAO,aAAP,OAAO,uBAAP,OAAO,CACvB,oEAAsB,CAAC,0CACvB,mEAAqB,CAAC,0CACtB,OAAO,CAAC,0CACR,oEAAsB,CAAC,0CACvB,QAAQ,CAAC,KAAI,IAAI,CAAC;YAEnB,+CAA+C;YAC/C,MAAM,OAAO,GAAoB,EAAE,KAAK,EAAE,CAAC;YAC3C,MAAM,KAAK,GAAgB,EAAE,CAAC;YAE9B,4CAA4C;YAC5C,IAAI,QAAQ,EAAE;gBACZ,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE;oBAC1B,MAAM,OAAO,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC;oBAC9B,IAAI,IAAe,CAAC;oBACpB,IAAI,OAAO,KAAK,yEAA2B,EAAE;wBAC3C,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC;wBACnD,IAAI,GAAG,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,CAAC,iBAAiB,CAAC,QAAO,aAAP,OAAO,uBAAP,OAAO,CAAG,wEAA0B,CAAC,KAAI,IAAI,CAAC,EAAE,CAAC;qBAC1G;yBAAM;wBACL,IAAI,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,iBAAiB,CAAC,QAAO,aAAP,OAAO,uBAAP,OAAO,CAAG,wEAA0B,CAAC,KAAI,IAAI,CAAC,EAAE,CAAC;qBACrG;oBACD,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;iBAClB;aACF;YAED,oCAAoC;YACpC,OAAO,CAAC,IAAI,GAAG,KAAK,CAAC;YAErB,OAAO,OAAO,CAAC;;KAChB;IAED,UAAU;QACR,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC;QAC1C,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC5B,CAAC;IAEO,iBAAiB,CAAC,KAAa;QACrC,OAAO,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,KAAK,GAAG,WAAW,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACjF,CAAC;IAEO,cAAc;QACpB,MAAM,QAAQ,GAAuB;YACnC,SAAS,EAAE,EAAE,KAAK,EAAE,mFAAqC,EAAE,IAAI,EAAE,EAAE,EAAE;YACrE,KAAK,EAAE,EAAE,KAAK,EAAE,+EAAiC,EAAE,IAAI,EAAE,EAAE,EAAE;YAC7D,SAAS,EAAE,EAAE,KAAK,EAAE,mFAAqC,EAAE,IAAI,EAAE,EAAE,EAAE;YACrE,SAAS,EAAE,EAAE,KAAK,EAAE,mFAAqC,EAAE,IAAI,EAAE,EAAE,EAAE;SACtE,CAAC;QAEF,OAAO,QAAQ,CAAC;IAClB,CAAC;IAEK,iBAAiB,CAAC,WAAmB;;YACzC,IAAI,OAAe,CAAC;YACpB,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC;YAC3D,IAAI,QAAQ,EAAE;gBACZ,OAAO,GAAG,GAAG,WAAW,YAAY,CAAC;aACtC;iBAAM;gBACL,OAAO,GAAG,WAAW,CAAC;aACvB;YAED,OAAO,OAAO,CAAC;QACjB,CAAC;KAAA;IAEK,iBAAiB,CAAC,WAAmB;;YACzC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;gBACpB,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC;gBAC7E,IAAI,CAAC,UAAU,GAAG,GAAG,CAAC,YAAY,CAAC,CAAC,WAAW,CAAC,CAAC;aAClD;YAED,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE;gBAC1C,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,WAAW,CAAC;YACtC,CAAC,CAAC,CAAC;YAEH,IAAI,KAAK,IAAI,KAAK,CAAC,SAAS,CAAC,KAAK,KAAK,EAAE;gBACvC,OAAO,IAAI,CAAC;aACb;iBAAM;gBACL,OAAO,KAAK,CAAC;aACd;QACH,CAAC;KAAA;;kFAzJU,iBAAiB;kHAAjB,iBAAiB,WAAjB,iBAAiB,mBAFhB,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACNqG;AAChC;AACA;AACF;AACa;AACQ;AAEU;AAEhD;AACK;AAM1C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ICyBnB,wFAE0C;IADxC,2WAAqC;IAEvC,6DAAe;;IAH2B,yFAA+B;;;IAyBzE,uEAA8B;IAC5B,2EAA0E;IAAA,sEAAU;IAAA,6DAAM;IAC1F,2EAA0D;IAAA,wDAA0B;IAAA,6DAAM;IAC1F,2EAA0E;IAAA,qFAAyB;IAAA,6DAAM;IACzG,2EAA0D;IAAA,wDAC1D;IAAA,6DAAM;IACR,6DAAM;;;IAJsD,2DAA0B;IAA1B,wFAA0B;IAE1B,2DAC1D;IAD0D,uGAC1D;;;IAEF,sEAAqD;;;IAErD,uEAA8B;IAC5B,2EAA2B;IAAA,qEAAS;IAAA,6DAAM;IAC1C,2EAAgF;IAC9E,wDAAmE;;IAAA,6DAAM;IAC7E,6DAAM;;;IADF,2DAAmE;IAAnE,mTAAmE;;;IAI3E,2EAAiF;IAC/E,2EAA2B;IAAA,wEAAY;IAAA,6DAAM;IAC7C,2EAA6D;IAAA,wDAA2C;;IAAA,6DAAM;IAC9G,2EAA2B;IAAA,yEAAa;IAAA,6DAAM;IAC9C,2EAA6D;IAAA,wDAA4C;;IAAA,6DAAM;IACjH,6DAAM;;;IAHyD,2DAA2C;IAA3C,sKAA2C;IAE3C,2DAA4C;IAA5C,wKAA4C;;;;IAwBrG,sEAAwC;IACtC,6FACkF;IAAnD,6XAAkD;IACjF,6DAAoB;IACtB,6DAAK;;;;IAH0B,2DAAqB;IAArB,mFAAqB;;;IAFtD,0EAA+C;IAC7C,sHAIK;IACP,6DAAK;;;IALsB,2DAAa;IAAb,uFAAa;;;IAO1C,uEAAiC;IAC/B,2EAAuD;IAAA,4GACvD;IAAA,6DAAM;IACR,6DAAM;;;IAuBJ,sEAAqD;;;;IA0BnD,sEAAqC;IACnC,uFAC4C;IAA1C,6WAAyC;IAAC,6DAAc;IAC5D,6DAAK;;;;IAFmB,2DAAmB;IAAnB,iFAAmB;;;IAF7C,0EAA6C;IAC3C,sHAGK;IACP,6DAAK;;;IAJqB,2DAAW;IAAX,sFAAW;;;IAMvC,uEAA+B;IAC7B,2EAAuD;IAAA,yGAA6C;IAAA,6DAAM;IAC5G,6DAAM;;;;IA0CF,sEAAsC;IACpC,2FACwF;IAAzD,oYAAwD;IACvF,6DAAkB;IACpB,6DAAK;;;;IAH2B,2DAAmB;IAAnB,iFAAmB;;;IAFrD,0EAAkD;IAChD,sHAIK;IACP,6DAAK;;;IALiB,2DAAgB;IAAhB,2FAAgB;;;IAMtC,uEAAoC;IAClC,2EAAuD;IAAA,8GAC7C;IAAA,6DAAM;IAClB,6DAAM;;;;IAqBJ,sEAAoC;IAClC,0FACsF;IAAvD,iYAAsD;IACrF,6DAAiB;IACnB,6DAAK;;;;IAHyB,2DAAkB;IAAlB,gFAAkB;;;IAFlD,0EAAgD;IAC9C,uHAIK;IACP,6DAAK;;;IALiB,2DAAc;IAAd,yFAAc;;;IAMpC,uEAAkC;IAChC,2EAAuD;IAAA,6GACvD;IAAA,6DAAM;IACR,6DAAM;;;IAiCA,sEAAmC;IACjC,iGAC6B;IAC/B,6DAAK;;;IAFoC,2DAAiB;IAAjB,+EAAiB;;;IAVhE,uEAAgC;IAC9B,2EAAuC;IAAA,2EAAe;IAAA,6DAAM;IAC5D,uEAAK;IACH,0FACsB;IACxB,6DAAM;IACN,uEAAK;IACH,2EAAyB;IAAA,2EAAe;IAAA,6DAAM;IAC9C,0EAAkB;IAChB,0HAGK;IACP,6DAAK;IACP,6DAAM;IACR,6DAAM;;;IAZ4B,2DAAiC;IAAjC,mGAAiC;IAMtC,2DAAU;IAAV,qFAAU;;;IAOvC,uEAA6B;IAC3B,2EAAuD;IAAA,iHAEvD;IAAA,6DAAM;IACR,6DAAM;;;;;;;ADvRb,MAAM,oBAAoB;IAgC/B,YACU,KAAqB,EACrB,GAAe,EACf,YAA0B,EAC1B,MAAiB,EAClB,WAAiC,EAChC,MAAc;QALd,UAAK,GAAL,KAAK,CAAgB;QACrB,QAAG,GAAH,GAAG,CAAY;QACf,iBAAY,GAAZ,YAAY,CAAc;QAC1B,WAAM,GAAN,MAAM,CAAW;QAClB,gBAAW,GAAX,WAAW,CAAsB;QAChC,WAAM,GAAN,MAAM,CAAQ;QA9BxB,YAAO,GAAU,EAAE,CAAC;QACpB,WAAM,GAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;QAC7B,aAAQ,GAAU,EAAE,CAAC;QACrB,YAAO,GAAQ,EAAE,CAAC;QAClB,eAAU,GAAU,EAAE,CAAC;QACvB,UAAK,GAAU,EAAE,CAAC;QAClB,kBAAa,GAAU,EAAE,CAAC;QAC1B,gBAAW,GAAU,EAAE,CAAC;QACxB,iBAAY,GAAQ,EAAE;QAOtB,eAAU,GAAG,KAAK,CAAC;QACnB,cAAS,GAAG,KAAK,CAAC;QAElB,gBAAW,GAAG,SAAS,CAAC;IAapB,CAAC;IAXL,IAAI,WAAW;QACb,OAAO,IAAI,CAAC,OAAO,CAAC,gGAAkB,CAAC,IAAI,EAAE,CAAC;IAChD,CAAC;IAWD,QAAQ;QACN,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE;YACxC,IAAI,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;YACtB,IAAI,EAAE,IAAI,SAAS;gBACjB,OAAO;YAET,IAAI,GAAG,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC;YAEvB,yBAAyB;YACzB,IAAI,CAAC,GAAG,CAAC,IAAI,CAAM,SAAS,EAAE,KAAK,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE;gBAC9D,IAAI,OAAO,IAAI,OAAO,CAAC,MAAM,EAAE;oBAC7B,IAAI,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;oBACxB,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;iBACzB;YACH,CAAC,CAAC,CAAC;YAEH,aAAa;YACb,IAAI,CAAC,GAAG,CAAC,IAAI,CAAM,UAAU,EAAE,SAAS,EAAE,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE;gBAC/E,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC;gBAC1B,IAAI,CAAC,cAAc,EAAE,CAAC;YACxB,CAAC,CAAC,CAAC;YAEH,0BAA0B;YAC1B,IAAI,CAAC,GAAG,CAAC,IAAI,CAAM,SAAS,EAAE,eAAe,EAAE,GAAG,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE;gBACrE,IAAI,CAAC,cAAc,GAAG,MAAM,CAAC;gBAC7B,IAAI,CAAC,qBAAqB,CAAC,MAAM,CAAC,CAAC;YACrC,CAAC,CAAC,CAAC;YAEH,0CAA0C;YAC1C,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC;QAGpB,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,QAAQ,EAAE,CAAC;IAClB,CAAC;IAED,eAAe;QACb,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,eAAe,IAAI,CAAC,MAAM,CAAC,EAAE,SAAS,CAAC,CAAC;IACpE,CAAC;IAED,eAAe,CAAC,IAAY;QAC1B,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC;QACnB,OAAO,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;IAC/B,CAAC;IAED,UAAU,CAAC,MAAW;;QACpB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QAErB,IAAI,CAAC,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAChE,IAAI,CAAC,MAAM,CAAC,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAElE,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;QAClB,IAAI,CAAC,OAAO,CAAC,gGAAkB,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;QACpD,IAAI,CAAC,OAAO,CAAC,gGAAkB,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC;QAClE,IAAI,CAAC,OAAO,CAAC,kGAAoB,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC;QACtE,IAAI,CAAC,OAAO,CAAC,qGAAuB,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC;QAC5E,IAAI,CAAC,OAAO,CAAC,iGAAmB,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC;QACpE,IAAI,CAAC,OAAO,CAAC,sGAAwB,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,iBAAiB,CAAC;QAE9E,uBAAuB;QACvB,IAAI,CAAC,YAAY,CAAC,iGAAmB,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC;QACzE,IAAI,CAAC,YAAY,CAAC,sGAAwB,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,iBAAiB;QAElF,sBAAsB;QACtB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,iBAAiB,CAAC,uFAAkB,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QACpF,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC,sBAAsB,CAAC,uFAAkB,EAAE,IAAI,CAAC,YAAY,CAAC;QAElG,MAAM;QACN,IAAI,CAAC,cAAc,GAAG,iBAAI,CAAC,MAAM,0CAAE,MAAM,0CAAE,gBAAgB,KAAI,IAAI,CAAC;QAEpE,WAAW;QACX,IAAI,CAAC,QAAQ,GAAG,iBAAI,CAAC,MAAM,0CAAE,MAAM,0CAAE,QAAQ,KAAI,EAAE,CAAC;QAEpD,MAAM,eAAe,GAAG,EAAE,CAAC;QAC3B,eAAe,CAAC,qGAAuB,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,qGAAuB,CAAC,CAAC;QAEjF,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACtC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAEzC,OAAO;QACP,IAAI,CAAC,aAAa,EAAE,CAAC;QAErB,qBAAqB;QACrB,IAAI,CAAC,YAAY,EAAE,CAAC;QAEpB,uBAAuB;QACvB,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,EAAE,CAAC,CAAC;IACpC,CAAC;IAGD,cAAc;QACZ,IAAI,IAAI,CAAC,UAAU,EAAE;YACnB,6BAA6B;YAC7B,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;YACrC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;SACtB;aAAM;YACL,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;SACxB;IACH,CAAC;IAED,qBAAqB,CAAC,IAAS;QAC7B,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;QAClB,IAAI,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;QAG/B,KAAK,IAAI,GAAG,IAAI,SAAS,EAAE;YAEzB,SAAS,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;gBAE/B,IAAI,aAAa,GAAG;oBAClB,aAAa,EAAE,EAAE;oBACjB,UAAU,EAAE,EAAE;oBACd,aAAa,EAAE,CAAC;oBAChB,YAAY,EAAE,CAAC;iBAChB;gBAED,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;oBACvB,aAAa,CAAC,aAAa,GAAG,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC;oBACxD,aAAa,CAAC,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC;oBACpD,aAAa,CAAC,aAAa,GAAG,aAAa,CAAC,aAAa,GAAG,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC;oBACxF,aAAa,CAAC,YAAY,GAAG,aAAa,CAAC,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC;gBACvF,CAAC,CAAC,CAAC;gBACH,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;YACnC,CAAC,CAAC,CAAC;SAEJ;QACD,IAAI,CAAC,WAAW,EAAE,CAAC;IACrB,CAAC;IAED,aAAa;QACX,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACtB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,+HAAsB,EAAE;YACxD,KAAK,EAAE,MAAM;YACb,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,WAAW,EAAE,SAAS,EAAE,yBAAyB,EAAE,WAAW,EAAE,qBAAqB,EAAE;YAC7G,YAAY,EAAE,IAAI;SACnB,CAAC,CAAC;QAEH,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE;YAC5C,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;YACtB,IAAI,IAAI,EAAE;gBACR,0BAA0B;gBAC1B,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;gBACxB,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;gBACrC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;aACtB;YAED,IAAI,CAAC,aAAa,EAAE,CAAC;QACvB,CAAC,CAAC,CAAC;IACL,CAAC;IAED,UAAU;QACR,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;QACxB,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACtC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAC3C,CAAC;IAED,aAAa;QACX,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;QACvB,IAAI,CAAC,SAAS,EAAE,CAAC;IACnB,CAAC;IAED,aAAa;QACX,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,KAAK,OAAO,EAAE;YAC5K,MAAM,OAAO,GAAiB;gBAC5B,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE;gBAClB,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI;gBACtB,MAAM,EAAE;oBACN,QAAQ,oBAAQ,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAE;iBAC9C;aACF;YACD,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;SAC9B;IACH,CAAC;IAED,SAAS;QACP,UAAU,CAAC,GAAG,EAAE;YACd,IAAI,CAAC,aAAa,EAAE,CAAC;QACvB,CAAC,EAAE,GAAG,CAAC,CAAC;IACV,CAAC;IAED,aAAa;;QACX,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC;QAC9C,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC;QAC1C,IAAI,YAAY,GAAc,EAAE,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;QACzF,YAAY,CAAC,IAAI,GAAG,WAAW,CAAC,YAAY,CAAC;QAC7C,YAAY,CAAC,MAAM,CAAC,WAAW,GAAG,WAAW,CAAC,YAAY,CAAC;QAC3D,YAAY,CAAC,MAAM,CAAC,aAAa,GAAG,WAAW,CAAC,cAAc,CAAC;QAC/D,YAAY,CAAC,MAAM,CAAC,gBAAgB,GAAG,WAAW,CAAC,iBAAiB,CAAC;QACrE,YAAY,CAAC,MAAM,CAAC,YAAY,GAAG,SAAS,CAAC,aAAa,CAAC;QAC3D,YAAY,CAAC,MAAM,CAAC,iBAAiB,GAAG,SAAS,CAAC,kBAAkB,CAAC;QACrE,YAAY,CAAC,MAAM,CAAC,QAAQ,GAAG,iBAAI,CAAC,WAAW,0CAAE,MAAM,0CAAE,QAAQ,KAAI,EAAE,CAAC;QACxE,YAAY,CAAC,MAAM,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,IAAI,EAAE;QAElD,OAAO,YAAY,CAAC;IACtB,CAAC;IAED,UAAU;QACR,IAAI,aAAa,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,sHAAyB,EAAE;YAC9D,KAAK,EAAE,OAAO;YACd,IAAI,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,cAAc,EAAE,eAAe,EAAE,IAAI,CAAC,QAAQ,EAAE;YACtE,YAAY,EAAE,IAAI;SACnB,CAAC,CAAC;QAGH,aAAa,CAAC,WAAW,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE;YAC3C,IAAI,IAAI,EAAE;gBACR,0BAA0B;gBAC1B,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;gBAC1B,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;gBACrC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;aACtB;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAED,aAAa,CAAC,CAAC;QACb,IAAI,CAAC,EAAE;YACL,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC;YACzB,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;YACrC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;SACrB;IACH,CAAC;IAED,cAAc,CAAC,CAAC;QACd,IAAI,CAAC,EAAE;YACL,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC;YAC1B,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;YACrC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;SACrB;IACH,CAAC;IAED,WAAW;QACT,IAAI,cAAc,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,mIAA6B,EAAE;YACnE,KAAK,EAAE,OAAO;YACd,YAAY,EAAE,KAAK;YACnB,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE;SACrB,CAAC,CAAC;QAGH,cAAc,CAAC,WAAW,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE;YAC5C,IAAI,IAAI,EAAE;gBACR,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;aAC5B;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAED,MAAM,CAAC,GAAG;QACR,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,mGAAsB,EAAE;YACvD,KAAK,EAAE,OAAO;YACd,IAAI,EAAE,iBAAiB;YACvB,YAAY,EAAE,IAAI;SACnB,CAAC,CAAC;QAEH,IAAI,CAAC,GAAG,CAAC,IAAI,CAAM,SAAS,EAAE,QAAQ,EAAE,GAAG,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE;YAC3D,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE;gBACd,OAAO,CAAC,KAAK,EAAE,CAAC;gBAChB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,iGAAoB,EAAE;oBACrC,KAAK,EAAE,OAAO;oBACd,IAAI,EAAE,GAAG,CAAC,QAAQ;oBAClB,YAAY,EAAE,KAAK;iBACpB,CAAC,CAAC;gBACH,OAAO;aACR;YAED,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC;YAC3B,OAAO,CAAC,KAAK,EAAE,CAAC;YAEhB,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;YACxB,IAAI,CAAC,cAAc,EAAE,CAAC;YACtB,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,CAAC;QAEhC,CAAC,EAAE,GAAG,CAAC,EAAE;YACP,OAAO,CAAC,KAAK,EAAE,CAAC;YAChB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,iGAAoB,EAAE;gBACrC,KAAK,EAAE,OAAO;gBACd,IAAI,EAAE,CAAC,oBAAoB,EAAE,GAAG,CAAC,OAAO,CAAC;gBACzC,YAAY,EAAE,KAAK;aACpB,CAAC,CAAC;QACL,CAAC,CAAC;IACJ,CAAC;IAED,aAAa;QACX,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;IACxD,CAAC;IAED,YAAY,CAAC,IAAkB;QAC7B,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;IAC1B,CAAC;IAED,cAAc,CAAC,IAAS;QACtB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACzB,IAAI,CAAC,YAAY,EAAE,CAAC;IACtB,CAAC;IAED,eAAe,CAAC,IAAS;QACvB,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC;QAC1B,IAAI,CAAC,cAAc,EAAE,CAAC;IACxB,CAAC;IAED,iBAAiB,CAAC,IAAS;QACzB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,UAAU,GAAG;YAChD,OAAO,GAAG,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC;QAChC,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,YAAY,EAAE,CAAC;IACtB,CAAC;IAED,kBAAkB,CAAC,IAAS;QAC1B,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,UAAU,GAAG;YACpD,OAAO,GAAG,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC;QAChC,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,cAAc,EAAE,CAAC;IACxB,CAAC;IAED,WAAW;QACT,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;YAC9B,OAAO,CAAC,CAAC,aAAa,GAAG,CAAC,CAAC,aAAa,CAAC;QAC3C,CAAC,CAAC;IACJ,CAAC;IAED,YAAY;QACV,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;YAC/B,OAAO,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;QAClE,CAAC,CAAC,CAAC;IACL,CAAC;IAED,cAAc;QACZ,SAAS,cAAc,CAAC,KAAK;YAC3B,QAAQ,KAAK,EAAE;gBACb,KAAK,UAAU;oBACb,OAAO,CAAC,CAAC;gBACX,KAAK,SAAS;oBACZ,OAAO,CAAC,CAAC;gBACX,KAAK,aAAa;oBAChB,OAAO,CAAC,CAAC;gBACX,KAAK,WAAW;oBACd,OAAO,CAAC,CAAC;gBACX,KAAK,WAAW;oBACd,OAAO,CAAC,CAAC;gBAEX;oBACE,OAAO,CAAC,CAAC;aACZ;QACH,CAAC;QAED,IAAI,CAAC,UAAU,CAAC,IAAI,CAElB,+CAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;YACf,OAAO,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,WAAW,CAAC,CAAC;QACzC,CAAC,CAAC;aACC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;YACf,OAAO,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACjI,CAAC,CAAC;aACD,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;YACf,IAAI,IAAI,GAAG,cAAc,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC;YAC/C,IAAI,IAAI,GAAG,cAAc,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC;YAC/C,OAAO,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC7B,CAAC,CAAC,CACL,CAAC;IACJ,CAAC;IAED,eAAe;QACb,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC;IACnD,CAAC;IAED,iBAAiB;QACf,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC;IACrD,CAAC;IAED,sBAAsB,CAAC,IAAS;QAC9B,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;QAC/B,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAClB,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,GAAG,OAAO,GAAG,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,EAAC,CAAC,CAAC,CAAC;QAC/E,IAAI,SAAS,EAAE;YACb,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;YAC5B,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;SACxB;IACH,CAAC;IAED,qBAAqB,CAAC,IAAS;QAC7B,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,GAAG,OAAO,GAAG,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,EAAC,CAAC,CAAC,CAAC;QAC/E,IAAI,SAAS,EAAE;YACb,IAAI,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,mGAAsB,EAAE;gBACvD,KAAK,EAAE,OAAO;gBACd,IAAI,EAAE,EAAE,KAAK,EAAE,gBAAgB,EAAE,IAAI,EAAE,mKAAmK,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE;gBAC1O,YAAY,EAAE,KAAK;aACpB,CAAC,CAAC;YAGH,SAAS,CAAC,WAAW,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE;gBACvC,IAAI,IAAI,EAAE;oBACR,SAAS;oBACT,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;iBAC9B;qBAAM;oBACL,mBAAmB;iBACpB;YACH,CAAC,CAAC,CAAC;SACJ;IACH,CAAC;IAEK,YAAY,CAAC,IAAS;;YAC1B,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,mGAAsB,EAAE;gBACtD,KAAK,EAAE,OAAO;gBACd,IAAI,EAAE,oBAAoB;gBAC1B,YAAY,EAAE,IAAI;aACnB,CAAC,CAAC;YAEH,IAAI,GAAG,GAAG,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE;YAEzB,IAAI,CAAC,GAAG,CAAC,IAAI,CAAM,UAAU,EAAE,QAAQ,EAAE,GAAG,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE;gBAC5D,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE;oBACd,MAAM,CAAC,KAAK,EAAE,CAAC;oBACf,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,iGAAoB,EAAE;wBACrC,KAAK,EAAE,OAAO;wBACd,IAAI,EAAE,GAAG,CAAC,QAAQ;wBAClB,YAAY,EAAE,KAAK;qBACpB,CAAC,CAAC;oBACH,OAAO;iBACR;gBAED,IAAI,CAAC,eAAe,EAAE,CAAC;gBACvB,MAAM,CAAC,KAAK,EAAE,CAAC;YACjB,CAAC,EAAE,GAAG,CAAC,EAAE;gBACP,MAAM,CAAC,KAAK,EAAE,CAAC;gBACf,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,iGAAoB,EAAE;oBACrC,KAAK,EAAE,OAAO;oBACd,IAAI,EAAE,CAAC,oBAAoB,EAAE,GAAG,CAAC,OAAO,CAAC;oBACzC,YAAY,EAAE,KAAK;iBACpB,CAAC,CAAC;YACL,CAAC,CAAC;QACJ,CAAC;KAAA;IAED,eAAe;QACb,IAAI,CAAC,GAAG,CAAC,IAAI,CAAM,UAAU,EAAE,SAAS,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE;YAC1F,IAAI,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,MAAM,EAAE;gBACnB,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC;gBAC1B,IAAI,CAAC,cAAc,EAAE,CAAC;aACvB;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAGD,QAAQ,CAAC,KAAM;QACb,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,WAAW,CAAC;QACvC,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,UAAU,CAAC;QAErC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAE9B,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,EAAE;YAC5B,IAAI,CAAC,WAAW,GAAG,SAAS,CAAC;SAC9B;aAAM,IAAI,IAAI,CAAC,WAAW,GAAG,IAAI,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,EAAE;YAC9D,IAAI,CAAC,WAAW,GAAG,SAAS,CAAC;SAC9B;aAAM;YACL,IAAI,CAAC,WAAW,GAAG,SAAS,CAAC;SAC9B;IACH,CAAC;IAED,mCAAmC;IACnC,WAAW,CAAC,KAAY;QACtB,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;YACnB,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC;YACnB,OAAO,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAC5C,CAAC,CAAC,CAAC;IACL,CAAC;IAED,QAAQ,CAAC,GAAQ;QACf,IAAI,CAAC,GAAG,CAAC,IAAI,CAAM,MAAM,EAAE,SAAS,EAAE,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE;YAC3E,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC;YAErB,4CAA4C;YAC5C,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,UAAU,GAAG;gBAClD,OAAO,GAAG,CAAC,aAAa,KAAK,IAAI,CAAC;YACpC,CAAC,CAAC,CAAC;YAEH,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,UAAU,GAAG;gBAChD,OAAO,GAAG,CAAC,aAAa,KAAK,KAAK,CAAC;YACrC,CAAC,CAAC,CAAC;YAEH,IAAI,CAAC,iBAAiB,EAAE,CAAC;YACzB,IAAI,CAAC,eAAe,EAAE,CAAC;QAEzB,CAAC,CAAC,CAAC;IACL,CAAC;IAED,oBAAoB;QAClB,OAAO,IAAI,CAAC,aAAa,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC;IACxD,CAAC;IAED,kBAAkB;QAChB,OAAO,IAAI,CAAC,WAAW,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC;IACtD,CAAC;IAED,cAAc;QACZ,IAAI,iBAAiB,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,8GAAyB,EAAE;YAClE,KAAK,EAAE,OAAO;YACd,YAAY,EAAE,IAAI;YAClB,IAAI,EAAE,EAAE,WAAW,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE;SAC7D,CAAC,CAAC;QAGH,iBAAiB,CAAC,WAAW,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE;YAC/C,IAAI,IAAI,EAAE;gBACR,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;aACvB;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAED,aAAa;QACX,IAAI,gBAAgB,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,8GAAyB,EAAE;YACjE,KAAK,EAAE,OAAO;YACd,YAAY,EAAE,IAAI;YAClB,IAAI,EAAE,EAAE,WAAW,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,eAAe,EAAE,KAAK,EAAE;SAC9D,CAAC,CAAC;QAGH,gBAAgB,CAAC,WAAW,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE;YAC9C,IAAI,IAAI,EAAE;gBACR,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;aACvB;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAED,UAAU,CAAC,IAAS;QAClB,IAAI,YAAY,GAAQ,EAAE,CAAC;QAC3B,YAAY,CAAC,IAAI,GAAG,IAAI,CAAC,aAAa,KAAK,IAAI,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,YAAY,CAAC;QAC/E,YAAY,CAAC,YAAY,GAAG,IAAI,IAAI,CAAC;QACrC,YAAY,CAAC,MAAM,GAAG,EAAE,CAAC;QACzB,YAAY,CAAC,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QACrC,YAAY,CAAC,MAAM,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC;QACvD,YAAY,CAAC,MAAM,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;QAGnD,IAAI,CAAC,GAAG,CAAC,IAAI,CAAM,MAAM,EAAE,QAAQ,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,SAAS,EAAE,YAAY,EAAE,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE;YAC7G,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YACtB,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YACpB,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE;gBACjB,+CAA+C;gBAC/C,OAAO,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;aAChC;iBACI;gBACH,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;aAC/B;QACH,CAAC,EAAE,KAAK,CAAC,EAAE;YACT,oCAAoC;YACpC,OAAO,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;QACjC,CAAC,CAAC;IACJ,CAAC;IAED,wBAAwB,CAAC,IAAS;QAChC,MAAM,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,GAAG,OAAO,GAAG,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,EAAC,CAAC,CAAC,CAAC;QAClF,IAAI,SAAS,EAAE;YACb,IAAI,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,mGAAsB,EAAE;gBACvD,KAAK,EAAE,OAAO;gBACd,IAAI,EAAE,EAAE,KAAK,EAAE,gBAAgB,EAAE,IAAI,EAAE,mDAAmD,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE;gBAC1H,YAAY,EAAE,KAAK;aACpB,CAAC,CAAC;YAGH,SAAS,CAAC,WAAW,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE;gBACvC,IAAI,IAAI,EAAE;oBACR,SAAS;oBACT,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;iBAClC;qBAAM;oBACL,mBAAmB;iBACpB;YACH,CAAC,CAAC,CAAC;SACJ;IACH,CAAC;IAED,uBAAuB,CAAC,IAAS;QAC/B,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,GAAG,OAAO,GAAG,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,EAAC,CAAC,CAAC,CAAC;QAChF,IAAI,SAAS,EAAE;YACb,IAAI,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,mGAAsB,EAAE;gBACvD,KAAK,EAAE,OAAO;gBACd,IAAI,EAAE,EAAE,KAAK,EAAE,gBAAgB,EAAE,IAAI,EAAE,kDAAkD,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE;gBACzH,YAAY,EAAE,KAAK;aACpB,CAAC,CAAC;YAGH,SAAS,CAAC,WAAW,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE;gBACvC,IAAI,IAAI,EAAE;oBACR,SAAS;oBACT,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;iBAClC;qBAAM;oBACL,mBAAmB;iBACpB;YACH,CAAC,CAAC,CAAC;SACJ;IACH,CAAC;IAEK,gBAAgB,CAAC,IAAS;;YAC9B,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,mGAAsB,EAAE;gBACtD,KAAK,EAAE,OAAO;gBACd,IAAI,EAAE,oBAAoB;gBAC1B,YAAY,EAAE,IAAI;aACnB,CAAC,CAAC;YAEH,IAAI,GAAG,GAAG,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE;YAEzB,IAAI,CAAC,GAAG,CAAC,IAAI,CAAM,MAAM,EAAE,QAAQ,EAAE,GAAG,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE;gBACxD,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE;oBACd,MAAM,CAAC,KAAK,EAAE,CAAC;oBACf,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,iGAAoB,EAAE;wBACrC,KAAK,EAAE,OAAO;wBACd,IAAI,EAAE,GAAG,CAAC,QAAQ;wBAClB,YAAY,EAAE,KAAK;qBACpB,CAAC,CAAC;oBACH,OAAO;iBACR;gBAED,IAAI,CAAC,WAAW,EAAE,CAAC;gBACnB,MAAM,CAAC,KAAK,EAAE,CAAC;YACjB,CAAC,EAAE,GAAG,CAAC,EAAE;gBACP,MAAM,CAAC,KAAK,EAAE,CAAC;gBACf,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,iGAAoB,EAAE;oBACrC,KAAK,EAAE,OAAO;oBACd,IAAI,EAAE,CAAC,oBAAoB,EAAE,GAAG,CAAC,OAAO,CAAC;oBACzC,YAAY,EAAE,KAAK;iBACpB,CAAC,CAAC;YACL,CAAC,CAAC;QACJ,CAAC;KAAA;IAED,WAAW;QACT,IAAI,CAAC,GAAG,CAAC,IAAI,CAAM,MAAM,EAAE,SAAS,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE;YACtF,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;QAC/B,CAAC,CAAC,CAAC;IACL,CAAC;IAGD,iBAAiB;QACf,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;YACpC,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,YAAY,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC;QACjE,CAAC,CAAC,CAAC;IACL,CAAC;IAED,eAAe;QACb,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;YAClC,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,YAAY,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC;QACjE,CAAC,CAAC,CAAC;IACL,CAAC;;wFAzqBU,oBAAoB;mHAApB,oBAAoB;;;;;;;;;;;;;;qJAApB,oBAAgB;;QCzB7B,0EAAsB;QAGpB,0EAA+G;QAG7G,0EACsE;QAGpE,0EAAoG;QAClG,yEAA6B;QAAA,wDAAsB;QAAA,6DAAK;QAC1D,6DAAM;QAGN,6EAC8B;QAA5B,6IAAS,qBAAiB,IAAC;QAAC,4EAAgB;QAAA,6DAAS;QAGzD,6DAAM;QAGN,0EACkF;QAEhF,+EACwB;QAEtB,2EAC4F;QAE1F,gFAAsF;QACpF,oFAAiB;QACf,uFAA8D;QAAA,wEAAW;QAAA,6DAAiB;QAC1F,4EAA+F;QAC7F,gGAG2I;QAFzI,2KAAe,mBAAoB,IAAC,sHAAkB,mBAAoB,IAAtC,kHACrB,mBAAoB,IADC;QAGtC,6DAA0B;QAC5B,6DAAM;QACR,6DAAkB;QAClB,yFAA4C;QAC1C,sIAGe;QACjB,6DAAmB;QACrB,6DAAW;QACb,6DAAM;QAIN,4EACuB;QAErB,iFAA2E;QACzE,wFAAmD;QACjD,uFAAmC;QAAA,iFACnC;QAAA,6DAAiB;QACjB,4EAA+F;QAC7F,gGAEwC;QADtC,2KAAe,oBAAqB,IAAC,sHAAkB,gBAAiB,IAAnC,kHACtB,oBAAqB,IADC;QAEvC,6DAA0B;QAC5B,6DAAM;QACR,6DAAkB;QAClB,qFAAkB;QAChB,oHAMM;QACN,oHAAqD;QACrD,wFAAoG;QACpG,oHAIM;QACR,6DAAmB;QACrB,6DAAW;QACX,qHAKM;QACR,6DAAM;QACR,6DAAW;QACb,6DAAM;QAGN,2EACkF;QAEhF,4EAAyG;QACvG,iFAA0E;QACxE,wFAAmD;QACjD,uFAAmC;QAAA,wEACnC;QAAA,6DAAiB;QACjB,4EAC0E;QACxE,+EAAkG;QAAxB,8IAAS,iBAAa,IAAC;QAAC,kEAC7F;QAAA,6DAAS;QAChB,6DAAM;QACR,6DAAkB;QAClB,qFAAkB;QAChB,4EAAoE;QAClE,kHAMK;QACP,6DAAM;QACN,oHAGM;QACR,6DAAmB;QACrB,6DAAW;QACb,6DAAM;QAGN,4EACuB;QACrB,iFAA2E;QACzE,wFAAmD;QACjD,uFAAmC;QAAA,wFACnC;QAAA,6DAAiB;QACjB,4EAC+D;QAC7D,gGAEwC;QADtC,2KAAe,oBAAqB,IAAC,sHAAkB,gBAAiB,IAAnC,kHACtB,oBAAqB,IADC;QAEvC,6DAA0B;QAC5B,6DAAM;QACR,6DAAkB;QAClB,qFAAkB;QAChB,4EACmI;QACjI,oHAAqD;QACrD,wFAAuG;QACzG,6DAAM;QACR,6DAAmB;QACrB,6DAAW;QACb,6DAAM;QACR,6DAAM;QAGN,2EACkF;QAEhF,4EAAyG;QACvG,iFAA6D;QAC3D,wFAAmD;QACjD,uFAAmC;QAAA,8EACnC;QAAA,6DAAiB;QACjB,4EAC+D;QAC7D,+EAAiG;QAAvB,8IAAS,gBAAY,IAAC;QAAC,kEAC5F;QAAA,6DAAS;QAChB,6DAAM;QACR,6DAAkB;QAClB,qFAAkB;QAChB,4EAAiE;QAC/D,kHAKK;QACP,6DAAM;QACN,oHAEM;QACR,6DAAmB;QACrB,6DAAW;QACb,6DAAM;QAGN,4EAAyG;QACvG,iFAA6D;QAC3D,wFAAmD;QACjD,uFAAmC;QAAA,+EACnC;QAAA,6DAAiB;QACnB,6DAAkB;QAClB,qFAAkB;QAChB,4EAA6B;QAC3B,4FAA4F;QAC9F,6DAAM;QACR,6DAAmB;QACrB,6DAAW;QACb,6DAAM;QAGR,6DAAM;QAGN,2EACkF;QAGhF,4EAAyG;QACvG,iFAA0E;QACxE,oFAAiB;QACf,uFAAmC;QAAA,2EACnC;QAAA,6DAAiB;QACjB,4EAC0E;QACxE,+EAAqG;QAA3B,8IAAS,oBAAgB,IAAC;QAAC,kEAChG;QAAA,6DAAS;QAChB,6DAAM;QACR,6DAAkB;QAClB,qFAAkB;QAChB,4EAA8B;QAC5B,kHAMK;QACL,oHAGM;QACR,6DAAM;QACR,6DAAmB;QACrB,6DAAW;QACb,6DAAM;QAGN,4EAAyG;QACvG,iFAA0E;QACxE,oFAAiB;QACf,uFAAmC;QAAA,yEACnC;QAAA,6DAAiB;QACjB,4EAC0E;QACxE,+EAAoG;QAA1B,8IAAS,mBAAe,IAAC;QAAC,mEAC/F;QAAA,6DAAS;QAChB,6DAAM;QACR,6DAAkB;QAClB,sFAAkB;QAChB,6EAA8B;QAC5B,oHAMK;QACL,sHAGM;QACR,6DAAM;QACR,6DAAmB;QACrB,6DAAW;QACb,6DAAM;QAER,6DAAM;QAGN,4EACkF;QAChF,6EAAyG;QACvG,kFAA0E;QACxE,yFAAmD;QACjD,wFAAmC;QAAA,8EACjC;QAAA,6EAA0B;QACxB,wEAE2B;QAC7B,6DAAM;QACR,6DAAiB;QACnB,6DAAkB;QAClB,6EAAmC;QACjC,sFAAkB;QAChB,uHAeM;QACN,sHAIM;QACR,6DAAmB;QACrB,6DAAM;QACR,6DAAW;QACb,6DAAM;QAER,6DAAM;QAER,6DAAM;QAxTR,6DAAsB;;QAGyD,2DAAiC;QAAjC,sFAAiC;QAQ3E,2DAAsB;QAAtB,iFAAsB;QAuBX,4DAA4D;QAA5D,iLAA4D;QACnE,2DAA6B;QAA7B,sFAA6B;QAQzC,2DAAgB;QAAhB,iFAAgB;QAiBG,2DAA4D;QAA5D,iLAA4D;QACnE,2DAA8B;QAA9B,uFAA8B;QAOnD,2DAAsB;QAAtB,kFAAsB;QAOJ,2DAAqB;QAArB,iFAAqB;QAClB,2DAA8B;QAA9B,uFAA8B;QACnD,2DAAsB;QAAtB,kFAAsB;QAO1B,2DAAsB;QAAtB,kFAAsB;QAoBxB,2DAAuE;QAAvE,gMAAuE;QAMpE,2DAA8D;QAA9D,yKAA8D;QAC9C,2DAA0B;QAA1B,2FAA0B;QAQzC,2DAAyB;QAAzB,0FAAyB;QAgB7B,2DAA4D;QAA5D,iLAA4D;QACnC,2DAA8B;QAA9B,uFAA8B;QAQvD,2DAAgI;QAAhI,wOAAgI;QACxG,2DAAqB;QAArB,iFAAqB;QACpB,2DAA8B;QAA9B,uFAA8B;QAiBvD,2DAA4D;QAA5D,iLAA4D;QAMzD,2DAA2D;QAA3D,uKAA2D;QAC3C,2DAAwB;QAAxB,yFAAwB;QAOvC,2DAAuB;QAAvB,wFAAuB;QAgBI,2DAAqC;QAArC,2HAAqC;QAoBpE,2DAAuE;QAAvE,gMAAuE;QAOpD,2DAA6B;QAA7B,8FAA6B;QAO1C,2DAA4B;QAA5B,6FAA4B;QAgBlC,2DAAuE;QAAvE,gMAAuE;QAOpD,2DAA2B;QAA3B,4FAA2B;QAOxC,2DAA0B;QAA1B,2FAA0B;QAoB5B,2DAAsO;QAAtO,+RAAsO;QAOpO,2DAAwB;QAAxB,yFAAwB;QAgBxB,2DAAqB;QAArB,sFAAqB;;;;;;;;;;;;;;;;;;;;;ACrSlC,MAAM,gBAAgB;IAE3B,gBAAgB,CAAC;IAEjB,QAAQ;IACR,CAAC;;gFALU,gBAAgB;8GAAhB,gBAAgB;QCR7B,2EAA+B;;;;;;;;;;;;;;;;;;;;;;;;;ACQxB,MAAM,4BAA4B;IAEvC,YAAoB,SAAqD;QAArD,cAAS,GAAT,SAAS,CAA4C;IAAI,CAAC;IAE9E,QAAQ;IACR,CAAC;IAED,SAAS;QACP,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;IACzB,CAAC;;wGATU,4BAA4B;0HAA5B,4BAA4B;QCRzC,yEAAmG;QACjG,yEACwC;QACtC,sEAAK;QACH,oEAAG;QACD,mJACF;QAAA,4DAAI;QACN,4DAAM;QACR,4DAAM;QACR,4DAAM;QACN,yEAA6C;QAC3C,yEAAiF;QAC/E,4EAA+E;QAA5C,oJAAS,eAAW,IAAC;QAAuB,gEAAK;QAAA,4DAAS;QAC/F,4DAAM;QACR,4DAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACb6G;AAEvD;AACmB;AAGwB;;;;;;;;;;;;;;;;;;;;IC8G3F,iFAAwD;IACtD,uDACF;IAAA,4DAAa;;;IAFwB,8EAAkB;IACrD,0DACF;IADE,uFACF;;;;IA1GR,yEAOC;IACC,yEAA0C;IACxC,wEAA0C;IAAA,kEAAO;IAAA,4DAAK;IACxD,4DAAM;IAEN,yEAAuC;IACrC,oFAA4C;IAC1C,4EAAW;IAAA,gEAAK;IAAA,4DAAY;IAC5B,2EAOE;IACJ,4DAAiB;IACnB,4DAAM;IAEN,0EAAuC;IACrC,qFAA4C;IAC1C,6EAAW;IAAA,sEAAU;IAAA,4DAAY;IACjC,4EAOE;IACJ,4DAAiB;IACnB,4DAAM;IAEN,0EAAuC;IACrC,qFAA4C;IAC1C,6EAAW;IAAA,qEAAS;IAAA,4DAAY;IAChC,4EAOE;IACJ,4DAAiB;IACnB,4DAAM;IAiBN,2EAKC;IACC,uEAAK;IACH,8FAAiC;IAAA,iEAAM;IACvC,4GACA;IAAA,sEAAI;IACF,sEAAI;IAAA,iGAAqC;IAAA,4DAAK;IAC9C,sEAAI;IACF,4KAEF;IAAA,4DAAK;IACP,4DAAK;IACP,4DAAM;IACN,oFAIG;IAAA,iHACH;IAAA,4DAAe;IACf,sEAAqC;IACvC,4DAAM;IAEN,uEAAK;IACH,qFAA4C;IAC1C,6EAAW;IAAA,wEAAY;IAAA,4DAAY;IACnC,sFAKC;IACC,oIAEa;IACf,4DAAa;IACf,4DAAiB;IACnB,4DAAM;IAEN,2EAKC;IACC,uEAAK;IACH,sHACA;IAAA,yEAAwC;IAAA,gEAAI;IAAA,4DAAI;IAAC,6MAGnD;IAAA,4DAAM;IACR,4DAAM;IAEN,2EAA6D;IAC3D,2EAOC;IACC,8EAQC;IADC,wTAAoB;IAEpB,qEACF;IAAA,4DAAS;IACX,4DAAM;IACR,4DAAM;IACR,4DAAM;;;IAhIE,0DAAgC;IAAhC,gGAAgC;IAchC,0DAAgC;IAAhC,gGAAgC;IAchC,0DAA+B;IAA/B,+FAA+B;IAyCjC,2DAAiC;IAAjC,iGAAiC;IAa/B,0DAA8B;IAA9B,8FAA8B;IAGF,0DAAO;IAAP,gFAAO;IA4BrC,0DAAgC;IAAhC,gGAAgC;IAQ9B,0DAAuB;IAAvB,uFAAuB;;;IAS/B,0EAOC;IACC,wEAA0C;IAAA,qEAAU;IAAA,4DAAK;IACzD,yEAA2B;IAC7B,4DAAM;;;IAgCA,2EAAuD;IACrD,+FACF;IAAA,4DAAO;;;;IAhCb,0EAMC;IACC,yEAA0C;IACxC,wEAA0C;IAAA,wEAAa;IAAA,4DAAK;IAC9D,4DAAM;IACN,yEAA0C;IACxC,qEACuE;IACzE,4DAAM;IAMJ,oEAAG;IAAA,wIAA6E;IAAA,4DAAI;IACpF,oEAAG;IACD,uFACA;IAAA,4EAGG;IADD,sVAAsD;IACrD,wDACH;IAAA,4DAAO;IACP,0JAEA;IAAA,iEAAM;IACN,wHAEO;IACT,4DAAI;IACJ,qEAAG;IAAA,qEAAG;IACJ,uJACmB;IAAA,4DAAI;IACzB,4DAAI;IAGN,0EAA0C;IACxC,yEAAuE;IAAlB,gTAAiB;IAAC,yEAAa;IAAA,4DAAI;IAC1F,4DAAM;IACN,0EAA0C;IACxC,yEAA+C;IAAA,wEAAY;IAAA,4DAAI;IACjE,4DAAM;IACR,4DAAM;;;IArBG,2DACH;IADG,mGACH;IAIO,0DAAuB;IAAvB,0FAAuB;;;;IAkBpC,0EAMC;IACC,yEAA0C;IACxC,wEAA0C;IAAA,gFAAqB;IAAA,4DAAK;IACtE,4DAAM;IAEN,oEAAG;IACD,kNAGF;IAAA,4DAAI;IAEJ,oEAAG;IACD,gMAEF;IAAA,4DAAI;IAEJ,yEAA0C;IACxC,6EAAsC;IAAnB,qTAAkB;IAAC,iEAAK;IAAA,4DAAS;IACtD,4DAAM;IAEN,0EAA0C;IACxC,yEAA+C;IAAA,wEAAY;IAAA,4DAAI;IACjE,4DAAM;IACR,4DAAM;;ADhPV,iEAAiE;AACjE,IAAY,KAKX;AALD,WAAY,KAAK;IACf,mCAAK;IACL,mDAAa;IACb,iCAAI;IACJ,mCAAK;AACP,CAAC,EALW,KAAK,KAAL,KAAK,QAKhB;AAOM,MAAM,iBAAiB;IAuB5B,YACU,YAAiC,EACjC,GAAe,EACf,MAAiB,EACjB,IAA0B,EAC1B,MAAc;QAJd,iBAAY,GAAZ,YAAY,CAAqB;QACjC,QAAG,GAAH,GAAG,CAAY;QACf,WAAM,GAAN,MAAM,CAAW;QACjB,SAAI,GAAJ,IAAI,CAAsB;QAC1B,WAAM,GAAN,MAAM,CAAQ;QAlBxB,iCAAiC;QACjC,SAAI,GAAU,KAAK,CAAC,KAAK,CAAC;QAE1B,gDAAgD;QAChD,UAAK,GAAG,KAAK,CAAC;QAOd,sBAAiB,GAAG,KAAK,CAAC;IAQpB,CAAC;IAEP,QAAQ;QACN,IAAI,CAAC,GAAG,CAAC,GAAG,CAAiB,cAAc,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE;YAC/E,MAAM,CAAC,IAAI,CAAC,UAAS,CAAC,EAAC,CAAC;gBACtB,OAAO,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;YAClE,CAAC,CAAC,CAAC;YACH,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC;QACrB,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,gBAAgB,GAAG,IAAI,uDAAW,CAAC,EAAE,EAAE;YAC1C,+DAAmB;YACnB,4DAAgB;SACjB,CAAC,CAAC;QAEH,IAAI,CAAC,gBAAgB,GAAG,IAAI,uDAAW,CAAC,EAAE,EAAE;YAC1C,+DAAmB;SACpB,CAAC,CAAC;QAEH,IAAI,CAAC,eAAe,GAAG,IAAI,uDAAW,CAAC,EAAE,EAAE;YACzC,+DAAmB;SACpB,CAAC,CAAC;QAEH,IAAI,CAAC,iBAAiB,GAAG,IAAI,uDAAW,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;QACjD,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QAEvC,IAAI,CAAC,cAAc,GAAG,IAAI,uDAAW,CAAC,EAAE,EAAE,EAAE,CAAC;QAC7C,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,uBAAuB,CAAC;IACvD,CAAC;IAED,eAAe;QACb,uEAAuE;QACvE,UAAU,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,gBAAgB,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC;IAC9E,CAAC;IAED,WAAW;QACT,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,CAAC;QAC/B,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IACxC,CAAC;IAED,wDAAwD;IACxD,OAAO;QACL,OAAO,IAAI,CAAC,gBAAgB,CAAC,KAAK;YAChC,IAAI,CAAC,gBAAgB,CAAC,KAAK;YAC3B,IAAI,CAAC,eAAe,CAAC,KAAK;YAC1B,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC;IAC9B,CAAC;IAED,WAAW;QACT,OAAO,IAAI,CAAC,cAAc,CAAC,KAAK,KAAK,uBAAuB,IAAI,IAAI,CAAC,iBAAiB,CAAC,KAAK,KAAK,IAAI,CAAC;IACxG,CAAC;IAED,QAAQ;QACN,IAAG,CAAC,IAAI,CAAC,WAAW,EAAE,EACtB;YACE,uEAAuE;YACvE,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,aAAa,CAAC;YAGhC,2CAA2C;YAC3C,IAAI,EAAE,GAAqB,IAAI,mEAAgB,EAAE,CAAC;YAElD,EAAE,CAAC,KAAK,GAAG,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC;YAEvC,EAAE,CAAC,KAAK,GAAG,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC;YACvC,EAAE,CAAC,IAAI,GAAG,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC;YACrC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC;YAEnC,+EAA+E;YAC/E,eAAe;YACf,8FAA8F;YAE9F,EAAE,CAAC,MAAM;gBACP,OAAO,IAAI,CAAC,iBAAiB,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC;YAE3F,yDAAyD;YACzD,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,MAAM,EAAE,EAAE;gBACtD,2GAA2G;gBAC3G,IAAI,MAAM,CAAC,KAAK,EAAE;oBAChB,IAAI,CAAC,iBAAiB,GAAG,MAAM,CAAC,iBAAiB,CAAC;oBAClD,+DAA+D;oBAC/D,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;iBACxB;qBACI;oBACH,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;oBACpB,6CAA6C;oBAC7C,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC;iBACzB;YACH,CAAC,CAAC,CAAC;SAEJ;aAAM;YACL,IAAI,CAAC,WAAW,EAAE,CAAC;YACnB,IAAI,CAAC,UAAU,EAAE,CAAC;SACnB;IAGH,CAAC;IAED,gEAAgE;IAChE,MAAM;QACJ,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC;IAC1B,CAAC;IAED,UAAU;QACR,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,gHAA4B,EAAE;YAC/D,KAAK,EAAE,OAAO;YACd,IAAI,EAAE,EAAE;SACT,CAAC,CAAC;QAEH,SAAS,CAAC,WAAW,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE;YACzC,aAAa;QACf,CAAC,CAAC,CAAC;IACL,CAAC;IAED,KAAK;QACH,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE;YACtC,2BAA2B;YAC3B,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QAC9B,CAAC,CAAC,CAAC;IACL,CAAC;IAED,eAAe,CAAC,KAAa;QAC3B,MAAM,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;QAClD,MAAM,CAAC,KAAK,CAAC,QAAQ,GAAG,OAAO,CAAC;QAChC,MAAM,CAAC,KAAK,CAAC,IAAI,GAAG,GAAG,CAAC;QACxB,MAAM,CAAC,KAAK,CAAC,GAAG,GAAG,GAAG,CAAC;QACvB,MAAM,CAAC,KAAK,CAAC,OAAO,GAAG,GAAG,CAAC;QAC3B,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC;QACrB,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QAClC,MAAM,CAAC,KAAK,EAAE,CAAC;QACf,MAAM,CAAC,MAAM,EAAE,CAAC;QAChB,QAAQ,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QAC7B,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QAElC,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;QAC9B,UAAU,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,iBAAiB,GAAG,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,oCAAoC;IAC9F,CAAC;;kFArKU,iBAAiB;+GAAjB,iBAAiB;kEAiBd,sEAAY;;;;;QCzC5B,yEAGC;QACC,8EAQC;QACC,8GAmJM;QAEN,6GAUM;QAEN,8GA8CM;QAEN,8GA6BM;QACR,4DAAW;QACb,4DAAM;;QA1OC,0DAAyB;QAAzB,6FAAyB;QAoJzB,0DAAiC;QAAjC,qGAAiC;QAYjC,0DAAwB;QAAxB,4FAAwB;QAgDxB,0DAAyB;QAAzB,6FAAyB;;;;;;;;;;;;;;;;;;;;;;;;AC/NiB;;;;AAIjD,wDAAwD;AACjD,MAAM,gBAAgB;IAe3B;QACE,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;IAC1B,CAAC;CACF;AAEM,MAAM,kBAAkB;CAE9B;AAED,qDAAqD;AAC9C,MAAM,UAAU;CAItB;AAED,kDAAkD;AAI3C,MAAM,mBAAmB;IAI9B,YAAoB,GAAgB,EAAU,MAA4B;QAAtD,QAAG,GAAH,GAAG,CAAa;QAAU,WAAM,GAAN,MAAM,CAAsB;QAHlE,gBAAW,GAAgD,IAAI,+CAAa,CAA+B,CAAC,CAAC,CAAC;QAC9G,8BAAyB,GAAkD,IAAI,+CAAa,CAAiC,CAAC,CAAC,CAAC;IAGxI,CAAC;IAEM,YAAY,CAAC,IAAsB;QACxC,IAAI,CAAC,WAAW,GAAG,IAAI,+CAAa,CAA+B,CAAC,CAAC,CAAC;QACtE,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC,SAAS,CAAC,CAAC,MAAM,EAAE,EAAE;YAE3C,IAAI,CAAC,GAAG,CAAC,IAAI,CAA+B,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE;gBAC3F,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC;YAC5B,CAAC,EAAE,GAAG,CAAC,EAAE;gBACP,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;gBACjB,IAAI,CAAC,WAAW,CAAC,IAAI,CACnB;oBACE,KAAK,EAAE,KAAK;oBACZ,MAAM,EAAE,IAAI;iBACb,CAAC;YACN,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,OAAO,IAAI,CAAC,WAAW,CAAC;IAC1B,CAAC;IAEM,cAAc,CAAC,IAAwB;QAC5C,IAAI,CAAC,yBAAyB,GAAG,IAAI,+CAAa,CAAiC,CAAC,CAAC,CAAC;QACtF,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC,SAAS,CAAC,CAAC,MAAM,EAAE,EAAE;YAE3C,IAAI,CAAC,GAAG,CAAC,IAAI,CAA+B,MAAM,EAAE,gBAAgB,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE;gBACjG,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,GAAG,CAAC;YAC1C,CAAC,EAAE,GAAG,CAAC,EAAE;gBACP,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;gBACjB,IAAI,CAAC,yBAAyB,CAAC,IAAI,CACjC;oBACE,KAAK,EAAE,KAAK;oBACZ,MAAM,EAAE,IAAI;iBACb,CAAC;YACN,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,OAAO,IAAI,CAAC,yBAAyB,CAAC;IACxC,CAAC;;sFA3CU,mBAAmB;oHAAnB,mBAAmB,WAAnB,mBAAmB,mBAFlB,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;ACpCb,MAAM,mBAAmB;IAmB9B,YAAoB,IAA0B,EAAU,EAAc;QAAlD,SAAI,GAAJ,IAAI,CAAsB;QAAU,OAAE,GAAF,EAAE,CAAY;IACtE,CAAC;IAnBD,QAAQ;QACN,IAAI,IAAI,CAAC,aAAa,IAAI,SAAS,EAAE;YACnC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;gBACzB,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YAE9C,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE;gBAEpC,IAAI,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC;oBACvD,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;qBAC5C;oBACH,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;iBAC7C;YACH,CAAC,CAAC;SACH;IACH,CAAC;;sFAfU,mBAAmB;iHAAnB,mBAAmB;AA4BzB,MAAM,mBAAmB;IAmB9B,YAAoB,IAA0B,EAAU,EAAc;QAAlD,SAAI,GAAJ,IAAI,CAAsB;QAAU,OAAE,GAAF,EAAE,CAAY;IACtE,CAAC;IAnBD,QAAQ;QACN,IAAI,IAAI,CAAC,aAAa,IAAI,SAAS,EAAE;YACnC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;gBACzB,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YAE9C,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE;gBAEpC,IAAI,IAAI,CAAC,aAAa,IAAI,KAAK,CAAC,IAAI,CAAC,YAAY,IAAI,KAAK,CAAC,IAAI,CAAC,YAAY,KAAK,uBAAuB;oBACtG,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;qBAC5C;oBACH,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;iBAC7C;YACH,CAAC,CAAC;SACH;IACH,CAAC;;sFAfU,mBAAmB;iHAAnB,mBAAmB;AA4BzB,MAAM,uBAAuB;IAmBlC,YAAoB,IAA0B,EAAU,EAAc;QAAlD,SAAI,GAAJ,IAAI,CAAsB;QAAU,OAAE,GAAF,EAAE,CAAY;IACtE,CAAC;IAnBD,QAAQ;QACN,IAAI,IAAI,CAAC,OAAO,IAAI,SAAS,EAAE;YAC7B,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;gBACzB,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YAE9C,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE;gBAEpC,IAAI,IAAI,CAAC,OAAO,IAAI,KAAK,CAAC,IAAI,CAAC,YAAY,IAAI,KAAK,CAAC,IAAI,CAAC,YAAY,KAAK,IAAI,CAAC,OAAO;oBACrF,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;qBAC5C;oBACH,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;iBAC7C;YACH,CAAC,CAAC;SACH;IACH,CAAC;;8FAfU,uBAAuB;qHAAvB,uBAAuB;AA4B7B,MAAM,6BAA6B;IAkCxC,YAAoB,IAA0B,EAAU,EAAc;QAAlD,SAAI,GAAJ,IAAI,CAAsB;QAAU,OAAE,GAAF,EAAE,CAAY;IACtE,CAAC;IAlCD,QAAQ;QACN,IAAI,CAAC,KAAK,EAAE,CAAC;IACf,CAAC;IAED,WAAW,CAAC,MAAqB;QAC/B,IAAI,CAAC,KAAK,EAAE,CAAC;IACf,CAAC;IAEO,KAAK;QACX,IAAI,IAAI,CAAC,mBAAmB,IAAI,SAAS,EAAE;YACzC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;gBACzB,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YAE9C,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE;gBAEpC,IACE,IAAI,CAAC,mBAAmB;oBACxB,IAAI,CAAC,mBAAmB,CAAC,MAAM,KAAK,CAAC;oBACrC,KAAK,CAAC,IAAI;oBACV,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC;oBAChD,KAAK,CAAC,IAAI,CAAC,YAAY;oBACvB,KAAK,CAAC,IAAI,CAAC,YAAY,KAAK,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC;oBAEvD,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;qBAC5C;oBACH,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;iBAC7C;YACH,CAAC,CAAC;SACH;IACH,CAAC;;0GA9BU,6BAA6B;2HAA7B,6BAA6B;AA4CnC,MAAM,qBAAqB;IA2ChC,YAAoB,IAA0B,EAAU,EAAc;QAAlD,SAAI,GAAJ,IAAI,CAAsB;QAAU,OAAE,GAAF,EAAE,CAAY;IACtE,CAAC;IA3CD,QAAQ;QACN,IAAI,CAAC,KAAK,EAAE,CAAC;IACf,CAAC;IAED,WAAW,CAAC,MAAqB;QAC/B,IAAI,CAAC,KAAK,EAAE,CAAC;IACf,CAAC;IAEO,KAAK;QACX,IAAI,IAAI,CAAC,wBAAwB,IAAI,SAAS,EAAE;YAC9C,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;gBACzB,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YAE9C,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE;gBACpC,IAAI,QAAQ,GAAG,EAAE,CAAC;gBAClB,IAAI,IAAI,CAAC,wBAAwB,CAAC,MAAM,IAAI,CAAC,IAAI,IAAI,CAAC,wBAAwB,CAAC,CAAC,CAAC,EAAE;oBACjF,QAAQ,GAAG,IAAI,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;wBACvD,OAAO,IAAI,CAAC,IAAI,CAAC;oBACnB,CAAC,CAAC,CAAC;iBACJ;gBAED,IACE,IAAI,CAAC,wBAAwB;oBAC7B,IAAI,CAAC,wBAAwB,CAAC,MAAM,KAAK,CAAC;oBAC1C,KAAK,CAAC,IAAI;oBACV,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC;oBACrD,CACE,KAAK,CAAC,IAAI,CAAC,YAAY;wBACvB,CAAC,KAAK,CAAC,IAAI,CAAC,YAAY,KAAK,IAAI,CAAC,wBAAwB,CAAC,CAAC,CAAC;4BAC3D,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAC9C,EACD;oBACA,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;iBAChD;qBAAM;oBACL,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;iBAC7C;YACH,CAAC,CAAC;SACH;IACH,CAAC;;0FAvCU,qBAAqB;mHAArB,qBAAqB;AAqD3B,MAAM,sBAAsB;IAqBjC,YAAoB,IAA0B,EAAU,EAAc;QAAlD,SAAI,GAAJ,IAAI,CAAsB;QAAU,OAAE,GAAF,EAAE,CAAY;IACtE,CAAC;IArBD,QAAQ;QACN,IAAI,IAAI,CAAC,aAAa,IAAI,SAAS,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE;YACpE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE;gBAC3B,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;aAC7C;YAED,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE;gBACpC,KAAK,IAAI,GAAG,IAAI,IAAI,CAAC,aAAa,EAAE;oBAClC,IAAI,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;wBAC1C,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;wBAC/C,OAAO;qBACR;iBACF;gBACD,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YAC9C,CAAC,CAAC;SACH;IACH,CAAC;;4FAjBU,sBAAsB;oHAAtB,sBAAsB;;;;;;;;;;;;;;;;;;;;;;ACpL5B,MAAM,iBAAiB;IAE5B,YAAoB,MAAc,EAAU,IAA0B;QAAlD,WAAM,GAAN,MAAM,CAAQ;QAAU,SAAI,GAAJ,IAAI,CAAsB;IAAI,CAAC;IAC3E,WAAW,CAAC,IAA4B,EAAE,KAA0B;QAClE,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;YACxD,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE;gBAC3B,OAAO,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC;gBACtC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,cAAc,CAAC,EAAE,EAAE,WAAW,EAAE,EAAE,UAAU,EAAE,KAAK,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;gBACnF,OAAO,KAAK,CAAC;aACd;YAED,IAAI,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;YAEjC,IAAI,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;gBACzB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,YAAY,IAAI,KAAK,CAAC,IAAI,CAAC,YAAY,KAAK,uBAAuB,EAAE;oBACnF,OAAO,KAAK,CAAC;iBACd;aACF;YAED,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC;gBACvC,OAAO,KAAK,CAAC;YAEf,KAAK,IAAI,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI;gBAC5B,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;oBAC7B,OAAO,CAAC,GAAG,CAAC,iCAAiC,EAAE,GAAG,CAAC;oBACnD,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC;oBACnC,OAAO,KAAK,CAAC;iBACd;YAEH,OAAO,IAAI,CAAC;SACb;QAED,OAAO,IAAI,CAAC;IACd,CAAC;;kFAjCU,iBAAiB;kHAAjB,iBAAiB,WAAjB,iBAAiB,mBAFhB,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACLkC;AAEC;AAEa;AACF;AACf;AACQ;AACF;AACM;AACY;AACiB;AACd;AACT;AACZ;AACG;AACN;AACY;AACR;AACJ;AACc;AACL;AAC4B;AACN;AACnB;AAC6B;AACN;AAChC;AACoB;AACM;AACI;AACJ;AACG;;;AAE/E,MAAM,MAAM,GAAG,0EAAgB,CAAC;AAGvC,MAAM,MAAM,GAAW;IACrB,EAAE,IAAI,EAAE,EAAE,EAAE,SAAS,EAAE,+DAAa,EAAE;IACtC;QACE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,gEAAa,EAAE,QAAQ,EAC7C;YACE,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,4DAAY,EAAE;YACxC;gBACE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,8EAAiB,EAAE,WAAW,EAAE,CAAC,oEAAiB,CAAC,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC,aAAa,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE;aACjI;YACD;gBACE,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,yEAAgB;gBAC5C,QAAQ,EAAE;oBACR,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,qGAAsB,EAAE,WAAW,EAAE,CAAC,oEAAiB,CAAC,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC,gBAAgB,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,EAAE;oBAC9I,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,+FAAoB,EAAE,WAAW,EAAE,CAAC,oEAAiB,CAAC,EAAE,IAAI,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,EAAE;iBACjH;aACF;YACD;gBACE,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,mEAAc;gBACxC,QAAQ,EAAE;oBACR,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,uFAAkB,EAAE;oBAC/C,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,6FAAoB,EAAE;iBACpD;aACF;YACD;gBACE,IAAI,EAAE,UAAU,EAAE,SAAS,EAAE,4EAAiB;gBAC9C,QAAQ,EAAE;oBACR,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,yGAAuB,EAAE,WAAW,EAAE,CAAC,oEAAiB,CAAC,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC,iBAAiB,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,EAAE;oBAChJ,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,mGAAqB,EAAE,WAAW,EAAE,CAAC,oEAAiB,CAAC,EAAE,IAAI,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,EAAE;iBAClH;aACF;YACD;gBACE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,6FAAsB;gBACjD,QAAQ,EAAE;oBACR,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,6FAAsB,EAAE;oBAClD,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,6FAAsB,EAAE;iBACpD;aACF;YACD;gBACE,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,kEAAc,EAAE,QAAQ,EAChD,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,wEAAc,EAAE;oBAC7C,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,iGAAsB,EAAE,CAAC;aACvD;YACD;gBACE,IAAI,EAAE,WAAW,EAAE,SAAS,EAAE,+EAAkB,EAAE,QAAQ,EACxD,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,qGAAqB,EAAE;oBAC9C,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,uFAAiB,EAAE;iBACjD;aACJ;SACF;KACJ;IACD,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,mEAAc,EAAE;IAC5C,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,sEAAe,EAAE;IAC9C,EAAE,IAAI,EAAE,UAAU,EAAE,SAAS,EAAE,2EAAiB,EAAE;IAClD,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,gGAAuB,EAAE;IACtD,EAAE,IAAI,EAAE,aAAa,EAAE,SAAS,EAAE,oFAAoB,EAAE;IACxD,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,gEAAa,EAAE;IAC1C,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,6EAAiB,EAAE;CAC7C,CAAC;AAGF,MAAM,UAAU,GAAW;IACzB,EAAE,IAAI,EAAE,UAAU,EAAE,SAAS,EAAE,4EAAiB,EAAE;CACnD;AAED,IAAI,MAAM,EAAE;IACV,KAAK,IAAI,GAAG,IAAI,UAAU;QACxB,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;CACvB;AAMM,MAAM,gBAAgB;;gFAAhB,gBAAgB;8GAAhB,gBAAgB;kHAHlB,CAAC,kEAAoB,CAAC,MAAM,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,EAChD,0DAAY;oIAEX,gBAAgB,qFAFjB,0DAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IE1GtB,uEAC4F;IAC1F,uDAAgB;IAAA,4DAAI;;;;IAFQ,8EAAkB;IAE9C,0DAAgB;IAAhB,0FAAgB;;ADIb,MAAM,kBAAkB;IAY7B,YAAoB,MAAc;QAAd,WAAM,GAAN,MAAM,CAAQ;QAVlC,UAAK,GACH;YACE,EAAE,IAAI,EAAE,UAAU,EAAE,GAAG,EAAE,aAAa,EAAE,IAAI,EAAE,WAAW,EAAE,aAAa,EAAE,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE;YAC1G,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,EAAE,YAAY,EAAE,IAAI,EAAE,UAAU,EAAE,aAAa,EAAE,EAAE,EAAE,OAAO,EAAE,UAAU,EAAE;YAChG,EAAE,IAAI,EAAE,eAAe,EAAE,GAAG,EAAE,YAAY,EAAE,IAAI,EAAE,oBAAoB,EAAE,aAAa,EAAE,CAAC,qBAAqB,CAAC,EAAE,OAAO,EAAE,WAAW,EAAE;YACtI,EAAE,IAAI,EAAE,gBAAgB,EAAE,GAAG,EAAE,eAAe,EAAE,IAAI,EAAE,iBAAiB,EAAE,aAAa,EAAE,CAAC,kBAAkB,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE;YACjI,EAAE,IAAI,EAAE,mBAAmB,EAAE,GAAG,EAAE,eAAe,EAAE,IAAI,EAAE,kBAAkB,EAAE,aAAa,EAAE,EAAE,EAAE,OAAO,EAAE,cAAc,EAAE;YACzH,EAAE,IAAI,EAAE,mBAAmB,EAAE,GAAG,EAAE,cAAc,EAAE,IAAI,EAAE,iBAAiB,EAAE,aAAa,EAAE,EAAE,EAAE,OAAO,EAAE,aAAa,EAAE;SACvH;IAEmC,CAAC;IAEvC,QAAQ;IACR,CAAC;IAED,MAAM,CAAC,IAAU;QACf,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC;YACxC,OAAO,IAAI,CAAC;QAEd,KAAK,IAAI,IAAI,IAAI,IAAI,CAAC,aAAa,EAAE;YACnC,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC;gBACnC,OAAO,IAAI,CAAC;SACf;QAED,OAAO,KAAK,CAAC;IAEf,CAAC;;oFA5BU,kBAAkB;gHAAlB,kBAAkB;QCR/B,yEAC6B;QAC3B,0GAEsB;QACxB,4DAAM;;QAHgB,0DAAQ;QAAR,8EAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;IEF9B,4EAAsG;IAAtE,qTAAiB;IACzC,qEACR;IAAA,4DAAS;;;IACT,uEAAsD;IAClD,uDACJ;IAAA,4DAAI;;;IADA,0DACJ;IADI,0GACJ;;;IACA,uEAAyC;IAAA,kEAAO;IAAA,4DAAI;;ADE7C,MAAM,kBAAkB;IAI7B,YAAoB,aAAoC;QAApC,kBAAa,GAAb,aAAa,CAAuB;QAFxD,gBAAW,GAAY,eAAe,CAAC;QAIrC,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,EAAE;YAC5C,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC;QAClC,CAAC,CAAC,CAAC;IACL,CAAC;IAED,QAAQ;IACR,CAAC;IAED,KAAK;QACH,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE,CAAC,SAAS,CAAC,CAAC,KAAK,EAAE,EAAE;QAGnD,CAAC,CAAC;IACJ,CAAC;IAED,MAAM;QACJ,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC;IAC9B,CAAC;IAED,UAAU;QACR,OAAO,IAAI,CAAC,aAAa,CAAC,UAAU,EAAE,CAAC;IACzC,CAAC;IAED,WAAW;QACT,OAAO,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC,OAAO,EAAE,IAAI,IAAI,CAAC,WAAW,CAAC;IACrE,CAAC;IAED,KAAK;QAEH,OAAO,IAAI,CAAC;IACd,CAAC;;oFApCU,kBAAkB;gHAAlB,kBAAkB;QCR/B,oHAES;QACT,0GAEI;QACJ,0GAAoD;;QAND,kGAA4B;QAG3E,0DAA2B;QAA3B,iGAA2B;QAG3B,0DAAc;QAAd,8EAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACN6D;AACtB;AACL;AAEoB;AAMY;AACF;AAEM;;;;;;;;;;;;;;ICVxF,yEAAqD;IACnD,iGAA+G;IAAxD,uVAAgC;IACrF,wFAA8E;IAAA,sEAAW;IAAA,4DAAoB;IAC7G,wFAAwE;IAAA,iEAAM;IAAA,4DAAoB;IAClG,wFAAyE;IAAA,kEAAO;IAAA,4DAAoB;IACpG,wFAAsE;IAAA,sEAAU;IAAA,4DAAoB;IACtG,4DAA0B;IAC5B,4DAAM;;;IAEN,0EAA4D;IAC1D,uDAIF;IAAA,4DAAM;;;IAJJ,0DAIF;IAJE,+ZAIF;;;;IAGE,6EACwB;IAD2D,qUAAyB;IACpF,wEAAa;IAAA,4DAAS;;;;IAC9C,6EACmF;IAAjF,uUAA2B;IAAsD,iEAAM;IAAA,4DAAS;;IAD9B,yFAAgC;;;;IAEpG,6EACmD;IAAlC,6UAAiC;IAAC,+DAAI;IAAA,4DAAS;;IADZ,yFAAgC;;;;IAEpF,6EACuB;IAArB,gUAAoB;IAAC,iEAAM;IAAA,4DAAS;;;;IACtC,6EAC6C;IAA5B,uUAA2B;IAAC,+DAAI;IAAA,4DAAS;;;IAV5D,0EAA4D;IAC1D,yHAC8C;IAC9C,yHACkG;IAClG,yHACgE;IAChE,yHACsC;IACtC,yHAC0D;IAC5D,4DAAM;;;IATD,0DAAmB;IAAnB,sFAAmB;IAES,0DAAkD;IAAlD,mIAAkD;IACK,0DAAuC;IAAvC,iHAAuC;IAExE,0DAAmB;IAAnB,sFAAmB;IAEnB,0DAAsC;IAAtC,gHAAsC;;;;IAI7F,0EAOgC;IAD9B,wTAAwB,IAAI,IAAC,8PACN,KAAK,IADC;IAN/B,4DAOgC;;;IAgBtB,wEAAuF;IACrF,iFAAqB;IAAA,4DAAI;;;;IAG3B,6EACoC;IAAlC,yVAAiC;IAAC,qEAAU;IAAA,4DAAS;;;;IACvD,6EACoC;IAAlC,yVAAiC;IAAC,gFAAqB;IAAA,4DAAS;;;;IAClE,6EAC0B;IAAxB,+UAAuB;IAAC,wEAAa;IAAA,4DAAS;;;;IAlBtD,+EAA6D;IAC3D,qFAA8B;IAC5B,0EAAiD;IAC/C,oEAAG;IAAA,uDAA4D;;IAAA,4DAAI;IACnE,6EAAsF;IAArB,kUAAoB;IAAC,4DAAC;IAAA,4DAAS;IAClG,4DAAM;IACR,4DAAiB;IACjB,uFAA6C;IAC3C,0EAAgF;IAC9E,4HAC2B;IAC3B,8EAC8B;IAA5B,0UAA2B;IAAC,gEAAI;IAAA,4DAAS;IAC3C,sIACuD;IACvD,sIACkE;IAClE,sIACgD;IAClD,4DAAM;IACR,4DAAmB;IACrB,4DAAW;;;IAlBF,0DAA4D;IAA5D,4NAA4D;IAMK,0DAAiB;IAAjB,qFAAiB;IAEjC,0DAAwB;IAAxB,yFAAwB;IAEvB,0DAAiB;IAAjB,qFAAiB;IAEjB,0DAAgB;IAAhB,oFAAgB;IAEhB,0DAAgB;IAAhB,oFAAgB;;;IArB/E,0EAAqD;IAEnD,mEAA8C;IAC9C,0EAAiD;IAC/C,8HAqBW;IACb,4DAAM;IAER,4DAAM;;IAxB+C,0DAAU;IAAV,sEAAU;;ADtBxD,MAAM,gBAAgB;IAiD3B,YACU,UAAsB,EACtB,MAAyB,EACzB,QAAmC,EACnC,MAAiB;QAHjB,eAAU,GAAV,UAAU,CAAY;QACtB,WAAM,GAAN,MAAM,CAAmB;QACzB,aAAQ,GAAR,QAAQ,CAA2B;QACnC,WAAM,GAAN,MAAM,CAAW;QApD3B,qBAAqB;QACZ,cAAS,GAAuC,CAAC,CAAC,iBAAiB,EAAE,iBAAiB,CAAC,CAAC,CAAC,4BAA4B;QACrH,gBAAW,GAAW,CAAC,CAAC;QACxB,YAAO,GAAW,EAAE,CAAC;QACrB,YAAO,GAAW,CAAC,CAAC;QACpB,kBAAa,GAAuD,CAAC,CAAC,kBAAkB,EAAE,iBAAiB,EAAE,CAAC,iBAAiB,EAAE,iBAAiB,CAAC,CAAC;QACpJ,0BAAqB,GAAY,KAAK,CAAC;QACvC,cAAS,GAAG,OAAO,CAAC;QACpB,gBAAW,GAAW,SAAS,CAAC;QAChC,cAAS,GAAW,oBAAoB,CAAC;QACzC,gBAAW,GAAW,qBAAqB,CAAC;QAC5C,iBAAY,GAAG,KAAK,CAAC;QAE9B,UAAU;QACA,iBAAY,GAAG,IAAI,uDAAY,EAAgB,CAAC;QAChD,oBAAe,GAAG,IAAI,uDAAY,EAAW,CAAC;QAKhD,oBAAe,GAAG,KAAK,CAAC;QAEhC,cAAc;QACd,kBAAa,GAAY,KAAK,CAAC;QAC/B,WAAM,GAAW,IAAI,+CAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAE3C,gBAAW,GAAG,oDAAW,CAAC;QAU1B,gBAAW,GAAG,KAAK,CAAC;QACpB,kBAAa,GAAG,KAAK,CAAC;QACtB,WAAM,GAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;QAQ7B,aAAQ,GAAG,KAAK,CAAC;IAOb,CAAC;IAEL,QAAQ;QACN,IAAI,CAAC,OAAO,EAAE,CAAC;QAEf,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,UAAU,CAAC,gBAAgB,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE;YACxE,IAAI,MAAM,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE;gBACnC,0BAA0B;gBAC1B,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC;gBAC5B,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;gBAC5B,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;gBAClC,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,eAAe,CAAC,CAAC;aAC/C;iBAAM,IAAI,MAAM,EAAE;gBACjB,+DAA+D;aAChE;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAED,UAAU;QACR,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;IAC3B,CAAC;IAED,SAAS;QACP,OAAO,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;IACjC,CAAC;IAED,OAAO;QACL,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;IAChC,CAAC;IAED,OAAO;QACL,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QACpG,UAAU,CAAC,GAAG,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,aAAa,EAAE,EAAC,CAAC,EAAE,GAAG,CAAC,CAAC;QAE3D,IAAI,CAAC,iBAAiB,EAAE,CAAC;IAC3B,CAAC;IAEO,iBAAiB;QACvB,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;QAEvB,IAAI,GAAG,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC;QAE1B,IAAI,GAAG,GAAG,IAAI,EAAE,CAAC,OAAO,CAAC,YAAY,CAAC;YACpC,MAAM,EAAE,IAAI,CAAC,aAAa;SAC3B,CAAC,CAAC;QAEH,GAAG,CAAC,cAAc,GAAG,GAAG,CAAC,YAAY,CAAC;QACtC,IAAI,IAAI,GAAG,IAAI,CAAC;QAEhB,kBAAkB;QAClB,GAAG,CAAC,kBAAkB,GAAG;YACvB,IAAI,EAAE,GAAG,QAAQ,CAAC,iBAAiB,CAAC,YAAY,CAAC,CAAC;YAClD,IAAI,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;YACvB,IAAI,EAAE,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC;YAEtB,IAAI,OAAO,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;YAC3B,IAAI,EAAE,CAAC,MAAM;gBACX,OAAO,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC;YAElC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,EAAE;gBACzB,IAAI,EAAE,EAAE,CAAC,OAAO,EAAE;gBAClB,QAAQ,EAAE,IAAI;gBACd,OAAO,EAAE,OAAO;aACjB,CAAC,CAAC;YAGH,iCAAiC;YACjC,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,EAAE;gBACxF,IAAI,GAAG,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;gBACvE,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;aAC3B;QACH,CAAC;QAED,IAAI,EAAE,GAAG,IAAI,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QACnD,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC;QAE/B,IAAI,8BAA8B,GAAG,QAAQ,CAAC,cAAc,CAAC,uBAAuB,CAAC,CAAC;QACtF,IAAI,CAAC,gCAAgC,GAAG,8BAA8B,CAAC,YAAY,CAAC;QAEpF,IAAI,sBAAsB,GAAG,QAAQ,CAAC,cAAc,CAAC,eAAe,CAAC,CAAC;QACtE,IAAI,CAAC,4BAA4B,GAAG,sBAAsB,CAAC,YAAY,CAAC;QAExE,IAAI,CAAC,qBAAqB,GAAG,IAAI,EAAE,CAAC,OAAO,CAAC;YAC1C,OAAO,EAAE,8BAA8B;YACvC,WAAW,EAAE,eAAe;YAC5B,OAAO,EAAE;gBACP,MAAM,EAAE,EAAE;aACX;SACF,CAAC,CAAC;QAEH,IAAI,CAAC,aAAa,GAAG,IAAI,EAAE,CAAC,OAAO,CAAC;YAClC,OAAO,EAAE,sBAAsB;YAC/B,WAAW,EAAE,eAAe;YAC5B,OAAO,EAAE;gBACP,MAAM,EAAE,EAAE;aACX;SACF,CAAC,CAAC;QAEH,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;QAC3C,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IAErC,CAAC;IAED,aAAa,CAAC,CAAC;QACb,QAAQ,CAAC,CAAC,KAAK,EAAE;YACf,KAAK,MAAM;gBACT,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,eAAe,CAAC,CAAC;gBAC9C,MAAM;YACR,KAAK,QAAQ;gBACX,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,sBAAsB,CAAC,CAAC;gBACrD,MAAM;YACR,KAAK,SAAS;gBACZ,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,kBAAkB,CAAC,CAAC;gBACjD,MAAM;YACR,KAAK,MAAM;gBACT,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,qBAAqB,CAAC,CAAC;gBACpD,MAAM;YACR;gBACE,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,eAAe,CAAC,CAAC;gBAC9C,MAAM;SACT;IACH,CAAC;IAED,eAAe;QACb,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;QAC1B,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IAChD,CAAC;IAED,iBAAiB;QACf,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;QAC3B,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IAChD,CAAC;IAED,qBAAqB;QAEnB,IAAI,CAAC,aAAa,EAAE,CAAC;QAErB,IAAI,CAAC,eAAe,EAAE,CAAC;QAEvB,IAAI,mBAAmB,CAAC;QACxB,mCAAmC;QACnC,MAAM,CAAC,MAAM,EAAE,CAAC,eAAe,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,UAAU,WAAW;YACxE,IAAI,WAAW,YAAY,EAAE,CAAC,WAAW,CAAC,eAAe,EAAE;gBACzD,mBAAmB,GAAG,WAAW,CAAC;aACnC;QACH,CAAC,CAAC,CAAC;QAEH,kBAAkB;QAClB,IAAI,mBAAmB;YACrB,MAAM,CAAC,MAAM,EAAE,CAAC,iBAAiB,CAAC,mBAAmB,CAAC,CAAC;QAGzD,IAAI,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,mBAAmB,EAAE,CAAC;QAE7C,IAAI,CAAC,IAAI,CAAC,UAAU;YAClB,IAAI,CAAC,UAAU;gBACb,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QACrD,IAAI,CAAC,WAAW,GAAG,sFAAmB,CAAC;IACzC,CAAC;IAED,eAAe;QAEb,IAAI,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,gGAAqB,EAAE;YACtD,KAAK,EAAE,OAAO;YACd,YAAY,EAAE,KAAK;SACpB,CAAC,CAAC;QAEH,SAAS,CAAC,WAAW,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE;YACvC,IAAI,IAAI,EAAE;gBACR,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;oBACrB,IAAI,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;oBAEhD,IAAI,IAAI,CAAC,UAAU;wBACjB,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC;oBAEhC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;gBACvE,CAAC,CAAC,CAAC;aACJ;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAED,kBAAkB,CAAC,QAAQ;QACzB,+GAA+G;QAC/G,IAAI,CAAC,QAAQ;YAAE,OAAO;QAEtB,IAAI,IAAI,CAAC,UAAU;YACjB,IAAI,CAAC,WAAW,EAAE,CAAC;QAErB,IAAI,CAAC,UAAU,GAAG,QAAQ,CAAC;QAE3B,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAEzB,IAAI,CAAC,eAAe,EAAE,CAAC;QAEvB,IAAI,CAAC,IAAI,CAAC,SAAS;YAAE,OAAO,CAAC,iBAAiB;QAE9C,IAAI,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,CAAC,cAAc,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QAErE,IAAI,CAAC,IAAI;YACP,yBAAyB;YACzB,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC;QAErD,IAAI,CAAC,IAAI,EAAE;YACT,OAAO;SACR;QAED,IAAI,IAAI,CAAC,UAAU;YACjB,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC;QAEhC,IAAI,CAAC,UAAU;YACb,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAE3E,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;IAE3B,CAAC;IAED,aAAa,CAAC,IAAS,EAAE,OAAkB;QACzC,IAAI,EAAE,GAAG,QAAQ,CAAC,iBAAiB,CAAC,YAAY,CAAC,CAAC;QAClD,IAAI,GAAG,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC;QAC1B,IAAI,IAAI,GAAG,GAAG,CAAC,OAAO,EAAE,CAAC;QAEzB,IAAI,CAAC,OAAO;YACV,OAAO,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;QACjC,IAAI,EAAE,CAAC,MAAM;YACX,OAAO,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC;QAElC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE;YAC3B,IAAI,EAAE,GAAG,CAAC,OAAO,EAAE;YACnB,QAAQ,EAAE,IAAI;YACd,OAAO,EAAE,OAAO;SACjB,CAAC,CAAC;IACL,CAAC;IAED,aAAa;QACX,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;QAC3B,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;QACpB,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;QAC1C,IAAI,IAAI,CAAC,cAAc;YACrB,IAAI,CAAC,cAAc,CAAC,SAAS,EAAE,CAAC,KAAK,EAAE,CAAC;IAC5C,CAAC;IAED,gBAAgB,CAAC,QAAQ;QACvB,8GAA8G;QAC9G,IAAI,CAAC,QAAQ;YAAE,OAAO;QAEtB,IAAI,CAAC,UAAU,GAAG,QAAQ,CAAC;QAE3B,IAAI,CAAC,WAAW,GAAG,sFAAmB,CAAC;QAEvC,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAEzB,IAAI,CAAC,IAAI,CAAC,SAAS;YAAE,OAAO,CAAC,gBAAgB;QAE7C,IAAI,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,CAAC,cAAc,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QAErE,IAAI,CAAC,IAAI;YACP,wBAAwB;YACxB,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC;QAErD,IAAI,CAAC,IAAI,EAAE;YACT,OAAO,CAAC,GAAG,CAAC,uCAAuC,CAAC,CAAC,CAAC,uBAAuB;YAC7E,OAAO;SACR;IACH,CAAC;IAED,wBAAwB,CAAC,UAAoB;QAC3C,yDAAyD;QACzD,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,4FAAsB,EAAE;YAC3D,KAAK,EAAE,OAAO;YACd,IAAI,EAAE,qBAAqB;YAC3B,YAAY,EAAE,IAAI;SACnB,CAAC,CAAC;QAEH,IAAI,EAAE,GAAG,IAAI,0CAAO,EAAO,CAAC;QAE5B,IAAI,GAAG,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC;QAC1B,IAAI,QAAQ,GAAG,GAAG,CAAC,OAAO,EAAE,CAAC;QAC7B,IAAI,IAAI,GAAG,IAAI,CAAC;QAEhB,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QAExB,IAAI,EAAE,GAAG,SAAS,CAAC;QACnB,IAAI,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,SAAS,EAAE,CAAC,MAAM;QAC/C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACtC,IAAI,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;YACtB,IAAI,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,qBAAqB,EAAE;gBAC7C,EAAE,GAAG,KAAK,CAAC;gBACX,MAAM;aACP;SACF;QAAA,CAAC;QAEF,IAAI,OAAO,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;QAC/B,IAAI,GAAG,GAAG,EAAE,CAAC;QAEb,IAAI;YACF,GAAG,GAAG,EAAE,CAAC,SAAS,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC,SAAS,EAAE,CAAC;SACtF;QACD,OAAO,EAAE,EAAE;YACT,WAAW,CAAC,KAAK,EAAE,CAAC;YACpB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,0FAAoB,EAAE;gBACrC,KAAK,EAAE,OAAO;gBACd,IAAI,EAAE,CAAC,2BAA2B,EAAE,sGAAsG,CAAC;gBAC3I,YAAY,EAAE,IAAI;aACnB,CAAC,CAAC;YACH,MAAM,EAAE,CAAC;SACV;QAED,IAAI,EAAE,GAAG,GAAG,CAAC,OAAO,EAAE,CAAC;QACvB,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE;YACV,IAAI,EAAE,UAAU;YAChB,OAAO,EAAE,KAAK;YACd,OAAO,EAAE,OAAO;SACjB,CAAC,CAAC;QAEH,GAAG,CAAC,IAAI,CAAC,gBAAgB,EAAE;YACzB,IAAI,SAAS,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;YAEjD,SAAS,CAAC,KAAK,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;YAChC,SAAS,CAAC,MAAM,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;YACjC,IAAI,UAAU,GAAG,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;YAC5C,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAC1B,QAAQ,CAAC,gBAAgB,CAAC,kBAAkB,CAAC,EAC7C,UAAU,MAAM;gBACd,IAAI,MAAM,CAAC,KAAK,GAAG,CAAC,EAAE;oBACpB,IAAI,OAAO,GAAG,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,OAAO,CAAC;oBAC9C,UAAU,CAAC,WAAW,GAAG,OAAO,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;oBAC9D,IAAI,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC;oBACvC,iEAAiE;oBACjE,IAAI,MAAM,GAAG,SAAS;yBACnB,KAAK,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC;yBAChC,KAAK,CAAC,GAAG,CAAC;yBACV,GAAG,CAAC,MAAM,CAAC,CAAC;oBACf,gDAAgD;oBAChD,wBAAwB,CAAC,SAAS,CAAC,YAAY,CAAC,KAAK,CACnD,UAAU,EACV,MAAM,CACP,CAAC;oBACF,UAAU,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;iBACpC;YACH,CAAC,CACF,CAAC;YAEF,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;YAEtB,WAAW,CAAC,KAAK,EAAE,CAAC;YAEpB,UAAU,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;QAC7D,CAAC,CAAC,CAAC;QAEH,qHAAqH;QACrH,UAAU,CAAC,GAAG,EAAE,GAAG,GAAG,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;QAE7C,OAAO,EAAE,CAAC,YAAY,EAAE,CAAC;IAC3B,CAAC;IAED,iBAAiB;QACf,IAAI,EAAE,GAAG,SAAS,CAAC;QACnB,IAAI,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,SAAS,EAAE,CAAC,MAAM,CAAC;QAChD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACtC,IAAI,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;YACtB,IAAI,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,qBAAqB,EAAE;gBAC7C,EAAE,GAAG,KAAK,CAAC;gBACX,MAAM;aACP;SACF;QAED,IAAI,CAAC,EAAE;YACL,OAAO,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAC,CAAC,uBAAuB;QAEnE,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;IACtB,CAAC;IAED,mCAAmC,CAAC,MAAgB;QAElD,IAAI,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC;QAEjC,kBAAkB;QAClB,UAAU,CAAC,GAAG,EAAE,GAAG,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;QAExD,mBAAmB;QACnB,IAAI,SAAS,GAAG,QAAQ,CAAC,cAAc,CAAC,eAAe,CAAC,CAAC;QAEzD,sCAAsC;QACtC,IAAI,SAAS,CAAC,QAAQ,CAAC,MAAM,IAAI,CAAC,EAAE;YAClC,IAAI,GAAG,GAAG,QAAQ,CAAC,cAAc,CAAC,uBAAuB,CAAC,CAAC;YAC3D,SAAS,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;SAC5B;IACH,CAAC;IAED,6BAA6B,CAAC,MAAgB;QAE5C,IAAI,OAAO,GAAG,IAAI,CAAC,qBAAqB,CAAC;QAEzC,kBAAkB;QAClB,UAAU,CAAC,GAAG,EAAE,GAAG,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;QAExD,mBAAmB;QACnB,IAAI,SAAS,GAAG,QAAQ,CAAC,cAAc,CAAC,uBAAuB,CAAC,CAAC;QAEjE,sCAAsC;QACtC,IAAI,SAAS,CAAC,QAAQ,CAAC,MAAM,IAAI,CAAC,EAAE;YAClC,IAAI,GAAG,GAAG,QAAQ,CAAC,cAAc,CAAC,+BAA+B,CAAC,CAAC;YACnE,SAAS,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;SAC5B;IACH,CAAC;IAED,QAAQ;QACN,OAAO,IAAI,CAAC,UAAU,IAAI,SAAS,CAAC;IACtC,CAAC;IAED,qBAAqB;QACnB,IAAI,CAAC,QAAQ,EAAE,CAAC;IAClB,CAAC;IAED,eAAe;QACb,IAAI,GAAG,GAAiB;YACtB,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE;gBAClD,QAAQ,EAAE;oBACR,GAAG,EAAE,IAAI,CAAC,UAAU,CAAC,GAAG;oBACxB,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC,KAAK;iBAC7B;aACF;SACF,CAAC;QAEF,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IACnB,CAAC;IAED,WAAW;QACT,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;QACzB,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;IAC9B,CAAC;IAED,QAAQ;QACN,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;QAC1B,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;QAC5B,IAAI,CAAC,qBAAqB,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;QAClD,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACzB,IAAI,IAAI,CAAC,cAAc;YAAE,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;IAChE,CAAC;IAED,MAAM,CAAC,GAAiB;QACtB,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACtB,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACjB,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC;QAClB,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC5B,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;QAC7C,IAAI,CAAC,QAAQ,EAAE,CAAC;QAChB,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC;IAC7E,CAAC;IAED,cAAc,CAAC,GAAiB,EAAE,SAAe,EAAE,WAAiB,EAAE,MAAgB;QACpF,IAAI,MAAM,GAAG,IAAI,EAAE,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC;QACjC,IAAI,CAAC,GAAG,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;QAEvD,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;QAE3C,IAAI,GAAG,GAAG,EAAE,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;QAClC,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC,SAAS,EAAE,CAAC,CAAC;QAEnD,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,CAAC,KAAK,EAAE,CAAC;QAClC,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;QAExC,IAAI,CAAC,MAAM;YACT,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC;IAC/E,CAAC;IAED,eAAe;QACb,IAAI,CAAC,eAAe,EAAE,CAAC;QAEvB,IAAI,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;QAGlE,IAAI,IAAI,CAAC,UAAU;YACjB,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC;QAEhC,IAAI,CAAC,UAAU;YACb,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAEnD,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;IAExC,CAAC;IAED,QAAQ,CAAC,KAAU;QACjB,IAAI,MAAM,GAAG,IAAI,EAAE,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACrC,IAAI,CAAC,GAAG,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;QAElC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,WAAW,CAAC,GAAQ;QAClB,IAAI,MAAM,GAAG,IAAI,EAAE,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC;QACjC,IAAI,CAAC,GAAG,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;QAEhC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,OAAO,CAAC,CAAM;QAEZ,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAE3B,IAAI,GAAG,GAAG,EAAE,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;QAElC,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC,SAAS,EAAE,CAAC,CAAC;QAEnD,IAAI,CAAC,cAAc,CAAC,SAAS,EAAE,CAAC,KAAK,EAAE,CAAC;QACxC,IAAI,CAAC,cAAc,CAAC,SAAS,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;IAChD,CAAC;IAED,mBAAmB;QACjB,IAAI,IAAI,CAAC,cAAc;YACrB,OAAO;QACT,IAAI,CAAC,cAAc,GAAG,IAAI,EAAE,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;QAE5C,IAAI,GAAG,GAAG,IAAI,EAAE,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;QACjC,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;QAEnC,IAAI,GAAG,GAAG,IAAI,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC;YAC3B,IAAI,EAAE,IAAI,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC;gBACtB,KAAK,EAAE,IAAI,CAAC,SAAS;aACtB,CAAC;YACF,MAAM,EAAE,IAAI,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC;gBAC1B,KAAK,EAAE,IAAI,CAAC,WAAW;gBACvB,KAAK,EAAE,CAAC;aACT,CAAC;SACH,CAAC,CAAC;QACH,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;QAElC,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QAEpC,MAAM,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IAChD,CAAC;IAED,aAAa,CAAC,SAAe,EAAE,WAAiB;QAC9C,IAAI,IAAI,CAAC,QAAQ;YACf,OAAO;QACT,IAAI,CAAC,QAAQ,GAAG,IAAI,EAAE,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;QAEtC,IAAI,GAAG,GAAG,IAAI,EAAE,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;QACjC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;QAE7B,IAAI,GAAG,GAAG,IAAI,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC;YAC3B,IAAI,EAAE,IAAI,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC;gBACtB,KAAK,EAAE,SAAS,IAAI,IAAI,CAAC,SAAS;aACnC,CAAC;YACF,MAAM,EAAE,IAAI,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC;gBAC1B,KAAK,EAAE,WAAW,IAAI,IAAI,CAAC,WAAW;gBACtC,KAAK,EAAE,CAAC;aACT,CAAC;SACH,CAAC,CAAC;QACH,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;QAE5B,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QAE9B,MAAM,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC1C,CAAC;IAED,cAAc;QACZ,OAAO,IAAI,CAAC,aAAa,CAAC;IAC5B,CAAC;;gFApmBU,gBAAgB;8GAAhB,gBAAgB;QCxB7B,oEACM;QAEN,6GAOM;QAEN,4GAKM;QAEN,4GAWM;QAEN,4GAOgC;QAGhC,4GA4BM;QAGN,oEACM;QACN,oEACM;;QA5ED,6EAAgB;QAGW,0DAAmB;QAAnB,mFAAmB;QASxB,0DAA+B;QAA/B,mGAA+B;QAO3B,0DAA2B;QAA3B,2FAA2B;QAcvD,0DAAmB;QAAnB,mFAAmB;QAShB,0DAAmB;QAAnB,mFAAmB;;;;;;;;;;;;;;;;;;;;;ACzCwC;;;;AAQ1D,MAAM,aAAa;IAIxB,YAAoB,YAA0B;QAA1B,iBAAY,GAAZ,YAAY,CAAc;IAAK,CAAC;IAEpD,QAAQ;QACN,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,gFAAkB,CAAC,CAAC;IAChE,CAAC;;0EARU,aAAa;2GAAb,aAAa;QCT1B,yEAA8B;QAC5B,iFAAuD;QACzD,4DAAM;;QADc,0DAAiB;QAAjB,8EAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IEGjC,uEAAwE;IAAlB,iTAAiB;IAAC,kEAAO;IAAA,4DAAI;;;;IACnF,uEAA+E;IAAxB,uTAAuB;IAAC,mEAAQ;IAAA,4DAAI;;;;IAL/F,yEAA4G;IAC1G,oEAAG;IAGD,+GAAmF;IACnF,+GAA2F;IAC7F,4DAAI;IACN,4DAAM;;;IAPD,gKAAuC;IAIpC,0DAAmB;IAAnB,sFAAmB;IACnB,0DAAoB;IAApB,uFAAoB;;;IAI5B,yEAA2G;IACzG,uEAAuB;IAAA,uDACF;IAAA,uEAAqD;IAAA,mEAAQ;IAAA,4DAAI;IACtF,4DAAI;IACN,4DAAM;;;IAJD,gKAAuC;IACnB,0DACF;IADE,yGACF;;ADFhB,MAAM,iBAAiB;IAK5B,YACU,aAAmC,EACnC,MAAc;QADd,kBAAa,GAAb,aAAa,CAAsB;QACnC,WAAM,GAAN,MAAM,CAAQ;QALxB,gBAAW,GAAW,eAAe,CAAC;QACtC,cAAS,GAAY,KAAK,CAAC;QAMzB,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,EAAE;YAC5C,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC;QAClC,CAAC,CAAC,CAAC;IACL,CAAC;IAED,QAAQ;IACR,CAAC;IAED,KAAK;QACH,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE,CAAC,SAAS,CAAC,CAAC,KAAK,EAAE,EAAE;QAEnD,CAAC,CAAC;IACJ,CAAC;IAED,MAAM;QACJ,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC;IAC9B,CAAC;IAED,UAAU;QACR,OAAO,IAAI,CAAC,aAAa,CAAC,UAAU,EAAE,CAAC;IACzC,CAAC;IAED,WAAW;QACT,OAAO,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC,OAAO,EAAE,IAAI,IAAI,CAAC,WAAW,CAAC;IACrE,CAAC;IAED,KAAK;QACH,OAAO,IAAI,CAAC;IACd,CAAC;IAED,QAAQ;QACN,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QACxB,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;IACzB,CAAC;IAED,WAAW;QACT,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,KAAK,GAAG,CAAC;IACjC,CAAC;IAED,WAAW;QACT,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,WAAW,CAAC,CAAC;IACrC,CAAC;;kFAlDU,iBAAiB;+GAAjB,iBAAiB;QCT9B,6GAOM;QAEN,6GAIM;;QAbwE,kGAA4B;QAS5B,0DAA2B;QAA3B,iGAA2B;;;;;;;;;;;;;;;;;;;;;;;ACDlG,MAAM,gBAAgB;IAK3B,YAAoB,IAAiB;QAAjB,SAAI,GAAJ,IAAI,CAAa;QAHrC,YAAO,GAAY,QAAQ,CAAC;QAC5B,gBAAW,GAAY,GAAG,CAAC;QAC3B,cAAS,GAAY,GAAG;IACiB,CAAC;IAE1C,QAAQ;QACN,IAAI,CAAC,IAAI,CAAC,GAAG,CAAM,iBAAiB,CAAC,CAAC,SAAS,CAAE,GAAG,CAAC,EAAE;YACrD,IAAI,CAAC,OAAO,GAAG,GAAG,CAAC,cAAc,CAAC;YAClC,IAAI,CAAC,WAAW,GAAG,GAAG,CAAC,WAAW,CAAC;YACnC,IAAI,CAAC,SAAS,GAAG,GAAG,CAAC,SAAS,CAAC;QACjC,CAAC,CAAC;IACJ,CAAC;;gFAbU,gBAAgB;8GAAhB,gBAAgB;QCR7B,yEAAqB;QACjB,uEAAwD;QAAA,uDAA2B;QAAA,4DAAI;QAC3F,4DAAM;;QADC,0DAAwB;QAAxB,qFAAwB;QAA6B,0DAA2B;QAA3B,2GAA2B;;;;;;;;;;;;;;;;;ACDvF,gFAAgF;AAChF,0EAA0E;AAC1E,gEAAgE;AAEzD,MAAM,WAAW,GAAG;IACzB,UAAU,EAAE,KAAK;IACjB,IAAI,EAAG,KAAK;CACb,CAAC;AAEF;;;;;;GAMG;AACH,sEAAsE;;;;;;;;;;;;;;;;;;AChBvB;AAGF;AACY;AAEzD,IAAI,6EAAsB,EAAE;IAC1B,6DAAc,EAAE,CAAC;CAClB;AAED,wEAAwB,CAAC,eAAe,CAAC,sDAAS,CAAC;KAChD,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC","sources":["./$_lazy_route_resources|lazy|groupOptions: {}|namespace object","./src/app/_shared/components/dialogs/find-something/find-something.component.ts","./src/app/_shared/components/dialogs/find-something/find-something.component.html","./src/app/_shared/components/dialogs/map-edit-dialog/map-edit-dialog.component.ts","./src/app/_shared/components/dialogs/map-edit-dialog/map-edit-dialog.component.html","./src/app/_shared/components/edit-button-cluster/edit-button-cluster.component.ts","./src/app/_shared/components/edit-button-cluster/edit-button-cluster.component.html","./src/app/_shared/components/forms/dynamic-form-field/dynamic-form-field.component.ts","./src/app/_shared/components/forms/dynamic-form-field/dynamic-form-field.component.html","./src/app/_shared/components/forms/dynamic-form/dynamic-form.component.ts","./src/app/_shared/components/forms/dynamic-form/dynamic-form.component.html","./src/app/_shared/directives/decimal-cap.directive.ts","./src/app/_shared/directives/directive-logic.ts","./src/app/_shared/directives/min-max.directive.ts","./src/app/_shared/models/core-entity.model.ts","./src/app/_shared/models/dynamic-forms/editable-fields.model.ts","./src/app/_shared/models/dynamic-forms/field-base.ts","./src/app/_shared/models/dynamic-forms/field-checkbox.ts","./src/app/_shared/models/dynamic-forms/field-date.ts","./src/app/_shared/models/dynamic-forms/field-dropdown.ts","./src/app/_shared/models/dynamic-forms/field-dynamic-dropdown.ts","./src/app/_shared/models/dynamic-forms/field-multi-select.ts","./src/app/_shared/models/dynamic-forms/field-textarea.ts","./src/app/_shared/models/dynamic-forms/field-textbox.ts","./src/app/_shared/models/dynamic-forms/fields.model.ts","./src/app/_shared/models/map/config.model.ts","./src/app/_shared/models/map/feature-type.model.ts","./src/app/_shared/models/map/geo-search.model.ts","./src/app/_shared/models/resource-concerns.ts","./src/app/_shared/models/roles.model.ts","./src/app/_shared/services/api.service.ts","./src/app/_shared/services/authorization.service.ts","./src/app/_shared/services/configuration.service.ts","./src/app/_shared/services/dashboard.service.ts","./src/app/_shared/services/forms/field-control.service.ts","./src/app/_shared/services/forms/field.service.ts","./src/app/_shared/services/map/identify.service.ts","./src/app/_shared/services/map/map.service.ts","./src/app/_shared/services/map/plugmap-api.service.ts","./src/app/_shared/services/projection.service.ts","./src/app/_shared/services/report.service.ts","./src/app/activity/activity-card/activity-card.component.ts","./src/app/activity/activity-card/activity-card.component.html","./src/app/activity/activity-create-dialog/activity-create-dialog.component.ts","./src/app/activity/activity-create-dialog/activity-create-dialog.component.html","./src/app/activity/activity-create/activity-cancel-dialog/activity-cancel-dialog.component.ts","./src/app/activity/activity-create/activity-cancel-dialog/activity-cancel-dialog.component.html","./src/app/activity/activity-create/activity-create.component.ts","./src/app/activity/activity-create/activity-create.component.html","./src/app/activity/activity-view/activity-view.component.ts","./src/app/activity/activity-view/activity-view.component.html","./src/app/activity/activity.component.ts","./src/app/activity/activity.component.html","./src/app/admin/admin.component.ts","./src/app/admin/admin.component.html","./src/app/admin/organizations/add-org/add-org.component.ts","./src/app/admin/organizations/add-org/add-org.component.html","./src/app/admin/organizations/delete-org/delete-org.component.ts","./src/app/admin/organizations/delete-org/delete-org.component.html","./src/app/admin/organizations/org-edit/archive-error-dialog/archive-error-dialog.component.ts","./src/app/admin/organizations/org-edit/archive-error-dialog/archive-error-dialog.component.html","./src/app/admin/organizations/org-edit/org-edit.component.ts","./src/app/admin/organizations/org-edit/org-edit.component.html","./src/app/admin/organizations/org-users/org-users.component.ts","./src/app/admin/organizations/org-users/org-users.component.html","./src/app/admin/organizations/org-users/update-error-dialog/update-error-dialog.component.ts","./src/app/admin/organizations/org-users/update-error-dialog/update-error-dialog.component.html","./src/app/admin/organizations/organizations.component.ts","./src/app/admin/organizations/organizations.component.html","./src/app/admin/organizations/update-org/update-org.component.ts","./src/app/admin/organizations/update-org/update-org.component.html","./src/app/admin/users/manage-roles/manage-roles.component.ts","./src/app/admin/users/manage-roles/manage-roles.component.html","./src/app/admin/users/users.component.ts","./src/app/admin/users/users.component.html","./src/app/app.component.ts","./src/app/app.component.html","./src/app/app.module.ts","./src/app/authorizing/authorizing.component.ts","./src/app/authorizing/authorizing.component.html","./src/app/confirm-dialog/confirm-dialog.component.ts","./src/app/confirm-dialog/confirm-dialog.component.html","./src/app/contact-dialog/contact-dialog.component.ts","./src/app/contact-dialog/contact-dialog.component.html","./src/app/dashboard/all-cards-view/all-cards-view.component.ts","./src/app/dashboard/all-cards-view/all-cards-view.component.html","./src/app/dashboard/card-view/card-view.component.ts","./src/app/dashboard/card-view/card-view.component.html","./src/app/dashboard/dashboard.component.ts","./src/app/dashboard/dashboard.component.html","./src/app/dashboard/info-dialog/info-dialog.component.ts","./src/app/dashboard/info-dialog/info-dialog.component.html","./src/app/focal/focal-report/focal-report.component.ts","./src/app/focal/focal-report/focal-report.component.html","./src/app/focal/focal-view/focal-view.component.ts","./src/app/focal/focal-view/focal-view.component.html","./src/app/focal/focal.component.ts","./src/app/focal/focal.component.html","./src/app/forgot-password/forgot-password.component.ts","./src/app/forgot-password/forgot-password.component.html","./src/app/funding/funding-add-dialog/funding-add-dialog.component.ts","./src/app/funding/funding-add-dialog/funding-add-dialog.component.html","./src/app/funding/funding.component.ts","./src/app/funding/funding.component.html","./src/app/generic-card/generic-card.component.ts","./src/app/generic-card/generic-card.component.html","./src/app/header/header.component.ts","./src/app/header/header.component.html","./src/app/home-main/home-main.component.ts","./src/app/home-main/home-main.component.html","./src/app/home/home.component.ts","./src/app/home/home.component.html","./src/app/impediment/impediment.component.ts","./src/app/impediment/impediment.component.html","./src/app/import/import-dialog/import-dialog.component.ts","./src/app/import/import-dialog/import-dialog.component.html","./src/app/import/import.component.ts","./src/app/import/import.component.html","./src/app/link/link-add-dialog/link-add-dialog.component.ts","./src/app/link/link-add-dialog/link-add-dialog.component.html","./src/app/link/link.component.ts","./src/app/link/link.component.html","./src/app/loading-dialog/loading-dialog.component.ts","./src/app/loading-dialog/loading-dialog.component.html","./src/app/login/login.component.ts","./src/app/login/login.component.html","./src/app/logout/logout.component.ts","./src/app/logout/logout.component.html","./src/app/main/main.component.ts","./src/app/main/main.component.html","./src/app/manage/manage-all/manage-all.component.ts","./src/app/manage/manage-all/manage-all.component.html","./src/app/manage/manage-view/add-concern-dialog/add-concern-dialog.component.ts","./src/app/manage/manage-view/add-concern-dialog/add-concern-dialog.component.html","./src/app/manage/manage-view/manage-view.component.ts","./src/app/manage/manage-view/manage-view.component.html","./src/app/manage/manage.component.ts","./src/app/map/error-dialog/error-dialog.component.ts","./src/app/map/error-dialog/error-dialog.component.html","./src/app/map/geo-search/geo-search.component.ts","./src/app/map/geo-search/geo-search.component.html","./src/app/map/geo-search/geo-search.service.ts","./src/app/map/import.ts","./src/app/map/map.component.ts","./src/app/map/map.component.html","./src/app/map/save-dialog/save-dialog.component.ts","./src/app/map/save-dialog/save-dialog.component.html","./src/app/map/saved-dialog/saved-dialog.component.ts","./src/app/map/saved-dialog/saved-dialog.component.html","./src/app/map/sidebar/category-container/category-container.component.ts","./src/app/map/sidebar/category-container/category-container.component.html","./src/app/map/sidebar/layer-explorer-container/layer-explorer-container.component.ts","./src/app/map/sidebar/layer-explorer-container/layer-explorer-container.component.html","./src/app/map/sidebar/layer-explorer-container/layer-explorer.model.ts","./src/app/map/sidebar/layer-explorer/layer-explorer.component.ts","./src/app/map/sidebar/layer-explorer/layer-explorer.component.html","./src/app/map/sidebar/layer-identify/layer-identify.component.ts","./src/app/map/sidebar/layer-identify/layer-identify.component.html","./src/app/map/sidebar/layer-legend/layer-legend.component.ts","./src/app/map/sidebar/layer-legend/layer-legend.component.html","./src/app/map/sidebar/layer-list-item/layer-list-item.component.ts","./src/app/map/sidebar/layer-list-item/layer-list-item.component.html","./src/app/map/sidebar/sidebar-content/sidebar-content.component.ts","./src/app/map/sidebar/sidebar-content/sidebar-content.component.html","./src/app/material.config.ts","./src/app/mockauth/mockauth.component.ts","./src/app/mockauth/mockauth.component.html","./src/app/mocks.ts","./src/app/not-found/not-found.component.ts","./src/app/not-found/not-found.component.html","./src/app/note-create-dialog/note-create-dialog.component.ts","./src/app/note-create-dialog/note-create-dialog.component.html","./src/app/opportunity/opportunity.component.ts","./src/app/opportunity/opportunity.component.html","./src/app/panel/panel.component.ts","./src/app/panel/panel.component.html","./src/app/partner/partner-add-dialog/partner-add-dialog.component.ts","./src/app/partner/partner-add-dialog/partner-add-dialog.component.html","./src/app/partner/partner.component.ts","./src/app/partner/partner.component.html","./src/app/portal/portal.component.ts","./src/app/portal/portal.component.html","./src/app/project-filter-dialog/project-filter-dialog.component.ts","./src/app/project-filter-dialog/project-filter-dialog.component.html","./src/app/project-filter/project-filter.component.ts","./src/app/project-filter/project-filter.component.html","./src/app/project-info-dialog/project-info-dialog.component.ts","./src/app/project-info-dialog/project-info-dialog.component.html","./src/app/project/project-create/project-create.component.ts","./src/app/project/project-create/project-create.component.html","./src/app/project/project-funding-source/project-funding-source.component.ts","./src/app/project/project-funding-source/project-funding-source.component.html","./src/app/project/project-funding/project-funding.component.ts","./src/app/project/project-funding/project-funding.component.html","./src/app/project/project-geo-card/geo-slot/geo-slot.component.ts","./src/app/project/project-geo-card/geo-slot/geo-slot.component.html","./src/app/project/project-geo-card/geo-stats.model.ts","./src/app/project/project-geo-card/project-geo-card.component.ts","./src/app/project/project-geo-card/project-geo-card.component.html","./src/app/project/project-geo-card/project-geo.service.ts","./src/app/project/project-view/project-view.component.ts","./src/app/project/project-view/project-view.component.html","./src/app/project/project.component.ts","./src/app/project/project.component.html","./src/app/register/register-error-dialog/register-error-dialog.component.ts","./src/app/register/register-error-dialog/register-error-dialog.component.html","./src/app/register/register.component.ts","./src/app/register/register.component.html","./src/app/registration.service.ts","./src/app/require-acl.directive.ts","./src/app/route-guard.service.ts","./src/app/routing.config.ts","./src/app/shared-nav/shared-nav.component.ts","./src/app/shared-nav/shared-nav.component.html","./src/app/slim-login/slim-login.component.ts","./src/app/slim-login/slim-login.component.html","./src/app/slim-map/slim-map.component.ts","./src/app/slim-map/slim-map.component.html","./src/app/test/test.component.ts","./src/app/test/test.component.html","./src/app/user-menu/user-menu.component.ts","./src/app/user-menu/user-menu.component.html","./src/app/version/version.component.ts","./src/app/version/version.component.html","./src/environments/environment.ts","./src/main.ts"],"sourcesContent":["function webpackEmptyAsyncContext(req) {\n\t// Here Promise.resolve().then() is used instead of new Promise() to prevent\n\t// uncaught exception popping up in devtools\n\treturn Promise.resolve().then(() => {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t});\n}\nwebpackEmptyAsyncContext.keys = () => ([]);\nwebpackEmptyAsyncContext.resolve = webpackEmptyAsyncContext;\nwebpackEmptyAsyncContext.id = 8255;\nmodule.exports = webpackEmptyAsyncContext;","import { HttpClient } from '@angular/common/http';\nimport { Component, Inject, OnInit } from '@angular/core';\nimport { FormBuilder, FormGroup } from '@angular/forms';\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\nimport { Router } from '@angular/router';\nimport { Observable, of } from 'rxjs';\nimport { debounceTime, finalize, map, startWith, switchMap, tap } from 'rxjs/operators';\nimport { CoreExplorerLayers } from 'src/app/map/sidebar/layer-explorer-container/layer-explorer.model';\nimport { CoreEntity } from 'src/app/_shared/models/core-entity.model';\nimport { ApiService } from 'src/app/_shared/services/api.service';\n\nexport interface DataGroup {\n featureType: string;\n names: string[];\n}\n\nexport interface SearchReturn {\n value: string;\n label: string;\n}\n\nexport const _filter = (opt: string[], value: string): string[] => {\n const filterValue = value.toLowerCase();\n\n return opt.filter(item => item.toLowerCase().includes(filterValue));\n};\n\n@Component({\n selector: 'app-find-something',\n templateUrl: './find-something.component.html',\n styleUrls: ['./find-something.component.scss']\n})\nexport class FindSomethingComponent implements OnInit {\n searchForm: FormGroup = this.fb.group({\n searchGroup: '',\n });\n searchData: DataGroup[] = [];\n errorMsg: string;\n isLoading: boolean;\n lessThanMin: boolean;\n\n searchGroupOptions: Observable;\n\n constructor(\n @Inject(MAT_DIALOG_DATA) public data: any,\n public dialogRef: MatDialogRef,\n private fb: FormBuilder,\n private api: ApiService,\n private router: Router,\n ) { }\n\n ngOnInit(): void {\n this.searchForm.get('searchGroup')!.valueChanges\n .pipe(\n debounceTime(500),\n tap((val) => {\n this.errorMsg = \"\";\n this.searchData = [];\n this.isLoading = true;\n if (val?.length < 3) {\n this.lessThanMin = true;\n } else {\n this.lessThanMin = false;\n }\n }),\n switchMap(value => this.api.post('Search', \"GetByName\", { value }, true)\n .pipe(\n finalize(() => {\n this.isLoading = false\n }),\n )\n )\n )\n .subscribe(data => {\n this.isLoading = false\n if (!data) {\n this.errorMsg = 'Issue.';\n this.searchData = [];\n } else if (data && data.length === 0) {\n this.errorMsg = 'Not found.';\n this.searchData = [];\n } else {\n this.errorMsg = '';\n this.searchData = data;\n }\n\n this.searchGroupOptions = of(this.searchData);\n });\n }\n\n async selected(entry: SearchReturn) {\n console.log(entry);\n const url = 'app/map';\n let id: number;\n let type: string;\n let name = entry.value;\n\n switch (entry.label) {\n case this.getFeatureTypeName(CoreExplorerLayers.WatershedKey):\n type = 'w'; // not supported yet\n this.router.navigate([url], { queryParams: { name, type } });\n this.dialogRef.close();\n break;\n case this.getFeatureTypeName(CoreExplorerLayers.PrioLandKey):\n type = 'l'; // not supported yet\n this.router.navigate([url], { queryParams: { name, type } });\n this.dialogRef.close();\n break;\n case this.getFeatureTypeName(CoreExplorerLayers.FocalKey):\n type = 'f';\n this.api.post('Focal', 'GetByName', { name }).subscribe(results => {\n if (results?.valid) {\n id = results.result.id;\n this.router.navigate([url], { queryParams: { id, type } });\n this.dialogRef.close();\n }\n });\n break;\n case this.getFeatureTypeName(CoreExplorerLayers.ProjectKey):\n type = 'p';\n this.api.post('Project', 'GetByName', { name }, true).subscribe(results => {\n if (results?.valid) {\n id = results.result.id;\n this.router.navigate([url], { queryParams: { id, type } });\n this.dialogRef.close();\n }\n });\n break;\n \n default:\n break;\n }\n }\n\n private _filterGroup(value: string): DataGroup[] {\n if (value) {\n return this.searchData\n .map(group => ({featureType: group.featureType, names: _filter(group.names, value)}))\n .filter(group => group.names.length > 0);\n }\n\n return this.searchData;\n }\n\n getFeatureTypeName(name:string): string {\n switch (name) {\n case CoreExplorerLayers.WatershedKey:\n return 'Watershed';\n case CoreExplorerLayers.PrioLandKey:\n return 'Priority Landscape';\n case CoreExplorerLayers.FocalKey:\n return 'Focal Area';\n case CoreExplorerLayers.ProjectKey:\n return 'Project';\n \n default:\n return '';\n }\n }\n\n}\n","\n

\n \n \n
\n I Want to Find...\n close\n
\n
\n
\n

\n \n \n
\n
\n\n
\n
\n\n
\n \n \n Search\n \n \n \n Loading...\n\n \n \n \n \n {{ name }}\n \n \n \n \n \n
\n\n
\n\n
\n\n

Enter the name of the Project, Focal Area, or Priority Landscape, or the Top 500 Watershed ID you want to find (minimum of 3 characters required)

\n\n
\n\n
\n ","import { AfterViewInit, Component, Inject, Input, OnInit, ViewChild } from '@angular/core';\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\nimport { SlimMapComponent } from 'src/app/slim-map/slim-map.component';\nimport { PamShapeData } from 'src/app/_shared/models/pam-object.model';\nimport { ApiService } from 'src/app/_shared/services/api.service';\n\n@Component({\n selector: 'app-map-edit-dialog',\n templateUrl: './map-edit-dialog.component.html',\n styleUrls: ['./map-edit-dialog.component.scss']\n})\nexport class MapEditDialogComponent implements OnInit, AfterViewInit {\n @ViewChild('modalSlimMap') modalSlimMap: SlimMapComponent\n currentGeom: PamShapeData;\n isInActiveEdit = false;\n firstLoad = true;\n fillColor: string = 'rgba(0,77,168,0.8)';\n strokeColor: string = 'rgba(0,77,168,0.95)';\n\n constructor(\n @Inject(MAT_DIALOG_DATA) public data: any,\n private dialogRef: MatDialogRef,\n private api: ApiService,\n ) { }\n\n ngOnInit(): void {\n this.fillColor = this.data.fillColor;\n this.strokeColor = this.data.strokeColor;\n\n if (this.data.refId) {\n this.api.post(\"Project\", \"Get\", [this.data.refId]).subscribe(results => {\n if (results && results.length) {\n let target = results[0];\n this.handleProjectLoad(target);\n }\n });\n }\n }\n\n ngAfterViewInit() {\n const that = this;\n setTimeout(() => {\n that.modalSlimMap.update(that.data.feature);\n }, 250);\n }\n\n newShapeData(data: any) {\n this.currentGeom = data;\n }\n\n checkEditMode(mode: boolean) {\n this.isInActiveEdit = mode;\n }\n\n onSubmit() {\n this.dialogRef.close(this.currentGeom);\n }\n\n cancelClicked() {\n this.dialogRef.close(null);\n }\n\n saveClicked() {\n this.dialogRef.close(this.currentGeom);\n }\n\n handleProjectLoad(target: any) {\n if (target && target?.fields?.Geometry && target?.fields?.Geometry?.wkt) {\n const geomObj: PamShapeData = {\n id: target.id,\n name: target.name,\n fields: {\n Geometry: { ... target.fields?.Geometry }\n }\n }\n if (this.modalSlimMap) {\n this.modalSlimMap.updateRefShape(geomObj, 'rgba(185, 232, 42, 0.25)', 'rgba(0, 19, 2, 0.5)');\n } else {\n // First page load, isSpatial check is likely underway and DOM has not\n // rendered the slim map comp yet. OpenLayers needs a moment.\n const that = this;\n setTimeout(() => {\n that.modalSlimMap.updateRefShape(geomObj, 'rgba(185, 232, 42, 0.25)', 'rgba(0, 19, 2, 0.5)');\n }, 1000);\n }\n }\n }\n\n}\n","
\n \n \n
\n
\n \n \n
\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\n\n@Component({\n selector: 'app-edit-button-cluster',\n templateUrl: './edit-button-cluster.component.html',\n styleUrls: ['./edit-button-cluster.component.scss']\n})\nexport class EditButtonClusterComponent implements OnInit {\n\n @Input() editModeOn = false;\n @Input() formsAreValid = false;\n @Input() disabledEdit = false;\n @Input() optionalEditTooltip = '';\n @Input() confirmName = 'Save';\n @Input() editName = 'Edit';\n @Input() cancelName = 'Cancel';\n @Output() saveClicked = new EventEmitter();\n @Output() editClicked = new EventEmitter();\n @Output() cancelClicked = new EventEmitter();\n\n constructor() { }\n\n ngOnInit(): void {\n }\n\n clickSave() {\n this.saveClicked.emit();\n }\n\n clickEdit() {\n this.editClicked.emit();\n }\n\n clickCancel() {\n this.cancelClicked.emit();\n }\n\n}\n","
\n \n \n \n \n \n
\n","import { AfterViewInit, Component, ElementRef, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { FormGroup } from '@angular/forms';\nimport { FieldBase } from 'src/app/_shared/models/dynamic-forms/field-base';\nimport { DynamicDropdownField } from 'src/app/_shared/models/dynamic-forms/field-dynamic-dropdown';\nimport { ApiService } from 'src/app/_shared/services/api.service';\nimport { AuthorizationService } from 'src/app/_shared/services/authorization.service';\n\n@Component({\n selector: 'app-dynamic-form-field',\n templateUrl: './dynamic-form-field.component.html',\n styleUrls: ['./dynamic-form-field.component.scss']\n})\nexport class DynamicFormFieldComponent implements OnInit, AfterViewInit {\n\n @Input() field: any;\n @Input() form: FormGroup;\n @Input() activeEdit: boolean;\n @Input() largeLabel = false;\n @Output() newOptions = new EventEmitter();\n @Output() newValue = new EventEmitter();\n elementRef: ElementRef;\n get isValid() {\n if (this.form && this.form.controls[this.field.key]) {\n return this.form.controls[this.field.key].valid;\n } else {\n return false;\n }\n }\n get isDirty() {\n if (this.form && this.form.controls[this.field.key]) {\n return this.form.controls[this.field.key].dirty;\n } else {\n return false;\n }\n }\n get errors() {\n return this.form.controls[this.field.key].errors;\n }\n get fieldValue() {\n if (this.form && this.form.controls[this.field.key]) {\n return this.form.controls[this.field.key].value;\n } else {\n return null;\n }\n }\n\n constructor(\n private api: ApiService,\n private auth: AuthorizationService,\n ) { }\n\n ngOnInit(): void {\n if (this.field.triggersChange && this.field.value !== null) {\n this.triggerChange(null);\n }\n }\n\n ngAfterViewInit() {\n if (this.field.controlType === 'dynamic-dropdown') {\n this.getInitial();\n }\n }\n\n public async triggerChange(_) {\n const startingValue = this.field.value;\n\n // @ts-ignore\n if (!this.field.triggersChange) {\n console.log('Exit');\n return;\n }\n\n const fieldData = this.field as DynamicDropdownField;\n\n // Clear old data\n this.newOptions.emit({ key: fieldData.changeFields, data: [] });\n\n let data;\n let objName = this.field.dataObjName;\n let actionName = this.field.dataAction;\n const getField = this.field.getField;\n const resp = await this.api.get(objName, actionName, true).toPromise()\n .then(res => {\n data = res.map(item => {\n return { key: item[getField], value: item[getField] };\n });\n data.sort((a, b) => (a.key > b.key) ? 1 : -1);\n }).catch(err => {\n console.error('Request failure: ', err);\n data = [];\n });\n\n this.newOptions.emit({ key: fieldData.changeFields, data: data });\n }\n\n public async getInitial() {\n const fieldData = this.field as DynamicDropdownField;\n\n let objName = this.field.dataObjName;\n let actionName = this.field.dataAction;\n const getField = this.field.getField;\n this.api.get(objName, actionName, true).subscribe(result => {\n const data = result.map(item => {\n return { key: item[getField], value: item[getField] };\n });\n data.sort((a, b) => (a.key > b.key) ? 1 : -1);\n this.newOptions.emit({ key: fieldData.key, data: data });\n\n if (this.field?.orgDefault) {\n const org = this.auth.login.orgs.organization;\n if (org) {\n this.newValue.emit({ key: fieldData.key, data: org });\n }\n }\n });\n }\n\n public async setDefaultOrg() {\n const org = await this.auth.login.orgs.organization;\n\n if (!org)\n return;\n \n this.field.value = org;\n }\n\n}\n","\n\n \n
\n \n \"tooltip\"\n
\n\n \n
\n\n \n
\n \n \n \n \n \n \n
{{ field.value || 'N/A' }}
\n
\n\n \n
\n \n \n \n {{opt.value}}\n \n \n \n
{{ field.value || 'N/A' }}
\n
\n\n \n
\n \n \n \n {{opt.value}}\n \n \n \n
{{ field.value || 'N/A' }}
\n
\n\n \n
\n \n \n \n \n {{ this.fieldValue ? this.fieldValue[0] : ''}}\n 1\">\n (+{{this.fieldValue.length - 1}} {{this.fieldValue?.length === 2 ? 'other' : 'others'}})\n \n \n {{opt.value}}\n \n \n \n
\n \n {{value}}\n \n
\n
\n\n
\n \n \n \n \n \n \n \n
{{ field.value | date:'M/d/yy'}}\n
\n
N/A
\n
\n\n \n
\n \n \n \n \n \n
{{ field.value }}
\n
\n\n \n
\n \n \n \n \n
{{ field.value ? 'Yes' : 'No' }}
\n
\n\n \n
\n\n\n\n\n \n \n \n {{field.label}} is required.\n \n \n Must enter at least {{field.minlength}} characters.\n \n \n\n\n","import { Component, Input, OnInit, Output, EventEmitter, ViewChild } from '@angular/core';\nimport { FormGroup } from '@angular/forms';\nimport { FieldBase } from 'src/app/_shared/models/dynamic-forms/field-base';\nimport { DynamicDropdownField } from 'src/app/_shared/models/dynamic-forms/field-dynamic-dropdown';\nimport { FieldControlService } from 'src/app/_shared/services/forms/field-control.service';\n\n@Component({\n selector: 'app-dynamic-form',\n templateUrl: './dynamic-form.component.html',\n styleUrls: ['./dynamic-form.component.scss']\n})\nexport class DynamicFormComponent implements OnInit {\n\n @Input() fields: FieldBase[] = [];\n @Input() disabled = false;\n @Input() type = 'create';\n @Input() activeEdit = true;\n @Input() submitButtonText = 'Create';\n @Input() featureNotEditable = false;\n @Input() showSubmissionButtons = false;\n @Input() largeLabel = false;\n\n @Output() newFormSubmission = new EventEmitter();\n\n form: FormGroup;\n // payload: any = null;\n get payload() {\n return this.form.value;\n }\n\n isValid() {\n return this.form.valid;\n }\n\n constructor(\n private fieldControlService: FieldControlService\n ) { }\n\n ngOnInit(): void {\n this.form = this.fieldControlService.toFormGroup(this.fields);\n\n if (this.disabled) {\n this.form.disable();\n }\n }\n\n onSubmit() {\n this.newFormSubmission.emit(this.payload)\n }\n\n getPayload() {\n return this.payload;\n }\n\n clickEdit() {\n console.log('EDIT');\n }\n\n clickCancel() {\n console.log('CANCEL');\n }\n\n refreshForm(data: any[]) {\n this.form = this.fieldControlService.toFormGroup(data);\n }\n\n public updateDynamicOptions(data) {\n const foundField = this.fields.find(item => {\n return item.key === data.key;\n });\n if (foundField) {\n const dropDownField = foundField as DynamicDropdownField;\n dropDownField.options = data.data;\n }\n }\n\n public newOrgValue(data) {\n const foundFc = this.form.get(data.key);\n const foundField = this.fields.find(item => {\n return item.key === data.key;\n }) as DynamicDropdownField;\n if (foundField && !foundField?.value) {\n const foundOption = foundField.options.find(item => {\n return item.key === data.data;\n });\n\n if (foundFc && foundOption) {\n foundFc.setValue(foundOption.value);\n }\n }\n }\n\n}\n","
\n
\n\n
\n
\n \n \n
\n
\n\n
\n \n \n
\n
\n
\n","import { Directive, Input, ElementRef, HostListener } from '@angular/core';\nimport { DirectiveLogic } from './directive-logic';\n\n@Directive({\n selector: '[decimalCapDirective]'\n})\nexport class DecimalCapDirective {\n\n @Input()\n public decimalCap: number;\n\n constructor(private ref: ElementRef) { }\n\n @HostListener('input', [ '$event' ])\n public onInput(a_Event: InputEvent): void {\n if (this.ref.nativeElement?.value && this.ref.nativeElement.value !== '')\n this.ref.nativeElement.value = DirectiveLogic.DecimalCap(this.ref.nativeElement.value, this.decimalCap);\n else\n this.ref.nativeElement.value = null;\n }\n\n}","export class DirectiveLogic {\n\n public static MinMax = (value, min, max) => {\n if (!value)\n return null;\n\n let val = parseInt(value);\n let outVal = value;\n\n if (max !== null && max !== undefined && val >= max)\n outVal = max.toString();\n else if (min !== null && min !== undefined && val <= min)\n outVal = min.toString();\n \n return outVal;\n }\n\n public static DecimalCap = (value, cap) => {\n if (!value)\n return null;\n\n let outVal = value;\n if (DirectiveLogic.IsHittingDecimalCap(value, cap))\n outVal = DirectiveLogic.TruncateDecimals(Number.parseFloat(outVal), cap).toString();\n \n return outVal;\n }\n\n private static IsHittingDecimalCap = (value, cap) => {\n if (!cap)\n return false;\n\n let outVal = value.toString();\n if (\n outVal && \n outVal.includes('.') && \n outVal.split('.')?.[1]?.length >= cap\n ) {\n return true;\n } else {\n return false;\n }\n }\n\n private static TruncateDecimals = (number, digits) => {\n let multiplier = Math.pow(10, digits),\n adjustedNum = number * multiplier,\n truncatedNum = Math[adjustedNum < 0 ? 'ceil' : 'floor'](adjustedNum);\n \n return truncatedNum / multiplier;\n };\n }\n ","import { Directive, Input, ElementRef, HostListener } from '@angular/core';\nimport { DirectiveLogic } from './directive-logic';\n\n@Directive({\n selector: '[minMaxDirective]'\n})\nexport class MinMaxDirective {\n\n @Input()\n public min: number;\n\n @Input()\n public max: number;\n\n constructor(private ref: ElementRef) { }\n\n @HostListener('input', [ '$event' ])\n public onInput(a_Event: InputEvent): void {\n if (this.ref.nativeElement?.value && this.ref.nativeElement.value !== '')\n this.ref.nativeElement.value = DirectiveLogic.MinMax(this.ref.nativeElement.value, this.min, this.max);\n else\n this.ref.nativeElement.value = null;\n }\n\n}","export class CoreEntity {\r\n public static Project = 'PROJECT';\r\n public static Activity = 'ACTIVITY';\r\n public static Focal = 'FOCAL';\r\n public static ActivityWork = 'ACTIVITY_WORK';\r\n public static Opportunity = 'OPPORTUNITY'\r\n public static Impediment = 'IMPEDIMENT'\r\n}\r\n","import { FieldBase } from \"./field-base\";\r\nimport { CheckboxField } from \"./field-checkbox\";\r\nimport { DateField } from \"./field-date\";\r\nimport { DropdownField } from \"./field-dropdown\";\r\nimport { DynamicDropdownField } from \"./field-dynamic-dropdown\";\r\nimport { MultiSelectDropdown } from \"./field-multi-select\";\r\nimport { TextareaField } from \"./field-textarea\";\r\nimport { TextboxField } from \"./field-textbox\";\r\nimport { Fields } from \"./fields.model\";\r\n\r\nexport class EditableFields {\r\n\r\n // Project Fields - TODO these are temp values for testing\r\n public static ProjectFields: FieldBase[] = [\r\n\r\n new TextboxField({\r\n key: Fields.ProjectName,\r\n label: 'Project Name',\r\n value: '',\r\n example: 'Ex: \"Sandia Mountain Forest Health\"',\r\n required: true,\r\n type: 'text',\r\n hint: 'Enter a project name, providing geographical context. Example: \"Sandia Mountain Forest Health.\"',\r\n order: 1,\r\n maxlength: 100,\r\n minlength: 3\r\n }),\r\n\r\n new DropdownField({\r\n key: Fields.ProjectType,\r\n label: 'Project Type',\r\n required: true,\r\n options: [\r\n { key: 'Forest Restoration', value: 'Forest Restoration' },\r\n { key: 'Watershed Health', value: 'Watershed Health' },\r\n { key: 'Riparian Restoration', value: 'Riparian Restoration' },\r\n { key: 'Community Protection', value: 'Community Protection' },\r\n { key: 'Timber or Forest Utilization', value: 'Timber or Forest Utilization' },\r\n { key: 'Range Improvement', value: 'Range Improvement' },\r\n { key: 'Planning/Surveys', value: 'Planning/Surveys' },\r\n { key: 'Other', value: 'Other' },\r\n ],\r\n hint: `Pick a Project Type. Use 'Other\" for Education, Outreach, Monitoring, etc.`,\r\n order: 2\r\n }),\r\n\r\n new DropdownField({\r\n key: Fields.ProjectStatus,\r\n label: 'Project Status',\r\n required: true,\r\n options: [\r\n { key: 'Planned', value: 'Planned' },\r\n { key: 'In Progress', value: 'In Progress' },\r\n { key: 'Complete', value: 'Complete' },\r\n { key: 'Cancelled', value: 'Cancelled' },\r\n { key: 'Deferred', value: 'Deferred' },\r\n { key: 'On Hold', value: 'On Hold' }\r\n ],\r\n hint: `Pick the current Project Status.`,\r\n default: 'Planned',\r\n order: 3\r\n }),\r\n\r\n // new DropdownField({\r\n // key: Fields.FocalArea,\r\n // label: 'Focal Area',\r\n // required: false,\r\n // options: [\r\n // { key: 'Buffer Zone', value: 'Buffer Zone' },\r\n // { key: 'Disturbance', value: 'Disturbance' },\r\n // { key: 'Lake', value: 'Lake' },\r\n // { key: 'Polygon of Interest', value: 'Polygon of Interest' }\r\n // ],\r\n // order: 4\r\n // }),\r\n ];\r\n\r\n // Project Narrative Fields\r\n public static ProjectNarrativeFields: FieldBase[] = [\r\n\r\n new TextareaField({\r\n key: Fields.ProjectNarrative,\r\n label: 'Project Narrative',\r\n value: '',\r\n example: 'Placeholder text here',\r\n required: true,\r\n type: 'text',\r\n order: 1,\r\n maxlength: 500,\r\n minlength: 5,\r\n hint: `Describe this project relative to larger initiatives (if any), its proposed location, land ownership(s), goals, partners, funding sources, and expected start and end dates.`,\r\n rows: 5\r\n }),\r\n ];\r\n\r\n\r\n // Project Focus Fields\r\n public static ProjectFocusFields: FieldBase[] = [\r\n\r\n new MultiSelectDropdown({\r\n key: Fields.ProjectFocus,\r\n label: 'Project Focus',\r\n required: true,\r\n options: [\r\n { key: 'Biodiversity', value: 'Biodiversity' },\r\n { key: 'Carbon Storage', value: 'Carbon Storage' },\r\n { key: 'Climate Change', value: 'Climate Change' },\r\n { key: 'Cultural Use', value: 'Cultural Use' },\r\n { key: 'Development and Fragmentation', value: 'Development and Fragmentation' },\r\n { key: 'Forest and Woodland Health', value: 'Forest and Woodland Health' },\r\n { key: 'Human Activity Impacts', value: 'Human Activity Impacts' },\r\n { key: 'Indigenous Communities', value: 'Indigenous Communities' },\r\n { key: 'Insects and Disease', value: 'Insects and Disease' },\r\n { key: 'Post Wildfire Hazards', value: 'Post Wildfire Hazards' },\r\n { key: 'Range/Grazing', value: 'Range/Grazing' },\r\n { key: 'Recreation', value: 'Recreation' },\r\n\r\n { key: 'Soil Health', value: 'Soil Health' },\r\n { key: 'Timber/Utilization', value: 'Timber/Utilization' },\r\n { key: 'Traditional Communities', value: 'Traditional Communities' },\r\n { key: 'Urban Forests and Communities', value: 'Urban Forests and Communities' },\r\n { key: 'Water Quality and Supply', value: 'Water Quality and Supply' },\r\n { key: 'Wildfire', value: 'Wildfire' },\r\n { key: 'Wildland Communities', value: 'Wildland Communities' }\r\n ],\r\n hint: `Select one or more concerns and/or interests that the Project addresses. Note that 'Biodiversity' refers to habitat for terrestrial, aerial, and aquatic species.`,\r\n order: 1\r\n }),\r\n\r\n new MultiSelectDropdown({\r\n key: Fields.ProjectStrategies,\r\n label: 'Strategies',\r\n required: true,\r\n options: [\r\n { key: 'Restore Forests and Watersheds', value: 'Restore Forests and Watersheds' },\r\n { key: 'Manage Fire for Public Safety and Ecological Benefits', value: 'Manage Fire for Public Safety and Ecological Benefits' },\r\n { key: 'Promote Private Land Stewardship', value: 'Promote Private Land Stewardship' },\r\n { key: 'Manage Utility Rights of Way', value: 'Manage Utility Rights of Way' },\r\n { key: 'Protect and Conserve Rare Plants', value: 'Protect and Conserve Rare Plants' },\r\n { key: 'Reforest Burned Areas and Other Lands', value: 'Reforest Burned Areas and Other Lands' },\r\n { key: 'Enhance Urban and Community Forests', value: 'Enhance Urban and Community Forests' },\r\n { key: 'Build Sustainable Communities, Businesses, and Jobs', value: 'Build Sustainable Communities, Businesses, and Jobs' },\r\n { key: 'Protect and Conserve Lands', value: 'Protect and Conserve Lands' },\r\n { key: 'Enhance Outdoor Recreation', value: 'Enhance Outdoor Recreation' }\r\n ],\r\n hint: `Select one or more Forest Action Plan Strategies to be used to accomplish project goals.`,\r\n order: 2\r\n }),\r\n ];\r\n\r\n public static ActivityFields: FieldBase[] = [\r\n\r\n new TextboxField({\r\n key: Fields.ActivityName,\r\n label: 'Activity Name',\r\n value: '',\r\n example: '',\r\n required: true,\r\n type: 'text',\r\n hint: 'Enter a short name for this activity.',\r\n order: 1,\r\n maxlength: 50,\r\n minlength: 8\r\n }),\r\n\r\n new DropdownField({\r\n key: Fields.ActivityStatus,\r\n label: 'Status',\r\n required: true,\r\n options: [\r\n { key: 'Proposed', value: 'Proposed' },\r\n { key: 'Planned', value: 'Planned' },\r\n { key: 'In Progress', value: 'In Progress' },\r\n { key: 'Completed', value: 'Completed' },\r\n { key: 'Cancelled', value: 'Cancelled' },\r\n ],\r\n default: 'Proposed',\r\n order: 1\r\n }),\r\n\r\n new DynamicDropdownField({\r\n key: Fields.ActivityWorkAgent,\r\n label: 'Activity Manager',\r\n required: true,\r\n options: [],\r\n dataObjName: 'Organization',\r\n dataAction: 'GetAllWorkAgents',\r\n getField: 'name',\r\n order: 1,\r\n orgDefault: true\r\n }),\r\n\r\n new DateField({\r\n key: Fields.PlannedCompletionDate,\r\n type: 'date',\r\n label: 'Planned Completion Date',\r\n value: new Date(),\r\n required: true\r\n }),\r\n\r\n\r\n ];\r\n\r\n\r\n public static ActivityWorkFields: FieldBase[] = [\r\n\r\n new DateField({\r\n key: Fields.ActualCompletionDate,\r\n type: 'date',\r\n label: 'Actual Completion Date',\r\n required: false\r\n }),\r\n\r\n new TextboxField({\r\n key: Fields.ActivityUnit,\r\n label: 'Unit/Block',\r\n value: '',\r\n example: '',\r\n required: false,\r\n type: 'text',\r\n hint: '',\r\n order: 1,\r\n maxlength: 20,\r\n minlength: 1\r\n }),\r\n\r\n new TextboxField({\r\n key: Fields.ActivityAcres,\r\n label: 'Reported Acres',\r\n value: '',\r\n example: '',\r\n required: false,\r\n type: 'number',\r\n hint: '',\r\n order: 1,\r\n decimalCappedNonNegative: true,\r\n decimalCapValue: 1\r\n }),\r\n\r\n new CheckboxField({\r\n key: Fields.RiskAdjacent,\r\n type: 'checkbox',\r\n label: 'Adjacent to & within a 5-Mile Buffer of 1 or More Communities at Risk',\r\n value: false,\r\n required: false\r\n })\r\n ];\r\n\r\n // Project Opportunity Fields\r\n public static OppoortunityFields: FieldBase[] = [\r\n\r\n new TextareaField({\r\n key: Fields.ProjectOpportunity,\r\n label: 'Opportunity Description',\r\n value: '',\r\n example: 'Placeholder text here',\r\n required: true,\r\n type: 'text',\r\n order: 1,\r\n maxlength: 200,\r\n minlength: 3,\r\n rows: 5\r\n }),\r\n ];\r\n\r\n // Project Impediment Fields\r\n public static ImpedimentFields: FieldBase[] = [\r\n\r\n new TextareaField({\r\n key: Fields.ProjectImpediment,\r\n label: 'Impediment Description',\r\n value: '',\r\n example: 'Placeholder text here',\r\n required: true,\r\n type: 'text',\r\n order: 1,\r\n maxlength: 200,\r\n minlength: 3,\r\n rows: 5\r\n }),\r\n ];\r\n\r\n\r\n public static ActivityModalFields: FieldBase[] = [\r\n\r\n new DropdownField({\r\n key: Fields.ActivityFocus,\r\n required: true,\r\n options: [\r\n { key: 'Planned', value: 'Planned' },\r\n { key: 'In Progress', value: 'In Progress' },\r\n { key: 'Complete', value: 'Complete' },\r\n { key: 'Cancelled', value: 'Cancelled' },\r\n { key: 'Proposed', value: 'Proposed' }\r\n ],\r\n default: 'Proposed',\r\n order: 1\r\n }),\r\n\r\n new DropdownField({\r\n key: Fields.ActivityType,\r\n label: 'Activity Type',\r\n required: true,\r\n options: [\r\n { key: 'Forest Restoration', value: 'Forest Restoration' },\r\n { key: 'Watershed Health', value: 'Watershed Health' },\r\n { key: 'Riparian Restoration', value: 'Riparian Restoration' },\r\n { key: 'Community Protection', value: 'Community Protection' },\r\n { key: 'Timber or Forest Utilization', value: 'Timber or Forest Utilization' },\r\n { key: 'Range Improvement', value: 'Range Improvement' },\r\n { key: 'Planning/Surveys', value: 'Planning/Surveys' },\r\n { key: 'Other', value: 'Other' },\r\n ],\r\n hint: ``,\r\n order: 2\r\n })\r\n ];\r\n\r\n public static FundingModalFields: FieldBase[] = [\r\n\r\n new TextboxField({\r\n key: Fields.PlannedAmount,\r\n type: 'number',\r\n label: 'Planned Amount',\r\n required: true,\r\n order: 1\r\n }),\r\n\r\n new TextboxField({\r\n key: Fields.ActualAmount,\r\n type: 'number',\r\n label: 'Actual Amount',\r\n required: false,\r\n order: 1\r\n }),\r\n\r\n new CheckboxField({\r\n key: Fields.FundingMatch,\r\n type: 'checkbox',\r\n label: \"Is this funding counted as 'match'?\",\r\n value: false,\r\n required: false\r\n }),\r\n\r\n ];\r\n\r\n public static FocalFields: FieldBase[] = [\r\n\r\n new TextboxField({\r\n key: Fields.FocalName,\r\n label: 'Focal Area Name',\r\n value: '',\r\n example: '',\r\n required: true,\r\n type: 'text',\r\n hint: '',\r\n order: 1\r\n }),\r\n ];\r\n\r\n\r\n /**\r\n * Private helper functions.\r\n *\r\n */\r\n\r\n private static getDate() {\r\n const date = new Date();\r\n const year = date.getFullYear();\r\n const month = `${date.getMonth() + 1}`.padStart(2, '0');\r\n const day = `${date.getDate()}`.padStart(2, '0');\r\n const dateString = `${year}-${month}-${day}`;\r\n\r\n return dateString;\r\n }\r\n}\r\n","export class FieldBase {\r\n value: T;\r\n key: string;\r\n label: string;\r\n example: string;\r\n required: boolean;\r\n order: number;\r\n controlType: string;\r\n elements?: any;\r\n hint?: string;\r\n\r\n constructor(options: {\r\n value?: T,\r\n key?: string,\r\n label?: string,\r\n example?: string,\r\n required?: boolean,\r\n order?: number,\r\n controlType?: string,\r\n elements?: any,\r\n hint?: string\r\n } = {}) {\r\n this.value = options.value;\r\n this.key = options.key || '';\r\n this.label = options.label || '';\r\n this.example = options.example || '';\r\n this.required = !!options.required;\r\n this.order = options.order === undefined ? 1 : options.order;\r\n this.controlType = options.controlType || '';\r\n this.elements = options.elements || '';\r\n this.hint = options.hint || null;\r\n }\r\n}\r\n","import { FieldBase } from './field-base';\r\n\r\nexport class CheckboxField extends FieldBase {\r\n controlType = 'checkbox';\r\n default: any;\r\n\r\n constructor(options: {} = {}) {\r\n super(options);\r\n this.default = options['default'] || null;\r\n }\r\n}\r\n","import { FieldBase } from './field-base';\r\n\r\nexport class DateField extends FieldBase {\r\n controlType = 'date';\r\n type: string;\r\n\r\n constructor(options: {} = {}) {\r\n super(options);\r\n this.type = options['type'] || '';\r\n }\r\n}\r\n","import { FieldBase } from './field-base';\r\n\r\nexport class DropdownField extends FieldBase {\r\n controlType = 'dropdown';\r\n options: { key: string, value: string }[] = [];\r\n default: any;\r\n orgDefault?: boolean;\r\n\r\n constructor(options: {} = {}) {\r\n super(options);\r\n this.options = options['options'] || [];\r\n this.default = options['default'] || null;\r\n this.orgDefault = options['orgDefault'] || false;\r\n }\r\n}\r\n","import { FieldBase } from './field-base';\r\n\r\nexport class DynamicDropdownField extends FieldBase {\r\n controlType = 'dynamic-dropdown';\r\n options: { key: string, value: string }[] = [];\r\n triggersChange: boolean;\r\n changeFields: string[];\r\n dataObjName: string;\r\n dataAction: string;\r\n getField: string;\r\n dataAttributes: any[];\r\n orgDefault?: boolean;\r\n\r\n constructor(options: {} = {}) {\r\n super(options);\r\n this.options = [];\r\n this.triggersChange = options['triggersChange'] || false;\r\n this.changeFields = options['changeFields'] || [];\r\n this.dataObjName = options['dataObjName'] || null;\r\n this.dataAction = options['dataAction'] || null;\r\n this.getField = options['getField'] || null;\r\n this.dataAttributes = options['dataAttributes'] || [];\r\n this.orgDefault = options['orgDefault'] || false;\r\n }\r\n}\r\n","import { FieldBase } from './field-base';\n\nexport class MultiSelectDropdown extends FieldBase {\n controlType = 'multi-select';\n options: { key: string, value: string }[] = [];\n default: any;\n\n constructor(options: {} = {}) {\n super(options);\n this.options = options['options'] || [];\n this.default = options['default'] || null;\n }\n}\n","import { FieldBase } from './field-base';\r\n\r\nexport class TextareaField extends FieldBase {\r\n controlType = 'textarea';\r\n type: string;\r\n rows: number;\r\n maxlength?: string;\r\n minlength?: string;\r\n\r\n constructor(options: {} = {}) {\r\n super(options);\r\n this.type = options['type'] || '';\r\n this.rows = options['rows'] || '';\r\n this.maxlength = options['maxlength'] || '';\r\n this.minlength = options['minlength'] || '';\r\n }\r\n}\r\n","import { FieldBase } from './field-base';\r\n\r\nexport class TextboxField extends FieldBase {\r\n controlType = 'textbox';\r\n type: string;\r\n maxlength?: string;\r\n minlength?: string;\r\n triggersChange: boolean;\r\n changeFields: string[];\r\n dataUrl: string;\r\n dataAttributes: any[];\r\n decimalCappedNonNegative?: boolean;\r\n decimalCapValue?: number;\r\n\r\n constructor(options: {} = {}) {\r\n super(options);\r\n this.type = options['type'] || '';\r\n this.maxlength = options['maxlength'] || '';\r\n this.minlength = options['minlength'] || '';\r\n this.triggersChange = options['triggersChange'] || false;\r\n this.changeFields = options['changeFields'] || [];\r\n this.dataUrl = options['dataUrl'] || null;\r\n this.dataAttributes = options['dataAttributes'] || [];\r\n this.decimalCappedNonNegative = options['decimalCappedNonNegative'] || false;\r\n this.decimalCapValue = options['decimalCapValue'] || null;\r\n }\r\n}\r\n","// Set constants for field names in the app\r\n\r\nexport class Fields {\r\n /**\r\n * Projects\r\n */\r\n\r\n // Project Name\r\n public static ProjectName = 'PROJECT_NAME';\r\n\r\n // Project Created Date\r\n public static ProjectCreated = 'PROJECT_CREATED'\r\n\r\n // Project Modified Date\r\n public static ProjectModified = 'PROJECT_MODIFIED'\r\n\r\n // Project Type\r\n public static ProjectType = 'PROJECT_TYPE';\r\n\r\n // Priority Landscape\r\n public static ProjectStatus = 'PROJECT_STATUS';\r\n\r\n // Project Narrative\r\n public static ProjectNarrative = 'PROJECT_NARRATIVE';\r\n\r\n // Project Focus\r\n public static ProjectFocus = 'PROJECT_FOCUS';\r\n\r\n //\r\n public static ProjectStrategies = 'PROJECT_STRATEGIES'\r\n\r\n /**\r\n * Activities\r\n */\r\n\r\n // Activity Name\r\n public static ActivityName = \"ACTIVITY_NAME\";\r\n\r\n // Activity Type\r\n public static ActivityType = \"ACTIVITY_TYPE\";\r\n\r\n // Activity Type\r\n public static ActivityFocus = \"ACTIVITY_FOCUS\";\r\n\r\n // Activity Status\r\n public static ActivityStatus = \"ACTIVITY_STATUS\";\r\n\r\n // Planned Completion Date\r\n public static PlannedCompletionDate = \"PLANNED_COMPLETION_DATE\";\r\n\r\n // Actual Completion Date\r\n public static ActualCompletionDate = \"ACTUAL_COMPLETION_DATE\";\r\n\r\n // Work Agent\r\n public static ActivityWorkAgent = \"ACTIVITY_WORK_AGENT\";\r\n\r\n //Unit\r\n public static ActivityUnit = \"ACTIVITY_UNIT\";\r\n\r\n //Reported Acres\r\n public static ActivityAcres = \"ACTIVITY_ACRES\";\r\n\r\n // Risk Adjacent\r\n public static RiskAdjacent = \"RISK_ADJACENT\";\r\n\r\n /**\r\n * Opportunities\r\n */\r\n\r\n public static ProjectOpportunity = \"PROJECT_OPPORTUNITY\";\r\n\r\n /**\r\n * Impediments\r\n */\r\n\r\n public static ProjectImpediment = \"PROJECT_IMPEDIMENT\";\r\n\r\n /**\r\n * Fundings\r\n */\r\n\r\n //Funding ID\r\n public static FundingId = \"FUNDING_ID\"\r\n // Funding Name\r\n public static FundingName = \"FUNDING_NAME\";\r\n\r\n // Funding Org\r\n public static FundingOrg = \"FUNDING_ORG\";\r\n\r\n // Funding Match\r\n public static FundingMatch = \"FUNDING_MATCH\";\r\n\r\n // Planned Amount\r\n public static PlannedAmount = \"PLANNED_AMOUNT\";\r\n\r\n // Actual Amount\r\n public static ActualAmount = \"ACTUAL_AMOUNT\";\r\n\r\n\r\n /**\r\n * Focal\r\n */\r\n // Name\r\n public static FocalName = \"FOCAL_NAME\";\r\n\r\n // Prio Landscape\r\n public static PrioLandscape = \"PRIO_LANDSCAPE\";\r\n\r\n // Focal Area Strategies\r\n public static FocalStrats = \"FOCAL_STRATS\";\r\n\r\n}\r\n","import { FixedLengthArray } from '../../types/fixed-length-array';\nimport { LegendItem } from './legend.model';\n\n/**\n * App Map Config\n */\nexport interface MapCategory {\n category_key: string;\n opacity?: number;\n layers?: MapLayer[];\n selection?: MapSelection;\n name: string;\n multiphasic: boolean;\n openness?: string;\n}\n\nexport interface Service {\n key: string;\n baseUrl: string;\n token: string;\n}\n\nexport abstract class MapSelection {\n constructor(selectionType: string) {\n this.selection_type = selectionType;\n }\n\n abstract isSelected(key: string): boolean;\n abstract select(key: string): void;\n\n selection_type?: string;\n}\n\nexport class MonoselectiveSelection extends MapSelection {\n selection_key: string;\n constructor(selection: string) {\n super(MapConfigConstants.monoselection);\n this.selection_key = selection;\n }\n\n public isSelected(key: string): boolean {\n return this.selection_key === key;\n }\n\n select(key: string): void {\n this.selection_key = key;\n }\n}\n\nexport class PolyselectiveSelection extends MapSelection {\n selection_keys: string[] = [];\n constructor(selection: string[]) {\n super(MapConfigConstants.polyselection);\n this.selection_keys = selection;\n }\n\n public isSelected(key: string): boolean {\n return this.selection_keys.includes(key);\n }\n\n select(key: string): void {\n if (this.selection_keys.includes(key)) {\n this.selection_keys = this.selection_keys.filter(ky => ky !== key);\n }\n else {\n this.selection_keys.push(key);\n }\n }\n}\n\nexport interface MapLayer {\n key: string;\n name?: string;\n opacity?: number;\n config?: MapLayerConfig;\n identify?: MapLayerIdentify;\n legend?: LegendItem[];\n}\n\nexport interface MapLayerConfig {\n type?: string;\n value?: MapLayerEsriExportValue | MapLayerEsriFeatureServiceValue | MapLayerXYZValue | MapLayerWMTSValue | MapLayerWMSValue | MapLayerMVTValue;\n}\n\nexport interface MapLayerEsriExportValue {\n endpoints?: MapLayerEndpoint[];\n extent?: FixedLengthArray<[number, number, number, number]>;\n layerDefs?: any;\n}\n\nexport interface MapLayerEsriFeatureServiceValue {\n endpoints?: MapLayerEndpoint[];\n extent?: FixedLengthArray<[number, number, number, number]>;\n layerDefs?: any;\n}\n\nexport interface MapLayerWMTSValue {\n endpoints?: any[];\n extent?: FixedLengthArray<[number, number, number, number]>;\n}\n\nexport interface MapLayerWMSValue {\n endpoints?: any[];\n extent?: FixedLengthArray<[number, number, number, number]>;\n}\n\nexport interface MapLayerMVTValue {\n endpoints?: any[];\n}\n\nexport interface MapLayerXYZValue {\n endpoints?: MapLayerEndpoint[];\n maxZoom?: number;\n minZoom?: number;\n}\n\nexport interface MapLayerEndpoint {\n url?: string;\n zIndex?: number;\n tokenKey?: string;\n layersToShow?: string;\n layerDefs?: any;\n bbox?: any;\n}\n\nexport interface MapLayerIdentify {\n enabled?: boolean;\n import?: boolean;\n minZoom?: number;\n dataMapping?: MapLayerDataMapping;\n canViewDetails?: boolean;\n idTransform?: number;\n typeKey?: string;\n queryLayerIds?: number[];\n queryUrl?: string;\n tolerance?: any;\n}\n\nexport interface MapLayerDataMapping {\n id?: MapLayerFieldName;\n title: MapLayerFieldName;\n fields?: MapLayerFieldName[];\n}\n\nexport interface MapLayerFieldName {\n name?: string;\n query?: string;\n static?: string;\n}\n\n/**\n * DB Map Config\n */\nexport interface DBMapConfig {\n layers?: DBMapConfigLayers[];\n layerGroups?: DBMapConfigLayerGroups[];\n layerCategories?: DBMapConfigLayerCategories[];\n}\n\nexport interface DBMapConfigLayers {\n key: string;\n xyz?: MapLayerXYZValue;\n esriExport?: MapLayerEsriExportValue;\n esriFeature?: MapLayerEsriExportValue;\n wmts?: MapLayerWMTSValue;\n mvt?: MapLayerMVTValue;\n wms?: MapLayerWMSValue;\n name?: string;\n opacity?: number;\n identify?: MapLayerIdentify;\n legend?: LegendItem[];\n}\n\nexport interface DBMapConfigLayerGroups {\n key: string;\n layers?: string[];\n openness?: string;\n}\n\nexport interface DBMapConfigLayerCategories {\n key: string;\n name?: string;\n hidden?: boolean;\n infoIcon?: DBMapConfigInfoIcon;\n layerGroups?: string[];\n multiphasic?: boolean;\n transparency?: number;\n selectiveness?: string;\n defaultSelection?: string[];\n usesRasterLegend?: boolean;\n mustHaveSelection?: boolean;\n openness?: string;\n}\n\nexport interface DBMapConfigInfoIcon {\n iconClass?: string;\n}\n\n/**\n * Magic Strings\n */\nexport class MapConfigConstants {\n public static xyz: string = 'xyz';\n public static esriExport: string = 'esriExport';\n public static esriFeature: string = 'esriFeature';\n public static mvt: string = 'mvt';\n public static wmts: string = 'wmts';\n public static wms: string = 'wms';\n public static identify: string = 'identify';\n public static monoselective: string = 'monoselective';\n public static monoselection: string = 'monoselection';\n public static polyselective: string = 'polyselective';\n public static polyselection: string = 'polyselection';\n}\n","export class FeatureTypes {\r\n public static Custom: string = 'Custom';\r\n public static Import: string = 'Import';\r\n}","import { IExtent, IPoint } from '@esri/arcgis-rest-types';\r\n\r\nexport interface Candidate {\r\n name: string;\r\n location: IPoint;\r\n extent: IExtent;\r\n source?: string\r\n}\r\n\r\nexport interface Candidates {\r\n candidates: Candidate[];\r\n paddingLeft?: number;\r\n paddingBottom?: number;\r\n}\r\n\r\nexport class SearchTypes {\r\n public static EsriGeocode: string = 'Esri Geocode';\r\n public static EsriSuggestion: string = 'Esri Suggestion';\r\n public static DDCoordinate: string = 'Coordinate';\r\n}","export interface ResourceConcern {\n id: number;\n category: string;\n group: string;\n value: string;\n }\n\n export var allConcerns: ResourceConcern[] = [\n { id:10, \"value\": \"Sheet and Rill Erosion\", \"group\": \"Sheet, Rill, & Wind Erosion\", \"category\": \"Soil Erosion\" },\n { id:11, \"value\": \"Wind Erosion\", \"group\": \"Sheet, Rill, & Wind Erosion\", \"category\": \"Soil Erosion\" },\n { id:12, \"value\": \"Ephemeral Gully Erosion\", \"group\": \"Concentrated Flow Erosion\", \"category\": \"Soil Erosion\" },\n { id:13, \"value\": \"Classic Gully Erosion\", \"group\": \"Concentrated Flow Erosion\", \"category\": \"Soil Erosion\" },\n { id:14, \"value\": \"Streambank, Shoreline, Water Conveyance Channels\", \"group\": \"Excessive Bank Erosion from Streams Shorelines or Water Conveyance Channels\", \"category\": \"Soil Erosion\" },\n { id:15, \"value\": \"Organic Matter Depletion\", \"group\": \"Organic Matter Depletion\", \"category\": \"Soil Quality Degradation\" },\n { id:16, \"value\": \"Compaction\", \"group\": \"Compaction\", \"category\": \"Soil Quality Degradation\" },\n { id:17, \"value\": \"Subsidence\", \"group\": \"Subsidence\", \"category\": \"Soil Quality Degradation\" },\n { id:18, \"value\": \"Concentration of Salts or Other Chemicals\", \"group\": \"Concentration of Salts or Other Chemicals\", \"category\": \"Soil Quality Degradation\" },\n { id:19, \"value\": \"Seeps\", \"group\": \"Ponding, Flooding, Seasonal High Water Table, Seeps and Drifted Snow\", \"category\": \"Excess Water\" },\n { id:21, \"value\": \"Runoff, Flooding, or Ponding\", \"group\": \"Ponding, Flooding, Seasonal High Water Table, Seeps and Drifted Snow\", \"category\": \"Excess Water\" },\n { id:22, \"value\": \"Seasonal High Water Table\", \"group\": \"Ponding, Flooding, Seasonal High Water Table, Seeps and Drifted Snow\", \"category\": \"Excess Water\" },\n { id:23, \"value\": \"Drifted Snow\", \"group\": \"Ponding, Flooding, Seasonal High Water Table, Seeps and Drifted Snow\", \"category\": \"Excess Water\" },\n { id:24, \"value\": \"Inefficient Use of Irrigation Water\", \"group\": \"Inefficient Use of Irrigation Water\", \"category\": \"Insufficient Water\" },\n { id:25, \"value\": \"Inefficient Moisture Management\", \"group\": \"Inefficient Moisture Management\", \"category\": \"Insufficient Water\" },\n { id:26, \"value\": \"Pesticides in Surface Water\", \"group\": \"Pesticides Transported to Surface and Groundwater\", \"category\": \"Water Quality Degradation\" },\n { id:27, \"value\": \"Pesticides in Groundwater\", \"group\": \"Pesticides Transported to Surface and Groundwater\", \"category\": \"Water Quality Degradation\" },\n { id:28, \"value\": \"Nutrients in Surface Water\", \"group\": \"Excess Nutrients in Surface and Groundwater\", \"category\": \"Water Quality Degradation\" },\n { id:29, \"value\": \"Nutrients in Groundwater\", \"group\": \"Excess Nutrients in Surface and Groundwater\", \"category\": \"Water Quality Degradation\" },\n { id:30, \"value\": \"Salts in Surface Water\", \"group\": \"Salts in Surface and Groundwater\", \"category\": \"Water Quality Degradation\" },\n { id:31, \"value\": \"Salts in Groundwater\", \"group\": \"Salts in Surface and Groundwater\", \"category\": \"Water Quality Degradation\" },\n { id:32, \"value\": \"Excess Pathogens and Chemicals from Manure, Bio-solids or Compost Applications in Surface Water\", \"group\": \"Excess Pathogens and Chemicals from Manure, Bio-solids or Compost Applications\", \"category\": \"Water Quality Degradation\" },\n { id:33, \"value\": \"Excess Pathogens and Chemicals from Manure, Bio-solids or Compost Applications in Groundwater\", \"group\": \"Excess Pathogens and Chemicals from Manure, Bio-solids or Compost Applications\", \"category\": \"Water Quality Degradation\" },\n { id:34, \"value\": \"Petroleum, Heavy Metals and Other Pollutants Transported to Surface Water\", \"group\": \"Petroleum, Heavy Metals and Other Pollutants Transported to Receiving Waters\", \"category\": \"Water Quality Degradation\" },\n { id:35, \"value\": \"Petroleum, Heavy Metals and Other Pollutants Transported to Groundwater\", \"group\": \"Petroleum, Heavy Metals and Other Pollutants Transported to Receiving Waters\", \"category\": \"Water Quality Degradation\" },\n { id:36, \"value\": \"Excessive Sediment in Surface Water\", \"group\": \"Excessive Sediment in Surface Water\", \"category\": \"Water Quality Degradation\" },\n { id:37, \"value\": \"Elevated Water Temperature\", \"group\": \"Elevated Water Temperature\", \"category\": \"Water Quality Degradation\" },\n { id:38, \"value\": \"Emissions of Particulate Matter (PM) and PM Precursors\", \"group\": \"Emissions of Particulate Matter (PM) and PM Precursors\", \"category\": \"Air Quality Impacts\" },\n { id:39, \"value\": \"Emissions of Ozone Precursors\", \"group\": \"Emissions of Ozone Precursors\", \"category\": \"Air Quality Impacts\" },\n { id:40, \"value\": \"Emissions of Greenhouse Gases (GHGs)\", \"group\": \"Emissions of Greenhouse Gases (GHGs)\", \"category\": \"Air Quality Impacts\" },\n { id:41, \"value\": \"Objectionable Odors\", \"group\": \"Objectionable Odors\", \"category\": \"Air Quality Impacts\" },\n { id:42, \"value\": \"Undesirable Plant Productivity and Health\", \"group\": \"Undesirable Plant Productivity and Health\", \"category\": \"Degraded Plant Condition\" },\n { id:43, \"value\": \"Inadequate Structure and Composition\", \"group\": \"Inadequate Structure and Composition\", \"category\": \"Degraded Plant Condition\" },\n { id:44, \"value\": \"Excessive Plant Pest Pressure\", \"group\": \"Excessive Plant Pest Pressure\", \"category\": \"Degraded Plant Condition\" },\n { id:45, \"value\": \"Wildfire Hazard, Excessive Biomass Accumulation\", \"group\": \"Wildfire Hazard, Excessive Biomass Accumulation\", \"category\": \"Degraded Plant Condition\" },\n { id:46, \"value\": \"Inadequate Habitat - Food\", \"group\": \"Habitat Degradation\", \"category\": \"Fish and Wildlife - Inadequate Habitat\" },\n { id:47, \"value\": \"Inadequate Habitat - Cover/Shelter\", \"group\": \"Habitat Degradation\", \"category\": \"Fish and Wildlife - Inadequate Habitat\" },\n { id:48, \"value\": \"Inadequate Habitat - Water\", \"group\": \"Habitat Degradation\", \"category\": \"Fish and Wildlife - Inadequate Habitat\" },\n { id:49, \"value\": \"Inadequate Habitat - Habitat Continuity (Space)\", \"group\": \"Habitat Degradation\", \"category\": \"Fish and Wildlife - Inadequate Habitat\" },\n { id:50, \"value\": \"Inadequate Feed and Forage\", \"group\": \"Inadequate Feed and Forage\", \"category\": \"Livestock Production Limitation\" },\n { id:51, \"value\": \"Inadequate Shelter\", \"group\": \"Inadequate Shelter\", \"category\": \"Livestock Production Limitation\" },\n { id:52, \"value\": \"Inadequate Water\", \"group\": \"Inadequate Water\", \"category\": \"Livestock Production Limitation\" },\n { id:53, \"value\": \"Equipment and Facilities\", \"group\": \"Equipment and Facilities\", \"category\": \"Inefficient Energy Use\" },\n { id:54, \"value\": \"Farming/Ranching Practices and Field Operations\", \"group\": \"Farming/Ranching Practices and Field Operations\", \"category\": \"Inefficient Energy Use\" }\n ]","export interface Role {\n id: number;\n name: string;\n}\n\nexport function allRoles() : Role[] {\n return [\n { id: 1, name: \"Browser\" },\n { id: 2, name: \"Editor\" }\n ];\n}\n","import { Injectable, OnInit } from '@angular/core';\nimport { HttpClient, HttpHeaders } from '@angular/common/http';\n\nimport { ConfigurationService, Configuration } from './configuration.service'\n\nimport { AuthorizationService } from './authorization.service'\nimport { User } from '../models/user.model'\nimport { Observable, ReplaySubject } from 'rxjs';\n\nexport interface ValidationResult {\n validity: Validity,\n result: T\n}\n\nexport interface Validity { }\n\nexport class Valid implements Validity {\n valid: boolean\n}\n\nexport class Invalid implements Validity {\n invalid: string[] //List of reasons why the request was invalid\n}\n\nclass EndpointConfig { }\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ApiService {\n\n endpointMap: Map = new Map();\n\n defaultEndpoint: EndpointConfig;\n\n constructor(private http: HttpClient, private configService: ConfigurationService, private auth: AuthorizationService) {\n this.configService.getConfig().subscribe((data: Configuration) => {\n this.defaultEndpoint = {\n baseUrl: data.apiRoot\n }\n });\n\n // this.endpointMap = data.api.endpoints;\n // });\n }\n\n //Generic wrapper for a post request setting the auth header from the auth service\n post(controller: string, action: string, data: any, withAuth: boolean = true): Observable {\n\n var drs: ReplaySubject = new ReplaySubject(1);\n\n this.configService.getConfig().subscribe((config: Configuration) => {\n this.defaultEndpoint = {\n baseUrl: config.apiRoot\n }\n\n //Grab the endpoint config\n var cfg = this.endpointMap[controller];\n\n //Default if its not configured\n if (!cfg)\n cfg = this.defaultEndpoint;\n\n\n //Put the controller and action on the url\n var url: string = cfg.baseUrl + controller + \"/\" + action;\n\n //Make the post\n if (withAuth) {\n var authToken = this.auth.getToken();\n\n const httpOptions = {\n headers: new HttpHeaders({\n 'Content-Type': 'application/json',\n 'Authorization': \"Bearer \" + authToken\n })\n };\n return this.http.post(url, data, httpOptions).subscribe(res => {\n drs.next(res);\n }, error => { drs.error(error) });\n }\n else\n return this.http.post(url, data).subscribe(res => {\n drs.next(res);\n }, error => { drs.error(error) });\n }, error => {\n console.error(error);\n });\n\n return drs;\n }\n\n //Generic wrapper for a post request setting the auth header from the auth service\n postGetBlob(controller: string, action: string, data: any, withAuth: boolean = true): Observable {\n\n var drs: ReplaySubject = new ReplaySubject(1);\n\n this.configService.getConfig().subscribe((config: Configuration) => {\n this.defaultEndpoint = {\n baseUrl: config.apiRoot\n }\n\n //Grab the endpoint config\n var cfg = this.endpointMap[controller];\n\n //Default if its not configured\n if (!cfg)\n cfg = this.defaultEndpoint;\n\n\n //Put the controller and action on the url\n var url: string = cfg.baseUrl + controller + \"/\" + action;\n\n //Make the post\n if (withAuth) {\n var authToken = this.auth.getToken();\n\n const httpOptions = {\n headers: new HttpHeaders({\n 'Content-Type': 'application/json',\n 'Authorization': \"Bearer \" + authToken\n }),\n responseType: 'blob' as 'json'\n };\n\n return this.http.post(url, data, httpOptions).subscribe(res => {\n drs.next(res);\n }, error => { drs.error(error) });\n }\n else\n return this.http.post(url, data).subscribe(res => {\n drs.next(res);\n }, error => { drs.error(error) });\n }, error => {\n console.error(error);\n });\n\n return drs;\n }\n\n get(controller: string, action: string, withAuth: boolean = true) {\n var drs: ReplaySubject = new ReplaySubject(1);\n\n this.configService.getConfig().subscribe((data: Configuration) => {\n this.defaultEndpoint = {\n baseUrl: data.apiRoot\n }\n\n //Grab the endpoint config\n var cfg = this.endpointMap[controller];\n\n //Default if its not configured\n if (!cfg)\n cfg = this.defaultEndpoint;\n\n\n //Put the controller and action on the url\n var url: string = cfg.baseUrl + controller + \"/\" + action;\n\n //Make the post\n if (withAuth) {\n var authToken = this.auth.getToken();\n\n const httpOptions = {\n headers: new HttpHeaders({\n 'Content-Type': 'application/json',\n 'Authorization': \"Bearer \" + authToken\n })\n };\n return this.http.get(url, httpOptions).subscribe(res => {\n drs.next(res);\n }, error => { drs.error(error) });\n }\n else\n return this.http.get(url).subscribe(res => {\n drs.next(res);\n }, error => { drs.error(error) });\n }, error => {\n console.error(error);\n });\n\n return drs;\n }\n\n get_profile() {\n return this.post(\"user\", \"GetProfile\", null);\n }\n}\n","import { Injectable, OnInit, OnDestroy } from '@angular/core';\nimport { ConfigurationService, AuthConfig } from './configuration.service';\nimport { HttpClient, HttpHeaders } from '@angular/common/http';\nimport { Observable, ReplaySubject, Subject, Subscription } from 'rxjs';\nimport { ApiService } from './api.service';\nimport { User as UserInfo } from '../models/user.model';\nimport { Router } from '@angular/router';\n\n\n//This class represents a login state\n//We keep the user and profile separated\nexport class Login {\n user: User;\n profile: Profile;\n acls: string[];\n orgs: any;\n\n //Validate that a user is logged in\n //Will be true when a user is set, a profile is set, and the expiration has not lapsed\n isLoggedIn(): boolean {\n\n return (this.user != undefined) &&\n (this.profile != undefined) &&\n (this.user.expires > new Date());\n }\n\n getFullName() : string {\n if(!this.isLoggedIn())\n return \"Not Logged In\"\n else{\n if (this.profile && this.profile.firstname && this.profile.lastname)\n return this.profile.firstname + \" \" + this.profile.lastname;\n else {\n return \"User\";\n }\n }\n }\n\n //Returns a representation of the user's name\n //In some cases the user could have a first name, an email, or neither.\n //In most cases the First name will be set but in the case it is not we default to email and then to \"User\"\n getName(): string {\n if (!this.isLoggedIn())\n return \"Not Logged In\"\n else\n if (this.profile && this.profile.firstname)\n return this.profile.firstname;\n else if (this.profile.email)\n return this.profile.email;\n else\n return \"User\"\n }\n}\n\n\n//Represents a \"User\" in the system (not the associated profile)\n//Will also contain the expiration of the current session\n//This info should come exclusively from the token\nexport class User {\n id: string;\n expires: Date;\n}\n\n//Represents a user's profile\n//We need to know the first, last, and email\n//At a later date we may have stuff like picture, phone number, etc\nexport class Profile {\n firstname: string;\n lastname: string;\n email: string;\n}\n\n//This service provides authorization app wide\n//It handles an oAuth flow (Tested against cognito)\n@Injectable({\n providedIn: 'root'\n})\nexport class AuthorizationService implements OnInit, OnDestroy {\n ngOnDestroy(): void {\n if (this.aclsub) {\n this.aclsub.unsubscribe();\n }\n\n if (this.nextValidationTick) {\n window.clearTimeout(this.nextValidationTick);\n }\n }\n ngOnInit(): void {\n }\n\n configSub: Subscription;\n //References to our token parts\n token: any;\n refreshToken: any;\n idToken: any;\n\n //Keps track if we open login in a tab so we can communicate\n openTab: any;\n\n //Used to track if we are in the middle of loggin in\n //There is a bit of back and fourth with the server so keeping a\n // boolean state makes it easier down the road\n isLoggingIn: boolean = false;\n isRefreshing: boolean = false;\n\n //A copy of our auth config.\n //In the future we should only reference the getConfig version\n // instead of caching it here\n auth: AuthConfig;\n\n //A copy of our current login\n login: Login = new Login();\n\n nextValidationTick: number;\n\n aclsub: Subscription;\n\n orgSub: Subscription;\n\n\n //This is how we communicate to components that need to also keep track of changes to the login\n private replaySubject: ReplaySubject = new ReplaySubject(1);\n private liveSubject: Subject = new Subject();\n\n //We need http to talk to the auth services and config to know who to talk to\n constructor(private http: HttpClient, private config: ConfigurationService, private router: Router) {\n this.isLoggingIn = true;\n //Listen for events from other windows in case we open a popup\n window.addEventListener(\"message\", this.receiveMessage.bind(this), false);\n\n //Attempt to retreive the stored tokens in the session\n this.retrieveTokens();\n\n config.getConfig().subscribe((res) => {\n this.auth = res.authorization;\n })\n\n\n //Grab the get params from the url\n let paramsUrl = window.location.search.substr(1).split(\"&\")\n let params = {};\n\n //Put them into a map\n paramsUrl.forEach(p => {\n let vs = p.split(\"=\");\n params[vs[0]] = vs[1];\n })\n\n //If we have a code we are in the middle of an authorization\n //Otherwise we should validate our token if it is set\n if (params[\"code\"]) {\n this.retreiveToken(params[\"code\"]);\n }\n else if (this.token) {\n this.validateToken();\n }\n else {\n this.isLoggingIn = false;\n }\n }\n\n //Grab the tokens from the session storage if they are set\n retrieveTokens() {\n try {\n this.token = JSON.parse(sessionStorage.getItem(\"nmss:token\"));\n } catch { }\n\n try {\n this.refreshToken = JSON.parse(sessionStorage.getItem(\"nmss:refreshToken\"));\n } catch { }\n\n try {\n this.idToken = JSON.parse(sessionStorage.getItem(\"nmss:idToken\"));\n } catch { }\n\n if (!this.token && !this.refreshToken && !this.idToken) {\n try {\n this.token = JSON.parse(localStorage.getItem(\"nmss:token\"));\n } catch { }\n \n try {\n this.refreshToken = JSON.parse(localStorage.getItem(\"nmss:refreshToken\"));\n } catch { }\n \n try {\n this.idToken = JSON.parse(localStorage.getItem(\"nmss:idToken\"));\n } catch { }\n }\n }\n\n\n //This handles incomming communication\n receiveMessage(msg) {\n //Validate there is data\n if (!msg.data)\n return;\n\n //Ideally any message we need would have the type tagged with auth\n if (msg.data.type === \"auth\") {\n switch (msg.data.status) {\n case \"code\":\n this.retreiveToken(msg.data.code);\n this.closeOpenTab();\n break;\n case \"complete\":\n //We have completed login from another tab. We should update our info\n\n if (msg.data.token)\n sessionStorage.setItem(\"nmss:token\", JSON.stringify(msg.data.token));\n localStorage.setItem(\"nmss:token\", JSON.stringify(msg.data.token));\n if (msg.data.refreshToken)\n sessionStorage.setItem(\"nmss:refreshToken\", JSON.stringify(msg.data.refreshToken));\n localStorage.setItem(\"nmss:refreshToken\", JSON.stringify(msg.data.refreshToken));\n if (msg.data.idToken)\n sessionStorage.setItem(\"nmss:idToken\", JSON.stringify(msg.data.idToken));\n localStorage.setItem(\"nmss:idToken\", JSON.stringify(msg.data.idToken));\n\n this.retrieveTokens();\n\n this.closeOpenTab();\n\n if (this.token) {\n this.validateToken();\n }\n break;\n\n case \"close\":\n window.close();\n break;\n\n case \"fail\":\n this.replaySubject.error(\"login failed\");\n\n this.closeOpenTab();\n break;\n\n default:\n break;\n }\n }\n }\n\n //This will close any tab we have opened for the login process\n closeOpenTab(): void {\n if (this.openTab)\n setTimeout(() => { \n this.openTab.postMessage({ type: \"auth\", status: \"close\" }, window.location.origin) \n }, 5000);\n }\n\n //Ideally this will detect when the token is expired, grab the refresh token, and make the calls but for this sprint this works\n getToken() {\n return this.token;\n }\n\n getRefreshToken() {\n return this.refreshToken;\n }\n\n\n //THis validates and pulls out user info from the token\n validateToken() {\n this.isLoggingIn = true;\n\n if (this.nextValidationTick) {\n window.clearTimeout(this.nextValidationTick);\n this.nextValidationTick = undefined;\n }\n\n if (this.configSub)\n this.configSub.unsubscribe();\n //Ensure we have our configuration setup\n this.configSub =\n this.config.getConfig().subscribe(config => {\n //Parse the parts\n let token = this.parseJwt(this.token);\n let idToken = this.parseJwt(this.idToken);\n\n //Tokens should always have subs ... leave this here for debugging in the short term\n //To be removed later\n if (!token.sub) {\n this.isLoggingIn = false;\n this.logout();\n return;\n }\n\n if (token.sub !== idToken.sub)\n console.log(token);\n\n //Calculate the tokens expiration based on epoch time\n let tokenExp = new Date(0);\n tokenExp.setUTCSeconds(token.exp);\n\n let now = new Date();\n\n //If our token has expired we should clear this out and \"logout\"\n if (tokenExp <= now) {\n this.isLoggingIn = false\n this.tryRefresh();\n return;\n }\n\n //Translate the token into a user\n let u = new User();\n u.id = token.sub;\n u.expires = tokenExp;\n\n //Setup the email for the short term\n let p = new Profile();\n p.email = idToken.email;\n p.firstname = idToken.firstName || idToken[\"custom:firstName\"] || \"\";\n p.lastname = idToken.lastName || idToken[\"custom:lastName\"] || \"\";\n\n this.login.user = u;\n this.login.profile = p;\n\n this.getAcls(config.apiRoot, idToken);\n\n });\n }\n\n async getAcls(apiRoot:String, idToken){\n let error = false;\n\n let headers = {\n headers: new HttpHeaders()\n .set('Authorization', \"Bearer \" + this.token)\n }\n\n let searchRequest: any = {\n searchString: idToken.email\n }\n\n try {\n this.login.acls = await this.http.get(apiRoot + \"User/GetACLs\", headers).toPromise();\n if (!this.nextValidationTick)\n this.nextValidationTick = window.setTimeout(() => { this.validateToken() }, 65 * 1000)\n } catch (err) {\n error = true;\n console.log(\"Error grabbing user acls: \" + err);\n }\n\n try {\n this.login.orgs = await this.http.post(apiRoot + \"Users/Get\", searchRequest, headers).toPromise();\n } catch (err) {\n error = true;\n console.log(\"Error grabbing user org: \" + err);\n }\n\n if(error){\n this.logout();\n } else {\n this.replaySubject.next(this.login);\n this.liveSubject.next(this.login);\n }\n\n }\n\n //Attempt to parse a jwt into an object\n //If it fails we return an empty object\n parseJwt(token) {\n try {\n let base64Url = token.split('.')[1];\n let base64 = base64Url.replace(/-/g, '+').replace(/_/g, '/');\n let jsonPayload = decodeURIComponent(atob(base64).split('').map(function (c) {\n return '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2);\n }).join(''));\n\n return JSON.parse(jsonPayload);\n }\n catch {\n return {};\n }\n }\n\n // Return an observable to handle when login has changed\n onLogin(): Observable {\n return this.replaySubject;\n }\n\n onFutureLogin(): Observable {\n return this.liveSubject; //TODO: We need to return a different observable\n }\n\n // Return the raw login object\n getLogin(): Login {\n return this.login;\n }\n\n // Starts an authorization process\n authorize(): Observable {\n if (!this.login.isLoggedIn() && !this.isLoggingIn)\n this.startLogin(this.auth && this.auth.inline);\n\n return this.replaySubject;\n }\n\n // Starts a login process\n // Set inline to avoid opening a new window\n startLogin(inline: boolean) {\n if (!this.auth) {\n setTimeout(() => { this.startLogin(inline); }, 1000);\n }\n else {\n let host = this.getAppPath();\n let redirectUrl = host + \"/assets/oAuthHelper.html\";\n let loginUrl = \"http\" + (this.auth.useHttps ? \"s\" : \"\") + \"://\" + this.auth.host + \"/\" + this.auth.authorizationEndpoint + \"?client_id=\" + this.auth.clientId + \"&response_type=code&scope=openid+profile&redirect_uri=\" + redirectUrl;\n\n if (inline) {\n window.location.href = loginUrl\n }\n else {\n this.openTab = window.open(loginUrl)\n }\n }\n\n return this.replaySubject;\n }\n\n tryRefresh() {\n this.isRefreshing = true;\n if (!this.auth) {\n setTimeout(() => { this.tryRefresh(); }, 1000);\n }\n else {\n // TODO: The backend should handle this part but I dont have the time to implement it\n\n //Create the url with the values encoded\n let host = this.getAppPath();\n let redirectUrl = host + \"/assets/oAuthHelper.html\";\n let refreshUrl = \"http\" + (this.auth.useHttps ? \"s\" : \"\") + \"://\" + this.auth.host + this.auth.tokenEndpoint;\n\n\n //Setup the body\n let request = new URLSearchParams();\n request.set(\"grant_type\", \"refresh_token\");\n request.set(\"client_id\", this.auth.clientId);\n\n if (this.refreshToken == undefined)\n console.log(this.refreshToken);\n\n request.set(\"refresh_token\", this.refreshToken);\n\n let header = {\n headers: new HttpHeaders()\n .set('Content-Type', 'application/x-www-form-urlencoded')\n .set('Authorization', `Basic ${btoa(this.auth.clientId + \":\" + this.auth.clientSecret)}`)\n }\n // Post the code to get the token\n // Handle errors below\n this.http.post(refreshUrl, request.toString(), header).subscribe((response) => {\n this.isRefreshing = false;\n\n sessionStorage.setItem(\"nmss:token\", response.access_token);\n localStorage.setItem(\"nmss:token\", response.access_token);\n if (response.refresh_token)\n sessionStorage.setItem(\"nmss:refreshToken\", response.refresh_token);\n localStorage.setItem(\"nmss:refreshToken\", response.refresh_token);\n if (response.id_token)\n sessionStorage.setItem(\"nmss:idToken\", response.id_token);\n localStorage.setItem(\"nmss:idToken\", response.id_token);\n\n let opener = this.getMainWindow()\n\n opener.postMessage({ type: \"auth\", status: \"complete\", token: response.access_token, refreshToken: response.refresh_token, idToken: response.id_token }, window.location.origin);\n }, err => {\n this.isRefreshing = false;\n }\n );\n\n }\n }\n\n // Take a code and attempt to retreive a token from it\n retreiveToken(code: string) {\n\n //If our config isnt set try again in a sec\n // TODO we should subscribe to the config\n if (!this.auth) {\n setTimeout(() => { this.retreiveToken(code); }, 1000);\n }\n else {\n // TODO: The backend should handle this part but I dont have the time to implement it\n\n //Create the url with the values encoded\n let host = this.getAppPath();\n let redirectUrl = host + \"/assets/oAuthHelper.html\";\n let tokenUrl = \"http\" + (this.auth.useHttps ? \"s\" : \"\") + \"://\" + this.auth.host + this.auth.tokenEndpoint;\n\n\n // Setup the body\n let request = new URLSearchParams();\n request.set(\"grant_type\", \"authorization_code\");\n request.set(\"client_id\", this.auth.clientId);\n request.set(\"redirect_uri\", redirectUrl);\n request.set(\"code\", code);\n\n // Set the headers to make the request\n let header = {\n headers: new HttpHeaders()\n .set('Content-Type', 'application/x-www-form-urlencoded')\n .set('Authorization', `Basic ${btoa(this.auth.clientId + \":\" + this.auth.clientSecret)}`)\n }\n\n //Post the code to get the token\n // TODO: Handle errors below\n this.http.post(tokenUrl, request.toString(), header).subscribe((response) => {\n sessionStorage.setItem(\"nmss:token\", response.access_token);\n sessionStorage.setItem(\"nmss:refreshToken\", response.refresh_token);\n sessionStorage.setItem(\"nmss:idToken\", response.id_token);\n localStorage.setItem(\"nmss:token\", response.access_token);\n localStorage.setItem(\"nmss:refreshToken\", response.refresh_token);\n localStorage.setItem(\"nmss:idToken\", response.id_token);\n\n let opener = this.getMainWindow();\n\n opener.postMessage({ type: \"auth\", status: \"complete\", token: response.access_token, refreshToken: response.refresh_token, idToken: response.id_token }, window.location.origin);\n }\n );\n\n }\n\n }\n\n getMainWindow() {\n let opener = undefined;\n\n let useWindow = false;\n\n try {\n if (window.opener)\n useWindow = window.opener.location.host == window.location.host;\n else\n useWindow = true;\n }\n catch\n {\n useWindow = true;\n }\n\n if (useWindow)\n opener = window;\n else\n opener = window.opener;\n\n return opener;\n }\n\n // Get the root path of the app from the url\n getAppPath(): string {\n let host = window.location.origin + window.location.pathname;\n if (host.endsWith(\"/\"))\n host = host.substr(0, host.length - 1);\n return host;\n }\n\n // Returns true if the suer is logged in\n isLoggedIn() {\n return this.login.isLoggedIn();\n }\n\n // Clear the token and idtoken\n clearToken(): void {\n\n this.login = new Login();\n this.token = undefined;\n this.idToken = undefined;\n sessionStorage.removeItem(\"nmss:token\");\n sessionStorage.removeItem(\"nmss:idToken\");\n localStorage.removeItem(\"nmss:token\");\n localStorage.removeItem(\"nmss:idToken\");\n\n }\n\n // Clear the refresh token\n clearRefresh(): void {\n this.refreshToken = undefined;\n sessionStorage.removeItem(\"nmss:refreshToken\");\n localStorage.removeItem(\"nmss:refreshToken\");\n }\n\n // Log out the current session\n logout(): Observable {\n\n if (this.nextValidationTick !== undefined)\n clearTimeout(this.nextValidationTick);\n\n setTimeout(() => {\n this.isLoggingIn = false;\n this.isRefreshing = false;\n\n let host = this.getAppPath();\n let redirectUrl = host + \"/assets/oAuthHelper.html\";\n let logoutUrl = \"http\" + (this.auth.useHttps ? \"s\" : \"\") + \"://\" + this.auth.host + \"/\" + this.auth.logoutEndpoint + \"?client_id=\" + this.auth.clientId + \"&response_type=code&scope=openid+profile&logout_uri=\" + redirectUrl;\n\n this.openTab = window.open(logoutUrl);\n setTimeout(() => {\n // TODO - May want to revisit this workaround\n this.clearToken();\n this.clearRefresh();\n this.router.navigate([\"/\"]);\n }, 50)\n }, 100);\n\n return this.replaySubject;\n }\n\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { Observable, ReplaySubject } from 'rxjs';\n// import { debug } from 'node:console';\n\n\n//Defines configuration\nexport class Configuration {\n authorization: AuthConfig;\n app: AppConfig;\n map: MapConfig;\n watersheds: WatershedConfig;\n fields?: FieldsConfig;\n debug: boolean;\n apiRoot: string;\n\n //Our configuration is valid if all the required parts are not undefined\n isValid(): boolean {\n return (this.authorization != undefined) &&\n (this.app != undefined);\n // (this.map != undefined); //TODO ADD this back later\n }\n}\n\n//Defines configuration for our authentication\n//Note in a future version we may want to remove the client secret\n// and allow the backend to handle it\nexport interface AuthConfig {\n host: string,\n clientId: string,\n clientSecret: string,\n authorizationEndpoint: string\n logoutEndpoint: string\n tokenEndpoint: string,\n userInfoEndpoint: string,\n unauthorizedRediret: string,\n useHttps: boolean,\n inline: boolean\n}\n\n\n//These are placeholders\nexport interface AppConfig {\n\n}\n\nexport interface MapConfig {\n\n}\n\nexport interface WatershedConfig {\n\n}\n\nexport interface FieldsConfig {\n\n}\n\n\n\n//Configuration service will provide the configuration as a 'singleton' across the app\n@Injectable({\n providedIn: 'root'\n})\nexport class ConfigurationService {\n //In order to deal with caching and whatnot we will present a replay subject\n private dataSubject: ReplaySubject = new ReplaySubject(1);\n\n //We need HTTP to call the backend to get the config components we need\n constructor(private http: HttpClient) {\n //Previously we had a call to init here.\n //This was removed due to having a partial mock in which we override the getConfig method\n //In testing cases we dont want to make calls to the api or even grab the config in most cases\n //If we left it in, the mock service would still need to call super and thus the init which is not what we want\n //Instead it has been moved to getConfig so that it can be overwritten\n }\n\n //These are the default endpoints we will use to obtain configuration items\n //At the moment only thr auth config has been setup\n authConfigUrl: string = 'app/GetAuthConfig';\n appConfigUrl: string = 'app/GetAppConfig';\n mapConfigUrl: string = 'app/GetMapConfig';\n watershedConfigUrl: string = 'app/GetWatershedsConfig';\n fieldsConfigUrl: string = 'app/GetFieldsConfig';\n\n config: Configuration = new Configuration();\n\n serverRoot: string = \"/\";\n\n initializingFn: any;\n\n authConfigFn: Observable;\n\n //This is called to boot the configuration\n init(): any {\n //Dont try to re-initialize if we are already initializing\n if (!this.initializingFn) {\n this.initializingFn = this.http.get(\"/assets/overrides.json\");\n\n //If we get a valid response on the overrides process them and then call the sub init\n this.initializingFn.subscribe(res => {\n if (res && res.api_host) {\n console.log(\"Overriding API host\")\n this.serverRoot = res.api_host;\n }\n else {\n this.useSelfHost();\n }\n this.initSub();\n }, err => {\n //99% of the time we wont have overrides to load but in the event we need to redirect the api we have it above\n this.useSelfHost();\n this.initSub();\n });\n }\n }\n\n useSelfHost(): void {\n this.serverRoot = window.location.origin;\n if (!this.serverRoot.endsWith(\"/api/\"))\n this.serverRoot += \"/api/\";\n }\n\n //Here we will call the rest of the backend api for getting the config\n initSub(): any {\n this.config.apiRoot = this.serverRoot;\n //Grab the auth config\n if (!this.config.authorization && !this.authConfigFn) {\n this.authConfigFn = this.http.get(this.serverRoot + this.authConfigUrl);\n this.authConfigFn.subscribe(res => {\n this.config.authorization = res;\n this.configUpdated()\n }, err => {\n console.error(err);\n });\n }\n\n //Grab the app config\n if (!this.config.app) {\n this.http.get(this.serverRoot + this.appConfigUrl).subscribe(res => {\n this.config.app = res;\n this.configUpdated()\n }, err => {\n\n });\n }\n\n //Grab the map config\n if (!this.config.map) {\n this.http.get(this.serverRoot + this.mapConfigUrl).subscribe(res => {\n this.config.map = res;\n this.configUpdated()\n }, err => {\n\n });\n }\n\n //Grab the watershed config\n if (!this.config.map) {\n this.http.get(this.serverRoot + this.watershedConfigUrl).subscribe(res => {\n this.config.watersheds = res;\n this.configUpdated()\n }, err => {\n\n });\n }\n\n //Grab the fields config\n if (!this.config.fields) {\n this.http.get(this.serverRoot + this.fieldsConfigUrl).subscribe(res => {\n this.config.fields = res;\n this.configUpdated()\n }, err => {\n\n });\n }\n\n this.updateConfigRegardless();\n\n }\n\n //Check if the config is valid\n configUpdated(): void {\n //If the config is valid notify the observers of the config changes\n if (this.config.isValid()) {\n this.dataSubject.next(this.config);\n }\n\n }\n\n\n //We can use this to test config changes without leaving the app or resetting its state\n reInit() {\n this.purge();\n this.init();\n }\n\n //Purges the individual config portions\n private purge() {\n this.purgeApp();\n this.purgeAuth();\n this.purgeMap();\n }\n\n //The following components below are methods as I forsee returning an observable for the individual components\n //Doing so that way we can notify references to the config that it has changed\n private purgeAuth() {\n this.config.authorization = undefined;\n }\n\n private purgeApp() {\n this.config.app = undefined;\n }\n\n private purgeMap() {\n this.config.map = undefined;\n }\n\n\n //This returns an observable wrapper so we can change the config willynilly without worrying about the components\n public getConfig(): Observable {\n // public getConfig(): ReplaySubject {\n //Call init. Previously it was in the constructor but that proved bad for writing tests!\n this.init();\n return this.dataSubject;\n }\n\n // TODO - Temp work around until configs are updated\n updateConfigRegardless() {\n this.dataSubject.next(this.config);\n }\n\n async getConfigAsync(configUrl) {\n return this.http.get(this.serverRoot + configUrl).toPromise();\n }\n\n}\n","import { Injectable } from '@angular/core';\nimport { Observable, ReplaySubject } from 'rxjs';\nimport { Card } from '../models/card.model';\nimport { ApiService } from './api.service';\n\n\n@Injectable({\n providedIn: 'root'\n})\nexport class DashboardService {\n\n private dataSubject: ReplaySubject = new ReplaySubject(1);\n private dataSubject2: ReplaySubject = new ReplaySubject(1);\n\n //We need HTTP to call the backend to get the config components we need\n constructor(private api : ApiService) {\n //Previously we had a call to init here. \n //This was removed due to having a partial mock in which we override the getConfig method\n //In testing cases we dont want to make calls to the api or even grab the config in most cases\n //If we left it in, the mock service would still need to call super and thus the init which is not what we want\n //Instead it has been moved to getConfig so that it can be overwritten\n }\n\n getCards() {\n setTimeout( () => {\n this.api.get(\"dashboard\", \"GetCards\").subscribe(res => {\n this.dataSubject.next(res);\n }, error => {\n // If we need more error handling we can add here\n console.error(`Error: ${error} Unable to load map config from external resource`);\n });\n }, 50);\n\n return this.dataSubject;\n }\n\n getCardById(id : number) {\n setTimeout( () => {\n this.api.post(\"dashboard\", \"GetCard\", id).subscribe(res => {\n this.dataSubject2.next(res);\n }, error => {\n // If we need more error handling we can add here\n console.error(`Error: ${error} Unable to load map config from external resource`);\n });\n }, 50);\n\n return this.dataSubject2;\n\n }\n\n\n}","import { Injectable } from '@angular/core';\nimport { FormControl, Validators, FormGroup } from '@angular/forms';\nimport { Subject } from 'rxjs';\nimport { FieldBase } from '../../models/dynamic-forms/field-base';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class FieldControlService {\n\n public formSubmitted = new Subject();\n\n constructor() { }\n\n toFormGroup(questions: FieldBase[]) {\n const group: any = {};\n\n if (!questions) {\n questions = [];\n }\n questions.forEach(question => {\n if (question.controlType === 'inline-field') {\n question.elements.forEach(element => {\n group[element.key] = element.required ? new FormControl(element.value || '', Validators.required)\n : new FormControl(element.value || '');\n });\n } else {\n group[question.key] = question.required ? new FormControl(question.value || '', Validators.required)\n : new FormControl(question.value || '');\n }\n });\n\n return new FormGroup(group);\n }\n\n}\n","import { Injectable } from '@angular/core';\nimport { CoreEntity } from '../../models/core-entity.model';\nimport { EditableFields } from '../../models/dynamic-forms/editable-fields.model';\nimport { Fields } from '../../models/dynamic-forms/fields.model';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class FieldService {\n\n constructor() { }\n\n getFields(objectName: string) {\n let fields;\n\n switch (objectName) {\n case CoreEntity.Project:\n fields = EditableFields.ProjectFields;\n break;\n case CoreEntity.Activity:\n fields = EditableFields.ActivityFields;\n break;\n case CoreEntity.ActivityWork:\n fields = EditableFields.ActivityWorkFields;\n break;\n case 'ProjectNarrative':\n fields = EditableFields.ProjectNarrativeFields;\n break;\n case 'ProjectFocus':\n fields = EditableFields.ProjectFocusFields;\n break;\n case 'ActivityModalFields':\n fields = EditableFields.ActivityModalFields;\n break;\n case 'ActivityFields':\n fields = EditableFields.ActivityFields\n break;\n case 'ActivityWorkFields':\n fields = EditableFields.ActivityWorkFields\n break;\n case CoreEntity.Opportunity:\n fields = EditableFields.OppoortunityFields\n break;\n case CoreEntity.Impediment:\n fields = EditableFields.ImpedimentFields\n break;\n case 'FundingModalFields':\n fields = EditableFields.FundingModalFields\n break;\n case CoreEntity.Focal:\n fields = EditableFields.FocalFields\n break;\n // Add additional entities as needed\n\n default:\n break;\n }\n\n fields = this.deepClone(fields);\n\n // Set default values\n fields.forEach(field => {\n if (field.default) {\n const foundOption = field.options.find(item => {\n return item.value === field.default;\n });\n\n // If a selected item is found set the value\n if (foundOption) {\n field.value = foundOption.key;\n }\n }\n });\n\n return fields.sort((a, b) => a.order - b.order);\n }\n\n getEditableFields(layerName: string, values: any) {\n // TODO need to refactor this - got stuck while trying to figure out the issue in dynamic forms though\n const genFields = this.getFields(layerName);\n const narrFields = this.getFields('ProjectNarrative');\n const fields = genFields.concat(narrFields);\n\n fields.forEach(field => {\n const fieldKey = field.key;\n const foundValue = values[fieldKey] || null;\n\n if (foundValue) {\n field.value = foundValue;\n\n // Check drop down value\n if (field.controlType === 'dropdown') {\n const foundOption = field.options.find(item => {\n return item.value === foundValue;\n });\n\n // If a selected item is found set the value\n if (foundOption) {\n field.value = foundOption.key;\n }\n }\n\n // TODO WIP\n if (field.controlType === 'multi-select') {\n const foundOptions = field.options.find(item => {\n return item.value === foundValue;\n });\n\n if (foundOptions) {\n field.value = foundOptions.key;\n }\n\n }\n }\n\n // Add any additional field specific biz logic\n });\n\n return fields;\n }\n\n getEditableFocusFields(layerName: string, values: any, removeFocus?: boolean) {\n // TODO need to refactor this - got stuck while trying to figure out the issue in dynamic forms though\n let fields = this.getFields('ProjectFocus');\n\n if (removeFocus) {\n fields = fields.filter(e => { return e.key !== Fields.ProjectFocus });\n }\n\n fields.forEach(field => {\n const fieldKey = field.key;\n const foundValue = values[fieldKey] || null;\n\n if (foundValue) {\n field.value = foundValue;\n\n if (field.controlType === 'multi-select') {\n const foundOptions = field.options.find(item => {\n return item.value === foundValue;\n });\n\n if (foundOptions) {\n field.value = foundOptions.key;\n }\n\n }\n }\n });\n\n return fields;\n }\n\n getEditableFieldsGeneric(layerName: string, values: any) {\n const fields = this.getFields(layerName);\n\n fields.forEach(field => {\n const fieldKey = field.key;\n const foundValue = values[fieldKey] || null;\n\n if (foundValue) {\n field.value = foundValue;\n\n // Check drop down value\n if (field.controlType === 'dropdown') {\n const foundOption = field.options.find(item => {\n return item.value === foundValue;\n });\n\n // If a selected item is found set the value\n if (foundOption) {\n field.value = foundOption.key;\n }\n }\n\n if (field.controlType === 'multi-select') {\n const foundOptions = field.options.find(item => {\n return item.value === foundValue;\n });\n\n if (foundOptions) {\n field.value = foundOptions.key;\n }\n\n }\n }\n });\n\n return fields;\n }\n\n // Deep clone an object\n private deepClone(obj: Object) {\n return JSON.parse(JSON.stringify(obj));\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Observable, Subject } from 'rxjs';\nimport { ConfigurationService } from '../configuration.service';\nimport { MapService } from './map.service';\nimport { MapLayerEsriExportValue, MapLayer, MapConfigConstants, MapLayerEsriFeatureServiceValue } from '../../models/map/config.model'\nimport { HttpClient } from '@angular/common/http';\nimport { CoreExplorerLayers } from 'src/app/map/sidebar/layer-explorer-container/layer-explorer.model';\n\ndeclare var famMap: any;\ndeclare var window: any;\ndeclare var ol: any;\n\nexport interface LayerResult {\n layer: string;\n results: Result[];\n error?: string;\n}\n\nexport interface Result {\n id: string;\n name: string;\n data: any;\n raw: any;\n highlight: boolean;\n}\n\nexport interface Point {\n x: number;\n y: number;\n tolerance: number;\n}\n\nexport interface Extent {\n topLeft: number;\n bottomLeft: number;\n topRight: number;\n bottomRight: number;\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ConfiguredIdentifySources {\n\n public newIdentifyFromQuery: Subject = new Subject();\n\n constructor(\n private map: MapService,\n private http: HttpClient,\n private config: ConfigurationService,\n ) {\n\n }\n\n public FromExtent(extent: any, returnGeometry: boolean = false): Observable {\n let sub = new Subject();\n\n this.map.getMapConfig().subscribe(conf => {\n let layers = [];\n\n conf.forEach(cat => {\n cat.layers.forEach(layer => {\n if (layer.identify && cat.selection.isSelected(layer.key)) {\n layers.push(layer);\n }\n })\n })\n\n if (layers.length == 0) {\n setTimeout(() => { sub.complete(); }, 500);\n console.log(\"No layers!\");\n }\n\n layers.forEach(layer => {\n this.GenericFromExtent(extent, layer, returnGeometry).subscribe(res => { sub.next(res) });\n })\n\n })\n return sub;\n }\n\n public FromPoint(point: any, onlyImport: boolean = false, returnGeometry: boolean = false): Observable {\n let sub = new Subject();\n \n let layers = [];\n\n this.map.getMapCategories().forEach(cat => {\n cat.layers.forEach(layer => {\n if (layer.identify && cat.selection.isSelected(layer.key) && (onlyImport ? layer.identify.import : true)) {\n layers.push(layer);\n }\n })\n })\n\n if (layers.length == 0) {\n setTimeout(() => { sub.next({ layer: '', results: null }) }, 500);\n }\n let sdalkj = [];\n layers.forEach(layer => {\n this.GenericFromPoint(point, layer, returnGeometry).subscribe(res => { sub.next(res) });\n })\n\n return sub;\n\n }\n\n public FromQuery(query: string, onlyImport: boolean = false, returnGeometry: boolean = false): Observable {\n let sub = new Subject();\n\n this.map.getMapConfig().subscribe(conf => {\n let layers = [];\n\n conf.forEach(cat => {\n cat.layers.forEach(layer => {\n if (layer.identify && cat.selection.isSelected(layer.key) && (onlyImport ? layer.identify.import : true)) {\n layers.push(layer);\n }\n })\n })\n\n if (layers.length == 0) {\n setTimeout(() => { sub.next({ layer: '', results: null }) }, 500);\n return;\n }\n let sdalkj = [];\n layers.forEach(layer => {\n this.GenericFromQuery(query, layer, returnGeometry).subscribe(res => { sub.next(res) });\n })\n })\n\n return sub;\n\n }\n\n public async getExtentFromEsriService(url: string, query: string) {\n const completeUrl = `${url}query?where=${query}&text=&objectIds=&time=&geometry=&geometryType=esriGeometryEnvelope&inSR=&spatialRel=esriSpatialRelIntersects&relationParam=&outFields=&returnGeometry=true&returnTrueCurves=false&maxAllowableOffset=&geometryPrecision=&outSR=&having=&returnIdsOnly=false&returnCountOnly=false&orderByFields=&groupByFieldsForStatistics=&outStatistics=&returnZ=false&returnM=false&gdbVersion=&historicMoment=&returnDistinctValues=false&resultOffset=&resultRecordCount=&queryByDistance=&returnExtentOnly=true&datumTransformation=¶meterValues=&rangeValues=&quantizationParameters=&featureEncoding=esriDefault&f=pjson`; // assumes srs is web mercator\n const res: any = await this.http.get(completeUrl).toPromise();\n\n if (res && res?.extent) {\n return [res.extent.xmin, res.extent.ymin, res.extent.xmax, res.extent.ymax];\n } else {\n return null;\n }\n }\n\n public async getGeomFromEsriService(url: string, query: string) {\n const completeUrl = `${url}query?where=${query}&text=&objectIds=&time=&geometry=&geometryType=esriGeometryEnvelope&inSR=&spatialRel=esriSpatialRelIntersects&relationParam=&outFields=&returnGeometry=true&returnTrueCurves=false&maxAllowableOffset=&geometryPrecision=&outSR=3857&having=&returnIdsOnly=false&returnCountOnly=false&orderByFields=&groupByFieldsForStatistics=&outStatistics=&returnZ=false&returnM=false&gdbVersion=&historicMoment=&returnDistinctValues=false&resultOffset=&resultRecordCount=&queryByDistance=&returnExtentOnly=false&datumTransformation=¶meterValues=&rangeValues=&quantizationParameters=&featureEncoding=esriDefault&f=geojson`; // assumes srs is web mercator\n const res: any = await this.http.get(completeUrl).toPromise();\n\n if (res && res?.features?.[0]?.geometry) {\n return res?.features?.[0]?.geometry;\n } else {\n return null;\n }\n }\n\n private GenericFromExtent(extent: any, layer: MapLayer, returnGeometry: boolean = false): Observable {\n console.log(\"Extent: \", extent)\n let sub = new Subject();\n\n let size = famMap.getMap().getView().viewportSize_;\n\n let width = size[0];\n let height = size[1];\n\n let curZoom = famMap.getMap().getView().getZoom();\n if (layer.identify.minZoom && (curZoom < layer.identify.minZoom)) {\n setTimeout(() => {\n let res = []\n sub.next({ layer: layer.key, results: res, error: \"Layer has a zoom restriction. Zoom in further to use this feature.\" });\n sub.complete();\n }, 250);\n }\n else {\n setTimeout(() => {\n switch (layer.config.type) {\n case MapConfigConstants.esriExport:\n {\n (layer.config.value as MapLayerEsriExportValue).endpoints.forEach(ep => {\n this.http.get(ep.url + (layer.identify.queryLayerIds != undefined && layer.identify.queryLayerIds.length ? \"/\" + layer.identify.queryLayerIds[0] : \"\") + \"?f=json\").subscribe(meta => {\n this.esriID(sub, ep, returnGeometry, extent, layer, meta, width, height);\n },\n err => {\n this.esriID(sub, ep, returnGeometry, extent, layer, {}, width, height);\n })\n\n })\n }\n break;\n case MapConfigConstants.esriFeature:\n case MapConfigConstants.mvt:\n {\n if (window.layerMap && window.layerMap[layer.key]) {\n let lyr = window.layerMap[layer.key]\n let features = this.getFeaturesFromMVT(lyr);\n let res = this.mapMVTToResult(features, layer);\n res.forEach(i => {\n i.raw.forEach(feat => {\n feat.set('layer', layer.key);\n feat.set('tfid', i.id);\n })\n })\n sub.next({ layer: layer.key, results: res });\n sub.complete();\n\n }\n }\n break;\n }\n }, 250);\n }\n\n return sub;\n }\n\n private esriID(sub, ep, returnGeometry, extent, layer, meta, width, height) {\n let fieldMapperNameAlias = {};\n let fieldMapperAliasName = {};\n if (meta.fields) {\n meta.fields.forEach(element => {\n fieldMapperNameAlias[element.name] = element.alias;\n fieldMapperAliasName[element.alias] = element.name;\n });\n }\n\n let url = ep.url + `identify?f=json&sr=3857&geometryPrecision=0&geometryType=esriGeometryEnvelope&geometry=${extent[0]},${extent[1]},${extent[2]},${extent[3]}&mapExtent=${extent[0]},${extent[1]},${extent[2]},${extent[3]}&imageDisplay=${width},${height},96&tolerance=1&returnGeometry=${returnGeometry}`\n if (layer.identify.queryLayerIds && layer.identify.queryLayerIds.length)\n url += \"&layers=visible:\" + (layer.identify.queryLayerIds.join(\",\"));\n this.http.get(url).subscribe(resp => {\n if (resp.results) {\n let features = resp.results;\n let res = [];\n let resMap = {};\n features.forEach(feature => {\n if (resMap[feature.attributes[layer.identify.dataMapping.id.query]])\n return;\n\n let mappedName = feature.attributes[layer.identify.dataMapping.title.query];\n\n if (!mappedName) {\n mappedName = feature.displayFieldName ? feature.attributes[feature.displayFieldName] : feature.value\n }\n\n let newf =\n {\n id: feature.attributes[\"OBJECTID\"] || feature.attributes[layer.identify.dataMapping.id.query],\n name: mappedName,\n data: [],\n raw: {}\n };\n\n if (returnGeometry && feature.geometry) {\n let feats = new ol.format.EsriJSON().readFeatures(feature)\n\n feats.forEach(feat => {\n feat.set('layer', layer.key);\n feat.set('tfid', newf.id);\n });\n\n newf.raw = feats;\n }\n\n layer.identify.dataMapping.fields.forEach(field => {\n if (field.query) {\n let dat = undefined;\n\n if (feature.attributes[field.query])\n dat = feature.attributes[field.query];\n else if (feature.attributes[fieldMapperNameAlias[field.query]])\n dat = feature.attributes[fieldMapperNameAlias[field.query]];\n else if (feature.attributes[fieldMapperAliasName[field.query]])\n dat = feature.attributes[fieldMapperAliasName[field.query]];\n\n newf.data.push({ name: field.name, value: dat });\n }\n else if (field.static)\n newf.data.push({ name: field.name, value: field.static });\n });\n\n resMap[newf.id] = true;\n res.push(newf);\n })\n\n sub.next({ layer: layer.key, results: res });\n sub.complete();\n }\n })\n }\n\n private GenericFromPoint(point: any, layer: MapLayer, returnGeometry: boolean = false): Observable {\n let sub = new Subject();\n\n let size = famMap.getMap().getView().viewportSize_;\n let width = size[0];\n let height = size[1];\n\n setTimeout(() => {\n switch (layer.config.type) {\n case MapConfigConstants.esriExport:\n {\n let extent = famMap.getMap().getView().calculateExtent();\n\n (layer.config.value as MapLayerEsriExportValue).endpoints.forEach(ep => {\n let url = ep.url + `identify?f=json&sr=3857&geometryType=esriGeometryPoint&geometry=${point[0]},${point[1]}&mapExtent=${extent[0]},${extent[1]},${extent[2]},${extent[3]}&imageDisplay=${width},${height},96&tolerance=1&returnGeometry=${returnGeometry}`\n\n if (layer.identify.queryLayerIds && layer.identify.queryLayerIds.length)\n url += \"&layers=visible:\" + (layer.identify.queryLayerIds.join(\",\"));\n\n this.http.get(url).subscribe(resp => {\n if (resp.results) {\n let features = resp.results;\n let res = [];\n let resMap = {};\n features.forEach(feature => {\n let newf =\n {\n id: feature.attributes[\"OBJECTID\"] || feature.attributes[layer.identify.dataMapping.id.query],\n name: feature.displayFieldName ? feature.attributes[feature.displayFieldName] : feature.value || feature.attributes[layer.identify.dataMapping.title.query],\n data: [],\n raw: {} //feature.attributes\n };\n\n if (returnGeometry && feature.geometry) {\n let feats = new ol.format.EsriJSON().readFeatures(feature)\n newf.raw = feats;\n }\n\n layer.identify.dataMapping.fields.forEach(field => {\n if (field.query)\n newf.data.push({ name: field.name, value: feature.attributes[field.query] });\n else if (field.static)\n newf.data.push({ name: field.name, value: field.static });\n });\n\n resMap[newf.id] = true;\n res.push(newf);\n })\n\n sub.next({ layer: layer.key, results: res });\n sub.complete();\n }\n })\n\n });\n }\n break;\n case MapConfigConstants.esriFeature:\n {\n (layer.config.value as MapLayerEsriFeatureServiceValue).endpoints.forEach(ep => {\n let url = ep.url + `query?where=&objectIds=&time=&geometry=${point[0]},${point[1]}&geometryType=esriGeometryPoint&inSR=3857&spatialRel=esriSpatialRelIntersects&resultType=none&distance=0.0&units=esriSRUnit_Meter&returnGeodetic=false&outFields=*&returnGeometry=${returnGeometry}&returnCentroid=false&featureEncoding=esriDefault&multipatchOption=xyFootprint&maxAllowableOffset=&geometryPrecision=&outSR=&datumTransformation=&applyVCSProjection=false&returnIdsOnly=false&returnUniqueIdsOnly=false&returnCountOnly=false&returnExtentOnly=false&returnQueryGeometry=false&returnDistinctValues=false&cacheHint=false&orderByFields=&groupByFieldsForStatistics=&outStatistics=&having=&resultOffset=&resultRecordCount=&returnZ=false&returnM=false&returnExceededLimitFeatures=true&quantizationParameters=&sqlFormat=none&f=pjson`;\n\n this.http.get(url).subscribe(resp => {\n if (resp.features) {\n let features = resp.features;\n let res = [];\n let resMap = {};\n features.forEach(feature => {\n let newf =\n {\n id: feature.attributes[\"OBJECTID\"] || feature.attributes[layer.identify.dataMapping.id.query],\n name: feature.displayFieldName ? feature.attributes[feature.displayFieldName] : feature.value || feature.attributes[layer.identify.dataMapping.title.query],\n data: [],\n raw: {} //feature.attributes\n };\n\n if (returnGeometry && feature.geometry) {\n let feats = new ol.format.EsriJSON().readFeatures(feature)\n newf.raw = feats;\n }\n\n layer.identify.dataMapping.fields.forEach(field => {\n if (field.query)\n newf.data.push({ name: field.name, value: feature.attributes[field.query] });\n else if (field.static)\n newf.data.push({ name: field.name, value: field.static });\n });\n\n resMap[newf.id] = true;\n res.push(newf);\n })\n\n sub.next({ layer: layer.key, results: res });\n sub.complete();\n }\n })\n\n });\n }\n break;\n case MapConfigConstants.mvt:\n {\n if (window.layerMap && window.layerMap[layer.key] && !layer.identify?.queryUrl) {\n let lyr = window.layerMap[layer.key]\n let features = this.getFeaturesFromMVT(lyr);\n features = this.filterFeaturesByPoint(features, point)\n let res = this.mapMVTToResult(features, layer);\n sub.next({ layer: layer.key, results: res });\n sub.complete();\n }\n\n if (layer.identify?.queryUrl) {\n // TODO should refactor as this is a repeat of above\n let url = layer.identify?.queryUrl + `query?where=&objectIds=&time=&geometry=${point[0]},${point[1]}&geometryType=esriGeometryPoint&inSR=3857&spatialRel=esriSpatialRelIntersects&resultType=none&distance=0.0&units=esriSRUnit_Meter&returnGeodetic=false&outFields=*&returnGeometry=${returnGeometry}&returnCentroid=false&featureEncoding=esriDefault&multipatchOption=xyFootprint&maxAllowableOffset=&geometryPrecision=&outSR=&datumTransformation=&applyVCSProjection=false&returnIdsOnly=false&returnUniqueIdsOnly=false&returnCountOnly=false&returnExtentOnly=false&returnQueryGeometry=false&returnDistinctValues=false&cacheHint=false&orderByFields=&groupByFieldsForStatistics=&outStatistics=&having=&resultOffset=&resultRecordCount=&returnZ=false&returnM=false&returnExceededLimitFeatures=true&quantizationParameters=&sqlFormat=none&f=pjson`;\n \n this.http.get(url).subscribe(resp => {\n if (resp.features) {\n let features = resp.features;\n let res = [];\n let resMap = {};\n features.forEach(feature => {\n let newf =\n {\n id: feature.attributes[\"OBJECTID\"] || feature.attributes[layer.identify.dataMapping.id.query],\n name: feature.displayFieldName ? feature.attributes[feature.displayFieldName] : feature.value || feature.attributes[layer.identify.dataMapping.title.query],\n data: [],\n raw: {} //feature.attributes\n };\n \n if (returnGeometry && feature.geometry) {\n let feats = new ol.format.EsriJSON().readFeatures(feature)\n newf.raw = feats;\n }\n \n layer.identify.dataMapping.fields.forEach(field => {\n if (field.query)\n newf.data.push({ name: field.name, value: feature.attributes[field.query] });\n else if (field.static)\n newf.data.push({ name: field.name, value: field.static });\n });\n \n resMap[newf.id] = true;\n res.push(newf);\n })\n \n sub.next({ layer: layer.key, results: res });\n sub.complete();\n }\n })\n }\n }\n break;\n }\n }, 250);\n\n return sub;\n }\n\n private GenericFromQuery(query: string, layer: MapLayer, returnGeometry: boolean = false): Observable {\n let sub = new Subject();\n\n let size = famMap.getMap().getView().viewportSize_;\n let width = size[0];\n let height = size[1];\n\n setTimeout(() => {\n switch (layer.config.type) {\n case MapConfigConstants.esriExport:\n {\n let extent = famMap.getMap().getView().calculateExtent();\n\n (layer.config.value as MapLayerEsriExportValue).endpoints.forEach(ep => {\n let url = ep.url + `/${layer.identify.queryLayerIds[0]}/query?f=json&sr=3857&where=${query}&returnGeometry=${returnGeometry}&outFields=*`\n\n this.http.get(url).subscribe(resp => {\n if (resp.features) {\n let features = resp.features;\n let res = [];\n let resMap = {};\n features.forEach(feature => {\n\n let newf =\n {\n id: feature.attributes[\"OBJECTID\"] || feature.attributes[layer.identify.dataMapping.id.query],\n name: feature.displayFieldName ? feature.attributes[feature.displayFieldName] : feature.attributes[layer.identify.dataMapping.title.query],\n data: [],\n raw: {} //feature.attributes\n };\n\n if (returnGeometry && feature.geometry) {\n let feats = new ol.format.EsriJSON().readFeatures(feature)\n newf.raw = feats;\n }\n\n layer.identify.dataMapping.fields.forEach(field => {\n if (field.query)\n newf.data.push({ name: field.name, value: feature.attributes[field.query] });\n else if (field.static)\n newf.data.push({ name: field.name, value: field.static });\n });\n\n resMap[newf.id] = true;\n res.push(newf);\n })\n\n sub.next({ layer: layer.key, results: res });\n sub.complete();\n }\n })\n\n });\n }\n break;\n }\n }, 250);\n\n return sub;\n }\n\n getFeaturesFromMVT(layer): any[] {\n let src = layer.getSource();\n //let ptGeom = new ol.geom.Point(point);\n let vp = famMap.getMap().getView().calculateExtent();\n let features = src.getFeaturesInExtent(vp);\n features = features.map(feat => {\n if (feat.getOrientedFlatCoordinates) {\n return { raw: feat, pg: new ol.Feature(new ol.geom.Polygon(feat.getOrientedFlatCoordinates(), 'XY', feat.getEnds())) }\n }\n else {\n return { raw: feat, pg: feat }\n }\n })\n\n return features;\n }\n\n filterFeaturesByPoint(features, point): any[] {\n return features.filter(feat => {\n var g = feat.pg.getGeometry();\n return g.intersectsCoordinate(point);\n });\n }\n\n mapMVTToResult(features, layer): any[] {\n let res = [];\n let resMap = {};\n features.forEach(fm => {\n let feature = fm.raw;\n if (!feature.properties_)\n feature.properties_ = feature.values_;\n\n if (resMap[feature.properties_[layer.identify.dataMapping.id.query]]) {\n resMap[feature.properties_[layer.identify.dataMapping.id.query]].raw.push(fm.pg);\n return;\n }\n\n let newf =\n {\n id: feature.properties_[layer.identify.dataMapping.id.query],\n name: feature.properties_[layer.identify.dataMapping.title.query],\n data: [],\n raw: [fm.pg],\n highlight: false\n };\n\n layer.identify.dataMapping.fields.forEach(field => {\n if (field.query)\n newf.data.push({ name: field.name, value: feature.properties_[field.query] });\n else if (field.static)\n newf.data.push({ name: field.name, value: field.static });\n });\n\n resMap[newf.id] = newf;\n res.push(newf);\n })\n\n return res;\n }\n\n getLayerByKey(key: string) {\n // Assumes no repeated keys (which there should not be any anyways)\n const layers = famMap.getMap().getLayers().getArray();\n const expLayers = layers.find(e => e?.values_?.id === 'cat_explorer');\n const refLayers = layers.find(e => e?.values_?.id === 'cat_reference');\n const foundLayerInExp = expLayers.values_.layers.array_.find(e => e?.values_?.id === key);\n const foundLayerInRef = refLayers.values_.layers.array_.find(e => e?.values_?.id === key);\n const foundLayer = foundLayerInExp ? foundLayerInExp : foundLayerInRef || null;\n return foundLayer;\n }\n\n async requestFeatureExtent(featureKey, featureId) {\n let url, query;\n\n const res = await this.config.getConfigAsync(this.config.fieldsConfigUrl);\n const urlConfig = res['MapZoom'];\n\n let key, subLayerId;\n switch (featureKey) {\n case CoreExplorerLayers.ProjectKey:\n // key = projLayer.values_.source.key_;\n // subLayerId = projLayer.values_.source.params_.LAYERS.replace(/^\\D+/g, '');\n url = `${urlConfig[CoreExplorerLayers.ProjectKey]}/`;\n query = `objectid=${featureId}`;\n break;\n case CoreExplorerLayers.ActivityKey:\n // key = actLayer.values_.source.key_;\n // subLayerId = actLayer.values_.source.params_.LAYERS.replace(/^\\D+/g, '');\n url = `${urlConfig[CoreExplorerLayers.ActivityKey]}/`;\n query = `objectid=${featureId}`;\n break;\n case CoreExplorerLayers.FocalKey:\n // key = focalLayer.values_.source.key_;\n // subLayerId = focalLayer.values_.source.params_.LAYERS.replace(/^\\D+/g, '');\n url = `${urlConfig[CoreExplorerLayers.FocalKey]}/`;\n query = `name='${featureId}'`;\n break;\n case CoreExplorerLayers.PrioLandKey:\n // key = prioLayer.values_.source.key_;\n // subLayerId = prioLayer.values_.source.params_.LAYERS.replace(/^\\D+/g, '');\n url = `${urlConfig[CoreExplorerLayers.PrioLandKey]}/`;\n query = `name='${featureId}'`;\n break;\n case CoreExplorerLayers.WatershedKey:\n // key = waterLayer.values_.source.key_;\n // subLayerId = waterLayer.values_.source.params_.LAYERS.replace(/^\\D+/g, '');\n url = `${urlConfig[CoreExplorerLayers.WatershedKey]}/`;\n query = `name='${featureId}'`;\n break;\n\n default:\n break;\n }\n\n const extent = await this.getExtentFromEsriService(url, query);\n \n return extent;\n }\n\n async requestFeatureGeom(featureKey, featureId) {\n let url, query;\n\n const res = await this.config.getConfigAsync(this.config.fieldsConfigUrl);\n const urlConfig = res['MapZoom'];\n\n switch (featureKey) {\n case CoreExplorerLayers.ProjectKey:\n url = `${urlConfig[CoreExplorerLayers.ProjectKey]}/`;\n query = `objectid=${featureId}`;\n break;\n case CoreExplorerLayers.ActivityKey:\n url = `${urlConfig[CoreExplorerLayers.ActivityKey]}/`;\n query = `objectid=${featureId}`;\n break;\n case CoreExplorerLayers.FocalKey:\n url = `${urlConfig[CoreExplorerLayers.FocalKey]}/`;\n query = `name='${featureId}'`;\n break;\n case CoreExplorerLayers.PrioLandKey:\n url = `${urlConfig[CoreExplorerLayers.PrioLandKey]}/`;\n query = `name='${featureId}'`;\n break;\n case CoreExplorerLayers.WatershedKey:\n url = `${urlConfig[CoreExplorerLayers.WatershedKey]}/`;\n query = `name='${featureId}'`;\n break;\n\n default:\n break;\n }\n\n const featureGeom = await this.getGeomFromEsriService(url, query);\n \n return featureGeom;\n }\n}","import { Injectable } from '@angular/core';\nimport { HttpClient, HttpHeaders } from '@angular/common/http';\nimport { DBMapConfig, DBMapConfigLayers, MapCategory, MapLayer, MapConfigConstants, Service, MapSelection, MonoselectiveSelection, PolyselectiveSelection } from '../../models/map/config.model';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { ApiService } from '../api.service';\nimport { LegendColor, LegendUrl } from '../../models/map/legend.model'\nimport { PlugmapAPIService } from './plugmap-api.service';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class MapService {\n\n private mapConfig$: BehaviorSubject = new BehaviorSubject(null);\n private slimMapConfig$: BehaviorSubject = new BehaviorSubject(null);\n private mapService$: BehaviorSubject = new BehaviorSubject(null);\n\n constructor(\n private http: HttpClient,\n private api: ApiService,\n private plugmap: PlugmapAPIService,\n ) { }\n\n public getMapCategories(): MapCategory[] {\n return this.plugmap.getMapCategories();\n }\n\n public getMapConfig(): Observable {\n // Check if there is an existing map config, else retrieve it\n if (!this.mapConfig$.getValue()) {\n // This method will fire a \"next\" event for subscribers\n this.getDbMapConfig();\n }\n return this.mapConfig$.asObservable();\n }\n\n public getSlimMapConfig(): Observable {\n // Check if there is an existing map config, else retrieve it\n if (!this.slimMapConfig$.getValue()) {\n // This method will fire a \"next\" event for subscribers\n this.getDbSlimMapConfig();\n }\n return this.slimMapConfig$.asObservable();\n }\n\n public getServices(): Observable {\n // Check if there is an existing map config, else retrieve it\n if (!this.mapConfig$.getValue()) {\n // This method will fire a \"next\" event for subscribers\n this.getAPIMapService();\n }\n return this.mapService$.asObservable();\n }\n\n private setMapConfig(inMapConfig: MapCategory[]) {\n this.mapConfig$.next(inMapConfig);\n }\n\n private setSlimMapConfig(inMapConfig: MapCategory[]) {\n this.slimMapConfig$.next(inMapConfig);\n }\n\n private setServices(svcs: Service[]) {\n this.mapService$.next(svcs);\n }\n\n private getDbMapConfig() {\n this.api.get(\"app\", \"GetMapConfig\").subscribe(res => {\n const flatConfig = this.convertDbMapConfig(res as DBMapConfig);\n this.setMapConfig(flatConfig);\n }, error => {\n // If we need more error handling we can add here\n console.error(`Error: ${error} Unable to load map config from external resource`);\n });\n }\n\n private getDbSlimMapConfig() {\n this.api.get(\"app\", \"GetSlimMapConfig\").subscribe(res => {\n const flatConfig = this.convertDbMapConfig(res as DBMapConfig);\n this.setSlimMapConfig(flatConfig);\n }, error => {\n // If we need more error handling we can add here\n console.error(`Error: ${error} Unable to load map config from external resource`);\n });\n }\n\n private getAPIMapService() {\n this.api.get(\"app\", \"GetMapServices\").subscribe(res => {\n this.setServices(res);\n }, error => {\n // If we need more error handling we can add here\n console.error(`Error: ${error} Unable to load map services from external resource`);\n });\n }\n\n private convertDbMapConfig(dbConfig: DBMapConfig): MapCategory[] {\n // The array which will hold map category objects\n const appMapConfig: MapCategory[] = [];\n\n // Cycle through categories and create base objects\n dbConfig.layerCategories.forEach(cat => {\n const newCat: MapCategory = {\n category_key: cat.key,\n opacity: cat.transparency,\n layers: [],\n name: cat.name,\n multiphasic: cat.multiphasic,\n openness: cat.openness\n };\n\n // Check selectiveness\n if (cat.selectiveness === MapConfigConstants.monoselective) {\n newCat.selection = new MonoselectiveSelection(cat.defaultSelection[0]);\n } else if (cat.selectiveness === MapConfigConstants.polyselective) {\n newCat.selection = new PolyselectiveSelection(cat.defaultSelection);\n }\n\n // Get layer group list for given category and find those in the DB config\n const layerGroups = cat.layerGroups;\n const foundLayerGroup = dbConfig.layerGroups.filter(layerGroup => {\n return layerGroups.includes(layerGroup.key);\n });\n\n // Cycle through select layer groups to unpack layers\n foundLayerGroup.forEach(lyrGrp => {\n // Get layer keys and cycle through those in the DB config\n const layerKeys = lyrGrp.layers;\n layerKeys.forEach(layerKey => {\n const currentLayer = dbConfig.layers.find(lyr => {\n return lyr.key === layerKey;\n });\n\n // If any layers are found\n if (currentLayer) {\n // Create a base map config\n const newLayer: MapLayer = {\n key: currentLayer.key,\n name: currentLayer.name,\n opacity: currentLayer.opacity\n };\n\n // Check if the obj has an identify property\n if (MapConfigConstants.identify in currentLayer) {\n this.configureIdentify(currentLayer, newLayer);\n }\n\n if (\"legend\" in currentLayer) {\n newLayer.legend = currentLayer.legend;\n }\n\n\n // Crosswalk the map types TODO: Support more types as needed\n newLayer.config = { type: null, value: null };\n if (MapConfigConstants.xyz in currentLayer) {\n newLayer.config.type = MapConfigConstants.xyz;\n newLayer.config.value = currentLayer.xyz;\n } else if (MapConfigConstants.esriExport in currentLayer) {\n newLayer.config.type = MapConfigConstants.esriExport;\n newLayer.config.value = currentLayer.esriExport;\n\n if (!currentLayer.legend || currentLayer.legend.length == 0) {\n this.configureLegendEsri(currentLayer, newLayer);\n } else {\n newLayer.legend = currentLayer.legend;\n }\n\n } else if (MapConfigConstants.esriFeature in currentLayer) {\n newLayer.config.type = MapConfigConstants.esriFeature;\n newLayer.config.value = currentLayer.esriFeature;\n\n if (!currentLayer.legend || currentLayer.legend.length == 0) {\n this.configureLegendEsri(currentLayer, newLayer);\n }\n } else if (MapConfigConstants.wmts in currentLayer) {\n newLayer.config.type = MapConfigConstants.wmts;\n newLayer.config.value = currentLayer.wmts;\n } else if (MapConfigConstants.mvt in currentLayer) {\n newLayer.config.type = MapConfigConstants.mvt;\n newLayer.config.value = currentLayer.mvt;\n } else if (MapConfigConstants.wms in currentLayer) {\n newLayer.config.type = MapConfigConstants.wms;\n newLayer.config.value = currentLayer.wms;\n }\n\n // Add to the category's layer list\n newCat.layers.push(newLayer);\n }\n });\n });\n\n // Add to the main array's categories list\n appMapConfig.push(newCat);\n });\n\n return appMapConfig;\n }\n\n configureIdentify(currentLayer: DBMapConfigLayers, newLayer: MapLayer) {\n newLayer.identify = currentLayer.identify; // new GenericIdentifyService(newLayer); \n }\n\n configureLegendEsri(currentLayer: DBMapConfigLayers, newLayer: MapLayer) {\n newLayer.legend = [];\n\n let cfg;\n if (currentLayer?.esriExport) {\n cfg = currentLayer.esriExport || { endpoints: [] };\n } else if (currentLayer?.esriFeature) {\n cfg = currentLayer.esriFeature || { endpoints: [] };\n } else {\n cfg = { endpoints: [] };\n }\n\n cfg.endpoints.forEach((ep) => {\n\n let filters = undefined;\n if (ep.layersToShow) {\n if (ep.layersToShow.indexOf(\"show\") == 0) {\n let is = ep.layersToShow.replace(\"show:\", \"\").replace(\" \", \"\").split(\",\");\n if (is.length)\n filters = is;\n }\n\n }\n\n const httpOptions = {\n headers: new HttpHeaders({\n 'Accept': 'application/json'\n })\n };\n\n if (ep.url.endsWith('FeatureServer', ep.url.length - 3)) {\n let url = ep.url + \"?f=json\";\n\n this.http.get(url, httpOptions).subscribe(res => {\n if (!res.drawingInfo || !res.drawingInfo.renderer || !res.drawingInfo.renderer.type || res.drawingInfo.renderer.type !== 'simple') {\n console.log(url);\n return;\n }\n\n newLayer.legend.push(\n {\n label: currentLayer.name,\n display: { symbol: res?.drawingInfo?.renderer?.symbol }\n });\n }, err => {\n newLayer.legend = undefined;\n })\n } else {\n let url = ep.url + \"legend?f=json&size=30,20\";\n\n this.http.get(url, httpOptions).subscribe(res => {\n if (!res.layers) {\n console.log(url);\n return;\n }\n\n res.layers.forEach(layer => {\n\n if (filters && !(filters.includes(layer.layerId + \"\"))) {\n return;\n }\n\n layer.legend.forEach(legendItem => {\n if (!newLayer.legend)\n newLayer.legend = [];\n newLayer.legend.push(\n {\n label: legendItem.label ||\n layer.name ||\n currentLayer.name,\n display: { url: `data:image/png;base64,${legendItem.imageData}` }\n });\n })\n })\n }, err => {\n newLayer.legend = undefined;\n })\n }\n // let url = ep.url + \"legend?f=json&size=30,20\";\n\n // this.http.get(url, httpOptions).subscribe(res => {\n // if (!res.layers) {\n // console.log(url);\n // return;\n // }\n\n // res.layers.forEach(layer => {\n\n // if (filters && !(filters.includes(layer.layerId + \"\"))) {\n // return;\n // }\n\n // layer.legend.forEach(legendItem => {\n // if (!newLayer.legend)\n // newLayer.legend = [];\n // newLayer.legend.push(\n // {\n // label: legendItem.label ||\n // layer.name ||\n // currentLayer.name,\n // display: { url: `data:image/png;base64,${legendItem.imageData}` }\n // });\n // })\n // })\n // }, err => {\n // newLayer.legend = undefined;\n // })\n\n })\n }\n\n}\n","import { Injectable, DebugEventListener } from '@angular/core';\nimport { MapCategory, Service } from '../../models/map/config.model';\nimport { FixedLengthArray } from '../../types/fixed-length-array';\nimport { Candidates } from '../../models/map/geo-search.model';\nimport { IPoint } from '@esri/arcgis-rest-types';\nimport { Subject, Observable, BehaviorSubject } from 'rxjs';\nimport { TouchSequence } from 'selenium-webdriver';\n\ndeclare var window: any;\ndeclare var famMap: any;\ndeclare var ol: any;\n\n@Injectable({\n providedIn: 'root'\n})\nexport class PlugmapAPIService {\n\n private mapCategories: MapCategory[];\n\n drawing: boolean = false;\n\n drawnShape: any = undefined;\n\n private shapeChange: Subject = new Subject();\n\n private mapCenter$: BehaviorSubject = new BehaviorSubject({ x: 0, y: 0 });\n private mapZoom$: BehaviorSubject = new BehaviorSubject(0);\n private mapExtent$: BehaviorSubject = new BehaviorSubject([0, 0, 0, 0]);\n\n private importCount: number;\n importing: boolean = false;\n\n constructor() {\n\n //These are hacks to test stuff in the browser via the console\n window.setCategoryTransparencyByKey = this.setCategoryTransparencyByKey.bind(this);\n window.turnLayerOnByKey = this.turnLayerOnByKey.bind(this);\n window.turnLayerOffByKey = this.turnLayerOffByKey.bind(this);\n\n window.addEventListener(\"message\", this.receiveMessage.bind(this), false);\n\n }\n\n getMapCenter(): Observable {\n return this.mapCenter$.asObservable();\n }\n\n getMapExtent(): Observable {\n return this.mapExtent$.asObservable();\n }\n\n getMapZoom(): Observable {\n return this.mapZoom$.asObservable();\n }\n\n private setMapCenter(newCenter: any) {\n this.mapCenter$.next(newCenter);\n }\n\n private setMapExtent(newExtent: any) {\n this.mapExtent$.next(newExtent);\n }\n\n private setMapZoom(newZoom: any) {\n this.mapZoom$.next(newZoom);\n }\n\n receiveMessage(msg) {\n\n //Validate there is data\n if (!msg.data)\n return;\n\n //We only care about map messages\n if (msg.data.source !== \"map\")\n return;\n\n //Ideally any message we need would have the type tagged with auth\n\n switch (msg.data.cmd) {\n case \"map:drawingStarted\":\n {\n this.drawing = true;\n }; break;\n case \"map:drawingEnd\":\n {\n this.drawing = false;\n }; break;\n case \"map:drawingEnded\":\n {\n }; break;\n case \"map:flattened\":\n {\n //Here we have the flat shape as a wkt and the area of the flattened area\n // {\n // \"type_\": \"Polygon\",\n // \"wkt\": \"POLYGON((-12530374.855545709 4267313.641800819,-12582488.841428438 4169466.9744291664,-12539946.812136415 4107781.031955733,-12442100.144764762 4180102.481752172,-12530374.855545709 4267313.641800819))\",\n // \"acres\": 1840459.8756376486,\n // \"id\": -1\n // }\n console.log(msg)\n this.drawnShape = msg.data.data;\n this.shapeChange.next(this.drawnShape);\n }; break;\n case \"map:extentUpdated\":\n {\n const newCenter = { ...msg.data.data.center };\n const ext = [msg.data.data.xmin, msg.data.data.xmax, msg.data.data.ymin, msg.data.data.ymax]\n let zoom = famMap.getMap().getView().getZoom();\n this.setMapCenter(newCenter);\n this.setMapExtent(ext);\n this.setMapZoom(zoom);\n }; break;\n case \"map:modifyEnd\":\n {\n\n }; break;\n case \"map:mapReady\":\n {\n\n }; break;\n default: {\n }\n }\n\n }\n\n public setImportCount(count: number) {\n this.importCount = count;\n }\n\n public getImportCount() {\n return this.importCount;\n }\n\n public setImporting(importing: boolean) {\n this.importing = importing;\n }\n\n public getImporting() {\n return this.importing;\n }\n\n public setCategories(mapCategories: MapCategory[]) {\n this.mapCategories = mapCategories;\n this.setupThemes(mapCategories);\n }\n\n public getMapCategories(): MapCategory[] {\n return this.mapCategories;\n }\n\n public setServices(services: Service[]) {\n this.sendMapCommand(\"setServicesCmd\", services)\n }\n\n public createMap(elid: string, mapCenter: FixedLengthArray<[number, number]>, defaultZoom: number, maxZoom: number, minZoom: number) {\n window.app = { ports: {}, suppressPortWarnings: true };\n window.renderMap(elid, { \"target\": elid, \"center\": mapCenter, \"zoom\": defaultZoom, \"maxZoom\": maxZoom, \"minZoom\": minZoom })\n }\n\n public destroyMap(): void {\n if (window.famMap) window.famMap.destruct();\n }\n\n //This applies the themes to the map\n private setupThemes(themes: MapCategory[]) {\n window.postMessage({ destination: \"map\", cmd: \"addThemesCmd\", data: themes }, window.location.origin);\n }\n\n private sendMapCommand(command: string, data: any) {\n window.postMessage({ destination: \"map\", cmd: command, data: data }, window.location.origin);\n }\n\n //We should move this into a service or api of some sort\n\n setCategoryTransparencyByKey(key: string, transparency: number) {\n for (let cat of this.mapCategories) {\n if (cat.category_key === key) {\n cat.opacity = transparency;\n\n var data = { category_key: cat.category_key, transparency: transparency };\n this.sendMapCommand(\"setCategoryTransparencyCmd\", data);\n break;\n }\n }\n }\n\n\n //TODO: These can be made faster if we mapped the layers to the categories but the extra development effort may not be worth it\n turnLayerOnByKey(key: string) {\n for (let cat of this.mapCategories) {\n for (let layer of cat.layers) {\n if (layer.key === key) {\n cat.selection.select(key);\n var data = [{ category_key: cat.category_key, selection: cat.selection }];\n this.sendMapCommand(\"toggleSelectedThemesCmd\", data);\n }\n }\n }\n }\n\n //This probably shouldnt work for monoselective but eh\n turnLayerOffByKey(key: string) {\n for (let cat of this.mapCategories) {\n for (let layer of cat.layers) {\n if (layer.key === key) {\n cat.selection.select(key); //TODO\n\n var data = [{ category_key: cat.category_key, selection: cat.selection }];\n this.sendMapCommand(\"toggleSelectedThemesCmd\", data);\n }\n\n }\n }\n }\n\n zoomToCandidates(candidates: Candidates) {\n this.sendMapCommand(\"gotoSearchCandidates\", candidates);\n }\n\n zoomToPoint(point: IPoint) {\n const webPoint = ol.proj.fromLonLat([point.x, point.y])\n this.sendMapCommand(\"extentToPointZoomCmd\", { x: webPoint[0], y: webPoint[1], zoom: 11 });\n }\n\n startDrawingPolygon(): Observable {\n\n this.drawing = true;\n this.sendMapCommand(\"startDrawingWithMode\", { \"mode\": \"polygon\" });\n return this.shapeChange.asObservable();\n }\n\n isDrawing(): boolean {\n return this.drawing;\n }\n\n hasShape(): boolean {\n return this.drawnShape != undefined;\n }\n\n stopDrawing(): any {\n console.log(\"stop drawing\")\n let tmp = this.drawnShape;\n this.sendMapCommand(\"setWKTs\", { clear: true, wkts: [] });\n setTimeout(() => { this.sendMapCommand(\"disableDraw\", undefined); }, 250);\n this.drawnShape = undefined;\n this.drawing = false;\n return tmp;\n }\n\n clearShape() {\n this.sendMapCommand(\"setWKTs\", { clear: true, wkts: [] });\n }\n\n refreshMap(): void {\n this.sendMapCommand(\"refreshMap\", undefined);\n }\n\n clearPoints() {\n this.sendMapCommand(\"clearSearchCmd\", undefined);\n }\n\n fitToWKT(wkt: any) {\n this.sendMapCommand(\"fitToWktCmd\", wkt);\n }\n\n public initDraw() {\n this.sendMapCommand(\"initDrawingCmd\", null);\n }\n\n public setWKTs(wkts: string[]): Observable {\n console.log(\"Setting features to \", wkts)\n\n\n var m = wkts.map(wkt => { return { wkt: wkt } });\n\n this.sendMapCommand(\"addWKTsToMap\", m);\n\n return this.shapeChange.asObservable();\n }\n\n public setFeats(feats: any): Observable {\n console.log(\"Setting features to \", feats)\n if (feats.length > 1) {\n feats = [feats[0]];\n }\n this.drawing = true;\n let geoJSON = new ol.format.GeoJSON().writeFeatures(feats);\n this.sendMapCommand(\"drawSetGeoJSON\", geoJSON);\n return this.shapeChange.asObservable();\n }\n\n public getShapeChange() { return this.shapeChange.asObservable(); }\n\n public setFeatsGeoJSON(feats: any): Observable {\n let geoJSON = JSON.stringify(feats);\n\n this.drawing = true;\n this.sendMapCommand(\"drawSetGeoJSON\", geoJSON);\n return this.shapeChange.asObservable();\n }\n\n //All ports\n // 2\n // addThemesCmd\n // toggleSelectedThemesCmd\n // setCategoryTransparencyCmd\n // setServicesCmd\n\n // 3\n // unloadDrawingPlugin\n // setWKTs\n // startDrawingWithMode\n // enableModify\n // disableModify\n // disableDraw\n // initDrawingCmd\n // destructDrawingCmd\n // hideDrawingCmd\n // drawingEnded\n\n\n // fitToWktCmd\n // refreshMap\n\n\n // extentToPointZoomCmd\n // addReferenceItems\n // setBuffer\n // selectById\n // deleteFeatureById\n // setExtentByFeatueId\n // featurePickerSetLayer\n // hideReferenceLayer\n // hideReferenceLayerDisplay\n // featurePickerDisable\n // xmlToJs\n // selectFeature\n // deselectFeature\n // clearReferenceFeatures\n // normalizeEsri\n // addWKTsToMap\n // highlightCmd\n // unhighlightCmd\n // clearHighlightLayerCmd\n // openChooseFile\n // gotoSearchCandidates\n // gotoSearchCandidate\n // setPoints\n // moveMapCenter\n // clearSearchCmd\n}\n","import { Injectable } from '@angular/core';\nimport proj4 from 'proj4';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ProjectionService {\n\n public webMercatorWkt = 'PROJCS[\"WGS 84 / Pseudo-Mercator\",GEOGCS[\"WGS 84\",DATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"Mercator_1SP\"],PARAMETER[\"central_meridian\",0],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easting\",0],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],EXTENSION[\"PROJ4\",\"+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs\"],AUTHORITY[\"EPSG\",\"3857\"]]';\n public wgs84Wkt = 'GEOGCS[\"WGS 84\",DATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]]';\n\n constructor() { }\n\n public reprojectPolyWgs84ToWeb(layer: any): any {\n const source = new proj4.Proj(this.wgs84Wkt);\n const dest = new proj4.Proj(this.webMercatorWkt);\n const inData = { ...layer };\n\n proj4.reportError = (msg) => {\n throw new Error('Whoops: ' + msg);\n };\n\n for (const feature of inData.features) {\n for (const coordinates of feature.geometry.coordinates) {\n for (let index = 0; index < coordinates.length; index++) {\n const coordPair = coordinates[index];\n const projCoordPair = proj4.transform(source, dest, coordinates[index]); \n coordinates[index] = [projCoordPair.x, projCoordPair.y];\n }\n }\n }\n\n return inData;\n }\n}\n","import { Injectable, OnInit } from '@angular/core';\nimport { Observable, ReplaySubject } from 'rxjs';\nimport { AssessmentReport, ConfiguredReport } from '../models/report.model';\nimport { ApiService } from './api.service';\n\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ReportService implements OnInit {\n\n collabPartners: string[];\n focalAreaStrategies: any;\n activeProjects: any[];\n associatedProjects: any[];\n completedProjects: any[];\n priorityLandscape: string;\n mapGeometry: any;\n\n constructor(){}\n\n ngOnInit(){\n\n }\n\n setPartners(data: any){\n this.collabPartners = data;\n }\n\n getPartners(){\n return this.collabPartners;\n }\n\n setStrategies(data: any){\n this.focalAreaStrategies = data[0];\n }\n\n getStrategies(){\n return this.focalAreaStrategies.value;\n }\n\n setActiveProjects(data: any){\n this.activeProjects = data;\n }\n\n getActiveProjects(){\n return this.activeProjects.length;\n }\n\n setCompletedProjects(data: any){\n this.completedProjects = data.filter(function (obj) {\n return obj.fields.projectStatus === \"Complete\"\n });\n }\n\n getCompletedProjects(){\n return this.completedProjects.length;\n }\n\n setPriorityLandscape(data: any){\n this.priorityLandscape = data;\n }\n\n getPriorityLandscape(){\n return this.priorityLandscape;\n }\n\n setAssociatedProjects(data: any){\n this.associatedProjects = data\n }\n\n getAssociatedProjects(){\n return this.associatedProjects;\n }\n\n setMapGeometry(data: any){\n this.mapGeometry = data;\n }\n\n getMapGeometry(){\n return this.mapGeometry;\n }\n\n}\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { Router } from '@angular/router';\n\n@Component({\n selector: 'app-activity-card',\n templateUrl: './activity-card.component.html',\n styleUrls: ['./activity-card.component.scss']\n})\nexport class ActivityCardComponent implements OnInit {\n\n @Input() activity: any;\n\n @Input() projectLeadOrg: any;\n\n @Input() projectId: any;\n\n @Output() activityToRemove: EventEmitter = new EventEmitter();\n\n\n constructor(private router: Router){ }\n\n ngOnInit(): void {\n console.log(this.activity);\n }\n\n removeActivity(_: any){\n this.activityToRemove.emit(this.activity);\n }\n\n viewSummary(id: any) {\n this.router.navigateByUrl(`/app/activity/view?id=${id}&projectid=${this.projectId}&projectleadorg=${this.projectLeadOrg}`);\n }\n}\n","
\n
\n \n \n {{activity.name}}\n \n
\n delete\n
\n
\n \n
\n

Activity Type:\n {{activity.activityType}}

\n

Primary Activity Focus:\n {{activity.primaryFocus}}

\n

Status: {{activity.activityStatus}}\n

\n

Unit/Block:\n {{activity.activityUnit || 'N/A'}}

\n
\n
\n

View Details

\n
\n
\n
\n
\n
\n
\n
\n","import { Component, Inject, OnDestroy, OnInit, ViewChild, ɵɵtrustConstantResourceUrl } from '@angular/core';\nimport { FormControl, Validators } from '@angular/forms';\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\nimport { Router } from '@angular/router';\nimport { DynamicFormComponent } from 'src/app/_shared/components/forms/dynamic-form/dynamic-form.component';\nimport { ConfigurationService } from 'src/app/_shared/services/configuration.service';\nimport { FieldService } from 'src/app/_shared/services/forms/field.service';\nimport { ActivityQueryParamData } from './activity-view-model';\n\n@Component({\n selector: 'app-activity-create-dialog',\n templateUrl: './activity-create-dialog.component.html',\n styleUrls: ['./activity-create-dialog.component.scss']\n})\nexport class ActivityCreateDialogComponent implements OnInit, OnDestroy {\n\n fields: any[];\n fieldsConfig: any;\n configSub: any;\n\n constructor(\n private dialogRef: MatDialogRef,\n private fieldService: FieldService,\n private router: Router,\n private config: ConfigurationService,\n @Inject(MAT_DIALOG_DATA) public projectId: number\n ) { }\n\n @ViewChild('activityInfo') activityInfo: DynamicFormComponent\n\n activityFocusFormControl: FormControl = new FormControl({ value: null, disabled: false }, Validators.required);\n activityTypeFormControl: FormControl = new FormControl({ value: null, disabled: true }, Validators.required);\n\n foci: any[] = [{ name: '' }];\n types: any[] = [{ name: '' }];\n\n ngOnInit(): void {\n this.fields = this.fieldService.getFields('ActivityModalFields');\n\n this.configSub = this.config.getConfig().subscribe((res) => {\n this.fieldsConfig = res.fields;\n this.generateFocusDropdowns();\n });\n }\n\n ngOnDestroy() {\n this.configSub.unsubscribe();\n }\n\n continue(): void {\n // TODO will need to setup query params to unpack these data\n const data: any = this.getQueryParamData();\n this.dialogRef.close();\n this.router.navigateByUrl(`/app/activity/create?focus=${data.focus}&type=${data.type}&spatial=${data.spatial}&projectid=${data.projectid}`); // TODO add query params\n }\n\n isValid(): boolean {\n if (this.activityFocusFormControl && this.activityFocusFormControl.valid &&\n this.activityTypeFormControl && this.activityTypeFormControl.valid) {\n return true;\n } else {\n return false;\n }\n }\n\n onNoClick(): void {\n this.dialogRef.close();\n }\n\n clearType() {\n this.activityTypeFormControl.reset();\n this.generateTypes();\n this.activityTypeFormControl.enable();\n }\n\n // TODO may want to pull this out into a separate fields manip service at some point\n generateFocusDropdowns() {\n const focusNames = this.fieldsConfig.Activities.FocusTypes.map((obj => {\n return { name: obj.FocusName };\n }));\n this.foci = focusNames;\n this.foci.sort((a, b) => (a.name > b.name) ? 1 : -1)\n }\n\n generateTypes() {\n const currentFocus = this.fieldsConfig.Activities.FocusTypes.find((obj => {\n return obj.FocusName === this.activityFocusFormControl.value;\n }));\n\n if (!currentFocus) {\n this.types = [{ name: '' }];\n return;\n }\n\n const types = currentFocus.Activities.map((obj) => {\n return { name: obj.TypeName };\n });\n this.types = types;\n this.types.sort((a, b) => (a.name > b.name) ? 1 : -1)\n }\n\n private getQueryParamData() {\n const currentFocus = this.fieldsConfig.Activities.FocusTypes.find((obj => {\n return obj.FocusName === this.activityFocusFormControl?.value;\n }));\n const currentType = currentFocus.Activities.find((obj => {\n return obj.TypeName === this.activityTypeFormControl?.value;\n }));\n\n const data: ActivityQueryParamData = {\n focus: this.activityFocusFormControl?.value || null,\n type: this.activityTypeFormControl?.value || null,\n spatial: currentType?.Mapped,\n projectid: this.projectId\n };\n\n return data;\n }\n\n}\n","\n

\n \n \n Add New Activity\n \n \n

\n\n\n
\n
\n

What type of Activity do you want to add to this Project?

\n
\n \n Primary Activity Focus *\n \n \n {{focus.name}}\n \n \n \n \n Activity Type *\n \n \n {{type.name}}\n \n \n \n
\n\n \n
\n
\n \n
\n
\n \n
\n
\n\n
\n
\n","import { Component, Inject, OnInit } from '@angular/core';\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\nimport { Router } from '@angular/router';\n\n@Component({\n selector: 'app-activity-cancel-dialog',\n templateUrl: './activity-cancel-dialog.component.html',\n styleUrls: ['./activity-cancel-dialog.component.scss']\n})\nexport class ActivityCancelDialogComponent implements OnInit {\n\n\n\n constructor(\n @Inject(MAT_DIALOG_DATA) public data: any,\n private dialogRef: MatDialogRef,\n private router: Router\n ) { }\n\n ngOnInit(): void {\n\n }\n\n\n routerNavigate() {\n this.router.navigateByUrl(`/app/project/view?id=${this.data.projectId}`);\n this.dialogRef.close(null);\n }\n\n cancelClicked() {\n this.dialogRef.close(null);\n }\n\n\n}\n","\n
\n
\n
\n

\n Are you sure you want to cancel adding this Activity?\n

\n
\n\n
\n
\n \n
\n
\n \n
\n
\n
\n
\n\n","import { Component, HostListener, OnInit, ViewChild } from '@angular/core';\nimport { MatDialog } from '@angular/material/dialog';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { ConfirmDialogComponent } from 'src/app/confirm-dialog/confirm-dialog.component';\nimport { LoadingDialogComponent } from 'src/app/loading-dialog/loading-dialog.component';\nimport { SlimMapComponent } from 'src/app/slim-map/slim-map.component';\nimport { DynamicFormComponent } from 'src/app/_shared/components/forms/dynamic-form/dynamic-form.component';\nimport { DirectiveLogic } from 'src/app/_shared/directives/directive-logic';\nimport { Fields } from 'src/app/_shared/models/dynamic-forms/fields.model';\nimport { PamShapeData } from 'src/app/_shared/models/pam-object.model';\nimport { ApiService } from 'src/app/_shared/services/api.service';\nimport { FieldService } from 'src/app/_shared/services/forms/field.service';\n\n@Component({\n selector: 'app-activity-create',\n templateUrl: './activity-create.component.html',\n styleUrls: ['./activity-create.component.scss']\n})\nexport class ActivityCreateComponent implements OnInit {\n\n fields: any[];\n fieldsWork: any[];\n primaryFocus: any;\n primaryType: any;\n featureGeom: PamShapeData;\n isSpatial = true;\n projectId: number;\n screenHeight: number;\n screenWidth: number;\n leadOrg: string;\n heightValue = '100rem;'\n\n @ViewChild('slimMap') slimMap: SlimMapComponent;\n @ViewChild('activityPlanning') activityPlanning: DynamicFormComponent\n @ViewChild('activityWork') activityWork: DynamicFormComponent\n\n constructor(\n private fieldService: FieldService,\n private api: ApiService,\n private router: Router,\n private dialog: MatDialog,\n private route: ActivatedRoute,\n ) {\n this.onResize();\n }\n\n ngOnInit(): void {\n this.fields = this.fieldService.getFields('ActivityFields');\n this.fieldsWork = this.fieldService.getFields('ActivityWorkFields');\n\n // Unpack Route\n this.route.queryParams.subscribe(params => {\n this.primaryFocus = params['focus'];\n this.primaryType = params['type'];\n this.isSpatial = (params['spatial'].toLowerCase() === 'true');\n this.projectId = parseInt(params['projectid']);\n });\n\n // Remove spatial fields if needed\n if (!this.isSpatial) {\n this.removeSpatialFields();\n }\n\n // Load reference shape form project\n if (this.isSpatial) {\n this.api.post(\"Project\", \"Get\", [this.projectId]).subscribe(results => {\n if (results && results.length) {\n let target = results[0];\n this.handleProjectLoad(target);\n }\n });\n }\n\n }\n\n createActivity(newObj: any) {\n let formattedObj: any = {};\n formattedObj.name = newObj.activityPlanningData.ACTIVITY_NAME;\n formattedObj.fields = {};\n formattedObj.fields.activityStatus = newObj.activityPlanningData.ACTIVITY_STATUS;\n formattedObj.fields.activityWorkAgent = newObj.activityPlanningData.ACTIVITY_WORK_AGENT;\n formattedObj.fields.plannedCompletionDate = newObj.activityPlanningData.PLANNED_COMPLETION_DATE;\n formattedObj.fields.activityUnit = newObj.activityWorkData.ACTIVITY_UNIT;\n formattedObj.fields.activityAcres = DirectiveLogic.DecimalCap(newObj.activityWorkData.ACTIVITY_ACRES, 1);\n formattedObj.fields.actualCompletionDate = newObj.activityWorkData.ACTUAL_COMPLETION_DATE;\n formattedObj.fields.riskAdjacent = newObj.activityWorkData.RISK_ADJACENT;\n formattedObj.fields.isSpatial = newObj.IS_SPATIAL;\n formattedObj.fields.activityType = newObj.ACTIVITY_TYPE;\n formattedObj.fields.primaryFocus = newObj.PRIMARY_FOCUS;\n if (this.isSpatial) {\n formattedObj.fields.Geometry = this.featureGeom.fields.Geometry;\n }\n\n const dialogRef = this.dialog.open(LoadingDialogComponent, {\n width: '25rem',\n data: \"Creating Activity.\",\n disableClose: true\n });\n this.api.post('Activity', 'Create', { linkToId: this.projectId, newObject: formattedObj }, true).subscribe(result => {\n console.log('result');\n console.log(result);\n dialogRef.close();\n if (!result.valid) {\n //Backend validation didnt pass show the errors\n //this.showErrors(result.messages);\n }\n else {\n //Clean some stuff up\n //We should also keep a reference to the ID I guess?\n //this.refreshMap();\n this.showSaved(result.result.id);\n }\n }, error => {\n dialogRef.close();\n //Backend gave us a non-200 response\n //this.showErrors([\"The api responded incorrectly.\", JSON.stringify(error, undefined, 2)]);\n });\n }\n\n trySave(_: any): void {\n const activityPlanningData = this.activityPlanning.getPayload();\n const activityWorkData = this.activityWork.getPayload();\n\n let merged = {\n activityPlanningData,\n activityWorkData,\n IS_SPATIAL: this.isSpatial,\n ACTIVITY_TYPE: this.primaryType,\n PRIMARY_FOCUS: this.primaryFocus,\n };\n\n this.createActivity(merged);\n }\n\n isValid(): boolean {\n if (this.activityPlanning && this.activityWork && this.isSpatial) {\n const hasGeom = this.featureGeom ? true : false;\n return (this.activityPlanning.isValid() && this.activityWork.isValid() && hasGeom);\n } else if (this.activityPlanning && this.activityWork && !this.isSpatial) {\n return (this.activityPlanning.isValid() && this.activityWork.isValid());\n } else {\n return false;\n }\n }\n\n cancel() {\n let dialogRef = this.dialog.open(ConfirmDialogComponent, {\n width: '35rem',\n data: { title: 'Back to Project', text: 'Are you sure you want to cancel adding this Activity?', confirm: \"Yes\", cancel: \"No\" },\n disableClose: false\n });\n\n\n dialogRef.afterClosed().subscribe(data => {\n if (data) {\n this.router.navigateByUrl(`/app/project/view?id=${this.projectId}`);\n }\n });\n }\n\n showSaved(id: number): void {\n this.router.navigateByUrl(`/app/activity/view?id=${id}&projectid=${this.projectId}`);\n }\n\n newShapeData(data: PamShapeData) {\n console.log('Got Data');\n console.log(data);\n this.featureGeom = data;\n }\n\n saveHint() {\n if (!this.featureGeom && this.isSpatial)\n return 'You must map the Activity boundary in order to continue.';\n else\n return '';\n }\n\n @HostListener('window:resize', ['$event'])\n onResize(event?) {\n this.screenHeight = window.innerHeight;\n this.screenWidth = window.innerWidth;\n\n if (this.screenWidth <= 1366) {\n this.heightValue = '80rem;';\n } else {\n this.heightValue = '60rem;';\n }\n }\n\n removeSpatialFields() {\n const spatialFields = [Fields.ActivityAcres];\n\n spatialFields.forEach(element => {\n const foundIdx = this.fieldsWork.findIndex((data) => {\n return data.key === element;\n });\n if (foundIdx) {\n this.fieldsWork.splice(foundIdx, 1);\n }\n });\n }\n\n handleProjectLoad(target: any) {\n if (target && target?.fields?.Geometry && target?.fields?.Geometry?.wkt) {\n const geomObj: PamShapeData = {\n id: target.id,\n name: target.name,\n fields: {\n Geometry: { ... target.fields?.Geometry }\n }\n }\n if (this.slimMap) {\n this.slimMap.updateRefShape(geomObj, 'rgba(185, 232, 42, 0.25)', 'rgba(0, 19, 2, 0.5)');\n } else {\n // First page load, isSpatial check is likely underway and DOM has not\n // rendered the slim map comp yet. OpenLayers needs a moment.\n const that = this;\n setTimeout(() => {\n that.slimMap.updateRefShape(geomObj, 'rgba(185, 232, 42, 0.25)', 'rgba(0, 19, 2, 0.5)');\n }, 1000);\n }\n }\n }\n}\n","
\n\n \n
\n\n \n
\n\n \n
\n

Create New Activity\n

\n
\n\n \n \n
\n \n
\n \n
\n\n
\n \n
\n\n \n
\n\n
\n\n \n \n \n Map\n \"tooltip\"\n \n \n \n \n \n \n\n
\n \n
\n\n\n \n
\n\n
\n \n\n
\n \n \n Core Details\n \n \n
Activity Type
\n
{{ this.primaryType || 'N/A' }}
\n
Primary Activity Focus
\n
{{ this.primaryFocus || 'N/A' }}
\n \n
\n
\n
\n
\n
\n\n \n
\n \n
\n \n \n Additional Details\n \n \n \n \n \n \n
\n
\n
\n \n
\n
\n","import { AfterViewInit, Component, HostListener, OnInit, ViewChild } from '@angular/core';\nimport { MatDialog } from '@angular/material/dialog';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { FundingAddDialogComponent } from 'src/app/funding/funding-add-dialog/funding-add-dialog.component';\nimport { FundingComponent } from 'src/app/funding/funding.component';\nimport { ConfirmDialogComponent } from 'src/app/confirm-dialog/confirm-dialog.component';\nimport { LoadingDialogComponent } from 'src/app/loading-dialog/loading-dialog.component';\nimport { ErrorDialogComponent } from 'src/app/map/error-dialog/error-dialog.component';\nimport { SlimMapComponent } from 'src/app/slim-map/slim-map.component';\nimport { MapEditDialogComponent } from 'src/app/_shared/components/dialogs/map-edit-dialog/map-edit-dialog.component';\nimport { DynamicFormComponent } from 'src/app/_shared/components/forms/dynamic-form/dynamic-form.component';\nimport { CoreEntity } from 'src/app/_shared/models/core-entity.model';\nimport { Fields } from 'src/app/_shared/models/dynamic-forms/fields.model';\nimport { PamObject, PamShapeData } from 'src/app/_shared/models/pam-object.model';\nimport { ApiService } from 'src/app/_shared/services/api.service';\nimport { FieldService } from 'src/app/_shared/services/forms/field.service';\nimport { ProjectGeoCardComponent } from 'src/app/project/project-geo-card/project-geo-card.component';\nimport { DirectiveLogic } from 'src/app/_shared/directives/directive-logic';\n\n@Component({\n selector: 'app-activity-view',\n templateUrl: './activity-view.component.html',\n styleUrls: ['./activity-view.component.scss']\n})\nexport class ActivityViewComponent implements OnInit, AfterViewInit {\n @ViewChild('coreDetails') coreDetails: DynamicFormComponent;\n @ViewChild('additionalDetails') additionalDetails: DynamicFormComponent;\n @ViewChild('slimMap') slimMap: SlimMapComponent;\n @ViewChild('funding') fundingDetails: FundingComponent;\n @ViewChild('projGeo') projGeo: ProjectGeoCardComponent;\n\n heightValue = '90rem';\n financialsHeightValue = '80rem;'\n fundingTarget: any = { fields: {} };\n dynamicFlexContainerWidth: number = 100;\n dynamicFlexChildWidth: number = 100;\n screenHeight: number;\n screenWidth: number;\n target: any = { fields: {} };\n partners: any[] = [];\n fields: any[];\n fieldsWork: any[];\n editModeOn = false;\n isSpatial = false;\n primaryFocus: string;\n activityType: string;\n activityId: number;\n projectId: number;\n leadOrg: string;\n editMapOn = false;\n mapDialog: any;\n featureGeom: PamShapeData;\n fundings: any[] = [];\n projectLeadOrg: any;\n amountTotals: any;\n\n constructor(\n private route: ActivatedRoute,\n private api: ApiService,\n private dialog: MatDialog,\n private fieldService: FieldService,\n private router: Router,\n ) { }\n\n ngOnInit(): void {\n console.log(\"Activity View: Project Lead Org\", this.projectLeadOrg)\n this.route.queryParams.subscribe(params => {\n let id = params[\"id\"];\n let projectid = params[\"projectid\"];\n this.projectLeadOrg = params[\"projectleadorg\"]\n if (id == undefined)\n return;\n\n let iid = parseInt(id);\n this.activityId = iid;\n this.projectId = parseInt(projectid);\n\n this.api.post(\"Activity\", \"LongRead\", iid, true).subscribe(results => {\n if (results && results.valid) {\n let target = results.result;\n this.handleLoad(target);\n }\n this.getFundingRecords(iid);\n });\n\n this.hydrateLeadOrg();\n });\n this.onResize();\n }\n\n ngAfterViewInit() {\n if (this.isSpatial && this.projGeo && this.target) {\n this.projGeo.getStats(this.target?.id);\n }\n }\n\n getFundingRecords(iid: any) {\n this.api.post(\"Funding\", \"ReadAll\", { linkToId: iid }, true).subscribe(results => {\n let target = results;\n this.handleFundingLoad(target);\n this.sortFundings();\n });\n }\n\n formsAreValid() {\n return this.coreDetails.isValid() && this.additionalDetails.isValid();\n }\n\n cancelEdit() {\n this.editModeOn = false;\n this.coreDetails.refreshForm(this.fields);\n this.additionalDetails.refreshForm(this.fieldsWork);\n }\n\n update(obj) {\n const saveRef = this.dialog.open(LoadingDialogComponent, {\n width: '25rem',\n data: \"Saving Activity.\",\n disableClose: true\n });\n\n this.api.post(\"Activity\", \"Update\", obj, true).subscribe(res => {\n if (!res.valid) {\n saveRef.close();\n this.dialog.open(ErrorDialogComponent, {\n width: '25rem',\n data: res.messages,\n disableClose: false\n });\n return;\n }\n\n this.handleLoad(res.result)\n saveRef.close();\n\n this.editModeOn = false;\n\n if (this.isSpatial) {\n this.projGeo.startStatTimer();\n }\n\n }, err => {\n saveRef.close();\n this.dialog.open(ErrorDialogComponent, {\n width: '25rem',\n data: [\"API Error occurred\", err.message],\n disableClose: false\n });\n })\n }\n\n createFunding(data: any) {\n let formattedObj: any = {};\n formattedObj.name = data.name;\n formattedObj.fields = {};\n formattedObj.fields.fundingOrg = data.orgName;\n formattedObj.fields.fundingName = data.name;\n formattedObj.fields.plannedAmount = data.plannedAmount;\n formattedObj.fields.actualAmount = data.actualAmount\n formattedObj.fields.match = data.match;\n\n this.api.post(\"Funding\", \"Create\", { linkToId: this.activityId, newObject: formattedObj }, true).subscribe(result => {\n console.log('result');\n console.log(result);\n if (!result.valid) {\n //Backend validation didnt pass show the errors``\n //this.showErrors(result.messages);\n }\n else {\n this.getFundingRecords(this.activityId);\n }\n }, error => {\n //Backend gave us a non-200 response\n //this.showErrors([\"The api responded incorrectly.\", JSON.stringify(error, undefined, 2)]);\n })\n }\n\n\n updateFunding(obj) {\n const saveRef = this.dialog.open(LoadingDialogComponent, {\n width: '25rem',\n //pass object here (edit mode and other things)\n data: \"Saving Record.\",\n disableClose: true\n });\n\n this.api.post(\"Funding\", \"Update\", obj, true).subscribe(res => {\n if (!res.valid) {\n saveRef.close();\n this.dialog.open(ErrorDialogComponent, {\n width: '25rem',\n data: res.messages,\n disableClose: false\n });\n return;\n }\n\n this.getFundingRecords(this.activityId);\n saveRef.close();\n\n this.editModeOn = false;\n\n }, err => {\n saveRef.close();\n this.dialog.open(ErrorDialogComponent, {\n width: '25rem',\n data: [\"API Error occurred\", err.message],\n disableClose: false\n });\n })\n }\n\n createPayload() {\n const coreDetailsData = this.coreDetails.getPayload();\n const additionalDetailsData = this.additionalDetails.getPayload();\n let formattedObj: PamObject = { id: this.target.id, name: this.target.name, fields: {} };\n formattedObj.name = coreDetailsData.ACTIVITY_NAME;\n formattedObj.fields.activityStatus = coreDetailsData.ACTIVITY_STATUS;\n formattedObj.fields.activityWorkAgent = coreDetailsData.ACTIVITY_WORK_AGENT;\n formattedObj.fields.plannedCompletionDate = coreDetailsData.PLANNED_COMPLETION_DATE;\n formattedObj.fields.actualCompletionDate = additionalDetailsData.ACTUAL_COMPLETION_DATE;\n formattedObj.fields.activityUnit = additionalDetailsData.ACTIVITY_UNIT;\n formattedObj.fields.activityAcres = DirectiveLogic.DecimalCap(additionalDetailsData.ACTIVITY_ACRES, 1);\n formattedObj.fields.riskAdjacent = additionalDetailsData.RISK_ADJACENT;\n formattedObj.fields.Geometry = this.featureGeom?.fields?.Geometry || {};\n\n return formattedObj;\n }\n\n toggleEditMode() {\n if (this.editModeOn) {\n // Map data to DTO and update\n const payload = this.createPayload();\n this.update(payload);\n } else {\n this.editModeOn = true;\n }\n }\n\n routerNavigate() {\n this.router.navigateByUrl(`/app/project/view?id=${this.projectId}`);\n }\n\n dateFormat(date: string) {\n if (!date) {\n return date = \"\";\n } else {\n return new Date(date)\n }\n }\n\n async hydrateLeadOrg() {\n this.api.post(\"Project\", \"Get\", [this.projectId], true).subscribe(results => {\n if (results && results.length) {\n let target = results[0];\n this.leadOrg = target?.fields?.leadOrganization || null;\n this.partners = target?.fields?.Partners || [];\n }\n });\n }\n\n handleLoad(target: any): void {\n this.target = target;\n console.log('got it');\n console.log(this.target);\n const activityFields: any = {};\n const activityWorkFields: any = {};\n\n activityFields[Fields.ActivityName] = this.target.name;\n activityFields[Fields.ActivityStatus] = this.target.activityStatus;\n activityFields[Fields.ActivityWorkAgent] = this.target.activityWorkAgent;\n activityFields[Fields.PlannedCompletionDate] = this.dateFormat(this.target.plannedCompletionDate);\n\n activityWorkFields[Fields.ActualCompletionDate] = this.dateFormat(this.target.actualCompletionDate);\n activityWorkFields[Fields.ActivityUnit] = this.target.activityUnit;\n activityWorkFields[Fields.ActivityAcres] = this.target.activityAcres;\n activityWorkFields[Fields.RiskAdjacent] = this.target.riskAdjacent;\n\n this.primaryFocus = this.target.primaryFocus;\n this.activityType = this.target.activityType;\n this.isSpatial = this.target.isSpatial;\n this.updateDynamicFlex(this.isSpatial);\n\n this.fields = this.fieldService.getEditableFieldsGeneric(CoreEntity.Activity, activityFields);\n this.fieldsWork = this.fieldService.getEditableFieldsGeneric(CoreEntity.ActivityWork, activityWorkFields);\n\n this.coreDetails.refreshForm(this.fields);\n this.additionalDetails.refreshForm(this.fieldsWork);\n\n // Geom\n this.updateMapGeom();\n\n // Remove spatial fields if needed\n if (!this.isSpatial) {\n this.removeSpatialFields();\n }\n\n // Update Project Stats\n if (this.isSpatial && this.projGeo) {\n this.projGeo.getStats(target?.id);\n }\n }\n\n toggleEditMap() {\n this.editMapOn = true;\n this.mapDialog = this.dialog.open(MapEditDialogComponent, {\n width: '90vw',\n height: '90vh',\n data: { feature: this.featureGeom, fillColor: 'rgba(255, 42, 42, 0.5)', strokeColor: 'rgba(48, 0, 0, 0.5)', refId: this.projectId },\n disableClose: true,\n });\n\n this.mapDialog.afterClosed().subscribe(data => {\n this.mapDialog = null;\n if (data) {\n // If there are data, save\n this.newShapeData(data);\n const payload = this.createPayload();\n this.update(payload);\n }\n\n this.cancelEditMap();\n });\n }\n\n cancelEditMap() {\n this.editMapOn = false;\n this.rebootMap();\n }\n\n rebootMap() {\n setTimeout(() => {\n this.updateMapGeom();\n }, 250);\n }\n\n newShapeData(data: PamShapeData) {\n this.featureGeom = data;\n }\n\n updateMapGeom() {\n if (this.target && this.target?.geometry && this.target?.geometry?.wkt) {\n const geomObj: PamShapeData = {\n id: this.target.id,\n name: this.target.name,\n fields: {\n Geometry: { ... this.target.geometry }\n }\n }\n if (this.slimMap) {\n this.slimMap.update(geomObj);\n } else {\n // First page load, isSpatial check is likely underway and DOM has not\n // rendered the slim map comp yet. OpenLayers needs a moment.\n const that = this;\n setTimeout(() => {\n that.slimMap.update(geomObj);\n }, 1000);\n }\n }\n\n // Load reference shape form project\n if (this.isSpatial) {\n this.api.post(\"Project\", \"Get\", [this.projectId]).subscribe(results => {\n if (results && results.length) {\n let target = results[0];\n this.handleProjectLoad(target);\n }\n });\n }\n }\n\n triggerDelete() {\n let dialogRef = this.dialog.open(ConfirmDialogComponent, {\n width: '35rem',\n data: { title: 'Confirm Delete', text: 'Deleting this Activity will permanently remove it and related details from the Project, and this cannot be undone. Are you sure you want to delete this Activity?', confirm: \"Yes\", cancel: \"No\" },\n disableClose: false\n });\n\n\n dialogRef.afterClosed().subscribe(data => {\n if (data) {\n // Delete\n this.commitDelete();\n console.log('Delete');\n } else {\n // No action needed\n }\n });\n }\n\n async commitFundingDelete(data: any) {\n const delRef = this.dialog.open(LoadingDialogComponent, {\n width: '25rem',\n data: \"Deleting Funding.\",\n disableClose: true\n });\n\n let obj = { id: data.id }\n\n this.api.post(\"Funding\", \"Delete\", obj, true).subscribe(res => {\n if (!res.valid) {\n delRef.close();\n this.dialog.open(ErrorDialogComponent, {\n width: '25rem',\n data: res.messages,\n disableClose: false\n });\n return;\n }\n\n this.getFundingRecords(this.activityId);\n delRef.close();\n }, err => {\n delRef.close();\n this.dialog.open(ErrorDialogComponent, {\n width: '25rem',\n data: [\"API Error occurred\", err.message],\n disableClose: false\n });\n })\n }\n\n updateFundings() {\n this.api.post(\"Funding\", \"ReadAll\", { linkToId: this.target.id }, true).subscribe(results => {\n this.fundings = results;\n if (results?.length > 0) {\n this.sortFundings();\n this.calculateTotals();\n }\n });\n }\n\n async commitDelete() {\n const delRef = this.dialog.open(LoadingDialogComponent, {\n width: '25rem',\n data: \"Deleting Activity.\",\n disableClose: true\n });\n\n let obj = { id: this.target.id }\n\n this.api.post(\"Activity\", \"Delete\", obj, true).subscribe(res => {\n if (!res.valid) {\n delRef.close();\n this.dialog.open(ErrorDialogComponent, {\n width: '25rem',\n data: res.messages,\n disableClose: false\n });\n return;\n }\n\n this.target = res.result;\n delRef.close();\n\n this.router.navigateByUrl(`/app/project/view?id=${this.projectId}`);\n }, err => {\n delRef.close();\n this.dialog.open(ErrorDialogComponent, {\n width: '25rem',\n data: [\"API Error occurred\", err.message],\n disableClose: false\n });\n })\n }\n\n updateDynamicFlex(isSpatial: boolean) {\n if (isSpatial) {\n this.dynamicFlexContainerWidth = 100;\n this.dynamicFlexChildWidth = 50;\n } else {\n this.dynamicFlexContainerWidth = 50;\n this.dynamicFlexChildWidth = 100;\n }\n }\n\n @HostListener('window:resize', ['$event'])\n onResize(event?) {\n this.screenHeight = window.innerHeight;\n this.screenWidth = window.innerWidth;\n\n if (this.screenWidth <= 1366) {\n this.heightValue = '109rem;';\n } else {\n this.heightValue = '90rem;';\n }\n }\n\n removeSpatialFields() {\n const spatialFields = [Fields.ActivityAcres];\n\n spatialFields.forEach(element => {\n const foundIdx = this.fieldsWork.findIndex((data) => {\n return data.key === element;\n });\n if (foundIdx) {\n this.fieldsWork.splice(foundIdx, 1);\n }\n });\n }\n\n handleFundingLoad(target: any): void {\n this.fundingTarget = target;\n console.log('funding load');\n console.log(this.fundingTarget);\n const fundingFields: any = {};\n\n this.fundingTarget.forEach(funding => {\n fundingFields[Fields.FundingId] = funding.id;\n fundingFields[Fields.FundingOrg] = funding.fundingOrg;\n fundingFields[Fields.FundingName] = funding.fundingName;\n fundingFields[Fields.FundingMatch] = funding.match;\n fundingFields[Fields.PlannedAmount] = funding.plannedAmount;\n fundingFields[Fields.ActualAmount] = funding.actualAmount;\n });\n\n this.fundings = this.fundingTarget;\n\n this.updateFundings();\n\n }\n\n calculateTotals() {\n\n if (this.fundings) {\n this.amountTotals = this.fundings.reduce((a, b) => {\n return {\n plannedAmount: a.plannedAmount + b.plannedAmount,\n actualAmount: a.actualAmount + b.actualAmount\n };\n })\n }\n\n console.log(this.amountTotals);\n }\n\n addFunding() {\n let fundingDialog = this.dialog.open(FundingAddDialogComponent, {\n width: '35rem',\n disableClose: true\n });\n\n\n fundingDialog.afterClosed().subscribe(data => {\n if (data) {\n // If there are data, save\n this.createFunding(data);\n }\n });\n }\n\n createFundingPayload(data: any) {\n console.log(\"funding data\", data);\n let formattedObj: PamObject = { id: data.id, name: data.name, fields: {} };\n formattedObj.name = data.name;\n formattedObj.fields = {};\n formattedObj.fields.fundingOrg = data.orgName;\n formattedObj.fields.fundingName = data.name;\n formattedObj.fields.plannedAmount = data.plannedAmount;\n formattedObj.fields.actualAmount = data.actualAmount\n formattedObj.fields.match = data.match;\n\n return formattedObj;\n }\n\n triggerFundingDelete(data: any) {\n const foundData = this.fundings.find((fund) => { return fund.id === data.id });\n if (foundData) {\n let dialogRef = this.dialog.open(ConfirmDialogComponent, {\n width: '35rem',\n data: { title: 'Confirm Delete', text: 'Are you sure you want to delete this funding entry?', confirm: \"Yes\", cancel: \"No\" },\n disableClose: false\n });\n\n\n dialogRef.afterClosed().subscribe(data => {\n if (data) {\n // Delete\n this.commitFundingDelete(foundData);\n } else {\n // No action needed\n }\n });\n }\n }\n\n removeFundingData(data: any) {\n this.fundings = this.fundings.filter(function (obj) {\n return obj.name !== data.name;\n });\n\n this.sortFundings();\n }\n\n newFundingData(data: any) {\n this.fundings.push(data);\n this.sortFundings();\n }\n\n sortFundings() {\n this.fundings.sort((a, b) => (a.fundingName > b.fundingName) ? 1 : ((b.fundingName > a.fundingName) ? -1 : 0));\n }\n\n isFundingsEmpty() {\n return this.fundings.length === 0 ? true : false;\n }\n\n routeToExplorer() {\n this.router.navigateByUrl(`/app/map?id=${this.target.id}&type=a`);\n }\n\n handleProjectLoad(target: any) {\n if (target && target?.fields?.Geometry && target?.fields?.Geometry?.wkt) {\n const geomObj: PamShapeData = {\n id: target.id,\n name: target.name,\n fields: {\n Geometry: { ... target.fields?.Geometry }\n }\n }\n if (this.slimMap) {\n this.slimMap.updateRefShape(geomObj, 'rgba(185, 232, 42, 0.25)', 'rgba(0, 19, 2, 0.5)', true);\n } else {\n // First page load, isSpatial check is likely underway and DOM has not\n // rendered the slim map comp yet. OpenLayers needs a moment.\n const that = this;\n setTimeout(() => {\n that.slimMap.updateRefShape(geomObj, 'rgba(185, 232, 42, 0.25)', 'rgba(0, 19, 2, 0.5)', true);\n }, 1000);\n }\n }\n }\n\n}\n","
\n\n \n
\n\n \n
\n\n \n
\n

{{ this.target?.name || '' }}

\n
\n\n \n \n\n \n\n \n \n\n \n
\n\n \n
\n\n \n\n
\n\n \n \n Activity Map\n
\n \n \n
\n
\n \n \n \n \n
\n
\n \n\n \n
\n\n \n \n General Details\n \n
\n \n \n
\n
\n \n
Activity\n ID\n
\n
\n {{ this.target.id || '' }}\n
\n
Activity\n Type\n
\n
\n {{ this.activityType || '' }}\n
\n
Primary\n Activity Focus
\n
\n {{ this.primaryFocus || '' }}\n
\n
\n \n \n \n
\n
GIS Acres
\n
\n {{ this.target?.geometry?.acres | number : '1.1-1' || '' }}
\n
\n
Total Planned\n Funding
\n
\n {{ this.amountTotals?.plannedAmount || 0 | currency }}
\n
Total Actual\n Funding
\n
\n {{ this.amountTotals?.actualAmount || 0 | currency }}
\n
\n
\n
\n
\n
\n\n
\n\n
\n \n \n Funding Sources\n \n
\n \n
\n
\n \n
\n
    \n
  • \n \n
  • \n
\n
\n
No funding has been added for this Activity.
\n
\n
\n
\n
\n
\n\n \n
\n \n \n Activity Geography\n \n \n \n
\n \n \n
\n
\n
\n
\n\n
\n\n
\n \n
\n","import { Component, OnInit } from '@angular/core';\n\n@Component({\n selector: 'app-activity',\n templateUrl: './activity.component.html',\n styleUrls: ['./activity.component.scss']\n})\nexport class ActivityComponent implements OnInit {\n\n constructor() { }\n\n ngOnInit(): void {\n }\n\n}\n","\n\n\n","import { Component, OnInit } from '@angular/core';\n\n@Component({\n selector: 'app-admin',\n templateUrl: './admin.component.html',\n styleUrls: ['./admin.component.scss']\n})\nexport class AdminComponent implements OnInit {\n\n constructor() { }\n\n ngOnInit(): void {\n }\n\n}\n","
\n \n
\n","import { Component, Inject, OnInit } from '@angular/core';\nimport { FormControl, Validators } from '@angular/forms';\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\nimport { ApiService } from 'src/app/_shared/services/api.service';\n\n@Component({\n selector: 'app-add-org',\n templateUrl: './add-org.component.html',\n styleUrls: ['./add-org.component.scss']\n})\nexport class AddOrgComponent implements OnInit {\n\n types: string[] = ['Federal', 'State', 'Local', 'Tribal', 'NGO', 'Academia', 'Other']\n guidanceMessage = \"Please ensure the information you entered is correct.\" +\n \" You will not be able to edit the details once added, and you will only\" +\n \" be able to archive this organization is there are no users affiliated to it.\"\n\n constructor(\n @Inject(MAT_DIALOG_DATA) public data: any,\n private dialogRef: MatDialogRef,\n private api: ApiService\n ) { }\n\n orgNameFormControl: FormControl = new FormControl({ value: null, disabled: false }, Validators.required);\n orgShortFormControl: FormControl = new FormControl({ value: null, disabled: false }, Validators.required);\n orgTypeFormControl: FormControl = new FormControl({ value: null, disabled: false }, Validators.required);\n\n ngOnInit(): void {\n }\n\n onNoClick(){\n this.dialogRef.close();\n }\n\n isValid(){\n if (this.orgNameFormControl && this.orgNameFormControl.valid\n && this.orgShortFormControl && this.orgShortFormControl.valid\n && this.orgTypeFormControl && this.orgTypeFormControl.valid) {\n return true;\n } else {\n return false;\n }\n }\n\n onSubmit(): void {\n let orgName = this.orgNameFormControl.value;\n let orgShort = this.orgShortFormControl.value;\n let orgType = this.orgTypeFormControl.value\n\n let orgObject =\n {\n \"name\": orgName,\n \"orgShort\": orgShort,\n \"orgType\": orgType\n }\n\n this.dialogRef.close(orgObject);\n }\n}\n","\n

\n \n \n
\n Add Organization\n
\n
\n
\n

\n\n \n
\n
\n
\n \n Organization Name\n \n \n \n Organization Abbreviation \n \n \n \n Organization Type\n \n \n {{type}}\n \n \n \n
\n\n
\n \n
\n\n \n
\n
\n \n
\n
\n \n
\n
\n
\n
\n","import { Component, OnInit } from '@angular/core';\n\n@Component({\n selector: 'app-delete-org',\n templateUrl: './delete-org.component.html',\n styleUrls: ['./delete-org.component.scss']\n})\nexport class DeleteOrgComponent implements OnInit {\n\n constructor() { }\n\n ngOnInit(): void {\n }\n\n}\n","\n

\n \n \n
\n Delete Organization\n
\n
\n
\n

\n \n \n
\n
\n \n
\n
\n\n \n \n \n\n \n \n\n
\n\n
\n\n
\n\n
\n ","import { Component, NgZone, OnInit } from '@angular/core';\nimport { MatDialogRef } from '@angular/material/dialog';\n\n@Component({\n selector: 'app-archive-error-dialog',\n templateUrl: './archive-error-dialog.component.html',\n styleUrls: ['./archive-error-dialog.component.scss']\n})\nexport class ArchiveErrorDialogComponent implements OnInit {\n\n constructor(private dialogRef: MatDialogRef) { }\n\n ngOnInit(): void {\n }\n}\n","
\n
\n
\n

\n You cannot archive this Organization because one or more users are still associated to it. Please ensure no users are affiliated to this Organization and then try again.\n

\n
\n
\n
\n
\n
\n \n
\n
\n","import { Component, OnInit, ViewChild } from '@angular/core';\nimport { MatDialog } from '@angular/material/dialog';\nimport { MatPaginator } from '@angular/material/paginator';\nimport { MatSort, MatSortable } from '@angular/material/sort';\nimport { MatTableDataSource } from '@angular/material/table';\nimport { ConfirmDialogComponent } from 'src/app/confirm-dialog/confirm-dialog.component';\nimport { LoadingDialogComponent } from 'src/app/loading-dialog/loading-dialog.component';\nimport { ErrorDialogComponent } from 'src/app/map/error-dialog/error-dialog.component';\nimport { allRoles, Role } from 'src/app/_shared/models/roles.model';\nimport { ApiService } from 'src/app/_shared/services/api.service';\nimport { User } from '../../admin.model';\nimport { AddOrgComponent } from '../add-org/add-org.component';\nimport { DeleteOrgComponent } from '../delete-org/delete-org.component';\nimport { ArchiveErrorDialogComponent } from './archive-error-dialog/archive-error-dialog.component';\n\n@Component({\n selector: 'app-org-edit',\n templateUrl: './org-edit.component.html',\n styleUrls: ['./org-edit.component.scss']\n})\nexport class OrgEditComponent implements OnInit {\n displayedColumns: string[] = ['name', 'orgShort', 'orgType', 'actions'];\n orgs: any[];\n dataSource = new MatTableDataSource([]);\n //allRoles: Role[] = allRoles();\n //acceptableRoles: string[] = [];\n\n @ViewChild(MatSort, { static: true }) sort: MatSort;\n @ViewChild(MatPaginator, { static: true }) paginator: MatPaginator;\n\n constructor(\n private api: ApiService,\n private dialog: MatDialog,\n ) { }\n\n ngOnInit(): void {\n this.retreiveOrgs();\n }\n\n retreiveOrgs(){\n this.dataSource.paginator = this.paginator;\n this.sort.sort(({ id: 'name', start: 'asc' }) as MatSortable);\n this.dataSource.sort = this.sort;\n\n this.dataSource.sortingDataAccessor = (data: any, sortHeaderId: string): string => {\n if (sortHeaderId == 'name') {\n return (data['name']).toLocaleLowerCase();\n }\n\n if (typeof data[sortHeaderId] === 'string') {\n return data[sortHeaderId].toLocaleLowerCase();\n }\n\n return data[sortHeaderId];\n };\n\n const saveRef = this.dialog.open(LoadingDialogComponent, {\n width: '25rem',\n data: \"Loading\",\n disableClose: true\n });\n\n this.api.get(\"Organization\", \"GetAll\").subscribe(res => {\n\n this.orgs = res;\n this.orgs = this.orgs.filter(function (obj) {\n return obj.name !== \"None - General Public\"\n });\n\n this.initDataSource();\n });\n saveRef.close();\n\n }\n\n\n initDataSource() {\n this.dataSource.data = this.orgs;// = new MatTableDataSource(this.users);\n }\n\n archiveOrg(org: any) {\n const saveRef = this.dialog.open(LoadingDialogComponent, {\n width: '25rem',\n data: \"Loading\",\n disableClose: true\n });\n\n this.api.post(\"Users\", \"GetAll\", true).subscribe(res => {\n if (res) {\n let users = res;\n let hasAssociation = false;\n users.forEach(u => {\n if(u.organization === org.name){\n hasAssociation = true;\n return\n }\n });\n\n saveRef.close();\n\n if(hasAssociation){\n this.dialog.open(ArchiveErrorDialogComponent, {\n width: '25rem',\n disableClose: false\n });\n\n }\n\n\n if(!hasAssociation){\n let dialogRef = this.dialog.open(ConfirmDialogComponent, {\n width: '65rem',\n data: { title: 'Confirm Archive', text: \"Archiving will remove this Organization from this screen's list and any pick lists (e.g., account registration, partner organizations, etc.), but will not expunge it as Partner on Projects or as Activity Managers on Activities. You cannot undo this archive. Are you sure you want this Organization to be unavailable for use?\", confirm: \"Yes\", cancel: \"No\" },\n });\n\n dialogRef.afterClosed().subscribe(data => {\n if (data) {\n // Delete\n this.commitArchive(org);\n } else {\n // No action needed\n }\n });\n }\n }\n });\n }\n\n\n async commitArchive(data: any) {\n const delRef = this.dialog.open(LoadingDialogComponent, {\n width: '25rem',\n data: \"Archiving Organization\",\n disableClose: true\n });\n\n let obj = { id: data.id }\n\n this.api.post(\"Organization\", \"Delete\", obj, true).subscribe(res => {\n if (!res.valid) {\n delRef.close();\n this.dialog.open(ErrorDialogComponent, {\n width: '25rem',\n data: res.messages,\n disableClose: false\n });\n return;\n }\n\n this.retreiveOrgs();\n delRef.close();\n }, err => {\n delRef.close();\n this.dialog.open(ErrorDialogComponent, {\n width: '25rem',\n data: [\"API Error occurred\", err.message],\n disableClose: false\n });\n })\n }\n}\n","\n
\n \n\n \n \n \n \n \n\n \n \n \n \n \n\n \n \n \n \n \n\n \n \n \n \n \n\n \n \n
Organization Name {{org.name}} Abbreviation {{org.orgShort}} Type {{org.orgType}} \n \n
\n\n \n
\n","import { Component, OnInit, ViewChild } from '@angular/core';\nimport { MatDialog } from '@angular/material/dialog';\nimport { MatPaginator } from '@angular/material/paginator';\nimport { MatSort, MatSortable } from '@angular/material/sort';\nimport { MatTableDataSource } from '@angular/material/table';\nimport { LoadingDialogComponent } from 'src/app/loading-dialog/loading-dialog.component';\nimport { allRoles, Role } from 'src/app/_shared/models/roles.model';\nimport { ApiService } from 'src/app/_shared/services/api.service';\nimport { AuthorizationService } from 'src/app/_shared/services/authorization.service';\nimport { User } from '../../admin.model';\nimport { ManageRolesComponent } from '../../users/manage-roles/manage-roles.component';\nimport { UpdateOrgComponent } from '../update-org/update-org.component';\nimport { UpdateErrorDialogComponent } from './update-error-dialog/update-error-dialog.component';\n\n@Component({\n selector: 'app-org-users',\n templateUrl: './org-users.component.html',\n styleUrls: ['./org-users.component.scss']\n})\nexport class OrgUsersComponent implements OnInit {\n displayedColumns: string[] = ['last', 'first', 'email', 'organization', 'actions'];\n users: User[];\n dataSource = new MatTableDataSource([]);\n allRoles: Role[] = allRoles();\n acceptableRoles: string[] = [];\n\n @ViewChild(MatSort, { static: true }) sort: MatSort;\n @ViewChild(MatPaginator, { static: true }) paginator: MatPaginator;\n\n constructor(\n private api: ApiService,\n private dialog: MatDialog,\n private auth: AuthorizationService\n ) { }\n\n ngOnInit(): void {\n\n this.dataSource.paginator = this.paginator;\n this.sort.sort(({ id: 'lastfirst', start: 'asc' }) as MatSortable);\n this.dataSource.sort = this.sort;\n\n this.dataSource.sortingDataAccessor = (data: any, sortHeaderId: string): string => {\n if (sortHeaderId == 'lastfirst') {\n return (data['last'] + data['first']).toLocaleLowerCase();\n }\n\n if (typeof data[sortHeaderId] === 'string') {\n return data[sortHeaderId].toLocaleLowerCase();\n }\n\n return data[sortHeaderId];\n };\n\n this.retrieveUsers();\n }\n\n retrieveUsers() {\n\n const saveRef = this.dialog.open(LoadingDialogComponent, {\n width: '25rem',\n data: \"Loading Users\",\n disableClose: true\n });\n\n\n this.api.post(\"Users\", \"GetAll\", true).subscribe(res => {\n\n this.users = res;\n this.initDataSource();\n saveRef.close();\n })\n }\n\n initDataSource() {\n this.dataSource.data = this.users;// = new MatTableDataSource(this.users);\n }\n\n updateOrganization(user: User) {\n const dialogRef = this.dialog.open(UpdateOrgComponent, {\n width: '35rem',\n data: user\n });\n\n dialogRef.afterClosed().subscribe(result => {\n if (result) {\n\n let req =\n {\n id: user.id,\n email: result.email,\n updatedOrg: result.organization.name\n };\n\n this.api.post(\"Users\", \"UpdateUserOrganization\", req, true).subscribe(usr => {\n if (!usr.valid && usr.messages.includes(\"UserHasProjectEditor\")) {\n this.dialog.open(UpdateErrorDialogComponent, {\n width: '45rem'\n });\n } else {\n this.retrieveUsers();\n }\n });\n\n }\n console.log('The dialog was closed', result);\n\n });\n }\n}\n","\n
\n \n\n \n \n \n \n \n\n \n \n \n \n \n\n \n \n \n \n \n\n \n \n \n \n \n\n \n \n \n \n \n\n \n \n
Last Name {{user.last}} First Name {{user.first}} Email {{user.email}} Organization {{ user.organization }} \n \n
\n\n \n
\n\n","import { Component, OnInit } from '@angular/core';\nimport { MatDialogRef } from '@angular/material/dialog';\n\n@Component({\n selector: 'app-update-error-dialog',\n templateUrl: './update-error-dialog.component.html',\n styleUrls: ['./update-error-dialog.component.scss']\n})\nexport class UpdateErrorDialogComponent implements OnInit {\n\n constructor(private dialogRef: MatDialogRef) { }\n\n ngOnInit(): void {\n }\n\n onNoClick(): void {\n this.dialogRef.close();\n }\n\n}\n","
\n
\n
\n

\n This user is in the Project Editor group (role). If they are no longer associated to any Organization, the Organization's Administrator must first remove them from this group (role) before removing their Organization affiliation. Alternatively, you can remove them from this group through the Cognito console.\n

\n
\n
\n
\n
\n
\n \n
\n
\n","import { Component, OnInit, ViewChild } from '@angular/core';\nimport { MatDialog } from '@angular/material/dialog';\nimport { MatTableDataSource } from '@angular/material/table';\nimport { User } from 'src/app/_shared/models/user.model';\nimport { ApiService } from 'src/app/_shared/services/api.service';\nimport { AddOrgComponent } from './add-org/add-org.component';\nimport { OrgEditComponent } from './org-edit/org-edit.component';\nimport { OrgUsersComponent } from './org-users/org-users.component';\n\n@Component({\n selector: 'app-organizations',\n templateUrl: './organizations.component.html',\n styleUrls: ['./organizations.component.scss']\n})\nexport class OrganizationsComponent implements OnInit {\n filterTab = {\n users: 'users',\n orgs: 'orgs'\n }\n currentView = this.filterTab.users;\n\n private orgTable!: OrgEditComponent;\n private userTable!: OrgUsersComponent;\n\n //workaround to ensure orgTable is defined\n @ViewChild('orgEdit', {static: false}) set orgContent(content: OrgEditComponent) {\n if(content) {\n this.orgTable = content;\n }\n }\n\n @ViewChild('userEdit', {static: false}) set userContent(content: OrgUsersComponent) {\n if(content) {\n this.userTable = content;\n }\n }\n\n constructor(\n private dialog: MatDialog,\n private api: ApiService\n ) { }\n\n ngOnInit(): void {\n }\n\n onFilterSelect(evt: any) {\n console.log(evt.value);\n this.currentView = evt.value;\n }\n\n createNewOrg(){\n let orgDialog = this.dialog.open(AddOrgComponent, {\n width: '35rem',\n disableClose: false,\n });\n\n\n orgDialog.afterClosed().subscribe(data => {\n if (data) {\n this.createOrg(data);\n }\n });\n\n }\n\n createOrg(data: any) {\n let formattedObj: any = {};\n formattedObj.name = data.name;\n formattedObj.fields = {};\n formattedObj.fields.orgShort = data.orgShort;\n formattedObj.fields.orgType = data.orgType;\n\n this.api.post(\"Organization\", \"Create\", formattedObj , true).subscribe(result => {\n if (!result.valid) {\n //Backend validation didnt pass show the errors``\n //this.showErrors(result.messages);\n }\n else {\n this.orgTable.retreiveOrgs();\n }\n }, error => {\n //Backend gave us a non-200 response\n //this.showErrors([\"The api responded incorrectly.\", JSON.stringify(error, undefined, 2)]);\n })\n }\n\n}\n","
\n\n \n\n
\n
\n
\n

Manage Organizations

\n \n \n \n
\n
\n\n
\n \n Users\n Organizations\n \n
\n\n \n \n \n\n \n \n \n
\n
\n
\n","import { Component, Inject, OnInit } from '@angular/core';\nimport { FormControl, Validators } from '@angular/forms';\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\nimport { ApiService } from 'src/app/_shared/services/api.service';\n\n@Component({\n selector: 'app-update-org',\n templateUrl: './update-org.component.html',\n styleUrls: ['./update-org.component.scss']\n})\nexport class UpdateOrgComponent implements OnInit {\n\n orgs: any[];\n email: string;\n selectedOrg: string;\n\n constructor(\n private dialogRef: MatDialogRef,\n private api: ApiService,\n @Inject(MAT_DIALOG_DATA) public data: any) { }\n\n ngOnInit(): void {\n this.email = this.data.email;\n\n this.api.get(\"Organization\", \"GetAll\", true).subscribe(res => {\n this.orgs = res;\n\n this.orgs.sort((a, b) => (a.name > b.name) ? 1 : -1);\n\n this.selectedOrg = this.orgs.find(item => {\n return item.name === this.data.organization;\n });\n console.log(this.selectedOrg);\n });\n }\n\n\n orgFormControl: FormControl = new FormControl({ value: null, disabled: false }, Validators.required);\n\n onNoClick(): void {\n this.dialogRef.close();\n }\n\n isValid(){\n return true\n }\n\n onSubmit(){\n\n let updatedOrg = this.orgFormControl.value;\n let email = this.email;\n\n let userObject =\n {\n \"email\": email,\n \"organization\": updatedOrg\n }\n\n this.dialogRef.close(userObject);\n\n }\n}\n","\n

\n \n \n
\n Update Organization\n
\n
\n
\n

\n\n\n
\n
\n

{{this.email}}

\n
\n \n \n \n {{org.name}}\n \n \n \n
\n\n \n
\n
\n \n
\n
\n \n
\n
\n
\n
\n\n","import { Component, OnInit, Inject } from '@angular/core';\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\nimport { FormControl } from '@angular/forms';\nimport { allRoles, Role } from '../../../_shared/models/roles.model';\n\n@Component({\n selector: 'app-manage-roles',\n templateUrl: './manage-roles.component.html',\n styleUrls: ['./manage-roles.component.scss']\n})\nexport class ManageRolesComponent implements OnInit {\n\n allRoles : Role[] = allRoles(); //[ { id:1, name:\"Browser\"}, { id:2, name:\"Editor\"}, { id:3, name:\"Administrator\"}]\n\n managerFormControl!: FormControl;\n selectedRole: string;\n checked: boolean;\n\n constructor(\n public dialogRef: MatDialogRef,\n @Inject(MAT_DIALOG_DATA) public user: any) {}\n\n onNoClick(): void {\n this.dialogRef.close();\n console.log(this.selectedRole)\n }\n\n onOkClick() : void {\n this.dialogRef.close(this.selectedRole);\n }\n\n ngOnInit(): void {\n\n for(let role of this.allRoles)\n {\n if(role.name == this.user.displayRole){\n this.selectedRole = role.name\n }\n }\n console.log(this.selectedRole)\n }\n\n}\n","

\n \n \n Update Role\n \n \n

\n\n
\n
\n
\n

{{user.email}}\n

\n
\n \n \n {{role.name}}\n \n \n
\n
\n\n
\n
\n \n
\n
\n \n
\n
\n","import { Component, OnInit, ViewChild } from '@angular/core';\nimport { MatTableDataSource } from '@angular/material/table';\nimport { MatPaginator } from '@angular/material/paginator';\nimport { MatSort, MatSortable } from '@angular/material/sort';\nimport { ApiService } from '../../_shared/services/api.service';\nimport { ManageRolesComponent } from './manage-roles/manage-roles.component';\nimport { MatDialog } from '@angular/material/dialog';\nimport { Role, allRoles } from '../../_shared/models/roles.model';\nimport { LoadingDialogComponent } from '../../loading-dialog/loading-dialog.component';\nimport { User } from '../admin.model';\nimport { AuthorizationService } from 'src/app/_shared/services/authorization.service';\n\n@Component({\n selector: 'app-users',\n templateUrl: './users.component.html',\n styleUrls: ['./users.component.scss']\n})\nexport class UsersComponent implements OnInit {\n displayedColumns: string[] = ['last', 'first', 'email', 'requestEditor', 'displayRole', 'actions'];\n users: User[];\n dataSource = new MatTableDataSource([]);\n allRoles: Role[] = allRoles();\n acceptableRoles: string[] = [];\n leadOrg: any;\n isRefreshing: boolean = false;\n\n\n @ViewChild(MatSort, { static: true }) sort: MatSort;\n @ViewChild(MatPaginator, { static: true }) paginator: MatPaginator;\n\n constructor(\n private api: ApiService,\n private dialog: MatDialog,\n private auth: AuthorizationService) { }\n\n\n ngOnInit(): void {\n if (this.auth.login.orgs == undefined) { \n this.auth.authorize().subscribe((login) =>\n { \n this.auth.login = login;\n if (!this.isRefreshing) {\n this.refreshList();\n }\n \n })\n }\n else {\n this.refreshList(); \n } \n }\n\n refreshList() {\n this.isRefreshing = true;\n this.leadOrg = this.auth.login.orgs.organization;\n this.dataSource.paginator = this.paginator;\n this.sort.sort(({ id: 'lastfirst', start: 'asc' }) as MatSortable);\n this.dataSource.sort = this.sort;\n \n this.dataSource.sortingDataAccessor = (data: any, sortHeaderId: string): string => {\n if (sortHeaderId == 'lastfirst') {\n return (data['last'] + data['first']).toLocaleLowerCase();\n }\n \n if (typeof data[sortHeaderId] === 'string') {\n return data[sortHeaderId].toLocaleLowerCase();\n }\n \n return data[sortHeaderId];\n };\n debugger;\n const saveRef = this.dialog.open(LoadingDialogComponent, {\n width: '25rem',\n data: \"Loading Users\",\n disableClose: true\n });\n \n let org = this.auth.login.orgs.organization;\n \n this.api.post(\"Users\", \"GetAllByOrg\", { searchString: org }, true).subscribe(res => {\n \n this.acceptableRoles = [];\n \n for (let role of this.allRoles)\n this.acceptableRoles.push(role.name);\n \n //This filters out all the extra roles we may have in the system\n //For instance we dont want to show Develoiper roles or feature roles\n for (let usr of res) {\n let oldRoles = usr.roles;\n usr.roles = [];\n for (let role of oldRoles)\n if (this.acceptableRoles.includes(role))\n usr.roles.push(role);\n }\n \n this.users = res;\n this.initDataSource();\n saveRef.close();\n }) \n }\n\n initDataSource() {\n this.dataSource.data = this.users;// = new MatTableDataSource(this.users);\n }\n\n manageRolesFor(user: User) {\n const dialogRef = this.dialog.open(ManageRolesComponent, {\n width: '35rem',\n data: user\n });\n\n dialogRef.afterClosed().subscribe(result => {\n if (result) {\n let unassignRole = \"\";\n\n for (let role of this.allRoles)\n if (role.name !== result)\n unassignRole = role.name;\n\n let req =\n {\n unassign: unassignRole\n , assign: result\n , id: user.id\n , email: user.email\n };\n\n const saveRef = this.dialog.open(LoadingDialogComponent, {\n width: '25rem',\n data: \"Saving Roles\",\n disableClose: true\n });\n\n this.api.post(\"Users\", \"ManageRoles\", req, true).subscribe(usr => {\n let oldRoles = usr.result.roles;\n usr.roles = [];\n for (let role of oldRoles)\n if (this.acceptableRoles.includes(role))\n usr.roles.push(role);\n user.roles = usr.roles;\n\n let org = this.auth.login.orgs.organization;\n\n this.api.post(\"Users\", \"GetAllByOrg\", { searchString: org }, true).subscribe(res => {\n\n this.users = res;\n this.initDataSource();\n\n saveRef.close();\n });\n });\n\n }\n console.log('The dialog was closed', result);\n });\n }\n\n}\n","
\n\n \n\n
\n
\n
\n

Manage Users for {{this.leadOrg}}

\n
\n
\n \n\n \n \n \n \n \n\n \n \n \n \n \n\n \n \n \n \n \n\n \n \n \n \n \n\n \n \n \n \n \n\n \n \n \n \n \n\n \n \n
Last Name {{user.last}} First Name {{user.first}} Email {{user.email}} Requested Editor {{ user.requestEditor ? \"Yes\" : \"\" }} Role {{user.displayRole}} \n \n
\n\n \n
\n
\n
\n
\n
\n","import { Component } from '@angular/core';\nimport { ApiService } from './_shared/services/api.service';\nimport { Configuration, ConfigurationService } from './_shared/services/configuration.service';\n\n@Component({\n selector: 'app-root',\n templateUrl: './app.component.html',\n styleUrls: ['./app.component.scss']\n})\nexport class AppComponent {\n title = 'New Mexico Shared Stewardship Portal';\n\n config: Configuration;\n\n isNotProd = false //environment.production === false;\n\n constructor(\n private configService: ConfigurationService,\n private api: ApiService\n ) { }\n}\n","\n\n","import { NgModule } from '@angular/core';\nimport { BrowserModule } from '@angular/platform-browser';\n\nimport { AppComponent } from './app.component';\nimport { BrowserAnimationsModule } from '@angular/platform-browser/animations';\nimport { LoginComponent } from './login/login.component';\nimport { AdminComponent } from './admin/admin.component';\nimport { ManageRolesComponent } from './admin/users/manage-roles/manage-roles.component';\nimport { UsersComponent } from './admin/users/users.component';\nimport { AuthorizingComponent } from './authorizing/authorizing.component';\nimport { ConfirmDialogComponent } from './confirm-dialog/confirm-dialog.component';\nimport { AllCardsViewComponent } from './dashboard/all-cards-view/all-cards-view.component';\nimport { CardViewComponent } from './dashboard/card-view/card-view.component';\nimport { DashboardComponent } from './dashboard/dashboard.component';\nimport { InfoDialogComponent } from './dashboard/info-dialog/info-dialog.component';\nimport { HeaderComponent } from './header/header.component';\nimport { HomeComponent } from './home/home.component';\nimport { LoadingDialogComponent } from './loading-dialog/loading-dialog.component';\nimport { LogoutComponent } from './logout/logout.component';\nimport { MainComponent } from './main/main.component';\nimport { ManageAllComponent } from './manage/manage-all/manage-all.component';\nimport { AddConcernDialogComponent } from './manage/manage-view/add-concern-dialog/add-concern-dialog.component';\nimport { ManageViewComponent } from './manage/manage-view/manage-view.component';\nimport { ManageComponent } from './manage/manage.component';\nimport { ErrorDialogComponent } from './map/error-dialog/error-dialog.component';\nimport { GeoSearchComponent } from './map/geo-search/geo-search.component';\nimport { MapComponent } from './map/map.component';\nimport { SaveDialogComponent } from './map/save-dialog/save-dialog.component';\nimport { SavedDialogComponent } from './map/saved-dialog/saved-dialog.component';\nimport { CategoryContainerComponent } from './map/sidebar/category-container/category-container.component';\nimport { LayerIdentifyComponent } from './map/sidebar/layer-identify/layer-identify.component';\nimport { LayerLegendComponent } from './map/sidebar/layer-legend/layer-legend.component';\nimport { LayerListItemComponent } from './map/sidebar/layer-list-item/layer-list-item.component';\nimport { SidebarContentComponent } from './map/sidebar/sidebar-content/sidebar-content.component';\nimport { MockauthComponent } from './mockauth/mockauth.component';\nimport { NotFoundComponent } from './not-found/not-found.component';\nimport { PanelComponent } from './panel/panel.component';\nimport { PortalComponent } from './portal/portal.component';\nimport { RegisterComponent } from './register/register.component';\nimport { RequireACLDirective, RequireAnyACLDirective, RequireOrgDirective, RequireSameOrgDirective, RequireACLAndSameOrgDirective, RequireAclEapoPartner } from './require-acl.directive';\nimport { SharedNavComponent } from './shared-nav/shared-nav.component';\nimport { SlimLoginComponent } from './slim-login/slim-login.component';\nimport { UserMenuComponent } from './user-menu/user-menu.component';\nimport { VersionComponent } from './version/version.component';\nimport { AppRoutingModule, isMock } from './routing.config';\nimport { HttpClientModule, HTTP_INTERCEPTORS } from '@angular/common/http';\nimport { FlexLayoutModule } from '@angular/flex-layout';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { MaterialModule } from './material.config';\nimport { MockBackendInterceptor, PassthroughInterceptor } from './mocks';\nimport { DynamicFormComponent } from './_shared/components/forms/dynamic-form/dynamic-form.component';\nimport { DynamicFormFieldComponent } from './_shared/components/forms/dynamic-form-field/dynamic-form-field.component';\nimport { TestComponent } from './test/test.component';\nimport { HomeMainComponent } from './home-main/home-main.component';\nimport { ProjectComponent } from './project/project.component';\nimport { SlimMapComponent } from './slim-map/slim-map.component';\nimport { ProjectViewComponent } from './project/project-view/project-view.component';\nimport { ProjectCreateComponent } from './project/project-create/project-create.component';\nimport { ContactDialogComponent } from './contact-dialog/contact-dialog.component';\nimport { ProjectInfoDialogComponent } from './project-info-dialog/project-info-dialog.component';\nimport { ProjectFilterDialogComponent } from './project-filter-dialog/project-filter-dialog.component';\nimport { RegisterErrorDialogComponent } from './register/register-error-dialog/register-error-dialog.component';\nimport { ActivityComponent } from './activity/activity.component';\nimport { ActivityCreateComponent } from './activity/activity-create/activity-create.component';\nimport { ActivityViewComponent } from './activity/activity-view/activity-view.component';\nimport { ActivityCreateDialogComponent } from './activity/activity-create-dialog/activity-create-dialog.component';\nimport { EditButtonClusterComponent } from './_shared/components/edit-button-cluster/edit-button-cluster.component';\nimport { PartnerComponent } from './partner/partner.component';\nimport { PartnerAddDialogComponent } from './partner/partner-add-dialog/partner-add-dialog.component';\nimport { MapEditDialogComponent } from './_shared/components/dialogs/map-edit-dialog/map-edit-dialog.component';\nimport { ActivityCardComponent } from './activity/activity-card/activity-card.component';\nimport { ActivityCancelDialogComponent } from './activity/activity-create/activity-cancel-dialog/activity-cancel-dialog.component';\nimport { FundingComponent } from './funding/funding.component';\nimport { FundingAddDialogComponent } from './funding/funding-add-dialog/funding-add-dialog.component';\nimport { ProjectGeoCardComponent } from './project/project-geo-card/project-geo-card.component';\nimport { GeoSlotComponent } from './project/project-geo-card/geo-slot/geo-slot.component';\nimport { DecimalPipe } from '@angular/common';\nimport { OpportunityComponent } from './opportunity/opportunity.component';\nimport { ImpedimentComponent } from './impediment/impediment.component';\nimport { NoteCreateDialogComponent } from './note-create-dialog/note-create-dialog.component';\nimport { ProjectFundingComponent } from './project/project-funding/project-funding.component';\nimport { ProjectFundingSourceComponent } from './project/project-funding-source/project-funding-source.component';\nimport { FocalComponent } from './focal/focal.component';\nimport { FocalViewComponent } from './focal/focal-view/focal-view.component';\nimport { GenericCardComponent } from './generic-card/generic-card.component';\nimport { LinkComponent } from './link/link.component';\nimport { LinkAddDialogComponent } from './link/link-add-dialog/link-add-dialog.component';\nimport { ImportComponent } from './import/import.component';\nimport { ImportDialogComponent } from './import/import-dialog/import-dialog.component';\nimport { ProjectFilterComponent } from './project-filter/project-filter.component';\nimport { LayerExplorerComponent } from './map/sidebar/layer-explorer/layer-explorer.component';\nimport { LayerExplorerContainerComponent } from './map/sidebar/layer-explorer-container/layer-explorer-container.component';\nimport { FindSomethingComponent } from './_shared/components/dialogs/find-something/find-something.component';\nimport { OrganizationsComponent } from './admin/organizations/organizations.component';\nimport { OrgEditComponent } from './admin/organizations/org-edit/org-edit.component';\nimport { OrgUsersComponent } from './admin/organizations/org-users/org-users.component';\nimport { UpdateOrgComponent } from './admin/organizations/update-org/update-org.component';\nimport { AddOrgComponent } from './admin/organizations/add-org/add-org.component';\nimport { DeleteOrgComponent } from './admin/organizations/delete-org/delete-org.component';\nimport { ArchiveErrorDialogComponent } from './admin/organizations/org-edit/archive-error-dialog/archive-error-dialog.component';\nimport { UpdateErrorDialogComponent } from './admin/organizations/org-users/update-error-dialog/update-error-dialog.component';\nimport { MinMaxDirective } from './_shared/directives/min-max.directive';\nimport { DecimalCapDirective } from './_shared/directives/decimal-cap.directive';\nimport { FocalReportComponent } from './focal/focal-report/focal-report.component';\nimport { ForgotPasswordComponent } from './forgot-password/forgot-password.component';\n\n@NgModule({\n declarations: [\n AppComponent,\n LoginComponent,\n PanelComponent,\n HomeComponent,\n NotFoundComponent,\n RegisterComponent,\n MapComponent,\n HeaderComponent,\n SlimLoginComponent,\n MockauthComponent,\n VersionComponent,\n AdminComponent,\n UsersComponent,\n PortalComponent,\n RequireACLDirective,\n RequireOrgDirective,\n RequireACLAndSameOrgDirective,\n RequireSameOrgDirective,\n RequireAnyACLDirective,\n DecimalCapDirective,\n RequireAclEapoPartner,\n MinMaxDirective,\n SharedNavComponent,\n ManageRolesComponent,\n UserMenuComponent,\n LogoutComponent,\n SidebarContentComponent,\n CategoryContainerComponent,\n LayerListItemComponent,\n LayerLegendComponent,\n AuthorizingComponent,\n GeoSearchComponent,\n SaveDialogComponent,\n ErrorDialogComponent,\n LoadingDialogComponent,\n SavedDialogComponent,\n ManageComponent,\n MainComponent,\n ManageViewComponent,\n ManageAllComponent,\n ConfirmDialogComponent,\n LayerIdentifyComponent,\n AddConcernDialogComponent,\n DashboardComponent,\n InfoDialogComponent,\n CardViewComponent,\n AllCardsViewComponent,\n DynamicFormComponent,\n DynamicFormFieldComponent,\n TestComponent,\n HomeMainComponent,\n ProjectComponent,\n SlimMapComponent,\n ProjectViewComponent,\n ProjectCreateComponent,\n ContactDialogComponent,\n ProjectInfoDialogComponent,\n ProjectFilterDialogComponent,\n RegisterErrorDialogComponent,\n ActivityComponent,\n ActivityCreateComponent,\n ActivityViewComponent,\n ActivityCreateDialogComponent,\n EditButtonClusterComponent,\n PartnerComponent,\n PartnerAddDialogComponent,\n MapEditDialogComponent,\n ActivityCardComponent,\n ActivityCancelDialogComponent,\n FundingComponent,\n FundingAddDialogComponent,\n ProjectGeoCardComponent,\n GeoSlotComponent,\n OpportunityComponent,\n ImpedimentComponent,\n NoteCreateDialogComponent,\n ProjectFundingComponent,\n ProjectFundingSourceComponent,\n FocalComponent,\n FocalViewComponent,\n GenericCardComponent,\n LinkComponent,\n LinkAddDialogComponent,\n ImportComponent,\n ImportDialogComponent,\n ProjectFilterComponent,\n LayerExplorerComponent,\n LayerExplorerContainerComponent,\n FindSomethingComponent,\n OrganizationsComponent,\n OrgEditComponent,\n OrgUsersComponent,\n UpdateOrgComponent,\n AddOrgComponent,\n DeleteOrgComponent,\n ArchiveErrorDialogComponent,\n UpdateErrorDialogComponent,\n FocalReportComponent,\n ForgotPasswordComponent\n ],\n imports: [\n HttpClientModule,\n AppRoutingModule,\n BrowserModule,\n MaterialModule,\n FlexLayoutModule,\n BrowserAnimationsModule,\n FormsModule,\n ReactiveFormsModule\n ],\n providers: [\n {\n provide: HTTP_INTERCEPTORS,\n useClass: isMock ? MockBackendInterceptor : PassthroughInterceptor,\n multi: true\n },\n DecimalPipe\n ],\n bootstrap: [AppComponent]\n})\nexport class AppModule { }\n","import { Component, OnInit, OnDestroy } from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { AuthorizationService } from '../_shared/services/authorization.service';\nimport { Subscription } from 'rxjs';\n\n@Component({\n selector: 'app-authorizing',\n templateUrl: './authorizing.component.html',\n styleUrls: ['./authorizing.component.scss']\n})\nexport class AuthorizingComponent implements OnInit, OnDestroy {\n\n\n constructor(private route: ActivatedRoute, private router: Router, private auth: AuthorizationService) { }\n\n subs: Subscription[] = [];\n\n ngOnDestroy(): void {\n this.subs.forEach(sub => { sub.unsubscribe(); });\n }\n ngOnInit(): void {\n if (this.subs.length) {\n this.subs.forEach(sub => { sub.unsubscribe(); });\n this.subs = [];\n }\n\n this.subs.push(this.route.queryParams\n .subscribe(params => {\n if (params.redirectTo) {\n let parts = params.redirectTo.split(\"?\");\n\n let path = parts[0];\n let parms = parts.length > 1 ? parts[1].split(\"&\").map(itm => { let p = itm.split(\"=\"); return p; }) : [];\n let po = {};\n\n for (let tup of parms) {\n po[tup[0]] = decodeURIComponent(tup[1]);\n }\n\n //Regardless of our current state we want to redirect after logging in\n //This will retrigger the route guard that will pass it if the user has the ACL or bump them back to the home screen\n this.subs.push(this.auth.onFutureLogin().subscribe(login => {\n setTimeout(() => { this.router.navigate([path], { queryParams: po }); }, 1500);\n }));\n\n if (!this.auth.isLoggingIn && !this.auth.isRefreshing) {\n this.auth.authorize();\n }\n }\n else {\n //No parameter set, go back to home\n this.router.navigate(['/']);\n }\n }));\n\n }\n\n login(): void {\n this.auth.authorize();\n }\n\n}\n","
\n \n \n

Authorizing ...

\n
\n \n

If the login doesn't open automatically, click the Sign In button below.

\n
\n

\n Sign In\n

\n
\n
\n
\n","import { Component, OnInit, Inject } from '@angular/core';\nimport { MAT_DIALOG_DATA } from '@angular/material/dialog';\n\n@Component({\n selector: 'app-confirm-dialog',\n templateUrl: './confirm-dialog.component.html',\n styleUrls: ['./confirm-dialog.component.scss']\n})\nexport class ConfirmDialogComponent implements OnInit {\n\n\n constructor(@Inject(MAT_DIALOG_DATA) public data: ConfirmationSettings) { }\n\n ngOnInit(): void {\n }\n\n}\n\n\nexport interface ConfirmationSettings {\n title : string\n text : string;\n confirm : string;\n cancel : string;\n}\n","

\n {{ data.title || 'Confirm Action' }}

\n

\n\n
\n
\n
\n

\n {{data.text}}\n

\n
\n\n
\n
\n
\n
\n \n
\n
\n \n
\n
\n","import { Component, OnInit } from '@angular/core';\nimport { MatDialogRef } from '@angular/material/dialog';\n\n@Component({\n selector: 'app-contact-dialog',\n templateUrl: './contact-dialog.component.html',\n styleUrls: ['./contact-dialog.component.scss']\n})\nexport class ContactDialogComponent implements OnInit {\n\n constructor(private dialogRef: MatDialogRef) { }\n\n ngOnInit(): void {\n }\n\n onNoClick(): void {\n this.dialogRef.close();\n }\n\n}\n","

Contact Us

\n\n
\n
\n
\n

\n Need technical assistance using the Portal? Contact us here
\n

\n

\n Have general questions about the Portal? Contact us here
\n

\n
\n
\n
\n
\n
\n \n
\n
\n","import { Component, OnInit, OnDestroy } from '@angular/core';\nimport { InfoDialogComponent } from '../info-dialog/info-dialog.component';\nimport { MatDialog } from '@angular/material/dialog';\nimport { DashboardService } from 'src/app/_shared/services/dashboard.service';\nimport { LoadingDialogComponent } from 'src/app/loading-dialog/loading-dialog.component';\n\n@Component({\n selector: 'app-all-cards-view',\n templateUrl: './all-cards-view.component.html',\n styleUrls: ['./all-cards-view.component.scss']\n})\nexport class AllCardsViewComponent implements OnInit, OnDestroy {\n\n public cardGrid = [];\n public refreshId = undefined;\n\n constructor(private dialog: MatDialog, private dashboardService : DashboardService) { }\n ngOnDestroy(): void {\n if(this.refreshId != undefined)\n clearInterval(this.refreshId);\n }\n\n refresh() {\n const saveRef = this.dialog.open(LoadingDialogComponent, {\n width: '25rem',\n data: \"Loading All Cards\",\n disableClose: false\n });\n this.dashboardService.getCards().subscribe(result => {\n this.cardGrid = result;\n setTimeout(() => { saveRef.close()}, 500)\n })\n }\n\n ngOnInit(): void {\n \n //this.refreshId = setInterval(() => { this.refresh() }, 5000 );\n \n this.refresh();\n }\n\n // cardGrid = [\n // [ \n // { title: \"ASSESSMENTS\", \n // bg: \"https://timmons-branding.s3.amazonaws.com/Shared+Images/Curvy+Line+Graph.svg\", \n // description: \"The assessments stats are based on data entered into this app.\",\n // link: \"https://google.com\",\n // id: 7,\n // stats: [ \n // { value: \"96,432\", label: \"Acres Assessed\" },\n // { value: \"16,432\", label: \"Acres With Resource Concerns\" }\n // ] \n // }\n // ],\n // [ \n // { title: \"INVENTORY\", \n // bg: \"https://timmons-branding.s3.amazonaws.com/Shared+Images/Flat+Bar+Graph.svg\", \n // stats: [ \n // { value: \"56,789\", label: \"Acres Inventoried\" }\n // ] \n // }\n // ],\n // [ \n // { title: \"PLANTS\", \n // bg: \"https://timmons-branding.s3.amazonaws.com/Shared+Images/Desert+Plants.svg\", \n // stats: [ \n // { value: \"189\", label: \"Total Acres With Vegetation Resource Concerns\" }\n // ] \n // }\n // , { title: \"ANIMALS\", \n // bg: \"https://timmons-branding.s3.amazonaws.com/Shared+Images/Deer.svg\", \n // stats: [ \n // { value: \"4,221\", label: \"Total Acres With Wildlife Resource Concerns\" }\n // ] \n // }\n // , { title: \"ENERGY\", \n // bg: \"https://timmons-branding.s3.amazonaws.com/Shared+Images/High+Tension+Power+Lines.svg\", \n // stats: [ \n // { value: \"32.6 Million\", label: \"Total Acres With Infrastructure Resource Concerns\" }\n // ] \n // }\n // ],\n // [ \n // { title: \"WATER\", \n // bg: \"https://timmons-branding.s3.amazonaws.com/Shared+Images/Water.svg\", \n // stats: [ \n // { value: \"14\", label: \"Total Acres With Water Resource Concerns\" }\n // ] \n // }\n // , { title: \"AIR\", \n // bg: \"https://timmons-branding.s3.amazonaws.com/Shared+Images/Clouds.svg\", \n // stats: [ \n // { value: \"1,234,567\", label: \"Total Acres With Air Resource Concerns\" }\n // ] \n // }\n // , { title: \"SOILS\", \n // bg: \"https://timmons-branding.s3.amazonaws.com/Shared+Images/Soils.svg\", \n // stats: [ \n // { value: \"987,654,321\", label: \"Total Acres With Soil Resource Concerns\" }\n // ] \n // }\n // ]\n // ]\n\n}\n","\n","import { Component, OnInit } from '@angular/core';\nimport { MatDialog } from '@angular/material/dialog';\nimport { DomSanitizer, SafeResourceUrl } from '@angular/platform-browser';\nimport { ActivatedRoute } from '@angular/router';\nimport { LoadingDialogComponent } from 'src/app/loading-dialog/loading-dialog.component';\nimport { Card } from 'src/app/_shared/models/card.model';\nimport { ApiService } from 'src/app/_shared/services/api.service';\nimport { DashboardService } from 'src/app/_shared/services/dashboard.service';\nimport { IQueryFeaturesResponse, queryFeatures } from '@esri/arcgis-rest-feature-layer';\n\n@Component({\n selector: 'app-card-view',\n templateUrl: './card-view.component.html',\n styleUrls: ['./card-view.component.scss']\n})\nexport class CardViewComponent implements OnInit {\n\n public target: Card = undefined;\n\n public frameUrl: SafeResourceUrl;\n\n constructor(private dialog: MatDialog, private dashboardService: DashboardService, private route: ActivatedRoute,\n private api: ApiService, private sanitizer: DomSanitizer) { }\n\n ngOnInit(): void {\n\n this.route.queryParams.subscribe(params => {\n let id = params[\"id\"];\n\n if (id == undefined)\n return;\n\n let iid = parseInt(id);\n\n\n var saveRef = this.dialog.open(LoadingDialogComponent, {\n width: '25rem',\n data: \"Loading Selected Card\",\n disableClose: false\n });\n\n this.dashboardService.getCardById(iid).subscribe(result => {\n if (result) {\n this.target = result;\n }\n setTimeout(() => { saveRef.close(); }, 500);\n\n // Set new iframe URL\n this.frameUrl = this.getUrl(this.target);\n\n this.checkForLastUpdated();\n })\n });\n }\n\n getUrl(target): SafeResourceUrl {\n console.log(target.link);\n return this.sanitizer.bypassSecurityTrustResourceUrl(target.link);\n }\n\n async checkForLastUpdated() {\n if (this.target?.lastModifiedField && this.target?.lastModifiedUrl) {\n const resp: IQueryFeaturesResponse = await queryFeatures({\n url: this.target?.lastModifiedUrl,\n where: `${this.target?.lastModifiedField} IS NOT NULL`,\n returnGeometry: false,\n outFields: [this.target?.lastModifiedField],\n resultRecordCount: 1\n }) as IQueryFeaturesResponse;\n\n if (resp?.features?.length > 0) {\n const dateData: Date = resp?.features[0]?.attributes?.[this.target?.lastModifiedField] || null\n this.target.lastmodified = dateData;\n }\n }\n }\n\n}\n","
\r\n
\r\n
\r\n
\r\n
\r\n {{target.title}}\r\n
\r\n < Back to Dashboard\r\n Last Updated: {{ target?.lastmodified | date:'short' }}\r\n
\r\n
\r\n
\r\n
{{ target?.description || '' }}
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n\r\n
\r\n
\r\n","import { Component, OnInit } from '@angular/core';\n\n@Component({\n selector: 'app-dashboard',\n templateUrl: './dashboard.component.html',\n styleUrls: ['./dashboard.component.scss']\n})\nexport class DashboardComponent implements OnInit {\n\n constructor() { }\n\n ngOnInit(): void {\n }\n\n \n\n}\n","\r\n","import { Component, OnInit, Inject } from '@angular/core';\nimport { MAT_DIALOG_DATA } from '@angular/material/dialog';\n\n@Component({\n selector: 'app-info-dialog',\n templateUrl: './info-dialog.component.html',\n styleUrls: ['./info-dialog.component.scss']\n})\nexport class InfoDialogComponent implements OnInit {\n\n constructor(@Inject(MAT_DIALOG_DATA) public data: InfoSettings) { }\n\n\n ngOnInit(): void {\n }\n\n}\n\nexport interface InfoSettings {\n title : string\n text : string;\n confirm : string;\n cancel : string;\n}\n","

{{ data.title || 'Confirm Action' }}

\n\n
\n
\n
\n

\n {{data.text}}\n

\n
\n\n
\n
\n
\n
\n \n
\n
","import { StringMapWithRename } from '@angular/compiler/src/compiler_facade_interface';\nimport { AfterViewInit, Component, OnInit, ViewChild } from '@angular/core';\nimport { MatDialog } from '@angular/material/dialog';\nimport { ActivatedRoute } from '@angular/router';\nimport { IQueryFeaturesResponse, queryFeatures } from '@esri/arcgis-rest-feature-layer';\nimport { LoadingDialogComponent } from 'src/app/loading-dialog/loading-dialog.component';\nimport { SlimMapComponent } from 'src/app/slim-map/slim-map.component';\nimport { ApiService } from 'src/app/_shared/services/api.service';\nimport { ReportService } from 'src/app/_shared/services/report.service';\n\ndeclare var ol: any;\ndeclare var famMap: any;\ndeclare var window: any;\n\n@Component({\n selector: 'app-focal-report',\n templateUrl: './focal-report.component.html',\n styleUrls: ['./focal-report.component.scss']\n})\nexport class FocalReportComponent implements OnInit, AfterViewInit {\n\n name: string;\n priorityLandscape: string;\n strategies: any[];\n partners: any[];\n activeProjects: number;\n associatedProjects: any[];\n completedProjects: number;\n acresCompletedActivities: number;\n completedTreatmentActivities: number;\n totalPlannedFunding: number;\n totalActualFunding: number;\n totalFundingMatch: number;\n sources: any[] = [];\n mapGeometry: any;\n etlData: any;\n imageUrl: string;\n dialogRef: any;\n\n @ViewChild('slimMap') slimMap: SlimMapComponent;\n\n constructor(\n private route: ActivatedRoute,\n private reportService: ReportService,\n private dialog: MatDialog,) { }\n\n ngOnInit(): void {\n const saveRef = this.dialog.open(LoadingDialogComponent, {\n width: '25rem',\n data: \"Loading Users\",\n disableClose: true\n });\n\n this.route.queryParams.subscribe(params => {\n let name = params['name'];\n this.name = name;\n if (name == undefined)\n return;\n\n this.checkForLastUpdated();\n\n this.priorityLandscape = this.reportService.getPriorityLandscape();\n this.activeProjects = this.reportService.getActiveProjects();\n this.partners = this.reportService.getPartners();\n this.strategies = this.reportService.getStrategies();\n this.completedProjects = this.reportService.getCompletedProjects();\n this.mapGeometry = this.reportService.getMapGeometry();\n this.associatedProjects = this.reportService.getAssociatedProjects();\n });\n\n\n saveRef.close();\n }\n\n processFundingSources(data: any) {\n this.sources = [];\n\n this.sources.forEach(function (source) {\n console.log(source);\n\n });\n }\n\n ngAfterViewInit() {\n this.dialogRef = this.dialog.open(LoadingDialogComponent, {\n width: '25rem',\n data: \"Generating Map.\",\n disableClose: true\n });\n this.setupMoveListener();\n this.slimMap.update(this.mapGeometry);\n }\n\n async checkForLastUpdated() {\n\n const resp: IQueryFeaturesResponse = await queryFeatures({\n url: 'https://services.arcgis.com/4fG3YBzBoefRGq66/arcgis/rest/services/focal_public/FeatureServer/0',\n where: `name='${this.name}'`,\n returnGeometry: false,\n outFields: [\n 'ct_count',\n 'ct_acres',\n 'ct_total_funding',\n 'ct_total_funding_match'\n ],\n resultRecordCount: 1\n }) as IQueryFeaturesResponse;\n\n if (resp?.features?.length > 0) {\n this.etlData = resp?.features[0];\n this.totalActualFunding = this.etlData.attributes.ct_total_funding;\n this.totalFundingMatch = this.etlData.attributes.ct_total_funding_match;\n this.acresCompletedActivities = this.etlData.attributes.ct_acres;\n this.completedTreatmentActivities = this.etlData.attributes.ct_count;\n }\n\n }\n\n\n printContent(){\n window.print();\n }\n\n private setupMapImage() {\n const map = famMap.getMap();\n\n map.once('rendercomplete', () => {\n const mapCanvas = document.createElement('canvas');\n const size = map.getSize();\n mapCanvas.width = size[0];\n mapCanvas.height = size[1];\n const mapContext = mapCanvas.getContext('2d');\n\n Array.prototype.forEach.call(\n document.querySelectorAll('.ol-layer canvas'),\n function (canvas) {\n if (canvas.width > 0) {\n const opacity = canvas.parentNode.style.opacity;\n mapContext.globalAlpha = opacity === '' ? 1 : Number(opacity);\n const transform = canvas.style.transform;\n // Get the transform parameters from the style's transform matrix\n const matrix = transform\n .match(/^matrix\\(([^\\(]*)\\)$/)[1]\n .split(',')\n .map(Number);\n // Apply the transform to the export map context\n CanvasRenderingContext2D.prototype.setTransform.apply(\n mapContext,\n matrix\n );\n mapContext.drawImage(canvas, 0, 0);\n }\n }\n );\n\n\n this.imageUrl = mapCanvas.toDataURL();\n\n this.dialogRef.close();\n\n });\n\n setTimeout(() => { map.renderSync(); }, 500);\n }\n\n private setupMoveListener() {\n const map = famMap.getMap();\n const that = this;\n map.on('moveend', (e) => {\n console.log('move end');\n that.setupMapImage();\n });\n }\n\n}\n","
\n\n
\n
\n
\n \n
\n
\n\n \n
\n\n \n
\n\n\n
\n
\n\n
\n
New Mexico Shared Stewardship Portal Focal Area Report
\n

Focal Area | {{ this.name }}

\n
\n\n
\n
\n
\n
\n\n
\n\n
\n

Priority Landscape

\n

{{this.priorityLandscape}}

\n
\n\n
\n

Focal Area Strategies

\n
\n

{{strategy}}

\n
\n
\n\n
\n\n
\n
\n\n
\n
\n\n
\n \n \n
\n\n
\n \"Map\n
\n\n
\n
\n\n
\n
\n\n
\n

Collaborating Partners

\n
\n

{{partner.name}}

\n
\n
\n\n
\n
\n\n
\n
\n\n
\n
\n

Focal Area Investments at-a-Glance

\n
\n

{{this.activeProjects}}  Total active projects

\n

{{this.completedProjects}}  Total completed projects to date

\n

{{this.completedTreatmentActivities}}  Total completed treatment activities to date

\n

{{this.acresCompletedActivities | number}}  Acres completed treatment to date

\n

{{this.totalActualFunding | currency }}  Total actual financial investment to date

\n

{{this.totalFundingMatch | currency }}  Total funding counted as match

\n
\n
\n
\n\n
\n
\n\n
\n\n
\n\n
\n
\n\n","import { Component, HostListener, OnInit, ViewChild } from '@angular/core';\nimport { MatDialog } from '@angular/material/dialog';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { ConfirmDialogComponent } from 'src/app/confirm-dialog/confirm-dialog.component';\nimport { GenericCard } from 'src/app/generic-card/generic-card.model';\nimport { LinkAddDialogComponent } from 'src/app/link/link-add-dialog/link-add-dialog.component';\nimport { LinkComponent } from 'src/app/link/link.component';\nimport { LoadingDialogComponent } from 'src/app/loading-dialog/loading-dialog.component';\nimport { ErrorDialogComponent } from 'src/app/map/error-dialog/error-dialog.component';\nimport { SlimMapComponent } from 'src/app/slim-map/slim-map.component';\nimport { DynamicFormComponent } from 'src/app/_shared/components/forms/dynamic-form/dynamic-form.component';\nimport { CoreEntity } from 'src/app/_shared/models/core-entity.model';\nimport { PamObject, PamShapeData } from 'src/app/_shared/models/pam-object.model';\nimport { ApiService } from 'src/app/_shared/services/api.service';\nimport { FieldService } from 'src/app/_shared/services/forms/field.service';\nimport { ReportService } from 'src/app/_shared/services/report.service';\n\nexport interface PartnerVm {\n name?: string;\n type?: string | string[];\n}\n\n@Component({\n selector: 'app-focal-view',\n templateUrl: './focal-view.component.html',\n styleUrls: ['./focal-view.component.scss']\n})\nexport class FocalViewComponent implements OnInit {\n\n name: string;\n heightValue = '100rem;';\n screenHeight: number;\n screenWidth: number;\n target: any = { fields: {} };\n focal: any;\n fields: any;\n links: any[] = [];\n associatedProjects: any[];\n inactiveProjectsVm: GenericCard[] = [];\n activeProjectsVm: GenericCard[] = [];\n partnersVm: any[] = [];\n focusFields: any[];\n @ViewChild('slimMap') slimMap: SlimMapComponent;\n @ViewChild('focus') focus: DynamicFormComponent;\n @ViewChild('linkData') linkData: LinkComponent;\n\n constructor(\n private route: ActivatedRoute,\n private api: ApiService,\n private reportService: ReportService,\n private dialog: MatDialog,\n private fieldService: FieldService,\n private router: Router\n ) { }\n\n ngOnInit(): void {\n this.route.queryParams.subscribe(params => {\n let name = params['name'];\n this.name = name;\n if (name == undefined)\n return;\n\n this.api.post('Focal', \"GetByName\", { name }, true).subscribe(results => {\n if (results && results.valid) {\n let target = results.result;\n this.handleLoad(target);\n }\n });\n\n this.api.post('Focal', \"GetProjectsBySpatial\", { name }, true).subscribe(results => {\n if (results && results.valid) {\n let target = results.result;\n this.handleAssociated(target);\n }\n });\n });\n\n this.onResize();\n }\n\n routeToExplorer() {\n this.router.navigateByUrl(`/app/map?id=${this.target.id}&type=f`);\n }\n\n handleLoad(target: any): void {\n this.target = target;\n\n this.focal = { id: this.target.id, name: this.target.name, fields: this.target.fields };\n\n if (!this.focal.fields.links) {\n this.links = [];\n } else {\n this.links = this.focal.fields.links;\n }\n\n const temp = { PROJECT_STRATEGIES: this.focal?.fields?.focus || [] };\n this.focusFields = this.fieldService.getEditableFocusFields(CoreEntity.Project, temp, true)\n this.focus.refreshForm(this.focusFields);\n\n //reporting on project strategies\n this.reportService.setStrategies(this.focusFields);\n this.reportService.setPriorityLandscape(this.target.fields.priorityLandscape)\n this.updateMapGeom();\n }\n\n handleAssociated(target: any): void {\n this.associatedProjects = target;\n this.updateProjectVm();\n this.updatePartnersVm();\n }\n\n updateProjectVm() {\n if (!this.associatedProjects) {\n this.activeProjectsVm = [];\n this.inactiveProjectsVm = [];\n return;\n }\n\n const vm: GenericCard[] = this.associatedProjects.map(element => {\n return {\n header: element?.name || '',\n subTextTitle: 'Coordinating Organization',\n subTextValue: element?.fields?.leadOrganization || '',\n linkUrl: '/app/project/view',\n linkId: element.id,\n status: element?.fields?.projectStatus || ''\n };\n });\n\n const activeProj = vm.filter(e => { return (e.status === 'Planned') || e.status === 'In Progress' });\n const inactiveProj = vm.filter(e => { return e.status !== 'Planned' && e.status !== 'In Progress' });\n activeProj.sort(function (a, b) {\n if (a.header < b.header) { return -1; }\n if (a.header > b.header) { return 1; }\n return 0;\n });\n inactiveProj.sort(function (a, b) {\n if (a.header < b.header) { return -1; }\n if (a.header > b.header) { return 1; }\n return 0;\n });\n\n\n this.activeProjectsVm = activeProj;\n this.reportService.setActiveProjects(this.activeProjectsVm);\n this.reportService.setAssociatedProjects(this.associatedProjects);\n this.reportService.setCompletedProjects(this.associatedProjects);\n this.inactiveProjectsVm = inactiveProj;\n }\n\n updatePartnersVm() {\n if (!this.associatedProjects) {\n this.partnersVm = [];\n return;\n }\n\n let leadOrgs = [];\n if (this.associatedProjects) {\n leadOrgs = this.associatedProjects.map(element => {\n return element?.fields?.leadOrganization;\n });\n }\n\n // Get partner data\n let partners = [];\n this.associatedProjects.forEach(element => {\n if (element?.fields?.Partners) {\n partners = partners.concat(element.fields.Partners);\n }\n });\n\n const partnerNames = partners.map(element => {\n return element.name;\n });\n\n let setPartners = partnerNames.concat(leadOrgs);\n setPartners = Array.from(new Set(setPartners));\n setPartners = setPartners.map(e => {\n return { name: e, type: [] };\n });\n\n // Sort\n setPartners.sort(function (a, b) {\n if (a.name < b.name) { return -1; }\n if (a.name > b.name) { return 1; }\n return 0;\n });\n\n this.partnersVm = setPartners;\n this.reportService.setPartners(this.partnersVm);\n }\n\n updateMapGeom() {\n if (this.target.fields && this.target.fields.Geometry && this.target.fields.Geometry.wkt && this.target.fields.Geometry.type && this.target.fields.Geometry.type === 'exact') {\n const geomObj: PamShapeData = {\n id: this.target.id,\n name: this.target.name,\n fields: {\n Geometry: { ... this.target.fields.Geometry }\n }\n }\n this.slimMap.update(geomObj);\n this.reportService.setMapGeometry(geomObj)\n }\n }\n\n /**\n * Helpful Links\n */\n\n addLink() {\n let linkDialog = this.dialog.open(LinkAddDialogComponent, {\n width: '35rem',\n disableClose: true\n });\n\n\n linkDialog.afterClosed().subscribe(data => {\n if (data) {\n // If there are data, save\n this.newLinkData(data);\n const payload = this.createPayload();\n this.update(payload);\n }\n });\n }\n\n removeLinkData(_: any) {\n this.links = this.links.filter(function (obj) {\n return obj.linkUrl !== _.linkUrl;\n });\n\n this.sortLinks();\n }\n\n createPayload() {\n let formattedObj: PamObject = { id: this.target.id, name: this.target.name, fields: {} };\n formattedObj.fields.links = this.links;\n\n return formattedObj;\n }\n\n\n\n newLinkData(data: any) {\n this.links.push(data);\n this.sortLinks();\n }\n\n sortLinks() {\n this.links.sort(function (a, b) {\n return a.linkDesc.toLowerCase() > b.linkDesc.toLowerCase() ? 1 : b.linkDesc.toLowerCase() > a.linkDesc.toLowerCase() ? -1 : 0\n });\n }\n\n update(obj) {\n const saveRef = this.dialog.open(LoadingDialogComponent, {\n width: '25rem',\n data: \"Saving Record.\",\n disableClose: true\n });\n\n this.api.post(\"Focal\", \"Update\", obj, true).subscribe(res => {\n if (!res.valid) {\n saveRef.close();\n this.dialog.open(ErrorDialogComponent, {\n width: '25rem',\n data: res.messages,\n disableClose: false\n });\n return;\n }\n\n this.handleLoad(res.result)\n saveRef.close();\n\n this.sortLinks();\n\n }, err => {\n saveRef.close();\n this.dialog.open(ErrorDialogComponent, {\n width: '25rem',\n data: [\"API Error occurred\", err.message],\n disableClose: false\n });\n })\n }\n\n triggerLinkDelete(_: any) {\n const foundData = this.links.find((link) => { return link.linkUrl === _.linkUrl });\n if (foundData) {\n let dialogRef = this.dialog.open(ConfirmDialogComponent, {\n width: '35rem',\n data: { title: 'Confirm Delete', text: 'Are you sure you want to delete this Helpful Link?', confirm: \"Yes\", cancel: \"No\" },\n disableClose: false\n });\n\n\n dialogRef.afterClosed().subscribe(data => {\n if (data) {\n // Delete\n this.removeLinkData(_)\n const payload = this.createPayload();\n this.commitLinkDelete(payload);\n } else {\n // No action needed\n }\n });\n }\n }\n\n async commitLinkDelete(data: any) {\n const delRef = this.dialog.open(LoadingDialogComponent, {\n width: '25rem',\n data: \"Deleting Link.\",\n disableClose: true\n });\n\n this.api.post(\"Focal\", \"Update\", data, true).subscribe(res => {\n if (!res.valid) {\n delRef.close();\n this.dialog.open(ErrorDialogComponent, {\n width: '25rem',\n data: res.messages,\n disableClose: false\n });\n return;\n }\n\n this.handleLoad(res.result)\n delRef.close();\n\n this.sortLinks();\n\n }, err => {\n delRef.close();\n this.dialog.open(ErrorDialogComponent, {\n width: '25rem',\n data: [\"API Error occurred\", err.message],\n disableClose: false\n });\n })\n }\n\n @HostListener('window:resize', ['$event'])\n onResize(event?) {\n this.screenHeight = window.innerHeight;\n this.screenWidth = window.innerWidth;\n\n if (this.screenWidth <= 1366) {\n this.heightValue = '125rem;';\n } else {\n this.heightValue = '100rem;';\n }\n }\n\n routerNavigate(){\n this.router.navigateByUrl('/app/focal/report?name=' + this.name);\n }\n\n}\n","
\n\n \n
\n\n \n
\n\n \n
\n

{{ this.target.name || '' }}

\n
\n\n \n\n \n \n\n \n
\n\n \n
\n\n \n\n
\n\n \n \n Focal Area Map\n \n \n \n \n \n \n
\n \n\n \n
\n\n \n \n General Details\n \n \n \n
Focal Area Name
\n
{{ this.target.name || '' }}
\n\n
Priority Landscape
\n
{{ this.target.fields.priorityLandscape || '' }}\n
\n\n
Key Points of Contact
\n\n
New Mexico Forestry Division\n
\n\n
Name
\n
{{ this.target.fields.nmfdContactName || '' }}\n
\n\n
Email
\n
{{ this.target.fields.nmfdContactEmail || '' }}\n
\n\n
Phone
\n
{{ this.target.fields.nmfdContactPhone || '' }}\n
\n\n
US Forest Service\n
\n\n
Name
\n
{{ this.target.fields.usfsContactName || '' }}\n
\n\n
Email
\n
{{ this.target.fields.usfsContactEmail || '' }}\n
\n\n
Phone
\n
{{ this.target.fields.usfsContactPhone || '' }}\n
\n
\n
\n
\n
\n
\n\n \n
\n\n
\n \n \n Projects in This Area\n \n \n \n
\n
Active Projects
\n
0\">\n
\n \n
\n
\n
\n There are no Active Projects in this Area\n
\n
Inactive Projects
\n
0\">\n
\n \n
\n
\n
\n There are no Inactive Projects in this Area\n
\n
\n
\n
\n
\n\n \n
\n \n \n Focal Area Strategies\n \n \n \n
\n \n \n
\n
\n
\n
\n\n
\n\n \n
\n\n \n
\n \n \n Collaborating Partners\n \n \n \n
\n
0\">\n
\n
\n

{{partner.name}}

\n
\n
\n
\n
\n There are no Collaborating Partners\n
\n
\n
\n
\n
\n\n \n
\n \n \n Helpful Links\n \n
\n \n
\n
\n \n
\n
0\">\n
\n \n
\n
\n
\n No links added\n
\n
\n
\n
\n
\n
\n\n\n \n
\n
\n","import { Component, OnInit } from '@angular/core';\n\n@Component({\n selector: 'app-focal',\n templateUrl: './focal.component.html',\n styleUrls: ['./focal.component.scss']\n})\nexport class FocalComponent implements OnInit {\n\n constructor() { }\n\n ngOnInit(): void {\n }\n\n}\n","\n","import { AfterViewInit, Component, OnInit, QueryList, ViewChildren } from '@angular/core';\nimport { FormControl, Validators } from '@angular/forms';\nimport { MatDialog } from '@angular/material/dialog';\nimport { MatFormField } from '@angular/material/form-field';\nimport { RegisterErrorDialogComponent } from '../register/register-error-dialog/register-error-dialog.component';\nimport { ForgotPasswordUser, RegistrationService } from '../registration.service';\nimport { ApiService } from '../_shared/services/api.service';\n\n// Used for keeping track of the step in the registration process\nexport enum Steps {\n Enter,\n Communicating,\n Next,\n Error\n}\n\n@Component({\n selector: 'app-forgot-password',\n templateUrl: './forgot-password.component.html',\n styleUrls: ['./forgot-password.component.scss']\n})\nexport class ForgotPasswordComponent implements OnInit, AfterViewInit {\n\n // Main form data\n emailFormControl!: FormControl;\n\n // Forms workaround\n @ViewChildren(MatFormField) formFields: QueryList;\n\n // Keep track of the current step\n step: Steps = Steps.Enter;\n\n // Expose all the possible steps to the template\n Steps = Steps;\n\n constructor(\n private registration: RegistrationService,\n private api: ApiService,\n private dialog: MatDialog\n ) { }\n\n ngOnInit(): void {\n this.emailFormControl = new FormControl('', [\n Validators.required,\n Validators.email,\n ]);\n }\n\n ngAfterViewInit(): void {\n // (╯ ͠° ͟ʖ ͡°)╯┻━┻ https://github.com/angular/components/issues/15027\n setTimeout(() => this.formFields.forEach(ff => ff.updateOutlineGap()), 100);\n }\n\n // Returns true if the input is valid across all fields.\n isValid(): boolean {\n return this.emailFormControl.valid\n }\n\n register() {\n // Set the step to communicating so the frontend can display \"progress\"\n this.step = Steps.Communicating;\n\n // Create a forgot password user\n const fpUser: ForgotPasswordUser = new ForgotPasswordUser();\n\n fpUser.email = this.emailFormControl.value;\n\n // Pass the work to the registration service\n this.registration.forgotPassword(fpUser).subscribe((result) => {\n // The API can respond with valid = false if the account doesnt exist or the api cannot be reached.\n if (result.valid) {\n // Update the step to give the user feedback on what to do next\n this.step = Steps.Next;\n }\n else {\n console.log(result);\n // Something went wrong. Show it to the user.\n this.step = Steps.Error;\n }\n });\n }\n\n // Go back to being able to enter data without clearing the form\n return() {\n this.step = Steps.Enter;\n }\n\n openDialog() {\n // TODO: add an actual error component here\n const dialogRef = this.dialog.open(RegisterErrorDialogComponent, {\n width: '35rem',\n data: {}\n });\n\n dialogRef.afterClosed().subscribe(result => {\n // Do nothing\n });\n }\n\n}\n","\n \n\n \n
\n\n
\n \n
\n
\n \"NM\n
\n
\n
\n
\n

NEW MEXICO

\n
\n
\n
\n
\n

SHARED STEWARDSHIP PORTAL

\n
\n
\n
\n \n
\n\n
\n

Forgot your password?

\n
\n \n \n
\n
\n Enter your Email below and we will send a message to reset your password.\n
\n
\n
\n\n
\n \n Email\n \n \n
\n \n
\n\n\n
\n \n\n \n
\n \n
\n \n\n \n

Submitting Request...

\n \n \n\n \n
\n

Success!

\n
\n\n
\n

You should receive an email with your temporary credentials. Please use the provided information to access the application.

\n
\n
\n

\n If you do not see a email in your inbox within a few minutes please check your spam or junk folder. If no email is received please reach out to gissupport@timmons.com\n

\n \n\n \n
\n \n \n \n\n \n
\n

Something went wrong!

\n
\n\n

\n Please retry.\n

\n\n

\n If the issue persists please reach out to Support.\n

\n\n
\n \n
\n\n \n \n \n \n\n","import { Component, Inject, OnDestroy, OnInit } from '@angular/core';\nimport { FormControl, Validators } from '@angular/forms';\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\nimport { _MatTabGroupBase } from '@angular/material/tabs';\nimport { Router } from '@angular/router';\nimport { DirectiveLogic } from 'src/app/_shared/directives/directive-logic';\nimport { Organization } from 'src/app/_shared/models/user.model';\nimport { ApiService } from 'src/app/_shared/services/api.service';\nimport { ConfigurationService } from 'src/app/_shared/services/configuration.service';\nimport { FieldService } from 'src/app/_shared/services/forms/field.service';\n\n@Component({\n selector: 'app-funding-add-dialog',\n templateUrl: './funding-add-dialog.component.html',\n styleUrls: ['./funding-add-dialog.component.scss']\n})\nexport class FundingAddDialogComponent implements OnInit, OnDestroy {\n\n fields: any[];\n fieldsConfig: any;\n configSub: any;\n funding: any;\n filteredOrgs: Organization[] = [];\n editMode = false;\n\n //funding org dropdown\n fundingOrgs: any[] = [{ name: '' }];\n fundingOrgNames: any[] = [{ name: '' }];\n\n constructor(\n @Inject(MAT_DIALOG_DATA) public data: any,\n private dialogRef: MatDialogRef,\n private fieldService: FieldService,\n private router: Router,\n private config: ConfigurationService,\n private api: ApiService\n ) { }\n\n\n fundingOrgFormControl: FormControl = new FormControl({ value: null, disabled: false }, Validators.required);\n fundingNameFormControl: FormControl = new FormControl({ value: null, disabled: false }, Validators.required);\n plannedFormControl: FormControl = new FormControl({ value: null, disabled: false }, Validators.required);\n actualFormControl: FormControl = new FormControl({ value: null, disabled: false });\n matchFormControl: FormControl = new FormControl({ value: false, disabled: false }, Validators.required);\n\n ngOnInit(): void {\n this.configSub = this.config.getConfig().subscribe((res) => {\n this.fieldsConfig = res.fields;\n this.generateFocusDropdowns();\n if(this.data && this.data.editMode){\n this.editMode = this.data.editMode;\n this.setFormValues();\n }\n })\n\n }\n\n ngOnDestroy() {\n this.configSub.unsubscribe();\n }\n\n async setFormValues(){\n this.fundingOrgFormControl.setValue(this.data.funding.fundingOrg);\n this.generateFundingNames()\n this.fundingNameFormControl.setValue(this.data.funding.fundingName);\n this.plannedFormControl.setValue(this.data.funding.plannedAmount);\n this.actualFormControl.setValue(this.data.funding.actualAmount);\n this.matchFormControl.setValue(this.data.funding.match);\n }\n\n // TODO may want to pull this out into a separate fields manip service at some point\n generateFocusDropdowns() {\n const fundingOrgNames = this.fieldsConfig.Fundings.Organizations.map((obj => {\n return { name: obj.OrgName };\n }));\n this.fundingOrgs = fundingOrgNames;\n this.fundingOrgs.sort((a, b) => (a.name > b.name) ? 1 : -1);\n }\n\n generateFundingNames() {\n const currentFundingOrg = this.fieldsConfig.Fundings.Organizations.find((obj => {\n return obj.OrgName === this.fundingOrgFormControl.value;\n }));\n\n if (!currentFundingOrg) {\n this.funding = [{ name: '' }];\n return;\n }\n\n const fundingNames = currentFundingOrg.Fundings.map((obj) => {\n return { name: obj.Name };\n });\n this.fundingOrgNames = fundingNames;\n this.fundingOrgNames.sort((a, b) => (a.name > b.name) ? 1 : -1);\n }\n\n clearType() {\n this.fundingNameFormControl.reset();\n this.generateFundingNames();\n this.fundingNameFormControl.enable();\n }\n\n onSubmit(): void {\n let fundingOrg = this.fundingOrgFormControl.value;\n let fundingName = this.fundingNameFormControl.value;\n let plannedData = DirectiveLogic.DecimalCap(this.plannedFormControl.value, 2);\n let actualData = DirectiveLogic.DecimalCap(this.actualFormControl.value, 2);\n let matchData = this.matchFormControl.value;\n\n let fundingObject =\n {\n \"id\": 0,\n \"name\": fundingName,\n \"orgName\": fundingOrg,\n \"plannedAmount\": plannedData,\n \"actualAmount\": actualData,\n \"match\": matchData\n }\n\n if(this.editMode){\n fundingObject.id = this.data.funding.id;\n }\n\n this.dialogRef.close(fundingObject);\n }\n\n cancelClicked() {\n this.dialogRef.close(null);\n }\n\n isValid(): boolean {\n if (this.fundingOrgFormControl && this.fundingOrgFormControl.valid &&\n this.fundingNameFormControl && this.fundingNameFormControl.valid &&\n this.plannedFormControl && this.plannedFormControl.valid) {\n return true;\n } else {\n return false;\n }\n }\n}\n","\n

\n \n \n
\n Edit Funding\n
\n
\n Add Funding\n
\n
\n
\n

\n\n\n
\n
\n
\n \n Funding Organization\n \n \n {{org.name}}\n \n \n \n \n Funding Name\n \n \n {{org.name}}\n \n \n \n \n Planned Amount\n \n \n \n Actual Amount\n \n \n
\n This funding counts as 'match'\n \n
\n\n
\n\n \n
\n
\n \n
\n
\n \n
\n
\n
\n
\n\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { MatDialog } from '@angular/material/dialog';\nimport { LoadingDialogComponent } from '../loading-dialog/loading-dialog.component';\nimport { ErrorDialogComponent } from '../map/error-dialog/error-dialog.component';\nimport { PamObject } from '../_shared/models/pam-object.model';\nimport { ApiService } from '../_shared/services/api.service';\nimport { FundingAddDialogComponent } from './funding-add-dialog/funding-add-dialog.component';\n\n@Component({\n selector: 'app-funding',\n templateUrl: './funding.component.html',\n styleUrls: ['./funding.component.scss']\n})\nexport class FundingComponent implements OnInit {\n\n @Input() funding: any;\n\n @Input() projectLeadOrg: any;\n\n @Input() partners: any[] = [];\n\n @Output() fundingToRemove: EventEmitter = new EventEmitter();\n\n @Output() fundingUpdated: EventEmitter = new EventEmitter();\n\n constructor(\n private dialog: MatDialog,\n private api: ApiService\n ){ }\n\n ngOnInit(): void {\n console.log(\"Current Funding\", this.funding)\n console.log(\"Project Lead Org\", this.projectLeadOrg)\n }\n\n\n editFunding() {\n let fundingDialog = this.dialog.open(FundingAddDialogComponent, {\n width: '35rem',\n disableClose: false,\n data: { \"funding\": this.funding, \"editMode\": true }\n });\n\n\n fundingDialog.afterClosed().subscribe(data => {\n if (data) {\n let formattedObj = this.createFundingPayload(data);\n this.updateFunding(formattedObj)\n }\n });\n }\n\n createFundingPayload(data: any) {\n console.log(\"funding data\", data);\n let formattedObj: PamObject = { id: data.id, name: data.name, fields: {} };\n formattedObj.name = data.name;\n formattedObj.fields = {};\n formattedObj.fields.fundingOrg = data.orgName;\n formattedObj.fields.fundingName = data.name;\n formattedObj.fields.plannedAmount = data.plannedAmount;\n formattedObj.fields.actualAmount = data.actualAmount\n formattedObj.fields.match = data.match;\n\n return formattedObj;\n }\n\n\n updateFunding(obj) {\n const saveRef = this.dialog.open(LoadingDialogComponent, {\n width: '25rem',\n //pass object here (edit mode and other things)\n data: \"Saving Record.\",\n disableClose: true\n });\n\n this.api.post(\"Funding\", \"Update\", obj, true).subscribe(res => {\n if (!res.valid) {\n saveRef.close();\n this.dialog.open(ErrorDialogComponent, {\n width: '25rem',\n data: res.messages,\n disableClose: false\n });\n return;\n }\n\n this.handleFundingUpdate(res.result)\n saveRef.close();\n\n }, err => {\n saveRef.close();\n this.dialog.open(ErrorDialogComponent, {\n width: '25rem',\n data: [\"API Error occurred\", err.message],\n disableClose: false\n });\n })\n }\n\n handleFundingUpdate(res){\n console.log(\"transforming funding response\");\n\n this.funding.fundingName = res.fundingName;\n this.funding.fundingOrg = res.fundingOrg;\n this.funding.plannedAmount = res.plannedAmount;\n this.funding.actualAmount = res.actualAmount;\n this.funding.match = res.match;\n\n\n this.fundingUpdated.emit();\n\n }\n\n removeFunding(_: any){\n this.fundingToRemove.emit(this.funding);\n }\n}\n","
\n
\n \n \n {{funding.fundingName}}\n \n
\n delete\n
\n
\n \n
\n \n

Funding Organization:\n {{funding.fundingOrg}}

\n

Is Match?:\n {{funding.match ? 'Yes': 'No'}}

\n

Planned Amount:\n {{ funding.plannedAmount | currency }}

\n

Actual Amount:\n {{ funding.actualAmount | currency }}

\n
\n
\n

Edit

\n
\n
\n
\n
\n
\n
\n
\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { GenericCard } from './generic-card.model';\n\n@Component({\n selector: 'app-generic-card',\n templateUrl: './generic-card.component.html',\n styleUrls: ['./generic-card.component.scss']\n})\nexport class GenericCardComponent implements OnInit {\n\n @Input() data: GenericCard = null;\n @Output() zoom: EventEmitter = new EventEmitter();\n @Output() explore: EventEmitter = new EventEmitter();\n\n constructor(private router: Router) { }\n\n ngOnInit(): void {\n }\n\n linkTo() {\n if (this.data?.projectId && this.data?.leadOrg) {\n this.router.navigate([this.data.linkUrl], { queryParams: { id: this.data.linkId, projectleadorg: this.data.leadOrg, projectid: this.data.projectId } });\n } else {\n this.router.navigate([this.data.linkUrl], { queryParams: { id: this.data.linkId } });\n }\n }\n\n zoomRequest() {\n this.zoom.emit();\n }\n\n exploreRequest() {\n this.explore.emit();\n }\n\n}\n","
\n
\n \n \n
\n

{{data.header}}

\n

{{data.subTextTitle}}:\n {{data.subTextValue}}

\n

{{data.subTextTitle2}}: {{data.subTextValue2}}

\n
\n
\n
\n
\n \n zoom_in\n \n \n format_list_bulleted\n \n \n library_books\n \n Go to Details\n
\n
\n
\n
\n
\n
\n
\n","import { Component, OnInit } from '@angular/core';\n\n@Component({\n selector: 'app-header',\n templateUrl: './header.component.html',\n styleUrls: ['./header.component.scss']\n})\nexport class HeaderComponent implements OnInit {\n\n constructor() { }\n\n ngOnInit(): void {\n }\n\n}\n","
\n\n \n
\n \"Logo\"\n\n \n
\n\n
\n\n
\n \n
\n\n
\n \n
\n\n
\n\n
\n","import { Component, OnInit, ViewChild } from '@angular/core';\nimport { MatDialog } from '@angular/material/dialog';\nimport { MatPaginator } from '@angular/material/paginator';\nimport { MatSort, MatSortable } from '@angular/material/sort';\nimport { MatTableDataSource } from '@angular/material/table';\nimport { MatCardModule } from '@angular/material/card';\nimport { Router } from '@angular/router';\nimport { element } from 'protractor';\nimport { ProjectInfoDialogComponent } from '../project-info-dialog/project-info-dialog.component';\nimport { DynamicFormComponent } from '../_shared/components/forms/dynamic-form/dynamic-form.component';\nimport { Project } from '../_shared/models/domain/project.model';\n\nimport { ApiService } from '../_shared/services/api.service';\nimport { AuthorizationService } from '../_shared/services/authorization.service';\nimport { FindSomethingComponent } from '../_shared/components/dialogs/find-something/find-something.component';\n\n@Component({\n selector: 'app-home-main',\n templateUrl: './home-main.component.html',\n styleUrls: ['./home-main.component.scss']\n})\nexport class HomeMainComponent implements OnInit {\n displayedColumns: string[] = ['name','id','modified','projectType','projectStatus', 'leadOrganization', 'view']//,'leadOrganization'];\n projects: Project[];\n dataSource = new MatTableDataSource([]);\n leadOrg: string;\n\n @ViewChild(MatSort, { static: true }) sort: MatSort;\n @ViewChild(MatPaginator, { static: true }) paginator: MatPaginator;\n\n constructor(\n private api: ApiService,\n private dialog: MatDialog,\n private auth: AuthorizationService,\n private router: Router\n ) { }\n\n ngOnInit(): void {\n this.dataSource.paginator = this.paginator;\n this.sort.sort(({ id: 'name', start: 'asc' }) as MatSortable);\n this.dataSource.sort = this.sort;\n\n this.dataSource.sortingDataAccessor = (data: any, sortHeaderId: string): string => {\n if (sortHeaderId == 'name') {\n return data['name'].toLocaleLowerCase();\n }\n\n if (typeof data[sortHeaderId] === 'string') {\n return data[sortHeaderId].toLocaleLowerCase();\n }\n\n return data[sortHeaderId];\n };\n\n\n\n\n\n this.api.get(\"Project\", \"GetAll\", true).subscribe(result => {\n this.projects = result.filter(function(e) {\n return [\"Planned\",\"In Progress\", \"Deferred\", \"On Hold\"].includes(e.projectStatus)\n });\n\n let leadOrg = this.auth.login.orgs.organization;\n\n let hydratedProjects = [];\n this.projects.forEach(project => {\n if(project.leadOrganization === leadOrg){\n hydratedProjects.push(project);\n }\n });\n\n\n this.projects.forEach(project => {\n if(project.partners?.length){\n project.partners.forEach(partner => {\n if(partner.name === leadOrg){\n hydratedProjects.push(project);\n }\n })\n }\n })\n\n this.projects = hydratedProjects\n\n this.initDataSource();\n });\n }\n\n\n initDataSource() {\n this.dataSource.data = this.projects;\n }\n\n openDialog() {\n const dialogRef = this.dialog.open(ProjectInfoDialogComponent, {\n width: '50rem',\n data: {}\n });\n\n dialogRef.afterClosed().subscribe(result => {\n });\n }\n\n findSomething() {\n this.dialog.open(FindSomethingComponent, {\n width: '50rem',\n data: {}\n });\n }\n\n viewSummary(id: any) {\n this.router.navigateByUrl(`/app/project/view?id=${id}`);\n }\n\n}\n","
\n
\n \n

I Want to...

\n
\n \n
\n
\n \n \"Info\n
\n
\n
\n\n\n
\n\n \n\n
\n\n
\n

Our Active Projects

\n
\n
\n \n\n\n \n \n \n \n \n\n \n \n \n \n \n\n \n \n \n \n \n\n \n \n \n \n \n\n \n \n \n \n \n\n \n \n \n \n \n\n \n \n \n \n \n\n\n \n \n
Name {{project.name}} ID {{project.id}} Last Modified {{project.modified | date: 'shortDate' }} Type {{project.projectType}} Status {{project.projectStatus}} Coordinating Organization {{project.leadOrganization}} View
\n\n \n
\n\n
\n\n
\n\n
\n\n
\n","import { Component, OnInit, OnDestroy } from '@angular/core';\nimport { AuthorizationService } from '../_shared/services/authorization.service';\nimport { Router } from '@angular/router';\nimport { Observable, Subscription } from 'rxjs';\nimport { MatDialog } from '@angular/material/dialog';\nimport { ContactDialogComponent } from '../contact-dialog/contact-dialog.component';\n\n@Component({\n selector: 'app-home',\n templateUrl: './home.component.html',\n styleUrls: ['./home.component.scss']\n})\nexport class HomeComponent implements OnInit, OnDestroy {\n\n subs: Subscription[] = [];\n currentYear = (new Date()).getFullYear();\n\n constructor(private auth: AuthorizationService, private router: Router, private dialog: MatDialog) {\n }\n\n ngOnInit(): void {\n let loginSub = this.auth.onFutureLogin().subscribe(login =>\n {\n if(login.acls.includes(\"Home:RedirectToMapAfterLogin\"))\n {\n this.router.navigate(['app', 'map'])\n }\n if (login.orgs.organization != \"None - General Public\"){\n console.log(login.orgs)\n this.router.navigate(['app', 'home'])\n }\n });\n\n this.subs.push(loginSub);\n }\n\n ngOnDestroy(): void {\n for (let sub of this.subs) {\n sub.unsubscribe();\n }\n }\n\n loggedIn(): boolean {\n return this.auth.isLoggedIn();\n }\n\n routeToPortal(): void {\n if(this.auth.isLoggedIn()) {\n let login = this.auth.getLogin();\n if (!login.orgs.organization || login.orgs.organization === 'None - General Public') {\n this.router.navigate(['/app/map']);\n }\n else {\n this.router.navigate(['/app/home']);\n }\n }\n }\n\n openContactUs() {\n console.log('open');\n const dialogRef = this.dialog.open(ContactDialogComponent, {\n width: '30rem',\n data: {}\n });\n\n dialogRef.afterClosed().subscribe(result => {\n\n\n });\n }\n\n routeToRegister() {\n this.router.navigate(['/register'])\n }\n\n routeToForgot() {\n this.router.navigate(['/forgot'])\n }\n\n}\n","
\n
\n
\n
\n
\n
\n\n
\n
\n
All content is ©{{ this.currentYear }} New Mexico Energy, Minerals and Natural\n Resources Department\n
\n \n
\n\n
\n\n
\n
\n
\n
\n \"NM\n
\n
\n
\n
\n

Welcome to the NM Shared Stewardship Portal!

\n

A tool to coordinate forest and watershed management on all lands in New Mexico

\n
\n
\n
\n\n
\n\n\n\n
\n
\n
\n

About This Tool\n

\n
\n

The New Mexico Shared Stewardship Portal aims to ensure all natural resource\n and land management agencies in New Mexico that have interest in reduced wildfire and post-wildfire risk and\n increased landscape resiliency through active fuels/vegetation management have the goals and tools to assist\n in coordination, collaboration, and identification of shared priorities on the landscape. Further, the goal\n is also that these agencies use their shared priorities before making investments on the landscape, to\n combine forces and leverage investments to achieve greater returns on investment and reduced risk.

\n

The portal helps partners better plan and track critical forest restoration\n accomplishments on the ground. It will add quantitative analysis to efficiently plan potential projects and\n the ability to track project status from planning on through to implementation and monitoring. We will also\n work to align data standards with federal standards to facilitate reporting.

\n
\n
\n \n
\n

\n Are you interested in Shared Stewardship in New Mexico?\n

\n SIGN UP\n ENTER PORTAL\n CONTACT US\n FORGOT PASSWORD\n
\n
\n
\n
\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { MatDialog } from '@angular/material/dialog';\nimport { Router } from '@angular/router';\nimport { LoadingDialogComponent } from '../loading-dialog/loading-dialog.component';\nimport { ErrorDialogComponent } from '../map/error-dialog/error-dialog.component';\nimport { NoteCreateDialogComponent } from '../note-create-dialog/note-create-dialog.component';\nimport { PamObject } from '../_shared/models/pam-object.model';\nimport { ApiService } from '../_shared/services/api.service';\nimport { AuthorizationService } from '../_shared/services/authorization.service';\n\n@Component({\n selector: 'app-impediment',\n templateUrl: './impediment.component.html',\n styleUrls: ['./impediment.component.scss']\n})\nexport class ImpedimentComponent implements OnInit {\n\n @Input() impediment: any;\n\n @Input() projectLeadOrg: any;\n\n @Input() projectId: any;\n\n @Output() impedimentToRemove: EventEmitter = new EventEmitter();\n\n displayName: string;\n\n constructor(\n private router: Router,\n private dialog: MatDialog,\n private api: ApiService,\n private auth: AuthorizationService\n ){ }\n\n ngOnInit(): void {\n this.displayName = this.auth.login.getFullName();\n console.log(this.impediment);\n }\n\n removeImpediment(_: any){\n this.impedimentToRemove.emit(this.impediment);\n }\n\n editImpediment() {\n let noteDialog = this.dialog.open(NoteCreateDialogComponent, {\n width: '35rem',\n disableClose: false,\n data: { \"impediment\": this.impediment, \"editMode\": true, \"isOpportunity\": false }\n });\n\n\n noteDialog.afterClosed().subscribe(data => {\n if (data) {\n let formattedObj = this.createImpedimentPayload(data);\n this.updateImpediment(formattedObj)\n }\n });\n }\n\n createImpedimentPayload(data: any) {\n let formattedObj: PamObject = { id: data.id, name: \"default\", fields: {} };\n formattedObj.name = \"Impediment\";\n formattedObj.fields = {};\n formattedObj.fields.note = data.note;\n formattedObj.fields.isOpportunity = data.isOpportunity;\n formattedObj.fields.displayName = this.displayName;\n\n\n return formattedObj;\n }\n\n updateImpediment(obj) {\n const saveRef = this.dialog.open(LoadingDialogComponent, {\n width: '25rem',\n //pass object here (edit mode and other things)\n data: \"Saving Record.\",\n disableClose: true\n });\n\n this.api.post(\"Note\", \"Update\", obj, true).subscribe(res => {\n if (!res.valid) {\n saveRef.close();\n this.dialog.open(ErrorDialogComponent, {\n width: '25rem',\n data: res.messages,\n disableClose: false\n });\n return;\n }\n\n this.handleImpedimentUpdate(res.result)\n saveRef.close();\n\n }, err => {\n saveRef.close();\n this.dialog.open(ErrorDialogComponent, {\n width: '25rem',\n data: [\"API Error occurred\", err.message],\n disableClose: false\n });\n })\n }\n\n handleImpedimentUpdate(res){\n console.log(\"transforming opportunity response\");\n\n this.impediment.note = res.note;\n this.impediment.lastModified = res.lastModified;\n this.impediment.displayName = res.displayName;\n\n }\n\n}\n","
\n
\n \n \n
\n \n

{{impediment.note}}

\n
\n
\n
\n
\n

{{impediment.lastModified | date}} - {{impediment.displayName}}

\n
\n
\n delete\n
\n
\n edit\n
\n
\n
\n
\n
\n
\n
\n","import { Component, ElementRef, Inject, OnInit, ViewChild } from '@angular/core';\nimport { FormControl, Validators } from '@angular/forms';\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\nimport { Import, ImportState } from 'src/app/map/import';\nimport { ApiService } from 'src/app/_shared/services/api.service';\nimport { ConfiguredIdentifySources } from 'src/app/_shared/services/map/identify.service';\nimport { PlugmapAPIService } from 'src/app/_shared/services/map/plugmap-api.service';\nimport { promptAndProcessShapefile } from '../../../../node_modules/geometry-web-worker'\nimport { kml } from \"@tmcw/togeojson\";\nimport { ProjectionService } from 'src/app/_shared/services/projection.service';\n\n@Component({\n selector: 'app-import-dialog',\n templateUrl: './import-dialog.component.html',\n styleUrls: ['./import-dialog.component.scss']\n})\nexport class ImportDialogComponent implements OnInit {\n\n fields: any[];\n fieldsConfig: any;\n configSub: any;\n editMode = false;\n importTypes: any[] = [{ name: 'Shapefile' }, { name: 'KML file' }];\n importEnabled: boolean = false;\n import: Import = new Import(this.identify);\n ImportState = ImportState;\n allFeats: any[] = [];\n fileName: string;\n userCanContinue = false;\n isShapeFile = false;\n isKml = false;\n error = false;\n invalidPolygon = false;\n invalidFileType = false;\n invalidFileTypeKml = false;\n tooManyKmlFeatures = false;\n errorMessage = \"Error uploading file. Please make sure the file type is correct.\";\n invalidPolygonMessage = \"Your selected file is not a polygon or multipolygon type. Please retry with a file whose area is one of those shape types.\";\n invalidFileTypeMessage = \"Invalid file type. Please select a .zip file.\"\n invalidFileKml = 'Please select a .kml file.';\n shapeFileMessage = \"If using the shapefile format, you must select a .zip compressed file that contains all of the component files with these extensions:\" +\n \" .shp, .shx, .dbf, .prj. The shapefile must be a polygon or multipolygon type. A file containing multiple shapes will be combined into a single multipart shape.\";\n kmlMessage = `If using the KML format, you must select a .kml file. The file must be a polygon or multipolygon type.`;\n tooManyKmlFeaturesMessage = `Your selected file contains more than one area. Please retry with a file that contains only one polygon or multipolygon.`;\n\n constructor(\n @Inject(MAT_DIALOG_DATA) public data: any,\n private dialogRef: MatDialogRef,\n private api: ApiService,\n private identify: ConfiguredIdentifySources,\n private mapAPI: PlugmapAPIService,\n private proj: ProjectionService,\n ) { }\n\n @ViewChild('kmlFile') kmlFileInput: ElementRef;\n\n\n importTypeFormControl: FormControl = new FormControl({ value: null, disabled: false }, Validators.required);\n importFileFormControl: FormControl = new FormControl({ value: null, disabled: true, readOnly: true }, Validators.required);\n\n ngOnInit(): void {\n this.setFormValues();\n this.shapeFileGuidance();\n }\n\n ngOnDestroy() {\n }\n\n async setFormValues() {\n this.importTypeFormControl.setValue(\"Shapefile\");\n }\n\n shapeFileGuidance() {\n if (this.importTypeFormControl.value === 'Shapefile') {\n this.reset();\n this.isShapeFile = true;\n this.isKml = false;\n } else if (this.importTypeFormControl.value === 'KML file') {\n this.reset();\n this.isShapeFile = false;\n this.isKml = true;\n }\n }\n\n cancelClicked() {\n this.dialogRef.close(null);\n }\n\n reset() {\n this.error = false;\n this.invalidPolygon = false;\n this.invalidFileType = false;\n this.invalidFileTypeKml = false;\n this.userCanContinue = false;\n this.tooManyKmlFeatures = false;\n this.fileName = \"\";\n this.allFeats = [];\n }\n\n isValid(): boolean {\n return true;\n }\n\n importShapeFile() {\n\n promptAndProcessShapefile().then(features => {\n this.userCanContinue = false;\n\n this.reset();\n //Features is an array of features\n // Not sure how/if this is actually being used, we can probably remove\n this.import.setState(ImportState.Searching);\n\n var featuresImported = features.features.length;\n this.mapAPI.setImportCount(0);\n this.mapAPI.setImporting(true);\n this.fileName = features?.fileInfo?.name;\n\n let skip = false;\n features.features.forEach((feat, idx) => {\n if (skip) {\n return;\n }\n if (feat.geometry.type === \"Point\") {\n skip = true;\n this.invalidPolygon = true;\n return\n }\n if (feat.geometry.type === \"LineString\") {\n skip = true;\n this.invalidPolygon = true;\n return\n }\n this.handleImportResult(feat);\n this.mapAPI.setImportCount(idx + 1);\n }\n )\n\n var id = setInterval(() => {\n if (!(this.mapAPI.getImportCount() < featuresImported)) {\n this.dismissImport();\n this.mapAPI.setImporting(false);\n clearInterval(id);\n this.userCanContinue = true;\n }\n }, 1000);\n }).catch((err) => {\n this.error = true;\n });\n }\n\n selectKml() {\n this.kmlFileInput.nativeElement.click();\n }\n\n importKml(evt) {\n this.userCanContinue = false;\n\n this.reset();\n //Features is an array of features\n // Not sure how/if this is actually being used, we can probably remove\n this.import.setState(ImportState.Searching);\n\n const files = evt.target.files;\n\n if (files.length > 1) {\n this.invalidFileTypeKml = true;\n return;\n }\n\n const mainFile = files[0];\n\n if (!(mainFile.type === 'application/vnd.google-earth.kml+xml' || mainFile.name.substr(mainFile.name.lastIndexOf('.') + 1).toLowerCase() === 'kml')) {\n this.invalidFileTypeKml = true;\n return;\n }\n\n this.fileName = mainFile.name\n\n const reader = new FileReader();\n reader.readAsText(mainFile);\n\n reader.onload = () => {\n console.log(reader.result);\n const stringResult = reader.result as string;\n const kmlData = kml(new DOMParser().parseFromString(stringResult, \"text/xml\"));\n console.log(kmlData);\n\n const notPolygon = kmlData.features.some(e => { return e.geometry.type !== 'Polygon' });\n if (notPolygon) {\n this.invalidPolygon = true;\n return;\n }\n\n if (kmlData.features.length > 1) {\n this.tooManyKmlFeatures = true;\n return;\n }\n\n const geoJson = this.proj.reprojectPolyWgs84ToWeb(kmlData)\n geoJson.features.forEach(feature => {\n const feat = {\n geometry: {\n bbox: null,\n coordinates: feature.geometry.coordinates,\n type: 'Polygon'\n },\n properties: {FID: 0},\n type: 'Feature'\n };\n this.handleImportResult(feat);\n });\n\n this.dismissImport();\n this.mapAPI.setImporting(false);\n this.userCanContinue = true;\n };\n \n reader.onerror = () => {\n console.log(reader.error);\n };\n }\n\n\n handleImportResult(newShape) {\n //The plugin will emit an event with an empty shape when drawing is started. We handle this by not handling it\n if (!newShape) return;\n this.allFeats.push(newShape);\n }\n\n dismissImport() {\n this.importEnabled = false;\n this.import.clear();\n }\n\n closeSelf() {\n this.dialogRef.close(this.allFeats);\n }\n\n}\n","\n

\n \n \n
\n Import\n
\n
\n
\n

\n\n\n
\n
\n

Select the kind of file you want to import

\n
\n
\n \n \n \n {{type.name}}\n \n \n \n
\n
\n \n \n \n
\n \n
\n
\n \n
\n
\n
\n
\n \n \n
\n
\n \n \n \n \n \n
\n\n \n
\n
\n \n
\n
\n \n
\n
\n
\n
\n","import { Component, OnInit } from '@angular/core';\n\n@Component({\n selector: 'app-import',\n templateUrl: './import.component.html',\n styleUrls: ['./import.component.scss']\n})\nexport class ImportComponent implements OnInit {\n\n constructor() { }\n\n ngOnInit(): void {\n }\n\n}\n","

import works!

\n","import { Component, Inject, OnInit } from '@angular/core';\nimport { FormControl, Validators } from '@angular/forms';\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\nimport { ApiService } from 'src/app/_shared/services/api.service';\n\n@Component({\n selector: 'app-link-add-dialog',\n templateUrl: './link-add-dialog.component.html',\n styleUrls: ['./link-add-dialog.component.scss']\n})\nexport class LinkAddDialogComponent implements OnInit {\n\n constructor(\n @Inject(MAT_DIALOG_DATA) public data: any,\n private dialogRef: MatDialogRef,\n private api: ApiService\n ) { }\n\n linkFormControl!: FormControl;\n linkDescriptionFormControl!: FormControl;\n\n ngOnInit(): void {\n\n this.linkFormControl = new FormControl('', [\n Validators.required\n ]);\n\n this.linkDescriptionFormControl = new FormControl('', [\n Validators.required\n ]);\n }\n\n onSubmit(): void {\n let linkData = this.linkFormControl.value;\n let linkDescData = this.linkDescriptionFormControl.value;\n\n let linkObject =\n {\n \"linkUrl\": linkData,\n \"linkDesc\": linkDescData\n }\n\n this.dialogRef.close(linkObject);\n }\n\n cancelClicked() {\n this.dialogRef.close(null);\n }\n\n isValid(): boolean {\n if (this.linkFormControl.valid && this.linkDescriptionFormControl.valid) {\n return true;\n } else {\n return false;\n }\n }\n\n}\n","\n

\n \n \n Add New Link\n \n \n

\n\n\n
\n
\n
\n \n Link Description\n \n \n \n Link URL\n \n \n
\n\n \n
\n
\n \n
\n
\n \n
\n
\n
\n
\n","import { Component, EventEmitter, Inject, Input, OnInit, Output } from '@angular/core';\n\n@Component({\n selector: 'app-link',\n templateUrl: './link.component.html',\n styleUrls: ['./link.component.scss']\n})\nexport class LinkComponent implements OnInit {\n\n @Input() link: any;\n\n @Output() linkToRemove: EventEmitter = new EventEmitter();\n\n projectLeadOrg: any;\n\n constructor() { }\n\n ngOnInit(): void {\n console.log(this.link);\n }\n\n removeLink(_: any) {\n this.linkToRemove.emit(this.link);\n }\n\n getLinkUrl() {\n if (this.link?.linkUrl.startsWith('http')) {\n return this.link.linkUrl;\n } else {\n return '//' + this.link.linkUrl;\n }\n }\n\n}\n","
\n
\n \n \n \n \n
\n
\n

{{link.linkDesc}}

\n
\n
\n \n
\n delete\n
\n
\n
\n
\n
\n
\n
\n","import { Component, OnInit, Inject } from '@angular/core';\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\n\n\n@Component({\n selector: 'app-loading-dialog',\n templateUrl: './loading-dialog.component.html',\n styleUrls: ['./loading-dialog.component.scss']\n})\nexport class LoadingDialogComponent implements OnInit {\n\n constructor(@Inject(MAT_DIALOG_DATA) public message: string) { }\n\n ngOnInit(): void {\n }\n\n}\n","

Please Wait

\n\n
\n
\n \n \n

\n {{message}}\n

\n \n
\n
\n","import { Component, OnInit } from '@angular/core';\nimport { AuthorizationService } from '../_shared/services/authorization.service';\n\n@Component({\n selector: 'app-login',\n templateUrl: './login.component.html',\n styleUrls: ['./login.component.scss']\n})\nexport class LoginComponent implements OnInit {\n\n displayName : string = \"Not Logged In\";\n\n constructor(private authorization : AuthorizationService)\n {\n this.authorization.onLogin().subscribe((lo) => {\n this.displayName = lo.getName();\n });\n }\n\n ngOnInit(): void {\n }\n\n login() : void {\n this.authorization.authorize().subscribe((login) =>\n {\n\n })\n }\n\n logout() : void {\n this.authorization.logout();\n }\n\n isLoggedIn() : boolean {\n return this.authorization.isLoggedIn();\n }\n\n getUsername() : string {\n return this.authorization.getLogin().getName() || this.displayName;\n }\n}\n","
\n \n
\n \n Sign Up\n
\n
\n

Welcome {{getUsername()}}

\n \n
\n
\n
\n","import { Component, OnInit, OnDestroy } from '@angular/core';\nimport { AuthorizationService } from '../_shared/services/authorization.service';\nimport { Router } from '@angular/router';\nimport { Subscription } from 'rxjs';\n\n@Component({\n selector: 'app-logout',\n templateUrl: './logout.component.html',\n styleUrls: ['./logout.component.scss']\n})\nexport class LogoutComponent implements OnInit, OnDestroy {\n\n constructor(private auth : AuthorizationService, private router: Router) { }\n logoutsub : Subscription;\n\n ngOnInit(): void {\n this.logoutsub = this.auth.logout().subscribe(res => {\n setTimeout(() => {\n \n this.router.navigate(['']);\n }, 500)\n })\n }\n\n ngOnDestroy(): void {\n this.logoutsub.unsubscribe();\n }\n\n loggedOut() : boolean {\n return !this.auth.isLoggedIn();\n }\n\n}\n","

Just a moment

\n

You have been signed out. You will be redirected to the home page in just a moment.

\n","import { Component, OnInit } from '@angular/core';\n\n@Component({\n selector: 'app-main',\n templateUrl: './main.component.html',\n styleUrls: ['./main.component.scss']\n})\nexport class MainComponent implements OnInit {\n\n constructor() { }\n\n ngOnInit(): void {\n }\n\n}\n","
\n \n
\n \n
\n
\n","import { Component, OnInit, OnDestroy, ViewChild } from '@angular/core';\n\nimport { ApiService } from '../../_shared/services/api.service';\n\nimport { MatTableDataSource } from '@angular/material/table';\nimport { MatPaginator } from '@angular/material/paginator';\nimport { MatSort, MatSortable } from '@angular/material/sort';\nimport { AuthorizationService } from '../../_shared/services/authorization.service';\n\n\nimport { LoadingDialogComponent } from '../../loading-dialog/loading-dialog.component';\nimport { MatDialog } from '@angular/material/dialog';\n\n@Component({\n selector: 'app-manage-all',\n templateUrl: './manage-all.component.html',\n styleUrls: ['./manage-all.component.scss']\n})\nexport class ManageAllComponent implements OnInit, OnDestroy {\n displayedColumns: string[] = ['icon', 'basicInfo', 'viewable', 'actions'];\n //dataSource = new MatTableDataSource([]);\n data = [];\n rawData = [];\n mappedData = [];\n userID = \"1\"\n\n filterOwned = true;\n\n @ViewChild(MatSort, { static: true }) sort: MatSort;\n @ViewChild(MatPaginator, { static: true }) paginator: MatPaginator;\n\n\n constructor(private api: ApiService, private auth : AuthorizationService,\n private dialog: MatDialog) { }\n\n ngOnInit(): void {\n\n this.paginator.length = 0;\n\n const saveRef = this.dialog.open(LoadingDialogComponent, {\n width: '25rem',\n data: \"Loading Areas of Interest\",\n disableClose: true\n });\n\n this.api.get(\"Assessment\", \"GetAllShort\").subscribe(assessments => {\n this.rawData = assessments;\n setTimeout(() => { this.onFilterSelect(undefined); saveRef.close(); }, 150);\n\n });\n\n this.paginator.page.subscribe(page => {\n var start = page.pageSize * page.pageIndex;\n\n this.updateData(start, page.pageSize)\n\n })\n }\n\n updateData(start: number, length: number) {\n var ids = this.data.slice(start, start + length).map(itm => { return itm.id });\n\n const saveRef = this.dialog.open(LoadingDialogComponent, {\n width: '25rem',\n data: \"Loading Selected Areas of Interest\",\n disableClose: true\n });\n\n this.api.post(\"Assessment\", \"Get\", ids).subscribe(assessments => {\n this.mappedData = assessments;\n saveRef.close();\n });\n }\n\n toDate(exp: number): string {\n let Exp = new Date(0);\n Exp.setUTCSeconds(exp);\n return (Exp.getMonth() + 1) + \"/\" + Exp.getDate() + \"/\" + Exp.getFullYear();\n }\n\n getData() {\n if (!this.filterOwned)\n return this.data;\n\n return this.data.filter(elm => {\n return elm.createdBy == this.userID\n })\n }\n\n ngOnDestroy() {\n\n }\n\n onFilterSelect(evt: any) {\n console.log(\"Filter Select\")\n if (evt && evt.value)\n this.filterOwned = (evt.value === \"mine\");\n\n //Set pagenation to 0\n if (!this.filterOwned)\n this.data = this.rawData;\n else\n {\n let user = this.auth.getLogin().user;\n\n this.data = this.rawData.filter(elm => {\n return elm.createdBy == user.id;\n })\n }\n\n this.paginator.length = this.data.length;\n this.paginator.pageSizeOptions = [5,10,20]\n\n this.paginator.firstPage();\n this.updateData(0, this.paginator.pageSize || 5);\n }\n\n getField(field: string, element: any) {\n if (!element.fields)\n return;\n\n return element.fields[field];\n }\n\n canManage(item : any) : boolean\n {\n let login = this.auth.getLogin()\n let user = login.user;\n\n if (login.acls.includes(\"Assessment:ManageAny\"))\n return true;\n\n\n return item.createdBy.id == user.id;\n\n }\n\n manageReports(item : any) {\n const saveRef = this.dialog.open(LoadingDialogComponent, {\n width: '25rem',\n data: \"Loading Selected Area of Interest\",\n disableClose: true\n });\n\n // this.api.post(\"Assessment\", \"Get\", [item.id]).subscribe(results => {\n // if (results && results.length) {\n // let target = results[0];\n // const reportRef = this.dialog.open(ManageReportsDialogComponent, {\n // width: '125rem',\n // data: { target : target }\n // });\n // }\n // saveRef.close();\n // })\n }\n\n\n\n}\n","
\n\n
\n\n

\n Areas of Interest\n

\n\n
\n \n My Areas of Interest\n \n \n All Areas of Interest\n \n
\n\n

\n\n

\n \n
\n
\n\n \n
\n
\n \"Project\n
\n
\n
\n ID:\n
{{element.id}}
\n
\n
\n Name:\n
{{element.name}}
\n
\n
\n Date Created:\n
{{toDate(element.created)}}
\n
\n
\n Feature Type:\n
{{getField(\"type\", element) || \"Custom\"}}
\n
\n \n
\n
\n Viewable by Public\n \n \n
\n
\n
\n
\n
\n \n
\n
\n","import { Component, Inject, OnInit, ViewChild } from '@angular/core';\nimport { FormControl } from '@angular/forms';\nimport { MAT_DIALOG_DATA } from '@angular/material/dialog';\nimport { Observable } from 'rxjs';\nimport { map, startWith } from 'rxjs/operators';\nimport { ResourceConcern, allConcerns } from 'src/app/_shared/models/resource-concerns';\n\n\nexport interface State {\n flag: string;\n name: string;\n population: string;\n}\n\n\n\n\nexport interface AddConcernData {\n previouslySelected : ResourceConcern[];\n name: string;\n}\n\n\n@Component({\n selector: 'app-add-concern-dialog',\n templateUrl: './add-concern-dialog.component.html',\n styleUrls: ['./add-concern-dialog.component.scss']\n})\nexport class AddConcernDialogComponent implements OnInit {\n\n constructor(@Inject(MAT_DIALOG_DATA) public data: AddConcernData) {\n this.previousSelectedOptions = data.previouslySelected;\n\n this.filteredConcerns = this.concernCtrl.valueChanges\n .pipe(\n startWith(''),\n map(concern => this._filterConcerns(concern))\n );\n }\n\n tempOpt : ResourceConcern;\n selectedOptions : ResourceConcern[] = [];\n previousSelectedOptions : ResourceConcern[] = [];\n\n concernCtrl = new FormControl();\n filteredConcerns: Observable;\n\n @ViewChild(\"imp\") input;\n\n\n private _filterConcerns(concern: any): ResourceConcern[] {\n let selectedids = this.selectedOptions.map(e => e.id).concat(this.previousSelectedOptions.map(e => e.id));\n let startConcerns = allConcerns.filter( f => !selectedids.includes(f.id));\n\n if(!concern)\n return startConcerns;\n\n const filterValue = concern.value ? concern.value.toLowerCase() : concern.toLowerCase();\n\n return startConcerns.filter(concern => concern.value.toLowerCase().indexOf(filterValue) >= 0 || concern.group.toLowerCase().indexOf(filterValue) >= 0 || concern.category.toLowerCase().indexOf(filterValue) >= 0).sort((elma, elmb) => {\n let vai = elma.value.toLowerCase().indexOf(filterValue);\n let vbi = elmb.value.toLowerCase().indexOf(filterValue);\n\n if (vai == -1)\n vai = 1001;\n if (vbi == -1)\n vbi = 1001;\n\n let gai = elma.group.toLowerCase().indexOf(filterValue);\n let gbi = elmb.group.toLowerCase().indexOf(filterValue);\n\n if (gai == -1)\n gai = 501;\n if (gbi == -1)\n gbi = 501;\n\n let cai = elma.category.toLowerCase().indexOf(filterValue);\n let cbi = elmb.category.toLowerCase().indexOf(filterValue);\n\n if (cai == -1)\n cai = 251;\n if (cbi == -1)\n cbi = 251;\n\n return ( (1000 - vbi) - (1000 - vai) ) + ( ( 500 - gbi ) - ( 500 - gai ) ) + ( ( 250 - cbi ) - ( 250 - cai ) );\n })\n }\n\n addOpt(event) {\n this.selectedOptions.push(event.option.value);\n event.option.deselect();\n this.concernCtrl.setValue('');\n this.input.nativeElement.blur();\n }\n\n delete(concern: ResourceConcern)\n {\n this.selectedOptions = this.selectedOptions.filter(el => el.id != concern.id )\n }\n\n displayFn(concern: ResourceConcern): string {\n return concern ? concern.value + \" | \" + concern.group + \" | \" + concern.category : '';\n }\n\n ngOnInit(): void {\n }\n\n}\n","

Add Resource Concern

\n\n
\n

Select resource concerns to add to {{data.name}}

\n
\n \n \n \n \n
\n {{concern.value}}\n Group: {{concern.group}}\n Category: {{concern.category}}\n
\n \n
\n
\n\n
\n
\n \n \n \n
\n

{{concern.value}}

\n \n
\n Group:\n {{concern.group}}\n Category:\n {{concern.category}}\n
\n \n \n
\n\n
\n
\n \n \n
\n
","import { Component, OnInit, Input, NO_ERRORS_SCHEMA } from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { PlugmapAPIService } from '../../_shared/services/map/plugmap-api.service';\nimport { MatDialog } from '@angular/material/dialog';\nimport { ApiService } from '../../_shared/services/api.service';\nimport { LoadingDialogComponent } from '../../loading-dialog/loading-dialog.component';\nimport { FixedLengthArray } from '../../_shared/types/fixed-length-array';\nimport { Subscription, Observable, Subject } from 'rxjs';\nimport { MapService } from '../../_shared/services/map/map.service';\nimport { MapCategory } from '../../_shared/models/map/config.model';\nimport { FormControl, FormGroupDirective, NgForm, Validators, ValidatorFn, AbstractControl } from '@angular/forms';\nimport { ErrorDialogComponent } from '../../map/error-dialog/error-dialog.component';\nimport { AuthorizationService } from '../../_shared/services/authorization.service';\nimport { ConfirmDialogComponent } from '../../confirm-dialog/confirm-dialog.component';\nimport { AddConcernDialogComponent } from './add-concern-dialog/add-concern-dialog.component';\nimport { ResourceConcern, allConcerns } from 'src/app/_shared/models/resource-concerns';\n\n\ndeclare var ol: any;\ndeclare var famMap: any;\ndeclare var window: any;\n\n\n@Component({\n selector: 'app-manage-view',\n templateUrl: './manage-view.component.html',\n styleUrls: ['./manage-view.component.scss']\n})\nexport class ManageViewComponent implements OnInit {\n\n allConcerns: ResourceConcern[] = allConcerns.slice(1, 5);\n\n getConcern(id) {\n let mapperd = (allConcerns.filter(a => a.id == id))\n if (mapperd.length)\n return mapperd[0];\n\n return null;\n }\n\n @Input() mapCenter: FixedLengthArray<[number, number]> = [-111.0937, 34.0489]; // Default to centroid of Arizona\n\n @Input() defaultZoom: number = 7;\n\n @Input() maxZoom: number = 22;\n\n @Input() minZoom: number = 3;\n\n @Input() defaultExtent: FixedLengthArray<[number, number, number, number]> = [-12880679.740636416, 3571967.4966187417, -12041808.375255927, 4520654.749830856]\n\n private mapConfigSub: Subscription;\n\n private mapConfigLoaded = false;\n\n mapCategories: MapCategory[];\n\n highlightLayer: any;\n\n wkt: any;\n\n public nameFormControl: FormControl;\n private mapDrawSub: Subscription;\n drawnShape: any;\n drawLayer: any;\n\n public editingName = false;\n public editingBounds = false;\n\n\n\n\n\n private assessmentEditOverlay: any;\n assessmentOverlayContainerHeight: number;\n\n\n constructor(\n private mapService: MapService, private route: ActivatedRoute,\n private mapAPI: PlugmapAPIService, private auth: AuthorizationService,\n private dialog: MatDialog,\n private api: ApiService, private router: Router) { }\n\n target: any = { fields: {} };\n\n ngOnInit(): void {\n this.bootMap();\n this.nameFormControl = new FormControl('', [\n Validators.required,\n Validators.maxLength(50),\n Validators.minLength(1)\n ]);\n this.mapConfigSub = this.mapService.getSlimMapConfig().subscribe(config => {\n if (config && !this.mapConfigLoaded) {\n // On first map theme load\n this.mapCategories = config;\n this.mapConfigLoaded = true;\n this.mapAPI.setCategories(config);\n this.mapAPI.turnLayerOnByKey(\"lyr_esri_world_image\");\n this.mapService.getServices().subscribe(services => {\n //this.mapAPI.setServices(services);\n });\n\n } else if (config) {\n // Add any routines that need to listen for other theme changes\n }\n });\n\n\n\n\n this.route.queryParams.subscribe(params => {\n let id = params[\"id\"];\n if (id == undefined)\n return;\n\n let iid = parseInt(id);\n\n\n const saveRef = this.dialog.open(LoadingDialogComponent, {\n width: '25rem',\n data: \"Loading Selected Area of Interest\",\n disableClose: true\n });\n\n this.api.post(\"Assessment\", \"Get\", [iid]).subscribe(results => {\n if (results && results.length) {\n let target = results[0];\n this.handleLoad(target);\n }\n saveRef.close();\n })\n });\n }\n\n handleLoad(target) {\n this.target = target;\n if (target.fields && target.fields.Geometry) {\n let obj = { wkt: target.fields.Geometry.wkt, left: 0, bottom: 0 }\n this.wkt = target.fields.Geometry.wkt;\n if (target.fields.Geometry.geoJSON)\n this.addShape(target.fields.Geometry.geoJSON);\n else\n this.addShapeWKT(target.fields.Geometry.wkt);\n\n this.stopDraw();\n setTimeout(() => { this.mapAPI.fitToWKT(obj) }, 250);\n }\n\n if (target.fields && target.fields.resourceConcerns) {\n let nrcs = [];\n target.fields.resourceConcerns.map(src => {\n let nrc = this.getConcern(src.id);\n if (nrc)\n nrcs.push(nrc)\n })\n\n target.fields.resourceConcerns = nrcs;\n }\n }\n\n epochDateToString(exp: number): string {\n let Exp = new Date(0);\n Exp.setUTCSeconds(exp);\n return (Exp.getMonth() + 1) + \"/\" + Exp.getDate() + \"/\" + Exp.getFullYear();\n }\n\n getField(field: string, element: any) {\n if (!element.fields)\n return;\n\n return element.fields[field];\n }\n\n\n toggleEditName() {\n this.editingName = !this.editingName;\n this.nameFormControl.setValue(this.target.name);\n }\n\n\n editing(): boolean {\n return this.editingName || this.editingBounds;\n }\n\n saveName() {\n if (!this.nameFormControl.valid)\n return;\n\n let obj = { id: this.target.id, name: this.nameFormControl.value };\n\n\n this.update(obj);\n }\n\n canManage(item: any): boolean {\n let login = this.auth.getLogin()\n let user = login.user;\n\n if (login.acls.includes(\"Assessment:ManageAny\"))\n return true;\n\n\n return item.createdBy.id == user.id;\n\n }\n\n\n update(obj) {\n const saveRef = this.dialog.open(LoadingDialogComponent, {\n width: '25rem',\n data: \"Saving Area of Interest.\",\n disableClose: true\n });\n\n this.api.post(\"Assessment\", \"Update\", obj).subscribe(res => {\n if (!res.valid) {\n saveRef.close();\n this.dialog.open(ErrorDialogComponent, {\n width: '25rem',\n data: res.messages,\n disableClose: false\n });\n return;\n }\n\n this.handleLoad(res.result)\n saveRef.close();\n\n this.editingName = false;\n\n }, err => {\n saveRef.close();\n this.dialog.open(ErrorDialogComponent, {\n width: '25rem',\n data: [\"API Error occurred\", err.message],\n disableClose: false\n });\n })\n }\n\n\n deleteClick() {\n const saveRef = this.dialog.open(ConfirmDialogComponent, {\n width: '25rem',\n data: { title: \"Confirm Delete\", text: \"Are you sure you want to delete \" + this.target.name + \"?\", confirm: \"YES\", cancel: \"NO\" },\n disableClose: true\n });\n\n saveRef.afterClosed().subscribe(res => {\n\n\n if (res) {\n\n const delRef = this.dialog.open(LoadingDialogComponent, {\n width: '25rem',\n data: \"Deleting Area of Interest.\",\n disableClose: true\n });\n\n let obj = { id: this.target.id }\n\n this.api.post(\"Assessment\", \"Delete\", obj).subscribe(res => {\n if (!res.valid) {\n delRef.close();\n this.dialog.open(ErrorDialogComponent, {\n width: '25rem',\n data: res.messages,\n disableClose: false\n });\n return;\n }\n\n this.target = res.result;\n delRef.close();\n\n this.router.navigate(['../all'], { relativeTo: this.route })\n\n\n }, err => {\n delRef.close();\n this.dialog.open(ErrorDialogComponent, {\n width: '25rem',\n data: [\"API Error occurred\", err.message],\n disableClose: false\n });\n })\n\n }\n })\n }\n\n\n deleteConcern(concern) {\n this.target.fields.resourceConcerns = (this.target.fields.resourceConcerns || []).filter(e => e.id != concern.id)\n\n let obj = { id: this.target.id, name: this.target.name, fields: { resourceConcerns: this.target.fields.resourceConcerns } };\n this.update(obj);\n }\n\n addConcern() {\n\n const saveRef = this.dialog.open(AddConcernDialogComponent, {\n width: '125rem',\n data: { previouslySelected: this.target.fields.resourceConcerns || [], name: this.target.name },\n disableClose: true\n });\n\n saveRef.afterClosed().subscribe(res => {\n\n\n if (res && res.length) {\n this.target.fields.resourceConcerns = (this.target.fields.resourceConcerns || []).concat(res).sort((a, b) => a.id - b.id);\n\n let obj = { id: this.target.id, name: this.target.name, fields: { resourceConcerns: this.target.fields.resourceConcerns } };\n this.update(obj);\n }\n });\n }\n\n startReporting() {\n this.api.post(\"Assessment\", \"StartJob\", this.target.id).subscribe(res => {\n console.log(res);\n this.api.post(\"Assessment\", \"Get\", [this.target.id]).subscribe(results => {\n if (results && results.length) {\n let target = results[0];\n this.handleLoad(target);\n }\n })\n });\n }\n\n viewReports() {\n // const saveRef = this.dialog.open(ManageReportsDialogComponent, {\n // width: '125rem',\n // data: { target: this.target },\n // disableClose: true\n // });\n\n // saveRef.afterClosed().subscribe(res => {\n\n\n\n // });\n }\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n addShapeWKT(wkt: any) {\n let reader = new ol.format.WKT();\n let f = reader.readFeature(wkt);\n\n this.setFeat(f);\n\n }\n\n addShape(shape: any) {\n let reader = new ol.format.GeoJSON();\n let f = reader.readFeature(shape);\n\n this.setFeat(f);\n }\n\n setFeat(f: any) {\n\n this.setupHighlightLayer();\n\n let ext = ol.extent.createEmpty();\n\n ol.extent.extend(ext, f.getGeometry().getExtent());\n\n let center = [(ext[0] + ext[2]) / 2, ext[3]];\n\n this.highlightLayer.getSource().clear();\n this.highlightLayer.getSource().addFeature(f);\n }\n\n bootMap(): void {\n this.mapAPI.createMap(\"mgmap\", this.mapCenter, this.defaultZoom, this.maxZoom, this.minZoom);\n setTimeout(() => { famMap.getMap().handleResize_() }, 500);\n\n this.installExtensions();\n }\n\n setupHighlightLayer() {\n if (this.highlightLayer)\n return;\n this.highlightLayer = new ol.layer.Vector();\n\n let src = new ol.source.Vector();\n this.highlightLayer.setSource(src);\n\n let sty = new ol.style.Style({\n fill: new ol.style.Fill({\n color: \"rgba(0,77,168,0.8)\"\n }),\n stroke: new ol.style.Stroke({\n color: \"rgba(0,77,168,0.95)\",\n width: 1\n })\n });\n this.highlightLayer.setStyle(sty);\n\n this.highlightLayer.setZIndex(9999);\n\n famMap.getMap().addLayer(this.highlightLayer);\n }\n\n private installExtensions(): void {\n this.mapAPI.initDraw();\n\n let map = famMap.getMap();\n\n let zte = new ol.control.ZoomToExtent({\n extent: this.defaultExtent,\n });\n\n zte.handleClickOld = zte.handleClick_;\n let that = this;\n\n zte.handleZoomToExtent = function () {\n\n let obj = { wkt: that.wkt, left: 0, bottom: 0 }\n\n that.mapAPI.fitToWKT(obj);\n }\n\n\n let sl = new ol.control.ScaleLine({ units: 'us' });\n\n map.controls.extend([zte, sl]);\n\n\n\n let assessmentEditOverlayContainer = document.getElementById('assessmentEditOverlay');\n this.assessmentOverlayContainerHeight = assessmentEditOverlayContainer.offsetHeight;\n\n let importOverlayContainer = document.getElementById('importOverlay');\n\n this.assessmentEditOverlay = new ol.Overlay({\n element: assessmentEditOverlayContainer,\n positioning: 'bottom-center',\n autoPan: {\n margin: 20\n }\n });\n map.addOverlay(this.assessmentEditOverlay);\n\n }\n\n editBoundsClick() {\n this.editingBounds = true;\n\n let draw = this.mapAPI.setWKTs([this.target.fields.Geometry.wkt]);\n\n\n if (this.mapDrawSub)\n this.mapDrawSub.unsubscribe();\n\n this.mapDrawSub =\n draw.subscribe(this.handleDrawResult.bind(this));\n\n this.highlightLayer.setVisible(false);\n\n }\n\n populateDrawLayer() {\n\n let ml = undefined;\n let layers = famMap.getMap().getLayers().array_\n for (var i = 0; i < layers.length; i++) {\n let layer = layers[i];\n if (layer.get(\"id\") === \"lyr_internal_merged\") {\n ml = layer;\n break;\n }\n }\n\n if (!ml)\n console.error('Issue occured inmanage view'); //We shouldnt get here\n\n this.drawLayer = ml;\n }\n\n handleDrawResult(newShape) {\n\n console.log(\"Draw Result\", newShape);\n\n //The plugin will emit an event with an empty shape when drawing is started. We handle this by not handling it\n if (!newShape) return;\n\n this.drawnShape = newShape;\n\n this.target.fields.featureType = \"Custom\"\n\n this.populateDrawLayer();\n\n if (!this.drawLayer) return; //Something bork\n\n let feat = this.drawLayer.getSource().getFeatureById(newShape.olUID);\n\n if (!feat)\n //Something bad happened\n feat = this.drawLayer.getSource().getFeatures()[0];\n\n if (!feat) {\n return;\n }\n\n let ext = feat.getGeometry().getExtent();\n let center = ol.extent.getCenter(ext);\n\n center = [(ext[0] + ext[2]) / 2, ext[3] + 50]\n\n this.setOverlayPositionAndContents(center);\n\n //this.fitToExtentAndOverlay(ext);\n\n }\n\n\n setOverlayPositionAndContents(center: number[]) {\n\n console.log(\"Set Position\", center);\n\n let overlay = this.assessmentEditOverlay;\n\n //Set the position\n setTimeout(() => { overlay.setPosition(center); }, 150);\n\n //Populate contents\n let container = document.getElementById(\"assessmentEditOverlay\");\n\n //Only append if its not already there\n if (container.children.length == 0) {\n let cnt = document.getElementById(\"assessmentEditOverlayContents\");\n container.appendChild(cnt);\n }\n }\n\n drawNewAssessmentArea() {\n\n\n let dblClickInteraction;\n // find DoubleClickZoom interaction\n famMap.getMap().getInteractions().getArray().forEach(function (interaction) {\n if (interaction instanceof ol.interaction.DoubleClickZoom) {\n dblClickInteraction = interaction;\n }\n });\n\n // remove from map\n if (dblClickInteraction)\n famMap.getMap().removeInteraction(dblClickInteraction);\n\n\n let draw = this.mapAPI.startDrawingPolygon();\n\n if (!this.mapDrawSub)\n this.mapDrawSub =\n draw.subscribe(this.handleDrawResult.bind(this));\n this.target.fields.featureType = \"Custom\";\n }\n\n saveBoundsClick() {\n\n //This is the desired size of the icon\n let iconSize = [75, 75]\n\n\n\n\n this.grabSnapshotOfDrawnShape(iconSize).subscribe(icon => {\n let obj = {\n id: this.target.id, name: this.target.name, fields: {\n Geometry: {\n wkt: this.drawnShape.wkt,\n acres: this.drawnShape.acres\n },\n icon: icon\n }\n };\n\n this.update(obj);\n });\n }\n\n dismissAssessmentEdit() {\n this.stopDraw();\n }\n\n stopDraw(): void {\n this.mapAPI.stopDrawing();\n this.drawnShape = undefined;\n this.assessmentEditOverlay.setPosition(undefined);\n this.highlightLayer.setVisible(true);\n this.editingBounds = false;\n }\n\n grabSnapshotOfDrawnShape(targetSize: number[]): Observable {\n //Show a loading screen when we are getting a screenshot\n const snapshotRef = this.dialog.open(LoadingDialogComponent, {\n width: '25rem',\n data: \"Generating Snapshot\",\n disableClose: true\n });\n\n var ds = new Subject();\n\n let map = famMap.getMap();\n let origSize = map.getSize();\n let that = this;\n\n map.setSize(targetSize);\n\n let ml = undefined;\n let layers = famMap.getMap().getLayers().array_\n for (var i = 0; i < layers.length; i++) {\n let layer = layers[i];\n if (layer.get(\"id\") === \"lyr_internal_merged\") {\n ml = layer;\n break;\n }\n }\n\n let pudding = [20, 20, 20, 20];\n let ext = [];\n\n try {\n ext = ml.getSource().getFeatureById(this.drawnShape.olUID).getGeometry().getExtent();\n }\n catch (ex) {\n snapshotRef.close();\n this.dialog.open(ErrorDialogComponent, {\n width: '25rem',\n data: [\"Error Generating Snapshot\", \"An error occured. Please try again. If this happens again, modify the shape slightly and click save.\"],\n disableClose: true\n });\n throw ex;\n }\n\n var oldStyle = ml.getStyle();\n\n // let sty = new ol.style.Style({\n // fill: new ol.style.Fill({\n // color: \"rgba(0,77,168,0.8)\"\n // }),\n // stroke: new ol.style.Stroke({\n // color: \"rgba(0,77,168,0.95)\",\n // width: 1\n // })\n // });\n // ml.setStyle(sty);\n\n let vw = map.getView();\n vw.fit(ext, {\n size: targetSize,\n nearest: false,\n padding: pudding\n });\n\n map.once('rendercomplete', function () {\n var mapCanvas = document.createElement('canvas');\n\n mapCanvas.width = targetSize[0];\n mapCanvas.height = targetSize[1];\n var mapContext = mapCanvas.getContext('2d');\n Array.prototype.forEach.call(\n document.querySelectorAll('.ol-layer canvas'),\n function (canvas) {\n if (canvas.width > 0) {\n var opacity = canvas.parentNode.style.opacity;\n mapContext.globalAlpha = opacity === '' ? 1 : Number(opacity);\n var transform = canvas.style.transform;\n // Get the transform parameters from the style's transform matrix\n var matrix = transform\n .match(/^matrix\\(([^\\(]*)\\)$/)[1]\n .split(',')\n .map(Number);\n // Apply the transform to the export map context\n CanvasRenderingContext2D.prototype.setTransform.apply(\n mapContext,\n matrix\n );\n mapContext.drawImage(canvas, 0, 0);\n }\n }\n );\n\n map.setSize(origSize);\n\n snapshotRef.close();\n\n setTimeout(() => { ds.next(mapCanvas.toDataURL()); }, 100);\n\n //ml.setStyle(oldStyle);\n\n\n //Uncomment these to download the image generated\n // var link = document.getElementById('image-download');\n // link.setAttribute(\"href\", mapCanvas.toDataURL());\n // link.click();\n\n\n });\n\n //Again there is some weirdness with resizing the map, so manually call renderSync after a delay of like 500ms or so\n setTimeout(() => { map.renderSync(); }, 500);\n\n return ds.asObservable();\n }\n\n clearBounds() {\n this.mapAPI.clearShape();\n this.drawnShape = undefined;\n }\n\n hasShape() {\n return this.drawnShape != undefined;\n }\n\n onLayerSelect(e) {\n switch (e.value) {\n case \"topo\":\n this.mapAPI.turnLayerOnByKey(\"lyr_esri_topo\");\n break;\n case \"aerial\":\n this.mapAPI.turnLayerOnByKey(\"lyr_esri_world_image\");\n break;\n default:\n break;\n }\n }\n}\n","
\n \n
\n
\n

\n {{target.name}}\n

\n\n \n
\n
\n \n Area of Interest Name\n \n \n\n \n\n \n
\n\n\n\n\n \n\n
\n
\n\n
\n \n
\n\n
\n
\n Date Created:\n
{{epochDateToString(target.created)}}
\n
\n
\n Feature Type:\n
{{getField(\"type\", target) || \"Custom\"}}
\n
\n \n
\n\n
\n
\n
\n \n Resource Concerns\n

\n
\n
\n \n
\n \n
\n
\n \n {{concern.value}}\n

\n \n
\n
\n Group:\n
{{concern.group}}
\n
\n
\n Category:\n
{{concern.category}}
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n \n AERIAL\n \n TOPOGRAPHY\n \n \n
\n
\n \n \n
\n\n
\n \n
\n \n \n
\n

Feature Type: {{this.target.fields.featureType}}

\n \n
\n
\n \n
\n

\n Boundary is required.

\n \n \n \n \n
\n
\n
\n
\n\n
\n
\n
\n\n\n
\n
\n\n\n
\n","import { Component, OnInit, OnDestroy, ViewChild } from '@angular/core';\n\n\n@Component({\n selector: 'app-manage',\n templateUrl: './manage.component.html',\n styleUrls: ['./manage.component.scss']\n})\nexport class ManageComponent {\n}\n","import { Component, OnInit, Inject } from '@angular/core';\nimport { FormControl, FormGroupDirective, NgForm, Validators, ValidatorFn, AbstractControl } from '@angular/forms';\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\n\n@Component({\n selector: 'app-error-dialog',\n templateUrl: './error-dialog.component.html',\n styleUrls: ['./error-dialog.component.scss']\n})\nexport class ErrorDialogComponent implements OnInit {\n\n constructor(@Inject(MAT_DIALOG_DATA) public messages: string[]) { }\n\n ngOnInit(): void {\n }\n\n}\n","

An error occured while saving.

\n
\n

{{message}}

\n
\n","import { Component, OnInit, OnDestroy, Output, EventEmitter, Input } from '@angular/core';\nimport { GeoSearchService } from './geo-search.service';\nimport { FormControl } from '@angular/forms';\nimport { Subscription } from 'rxjs';\nimport { Candidate, Candidates, SearchTypes } from '../../_shared/models/map/geo-search.model';\nimport { IPoint } from '@esri/arcgis-rest-types';\n\n\n@Component({\n selector: 'app-geo-search',\n templateUrl: './geo-search.component.html',\n styleUrls: ['./geo-search.component.scss']\n})\nexport class GeoSearchComponent implements OnInit, OnDestroy {\n\n searchCtrl = new FormControl();\n\n candidates: Candidate[] = [];\n\n tooltipMessage = 'You can enter a Conservation District name, HUC, NRCS Field Office, township and range, address, location, or longitude/latitude coordinates and then press Enter or click a suggested result. Longitude and latitude searches must be in Decimal Degrees: e.g., -111.32, 33.48. Township and range searches must be entered in the format T25N R12W.';\n\n @Input() mapCenter: any = { x: -111.579, y: 34.284 }; // Rough Center of AZ\n\n @Output() zoomToCandidates: EventEmitter = new EventEmitter();\n\n @Output() clearPoints: EventEmitter = new EventEmitter();\n\n private valuesChange$: Subscription;\n\n private newCandidates$: Subscription;\n\n\n constructor(\n private geoSearchService: GeoSearchService\n ) { }\n\n ngOnInit(): void {\n this.newCandidates$ = this.geoSearchService.getCandidates().subscribe(candidates => {\n this.candidates = candidates;\n });\n\n this.valuesChange$ = this.searchCtrl.valueChanges.subscribe(_ => {\n let value = this.searchCtrl.value\n if (value === '' || !value) {\n this.geoSearchService.clearCandidates();\n }\n this.geoSearchService.searchCandidates(value, [this.mapCenter.x, this.mapCenter.y]);\n });\n }\n\n ngOnDestroy(): void {\n this.valuesChange$.unsubscribe();\n this.newCandidates$.unsubscribe();\n }\n\n goToLocation(selectedCandidate: Candidate): void {\n const foundCandidate: Candidate = this.candidates.find(\n candidate => candidate.name === selectedCandidate.name &&\n candidate.location.x === selectedCandidate.location.x &&\n candidate.location.y === selectedCandidate.location.y);\n\n const leftOffset = 0;\n\n if (foundCandidate.source === SearchTypes.DDCoordinate) {\n const coordCandidate = {\n candidates: [foundCandidate],\n paddingLeft: leftOffset,\n paddingBottom: 0\n } as Candidates;\n this.zoomToCandidates.emit(coordCandidate);\n } else {\n const foundCandidates = {\n candidates: [foundCandidate],\n paddingLeft: leftOffset,\n paddingBottom: 0\n } as Candidates;\n this.zoomToCandidates.emit(foundCandidates);\n }\n }\n\n clearValues() {\n this.searchCtrl.setValue('');\n this.clearPoints.emit();\n }\n\n getOptionName(data: Candidate): string {\n if (data) {\n return data.name;\n } else {\n return null;\n }\n }\n\n}\n","
\n\n
\n\n \n \n search\n 0) || searchCtrl.value && searchCtrl.value.name\"\n class=\"appClearIcon\" (click)=\"clearValues()\">\n clear\n \n \n {{candidate.name}} |\n Source: {{candidate.source}}\n \n \n \n\n
\n\n
\n","import { Injectable } from '@angular/core';\nimport { FixedLengthArray } from '../../_shared/types/fixed-length-array';\nimport { geocode, suggest, IPoint, IExtent } from '@esri/arcgis-rest-geocoding';\nimport { Candidate, SearchTypes } from '../../_shared/models/map/geo-search.model';\nimport { BehaviorSubject, Subject, Observable, Subscription, merge } from 'rxjs';\nimport { ApiService } from '../../_shared/services/api.service';\n\ndeclare var ol: any;\n\n@Injectable({\n providedIn: 'root'\n})\nexport class GeoSearchService {\n\n private readonly defaultBias: FixedLengthArray<[number, number]> = [-111.579, 34.284]; // Rough Center of AZ\n\n private readonly defaultMaxCandidates: number = 10;\n\n private candidates$: BehaviorSubject = new BehaviorSubject([]);\n\n private readonly webMercatorExtentOffset: number = 32000; // Will only be valid for a projected coordinate system using meters as base unit (ex: Web Mercator)\n\n private subs: Subscription[] = [];\n\n constructor(\n private api: ApiService\n ) { }\n\n public getCandidates(): Observable {\n return this.candidates$.asObservable();\n }\n\n private setCandidates(inCandidates: Candidate[]) {\n this.candidates$.next(inCandidates);\n }\n\n searchCandidates(\n inString: string,\n biasCoord?: FixedLengthArray<[number, number]>,\n maxCandidates?: number\n ) {\n\n if (this.subs.length) {\n this.subs.forEach(sub => {\n sub.unsubscribe();\n })\n\n this.subs = [];\n }\n if (!inString) {\n this.clearCandidates();\n }\n\n if (!biasCoord) {\n biasCoord = this.defaultBias;\n }\n\n if (!maxCandidates) {\n maxCandidates = this.defaultMaxCandidates;\n }\n\n if (Object.prototype.toString.call(inString) !== \"[object String]\") {\n return;\n }\n\n let resultsSubject: Subject = new Subject();\n\n let res = [];\n\n let resultSub = resultsSubject.subscribe(result => {\n res = res.concat(result);\n this.setCandidates(res);\n });\n\n this.subs = [resultSub];\n\n\n if (this.isCoordinate(inString)) {\n const coordPoint = this.getCoordFromString(inString);\n const projCoord = ol.proj.fromLonLat([coordPoint.x, coordPoint.y])\n const coordCandidate = {\n name: inString,\n location: { x: projCoord[0], y: projCoord[1] },\n extent: {\n xmax: projCoord[0] + this.webMercatorExtentOffset,\n xmin: projCoord[0] - this.webMercatorExtentOffset,\n ymax: projCoord[1] + this.webMercatorExtentOffset,\n ymin: projCoord[1] - this.webMercatorExtentOffset\n } as IExtent,\n source: SearchTypes.DDCoordinate\n } as Candidate;\n\n //this.setCandidates([coordCandidate]);\n resultsSubject.next([coordCandidate]);\n }\n\n\n\n\n\n\n\n try {\n this.api.post('LayerSearch', 'GetCandidates', { searchString: inString, limit: 10 })\n .subscribe(res => {\n resultsSubject.next(res);\n })\n } catch {\n }\n\n suggest(inString, {\n params: {\n location: `${biasCoord[0]},${biasCoord[1]}`,\n countryCode: 'USA',\n }\n }).then(suggestResult => {\n if (suggestResult.suggestions.length < 1) {\n this.clearCandidates();\n return;\n }\n // suggestResult.suggestions.sort((a,b) => {\n // if(a.isCollection && b.isCollection)\n // return 0;\n // else if(a.isCollection)\n // return 1;\n // else if(b.isCollection)\n // return -1;\n // return 0;\n // })\n suggestResult.suggestions.forEach(suggestion => {\n if(!suggestion.isCollection)\n {\n geocode({\n singleLine: suggestion.text,\n magicKey: suggestion.magicKey,\n countryCode: 'USA',\n params: {\n maxLocations: maxCandidates,\n outSR: 102100 // WKID Web Mercator - EPSG 3857\n }\n }).then(result => {\n let candidates = result.candidates.map(item => {\n return {\n name: item.address,\n location: { ...item.location },\n extent: { ...item.extent },\n source: SearchTypes.EsriGeocode\n } as Candidate;\n });\n resultsSubject.next(candidates);\n })\n }\n else\n {\n // resultsSubject.next([{\n // name: suggestion.text,\n // location: null,\n // extent: null,\n // source: SearchTypes.EsriSuggestion\n // } as Candidate]);\n }\n })\n\n })\n\n\n }\n\n public clearCandidates(): void {\n this.setCandidates([]);\n }\n\n private isCoordinate(inString: string) {\n const trimString = inString.trim();\n const isInCoordForm = /^(-?\\d+(\\.\\d+)?),\\s*(-?\\d+(\\.\\d+)?)$/.test(trimString);\n\n if (\n trimString &&\n isInCoordForm &&\n trimString.length >= 5) // Technically the min length for a valid AZ coord is 7 but giving some leeway\n {\n return true;\n } else {\n return false;\n }\n }\n\n private getCoordFromString(inCoordString: string): IPoint {\n // Assumes that the string has already been verified as a valid coord\n const splitString = inCoordString.trim().split(',');\n const newCoord = {\n x: parseFloat(splitString[0]),\n y: parseFloat(splitString[1])\n } as IPoint;\n return newCoord || null;\n }\n\n}\n","\nimport { Subscription, Observable, Subject } from 'rxjs';\nimport { ConfiguredIdentifySources, Result } from '../_shared/services/map/identify.service';\n\nexport enum ImportState {\n Idle,\n Searching,\n HasResults,\n NoResults\n}\n\nexport class Import {\n private state: ImportState = ImportState.Idle;\n results: any[] = [];\n index: number = 0;\n\n sub: Subject;\n\n constructor(private identify: ConfiguredIdentifySources) {\n this.sub = new Subject();\n }\n\n search(coords: any) {\n this.state = ImportState.Searching;\n }\n\n getState(): ImportState {\n return this.state;\n }\n\n setState(state: ImportState) {\n this.state = state;\n }\n\n getIndex(): number {\n return this.index;\n }\n\n getResultCount(): number {\n return this.results.length;\n }\n\n getFocusedResult() {\n if (this.index < this.results.length)\n return this.results[this.index]\n\n return null;\n }\n\n hasNextResult() {\n return this.index < this.results.length;\n }\n\n hasPreviousResult() {\n return this.index > 0;\n }\n\n nextResult() {\n this.index++;\n }\n\n previousResult() {\n this.index--;\n }\n\n clear() {\n this.index = 0;\n this.state = ImportState.Idle;\n this.results = [];\n }\n\n onResult(): Observable {\n return this.sub;\n }\n}\n","import { Component, OnInit, Input, OnDestroy, ViewChild } from '@angular/core';\nimport { MapService } from '../_shared/services/map/map.service';\nimport { FixedLengthArray } from '../_shared/types/fixed-length-array';\nimport { Subscription, Observable, Subject } from 'rxjs';\nimport { MapCategory, MapLayer } from '../_shared/models/map/config.model';\nimport { PlugmapAPIService } from '../_shared/services/map/plugmap-api.service';\nimport { ConfiguredIdentifySources, Result } from '../_shared/services/map/identify.service';\nimport { Candidates } from '../_shared/models/map/geo-search.model';\nimport { MatDialog } from '@angular/material/dialog';\nimport { ErrorDialogComponent } from './error-dialog/error-dialog.component'\nimport { ApiService } from '../_shared/services/api.service';\nimport { LoadingDialogComponent } from '../loading-dialog/loading-dialog.component'\nimport { ActivatedRoute } from '@angular/router';\nimport { AuthorizationService } from '../_shared/services/authorization.service';\nimport { Import, ImportState } from './import';\nimport { SidebarContentComponent } from './sidebar/sidebar-content/sidebar-content.component'\nimport { promptAndProcessShapefile } from '../../../node_modules/geometry-web-worker'\nimport { CoreExplorerLayers } from './sidebar/layer-explorer-container/layer-explorer.model';\nimport { MatDrawer } from '@angular/material/sidenav';\n\n\n\ndeclare var ol: any;\ndeclare var famMap: any;\ndeclare var window: any;\ndeclare var ResizeObserver: any;\n\n\n\n@Component({\n selector: 'app-map',\n templateUrl: './map.component.html',\n styleUrls: ['./map.component.scss']\n})\nexport class MapComponent implements OnInit, OnDestroy {\n\n constructor(\n private mapService: MapService,\n private mapAPI: PlugmapAPIService,\n private dialog: MatDialog,\n private api: ApiService,\n private identify: ConfiguredIdentifySources,\n private route: ActivatedRoute,\n private auth: AuthorizationService\n ) { }\n\n import: Import = new Import(this.identify);\n\n @Input() mapCenter: FixedLengthArray<[number, number]> = [-106.1895148695699, 34.51098276276389]; // Default to centroid of NM\n\n @Input() defaultZoom: number = 6;\n\n @Input() maxZoom: number = 22;\n\n @Input() minZoom: number = 3;\n\n @Input() defaultExtent: FixedLengthArray<[number, number, number, number]> = [-12636125.720420806, 3533818.2337872875, -10874868.852807505, 4597910.92463699];\n //This was hacked by doing the following\n //Reduce window width to close that of the aspect ratio of NM\n //Make NM fit centered in the map\n //Run this in the console\n //famMap.getMap().getView().calculateExtent()\n\n public drawerOpened: boolean;\n\n private mapConfigSub: Subscription;\n\n private mapDrawSub: Subscription;\n\n private mapCenterSub: Subscription;\n private mapExtentSub: Subscription;\n private mapZoomSub: Subscription;\n\n private mapConfigLoaded = false;\n\n private assessmentEditOverlay: any;\n private importOverlay: any;\n\n mapCategories: MapCategory[];\n\n assessmentOverlayContainerHeight: number;\n importOverlayContainerHeight: number;\n\n drawnShape: any;\n\n sideDrawer: HTMLElement;\n\n drawLayer: any;\n\n currentMapCenter: any;\n currentMapExtent: any;\n currentMapZoom: any;\n\n\n highlightLayer: any;\n refLayer: any;\n\n ImportState = ImportState;\n\n\n featureType: string;\n\n importEnabled: boolean = false;\n\n resizeObserver: any;\n\n @ViewChild('sidebar') sidebar: SidebarContentComponent;\n @ViewChild('drawer') drawer: MatDrawer;\n\n ngOnInit(): void {\n this.bootMap();\n this.mapConfigSub = this.mapService.getMapConfig().subscribe(config => {\n if (config && !this.mapConfigLoaded) {\n // On first map theme load\n this.mapCategories = config;\n this.mapConfigLoaded = true;\n this.mapAPI.setCategories(config);\n config.forEach(cat => {\n cat.layers.forEach(layer => {\n if (layer.identify && cat.selection.isSelected(layer.key)) {\n this.identifyResults.resultMap[layer.key] = { status: 'Idle', results: [] };\n }\n })\n })\n\n } else if (config) {\n // Add any routines that need to listen for other theme changes\n }\n });\n this.sideDrawer = document.getElementsByName(\"map-drawer\")[0];\n\n this.mapCenterSub = this.mapAPI.getMapCenter().subscribe(newCenter => {\n this.currentMapCenter = newCenter;\n });\n this.mapExtentSub = this.mapAPI.getMapExtent().subscribe(newExtent => {\n this.currentMapExtent = newExtent;\n this.invalidateIdentifyResults();\n });\n\n this.mapZoomSub = this.mapAPI.getMapZoom().subscribe(newZoom => {\n console.log(\"New zoom\", newZoom)\n this.currentMapZoom = newZoom;\n });\n\n window.searchThisArea = this.searchThisArea.bind(this);\n\n this.route.queryParams.subscribe(params => {\n let id = params[\"id\"];\n let type = params[\"type\"];\n let name = params[\"name\"];\n\n if (id == undefined && name == undefined)\n return;\n\n let iid = id ? parseInt(id) : 0;\n\n const saveRef = this.dialog.open(LoadingDialogComponent, {\n width: '25rem',\n data: \"Loading Selected Feature\",\n disableClose: true\n });\n\n if (type === 'p') {\n this.api.post(\"Project\", \"Get\", [iid]).subscribe(results => {\n if (results && results.length) {\n let target = results[0];\n if (target.fields && target.fields.Geometry) {\n let obj = { wkt: target.fields.Geometry.wkt, left: 0, bottom: 0 }\n setTimeout(() => { this.mapAPI.fitToWKT(obj) }, 1500);\n setTimeout(() => { this.setIdentifyResults(iid, CoreExplorerLayers.ProjectKey) }, 1500);\n setTimeout(() => { this.addGeomHighlightFromWkt(target.fields.Geometry.wkt) }, 3000);\n }\n }\n saveRef.close();\n })\n } else if (type === 'f') {\n this.api.post(\"Focal\", \"Get\", [iid]).subscribe(results => {\n if (results && results.result) {\n let target = results.result;\n if (target.fields && target.fields.Geometry) {\n let obj = { wkt: target.fields.Geometry.wkt, left: 0, bottom: 0 }\n setTimeout(() => { this.mapAPI.fitToWKT(obj) }, 1500);\n setTimeout(() => { this.setIdentifyResults(iid, CoreExplorerLayers.FocalKey) }, 1500);\n setTimeout(() => { this.addGeomHighlightFromWkt(target.fields.Geometry.wkt) }, 3000);\n }\n }\n saveRef.close();\n })\n } \n else if (type === 'a') {\n this.api.post(\"Activity\", \"LongRead\", iid).subscribe(results => {\n if (results && results.valid) {\n let target = results.result;\n if (target.geometry) {\n let obj = { wkt: target.geometry.wkt, left: 0, bottom: 0 }\n setTimeout(() => { this.mapAPI.fitToWKT(obj) }, 1500);\n setTimeout(() => { this.setIdentifyResults(iid, CoreExplorerLayers.ActivityKey) }, 1500);\n setTimeout(() => { this.addGeomHighlightFromWkt(target.geometry.wkt) }, 3000);\n }\n }\n saveRef.close();\n })\n } else if (type === 'l') {\n this.getExtentAndZoomWithDialog(name, CoreExplorerLayers.PrioLandKey, saveRef);\n } else if (type === 'w') {\n this.getExtentAndZoomWithDialog(name, CoreExplorerLayers.WatershedKey, saveRef);\n } else {\n saveRef.close();\n }\n });\n\n this.import = new Import(this.identify);\n\n this.import.onResult().subscribe(() => {\n this.updateImportFocus();\n })\n\n var that = this;\n\n this.resizeObserver = new ResizeObserver(() => { that.drawerAnimate() });\n this.resizeObserver.observe(document.getElementsByTagName(\"mat-drawer-content\")[0]);\n }\n\n ngOnDestroy() {\n this.mapAPI.destroyMap();\n this.mapConfigSub.unsubscribe();\n this.mapCenterSub.unsubscribe();\n this.mapExtentSub.unsubscribe();\n if (this.mapDrawSub)\n this.mapDrawSub.unsubscribe();\n this.resizeObserver.unobserve(document.getElementsByTagName(\"mat-drawer-content\")[0]);\n }\n\n async getExtentAndZoomWithDialog(name, key, saveRef) {\n const extent = await this.identify.requestFeatureExtent(key, name);\n const featureGeom = await this.identify.requestFeatureGeom(key, name);\n setTimeout(() => {\n this.zoomToExtent(extent, true);\n this.selectLayer({ key });\n this.tempHighlight(featureGeom);\n saveRef.close();\n }, 2000);\n }\n\n setIdentifyResults(iid, layerKey?: string) {\n this.identify.FromQuery(`objectid=${iid}`, false, true).subscribe(res => {\n this.identifyResults.hasResults = true;\n this.identifyResults.resultMap[res.layer] = { status: 'Ready', results: res.results, error: res.error };\n this.identifyResults.reverseMap[res.layer] = {};\n\n if (res.results && res.results.length > 0) {\n let chunk = res.results.length > 750 ? Math.ceil(res.results.length / 750) : 2;\n let delay = 750 / (res.results.length / chunk);\n\n res.results.forEach(result => {\n this.identifyResults.reverseMap[res.layer][result.id] = result;\n })\n\n if (layerKey) {\n const newObj = {};\n newObj[layerKey] = { ...this.identifyResults.resultMap[layerKey] }\n this.identifyResults.resultMap = { ...newObj} ;\n }\n\n this.identify.newIdentifyFromQuery.next();\n }\n\n });\n }\n\n addGeomHighlightFromWkt(wkt) {\n const format = new ol.format.WKT()\n const feature = format.readFeatures(wkt, {\n dataProjection: 'EPSG:3857',\n featureProjection: 'EPSG:3857',\n });\n this.clearHighlight();\n this.highlightLayer.getSource().addFeatures(feature);\n }\n\n selectLayer(layer: MapLayer) {\n\n if (layer.identify)\n if (!this.identifyResults.resultMap[layer.key])\n this.identifyResults.resultMap[layer.key] = { status: 'Idle', results: [] };\n\n this.mapAPI.turnLayerOnByKey(layer.key);\n }\n\n deselectLayer(layer: MapLayer) {\n\n console.log(layer);\n console.log(this.identifyResults.resultMap)\n\n if (layer.identify)\n if (this.identifyResults.resultMap[layer.key])\n delete this.identifyResults.resultMap[layer.key];\n\n console.log(this.identifyResults.resultMap);\n\n\n this.mapAPI.turnLayerOffByKey(layer.key);\n }\n\n opacityChange(event: any) {\n this.mapAPI.setCategoryTransparencyByKey(event.key, event.opacity);\n }\n\n //This boots the plugmap on the element with the id mapmap\n bootMap(): void {\n\n this.mapAPI.createMap(\"mapmap\", this.mapCenter, this.defaultZoom, this.maxZoom, this.minZoom);\n setTimeout(() => {\n famMap.getMap().handleSizeChanged_()\n }, 1500);\n\n this.installExtensions();\n }\n\n private installExtensions(): void {\n let map = famMap.getMap();\n\n let zte = new ol.control.ZoomToExtent({\n extent: this.defaultExtent,\n });\n\n zte.handleClickOld = zte.handleClick_;\n let that = this;\n\n zte.handleZoomToExtent = function () {\n let sd = document.getElementsByName(\"map-drawer\");\n let mp = this.getMap();\n let vw = mp.getView();\n\n let pudding = [0, 0, 0, 0];\n if (sd.length)\n pudding[3] += sd[0].offsetWidth;\n\n vw.fit(that.defaultExtent, {\n size: mp.getSize(),\n duration: 1000,\n padding: pudding\n });\n }\n\n let assessmentEditOverlayContainer = document.getElementById('assessmentEditOverlay');\n this.assessmentOverlayContainerHeight = assessmentEditOverlayContainer.offsetHeight;\n\n let importOverlayContainer = document.getElementById('importOverlay');\n\n this.assessmentEditOverlay = new ol.Overlay({\n element: assessmentEditOverlayContainer,\n positioning: 'bottom-center',\n autoPan: {\n margin: 20\n }\n });\n\n this.importOverlay = new ol.Overlay({\n element: importOverlayContainer,\n positioning: 'bottom-center',\n autoPan: {\n margin: 20\n }\n });\n\n\n\n let sl = new ol.control.ScaleLine({ units: 'us' });\n\n setTimeout(() => { zte.handleClick_({ preventDefault: function () { } }) }, 1500);\n map.controls.extend([zte, sl]);\n map.addOverlay(this.assessmentEditOverlay);\n map.addOverlay(this.importOverlay);\n window.zte = zte;\n\n map.on('singleclick', (evt) => {\n this.handleClick(evt);\n })\n\n\n var IdentifyControl = /*@__PURE__*/(function (Control) {\n function IdentifyControl(opt_options) {\n var options = opt_options || {};\n\n var button = document.getElementById(\"idBtn\");\n\n if (!button) {\n button = document.createElement('button');\n button.innerHTML = '';\n }\n\n var element = document.createElement('div');\n element.className = 'identify-area ol-unselectable ol-control';\n element.appendChild(button);\n\n Control.call(this, {\n element: element,\n target: options.target,\n });\n\n button.addEventListener('click', this.handleRotateNorth.bind(this), false);\n }\n\n if (Control) IdentifyControl.__proto__ = Control;\n IdentifyControl.prototype = Object.create(Control && Control.prototype);\n IdentifyControl.prototype.constructor = IdentifyControl;\n\n IdentifyControl.prototype.handleRotateNorth = function handleRotateNorth() {\n this.getMap().getView().setRotation(0);\n };\n\n\n return IdentifyControl;\n }(ol.control.Control));\n\n this.setupIdentifyHighlightLayer();\n\n\n\n }\n\n\n unHighlightIdentifyResults() {\n this.unhighlightTemp();\n this.identifyResults.highlightedItems.forEach(result => {\n result.highlight = false;\n result.raw.forEach(f => {\n f.set('highlight', false);\n })\n });\n }\n\n handleIdentifyClick(evt: any) {\n if (this.sidebar) {\n this.sidebar.openIdentify();\n this.drawer.open();\n }\n\n this.unHighlightIdentifyResults();\n\n this.searchThisAreaByPoint(evt.coordinate);\n\n this.identifyResults.highlightedItems = [];\n\n this.identifyHighlightLayer.getSource().forEachFeatureAtCoordinateDirect(evt.coordinate, (f) => {\n let layer = f.get('layer');\n let id = f.get('tfid');\n\n if (layer) {\n let r = this.identifyResults.reverseMap[layer][id];\n if (r) {\n r.highlight = true;\n r.raw.forEach(f => {\n f.set('highlight', true);\n })\n this.identifyResults.highlightedItems.push(r);\n\n this.sidebar.scrollToResult(layer, id);\n }\n else {\n console.log(\"Cannot find \" + layer + \" \" + id, this.identifyResults.reverseMap[layer])\n console.log(f)\n }\n }\n })\n }\n\n handleClickToImportClick(evt: any) {\n if (!this.auth.getLogin().acls.includes(\"Map:ClickToImport\") || !this.importEnabled)\n return;\n\n this.clearHighlight();\n\n this.import.search(evt.coordinate);\n this.setImportOverlayPositionAndContents(evt.coordinate)\n }\n\n handleClick(evt: any) {\n this.handleClickToImportClick(evt);\n this.handleIdentifyClick(evt);\n }\n\n clearHighlight() {\n if (!this.highlightLayer)\n this.setupHighlightLayer();\n\n let src = this.highlightLayer.getSource()\n src.clear();\n }\n\n updateImportFocus() {\n\n this.clearHighlight();\n\n\n if (this.import.getState() == ImportState.NoResults)\n return;\n\n\n let r = this.import.getFocusedResult();\n\n var f = r.raw;\n let g = f[0].getGeometry();\n let ext = ol.extent.createEmpty();\n\n for (let feat of f) {\n ol.extent.extend(ext, feat.getGeometry().getExtent());\n }\n\n let center = [(ext[0] + ext[2]) / 2, ext[3]];\n\n this.highlightLayer.getSource().addFeatures(f);\n\n this.setImportOverlayPositionAndContents(center)\n }\n\n importPreviousResult() {\n this.import.previousResult();\n this.updateImportFocus();\n }\n\n importNextResult() {\n this.import.nextResult();\n this.updateImportFocus();\n }\n\n setupHighlightLayer() {\n this.highlightLayer = new ol.layer.Vector();\n\n let src = new ol.source.Vector();\n this.highlightLayer.setSource(src);\n\n let sty = new ol.style.Style({\n fill: new ol.style.Fill({\n color: \"rgba(0,0,0,0.15)\"\n }),\n stroke: new ol.style.Stroke({\n color: \"rgba(255,255,255,1.0)\",\n width: 4\n })\n });\n this.highlightLayer.setStyle(sty);\n\n this.highlightLayer.setZIndex(9999);\n\n famMap.getMap().addLayer(this.highlightLayer);\n }\n\n zoomToCandidates(candidates: Candidates) {\n this.mapAPI.zoomToCandidates(candidates);\n }\n\n startImport() {\n this.importEnabled = true;\n }\n\n populateDrawLayer() {\n\n let ml = undefined;\n let layers = famMap.getMap().getLayers().array_\n for (var i = 0; i < layers.length; i++) {\n let layer = layers[i];\n if (layer.get(\"id\") === \"lyr_internal_merged\") {\n ml = layer;\n break;\n }\n }\n\n if (!ml)\n console.error('Issue occured in map.'); //We shouldnt get here\n\n this.drawLayer = ml;\n }\n\n setImportOverlayPositionAndContents(center: number[]) {\n\n let overlay = this.importOverlay;\n\n //Set the position\n setTimeout(() => { overlay.setPosition(center); }, 250);\n\n //Populate contents\n let container = document.getElementById(\"importOverlay\");\n\n //Only append if its not already there\n if (container.children.length == 0) {\n let cnt = document.getElementById(\"importOverlayContents\");\n container.appendChild(cnt);\n }\n }\n\n importShapeFile() {\n promptAndProcessShapefile().then(features => {\n //Features is an array of features\n this.import.setState(ImportState.Searching);\n var tasks = [];\n\n const saveRef = this.dialog.open(LoadingDialogComponent, {\n width: '25rem',\n data: \"Loading Shapefile\",\n disableClose: true\n });\n var featuresImported = features.length;\n this.mapAPI.setImportCount(0);\n this.mapAPI.setImporting(true);\n features.forEach(feat => {\n let draw = this.mapAPI.setFeatsGeoJSON(feat);\n\n if (this.mapDrawSub)\n this.mapDrawSub.unsubscribe();\n\n this.mapDrawSub = draw.subscribe(this.handleImportResult.bind(this));\n }\n )\n\n var id = setInterval(() => {\n if (!(this.mapAPI.getImportCount() < featuresImported)) {\n // Run this once to center and zoom to newly imported shapes\n let map = famMap.getMap();\n let mapSize = map.getSize();\n this.grabSnapshotOfDrawnShape(mapSize).subscribe();\n\n // If only a few features were imported then zoom out a little bit so the save popup is not cutoff to the side\n if (featuresImported < 5) {\n let vw = map.getView();\n vw.setZoom(vw.getZoom() - 2);\n }\n\n this.dismissImport();\n this.mapAPI.setImporting(false);\n clearInterval(id);\n saveRef.close();\n }\n }, 1000);\n\n })\n .catch((err) => {\n console.log(err);\n });\n\n }\n\n grabSnapshotOfDrawnShape(targetSize: number[]): Observable {\n // Show a loading screen when we are getting a screenshot\n const snapshotRef = this.dialog.open(LoadingDialogComponent, {\n width: '25rem',\n data: \"Generating Snapshot\",\n disableClose: true\n });\n\n var ds = new Subject();\n\n let map = famMap.getMap();\n let origSize = map.getSize();\n let that = this;\n\n map.setSize(targetSize);\n\n let ml = undefined;\n let layers = famMap.getMap().getLayers().array_\n for (var i = 0; i < layers.length; i++) {\n let layer = layers[i];\n if (layer.get(\"id\") === \"lyr_internal_merged\") {\n ml = layer;\n break;\n }\n };\n\n let pudding = [20, 20, 20, 20];\n let ext = [];\n\n try {\n ext = ml.getSource().getFeatureById(this.drawnShape.olUID).getGeometry().getExtent();\n }\n catch (ex) {\n snapshotRef.close();\n this.dialog.open(ErrorDialogComponent, {\n width: '25rem',\n data: [\"Error Generating Snapshot\", \"An error occured. Please try again. If this happens again, modify the shape slightly and click save.\"],\n disableClose: true\n });\n throw ex;\n }\n\n let vw = map.getView();\n vw.fit(ext, {\n size: targetSize,\n nearest: false,\n padding: pudding\n });\n\n map.once('rendercomplete', function () {\n var mapCanvas = document.createElement('canvas');\n\n mapCanvas.width = targetSize[0];\n mapCanvas.height = targetSize[1];\n var mapContext = mapCanvas.getContext('2d');\n Array.prototype.forEach.call(\n document.querySelectorAll('.ol-layer canvas'),\n function (canvas) {\n if (canvas.width > 0) {\n var opacity = canvas.parentNode.style.opacity;\n mapContext.globalAlpha = opacity === '' ? 1 : Number(opacity);\n var transform = canvas.style.transform;\n // Get the transform parameters from the style's transform matrix\n var matrix = transform\n .match(/^matrix\\(([^\\(]*)\\)$/)[1]\n .split(',')\n .map(Number);\n // Apply the transform to the export map context\n CanvasRenderingContext2D.prototype.setTransform.apply(\n mapContext,\n matrix\n );\n mapContext.drawImage(canvas, 0, 0);\n }\n }\n );\n\n map.setSize(origSize);\n\n snapshotRef.close();\n\n setTimeout(() => { ds.next(mapCanvas.toDataURL()); }, 100);\n });\n\n // Again there is some weirdness with resizing the map, so manually call renderSync after a delay of like 500ms or so\n setTimeout(() => { map.renderSync(); }, 500);\n\n return ds.asObservable();\n }\n\n setOverlayPositionAndContents(center: number[]) {\n\n let overlay = this.assessmentEditOverlay;\n\n // Set the position\n setTimeout(() => { overlay.setPosition(center); }, 250);\n\n // Populate contents\n let container = document.getElementById(\"assessmentEditOverlay\");\n\n // Only append if its not already there\n if (container.children.length == 0) {\n let cnt = document.getElementById(\"assessmentEditOverlayContents\");\n container.appendChild(cnt);\n }\n }\n\n fitToExtentAndOverlay(ext: number[]) {\n let mp = famMap.getMap();\n\n let vw = mp.getView();\n\n // Top, right, bottom and left\n let pudding = [100, 10, 10, 10];\n\n if (this.sideDrawer)\n pudding[3] += this.sideDrawer.offsetWidth;\n\n\n if (this.assessmentOverlayContainerHeight) {\n pudding[0] += this.assessmentOverlayContainerHeight;\n }\n\n //Theres some strange interaction between the drawing and overlay that if we do this immediatly it gets a bit wonky. Hackypatch is to wait a short time to do the fit\n // setTimeout(() => {\n // vw.fit(ext, {\n // size: mp.getSize(),\n // duration: 250,\n // nearest: false,\n // padding: pudding,\n\n // });\n // }, 500);\n }\n\n handleImportResult(newShape) {\n //The plugin will emit an event with an empty shape when drawing is started. We handle this by not handling it\n if (!newShape) return;\n\n this.drawnShape = newShape;\n\n\n this.populateDrawLayer();\n\n if (!this.drawLayer) return; //Something bork\n\n let feat = this.drawLayer.getSource().getFeatureById(newShape.olUID);\n\n if (!feat)\n //Something bad happened\n feat = this.drawLayer.getSource().getFeatures()[0];\n\n if (!feat) {\n return;\n }\n\n let ext = feat.getGeometry().getExtent();\n let center = ol.extent.getCenter(ext);\n\n center = [(ext[0] + ext[2]) / 2, ext[3]]\n\n this.setOverlayPositionAndContents(center);\n\n if (this.mapDrawSub)\n this.mapDrawSub.unsubscribe();\n this.mapDrawSub =\n this.mapAPI.getShapeChange().subscribe(this.handleDrawResult.bind(this));\n\n }\n\n handleDrawResult(newShape) {\n // The plugin will emit an event with an empty shape when drawing is started. We handle this by not handling it\n if (!newShape) return;\n\n this.drawnShape = newShape;\n\n this.featureType = \"Custom\"\n\n this.populateDrawLayer();\n\n if (!this.drawLayer) return; // Something bork\n\n let feat = this.drawLayer.getSource().getFeatureById(newShape.olUID);\n\n if (!feat)\n // Something bad happened\n feat = this.drawLayer.getSource().getFeatures()[0];\n\n if (!feat) {\n return;\n }\n\n let ext = feat.getGeometry().getExtent();\n let center = ol.extent.getCenter(ext);\n\n center = [(ext[0] + ext[2]) / 2, ext[3] + 50]\n\n this.setOverlayPositionAndContents(center);\n }\n\n showErrors(errors: string[]) {\n this.dialog.open(ErrorDialogComponent, {\n width: '25rem',\n data: errors\n });\n }\n\n dismissAssessmentEdit() {\n this.stopDraw();\n }\n\n dismissImport() {\n this.importEnabled = false;\n this.import.clear();\n this.importOverlay.setPosition(undefined);\n if (this.highlightLayer)\n this.highlightLayer.getSource().clear();\n }\n\n isDrawing(): boolean {\n return this.mapAPI.isDrawing();\n }\n\n hasArea(): boolean {\n return this.mapAPI.hasShape();\n }\n\n stopDraw(): void {\n this.mapAPI.stopDrawing();\n this.drawnShape = undefined;\n this.assessmentEditOverlay.setPosition(undefined);\n }\n\n refreshMap(): void {\n this.mapAPI.refreshMap();\n }\n\n clearPoints() {\n this.mapAPI.clearPoints();\n }\n\n identifyResults: any = {\n hasResults: false,\n extentChanged: false,\n resultMap: {},\n reverseMap: {},\n highlightedItems: [],\n extent: [],\n currentExtent: []\n };\n\n\n invalidateIdentifyResults() {\n if (!this.identifyResults.hasResults)\n return;\n\n var mp = famMap.getMap();\n var vw = mp.getView();\n this.identifyResults.currentExtent = vw.calculateExtent();\n\n var xMinMatch = Math.floor(this.identifyResults.currentExtent[0] / 100) == Math.floor(this.identifyResults.extent[0] / 100)\n var xMaxMatch = Math.floor(this.identifyResults.currentExtent[1] / 100) == Math.floor(this.identifyResults.extent[1] / 100)\n var yMinMatch = Math.floor(this.identifyResults.currentExtent[2] / 100) == Math.floor(this.identifyResults.extent[2] / 100)\n var yMaxMatch = Math.floor(this.identifyResults.currentExtent[3] / 100) == Math.floor(this.identifyResults.extent[3] / 100)\n\n this.identifyResults.extentChanged = !(xMinMatch && xMaxMatch && yMinMatch && yMaxMatch)\n\n }\n\n returnToIdentifyExtent() {\n var mp = famMap.getMap();\n var vw = mp.getView();\n vw.fit(this.identifyResults.extent, {\n size: mp.getSize(),\n duration: 1000,\n padding: [0, 0, 0, 0]\n });\n }\n\n searchThisArea() {\n if (this.sidebar)\n this.sidebar.openIdentify();\n\n var mp = famMap.getMap();\n var vw = mp.getView();\n this.identifyResults =\n {\n hasResults: false,\n extentChanged: false,\n resultMap: {},\n reverseMap: {},\n highlightedItems: [],\n extent: [],\n currentExtent: []\n };\n\n\n this.identifyResults.extent = vw.calculateExtent();\n\n\n let ext = vw.calculateExtent();\n this.clearIdentifyHighlight();\n\n if (this.auth.getLogin().acls.includes(\"Map:DebugIdentify\")) {\n let polygon = ol.geom.Polygon.fromExtent(ext);\n let feature = new ol.Feature(polygon);\n let src = this.identifyDebugLayer.getSource();\n src.clear();\n src.addFeatures([feature]);\n }\n\n let src = this.identifyHighlightLayer.getSource();\n src.clear();\n\n\n this.mapCategories.forEach(cat => {\n cat.layers.forEach(layer => {\n if (layer.identify && layer.identify.enabled && cat.selection.isSelected(layer.key))\n this.identifyResults.resultMap[layer.key] = { status: 'Searching', results: [] };\n })\n })\n\n this.identify.FromExtent(ext, true).subscribe(res => {\n this.identifyResults.hasResults = true;\n this.identifyResults.resultMap[res.layer] = { status: 'Ready', results: res.results, error: res.error };\n this.identifyResults.reverseMap[res.layer] = {};\n\n if (res.results && res.results.length > 0) {\n let chunk = res.results.length > 750 ? Math.ceil(res.results.length / 750) : 2;\n let delay = 750 / (res.results.length / chunk);\n\n res.results.forEach(result => {\n src.addFeatures(result.raw);\n this.identifyResults.reverseMap[res.layer][result.id] = result;\n })\n }\n\n })\n\n }\n\n searchThisAreaByPoint(point) {\n if (this.sidebar)\n this.sidebar.openIdentify();\n\n var mp = famMap.getMap();\n var vw = mp.getView();\n this.identifyResults =\n {\n hasResults: false,\n extentChanged: false,\n resultMap: {},\n reverseMap: {},\n highlightedItems: [],\n extent: [],\n currentExtent: []\n };\n\n\n this.identifyResults.extent = vw.calculateExtent();\n\n\n let ext = vw.calculateExtent();\n this.clearIdentifyHighlight();\n\n let src = this.identifyHighlightLayer.getSource();\n src.clear();\n\n\n this.mapCategories.forEach(cat => {\n cat.layers.forEach(layer => {\n if (layer.identify && layer.identify.enabled && cat.selection.isSelected(layer.key))\n this.identifyResults.resultMap[layer.key] = { status: 'Searching', results: [] };\n })\n })\n\n this.identify.FromPoint(point, false, true).subscribe(res => {\n this.identifyResults.hasResults = true;\n this.identifyResults.resultMap[res.layer] = { status: 'Ready', results: res.results, error: res.error };\n this.identifyResults.reverseMap[res.layer] = {};\n\n if (res.results && res.results.length > 0) {\n let chunk = res.results.length > 750 ? Math.ceil(res.results.length / 750) : 2;\n let delay = 750 / (res.results.length / chunk);\n\n res.results.forEach(result => {\n src.addFeatures(result.raw);\n this.identifyResults.reverseMap[res.layer][result.id] = result;\n })\n }\n\n })\n\n }\n\n identifyHighlightLayer: any;\n identifyDebugLayer: any;\n\n clearIdentifyHighlight() {\n if (!this.identifyHighlightLayer)\n this.setupIdentifyHighlightLayer();\n\n let src = this.identifyHighlightLayer.getSource()\n }\n\n setupIdentifyHighlightLayer() {\n if (this.identifyHighlightLayer)\n return;\n this.identifyHighlightLayer = new ol.layer.Vector();\n this.identifyDebugLayer = new ol.layer.Vector();\n\n let src = new ol.source.Vector();\n let debugSrc = new ol.source.Vector();\n\n this.identifyHighlightLayer.setSource(src);\n this.identifyDebugLayer.setSource(debugSrc);\n\n let sty = function (feature) {\n if (feature.get('highlight'))\n return new ol.style.Style({\n fill: new ol.style.Fill({\n color: \"rgba(0,0,0,0.15)\"\n }),\n stroke: new ol.style.Stroke({\n color: \"rgba(255,255,255,1.0)\",\n width: 4\n })\n });\n }\n\n let debugSty = new ol.style.Style({\n fill: new ol.style.Fill({\n color: \"rgba(255,255,255,0.05)\"\n }),\n stroke: new ol.style.Stroke({\n color: \"rgba(255,255,255,0.75)\",\n width: 4\n })\n });\n\n this.identifyHighlightLayer.setStyle(sty);\n this.identifyDebugLayer.setStyle(debugSty);\n\n this.identifyHighlightLayer.setZIndex(9999);\n this.identifyDebugLayer.setZIndex(9998);\n\n famMap.getMap().addLayer(this.identifyHighlightLayer);\n famMap.getMap().addLayer(this.identifyDebugLayer);\n\n window.layerMap[\"INTERNAL_IDENTIFY_HIGHLIGHT\"] = this.identifyHighlightLayer;\n window.layerMap[\"INTERNAL_IDENTIFY_DEBUG\"] = this.identifyDebugLayer;\n\n }\n\n\n highlightFeature(result: Result) {\n this.unhighlightTemp();\n console.log(\"Highlighting\", result);\n\n if (this.highlightLayer) {\n const src = this.highlightLayer.getSource();\n src.clear();\n }\n \n this.unHighlightIdentifyResults();\n\n if (!this.identifyHighlightLayer)\n this.setupIdentifyHighlightLayer();\n result.highlight = true;\n\n result.raw.forEach(res => {\n res.set('highlight', true);\n })\n }\n\n unhighlightFeature(result: Result) {\n this.unhighlightTemp();\n if (this.highlightLayer) {\n const src = this.highlightLayer.getSource();\n src.clear();\n }\n this.clearIdentifyHighlight();\n result.highlight = false;\n result.raw.forEach(res => {\n res.set('highlight', false);\n })\n }\n\n zoomToFeature(result: Result) {\n let sd = document.getElementsByName(\"map-drawer\");\n let map = famMap.getMap();\n let view = map.getView();\n\n let pudding = [20, 20, 20, 20];\n if (sd.length)\n pudding[3] += sd[0].offsetWidth;\n\n view.fit(result.raw[0].getGeometry(), {\n size: map.getSize(),\n duration: 1000,\n padding: pudding\n });\n }\n\n zoomToExtent(extent, slimPadding?: boolean) {\n let sd = document.getElementsByName(\"map-drawer\");\n let map = famMap.getMap();\n let view = map.getView();\n\n let pudding = [200, 200, 200, 200];\n if (slimPadding) {\n pudding = [20, 20, 20, 20];\n }\n \n if (sd.length)\n pudding[3] += sd[0].offsetWidth;\n\n view.fit(extent, {\n size: map.getSize(),\n duration: 1000,\n padding: pudding\n });\n }\n\n importFeature(result: Result) {\n console.log('Not implementned');\n }\n\n drawerAnimate() {\n famMap.getMap().handleResize_();\n }\n\n tempHighlight(geom: any) {\n let reader = new ol.format.GeoJSON(); // geojson\n let f = reader.readFeature(geom);\n\n this.setupRefLayer('rgba(0,0,0,0.15)', 'rgba(0,255,255,0.9)');\n\n this.unhighlightTemp();\n this.refLayer.getSource().addFeature(f);\n }\n\n unhighlightTemp() {\n if (this.refLayer)\n this.refLayer.getSource().clear();\n }\n\n setupRefLayer(fillColor?: any, strokeColor?: any) {\n if (this.refLayer)\n return;\n this.refLayer = new ol.layer.Vector();\n\n let src = new ol.source.Vector();\n this.refLayer.setSource(src);\n\n let sty = new ol.style.Style({\n fill: new ol.style.Fill({\n color: fillColor || 'rgba(0,0,0,0.15)'\n }),\n stroke: new ol.style.Stroke({\n color: strokeColor || 'rgba(0,255,255,0.9)',\n width: 2\n })\n });\n this.refLayer.setStyle(sty);\n\n this.refLayer.setZIndex(8888);\n\n famMap.getMap().addLayer(this.refLayer);\n }\n\n}\n","\r\n \r\n \r\n \r\n\r\n \r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n keyboard_arrow_right \r\n
\r\n
\r\n \r\n \r\n\r\n
\r\n \r\n
\r\n\r\n
\r\n
\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
\r\n
\r\n \r\n \r\n
\r\n

Feature Type: {{featureType}}

\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n \r\n\r\n \r\n
\r\n
\r\n NO RESULTS\r\n \r\n
\r\n
\r\n
\r\n
\r\n SEARCHING\r\n \r\n
\r\n
\r\n
\r\n
\r\n Feature Type: \r\n
{{import.getFocusedResult().data.Type || 'Inventory'}}
\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n Name: \r\n
{{import.getFocusedResult().name}}
\r\n
\r\n
1\" style=\"width: 100%\"\r\n fxLayoutAlign=\"center center\">\r\n \r\n
\r\n

{{import.getIndex() + 1}}

\r\n

of

\r\n

{{import.getResultCount()}}

\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n\r\n
\r\n
\r\n","import { Component, OnInit, Inject } from '@angular/core';\nimport { FormControl, FormGroupDirective, NgForm, Validators, ValidatorFn, AbstractControl } from '@angular/forms';\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\n\n\n@Component({\n selector: 'app-save-dialog',\n templateUrl: './save-dialog.component.html',\n styleUrls: ['./save-dialog.component.scss']\n})\nexport class SaveDialogComponent implements OnInit {\n\n constructor(\n public dialogRef: MatDialogRef,\n @Inject(MAT_DIALOG_DATA) public assessmentArea: any) {}\n\n nameFormControl: FormControl;\n\n\n ngOnInit(): void {\n this.nameFormControl = new FormControl('', [\n Validators.required,\n Validators.maxLength(50),\n Validators.minLength(1)\n ]);\n }\n\n isValid() : boolean {\n return this.nameFormControl.valid;\n }\n\n onYesClick(): void {\n this.assessmentArea.name = this.nameFormControl.value;\n this.dialogRef.close(this.assessmentArea);\n }\n\n\n onNoClick(): void {\n this.dialogRef.close();\n console.log(this.assessmentArea)\n }\n\n}\n","

Save As Area of Interest

\n\n
\n
\n \"Map\n
\n

\n \n Area of Interest Name\n \n \n

\n
\n
\n
\n
\n
\n \n \n
\n
","import { Component, OnInit } from '@angular/core';\n\n@Component({\n selector: 'app-saved-dialog',\n templateUrl: './saved-dialog.component.html',\n styleUrls: ['./saved-dialog.component.scss']\n})\nexport class SavedDialogComponent implements OnInit {\n\n constructor() { }\n\n ngOnInit(): void {\n }\n\n}\n","

Area of Interest Saved

\n\n
\n
\n
\n

\n You can view your Area of Interest on the map by checking the \"Areas of Interest\" layer in the left panel layer list. You\n can also view all your Areas of Interest in the \"Management\" tab and manage them in the \"My Areas\" tab.\n

\n
\n
\n
\n
\n
\n \n
\n
","import { Component, OnInit, Input, Output, EventEmitter, ViewChild, ViewChildren, QueryList } from '@angular/core';\nimport { MapCategory, Service, MapLayer } from '../../../_shared/models/map/config.model';\n\nimport { MatSliderChange } from '@angular/material/slider'\nimport { Result } from '../../../_shared/services/map/identify.service';\n\n@Component({\n selector: 'app-category-container',\n templateUrl: './category-container.component.html',\n styleUrls: ['./category-container.component.scss']\n})\nexport class CategoryContainerComponent implements OnInit {\n\n @Input() categories: MapCategory[] = [];\n @Input() mapZoom: any;\n @Input() mode: string = \"themes\";\n\n @Output() layerSelected: EventEmitter = new EventEmitter();\n @Output() layerDeselected: EventEmitter = new EventEmitter();\n @Output() opacityChange: EventEmitter = new EventEmitter();\n\n\n @Output() tempHighlightFeature: EventEmitter = new EventEmitter();\n @Output() highlightFeature: EventEmitter = new EventEmitter();\n @Output() unhighlightFeature: EventEmitter = new EventEmitter();\n @Output() zoomToFeature: EventEmitter = new EventEmitter();\n @Output() importFeature: EventEmitter = new EventEmitter();\n @Output() returnToIdentifyExtent: EventEmitter = new EventEmitter();\n @Output() identifyExtentClick: EventEmitter = new EventEmitter();\n @Output() zoomToExtent: EventEmitter = new EventEmitter();\n\n @Input() public identifyResults: any = {\n hasResults: true,\n extentChanged: true,\n resultMap: {},\n extent: []\n };\n\n @ViewChildren('idView') public idTool: QueryList;\n @ViewChildren('catpan') public catPans: QueryList;\n\n public expandAll() {\n this.catPans.toArray().forEach(element => {\n console.log(element);\n element.open();\n });\n\n this.idTool.toArray().forEach(element => {\n element.expand();\n })\n }\n\n public zoomExtent(data) {\n console.log('cat container');\n this.zoomToExtent.emit(data);\n }\n\n public scrollToResult(layer: string, id: string) {\n this.expandAll();\n\n this.idTool.toArray().forEach(element => {\n if (element.layer.key === layer) {\n element.scrollToResult(id);\n }\n })\n }\n\n goToSearchExtent() {\n this.returnToIdentifyExtent.next(true);\n }\n\n constructor() { }\n\n ngOnInit(): void {\n }\n\n selectionChange(category: MapCategory, layer: MapLayer, selected: boolean) {\n if (selected)\n this.layerSelected.next(layer);\n else\n this.layerDeselected.next(layer);\n }\n\n adjustOpacity(category: MapCategory, event: MatSliderChange) {\n this.opacityChange.next({ key: category.category_key, opacity: event.value });\n }\n\n hasLegend(category: MapCategory): boolean {\n if (category.layers)\n for (let layer of category.layers) {\n if (category.selection.isSelected(layer.key) && layer.legend && layer.legend.length > 0)\n return true;\n }\n\n return false;\n }\n\n hasResults(category: MapCategory): boolean {\n if (category.layers)\n for (let layer of category.layers) {\n if (category.selection.isSelected(layer.key) && this.identifyResults.resultMap[layer.key] && this.identifyResults.resultMap[layer.key].status != 'Idle')\n return true;\n }\n\n return false;\n }\n\n hasAnyIdle(): boolean {\n for (let cat of this.categories) {\n if (this.hasIdle(cat))\n return true;\n }\n\n return false;\n }\n\n hasIdle(category: MapCategory): boolean {\n if (category.layers)\n for (let layer of category.layers) {\n if (category.selection.isSelected(layer.key) && this.identifyResults.resultMap[layer.key] && this.identifyResults.resultMap[layer.key].status == 'Idle')\n return true;\n }\n\n return false;\n }\n\n hasAnySelectedIDLayers(): boolean {\n return Object.keys(this.identifyResults.resultMap).length > 0\n }\n\n hasAnySelectedLegendLayers(): boolean {\n for (let category of this.categories) {\n for (let layer of category.layers) {\n if (category.selection.isSelected(layer.key) && layer.legend)\n return true;\n }\n }\n return false\n }\n\n tempHighlight(geom) {\n this.tempHighlightFeature.next(geom);\n }\n\n}\n","\n
\n \n
\n \n \n \n {{ category.name }}\n \n \n add_circle\n \n \n remove_circle\n \n \n
\n \n \n \n \n \n \n \n \n \n
\n
\n
\n
\n
\n\n\n
\n
\n
\n

Select layers from the Explorer tab to view the legend.

\n
\n
\n \n
\n \n \n \n {{ category.name }}\n \n \n add_circle\n \n \n remove_circle\n \n \n
\n \n \n
\n \n
\n
\n
\n
\n\n
\n
\n
\n
\n\n\n
\n\n \n \n\n
\n","import { Component, DoCheck, EventEmitter, Input, OnDestroy, OnInit, Output } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\nimport { BehaviorSubject, Subject, Subscription } from 'rxjs';\nimport { ConfiguredIdentifySources } from 'src/app/_shared/services/map/identify.service';\nimport { CoreExplorerLayers } from './layer-explorer.model';\n\n@Component({\n selector: 'app-layer-explorer-container',\n templateUrl: './layer-explorer-container.component.html',\n styleUrls: ['./layer-explorer-container.component.scss']\n})\nexport class LayerExplorerContainerComponent implements OnInit, DoCheck, OnDestroy {\n\n @Input() public identifyResults: any = {\n hasResults: false,\n extentChanged: false,\n resultMap: {},\n extent: []\n };\n\n @Output() highlightFeature: EventEmitter = new EventEmitter();\n @Output() tempHighlightFeature: EventEmitter = new EventEmitter();\n @Output() unhighlightFeature: EventEmitter = new EventEmitter();\n @Output() zoomToExtent: EventEmitter = new EventEmitter();\n\n currentView: BehaviorSubject = new BehaviorSubject({});\n\n currentIdx: number = 0;\n gotLatest = false;\n currentName: string;\n currentFeatureType: string;\n\n routeListener: Subscription;\n\n constructor(\n private route: ActivatedRoute,\n private identify: ConfiguredIdentifySources,\n ) { }\n\n ngOnInit(): void {\n this.updateData();\n\n this.routeListener = this.identify.newIdentifyFromQuery.subscribe(_ => {\n this.gotLatest = false;\n this.updateData();\n });\n }\n\n ngOnDestroy() {\n this.routeListener.unsubscribe();\n }\n\n ngDoCheck(): void {\n this.updateData()\n }\n\n private updateData() {\n // Verify that the identify has results and that all expected reuslts are \"Ready\"\n // Additionally, keep track of gotLatest. When gotLatest = true the current identify result has already been emitted\n // to the child component which invokes an API requrest and does not need to be done again\n if (\n this.identifyResults.hasResults &&\n (\n this.coreExistsAndIsReady(CoreExplorerLayers.ProjectKey) && \n this.coreExistsAndIsReady(CoreExplorerLayers.FocalKey) && \n this.coreExistsAndIsReady(CoreExplorerLayers.ActivityKey) && \n this.nonCoreLayersReady()) &&\n (\n this.coreExistsAndHasResults(CoreExplorerLayers.ProjectKey) ||\n this.coreExistsAndHasResults(CoreExplorerLayers.FocalKey) ||\n this.coreExistsAndHasResults(CoreExplorerLayers.ActivityKey) ||\n this.nonCoreLayersHaveResult()\n ) &&\n this.gotLatest === false\n ) {\n this.updateCurrentView();\n this.gotLatest = true;\n } else if (\n (!this.identifyResults.hasResults ||\n this.coreExistsAndIsNotReady(CoreExplorerLayers.ProjectKey) || \n this.coreExistsAndIsNotReady(CoreExplorerLayers.FocalKey) || \n this.coreExistsAndIsNotReady(CoreExplorerLayers.ActivityKey) || \n this.nonCoreLayersNotReady()\n ) &&\n (this.gotLatest === true)\n ) {\n this.gotLatest = false;\n this.currentIdx = 0;\n this.currentName = '';\n }\n }\n\n private coreExistsAndIsReady(key: string): boolean {\n if (\n this.identifyResults.resultMap?.[key] && \n this.identifyResults.resultMap?.[key]?.status === 'Ready'\n ) {\n return true;\n } else if (!this.identifyResults.resultMap?.[key]) {\n return true;\n } else {\n return false;\n }\n }\n\n private coreExistsAndIsNotReady(key: string): boolean {\n if (\n this.identifyResults.resultMap?.[key] && \n this.identifyResults.resultMap?.[key]?.status !== 'Ready'\n ) {\n return true;\n } else if (!this.identifyResults.resultMap?.[key]) {\n return false;\n } else {\n return false;\n }\n }\n\n private coreExistsAndHasResults(key: string): boolean {\n if (\n this.identifyResults.resultMap?.[key] && \n this.identifyResults.resultMap?.[key]?.results?.length > 0\n ) {\n return true;\n } else if (!this.identifyResults.resultMap?.[key]) {\n return false;\n } else {\n return false;\n }\n }\n\n getCurrentView(): Subject {\n return this.currentView;\n }\n\n handleLoad(target): void {\n this.currentView = target;\n }\n\n getTotalCount(): number {\n if (!this.identifyResults.hasResults) return null;\n\n const projectLayers = this.identifyResults.resultMap?.[CoreExplorerLayers.ProjectKey]?.results || [];\n const focalLayers = this.identifyResults.resultMap?.[CoreExplorerLayers.FocalKey]?.results || [];\n const actLayers = this.identifyResults.resultMap?.[CoreExplorerLayers.ActivityKey]?.results || [];\n const nonCoreResults = this.flattenNonCore(this.getNonCoreArray());\n\n let viewLayers = focalLayers.concat(projectLayers);\n viewLayers = viewLayers.concat(actLayers);\n viewLayers = viewLayers.concat(nonCoreResults);\n return viewLayers.length;\n }\n\n pageRight(): void {\n if (this.currentIdx + 1 === this.getTotalCount()) return;\n\n this.unhighlight(this.getResultFromIdx());\n\n this.currentIdx = this.currentIdx + 1;\n\n this.updateCurrentView();\n }\n\n pageLeft(): void {\n if (this.currentIdx === 0) return;\n\n this.unhighlight(this.getResultFromIdx());\n\n this.currentIdx = this.currentIdx - 1;\n\n this.updateCurrentView();\n }\n\n canPageRight(): boolean {\n return (this.currentIdx + 1) < this.getTotalCount();\n }\n\n canPageLeft(): boolean {\n return this.currentIdx > 0;\n }\n\n setName(name) {\n this.currentName = name;\n }\n\n zoomExtent(result) {\n this.zoomToExtent.next(result);\n }\n\n private highlight(result: any) {\n this.highlightFeature.next(result);\n }\n\n private unhighlight(result: any) {\n this.unhighlightFeature.next(result);\n }\n\n public unhighlightCurrent() {\n this.unhighlight(this.getResultFromIdx());\n }\n\n private getResultFromIdx() {\n const projectResults = this.identifyResults.resultMap?.[CoreExplorerLayers.ProjectKey]?.results || [];\n const focalResults = this.identifyResults.resultMap?.[CoreExplorerLayers.FocalKey]?.results || [];\n const activityResults = this.identifyResults.resultMap?.[CoreExplorerLayers.ActivityKey]?.results || [];\n const nonCoreResults = this.flattenNonCore(this.getNonCoreArray());\n\n projectResults.forEach(e => {\n e.id = CoreExplorerLayers.ProjectKey;\n });\n projectResults.sort((a, b) => {\n if (a.name < b.name) { return -1; }\n if (a.name > b.name) { return 1; }\n return 0;\n });\n focalResults.forEach(e => {\n e.id = CoreExplorerLayers.FocalKey;\n });\n focalResults.sort((a, b) => {\n if (a.name < b.name) { return -1; }\n if (a.name > b.name) { return 1; }\n return 0;\n });\n activityResults.forEach(e => {\n e.id = CoreExplorerLayers.ActivityKey;\n });\n activityResults.sort((a, b) => {\n if (a.name < b.name) { return -1; }\n if (a.name > b.name) { return 1; }\n return 0;\n });\n nonCoreResults.forEach(e => {\n e.id = CoreExplorerLayers.NonCore;\n });\n let allResults = focalResults.concat(projectResults);\n allResults = allResults.concat(activityResults);\n allResults = allResults.concat(nonCoreResults);\n const outData = { ...allResults[this.currentIdx] };\n this.currentFeatureType = outData.id;\n return outData;\n }\n\n getFeatureType(withSeparator) {\n switch (this.currentFeatureType) {\n case CoreExplorerLayers.ProjectKey:\n return withSeparator ? 'Project: ' : 'Project';\n case CoreExplorerLayers.FocalKey:\n return withSeparator ? 'Focal Area: ' : 'Focal Area';\n case CoreExplorerLayers.ActivityKey:\n return withSeparator ? 'Activity: ' : 'Activity';\n default:\n return '';\n }\n }\n\n private updateCurrentView() {\n const data = this.getResultFromIdx();\n this.currentView.next(data);\n this.highlight(data);\n }\n\n private getNonCoreArray(unpackResults: boolean = false) {\n Object.keys(this.identifyResults.resultMap).forEach(key => {\n this.identifyResults.resultMap[key].key = key;\n });\n const notAllowed = [CoreExplorerLayers.ActivityKey, CoreExplorerLayers.FocalKey, CoreExplorerLayers.ProjectKey];\n const nonCoreObj = Object.keys(this.identifyResults.resultMap)\n .filter(key => !notAllowed.includes(key))\n .reduce((obj, key) => {\n obj[key] = this.identifyResults.resultMap[key];\n return obj;\n }, {});\n const nonCore: any[] = Object.values(nonCoreObj);\n\n return nonCore;\n }\n\n private flattenNonCore(nonCoreRaw) {\n const nonCoreResults = [];\n nonCoreRaw.forEach(e => {\n const key = e.key;\n e.results.forEach(i => {\n i.key = key;\n nonCoreResults.push(i);\n });\n });\n\n return nonCoreResults;\n }\n\n private nonCoreLayersReady() {\n return this.getNonCoreArray().every(e => e?.status === 'Ready');\n }\n\n private nonCoreLayersNotReady() {\n return this.getNonCoreArray().some(e => e?.status !== 'Ready');\n }\n\n private nonCoreLayersHaveResult() {\n return this.getNonCoreArray().some(e => e?.results?.length > 0);\n }\n\n tempHighlight(geom) {\n this.tempHighlightFeature.next(geom);\n }\n\n}\n","
\n\n
\n
\n

{{ this.getFeatureType(true) }}{{ this.currentName }}

\n
1\">\n\n \n Selection\n \n {{ this.identifyResults.hasResults ? this.currentIdx + 1 : 0 }} of {{ this.getTotalCount() || 0 }}\n \n \n\n
\n
\n
\n\n \n
\n \n \n
\n\n
\n\n
\n","export class CoreExplorerLayers {\r\n public static ProjectKey = 'lyr_exp_project';\r\n public static ActivityKey = 'lyr_exp_activity';\r\n public static FocalKey = 'lyr_exp_focal';\r\n public static PrioLandKey = 'lyr_prio_land';\r\n public static WatershedKey = 'lyr_top_500';\r\n public static NonCore = 'lyr_non_core';\r\n}","import { Component, OnInit, Input, Output, EventEmitter, ViewChildren, QueryList } from '@angular/core';\nimport { MapLayer } from '../../../_shared/models/map/config.model';\nimport { ConfiguredIdentifySources, Result } from '../../../_shared/services/map/identify.service';\n\nimport { IdentifyLayer, LayerState } from '../../layer-identify-result'\n\nimport { MatExpansionPanel } from '@angular/material/expansion';\nimport { ApiService } from 'src/app/_shared/services/api.service';\nimport { Observable } from 'rxjs';\nimport { Router } from '@angular/router';\nimport { CoreExplorerLayers } from '../layer-explorer-container/layer-explorer.model';\nimport { ConfigurationService } from 'src/app/_shared/services/configuration.service';\nimport { MapService } from 'src/app/_shared/services/map/map.service';\n\ndeclare var famMap: any;\n\n@Component({\n selector: 'app-layer-explorer',\n templateUrl: './layer-explorer.component.html',\n styleUrls: ['./layer-explorer.component.scss']\n})\nexport class LayerExplorerComponent implements OnInit {\n\n constructor(\n private api: ApiService,\n private router: Router,\n private identify: ConfiguredIdentifySources,\n private config: ConfigurationService,\n private mapService: MapService,\n ) { }\n\n @Input() result: Observable;\n @Input() mapZoom?: number = 0;\n @Input() hasResults = false;\n @Input() hasCoreData = false;\n\n @Output() highlightFeature: EventEmitter = new EventEmitter();\n @Output() unhighlightFeature: EventEmitter = new EventEmitter();\n @Output() unhighlightCurrent: EventEmitter = new EventEmitter();\n @Output() zoomToFeature: EventEmitter = new EventEmitter();\n @Output() tempHighlightFeature: EventEmitter = new EventEmitter();\n @Output() zoomToExtent: EventEmitter = new EventEmitter();\n @Output() newName: EventEmitter = new EventEmitter();\n\n @ViewChildren('panel') public panel: QueryList;\n @ViewChildren('result') public resultsEles: QueryList;\n\n featureType: string;\n vm: any = {};\n activityVm: any = {};\n actVm: any[] = [];\n geogVm: any = {};\n projVm: any[];\n nonCoreVm: any[];\n fetching = {\n summary: false,\n geog: false,\n activities: false,\n };\n layerKeys = {\n project: CoreExplorerLayers.ProjectKey,\n activity: CoreExplorerLayers.ActivityKey,\n focal: CoreExplorerLayers.FocalKey,\n prioLand: CoreExplorerLayers.PrioLandKey,\n watershed: CoreExplorerLayers.WatershedKey,\n }\n\n ngOnInit(): void {\n this.result.subscribe(data => {\n if (!data.data) {\n this.reset();\n return;\n }\n\n const iid = data?.data.find(e => { return e.name === 'objectid' })?.value || null;\n if (iid) {\n if (data?.id === CoreExplorerLayers.ProjectKey) {\n this.featureType = CoreExplorerLayers.ProjectKey;\n this.processProject(data, iid);\n } else if (data?.id === CoreExplorerLayers.FocalKey) {\n this.featureType = CoreExplorerLayers.FocalKey;\n this.processFocal(data, iid);\n }\n else if (data?.id === CoreExplorerLayers.ActivityKey) {\n this.featureType = CoreExplorerLayers.ActivityKey;\n this.processActivity(data, iid);\n } else {\n this.featureType = null;\n }\n }\n if (data?.id === CoreExplorerLayers.NonCore) {\n this.featureType = CoreExplorerLayers.NonCore;\n this.processNonCore(data);\n }\n });\n }\n\n processNonCore(data: any) {\n let name;\n this.mapService.getMapConfig().subscribe(config => {\n config.forEach(e => {\n const found = e.layers.find(i => i.key === data?.key);\n if (found) {\n name = found.name;\n }\n });\n\n this.nonCoreVm = data?.data;\n this.newName.emit(name);\n });\n }\n\n processProject(data, iid) {\n this.fetching.summary = true;\n this.fetching.activities = true;\n this.fetching.geog = true;\n this.api.post(\"Project\", \"Get\", [parseInt(iid)]).subscribe(results => {\n if (results && results.length) {\n let target = results[0];\n this.fetching.summary = false;\n this.handleLoad(target);\n } else {\n this.handleLoad({});\n }\n });\n\n this.api.post(\"Activity\", \"ReadAll\", { linkToId: parseInt(iid) }).subscribe(results => {\n const filtered = results.filter(e => e?.isSpatial === true);\n this.actVm = filtered;\n this.fetching.activities = false;\n this.actVm.sort((a, b) => {\n if (a.name < b.name) { return -1; }\n if (a.name > b.name) { return 1; }\n return 0;\n });\n });\n\n this.api.post(\"Project\", \"CheckProjectStats\", [parseInt(iid)]).subscribe(results => {\n this.geogVm = results;\n this.fetching.geog = false;\n if (this.geogVm && this.geogVm?.fields?.stats?.data?.landscapes?.stats?.name && Object.keys(this.geogVm?.fields?.stats?.data?.landscapes?.stats?.name).length > 1 && Object.keys(this.geogVm?.fields?.stats?.data?.landscapes?.stats?.name).includes('Non-Priority')) {\n delete this.geogVm?.fields?.stats?.data?.landscapes?.stats?.name['Non-Priority'];\n }\n if (this.geogVm && this.geogVm?.fields?.stats?.data?.focal?.stats?.name && Object.keys(this.geogVm?.fields?.stats?.data?.focal?.stats?.name).length > 1 && Object.keys(this.geogVm?.fields?.stats?.data?.focal?.stats?.name).includes('Non-Focal Area')) {\n delete this.geogVm?.fields?.stats?.data?.focal?.stats?.name['Non-Focal Area'];\n }\n });\n }\n\n processActivity(data, iid) {\n this.fetching.summary = true;\n this.api.post(\"Activity\", \"LongRead\", parseInt(iid)).subscribe(results => {\n if (results && results.result) {\n let target = results.result;\n this.fetching.summary = false;\n this.activityVm = target;\n this.newName.emit(this.activityVm?.name || '');\n } else {\n this.activityVm = {};\n this.newName.emit(this.activityVm?.name || '');\n }\n });\n }\n\n linkToFocal(name: string) {\n this.api.post('Focal', \"GetByName\", { name }).subscribe(results => {\n if (results && results.valid) {\n let target = results.result;\n this.linkTo('app/map', { id: target.id, type: 'f' });\n }\n });\n }\n\n processFocal(data, iid) {\n this.fetching.summary = true;\n this.fetching.activities = true;\n this.fetching.geog = true;\n this.api.post(\"Focal\", \"Get\", [parseInt(iid)]).subscribe(results => {\n if (results?.result) {\n let target = results.result;\n this.fetching.summary = false;\n\n this.handleLoad(target);\n\n const name = this.vm?.name;\n this.api.post('Focal', 'GetProjectsBySpatial', { name }).subscribe(projResults => {\n if (projResults && projResults.valid) {\n this.fetching.activities = false;\n this.fetching.geog = false;\n this.projVm = projResults.result;\n this.projVm.sort((a, b) => {\n if (a.name < b.name) { return -1; }\n if (a.name > b.name) { return 1; }\n return 0;\n });\n }\n });\n } else {\n this.handleLoad({});\n }\n });\n }\n\n handleLoad(target) {\n this.vm = target;\n\n (this.newName.emit(this.vm?.name || ''));\n }\n\n public expand() {\n this.panel.toArray().forEach(element => {\n element.open();\n });\n }\n\n scrollToResult(id: string) {\n this.expand();\n setTimeout(() => {\n this.resultsEles.toArray().forEach(element => {\n console.log(element)\n if (element.nativeElement.id === (id + \"\")) {\n element.nativeElement.scrollIntoView();\n }\n })\n }, 500);\n }\n\n highlight(result: Result) {\n this.highlightFeature.next(result);\n }\n\n unhighlight(result: Result) {\n this.unhighlightFeature.next(result);\n }\n\n async requestFeatureExtent(featureKey, featureId) {\n const extent = await this.identify.requestFeatureExtent(featureKey, featureId);\n const featureGeom = await this.identify.requestFeatureGeom(featureKey, featureId);\n this.zoomExtent(extent);\n this.tempHighlight(featureGeom);\n }\n\n tempHighlight(geom: any) {\n this.tempHighlightFeature.next(geom);\n }\n\n zoomTo(result: Result) {\n this.zoomToFeature.next(result);\n }\n\n zoomExtent(result) {\n console.log('sent');\n this.zoomToExtent.next(result);\n }\n\n linkTo(url, queryParams) {\n this.unhighlightCurrent.emit();\n this.router.navigate([url], { queryParams })\n }\n\n isFetching(): boolean {\n return this.fetching.summary || this.fetching.activities || this.fetching.geog;\n }\n\n reset() {\n this.vm = {};\n this.actVm = [];\n this.geogVm = {};\n this.fetching = {\n summary: false,\n geog: false,\n activities: false,\n };\n }\n\n floor(n) {\n return Math.floor(n);\n }\n\n dateFormat(date: string) {\n if (!date) {\n return date = \"\";\n } else {\n return new Date(date)\n }\n }\n\n private getNonCoreArray(resultMap) {\n const notAllowed = [CoreExplorerLayers.ActivityKey, CoreExplorerLayers.FocalKey, CoreExplorerLayers.ProjectKey];\n const nonCoreObj = Object.keys(resultMap)\n .filter(key => !notAllowed.includes(key))\n .reduce((obj, key) => {\n obj[key] = resultMap[key];\n return obj;\n }, {});\n const nonCore: any[] = Object.values(nonCoreObj);\n\n return nonCore;\n }\n}\n","
\n
\n

\n Searching...\n

\n
\n \n
\n
\n
\n\n
\n Click on a Focal Area, Project or Activity shape on the map to populate the Explorer.\n
\n\n
\n\n \n \n
\n \n \n \n Summary\n \n \n add_circle\n \n \n remove_circle\n \n \n
\n\n \n
\n Project ID: \n {{ this.vm?.id || '' }}\n
\n\n \n
\n Project Type: \n {{ this.vm?.fields?.projectType || '' }}\n
\n\n \n
\n Project Status: \n {{ this.vm?.fields?.projectStatus || '' }}\n
\n\n \n
\n Coordinating Organization: \n {{ this.vm?.fields?.leadOrganization || '' }}\n
\n\n \n
\n

Go to Details

\n
\n\n
\n
\n
\n
\n\n \n \n
\n \n \n \n Project Geography\n \n \n add_circle\n \n \n remove_circle\n \n \n
\n\n \n \n \n Priority Landscape(s)\n \n \n add_circle\n \n \n remove_circle\n \n \n
\n\n
\n
\n {{ item.key !== 'Non-Priority' ? item.key : 'Outside of Priority Landscapes' }}\n zoom_in\n \n
\n
\n
\n Pending Calculation\n
\n\n
\n
\n\n \n \n \n Top 500 Watershed(s)\n \n
\n \n add_circle\n \n \n remove_circle\n \n
\n
\n
\n\n
\n
\n {{item.key}}\n zoom_in\n \n
\n
\n
\n Pending Calculation\n
\n\n
\n
\n\n \n \n \n Focal Area(s)\n \n \n add_circle\n \n \n remove_circle\n \n \n
\n\n
\n
\n {{item.key !== 'Non-Focal Area' ? item.key : 'Outside of Focal Areas'}}\n \n zoom_in\n \n \n \n format_list_bulleted\n \n \n library_books\n \n
\n
\n
\n Pending Calculation\n
\n\n
\n
\n\n
\n
\n
\n
\n\n \n \n
\n \n \n \n Activities\n \n \n add_circle\n \n \n remove_circle\n \n \n
\n\n
0\">\n \n \n
\n\n
\n Project has no mapped Activities\n
\n\n
\n
\n
\n
\n\n
\n\n
\n\n \n \n
\n \n \n \n Summary\n \n \n add_circle\n \n \n remove_circle\n \n \n
\n\n \n
\n Strategies\n
    \n
  • {{ strat || '' }}\n
  • \n
\n
\n\n \n
\n Priority Landscape: \n {{ this.vm?.fields?.priorityLandscape || '' }}\n \n zoom_in\n \n \n
\n\n \n
\n

Go to Details

\n
\n\n
\n
\n
\n
\n\n \n \n
\n \n \n \n Projects in Focal Area\n \n \n add_circle\n \n \n remove_circle\n \n \n
\n\n
\n \n \n
\n\n
\n Project has no mapped Activities\n
\n\n
\n
\n
\n
\n\n
\n\n
\n\n \n \n
\n \n \n \n Summary\n \n \n add_circle\n \n \n remove_circle\n \n \n
\n\n \n
\n Activity Type: \n {{ this.activityVm?.activityType || '' }}\n
\n\n \n
\n Primary Activity Focus: \n {{ this.activityVm?.primaryFocus || '' }}\n
\n\n \n
\n Status: \n {{ this.activityVm?.activityStatus || '' }}\n
\n\n \n
\n Activity Manager: \n {{ this.activityVm?.activityWorkAgent || '' }}\n
\n\n \n
\n Planned Completion Date: \n {{ this.dateFormat(this.activityVm?.plannedCompletionDate) | date: 'shortDate' }}\n
\n\n \n
\n Actual Completion Date: \n {{ this.dateFormat(this.activityVm?.actualCompletionDate) | date: 'shortDate' }}\n
\n\n \n
\n

Go to Details

\n
\n\n
\n
\n
\n
\n\n
\n\n\n
\n\n \n \n
\n \n \n \n Summary\n \n \n add_circle\n \n \n remove_circle\n \n \n
\n\n
\n {{ nc.name }}: \n {{ nc.value || '' }}\n
\n\n
\n
\n
\n
\n\n
","import { Component, OnInit, Input, Output, EventEmitter, ViewChildren, QueryList } from '@angular/core';\nimport { MapLayer } from '../../../_shared/models/map/config.model';\nimport { Result } from '../../../_shared/services/map/identify.service';\n\nimport { IdentifyLayer, LayerState } from '../../layer-identify-result'\n\nimport { MatExpansionPanel } from '@angular/material/expansion';\n\n@Component({\n selector: 'app-layer-identify',\n templateUrl: './layer-identify.component.html',\n styleUrls: ['./layer-identify.component.scss']\n})\nexport class LayerIdentifyComponent implements OnInit {\n\n constructor() { }\n\n @Input() layer: MapLayer;\n @Input() results: Result[];\n @Input() isCreating: boolean;\n @Input() status: string = 'N/A';\n @Input() error?: string = undefined;\n @Input() mapZoom?: number = 0;\n\n @Input() resultSet: IdentifyLayer;\n\n @Output() highlightFeature: EventEmitter = new EventEmitter();\n @Output() unhighlightFeature: EventEmitter = new EventEmitter();\n @Output() zoomToFeature: EventEmitter = new EventEmitter();\n @Output() importFeature: EventEmitter = new EventEmitter();\n\n @ViewChildren('panel') public panel: QueryList;\n @ViewChildren('result') public resultsEles: QueryList;\n\n ngOnInit(): void {\n }\n\n public expand() {\n this.panel.toArray().forEach(element => {\n element.open();\n });\n }\n\n scrollToResult(id: string) {\n this.expand();\n setTimeout(() => {\n this.resultsEles.toArray().forEach(element => {\n console.log(element)\n if (element.nativeElement.id === (id + \"\"))\n {\n element.nativeElement.scrollIntoView();\n } \n })\n }, 500);\n }\n\n\n highlight(result: Result) {//asd\n this.highlightFeature.next(result);\n }\n\n unhighlight(result: Result) {\n this.unhighlightFeature.next(result);\n }\n\n zoomTo(result: Result) {\n this.zoomToFeature.next(result);\n }\n\n import(result: Result) {\n this.importFeature.next(result);\n }\n\n isSearching() : boolean {\n return this.status == 'Searching';\n }\n\n isIdle() : boolean {\n return this.status == 'Idle' && !this.minZoomCheck();\n }\n\n minZoomCheck() : boolean {\n return this.layer && this.layer.identify && this.layer.identify.minZoom && this.mapZoom < this.layer.identify.minZoom\n }\n\n hasResults() : boolean {\n return (this.results && this.results.length > 0)\n }\n\n floor(n) {\n return Math.floor(n);\n }\n}\n","\n
\n
\n

{{ layer.name }}

\n

\n This layer has a zoom limit in place. Please zoom in further to identify this layer. The minimum zoom is {{layer.identify.minZoom}}; the current zoom is {{floor(mapZoom)}}.\n

\n
\n
\n\n\n
\n
\n

{{ layer.name }}

\n

\n Not identified yet.\n

\n
\n
\n\n\n
\n
\n

{{ layer.name }}

\n

\n Searching...\n

\n
\n \n
\n
\n
\n\n\n
\n
\n

{{ layer.name }}

\n

\n No results.\n

\n
\n
\n\n\n
\n \n \n \n ({{results.length}}) - {{ layer.name }}\n \n \n\n \n \n
\n
\n

\n {{error}}\n

\n
\n
\n
\n
\n
\n {{field.name}}:\n
{{field.value}}
\n
\n
\n
\n

\n
\n \n \n
\n\n
\n
\n \n
\n
\n
\n
","import { Component, OnInit, Input, OnDestroy } from '@angular/core';\nimport { MapLayer } from '../../../_shared/models/map/config.model';\n\nimport { Subscription } from 'rxjs';\nimport { LegendSimpleSymbol } from 'src/app/_shared/models/map/legend.model';\n\n@Component({\n selector: 'app-layer-legend',\n templateUrl: './layer-legend.component.html',\n styleUrls: ['./layer-legend.component.scss']\n})\nexport class LayerLegendComponent implements OnInit, OnDestroy {\n\n @Input() layer: MapLayer;\n\n legendDataRaw: any[] = [];\n subs: Subscription[] = [];\n symbolColor: string;\n\n constructor() { }\n\n ngOnInit(): void {\n if (this.layer.legend && this.layer.legend.length > 0) {\n const sym = this.layer.legend[0].display as LegendSimpleSymbol;\n this.symbolColor = `rgba(${sym?.symbol?.color[0]}, ${sym?.symbol?.color[1]}, ${sym?.symbol?.color[2]}, ${sym?.symbol?.color[3] / 255})`;\n }\n }\n ngOnDestroy(): void {\n this.subs.forEach(sub => { sub.unsubscribe() });\n }\n\n}\n","
\n \n \n \n {{ layer.name }}\n \n \n add_circle\n \n \n remove_circle\n \n \n
\n \"Legend\n
\n
\n
\n
\n
\n
\n {{legendItem.label}}\n
\n
\n
\n","import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core';\nimport { MapConfigConstants } from '../../../_shared/models/map/config.model';\nimport { MapLayer } from '../../../_shared/models/map/config.model';\n\nimport { MatCheckboxChange } from '@angular/material/checkbox'\n\n@Component({\n selector: 'app-layer-list-item',\n templateUrl: './layer-list-item.component.html',\n styleUrls: ['./layer-list-item.component.scss']\n})\nexport class LayerListItemComponent implements OnInit {\n\n @Input() selected: boolean = true;\n\n @Input() multi: boolean = true;\n\n @Input() layer: MapLayer;\n\n @Input() selectionType: string = MapConfigConstants.polyselective;\n\n @Input() mode : string;\n\n @Output() selectionChange: EventEmitter = new EventEmitter();\n\n constructor() { }\n\n ngOnInit(): void {\n }\n\n onChange(event : MatCheckboxChange)\n {\n this.selectionChange.next(event.checked);\n }\n\n}\n","
\n
\n \n {{ layer.name }}\n \n \n {{ layer.name }}\n \n
\n \"Identify\n \"Identify\n \"Select\n
\n
\n
","/* tslint:disable */\n\nimport { Component, OnInit, Output, EventEmitter, Input, ViewChild } from '@angular/core';\nimport { MapCategory, MapLayer } from '../../../_shared/models/map/config.model';\nimport { Result } from '../../../_shared/services/map/identify.service';\n\n@Component({\n selector: 'app-sidebar-content',\n templateUrl: './sidebar-content.component.html',\n styleUrls: ['./sidebar-content.component.scss']\n})\nexport class SidebarContentComponent implements OnInit {\n @Output() onDrawerClose: EventEmitter = new EventEmitter();\n\n @Output() onToolChange: EventEmitter<'layers' | 'legend' | 'identify'> = new EventEmitter();\n\n @Output() zoomToExtent: EventEmitter = new EventEmitter();\n\n @Output() tempHighlightFeature: EventEmitter = new EventEmitter();\n\n @Input() categories: MapCategory[];\n\n\n @Output() selectLayer: EventEmitter = new EventEmitter();\n @Output() deselectLayer: EventEmitter = new EventEmitter();\n\n\n @Output() selectionChange: EventEmitter = new EventEmitter();\n\n\n @Output() opacityChange: EventEmitter = new EventEmitter();\n\n @Input() identifyResults: any;\n @Input() mapZoom: any;\n\n\n @Output() highlightFeature: EventEmitter = new EventEmitter();\n @Output() unhighlightFeature: EventEmitter = new EventEmitter();\n @Output() zoomToFeature: EventEmitter = new EventEmitter();\n @Output() importFeature: EventEmitter = new EventEmitter();\n @Output() returnToIdentifyExtent: EventEmitter = new EventEmitter();\n @Output() identifyExtentClick: EventEmitter = new EventEmitter();\n\n selected: string = 'layers';\n\n\n @ViewChild('catcont') public catcont: any;\n\n constructor() { }\n\n ngOnInit(): void {\n }\n\n public onToolSelect(e) {\n console.log(e)\n this.selected = e.value;\n\n this.onToolChange.emit(e);\n }\n\n public openIdentify() {\n this.selected = 'identify';\n }\n\n public scrollToResult(layer: string, id: string) {\n this.catcont.scrollToResult(layer, id);\n }\n\n layerSelected(layer: MapLayer) {\n this.selectLayer.next(layer);\n }\n\n layerDeselected(layer: MapLayer) {\n this.deselectLayer.next(layer);\n }\n\n opacityChanged(evt: any) {\n this.opacityChange.next(evt);\n }\n\n zoomExtent(result) {\n console.log('layer c');\n this.zoomToExtent.next(result);\n }\n\n tempHighlight(geom) {\n this.tempHighlightFeature.next(geom);\n }\n\n}\n","
\n
\n Explorer Tools\n
\n keyboard_arrow_left \n
\n
\n\n
\n \n\n Explorer\n \n\n Layers\n\n Legend\n \n \n
\n
\n
\n \n
\n
\n\n
\n","import { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatDatepickerModule } from '@angular/material/datepicker';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { MatSidenavModule } from '@angular/material/sidenav';\nimport { MatToolbarModule } from '@angular/material/toolbar';\nimport { MatListModule } from '@angular/material/list';\nimport { MatTabsModule } from '@angular/material/tabs';\nimport { MatCardModule } from '@angular/material/card';\nimport { MatSelectModule } from '@angular/material/select';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { MatDialogModule } from '@angular/material/dialog';\nimport { MatTableModule } from '@angular/material/table';\nimport { MatSortModule } from '@angular/material/sort';\nimport { MatPaginatorModule } from '@angular/material/paginator';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { MatDividerModule } from '@angular/material/divider';\nimport { MatSnackBarModule } from '@angular/material/snack-bar';\nimport { MatAutocompleteModule } from '@angular/material/autocomplete';\nimport { MatRadioModule } from '@angular/material/radio';\nimport { MatGridListModule } from '@angular/material/grid-list';\nimport { MatMenuModule } from '@angular/material/menu'\nimport { MatButtonToggleModule } from '@angular/material/button-toggle';\nimport { MatExpansionModule } from '@angular/material/expansion';\nimport { MatSliderModule } from '@angular/material/slider';\n\nimport { NgModule } from '@angular/core';\nimport { MatNativeDateModule } from '@angular/material/core';\n\n\n@NgModule({\n imports: [\n MatButtonModule,\n MatIconModule,\n MatFormFieldModule,\n MatInputModule,\n MatDatepickerModule,\n MatCheckboxModule,\n MatSidenavModule,\n MatToolbarModule,\n MatListModule,\n MatTabsModule,\n MatCardModule,\n MatSelectModule,\n MatProgressSpinnerModule,\n MatDialogModule,\n MatTableModule,\n MatSortModule,\n MatPaginatorModule,\n MatTooltipModule,\n MatDividerModule,\n MatSnackBarModule,\n MatAutocompleteModule,\n MatRadioModule,\n MatGridListModule,\n MatMenuModule,\n MatButtonToggleModule,\n MatExpansionModule,\n MatSliderModule,\n MatNativeDateModule\n ],\n exports: [\n MatButtonModule,\n MatIconModule,\n MatFormFieldModule,\n MatInputModule,\n MatDatepickerModule,\n MatCheckboxModule,\n MatSidenavModule,\n MatToolbarModule,\n MatListModule,\n MatTabsModule,\n MatCardModule,\n MatSelectModule,\n MatProgressSpinnerModule,\n MatDialogModule,\n MatTableModule,\n MatSortModule,\n MatPaginatorModule,\n MatTooltipModule,\n MatDividerModule,\n MatSnackBarModule,\n MatAutocompleteModule,\n MatRadioModule,\n MatGridListModule,\n MatMenuModule,\n MatButtonToggleModule,\n MatExpansionModule,\n MatSliderModule\n ]\n})\nexport class MaterialModule { }\n","import { Component, OnInit } from '@angular/core';\n\n@Component({\n selector: 'app-mockauth',\n templateUrl: './mockauth.component.html',\n styleUrls: ['./mockauth.component.scss']\n})\nexport class MockauthComponent implements OnInit {\n\n constructor() { }\n\n makeFakeIdToken(id) {\n return {\n \"sub\": id,\n \"email\": \"fake@example\",\n \"custom:firstName\": \"Fakey\",\n \"custom:lastName\": \"McFakerson\"\n }\n\n }\n makeFakeToken(id) {\n return {\n \"sub\": id,\n \"cognito:groups\": [\n ],\n \"iss\": \"aacd\",\n \"version\": 2,\n \"client_id\": \"aacd-mocks\",\n \"event_id\": \"mocky-mock\",\n \"token_use\": \"access\",\n \"scope\": \"openid profile\",\n \"auth_time\": new Date().getTime() / 1000,\n \"exp\": new Date().getTime() / 1000 + 3000,\n \"iat\": new Date().getTime() / 1000,\n \"jti\": \"0000\",\n \"username\": \"0000\"\n }\n }\n\n\n ngOnInit(): void {\n }\n\n fakeNone(): void {\n //This is a hack to tie into the auth system\n //We are faking a response from the authorization system and providing a faked jwt\n var opener = this.getOpener();\n opener.postMessage(\n {\n type: \"auth\",\n status: \"complete\",\n token: this.encode(this.makeFakeToken(\"0000\")),\n refreshToken: \"refresh\",\n idToken: this.encode(this.makeFakeIdToken(\"0000\"))\n }, \"http://localhost:4200/\");\n }\n\n\n fakeGeneral() {\n var opener = this.getOpener();\n opener.postMessage(\n {\n type: \"auth\",\n status: \"complete\",\n token: this.encode(this.makeFakeToken(\"1111\")),\n refreshToken: \"refresh\",\n idToken: this.encode(this.makeFakeIdToken(\"1111\"))\n }, \"http://localhost:4200/\");\n }\n fakeManager() {\n var opener = this.getOpener();\n opener.postMessage(\n {\n type: \"auth\",\n status: \"complete\",\n token: this.encode(this.makeFakeToken(\"2222\")),\n refreshToken: \"refresh\",\n idToken: this.encode(this.makeFakeIdToken(\"2222\"))\n }, \"http://localhost:4200/\");\n }\n\n signOut() {\n if (window.opener)\n window.close();\n }\n\n getOpener() {\n if (window.opener)\n return opener;\n\n return window;\n }\n\n fakeAdmin() {\n var opener = this.getOpener();\n opener.postMessage(\n {\n type: \"auth\",\n status: \"complete\",\n token: this.encode(this.makeFakeToken(\"3333\")),\n refreshToken: \"refresh\",\n idToken: this.encode(this.makeFakeIdToken(\"3333\"))\n }, \"http://localhost:4200/\");\n }\n\n\n encode(value) {\n\n let str = JSON.stringify(value);\n let b64 = \"fake.\" + btoa(str);\n\n let base64Url = b64.split('.')[1];\n let base64 = base64Url.replace(/-/g, '+').replace(/_/g, '/');\n let atobval = atob(base64);\n let atobmapped = atobval.split('').map(function (c) {\n return '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2);\n }).join('')\n let jsonPayload = decodeURIComponent(atobmapped);\n let rv = JSON.parse(jsonPayload);\n\n return b64\n }\n\n}\n","

Select a role to login to below

\n
\n
\n
\n


\n","/* tslint:disable */\n\n// Copied directly from AACD to be used as a template if desired - if we want to use\n// mocks for NMSS will need to update.\nimport { Injector, Injectable } from '@angular/core';\nimport { Observable, ReplaySubject, of } from 'rxjs';\nimport { HttpClient } from '@angular/common/http';\n\nimport { Configuration, ConfigurationService } from './_shared/services/configuration.service'\n\nimport { HttpInterceptor, HttpHandler, HttpEvent, HttpResponse } from \"@angular/common/http\"\nimport { HttpRequest } from \"@angular/common/http\";\n\n//Configuration service will provide the configuration as a 'singleton' across the app\n@Injectable({\n providedIn: 'root'\n})\nexport class MockConfigurationService extends ConfigurationService {\n client: ReplaySubject = new ReplaySubject();\n\n constructor(private mhttp: HttpClient) {\n super(mhttp);\n console.log(\"Config Mock Service\");\n let cfg = new Configuration();\n cfg.apiRoot = \"http://mock.example/\"\n\n this.client.next(cfg);\n }\n\n getConfig(): Observable {\n return this.client;\n }\n\n}\n\nlet overrides =\n{\n\n}\n\nlet authConfig =\n{\n \"host\": \"localhost:4200\",\n \"clientId\": \"123456\",\n \"useHttps\": false,\n \"clientSecret\": \"supersecret\",\n \"tokenEndpoint\": \"#/mockauth?action=token\",\n \"logoutEndpoint\": \"#/mockauth?action=logout\",\n \"userInfoEndpoint\": \"#/mockauth?action=userInfo\",\n \"unauthorizedRedirect\": \"/\",\n \"authorizationEndpoint\": \"#/mockauth?action=authorize\",\n \"inline\": false\n}\n\nlet fakeLogin =\n{\n access_token: \"asd\",\n refresh_token: \"asd\",\n id_token: \"asd\"\n}\n\nlet generalUserACLs = [\"Map:Access\", \"Home:RedirectToMapAfterLogin\", \"Map:ViewLegend\", \"Map:UseSearch\"]\nlet managerACLs = [\"Map:Access\", \"Home:RedirectToMapAfterLogin\", \"Map:ViewLegend\", \"Manage:Access\"];\nlet adminACLs = [\"Map:DrawAssessmentArea\", \"Map:UseSearch\", \"Manage:Access\", \"Map:Identify\", \"Dashboard:Access\", \"Assessment:Reports:Manage\", \"Assessment:Reports:Delete\", \"Admin:Access\", \"Map:Access\", \"Map:DrawAssessmentArea\", \"Manage:Access\", \"Map:ClickToImport\", \"Assessment:Manage\", \"Assessment:ManageAny\", \"AOI:EditName\", \"AOI:Delete\", \"AOI:EditBoundary\", \"AOI:ToggleLayers\", \"AOI:AssessmentView\", \"AOI:AssessmentAdd\", \"AOI:AssessmentDelete\", \"Dashboard:Access\", \"Home:RedirectToMapAfterLogin\", \"Map:Access\", \"Map:DrawAssessmentArea\", \"Manage:Access\", \"Map:ClickToImport\", \"Assessment:Manage\", \"AOI:EditName\", \"AOI:Delete\", \"AOI:EditBoundary\", \"AOI:ToggleLayers\", \"AOI:AssessmentView\", \"AOI:AssessmentAdd\", \"AOI:AssessmentDelete\", \"Dashboard:Access\", \"Map:ViewLegend\", \"Map:UseSearch\", \"Map:Identify\", \"Map:IdentifyFromMap\", \"Map:ZoomFromIdentify\", \"Assessment:Reports:Manage\"];\n\n@Injectable()\nexport class MockBackendInterceptor implements HttpInterceptor {\n users =\n [\n { id: \"124\", last: \"Builder\", first: \"Alma\", email: \"alma@thebuilder.com\", roles: [] },\n { id: \"414\", last: \"Builder\", first: \"Dwayne\", email: \"dwayne@thebuilder.com\", roles: [\"Assessment Manager\"] },\n { id: \"624\", last: \"Builder\", first: \"Bob\", email: \"bob@thebuilder.com\", roles: [\"General User\"] },\n { id: \"965\", last: \"Builder\", first: \"Jane\", email: \"jane@thebuilder.com\", roles: [\"Administrator\"] },\n { id: \"461\", last: \"Builder\", first: \"Bryant\", email: \"jane@thebuilder.com\", roles: [\"Administrator\", \"Developer\"] }\n ]\n\n constructor(private injector: Injector) { }\n\n fakeACLs(request: HttpRequest): Observable> {\n\n //Grab the token fromt he header and fake the groups\n\n let tokenVal = request.headers.get(\"Authorization\");\n if (tokenVal)\n tokenVal = tokenVal.replace(\"Bearer \", \"\");\n\n let token = this.parseJwt(tokenVal);\n\n let acls: string[] = [];\n\n switch (token.sub) {\n case \"0000\": acls = []; break; //No Group\n case \"1111\": acls = generalUserACLs; break; //General User\n case \"2222\": acls = managerACLs; break; //Manager\n case \"3333\": acls = adminACLs; break; //Sys Admin\n }\n\n return of(new HttpResponse({ status: 200, body: acls }));\n }\n\n fakeToken(request: HttpRequest): Observable> {\n\n //Grab the token fromt he header and fake the groups\n\n let tokenVal = request.headers.get(\"Authorization\");\n if (tokenVal)\n tokenVal = tokenVal.replace(\"Bearer \", \"\");\n\n let token = this.parseJwt(tokenVal);\n\n token.exp = new Date().getTime() / 1000 + 300;\n token.iat = new Date().getTime() / 1000;\n\n token = this.encode_token(token);\n\n return of(new HttpResponse({ status: 200, body: { access_token: token } }));\n }\n\n\n\n encode_token(value: any) {\n\n let str = JSON.stringify(value);\n let b64 = \"fake.\" + btoa(str);\n\n let base64Url = b64.split('.')[1];\n let base64 = base64Url.replace(/-/g, '+').replace(/_/g, '/');\n let atobval = atob(base64);\n let atobmapped = atobval.split('').map(function (c) {\n return '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2);\n }).join('')\n let jsonPayload = decodeURIComponent(atobmapped);\n let rv = JSON.parse(jsonPayload);\n\n return b64\n }\n\n fakeUsers(request: HttpRequest): Observable> {\n\n //Grab the token fromt he header and fake the groups\n\n let tokenVal = request.headers.get(\"Authorization\");\n if (tokenVal)\n tokenVal = tokenVal.replace(\"Bearer \", \"\");\n\n let token = this.parseJwt(tokenVal);\n\n\n switch (token.sub) {\n case \"3333\": return of(new HttpResponse({ status: 200, body: this.users })); break; //Sys Admin\n }\n\n return of(new HttpResponse({ status: 401 }));\n }\n\n manageRoles(request: HttpRequest) {\n\n let tokenVal = request.headers.get(\"Authorization\");\n if (tokenVal)\n tokenVal = tokenVal.replace(\"Bearer \", \"\");\n\n let token = this.parseJwt(tokenVal);\n\n\n switch (token.sub) {\n case \"3333\":\n {\n //return of(new HttpResponse({ status: 200, body: this.users })); break; //Sys Admin\n let manageUser = undefined;\n for (let usr of this.users) {\n if (usr.id == request.body.id) {\n manageUser = usr;\n break;\n }\n }\n\n if (!manageUser)\n return of(new HttpResponse({ status: 401 }));\n else {\n let oldRoles = manageUser.roles;\n\n manageUser.roles = [];\n\n for (let role of oldRoles) {\n if (!request.body.unassign.includes(role)) {\n manageUser.roles.push(role)\n }\n }\n\n for (let role of request.body.assign)\n manageUser.roles.push(role);\n\n return of(new HttpResponse({ status: 200, body: manageUser }));\n }\n }\n }\n\n return of(new HttpResponse({ status: 401 }));\n }\n\n saveAssessment(request: HttpRequest) {\n\n let tokenVal = request.headers.get(\"Authorization\");\n if (tokenVal)\n tokenVal = tokenVal.replace(\"Bearer \", \"\");\n\n let token = this.parseJwt(tokenVal);\n\n\n switch (token.sub) {\n case \"1111\":\n case \"2222\":\n case \"3333\":\n {\n let newObj = request.body;\n\n if (newObj.fields.Geometry.acres > 3000)\n return of(new HttpResponse({ status: 200, body: { valid: false, result: undefined, messages: [\"The provided area is too large.\"] } }));\n\n\n newObj.id = Math.floor(Math.random() * 10000)\n return of(new HttpResponse({ status: 200, body: { valid: true, result: newObj } }));\n\n }; break;\n default: //User isnt authorized to perform that action\n return of(new HttpResponse({ status: 401 }));\n }\n\n return of(new HttpResponse({ status: 401 }));\n }\n\n\n allAssessment =\n {\n 7: { id: 7, name: \"Test Area\", created: 1588258209, fields: {} },\n 8: { id: 8, name: \"Testing\", created: 1588258249, fields: { type: \"Copy Pasta\" } },\n 9: { id: 9, name: \"Testing2\", created: 1588259209, createdBy: \"1\", fields: { type: \"Copy Pasta\" } },\n 1: { id: 1, name: \"Fun Times\", created: 1588259409, fields: { type: \"Copy Pasta\" } },\n 3: { id: 3, name: \"Lemmings\", created: 1588262209, createdBy: \"1\", fields: { type: \"Copy Pasta\" } },\n 2: { id: 2, name: \"Testing\", created: 1588288209, fields: { type: \"Copy Pasta\" } },\n 4: { id: 4, name: \"Testing\", created: 1588358209, fields: { type: \"Copy Pasta\" } },\n 5: { id: 5, name: \"Testing\", created: 1588388209, createdBy: \"1\", fields: { type: \"Copy Pasta\" } },\n 6: { id: 6, name: \"Testing\", created: 1588488209, fields: { type: \"Copy Pasta\" } },\n 0: { id: 0, name: \"Testing\", created: 1588958209, fields: { type: \"Copy Pasta\" } }\n };\n\n allAssessmentShort =\n [\n { id: 7 },\n { id: 8 },\n { id: 9, createdBy: \"1\" },\n { id: 1 },\n { id: 3, createdBy: \"1\" },\n { id: 2 },\n { id: 4 },\n { id: 5, createdBy: \"1\" },\n { id: 6, },\n { id: 0, }\n ];\n\n getCards(): any {\n return of(new HttpResponse({\n body: [\n [\n {\n \"bg\": \"https://timmons-branding.s3.amazonaws.com/Shared+Images/Curvy+Line+Graph.svg\",\n \"id\": 2,\n \"link\": \"https://timmons-group.maps.arcgis.com/apps/MapSeries/index.html?appid=aaa82be74ce74b0b9c0bc5b7e88d1578\",\n \"stats\": [\n {\n \"label\": \"Acres of Vegetation Departure\",\n \"value\": \"43M\"\n }\n ],\n \"title\": \"ASSESSMENTS\"\n }\n ],\n [\n {\n \"bg\": \"https://timmons-branding.s3.amazonaws.com/Shared+Images/Flat+Bar+Graph.svg\",\n \"id\": 3,\n \"link\": \"https://timmons-group.maps.arcgis.com/apps/opsdashboard/index.html#/50522442f5c54a9a930375deb76322a9\",\n \"stats\": [\n\n ],\n \"title\": \"RESOURCE CONCERNS\",\n \"description\": \"The Resource Concern dashboard is based on data entered into this app.\"\n }\n ]\n ]\n }))\n }\n\n\n getAssessmentsShort(request: HttpRequest) {\n\n return of(new HttpResponse({ status: 200, body: { valid: true, result: this.allAssessmentShort } }));\n }\n\n getAssessments(request: HttpRequest) {\n return of(new HttpResponse({ status: 200, body: { valid: true, result: request.body.map(id => { return this.allAssessment[id] }) } }));\n }\n\n getSearchCandidates(inString: string) {\n const mockCandidates = [\n { name: 'HUC 12', location: { x: -111.1, y: 34.1 }, extent: { xmax: 1.0, xmin: -1.0, ymax: 2.0, ymin: -2.0 }, source: 'HUC' },\n { name: 'Office', location: { x: -111.1, y: 34.1 }, extent: { xmax: 1.0, xmin: -1.0, ymax: 2.0, ymin: -2.0 }, source: 'Field Office' },\n ];\n const fitleredCandidates = mockCandidates.filter(item => {\n return item.name.toLowerCase().includes(inString.toLowerCase());\n })\n return of(new HttpResponse({ status: 200, body: fitleredCandidates }));\n }\n\n parseJwt(token: string | null): any {\n try {\n let base64Url = token.split('.')[1];\n let base64 = base64Url.replace(/-/g, '+').replace(/_/g, '/');\n let jsonPayload = decodeURIComponent(atob(base64).split('').map(function (c) {\n return '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2);\n }).join(''));\n\n return JSON.parse(jsonPayload);\n }\n catch {\n return {};\n }\n }\n\n getBuildInfo(): any {\n return of(new HttpResponse(\n {\n body: {\n \"version\": \"v0.1.7\",\n \"buildNumber\": \"-\",\n \"buildDate\": \"-\"\n }\n }));\n }\n\n\n intercept(request: HttpRequest, next: HttpHandler): Observable> {\n console.log(\"Intercepting call to \" + request.url + \" via \" + request.method);\n switch (request.method) {\n case \"GET\":\n switch (request.url) {\n case \"/assets/overrides.json\":\n return of(new HttpResponse({ status: 404 }));\n break;\n case \"http://localhost:4200/api/app/GetAuthConfig\":\n return of(new HttpResponse({ status: 200, body: authConfig }));\n break;\n case \"http://localhost:4200/api/app/GetAppConfig\":\n return of(new HttpResponse({ status: 200, body: {} }));\n break;\n case \"http://localhost:4200/api/app/GetMapConfig\":\n //Inject our mocked value\n return of(new HttpResponse({ status: 200, body: (require(\"../assets/map.themes.database.json\")) }));\n break;\n case \"http://localhost:4200/api/app/GetSlimMapConfig\":\n return of(new HttpResponse({ status: 200, body: (require(\"../assets/map.themes.slim.json\")) }));\n break;\n case \"http://localhost:4200/api/app/GetMapServices\":\n //Inject our mocked value\n return of(new HttpResponse({ status: 200, body: (require(\"../assets/map.services.api.json\")) }));\n break;\n case \"http://localhost:4200/api/User/GetACLs\":\n return this.fakeACLs(request);\n case \"http://localhost:4200/api/Users/GetAll\":\n return this.fakeUsers(request);\n case \"http://localhost:4200/api/Assessment/GetAllShort\":\n return this.getAssessmentsShort(request);\n case \"http://localhost:4200/api/dashboard/GetCards\":\n return this.getCards();\n case \"/buildInfo.json\":\n return this.getBuildInfo();\n\n }\n break;\n case \"POST\":\n switch (request.url) {\n case \"http://localhost:4200/#/mockauth?action=token\":\n return this.fakeToken(request);\n break;\n case \"http://localhost:4200/api/Users/ManageRoles\":\n return this.manageRoles(request);\n break;\n case \"http://localhost:4200/api/Assessment/Create\":\n return this.saveAssessment(request);\n break;\n case \"http://localhost:4200/api/LayerSearch/GetCandidates\":\n return this.getSearchCandidates(request.body.searchString);\n break;\n case \"http://localhost:4200/api/Assessment/Get\":\n return this.getAssessments(request);\n }\n\n break;\n }\n if (request.method === \"GET\" && request.url === \"http://localhost:4200/users\") {\n return of(new HttpResponse({ status: 200, body: { \"test\": \"todo\" } }));\n }\n\n console.log(\"Call fell through\");\n return next.handle(request);\n }\n\n}\n\n@Injectable()\nexport class PassthroughInterceptor implements HttpInterceptor {\n constructor(private injector: Injector) { }\n\n intercept(request: HttpRequest, next: HttpHandler): Observable> {\n return next.handle(request)\n }\n\n}\n","import { Component, OnInit } from '@angular/core';\n\n@Component({\n selector: 'app-not-found',\n templateUrl: './not-found.component.html',\n styleUrls: ['./not-found.component.scss']\n})\nexport class NotFoundComponent implements OnInit {\n\n constructor() { }\n\n ngOnInit(): void {\n }\n\n}\n","

That path was not found

\nHome\n","import { AfterViewInit, Component, Inject, OnInit, ViewChild } from '@angular/core';\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\nimport { element } from 'protractor';\nimport { DynamicFormComponent } from '../_shared/components/forms/dynamic-form/dynamic-form.component';\nimport { CoreEntity } from '../_shared/models/core-entity.model';\nimport { Fields } from '../_shared/models/dynamic-forms/fields.model';\nimport { AuthorizationService } from '../_shared/services/authorization.service';\nimport { FieldService } from '../_shared/services/forms/field.service';\n\n@Component({\n selector: 'app-note-create-dialog',\n templateUrl: './note-create-dialog.component.html',\n styleUrls: ['./note-create-dialog.component.scss']\n})\nexport class NoteCreateDialogComponent implements OnInit, AfterViewInit{\n\n fields: any[];\n fieldsConfig: any;\n isOpportunity: boolean;\n edit: boolean\n displayName: string;\n\n constructor(\n private dialogRef: MatDialogRef,\n private fieldService: FieldService,\n private auth: AuthorizationService,\n @Inject(MAT_DIALOG_DATA) public data: any\n ) { }\n\n @ViewChild('note') noteInfo: DynamicFormComponent\n\n ngOnInit(): void {\n this.displayName = this.auth.login.getFullName();\n\n if(!this.data.hasOwnProperty('opportunity') && !this.data.hasOwnProperty('impediment')){\n this.isOpportunity = this.data.isOpportunity;\n this.isOpportunity === true ?\n this.fields = this.fieldService.getFields(CoreEntity.Opportunity) :\n this.fields = this.fieldService.getFields(CoreEntity.Impediment);\n } else if(this.data.hasOwnProperty('opportunity')){\n //do opportunity edit things\n this.edit = true;\n this.isOpportunity = true\n let opportunityToEdit = this.data.opportunity\n console.log(opportunityToEdit);\n\n const opportunityFields: any = {};\n opportunityFields[Fields.ProjectOpportunity] = opportunityToEdit.note;\n this.fields = this.fieldService.getEditableFieldsGeneric(CoreEntity.Opportunity, opportunityFields);\n\n\n } else {\n this.edit = true;\n this.isOpportunity = false\n //do impediment edit things\n let impedimentToEdit = this.data.impediment\n console.log(impedimentToEdit);\n\n const impedimentFields: any = {};\n impedimentFields[Fields.ProjectImpediment] = impedimentToEdit.note;\n this.fields = this.fieldService.getEditableFieldsGeneric(CoreEntity.Impediment, impedimentFields);\n }\n }\n\n ngAfterViewInit(): void {\n this.noteInfo.refreshForm(this.fields);\n }\n\n isValid(): boolean {\n if (this.noteInfo && this.noteInfo.isValid) {\n return true;\n } else {\n return false;\n }\n }\n\n\n onSubmit(): void {\n let noteData = this.noteInfo.getPayload();\n\n let noteObject = { id: 0, isOpportunity: this.isOpportunity, displayName: this.displayName, note: \"default\"}\n if(noteData.hasOwnProperty('PROJECT_OPPORTUNITY')){\n noteObject =\n {\n \"id\": 0,\n \"isOpportunity\": this.isOpportunity,\n \"displayName\": this.displayName,\n \"note\": noteData.PROJECT_OPPORTUNITY\n }\n if(this.edit){\n noteObject.id = this.data.opportunity.id\n }\n } else {\n noteObject =\n {\n \"id\": 0,\n \"isOpportunity\": this.isOpportunity,\n \"displayName\": this.displayName,\n \"note\": noteData.PROJECT_IMPEDIMENT\n }\n if(this.edit){\n noteObject.id = this.data.impediment.id\n }\n }\n\n this.dialogRef.close(noteObject);\n }\n\n onNoClick(): void {\n this.dialogRef.close();\n }\n\n}\n","\n

\n \n \n
\n
\n Add Opportunity\n
\n
\n Add Impediment\n
\n
\n
\n
\n Edit Opportunity\n
\n
\n Edit Impediment\n
\n
\n
\n
\n

\n\n\n
\n
\n
\n \n
\n \n
\n
\n \n
\n
\n \n
\n
\n\n
\n
\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { MatDialog } from '@angular/material/dialog';\nimport { Router } from '@angular/router';\nimport { LoadingDialogComponent } from '../loading-dialog/loading-dialog.component';\nimport { ErrorDialogComponent } from '../map/error-dialog/error-dialog.component';\nimport { NoteCreateDialogComponent } from '../note-create-dialog/note-create-dialog.component';\nimport { PamObject } from '../_shared/models/pam-object.model';\nimport { ApiService } from '../_shared/services/api.service';\nimport { AuthorizationService } from '../_shared/services/authorization.service';\n\n@Component({\n selector: 'app-opportunity',\n templateUrl: './opportunity.component.html',\n styleUrls: ['./opportunity.component.scss']\n})\nexport class OpportunityComponent implements OnInit {\n\n @Input() opportunity: any;\n\n @Input() projectLeadOrg: any;\n\n @Input() projectId: any;\n\n @Output() opportunityToRemove: EventEmitter = new EventEmitter();\n\n displayName: string;\n\n\n constructor(\n private router: Router,\n private dialog: MatDialog,\n private api: ApiService,\n private auth: AuthorizationService\n ){ }\n\n ngOnInit(): void {\n this.displayName = this.auth.login.getFullName();\n console.log(this.opportunity);\n }\n\n removeOpportunity(_: any){\n this.opportunityToRemove.emit(this.opportunity);\n }\n\n editOpportunity() {\n let noteDialog = this.dialog.open(NoteCreateDialogComponent, {\n width: '35rem',\n disableClose: false,\n data: { \"opportunity\": this.opportunity, \"editMode\": true, \"isOpportunity\": true }\n });\n\n\n noteDialog.afterClosed().subscribe(data => {\n if (data) {\n let formattedObj = this.createOpportunityPayload(data);\n this.updateOpportunity(formattedObj)\n }\n });\n }\n\n createOpportunityPayload(data: any) {\n let formattedObj: PamObject = { id: data.id, name: \"default\", fields: {} };\n formattedObj.name = data.isOpportunity === true ? \"Opportunity\" : \"Impediment\";\n formattedObj.fields = {};\n formattedObj.fields.note = data.note;\n formattedObj.fields.isOpportunity = data.isOpportunity;\n formattedObj.fields.displayName = this.displayName;\n\n\n return formattedObj;\n }\n\n\n updateOpportunity(obj) {\n const saveRef = this.dialog.open(LoadingDialogComponent, {\n width: '25rem',\n //pass object here (edit mode and other things)\n data: \"Saving Record.\",\n disableClose: true\n });\n\n this.api.post(\"Note\", \"Update\", obj).subscribe(res => {\n if (!res.valid) {\n saveRef.close();\n this.dialog.open(ErrorDialogComponent, {\n width: '25rem',\n data: res.messages,\n disableClose: false\n });\n return;\n }\n\n this.handleOpportunityUpdate(res.result)\n saveRef.close();\n\n }, err => {\n saveRef.close();\n this.dialog.open(ErrorDialogComponent, {\n width: '25rem',\n data: [\"API Error occurred\", err.message],\n disableClose: false\n });\n })\n }\n\n handleOpportunityUpdate(res){\n console.log(\"transforming opportunity response\");\n\n this.opportunity.note = res.note;\n this.opportunity.lastModified = res.lastModified;\n this.opportunity.username = res.username;\n\n }\n}\n","
\n
\n \n \n
\n \n

{{opportunity.note}}

\n
\n
\n
\n
\n

{{opportunity.lastModified | date}} - {{opportunity.displayName}}

\n
\n
\n delete\n
\n
\n edit\n
\n
\n
\n
\n
\n
\n
\n","import { Component, OnInit } from '@angular/core';\n\n@Component({\n selector: 'app-panel',\n templateUrl: './panel.component.html',\n styleUrls: ['./panel.component.scss']\n})\nexport class PanelComponent implements OnInit {\n\n constructor() { }\n\n ngOnInit(): void {\n }\n\n}\n","
\n
\n","import { AfterViewChecked, AfterViewInit, Component, Inject, OnInit, ViewChild } from '@angular/core';\nimport { FormControl, Validators } from '@angular/forms';\nimport { dateInputsHaveChanged } from '@angular/material/datepicker/datepicker-input-base';\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\nimport { Router } from '@angular/router';\nimport { Organization } from 'src/app/_shared/models/user.model';\nimport { ApiService } from 'src/app/_shared/services/api.service';\n\n@Component({\n selector: 'app-partner-add-dialog',\n templateUrl: './partner-add-dialog.component.html',\n styleUrls: ['./partner-add-dialog.component.scss']\n})\nexport class PartnerAddDialogComponent implements OnInit {\n\n constructor(\n @Inject(MAT_DIALOG_DATA) public data: any,\n private dialogRef: MatDialogRef,\n private api: ApiService\n ) { }\n\n partnerFormControl!: FormControl;\n partnerTypeFormControl!: FormControl;\n\n partner: any;\n orgs: Organization[];\n filteredOrgs: Organization[] = [];\n //Temporary\n types: any[] = [{ name: \"Financial\" }, { name: \"Planning\" },\n { name: \"Implementation\" }, { name: \"Education & Outreach\" },\n { name: \"Monitoring\" }, { name: \"Utilization\" }];\n\n ngOnInit(): void {\n const that = this;\n\n this.partnerFormControl = new FormControl('', [\n Validators.required\n ]);\n\n this.partnerTypeFormControl = new FormControl('', [\n Validators.required\n ]);\n\n\n this.api.get(\"Organization\", \"GetAll\", true).subscribe(result => {\n result.sort(function (a, b) {\n return a.name.toLowerCase().localeCompare(b.name.toLowerCase());\n });\n this.orgs = result;\n\n let orgsToFilter = this.orgs;\n\n // Filter lead org and current\n let removeNames = [this.data?.leadOrg];\n const currentPartners = this.data?.currentPartners || [];\n const currentPartnerNames = currentPartners.map((x) => { return x.name; });\n removeNames = removeNames.concat(currentPartnerNames);\n\n this.filteredOrgs = orgsToFilter.filter(function (obj) {\n return !removeNames.includes(obj.name);\n })\n });\n\n }\n\n onSubmit(): void {\n let partner = this.partnerFormControl.value;\n let type = this.partnerTypeFormControl.value;\n\n let partnerObject =\n {\n \"name\": partner,\n \"type\": type\n }\n\n this.dialogRef.close(partnerObject);\n }\n\n cancelClicked() {\n this.dialogRef.close(null);\n }\n\n isValid(): boolean {\n if (this.partnerFormControl.valid && this.partnerTypeFormControl.valid) {\n return true;\n } else {\n return false;\n }\n }\n\n}\n","\n

\n \n \n Add New Partner\n \n \n

\n\n\n
\n
\n

Adding an organization as a Project partner will allow that organization's Project Editors to add and update Activities for this Project.

\n
\n \n Partner\n \n \n \n {{org.name}}\n \n \n \n \n Partnership Type\n \n \n \n {{type.name}}\n \n \n \n
\n\n \n
\n
\n \n
\n
\n \n
\n
\n
\n
\n","import { Component, EventEmitter, Inject, Input, OnInit, Output } from '@angular/core';\nimport { MAT_DIALOG_DATA } from '@angular/material/dialog';\n\n\n@Component({\n selector: 'app-partner',\n templateUrl: './partner.component.html',\n styleUrls: ['./partner.component.scss']\n})\nexport class PartnerComponent implements OnInit {\n\n @Input() partner: any;\n\n @Input() projectLeadOrg: any;\n\n @Output() partnerToRemove: EventEmitter = new EventEmitter();\n\n constructor(){ }\n\n ngOnInit(): void {\n let partnerTypes = this.partner.type.join(\", \")\n this.partner.type = partnerTypes;\n console.log(this.partner);\n }\n\n removePartner(_: any){\n this.partnerToRemove.emit(this.partner);\n }\n\n}\n","
\n
\n \n \n {{partner.name}}\n \n
\n delete\n
\n
\n \n

{{partner.type}}

\n
\n
\n
\n
\n","import { Component, OnInit } from '@angular/core';\n\n@Component({\n selector: 'app-portal',\n templateUrl: './portal.component.html',\n styleUrls: ['./portal.component.scss']\n})\nexport class PortalComponent implements OnInit {\n\n constructor() { }\n\n ngOnInit(): void {\n }\n\n}\n","

portal works!

\n","import { Component, OnInit } from '@angular/core';\nimport { MatDialogRef } from '@angular/material/dialog';\n\n@Component({\n selector: 'app-project-filter-dialog',\n templateUrl: './project-filter-dialog.component.html',\n styleUrls: ['./project-filter-dialog.component.scss']\n})\nexport class ProjectFilterDialogComponent implements OnInit {\n\n constructor(private dialogRef: MatDialogRef) { }\n\n ngOnInit(): void {\n }\n\n onNoClick(): void {\n this.dialogRef.close();\n }\n\n}\n","

About Export

\n\n
\n
\n
\n

\n The export toggle allows users to select how they want data to be exported. Excel will generate a file with all the project information in tabular format. Shapefile will generate a Zip file with the shape and attribute information related to Projects and Activities in a standard Esri Shapefile format.\n

\n\n
\n
\n
\n
\n
\n \n
\n
\n","import { AfterViewInit, Component, OnInit, QueryList, ViewChild, ViewChildren } from '@angular/core';\nimport { FormControl } from '@angular/forms';\nimport { MatDialog } from '@angular/material/dialog';\nimport { MatPaginator } from '@angular/material/paginator';\nimport { MatSort, MatSortable } from '@angular/material/sort';\nimport { MatTableDataSource } from '@angular/material/table';\nimport { LoadingDialogComponent } from '../loading-dialog/loading-dialog.component';\nimport { Project } from '../_shared/models/domain/project.model';\nimport { ApiService } from '../_shared/services/api.service';\nimport { saveAs } from 'file-saver-es';\nimport { MatSnackBar } from '@angular/material/snack-bar';\nimport { MatFormField } from '@angular/material/form-field';\nimport { ProjectFilterDialogComponent } from 'src/app/project-filter-dialog/project-filter-dialog.component';\n\n@Component({\n selector: 'app-project-filter',\n templateUrl: './project-filter.component.html',\n styleUrls: ['./project-filter.component.scss']\n})\nexport class ProjectFilterComponent implements OnInit, AfterViewInit {\n\n pageSize = 10;\n displayedColumns: string[] = ['id', 'name','type','leadOrg','status','modified','view'];\n projects: Project[];\n dataSource = new MatTableDataSource([]);\n leadOrg: string;\n statuses: any[] = [{ name: \"Planned\" },\n { name: \"In Progress\" },\n { name: \"Complete\" },\n { name: \"Deferred\" },\n { name: \"On Hold\" }\n ];\n types: any[] = [{ name:\"Forest Restoration\"},\n { name: \"Watershed Health\" },\n { name: \"Riparian Restoration\" },\n { name: \"Community Protection\" },\n { name: \"Timber or Forest Utilization\" },\n { name: \"Range Improvement\" },\n { name: \"Planning/Surveys\" },\n { name: \"Other\" }\n ];\n orgs: any[];\n focals: any[] = [];\n priorities: any[] = [];\n activityManagers: any = {};\n excelResult: any;\n exportFormat: string;\n maxDate: Date;\n\n @ViewChild(MatSort, { static: true }) sort: MatSort;\n @ViewChild(MatPaginator, { static: true }) paginator: MatPaginator;\n @ViewChildren(MatFormField) formFields: QueryList;\n\n // Currently not in AC may need later\n //searchFormControl: FormControl = new FormControl({ value: null, disabled: false }, Validators.required);\n statusDropdownFormControl: FormControl = new FormControl({ value: null, disabled: false });\n orgDropdownFormControl: FormControl = new FormControl({ value: null, disabled: false });\n typeDropdownFormControl: FormControl = new FormControl({ value: null, disabled: false });\n focalDropdownFormControl: FormControl = new FormControl({ value: null, disabled: false });\n priorityDropdownFormControl: FormControl = new FormControl({ value: null, disabled: false });\n activityManagerDropdownFormControl: FormControl = new FormControl({ value: null, disabled: false });\n activityCompletionDateStartControl: FormControl = new FormControl({ value: null, disabled: false });\n activityCompletionDateEndControl: FormControl = new FormControl({ value: null, disabled: false });\n exportFormatControl: FormControl = new FormControl({ value: \"excel\", disabled: false });\n\n constructor(\n private api: ApiService,\n private dialog: MatDialog,\n private _snackBar: MatSnackBar,\n ) { }\n\n ngOnInit(): void {\n this.dataSource.paginator = this.paginator;\n this.sort.sort(({ id: 'modified', start: 'desc' }) as MatSortable);\n this.dataSource.sort = this.sort;\n this.exportFormat = \"excel\";\n this.maxDate = new Date();\n this.dataSource.sortingDataAccessor = (data: any, sortHeaderId: string): string => {\n if (sortHeaderId == 'name') {\n return data['name'].toLocaleLowerCase();\n }\n\n if (typeof data[sortHeaderId] === 'string') {\n return data[sortHeaderId].toLocaleLowerCase();\n }\n\n return data[sortHeaderId];\n };\n\n this.api.post(\"Project\", \"GetAllSearch\", { placeholder: 'request' }).subscribe(result => {\n this.projects = result;\n\n this.initDataSource();\n });\n\n this.api.get(\"Organization\", \"GetAll\").subscribe(result => {\n result.sort((a, b) => {\n return a.name.toLowerCase().localeCompare(b.name.toLowerCase());\n });\n this.orgs = result;\n });\n\n this.api.get(\"Focal\", \"GetAllNames\").subscribe(result => {\n this.focals = result.map(e => { return { name: e } });\n this.focals.sort((a, b) => {\n return a.name.toLowerCase().localeCompare(b.name.toLowerCase());\n });\n });\n\n this.api.get(\"Landscape\", \"GetAllNames\").subscribe(result => {\n this.priorities = result.map(e => { return { name: e } });\n this.priorities.sort((a, b) => {\n return a.name.toLowerCase().localeCompare(b.name.toLowerCase());\n });\n });\n\n this.api.get(\"Organization\", \"GetAllWorkAgents\").subscribe(result => {\n result.sort((a, b) => {\n return a.name.toLowerCase().localeCompare(b.name.toLowerCase());\n });\n this.activityManagers = result;\n });\n }\n\n ngAfterViewInit(): void {\n // (╯ ͠° ͟ʖ ͡°)╯┻━┻ https://github.com/angular/components/issues/15027\n setTimeout(() => this.formFields.forEach(ff => ff.updateOutlineGap()), 100);\n }\n\n initDataSource() {\n this.dataSource.data = this.projects;\n }\n\n viewSummary(id: any) {\n const url = `${location.origin}/#/app/project/view?id=${id}`;\n window.open(url, '_blank');\n }\n\n applyFilter() {\n let statusFilters = this.statusDropdownFormControl.value;\n let orgFilters = this.orgDropdownFormControl.value;\n let typeFilters = this.typeDropdownFormControl.value;\n let focalFilters = this.focalDropdownFormControl.value;\n let priorityFilters = this.priorityDropdownFormControl.value;\n let activityManagerFilters = this.activityManagerDropdownFormControl.value;\n let activityCompletionDateStart = this.activityCompletionDateStartControl.value;\n let activityCompletionDateEnd = this.activityCompletionDateEndControl.value;\n\n class FilterRequest {\n types: string[];\n orgs: string[];\n statuses: string[];\n focals: string[];\n priorities: string[];\n activityManagers: string[];\n activityCompletionDateRange: Date[];\n }\n\n let filters = new FilterRequest();\n\n if(Array.isArray(typeFilters) && typeFilters.length > 0) {\n filters.types = typeFilters || [];\n }\n\n if(Array.isArray(statusFilters) && statusFilters.length > 0) {\n filters.statuses = statusFilters || [];\n }\n\n if(Array.isArray(orgFilters) && orgFilters.length > 0) {\n filters.orgs = orgFilters || [];\n }\n\n if(Array.isArray(focalFilters) && focalFilters.length > 0) {\n filters.focals = focalFilters || [];\n }\n\n if(Array.isArray(priorityFilters) && priorityFilters.length > 0) {\n filters.priorities = priorityFilters || [];\n }\n\n if(Array.isArray(activityManagerFilters) && activityManagerFilters.length > 0) {\n filters.activityManagers = activityManagerFilters || [];\n }\n \n if (activityCompletionDateStart != null && activityCompletionDateEnd != null) {\n filters.activityCompletionDateRange = [activityCompletionDateStart, activityCompletionDateEnd]; //activityCompletionDateStart.toISOString();;\n }\n\n const dialogRef = this.dialog.open(LoadingDialogComponent, {\n width: '25rem',\n data: \"Applying Filter.\",\n disableClose: true\n });\n this.api.post(\"Project\", \"GetAllSearch\", filters).subscribe(result => {\n this.projects = result;\n\n dialogRef.close();\n\n this.initDataSource();\n });\n }\n\n clearFilter() {\n this.statusDropdownFormControl.reset();\n this.orgDropdownFormControl.reset();\n this.typeDropdownFormControl.reset();\n this.focalDropdownFormControl.reset();\n this.priorityDropdownFormControl.reset();\n this.activityManagerDropdownFormControl.reset();\n this.activityCompletionDateStartControl.reset();\n this.activityCompletionDateEndControl.reset();\n\n this.api.post(\"Project\", \"GetAllSearch\", { placeholder: 'request' }, true).subscribe(result => {\n this.projects = result;\n\n this.initDataSource();\n });\n }\n\n public onToggle(val: string) {\n this.exportFormat = val;\n }\n\n search(data: any){\n this.projects = this.projects.filter(function (obj) {\n return obj.name !== data.name;\n });\n }\n\n export(){\n if (this.exportFormat == 'excel') {\n console.log(\"export excel\");\n this.exportExcel();\n }\n else {\n console.log(\"export shapefile\");\n this.exportShapefile();\n }\n }\n\n async exportExcel(){\n let statusFilters = this.statusDropdownFormControl.value\n let orgFilters = this.orgDropdownFormControl.value\n let typeFilters = this.typeDropdownFormControl.value\n let focalFilters = this.focalDropdownFormControl.value\n let priorityFilters = this.priorityDropdownFormControl.value\n let activityManagerFilters = this.activityManagerDropdownFormControl.value;\n let activityCompletionDateStart = this.activityCompletionDateStartControl.value;\n let activityCompletionDateEnd = this.activityCompletionDateEndControl.value;\n \n class FilterRequest {\n types: string[];\n orgs: string[];\n statuses: string[];\n focals: string[];\n priorities: string[];\n activityManagers: string[];\n activityCompletionDateRange: Date[];\n }\n\n let filters = new FilterRequest();\n\n if(Array.isArray(typeFilters) && typeFilters.length > 0) {\n filters.types = typeFilters || [];\n }\n\n if(Array.isArray(statusFilters) && statusFilters.length > 0) {\n filters.statuses = statusFilters || [];\n }\n\n if(Array.isArray(orgFilters) && orgFilters.length > 0) {\n filters.orgs = orgFilters || [];\n }\n\n if(Array.isArray(focalFilters) && focalFilters.length > 0) {\n filters.focals = focalFilters || [];\n }\n\n if(Array.isArray(priorityFilters) && priorityFilters.length > 0) {\n filters.priorities = priorityFilters || [];\n }\n\n if(Array.isArray(activityManagerFilters) && activityManagerFilters.length > 0) {\n filters.activityManagers = activityManagerFilters || [];\n }\n \n if (activityCompletionDateStart != null && activityCompletionDateEnd != null) {\n filters.activityCompletionDateRange = [activityCompletionDateStart, activityCompletionDateEnd]; //activityCompletionDateStart.toISOString();;\n }\n\n const dialogRef = this.dialog.open(LoadingDialogComponent, {\n width: '25rem',\n data: \"Exporting Tables.\",\n disableClose: true\n });\n\n this.api.postGetBlob(\"Excel\", \"Export\", filters, true).subscribe(response => {\n console.log(response);\n saveAs(response, \"ProjectExport.xlsx\");\n\n dialogRef.close();\n })\n }\n\n async exportShapefile(){\n let statusFilters = this.statusDropdownFormControl.value\n let orgFilters = this.orgDropdownFormControl.value\n let typeFilters = this.typeDropdownFormControl.value\n let focalFilters = this.focalDropdownFormControl.value\n let priorityFilters = this.priorityDropdownFormControl.value\n let activityManagerFilters = this.activityManagerDropdownFormControl.value;\n let activityCompletionDateStart = this.activityCompletionDateStartControl.value;\n let activityCompletionDateEnd = this.activityCompletionDateEndControl.value;\n\n class FilterRequest {\n types: string[];\n orgs: string[];\n statuses: string[];\n focals: string[];\n priorities: string[];\n activityManagers: string[];\n activityCompletionDateRange: Date[];\n }\n\n let filters = new FilterRequest();\n\n if(Array.isArray(typeFilters) && typeFilters.length > 0) {\n filters.types = typeFilters || [];\n }\n\n if(Array.isArray(statusFilters) && statusFilters.length > 0) {\n filters.statuses = statusFilters || [];\n }\n\n if(Array.isArray(orgFilters) && orgFilters.length > 0) {\n filters.orgs = orgFilters || [];\n }\n\n if(Array.isArray(focalFilters) && focalFilters.length > 0) {\n filters.focals = focalFilters || [];\n }\n\n if(Array.isArray(priorityFilters) && priorityFilters.length > 0) {\n filters.priorities = priorityFilters || [];\n }\n\n if(Array.isArray(activityManagerFilters) && activityManagerFilters.length > 0) {\n filters.activityManagers = activityManagerFilters || [];\n }\n \n if (activityCompletionDateStart != null && activityCompletionDateEnd != null) {\n filters.activityCompletionDateRange = [activityCompletionDateStart, activityCompletionDateEnd]; \n }\n \n const dialogRef = this.dialog.open(LoadingDialogComponent, {\n width: '25rem',\n data: \"Exporting Shapefile.\",\n disableClose: true\n });\n\n this.api.postGetBlob(\"Shapefile\", \"Export\", filters, true).subscribe(response => {\n console.log(response);\n saveAs(response, \"ProjectExport.zip\");\n\n dialogRef.close();\n })\n }\n openDialog() {\n const dialogRef = this.dialog.open(ProjectFilterDialogComponent, {\n width: '50rem',\n data: {}\n });\n\n dialogRef.afterClosed().subscribe(result => {\n });\n }\n openSnackBar(message: string, action: string) {\n this._snackBar.open(message, action);\n this.openSnackBar('File export error.', 'Close');\n }\n\n}\n","
\n\n
\n
\n\n
\n \n

Filters

\n
\n
\n \n Type\n \n \n {{type.name}}\n \n \n \n
\n\n
\n \n Organization\n \n \n {{org.name}}\n \n \n \n
\n\n
\n \n Status\n \n \n {{status.name}}\n \n \n \n
\n\n
\n \n Focal Area\n \n \n {{focal.name}}\n \n \n \n
\n\n
\n \n Priority Landscape\n \n \n {{priority.name}}\n \n \n \n
\n\n
\n \n Activity Manager\n \n \n {{activityManager.name}}\n \n \n \n
\n
\n \n Activity Completion Date\n \n \n \n \n \n \n \n
\n\n
\n
\n \n\n \n
\n
\n
\n
\n
\n\n
\n\n \n\n
\n\n
\n
\n

Projects

\n
\n
\n \"Info\n
\n
\n \n Excel\n ShapeFile \n \n
\n
\n \n
\n
\n
\n \n\n \n \n \n \n \n\n \n \n \n \n \n\n \n \n \n \n \n\n \n \n \n \n \n\n \n \n \n \n \n\n \n \n \n \n \n\n \n \n \n \n \n\n \n \n
ID {{project.id}} Name {{project.name}} Type {{project.type}} Coordinating Organization {{project.leadOrg}} Status {{project.status}} Last Modified {{project.modified | date: 'MM/dd/yyyy' }} Details
\n\n \n
\n
\n No results match the selected criteria\n
\n\n
\n\n
\n\n
\n
\n\n
","import { Component, OnInit } from '@angular/core';\nimport { MatDialogRef } from '@angular/material/dialog';\n\n@Component({\n selector: 'app-project-info-dialog',\n templateUrl: './project-info-dialog.component.html',\n styleUrls: ['./project-info-dialog.component.scss']\n})\nexport class ProjectInfoDialogComponent implements OnInit {\n\n constructor(private dialogRef: MatDialogRef) { }\n\n ngOnInit(): void {\n }\n\n onNoClick(): void {\n this.dialogRef.close();\n }\n\n}\n","

About Projects

\n\n
\n
\n
\n

\n A project is an overall effort to achieve some specific objective in a defined area. Projects may be complex and include many activities\n such as planning, surveys, treatments, and monitoring. Or a project may be focused, including only one activity. Project areas are small\n enough that they fit within a focal area, where focal areas are defined.\n

\n\n

\n However, projects entered into the portal do not have to be within Shared Stewardship Priority Areas or Focal Areas. Projects may have\n multiple partners who are responsible for specific activities within the project boundaries. Projects may span multiple years and in some cases, decades.\n

\n
\n
\n
\n
\n
\n \n
\n
\n","import { Component, HostListener, OnInit, ViewChild } from '@angular/core';\nimport { MatDialog } from '@angular/material/dialog';\nimport { Router } from '@angular/router';\nimport { LoadingDialogComponent } from 'src/app/loading-dialog/loading-dialog.component';\nimport { ProjectInfoDialogComponent } from 'src/app/project-info-dialog/project-info-dialog.component';\nimport { DynamicFormComponent } from 'src/app/_shared/components/forms/dynamic-form/dynamic-form.component';\nimport { CoreEntity } from 'src/app/_shared/models/core-entity.model';\nimport { PamShapeData } from 'src/app/_shared/models/pam-object.model';\nimport { ApiService } from 'src/app/_shared/services/api.service';\nimport { AuthorizationService } from 'src/app/_shared/services/authorization.service';\nimport { FieldService } from 'src/app/_shared/services/forms/field.service';\n\n@Component({\n selector: 'app-project-create',\n templateUrl: './project-create.component.html',\n styleUrls: ['./project-create.component.scss']\n})\nexport class ProjectCreateComponent implements OnInit {\n\n fields: any[];\n fieldsNarrative: any[];\n fieldsFocus: any[];\n projectGeom: PamShapeData;\n screenHeight: number;\n screenWidth: number;\n heightValue = '60rem;'\n leadOrg: string;\n\n @ViewChild('narrative') narrative: DynamicFormComponent\n @ViewChild('genInfo') genInfo: DynamicFormComponent\n @ViewChild('focus') focus: DynamicFormComponent\n\n constructor(\n private fieldService: FieldService,\n private api: ApiService,\n private router: Router,\n private dialog: MatDialog,\n public authService: AuthorizationService,\n ) {\n this.onResize();\n }\n\n ngOnInit(): void {\n this.fields = this.fieldService.getFields(CoreEntity.Project);\n this.fieldsNarrative = this.fieldService.getFields('ProjectNarrative'); // TODO - fix the magic strings\n this.fieldsFocus = this.fieldService.getFields('ProjectFocus');\n const login = this.authService.getLogin();\n this.leadOrg = login.orgs.organization;\n }\n\n createProject(newObj: any) {\n let formattedObj: any = {};\n formattedObj.name = newObj.genInfoData.PROJECT_NAME;\n formattedObj.fields = {};\n formattedObj.fields.projectType = newObj.genInfoData.PROJECT_TYPE;\n formattedObj.fields.projectStatus = newObj.genInfoData.PROJECT_STATUS;\n formattedObj.fields.projectNarrative = newObj.narrativeData.PROJECT_NARRATIVE;\n formattedObj.fields.projectFocus = newObj.focusData.PROJECT_FOCUS;\n formattedObj.fields.projectStrategies = newObj.focusData.PROJECT_STRATEGIES;\n formattedObj.fields.Geometry = this.projectGeom.fields.Geometry;\n formattedObj.fields.leadOrganization = this.leadOrg;\n\n const dialogRef = this.dialog.open(LoadingDialogComponent, {\n width: '25rem',\n data: \"Creating Project.\",\n disableClose: true\n });\n this.api.post(\"Project\", \"Create\", formattedObj, true).subscribe(result => {\n\n if (!result.valid) {\n //Backend validation didnt pass show the errors\n //this.showErrors(result.messages);\n }\n else {\n //Clean some stuff up\n //We should also keep a reference to the ID I guess?\n //this.refreshMap();\n this.showSaved(result.result.id);\n }\n dialogRef.close();\n }, error => {\n //Backend gave us a non-200 response\n //this.showErrors([\"The api responded incorrectly.\", JSON.stringify(error, undefined, 2)]);\n dialogRef.close();\n })\n }\n\n\n trySave(_: any): void {\n const genInfoData = this.genInfo.getPayload();\n const narrativeData = this.narrative.getPayload();\n const focusData = this.focus.getPayload();\n\n let merged = { genInfoData, narrativeData, focusData };\n\n console.log(narrativeData);\n console.log(genInfoData);\n console.log(focusData);\n\n console.log(merged);\n\n this.createProject(merged);\n }\n\n isValid(): boolean {\n if (this.genInfo && this.narrative && this.focus && this.projectGeom) {\n return (this.genInfo.isValid() && this.narrative.isValid() && this.focus.isValid());\n } else {\n return false;\n }\n }\n\n showSaved(id: number): void {\n this.router.navigateByUrl(`/app/project/view?id=${id}`);\n }\n\n @HostListener('window:resize', ['$event'])\n onResize(event?) {\n this.screenHeight = window.innerHeight;\n this.screenWidth = window.innerWidth;\n\n if (this.screenWidth <= 1366) {\n this.heightValue = '80rem;';\n } else {\n this.heightValue = '60rem;';\n }\n }\n\n openDialog() {\n const dialogRef = this.dialog.open(ProjectInfoDialogComponent, {\n width: '50rem',\n data: {}\n });\n\n dialogRef.afterClosed().subscribe(result => {\n });\n }\n\n newShapeData(data: PamShapeData) {\n console.log('Got Data');\n console.log(data);\n this.projectGeom = data;\n }\n\n saveHint() {\n if (!this.projectGeom) {\n return 'You must map the Project boundary in order to continue.';\n }\n else {\n return '';\n }\n }\n\n}\n","
\n\n \n
\n \n\n \n
\n\n \n
\n

Create New Project\n

\n \"Info\n
\n\n \n \n
\n \n
\n\n \n
\n\n
\n \n
\n\n \n
\n\n
\n\n \n \n \n Map\n \"tooltip\"\n \n \n \n \n \n \n\n
\n\n \n
\n\n \n
\n\n
\n \n\n
\n \n \n General Information\n \n \n \n \n \n
\n\n
\n
\n\n \n
\n \n
\n \n \n Project Focus & Strategies\n \n \n \n \n \n
\n\n
\n
\n\n \n
\n \n \n \n Project Narrative\n \n \n \n \n \n\n \n
\n\n \n
\n\n \n
\n\n
\n","import { Component, Input, OnInit } from '@angular/core';\n\n@Component({\n selector: 'app-project-funding-source',\n templateUrl: './project-funding-source.component.html',\n styleUrls: ['./project-funding-source.component.scss']\n})\nexport class ProjectFundingSourceComponent implements OnInit {\n\n @Input() source: any;\n\n constructor() { }\n\n ngOnInit(): void {\n console.log(this.source);\n }\n\n}\n","
\n
\n \n \n
\n

Funding Source: {{ source.fundingSource }}

\n

Funding Organization: {{ source.fundingOrg}}

\n

Planned Funding: {{ source.plannedAmount | currency }}

\n

Actual Funding: {{ source.actualAmount | currency }}

\n
\n
\n
\n
\n
\n","import { Component, Input, OnInit } from '@angular/core';\n\n@Component({\n selector: 'app-project-funding',\n templateUrl: './project-funding.component.html',\n styleUrls: ['./project-funding.component.scss']\n})\nexport class ProjectFundingComponent implements OnInit {\n\n @Input() projectFunding: any;\n\n constructor() { }\n\n ngOnInit(): void {\n console.log(\"Project Funding Object\",this.projectFunding);\n }\n\n}\n","
\n
\n \n \n
\n

Total Planned Funding: {{ projectFunding.plannedAmountTotal | currency }}

\n

Total Actual Funding: {{ projectFunding.actualAmountTotal | currency }}

\n

Total Planned Match: {{ projectFunding.plannedAmountAsMatchTotal | currency }}

\n

Total Actual Match: {{ projectFunding.actualAmountAsMatchTotal | currency }}

\n
\n
\n
\n
\n
\n","import { Component, Input, OnInit } from '@angular/core';\nimport { GeoStatConstants, GeoStatRecordVm, GeoStatVm } from '../geo-stats.model';\n\n@Component({\n selector: 'app-geo-slot',\n templateUrl: './geo-slot.component.html',\n styleUrls: ['./geo-slot.component.scss']\n})\nexport class GeoSlotComponent implements OnInit {\n @Input() statRow: GeoStatRecordVm;\n @Input() hasStats: boolean;\n @Input() isLastElement = false;\n @Input() isFocal = false;\n\n constructor() { }\n\n ngOnInit(): void {\n }\n\n getStringStat(): string {\n let baseString = '';\n const separator = ', ';\n\n this.statRow.stat.sort((a, b) => {\n const aString = a.acres as string;\n const bString = b.acres as string;\n const aVal = parseFloat(aString.replace(',', '')) as number;\n const bVal = parseFloat(bString.replace(',', '')) as number;\n return bVal - aVal;\n });\n\n this.statRow.stat.forEach((element, idx) => {\n if (this.isFocal) {\n if (element.title !== GeoStatConstants.NonFocalArea) {\n baseString = `${baseString}${element.title} (${element.acres} acres)${(idx === this.statRow.stat.length - 1 && (baseString.length > 1 + separator.length)) ? '' : separator}`;\n } else {\n baseString = `${baseString}${element.title} (${element.acres} acres)${(idx === this.statRow.stat.length - 1 && (baseString.length > 1 + separator.length)) ? '' : separator}`;\n }\n } else {\n baseString = `${baseString}${element.title} (${element.acres} acres)${separator}`;\n }\n\n // Check if basestring is not empty and this is the last iteration and remove the last separator\n if (!this.isFocal) {\n if (idx === this.statRow.stat.length - 1 && (baseString.length > 1 + separator.length)) {\n baseString = baseString.substring(0, baseString.length - separator.length);\n };\n }\n });\n\n // Check for an empty string - assume no stats returned\n if (baseString === '') {\n baseString = 'No intersection';\n }\n\n return baseString;\n }\n\n}\n","
\n
\n \n \n \n {{ this.statRow?.title || '' }}\n \n \n \n

{{ this.hasStats ? this.getStringStat() : 'Pending calculation' }}

\n

\n

Pending calculation

\n
\n
\n
\n
\n","export class GeoStatConstants {\r\n public static Landscapes = 'landscapes';\r\n public static Ownership = 'ownership';\r\n public static Watersheds = 'watersheds';\r\n public static FocalAreas = 'focal';\r\n public static Name = 'name';\r\n public static Top500 = 'top_500';\r\n public static Status = 'status';\r\n public static JobId = 'jobId';\r\n public static Stats = 'stats';\r\n public static Data = 'data';\r\n public static TotalArea = 'totalArea';\r\n public static Running = 'RUNNING';\r\n public static Success = 'SUCCESS';\r\n public static Fail = 'FAIL';\r\n public static ViewTitles = {\r\n Landscape: 'Priority Landscape',\r\n Focal: 'Focal Area',\r\n Ownership: 'Ownership',\r\n Watershed: 'Watershed'\r\n };\r\n public static NonFocalArea = 'Non-Focal Area';\r\n}\r\n\r\nexport interface GeoStatContainerVm {\r\n landscape?: GeoStatRecordVm;\r\n focal?: GeoStatRecordVm;\r\n watershed?: GeoStatRecordVm;\r\n ownership?: GeoStatRecordVm;\r\n}\r\n\r\nexport interface GeoStatRecordVm {\r\n title?: string;\r\n stat?: GeoStatVm[];\r\n}\r\n\r\nexport interface GeoStatVm {\r\n title?: string;\r\n acres?: number | string;\r\n}","import { Component, Input, OnDestroy, OnInit } from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { GeoStatContainerVm, GeoStatRecordVm } from './geo-stats.model';\nimport { ProjectGeoService } from './project-geo.service';\n\n@Component({\n selector: 'app-project-geo-card',\n templateUrl: './project-geo-card.component.html',\n styleUrls: ['./project-geo-card.component.scss']\n})\nexport class ProjectGeoCardComponent implements OnInit, OnDestroy {\n @Input() projectId: number;\n @Input() entityType: string = 'project';\n geoSub: Subscription;\n geoStats: GeoStatContainerVm = {};\n interval;\n\n constructor(\n public projectGeoService: ProjectGeoService,\n ) { }\n\n ngOnInit(): void {\n this.geoSub = this.projectGeoService.geoStats.subscribe((data) => {\n if (data) {\n this.geoStats = data;\n }\n });\n\n this.startStatTimer();\n }\n\n ngOnDestroy() {\n clearInterval(this.interval);\n this.projectGeoService.resetStats();\n this.geoSub.unsubscribe();\n }\n\n getStats(projectId: number) {\n if (projectId && this.entityType === 'project') {\n this.projectGeoService.requestStatData(projectId, 'Project', 'CheckProjectStats');\n } else if (projectId && this.entityType === 'activity') {\n this.projectGeoService.requestStatData(projectId, 'Activity', 'CheckActivityStats');\n }\n }\n\n startStatTimer() {\n this.interval = setInterval(() => {\n console.log(`Checking ${this.projectGeoService.hasStats.getValue()}`);\n if (this.projectGeoService.hasStats.getValue()) {\n console.log('Clear Interval');\n clearInterval(this.interval);\n }\n console.log(`Interval Check ${this.projectId}`);\n this.getStats(this.projectId);\n }, 10000);\n }\n\n}\n","
\n
\n \n \n
\n
\n \n \n
\n
\n \n \n
\n
\n \n
\n
\n","import { DecimalPipe } from '@angular/common';\nimport { Injectable } from '@angular/core';\nimport { BehaviorSubject, Observable, of, Subject } from 'rxjs';\nimport { take } from 'rxjs/operators';\nimport { ApiService } from 'src/app/_shared/services/api.service';\nimport { ConfigurationService } from 'src/app/_shared/services/configuration.service';\nimport { GeoStatConstants, GeoStatContainerVm, GeoStatRecordVm, GeoStatVm } from './geo-stats.model';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ProjectGeoService {\n geoStats: BehaviorSubject = new BehaviorSubject(this.getPendingData());\n hasStats: BehaviorSubject = new BehaviorSubject(false);\n watersheds: any;\n\n constructor(\n private decimalPipe: DecimalPipe,\n private api: ApiService,\n private config: ConfigurationService,\n ) { }\n\n requestStatData(projectId: number, entity: string, action: string) {\n this.api.post(entity, action, [projectId], true).subscribe(res => {\n if (res && res?.fields?.stats?.status === GeoStatConstants.Success) {\n // Unpack actual object\n this.getStatData(res?.fields);\n this.hasStats.next(true);\n } else if (res && res?.fields?.stats?.status === GeoStatConstants.Running) {\n // Pending Object and Set Timer for Checks\n this.hasStats.next(false);\n } else {\n // Error object\n this.hasStats.next(false);\n }\n }, err => {\n console.error('ERROR');\n console.error(err);\n // Error object\n this.hasStats.next(false);\n });\n }\n\n async getStatData(rawData: any) {\n const procData: GeoStatContainerVm = {};\n\n // Landscape Data\n const landscapeRow = await this.unpackStatData(rawData,\n GeoStatConstants.Landscapes,\n GeoStatConstants.Name,\n GeoStatConstants.ViewTitles.Landscape\n );\n\n // Focal Data\n const focaleRow = await this.unpackStatData(rawData,\n GeoStatConstants.FocalAreas,\n GeoStatConstants.Name,\n GeoStatConstants.ViewTitles.Focal\n );\n\n // Watershed\n const watershedRow = await this.unpackStatData(rawData,\n GeoStatConstants.Watersheds,\n GeoStatConstants.Name,\n GeoStatConstants.ViewTitles.Watershed\n );\n\n // Ownership\n const ownershipRow = await this.unpackStatData(rawData,\n GeoStatConstants.Ownership,\n GeoStatConstants.Name,\n GeoStatConstants.ViewTitles.Ownership\n );\n\n // Hydrate full VM\n procData.landscape = landscapeRow;\n procData.focal = focaleRow;\n procData.watershed = watershedRow;\n procData.ownership = ownershipRow;\n\n this.geoStats.next(procData);\n }\n\n private async unpackStatData(rawData: any, statKey: string, statName: string, title: string): Promise {\n // Unpack the raw data - expects certain properties to be in place\n const rawStats = rawData?.\n [GeoStatConstants.Stats]?.\n [GeoStatConstants.Data]?.\n [statKey]?.\n [GeoStatConstants.Stats]?.\n [statName] || null;\n\n // Setup a record and stat array to be hydrated\n const statRow: GeoStatRecordVm = { title };\n const stats: GeoStatVm[] = [];\n\n // Cycle through the raw stats and map to VM\n if (rawStats) {\n for (const key in rawStats) {\n const element = rawStats[key];\n let stat: GeoStatVm;\n if (statKey === GeoStatConstants.Watersheds) {\n const tempName = await this.getWatershedAlias(key);\n stat = { title: tempName, acres: this.convertSqmToAcres(element?.[GeoStatConstants.TotalArea] || null) };\n } else {\n stat = { title: key, acres: this.convertSqmToAcres(element?.[GeoStatConstants.TotalArea] || null) };\n }\n stats.push(stat);\n }\n }\n\n // Hydrate the record with the stats\n statRow.stat = stats;\n\n return statRow;\n }\n\n resetStats() {\n this.geoStats.next(this.getPendingData());\n this.hasStats.next(false);\n }\n\n private convertSqmToAcres(inSqm: number) {\n return inSqm ? this.decimalPipe.transform(inSqm * 0.000247105, '1.1-1') : null;\n }\n\n private getPendingData() {\n const procData: GeoStatContainerVm = {\n landscape: { title: GeoStatConstants.ViewTitles.Landscape, stat: [] },\n focal: { title: GeoStatConstants.ViewTitles.Focal, stat: [] },\n watershed: { title: GeoStatConstants.ViewTitles.Watershed, stat: [] },\n ownership: { title: GeoStatConstants.ViewTitles.Ownership, stat: [] }\n };\n\n return procData;\n }\n\n async getWatershedAlias(watershedId: string): Promise {\n let outName: string;\n const isTop500 = await this.isTop500Watershed(watershedId);\n if (isTop500) {\n outName = `${watershedId} (Top 500)`;\n } else {\n outName = watershedId;\n }\n\n return outName;\n }\n\n async isTop500Watershed(watershedId: string) {\n if (!this.watersheds) {\n const res = await this.config.getConfigAsync(this.config.watershedConfigUrl);\n this.watersheds = res['watersheds']['watershed'];\n }\n\n const found = this.watersheds.find((data) => {\n return data['name'] === watershedId;\n });\n\n if (found && found['top_500'] === 'Yes') {\n return true;\n } else {\n return false;\n }\n }\n\n}\n","import { Component, HostListener, OnInit, ViewChild } from '@angular/core';\nimport { MatDialog } from '@angular/material/dialog';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { ActivityCreateDialogComponent } from 'src/app/activity/activity-create-dialog/activity-create-dialog.component';\nimport { ConfirmDialogComponent } from 'src/app/confirm-dialog/confirm-dialog.component';\nimport { LoadingDialogComponent } from 'src/app/loading-dialog/loading-dialog.component';\nimport { ErrorDialogComponent } from 'src/app/map/error-dialog/error-dialog.component';\nimport { NoteCreateDialogComponent } from 'src/app/note-create-dialog/note-create-dialog.component';\nimport { PartnerAddDialogComponent } from 'src/app/partner/partner-add-dialog/partner-add-dialog.component';\nimport { SlimMapComponent } from 'src/app/slim-map/slim-map.component';\nimport { MapEditDialogComponent } from 'src/app/_shared/components/dialogs/map-edit-dialog/map-edit-dialog.component';\nimport { DynamicFormComponent } from 'src/app/_shared/components/forms/dynamic-form/dynamic-form.component';\nimport { CoreEntity } from 'src/app/_shared/models/core-entity.model';\nimport { Fields } from 'src/app/_shared/models/dynamic-forms/fields.model';\nimport { PamObject, PamShapeData } from 'src/app/_shared/models/pam-object.model';\nimport { ApiService } from 'src/app/_shared/services/api.service';\nimport { AuthorizationService } from 'src/app/_shared/services/authorization.service';\nimport { FieldService } from 'src/app/_shared/services/forms/field.service';\nimport { ProjectGeoCardComponent } from '../project-geo-card/project-geo-card.component';\nimport { firstBy } from \"thenby\";\n\n@Component({\n selector: 'app-project-view',\n templateUrl: './project-view.component.html',\n styleUrls: ['./project-view.component.scss']\n})\nexport class ProjectViewComponent implements OnInit {\n\n @ViewChild('genInfo') genInfo: DynamicFormComponent;\n @ViewChild('narrative') narrative: DynamicFormComponent;\n @ViewChild('focus') focus: DynamicFormComponent;\n @ViewChild('slimMap') slimMap: SlimMapComponent;\n @ViewChild('projGeo') projGeo: ProjectGeoCardComponent;\n\n sources: any[] = [];\n target: any = { fields: {} };\n partners: any[] = [];\n project: any = {};\n activities: any[] = [];\n notes: any[] = [];\n opportunities: any[] = [];\n impediments: any[] = [];\n projectFocus: any = {}\n fields: any[];\n focusFields: any[];\n screenHeight: number;\n screenWidth: number;\n projectGeom: PamShapeData;\n projectLeadOrg: string;\n editModeOn = false;\n editMapOn = false;\n mapDialog: any;\n heightValue = '181rem;';\n projectFunding: any;\n get projectName() {\n return this.project[Fields.ProjectName] || '';\n }\n\n constructor(\n private route: ActivatedRoute,\n private api: ApiService,\n private fieldService: FieldService,\n private dialog: MatDialog,\n public authService: AuthorizationService,\n private router: Router,\n ) { }\n\n ngOnInit(): void {\n this.route.queryParams.subscribe(params => {\n let id = params[\"id\"];\n if (id == undefined)\n return;\n\n let iid = parseInt(id);\n\n // Initial Project object\n this.api.post(\"Project\", \"Get\", [iid]).subscribe(results => {\n if (results && results.length) {\n let target = results[0];\n this.handleLoad(target);\n }\n });\n\n // Activities\n this.api.post(\"Activity\", \"ReadAll\", { linkToId: iid }).subscribe(results => {\n this.activities = results;\n this.sortActivities();\n });\n\n // Project Funding Summary\n this.api.post(\"Project\", \"FundingTotals\", iid).subscribe(result => {\n this.projectFunding = result;\n this.processFundingSources(result);\n });\n\n // Impediments and Oppportunities API call\n this.getNotes(iid)\n\n\n });\n this.onResize();\n }\n\n routeToExplorer() {\n this.router.navigateByUrl(`/app/map?id=${this.target.id}&type=p`);\n }\n\n dateFormatEpoch(date: number) {\n var d = new Date(0)\n return d.setUTCSeconds(date);\n }\n\n handleLoad(target: any): void {\n this.target = target;\n\n this.target.created = this.dateFormatEpoch(this.target.created);\n this.target.modified = this.dateFormatEpoch(this.target.modified);\n\n this.project = {};\n this.project[Fields.ProjectName] = this.target.name;\n this.project[Fields.ProjectType] = this.target.fields.projectType;\n this.project[Fields.ProjectStatus] = this.target.fields.projectStatus;\n this.project[Fields.ProjectNarrative] = this.target.fields.projectNarrative;\n this.project[Fields.ProjectFocus] = this.target.fields.projectFocus;\n this.project[Fields.ProjectStrategies] = this.target.fields.projectStrategies;\n\n // Project focus fields\n this.projectFocus[Fields.ProjectFocus] = this.target.fields.projectFocus;\n this.projectFocus[Fields.ProjectStrategies] = this.target.fields.projectStrategies\n\n // Get editable fields\n this.fields = this.fieldService.getEditableFields(CoreEntity.Project, this.project);\n this.focusFields = this.fieldService.getEditableFocusFields(CoreEntity.Project, this.projectFocus)\n\n // Org\n this.projectLeadOrg = this.target?.fields?.leadOrganization || null;\n\n // Partners\n this.partners = this.target?.fields?.Partners || [];\n\n const narrativeFields = {};\n narrativeFields[Fields.ProjectNarrative] = this.project[Fields.ProjectNarrative];\n\n this.genInfo.refreshForm(this.fields);\n this.focus.refreshForm(this.focusFields);\n\n // Geom\n this.updateMapGeom();\n\n // sort partner cards\n this.sortPartners();\n\n // Update Project Stats\n this.projGeo.getStats(target?.id);\n }\n\n\n toggleEditMode() {\n if (this.editModeOn) {\n // Map data to DTO and update\n const payload = this.createPayload();\n this.update(payload);\n } else {\n this.editModeOn = true;\n }\n }\n\n processFundingSources(data: any) {\n this.sources = [];\n let container = data.container;\n\n\n for (var key in container) {\n\n container[key].forEach(sources => {\n\n let fundingSource = {\n fundingSource: \"\",\n fundingOrg: \"\",\n plannedAmount: 0,\n actualAmount: 0\n }\n\n sources.forEach(source => {\n fundingSource.fundingSource = source.fields.fundingName;\n fundingSource.fundingOrg = source.fields.fundingOrg;\n fundingSource.plannedAmount = fundingSource.plannedAmount + source.fields.plannedAmount;\n fundingSource.actualAmount = fundingSource.actualAmount + source.fields.actualAmount;\n });\n this.sources.push(fundingSource);\n });\n\n }\n this.sortSources();\n }\n\n toggleEditMap() {\n this.editMapOn = true;\n this.mapDialog = this.dialog.open(MapEditDialogComponent, {\n width: '90vw',\n height: '90vh',\n data: { feature: this.projectGeom, fillColor: 'rgba(185, 232, 42, 0.5)', strokeColor: 'rgba(0, 19, 2, 0.5)' },\n disableClose: true\n });\n\n this.mapDialog.afterClosed().subscribe(data => {\n this.mapDialog = null;\n if (data) {\n // If there are data, save\n this.newShapeData(data);\n const payload = this.createPayload();\n this.update(payload);\n }\n\n this.cancelEditMap();\n });\n }\n\n cancelEdit() {\n this.editModeOn = false;\n this.genInfo.refreshForm(this.fields);\n this.focus.refreshForm(this.focusFields);\n }\n\n cancelEditMap() {\n this.editMapOn = false;\n this.rebootMap();\n }\n\n updateMapGeom() {\n if (this.target.fields && this.target.fields.Geometry && this.target.fields.Geometry.wkt && this.target.fields.Geometry.type && this.target.fields.Geometry.type === 'exact') {\n const geomObj: PamShapeData = {\n id: this.target.id,\n name: this.target.name,\n fields: {\n Geometry: { ... this.target.fields.Geometry }\n }\n }\n this.slimMap.update(geomObj);\n }\n }\n\n rebootMap() {\n setTimeout(() => {\n this.updateMapGeom();\n }, 250);\n }\n\n createPayload() {\n const genInfoData = this.genInfo.getPayload();\n const focusData = this.focus.getPayload();\n let formattedObj: PamObject = { id: this.target.id, name: this.target.name, fields: {} };\n formattedObj.name = genInfoData.PROJECT_NAME;\n formattedObj.fields.projectType = genInfoData.PROJECT_TYPE;\n formattedObj.fields.projectStatus = genInfoData.PROJECT_STATUS;\n formattedObj.fields.projectNarrative = genInfoData.PROJECT_NARRATIVE;\n formattedObj.fields.projectFocus = focusData.PROJECT_FOCUS;\n formattedObj.fields.projectStrategies = focusData.PROJECT_STRATEGIES;\n formattedObj.fields.Geometry = this.projectGeom?.fields?.Geometry || {};\n formattedObj.fields.Partners = this.partners || []\n\n return formattedObj;\n }\n\n addPartner() {\n let partnerDialog = this.dialog.open(PartnerAddDialogComponent, {\n width: '35rem',\n data: { leadOrg: this.projectLeadOrg, currentPartners: this.partners },\n disableClose: true\n });\n\n\n partnerDialog.afterClosed().subscribe(data => {\n if (data) {\n // If there are data, save\n this.newPartnerData(data);\n const payload = this.createPayload();\n this.update(payload);\n }\n });\n }\n\n removePartner(_) {\n if (_) {\n this.removePartnerData(_)\n const payload = this.createPayload();\n this.update(payload)\n }\n }\n\n removeActivity(_) {\n if (_) {\n this.removeActivityData(_)\n const payload = this.createPayload();\n this.update(payload)\n }\n }\n\n addActivity() {\n let activityDialog = this.dialog.open(ActivityCreateDialogComponent, {\n width: '35rem',\n disableClose: false,\n data: this.target.id\n });\n\n\n activityDialog.afterClosed().subscribe(data => {\n if (data) {\n this.newActivityData(data);\n }\n });\n }\n\n update(obj) {\n const saveRef = this.dialog.open(LoadingDialogComponent, {\n width: '25rem',\n data: \"Saving Project.\",\n disableClose: true\n });\n\n this.api.post(\"Project\", \"Update\", obj).subscribe(res => {\n if (!res.valid) {\n saveRef.close();\n this.dialog.open(ErrorDialogComponent, {\n width: '25rem',\n data: res.messages,\n disableClose: false\n });\n return;\n }\n\n this.handleLoad(res.result)\n saveRef.close();\n\n this.editModeOn = false;\n this.sortActivities();\n this.projGeo.startStatTimer();\n\n }, err => {\n saveRef.close();\n this.dialog.open(ErrorDialogComponent, {\n width: '25rem',\n data: [\"API Error occurred\", err.message],\n disableClose: false\n });\n })\n }\n\n formsAreValid() {\n return this.focus.isValid() && this.genInfo.isValid();\n }\n\n newShapeData(data: PamShapeData) {\n this.projectGeom = data;\n }\n\n newPartnerData(data: any) {\n this.partners.push(data);\n this.sortPartners();\n }\n\n newActivityData(data: any) {\n this.activities.push(data)\n this.sortActivities();\n }\n\n removePartnerData(data: any) {\n this.partners = this.partners.filter(function (obj) {\n return obj.name !== data.name;\n });\n\n this.sortPartners();\n }\n\n removeActivityData(data: any) {\n this.activities = this.activities.filter(function (obj) {\n return obj.name !== data.name;\n });\n\n this.sortActivities();\n }\n\n sortSources() {\n this.sources.sort(function (a, b,) {\n return b.plannedAmount - a.plannedAmount;\n })\n }\n\n sortPartners() {\n this.partners.sort(function (a, b) {\n return a.name.toLowerCase().localeCompare(b.name.toLowerCase());\n });\n }\n\n sortActivities() {\n function getStatusOrder(inVal) {\n switch (inVal) {\n case 'Proposed':\n return 0;\n case 'Planned':\n return 1;\n case 'In Progress':\n return 2;\n case 'Completed':\n return 3;\n case 'Cancelled':\n return 4;\n\n default:\n return 0;\n }\n }\n\n this.activities.sort(\n\n firstBy((a, b) => {\n return b['isSpatial'] - a['isSpatial'];\n })\n .thenBy((a, b) => {\n return (a === \"\" || a['activityUnit'] > b['activityUnit']) ? 1 : (b === \"\" || (b['activityUnit'] > a['activityUnit']) ? -1 : 0)\n })\n .thenBy((a, b) => {\n let aVal = getStatusOrder(a['activityStatus']);\n let bVal = getStatusOrder(b['activityStatus']);\n return aVal < bVal ? -1 : 1\n })\n );\n }\n\n isPartnersEmpty() {\n return this.partners.length === 0 ? true : false;\n }\n\n isActivitiesEmpty() {\n return this.activities.length === 0 ? true : false;\n }\n\n activityRemovalRequest(data: any) {\n console.log('removal reuqest');\n console.log(data);\n const foundData = this.activities.find((act) => { return act.id === data.id });\n if (foundData) {\n console.log('found remove');\n console.log(foundData);\n }\n }\n\n triggerActivityDelete(data: any) {\n const foundData = this.activities.find((act) => { return act.id === data.id });\n if (foundData) {\n let dialogRef = this.dialog.open(ConfirmDialogComponent, {\n width: '35rem',\n data: { title: 'Confirm Delete', text: 'Deleting this Activity will permanently remove it and related details from the Project, and this cannot be undone. Are you sure you want to delete this Activity?', confirm: \"Yes\", cancel: \"No\" },\n disableClose: false\n });\n\n\n dialogRef.afterClosed().subscribe(data => {\n if (data) {\n // Delete\n this.commitDelete(foundData);\n } else {\n // No action needed\n }\n });\n }\n }\n\n async commitDelete(data: any) {\n const delRef = this.dialog.open(LoadingDialogComponent, {\n width: '25rem',\n data: \"Deleting Activity.\",\n disableClose: true\n });\n\n let obj = { id: data.id }\n\n this.api.post(\"Activity\", \"Delete\", obj).subscribe(res => {\n if (!res.valid) {\n delRef.close();\n this.dialog.open(ErrorDialogComponent, {\n width: '25rem',\n data: res.messages,\n disableClose: false\n });\n return;\n }\n\n this.updateActvities();\n delRef.close();\n }, err => {\n delRef.close();\n this.dialog.open(ErrorDialogComponent, {\n width: '25rem',\n data: [\"API Error occurred\", err.message],\n disableClose: false\n });\n })\n }\n\n updateActvities() {\n this.api.post(\"Activity\", \"ReadAll\", { linkToId: this.target.id }).subscribe(results => {\n if (results?.length) {\n this.activities = results;\n this.sortActivities();\n }\n });\n }\n\n @HostListener('window:resize', ['$event'])\n onResize(event?) {\n this.screenHeight = window.innerHeight;\n this.screenWidth = window.innerWidth;\n\n console.log(this.screenWidth);\n\n if (this.screenWidth <= 1366) {\n this.heightValue = '250rem;';\n } else if (this.screenWidth > 1366 && this.screenWidth <= 1600) {\n this.heightValue = '230rem;';\n } else {\n this.heightValue = '182rem;';\n }\n }\n\n // Opportunities And Impediments //\n formatDates(notes: any[]) {\n notes.forEach(note => {\n var d = new Date(0)\n return d.setUTCSeconds(note.lastModified);\n });\n }\n\n getNotes(iid: any) {\n this.api.post(\"Note\", \"ReadAll\", { linkToId: iid }).subscribe(results => {\n this.notes = results;\n\n //split notes into opp and impediment arrays\n this.opportunities = this.notes.filter(function (obj) {\n return obj.isOpportunity === true;\n });\n\n this.impediments = this.notes.filter(function (obj) {\n return obj.isOpportunity === false;\n });\n\n this.sortOpportunities();\n this.sortImpediments();\n\n });\n }\n\n isOpportunitiesEmpty() {\n return this.opportunities.length === 0 ? true : false;\n }\n\n isImpedimentsEmpty() {\n return this.impediments.length === 0 ? true : false;\n }\n\n addOpportunity() {\n let opportunityDialog = this.dialog.open(NoteCreateDialogComponent, {\n width: '35rem',\n disableClose: true,\n data: { \"projectId\": this.target.id, \"isOpportunity\": true }\n });\n\n\n opportunityDialog.afterClosed().subscribe(data => {\n if (data) {\n this.createNote(data);\n }\n });\n }\n\n addImpediment() {\n let impedimentDialog = this.dialog.open(NoteCreateDialogComponent, {\n width: '35rem',\n disableClose: true,\n data: { \"projectId\": this.target.id, \"isOpportunity\": false }\n });\n\n\n impedimentDialog.afterClosed().subscribe(data => {\n if (data) {\n this.createNote(data);\n }\n });\n }\n\n createNote(data: any) {\n let formattedObj: any = {};\n formattedObj.name = data.isOpportunity === true ? \"Opportunity\" : \"Impediment\";\n formattedObj.lastModified = new Date;\n formattedObj.fields = {};\n formattedObj.fields.note = data.note;\n formattedObj.fields.isOpportunity = data.isOpportunity;\n formattedObj.fields.displayName = data.displayName;\n\n\n this.api.post(\"Note\", \"Create\", { linkToId: this.target.id, newObject: formattedObj }).subscribe(result => {\n console.log('result');\n console.log(result);\n if (!result.valid) {\n //Backend validation didnt pass show the errors\n console.error('Error occured');\n }\n else {\n this.getNotes(this.target.id);\n }\n }, error => {\n //Backend gave us a non-200 response\n console.error('Error occured');\n })\n }\n\n triggerOpportunityDelete(data: any) {\n const foundData = this.opportunities.find((opp) => { return opp.id === data.id });\n if (foundData) {\n let dialogRef = this.dialog.open(ConfirmDialogComponent, {\n width: '35rem',\n data: { title: 'Confirm Delete', text: 'Are you sure you want to delete this Opportunity?', confirm: \"Yes\", cancel: \"No\" },\n disableClose: false\n });\n\n\n dialogRef.afterClosed().subscribe(data => {\n if (data) {\n // Delete\n this.commitNoteDelete(foundData);\n } else {\n // No action needed\n }\n });\n }\n }\n\n triggerImpedimentDelete(data: any) {\n const foundData = this.impediments.find((imp) => { return imp.id === data.id });\n if (foundData) {\n let dialogRef = this.dialog.open(ConfirmDialogComponent, {\n width: '35rem',\n data: { title: 'Confirm Delete', text: 'Are you sure you want to delete this Impediment?', confirm: \"Yes\", cancel: \"No\" },\n disableClose: false\n });\n\n\n dialogRef.afterClosed().subscribe(data => {\n if (data) {\n // Delete\n this.commitNoteDelete(foundData);\n } else {\n // No action needed\n }\n });\n }\n }\n\n async commitNoteDelete(data: any) {\n const delRef = this.dialog.open(LoadingDialogComponent, {\n width: '25rem',\n data: \"Deleting Activity.\",\n disableClose: true\n });\n\n let obj = { id: data.id }\n\n this.api.post(\"Note\", \"Delete\", obj).subscribe(res => {\n if (!res.valid) {\n delRef.close();\n this.dialog.open(ErrorDialogComponent, {\n width: '25rem',\n data: res.messages,\n disableClose: false\n });\n return;\n }\n\n this.updateNotes();\n delRef.close();\n }, err => {\n delRef.close();\n this.dialog.open(ErrorDialogComponent, {\n width: '25rem',\n data: [\"API Error occurred\", err.message],\n disableClose: false\n });\n })\n }\n\n updateNotes() {\n this.api.post(\"Note\", \"ReadAll\", { linkToId: this.target.id }).subscribe(results => {\n this.getNotes(this.target.id)\n });\n }\n\n\n sortOpportunities() {\n this.opportunities.sort(function (a, b) {\n return Date.parse(b.lastModified) - Date.parse(a.lastModified);\n });\n }\n\n sortImpediments() {\n this.impediments.sort(function (a, b) {\n return Date.parse(b.lastModified) - Date.parse(a.lastModified);\n });\n }\n}\n","\n
\n\n \n
\n\n \n
\n\n \n
\n

{{ this.projectName }}

\n
\n\n \n \n\n \n
\n\n \n
\n\n \n\n
\n\n \n \n Project Map\n
\n \n \n
\n
\n \n \n \n \n
\n
\n \n\n \n
\n\n \n \n General Information\n \n
\n \n \n
\n
\n \n
\n
Project ID
\n
{{ this.target.id || '' }}
\n
Coordinating Organization
\n
{{ this.projectLeadOrg || '' }}\n
\n
\n
\n \n
\n
GIS Acres
\n
\n {{ this.target?.fields?.Geometry?.acres | number : '1.1-1' || '' }}
\n
\n
\n
\n
\n
Date Created
\n
{{this.target.created | date: 'shortDate'}}
\n
Last Modified
\n
{{this.target.modified | date: 'shortDate'}}
\n
\n
\n
\n
\n\n \n
\n\n
\n \n \n Activities\n \n
\n \n
\n
\n \n
= 3}\">\n
    \n
  • \n \n \n
  • \n
\n
\n
\n
No activities have been added for this Project.\n
\n
\n
\n
\n
\n\n \n
\n \n \n Project Focus & Strategies\n \n
\n \n \n
\n
\n \n = 7 }\">\n
\n \n
\n \n \n
\n
\n\n \n
\n\n
\n \n \n Project Partners\n \n
\n \n
\n
\n \n
= 4}\">\n
    \n
  • \n \n
  • \n
\n
\n
\n
No partners have been added for this Project.
\n
\n
\n
\n
\n\n \n
\n \n \n Project Geography\n \n \n \n
\n \n
\n
\n
\n
\n\n \n
\n\n \n
\n\n \n
\n \n \n Opportunities\n \n
\n \n
\n
\n \n
\n
    \n
  • \n \n \n
  • \n
\n
\n
No Opportunities have been added for this\n Project.
\n
\n
\n
\n
\n
\n\n \n
\n \n \n Impediments\n \n
\n \n
\n
\n \n
\n
    \n
  • \n \n \n
  • \n
\n
\n
No Impediments have been added for this Project.\n
\n
\n
\n
\n
\n
\n\n
\n\n \n
\n
\n \n \n Funding Summary\n
\n \"tooltip\"\n
\n
\n
\n
\n \n
0\">\n
Project Summary
\n
\n \n \n
\n
\n
Funding Sources
\n
    \n
  • \n \n \n
  • \n
\n
\n
\n
\n
No Funding Sources have been added for this\n Project.\n
\n
\n
\n
\n
\n
\n\n
\n \n
\n","import { Component, OnInit } from '@angular/core';\n\n\n@Component({\n selector: 'app-project',\n templateUrl: './project.component.html',\n styleUrls: ['./project.component.scss']\n})\nexport class ProjectComponent implements OnInit {\n\n constructor() { }\n\n ngOnInit(): void {\n }\n\n}","\n","import { Component, OnInit } from '@angular/core';\nimport { MatDialogRef } from '@angular/material/dialog';\n\n@Component({\n selector: 'app-register-error-dialog',\n templateUrl: './register-error-dialog.component.html',\n styleUrls: ['./register-error-dialog.component.scss']\n})\nexport class RegisterErrorDialogComponent implements OnInit {\n\n constructor(private dialogRef: MatDialogRef) { }\n\n ngOnInit(): void {\n }\n\n onNoClick(): void {\n this.dialogRef.close();\n }\n\n}\n","
\n
\n
\n

\n Please indicate which Organization you are requesting Project Editor capabilities for.\n

\n
\n
\n
\n
\n
\n \n
\n
\n","import { AfterViewInit, Component, OnInit, QueryList, ViewChildren } from '@angular/core';\nimport { FormControl, FormGroupDirective, NgForm, Validators, ValidatorFn, AbstractControl } from '@angular/forms';\nimport { MatDialog } from '@angular/material/dialog';\nimport { MatFormField } from '@angular/material/form-field';\nimport { RegistrationService, RegistrationUser } from '../registration.service'\nimport { Organization } from '../_shared/models/user.model';\nimport { ApiService } from '../_shared/services/api.service';\nimport { RegisterErrorDialogComponent } from './register-error-dialog/register-error-dialog.component';\nimport { AuthorizationService } from '../_shared/services/authorization.service';\nimport { Router } from '@angular/router';\n\n// Used for keeping track of the step in the registration process\nexport enum Steps {\n Enter,\n Communicating,\n Next,\n Error\n}\n\n@Component({\n selector: 'app-register',\n templateUrl: './register.component.html',\n styleUrls: ['./register.component.scss']\n})\nexport class RegisterComponent implements OnInit, AfterViewInit {\n\n emailFormControl!: FormControl;\n firstFormControl!: FormControl;\n lastFormControl!: FormControl;\n editorFormControl!: FormControl;\n orgFormControl!: FormControl;\n\n orgs: any[];\n\n // Keep track of the current step\n step: Steps = Steps.Enter;\n\n // Expose all the possible steps to the template\n Steps = Steps;\n\n // Forms workaround\n @ViewChildren(MatFormField) formFields: QueryList;\n\n // Temp password\n temporaryPassword: string;\n showCopiedMessage = false;\n\n constructor(\n private registration: RegistrationService,\n private api: ApiService,\n private dialog: MatDialog, \n private auth: AuthorizationService,\n private router: Router\n ) { }\n\n ngOnInit(): void {\n this.api.get(\"Organization\", \"GetAll\", false).subscribe(result => {\n result.sort(function(a,b){\n return a.name.toLowerCase().localeCompare(b.name.toLowerCase());\n });\n this.orgs = result;\n });\n\n this.emailFormControl = new FormControl('', [\n Validators.required,\n Validators.email,\n ]);\n\n this.firstFormControl = new FormControl('', [\n Validators.required\n ]);\n\n this.lastFormControl = new FormControl('', [\n Validators.required\n ]);\n\n this.editorFormControl = new FormControl('', []);\n this.editorFormControl.setValue(false);\n\n this.orgFormControl = new FormControl('', [])\n this.orgFormControl.setValue('None - General Public')\n }\n\n ngAfterViewInit(): void {\n // (╯ ͠° ͟ʖ ͡°)╯┻━┻ https://github.com/angular/components/issues/15027\n setTimeout(() => this.formFields.forEach(ff => ff.updateOutlineGap()), 100);\n }\n\n resetEditor(){\n this.editorFormControl.reset();\n this.editorFormControl.setValue(true);\n }\n\n // Returns true if the input is valid across all fields.\n isValid(): boolean {\n return this.emailFormControl.valid &&\n this.firstFormControl.valid &&\n this.lastFormControl.valid &&\n this.orgFormControl.valid;\n }\n\n validEditor(){\n return this.orgFormControl.value === 'None - General Public' && this.editorFormControl.value === true;\n }\n\n register() {\n if(!this.validEditor())\n {\n // Set the step to communicating so the frontend can display \"progress\"\n this.step = Steps.Communicating;\n\n\n // Create a registration user from the form\n let ru: RegistrationUser = new RegistrationUser();\n\n ru.email = this.emailFormControl.value;\n\n ru.first = this.firstFormControl.value;\n ru.last = this.lastFormControl.value;\n ru.org = this.orgFormControl.value;\n\n // General users may be implied and thus this may be removed in the near future\n // ru.general =\n // typeof this.generalFormControl.value === \"boolean\" ? this.generalFormControl.value : false;\n\n ru.editor =\n typeof this.editorFormControl.value === \"boolean\" ? this.editorFormControl.value : false;\n\n // Call the registration service to handle the dirty work\n this.registration.registerUser(ru).subscribe((result) => {\n // The API can respond with valid = false if the account doesnt exist or the api cannot be reached. \n if (result.valid) {\n this.temporaryPassword = result.temporaryPassword;\n // Update the step to give the user feedback on what to do next\n this.step = Steps.Next;\n }\n else {\n console.log(result);\n // Something went wrong. Show it to the user.\n this.step = Steps.Error;\n }\n });\n\n } else {\n this.resetEditor();\n this.openDialog();\n }\n\n\n }\n\n // Go back to being able to enter data without clearing the form\n return() {\n this.step = Steps.Enter;\n }\n\n openDialog() {\n const dialogRef = this.dialog.open(RegisterErrorDialogComponent, {\n width: '35rem',\n data: {}\n });\n\n dialogRef.afterClosed().subscribe(result => {\n // Do nothing\n });\n }\n\n login(): void {\n this.auth.authorize().subscribe(login => {\n // Go back to the home page\n this.router.navigate(['/']);\n });\n }\n\n copyToClipboard(value: string) {\n const selBox = document.createElement('textarea');\n selBox.style.position = 'fixed';\n selBox.style.left = '0';\n selBox.style.top = '0';\n selBox.style.opacity = '0';\n selBox.value = value;\n document.body.appendChild(selBox);\n selBox.focus();\n selBox.select();\n document.execCommand('copy');\n document.body.removeChild(selBox);\n\n this.showCopiedMessage = true;\n setTimeout(() => this.showCopiedMessage = false, 3000); // hides the message after 3 seconds\n }\n\n}\n","\n \n \n
\n

Sign Up

\n
\n\n
\n \n Email\n \n \n
\n\n
\n \n First Name\n \n \n
\n\n
\n \n Last Name\n \n \n
\n\n \n \n\n \n
\n Do you need editing capabilities?
\n As a Project Editor, you may do the following:\n
    \n
  • Create Projects for your Organization
  • \n
  • \n Add Activities to your Organization's Projects, and to Projects\n that your Organization is a listed partner for\n
  • \n
\n
\n Yes, I want to request access to the above features.\n \n
\n \n\n
\n \n Organization\n \n \n {{ org.name }}\n \n \n \n
\n\n \n
\n Don't see your Organization in this list yet? Contact us\n here to request it\n be added. In the meantime, you can register using the 'None - General\n Public' option to begin viewing the projects in the Portal.\n
\n \n\n
\n \n \n SIGN UP\n \n
\n \n \n\n \n

Signing Up

\n \n \n\n \n
\n

Almost There.

\n
\n
\n \"check\"\n
\n \n \n \n

You have successfully signed up for the New Mexico Shared Stewardship Portal.

\n

\n Your temporary password is\n {{ this.temporaryPassword }}\n \n (click the password to copy). Once you sign in you will be required to change your password.\n \n
\n \n Copied temp password to clipboard.\n \n

\n

\n Please copy your temporary password and use it the first time you sign\n in with your email.\n

\n\n\n \n \n \n\n \n
\n

Something went wrong!

\n
\n\n

\n This may occur if a user with that email already exists. If you think\n this may be the case, use the \"Forgot Password\" link from the Sign In\n screen.\n

\n\n

\n Click the Retry button below to return to the form so that you can try\n again or the Back to Home link to return to the home screen.\n

\n\n
\n \n
\n\n \n \n \n\n","import { Injectable } from '@angular/core';\n\nimport { ConfigurationService, AuthConfig } from './_shared/services/configuration.service';\nimport { HttpClient, HttpHeaders } from '@angular/common/http';\nimport { Observable, ReplaySubject } from 'rxjs';\nimport { ApiService } from './_shared/services/api.service';\n\n\n//This is our DTO to submit a registration to the system\nexport class RegistrationUser {\n\n public email: string;\n public password : string;\n public first: string;\n public last: string;\n public org: string;\n\n public general: boolean;\n public editor: boolean;\n\n public registered: boolean;\n\n public temporaryPassword?: string;\n\n constructor() {\n this.registered = false;\n }\n}\n\nexport class ForgotPasswordUser {\n public email: string;\n}\n\n//This represents a validation result from the system\nexport class Validation {\n public valid: boolean;\n public result: e;\n temporaryPassword?: string;\n}\n\n//This handles registration of users in the system\n@Injectable({\n providedIn: 'root'\n})\nexport class RegistrationService {\n private dataSubject: ReplaySubject> = new ReplaySubject>(1);\n private forgotPasswordDataSubject: ReplaySubject> = new ReplaySubject>(1);\n\n constructor(private api : ApiService, private config: ConfigurationService) {\n }\n\n public registerUser(user: RegistrationUser): Observable> {\n this.dataSubject = new ReplaySubject>(1);\n this.config.getConfig().subscribe((config) => {\n\n this.api.post>(\"User\", \"Register\", user, false).subscribe(res => {\n this.dataSubject.next(res)\n }, err => {\n console.log(err);\n this.dataSubject.next(\n {\n valid: false,\n result: user\n })\n });\n });\n\n return this.dataSubject;\n }\n\n public forgotPassword(user: ForgotPasswordUser): Observable> {\n this.forgotPasswordDataSubject = new ReplaySubject>(1);\n this.config.getConfig().subscribe((config) => {\n\n this.api.post>(\"User\", \"ForgotPassword\", user, false).subscribe(res => {\n this.forgotPasswordDataSubject.next(res)\n }, err => {\n console.log(err);\n this.forgotPasswordDataSubject.next(\n {\n valid: false,\n result: user\n })\n });\n });\n\n return this.forgotPasswordDataSubject;\n }\n}\n","import { Directive, Input, ElementRef, OnInit, SimpleChanges, OnChanges } from '@angular/core';\nimport { AuthorizationService } from './_shared/services/authorization.service';\n\n@Directive({\n selector: '[appRequireACL]'\n})\nexport class RequireACLDirective implements OnInit {\n ngOnInit(): void {\n if (this.appRequireACL != undefined) {\n if (!this.auth.isLoggedIn())\n this.el.nativeElement.classList.add(\"hide\");\n\n this.auth.onLogin().subscribe(login => {\n\n if (login.acls && login.acls.includes(this.appRequireACL))\n this.el.nativeElement.classList.remove(\"hide\");\n else {\n this.el.nativeElement.classList.add(\"hide\");\n }\n })\n }\n }\n\n @Input('appRequireACL') appRequireACL: string | undefined;\n\n constructor(private auth: AuthorizationService, private el: ElementRef) {\n }\n\n}\n\n\n@Directive({\n selector: '[appRequireOrg]'\n})\nexport class RequireOrgDirective implements OnInit {\n ngOnInit(): void {\n if (this.appRequireOrg != undefined) {\n if (!this.auth.isLoggedIn())\n this.el.nativeElement.classList.add(\"hide\");\n\n this.auth.onLogin().subscribe(login => {\n\n if (this.appRequireOrg && login.orgs.organization && login.orgs.organization !== 'None - General Public')\n this.el.nativeElement.classList.remove(\"hide\");\n else {\n this.el.nativeElement.classList.add(\"hide\");\n }\n })\n }\n }\n\n @Input('appRequireOrg') appRequireOrg: boolean | undefined;\n\n constructor(private auth: AuthorizationService, private el: ElementRef) {\n }\n\n}\n\n\n@Directive({\n selector: '[appRequireSameOrg]'\n})\nexport class RequireSameOrgDirective implements OnInit {\n ngOnInit(): void {\n if (this.leadOrg != undefined) {\n if (!this.auth.isLoggedIn())\n this.el.nativeElement.classList.add(\"hide\");\n\n this.auth.onLogin().subscribe(login => {\n\n if (this.leadOrg && login.orgs.organization && login.orgs.organization === this.leadOrg)\n this.el.nativeElement.classList.remove(\"hide\");\n else {\n this.el.nativeElement.classList.add(\"hide\");\n }\n })\n }\n }\n\n @Input('appRequireSameOrg') leadOrg: string | undefined;\n\n constructor(private auth: AuthorizationService, private el: ElementRef) {\n }\n\n}\n\n\n@Directive({\n selector: '[appRequireACLAndSameOrg]'\n})\nexport class RequireACLAndSameOrgDirective implements OnInit, OnChanges {\n ngOnInit(): void {\n this.check();\n }\n\n ngOnChanges(change: SimpleChanges) {\n this.check();\n }\n\n private check() {\n if (this.appRequireACLAndOrg != undefined) {\n if (!this.auth.isLoggedIn())\n this.el.nativeElement.classList.add(\"hide\");\n\n this.auth.onLogin().subscribe(login => {\n\n if (\n this.appRequireACLAndOrg &&\n this.appRequireACLAndOrg.length === 2 &&\n login.acls &&\n login.acls.includes(this.appRequireACLAndOrg[0]) &&\n login.orgs.organization &&\n login.orgs.organization === this.appRequireACLAndOrg[1]\n )\n this.el.nativeElement.classList.remove(\"hide\");\n else {\n this.el.nativeElement.classList.add(\"hide\");\n }\n })\n }\n }\n\n @Input('appRequireACLAndSameOrg') appRequireACLAndOrg: string[] | undefined;\n\n constructor(private auth: AuthorizationService, private el: ElementRef) {\n }\n\n}\n\n\n\n@Directive({\n selector: '[appRequireAclEapoPartner]'\n})\nexport class RequireAclEapoPartner implements OnInit, OnChanges {\n ngOnInit(): void {\n this.check();\n }\n\n ngOnChanges(change: SimpleChanges) {\n this.check();\n }\n\n private check() {\n if (this.appRequireAclEapoPartner != undefined) {\n if (!this.auth.isLoggedIn())\n this.el.nativeElement.classList.add(\"hide\");\n\n this.auth.onLogin().subscribe(login => {\n let partners = [];\n if (this.appRequireAclEapoPartner.length >= 3 && this.appRequireAclEapoPartner[2]) {\n partners = this.appRequireAclEapoPartner[2].map((data) => {\n return data.name;\n });\n }\n\n if (\n this.appRequireAclEapoPartner &&\n this.appRequireAclEapoPartner.length === 3 &&\n login.acls &&\n login.acls.includes(this.appRequireAclEapoPartner[0]) &&\n (\n login.orgs.organization &&\n (login.orgs.organization === this.appRequireAclEapoPartner[1] ||\n partners.includes(login.orgs.organization))\n )\n ) {\n this.el.nativeElement.classList.remove(\"hide\");\n } else {\n this.el.nativeElement.classList.add(\"hide\");\n }\n })\n }\n }\n\n @Input('appRequireAclEapoPartner') appRequireAclEapoPartner: any[] | undefined;\n\n constructor(private auth: AuthorizationService, private el: ElementRef) {\n }\n\n}\n\n\n\n@Directive({\n selector: '[appRequireAnyACL]'\n})\nexport class RequireAnyACLDirective implements OnInit {\n ngOnInit(): void {\n if (this.appRequireACL != undefined && this.appRequireACL.length > 0) {\n if (!this.auth.isLoggedIn()) {\n this.el.nativeElement.classList.add(\"hide\");\n }\n\n this.auth.onLogin().subscribe(login => {\n for (let acl of this.appRequireACL) {\n if (login.acls && login.acls.includes(acl)) {\n this.el.nativeElement.classList.remove(\"hide\");\n return;\n }\n }\n this.el.nativeElement.classList.add(\"hide\");\n })\n }\n }\n\n @Input('appRequireAnyACL') appRequireACL: string[] | undefined;\n\n constructor(private auth: AuthorizationService, private el: ElementRef) {\n }\n\n}\n","import { Injectable } from '@angular/core';\nimport { Router, ActivatedRouteSnapshot, RouterStateSnapshot } from '@angular/router';\nimport { AuthorizationService } from './_shared/services/authorization.service';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class RouteGuardService {\n\n constructor(private router: Router, private auth: AuthorizationService) { }\n canActivate(next: ActivatedRouteSnapshot, state: RouterStateSnapshot): boolean {\n if (next.data && next.data.acls && next.data.acls.length) {\n if (!this.auth.isLoggedIn()) {\n console.log(\"User is not logged in!\");\n this.router.navigate(['/authorizing'], { queryParams: { redirectTo: state.url } });\n return false;\n }\n\n let login = this.auth.getLogin();\n\n if (next.data.mustHaveOrg) {\n if (!login.orgs.organization || login.orgs.organization === 'None - General Public') {\n return false;\n }\n }\n\n if (!login.acls || login.acls.length == 0)\n return false;\n\n for (let acl of next.data.acls)\n if (!login.acls.includes(acl)) {\n console.log(\"User doesnt have the permission\", acl)\n this.router.navigate(['/app/map']);\n return false;\n }\n\n return true;\n }\n\n return true;\n }\n}\n","import { HomeComponent } from './home/home.component';\nimport { NgModule } from '@angular/core';\nimport { Routes, RouterModule } from '@angular/router';\n\nimport { NotFoundComponent } from './not-found/not-found.component';\nimport { RegisterComponent } from './register/register.component';\nimport { MapComponent } from './map/map.component';\nimport { environment } from 'src/environments/environment';\nimport { AdminComponent } from './admin/admin.component';\nimport { UsersComponent } from './admin/users/users.component';\nimport { AuthorizingComponent } from './authorizing/authorizing.component';\nimport { AllCardsViewComponent } from './dashboard/all-cards-view/all-cards-view.component';\nimport { CardViewComponent } from './dashboard/card-view/card-view.component';\nimport { DashboardComponent } from './dashboard/dashboard.component';\nimport { LoginComponent } from './login/login.component';\nimport { LogoutComponent } from './logout/logout.component';\nimport { MainComponent } from './main/main.component';\nimport { MockauthComponent } from './mockauth/mockauth.component';\nimport { RouteGuardService } from './route-guard.service';\nimport { TestComponent } from './test/test.component';\nimport { HomeMainComponent } from './home-main/home-main.component';\nimport { ProjectComponent } from './project/project.component';\nimport { ProjectCreateComponent } from './project/project-create/project-create.component';\nimport { ProjectViewComponent } from './project/project-view/project-view.component';\nimport { ActivityComponent } from './activity/activity.component';\nimport { ActivityCreateComponent } from './activity/activity-create/activity-create.component';\nimport { ActivityViewComponent } from './activity/activity-view/activity-view.component';\nimport { FocalComponent } from './focal/focal.component';\nimport { FocalViewComponent } from './focal/focal-view/focal-view.component';\nimport { ProjectFilterComponent } from './project-filter/project-filter.component';\nimport { OrganizationsComponent } from './admin/organizations/organizations.component';\nimport { FocalReportComponent } from './focal/focal-report/focal-report.component';\nimport { ForgotPasswordComponent } from './forgot-password/forgot-password.component';\n\nexport const isMock = environment.mock;\n\n\nconst routes: Routes = [\n { path: '', component: HomeComponent },\n {\n path: 'app', component: MainComponent, children:\n [\n { path: 'map', component: MapComponent },\n {\n path: 'home', component: HomeMainComponent, canActivate: [RouteGuardService], data: { acls: [\"Home:Access\"], mustHaveOrg: true }\n },\n {\n path: 'project', component: ProjectComponent,\n children: [\n { path: 'create', component: ProjectCreateComponent, canActivate: [RouteGuardService], data: { acls: [\"Project:Create\"], mustHaveOrg: true } },\n { path: 'view', component: ProjectViewComponent, canActivate: [RouteGuardService], data: { mustHaveOrg: true } }\n ]\n },\n {\n path: 'focal', component: FocalComponent,\n children: [\n { path: 'view', component: FocalViewComponent },\n { path: 'report', component: FocalReportComponent }\n ]\n },\n {\n path: 'activity', component: ActivityComponent,\n children: [\n { path: 'create', component: ActivityCreateComponent, canActivate: [RouteGuardService], data: { acls: [\"Activity:Create\"], mustHaveOrg: true } },\n { path: 'view', component: ActivityViewComponent, canActivate: [RouteGuardService], data: { mustHaveOrg: true } }\n ]\n },\n {\n path: 'manage', component: ProjectFilterComponent,\n children: [\n { path: 'all', component: ProjectFilterComponent },\n { path: 'view', component: ProjectFilterComponent },\n ]\n },\n {\n path: 'admin', component: AdminComponent, children:\n [{ path: 'users', component: UsersComponent },\n { path: 'orgs', component: OrganizationsComponent }]\n },\n {\n path: 'dashboard', component: DashboardComponent, children:\n [{ path: 'all', component: AllCardsViewComponent }\n , { path: 'view', component: CardViewComponent }\n ]\n }\n ]\n },\n { path: 'login', component: LoginComponent },\n { path: 'logout', component: LogoutComponent },\n { path: 'register', component: RegisterComponent },\n { path: 'forgot', component: ForgotPasswordComponent },\n { path: 'authorizing', component: AuthorizingComponent },\n { path: 'test', component: TestComponent },\n { path: '**', component: NotFoundComponent },\n];\n\n\nconst mockRoutes: Routes = [\n { path: 'mockauth', component: MockauthComponent }\n]\n\nif (isMock) {\n for (let rte of mockRoutes)\n routes.unshift(rte);\n}\n\n@NgModule({\n imports: [RouterModule.forRoot(routes, { useHash: true })],\n exports: [RouterModule]\n})\nexport class AppRoutingModule { }\n","import { Component, OnInit } from '@angular/core';\nimport { Router } from '@angular/router';\n\n@Component({\n selector: 'app-shared-nav',\n templateUrl: './shared-nav.component.html',\n styleUrls: ['./shared-nav.component.scss']\n})\nexport class SharedNavComponent implements OnInit {\n\n links: Link[] =\n [\n { name: \"homeLink\", acl: \"Home:Access\", link: \"/app/home\", matchingPaths: [], display: \"Home\", org: true },\n { name: \"mapLink\", acl: \"Map:Access\", link: \"/app/map\", matchingPaths: [], display: \"Explorer\" },\n { name: \"dashboardLink\", acl: \"Map:Access\", link: \"/app/dashboard/all\", matchingPaths: [\"/app/dashboard/view\"], display: \"Dashboard\" },\n { name: \"managementLink\", acl: \"Search:Access\", link: \"/app/manage/all\", matchingPaths: [\"/app/manage/view\"], display: \"Search\" },\n { name: \"accessManagerLink\", acl: \"Manage:Access\", link: \"/app/admin/users\", matchingPaths: [], display: \"Manage Users\" },\n { name: \"accessManagerLink\", acl: \"Admin:Access\", link: \"/app/admin/orgs\", matchingPaths: [], display: \"Manage Orgs\" },\n ]\n\n constructor(private router: Router) { }\n\n ngOnInit(): void {\n }\n\n active(link: Link): boolean {\n if (this.router.isActive(link.link, false))\n return true;\n\n for (let path of link.matchingPaths) {\n if (this.router.isActive(path, false))\n return true;\n }\n\n return false;\n\n }\n\n}\n\nexport interface Link {\n name: string;\n acl: string;\n link: string;\n matchingPaths: string[];\n display: string;\n org?: boolean;\n}\n","\n","import { Component, OnInit } from '@angular/core';\nimport { AuthorizationService } from '../_shared/services/authorization.service';\n\n@Component({\n selector: 'app-slim-login',\n templateUrl: './slim-login.component.html',\n styleUrls: ['./slim-login.component.scss']\n})\nexport class SlimLoginComponent implements OnInit {\n\n displayName : string = \"Not Logged In\";\n\n constructor(private authorization : AuthorizationService)\n {\n this.authorization.onLogin().subscribe((lo) => {\n this.displayName = lo.getName();\n });\n }\n\n ngOnInit(): void {\n }\n\n login() : void {\n this.authorization.authorize().subscribe((login) =>\n {\n\n })\n }\n\n logout() : void {\n this.authorization.logout();\n }\n\n isLoggedIn() : boolean {\n return this.authorization.isLoggedIn();\n }\n\n getUsername() : string {\n return this.authorization.getLogin().getName() || this.displayName;\n }\n\n ready() : boolean\n {\n return true;\n }\n}\n","\n

\n Welcome, {{getUsername()}}\n

\n

Loading

","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { Observable, Subject, Subscription } from 'rxjs';\nimport { Import, ImportState } from '../map/import';\nimport { MapCategory } from '../_shared/models/map/config.model';\nimport { FeatureTypes } from '../_shared/models/map/feature-type.model';\nimport { PamShapeData } from '../_shared/models/pam-object.model';\nimport { ConfiguredIdentifySources } from '../_shared/services/map/identify.service';\nimport { MapService } from '../_shared/services/map/map.service';\nimport { PlugmapAPIService } from '../_shared/services/map/plugmap-api.service';\nimport { FixedLengthArray } from '../_shared/types/fixed-length-array';\nimport { LoadingDialogComponent } from '../loading-dialog/loading-dialog.component';\nimport { ErrorDialogComponent } from '../map/error-dialog/error-dialog.component';\nimport { MatDialog } from '@angular/material/dialog';\nimport { ImportDialogComponent } from '../import/import-dialog/import-dialog.component';\n\ndeclare var ol: any;\ndeclare var famMap: any;\ndeclare var window: any;\n\n@Component({\n selector: 'app-slim-map',\n templateUrl: './slim-map.component.html',\n styleUrls: ['./slim-map.component.scss']\n})\nexport class SlimMapComponent implements OnInit {\n // Map initial config\n @Input() mapCenter: FixedLengthArray<[number, number]> = [-106.1895148695699, 34.51098276276389]; // Default to centroid of NM\n @Input() defaultZoom: number = 6;\n @Input() maxZoom: number = 22;\n @Input() minZoom: number = 3;\n @Input() defaultExtent: FixedLengthArray<[number, number, number, number]> = [-13668904.318687698, 3470227.515307423, -9973021.127042854, 4725017.771636881];\n @Input() showEditCreateButtons: boolean = false;\n @Input() mainMapId = 'mgmap';\n @Input() featureName: string = 'Project';\n @Input() fillColor: string = 'rgba(0,77,168,0.8)';\n @Input() strokeColor: string = 'rgba(0,77,168,0.95)';\n @Input() hideControls = false;\n\n // Outputs\n @Output() shapeUpdated = new EventEmitter();\n @Output() editModeChanged = new EventEmitter();\n\n // Map data\n private mapConfigSub: Subscription;\n private mapDrawSub: Subscription;\n private mapConfigLoaded = false;\n\n // Import data\n importEnabled: boolean = false;\n import: Import = new Import(this.identify);\n\n ImportState = ImportState;\n\n // Layer and feature data\n mapCategories: MapCategory[];\n highlightLayer: any;\n refLayer: any;\n wkt: any;\n drawnShape: any;\n drawLayer: any;\n featureType: string;\n editingName = false;\n editingBounds = false;\n target: any = { fields: {} };\n estAcres: number;\n\n // Overlays\n private assessmentEditOverlay: any;\n private importOverlay: any;\n assessmentOverlayContainerHeight: number;\n importOverlayContainerHeight: number;\n showHelp = false;\n\n constructor(\n private mapService: MapService,\n private mapAPI: PlugmapAPIService,\n private identify: ConfiguredIdentifySources,\n private dialog: MatDialog\n ) { }\n\n ngOnInit(): void {\n this.bootMap();\n\n this.mapConfigSub = this.mapService.getSlimMapConfig().subscribe(config => {\n if (config && !this.mapConfigLoaded) {\n // On first map theme load\n this.mapCategories = config;\n this.mapConfigLoaded = true;\n this.mapAPI.setCategories(config);\n this.mapAPI.turnLayerOnByKey('lyr_esri_topo');\n } else if (config) {\n // Add any routines that need to listen for other theme changes\n }\n });\n }\n\n refreshMap() {\n this.mapAPI.refreshMap();\n }\n\n isDrawing(): boolean {\n return this.mapAPI.isDrawing();\n }\n\n hasArea(): boolean {\n return this.mapAPI.hasShape();\n }\n\n bootMap(): void {\n this.mapAPI.createMap(this.mainMapId, this.mapCenter, this.defaultZoom, this.maxZoom, this.minZoom);\n setTimeout(() => { famMap.getMap().handleResize_() }, 500);\n\n this.installExtensions();\n }\n\n private installExtensions(): void {\n this.mapAPI.initDraw();\n\n let map = famMap.getMap();\n\n let zte = new ol.control.ZoomToExtent({\n extent: this.defaultExtent,\n });\n\n zte.handleClickOld = zte.handleClick_;\n let that = this;\n\n // Zoom workaround\n zte.handleZoomToExtent = function () {\n let sd = document.getElementsByName('map-drawer');\n let mp = this.getMap();\n let vw = mp.getView();\n\n let pudding = [0, 0, 0, 0];\n if (sd.length)\n pudding[3] += sd[0].offsetWidth;\n\n vw.fit(that.defaultExtent, {\n size: mp.getSize(),\n duration: 1000,\n padding: pudding\n });\n\n\n // Override if there is a feature\n if (that.target.fields && that.target.fields.Geometry && that.target.fields.Geometry.wkt) {\n let obj = { wkt: that.target.fields.Geometry.wkt, left: 0, bottom: 0 };\n that.mapAPI.fitToWKT(obj);\n }\n }\n\n let sl = new ol.control.ScaleLine({ units: 'us' });\n map.controls.extend([zte, sl]);\n\n let assessmentEditOverlayContainer = document.getElementById('assessmentEditOverlay');\n this.assessmentOverlayContainerHeight = assessmentEditOverlayContainer.offsetHeight;\n\n let importOverlayContainer = document.getElementById('importOverlay');\n this.importOverlayContainerHeight = importOverlayContainer.offsetHeight;\n\n this.assessmentEditOverlay = new ol.Overlay({\n element: assessmentEditOverlayContainer,\n positioning: 'bottom-center',\n autoPan: {\n margin: 20\n }\n });\n\n this.importOverlay = new ol.Overlay({\n element: importOverlayContainer,\n positioning: 'bottom-center',\n autoPan: {\n margin: 20\n }\n });\n\n map.addOverlay(this.assessmentEditOverlay);\n map.addOverlay(this.importOverlay);\n\n }\n\n onLayerSelect(e) {\n switch (e.value) {\n case 'topo':\n this.mapAPI.turnLayerOnByKey('lyr_esri_topo');\n break;\n case 'aerial':\n this.mapAPI.turnLayerOnByKey('lyr_esri_world_image');\n break;\n case 'streets':\n this.mapAPI.turnLayerOnByKey('lyr_esri_streets');\n break;\n case 'grey':\n this.mapAPI.turnLayerOnByKey('lyr_esri_light_gray');\n break;\n default:\n this.mapAPI.turnLayerOnByKey('lyr_esri_topo');\n break;\n }\n }\n\n activateEditing() {\n this.editingBounds = true;\n this.editModeChanged.emit(this.editingBounds);\n }\n\n deactivateEditing() {\n this.editingBounds = false;\n this.editModeChanged.emit(this.editingBounds);\n }\n\n drawNewAssessmentArea() {\n\n this.dismissImport();\n\n this.activateEditing();\n\n let dblClickInteraction;\n // Find DoubleClickZoom interaction\n famMap.getMap().getInteractions().getArray().forEach(function (interaction) {\n if (interaction instanceof ol.interaction.DoubleClickZoom) {\n dblClickInteraction = interaction;\n }\n });\n\n // Remove from map\n if (dblClickInteraction)\n famMap.getMap().removeInteraction(dblClickInteraction);\n\n\n let draw = this.mapAPI.startDrawingPolygon();\n\n if (!this.mapDrawSub)\n this.mapDrawSub =\n draw.subscribe(this.handleDrawResult.bind(this));\n this.featureType = FeatureTypes.Custom;\n }\n\n importShapeFile() {\n\n let dialogRef = this.dialog.open(ImportDialogComponent, {\n width: '35rem',\n disableClose: false\n });\n\n dialogRef.afterClosed().subscribe(data => {\n if (data) {\n data.forEach(element => {\n let draw = this.mapAPI.setFeatsGeoJSON(element);\n\n if (this.mapDrawSub)\n this.mapDrawSub.unsubscribe();\n\n this.mapDrawSub = draw.subscribe(this.handleImportResult.bind(this));\n });\n }\n });\n }\n\n handleImportResult(newShape) {\n // The plugin will emit an event with an empty shape when drawing is started. We handle this by not handling it\n if (!newShape) return;\n\n if (this.drawnShape)\n this.clearBounds();\n\n this.drawnShape = newShape;\n\n this.populateDrawLayer();\n\n this.activateEditing();\n\n if (!this.drawLayer) return; // Something bork\n\n let feat = this.drawLayer.getSource().getFeatureById(newShape.olUID);\n\n if (!feat)\n // Something bad happened\n feat = this.drawLayer.getSource().getFeatures()[0];\n\n if (!feat) {\n return;\n }\n\n if (this.mapDrawSub)\n this.mapDrawSub.unsubscribe();\n\n this.mapDrawSub =\n this.mapAPI.getShapeChange().subscribe(this.handleDrawResult.bind(this));\n\n this.zoomToFeature(feat);\n\n }\n\n zoomToFeature(feat: any, pudding?: number[]) {\n let sd = document.getElementsByName(\"map-drawer\");\n let map = famMap.getMap();\n let view = map.getView();\n\n if (!pudding)\n pudding = [200, 200, 200, 200];\n if (sd.length)\n pudding[3] += sd[0].offsetWidth;\n\n view.fit(feat.getGeometry(), {\n size: map.getSize(),\n duration: 1000,\n padding: pudding\n });\n }\n\n dismissImport() {\n this.importEnabled = false;\n this.import.clear();\n this.importOverlay.setPosition(undefined);\n if (this.highlightLayer)\n this.highlightLayer.getSource().clear();\n }\n\n handleDrawResult(newShape) {\n //The plugin will emit an event with an empty shape when drawing is started. We handle this by not handling it\n if (!newShape) return;\n\n this.drawnShape = newShape;\n\n this.featureType = FeatureTypes.Custom;\n\n this.populateDrawLayer();\n\n if (!this.drawLayer) return; //Something bork\n\n let feat = this.drawLayer.getSource().getFeatureById(newShape.olUID);\n\n if (!feat)\n //Something bad happened\n feat = this.drawLayer.getSource().getFeatures()[0];\n\n if (!feat) {\n console.log('Error occured in slim map, no feature'); // We shouldnt get here\n return;\n }\n }\n\n grabSnapshotOfDrawnShape(targetSize: number[]): Observable {\n // Show a loading screen when we are getting a screenshot\n const snapshotRef = this.dialog.open(LoadingDialogComponent, {\n width: '25rem',\n data: \"Generating Snapshot\",\n disableClose: true\n });\n\n var ds = new Subject();\n\n let map = famMap.getMap();\n let origSize = map.getSize();\n let that = this;\n\n map.setSize(targetSize);\n\n let ml = undefined;\n let layers = famMap.getMap().getLayers().array_\n for (var i = 0; i < layers.length; i++) {\n let layer = layers[i];\n if (layer.get(\"id\") === \"lyr_internal_merged\") {\n ml = layer;\n break;\n }\n };\n\n let pudding = [20, 20, 20, 20];\n let ext = [];\n\n try {\n ext = ml.getSource().getFeatureById(this.drawnShape.olUID).getGeometry().getExtent();\n }\n catch (ex) {\n snapshotRef.close();\n this.dialog.open(ErrorDialogComponent, {\n width: '25rem',\n data: [\"Error Generating Snapshot\", \"An error occured. Please try again. If this happens again, modify the shape slightly and click save.\"],\n disableClose: true\n });\n throw ex;\n }\n\n let vw = map.getView();\n vw.fit(ext, {\n size: targetSize,\n nearest: false,\n padding: pudding\n });\n\n map.once('rendercomplete', function () {\n var mapCanvas = document.createElement('canvas');\n\n mapCanvas.width = targetSize[0];\n mapCanvas.height = targetSize[1];\n var mapContext = mapCanvas.getContext('2d');\n Array.prototype.forEach.call(\n document.querySelectorAll('.ol-layer canvas'),\n function (canvas) {\n if (canvas.width > 0) {\n var opacity = canvas.parentNode.style.opacity;\n mapContext.globalAlpha = opacity === '' ? 1 : Number(opacity);\n var transform = canvas.style.transform;\n // Get the transform parameters from the style's transform matrix\n var matrix = transform\n .match(/^matrix\\(([^\\(]*)\\)$/)[1]\n .split(',')\n .map(Number);\n // Apply the transform to the export map context\n CanvasRenderingContext2D.prototype.setTransform.apply(\n mapContext,\n matrix\n );\n mapContext.drawImage(canvas, 0, 0);\n }\n }\n );\n\n map.setSize(origSize);\n\n snapshotRef.close();\n\n setTimeout(() => { ds.next(mapCanvas.toDataURL()); }, 100);\n });\n\n // Again there is some weirdness with resizing the map, so manually call renderSync after a delay of like 500ms or so\n setTimeout(() => { map.renderSync(); }, 500);\n\n return ds.asObservable();\n }\n\n populateDrawLayer() {\n let ml = undefined;\n let layers = famMap.getMap().getLayers().array_;\n for (var i = 0; i < layers.length; i++) {\n let layer = layers[i];\n if (layer.get(\"id\") === \"lyr_internal_merged\") {\n ml = layer;\n break;\n }\n }\n\n if (!ml)\n console.log('Error occured in slim map'); // We shouldnt get here\n\n this.drawLayer = ml;\n }\n\n setImportOverlayPositionAndContents(center: number[]) {\n\n let overlay = this.importOverlay;\n\n //Set the position\n setTimeout(() => { overlay.setPosition(center); }, 250);\n\n //Populate contents\n let container = document.getElementById(\"importOverlay\");\n\n //Only append if its not already there\n if (container.children.length == 0) {\n let cnt = document.getElementById(\"importOverlayContents\");\n container.appendChild(cnt);\n }\n }\n\n setOverlayPositionAndContents(center: number[]) {\n\n let overlay = this.assessmentEditOverlay;\n\n //Set the position\n setTimeout(() => { overlay.setPosition(center); }, 250);\n\n //Populate contents\n let container = document.getElementById(\"assessmentEditOverlay\");\n\n //Only append if its not already there\n if (container.children.length == 0) {\n let cnt = document.getElementById(\"assessmentEditOverlayContents\");\n container.appendChild(cnt);\n }\n }\n\n hasShape() {\n return this.drawnShape != undefined;\n }\n\n dismissAssessmentEdit() {\n this.stopDraw();\n }\n\n saveBoundsClick() {\n let obj: PamShapeData = {\n id: this.target.id, name: this.target.name, fields: {\n Geometry: {\n wkt: this.drawnShape.wkt,\n acres: this.drawnShape.acres\n }\n }\n };\n\n this.update(obj);\n }\n\n clearBounds() {\n this.mapAPI.clearShape();\n this.drawnShape = undefined;\n }\n\n stopDraw(): void {\n this.mapAPI.stopDrawing();\n this.drawnShape = undefined;\n this.assessmentEditOverlay.setPosition(undefined);\n this.deactivateEditing();\n if (this.highlightLayer) this.highlightLayer.setVisible(true);\n }\n\n update(obj: PamShapeData) {\n console.log('UPDATE');\n console.log(obj);\n this.target = obj;\n this.shapeUpdated.emit(obj);\n this.addShapeWKT(obj.fields.Geometry['wkt']);\n this.stopDraw();\n this.mapAPI.fitToWKT({ wkt: obj.fields.Geometry.wkt, left: 0, bottom: 0 });\n }\n\n updateRefShape(obj: PamShapeData, fillColor?: any, strokeColor?: any, noZoom?: boolean) {\n let reader = new ol.format.WKT();\n let f = reader.readFeature(obj.fields.Geometry['wkt']);\n\n this.setupRefLayer(fillColor, strokeColor);\n\n let ext = ol.extent.createEmpty();\n ol.extent.extend(ext, f.getGeometry().getExtent());\n\n this.refLayer.getSource().clear();\n this.refLayer.getSource().addFeature(f);\n\n if (!noZoom)\n this.mapAPI.fitToWKT({ wkt: obj.fields.Geometry.wkt, left: 0, bottom: 0 });\n }\n\n editBoundsClick() {\n this.activateEditing();\n\n let draw = this.mapAPI.setWKTs([this.target.fields.Geometry.wkt]);\n\n\n if (this.mapDrawSub)\n this.mapDrawSub.unsubscribe();\n\n this.mapDrawSub =\n draw.subscribe(this.handleDrawResult.bind(this));\n\n this.highlightLayer.setVisible(false);\n\n }\n\n addShape(shape: any) {\n let reader = new ol.format.GeoJSON();\n let f = reader.readFeature(shape);\n\n this.setFeat(f);\n }\n\n addShapeWKT(wkt: any) {\n let reader = new ol.format.WKT();\n let f = reader.readFeature(wkt);\n\n this.setFeat(f);\n }\n\n setFeat(f: any) {\n\n this.setupHighlightLayer();\n\n let ext = ol.extent.createEmpty();\n\n ol.extent.extend(ext, f.getGeometry().getExtent());\n\n this.highlightLayer.getSource().clear();\n this.highlightLayer.getSource().addFeature(f);\n }\n\n setupHighlightLayer() {\n if (this.highlightLayer)\n return;\n this.highlightLayer = new ol.layer.Vector();\n\n let src = new ol.source.Vector();\n this.highlightLayer.setSource(src);\n\n let sty = new ol.style.Style({\n fill: new ol.style.Fill({\n color: this.fillColor\n }),\n stroke: new ol.style.Stroke({\n color: this.strokeColor,\n width: 1\n })\n });\n this.highlightLayer.setStyle(sty);\n\n this.highlightLayer.setZIndex(9999);\n\n famMap.getMap().addLayer(this.highlightLayer);\n }\n\n setupRefLayer(fillColor?: any, strokeColor?: any) {\n if (this.refLayer)\n return;\n this.refLayer = new ol.layer.Vector();\n\n let src = new ol.source.Vector();\n this.refLayer.setSource(src);\n\n let sty = new ol.style.Style({\n fill: new ol.style.Fill({\n color: fillColor || this.fillColor\n }),\n stroke: new ol.style.Stroke({\n color: strokeColor || this.strokeColor,\n width: 1\n })\n });\n this.refLayer.setStyle(sty);\n\n this.refLayer.setZIndex(8888);\n\n famMap.getMap().addLayer(this.refLayer);\n }\n\n isInActiveEdit() {\n return this.editingBounds;\n }\n\n}\n","
\n
\n\n
\n \n TOPOGRAPHIC\n AERIAL\n STREETS\n LIGHT GREY\n \n
\n\n
\n Click in the map to draw the {{ this.featureName }} boundary, add new vertices with each new click, and double-click\n to end.\n If needed, you can hold the 'shift' key while clicking and dragging to draw a curved line, click and drag the\n boundary to reshape it, and/or hold the 'alt' key and click on a corner of your shape to remove that point.\n
\n\n
\n \n \n \n \n \n
\n\n\"tooltip\"\n\n\n
\n\n \n
\n \n \n
\n

Acres: {{ this.drawnShape?.acres | number : '1.1-1' || '' }}

\n \n
\n
\n \n
\n

\n Boundary is required.

\n \n \n \n \n
\n
\n
\n
\n\n
\n\n\n
\n
\n
\n
\n","import { Component, OnInit } from '@angular/core';\nimport { CoreEntity } from '../_shared/models/core-entity.model';\nimport { FieldService } from '../_shared/services/forms/field.service';\n\n@Component({\n selector: 'app-test',\n templateUrl: './test.component.html',\n styleUrls: ['./test.component.scss']\n})\nexport class TestComponent implements OnInit {\n\n fields: any[];\n\n constructor(private fieldService: FieldService,) { }\n\n ngOnInit(): void {\n this.fields = this.fieldService.getFields(CoreEntity.Project);\n }\n\n}\n","
\n \n
\n","import { Component, OnInit } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { AuthorizationService } from '../_shared/services/authorization.service';\n\n@Component({\n selector: 'app-user-menu',\n templateUrl: './user-menu.component.html',\n styleUrls: ['./user-menu.component.scss']\n})\nexport class UserMenuComponent implements OnInit {\n\n displayName: string = \"Not Logged In\";\n menuShown: boolean = false;\n\n constructor(\n private authorization: AuthorizationService,\n private router: Router\n ) {\n this.authorization.onLogin().subscribe((lo) => {\n this.displayName = lo.getName();\n });\n }\n\n ngOnInit(): void {\n }\n\n login(): void {\n this.authorization.authorize().subscribe((login) => {\n\n })\n }\n\n logout(): void {\n this.authorization.logout();\n }\n\n isLoggedIn(): boolean {\n return this.authorization.isLoggedIn();\n }\n\n getUsername(): string {\n return this.authorization.getLogin().getName() || this.displayName;\n }\n\n ready(): boolean {\n return true;\n }\n\n mouseout(): void {\n console.log('mouseout');\n this.menuShown = false;\n }\n\n onRootRoute() {\n return this.router.url === '/';\n }\n\n routeToHome() {\n this.router.navigate(['/app/home'])\n }\n\n}\n","
\n

\n \n \n Sign In\n Sign Out\n

\n
\n\n
\n

Welcome,\n {{getUsername()}}! Sign Out\n

\n
\n","import { Component, OnInit } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\n\n@Component({\n selector: 'app-version',\n templateUrl: './version.component.html',\n styleUrls: ['./version.component.scss']\n})\nexport class VersionComponent implements OnInit {\n\n version : string = \"v0.1.7\";\n buildNumber : string = \"-\";\n buildDate : string = \"-\"\n constructor(private http : HttpClient) { }\n\n ngOnInit(): void {\n this.http.get(\"/buildInfo.json\").subscribe( res => {\n this.version = res.packageVersion;\n this.buildNumber = res.buildNumber;\n this.buildDate = res.buildDate;\n })\n }\n\n}\n","
\n

{{version}}.{{buildNumber}}

\n
\n","// This file can be replaced during build by using the `fileReplacements` array.\n// `ng build --prod` replaces `environment.ts` with `environment.prod.ts`.\n// The list of file replacements can be found in `angular.json`.\n\nexport const environment = {\n production: false,\n mock : false\n};\n\n/*\n * For easier debugging in development mode, you can import the following file\n * to ignore zone related error stack frames such as `zone.run`, `zoneDelegate.invokeTask`.\n *\n * This import should be commented out in production mode because it will have a negative impact\n * on performance if an error is thrown.\n */\n// import 'zone.js/plugins/zone-error'; // Included with Angular CLI.\n","import { enableProdMode } from '@angular/core';\nimport { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\n\nimport { AppModule } from './app/app.module';\nimport { environment } from './environments/environment';\n\nif (environment.production) {\n enableProdMode();\n}\n\nplatformBrowserDynamic().bootstrapModule(AppModule)\n .catch(err => console.error(err));\n"],"names":[],"sourceRoot":"webpack:///"}