{"version":3,"sources":["webpack://lib.[name]/webpack/universalModuleDefinition","webpack://lib.[name]/./src/secure/inventory/site-capacities/scripts/site-capacities.objects.ts","webpack://lib.[name]/./src/secure/outbreak-response/resources.page.ts","webpack://lib.[name]/./src/shared/scripts/table-functions.ts","webpack://lib.[name]/./src/secure/committees/committees.ts","webpack://lib.[name]/./src/secure/communications/stakeholders/stakeholders.page.ts","webpack://lib.[name]/./src/secure/biodirectory/biodirectory-form/scripts/biodirectory-form.page.ts","webpack://lib.[name]/./src/secure/resource-library/resource-library.scss?38d5","webpack://lib.[name]/./src/secure/inventory/site-capacities/site-capacities.scss?a50a","webpack://lib.[name]/./src/secure/dataHub/dataHub.page.ts","webpack://lib.[name]/./src/secure/biodirectory/biodirectory-form/scripts/biodirectory-update-tool.ts","webpack://lib.[name]/./src/secure/biodirectory/biodirectory-form/biodirectory-form.scss?6f94","webpack://lib.[name]/./src/secure/communications/stakeholders/stakeholders.scss?7322","webpack://lib.[name]/./src/secure/communications/events/events.objects.ts","webpack://lib.[name]/./src/secure/communications/stakeholders/stakeholders.entities.ts","webpack://lib.[name]/./src/secure/inventory/site-capacities/scripts/site-capacities.map.ts","webpack://lib.[name]/./src/shared/scripts/filtering.ts","webpack://lib.[name]/./src/secure/communications/directory/directory.scss?81ae","webpack://lib.[name]/./src/auth/pages/profile/scripts/expertise.objects.ts","webpack://lib.[name]/./src/secure/inventory/lab-assays/lab-assays.page.ts","webpack://lib.[name]/./src/secure/communications/directory/directory.objects.ts","webpack://lib.[name]/./src/secure/communications/directory/directory.page.ts","webpack://lib.[name]/./src/secure/outbreak-response/resources.scss?f687","webpack://lib.[name]/./src/secure/communications/events/events.page.ts","webpack://lib.[name]/./src/secure/secure.module.ts","webpack://lib.[name]/./src/secure/orr-tracker/scripts/orr-tracker.objects.ts","webpack://lib.[name]/./src/secure/biodirectory/biodirectory-dashboard/scripts/biodirectory-dashboard.page.ts","webpack://lib.[name]/./src/secure/biodirectory/biodirectory-form/scripts/biodirectory-form.objects.ts","webpack://lib.[name]/./src/secure/resource-library/resource-library.entities.ts","webpack://lib.[name]/./src/shared/scripts/array-functions.ts","webpack://lib.[name]/./src/secure/biodirectory/biodirectory-dashboard/scripts/biodirectory-dashboard.modal.ts","webpack://lib.[name]/./src/secure/inventory/lab-assays/lab-assays.scss?840e","webpack://lib.[name]/./src/shared/scripts/dropdown-functions.ts","webpack://lib.[name]/./src/shared/scripts/table-column-visibility.ts","webpack://lib.[name]/./src/secure/orr-tracker/orr-tracker.scss?ada3","webpack://lib.[name]/./src/secure/biodirectory/biodirectory-form/scripts/contact-select.ts","webpack://lib.[name]/./src/secure/orr-tracker/scripts/orr-tracker.page.ts","webpack://lib.[name]/./src/secure/biodirectory/biodirectory-dashboard/biodirectory-dashboard.scss?e2bd","webpack://lib.[name]/./src/secure/inventory/lab-assays/lab-assays.objects.ts","webpack://lib.[name]/./src/secure/inventory/site-capacities/scripts/site-capacities.page.ts","webpack://lib.[name]/./src/shared/scripts/date-functions.ts","webpack://lib.[name]/./src/secure/resource-library/resource-library.page.ts","webpack://lib.[name]/./src/secure/inventory/expertise/expertise.objects.ts","webpack://lib.[name]/./src/secure/dataHub/dataHub.scss?467f","webpack://lib.[name]/./src/shared/components/document-tree/document-tree.ts"],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC;AACjC,CAAC;AACD,O;;;;;;;;;;;;;ACVA,+EAAiD;AACjD,sGAAoK;AAGpK;IA6BI;QAtBA,iBAAY,GAAY,KAAK,CAAC;QAC9B,cAAS,GAAW,SAAS,CAAC;QAC9B,YAAO,GAAW,SAAS,CAAC;IAoBZ,CAAC;IAEjB,iCAAU,GAAV;QACI,IAAI,CAAC,YAAY,GAAG,oCAAY,EAAC,YAAY,EAAgB,IAAI,CAAC,gBAAgB,CAAC,CAAC;QACpF,IAAI,CAAC,OAAO,GAAG,oCAAY,EAAC,aAAa,EAAiB,IAAI,CAAC,WAAW,CAAC,CAAC;QAC5E,IAAI,CAAC,WAAW,GAAG,oCAAY,EAAC,WAAW,EAAe,IAAI,CAAC,eAAe,CAAC,CAAC;QAChF,IAAI,CAAC,gBAAgB,GAAG,oCAAY,EAAC,gBAAgB,EAAoB,IAAI,CAAC,oBAAoB,CAAC,CAAC;QACpG,IAAI,CAAC,UAAU,GAAG,oCAAY,EAAC,UAAU,EAAc,IAAI,CAAC,cAAc,CAAC,CAAC;QAC5E,IAAI,CAAC,mBAAmB,GAAG,oCAAY,EAAC,mBAAmB,EAAuB,IAAI,CAAC,uBAAuB,CAAC,CAAC;QAEhH,IAAI,CAAC,YAAY,CAAC,UAAU,EAAE,CAAC;QAE/B,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC;QAC1B,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE,CAAC;QAC9B,IAAI,CAAC,gBAAgB,CAAC,UAAU,EAAE,CAAC;QACnC,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE,CAAC;QAC7B,IAAI,CAAC,mBAAmB,CAAC,UAAU,EAAE,CAAC;QACtC,IAAI,CAAC,cAAc,CAAC,UAAU,EAAE,CAAC;QAEjC,IAAI,CAAC,eAAe,GAAG,8CAAwB,EAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;QAElE,kDAAkD;QAClD,wBAAwB;QACxB,GAAG;QAGH,OAAO,IAAI,CAAC,gBAAgB,CAAC;QAC7B,OAAO,IAAI,CAAC,WAAW,CAAC;QACxB,OAAO,IAAI,CAAC,eAAe,CAAC;QAC5B,OAAO,IAAI,CAAC,oBAAoB,CAAC;QACjC,OAAO,IAAI,CAAC,cAAc,CAAC;QAC3B,OAAO,IAAI,CAAC,uBAAuB,CAAC;IACxC,CAAC;IAED,oCAAa,GAAb,UAAc,SAAc,EAAE,UAAe,EAAE,SAAc;QAEzD,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC;YAAE,OAAO,KAAK,CAAC;QACrD,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC;YAAE,OAAO,KAAK,CAAC;QACvD,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC;YAAE,OAAO,KAAK,CAAC;QAEpD,OAAO,IAAI,CAAC;IAEhB,CAAC;IAED,qCAAc,GAAd,UAAe,CAAS,EAAE,CAAS;QAC/B,kDAAkD;QAClD,0HAA0H;QAE1H,OAAO,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,CAAC,CAAC;IACxD,CAAC;IACL,mBAAC;AAAD,CAAC;AA/EY,oCAAY;AAiFzB;IAAA;QACI,qBAAgB,GAAW,SAAS,CAAC;QACrC,gBAAW,GAAW,SAAS,CAAC;QAChC,kBAAa,GAAW,SAAS,CAAC;QAClC,iBAAY,GAAW,SAAS,CAAC;QACjC,0CAAqC,GAAW,SAAS,CAAC;QAC1D,oBAAe,GAAW,SAAS,CAAC;QACpC,4BAAuB,GAAW,SAAS,CAAC;QAC5C,uCAAuC;QAEvC,YAAO,GAAW,EAAE,CAAC;QACrB,gBAAW,GAAW,EAAE,CAAC;QACzB,qBAAgB,GAAW,EAAE,CAAC;QAC9B,+BAA0B,GAAW,EAAE,CAAC;QACxC,4BAAuB,GAAW,EAAE,CAAC;QACrC,oCAA+B,GAAW,EAAE,CAAC;QAC7C,sBAAiB,GAAW,EAAE,CAAC;QAC/B,iBAAY,GAAW,EAAE,CAAC;QAC1B,oBAAe,GAAW,EAAE,CAAC;QAC7B,kBAAa,GAAW,EAAE,CAAC;QAC3B,yBAAoB,GAAW,EAAE,CAAC;QAElC,uBAAkB,GAAW,EAAE,CAAC;QAChC,oBAAe,GAAa,EAAE,CAAC;QAC/B,yBAAoB,GAAW,EAAE,CAAC;QAClC,sBAAiB,GAAa,EAAE,CAAC;QACjC,wBAAmB,GAAW,EAAE,CAAC;QACjC,qBAAgB,GAAa,EAAE,CAAC;QAChC,2BAAsB,GAAW,EAAE,CAAC;QACpC,wBAAmB,GAAa,EAAE,CAAC;IA6CvC,CAAC;IA5CG,uCAAuC;IACvC,sCAAsC;IAEtC,kCAAU,GAAV;QACI,IAAI,IAAI,CAAC,gBAAgB,IAAI,IAAI,EAAE;YAC/B,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC,qCAAqC,GAAG,gBAAgB,CAAC;SACnL;QAED,IAAI,CAAC,eAAe,GAAG,2BAAK,EAAC,IAAI,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;QACpD,IAAI,CAAC,kBAAkB,GAAG,0BAAI,EAAC,IAAI,CAAC,eAAe,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;QACvE,IAAI,CAAC,eAAe,GAAG,0CAAoB,EAAC,IAAI,CAAC,eAAe,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;QACpF,IAAI,CAAC,mBAAmB,GAAG,2BAAK,EAAC,IAAI,CAAC,eAAe,EAAE,GAAG,CAAC,CAAC;QAC5D,IAAI,CAAC,sBAAsB,GAAG,0BAAI,EAAC,IAAI,CAAC,mBAAmB,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;QAC/E,IAAI,CAAC,iBAAiB,GAAG,2BAAK,EAAC,IAAI,CAAC,aAAa,EAAE,GAAG,CAAC,CAAC;QACxD,IAAI,CAAC,oBAAoB,GAAG,0BAAI,EAAC,IAAI,CAAC,iBAAiB,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;QAC3E,IAAI,CAAC,iBAAiB,GAAG,0CAAoB,EAAC,IAAI,CAAC,iBAAiB,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;QAExF,gEAAgE;QAChE,mFAAmF;QACnF,0FAA0F;QAC1F,IAAI,CAAC,gBAAgB,GAAG,2BAAK,EAAC,IAAI,CAAC,YAAY,EAAE,GAAG,CAAC,CAAC;QACtD,IAAI,CAAC,mBAAmB,GAAG,0BAAI,EAAC,IAAI,CAAC,gBAAgB,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;QACzE,IAAI,CAAC,gBAAgB,GAAG,0CAAoB,EAAC,IAAI,CAAC,gBAAgB,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;QAEtF,IAAI,CAAC,WAAW,GAAG,kCAAY,EAAC,IAAI,CAAC,WAAW,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;QACzE,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAE7D,IAAI,CAAC,YAAY,GAAG,kCAAY,EAAC,IAAI,CAAC,YAAY,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;IAC/E,CAAC;IAED,qCAAa,GAAb,UAAc,UAAe,EAAE,WAAgB,EAAE,aAAkB,EAAE,SAAc,EAAE,QAAa,EAAE,YAAiB,EAAE,YAAiB,EAAE,aAAkB;QAExJ,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,gBAAgB,CAAC;YAAE,OAAO,KAAK,CAAC;QAC9D,IAAI,CAAC,qCAAe,EAAC,WAAW,EAAE,IAAI,CAAC,eAAe,CAAC;YAAE,OAAO,KAAK,CAAC;QACtE,IAAI,CAAC,qCAAe,EAAC,SAAS,EAAE,IAAI,CAAC,mBAAmB,CAAC;YAAE,OAAO,KAAK,CAAC;QACxE,IAAI,CAAC,qCAAe,EAAC,aAAa,EAAE,IAAI,CAAC,iBAAiB,CAAC;YAAE,OAAO,KAAK,CAAC;QAC1E,0EAA0E;QAC1E,IAAI,CAAC,qCAAe,EAAC,YAAY,EAAE,IAAI,CAAC,gBAAgB,CAAC;YAAE,OAAO,KAAK,CAAC;QACxE,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,uBAAuB,CAAC;YAAE,OAAO,KAAK,CAAC;QACvE,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,IAAI,CAAC,qCAAqC,CAAC;YAAE,OAAO,KAAK,CAAC;QACtF,gGAAgG;QAEhG,OAAO,IAAI,CAAC;IAChB,CAAC;IACL,oBAAC;AAAD,CAAC;AA1EY,sCAAa;AA4E1B;IAAA;QACI,qBAAgB,GAAW,SAAS,CAAC;QACrC,6BAAwB,GAAW,SAAS,CAAC;QAC7C,sBAAiB,GAAW,SAAS,CAAC;QACtC,oBAAe,GAAW,SAAS,CAAC;QACpC,qCAAgC,GAAW,SAAS,CAAC;QAErD,4BAAuB,GAAW,EAAE,CAAC;QACrC,iDAA4C,GAAW,EAAE,CAAC;QAC1D,wBAAmB,GAAW,EAAE,CAAC;QACjC,sBAAiB,GAAW,EAAE,CAAC;QAC/B,+BAA0B,GAAW,EAAE,CAAC;QACxC,0BAAqB,GAAW,EAAE,CAAC;QACnC,iBAAY,GAAW,EAAE,CAAC;QAC1B,8BAAyB,GAAW,EAAE,CAAC;QACvC,uBAAkB,GAAW,EAAE,CAAC;QAChC,+BAA0B,GAAW,EAAE,CAAC;QACxC,4BAAuB,GAAW,EAAE,CAAC;QACrC,4BAAuB,GAAW,EAAE,CAAC;QACrC,sBAAiB,GAAW,EAAE,CAAC;QAC/B,6BAAwB,GAAW,EAAE,CAAC;QACtC,gCAA2B,GAAW,EAAE,CAAC;QAEzC,oCAA+B,GAAW,EAAE,CAAC;QAC7C,iCAA4B,GAAa,EAAE,CAAC;QAC5C,6BAAwB,GAAW,EAAE,CAAC;QACtC,0BAAqB,GAAa,EAAE,CAAC;QACrC,2BAAsB,GAAW,EAAE,CAAC;QACpC,wBAAmB,GAAa,EAAE,CAAC;IA8BvC,CAAC;IA5BG,gCAAU,GAAV;QACI,IAAI,IAAI,CAAC,gBAAgB,IAAI,IAAI,EAAE;YAC/B,IAAI,CAAC,wBAAwB,GAAG,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,gCAAgC,GAAG,gBAAgB,CAAC;SAC5I;QAED,IAAI,CAAC,4BAA4B,GAAG,2BAAK,EAAC,IAAI,CAAC,wBAAwB,EAAE,GAAG,CAAC,CAAC;QAC9E,IAAI,CAAC,+BAA+B,GAAG,0BAAI,EAAC,IAAI,CAAC,4BAA4B,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;QACjG,IAAI,CAAC,qBAAqB,GAAG,2BAAK,EAAC,IAAI,CAAC,iBAAiB,EAAE,GAAG,CAAC,CAAC;QAChE,IAAI,CAAC,wBAAwB,GAAG,0BAAI,EAAC,IAAI,CAAC,qBAAqB,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;QACnF,IAAI,CAAC,qBAAqB,GAAG,0CAAoB,EAAC,IAAI,CAAC,qBAAqB,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;QAChG,IAAI,CAAC,mBAAmB,GAAG,2BAAK,EAAC,IAAI,CAAC,eAAe,EAAE,GAAG,CAAC,CAAC;QAC5D,IAAI,CAAC,sBAAsB,GAAG,0BAAI,EAAC,IAAI,CAAC,mBAAmB,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;QAE/E,IAAI,CAAC,4CAA4C,GAAG,kCAAY,EAAC,IAAI,CAAC,4CAA4C,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;QAC3I,IAAI,CAAC,YAAY,GAAG,kCAAY,EAAC,IAAI,CAAC,YAAY,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;QAC3E,IAAI,CAAC,iBAAiB,GAAG,kCAAY,EAAC,IAAI,CAAC,iBAAiB,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;IACzF,CAAC;IAED,mCAAa,GAAb,UAAc,cAAmB,EAAE,aAAkB,EAAE,iBAAsB,EAAE,eAAoB;QAE/F,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,IAAI,CAAC,gBAAgB,CAAC;YAAE,OAAO,KAAK,CAAC;QAClE,IAAI,CAAC,qCAAe,EAAC,aAAa,EAAE,IAAI,CAAC,4BAA4B,CAAC;YAAE,OAAO,KAAK,CAAC;QACrF,IAAI,CAAC,qCAAe,EAAC,iBAAiB,EAAE,IAAI,CAAC,qBAAqB,CAAC;YAAE,OAAO,KAAK,CAAC;QAClF,IAAI,CAAC,qCAAe,EAAC,eAAe,EAAE,IAAI,CAAC,mBAAmB,CAAC;YAAE,OAAO,KAAK,CAAC;QAE9E,OAAO,IAAI,CAAC;IAChB,CAAC;IAEL,kBAAC;AAAD,CAAC;AA1DY,kCAAW;AA4DxB;IAAA;QACI,0BAAqB,GAAW,SAAS,CAAC;QAC1C,gCAA2B,GAAW,SAAS,CAAC;QAChD,0BAAqB,GAAW,SAAS,CAAC;QAC1C,kCAAkC;QAClC,kCAAkC;QAClC,kCAAkC;QAClC,0CAA0C;QAC1C,gDAAgD;QAChD,yCAAyC;QACzC,qCAAqC;QACrC,sCAAsC;QACtC,2CAAsC,GAAW,EAAE,CAAC;QAEpD,iCAA4B,GAAW,EAAE,CAAC;QAC1C,8BAAyB,GAAa,EAAE,CAAC;QACzC,uCAAkC,GAAW,EAAE,CAAC;QAChD,oCAA+B,GAAa,EAAE,CAAC;QAC/C,iCAA4B,GAAW,EAAE,CAAC;QAC1C,8BAAyB,GAAa,EAAE,CAAC;IA4B7C,CAAC;IA1BG,qCAAU,GAAV;QAEI,IAAI,CAAC,yBAAyB,GAAG,2BAAK,EAAC,IAAI,CAAC,qBAAqB,EAAE,GAAG,CAAC,CAAC;QACxE,IAAI,CAAC,4BAA4B,GAAG,0BAAI,EAAC,IAAI,CAAC,yBAAyB,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;QAC3F,IAAI,CAAC,yBAAyB,GAAG,0CAAoB,EAAC,IAAI,CAAC,yBAAyB,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;QACxG,IAAI,CAAC,+BAA+B,GAAG,2BAAK,EAAC,IAAI,CAAC,2BAA2B,EAAE,GAAG,CAAC,CAAC;QACpF,IAAI,CAAC,kCAAkC,GAAG,0BAAI,EAAC,IAAI,CAAC,+BAA+B,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;QACvG,IAAI,CAAC,+BAA+B,GAAG,0CAAoB,EAAC,IAAI,CAAC,+BAA+B,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;QACpH,IAAI,CAAC,yBAAyB,GAAG,2BAAK,EAAC,IAAI,CAAC,qBAAqB,EAAE,GAAG,CAAC,CAAC;QACxE,IAAI,CAAC,4BAA4B,GAAG,0BAAI,EAAC,IAAI,CAAC,yBAAyB,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;QAC3F,IAAI,CAAC,yBAAyB,GAAG,0CAAoB,EAAC,IAAI,CAAC,yBAAyB,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;QAE5G,6GAA6G;QAC7G,2GAA2G;QAC3G,mGAAmG;QACnG,qGAAqG;IACrG,CAAC;IAED,wCAAa,GAAb,UAAc,KAAU,EAAE,YAAiB,EAAE,aAAkB;QAE3D,IAAI,CAAC,qCAAe,EAAC,KAAK,EAAE,IAAI,CAAC,qBAAqB,CAAC;YAAE,OAAO,KAAK,CAAC;QACtE,IAAI,CAAC,qCAAe,EAAC,YAAY,EAAE,IAAI,CAAC,2BAA2B,CAAC;YAAE,OAAO,KAAK,CAAC;QACnF,IAAI,CAAC,qCAAe,EAAC,aAAa,EAAE,IAAI,CAAC,qBAAqB,CAAC;YAAE,OAAO,KAAK,CAAC;QAE9E,OAAO,IAAI,CAAC;IAChB,CAAC;IACL,uBAAC;AAAD,CAAC;AA/CY,4CAAgB;AAiD7B;IAAA;QACI,2BAAsB,GAAW,SAAS,CAAC;QAC3C,2BAAsB,GAAW,SAAS,CAAC;QAC3C,sBAAiB,GAAW,SAAS,CAAC;QACtC,2CAA2C;QAC3C,wBAAmB,GAAW,EAAE,CAAC;QACjC,8BAAyB,GAAW,EAAE,CAAC;QACvC,YAAO,GAAW,EAAE,CAAC;QACrB,wBAAmB,GAAW,EAAE,CAAC;QACjC,0BAAqB,GAAW,EAAE,CAAC;QACnC,6BAAwB,GAAW,EAAE,CAAC;IAqB1C,CAAC;IApBG,qCAAqC;IACrC,kDAAkD;IAClD,uCAAuC;IACvC,sDAAsD;IACtD,0CAA0C;IAE1C,+BAAU,GAAV;QACI,IAAI,CAAC,yBAAyB,GAAG,kCAAY,EAAC,IAAI,CAAC,yBAAyB,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;IACzG,CAAC;IAED,uHAAuH;IACvH,kCAAa,GAAb,UAAc,cAAmB,EAAE,SAAc,EAAE,mBAAwB;QAEvE,IAAI,CAAC,qCAAe,EAAC,SAAS,EAAE,IAAI,CAAC,sBAAsB,CAAC;YAAE,OAAO,KAAK,CAAC;QAC3E,IAAI,CAAC,qCAAe,EAAC,mBAAmB,EAAE,IAAI,CAAC,sBAAsB,CAAC;YAAE,OAAO,KAAK,CAAC;QACrF,IAAI,CAAC,qCAAe,EAAC,cAAc,EAAE,IAAI,CAAC,iBAAiB,CAAC;YAAE,OAAO,KAAK,CAAC;QAC3E,yFAAyF;QAEzF,OAAO,IAAI,CAAC;IAChB,CAAC;IACL,iBAAC;AAAD,CAAC;AA/BY,gCAAU;AAiCvB;IAAA;QACI,qBAAgB,GAAW,SAAS,CAAC;QACrC,6BAAwB,GAAW,SAAS,CAAC;QAC7C,yBAAoB,GAAW,SAAS,CAAC;QACzC,iCAA4B,GAAW,SAAS,CAAC;QACjD,oCAA+B,GAAW,SAAS,CAAC;QACpD,gCAA2B,GAAW,SAAS,CAAC;QAChD,kCAA6B,GAAW,EAAE,CAAC;QAC3C,wBAAmB,GAAW,EAAE,CAAC;QACjC,oBAAe,GAAW,EAAE,CAAC;QAC7B,yBAAoB,GAAW,EAAE,CAAC;QAClC,4BAAuB,GAAW,EAAE,CAAC;QAErC,4BAAuB,GAAW,EAAE,CAAC;QACrC,yBAAoB,GAAa,EAAE,CAAC;QACpC,uCAAkC,GAAW,EAAE,CAAC;QAChD,oCAA+B,GAAa,EAAE,CAAC;IAsBnD,CAAC;IApBG,wCAAU,GAAV;QACI,uGAAuG;QAEvG,IAAI,CAAC,oBAAoB,GAAG,2BAAK,EAAC,IAAI,CAAC,gBAAgB,EAAE,GAAG,CAAC,CAAC;QAC9D,IAAI,CAAC,uBAAuB,GAAG,0BAAI,EAAC,IAAI,CAAC,oBAAoB,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;QACjF,IAAI,CAAC,+BAA+B,GAAG,2BAAK,EAAC,IAAI,CAAC,2BAA2B,EAAE,GAAG,CAAC,CAAC;QACpF,IAAI,CAAC,kCAAkC,GAAG,0BAAI,EAAC,IAAI,CAAC,+BAA+B,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;IAC3G,CAAC;IAED,2CAAa,GAAb,UAAc,QAAa,EAAE,QAAa,EAAE,aAAkB,EAAE,qBAA0B,EAAE,OAAY,EAAE,qBAA0B;QAEhI,IAAI,CAAC,qCAAe,EAAC,QAAQ,EAAE,IAAI,CAAC,oBAAoB,CAAC;YAAE,OAAO,KAAK,CAAC;QACxE,IAAI,CAAC,qCAAe,EAAC,QAAQ,EAAE,IAAI,CAAC,wBAAwB,CAAC;YAAE,OAAO,KAAK,CAAC;QAC5E,IAAI,CAAC,qCAAe,EAAC,aAAa,EAAE,IAAI,CAAC,oBAAoB,CAAC;YAAE,OAAO,KAAK,CAAC;QAC7E,IAAI,CAAC,qCAAe,EAAC,qBAAqB,EAAE,IAAI,CAAC,4BAA4B,CAAC;YAAE,OAAO,KAAK,CAAC;QAC7F,IAAI,CAAC,qCAAe,EAAC,OAAO,EAAE,IAAI,CAAC,+BAA+B,CAAC;YAAE,OAAO,KAAK,CAAC;QAClF,IAAI,CAAC,qCAAe,EAAC,qBAAqB,EAAE,IAAI,CAAC,+BAA+B,CAAC;YAAE,OAAO,KAAK,CAAC;QAEhG,OAAO,IAAI,CAAC;IAChB,CAAC;IACL,0BAAC;AAAD,CAAC;AAtCY,kDAAmB;AAwChC;IAAA;QACI,qBAAgB,GAAW,SAAS,CAAC;QACrC,uBAAkB,GAAW,SAAS,CAAC;QACvC,gBAAW,GAAW,SAAS,CAAC;QAChC,6BAAwB,GAAW,SAAS,CAAC;QAE7C,6BAAwB,GAAW,EAAE,CAAC;QACtC,8BAAyB,GAAW,EAAE,CAAC;QACvC,qBAAgB,GAAW,EAAE,CAAC;QAC9B,6BAAwB,GAAW,EAAE,CAAC;QACtC,2BAAsB,GAAW,EAAE,CAAC;QACpC,8BAAyB,GAAW,EAAE,CAAC;QACvC,iCAA4B,GAAW,EAAE,CAAC;QAC1C,kCAA6B,GAAW,EAAE,CAAC;QAC3C,6BAAwB,GAAW,EAAE,CAAC;QACtC,iBAAY,GAAW,EAAE,CAAC;QAC1B,gBAAW,GAAW,EAAE,CAAC;QACzB,aAAQ,GAAW,EAAE,CAAC;QACtB,aAAQ,GAAW,EAAE,CAAC;QAEtB,0BAAqB,GAAa,EAAE,CAAC;QACrC,uBAAkB,GAAW,EAAE,CAAC;QAChC,oBAAe,GAAa,EAAE,CAAC;QAC/B,oCAA+B,GAAW,EAAE,CAAC;QAC7C,iCAA4B,GAAa,EAAE,CAAC;QAC5C,qBAAgB,GAAW,EAAE,CAAC;QAC9B,kBAAa,GAAa,EAAE,CAAC;QAC7B,YAAO,GAAW,EAAE,CAAC;IAsCzB,CAAC;IApCG,iCAAU,GAAV;QACI,IAAI,CAAC,qBAAqB,GAAG,CAAC,IAAI,CAAC,gBAAgB,CAAE,CAAC;QACtD,IAAI,CAAC,qBAAqB,GAAG,0CAAoB,EAAC,IAAI,CAAC,qBAAqB,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;QAEhG,IAAI,CAAC,eAAe,GAAG,2BAAK,EAAC,IAAI,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;QACpD,IAAI,CAAC,kBAAkB,GAAG,0BAAI,EAAC,IAAI,CAAC,eAAe,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;QACvE,IAAI,CAAC,eAAe,GAAG,0CAAoB,EAAC,IAAI,CAAC,eAAe,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;QAEpF,IAAI,CAAC,4BAA4B,GAAG,2BAAK,EAAC,IAAI,CAAC,wBAAwB,EAAE,GAAG,CAAC,CAAC;QAC9E,IAAI,CAAC,+BAA+B,GAAG,0BAAI,EAAC,IAAI,CAAC,4BAA4B,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;QACjG,IAAI,CAAC,4BAA4B,GAAG,0CAAoB,EAAC,IAAI,CAAC,4BAA4B,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;QAE9G,IAAI,CAAC,aAAa,GAAG,2BAAK,EAAC,IAAI,CAAC,kBAAkB,EAAE,GAAG,CAAC,CAAC;QACzD,IAAI,CAAC,gBAAgB,GAAG,0BAAI,EAAC,IAAI,CAAC,aAAa,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;QACnE,IAAI,CAAC,aAAa,GAAG,0CAAoB,EAAC,IAAI,CAAC,aAAa,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;QAEhF,IAAI,CAAC,yBAAyB,GAAG,kCAAY,EAAC,IAAI,CAAC,yBAAyB,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;QACrG,IAAI,CAAC,yBAAyB,GAAG,kCAAY,EAAC,IAAI,CAAC,yBAAyB,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;QACrG,IAAI,CAAC,4BAA4B,GAAG,kCAAY,EAAC,IAAI,CAAC,4BAA4B,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;QAC3G,IAAI,CAAC,6BAA6B,GAAG,kCAAY,EAAC,IAAI,CAAC,6BAA6B,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;QAC7G,IAAI,CAAC,wBAAwB,GAAG,kCAAY,EAAC,IAAI,CAAC,wBAAwB,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;QAEnG,IAAI,CAAC,OAAO,GAAG,CAAC,IAAI,CAAC,YAAY,GAAG,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC,IAAI,EAAE,CAAC;QACnE,IAAI,CAAC,QAAQ,GAAG,gCAAU,EAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC9C,CAAC;IAED,oCAAa,GAAb,UAAc,QAAa,EAAE,cAAmB,EAAE,UAAe,EAAE,YAAiB;QAEhF,8DAA8D;QAC9D,IAAI,CAAC,qCAAe,EAAC,QAAQ,EAAE,IAAI,CAAC,qBAAqB,CAAC,EAAE,EAAE,2BAA2B;YAAC,OAAO,KAAK,CAAC;SAAE;QACzG,IAAI,CAAC,qCAAe,EAAC,cAAc,EAAE,IAAI,CAAC,eAAe,CAAC,EAAE,EAAE,+BAA+B;YAAC,OAAO,KAAK,CAAC;SAAE;QAC7G,IAAI,CAAC,qCAAe,EAAC,YAAY,EAAE,IAAI,CAAC,kBAAkB,CAAC,EAAE,EAAE,6BAA6B;YAAC,OAAO,KAAK,CAAC;SAAE;QAC5G,IAAI,CAAC,qCAAe,EAAC,UAAU,EAAE,IAAI,CAAC,wBAAwB,CAAC,EAAE,EAAE,8BAA8B;YAAC,OAAO,KAAK,CAAC;SAAE;QAEjH,OAAO,IAAI,CAAC;IAChB,CAAC;IACL,mBAAC;AAAD,CAAC;AAjEY,oCAAY;AAmEzB;IAAA;QAEI,WAAM,GAAW,EAAE,CAAC;QACpB,qBAAgB,GAAW,EAAE,CAAC;QAC9B,2BAAsB,GAAW,EAAE,CAAC;QACpC,mBAAc,GAAW,EAAE,CAAC;QAC5B,gBAAW,GAAW,EAAE,CAAC;QACzB,uBAAkB,GAAW,EAAE,CAAC;QAChC,qBAAgB,GAAW,EAAE,CAAC;QAC9B,8BAAyB,GAAW,EAAE,CAAC;QACvC,kBAAa,GAAW,EAAE,CAAC;QAE3B,kBAAa,GAAW,EAAE,CAAC;IAgB/B,CAAC;IAdG,mCAAU,GAAV;QACI,IAAI,CAAC,aAAa,GAAG,gCAAU,EAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAE7C,IAAI,CAAC,WAAW,GAAG,kCAAY,EAAC,IAAI,CAAC,WAAW,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;IAC7E,CAAC;IAED,sCAAa,GAAb,UAAc,OAAY,EAAE,eAAoB;QAE5C,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC;YAAE,OAAO,KAAK,CAAC;QACjD,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,IAAI,CAAC,gBAAgB,CAAC;YAAE,OAAO,KAAK,CAAC;QAEnE,OAAO,IAAI,CAAC;IAEhB,CAAC;IACL,qBAAC;AAAD,CAAC;AA5BY,wCAAc;;;;;;;;;;;;;;;;AC1Z3B,6GAAmF;AAGnF;IAEI,gCAAgC;IAEhC,uCAAY,SAAc,EAAE,SAAc,EAAE,QAAa,EAAE,QAAa;QACpE,CAAC,CAAC;YAEE,8CAA8C;YAE9C,IAAI,4BAAY,CAAC,SAAS,EAAE,gBAAgB,CAAC,CAAC;YAC9C,IAAI,4BAAY,CAAC,SAAS,EAAE,gBAAgB,CAAC,CAAC;YAC9C,IAAI,4BAAY,CAAC,QAAQ,EAAE,eAAe,CAAC,CAAC;YAC5C,IAAI,4BAAY,CAAC,QAAQ,EAAE,eAAe,CAAC,CAAC;QAEhD,CAAC,CAAC,CAAC;IACP,CAAC;IAEL,oCAAC;AAAD,CAAC;AAjBY,sEAA6B;;;;;;;;;;;;;;;;;;;;ACH1C,kFAAoC;AAGpC,SAAgB,0BAA0B,CAAC,KAAa,EAAE,WAAmB;IACzE,IAAI,KAAK,GAAa,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACvC,IAAI,MAAM,GAAW,6BAA6B,CAAC;IACnD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE;QACnC,MAAM,IAAI,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;QACzB,IAAI,CAAC,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC,EAAE;YACxB,MAAM,IAAI,SAAS,CAAC;SACvB;KACJ;IAED,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,WAAW,GAAG,CAAC,CAAC,EAAE;QAAE,MAAM,IAAI,SAAS,CAAC;KAAE;IAC9D,OAAO,MAAM,CAAC,IAAI,EAAE,CAAC;AACzB,CAAC;AAZD,gEAYC;AAGD,SAAgB,iBAAiB,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI;IACnD,IAAI,MAAc,CAAC;IACnB,IAAI,IAAI,KAAK,SAAS,EAAE;QAAE,MAAM,GAAG,IAAI,CAAC;KAAE;SACrC,IAAI,IAAI,IAAI,IAAI,EAAE;QAAE,MAAM,GAAG,EAAE;KAAE;SACjC;QACD,MAAM,GAAG,iFAAiF,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,KAAK,CAAC,GAAG,oFAAoF,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,KAAK,CAAC,GAAG,eAAe;KAC5P;IACD,OAAO,MAAM,CAAC;AAClB,CAAC;AARD,8CAQC;AAED,SAAgB,mBAAmB,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI;IACrD,IAAI,MAAc,CAAC;IACnB,IAAI,IAAI,KAAK,SAAS,EAAE;QAAE,MAAM,GAAG,IAAI,CAAC;KAAE;SACrC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,SAAS,EAAE;QAAE,MAAM,GAAG,EAAE;KAAE;SACtD;QACD,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,KAAK,CAAC,GAAG,GAAG;KAC1C;IACD,OAAO,MAAM,CAAC;AAClB,CAAC;AARD,kDAQC;AAED,SAAgB,oBAAoB,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI;IACtD,IAAI,IAAI,IAAI,CAAC,CAAC;QAAE,OAAO,EAAE,CAAC;;QACrB,OAAO,IAAI,CAAC;AACrB,CAAC;AAHD,oDAGC;AACD,SAAgB,oCAAoC,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG;IAChE,IAAI,IAAI,IAAI,CAAC,CAAC,IAAI,IAAI,IAAI,SAAS;QAAE,OAAO,EAAE,CAAC;;QAC1C,OAAgB,IAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AAC1C,CAAC;AAHD,oFAGC;AACD,SAAgB,qCAAqC,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG;IACjE,IAAI,IAAI,IAAI,CAAC,CAAC,IAAI,IAAI,IAAI,SAAS;QAAE,OAAO,EAAE,CAAC;;QAC1C,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AACnC,CAAC;AAHD,sFAGC;AAED,SAAgB,kCAAkC,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI;IACpE,IAAI,IAAI,IAAI,CAAC,CAAC,IAAI,IAAI,IAAI,SAAS;QAAE,OAAO,EAAE,CAAC;;QAC1C,OAAO,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC;AAC5C,CAAC;AAHD,gFAGC;AAED,SAAgB,aAAa,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI;IAE/C,yCAAyC;IAEzC,IAAI,UAAU,GAAW,aAAa,CAAC,IAAI,CAAC,CAAC;IAC7C,IAAI,UAAU,IAAI,EAAE;QAAE,OAAO,EAAE,CAAC;IAEhC,IAAI,SAAS,GAAW,gBAAgB,CAAC,UAAU,CAAC,CAAC;IACrD,IAAI,SAAS,IAAI,EAAE;QAAE,OAAO,EAAE,CAAC;IAE/B,IAAI,IAAI,GAAS,SAAS,CAAC;IAC3B,IAAI;QACA,IAAI,KAAK,GAAa,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QACpD,sDAAsD;QACtD,IAAI,GAAG,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;KAC/G;IACD,OAAO,KAAK,EAAE;QACV,IAAI,GAAG,SAAS,CAAC;KACpB;IAED,IAAI,IAAI,IAAI,MAAM,EAAE;QAChB,IAAI,IAAI,IAAI,SAAS;YAAE,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC;;YACxC,OAAO,CAAC,CAAC,CAAC;KAClB;SACI;QACD,IAAI,IAAI,IAAI,SAAS;YAAE,OAAO,6BAA6B,GAAG,wBAAU,EAAC,IAAI,EAAE,aAAa,CAAC,GAAG,SAAS,CAAC;;YACrG,OAAO,EAAE,CAAC;KAClB;AACL,CAAC;AA5BD,sCA4BC;AAED,SAAgB,aAAa,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI;IAE/C,IAAI,UAAU,GAAW,aAAa,CAAC,IAAI,CAAC,CAAC;IAC7C,IAAI,UAAU,IAAI,EAAE;QAAE,OAAO,EAAE,CAAC;IAEhC,IAAI,SAAS,GAAW,gBAAgB,CAAC,UAAU,CAAC,CAAC;IACrD,IAAI,SAAS,IAAI,EAAE;QAAE,OAAO,EAAE,CAAC;IAE/B,IAAI,IAAI,GAAS,SAAS,CAAC;IAC3B,IAAI;QACA,IAAI,KAAK,GAAa,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QACpD,sDAAsD;QACtD,IAAI,GAAG,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;KAC/G;IACD,OAAO,KAAK,EAAE;QACV,IAAI,GAAG,SAAS,CAAC;KACpB;IAED,IAAI,IAAI,IAAI,MAAM,EAAE;QAChB,IAAI,IAAI,IAAI,SAAS;YAAE,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC;;YACxC,OAAO,CAAC,CAAC,CAAC;KAClB;SACI;QACD,IAAI,IAAI,IAAI,SAAS;YAAE,OAAO,6BAA6B,GAAG,wBAAU,EAAC,IAAI,EAAE,aAAa,CAAC,GAAG,SAAS,CAAC;;YACrG,OAAO,EAAE,CAAC;KAClB;AACL,CAAC;AA1BD,sCA0BC;AAED,SAAgB,aAAa,CAAC,IAAS;IAEnC,IAAI,IAAI,IAAI,SAAS,IAAI,IAAI,IAAI,CAAC,CAAC,IAAI,IAAI,IAAI,EAAE;QAAE,OAAO,EAAE,CAAC;IAE7D,yBAAyB;IACzB,IAAI,UAAU,GAAmB,IAAI,CAAC;IACtC,IAAI,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE;QAAE,UAAU,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC,EAAE,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;KAAE;IAE5G,OAAO,UAAU,CAAC;AACtB,CAAC;AATD,sCASC;AAED,SAAgB,gBAAgB,CAAC,IAAY;IACzC,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE;QAAE,OAAO,GAAG,CAAC;KAAE;SACvC,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAE,GAAG,CAAC,EAAE;QAAE,OAAO,GAAG,CAAC;KAAE;;QAC3C,OAAO,EAAE,CAAC;AACnB,CAAC;AAJD,4CAIC;AAED,SAAgB,wBAAwB,CAAC,QAAgB,EAAE,MAAgB,EAAE,WAAyB,EAAE,cAAiC,EAAE,QAAwB;IAA3D,2DAAiC;IAAE,0CAAwB;IAC/J,CAAC,CAAC,QAAQ,CAAC,CAAC,YAAY,CAAC;QACrB,UAAU,EAAE,KAAK;QACjB,kBAAkB,EAAE,OAAO;QAE3B,iBAAiB,EAAE,UAAC,WAAW,EAAE,QAAQ;YACrC,IAAI,WAAW,IAAI,QAAQ,EAAE;gBACzB,OAAO,KAAK,CAAC;aAChB;iBACI;gBACD,OAAO,WAAW,GAAG,WAAW,CAAC;aACpC;QACL,CAAC;KACJ,CAAC,CAAC;IAEH,IAAI,cAAc,IAAI,SAAS,EAAE;QAC7B,MAAM,CAAC,OAAO,CAAC,UAAC,OAAY;YACxB,CAAC,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC;QACtE,CAAC,CAAC,CAAC;KACN;SACI;QACD,sDAAsD;QACtD,qFAAqF;QACrF,KAAK;KACR;IAED,CAAC,CAAC,QAAQ,CAAC,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;IAEpC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,mBAAmB,EAAE,UAAC,CAAC,EAAE,YAAY,EAAE,UAAU,EAAE,aAAa;QAC3E,WAAW,CAAC,aAAa,EAAE,CAAC;IAChC,CAAC,CAAC,CAAC;AACP,CAAC;AA/BD,4DA+BC;AAED,SAAgB,yBAAyB,CAAC,QAAgB;IACtD,OAAO,CAAC,CAAC,QAAQ,CAAC,CAAC,GAAG,EAAE,CAAC;AAC7B,CAAC;AAFD,8DAEC;;;;;;;;;;;;;;;;;ACtKD,6GAAmF;AACnF,2GAAoF;AACpF,+EAAiD;AAEjD;IAII,uBAAY,KAAU,EAAE,QAAa,EAAE,OAAe,EAAE,SAAiB,EAAE,WAAmB,EAAE,UAAkB,EAAE,gBAAwB;QAA5I,iBAaC;QAZG,CAAC,CAAC;YAEE,sBAAsB;YACtB,qBAAqB;YACrB,IAAI,KAAK,EAAE;gBACP,KAAI,CAAC,YAAY,GAAG,IAAI,4BAAY,CAAC,KAAK,CAAC,CAAC;aAC/C;YAED,IAAI,OAAO,IAAI,EAAE,EAAE;gBACf,KAAI,CAAC,0BAA0B,CAAC,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,WAAW,EAAE,UAAU,EAAE,gBAAgB,CAAC,CAAC;aAC5G;QACL,CAAC,CAAC,CAAC;IACP,CAAC;IAED,kDAA0B,GAA1B,UAA2B,OAAe,EAAE,QAAa,EAAE,SAAiB,EAAE,WAAmB,EAAE,UAAkB,EAAE,gBAAwB;QAE3I,IAAI,KAAK,GAA0B,oCAAY,EAAC,uCAAmB,EAAyB,QAAQ,CAAC,CAAC;QAEtG,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,UAAC,IAAyB;YACxC,IAAI,CAAC,UAAU,EAAE,CAAC;YAClB,IAAI,CAAC,8BAA8B,CAAC,SAAS,EAAE,WAAW,EAAE,UAAU,EAAE,gBAAgB,CAAC,CAAC;YAC1F,OAAO,IAAI,CAAC;QAChB,CAAC,CAAC,CAAC;QAEH,qBAAqB;QAErB,IAAI,KAAK,GAAG,CAAC,CAAC,GAAG,GAAG,OAAO,CAAC,CAAC,SAAS,CAAC;YACnC,KAAK,EAAE,kEAAkE;YACzE,SAAS,EAAE,IAAI;YACf,IAAI,EAAE,KAAK;YACX,MAAM,EAAE,KAAK;YACb,MAAM,EAAE,IAAI;YACZ,OAAO,EAAE,KAAK;YACd,aAAa,EAAE,IAAI;YACnB,OAAO,EAAE;gBACL,EAAE,IAAI,EAAE,aAAa,EAAE,SAAS,EAAE,WAAW,EAAE;gBAC/C,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,WAAW,EAAE,KAAK,EAAE,KAAK,EAAE;gBACzD,EAAE,IAAI,EAAE,cAAc,EAAE,SAAS,EAAE,WAAW,EAAE,KAAK,EAAE,KAAK,EAAE;gBAC9D,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,KAAK,EAAE,KAAK,EAAE;gBACvD,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,KAAK,EAAE;aACzC;YACD,UAAU,EAAE,CAAC;oBACT,OAAO,EAAE,CAAC;oBACV,IAAI,EAAE,aAAa;oBACnB,MAAM,EAAE,UAAU,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;wBACpC,IAAI,IAAI,IAAI,MAAM,EAAE;4BAChB,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC;yBACxB;wBACD,OAAO,IAAI,CAAC;oBAChB,CAAC;iBACJ,CAAC;YACF,OAAO,EAAE;gBACL;oBACI,MAAM,EAAE,KAAK;oBACb,IAAI,EAAE,sCAAsC;oBAC5C,SAAS,EAAE,KAAK;oBAChB,OAAO,EAAE,OAAO;oBAChB,kBAAkB;oBAClB,2BAA2B;oBAC3B,GAAG;iBACN;aACJ;YACD,IAAI,EAAE,KAAK;SACd,CAAC,CAAC;QAEH,IAAI,gBAAgB,GAChB,wBAAwB;YACxB,iMAAiM;YACjM,QAAQ,CACP;QACL,CAAC,CAAC,oBAAoB,CAAC,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QACvD,CAAC,CAAC,oBAAoB,CAAC,CAAC,GAAG,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC;QACvD,gDAAgD;QAChD,CAAC,CAAC,oBAAoB,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;gCAGrC,KAAK;YACV,IAAI,KAAK,IAAI,CAAC;kCAAW,CAAC,8BAA8B;YAEpD,MAAM,GAAG,CAAC,CAAC,oBAAoB,CAAC,CAAC;YACrC,MAAM,CAAC,KAAK,EAAE,CAAC;YAEf,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;YAEvE,IAAI,OAAO,GAAa,EAAE,CAAC;YAC3B,IAAI,SAAS,IAAI,MAAM,EAAE;gBAAE,OAAO,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;aAAE;YAC7D,IAAI,WAAW,IAAI,MAAM,EAAE;gBAAE,OAAO,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;aAAE;YACjE,IAAI,UAAU,IAAI,MAAM,EAAE;gBAAE,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;aAAE;YACxD,IAAI,gBAAgB,IAAI,MAAM,EAAE;gBAAE,OAAO,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;aAAE;YACnE,OAAO,CAAC,OAAO,CAAC,UAAC,GAAW;gBACxB,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;YAC5F,CAAC,CAAC,CAAC;YAEH,MAAM,CAAC,EAAE,CAAC,QAAQ,EAAE,UAAC,KAAK;gBACtB,IAAI,QAAQ,GAAmB,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,GAAG,EAAE,CAAC;gBAC5D,wBAAwB;gBACxB,IAAI,QAAQ,IAAI,KAAK;oBAAE,QAAQ,GAAG,EAAE,CAAC;gBACrC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC;qBACd,MAAM,CAAC,QAAQ,CAAC;qBAChB,IAAI,EAAE,CAAC;YAChB,CAAC,CAAC,CAAC;;YArBC,MAAM;QAHd,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,EAAE,KAAK;oBAA9B,KAAK;SAyBb;IACL,CAAC;IACL,oBAAC;AAAD,CAAC;AA5GY,sCAAa;;;;;;;;;;;;;;;;;ACJ1B,+EAAiD;AACjD,yFAAsD;AACtD,mHAAoH;AACpH,mGAAwE;AAGxE;IAOI,0BAAY,IAAS;QAArB,iBAiBC;QAhBG,CAAC,CAAC;YAEE,KAAI,CAAC,YAAY,GAAG,oCAAY,EAAC,mCAAW,EAAiB,IAAI,CAAC,CAAC;YACnE,KAAI,CAAC,YAAY,GAAG,KAAI,CAAC,YAAY,CAAC,GAAG,CAAC,UAAC,WAAwB;gBAC/D,WAAW,CAAC,UAAU,EAAE,CAAC;gBACzB,OAAO,WAAW,CAAC;YACvB,CAAC,CAAC,CAAC;YAEH,KAAI,CAAC,iBAAiB,GAAG,CAAC,4BAA4B,EAAE,6BAA6B,EAAE,4BAA4B,EAAE,0BAA0B,CAAC,CAAC;YACjJ,KAAI,CAAC,iBAAiB,EAAE,CAAC;YACzB,iCAAiC;YAEjC,KAAI,CAAC,eAAe,EAAE,CAAC;YACvB,KAAI,CAAC,yBAAyB,CAAC,KAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;QAE7D,CAAC,CAAC,CAAC;IACP,CAAC;IAED,4CAAiB,GAAjB;QACI,IAAI,CAAC,kBAAkB,CAAC,4BAA4B,EAAE,4BAAM,EAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,UAAC,WAAwB,IAAK,kBAAW,CAAC,eAAe,EAA3B,CAA2B,CAAC,EAAE,IAAI,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;QACnK,IAAI,CAAC,kBAAkB,CAAC,6BAA6B,EAAE,4BAAM,EAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,UAAC,WAAwB,IAAK,kBAAW,CAAC,gBAAgB,EAA5B,CAA4B,CAAC,EAAE,IAAI,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;QAErK,IAAI,MAAM,GAAa,EAAE,CAAC;QAC1B,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,UAAC,WAAwB,IAAO,MAAM,CAAC,IAAI,OAAX,MAAM,EAAS,WAAW,CAAC,mBAAmB,EAAE,CAAC,CAAC,CAAC,CAAC;QAC9G,IAAI,CAAC,kBAAkB,CAAC,4BAA4B,EAAE,4BAAM,EAAC,MAAM,EAAE,IAAI,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;QAE7F,MAAM,GAAG,EAAE,CAAC;QACZ,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,UAAC,WAAwB,IAAO,MAAM,CAAC,IAAI,OAAX,MAAM,EAAS,WAAW,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC;QACtG,IAAI,CAAC,kBAAkB,CAAC,0BAA0B,EAAE,4BAAM,EAAC,MAAM,EAAE,IAAI,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;IAE/F,CAAC;IAED,6CAAkB,GAAlB,UAAmB,QAAgB,EAAE,MAAgB;QAArD,iBAuBC;QAtBG,CAAC,CAAC,QAAQ,CAAC,CAAC,YAAY,CAAC;YACrB,UAAU,EAAE,KAAK;YACjB,kBAAkB,EAAE,OAAO;YAE3B,iBAAiB,EAAE,UAAC,WAAW,EAAE,QAAQ;gBACrC,IAAI,WAAW,IAAI,QAAQ,EAAE;oBACzB,OAAO,KAAK,CAAC;iBAChB;qBACI;oBACD,OAAO,WAAW,GAAG,WAAW,CAAC;iBACpC;YACL,CAAC;SACJ,CAAC,CAAC;QAEH,MAAM,CAAC,OAAO,CAAC,UAAC,OAAY;YACxB,CAAC,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC;QAClE,CAAC,CAAC,CAAC;QACH,CAAC,CAAC,QAAQ,CAAC,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;QAEpC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,mBAAmB,EAAE,UAAC,CAAC,EAAE,YAAY,EAAE,UAAU,EAAE,aAAa;YAC3E,KAAI,CAAC,kBAAkB,EAAE,CAAC;QAC9B,CAAC,CAAC,CAAC;IACP,CAAC;IAGD,0CAAe,GAAf;QAAA,iBAuFC;QAtFG,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC,qBAAqB,CAAC,CAAC,SAAS,CAAC;YAChD,KAAK,EAAE,gFAAgF;YACvF,iGAAiG;YACjG,SAAS,EAAE,IAAI;YACf,IAAI,EAAE,KAAK;YACX,MAAM,EAAE,KAAK;YACb,MAAM,EAAE,IAAI;YACZ,OAAO,EAAE,IAAI;YACb,oBAAoB;YACpB,OAAO,EAAE,MAAM;YACf,cAAc,EAAE,IAAI;YACpB,aAAa,EAAE,IAAI;YACnB,YAAY,EAAE;gBACV,WAAW,EAAE,CAAC;aACjB;YACD,QAAQ,EACR;gBACI,MAAM,EAAE,QAAQ;aACnB;YACD,OAAO,EAAE;gBACL,EAAE,IAAI,EAAE,EAAE,CAAC,EAAE,iBAAiB,EAAE,IAAI,EAAE,iBAAiB,EAAE,EAAE,KAAK,EAAE,kBAAkB,EAAE,SAAS,EAAE,qCAAqC,EAAE;gBACxI,EAAE,IAAI,EAAE,iBAAiB,EAAE,KAAK,EAAE,kBAAkB,EAAE,SAAS,EAAE,6BAA6B,EAAE;gBAChG,EAAE,IAAI,EAAE,kBAAkB,EAAE,KAAK,EAAE,mBAAmB,EAAE,SAAS,EAAE,6BAA6B,EAAE;gBAClG,EAAE,IAAI,EAAE,wBAAwB,EAAE,KAAK,EAAE,kBAAkB,EAAE,SAAS,EAAE,6BAA6B,EAAE;gBACvG,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,qDAAqD,EAAE;gBACzG,EAAE,IAAI,EAAE,gBAAgB,EAAE,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,6BAA6B,EAAE;gBAC1F,EAAE,IAAI,EAAE,iBAAiB,EAAE,KAAK,EAAE,2CAA2C,EAAE,SAAS,EAAE,6BAA6B,EAAE;gBACzH,EAAE,IAAI,EAAE,qBAAqB,EAAE,KAAK,EAAE,sBAAsB,EAAE,SAAS,EAAE,2CAA2C,EAAE;gBACtH,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,2CAA2C,EAAE;gBACzF,EAAE,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,+BAA+B,EAAE;gBAChF,EAAE,IAAI,EAAE,wBAAwB,EAAE,KAAK,EAAE,4BAA4B,EAAE,SAAS,EAAE,6CAA6C,EAAE;gBACjI,EAAE,IAAI,EAAE,gCAAgC,EAAE,KAAK,EAAE,6BAA6B,EAAE,SAAS,EAAE,+BAA+B,EAAE;gBAC5H,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,0BAA0B,EAAE,SAAS,EAAE,6CAA6C,EAAE;gBAC5G,EAAE,IAAI,EAAE,kBAAkB,EAAE,KAAK,EAAE,oBAAoB,EAAE,SAAS,EAAE,4CAA4C,EAAE;gBAClH,EAAE,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE,eAAe,EAAE,SAAS,EAAE,4CAA4C,EAAE;gBACxG,EAAE,IAAI,EAAE,qBAAqB,EAAE,KAAK,EAAE,uBAAuB,EAAE,SAAS,EAAE,4CAA4C,EAAE;gBACxH,EAAE,IAAI,EAAE,wBAAwB,EAAE,KAAK,EAAE,0BAA0B,EAAE,SAAS,EAAE,4CAA4C,EAAE;gBAC9H,EAAE,IAAI,EAAE,2BAA2B,EAAE,KAAK,EAAE,8BAA8B,EAAE,SAAS,EAAE,4CAA4C,EAAE;gBACrI,EAAE,IAAI,EAAE,wBAAwB,EAAE,KAAK,EAAE,0BAA0B,EAAE,SAAS,EAAE,4CAA4C,EAAE;gBAC9H,EAAE,IAAI,EAAE,qBAAqB,EAAE,KAAK,EAAE,wBAAwB,EAAE,SAAS,EAAE,4CAA4C,EAAE;gBACzH,EAAE,IAAI,EAAE,kBAAkB,EAAE,KAAK,EAAE,qBAAqB,EAAE,SAAS,EAAE,4CAA4C,EAAE;gBACnH,EAAE,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,cAAc,EAAE,SAAS,EAAE,4CAA4C,EAAE;gBACtG,EAAE,IAAI,EAAE,yBAAyB,EAAE,KAAK,EAAE,2BAA2B,EAAE,SAAS,EAAE,4CAA4C,EAAE;gBAChI,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,oBAAoB,EAAE,SAAS,EAAE,8CAA8C,EAAE;gBAChH,EAAE,IAAI,EAAE,uBAAuB,EAAE,KAAK,EAAE,yBAAyB,EAAE,SAAS,EAAE,8CAA8C,EAAE;gBAC9H,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,gBAAgB,EAAE,SAAS,EAAE,8CAA8C,EAAE;gBAC5G,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,cAAc,EAAE,OAAO,EAAE,KAAK,EAAE;aAC9D;YACD,OAAO,EAAE;gBACL;oBACI,MAAM,EAAE,KAAK;oBACb,IAAI,EAAE,sCAAsC;oBAC5C,SAAS,EAAE,KAAK;oBAChB,OAAO,EAAE,OAAO;iBACnB;aACJ;YACD,IAAI,EAAE,IAAI,CAAC,YAAY;YACvB,mCAAmC;YACnC,YAAY,EAAE,UAAC,QAAQ,EAAE,IAAI;gBACzB,mGAAmG;YACvG,CAAC;SACJ,CAAC,CAAC;QAEH,CAAC,CAAC,eAAe,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;QAExC,CAAC,CAAC,gBAAgB,CAAC,CAAC,QAAQ,CAAC,sBAAsB,CAAC,CAAC;QACrD,CAAC,CAAC,gBAAgB,CAAC,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,gCAAgC,CAAC,CAAC;QAEnE,CAAC,CAAC,aAAa,CAAC,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAC;QAE7C,CAAC,CAAC,SAAS,CAAC,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAC;QAAC,CAAC;QAC3C,CAAC,CAAC,cAAc,CAAC,CAAC,QAAQ,CAAC,uEAAuE,CAAC,CAAC;QACpG,+IAA+I;QAC/I,CAAC,CAAC,cAAc,CAAC,CAAC,OAAO,CAAC,2EAA2E,CAAC,CAAC;QAEvG,IAAI,CAAC,qBAAqB,GAAG,IAAI,yDAA+B,CAAC,qBAAqB,EAAE,gBAAgB,EAAE;YACtG,IAAI,0CAAgB,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,OAAO,CAAC;YAChD,IAAI,0CAAgB,CAAC,cAAc,EAAE,KAAK,EAAE,EAAE,EAAE,SAAS,CAAC;YAC1D,IAAI,0CAAgB,CAAC,oBAAoB,EAAE,KAAK,EAAE,EAAE,EAAE,QAAQ,CAAC;YAC/D,IAAI,0CAAgB,CAAC,eAAe,EAAE,KAAK,EAAE,EAAE,EAAE,UAAU,CAAC;SAC/D,CAAC,CAAC;QAEH,CAAC,CAAC,qBAAqB,CAAC,CAAC,EAAE,CAAC,WAAW,EAAE,UAAC,CAAC,EAAE,QAAQ;YACjD,KAAI,CAAC,yBAAyB,CAAC,KAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;QACvF,CAAC,CAAC,CAAC;IAEP,CAAC;IAED,6CAAkB,GAAlB;QAAA,iBAOC;QALG,IAAI,OAAO,GAAkB,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,UAAC,WAAwB;YAC3E,OAAO,WAAW,CAAC,aAAa,CAAC,KAAI,CAAC,yBAAyB,CAAC,4BAA4B,CAAC,EAAE,KAAI,CAAC,yBAAyB,CAAC,6BAA6B,CAAC,EAAE,KAAI,CAAC,yBAAyB,CAAC,4BAA4B,CAAC,EAAE,KAAI,CAAC,yBAAyB,CAAC,0BAA0B,CAAC,CAAC,CAAC;QAC5R,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;IAC9B,CAAC;IAED,oDAAyB,GAAzB,UAA0B,QAAgB;QACtC,OAAO,CAAC,CAAC,QAAQ,CAAC,CAAC,GAAG,EAAE,CAAC;IAC7B,CAAC;IAED,8CAA8C;IAC9C,uCAAuC;IACvC,yDAAyD;IACzD,6CAA6C;IAC7C,GAAG;IAGH,sCAAW,GAAX,UAAY,oBAAmC;QAE3C,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;QACvB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC,IAAI,EAAE,CAAC;QACrD,IAAI,CAAC,yBAAyB,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC;IAChE,CAAC;IAED,uCAAY,GAAZ;QAEI,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,UAAC,UAAkB;YAC9C,CAAC,CAAC,UAAU,CAAC,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC;YACxC,CAAC,CAAC,UAAU,CAAC,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;QAC1C,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QACjC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IACxC,CAAC;IAED,oDAAyB,GAAzB,UAA0B,KAAa;QAEnC,QAAQ,KAAK,EAAE;YACX,KAAK,CAAC;gBAAE,CAAC,CAAC,2BAA2B,CAAC,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;gBAAC,MAAM;YAC5E,KAAK,CAAC;gBAAE,CAAC,CAAC,2BAA2B,CAAC,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;gBAAC,MAAM;YAC1E,OAAO,CAAC,CAAC,CAAC,CAAC,2BAA2B,CAAC,CAAC,IAAI,CAAC,KAAK,GAAG,qBAAqB,CAAC,CAAC;SAC/E;IACL,CAAC;IAED,wCAAa,GAAb;QACI,CAAC,CAAC,yBAAyB,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAC/C,CAAC;IAED,gDAAqB,GAArB;QACI,IAAI,KAAK,GAAG,CAAC,CAAC,sBAAsB,CAAC,CAAC;QACtC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,+CAA+C,CAAC,CAAC;QAC9E,KAAK,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,uLAAuL,CAAC,CAAC;QACpO,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IACxB,CAAC;IACL,uBAAC;AAAD,CAAC;AApNY,4CAAgB;;;;;;;;;;;;;;;;;ACN7B,iGAA2O;AAE3O,+EAAiD;AAIjD,2EAAiD;AACjD,wGAA6E;AAG7E;IAYI,8BAAY,iBAAsB,EAAE,YAAiB,EAAE,aAAkB;QAAzE,iBAyCC;QAlDD,4BAAuB,GAA+B,IAAI,CAAC;QAUvD,CAAC,CAAC;YACE,KAAI,CAAC,yBAAyB,GAAG,oCAAY,EAAC,sDAA0B,EAAgC,iBAAiB,CAAC,CAAC;YAE3H,KAAI,CAAC,yBAAyB,CAAC,OAAO,CAAC,cAAI;gBACvC,IAAI,aAAa,GAA2B,EAAE,CAAC;gBAC/C,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAAC,kBAAQ;oBACvC,IAAI,WAAW,GAAG,gDAAoB,CAAC,iCAAiC,CAAC,QAAQ,CAAC,CAAC;oBACnF,aAAa,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;gBACpC,CAAC,CAAC,CAAC;gBACH,IAAI,CAAC,qBAAqB,GAAG,aAAa,CAAC;gBAE3C,IAAI,YAAY,GAA0B,EAAE,CAAC;gBAC7C,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,iBAAO;oBACrC,IAAI,UAAU,GAAG,+CAAmB,CAAC,gCAAgC,CAAC,OAAO,CAAC,CAAC;oBAC/E,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;gBAClC,CAAC,CAAC,CAAC;gBACH,IAAI,CAAC,oBAAoB,GAAG,YAAY,CAAC;YAC7C,CAAC,CAAC;YAEF,KAAI,CAAC,yBAAyB,CAAC,OAAO,CAAC,cAAI,IAAI,WAAI,CAAC,UAAU,EAAE,EAAjB,CAAiB,CAAC,CAAC;YAElE,KAAI,CAAC,YAAY,GAAG,oCAAY,EAAC,oCAAQ,EAAc,YAAY,CAAC,CAAC;YACrE,KAAI,CAAC,YAAY,CAAC,OAAO,CAAC,kBAAQ,IAAI,eAAQ,CAAC,UAAU,EAAE,EAArB,CAAqB,CAAC,CAAC;YAE7D,KAAI,CAAC,aAAa,GAAG,oCAAY,EAAC,+CAAmB,EAAyB,aAAa,CAAC,CAAC;YAC7F,KAAI,CAAC,aAAa,CAAC,OAAO,CAAC,cAAI,IAAI,WAAI,CAAC,UAAU,EAAE,EAAjB,CAAiB,CAAC,CAAC;YACtD,KAAI,CAAC,aAAa,CAAC,IAAI,CAAC,UAAC,EAAE,EAAE,EAAE,IAAK,SAAE,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAtC,CAAsC,CAAC,CAAC;YAE5E,KAAI,CAAC,2BAA2B,EAAE,CAAC;YACnC,KAAI,CAAC,kBAAkB,EAAE,CAAC;YAC1B,KAAI,CAAC,uBAAuB,EAAE,CAAC;YAC/B,KAAI,CAAC,sBAAsB,EAAE,CAAC;YAE9B,sBAAsB;YACtB,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,iBAAiB,EAAE;gBAC5B,IAAI,CAAC,CAAC,aAAa,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE;oBAC7B,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;iBACpC;YACL,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;IACP,CAAC;IAED,0DAA2B,GAA3B;QAEI,IAAI,SAAS,GAAa,EAAE,CAAC;QAC7B,IAAI,CAAC,yBAAyB,CAAC,OAAO,CAAC,cAAI;YACvC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC;gBAAE,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;QAChG,CAAC,CAAC;QACF,SAAS,CAAC,IAAI,EAAE,CAAC;QACjB,IAAI,MAAM,GAAG,EAAE,CAAC;gCAEP,CAAC;YACN,IAAI,kBAAkB,GAAG,OAAK,yBAAyB,CAAC,MAAM,CAAC,cAAI,IAAI,WAAI,CAAC,cAAc,CAAC,IAAI,IAAI,SAAS,CAAC,CAAC,CAAC,EAAxC,CAAwC,CAAC,CAAC;YACjH,IAAI,kBAAkB,CAAC,MAAM,IAAI,CAAC;kCAAW;YAE7C,kBAAkB,CAAC,IAAI,CAAC,UAAC,EAAE,EAAE,EAAE;gBAC3B,OAAO,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;YACpE,CAAC,CAAC,CAAC;YAEH,IAAI,OAAO,GAAG,uCAAgC,SAAS,CAAC,CAAC,CAAC,gBAAM,kBAAkB,CAAC,MAAM,UAAO,CAAC;YACjG,OAAO,IAAI,kEAA2D,CAAC,OAAI;YAE3E,IAAI,UAAU,GAAG,EAAE,CAAC;YAEpB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,kBAAkB,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBAEhD,IAAI,eAAe,GAAG,OAAK,sBAAsB,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC;gBAEzE,IAAI,cAAc,GAAG,OAAK,qBAAqB,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC;gBAEvE,IAAI,cAAc,GAAG,sDAA8C,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,wBAAwB,CAAC,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,gBAAgB,wHAAgH,CAAC;gBAE9Q,IAAI,gBAAgB,GAAG,2EAC0B,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,wBAAwB,CAAC,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,2sBAI5H,CAAC;gBAGF,IAAI,SAAS,GAAG,kMAEqG,kBAAkB,CAAC,CAAC,CAAC,CAAC,EAAE,oFAE5I,CAAC;gBAGF,IAAI,IAAI,GAAG,yGAE2B,CAAC,mBAAS,CAAC,uXAIiF,CAAC,mBAAS,CAAC,oEAAsD,CAAC,mBAAS,CAAC,yNAE7I,kBAAkB,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,8DAC9E,cAAc,oOAOtB,CAAC,mBAAS,CAAC,iEAAmD,CAAC,mBAAS,CAAC,kCAAsB,CAAC,6EACxE,kBAAkB,CAAC,CAAC,CAAC,CAAC,EAAE,8CACpD,gBAAgB,iOAGoD,kBAAkB,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,IAAI,6GACjD,kBAAkB,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,eAAK,kBAAkB,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,uJAClC,kBAAkB,CAAC,CAAC,CAAC,CAAC,wBAAwB,CAAC,gBAAgB,IAAI,IAAI,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,wBAAwB,CAAC,oBAAoB,GAAG,GAAG,GAAG,kBAAkB,CAAC,CAAC,CAAC,CAAC,wBAAwB,CAAC,mBAAmB,GAAG,IAAI,GAAG,kBAAkB,CAAC,CAAC,CAAC,CAAC,wBAAwB,CAAC,gBAAgB,GAAG,GAAG,CAAC,CAAC,CAAC,8CAA8C,2JAC1V,kBAAkB,CAAC,CAAC,CAAC,CAAC,wBAAwB,CAAC,eAAe,IAAI,IAAI,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,wBAAwB,CAAC,mBAAmB,GAAG,GAAG,GAAG,kBAAkB,CAAC,CAAC,CAAC,CAAC,wBAAwB,CAAC,kBAAkB,GAAG,IAAI,GAAG,kBAAkB,CAAC,CAAC,CAAC,CAAC,wBAAwB,CAAC,eAAe,GAAG,GAAG,CAAC,CAAC,CAAC,8CAA8C,maAKxY,kBAAkB,CAAC,CAAC,CAAC,CAAC,wBAAwB,CAAC,qBAAqB,sGAE3G,SAAS,sNAEkF,kBAAkB,CAAC,CAAC,CAAC,CAAC,EAAE,+sBAajB,kBAAkB,CAAC,CAAC,CAAC,CAAC,EAAE,qOAI1H,eAAe,opBAakF,kBAAkB,CAAC,CAAC,CAAC,CAAC,EAAE,mOAIzH,cAAc,uLAMnC;gBACD,UAAU,IAAI,IAAI,CAAC;aACtB;YAED,OAAO,IAAI,UAAU,CAAC;YACtB,OAAO,IAAI,QAAQ;YACnB,MAAM,IAAI,OAAO,CAAC;;;QAnHtB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE;oBAAhC,CAAC;SAoHT;QAED,CAAC,CAAC,mBAAmB,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAEpC,iEAAiE;QACjE,CAAC,CAAC,mBAAmB,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,kBAAkB,EAAE;YAC5D,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QACxD,CAAC,CAAC,CAAC;QAEH,CAAC,CAAC,mBAAmB,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,kBAAkB,EAAE;YAC5D,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;QAC3D,CAAC,CAAC,CAAC;QAEH,yBAAyB;QACzB,CAAC,CAAC,mBAAmB,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC,EAAE,CAAC,OAAO,EAAE;YACpF,IAAI,QAAQ,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAEtC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;gBAC9B,CAAC,CAAC,QAAQ,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;gBAChC,CAAC,CAAC,IAAI,CAAC,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;aACjC;iBACI;gBACD,CAAC,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;gBAC7B,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;aAC9B;QACL,CAAC,CAAC,CAAC;QAEH,CAAC,CAAC,mBAAmB,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,EAAE,CAAC,OAAO,EAAE;YAClF,IAAI,QAAQ,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAEtC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;gBAC9B,CAAC,CAAC,QAAQ,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;gBAChC,CAAC,CAAC,IAAI,CAAC,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;aACjC;iBACI;gBACD,CAAC,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;gBAC7B,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;aAC9B;QACL,CAAC,CAAC;IAEN,CAAC;IAED,iDAAkB,GAAlB;QACI,IAAI,CAAC,qBAAqB,GAAG,IAAI,8BAAa,CAAC,sBAAsB,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;QAC3F,IAAI,CAAC,oBAAoB,GAAG,IAAI,8BAAa,CAAC,qBAAqB,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;IAC7F,CAAC;IAED,sDAAuB,GAAvB;QACI,IAAI,eAAe,GAAa,CAAC,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,eAAe,CAAC,CAAC;QAClF,IAAI,aAAa,GAAe;YAC5B,CAAC,aAAa,EAAE,gBAAgB,EAAE,cAAc,EAAE,YAAY,EAAE,eAAe,EAAE,2BAA2B,EAAE,OAAO,EAAE,iBAAiB,CAAC;YACzI,CAAC,aAAa,EAAE,gBAAgB,EAAE,cAAc,EAAE,YAAY,EAAE,eAAe,EAAE,2BAA2B,EAAE,OAAO,EAAE,iBAAiB,CAAC;YACzI,CAAC,eAAe,EAAE,2BAA2B,EAAE,iBAAiB,CAAC;YACjE,CAAC,eAAe,EAAE,aAAa,EAAE,4BAA4B,EAAE,eAAe,EAAE,iBAAiB,CAAC;SACrG;QAED,IAAI,mBAAmB,GAA6B,EAAE,CAAC;QACvD,IAAI,QAAQ,GAAG,CAAC,CAAC;QACjB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,eAAe,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YAC7C,IAAI,UAAU,GAAW,eAAe,CAAC,CAAC,CAAC,CAAC;YAC5C,IAAI,KAAK,GAAa,aAAa,CAAC,CAAC,CAAC,CAAC;YAEvC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBACnC,mBAAmB,CAAC,IAAI,CAAC,IAAI,kDAAsB,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC;gBACrF,QAAQ,EAAE,CAAC;aACd;SACJ;QAED,IAAI,CAAC,kBAAkB,GAAG,IAAI,iDAAsB,CAAC,UAAU,EAAC,yBAAyB,EAAE,2BAA2B,EAAE,kCAAkC,EAAE,gCAAgC,EAAE,0BAA0B,EAAE,yBAAyB,EAAE,mBAAmB,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;IACjS,CAAC;IAED,qDAAsB,GAAtB;QACI,IAAI,YAAY,GAAa,CAAC,qBAAqB,EAAE,0BAA0B,EAAE,qBAAqB,EAAE,WAAW,EAAE,eAAe,CAAC,CAAC;QACtI,IAAI,cAAc,GAAe;YAC7B,CAAC,eAAe,EAAE,gBAAgB,CAAC;YACnC,CAAC,eAAe,EAAE,gBAAgB,CAAC;YACnC,CAAC,eAAe,EAAE,gBAAgB,EAAE,eAAe,CAAC;YACpD,CAAC,eAAe,EAAE,gBAAgB,EAAE,mBAAmB,CAAC;YACxD,CAAC,iBAAiB,EAAE,WAAW,CAAC;SACnC;QAED,IAAI,kBAAkB,GAA6B,EAAE,CAAC;QACtD,IAAI,QAAQ,GAAG,CAAC,CAAC;QACjB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,YAAY,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YAC1C,IAAI,QAAQ,GAAW,YAAY,CAAC,CAAC,CAAC,CAAC;YACvC,IAAI,OAAO,GAAa,cAAc,CAAC,CAAC,CAAC,CAAC;YAE1C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBACrC,kBAAkB,CAAC,IAAI,CAAC,IAAI,kDAAsB,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC;gBACpF,QAAQ,EAAE,CAAC;aACd;SACJ;QAED,IAAI,CAAC,iBAAiB,GAAG,IAAI,iDAAsB,CAAC,SAAS,EAAE,wBAAwB,EAAE,0BAA0B,EAAE,iCAAiC,EAAE,+BAA+B,EAAE,yBAAyB,EAAE,wBAAwB,EAAE,kBAAkB,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;IACzR,CAAC;IAED,2CAAY,GAAZ,UAAa,MAAc;QAA3B,iBAqCC;QApCG,gBAAgB;QAChB,CAAC,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;QAEhD,sBAAsB;QACtB,IAAI,CAAC,qBAAqB,CAAC,WAAW,EAAE,CAAC;QAEzC,oBAAoB;QACpB,IAAI,IAAI,GAA+B,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,gBAAM,IAAI,aAAM,CAAC,EAAE,IAAI,MAAM,EAAnB,CAAmB,CAAC,CAAC;QAE1G,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,SAAS;YAAE,OAAO;QAE9C,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC;QAEpC,CAAC,CAAC,uBAAuB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,wBAAwB,CAAC,gBAAgB,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,wBAAwB,CAAC,oBAAoB,GAAG,GAAG,GAAG,IAAI,CAAC,wBAAwB,CAAC,mBAAmB,GAAG,IAAI,GAAG,IAAI,CAAC,wBAAwB,CAAC,gBAAgB,GAAG,GAAG,CAAC,CAAC,CAAC,8CAA8C,CAAC,CAAC;QACtT,CAAC,CAAC,sBAAsB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,wBAAwB,CAAC,eAAe,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,wBAAwB,CAAC,mBAAmB,GAAG,GAAG,GAAG,IAAI,CAAC,wBAAwB,CAAC,kBAAkB,GAAG,IAAI,GAAG,IAAI,CAAC,wBAAwB,CAAC,eAAe,GAAG,GAAG,CAAC,CAAC,CAAC,8CAA8C,CAAC;QAEhT,CAAC,CAAC,WAAW,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAE7B,UAAU,CAAC;YACP,KAAI,CAAC,qBAAqB,CAAC,cAAc,EAAE,CAAC;YAC5C,qBAAqB;YACrB,IAAI,IAAI,CAAC,wBAAwB,CAAC,gBAAgB,IAAI,IAAI,IAAI,IAAI,CAAC,wBAAwB,CAAC,gBAAgB,IAAI,EAAE,EAAE;gBAChH,IAAI,eAAe,GAAG,IAAI,+CAAmB,CAAC,IAAI,CAAC,wBAAwB,CAAC,oBAAoB,EAAE,IAAI,CAAC,wBAAwB,CAAC,mBAAmB,EAAE,IAAI,CAAC,wBAAwB,CAAC,gBAAgB,CAAC;gBACpM,KAAI,CAAC,qBAAqB,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC;aACzD;YAED,KAAI,CAAC,oBAAoB,CAAC,cAAc,EAAE,CAAC;YAC3C,qBAAqB;YACrB,IAAI,IAAI,CAAC,wBAAwB,CAAC,eAAe,IAAI,IAAI,IAAI,IAAI,CAAC,wBAAwB,CAAC,eAAe,IAAI,EAAE,EAAE;gBAC9G,IAAI,cAAc,GAAG,IAAI,+CAAmB,CAAC,IAAI,CAAC,wBAAwB,CAAC,mBAAmB,EAAE,IAAI,CAAC,wBAAwB,CAAC,kBAAkB,EAAE,IAAI,CAAC,wBAAwB,CAAC,eAAe,CAAC;gBAChM,KAAI,CAAC,oBAAoB,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;aACvD;YAED,CAAC,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,OAAO,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;QACzE,CAAC,EAAE,GAAG,CAAC,CAAC;IAEZ,CAAC;IAED,gDAAiB,GAAjB,UAAkB,MAAc;QAC5B,CAAC,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;QACrD,IAAI,CAAC,kBAAkB,CAAC,QAAQ,EAAE,CAAC;QACnC,IAAI,qBAAqB,GAAG,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,cAAI,IAAI,WAAI,CAAC,EAAE,IAAI,MAAM,EAAjB,CAAiB,CAAC,CAAC;QAC3F,IAAI,qBAAqB,IAAI,SAAS,EAAE;YACpC,qBAAqB,CAAC,UAAU,EAAE,CAAC;YACnC,IAAI,CAAC,kBAAkB,CAAC,kCAAkC,CAAC,qBAAqB,CAAC,CAAC;SACrF;QACD,CAAC,CAAC,gBAAgB,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAElC,UAAU,CAAC;YACP,CAAC,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,OAAO,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;QAC9E,CAAC,EAAE,GAAG,CAAC;IACX,CAAC;IAED,+CAAgB,GAAhB,UAAiB,MAAc;QAC3B,IAAI,CAAC,iBAAiB,CAAC,QAAQ,EAAE,CAAC;QAClC,IAAI,qBAAqB,GAAG,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,cAAI,IAAI,WAAI,CAAC,EAAE,IAAI,MAAM,EAAjB,CAAiB,CAAC,CAAC;QAC3F,IAAI,qBAAqB,IAAI,SAAS,EAAE;YACpC,qBAAqB,CAAC,UAAU,EAAE,CAAC;YACnC,IAAI,CAAC,iBAAiB,CAAC,kCAAkC,CAAC,qBAAqB,CAAC,CAAC;SACpF;QACD,CAAC,CAAC,eAAe,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAEjC,UAAU,CAAC;YACP,CAAC,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,OAAO,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;QAC7E,CAAC,EAAE,GAAG,CAAC;IACX,CAAC;IAED,8CAAe,GAAf,UAAgB,MAAc;QAC1B,IAAI,qBAAqB,GAAG,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,cAAI,IAAI,WAAI,CAAC,EAAE,IAAI,MAAM,EAAjB,CAAiB,CAAC,CAAC;QAC3F,IAAI,qBAAqB,IAAI,SAAS,EAAE;YACpC,qBAAqB,CAAC,UAAU,EAAE,CAAC;YACnC,CAAC,CAAC,kBAAkB,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,IAAI,CAAC,qBAAqB,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;YAC9F,CAAC,CAAC,kBAAkB,CAAC,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC,IAAI,CAAC,qBAAqB,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;YAClG,CAAC,CAAC,kBAAkB,CAAC,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YAC5F,CAAC,CAAC,kBAAkB,CAAC,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;YAC7F,CAAC,CAAC,kBAAkB,CAAC,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC,IAAI,CAAC,qBAAqB,CAAC,wBAAwB,CAAC,qBAAqB,CAAC,CAAC;YAC/H,IAAI,CAAC,uBAAuB,GAAG,qBAAqB,CAAC;SACxD;QACD,CAAC,CAAC,kBAAkB,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IACxC,CAAC;IAED,8CAAe,GAAf;QAAA,iBAoDC;QAlDG,gBAAgB;QAChB,IAAI,CAAC,IAAI,CAAC,qBAAqB,CAAC,iBAAiB,EAAE,EAAE;YACjD,OAAO;SACV;QAED,aAAa;QACb,IAAI,eAAe,GAAwB,IAAI,CAAC,qBAAqB,CAAC,eAAe,EAAE,CAAC;QAExF,IAAI,WAAW,GAAG,IAAI,oDAAwB,CAAC,IAAI,CAAC,uBAAuB,CAAC,wBAAwB,CAAC,CAAC;QACtG,WAAW,CAAC,oBAAoB,GAAG,eAAe,CAAC,SAAS,CAAC;QAC7D,WAAW,CAAC,mBAAmB,GAAG,eAAe,CAAC,QAAQ,CAAC;QAC3D,WAAW,CAAC,gBAAgB,GAAG,eAAe,CAAC,KAAK,CAAC;QACrD,WAAW,CAAC,gBAAgB,GAAG,IAAI,IAAI,EAAE,CAAC;QAE1C,eAAe;QACf,CAAC,CAAC,uBAAuB,CAAC,CAAC,IAAI,CAAC,mDAAiD,CAAC,CAAC;QAEnF,4CAA4C;QAC5C,IAAI,SAAS,GAAG,UAAC,QAAa;YAC1B,8CAA8C;YAC9C,IAAI,WAAW,GAA6B,QAAQ,CAAC;YAErD,wBAAwB;YACxB,IAAI,UAAU,GAAW,KAAI,CAAC,yBAAyB,CAAC,SAAS,CAAC,eAAK,IAAI,YAAK,CAAC,EAAE,IAAI,WAAW,CAAC,EAAE,EAA1B,CAA0B,CAAC,CAAC;YACvG,IAAI,UAAU,IAAI,CAAC,EAAE;gBAEjB,IAAI,aAAa,GAA+B,sDAA0B,CAAC,gCAAgC,CAAC,KAAI,CAAC,yBAAyB,CAAC,UAAU,CAAC,CAAC,CAAC;gBACxJ,aAAa,CAAC,wBAAwB,GAAG,WAAW,CAAC;gBACrD,aAAa,CAAC,UAAU,EAAE,CAAC;gBAE3B,KAAI,CAAC,yBAAyB,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,EAAE,aAAa,CAAC,CAAC;gBAEpE,4BAA4B;gBAC5B,KAAI,CAAC,6BAA6B,CAAC,aAAa,CAAC;aACpD;YAED,4CAA4C;YAC5C,CAAC,CAAC,uBAAuB,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,gBAAgB,IAAI,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,oBAAoB,GAAG,GAAG,GAAG,WAAW,CAAC,mBAAmB,GAAG,IAAI,GAAG,WAAW,CAAC,gBAAgB,GAAG,GAAG,CAAC,CAAC,CAAC,8CAA8C,CAAC;QAGjP,CAAC;QAED,IAAI,OAAO,GAAG,UAAC,QAAa;YACxB,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YACtB,KAAK,CAAC,iDAAiD,CAAC,CAAC;QAC7D,CAAC;QAED,kBAAkB;QAClB,IAAI,CAAC,sBAAsB,CAAC,WAAW,EAAE,SAAS,EAAE,OAAO,CAAC;IAEhE,CAAC;IAED,6CAAc,GAAd;QAAA,iBAmDC;QAjDG,gBAAgB;QAChB,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC,iBAAiB,EAAE,EAAE;YAChD,OAAO;SACV;QAED,aAAa;QACb,IAAI,cAAc,GAAwB,IAAI,CAAC,oBAAoB,CAAC,eAAe,EAAE,CAAC;QAEtF,IAAI,WAAW,GAAG,IAAI,oDAAwB,CAAC,IAAI,CAAC,uBAAuB,CAAC,wBAAwB,CAAC,CAAC;QACtG,WAAW,CAAC,mBAAmB,GAAG,cAAc,CAAC,SAAS,CAAC;QAC3D,WAAW,CAAC,kBAAkB,GAAG,cAAc,CAAC,QAAQ,CAAC;QACzD,WAAW,CAAC,eAAe,GAAG,cAAc,CAAC,KAAK,CAAC;QACnD,WAAW,CAAC,gBAAgB,GAAG,IAAI,IAAI,EAAE,CAAC;QAE1C,eAAe;QACf,CAAC,CAAC,sBAAsB,CAAC,CAAC,IAAI,CAAC,mDAAiD,CAAC,CAAC;QAElF,4CAA4C;QAC5C,IAAI,SAAS,GAAG,UAAC,QAAa;YAC1B,8CAA8C;YAC9C,IAAI,WAAW,GAA6B,QAAQ,CAAC;YAErD,wBAAwB;YACxB,IAAI,UAAU,GAAW,KAAI,CAAC,yBAAyB,CAAC,SAAS,CAAC,eAAK,IAAI,YAAK,CAAC,EAAE,IAAI,WAAW,CAAC,EAAE,EAA1B,CAA0B,CAAC,CAAC;YACvG,IAAI,UAAU,IAAI,CAAC,EAAE;gBAEjB,IAAI,aAAa,GAA+B,sDAA0B,CAAC,gCAAgC,CAAC,KAAI,CAAC,yBAAyB,CAAC,UAAU,CAAC,CAAC,CAAC;gBACxJ,aAAa,CAAC,wBAAwB,GAAG,WAAW,CAAC;gBACrD,aAAa,CAAC,UAAU,EAAE,CAAC;gBAE3B,KAAI,CAAC,yBAAyB,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,EAAE,aAAa,CAAC,CAAC;gBAEpE,4BAA4B;gBAC5B,KAAI,CAAC,6BAA6B,CAAC,aAAa,CAAC;aACpD;YAED,uDAAuD;YACvD,CAAC,CAAC,sBAAsB,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,eAAe,IAAI,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,mBAAmB,GAAG,GAAG,GAAG,WAAW,CAAC,kBAAkB,GAAG,IAAI,GAAG,WAAW,CAAC,eAAe,GAAG,GAAG,CAAC,CAAC,CAAC,8CAA8C,CAAC;QAE5O,CAAC;QAED,IAAI,OAAO,GAAG,UAAC,QAAa;YACxB,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YACtB,KAAK,CAAC,iDAAiD,CAAC,CAAC;QAC7D,CAAC;QAED,kBAAkB;QAClB,IAAI,CAAC,sBAAsB,CAAC,WAAW,EAAE,SAAS,EAAE,OAAO,CAAC;IAEhE,CAAC;IAED,0CAAW,GAAX;QAAA,iBA2EC;QA1EG,gDAAgD;QAChD,IAAI,aAAa,GAAY,KAAK,CAAC;QACnC,IAAI,IAAI,CAAC,qBAAqB,CAAC,WAAW,EAAE,EAAE;YAC1C,IAAI,CAAC,IAAI,CAAC,qBAAqB,CAAC,iBAAiB,EAAE,EAAE;gBACjD,OAAO;aACV;YACD,aAAa,GAAG,IAAI,CAAC;SACxB;QAED,IAAI,YAAY,GAAY,KAAK,CAAC;QAClC,IAAI,IAAI,CAAC,oBAAoB,CAAC,WAAW,EAAE,EAAE;YACzC,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC,iBAAiB,EAAE,EAAE;gBAChD,OAAO;aACV;YACD,YAAY,GAAG,IAAI,CAAC;SACvB;QAED,2BAA2B;QAC3B,IAAI,aAAa,IAAI,YAAY,EAAE;YAC/B,IAAI,WAAW,GAAG,IAAI,oDAAwB,CAAC,IAAI,CAAC,uBAAuB,CAAC,wBAAwB,CAAC,CAAC;YACtG,WAAW,CAAC,gBAAgB,GAAG,IAAI,IAAI,EAAE,CAAC;YAE1C,IAAI,aAAa,EAAE;gBACf,IAAI,eAAe,GAAwB,IAAI,CAAC,qBAAqB,CAAC,eAAe,EAAE,CAAC;gBACxF,WAAW,CAAC,oBAAoB,GAAG,eAAe,CAAC,SAAS,CAAC;gBAC7D,WAAW,CAAC,mBAAmB,GAAG,eAAe,CAAC,QAAQ,CAAC;gBAC3D,WAAW,CAAC,gBAAgB,GAAG,eAAe,CAAC,KAAK,CAAC;gBACrD,CAAC,CAAC,uBAAuB,CAAC,CAAC,IAAI,CAAC,mDAAiD,CAAC,CAAC;aACtF;YAED,IAAI,YAAY,EAAE;gBACd,IAAI,cAAc,GAAwB,IAAI,CAAC,oBAAoB,CAAC,eAAe,EAAE,CAAC;gBACtF,WAAW,CAAC,mBAAmB,GAAG,cAAc,CAAC,SAAS,CAAC;gBAC3D,WAAW,CAAC,kBAAkB,GAAG,cAAc,CAAC,QAAQ,CAAC;gBACzD,WAAW,CAAC,eAAe,GAAG,cAAc,CAAC,KAAK,CAAC;gBACnD,CAAC,CAAC,sBAAsB,CAAC,CAAC,IAAI,CAAC,mDAAiD,CAAC,CAAC;aACrF;YAED,IAAI,SAAS,GAAG,UAAC,QAAa;gBAC1B,8CAA8C;gBAC9C,IAAI,WAAW,GAA6B,QAAQ,CAAC;gBAErD,wBAAwB;gBACxB,IAAI,UAAU,GAAW,KAAI,CAAC,yBAAyB,CAAC,SAAS,CAAC,eAAK,IAAI,YAAK,CAAC,EAAE,IAAI,WAAW,CAAC,EAAE,EAA1B,CAA0B,CAAC,CAAC;gBACvG,IAAI,UAAU,IAAI,CAAC,EAAE;oBAEjB,IAAI,aAAa,GAA+B,sDAA0B,CAAC,gCAAgC,CAAC,KAAI,CAAC,yBAAyB,CAAC,UAAU,CAAC,CAAC,CAAC;oBACxJ,aAAa,CAAC,wBAAwB,GAAG,WAAW,CAAC;oBACrD,aAAa,CAAC,UAAU,EAAE,CAAC;oBAE3B,KAAI,CAAC,yBAAyB,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,EAAE,aAAa,CAAC,CAAC;oBAEpE,4BAA4B;oBAC5B,KAAI,CAAC,6BAA6B,CAAC,aAAa,CAAC;iBACpD;gBAED,4CAA4C;gBAC5C,CAAC,CAAC,sBAAsB,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,eAAe,IAAI,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,mBAAmB,GAAG,GAAG,GAAG,WAAW,CAAC,kBAAkB,GAAG,IAAI,GAAG,WAAW,CAAC,eAAe,GAAG,GAAG,CAAC,CAAC,CAAC,8CAA8C,CAAC;gBACxO,CAAC,CAAC,uBAAuB,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,gBAAgB,IAAI,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,oBAAoB,GAAG,GAAG,GAAG,WAAW,CAAC,mBAAmB,GAAG,IAAI,GAAG,WAAW,CAAC,gBAAgB,GAAG,GAAG,CAAC,CAAC,CAAC,8CAA8C,CAAC;YAEjP,CAAC;YAED,IAAI,OAAO,GAAG,UAAC,QAAa;gBACxB,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;gBACtB,KAAK,CAAC,iDAAiD,CAAC,CAAC;YAC7D,CAAC;YAED,kBAAkB;YAClB,IAAI,CAAC,sBAAsB,CAAC,WAAW,EAAE,SAAS,EAAE,OAAO,CAAC;SAC/D;QAED,cAAc;QACd,CAAC,CAAC,WAAW,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAEjC,CAAC;IAED,8CAAe,GAAf;QAAA,iBAiCC;QAhCG,IAAI,WAAW,GAAG,IAAI,oDAAwB,CAAC,IAAI,CAAC,uBAAuB,CAAC,wBAAwB,CAAC,CAAC;QACtG,WAAW,CAAC,cAAc,GAAG,IAAI,IAAI,EAAE,CAAC;QAExC,IAAI,SAAS,GAAG,UAAC,QAAa;YAC1B,8CAA8C;YAC9C,IAAI,WAAW,GAA6B,QAAQ,CAAC;YAErD,wBAAwB;YACxB,IAAI,UAAU,GAAW,KAAI,CAAC,yBAAyB,CAAC,SAAS,CAAC,eAAK,IAAI,YAAK,CAAC,EAAE,IAAI,WAAW,CAAC,EAAE,EAA1B,CAA0B,CAAC,CAAC;YACvG,IAAI,UAAU,IAAI,CAAC,EAAE;gBAEjB,IAAI,aAAa,GAA+B,sDAA0B,CAAC,gCAAgC,CAAC,KAAI,CAAC,yBAAyB,CAAC,UAAU,CAAC,CAAC,CAAC;gBACxJ,aAAa,CAAC,wBAAwB,GAAG,WAAW,CAAC;gBACrD,aAAa,CAAC,UAAU,EAAE,CAAC;gBAE3B,KAAI,CAAC,yBAAyB,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,EAAE,aAAa,CAAC,CAAC;gBAEpE,4BAA4B;gBAC5B,KAAI,CAAC,6BAA6B,CAAC,aAAa,CAAC;aACpD;QACL,CAAC;QAED,IAAI,OAAO,GAAG,UAAC,QAAa;YACxB,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YACtB,KAAK,CAAC,iDAAiD,CAAC,CAAC;QAC7D,CAAC;QAED,kBAAkB;QAClB,IAAI,CAAC,sBAAsB,CAAC,WAAW,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;QAE7D,cAAc;QACd,CAAC,CAAC,kBAAkB,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IACxC,CAAC;IAED,wDAAyB,GAAzB;QACI,IAAI,CAAC,uBAAuB,EAAE,CAAC;QAC/B,CAAC,CAAC,gBAAgB,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IACtC,CAAC;IAED,uDAAwB,GAAxB;QACI,IAAI,CAAC,sBAAsB,EAAE,CAAC;QAC9B,CAAC,CAAC,eAAe,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IACrC,CAAC;IAED,sDAAuB,GAAvB;QACI,oCAAoC;QACpC,IAAI,sBAAsB,GAAG,IAAI,CAAC,kBAAkB,CAAC,yBAAyB,EAAE,CAAC;QACjF,+BAA+B;QAC/B,IAAI,CAAC,kBAAkB,CAAC,oBAAoB,EAAE,CAAC;QAE/C,0BAA0B;QAC1B,IAAI,UAAU,GAAG,IAAI,CAAC,yBAAyB,CAAC,SAAS,CAAC,cAAI,IAAI,WAAI,CAAC,EAAE,IAAI,sBAAsB,CAAC,EAAE,EAApC,CAAoC,CAAC,CAAC;QACxG,IAAI,UAAU,IAAI,CAAC,EAAC;YAChB,IAAI,aAAa,GAA+B,sDAA0B,CAAC,gCAAgC,CAAC,IAAI,CAAC,yBAAyB,CAAC,UAAU,CAAC,CAAC,CAAC;YACxJ,aAAa,CAAC,UAAU,EAAE,CAAC;YAE3B,IAAI,CAAC,yBAAyB,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,EAAE,aAAa,CAAC,CAAC;SACvE;QAED,4BAA4B;QAC5B,sBAAsB,CAAC,UAAU,EAAE,CAAC;QACpC,IAAI,CAAC,6BAA6B,CAAC,sBAAsB,CAAC,CAAC;IAC/D,CAAC;IAED,qDAAsB,GAAtB;QACI,oCAAoC;QACpC,IAAI,sBAAsB,GAAG,IAAI,CAAC,iBAAiB,CAAC,yBAAyB,EAAE,CAAC;QAChF,+BAA+B;QAC/B,IAAI,CAAC,iBAAiB,CAAC,mBAAmB,EAAE,CAAC;QAE7C,0BAA0B;QAC1B,IAAI,UAAU,GAAG,IAAI,CAAC,yBAAyB,CAAC,SAAS,CAAC,cAAI,IAAI,WAAI,CAAC,EAAE,IAAI,sBAAsB,CAAC,EAAE,EAApC,CAAoC,CAAC,CAAC;QACxG,IAAI,UAAU,IAAI,CAAC,EAAE;YACjB,IAAI,aAAa,GAA+B,sDAA0B,CAAC,gCAAgC,CAAC,IAAI,CAAC,yBAAyB,CAAC,UAAU,CAAC,CAAC,CAAC;YACxJ,aAAa,CAAC,UAAU,EAAE,CAAC;YAE3B,IAAI,CAAC,yBAAyB,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,EAAE,aAAa,CAAC,CAAC;SACvE;QAED,4BAA4B;QAC5B,sBAAsB,CAAC,UAAU,EAAE,CAAC;QACpC,IAAI,CAAC,6BAA6B,CAAC,sBAAsB,CAAC,CAAC;IAC/D,CAAC;IAED,qDAAsB,GAAtB,UAAuB,QAAkC,EAAE,WAA8C,EAAE,SAA4C;QAA5F,sDAAyB,QAAa,IAAO,CAAC;QAAE,kDAAuB,QAAa,IAAO,CAAC;QACnJ,CAAC,CAAC,IAAI,CAAC;YACH,GAAG,EAAE,8FAA8F;YACnG,MAAM,EAAE,MAAM;YACd,mBAAmB;YACnB,kCAAkC;YAClC,IAAI,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAC;YAC3C,OAAO,EAAE,EAAE,0BAA0B,EAAE,CAAC,CAAC,0CAA0C,CAAC,CAAC,GAAG,EAAE,EAAE;YAC5F,OAAO,EAAE,UAAC,QAAQ;gBACd,WAAW,CAAC,QAAQ,CAAC,CAAC;YAC1B,CAAC;YACD,KAAK,EAAE,UAAC,QAAQ;gBACZ,SAAS,CAAC,QAAQ,CAAC,CAAC;YACxB,CAAC;SACJ,CAAC,CAAC;IACP,CAAC;IAED,4DAA6B,GAA7B,UAA8B,IAAgC;QAC1D,gBAAgB;QAChB,IAAI,OAAO,GAAW,gBAAS,IAAI,CAAC,EAAE,CAAE,CAAC;QAEzC,eAAe;QACf,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,wBAAwB,CAAC,qBAAqB,CAAC,CAAC;QAEnG,yBAAyB;QACzB,IAAI,IAAI,CAAC,wBAAwB,CAAC,gBAAgB,IAAI,IAAI,EAAE;YACxD,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC,IAAI,CAAC,UAAG,IAAI,CAAC,wBAAwB,CAAC,oBAAoB,GAAG,GAAG,GAAG,IAAI,CAAC,wBAAwB,CAAC,mBAAmB,GAAG,IAAI,GAAG,IAAI,CAAC,wBAAwB,CAAC,gBAAgB,GAAG,GAAG,CAAE,CAAC,CAAC;SAClO;QACD,IAAI,IAAI,CAAC,wBAAwB,CAAC,eAAe,IAAI,IAAI,EAAE;YACvD,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC,IAAI,CAAC,UAAG,IAAI,CAAC,wBAAwB,CAAC,mBAAmB,GAAG,GAAG,GAAG,IAAI,CAAC,wBAAwB,CAAC,kBAAkB,GAAG,IAAI,GAAG,IAAI,CAAC,wBAAwB,CAAC,eAAe,GAAG,GAAG,CAAE,CAAC;SAC7N;QAED,8BAA8B;QAC9B,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC;QAEhC,6BAA6B;QAC7B,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC;QAE/B,wBAAwB;QACxB,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,CAAC;QAEpC,4BAA4B;QAC5B,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC;IACxC,CAAC;IAED,mDAAoB,GAApB,UAAqB,IAAgC;QACjD,IAAI,OAAO,GAAW,gBAAS,IAAI,CAAC,EAAE,CAAE,CAAC;QAEzC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,KAAK,EAAE,CAAC;QAE7C,IAAI,eAAe,GAAG,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC;QAExD,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QAE3D,yBAAyB;QACzB,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC,EAAE,CAAC,OAAO,EAAE;YACxE,IAAI,QAAQ,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAEtC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;gBAC9B,CAAC,CAAC,QAAQ,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;gBAChC,CAAC,CAAC,IAAI,CAAC,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;aACjC;iBACI;gBACD,CAAC,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;gBAC7B,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;aAC9B;QACL,CAAC,CAAC;IACN,CAAC;IAED,kDAAmB,GAAnB,UAAoB,IAAgC;QAChD,IAAI,OAAO,GAAW,gBAAS,IAAI,CAAC,EAAE,CAAE,CAAC;QAEzC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,KAAK,EAAE,CAAC;QAE5C,IAAI,cAAc,GAAG,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC;QAEtD,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QAEzD,yBAAyB;QACzB,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,EAAE,CAAC,OAAO,EAAE;YACtE,IAAI,QAAQ,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAEtC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;gBAC9B,CAAC,CAAC,QAAQ,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;gBAChC,CAAC,CAAC,IAAI,CAAC,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;aACjC;iBACI;gBACD,CAAC,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;gBAC7B,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;aAC9B;QACL,CAAC,CAAC;IACN,CAAC;IAED,uDAAwB,GAAxB,UAAyB,IAAgC;QACrD,IAAI,OAAO,GAAW,gBAAS,IAAI,CAAC,EAAE,CAAE,CAAC;QACzC,IAAI,WAAW,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAE9C,+BAA+B;QAC/B,IAAI,IAAI,CAAC,wBAAwB,CAAC,YAAY,EAAE;YAE5C,CAAC,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC;YAC9F,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;SAChE;aACI;YACD,CAAC,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,WAAW,CAAC,gBAAgB,CAAC,CAAC;YAC9F,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;SAC7D;IACL,CAAC;IAED,qDAAsB,GAAtB,UAAuB,IAAgC;QAAvD,iBA4EC;QA3EG,IAAI,eAAe,GAAG,EAAE;QAExB,IAAI,IAAI,CAAC,qBAAqB,CAAC,MAAM,IAAI,CAAC,EAAE;YACxC,eAAe,GAAG,mOAGP;SACd;aACI;YACD,eAAe,GAAG,wDAAiD,IAAI,CAAC,EAAE,OAAI;YAC9E,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,UAAC,EAAE,EAAE,EAAE,IAAK,SAAE,CAAC,cAAc,CAAC,aAAa,CAAC,EAAE,CAAC,cAAc,CAAC,EAAlD,CAAkD,CAAC,CAAC;oCAEvF,CAAC;gBACN,IAAI,QAAQ,GAAG,IAAI,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;gBAE7C,IAAI,eAAe,GAAG,EAAE,CAAC;gBAGzB,IAAI,IAAI,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC,WAAW,IAAI,EAAE,IAAI,IAAI,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC,WAAW,IAAI,SAAS,EAAE;oBAC3G,eAAe,GAAG,oEAAoE,CAAC;iBAC1F;qBACI;oBACD,IAAI,WAAW,GAAa,IAAI,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;oBACjF,IAAI,gBAAc,GAAe,EAAE,CAAC;oBACpC,eAAe,GAAG,0BAAwB;oBAC1C,WAAW,CAAC,OAAO,CAAC,YAAE;wBAClB,IAAI,aAAa,GAAa,KAAI,CAAC,YAAY,CAAC,IAAI,CAAC,kBAAQ,IAAI,eAAQ,CAAC,UAAU,CAAC,QAAQ,EAAE,IAAI,EAAE,EAApC,CAAoC,CAAC,CAAC;wBACvG,IAAI,aAAa,IAAI,SAAS,EAAE;4BAC5B,gBAAc,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;yBACtC;oBACL,CAAC,CAAC;oBACF,gBAAc,CAAC,IAAI,CAAC,UAAC,EAAE,EAAE,EAAE,IAAK,SAAE,CAAC,SAAS,CAAC,aAAa,CAAC,EAAE,CAAC,SAAS,CAAC,EAAxC,CAAwC,CAAC,CAAC;oBAC1E,gBAAc,CAAC,OAAO,CAAC,kBAAQ;wBAC3B,eAAe,IAAI,kCAA2B,QAAQ,CAAC,SAAS,UAAO;oBAC3E,CAAC,CAAC;oBACF,eAAe,IAAI,OAAO;iBAC7B;gBAID,IAAI,WAAW,GAAG,gLAEqE,QAAQ,CAAC,kBAAkB,cAAI,CAAC,waAMtE,QAAQ,CAAC,cAAc,qFAC5B,QAAQ,CAAC,YAAY,kKAIpC,QAAQ,CAAC,kBAAkB,cAAI,CAAC,2EAA6D,IAAI,CAAC,EAAE,oLAGnH,eAAe,yFAGtB;gBAEP,IAAI,aAAa,GAAG,iFAEd,WAAW,+CAEhB;gBAED,eAAe,IAAI,aAAa,CAAC;;YAvDrC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,qBAAqB,CAAC,MAAM,EAAE,CAAC,EAAE;wBAAjD,CAAC;aAwDT;YAED,eAAe,IAAI,QAAQ;SAE9B;QAED,OAAO,eAAe;IAC1B,CAAC;IAED,oDAAqB,GAArB,UAAsB,IAAgC;QAAtD,iBA4EC;QA3EG,IAAI,cAAc,GAAG,EAAE;QAEvB,IAAI,IAAI,CAAC,oBAAoB,CAAC,MAAM,IAAI,CAAC,EAAE;YACvC,cAAc,GAAG,gOAGN;SACd;aACI;YACD,cAAc,GAAG,uDAAgD,IAAI,CAAC,EAAE,OAAI;YAC5E,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,UAAC,EAAE,EAAE,EAAE,IAAK,SAAE,CAAC,aAAa,CAAC,aAAa,CAAC,EAAE,CAAC,aAAa,CAAC,EAAhD,CAAgD,CAAC,CAAC;oCAEpF,CAAC;gBACN,IAAI,OAAO,GAAG,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC;gBAE3C,IAAI,eAAe,GAAG,EAAE,CAAC;gBAGzB,IAAI,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,WAAW,IAAI,EAAE,IAAI,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,WAAW,IAAI,SAAS,EAAE;oBACzG,eAAe,GAAG,oEAAoE,CAAC;iBAC1F;qBACI;oBACD,IAAI,WAAW,GAAa,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;oBAChF,IAAI,gBAAc,GAAe,EAAE,CAAC;oBACpC,eAAe,GAAG,0BAAwB;oBAC1C,WAAW,CAAC,OAAO,CAAC,YAAE;wBAClB,IAAI,aAAa,GAAa,KAAI,CAAC,YAAY,CAAC,IAAI,CAAC,kBAAQ,IAAI,eAAQ,CAAC,UAAU,CAAC,QAAQ,EAAE,IAAI,EAAE,EAApC,CAAoC,CAAC,CAAC;wBACvG,IAAI,aAAa,IAAI,SAAS,EAAE;4BAC5B,gBAAc,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;yBACtC;oBACL,CAAC,CAAC,CAAC;oBACH,gBAAc,CAAC,IAAI,CAAC,UAAC,EAAE,EAAE,EAAE,IAAK,SAAE,CAAC,SAAS,CAAC,aAAa,CAAC,EAAE,CAAC,SAAS,CAAC,EAAxC,CAAwC,CAAC,CAAC;oBAC1E,gBAAc,CAAC,OAAO,CAAC,kBAAQ;wBAC3B,eAAe,IAAI,kCAA2B,QAAQ,CAAC,SAAS,UAAO;oBAC3E,CAAC,CAAC;oBACF,eAAe,IAAI,OAAO;iBAC7B;gBAID,IAAI,WAAW,GAAG,8KAEmE,OAAO,CAAC,kBAAkB,cAAI,CAAC,waAMnE,OAAO,CAAC,aAAa,qFAC1B,OAAO,CAAC,WAAW,iKAInC,OAAO,CAAC,kBAAkB,cAAI,CAAC,0EAA4D,IAAI,CAAC,EAAE,oLAGhH,eAAe,yFAGtB;gBAEP,IAAI,aAAa,GAAG,iFAEd,WAAW,+CAEhB;gBAED,cAAc,IAAI,aAAa,CAAC;;YAvDpC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,oBAAoB,CAAC,MAAM,EAAE,CAAC,EAAE;wBAAhD,CAAC;aAwDT;YAED,cAAc,IAAI,QAAQ;SAE7B;QAED,OAAO,cAAc;IACzB,CAAC;IAEL,2BAAC;AAAD,CAAC;AA53BY,oDAAoB;;;;;;;;;;;;;ACVjC,uC;;;;;;;;;;;ACAA,uC;;;;;;;;;;;;;;;ACEA;IACI;QACI,CAAC,CAAC;YACE,CAAC,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC;gBACd,SAAS,SAAS,CAAC,KAAK,EAAE,YAAmB;oBAAnB,kDAAmB;oBACzC,CAAC,CAAC,wBAAwB,CAAC,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;oBAClD,CAAC,CAAC,4CAAoC,KAAK,QAAI,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;oBACpE,CAAC,CAAC,uBAAuB,CAAC,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC;oBACtD,CAAC,CAAC,sBAAe,KAAK,CAAE,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;oBAClD,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;oBAEtB,IAAI,YAAY,EAAE;wBACd,OAAO,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;qBACxC;gBACL,CAAC;gBAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;sBAiCM;gBAEL,CAAC,CAAC,cAAc,CAAC,CAAC,EAAE,CAAC,OAAO,EAAE,UAAU,CAAC;oBACrC,IAAM,QAAQ,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;oBACtC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE;wBAC5B,CAAC,CAAC,cAAc,EAAE,CAAC;wBACnB,SAAS,CAAC,QAAQ,CAAC,CAAC;qBACvB;yBACI,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,MAAM,EAAE;wBAC9C,CAAC,CAAC,cAAc,EAAE,CAAC;wBACnB,CAAC,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC;4BACpB,SAAS,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG;yBACtC,EAAE,GAAG,CAAC,CAAC;qBACX;gBACL,CAAC,CAAC,CAAC;gBAEH,MAAM,CAAC,gBAAgB,CAAC,UAAU,EAAE;oBAChC,IAAM,SAAS,GAAG,QAAQ,CAAC,IAAI,IAAI,WAAW,CAAC;oBAC/C,SAAS,CAAC,SAAS,CAAC,CAAC;gBACzB,CAAC,CAAC,CAAC;gBAEH,IAAM,UAAU,GAAG,QAAQ,CAAC,IAAI,IAAI,WAAW,CAAC;gBAChD,SAAS,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;YAEjC,CAAC,CAAC,CAAC;QACP,CAAC,CAAC;IACN,CAAC;IACL,kBAAC;AAAD,CAAC;AA5EY,kCAAW;;;;;;;;;;;;;;;;;ACFxB,0FAA0I;AAC1I,sGAAoE;AACpE,0GAAyL;AAOzL;IAoCI,gCAAY,GAAW,EAAE,cAAsB,EAAE,sBAA8B,EAAE,sBAA8B,EAAE,oBAA4B,EAAE,eAAuB,EAAE,cAAsB,EAAE,UAAoC,EAAE,YAAwB,EAAE,UAAgC;QAAhC,wDAA+B,CAAC;QAAhS,iBAwCC;QA3ED,iBAAY,GAAe,EAAE,CAAC;QAC9B,eAAU,GAAa,EAAE,CAAC;QAE1B,oBAAoB;QACpB,4BAAuB,GAA+B,IAAI,CAAC;QAC3D,qBAAgB,GAA2B,EAAE,CAAC;QAC9C,mBAAc,GAAyB,IAAI,CAAC;QAC5C,oBAAe,GAA0B,EAAE,CAAC;QAC5C,kBAAa,GAAwB,IAAI,CAAC;QAC1C,eAAU,GAAW,IAAI,CAAC;QAI1B,eAAU,GAA6B,EAAE,CAAC;QAC1C,qBAAgB,GAAa,EAAE,CAAC;QAEhC,uBAAuB;QACvB,qBAAgB,GAAa,IAAI,CAAC;QAWlC,mBAAc,GAAe,EAAE,CAAC;QAQ5B,IAAI,GAAG,IAAI,UAAU,EAAE;YACnB,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;SAChC;QACD,IAAI,GAAG,IAAI,SAAS,EAAE;YAClB,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;SAC/B;QAED,IAAI,CAAC,cAAc,GAAG,cAAc,CAAC;QACrC,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAE7B,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC,MAAM,CAAC,kBAAQ,IAAI,eAAQ,CAAC,SAAS,IAAI,IAAI,EAA1B,CAA0B,CAAC,CAAC,CAAC,cAAc;QAC/F,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,kBAAQ;YAC9B,IAAI,CAAC,KAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;gBAC5C,KAAI,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;aACzC;QACL,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;QAEvB,IAAI,CAAC,sBAAsB,GAAG,sBAAsB,CAAC;QACrD,IAAI,CAAC,sBAAsB,GAAG,sBAAsB,CAAC;QACrD,IAAI,CAAC,oBAAoB,GAAG,oBAAoB,CAAC;QACjD,IAAI,CAAC,eAAe,GAAG,eAAe,CAAC;QAEvC,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC,OAAO,CAAC,uBAAuB,CAAC,CAAC;QACnF,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC;QAC9E,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,OAAO,CAAC,sBAAsB,CAAC,CAAC;QAE1E,IAAI,CAAC,cAAc,GAAG,cAAc,CAAC;QACrC,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;QAErE,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAC3B,IAAI,CAAC,cAAc,EAAE,CAAC;QACtB,IAAI,CAAC,uBAAuB,EAAE,CAAC;QAC/B,IAAI,CAAC,sBAAsB,EAAE,CAAC;QAC9B,IAAI,CAAC,6BAA6B,EAAE;QAEpC,qEAAqE;QACrE,UAAU,EAAE,CAAC;IAEjB,CAAC;IAED,oDAAmB,GAAnB;QACI,uBAAuB;QACvB,wCAAwB,EAAC,IAAI,CAAC,cAAc,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,UAAC,UAAkC,IAAK,QAAC,UAAU,CAAC,WAAW,EAAE,UAAU,CAAC,QAAQ,CAAC,EAA7C,CAA6C,CAAC,CAAC,IAAI,CAAC,UAAC,CAAQ,EAAE,CAAQ,IAAK,QAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAX,CAAW,CAAC,EAAE,KAAK,CAAC,CAAC;IAEzN,CAAC;IAED,+CAAc,GAAd;QAAA,iBA2KC;QA1KG,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;QAC9D,IAAI,CAAC,cAAc,GAAG,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;QAElE,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,OAAO,EAAE;YAC7B,aAAa;YACb,IAAI,cAAc,GAAG,yCAAyB,EAAC,KAAI,CAAC,sBAAsB,CAAC,CAAC;YAC5E,IAAI,WAAW,GAAG,KAAI,CAAC,UAAU,CAAC,IAAI,CAAC,gBAAM,IAAI,aAAM,IAAI,cAAc,EAAxB,CAAwB,CAAC,CAAC;YAC3E,IAAI,WAAW,IAAI,SAAS;gBAAE,OAAO;YAErC,0BAA0B;YAC1B,IAAI,cAAc,GAAG,KAAI,CAAC,YAAY,CAAC,MAAM,CAAC,kBAAQ,IAAI,eAAQ,CAAC,MAAM,IAAI,WAAW,EAA9B,CAA8B,CAAC,CAAC;YAC1F,cAAc,CAAC,IAAI,CAAC,UAAC,EAAE,EAAE,EAAE,IAAK,SAAE,CAAC,SAAS,CAAC,aAAa,CAAC,EAAE,CAAC,SAAS,CAAC,EAAxC,CAAwC,CAAC,CAAC;YAE1E,2DAA2D;YAC3D,cAAc,CAAC,OAAO,CAAC,uBAAa;gBAChC,IAAI,KAAI,CAAC,cAAc,CAAC,IAAI,CAAC,kBAAQ,IAAI,eAAQ,CAAC,UAAU,IAAI,aAAa,CAAC,UAAU,EAA/C,CAA+C,CAAC,IAAI,SAAS,EAAE;oBACpG,KAAI,CAAC,cAAc,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;iBAC3C;YACL,CAAC,CAAC,CAAC;YAEH,+BAA+B;YAC/B,KAAI,CAAC,mBAAmB,EAAE,CAAC;YAC3B,KAAI,CAAC,0BAA0B,EAAE,CAAC;QACtC,CAAC,CAAC,CAAC;QAEH,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,EAAE,CAAC,OAAO,EAAE;YAC/B,eAAe;YACf,IAAI,gBAAgB,GAAG,yCAAyB,EAAC,KAAI,CAAC,oBAAoB,CAAC,CAAC;YAC5E,IAAI,aAAa,GAAG,KAAI,CAAC,YAAY,CAAC,IAAI,CAAC,kBAAQ,IAAI,eAAQ,CAAC,UAAU,IAAI,gBAAgB,EAAvC,CAAuC,CAAC,CAAC;YAChG,IAAI,aAAa,IAAI,SAAS;gBAAE,OAAO;YAEvC,0DAA0D;YAC1D,IAAI,KAAI,CAAC,cAAc,CAAC,IAAI,CAAC,kBAAQ,IAAI,eAAQ,CAAC,UAAU,IAAI,aAAa,CAAC,UAAU,EAA/C,CAA+C,CAAC,IAAI,SAAS,EAAE;gBACpG,KAAI,CAAC,cAAc,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;aAC3C;YAED,+BAA+B;YAC/B,KAAI,CAAC,mBAAmB,EAAE,CAAC;YAC3B,KAAI,CAAC,0BAA0B,EAAE,CAAC;QACtC,CAAC,CAAC;QAEF,sBAAsB;QACtB,CAAC,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC,EAAE,CAAC,mBAAmB,EAAE,UAAC,CAAC,EAAE,YAAY,EAAE,UAAU,EAAE,aAAa;YAC9F,6BAA6B;YAC7B,IAAI,gBAAgB,GAAG,yCAAyB,EAAC,KAAI,CAAC,sBAAsB,CAAC,CAAC;YAE9E,IAAI,aAAa,GAAG,KAAI,CAAC,YAAY,CAAC,IAAI,CAAC,kBAAQ,IAAI,eAAQ,CAAC,UAAU,IAAI,gBAAgB,EAAvC,CAAuC,CAAC,CAAC;YAChG,KAAI,CAAC,gBAAgB,GAAG,aAAa,CAAC;YACtC,IAAI,aAAa,IAAI,SAAS,EAAE;gBAC5B,+BAA+B;gBAC/B,IAAI,WAAW,GAAG,KAAI,CAAC,UAAU,CAAC,IAAI,CAAC,gBAAM,IAAI,aAAM,IAAI,aAAa,CAAC,MAAM,EAA9B,CAA8B,CAAC,CAAC;gBACjF,IAAI,WAAW,IAAI,SAAS,EAAE;oBAC1B,CAAC,CAAC,KAAI,CAAC,sBAAsB,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;iBACrE;aACJ;iBACI;gBACD,qCAAqC;gBACrC,CAAC,CAAC,KAAI,CAAC,sBAAsB,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;gBACvC,CAAC,CAAC,KAAI,CAAC,sBAAsB,CAAC,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;aAC5E;QAEL,CAAC,CAAC,CAAC;QAEH,yBAAyB;QACzB,CAAC,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC,EAAE,CAAC,mBAAmB,EAAE,UAAC,CAAC,EAAE,YAAY,EAAE,UAAU,EAAE,aAAa;YAC9F,sBAAsB;YACtB,IAAI,cAAc,GAAG,yCAAyB,EAAC,KAAI,CAAC,sBAAsB,CAAC,CAAC;YAE5E,yBAAyB;YACzB,CAAC,CAAC,KAAI,CAAC,oBAAoB,CAAC,CAAC,KAAK,EAAE,CAAC;YAErC,4CAA4C;YAC5C,IAAI,WAAW,GAAG,KAAI,CAAC,UAAU,CAAC,IAAI,CAAC,gBAAM,IAAI,aAAM,IAAI,cAAc,EAAxB,CAAwB,CAAC,CAAC;YAC3E,IAAI,WAAW,IAAI,SAAS,EAAE;gBAE1B,IAAI,cAAc,GAAG,KAAI,CAAC,YAAY,CAAC,MAAM,CAAC,kBAAQ,IAAI,eAAQ,CAAC,MAAM,IAAI,WAAW,EAA9B,CAA8B,CAAC,CAAC;gBAC1F,cAAc,CAAC,IAAI,CAAC,UAAC,EAAE,EAAE,EAAE,IAAK,SAAE,CAAC,SAAS,CAAC,aAAa,CAAC,EAAE,CAAC,SAAS,CAAC,EAAxC,CAAwC,CAAC,CAAC;gBAE1E,cAAc,CAAC,OAAO,CAAC,kBAAQ;oBAC3B,CAAC,CAAC,KAAI,CAAC,oBAAoB,CAAC,CAAC,MAAM,CAAC,0BAAkB,QAAQ,CAAC,UAAU,gBAAK,QAAQ,CAAC,SAAS,cAAW,CAAC;gBAChH,CAAC,CAAC,CAAC;gBAEH,CAAC,CAAC,KAAI,CAAC,YAAY,CAAC,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;aAChD;iBACI;gBACD,CAAC,CAAC,KAAI,CAAC,YAAY,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;aAC7C;YAED,CAAC,CAAC,KAAI,CAAC,oBAAoB,CAAC,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;YACrD,wEAAwE;YACxE,IAAI,KAAI,CAAC,gBAAgB,IAAI,IAAI,EAAE;gBAC/B,CAAC,CAAC,KAAI,CAAC,oBAAoB,CAAC,CAAC,GAAG,CAAC,KAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC;gBACnE,KAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;aAChC;YACD,CAAC,CAAC,KAAI,CAAC,oBAAoB,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QACnD,CAAC,CAAC,CAAC;QAEH,uBAAuB;QACvB,CAAC,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC,EAAE,CAAC,mBAAmB,EAAE,UAAC,CAAC,EAAE,YAAY,EAAE,UAAU,EAAE,aAAa;YAE5F,wBAAwB;YACxB,IAAI,gBAAgB,GAAG,yCAAyB,EAAC,KAAI,CAAC,oBAAoB,CAAC,CAAC;YAE5E,4CAA4C;YAC5C,IAAI,aAAa,GAAG,KAAI,CAAC,YAAY,CAAC,IAAI,CAAC,kBAAQ,IAAI,eAAQ,CAAC,UAAU,IAAI,gBAAgB,EAAvC,CAAuC,CAAC,CAAC;YAChG,IAAI,aAAa,IAAI,SAAS,EAAE;gBAC5B,CAAC,CAAC,KAAI,CAAC,cAAc,CAAC,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;aAClD;iBACI;gBACD,CAAC,CAAC,KAAI,CAAC,cAAc,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;aAC/C;QACL,CAAC,CAAC,CAAC;QAGH,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC,EAAE,CAAC,OAAO,EAAE;YAC/D,KAAI,CAAC,cAAc,EAAE,CAAC;QAC1B,CAAC,CAAC,CAAC;QAEH,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC,EAAE,CAAC,OAAO,EAAE;YAC7D,IAAI,KAAI,CAAC,UAAU,IAAI,UAAU,IAAI,KAAI,CAAC,cAAc,IAAI,IAAI,EAAE;gBAE9D,iCAAiC;gBACjC,IAAI,aAAW,GAAG,KAAI,CAAC,UAAU,CAAC,IAAI,CAAC,gBAAM,IAAI,aAAM,CAAC,MAAM,IAAI,KAAI,CAAC,cAAc,CAAC,cAAc,IAAI,MAAM,CAAC,IAAI,IAAI,KAAI,CAAC,cAAc,CAAC,YAAY,EAAtG,CAAsG,CAAC,CAAC;gBACzJ,IAAI,aAAW,IAAI,SAAS,EAAE;oBAC1B,IAAI,gBAAgB,GAAG,KAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,YAAE,IAAI,SAAE,IAAI,aAAW,CAAC,QAAQ,EAA1B,CAA0B,CAAC;oBACxF,IAAI,gBAAgB,IAAI,CAAC,EAAE;wBACvB,KAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,gBAAgB,EAAE,CAAC,CAAC,CAAC;wBAClD,IAAI,eAAe,GAAa,KAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,YAAE,IAAI,SAAE,CAAC,QAAQ,EAAE,EAAb,CAAa,CAAC,CAAC;wBAC/E,CAAC,CAAC,KAAI,CAAC,cAAc,CAAC,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;wBAC5C,CAAC,CAAC,KAAI,CAAC,cAAc,CAAC,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;qBAClD;iBACJ;gBAED,gCAAgC;gBAChC,IAAI,UAAU,GAAG,KAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,kBAAQ,IAAI,eAAQ,CAAC,cAAc,IAAI,KAAI,CAAC,cAAc,CAAC,cAAc,IAAI,QAAQ,CAAC,YAAY,IAAI,KAAI,CAAC,cAAc,CAAC,YAAY,EAA1H,CAA0H,CAAC,CAAC;gBACzL,IAAI,UAAU,IAAI,CAAC,EAAE;oBACjB,KAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;oBAC5C,KAAI,CAAC,cAAc,CAAC,KAAI,CAAC,cAAc,CAAC,CAAC,CAAC,kDAAkD;iBAC/F;gBAED,6BAA6B;gBAC7B,KAAI,CAAC,aAAa,EAAE,CAAC,CAAC,2BAA2B;gBACjD,KAAI,CAAC,0BAA0B,EAAE,CAAC;aACrC;iBACI,IAAI,KAAI,CAAC,UAAU,IAAI,SAAS,IAAI,KAAI,CAAC,aAAa,IAAI,IAAI,EAAE;gBAEjE,iCAAiC;gBACjC,IAAI,aAAW,GAAG,KAAI,CAAC,UAAU,CAAC,IAAI,CAAC,gBAAM,IAAI,aAAM,CAAC,MAAM,IAAI,KAAI,CAAC,aAAa,CAAC,aAAa,IAAI,MAAM,CAAC,IAAI,IAAI,KAAI,CAAC,aAAa,CAAC,WAAW,EAAlG,CAAkG,CAAC,CAAC;gBACrJ,IAAI,aAAW,IAAI,SAAS,EAAE;oBAC1B,IAAI,gBAAgB,GAAG,KAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,YAAE,IAAI,SAAE,IAAI,aAAW,CAAC,QAAQ,EAA1B,CAA0B,CAAC;oBACxF,IAAI,gBAAgB,IAAI,CAAC,EAAE;wBACvB,KAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,gBAAgB,EAAE,CAAC,CAAC,CAAC;wBAClD,IAAI,eAAe,GAAa,KAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,YAAE,IAAI,SAAE,CAAC,QAAQ,EAAE,EAAb,CAAa,CAAC,CAAC;wBAC/E,CAAC,CAAC,KAAI,CAAC,cAAc,CAAC,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;wBAC5C,CAAC,CAAC,KAAI,CAAC,cAAc,CAAC,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;qBAClD;iBACJ;gBAED,+BAA+B;gBAC/B,IAAI,UAAU,GAAG,KAAI,CAAC,eAAe,CAAC,SAAS,CAAC,iBAAO,IAAI,cAAO,CAAC,aAAa,IAAI,KAAI,CAAC,aAAa,CAAC,aAAa,IAAI,OAAO,CAAC,WAAW,IAAI,KAAI,CAAC,aAAa,CAAC,WAAW,EAAlH,CAAkH,CAAC,CAAC;gBAC/K,IAAI,UAAU,IAAI,CAAC,EAAE;oBACjB,KAAI,CAAC,eAAe,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;oBAC3C,KAAI,CAAC,aAAa,CAAC,KAAI,CAAC,aAAa,CAAC,CAAC,CAAC,kDAAkD;iBAC7F;gBAED,6BAA6B;gBAC7B,KAAI,CAAC,aAAa,EAAE,CAAC,CAAC,2BAA2B;gBACjD,KAAI,CAAC,0BAA0B,EAAE,CAAC;aACrC;QACL,CAAC,CAAC;IACN,CAAC;IAED,wDAAuB,GAAvB;QAAA,iBAyDC;QAxDG,IAAI,KAAK,GAAG,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,SAAS,CAAC;YAC1C,KAAK,EAAE,wEAAwE;YAC/E,SAAS,EAAE,KAAK;YAChB,IAAI,EAAE,KAAK;YACX,MAAM,EAAE,IAAI;YACZ,UAAU,EAAE,CAAC;YACb,MAAM,EAAE,IAAI;YACZ,OAAO,EAAE,KAAK;YACd,aAAa,EAAE,IAAI;YACnB,OAAO,EAAE;gBACL,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,uBAAuB,EAAE;gBACxE,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,uBAAuB,EAAE;gBACvE,EAAE,KAAK,EAAE,EAAE,EAAE,SAAS,EAAE,iCAAiC,EAAE,cAAc,EAAE,4CAA0C,EAAE;aAC1H;YACD,QAAQ,EAAE;gBACN,UAAU,EAAE,oBAAoB;gBAChC,MAAM,EAAE,EAAE;aACb;YACD,IAAI,EAAE,IAAI,CAAC,cAAc;SAE5B,CAAC,CAAC;QACH,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;QAE3B,CAAC,CAAC,eAAe,CAAC,CAAC,QAAQ,CAAC,gDAAgD,CAAC,CAAC;QAE9E,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,+EAA6E,CAAC;QAC/I,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QAC7D,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,QAAQ,CAAC,mEAAmE,CAAC,CAAC;QAErH;;aAEK;QAEL,iCAAiC;QACjC,CAAC,CAAC,UAAG,IAAI,CAAC,eAAe,WAAQ,CAAC,CAAC,EAAE,CAAC,OAAO,EAAE,sBAAsB,EAAE,UAAC,KAAK;YACzE,oBAAoB;YACpB,IAAI,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YAC9C,IAAI,GAAG,GAAG,KAAI,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YACrC,IAAI,IAAI,GAAa,GAAG,CAAC,IAAI,EAAE,CAAC;YAEhC,gCAAgC;YAChC,IAAI,UAAU,GAAG,KAAI,CAAC,cAAc,CAAC,SAAS,CAAC,kBAAQ,IAAI,eAAQ,CAAC,UAAU,IAAI,IAAI,CAAC,UAAU,EAAtC,CAAsC,CAAC,CAAC;YACnG,IAAI,UAAU,IAAI,CAAC,EAAE;gBACjB,KAAI,CAAC,cAAc,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;gBAE1C,sDAAsD;gBACtD,KAAI,CAAC,8BAA8B,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;gBAErD,eAAe;gBACf,KAAI,CAAC,mBAAmB,EAAE,CAAC;gBAC3B,KAAI,CAAC,gBAAgB,EAAE,CAAC;gBACxB,KAAI,CAAC,0BAA0B,EAAE,CAAC;aACrC;QACL,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;IAChE,CAAC;IAED,uDAAsB,GAAtB;QAAA,iBA4CC;QA3CG,IAAI,KAAK,GAAG,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,SAAS,CAAC;YACzC,KAAK,EAAE,wEAAwE;YAC/E,SAAS,EAAE,KAAK;YAChB,IAAI,EAAE,KAAK;YACX,MAAM,EAAE,KAAK;YACb,MAAM,EAAE,IAAI;YACZ,OAAO,EAAE,KAAK;YACd,aAAa,EAAE,IAAI;YACnB,OAAO,EAAE;gBACL,EAAE,KAAK,EAAE,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,oCAAoC,EAAE,IAAI,EAAE,EAAE,CAAC,EAAE,YAAY,EAAE,OAAO,EAAE,iBAAiB,EAAE,EAAE;gBACtJ,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,uBAAuB,EAAE;gBACxE,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,uBAAuB,EAAE;aAC1E;YACD,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;YACnB,QAAQ,EAAE;gBACN,UAAU,EAAE,6BAA6B;gBACzC,MAAM,EAAE,EAAE;aACb;YACD,IAAI,EAAE,EAAE;SAEX,CAAC,CAAC;QACH,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;QAE1B,CAAC,CAAC,eAAe,CAAC,CAAC,QAAQ,CAAC,gDAAgD,CAAC,CAAC;QAE9E,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,uHAAmH,CAAC;QACvL,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QAC/D,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,QAAQ,CAAC,mEAAmE,CAAC,CAAC;QAEvH;;aAEK;QAEL,+BAA+B;QAC/B,CAAC,CAAC,UAAG,IAAI,CAAC,cAAc,WAAQ,CAAC,CAAC,EAAE,CAAC,OAAO,EAAE,IAAI,EAAE,UAAC,KAAK;YACtD,IAAI,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;YAChC,IAAI,EAAE,CAAC,QAAQ,CAAC,wBAAwB,CAAC,EAAE;gBACvC,KAAI,CAAC,cAAc,CAAC,EAAE,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;gBAC1D,OAAO;aACV;YAAA,CAAC;QACN,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,+BAA+B,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;IACrE,CAAC;IAED,8DAA6B,GAA7B;QAAA,iBA0CC;QAzCG,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,EAAE,CAAC,OAAO,EAAE,sBAAsB,EAAE,UAAC,KAAK;YACrF,CAAC,CAAC,KAAI,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;YAExE,IAAI,KAAI,CAAC,UAAU,IAAI,UAAU,EAAE;gBAC/B,iDAAiD;gBACjD,IAAI,KAAI,CAAC,cAAc,IAAI,IAAI,EAAE;oBAC7B,KAAI,CAAC,YAAY,CAAC,KAAI,CAAC,cAAc,CAAC,CAAC;iBAC1C;gBAED,gCAAgC;gBAChC,IAAI,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBACzD,IAAI,aAAa,GAAG,KAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC,CAAC;gBACzD,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;gBAE1C,sCAAsC;gBACtC,KAAI,CAAC,cAAc,GAAG,aAAa,CAAC;gBAEpC,0CAA0C;gBAC1C,KAAI,CAAC,0BAA0B,EAAE,CAAC;gBAClC,CAAC,CAAC,KAAI,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;aAChF;iBACI,IAAI,KAAI,CAAC,UAAU,IAAI,SAAS,EAAE;gBACnC,iDAAiD;gBACjD,IAAI,KAAI,CAAC,aAAa,IAAI,IAAI,EAAE;oBAC5B,KAAI,CAAC,WAAW,CAAC,KAAI,CAAC,aAAa,CAAC,CAAC;iBACxC;gBAED,+BAA+B;gBAC/B,IAAI,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBACxD,IAAI,YAAY,GAAG,KAAI,CAAC,eAAe,CAAC,YAAY,CAAC,CAAC;gBACtD,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;gBAE1C,qCAAqC;gBACrC,KAAI,CAAC,aAAa,GAAG,YAAY,CAAC;gBAElC,0CAA0C;gBAC1C,KAAI,CAAC,0BAA0B,EAAE,CAAC;gBAClC,CAAC,CAAC,KAAI,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;aAChF;QAEL,CAAC,CAAC,CAAC;IACP,CAAC;IAED,yCAAQ,GAAR;QACI,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC;QACpC,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;QAC3B,IAAI,CAAC,gBAAgB,GAAG,EAAE,CAAC;QAC3B,IAAI,CAAC,eAAe,GAAG,EAAE,CAAC;QAC1B,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;QAC1B,IAAI,CAAC,gBAAgB,GAAG,EAAE,CAAC;QAE3B,gBAAgB;QAChB,IAAI,CAAC,cAAc,EAAE,CAAC;QAEtB,6BAA6B;QAC7B,IAAI,CAAC,cAAc,EAAE,CAAC;QACtB,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;QAC7B,IAAI,CAAC,cAAc,GAAG,EAAE,CAAC;QACzB,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAC3B,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;QAE5D,qBAAqB;QACrB,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACxB,IAAI,CAAC,0BAA0B,EAAE,CAAC;QAClC,IAAI,CAAC,+BAA+B,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;IACrE,CAAC;IAED,mDAAmD;IACnD,8CAAa,GAAb;QAAA,iBAiHC;QA/GG,6CAA6C;QAC7C,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;QAC3B,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;QAE1B,0BAA0B;QAC1B,IAAI,SAAS,GAAa,yCAAyB,EAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QAEzE,iEAAiE;QACjE,IAAI,YAAY,GAA6B,EAAE,CAAC;QAChD,SAAS,CAAC,OAAO,CAAC,kBAAQ;YACtB,IAAI,KAAK,GAAW,QAAQ,CAAC,QAAQ,CAAC,CAAC;YAEvC,IAAI,CAAC,KAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;gBACxC,KAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBAClC,IAAI,WAAW,GAA2B,KAAI,CAAC,UAAU,CAAC,IAAI,CAAC,gBAAM,IAAI,aAAM,CAAC,QAAQ,IAAI,KAAK,EAAxB,CAAwB,CAAC,CAAC;gBACnG,IAAI,WAAW,IAAI,SAAS,EAAE;oBAC1B,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;iBAClC;aACJ;QACL,CAAC,CAAC;QAEF,qGAAqG;QACrG,IAAI,kBAAkB,GAAa,EAAE,CAAC;QACtC,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,kBAAQ;YAClC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC,EAAE;gBAC1C,kBAAkB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;aACrC;QACL,CAAC,CAAC,CAAC;QAEH,oEAAoE;QACpE,IAAI,SAAS,GAAa,EAAE,CAAC;QAC7B,IAAI,IAAI,CAAC,UAAU,IAAI,UAAU,EAAE;YAC/B,kBAAkB,CAAC,OAAO,CAAC,kBAAQ;gBAC/B,IAAI,WAAW,GAAG,KAAI,CAAC,UAAU,CAAC,IAAI,CAAC,gBAAM,IAAI,aAAM,CAAC,QAAQ,IAAI,QAAQ,EAA3B,CAA2B,CAAC,CAAC;gBAC9E,IAAI,WAAW,IAAI,SAAS,EAAE;oBAC1B,IAAI,aAAa,GAAG,KAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,kBAAQ,IAAI,eAAQ,CAAC,cAAc,IAAI,WAAW,CAAC,MAAM,IAAI,QAAQ,CAAC,YAAY,IAAI,WAAW,CAAC,IAAI,EAA1F,CAA0F,CAAC,CAAC;oBACvJ,IAAI,aAAa,IAAI,SAAS,EAAE;wBAC5B,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;qBAC5B;yBACI,IAAI,aAAa,CAAC,WAAW,CAAC,MAAM,IAAI,CAAC,EAAE;wBAC5C,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;qBAC5B;iBACJ;YACL,CAAC,CAAC;YAEF,gEAAgE;YAChE,SAAS,CAAC,OAAO,CAAC,wBAAc;gBAC5B,IAAI,UAAU,GAAG,KAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,YAAE,IAAI,SAAE,IAAI,cAAc,EAApB,CAAoB,CAAC,CAAC;gBAC7E,IAAI,UAAU,IAAI,CAAC,EAAE;oBACjB,KAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;iBAC/C;gBAED,IAAI,WAAW,GAAG,KAAI,CAAC,UAAU,CAAC,IAAI,CAAC,gBAAM,IAAI,aAAM,CAAC,QAAQ,IAAI,cAAc,EAAjC,CAAiC,CAAC,CAAC;gBACpF,IAAI,WAAW,IAAI,SAAS,EAAE;oBAC1B,IAAI,kBAAkB,GAAG,KAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,kBAAQ,IAAI,eAAQ,CAAC,cAAc,IAAI,WAAW,CAAC,MAAM,IAAI,QAAQ,CAAC,YAAY,IAAI,WAAW,CAAC,IAAI,EAA1F,CAA0F,CAAC,CAAC;oBAEjK,IAAI,kBAAkB,IAAI,CAAC,EAAE;wBACzB,KAAI,CAAC,cAAc,CAAC,KAAI,CAAC,gBAAgB,CAAC,kBAAkB,CAAC,CAAC,CAAC;wBAC/D,KAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,kBAAkB,EAAE,CAAC,CAAC,CAAC;qBACvD;iBACJ;YACL,CAAC,CAAC;SACL;aACI,IAAI,IAAI,CAAC,UAAU,IAAI,SAAS,EAAE;YACnC,kBAAkB,CAAC,OAAO,CAAC,kBAAQ;gBAC/B,IAAI,WAAW,GAAG,KAAI,CAAC,UAAU,CAAC,IAAI,CAAC,gBAAM,IAAI,aAAM,CAAC,QAAQ,IAAI,QAAQ,EAA3B,CAA2B,CAAC,CAAC;gBAC9E,IAAI,WAAW,IAAI,SAAS,EAAE;oBAC1B,IAAI,YAAY,GAAG,KAAI,CAAC,eAAe,CAAC,IAAI,CAAC,iBAAO,IAAI,cAAO,CAAC,aAAa,IAAI,WAAW,CAAC,MAAM,IAAI,OAAO,CAAC,WAAW,IAAI,WAAW,CAAC,IAAI,EAAtF,CAAsF,CAAC,CAAC;oBAChJ,IAAI,YAAY,IAAI,SAAS,EAAE;wBAC3B,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;qBAC5B;yBACI,IAAI,YAAY,CAAC,WAAW,CAAC,MAAM,IAAI,CAAC,EAAE;wBAC3C,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;qBAC5B;iBACJ;YACL,CAAC,CAAC;YAEF,+DAA+D;YAC/D,SAAS,CAAC,OAAO,CAAC,wBAAc;gBAC5B,IAAI,UAAU,GAAG,KAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,YAAE,IAAI,SAAE,IAAI,cAAc,EAApB,CAAoB,CAAC,CAAC;gBAC7E,IAAI,UAAU,IAAI,CAAC,EAAE;oBACjB,KAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;iBAC/C;gBAED,IAAI,WAAW,GAAG,KAAI,CAAC,UAAU,CAAC,IAAI,CAAC,gBAAM,IAAI,aAAM,CAAC,QAAQ,IAAI,cAAc,EAAjC,CAAiC,CAAC,CAAC;gBACpF,IAAI,WAAW,IAAI,SAAS,EAAE;oBAC1B,IAAI,iBAAiB,GAAG,KAAI,CAAC,eAAe,CAAC,SAAS,CAAC,iBAAO,IAAI,cAAO,CAAC,aAAa,IAAI,WAAW,CAAC,MAAM,IAAI,OAAO,CAAC,WAAW,IAAI,WAAW,CAAC,IAAI,EAAtF,CAAsF,CAAC,CAAC;oBAE1J,IAAI,iBAAiB,IAAI,CAAC,EAAE;wBACxB,KAAI,CAAC,aAAa,CAAC,KAAI,CAAC,eAAe,CAAC,iBAAiB,CAAC,CAAC,CAAC;wBAC5D,KAAI,CAAC,eAAe,CAAC,MAAM,CAAC,iBAAiB,EAAE,CAAC,CAAC,CAAC;qBACrD;iBACJ;YACL,CAAC,CAAC;SACL;QAED,8BAA8B;QAC9B,IAAI,IAAI,CAAC,UAAU,IAAI,UAAU,EAAE;YAC/B,YAAY,CAAC,OAAO,CAAC,gBAAM;gBACvB,KAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,gDAAoB,CAAC,0BAA0B,CAAC,KAAI,CAAC,uBAAuB,CAAC,EAAE,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;YAC5I,CAAC,CAAC;SACL;aACI,IAAI,IAAI,CAAC,UAAU,IAAI,SAAS,EAAE;YACnC,YAAY,CAAC,OAAO,CAAC,gBAAM;gBACvB,KAAI,CAAC,eAAe,CAAC,IAAI,CAAC,+CAAmB,CAAC,yBAAyB,CAAC,KAAI,CAAC,uBAAuB,CAAC,EAAE,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;YACzI,CAAC,CAAC;SACL;QAED,uBAAuB;QACvB,IAAI,CAAC,gBAAgB,EAAE,CAAC;IAE5B,CAAC;IAED,+CAAc,GAAd;QACI,CAAC,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QACzD,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;QAC1C,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;IAChD,CAAC;IAED,2DAA0B,GAA1B,UAA2B,KAAa;QACpC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAClE,CAAC;IAED,gEAA+B,GAA/B,UAAgC,KAAa;QACzC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACxE,CAAC;IAED,mDAAkB,GAAlB;QACI,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC;QAC3C,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC;IAC9C,CAAC;IAED,oDAAmB,GAAnB;QACI,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;QAC3B,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QACjD,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;QAE1B,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;QAE5D,IAAI,IAAI,CAAC,UAAU,IAAI,UAAU,IAAI,IAAI,CAAC,uBAAuB,IAAI,IAAI,EAAE;YACvE,IAAI,eAAe,GAAa,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,kBAAQ,IAAI,eAAQ,CAAC,UAAU,CAAC,QAAQ,EAAE,EAA9B,CAA8B,CAAC,CAAC;YACpG,IAAI,gBAAgB,GAAG,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACjD,IAAI,CAAC,uBAAuB,CAAC,wBAAwB,CAAC,uBAAuB,GAAG,gBAAgB,CAAC;YAEjG,6CAA6C;YAC7C,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,uBAAuB,CAAC,wBAAwB,CAAC,CAAC;SACjF;aACI,IAAI,IAAI,CAAC,UAAU,IAAI,SAAS,IAAI,IAAI,CAAC,uBAAuB,IAAI,IAAI,EAAE;YAC3E,IAAI,eAAe,GAAa,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,kBAAQ,IAAI,eAAQ,CAAC,UAAU,CAAC,QAAQ,EAAE,EAA9B,CAA8B,CAAC,CAAC;YACpG,IAAI,gBAAgB,GAAG,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACjD,IAAI,CAAC,uBAAuB,CAAC,wBAAwB,CAAC,sBAAsB,GAAG,gBAAgB,CAAC;YAEhG,6CAA6C;YAC7C,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,uBAAuB,CAAC,wBAAwB,CAAC,CAAC;SACjF;IAEL,CAAC;IAED,2DAA0B,GAA1B;QAAA,iBAoDC;QAnDG,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,kBAAQ;YAChC,IAAI,KAAI,CAAC,UAAU,IAAI,UAAU,EAAE;gBAC/B,IAAI,KAAI,CAAC,cAAc,IAAI,IAAI,EAAE;oBAC7B,IAAI,KAAI,CAAC,cAAc,CAAC,eAAe,CAAC,QAAQ,CAAC,QAAQ,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC,EAAE;wBAC9E,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;qBAC/B;yBACI;wBACD,QAAQ,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;qBAChC;iBACJ;qBACI;oBACD,QAAQ,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;iBAChC;aACJ;iBACI,IAAI,KAAI,CAAC,UAAU,IAAI,SAAS,EAAE;gBACnC,IAAI,KAAI,CAAC,aAAa,IAAI,IAAI,EAAE;oBAC5B,IAAI,KAAI,CAAC,aAAa,CAAC,eAAe,CAAC,QAAQ,CAAC,QAAQ,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC,EAAE;wBAC7E,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;qBAC/B;yBACI;wBACD,QAAQ,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;qBAChC;iBACJ;qBACI;oBACD,QAAQ,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;iBAChC;aACJ;QACL,CAAC,CAAC;QAEF,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC;QAC1B,IAAI,IAAI,CAAC,UAAU,IAAI,UAAU,EAAE;YAC/B,IAAI,IAAI,CAAC,cAAc,IAAI,IAAI,EAAE;gBAC7B,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;gBAC/B,IAAI,CAAC,+BAA+B,CAAC,CAAC,CAAC,CAAC;aAC3C;iBACI;gBACD,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;gBAChD,IAAI,CAAC,+BAA+B,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,kBAAQ,IAAI,eAAQ,CAAC,UAAU,EAAnB,CAAmB,CAAC,CAAC,MAAM,CAAC;aAC3G;SACJ;aACI,IAAI,IAAI,CAAC,UAAU,IAAI,SAAS,EAAE;YACnC,IAAI,IAAI,CAAC,aAAa,IAAI,IAAI,EAAE;gBAC5B,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;gBAC/B,IAAI,CAAC,+BAA+B,CAAC,CAAC,CAAC,CAAC;aAC3C;iBACI;gBACD,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;gBAChD,IAAI,CAAC,+BAA+B,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,kBAAQ,IAAI,eAAQ,CAAC,UAAU,EAAnB,CAAmB,CAAC,CAAC,MAAM,CAAC;aAC3G;SACJ;QACD,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;IAC7B,CAAC;IAED,iDAAgB,GAAhB;QACI,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,KAAK,EAAE,CAAC;QACvD,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;QAE1E,IAAI,OAAO,GAAG,EAAE,CAAC;QAEjB,IAAI,IAAI,CAAC,UAAU,IAAI,UAAU,EAAE;YAC/B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBACnD,IAAI,UAAU,GAAG,kIAE8C,CAAC,uYAKC,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,cAAc,eAAK,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,YAAY,2RAKzE,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,sJAK5I;gBACD,OAAO,IAAI,UAAU,CAAC;aACzB;SACJ;aACI,IAAI,IAAI,CAAC,UAAU,IAAI,SAAS,EAAE;YACnC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBAClD,IAAI,UAAU,GAAG,kIAE8C,CAAC,uYAKC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,aAAa,eAAK,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,WAAW,2RAKrE,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,sJAK3I;gBACD,OAAO,IAAI,UAAU,CAAC;aACzB;SACJ;QACD,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACjE,CAAC;IAED,+CAAc,GAAd,UAAe,QAAQ;QAAvB,iBA+DC;QA9DG,IAAI,EAAE,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACnC,IAAI,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACpC,IAAI,WAAW,GAAa,GAAG,CAAC,IAAI,EAAE,CAAC;QACvC,IAAI,SAAS,GAAG,CAAC,WAAW,CAAC,UAAU,CAAC;QACxC,WAAW,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;QAEpC,IAAI,IAAI,CAAC,UAAU,IAAI,UAAU,IAAI,IAAI,CAAC,cAAc,IAAI,IAAI,EAAE;YAC9D,IAAI,SAAS,EAAE;gBACX,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC,CAAC;aAC/E;iBACI;gBACD,IAAI,YAAU,GAAG,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,SAAS,CAAC,YAAE,IAAI,SAAE,IAAI,WAAW,CAAC,UAAU,CAAC,QAAQ,EAAE,EAAvC,CAAuC,CAAC,CAAC;gBAC9G,IAAI,YAAU,IAAI,CAAC,EAAE;oBACjB,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,MAAM,CAAC,YAAU,EAAE,CAAC,CAAC,CAAC;iBAC7D;aACJ;YAED,2CAA2C;YAC3C,IAAI,UAAU,GAAG,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,kBAAQ,IAAI,eAAQ,CAAC,cAAc,IAAI,KAAI,CAAC,cAAc,CAAC,cAAc,IAAI,QAAQ,CAAC,YAAY,IAAI,KAAI,CAAC,cAAc,CAAC,YAAY,EAA1H,CAA0H,CAAC,CAAC;YACzL,IAAI,UAAU,IAAI,CAAC,EAAE;gBACjB,IAAI,WAAW,GAAG,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,uBAAgB,UAAU,OAAI,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;gBAElG,IAAI,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE;oBAChD,CAAC,CAAC,WAAW,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;iBACrC;qBACI;oBACD,CAAC,CAAC,WAAW,CAAC,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;iBACxC;aACJ;YAED,+CAA+C;YAC/C,IAAI,CAAC,cAAc,CAAC,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;SACnF;aACI,IAAI,IAAI,CAAC,UAAU,IAAI,SAAS,IAAI,IAAI,CAAC,aAAa,IAAI,IAAI,EAAE;YACjE,IAAI,SAAS,EAAE;gBACX,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC,CAAC;aAC9E;iBACI;gBACD,IAAI,YAAU,GAAG,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC,SAAS,CAAC,YAAE,IAAI,SAAE,IAAI,WAAW,CAAC,UAAU,CAAC,QAAQ,EAAE,EAAvC,CAAuC,CAAC,CAAC;gBAC7G,IAAI,YAAU,IAAI,CAAC,EAAE;oBACjB,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC,MAAM,CAAC,YAAU,EAAE,CAAC,CAAC,CAAC;iBAC5D;aACJ;YAED,2CAA2C;YAC3C,IAAI,UAAU,GAAG,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,iBAAO,IAAI,cAAO,CAAC,aAAa,IAAI,KAAI,CAAC,aAAa,CAAC,aAAa,IAAI,OAAO,CAAC,WAAW,IAAI,KAAI,CAAC,aAAa,CAAC,WAAW,EAAlH,CAAkH,CAAC,CAAC;YAC/K,IAAI,UAAU,IAAI,CAAC,EAAE;gBACjB,IAAI,WAAW,GAAG,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,uBAAgB,UAAU,OAAI,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;gBAElG,IAAI,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE;oBAC/C,CAAC,CAAC,WAAW,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;iBACrC;qBACI;oBACD,CAAC,CAAC,WAAW,CAAC,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;iBACxC;aACJ;YAED,+CAA+C;YAC/C,IAAI,CAAC,aAAa,CAAC,WAAW,GAAG,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;SACjF;QACD,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACtB,IAAI,CAAC,+BAA+B,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,kBAAQ,IAAI,eAAQ,CAAC,UAAU,EAAnB,CAAmB,CAAC,CAAC,MAAM,CAAC;IAC5G,CAAC;IAED,+CAAc,GAAd;QACI,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC;QACnD,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;IACnD,CAAC;IAED,mEAAkC,GAAlC,UAAmC,IAAgC;QAAnE,iBA2FC;QA1FG,gCAAgC;QAChC,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC;QAEpC,iCAAiC;QACjC,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,qBAAqB,CAAC;QACnD,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,oBAAoB,CAAC;QAEjD,yBAAyB;QACzB,IAAI,yBAAyB,GAAa,EAAE,CAAC;QAC7C,IAAI,IAAI,CAAC,UAAU,IAAI,UAAU,EAAE;YAC/B,IAAI,iBAAe,GAAG,EAAE,CAAC;YACzB,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,kBAAQ;gBAClC,IAAI,eAAe,GAAG,KAAI,CAAC,UAAU,CAAC,IAAI,CAAC,gBAAM,IAAI,aAAM,CAAC,MAAM,IAAI,QAAQ,CAAC,cAAc,IAAI,MAAM,CAAC,IAAI,IAAI,QAAQ,CAAC,YAAY,EAAhF,CAAgF,CAAC,CAAC;gBACvI,IAAI,eAAe,IAAI,SAAS,EAAE;oBAC9B,IAAI,CAAC,iBAAe,CAAC,QAAQ,CAAC,eAAe,CAAC,QAAQ,CAAC,EAAE;wBACrD,iBAAe,CAAC,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;qBAClD;iBACJ;gBAED,IAAI,QAAQ,CAAC,WAAW,IAAI,EAAE,IAAI,QAAQ,CAAC,WAAW,IAAI,IAAI,IAAI,QAAQ,CAAC,WAAW,IAAI,SAAS,EAAE;oBACjG,IAAI,eAAe,GAAG,QAAQ,CAAC,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;oBACtD,yBAAyB,CAAC,IAAI,OAA9B,yBAAyB,EAAS,eAAe,EAAE;iBACtD;YAEL,CAAC,CAAC;YACF,yBAAyB,GAAG,4BAAM,EAAC,yBAAyB,EAAE,IAAI,CAAC,CAAC;YACpE,IAAI,CAAC,gBAAgB,GAAG,iBAAe,CAAC;SAC3C;aACI,IAAI,IAAI,CAAC,UAAU,IAAI,SAAS,EAAE;YACnC,IAAI,iBAAe,GAAG,EAAE,CAAC;YACzB,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,iBAAO;gBAChC,IAAI,eAAe,GAAG,KAAI,CAAC,UAAU,CAAC,IAAI,CAAC,gBAAM,IAAI,aAAM,CAAC,MAAM,IAAI,OAAO,CAAC,aAAa,IAAI,MAAM,CAAC,IAAI,IAAI,OAAO,CAAC,WAAW,EAA5E,CAA4E,CAAC,CAAC;gBACnI,IAAI,eAAe,IAAI,SAAS,EAAE;oBAC9B,IAAI,CAAC,iBAAe,CAAC,QAAQ,CAAC,eAAe,CAAC,QAAQ,CAAC,EAAE;wBACrD,iBAAe,CAAC,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;qBAClD;iBACJ;gBAED,IAAI,OAAO,CAAC,WAAW,IAAI,EAAE,IAAI,OAAO,CAAC,WAAW,IAAI,IAAI,IAAI,OAAO,CAAC,WAAW,IAAI,SAAS,EAAE;oBAC9F,IAAI,eAAe,GAAG,OAAO,CAAC,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;oBACrD,yBAAyB,CAAC,IAAI,OAA9B,yBAAyB,EAAS,eAAe,EAAE;iBACtD;YACL,CAAC,CAAC;YACF,yBAAyB,GAAG,4BAAM,EAAC,yBAAyB,EAAE,IAAI,CAAC,CAAC;YACpE,IAAI,CAAC,gBAAgB,GAAG,iBAAe,CAAC;SAC3C;QAED,yBAAyB;QACzB,IAAI,eAAe,GAAa,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,YAAE,IAAI,SAAE,CAAC,QAAQ,EAAE,EAAb,CAAa,CAAC,CAAC;QAC/E,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;QAC5C,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;QAC/C,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAExB,sBAAsB;QACtB,IAAI,oBAAoB,GAAa,EAAE,CAAC;QACxC,IAAI,IAAI,CAAC,UAAU,IAAI,UAAU,EAAE;YAC/B,IAAI,IAAI,CAAC,uBAAuB,CAAC,wBAAwB,CAAC,uBAAuB,IAAI,IAAI,EAAE;gBACvF,oBAAoB,GAAG,IAAI,CAAC,uBAAuB,CAAC,wBAAwB,CAAC,uBAAuB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBAChH,yBAAyB,CAAC,OAAO,CAAC,YAAE;oBAChC,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE;wBACpC,oBAAoB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;qBACjC;gBACL,CAAC,CAAC,CAAC;aACN;SACJ;aACI,IAAI,IAAI,CAAC,UAAU,IAAI,SAAS,EAAE;YACnC,IAAI,IAAI,CAAC,uBAAuB,CAAC,wBAAwB,CAAC,sBAAsB,IAAI,IAAI,EAAE;gBACtF,oBAAoB,GAAG,IAAI,CAAC,uBAAuB,CAAC,wBAAwB,CAAC,sBAAsB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBAC/G,yBAAyB,CAAC,OAAO,CAAC,YAAE;oBAChC,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE;wBACpC,oBAAoB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;qBACjC;gBACL,CAAC,CAAC,CAAC;aACN;SACJ;QAED,IAAI,cAAc,GAAe,EAAE,CAAC;QACpC,oBAAoB,CAAC,OAAO,CAAC,oBAAU;YACnC,IAAI,aAAa,GAAa,KAAI,CAAC,YAAY,CAAC,IAAI,CAAC,kBAAQ,IAAI,eAAQ,CAAC,UAAU,CAAC,QAAQ,EAAE,IAAI,UAAU,EAA5C,CAA4C,CAAC,CAAC;YAC/G,IAAI,aAAa,IAAI,SAAS,EAAE;gBAC5B,uBAAuB;gBACvB,IAAI,cAAc,CAAC,SAAS,CAAC,kBAAQ,IAAI,eAAQ,CAAC,UAAU,IAAI,aAAa,CAAC,UAAU,EAA/C,CAA+C,CAAC,GAAG,CAAC,EAAE;oBAC3F,cAAc,CAAC,IAAI,CAAC,aAAa,CAAC;iBACrC;aACJ;QACL,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,cAAc,GAAG,cAAc,CAAC;QACrC,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAC3B,IAAI,CAAC,0BAA0B,EAAE,CAAC;IACtC,CAAC;IAED,6CAAY,GAAZ,UAAa,QAA8B;QAA3C,iBA6BC;QA5BG,IAAI,CAAC,uBAAuB,CAAC,wBAAwB,CAAC,gBAAgB,GAAG,IAAI,IAAI,EAAE,CAAC;QAEpF,IAAI,CAAC,uBAAuB,CAAC,qBAAqB,CAAC,OAAO,CAAC,kBAAQ;YAC/D,QAAQ,CAAC,WAAW,GAAG,QAAQ,CAAC,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC9D,CAAC,CAAC,CAAC;QAEH,QAAQ,CAAC,WAAW,GAAG,QAAQ,CAAC,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAE1D,QAAQ,CAAC,gBAAgB,GAAG,IAAI,IAAI,EAAE,CAAC;QAEvC,IAAI,SAAS,GAAG,UAAC,QAAa;YAC1B,2BAA2B;YAC3B,IAAI,eAAe,GAAyB,gDAAoB,CAAC,iCAAiC,CAAC,QAAQ,CAAC,CAAC;YAC7G,eAAe,CAAC,UAAU,EAAE,CAAC;YAE7B,uBAAuB;YACvB,IAAI,kBAAkB,GAAG,KAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,kBAAQ,IAAI,eAAQ,CAAC,cAAc,IAAI,eAAe,CAAC,cAAc,IAAI,QAAQ,CAAC,YAAY,IAAI,eAAe,CAAC,YAAY,EAAlH,CAAkH,CAAC,CAAC;YACzL,IAAI,kBAAkB,IAAI,CAAC,EAAE;gBACzB,KAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,kBAAkB,EAAE,CAAC,EAAE,eAAe,CAAC,CAAC;aACxE;QACL,CAAC;QAED,IAAI,OAAO,GAAG,UAAC,QAAa;YACxB,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YACtB,KAAK,CAAC,iDAAiD,CAAC,CAAC;QAC7D,CAAC;QAED,IAAI,CAAC,0BAA0B,CAAC,QAAQ,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;IAClE,CAAC;IAED,4CAAW,GAAX,UAAY,OAA4B;QAAxC,iBA6BC;QA5BG,IAAI,CAAC,uBAAuB,CAAC,wBAAwB,CAAC,gBAAgB,GAAG,IAAI,IAAI,EAAE,CAAC;QAEpF,IAAI,CAAC,uBAAuB,CAAC,oBAAoB,CAAC,OAAO,CAAC,iBAAO;YAC7D,OAAO,CAAC,WAAW,GAAG,OAAO,CAAC,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC5D,CAAC,CAAC,CAAC;QAEH,OAAO,CAAC,WAAW,GAAG,OAAO,CAAC,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAExD,OAAO,CAAC,gBAAgB,GAAG,IAAI,IAAI,EAAE,CAAC;QAEtC,IAAI,SAAS,GAAG,UAAC,QAAa;YAC1B,2BAA2B;YAC3B,IAAI,cAAc,GAAwB,+CAAmB,CAAC,gCAAgC,CAAC,QAAQ,CAAC,CAAC;YACzG,cAAc,CAAC,UAAU,EAAE,CAAC;YAE5B,uBAAuB;YACvB,IAAI,iBAAiB,GAAG,KAAI,CAAC,eAAe,CAAC,SAAS,CAAC,iBAAO,IAAI,cAAO,CAAC,aAAa,IAAI,cAAc,CAAC,aAAa,IAAI,OAAO,CAAC,WAAW,IAAI,cAAc,CAAC,WAAW,EAA1G,CAA0G,CAAC,CAAC;YAC9K,IAAI,iBAAiB,IAAI,CAAC,EAAE;gBACxB,KAAI,CAAC,eAAe,CAAC,MAAM,CAAC,iBAAiB,EAAE,CAAC,EAAE,cAAc,CAAC,CAAC;aACrE;QACL,CAAC;QAED,IAAI,OAAO,GAAG,UAAC,QAAa;YACxB,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YACtB,KAAK,CAAC,iDAAiD,CAAC,CAAC;QAC7D,CAAC;QAED,IAAI,CAAC,yBAAyB,CAAC,OAAO,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;IAChE,CAAC;IAED,qDAAoB,GAApB;QACI,IAAI,CAAC,uBAAuB,CAAC,wBAAwB,CAAC,gBAAgB,GAAG,IAAI,IAAI,EAAE,CAAC;QACpF,IAAI,CAAC,uBAAuB,CAAC,qBAAqB,CAAC,OAAO,CAAC,kBAAQ,IAAI,eAAQ,CAAC,gBAAgB,GAAG,IAAI,IAAI,EAAE,EAAtC,CAAsC,CAAC,CAAC;QAC/G,IAAI,CAAC,iCAAiC,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;IACzE,CAAC;IAED,oDAAmB,GAAnB;QACI,IAAI,CAAC,uBAAuB,CAAC,wBAAwB,CAAC,gBAAgB,GAAG,IAAI,IAAI,EAAE,CAAC;QACpF,IAAI,CAAC,uBAAuB,CAAC,oBAAoB,CAAC,OAAO,CAAC,iBAAO,IAAI,cAAO,CAAC,gBAAgB,GAAG,IAAI,IAAI,EAAE,EAArC,CAAqC,CAAC,CAAC;QAC5G,IAAI,CAAC,gCAAgC,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;IACxE,CAAC;IAED,0DAAyB,GAAzB;QACI,OAAO,IAAI,CAAC,uBAAuB,CAAC;IACxC,CAAC;IAED,+DAA8B,GAA9B,UAA+B,UAAkB;QAC7C,IAAI,IAAI,CAAC,UAAU,IAAI,UAAU,EAAE;YAC/B,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,kBAAQ;gBAClC,IAAI,QAAQ,CAAC,eAAe,CAAC,QAAQ,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC,EAAE;oBAC1D,IAAI,UAAU,GAAG,QAAQ,CAAC,eAAe,CAAC,SAAS,CAAC,YAAE,IAAI,SAAE,IAAI,UAAU,CAAC,QAAQ,EAAE,EAA3B,CAA2B,CAAC,CAAC;oBACvF,QAAQ,CAAC,eAAe,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;oBAC/C,QAAQ,CAAC,WAAW,GAAG,QAAQ,CAAC,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;iBAC7D;YACL,CAAC,CAAC;SACL;aACI,IAAI,IAAI,CAAC,UAAU,IAAI,SAAS,EAAE;YACnC,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,iBAAO;gBAChC,IAAI,OAAO,CAAC,eAAe,CAAC,QAAQ,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC,EAAE;oBACzD,IAAI,UAAU,GAAG,OAAO,CAAC,eAAe,CAAC,SAAS,CAAC,YAAE,IAAI,SAAE,IAAI,UAAU,CAAC,QAAQ,EAAE,EAA3B,CAA2B,CAAC,CAAC;oBACtF,OAAO,CAAC,eAAe,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;oBAC9C,OAAO,CAAC,WAAW,GAAG,OAAO,CAAC,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;iBAC3D;YACL,CAAC,CAAC;SACL;IACL,CAAC;IAED,kDAAiB,GAAjB,UAAkB,IAA8B,EAAE,WAA8C,EAAE,SAA4C;QAA5F,sDAAyB,QAAa,IAAO,CAAC;QAAE,kDAAuB,QAAa,IAAO,CAAC;QAC1I,CAAC,CAAC,IAAI,CAAC;YACH,GAAG,EAAE,8FAA8F;YACnG,MAAM,EAAE,MAAM;YACd,mBAAmB;YACnB,kCAAkC;YAClC,IAAI,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE;YACxC,OAAO,EAAE,EAAE,0BAA0B,EAAE,CAAC,CAAC,0CAA0C,CAAC,CAAC,GAAG,EAAE,EAAE;YAC5F,OAAO,EAAE,UAAC,QAAQ;gBACd,WAAW,CAAC,QAAQ,CAAC,CAAC;YAC1B,CAAC;YACD,KAAK,EAAE,UAAC,QAAQ;gBACZ,SAAS,CAAC,QAAQ,CAAC,CAAC;YACxB,CAAC;SACJ,CAAC,CAAC;IACP,CAAC;IAED,2DAA0B,GAA1B,UAA2B,QAA8B,EAAE,WAA8C,EAAE,SAA4C;QAA5F,sDAAyB,QAAa,IAAO,CAAC;QAAE,kDAAuB,QAAa,IAAO,CAAC;QACnJ,CAAC,CAAC,IAAI,CAAC;YACH,GAAG,EAAE,2FAA2F;YAChG,MAAM,EAAE,MAAM;YACd,mBAAmB;YACnB,kCAAkC;YAClC,IAAI,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE;YAC5C,OAAO,EAAE,EAAE,0BAA0B,EAAE,CAAC,CAAC,0CAA0C,CAAC,CAAC,GAAG,EAAE,EAAE;YAC5F,OAAO,EAAE,UAAC,QAAQ;gBACd,WAAW,CAAC,QAAQ,CAAC,CAAC;YAC1B,CAAC;YACD,KAAK,EAAE,UAAC,QAAQ;gBACZ,SAAS,CAAC,QAAQ,CAAC,CAAC;YACxB,CAAC;SACJ,CAAC,CAAC;IACP,CAAC;IAED,kEAAiC,GAAjC,UAAkC,QAAoC,EAAE,WAA8C,EAAE,SAA4C;QAA5F,sDAAyB,QAAa,IAAO,CAAC;QAAE,kDAAuB,QAAa,IAAO,CAAC;QAChK,CAAC,CAAC,IAAI,CAAC;YACH,GAAG,EAAE,kGAAkG;YACvG,MAAM,EAAE,MAAM;YACd,mBAAmB;YACnB,kCAAkC;YAClC,IAAI,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE;YAC5C,OAAO,EAAE,EAAE,0BAA0B,EAAE,CAAC,CAAC,0CAA0C,CAAC,CAAC,GAAG,EAAE,EAAE;YAC5F,OAAO,EAAE,UAAC,QAAQ;gBACd,WAAW,CAAC,QAAQ,CAAC,CAAC;YAC1B,CAAC;YACD,KAAK,EAAE,UAAC,QAAQ;gBACZ,SAAS,CAAC,QAAQ,CAAC,CAAC;YACxB,CAAC;SACJ,CAAC,CAAC;IACP,CAAC;IAED,+CAAc,GAAd,UAAe,QAA8B,EAAE,WAA8C,EAAE,SAA4C;QAA5F,sDAAyB,QAAa,IAAO,CAAC;QAAE,kDAAuB,QAAa,IAAO,CAAC;QACvI,CAAC,CAAC,IAAI,CAAC;YACH,GAAG,EAAE,iFAAiF;YACtF,MAAM,EAAE,MAAM;YACd,mBAAmB;YACnB,kCAAkC;YAClC,IAAI,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE;YAC5C,OAAO,EAAE,EAAE,0BAA0B,EAAE,CAAC,CAAC,0CAA0C,CAAC,CAAC,GAAG,EAAE,EAAE;YAC5F,OAAO,EAAE,UAAC,QAAQ;gBACd,WAAW,CAAC,QAAQ,CAAC,CAAC;YAC1B,CAAC;YACD,KAAK,EAAE,UAAC,QAAQ;gBACZ,SAAS,CAAC,QAAQ,CAAC,CAAC;YACxB,CAAC;SACJ,CAAC,CAAC;IACP,CAAC;IAED,0DAAyB,GAAzB,UAA0B,OAA4B,EAAE,WAA8C,EAAE,SAA4C;QAA5F,sDAAyB,QAAa,IAAO,CAAC;QAAE,kDAAuB,QAAa,IAAO,CAAC;QAChJ,CAAC,CAAC,IAAI,CAAC;YACH,GAAG,EAAE,0FAA0F;YAC/F,MAAM,EAAE,MAAM;YACd,mBAAmB;YACnB,kCAAkC;YAClC,IAAI,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE;YAC3C,OAAO,EAAE,EAAE,0BAA0B,EAAE,CAAC,CAAC,0CAA0C,CAAC,CAAC,GAAG,EAAE,EAAE;YAC5F,OAAO,EAAE,UAAC,QAAQ;gBACd,WAAW,CAAC,QAAQ,CAAC,CAAC;YAC1B,CAAC;YACD,KAAK,EAAE,UAAC,QAAQ;gBACZ,SAAS,CAAC,QAAQ,CAAC,CAAC;YACxB,CAAC;SACJ,CAAC,CAAC;IACP,CAAC;IAED,iEAAgC,GAAhC,UAAiC,QAAoC,EAAE,WAA8C,EAAE,SAA4C;QAA5F,sDAAyB,QAAa,IAAO,CAAC;QAAE,kDAAuB,QAAa,IAAO,CAAC;QAC/J,CAAC,CAAC,IAAI,CAAC;YACH,GAAG,EAAE,iGAAiG;YACtG,MAAM,EAAE,MAAM;YACd,mBAAmB;YACnB,kCAAkC;YAClC,IAAI,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE;YAC5C,OAAO,EAAE,EAAE,0BAA0B,EAAE,CAAC,CAAC,0CAA0C,CAAC,CAAC,GAAG,EAAE,EAAE;YAC5F,OAAO,EAAE,UAAC,QAAQ;gBACd,WAAW,CAAC,QAAQ,CAAC,CAAC;YAC1B,CAAC;YACD,KAAK,EAAE,UAAC,QAAQ;gBACZ,SAAS,CAAC,QAAQ,CAAC,CAAC;YACxB,CAAC;SACJ,CAAC,CAAC;IACP,CAAC;IAED,8CAAa,GAAb,UAAc,OAA4B,EAAE,WAA8C,EAAE,SAA4C;QAA5F,sDAAyB,QAAa,IAAO,CAAC;QAAE,kDAAuB,QAAa,IAAO,CAAC;QACpI,CAAC,CAAC,IAAI,CAAC;YACH,GAAG,EAAE,gFAAgF;YACrF,MAAM,EAAE,MAAM;YACd,mBAAmB;YACnB,kCAAkC;YAClC,IAAI,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE;YAC3C,OAAO,EAAE,EAAE,0BAA0B,EAAE,CAAC,CAAC,0CAA0C,CAAC,CAAC,GAAG,EAAE,EAAE;YAC5F,OAAO,EAAE,UAAC,QAAQ;gBACd,WAAW,CAAC,QAAQ,CAAC,CAAC;YAC1B,CAAC;YACD,KAAK,EAAE,UAAC,QAAQ;gBACZ,SAAS,CAAC,QAAQ,CAAC,CAAC;YACxB,CAAC;SACJ,CAAC,CAAC;IACP,CAAC;IACL,6BAAC;AAAD,CAAC;AAxjCY,wDAAsB;;;;;;;;;;;;;ACTnC,uC;;;;;;;;;;;ACAA,uC;;;;;;;;;;;;;;;ACEA;IAcI;QAHA,sBAAiB,GAAW,EAAE,CAAC;QAC/B,kBAAa,GAAW,EAAE,CAAC;IAEX,CAAC;IAEjB,+BAAU,GAAV;QAEI,IAAI,IAAI,CAAC,UAAU,IAAI,SAAS,EAAE;YAC9B,IAAI,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE;gBACpC,IAAI,CAAC,iBAAiB,GAAG,WAAW,GAAG,IAAI,CAAC,UAAU,GAAG,oIAAoI,CAAC;aACjM;iBACI,IAAI,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;gBACpC,IAAI,CAAC,iBAAiB,GAAG,kBAAkB,GAAG,IAAI,CAAC,UAAU,GAAG,6GAA6G,CAAC;aACjL;SACJ;QAED,IAAI,CAAC,SAAS,GAAG,uBAAuB,GAAG,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QACtE,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC9E,CAAC;IACL,iBAAC;AAAD,CAAC;AA9BY,gCAAU;;;;;;;;;;;;;;;;ACFvB,mGAAqG;AAIrG;IAAA;QAGI,oBAAe,GAAW,SAAS,CAAC;QACpC,qBAAgB,GAAW,SAAS,CAAC;QACrC,oBAAe,GAAW,aAAa,CAAC;QACxC,UAAK,GAAW,EAAE,CAAC;QACnB,oCAAoC;QACpC,YAAO,GAAW,aAAa,CAAC;QAChC,aAAQ,GAAW,EAAE,CAAC;QACtB,aAAQ,GAAW,EAAE,CAAC;QACtB,QAAG,GAAW,EAAE,CAAC;QACjB,2BAAsB,GAAW,EAAE,CAAC;QACpC,4BAAuB,GAAW,EAAE,CAAC;QACrC,QAAG,GAAW,EAAE,CAAC;QACjB,8BAAyB,GAAW,EAAE,CAAC;QACvC,UAAK,GAAW,EAAE,CAAC;QACnB,wBAAmB,GAAW,EAAE,CAAC;QACjC,qBAAgB,GAAW,EAAE,CAAC;QAC9B,iBAAY,GAAW,EAAE,CAAC;QAC1B,0BAAqB,GAAW,EAAE,CAAC;QACnC,iBAAY,GAAW,EAAE,CAAC;QAC1B,4BAAuB,GAAW,EAAE,CAAC;QACrC,wBAAmB,GAAW,EAAE,CAAC;QACjC,2BAAsB,GAAW,EAAE,CAAC;QACpC,wBAAmB,GAAW,EAAE,CAAC;QACjC,gBAAW,GAAW,EAAE,CAAC;QACzB,2BAAsB,GAAW,EAAE,CAAC;QACpC,eAAU,GAAW,EAAE,CAAC;QACxB,qBAAgB,GAAW,EAAE,CAAC;QAG9B,2BAAsB,GAAW,EAAE,CAAC;QAEpC,mBAAc,GAAW,EAAE,CAAC;QAE5B,oBAAe,GAAW,EAAE,CAAC;QAE7B,eAAU,GAAW,EAAE,CAAC;QACxB,mCAA8B,GAAW,EAAE,CAAC;IAqChD,CAAC;IAnCG,gCAAU,GAAV;QAEI,IAAI,IAAI,CAAC,eAAe,IAAI,IAAI,IAAI,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,CAAC,MAAM,IAAI,CAAC,EAAE;YAAE,IAAI,CAAC,eAAe,GAAG,aAAa,CAAC;SAAE;QACtH,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,MAAM,IAAI,CAAC,EAAE;YAAE,IAAI,CAAC,OAAO,GAAG,aAAa,CAAC;SAAE;QAE9F,IAAI,CAAC,eAAe,GAAG,kCAAY,EAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;QAEpE,IAAI,CAAC,mBAAmB,GAAG,2BAAK,EAAC,IAAI,CAAC,eAAe,EAAE,GAAG,CAAC,CAAC;QAC5D,IAAI,CAAC,sBAAsB,GAAG,0BAAI,EAAC,IAAI,CAAC,mBAAmB,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;QAE/E,IAAI,CAAC,WAAW,GAAG,2BAAK,EAAC,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;QAC5C,IAAI,CAAC,cAAc,GAAG,0BAAI,EAAC,IAAI,CAAC,WAAW,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;QAE/D,IAAI,IAAI,CAAC,GAAG,IAAI,IAAI,IAAI,IAAI,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE;YACzC,IAAI,CAAC,UAAU,GAAG,WAAW,GAAG,IAAI,CAAC,GAAG,GAAG,oBAAoB,GAAG,IAAI,CAAC,GAAG,GAAG,MAAM,CAAC;SACvF;QAED,IAAI,IAAI,CAAC,uBAAuB,IAAI,IAAI,IAAI,IAAI,CAAC,uBAAuB,CAAC,MAAM,GAAG,CAAC,EAAE;YACjF,IAAI,CAAC,8BAA8B,GAAG,kBAAkB,GAAG,IAAI,CAAC,uBAAuB,GAAG,IAAI,GAAG,IAAI,CAAC,uBAAuB,GAAG,MAAM,CAAC;SAC1I;QAED,IAAI,IAAI,CAAC,YAAY,IAAI,KAAK,EAAE;YAAE,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;SAAE;IACjE,CAAC;IAED,mCAAa,GAAb,UAAc,gBAAqB,EAAE,iBAAsB,EAAE,QAAa,EAAE,OAAY;QAEpF,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,IAAI,CAAC,eAAe,CAAC;YAAE,OAAO,KAAK,CAAC;QACnE,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,IAAI,CAAC,gBAAgB,CAAC;YAAE,OAAO,KAAK,CAAC;QACrE,IAAI,CAAC,qCAAe,EAAC,QAAQ,EAAE,IAAI,CAAC,mBAAmB,CAAC;YAAE,OAAO,KAAK,CAAC;QACvE,IAAI,CAAC,qCAAe,EAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC;YAAE,OAAO,KAAK,CAAC;QAE1D,OAAO,IAAI,CAAC;IAChB,CAAC;IAGL,kBAAC;AAAD,CAAC;AA5EY,kCAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACJxB,yEAA2C;AAC3C,qEAA0D;AAI1D;IASI;QAAgB,IAAI,CAAC,aAAa,EAAE,CAAC;IAAC,CAAC;IAEvC,yCAAa,GAAb;QAAA,iBA6DC;QA5DG,CAAC,CAAC,sBAAsB,CAAC,CAAC,KAAK,EAAE,CAAC;QAElC,IAAI,CAAC,GAAG,GAAG,iBAAC,CAAC,GAAG,CAAC,qBAAqB,EAAE;YACpC,QAAQ,EAAE,GAAG;YACb,aAAa,EAAE,IAAI;SACtB,CAAC,CAAC;QAEH,IAAI,CAAC,oBAAoB,GAAG,iBAAC,CAAC,SAAS,CAAC,oDAAoD,EAAE,EAAE,CAAC,CAAC;QAClG,IAAI,CAAC,qBAAqB,GAAG,+BAAY,EAAC,MAAM,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAElE,IAAI,CAAC,gBAAgB,GAAG,iBAAC,CAAC,UAAU,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAEvD,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAC1B,IAAI,CAAC,YAAY,GAAG,iBAAC,CAAC,kBAAkB,CAAC;YACrC,gBAAgB,EAAE,EAAE;YACpB,uDAAuD;YACvD,mBAAmB,EAAE,KAAK;YAC1B,kBAAkB,EAAE,UAAU,OAAO;gBACjC,OAAO,IAAI,iBAAC,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,aAAa,EAAE,GAAG,EAAE,EAAE,SAAS,EAAE,qBAAqB,EAAE,QAAQ,EAAE,iBAAC,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC;YAC9H,CAAC;YACD,sBAAsB,EAAE,UAAU,KAAa,EAAE,QAAmC;gBAChF,IAAI,kBAAkB,GAAG,EAAE,EACvB,cAAc,GAAG,EAAE,EACnB,UAAU,GAAG,cAAc,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,EACzC,SAAS,GAAG,QAAQ,CAAC,CAAC,GAAG,UAAU,GAAG,CAAC,EACvC,GAAG,GAAG,EAAE,EACR,CAAC,CAAC;gBAEN,GAAG,CAAC,MAAM,GAAG,KAAK,CAAC;gBAEnB,KAAK,CAAC,GAAG,KAAK,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;oBAC7B,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,eAAK,CAAC,QAAQ,CAAC,CAAC,GAAG,kBAAkB,EAAE,SAAS,GAAG,cAAc,GAAG,CAAC,CAAC,CAAC;iBACvF;gBAED,OAAO,GAAG,CAAC;YACf,CAAC;SACG,CAAC,CAAC,CAAC,oDAAoD;QAE/D,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,cAAc,EAAE,UAAU,CAAC;YAC5C,iBAAiB;YACjB,CAAC,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;QACvB,CAAC,CAAC,CAAC;QAGH,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;QAElC,IAAI,CAAC,cAAc,GAAG,iBAAC,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC;QAEjD,iBAAC,CAAC,OAAO,CAAC,MAAM,CAAC;YACb,UAAU,EAAE,IAAI,CAAC,oBAAoB;YACrC,WAAW,EAAE,IAAI,CAAC,qBAAqB;SAC1C,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAEvB,iCAAiC;QACjC,CAAC,CAAC,sBAAsB,CAAC,CAAC,IAAI,EAAE,CAAC;QACjC,IAAI,CAAC,GAAG,CAAC,cAAc,EAAE,CAAC;QAE1B,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,iBAAiB,EAAE,UAAC,CAAM,IAAK,YAAI,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,EAA3B,CAA2B,CAAC,CAAC;QACxE,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC;IAErC,CAAC;IAED,0CAAc,GAAd,UAAe,OAAe;QAC1B,IAAI,OAAO,IAAI,WAAW,EAAE;YACxB,CAAC,CAAC,8BAA8B,CAAC,CAAC,IAAI,CAAC,oDAAoD,CAAC,CAAC;SAChG;aACI,IAAI,OAAO,IAAI,UAAU,EAAE;YAC5B,CAAC,CAAC,8BAA8B,CAAC,CAAC,IAAI,CAAC,uEAAuE,CAAC,CAAC;SACnH;IACL,CAAC;IAED,2CAAe,GAAf,UAAgB,KAAqB;QAArC,iBAkCC;QAjCG,IAAI,IAAI,CAAC,GAAG,IAAI,SAAS,EAAE;YAAE,OAAO;SAAE;QAEtC,IAAI,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,gBAAgB,CAAC,EAAE;YAC1C,IAAI,CAAC,gBAAgB,CAAC,WAAW,EAAE,CAAC;SACvC;QACD,IAAI,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE;YACtC,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE,CAAC;SACnC;QAED,KAAK,CAAC,OAAO,CAAC,UAAC,IAAkB;YAE7B,IAAI,IAAI,CAAC,YAAY,EAAE;gBACvB,kCAAkC;gBAC9B,KAAI,CAAC,YAAY,CAAC,QAAQ,CAAO,iBAAE,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,EAAE;oBAC5E,KAAK,EAAE,UAAU;oBACjB,KAAK,EAAE,SAAS;oBAChB,MAAM,EAAE,CAAC;oBACT,MAAM,EAAE,CAAC;oBACT,WAAW,EAAE,GAAG;iBACnB,CAAC,CAAC,KAAK,CAAC,KAAI,CAAC,gBAAgB,CAAC,CAAC,SAAS,CAAC,KAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;aACjF;iBACI;gBACK,iBAAE,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,EAAE;oBACjD,KAAK,EAAE,UAAU;oBACjB,KAAK,EAAE,SAAS;oBAChB,MAAM,EAAE,CAAC;oBACT,MAAM,EAAE,CAAC;oBACT,WAAW,EAAE,GAAG;iBACnB,CAAC,CAAC,KAAK,CAAC,KAAI,CAAC,gBAAgB,CAAC,CAAC,SAAS,CAAC,KAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC,CAAC;aAChF;QACL,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IACzC,CAAC;IAED,kDAAsB,GAAtB,UAAuB,IAAkB;;QAErC,IAAI,YAAY,GAAW,yBAAyB,CAAC;QACrD,YAAY,IAAI,qBAAqB,GAAG,IAAI,CAAC,QAAQ,GAAG,SAAS,CAAC;QAClE,YAAY,IAAI,oCAAoC,GAAG,IAAI,CAAC,cAAc,CAAC,aAAa,GAAG,QAAQ,CAAC;QAEpG,YAAY,IAAI,4DAA4D,IAAG,UAAI,CAAC,YAAY,0CAAE,OAAO,IAAG,QAAQ,CAAC;QACrH,YAAY,IAAI,wBAAwB,IAAG,UAAI,CAAC,YAAY,0CAAE,QAAQ,IAAG,QAAQ,CAAC;QAClF,YAAY,IAAI,wBAAwB,IAAG,UAAI,CAAC,YAAY,0CAAE,QAAQ,IAAG,QAAQ,CAAC;QAElF,uDAAuD;QACvD,sCAAsC;QACtC,2DAA2D;QAC3D,KAAK;QACL,6BAA6B;QAC7B,YAAY,IAAI,QAAQ,CAAC;QACzB,OAAO,YAAY,CAAC;IACxB,CAAC;IAED,mCAAO,GAAP;QAEI,8BAA8B;QAC9B,2BAA2B;QAC3B,GAAG;QACH,QAAQ;QACJ,IAAI,CAAC,GAAG,CAAC,cAAc,EAAE,CAAC;QAC1B,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;QACtC,GAAG;IACP,CAAC;IAGD,8CAAkB,GAAlB;QACI,iBAAC,CAAC,aAAa,CAAC,OAAO,CAAC;YACpB,QAAQ,EAAE;gBACN,IAAI,IAAI,CAAC,MAAM,CAAC,WAAW,KAAK,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,gBAAgB,EAAE;oBAClE,OAAO;iBACV;gBAED,IAAI,YAAY,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,EAAE,IAAI,CAAC,EAClD,KAAK,GAAG,IAAI,CAAC,MAAM,EACnB,GAAG,GAAG,KAAK,CAAC,IAAI,EAChB,MAAM,GAAG,GAAG,CAAC,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,EAC7C,SAAS,CAAC;gBAEd,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;gBAC1B,IAAI,CAAC,MAAM,CAAC,WAAW,GAAG,IAAI,CAAC;gBAE/B,sDAAsD;gBAEtD,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,sBAAsB,EAAE;oBAC5C,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,sBAAsB,CAAC,YAAY,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;iBACvF;qBAAM,IAAI,YAAY,CAAC,MAAM,IAAI,IAAI,CAAC,uBAAuB,EAAE;oBAC5D,SAAS,GAAG,IAAI,CAAC,qBAAqB,CAAC,YAAY,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;iBACvE;qBAAM;oBACH,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,oGAAoG;oBACpH,SAAS,GAAG,IAAI,CAAC,qBAAqB,CAAC,YAAY,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;iBACvE;gBAED,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC;YACrD,CAAC;SACJ,CAAC,CAAC;IACP,CAAC;IAEL,wBAAC;AAAD,CAAC;AAtLY,8CAAiB;;;;;;;;;;;;;;;;;ACD9B,SAAgB,wBAAwB,CAAC,QAAgB,EAAE,MAAgB,EAAE,WAAoB,EAAE,cAAiC,EAAE,QAAwB;IAA3D,2DAAiC;IAAE,0CAAwB;IAC1J,CAAC,CAAC,QAAQ,CAAC,CAAC,YAAY,CAAC;QACrB,UAAU,EAAE,KAAK;QACjB,kBAAkB,EAAE,OAAO;QAE3B,iBAAiB,EAAE,UAAC,WAAW,EAAE,QAAQ;YACrC,IAAI,WAAW,IAAI,QAAQ,EAAE;gBACzB,OAAO,KAAK,CAAC;aAChB;iBACI;gBACD,OAAO,WAAW,GAAG,WAAW,CAAC;aACpC;QACL,CAAC;KACJ,CAAC,CAAC;IAEH,IAAI,cAAc,IAAI,SAAS,EAAE;QAC7B,MAAM,CAAC,OAAO,CAAC,UAAC,OAAY;YACxB,CAAC,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC;QACtE,CAAC,CAAC,CAAC;KACN;SACI;QACD,cAAc,CAAC,OAAO,CAAC,UAAC,OAAc;YACnC,CAAC,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC;QAC3E,CAAC,CAAC,CAAC;KACN;IAED,CAAC,CAAC,QAAQ,CAAC,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;IAEpC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,mBAAmB,EAAE,UAAC,CAAC,EAAE,YAAY,EAAE,UAAU,EAAE,aAAa;QAC3E,WAAW,CAAC,aAAa,EAAE,CAAC;IAChC,CAAC,CAAC,CAAC;AACP,CAAC;AA/BD,4DA+BC;AAED,SAAgB,yBAAyB,CAAC,QAAgB;IACtD,OAAO,CAAC,CAAC,QAAQ,CAAC,CAAC,GAAG,EAAE,CAAC;AAC7B,CAAC;AAFD,8DAEC;AAED,SAAgB,oBAAoB,CAAC,UAAoB;IACrD,UAAU,CAAC,OAAO,CAAC,UAAC,UAAkB;QAClC,CAAC,CAAC,UAAU,CAAC,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC;QACxC,CAAC,CAAC,UAAU,CAAC,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;IAC1C,CAAC,CAAC,CAAC;AACP,CAAC;AALD,oDAKC;AAED,SAAgB,oBAAoB,CAAC,QAAgB,EAAE,MAAgB;IACnE,CAAC,CAAC,QAAQ,CAAC,CAAC,YAAY,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;AAC5C,CAAC;AAFD,oDAEC;;;;;;;;;;;;;AClDD,uC;;;;;;;;;;;;;;;ACEA;IAGI;IAAgB,CAAC;IACrB,0BAAC;AAAD,CAAC;AAJY,kDAAmB;AAMhC;IAqBI;IAAe,CAAC;IAEhB,mCAAU,GAAV;QAAA,iBAqEC;QAnEG,CAAC,CAAC,wBAAwB,CAAC,CAAC,IAAI,CAAC,UAAC,KAAK,EAAE,OAAO;YAC5C,IAAI,KAAK,GAAQ,CAAC,CAAC,OAAO,CAAC,CAAC;YAC5B,IAAI,OAAO,GAAW,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACvC,sDAAsD;YAEtD,IAAI,OAAO,IAAI,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE;gBAC5D,IAAI,OAAO,IAAI,iBAAiB,EAAE;oBAAE,KAAI,CAAC,oBAAoB,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC;iBAAE;qBACzE,IAAI,OAAO,IAAI,qBAAqB,EAAE;oBAAE,KAAI,CAAC,uBAAuB,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC;iBAAE;qBACrF,IAAI,OAAO,IAAI,mBAAmB,EAAE;oBAAE,KAAI,CAAC,qBAAqB,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC;iBAAE;qBACjF,IAAI,OAAO,IAAI,wBAAwB,EAAE;oBAAE,KAAI,CAAC,mBAAmB,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC;iBAAE;qBACpF,IAAI,OAAO,IAAI,2BAA2B,EAAE;oBAAE,KAAI,CAAC,qBAAqB,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC;iBAAE;qBACzF,IAAI,OAAO,IAAI,oBAAoB,EAAE;oBAAE,KAAI,CAAC,cAAc,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC;iBAAE;aACnF;iBACI,IAAI,KAAK,CAAC,EAAE,CAAC,UAAU,CAAC,EAAE;gBAE3B,IAAI,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE;oBAC9B,IAAI,CAAC,KAAI,CAAC,eAAe;wBAAE,KAAI,CAAC,eAAe,GAAG,EAAE,CAAC;oBACrD,KAAI,CAAC,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;iBACtC;qBACI,IAAI,OAAO,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE;oBACvC,IAAI,CAAC,KAAI,CAAC,kBAAkB;wBAAE,KAAI,CAAC,kBAAkB,GAAG,EAAE,CAAC;oBAC3D,KAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;iBACzC;qBACI,IAAI,OAAO,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE;oBACrC,IAAI,CAAC,KAAI,CAAC,gBAAgB;wBAAE,KAAI,CAAC,gBAAgB,GAAG,EAAE,CAAC;oBACvD,KAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;iBACvC;qBACI,IAAI,OAAO,CAAC,UAAU,CAAC,eAAe,CAAC,EAAE;oBAC1C,IAAI,CAAC,KAAI,CAAC,cAAc;wBAAE,KAAI,CAAC,cAAc,GAAG,EAAE,CAAC;oBACnD,KAAI,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;iBACrC;qBACI,IAAI,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE;oBACtC,IAAI,CAAC,KAAI,CAAC,UAAU;wBAAE,KAAI,CAAC,UAAU,GAAG,EAAE,CAAC;oBAC3C,KAAI,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;iBACjC;qBACI,IAAI,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE;oBACxC,IAAI,CAAC,KAAI,CAAC,WAAW;wBAAE,KAAI,CAAC,WAAW,GAAG,EAAE,CAAC;oBAC7C,KAAI,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;iBAClC;qBACI,IAAI,OAAO,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE;oBACrC,IAAI,CAAC,KAAI,CAAC,gBAAgB;wBAAE,KAAI,CAAC,gBAAgB,GAAG,EAAE,CAAC;oBACvD,KAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;iBACvC;qBACI,IAAI,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE;oBACpC,IAAI,CAAC,KAAI,CAAC,cAAc;wBAAE,KAAI,CAAC,cAAc,GAAG,EAAE,CAAC;oBACnD,KAAI,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;iBACrC;qBACI,IAAI,OAAO,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE;oBACvC,IAAI,CAAC,KAAI,CAAC,aAAa;wBAAE,KAAI,CAAC,aAAa,GAAG,EAAE,CAAC;oBACjD,KAAI,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;iBACpC;qBACI,IAAI,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE;oBACnC,IAAI,CAAC,KAAI,CAAC,cAAc;wBAAE,KAAI,CAAC,cAAc,GAAG,EAAE,CAAC;oBACnD,KAAI,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;iBACrC;qBACI,IAAI,OAAO,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE;oBACrC,IAAI,CAAC,KAAI,CAAC,oBAAoB;wBAAE,KAAI,CAAC,oBAAoB,GAAG,EAAE,CAAC;oBAC/D,KAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;iBAC3C;qBACI,IAAI,OAAO,CAAC,UAAU,CAAC,cAAc,CAAC,EAAE;oBACzC,IAAI,CAAC,KAAI,CAAC,2BAA2B;wBAAE,KAAI,CAAC,2BAA2B,GAAG,EAAE,CAAC;oBAC7E,KAAI,CAAC,2BAA2B,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;iBAClD;gBAED,gCAAgC;aACnC;QACL,CAAC,CAAC,CAAC;IACP,CAAC;IAED,gCAAO,GAAP;QAAA,iBAuBC;QArBG,IAAI,UAAU,GAAa,CAAE,sBAAsB,EAAE,yBAAyB,EAAE,uBAAuB,EAAE,qBAAqB,EAAE,uBAAuB,EAAE,gBAAgB,CAAE,CAAC;QAC5K,IAAI,QAAQ,GAAa,CAAC,iBAAiB,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,YAAY,EAAE,aAAa,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,eAAe,EAAE,gBAAgB,EAAE,sBAAsB,EAAC,6BAA6B,CAAE,CAAC;QAEtQ,UAAU,CAAC,OAAO,CAAC,UAAC,KAAa;YAC7B,IAAI,KAAI,CAAC,KAAK,CAAC,IAAI,SAAS,EAAE;gBAC1B,IAAI,KAAK,IAAI,sBAAsB,EAAE;oBAAE,CAAC,CAAC,kBAAkB,CAAC,CAAC,GAAG,CAAC,KAAI,CAAC,KAAK,CAAC,CAAC,CAAC;iBAAE;qBAC3E,IAAI,KAAK,IAAI,yBAAyB,EAAE;oBAAE,CAAC,CAAC,sBAAsB,CAAC,CAAC,GAAG,CAAC,KAAI,CAAC,KAAK,CAAC,CAAC,CAAC;iBAAE;qBACvF,IAAI,KAAK,IAAI,uBAAuB,EAAE;oBAAE,CAAC,CAAC,oBAAoB,CAAC,CAAC,GAAG,CAAC,KAAI,CAAC,KAAK,CAAC,CAAC,CAAC;iBAAE;qBACnF,IAAI,KAAK,IAAI,qBAAqB,EAAE;oBAAE,CAAC,CAAC,yBAAyB,CAAC,CAAC,GAAG,CAAC,KAAI,CAAC,KAAK,CAAC,CAAC,CAAC;iBAAE;qBACtF,IAAI,KAAK,IAAI,uBAAuB,EAAE;oBAAE,CAAC,CAAC,4BAA4B,CAAC,CAAC,GAAG,CAAC,KAAI,CAAC,KAAK,CAAC,CAAC,CAAC;iBAAE;qBAC3F,IAAI,KAAK,IAAI,gBAAgB,EAAE;oBAAE,CAAC,CAAC,qBAAqB,CAAC,CAAC,GAAG,CAAC,KAAI,CAAC,KAAK,CAAC,CAAC,CAAC;iBAAE;aACrF;QACL,CAAC,CAAC,CAAC;QAEH,QAAQ,CAAC,OAAO,CAAC,UAAC,KAAa;YAC3B,IAAI,KAAI,CAAC,KAAK,CAAC,IAAI,SAAS,EAAE;gBAC1B,KAAI,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,UAAC,QAAgB;oBACjC,CAAC,CAAC,GAAG,GAAG,QAAQ,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;gBAC5C,CAAC,CAAC,CAAC;aACN;QACL,CAAC,CAAC,CAAC;IACP,CAAC;IAED,gDAAuB,GAAvB;QACI,IAAI,MAAM,GAAW,EAAE,CAAC;QACxB,IAAI,IAAI,CAAC,eAAe,IAAI,SAAS,IAAI,IAAI,CAAC,oBAAoB,IAAI,SAAS;YAAE,OAAO,EAAE,CAAC;QAC3F,IAAI,IAAI,CAAC,eAAe,IAAI,SAAS,EAAE;YACnC,IAAI,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,SAAS,CAAC;gBAAE,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,6BAA6B,CAAC,CAAC;YAC5G,IAAI,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,SAAS,CAAC;gBAAE,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,oCAAoC,CAAC,CAAC;YACnH,IAAI,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,SAAS,CAAC;gBAAE,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,sBAAsB,CAAC,CAAC;YACrG,IAAI,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,SAAS,CAAC;gBAAE,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,wCAAwC,CAAC,CAAC;YACvH,IAAI,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,SAAS,CAAC;gBAAE,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;YAC1F,IAAI,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,SAAS,CAAC;gBAAE,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;YAC7F,IAAI,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,SAAS,CAAC;gBAAE,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;YAC/F,IAAI,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,SAAS,CAAC;gBAAE,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;YAC3F,IAAI,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,SAAS,CAAC;gBAAE,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;YAC7F,IAAI,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,UAAU,CAAC;gBAAE,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,qDAAqD,CAAC,CAAC;YACrI,IAAI,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,UAAU,CAAC;gBAAE,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;YAChG,IAAI,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,UAAU,CAAC;gBAAE,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;YAChG,IAAI,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,UAAU,CAAC;gBAAE,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;YACvF,IAAI,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,UAAU,CAAC;gBAAE,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,4BAA4B,CAAC,CAAC;YAC5G,IAAI,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,UAAU,CAAC;gBAAE,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,wBAAwB,CAAC,CAAC;YACxG,IAAI,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,UAAU,CAAC;gBAAE,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;YAC9F,IAAI,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,UAAU,CAAC;gBAAE,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;YAC9F,IAAI,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,UAAU,CAAC;gBAAE,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;SAC/F;QACD,IAAI,IAAI,CAAC,oBAAoB,IAAI,SAAS,IAAI,IAAI,CAAC,oBAAoB,CAAC,MAAM,GAAG,CAAC;YAAE,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,oBAAoB,CAAC,CAAC;QAC9I,OAAO,MAAM,CAAC;IAClB,CAAC;IAED,oDAA2B,GAA3B;QACI,IAAI,MAAM,GAAW,EAAE,CAAC;QACxB,IAAI,IAAI,CAAC,kBAAkB,IAAI,SAAS,IAAI,IAAI,CAAC,uBAAuB,IAAI,SAAS;YAAE,OAAO,EAAE,CAAC;QACjG,IAAI,IAAI,CAAC,kBAAkB,IAAI,SAAS,EAAE;YACtC,IAAI,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,aAAa,CAAC;gBAAE,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,mCAAmC,CAAC,CAAC;YACzH,IAAI,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,aAAa,CAAC;gBAAE,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;YACpG,IAAI,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,aAAa,CAAC;gBAAE,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,yBAAyB,CAAC,CAAC;YAC/G,IAAI,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,aAAa,CAAC;gBAAE,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,wCAAwC,CAAC,CAAC;YAC9H,IAAI,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,aAAa,CAAC;gBAAE,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;SACrG;QACD,IAAI,IAAI,CAAC,uBAAuB,IAAI,SAAS,IAAI,IAAI,CAAC,uBAAuB,CAAC,MAAM,GAAG,CAAC;YAAE,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,uBAAuB,CAAC,CAAC;QACvJ,OAAO,MAAM,CAAC;IAClB,CAAC;IAED,gDAAuB,GAAvB;QACI,IAAI,MAAM,GAAW,EAAE,CAAC;QACxB,IAAI,IAAI,CAAC,gBAAgB,IAAI,SAAS,IAAI,IAAI,CAAC,qBAAqB,IAAI,SAAS;YAAE,OAAO,EAAE,CAAC;QAC7F,IAAI,IAAI,CAAC,gBAAgB,IAAI,SAAS,EAAE;YACpC,IAAI,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,WAAW,CAAC;gBAAE,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,qBAAqB,CAAC,CAAC;YACvG,IAAI,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,WAAW,CAAC;gBAAE,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,qBAAqB,CAAC,CAAC;YACvG,IAAI,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,WAAW,CAAC;gBAAE,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,qBAAqB,CAAC,CAAC;YACvG,IAAI,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,WAAW,CAAC;gBAAE,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,qBAAqB,CAAC,CAAC;YACvG,IAAI,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,WAAW,CAAC;gBAAE,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,sBAAsB,CAAC,CAAC;YACxG,IAAI,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,WAAW,CAAC;gBAAE,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,sBAAsB,CAAC,CAAC;YACxG,IAAI,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,WAAW,CAAC;gBAAE,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,oBAAoB,CAAC,CAAC;YACtG,IAAI,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,WAAW,CAAC;gBAAE,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,qBAAqB,CAAC,CAAC;YACvG,IAAI,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,WAAW,CAAC;gBAAE,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,sBAAsB,CAAC,CAAC;YACxG,IAAI,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,YAAY,CAAC;gBAAE,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,sBAAsB,CAAC,CAAC;YACzG,IAAI,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,YAAY,CAAC;gBAAE,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,yBAAyB,CAAC,CAAC;YAC5G,IAAI,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,YAAY,CAAC;gBAAE,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,yBAAyB,CAAC,CAAC;YAC5G,IAAI,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,YAAY,CAAC;gBAAE,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,uBAAuB,CAAC,CAAC;YAC1G,IAAI,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,YAAY,CAAC;gBAAE,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,wBAAwB,CAAC,CAAC;YAC3G,IAAI,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,YAAY,CAAC;gBAAE,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,yBAAyB,CAAC,CAAC;YAC5G,IAAI,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,YAAY,CAAC;gBAAE,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,sBAAsB,CAAC,CAAC;YACzG,IAAI,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,YAAY,CAAC;gBAAE,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC;YACtG,IAAI,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,YAAY,CAAC;gBAAE,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,uBAAuB,CAAC,CAAC;YAC1G,IAAI,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,YAAY,CAAC;gBAAE,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC;YACtG,IAAI,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,YAAY,CAAC;gBAAE,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,qBAAqB,CAAC,CAAC;YACxG,IAAI,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,YAAY,CAAC;gBAAE,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,sBAAsB,CAAC,CAAC;YACzG,IAAI,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,YAAY,CAAC;gBAAE,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,oBAAoB,CAAC,CAAC;SAC1G;QACD,IAAI,IAAI,CAAC,qBAAqB,IAAI,SAAS,IAAI,IAAI,CAAC,qBAAqB,CAAC,MAAM,GAAG,CAAC;YAAE,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,qBAAqB,CAAC,CAAC;QACjJ,OAAO,MAAM,CAAC;IAClB,CAAC;IAED,gDAAuB,GAAvB;QACI,IAAI,MAAM,GAAW,EAAE,CAAC;QACxB,IAAI,IAAI,CAAC,cAAc,IAAI,SAAS,IAAI,IAAI,CAAC,mBAAmB,IAAI,SAAS;YAAE,OAAO,EAAE,CAAC;QACzF,IAAI,IAAI,CAAC,cAAc,IAAI,SAAS,EAAE;YAClC,IAAI,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,gBAAgB,CAAC;gBAAE,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;YAC/F,IAAI,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,gBAAgB,CAAC;gBAAE,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;YAC5F,IAAI,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,gBAAgB,CAAC;gBAAE,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;YAChG,IAAI,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,gBAAgB,CAAC;gBAAE,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;SAClG;QACD,IAAI,IAAI,CAAC,mBAAmB,IAAI,SAAS,IAAI,IAAI,CAAC,mBAAmB,CAAC,MAAM,GAAG,CAAC;YAAE,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,mBAAmB,CAAC,CAAC;QAC3I,OAAO,MAAM,CAAC;IAClB,CAAC;IAED,4CAAmB,GAAnB;QACI,IAAI,MAAM,GAAW,EAAE,CAAC;QACxB,IAAI,IAAI,CAAC,UAAU,IAAI,SAAS;YAAE,OAAO,EAAE,CAAC;QAC5C,IAAI,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,YAAY,CAAC;YAAE,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;QAC9F,IAAI,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,YAAY,CAAC;YAAE,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,6BAA6B,CAAC,CAAC;QAC1G,IAAI,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,YAAY,CAAC;YAAE,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,0BAA0B,CAAC,CAAC;QACvG,IAAI,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,YAAY,CAAC;YAAE,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,sBAAsB,CAAC,CAAC;QACnG,IAAI,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,YAAY,CAAC;YAAE,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;QACtF,IAAI,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,YAAY,CAAC;YAAE,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;QACxF,IAAI,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,YAAY,CAAC;YAAE,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;QACvF,OAAO,MAAM,CAAC;IAClB,CAAC;IAED,6CAAoB,GAApB;QACI,IAAI,MAAM,GAAW,EAAE,CAAC;QACxB,IAAI,IAAI,CAAC,WAAW,IAAI,SAAS;YAAE,OAAO,EAAE,CAAC;QAC7C,IAAI,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,cAAc,CAAC;YAAE,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;QAChG,IAAI,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,cAAc,CAAC;YAAE,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;QAC/F,IAAI,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,cAAc,CAAC;YAAE,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,0BAA0B,CAAC,CAAC;QAC1G,IAAI,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,cAAc,CAAC;YAAE,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,qBAAqB,CAAC,CAAC;QACrG,IAAI,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,cAAc,CAAC;YAAE,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,2BAA2B,CAAC,CAAC;QAC3G,OAAO,MAAM,CAAC;IAClB,CAAC;IAED,kDAAyB,GAAzB;QACI,IAAI,MAAM,GAAW,EAAE,CAAC;QACxB,IAAI,IAAI,CAAC,gBAAgB,IAAI,SAAS,IAAI,IAAI,CAAC,qBAAqB,IAAI,SAAS;YAAE,OAAO,EAAE,CAAC;QAC7F,IAAI,IAAI,CAAC,gBAAgB,IAAI,SAAS,EAAE;YACpC,IAAI,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,WAAW,CAAC;gBAAE,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,6CAA6C,CAAC,CAAC;YAC/H,IAAI,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,WAAW,CAAC;gBAAE,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,+CAA+C,CAAC,CAAC;YACjI,IAAI,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,WAAW,CAAC;gBAAE,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,8CAA8C,CAAC,CAAC;SACnI;QACD,IAAI,IAAI,CAAC,qBAAqB,IAAI,SAAS,IAAI,IAAI,CAAC,qBAAqB,CAAC,MAAM,GAAG,CAAC;YAAE,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,qBAAqB,CAAC,CAAC;QACjJ,OAAO,MAAM,CAAC;IAClB,CAAC;IAED,gDAAuB,GAAvB;QACI,IAAI,MAAM,GAAW,EAAE,CAAC;QACxB,IAAI,IAAI,CAAC,cAAc,IAAI,SAAS;YAAE,OAAO,EAAE,CAAC;QAChD,IAAI,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,UAAU,CAAC;YAAE,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACtF,IAAI,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,UAAU,CAAC;YAAE,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACtF,IAAI,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,UAAU,CAAC;YAAE,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACtF,OAAO,MAAM,CAAC;IAClB,CAAC;IAED,+CAAsB,GAAtB;QACI,IAAI,MAAM,GAAW,EAAE,CAAC;QACxB,IAAI,IAAI,CAAC,aAAa,IAAI,SAAS;YAAE,OAAO,EAAE,CAAC;QAC/C,IAAI,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,aAAa,CAAC;YAAE,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;QAC/F,IAAI,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,aAAa,CAAC;YAAE,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,qCAAqC,CAAC,CAAC;QACtH,IAAI,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,aAAa,CAAC;YAAE,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,mDAAmD,CAAC,CAAC;QACpI,OAAO,MAAM,CAAC;IAClB,CAAC;IAED,gDAAuB,GAAvB;QACI,IAAI,MAAM,GAAW,EAAE,CAAC;QACxB,IAAI,IAAI,CAAC,cAAc,IAAI,SAAS;YAAE,OAAO,EAAE,CAAC;QAChD,IAAI,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,SAAS,CAAC;YAAE,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,qBAAqB,CAAC,CAAC;QACnG,IAAI,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,SAAS,CAAC;YAAE,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,8BAA8B,CAAC,CAAC;QAC5G,IAAI,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,SAAS,CAAC;YAAE,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;QAC9F,OAAO,MAAM,CAAC;IAClB,CAAC;IAED,sDAA6B,GAA7B;QACI,IAAI,MAAM,GAAW,EAAE,CAAC;QACxB,IAAI,IAAI,CAAC,oBAAoB,IAAI,SAAS;YAAE,OAAO,EAAE,CAAC;QACtD,IAAI,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC,WAAW,CAAC;YAAE,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,sDAAsD,CAAC,CAAC;QAC5I,IAAI,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC,WAAW,CAAC;YAAE,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,kDAAkD,CAAC,CAAC;QACxI,IAAI,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC,WAAW,CAAC;YAAE,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,8BAA8B,CAAC,CAAC;QACpH,IAAI,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC,WAAW,CAAC;YAAE,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,uDAAuD,CAAC,CAAC;QAC7I,IAAI,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC,WAAW,CAAC;YAAE,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,gEAAgE,CAAC,CAAC;QACtJ,IAAI,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC,WAAW,CAAC;YAAE,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,4CAA4C,CAAC,CAAC;QAClI,IAAI,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC,WAAW,CAAC;YAAE,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,gCAAgC,CAAC,CAAC;QACtH,IAAI,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC,WAAW,CAAC;YAAE,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,uEAAuE,CAAC,CAAC;QAC7J,IAAI,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC,WAAW,CAAC;YAAE,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,wBAAwB,CAAC,CAAC;QAC9G,IAAI,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC,YAAY,CAAC;YAAE,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,6CAA6C,CAAC,CAAC;QACpI,OAAO,MAAM,CAAC;IAClB,CAAC;IAED,6DAAoC,GAApC;QACI,IAAI,MAAM,GAAW,EAAE,CAAC;QACxB,IAAI,IAAI,CAAC,2BAA2B,IAAI,SAAS;YAAE,OAAO,EAAE,CAAC;QAC7D,IAAI,IAAI,CAAC,2BAA2B,CAAC,QAAQ,CAAC,eAAe,CAAC;YAAE,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,wEAAwE,CAAC,CAAC;QACzK,IAAI,IAAI,CAAC,2BAA2B,CAAC,QAAQ,CAAC,eAAe,CAAC;YAAE,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,mEAAmE,CAAC,CAAC;QACpK,IAAI,IAAI,CAAC,2BAA2B,CAAC,QAAQ,CAAC,eAAe,CAAC;YAAE,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,yDAAyD,CAAC,CAAC;QAC1J,IAAI,IAAI,CAAC,2BAA2B,CAAC,QAAQ,CAAC,eAAe,CAAC;YAAE,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,6DAA6D,CAAC,CAAC;QAC9J,IAAI,IAAI,CAAC,2BAA2B,CAAC,QAAQ,CAAC,eAAe,CAAC;YAAE,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,4CAA4C,CAAC,CAAC;QAC7I,IAAI,IAAI,CAAC,2BAA2B,CAAC,QAAQ,CAAC,eAAe,CAAC;YAAE,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,gDAAgD,CAAC,CAAC;QACjJ,IAAI,IAAI,CAAC,2BAA2B,CAAC,QAAQ,CAAC,eAAe,CAAC;YAAE,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,0CAA0C,CAAC,CAAC;QAC3I,IAAI,IAAI,CAAC,2BAA2B,CAAC,QAAQ,CAAC,eAAe,CAAC;YAAE,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,2EAA2E,CAAC,CAAC;QAC5K,IAAI,IAAI,CAAC,2BAA2B,CAAC,QAAQ,CAAC,eAAe,CAAC;YAAE,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,qEAAqE,CAAC,CAAC;QACtK,IAAI,IAAI,CAAC,2BAA2B,CAAC,QAAQ,CAAC,gBAAgB,CAAC;YAAE,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,uCAAuC,CAAC,CAAC;QACzI,IAAI,IAAI,CAAC,2BAA2B,CAAC,QAAQ,CAAC,gBAAgB,CAAC;YAAE,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,6CAA6C,CAAC,CAAC;QAC/I,IAAI,IAAI,CAAC,2BAA2B,CAAC,QAAQ,CAAC,gBAAgB,CAAC;YAAE,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,wDAAwD,CAAC,CAAC;QAC1J,OAAO,MAAM,CAAC;IAClB,CAAC;IAED,wCAAe,GAAf;QACI,IAAI,MAAM,GAAW,EAAE,CAAC;QACxB,MAAM,GAAG,IAAI,CAAC,uBAAuB,EAAE,GAAG,GAAG,GAAG,IAAI,CAAC,2BAA2B,EAAE,GAAG,GAAG,GAAG,IAAI,CAAC,uBAAuB,EAAE,GAAG,GAAG,GAAG,IAAI,CAAC,uBAAuB,EAAE,GAAG,GAAG,GAAG,IAAI,CAAC,mBAAmB,EAAE,GAAG,GAAG,GAAG,IAAI,CAAC,oBAAoB,EAAE,GAAG,GAAG,GAAG,IAAI,CAAC,uBAAuB,EAAE,GAAG,GAAG,GAAG,IAAI,CAAC,sBAAsB,EAAE,GAAG,GAAG,GAAG,IAAI,CAAC,uBAAuB,EAAE,GAAG,GAAG,GAAG,IAAI,CAAC,oCAAoC,EAAE,GAAG,GAAG,GAAG,IAAI,CAAC,6BAA6B,EAAE,CAAC;QAC7b,IAAI,IAAI,CAAC,cAAc,IAAI,SAAS,EAAE;YAAE,MAAM,IAAI,GAAG,GAAG,IAAI,CAAC,cAAc,CAAC;SAAE;QAC9E,OAAO,MAAM,CAAC;IAClB,CAAC;IAED,iCAAQ,GAAR,UAAS,MAAc,EAAE,KAAa;QAClC,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;YAAE,MAAM,IAAI,IAAI,CAAC;SAAE;QAC1C,MAAM,IAAI,KAAK,CAAC;QAChB,OAAO,MAAM,CAAC;IAClB,CAAC;IAED,0CAAiB,GAAjB;QACI,IAAI,IAAI,CAAC,oBAAoB,IAAI,SAAS,EAAE;YAAE,IAAI,IAAI,CAAC,eAAe,IAAI,SAAS,EAAE;gBAAE,IAAI,CAAC,eAAe,GAAG,EAAE,CAAC;aAAE;YAAC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;SAAE;QAC/J,IAAI,IAAI,CAAC,uBAAuB,IAAI,SAAS,EAAE;YAAE,IAAI,IAAI,CAAC,kBAAkB,IAAI,SAAS,EAAE;gBAAE,IAAI,CAAC,kBAAkB,GAAG,EAAE,CAAC;aAAE;YAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;SAAE;QAC/K,IAAI,IAAI,CAAC,qBAAqB,IAAI,SAAS,EAAE;YAAE,IAAI,IAAI,CAAC,gBAAgB,IAAI,SAAS,EAAE;gBAAE,IAAI,CAAC,gBAAgB,GAAG,EAAE,CAAC;aAAE;YAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;SAAE;QACrK,IAAI,IAAI,CAAC,mBAAmB,IAAI,SAAS,EAAE;YAAE,IAAI,IAAI,CAAC,cAAc,IAAI,SAAS,EAAE;gBAAE,IAAI,CAAC,cAAc,GAAG,EAAE,CAAC;aAAE;YAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;SAAE;QAClK,IAAI,IAAI,CAAC,qBAAqB,IAAI,SAAS,EAAE;YAAE,IAAI,IAAI,CAAC,gBAAgB,IAAI,SAAS,EAAE;gBAAE,IAAI,CAAC,gBAAgB,GAAG,EAAE,CAAC;aAAE;YAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;SAAE;IACzK,CAAC;IACL,qBAAC;AAAD,CAAC;AAjUY,wCAAc;;;;;;;;;;;;;;;;;ACR3B,mFAAgD;AAChD,+EAAiD;AACjD,mGAAwF;AAGxF;IAKI,uBAAY,IAAS;QAArB,iBAcC;QAbG,CAAC,CAAC;YAEE,KAAI,CAAC,SAAS,GAAG,oCAAY,EAAC,6BAAQ,EAAc,IAAI,CAAC,CAAC;YAC1D,KAAI,CAAC,SAAS,CAAC,GAAG,CAAC,UAAC,KAAe;gBAC/B,KAAK,CAAC,UAAU,EAAE,CAAC;gBACnB,OAAO,KAAK,CAAC;YACjB,CAAC,CAAC,CAAC;YAEH,8BAA8B;YAE9B,KAAI,CAAC,eAAe,EAAE,CAAC;YACvB,KAAI,CAAC,mBAAmB,CAAC,KAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QACpD,CAAC,CAAC,CAAC;IACP,CAAC;IAED,uCAAe,GAAf;QAAA,iBAwHC;QAtHG,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC,mBAAmB,CAAC,CAAC,SAAS,CAAC;YAC9C,oDAAoD;YACpD,KAAK,EAAE,yCAAyC;YAChD,SAAS,EAAE,KAAK;YAChB,IAAI,EAAE,KAAK;YACX,MAAM,EAAE,KAAK;YACb,MAAM,EAAE,IAAI;YACZ,OAAO,EAAE,KAAK;YACd,kBAAkB;YAClB,aAAa,EAAE,IAAI;YACnB,QAAQ,EACR;gBACI,MAAM,EAAE,QAAQ;gBAChB,OAAO,EAAE;oBACL,SAAS,EAAE,wBAAwB;oBACnC,QAAQ,EAAE,sDAAsD;iBACnE;aACJ;YACD,OAAO,EAAE;gBACL,EAAE,SAAS,EAAE,iBAAiB,EAAE,SAAS,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,cAAc,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE;gBACjG,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,4BAA4B,EAAE;gBACzD,EAAE,IAAI,EAAE,wBAAwB,EAAE,SAAS,EAAE,uBAAuB,EAAC,KAAK,EAAE,KAAK,EAAE;gBACnF,EAAE,IAAI,EAAE,gBAAgB,EAAE,SAAS,EAAE,uBAAuB,EAAE,KAAK,EAAE,KAAK,EAAE;gBAC5E,EAAE,IAAI,EAAE,wBAAwB,EAAE,SAAS,EAAE,uBAAuB,EAAE,KAAK,EAAE,KAAK,EAAE;gBACpF,EAAE,IAAI,EAAE,gBAAgB,EAAE,SAAS,EAAE,uBAAuB,EAAE,KAAK,EAAE,KAAK,EAAE;gBAC5E,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,uBAAuB,EAAE,KAAK,EAAE,KAAK,EAAE;gBAClE,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,uBAAuB,EAAE,KAAK,EAAE,KAAK,EAAE;gBACpE,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE;gBACrD,EAAE,IAAI,EAAE,iBAAiB,EAAE,KAAK,EAAE,iBAAiB,EAAE,OAAO,EAAE,KAAK,EAAE;gBACrE,EAAE,IAAI,EAAE,uBAAuB,EAAE,OAAO,EAAE,KAAK,EAAE;gBACjD,EAAE,IAAI,EAAE,uBAAuB,EAAE,OAAO,EAAE,KAAK,EAAE;gBACjD,EAAE,IAAI,EAAE,eAAe,EAAE,OAAO,EAAE,KAAK,EAAE;gBACzC,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE;gBACrD,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE;gBACnD,EAAE,IAAI,EAAE,kBAAkB,EAAE,KAAK,EAAE,kBAAkB,EAAE,OAAO,EAAE,KAAK,EAAE;gBACvE,EAAE,IAAI,EAAE,iBAAiB,EAAE,KAAK,EAAE,mBAAmB,EAAE,OAAO,EAAE,KAAK,EAAE;gBACvE,EAAE,IAAI,EAAE,eAAe,EAAE,KAAK,EAAE,eAAe,EAAE,OAAO,EAAE,KAAK,EAAE;gBACjE,EAAE,IAAI,EAAE,gBAAgB,EAAE,KAAK,EAAE,gBAAgB,EAAE,OAAO,EAAE,KAAK,EAAE;gBACnE,EAAE,IAAI,EAAE,kBAAkB,EAAE,KAAK,EAAE,6BAA6B,EAAE,OAAO,EAAE,KAAK,EAAE;gBAClF,EAAE,IAAI,EAAE,sBAAsB,EAAE,KAAK,EAAE,sBAAsB,EAAE,OAAO,EAAE,KAAK,EAAE;gBAC/E,EAAE,IAAI,EAAE,iBAAiB,EAAE,KAAK,EAAE,kBAAkB,EAAE,OAAO,EAAE,KAAK,EAAE;gBACtE,EAAE,IAAI,EAAE,eAAe,EAAE,KAAK,EAAE,eAAe,EAAE,OAAO,EAAE,KAAK,EAAE;gBACjE,EAAE,IAAI,EAAE,qBAAqB,EAAE,KAAK,EAAE,oBAAoB,EAAE,OAAO,EAAE,KAAK,EAAE;gBAC5E,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,cAAc,EAAE,OAAO,EAAE,KAAK,EAAE;gBAC/D,EAAE,IAAI,EAAE,iBAAiB,EAAE,KAAK,EAAE,oBAAoB,EAAE,OAAO,EAAE,KAAK,EAAE;gBACxE,EAAE,IAAI,EAAE,kBAAkB,EAAE,KAAK,EAAE,sBAAsB,EAAE,OAAO,EAAE,KAAK,EAAE;gBAC3E,EAAE,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE,aAAa,EAAE,OAAO,EAAE,KAAK,EAAE;gBAC7D,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,cAAc,EAAE,OAAO,EAAE,KAAK,EAAE;gBAC/D,EAAE,IAAI,EAAE,eAAe,EAAE,KAAK,EAAE,kBAAkB,EAAE,OAAO,EAAE,KAAK,EAAE;gBACpE,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,KAAK,EAAE;gBACvD,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,KAAK,EAAE;gBACvD,EAAE,IAAI,EAAE,iBAAiB,EAAE,KAAK,EAAE,iBAAiB,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,IAAI;gBAC3E,gDAAgD;aACnD;YACD,OAAO,EAAE;gBACL;oBACI,MAAM,EAAE,MAAM;oBACd,IAAI,EAAE,6BAA6B;oBACnC,SAAS,EAAE,MAAM;oBACjB,OAAO,EAAE,OAAO;oBAChB,aAAa,EAAE;wBACX,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;qBAC7G;oBACD,KAAK,EAAE,EAAE;iBACZ;gBACC;oBACE,MAAM,EAAE,KAAK;oBACb,IAAI,EAAE,sCAAsC;oBAC5C,SAAS,EAAE,KAAK;oBAChB,OAAO,EAAE,OAAO;oBAChB,aAAa,EAAE;wBACX,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;qBAC7G;iBACJ;aACJ;YACD,IAAI,EAAE,IAAI,CAAC,SAAS;YACpB,oCAAoC;YACpC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;YAC/B,YAAY,EAAE,UAAC,QAAQ,EAAE,IAAI;gBACzB,CAAC,CAAC,mBAAmB,CAAC,CAAC,IAAI,CAAC,kEAAkE,CAAC,CAAC;YACpG,CAAC;SACJ,CAAC,CAAC;QAEH,IAAI,eAAe,GACf,OAAO;YACP,uIAAuI;YACvI,QAAQ,CACP;QACL,CAAC,CAAC,gBAAgB,CAAC,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QAClD,CAAC,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC;QACnD,CAAC,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QACzC,CAAC,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;QAE7C,+BAA+B;QAC/B,CAAC,CAAC,yBAAyB,CAAC,CAAC,EAAE,CAAC,OAAO,EAAE,IAAI,EAAE,UAAC,KAAK;YACjD,gDAAgD;YAChD,IAAI,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;YAChC,IAAI,GAAG,GAAG,KAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAEjC,IAAI,GAAG,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE;gBACrB,sCAAsC;gBACtC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;gBACjB,EAAE,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;aAC3B;iBACI;gBACD,IAAI,GAAG,CAAC,IAAI,EAAE,IAAI,SAAS,EAAE;oBACzB,gBAAgB;oBAChB,GAAG,CAAC,KAAK,CAAC,KAAI,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;oBACnD,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;iBACxB;aACJ;QACL,CAAC,CAAC,CAAC;QAEH,CAAC,CAAC,mBAAmB,CAAC,CAAC,EAAE,CAAC,WAAW,EAAE,UAAC,CAAC,EAAE,QAAQ;YAC/C,KAAI,CAAC,mBAAmB,CAAC,KAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;QACjF,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,iBAAiB,EAAE,CAAC;IAC7B,CAAC;IAED,yCAAiB,GAAjB;QAAA,iBA6FC;gCA3FY,KAAK;YAEV,IAAI,YAAY,GAAa,EAAE,CAAC;YAChC,IAAI,SAAS,GAAW,EAAE,CAAC;YAE3B,IAAI,WAAW,GAAW,KAAK,CAAC;YAChC,IAAI,mBAAmB,GAAW,KAAK,CAAC;YAExC,IAAI,KAAK,IAAI,CAAC,EAAE,EAAE,kBAAkB;gBAChC,mBAAmB,GAAG,EAAE,CAAC;gBAAE,WAAW,GAAG,EAAE,CAAC;gBAAC,SAAS,GAAG,GAAG,CAAC;aAChE;iBACI,IAAI,KAAK,IAAI,CAAC,EAAE,EAAE,WAAW;gBAC9B,mBAAmB,GAAG,CAAC,CAAC;gBAAC,WAAW,GAAG,EAAE,CAAC;gBAAC,SAAS,GAAG,GAAG,CAAC;aAC9D;iBACI,IAAI,KAAK,IAAI,CAAC,EAAE,EAAE,cAAc;gBACjC,mBAAmB,GAAG,CAAC,CAAC;gBAAC,WAAW,GAAG,EAAE,CAAC;gBAAC,SAAS,GAAG,GAAG,CAAC;aAC9D;YAED,OAAK,SAAS,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC,IAAI,EAAE,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,UAAC,IAAY;gBACxE,IAAI,KAAK,GAAa,EAAE,CAAC;gBACzB,IAAI,SAAS,IAAI,EAAE,EAAE;oBAAE,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;iBAAE;qBAClD;oBAAE,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;iBAAE;gBAEzB,KAAK,CAAC,GAAG,CAAC,UAAC,IAAY;oBACnB,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;oBACnB,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;wBACjD,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;qBAC3B;gBACL,CAAC,CAAC,CAAC;YACP,CAAC,CAAC,CAAC;YAEH,YAAY,GAAG,YAAY,CAAC,IAAI,CAAC,UAAC,CAAS,EAAE,CAAS;gBAClD,OAAO,CAAC,CAAC,WAAW,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;YAC1D,CAAC,CAAC,CAAC;YAEH,IAAI,QAAQ,GAAW,mBAAmB,GAAG,KAAK,CAAC;YAEnD,CAAC,CAAC,QAAQ,CAAC,CAAC,YAAY,CAAC;gBACrB,UAAU,EAAE,KAAK;gBACjB,kBAAkB,EAAE,OAAO;gBAE3B,iBAAiB,EAAE,UAAC,WAAW,EAAE,QAAQ;oBACrC,IAAI,WAAW,IAAI,QAAQ,EAAE;wBACzB,OAAO,KAAK,CAAC;qBAChB;yBACI;wBACD,OAAO,WAAW,GAAG,WAAW,CAAC;qBACpC;gBACL,CAAC;aACJ,CAAC,CAAC;YAEH,YAAY,CAAC,OAAO,CAAC,UAAC,OAAY;gBAC9B,CAAC,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC;YAClE,CAAC,CAAC,CAAC;YACH,CAAC,CAAC,QAAQ,CAAC,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;YAGpC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,mBAAmB,EAAE,UAAC,CAAC,EAAE,YAAY,EAAE,UAAU,EAAE,aAAa;gBAC3E,IAAI,MAAM,GAAuB,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;gBACrD,iCAAiC;gBAEjC,IAAI,MAAM,GAAW,EAAE,CAAC;gBACxB,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;oBACnB,mEAAmE;oBAC/D,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,MAAM,CAAC;oBACxD,GAAG;oBACH,QAAQ;oBACR,8CAA8C;oBAC9C,GAAG;iBACN;qBACI;oBAAE,MAAM,GAAG,4BAA4B,CAAC;iBAAE;gBAE/C,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBAExD,4CAA4C;gBAC5C,uBAAuB;gBACvB,GAAG;gBAEH,kDAAkD;gBAClD,yCAAyC;gBACzC,yCAAyC;gBACzC,sBAAsB;gBAEtB,KAAI,CAAC,aAAa,EAAE,CAAC;gBAErB;;8BAEc;YAClB,CAAC,CAAC,CAAC;;;QAxFP,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,EAAE,KAAK;oBAA9B,KAAK;SA0Fb;IACL,CAAC;IAED,uCAAe,GAAf,UAAgB,IAAc;QAE1B,iDAAiD;QACjD,IAAI,SAAS,GAAW,yEAAyE,CAAC;QAElG,2CAA2C;QAC3C,oGAAoG;QACpG,sDAAsD;QACtD,cAAc;QAEd,SAAS,IAAI,0BAA0B;YACnC,kEAAkE;YAClE,wBAAwB,GAAG,IAAI,CAAC,OAAO,GAAG,OAAO;YACjD,OAAO,CAAC;QAEZ,SAAS,IAAI,0BAA0B;YACnC,uEAAuE;YACvE,wBAAwB,GAAG,IAAI,CAAC,MAAM,GAAG,OAAO;YAChD,OAAO,CAAC;QAEZ,SAAS,IAAI,0BAA0B;YACnC,0FAA0F;YAC1F,wBAAwB,GAAG,IAAI,CAAC,gBAAgB,GAAG,OAAO;YAC1D,OAAO,CAAC;QAEZ,2CAA2C;QAC3C,gHAAgH;QAChH,oEAAoE;QACpE,cAAc;QACd,SAAS,IAAI,0BAA0B;YACnC,mEAAmE;YACnE,wBAAwB,GAAG,kCAAY,EAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,CAAC,GAAG,OAAO;YAClF,OAAO,CAAC;QAEZ,SAAS,IAAI,0BAA0B;YACnC,yEAAyE;YACzE,wBAAwB,GAAG,kCAAY,EAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,CAAC,GAAG,OAAO;YAClF,OAAO,CAAC;QAEZ,SAAS,IAAI,0BAA0B;YACnC,uFAAuF;YACvF,wBAAwB,GAAG,IAAI,CAAC,eAAe,GAAG,OAAO;YACzD,OAAO,CAAC;QAEZ,SAAS,IAAI,0BAA0B;YACnC,yEAAyE;YACzE,wBAAwB,GAAG,IAAI,CAAC,oBAAoB,GAAG,OAAO;YAC9D,OAAO,CAAC;QAEZ,SAAS,IAAI,0BAA0B;YACnC,mFAAmF;YACnF,wBAAwB,GAAG,IAAI,CAAC,cAAc,GAAG,OAAO;YACxD,OAAO,CAAC;QAEZ,2CAA2C;QAC3C,+IAA+I;QAC/I,8DAA8D;QAC9D,cAAc;QAEd,mCAAmC;QACnC,+CAA+C;QAC/C,sFAAsF;QACtF,+FAA+F;QAC/F,kBAAkB;QAClB,GAAG;QAEH,2CAA2C;QAC3C,mHAAmH;QACnH,sDAAsD;QACtD,4FAA4F;QAC5F,4BAA4B;QAE5B,SAAS,IAAI,0BAA0B;YACnC,+GAA+G;YAC/G,wBAAwB,GAAG,IAAI,CAAC,gBAAgB,CAAC;QACrD,IAAI,IAAI,CAAC,gBAAgB,IAAI,KAAK,EAAE;YAAE,SAAS,IAAI,IAAI,GAAG,IAAI,CAAC,oBAAoB,GAAG,GAAG,CAAC;SAAE;QAC5F,SAAS,IAAI,YAAY,CAAC;QAE1B,SAAS,IAAI,0BAA0B;YACnC,wIAAwI;YACxI,wBAAwB,GAAG,IAAI,CAAC,eAAe,CAAC;QACpD,IAAI,IAAI,CAAC,eAAe,IAAI,KAAK,EAAE;YAC/B,IAAI,YAAY,GAAW,EAAE,CAAC;YAC9B,IAAI,IAAI,CAAC,aAAa,IAAI,EAAE,EAAE;gBAAE,YAAY,IAAI,IAAI,CAAC,aAAa,CAAC;aAAE;YACrE,IAAI,IAAI,CAAC,YAAY,IAAI,EAAE,EAAE;gBAAE,YAAY,IAAI,CAAC,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC;aAAE;YAC7G,SAAS,IAAI,IAAI,GAAG,IAAI,CAAC,mBAAmB,GAAG,GAAG,CAAC;SACtD;QACD,SAAS,IAAI,YAAY,CAAC;QAE1B,2CAA2C;QAC3C,4GAA4G;QAC5G,iEAAiE;QACjE,cAAc;QACd,sCAAsC;QACtC,+CAA+C;QAC/C,4GAA4G;QAC5G,qEAAqE;QACrE,kBAAkB;QAClB,GAAG;QAEH,SAAS,IAAI,0BAA0B;YACnC,uIAAuI;YACvI,wBAAwB,GAAG,IAAI,CAAC,eAAe,GAAG,OAAO;YACzD,OAAO,CAAC;QACZ,2CAA2C;QAC3C,gGAAgG;QAChG,mGAAmG;QACnG,cAAc;QACd,SAAS,IAAI,0BAA0B;YACnC,kKAAkK;YAClK,wBAAwB,GAAG,IAAI,CAAC,gBAAgB,GAAG,OAAO;YAC1D,OAAO,CAAC;QACZ,2CAA2C;QAC3C,4HAA4H;QAC5H,mEAAmE;QACnE,cAAc;QACd,2CAA2C;QAC3C,wHAAwH;QACxH,mEAAmE;QACnE,cAAc;QACd,SAAS,IAAI,0BAA0B;YACnC,8EAA8E;YAC9E,wBAAwB,GAAG,IAAI,CAAC,aAAa,GAAG,OAAO;YACvD,OAAO,CAAC;QACZ,SAAS,IAAI,0BAA0B;YACnC,yEAAyE;YACzE,wBAAwB,GAAG,IAAI,CAAC,WAAW,GAAG,IAAI,GAAG,IAAI,CAAC,YAAY,GAAG,QAAQ;YACjF,OAAO,CAAC;QACZ,SAAS,IAAI,0BAA0B;YACnC,kEAAkE;YAClE,wBAAwB,GAAG,IAAI,CAAC,OAAO,GAAG,OAAO;YACjD,OAAO,CAAC;QACZ,SAAS,IAAI,0BAA0B;YACnC,4EAA4E;YAC5E,wBAAwB,CAAC;QAE7B,IAAI,IAAI,CAAC,gBAAgB,IAAI,EAAE,EAAE;YAC7B,IAAI,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE;gBAC1C,SAAS,IAAI,8BAA8B,GAAG,IAAI,CAAC,gBAAgB,GAAG,mFAAmF,CAAC;aAC7J;iBACI;gBACD,SAAS,IAAI,yDAAyD,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,eAAe,GAAG,IAAI,CAAC,gBAAgB,GAAG,sFAAsF,CAAC;aACjO;SACJ;aACI;YACD,SAAS,IAAI,qBAAqB,CAAC;SACtC;QACD,SAAS,IAAI,YAAY,CAAC;QAE1B,SAAS,IAAI,0BAA0B;YACnC,2EAA2E;YAC3E,wBAAwB,CAAC;QAC7B,IAAI,IAAI,CAAC,gBAAgB,CAAC,MAAM,GAAG,CAAC,EAAE;YAClC,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,UAAC,KAAa;gBACxC,SAAS,IAAI,2CAA2C,GAAG,KAAK,GAAG,yJAAyJ,CAAC;YACjO,CAAC,CAAC,CAAC;SACN;aACI;YACD,SAAS,IAAI,qBAAqB;SACrC;QACD,SAAS,IAAI,YAAY,CAAC;QAE1B,gCAAgC;QAChC,8CAA8C;QAC9C,uBAAuB;QACvB,2MAA2M;QAC3M,kBAAkB;QAClB,GAAG;QACH,oCAAoC;QACpC,8CAA8C;QAC9C,uBAAuB;QACvB,0IAA0I;QAC1I,kBAAkB;QAClB,GAAG;QAGH,SAAS,IAAI,UAAU,CAAC;QAExB,OAAO,SAAS,CAAC;IACrB,CAAC;IAED,8BAA8B;IAC9B,yCAAyC;IACzC,GAAG;IAEH,oCAAY,GAAZ;QACI,IAAI,WAAmB,CAAC;QACxB,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,EAAE,KAAK,EAAE,EAAE,+BAA+B;YAEtE,CAAC,CAAC,mBAAmB,GAAG,KAAK,CAAC,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC;YACzD,CAAC,CAAC,mBAAmB,GAAG,KAAK,CAAC,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;YAEvD,WAAW,GAAG,KAAK,CAAC;YACpB,IAAG,KAAK,IAAI,CAAC;gBAAE,WAAW,GAAG,EAAE,CAAC,CAAC,WAAW;iBACvC,IAAG,KAAK,IAAI,CAAC;gBAAE,WAAW,GAAG,EAAE,CAAC,CAAC,SAAS;YAC/C,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;SACxD;QACD,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QACjC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACrC,CAAC;IAED,2CAAmB,GAAnB,UAAoB,KAAa;QAE7B,QAAQ,KAAK,EAAE;YACX,KAAK,CAAC;gBAAE,CAAC,CAAC,qBAAqB,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;gBAAC,MAAM;YAC9D,KAAK,CAAC;gBAAE,CAAC,CAAC,qBAAqB,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;gBAAC,MAAM;YACxD,OAAO,CAAC,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,IAAI,CAAC,KAAK,GAAG,QAAQ,CAAC,CAAC;SAC5D;IACL,CAAC;IAED,oCAAY,GAAZ,UAAa,IAAY,EAAE,GAAW;QAElC,8BAA8B;QAE9B,IAAI,KAAK,GAAG,CAAC,CAAC,sBAAsB,CAAC,CAAC;QACtC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;QAE7C,KAAK,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QAEhD,uCAAuC;QAEvC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAExB,CAAC;IAED,sCAAc,GAAd;QAEI,MAAM,CAAC,IAAI,CAAC,uCAAuC,EAAE,QAAQ,CAAC,CAAC;IAEnE,CAAC;IAED,qCAAa,GAAb;QACI,IAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;QAEjC,mBAAmB;QACnB,IAAI,cAAc,GAAG,SAAS,CAAC,MAAM,CAAC,eAAK,IAAI,4CAAe,EAAC,KAAK,CAAC,qBAAqB,EAAE,CAAC,CAAC,oBAAoB,CAAC,CAAC,GAAG,EAAE,CAAC,EAA3E,CAA2E,CAAC,CAAC;QAE5H,aAAa;QACb,cAAc,GAAG,cAAc,CAAC,MAAM,CAAC,eAAK,IAAI,4CAAe,EAAC,KAAK,CAAC,aAAa,EAAE,CAAC,CAAC,oBAAoB,CAAC,CAAC,GAAG,EAAE,CAAC,EAAnE,CAAmE,CAAC,CAAC;QAErH,UAAU;QACV,cAAc,GAAG,cAAc,CAAC,MAAM,CAAC,eAAK,IAAI,4CAAe,EAAC,KAAK,CAAC,aAAa,EAAE,CAAC,CAAC,oBAAoB,CAAC,CAAC,GAAG,EAAE,CAAC,EAAnE,CAAmE,CAAC,CAAC;QAErH,kBAAkB;QAClB,cAAc,GAAG,cAAc,CAAC,MAAM,CAAC,eAAK,IAAI,4CAAe,EAAC,CAAC,KAAK,CAAC,oBAAoB,CAAC,EAAE,CAAC,CAAC,oBAAoB,CAAC,CAAC,GAAG,EAAE,CAAC,EAA5E,CAA4E,CAAC,CAAC;QAE9H,OAAO;QACP,cAAc,GAAG,cAAc,CAAC,MAAM,CAAC,eAAK,IAAI,4CAAe,EAAC,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,oBAAoB,CAAC,CAAC,GAAG,EAAE,CAAC,EAAlE,CAAkE,CAAC,CAAC;QAEpH,SAAS;QACT,cAAc,GAAG,cAAc,CAAC,MAAM,CAAC,eAAK,IAAI,4CAAe,EAAC,CAAC,KAAK,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,oBAAoB,CAAC,CAAC,GAAG,EAAE,CAAC,EAApE,CAAoE,CAAC,CAAC;QAEtH,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;IACrC,CAAC;IAED,mCAAW,GAAX,UAAY,cAA0B;QAClC,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;QACvB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,IAAI,EAAE,CAAC;QAC/C,IAAI,CAAC,mBAAmB,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;IACpD,CAAC;IACL,oBAAC;AAAD,CAAC;AAlfY,sCAAa;;;;;;;;;;;;;;;;;ACJ1B,mGAA0E;AAI1E;IAiCI;QAxBA,YAAO,GAAW,eAAe,CAAC;QAQlC,iBAAY,GAAW,EAAE,CAAC;QAc1B,oBAAe,GAAY,KAAK,CAAC;IAEjB,CAAC;IAEjB,wCAAU,GAAV;QACI,IAAI,IAAI,CAAC,OAAO,IAAI,SAAS;YAAE,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;QAEjD,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,SAAS,GAAG,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC;QACxD,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;YAAE,IAAI,CAAC,WAAW,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC;SAAE;QAC3E,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,GAAG,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC;QAErD,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC5C,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;QAClD,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;IACtD,CAAC;IAED,8DAAgC,GAAhC;QAEI,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;QACrB,IAAI,CAAC,eAAe,GAAG,EAAE,CAAC;QAE1B,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI,EAAE;YAAE,IAAI,CAAC,UAAU,IAAI,iCAAiC,CAAC;YAAC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC;SAAE;QAC9K,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,IAAI,IAAI,CAAC,WAAW,EAAE;YAAE,IAAI,CAAC,UAAU,IAAI,gCAAgC,CAAC;YAAC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC;SAAE;QAEjK,IAAI,IAAI,CAAC,aAAa,IAAI,IAAI,IAAI,IAAI,CAAC,eAAe,IAAI,IAAI,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,IAAI,IAAI,CAAC,cAAc,IAAI,IAAI,EAAE;YAAE,IAAI,CAAC,UAAU,IAAI,uBAAuB,CAAC;YAAC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;SAAE;QAE3N,IAAI,IAAI,CAAC,cAAc,IAAI,IAAI,IAAI,IAAI,CAAC,gBAAgB,IAAI,IAAI,EAAE;YAAE,IAAI,CAAC,UAAU,IAAI,wCAAwC,CAAC;YAAC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,qCAAqC,CAAC,CAAC;SAAE;QACpM,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI,IAAI,IAAI,CAAC,eAAe,EAAE;YAAE,IAAI,CAAC,UAAU,IAAI,uCAAuC,CAAC;YAAC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,oCAAoC,CAAC,CAAC;SAAE;QAEvL,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI,IAAI,IAAI,CAAC,cAAc,IAAI,IAAI,EAAE;YAAE,IAAI,CAAC,UAAU,IAAI,+BAA+B,CAAC;YAAC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;SAAE;QAC9K,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,IAAI,IAAI,CAAC,aAAa,EAAE;YAAE,IAAI,CAAC,UAAU,IAAI,8BAA8B,CAAC;YAAC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;SAAE;QAEjK,IAAI,IAAI,CAAC,aAAa,IAAI,IAAI,IAAI,IAAI,CAAC,eAAe,IAAI,IAAI,EAAE;YAAE,IAAI,CAAC,UAAU,IAAI,gCAAgC,CAAC;YAAC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC;SAAE;QAClL,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,IAAI,IAAI,CAAC,cAAc,EAAE;YAAE,IAAI,CAAC,UAAU,IAAI,+BAA+B,CAAC;YAAC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;SAAE;QAErK,IAAI,IAAI,CAAC,cAAc,IAAI,IAAI,IAAI,IAAI,CAAC,gBAAgB,IAAI,IAAI,EAAE;YAAE,IAAI,CAAC,UAAU,IAAI,6BAA6B,CAAC;YAAC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;SAAE;QAC9K,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI,IAAI,IAAI,CAAC,eAAe,EAAE;YAAE,IAAI,CAAC,UAAU,IAAI,4BAA4B,CAAC;YAAC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;SAAE;QAEjK,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI,IAAI,IAAI,CAAC,cAAc,IAAI,IAAI,EAAE;YAAE,IAAI,CAAC,UAAU,IAAI,4CAA4C,CAAC;YAAC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,yCAAyC,CAAC,CAAC;SAAE;QACxM,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,IAAI,IAAI,CAAC,aAAa,EAAE;YAAE,IAAI,CAAC,UAAU,IAAI,2CAA2C,CAAC;YAAC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,wCAAwC,CAAC,CAAC;SAAE;QAE3L,IAAI,IAAI,CAAC,cAAc,IAAI,IAAI,IAAI,IAAI,CAAC,gBAAgB,IAAI,IAAI,EAAE;YAAE,IAAI,CAAC,UAAU,IAAI,mCAAmC,CAAC;YAAC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,gCAAgC,CAAC,CAAC;SAAE;QAC1L,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI,IAAI,IAAI,CAAC,eAAe,EAAE;YAAE,IAAI,CAAC,UAAU,IAAI,kCAAkC,CAAC;YAAC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,+BAA+B,CAAC,CAAC;SAAE;QAE7K,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,IAAI,IAAI,CAAC,aAAa,IAAI,IAAI,EAAE;YAAE,IAAI,CAAC,UAAU,IAAI,sBAAsB,CAAC;YAAC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;SAAE;QAC1J,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,IAAI,IAAI,CAAC,YAAY,EAAE;YAAE,IAAI,CAAC,UAAU,IAAI,qBAAqB,CAAC;YAAC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;SAAE;QAE7I,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI,EAAE;YAAE,IAAI,CAAC,UAAU,IAAI,qCAAqC,CAAC;YAAC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,kCAAkC,CAAC,CAAC;SAAE;QACtL,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,IAAI,IAAI,CAAC,WAAW,EAAE;YAAE,IAAI,CAAC,UAAU,IAAI,oCAAoC,CAAC;YAAC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC;SAAE;QAEzK,IAAI,IAAI,CAAC,eAAe,IAAI,IAAI,IAAI,IAAI,CAAC,iBAAiB,IAAI,IAAI,EAAE;YAAE,IAAI,CAAC,UAAU,IAAI,qCAAqC,CAAC;YAAC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,kCAAkC,CAAC,CAAC;SAAE;QAChM,IAAI,IAAI,CAAC,aAAa,IAAI,IAAI,IAAI,IAAI,CAAC,gBAAgB,EAAE;YAAE,IAAI,CAAC,UAAU,IAAI,oCAAoC,CAAC;YAAC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC;SAAE;IACvL,CAAC;IAED,4DAA8B,GAA9B,UAA+B,SAAiB,EAAE,WAAmB,EAAE,UAAkB,EAAE,gBAAwB;QAE/G,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;QAErB,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,IAAI;YAAE,IAAI,CAAC,UAAU,IAAI,kBAAkB,CAAC;QACnE,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,IAAI;YAAE,IAAI,CAAC,UAAU,IAAI,oBAAoB,CAAC;QACvE,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,IAAI;YAAE,IAAI,CAAC,UAAU,IAAI,YAAY,CAAC;QAC9D,IAAI,IAAI,CAAC,gBAAgB,CAAC,IAAI,IAAI;YAAE,IAAI,CAAC,UAAU,IAAI,gBAAgB,CAAC;IAC5E,CAAC;IAED,2CAAa,GAAb,UAAc,WAAgB,EAAE,YAAiB,EAAE,SAAc,EAAE,SAAc,EAAE,MAAW,EAAE,SAAc,EAAE,cAAmB,EAAE,WAAgB,EAAE,WAAgB,EACvJ,MAAW,EAAE,QAAa,EAAE,gBAAqB,EAAE,QAAa,EAAE,WAAgB,EAAE,WAAgB;QAEhH,0DAA0D;;QAE1D,IAAI,CAAC,qCAAe,EAAC,WAAW,EAAE,IAAI,CAAC,YAAY,CAAC,EAAE;YAAE,OAAO,KAAK,CAAC;SAAE;QACvE,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE;YAAE,OAAO,KAAK,CAAC;SAAE;QACxD,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,qCAAe,EAAC,YAAY,EAAE,IAAI,CAAC,eAAe,CAAC,EAAE;YAAE,OAAO,KAAK,CAAC;SAAE;QACtG,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,qCAAe,EAAC,SAAS,EAAE,UAAI,CAAC,SAAS,0CAAE,eAAe,CAAC,EAAE;YAAE,OAAO,KAAK,CAAC;SAAE;QAC3G,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,qCAAe,EAAC,MAAM,EAAE,UAAI,CAAC,SAAS,0CAAE,kBAAkB,CAAC,EAAE;YAAE,OAAO,KAAK,CAAC;SAAE;QACxG,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,qCAAe,EAAC,SAAS,EAAE,UAAI,CAAC,SAAS,0CAAE,gBAAgB,CAAC,EAAE;YAAE,OAAO,KAAK,CAAC;SAAE;QAC5G,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,qCAAe,EAAC,cAAc,EAAE,UAAI,CAAC,SAAS,0CAAE,cAAc,CAAC,EAAE;YAAE,OAAO,KAAK,CAAC;SAAE;QACpH,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,qCAAe,EAAC,WAAW,EAAE,UAAI,CAAC,SAAS,0CAAE,UAAU,CAAC,EAAE;YAAE,OAAO,KAAK,CAAC;SAAE;QAC1G,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,qCAAe,EAAC,WAAW,EAAE,UAAI,CAAC,SAAS,0CAAE,WAAW,CAAC,EAAE;YAAE,OAAO,KAAK,CAAC;SAAE;QAC3G,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,qCAAe,EAAC,MAAM,EAAE,UAAI,CAAC,SAAS,0CAAE,cAAc,CAAC,EAAE;YAAE,OAAO,KAAK,CAAC;SAAE;QACpG,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,qCAAe,EAAC,QAAQ,EAAE,UAAI,CAAC,SAAS,0CAAE,oBAAoB,CAAC,EAAE;YAAE,OAAO,KAAK,CAAC;SAAE;QAC9G,IAAI,gBAAgB,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,qCAAe,EAAC,gBAAgB,EAAE,UAAI,CAAC,SAAS,0CAAE,2BAA2B,CAAC,EAAE;YAAE,OAAO,KAAK,CAAC;SAAE;QACrI,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,qCAAe,EAAC,QAAQ,EAAE,UAAI,CAAC,SAAS,0CAAE,gBAAgB,CAAC,EAAE;YAAE,OAAO,KAAK,CAAC;SAAE;QAC1G,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,qCAAe,EAAC,WAAW,EAAE,UAAI,CAAC,SAAS,0CAAE,cAAc,CAAC,EAAE;YAAE,OAAO,KAAK,CAAC;SAAE;QAC9G,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,qCAAe,EAAC,WAAW,EAAE,UAAI,CAAC,SAAS,0CAAE,aAAa,CAAC,EAAE;YAAE,OAAO,KAAK,CAAC;SAAE;QAE7G,OAAO,IAAI,CAAC;IAChB,CAAC;IACL,0BAAC;AAAD,CAAC;AAtHY,kDAAmB;;;;;;;;;;;;;;;;ACLhC,+EAAiD;AACjD,iFAA0D;AAC1D,mHAA4G;AAC5G,mGAAwE;AACxE,yGAA4E;AAG5E;IAMI,uBAAY,QAAa,EAAE,iBAAsB,EAAE,kBAAuB;QAA1E,iBA8BC;QA7BG,CAAC,CAAC;YAEE,KAAI,CAAC,KAAK,GAAG,oCAAY,EAAC,uCAAmB,EAAyB,QAAQ,CAAC,CAAC;YAEhF,IAAI,aAAa,GAA0B,oCAAY,EAAC,uCAAmB,EAAyB,iBAAiB,CAAC,CAAC;YACvH,aAAa,CAAC,GAAG,CAAC,UAAC,KAA0B;gBACzC,IAAI,IAAI,GAAwB,KAAI,CAAC,KAAK,CAAC,IAAI,CAAC,UAAC,IAAyB,IAAK,WAAI,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,EAAzB,CAAyB,CAAC,CAAC;gBAC1G,IAAI,IAAI,IAAI,SAAS,EAAE;oBACnB,IAAI,CAAC,SAAS,GAAG,oCAAY,EAAC,kCAAc,EAAkB,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC;oBAChG,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,eAAe,EAAE,CAAC;oBACrD,IAAI,IAAI,CAAC,SAAS,IAAI,SAAS,EAAE;wBAAE,IAAI,CAAC,SAAS,CAAC,iBAAiB,EAAE,CAAC;qBAAE;oBACxE,oBAAoB;iBACvB;YACL,CAAC,CAAC,CAAC;YAEH,KAAI,CAAC,KAAK,GAAG,KAAI,CAAC,KAAK,CAAC,GAAG,CAAC,UAAC,IAAyB;gBAClD,IAAI,CAAC,UAAU,EAAE,CAAC;gBAClB,IAAI,CAAC,gCAAgC,EAAE,CAAC;gBACxC,OAAO,IAAI,CAAC;YAChB,CAAC,CAAC;YAEF,IAAI,cAAc,GAAoB,oCAAY,EAAC,iCAAa,EAAmB,kBAAkB,CAAC,CAAC;YACvG,KAAI,CAAC,iBAAiB,CAAC,cAAc,CAAC,CAAC;YAEvC,KAAI,CAAC,eAAe,EAAE,CAAC;YACvB,0BAA0B;YAE1B,KAAI,CAAC,eAAe,EAAE,CAAC;QAC3B,CAAC,CAAC,CAAC;IACP,CAAC;IAED,yCAAiB,GAAjB,UAAkB,cAA+B;QAE7C,IAAI,MAAM,GAAa,EAAE,CAAC;QAC1B,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,UAAC,IAAyB,IAAO,MAAM,CAAC,IAAI,OAAX,MAAM,EAAS,2BAAK,EAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QACrG,IAAI,CAAC,kBAAkB,CAAC,6BAA6B,EAAE,4BAAM,EAAC,MAAM,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC;QACjF,IAAI,CAAC,kBAAkB,CAAC,yBAAyB,EAAE,4BAAM,EAAC,CAAC,oBAAoB,EAAE,8BAA8B,EAAE,6BAA6B,EAAE,qCAAqC,EAAE,oCAAoC,EAAE,6BAA6B,EAAE,4BAA4B,EAAE,gCAAgC,EAAE,+BAA+B,EAAE,4BAA4B,EAAE,2BAA2B,EAAE,0BAA0B,EAAE,yBAAyB,EAAE,yCAAyC,EAAE,wCAAwC,EAAE,kCAAkC,EAAE,iCAAiC,EAAE,kCAAkC,EAAE,iCAAiC,EAAE,mBAAmB,EAAE,kBAAkB,CAAC,EAAE,KAAK,CAAC,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;QAEtvB,IAAI,CAAC,kBAAkB,CAAC,mBAAmB,EAAE,4BAAM,EAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,UAAC,IAAyB,IAAK,WAAI,CAAC,OAAO,EAAZ,CAAY,CAAC,EAAE,IAAI,EAAE,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;QAE3I,IAAI,CAAC,kBAAkB,CAAC,+BAA+B,EAAE,SAAS,EAAE,cAAc,CAAC,MAAM,CAAC,UAAC,IAAmB,IAAK,WAAI,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAA5B,CAA4B,CAAC,EAAE,KAAK,CAAC,CAAC;QACzJ,IAAI,CAAC,kBAAkB,CAAC,4BAA4B,EAAE,SAAS,EAAE,cAAc,CAAC,MAAM,CAAC,UAAC,IAAmB,IAAK,WAAI,CAAC,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,EAAhC,CAAgC,CAAC,EAAE,KAAK,CAAC,CAAC;QAC1J,IAAI,CAAC,kBAAkB,CAAC,8BAA8B,EAAE,SAAS,EAAE,cAAc,CAAC,MAAM,CAAC,UAAC,IAAmB,IAAK,WAAI,CAAC,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAA9B,CAA8B,CAAC,EAAE,KAAK,CAAC,CAAC;QAC1J,IAAI,CAAC,kBAAkB,CAAC,oCAAoC,EAAE,SAAS,EAAE,cAAc,CAAC,MAAM,CAAC,UAAC,IAAmB,IAAK,WAAI,CAAC,EAAE,CAAC,UAAU,CAAC,eAAe,CAAC,EAAnC,CAAmC,CAAC,EAAE,KAAK,CAAC,CAAC;QACrK,IAAI,CAAC,kBAAkB,CAAC,iCAAiC,EAAE,SAAS,EAAE,cAAc,CAAC,MAAM,CAAC,UAAC,IAAmB,IAAK,WAAI,CAAC,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC,EAA/B,CAA+B,CAAC,EAAE,KAAK,CAAC,CAAC;QAC9J,IAAI,CAAC,kBAAkB,CAAC,iCAAiC,EAAE,SAAS,EAAE,cAAc,CAAC,MAAM,CAAC,UAAC,IAAmB,IAAK,WAAI,CAAC,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,EAAjC,CAAiC,CAAC,EAAE,KAAK,CAAC,CAAC;QAChK,IAAI,CAAC,kBAAkB,CAAC,4BAA4B,EAAE,SAAS,EAAE,cAAc,CAAC,MAAM,CAAC,UAAC,IAAmB,IAAK,WAAI,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAA5B,CAA4B,CAAC,EAAE,KAAK,CAAC,CAAC;QACtJ,IAAI,CAAC,kBAAkB,CAAC,8BAA8B,EAAE,SAAS,EAAE,cAAc,CAAC,MAAM,CAAC,UAAC,IAAmB,IAAK,WAAI,CAAC,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAA9B,CAA8B,CAAC,EAAE,KAAK,CAAC,CAAC;QAC1J,IAAI,CAAC,kBAAkB,CAAC,sCAAsC,EAAE,SAAS,EAAE,cAAc,CAAC,MAAM,CAAC,UAAC,IAAmB,IAAK,WAAI,CAAC,EAAE,CAAC,UAAU,CAAC,cAAc,CAAC,EAAlC,CAAkC,CAAC,EAAE,KAAK,CAAC,CAAC;QACtK,IAAI,CAAC,kBAAkB,CAAC,2BAA2B,EAAE,SAAS,EAAE,cAAc,CAAC,MAAM,CAAC,UAAC,IAAmB,IAAK,WAAI,CAAC,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAA9B,CAA8B,CAAC,EAAE,KAAK,CAAC,CAAC;QACvJ,IAAI,CAAC,kBAAkB,CAAC,iCAAiC,EAAE,SAAS,EAAE,cAAc,CAAC,MAAM,CAAC,UAAC,IAAmB,IAAK,WAAI,CAAC,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAA7B,CAA6B,CAAC,EAAE,KAAK,CAAC,CAAC;QAC5J,IAAI,CAAC,kBAAkB,CAAC,iCAAiC,EAAE,SAAS,EAAE,cAAc,CAAC,MAAM,CAAC,UAAC,IAAmB,IAAK,WAAI,CAAC,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,EAAhC,CAAgC,CAAC,EAAE,KAAK,CAAC,CAAC;IAEnK,CAAC;IAED,0CAAkB,GAAlB,UAAmB,QAAgB,EAAE,MAAgB,EAAE,cAA2C,EAAE,QAAwB;QAA5H,iBA+BC;QA/BsD,2DAA2C;QAAE,0CAAwB;QACxH,CAAC,CAAC,QAAQ,CAAC,CAAC,YAAY,CAAC;YACrB,UAAU,EAAE,KAAK;YACjB,kBAAkB,EAAE,OAAO;YAE3B,iBAAiB,EAAE,UAAC,WAAW,EAAE,QAAQ;gBACrC,IAAI,WAAW,IAAI,QAAQ,EAAE;oBACzB,OAAO,KAAK,CAAC;iBAChB;qBACI;oBACD,OAAO,WAAW,GAAG,WAAW,CAAC;iBACpC;YACL,CAAC;SACJ,CAAC,CAAC;QAEH,IAAI,cAAc,IAAI,SAAS,EAAE;YAC7B,MAAM,CAAC,OAAO,CAAC,UAAC,OAAY;gBACxB,CAAC,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC;YACtE,CAAC,CAAC,CAAC;SACN;aACI;YACD,cAAc,CAAC,OAAO,CAAC,UAAC,OAAsB;gBAC1C,CAAC,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC,EAAE,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC;YACnF,CAAC,CAAC,CAAC;SACN;QAED,CAAC,CAAC,QAAQ,CAAC,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;QAEpC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,mBAAmB,EAAE,UAAC,CAAC,EAAE,YAAY,EAAE,UAAU,EAAE,aAAa;YAC3E,KAAI,CAAC,mBAAmB,EAAE,CAAC;QAC/B,CAAC,CAAC,CAAC;IACP,CAAC;IAED,uCAAe,GAAf;QACI,CAAC,CAAC,sBAAsB,CAAC,CAAC,EAAE,CAAC,cAAc,EAAE,UAAC,CAAC;YAC3C,IAAI,CAAC,CAAC,aAAa,CAAC,EAAE,IAAI,gBAAgB,EAAE;gBACxC,CAAC,6BAA6B,EAAE,yBAAyB,CAAC,CAAC,OAAO,CAAC,UAAC,EAAU,IAAK,QAAC,CAAC,EAAE,CAAC,CAAC,YAAY,CAAC,SAAS,CAAC,EAA7B,CAA6B,CAAC,CAAC;aACrH;iBACI,IAAI,CAAC,CAAC,aAAa,CAAC,EAAE,IAAI,uBAAuB,EAAE;gBACpD,CAAC,+BAA+B,EAAE,4BAA4B,EAAE,8BAA8B,EAAE,oCAAoC,EAAE,iCAAiC,CAAC,CAAC,OAAO,CAAC,UAAC,EAAU,IAAK,QAAC,CAAC,EAAE,CAAC,CAAC,YAAY,CAAC,SAAS,CAAC,EAA7B,CAA6B,CAAC,CAAC;aACnO;iBACI,IAAI,CAAC,CAAC,aAAa,CAAC,EAAE,IAAI,wBAAwB,EAAE;gBACrD,CAAC,iCAAiC,EAAE,4BAA4B,EAAE,8BAA8B,EAAE,sCAAsC,EAAE,2BAA2B,EAAE,iCAAiC,EAAE,iCAAiC,CAAC,CAAC,OAAO,CAAC,UAAC,EAAU,IAAK,QAAC,CAAC,EAAE,CAAC,CAAC,YAAY,CAAC,SAAS,CAAC,EAA7B,CAA6B,CAAC,CAAC;aACvS;QACL,CAAC,CAAC,CAAC;IACP,CAAC;IAED,uCAAe,GAAf;QAAA,iBA4GC;QA3GG,IAAI,KAAK,GAAG,CAAC,CAAC,kBAAkB,CAAC,CAAC,SAAS,CAAC;YACxC,uFAAuF;YACvF,KAAK,EAAE,wDAAwD;YAC/D,SAAS,EAAE,IAAI;YACf,IAAI,EAAE,KAAK;YACX,MAAM,EAAE,KAAK;YACb,MAAM,EAAE,IAAI;YACZ,OAAO,EAAE,KAAK;YACd,aAAa,EAAE,IAAI;YACnB,OAAO,EAAE;gBACL,EAAE,SAAS,EAAE,iBAAiB,EAAE,SAAS,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,cAAc,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE;gBACjG,EAAE,IAAI,EAAE,aAAa,EAAE,SAAS,EAAE,gBAAgB,EAAE;gBACpD,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,WAAW,EAAE,KAAK,EAAE,KAAK,EAAE;gBACzD,EAAE,IAAI,EAAE,aAAa,EAAE,SAAS,EAAE,WAAW,EAAE,KAAK,EAAE,KAAK,EAAE;gBAC7D,EAAE,IAAI,EAAE,cAAc,EAAE,SAAS,EAAE,WAAW,EAAE,KAAK,EAAE,KAAK,EAAE;gBAC9D,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,KAAK,EAAE,KAAK,EAAE;gBACvD,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,KAAK,EAAE;gBACtC,EAAE,IAAI,EAAE,cAAc,EAAE,OAAO,EAAE,KAAK,EAAE;aAC3C;YACD,UAAU,EAAE,CAAC;oBACT,OAAO,EAAE,CAAC;oBACV,IAAI,EAAE,aAAa;oBACnB,MAAM,EAAE,UAAU,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;wBACpC,IAAI,IAAI,IAAI,MAAM,EAAE;4BAChB,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC;yBACxB;wBACD,OAAO,IAAI,CAAC;oBAChB,CAAC;iBACJ,CAAC;YACF,OAAO,EAAE;gBACL;oBACI,MAAM,EAAE,KAAK;oBACb,IAAI,EAAE,sCAAsC;oBAC5C,SAAS,EAAE,KAAK;oBAChB,OAAO,EAAE,OAAO;oBAChB,kBAAkB;oBAClB,2BAA2B;oBAC3B,GAAG;iBACN;gBACD;oBACI,IAAI,EAAE,iCAAiC;oBACvC,SAAS,EAAE,YAAY;oBACvB,MAAM,EAAE,UAAC,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM;wBACxB,sCAAsC;wBACtC,4DAA4D;wBAE5D,+CAA+C;wBAC/C,qDAAqD;wBACrD,kCAAkC;wBAClC,gBAAgB;wBAChB,+BAA+B;wBAC/B,kCAAkC;wBAElC,SAAS,CAAC,SAAS,CAAC,SAAS,CAAC,KAAI,CAAC,iBAAiB,CAAC,CAAC,IAAI,CACtD;4BACI,CAAC,CAAC,wBAAwB,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;4BAC1C,CAAC,CAAC,mBAAmB,CAAC,CAAC,IAAI,CAAC,KAAI,CAAC,iBAAiB,CAAC,CAAC;wBACxD,CAAC,CAAC,CAAC;oBAGX,CAAC;iBACJ;aACJ;YACD,UAAU,EAAE,UAAC,GAAG,EAAE,IAAyB,EAAE,KAAK;gBAC9C,IAAI,IAAI,CAAC,SAAS,IAAI,SAAS,EAAE;oBAC7B,IAAI,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;oBACjC,EAAE,CAAC,WAAW,CAAC,iBAAiB,CAAC,CAAC;iBACrC;YACL,CAAC;YACD,IAAI,EAAE,IAAI,CAAC,KAAK;SAEnB,CAAC,CAAC;QACH,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;QAEvB,CAAC,CAAC,eAAe,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QAEnC,CAAC,CAAC,iBAAiB,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;QAC7C,CAAC,CAAC,aAAa,CAAC,CAAC,QAAQ,CAAC,mEAAmE,CAAC,CAAC;QAC/F,wIAAwI;QAExI,CAAC,CAAC,kBAAkB,CAAC,CAAC,EAAE,CAAC,WAAW,EAAE,UAAC,CAAC,EAAE,QAAQ;YAC9C,KAAI,CAAC,eAAe,CAAC,KAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;YACxE,KAAI,CAAC,mBAAmB,CAAC,KAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;QACjF,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACjC,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAE5C,6BAA6B;QAC7B,CAAC,CAAC,wBAAwB,CAAC,CAAC,EAAE,CAAC,OAAO,EAAE,IAAI,EAAE,UAAC,KAAK;YAChD,gDAAgD;YAChD,IAAI,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;YAChC,IAAI,GAAG,GAAG,KAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YACjC,IAAI,IAAI,GAAwB,GAAG,CAAC,IAAI,EAAE,CAAC;YAE3C,IAAI,IAAI,CAAC,SAAS,IAAI,SAAS,EAAE;gBAC7B,IAAI,GAAG,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE;oBACrB,sCAAsC;oBACtC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;oBACjB,EAAE,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;iBAC3B;qBACI;oBACD,gBAAgB;oBAChB,GAAG,CAAC,KAAK,CAAC,KAAI,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;oBACnD,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;iBACxB;aACJ;QACL,CAAC,CAAC,CAAC;IACP,CAAC;IAED,mCAAW,GAAX,UAAY,aAAoC;QAE5C,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;QACvB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,IAAI,EAAE,CAAC;QAC9C,IAAI,CAAC,mBAAmB,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;QAC/C,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,CAAC;IACxC,CAAC;IAED,2CAAmB,GAAnB;QAAA,iBAuBC;QArBG,IAAI,aAAa,GAA0B,EAAE,CAAC;QAE9C,IAAI,WAAoB,CAAC;QACzB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,UAAC,IAAyB;YAEzC,WAAW,GAAG,IAAI,CAAC,CAAC,wBAAwB;YAE5C,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,KAAI,CAAC,yBAAyB,CAAC,6BAA6B,CAAC,EAAE,KAAI,CAAC,yBAAyB,CAAC,yBAAyB,CAAC,EAAE,KAAI,CAAC,yBAAyB,CAAC,mBAAmB,CAAC,EACjM,KAAI,CAAC,yBAAyB,CAAC,+BAA+B,CAAC,EAAE,KAAI,CAAC,yBAAyB,CAAC,4BAA4B,CAAC,EAC7H,KAAI,CAAC,yBAAyB,CAAC,8BAA8B,CAAC,EAAE,KAAI,CAAC,yBAAyB,CAAC,oCAAoC,CAAC,EACpI,KAAI,CAAC,yBAAyB,CAAC,iCAAiC,CAAC,EAAE,KAAI,CAAC,yBAAyB,CAAC,iCAAiC,CAAC,EACpI,KAAI,CAAC,yBAAyB,CAAC,4BAA4B,CAAC,EAAE,KAAI,CAAC,yBAAyB,CAAC,8BAA8B,CAAC,EAC5H,KAAI,CAAC,yBAAyB,CAAC,sCAAsC,CAAC,EAAE,KAAI,CAAC,yBAAyB,CAAC,2BAA2B,CAAC,EACnI,KAAI,CAAC,yBAAyB,CAAC,iCAAiC,CAAC,EAAE,KAAI,CAAC,yBAAyB,CAAC,iCAAiC,CAAC,CAAC,EAAE;gBACvI,WAAW,GAAG,KAAK,CAAC;aACvB;YAED,IAAI,WAAW,EAAE;gBAAE,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;aAAE;QAClD,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC;IACpC,CAAC;IAED,iDAAyB,GAAzB,UAA0B,QAAgB;QACtC,yCAAyC;QACzC,OAAO,CAAC,CAAC,QAAQ,CAAC,CAAC,GAAG,EAAE,CAAC;IAC7B,CAAC;IAED,2CAAmB,GAAnB,UAAoB,KAAa;QAE7B,QAAQ,KAAK,EAAE;YACX,KAAK,CAAC;gBAAE,CAAC,CAAC,qBAAqB,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;gBAAC,MAAM;YAC7D,KAAK,CAAC;gBAAE,CAAC,CAAC,qBAAqB,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;gBAAC,MAAM;YAC/D,OAAO,CAAC,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,IAAI,CAAC,KAAK,GAAG,eAAe,CAAC,CAAC;SACnE;IACL,CAAC;IAED,uCAAe,GAAf,UAAgB,aAAoC;QAChD,IAAI,CAAC,iBAAiB,GAAG,aAAa,CAAC,GAAG,CAAC,UAAC,IAAyB,IAAK,WAAI,CAAC,KAAK,EAAV,CAAU,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACjG,sCAAsC;IAC1C,CAAC;IAED,qCAAa,GAAb;QACI,CAAC,CAAC,uBAAuB,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAC7C,CAAC;IAED,uCAAe,GAAf,UAAgB,IAAyB;QACrC,iDAAiD;QACjD,IAAI,SAAS,GAAW,iGAAiG,CAAC;QAE1H,IAAI,KAAK,GAAW,IAAI,CAAC,SAAS,CAAC,uBAAuB,EAAE,CAAC;QAC7D,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;YAClB,SAAS,IAAI,0BAA0B;gBACnC,wEAAwE;gBACxE,wBAAwB,GAAG,KAAK,GAAG,OAAO;gBAC1C,OAAO,CAAC;SACf;QAED,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,2BAA2B,EAAE,CAAC;QACrD,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;YAClB,SAAS,IAAI,0BAA0B;gBACnC,mFAAmF;gBACnF,wBAAwB,GAAG,KAAK,GAAG,OAAO;gBAC1C,OAAO,CAAC;SACf;QAED,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,uBAAuB,EAAE,CAAC;QACjD,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;YAClB,SAAS,IAAI,0BAA0B;gBACnC,iFAAiF;gBACjF,wBAAwB,GAAG,KAAK,GAAG,OAAO;gBAC1C,OAAO,CAAC;SACf;QAED,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,uBAAuB,EAAE,CAAC;QACjD,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;YAClB,SAAS,IAAI,0BAA0B;gBACnC,+EAA+E;gBAC/E,wBAAwB,GAAG,KAAK,GAAG,OAAO;gBAC1C,OAAO,CAAC;SACf;QAED,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,mBAAmB,EAAE,CAAC;QAC7C,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;YAClB,SAAS,IAAI,0BAA0B;gBACnC,iGAAiG;gBACjG,wBAAwB,GAAG,KAAK,GAAG,OAAO;gBAC1C,OAAO,CAAC;SACf;QAED,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,oBAAoB,EAAE,CAAC;QAC9C,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;YAClB,SAAS,IAAI,0BAA0B;gBACnC,0EAA0E;gBAC1E,wBAAwB,GAAG,KAAK,GAAG,OAAO;gBAC1C,OAAO,CAAC;SACf;QAED,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,yBAAyB,EAAE,CAAC;QACnD,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;YAClB,SAAS,IAAI,0BAA0B;gBACnC,iFAAiF;gBACjF,wBAAwB,GAAG,KAAK,GAAG,OAAO;gBAC1C,OAAO,CAAC;SACf;QAED,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,uBAAuB,EAAE,CAAC;QACjD,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;YAClB,SAAS,IAAI,0BAA0B;gBACnC,2FAA2F;gBAC3F,wBAAwB,GAAG,KAAK,GAAG,OAAO;gBAC1C,OAAO,CAAC;SACf;QAED,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,sBAAsB,EAAE,CAAC;QAChD,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;YAClB,SAAS,IAAI,0BAA0B;gBACnC,8EAA8E;gBAC9E,wBAAwB,GAAG,KAAK,GAAG,OAAO;gBAC1C,OAAO,CAAC;SACf;QAED,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,uBAAuB,EAAE,CAAC;QACjD,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;YAClB,SAAS,IAAI,0BAA0B;gBACnC,uFAAuF;gBACvF,wBAAwB,GAAG,KAAK,GAAG,OAAO;gBAC1C,OAAO,CAAC;SACf;QAED,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,6BAA6B,EAAE,CAAC;QACvD,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;YAClB,SAAS,IAAI,0BAA0B;gBACnC,kGAAkG;gBAClG,wBAAwB,GAAG,KAAK,GAAG,OAAO;gBAC1C,OAAO,CAAC;SACf;QAED,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,oCAAoC,EAAE,CAAC;QAC9D,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;YAClB,SAAS,IAAI,0BAA0B;gBACnC,yGAAyG;gBACzG,wBAAwB,GAAG,KAAK,GAAG,OAAO;gBAC1C,OAAO,CAAC;SACf;QAED,IAAI,IAAI,CAAC,SAAS,CAAC,cAAc,IAAI,SAAS,EAAE;YAC5C,SAAS,IAAI,0BAA0B;gBACnC,gEAAgE;gBAChE,wBAAwB,GAAG,IAAI,CAAC,SAAS,CAAC,cAAc,GAAG,OAAO;gBAClE,OAAO,CAAC;SACf;QAED,SAAS,IAAI,UAAU,CAAC;QAExB,OAAO,SAAS,CAAC;IACrB,CAAC;IAED,oCAAY,GAAZ;QAEI,CAAC,CAAC,6BAA6B,CAAC,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC;QAC3D,CAAC,CAAC,6BAA6B,CAAC,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;QAEzD,IAAI,mBAAmB,GAAa,CAAC,yBAAyB,EAAE,+BAA+B,EAAE,4BAA4B,EAAE,8BAA8B,EAAE,oCAAoC,EAAE,iCAAiC,EAAE,iCAAiC,EAAE,4BAA4B,EAAE,8BAA8B,EAAE,sCAAsC,EAAE,2BAA2B,EAAE,iCAAiC,EAAE,iCAAiC,CAAC,CAAC;QACpd,mBAAmB,CAAC,OAAO,CAAC,UAAC,UAAkB;YAC3C,CAAC,CAAC,UAAU,CAAC,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC;YAC1C,CAAC,CAAC,UAAU,CAAC,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;QAC1C,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QAEjC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACjC,CAAC;IAEL,oBAAC;AAAD,CAAC;AAnZY,sCAAa;;;;;;;;;;;;;ACP1B,uC;;;;;;;;;;;;;;;ACAA,2EAA8C;AAC9C,+EAAiD;AAGjD;IAKI,oBAAY,IAAS;QAArB,iBAeC;QAdG,CAAC,CAAC;YAEE,KAAI,CAAC,MAAM,GAAG,oCAAY,EAAC,2BAAU,EAAgB,IAAI,CAAC,CAAC;YAC3D,KAAI,CAAC,MAAM,CAAC,IAAI,CAAC,UAAC,CAAa,EAAE,CAAa,IAAK,QAAC,CAAC,SAAS,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAlC,CAAkC,CAAC,CAAC;YACvF,KAAI,CAAC,MAAM,CAAC,GAAG,CAAC,UAAC,IAAgB;gBAC7B,IAAI,CAAC,UAAU,EAAE,CAAC;gBAClB,OAAO,IAAI,CAAC;YAChB,CAAC,CAAC,CAAC;YAEH,2BAA2B;YAE3B,KAAI,CAAC,eAAe,EAAE,CAAC;YACvB,KAAI,CAAC,mBAAmB,CAAC,KAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACjD,CAAC,CAAC,CAAC;IACP,CAAC;IAED,oCAAe,GAAf;QAAA,iBA6DC;QA5DG,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC,eAAe,CAAC,CAAC,SAAS,CAAC;YAC1C,oDAAoD;YACpD,KAAK,EAAE,yCAAyC;YAChD,SAAS,EAAE,KAAK;YAChB,IAAI,EAAE,KAAK;YACX,MAAM,EAAE,KAAK;YACb,MAAM,EAAE,IAAI;YACZ,OAAO,EAAE,KAAK;YACd,kBAAkB;YAClB,aAAa,EAAE,IAAI;YACnB,QAAQ,EACR;gBACI,MAAM,EAAE,QAAQ;gBAChB,OAAO,EAAE;oBACL,SAAS,EAAE,wBAAwB;oBACnC,QAAQ,EAAE,sDAAsD;iBACnE;aACJ;YACD,OAAO,EAAE;gBACL,EAAE,SAAS,EAAE,iBAAiB,EAAE,SAAS,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,cAAc,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE;gBACjG,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,4BAA4B,EAAE;gBAC1D,EAAE,IAAI,EAAE,WAAW,EAAE,SAAS,EAAE,uBAAuB,EAAE,KAAK,EAAE,KAAK,EAAE;gBACvE,EAAE,IAAI,EAAE,WAAW,EAAE,SAAS,EAAE,uBAAuB,EAAE,KAAK,EAAE,IAAI,EAAE;gBACtE,EAAE,IAAI,EAAE,UAAU,EAAE,SAAS,EAAE,uBAAuB,EAAE,KAAK,EAAE,IAAI,EAAE;gBACrE,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,uBAAuB,EAAE,KAAK,EAAE,KAAK,EAAE;gBACrE,EAAE,IAAI,EAAE,mBAAmB,EAAE,SAAS,EAAE,uBAAuB,EAAE,KAAK,EAAE,IAAI,EAAE;gBAC9E,EAAE,IAAI,EAAE,eAAe,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,GAAG;aACjD;YACD,OAAO,EAAE,EAAE;YACX,IAAI,EAAE,IAAI,CAAC,MAAM;YACjB,YAAY,EAAE,UAAC,QAAQ,EAAE,IAAI;gBACzB,CAAC,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC,kEAAkE,CAAC,CAAC;YAChG,CAAC;SACJ,CAAC,CAAC;QAEH,+BAA+B;QAC/B,CAAC,CAAC,qBAAqB,CAAC,CAAC,EAAE,CAAC,OAAO,EAAE,IAAI,EAAE,UAAC,KAAK;YAC7C,gDAAgD;YAChD,IAAI,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;YAChC,IAAI,GAAG,GAAG,KAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAEjC,IAAI,GAAG,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE;gBACrB,sCAAsC;gBACtC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;gBACjB,EAAE,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;aAC3B;iBACI;gBACD,IAAI,GAAG,CAAC,IAAI,EAAE,IAAI,SAAS,EAAE;oBACzB,gBAAgB;oBAChB,GAAG,CAAC,KAAK,CAAC,KAAI,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;oBACnD,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;iBACxB;aACJ;QACL,CAAC,CAAC,CAAC;QAEH,CAAC,CAAC,eAAe,CAAC,CAAC,EAAE,CAAC,WAAW,EAAE,UAAC,CAAC,EAAE,QAAQ;YAC3C,KAAI,CAAC,mBAAmB,CAAC,KAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;QACjF,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,iBAAiB,EAAE,CAAC;IAC7B,CAAC;IAED,sCAAiB,GAAjB;QAAA,iBAoEC;gCAlEY,KAAK;YAEV,IAAI,YAAY,GAAa,EAAE,CAAC;YAChC,IAAI,SAAS,GAAW,EAAE,CAAC;YAE3B,IAAI,WAAW,GAAW,KAAK,CAAC;YAChC,IAAI,mBAAmB,GAAW,KAAK,CAAC;YAExC,IAAI,KAAK,IAAI,CAAC;gBAAE,WAAW,GAAG,CAAC,CAAC;YAEhC,OAAK,SAAS,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC,IAAI,EAAE,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,UAAC,IAAY;gBACxE,IAAI,KAAK,GAAa,EAAE,CAAC;gBACzB,IAAI,SAAS,IAAI,EAAE,EAAE;oBAAE,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;iBAAE;qBAClD;oBAAE,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;iBAAE;gBAEzB,KAAK,CAAC,GAAG,CAAC,UAAC,IAAY;oBACnB,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;oBACnB,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;wBACjD,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;qBAC3B;gBACL,CAAC,CAAC,CAAC;YACP,CAAC,CAAC,CAAC;YAEH,YAAY,GAAG,YAAY,CAAC,IAAI,CAAC,UAAC,CAAS,EAAE,CAAS;gBAClD,OAAO,CAAC,CAAC,WAAW,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;YAC1D,CAAC,CAAC,CAAC;YAEH,IAAI,QAAQ,GAAW,mBAAmB,GAAG,KAAK,CAAC;YAEnD,CAAC,CAAC,QAAQ,CAAC,CAAC,YAAY,CAAC;gBACrB,UAAU,EAAE,KAAK;gBACjB,kBAAkB,EAAE,OAAO;gBAE3B,iBAAiB,EAAE,UAAC,WAAW,EAAE,QAAQ;oBACrC,IAAI,WAAW,IAAI,QAAQ,EAAE;wBACzB,OAAO,KAAK,CAAC;qBAChB;yBACI;wBACD,OAAO,WAAW,GAAG,WAAW,CAAC;qBACpC;gBACL,CAAC;aACJ,CAAC,CAAC;YAEH,YAAY,CAAC,OAAO,CAAC,UAAC,OAAY;gBAC9B,CAAC,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC;YAClE,CAAC,CAAC,CAAC;YACH,CAAC,CAAC,QAAQ,CAAC,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;YAGpC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,mBAAmB,EAAE,UAAC,CAAC,EAAE,YAAY,EAAE,UAAU,EAAE,aAAa;gBAC3E,IAAI,MAAM,GAAuB,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;gBACrD,8CAA8C;gBAE9C,IAAI,MAAM,GAAW,EAAE,CAAC;gBACxB,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;oBACnB,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,MAAM,CAAC;iBACvD;qBACI;oBAAE,MAAM,GAAG,4BAA4B,CAAC;iBAAE;gBAE/C,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBAExD,KAAI,CAAC,SAAS,CAAC,MAAM,CAAC,WAAW,CAAC;qBAC7B,MAAM,CAAC,MAAM,EAAE,IAAI,EAAE,KAAK,CAAC;qBAC3B,IAAI,EAAE,CAAC;YAChB,CAAC,CAAC,CAAC;;;QAhEP,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,EAAE,KAAK;oBAA9B,KAAK;SAiEb;IACL,CAAC;IAGD,oCAAe,GAAf,UAAgB,IAAgB;QAE5B,IAAI,IAAI,GAAW,sCAAsC,GAAG,IAAI,CAAC,OAAO,GAAG,QAAQ;QACnF,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,wCAAmB,GAAnB,UAAoB,KAAa;QAE7B,QAAQ,KAAK,EAAE;YACX,KAAK,CAAC;gBAAE,CAAC,CAAC,qBAAqB,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;gBAAC,MAAM;YAChE,KAAK,CAAC;gBAAE,CAAC,CAAC,qBAAqB,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;gBAAC,MAAM;YAC9D,OAAO,CAAC,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,IAAI,CAAC,KAAK,GAAG,eAAe,CAAC,CAAC;SACnE;IACL,CAAC;IACL,iBAAC;AAAD,CAAC;AA1KY,gCAAU;;;;;;;;;;;;;;;;;ACDvB,kCAAkC;AAClC,8EAAwD;AAAU,8FAAzD,0BAAa,OAAyD;AAC/E,oGAA0E;AAAU,8FAA3E,8BAAa,OAA2E;AACjG,kGAAuE;AAAU,8FAAxE,+BAAa,OAAwE;AAC9F,yHAA8F;AAAU,mGAA/F,yCAAkB,OAA+F;AAC1H,2FAAiE;AAAU,2FAAlE,wBAAU,OAAkE;AACrF,6FAAmF;AAAU,8GAApF,8CAA6B,OAAoF;AAC1H,6GAAmF;AAAU,iGAApF,oCAAgB,OAAoF;AAC7G,0GAA+E;AAAU,oGAAhF,2CAAmB,OAAgF;AAC5G,mGAAwE;AAAU,+FAAzE,iCAAc,OAAyE;AAChG,kIAAuG;AAAU,qGAAxG,6CAAoB,OAAwG;AACrI,iJAAsH;AAAU,0GAAvH,uDAAyB,OAAuH;AACzJ,+EAAqD;AAAU,4FAAtD,0BAAW,OAAsD;AAG1E,SAAS;AACT,6EAAmD;AACnD,0EAAgD;AAChD,oFAA0D;AAC1D,sEAA4C;AAC5C,mFAAyD;AACzD,4EAAkD;AAClD,kEAAuC;AACvC,2FAAiE;AACjE,qGAA2E;AAC3E,0DAAgC;;;;;;;;;;;;;;;;AC5BhC,mGAAuE;AAEvE;IA2BI;IAAgB,CAAC;IAEjB,6BAAU,GAAV;QACI,IAAI,CAAC,gBAAgB,GAAG,EAAE,CAAC;QAC3B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YAE5C,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,IAAI,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,SAAS,EAAE;gBAC7D,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;aACvB;iBACI;gBACD,IAAI,CAAC,IAAI,CAAC;oBAAE,IAAI,CAAC,gBAAgB,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;;oBACxD,IAAI,CAAC,gBAAgB,IAAI,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;aAChE;SACJ;QAED,IAAI,CAAC,gBAAgB,GAAG,EAAE,CAAC;QAC3B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YAC5C,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,IAAI,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,SAAS,EAAE;gBAC7D,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;aACvB;iBACI;gBACD,IAAI,CAAC,IAAI,CAAC;oBAAE,IAAI,CAAC,gBAAgB,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC;;oBAC9D,IAAI,CAAC,gBAAgB,IAAI,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC;aACtE;SACJ;QAED,IAAI,CAAC,sBAAsB,GAAG,EAAE,CAAC;QACjC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YAClD,IAAI,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,IAAI,IAAI,IAAI,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,IAAI,SAAS,EAAE;gBACzE,IAAI,CAAC,eAAe,GAAG,EAAE,CAAC;aAC7B;iBACI;gBACD,IAAI,CAAC,IAAI,CAAC;oBAAE,IAAI,CAAC,sBAAsB,IAAI,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;;oBACnE,IAAI,CAAC,sBAAsB,IAAI,IAAI,GAAG,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;aAC3E;SACJ;QAED,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,UAAC,SAAS;YACnC,SAAS,CAAC,eAAe,GAAG,UAAG,SAAS,CAAC,SAAS,cAAI,SAAS,CAAC,QAAQ,CAAE,CAAC;YAC3E,IAAI,SAAS,CAAC,cAAc,EAAE;gBAC1B,SAAS,CAAC,mBAAmB,GAAG,UAAG,SAAS,CAAC,eAAe,eAAK,SAAS,CAAC,cAAc,CAAC,IAAI,MAAG,CAAC;aACrG;iBACI;gBACD,SAAS,CAAC,mBAAmB,GAAG,SAAS,CAAC,eAAe,CAAC;aAC7D;QACL,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,UAAC,MAAM,IAAK,aAAM,CAAC,eAAe,GAAG,UAAG,MAAM,CAAC,SAAS,cAAI,MAAM,CAAC,QAAQ,CAAE,EAAjE,CAAiE,CAAC,CAAC;QACzG,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,UAAC,MAAM;YAC5B,MAAM,CAAC,eAAe,GAAG,UAAG,MAAM,CAAC,SAAS,cAAI,MAAM,CAAC,QAAQ,CAAE,CAAC;YAClE,IAAI,MAAM,CAAC,eAAe,IAAI,GAAG,EAAE;gBAC/B,MAAM,CAAC,mBAAmB,GAAG,UAAG,MAAM,CAAC,YAAY,yCAA6B,MAAM,CAAC,eAAe,SAAM,CAAC;aAChH;iBACI;gBACD,MAAM,CAAC,mBAAmB,GAAG,MAAM,CAAC,YAAY,CAAC;aACpD;QACL,CAAC,CAAC,CAAC;QAEH,IAAI,QAAQ,GAAG,IAAI,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE;YAC1C,KAAK,EAAE,UAAU;YACjB,QAAQ,EAAE,KAAK;SAClB,CAAC,CAAC;QACH,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,UAAC,SAAS;YACjC,IAAI,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,GAAG,EAAE;gBACnC,SAAS,CAAC,aAAa,GAAG,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;aACzE;YAED,IAAI,SAAS,CAAC,gBAAgB,IAAI,EAAE,EAAE;gBAClC,SAAS,CAAC,WAAW,GAAG,UAAG,SAAS,CAAC,aAAa,eAAK,SAAS,CAAC,gBAAgB,MAAG,CAAC;aACxF;iBACI;gBACD,SAAS,CAAC,WAAW,GAAG,SAAS,CAAC,aAAa,CAAC;aACnD;QACL,CAAC,CAAC;QAEF,IAAI,CAAC,cAAc,GAAG,oCAAoC;QAC1D,IAAI,CAAC,iBAAiB,GAAG,gCAAW,EAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACtD,IAAI,CAAC,iBAAiB,GAAG,gCAAW,EAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAC1D,CAAC;IAED,gCAAa,GAAb,UAAc,SAAc,EAAE,SAAc,EAAE,MAAW,EAAE,eAAoB,EAAE,cAAmB,EAAE,aAAkB;QAEpH,IAAI,eAAe,GAAG,KAAK,CAAC;QAC5B,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,UAAC,QAAQ,IAAO,IAAI,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC;YAAE,eAAe,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QACzG,IAAI,CAAC,eAAe;YAAE,OAAO,KAAK,CAAC;QAEnC,IAAI,cAAc,GAAG,KAAK,CAAC;QAC3B,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,UAAC,OAAO,IAAO,IAAI,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,WAAW,CAAC;YAAE,cAAc,GAAG,IAAI,EAAC,CAAC,CAAC;QAC3G,IAAI,CAAC,cAAc;YAAE,OAAO,KAAK,CAAC;QAElC,IAAI,SAAS,GAAG,KAAK,CAAC;QACtB,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,UAAC,MAAM,IAAO,IAAI,eAAe,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC;YAAE,SAAS,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QAC1G,IAAI,CAAC,SAAS;YAAE,OAAO,KAAK,CAAC;QAE7B,IAAI,UAAU,GAAG,IAAI,IAAI,CAAC,cAAc,CAAC,CAAC;QAC1C,IAAI,SAAS,GAAG,IAAI,IAAI,CAAC,aAAa,CAAC,CAAC;QAExC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,UAAU,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,SAAS,EAAE;YAEjF,OAAO,KAAK,CAAC;SAChB;QAED,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC;YAAE,OAAO,KAAK,CAAC;QAEhD,OAAO,IAAI,CAAC;IAEhB,CAAC;IACL,eAAC;AAAD,CAAC;AArIY,4BAAQ;AAuIrB;IAAA;IAMA,CAAC;IAAD,eAAC;AAAD,CAAC;AAED;IAAA;IAIA,CAAC;IAAD,cAAC;AAAD,CAAC;AAED;IAAA;IAGA,CAAC;IAAD,qBAAC;AAAD,CAAC;AAED;IAAA;IAUA,CAAC;IAAD,mBAAC;AAAD,CAAC;AAVY,oCAAY;AAYzB;IAAA;IASA,CAAC;IAAD,mBAAC;AAAD,CAAC;AATY,oCAAY;AAWzB;IAAA;IASA,CAAC;IAAD,iBAAC;AAAD,CAAC;AATY,gCAAU;AAWvB;IAAA;IASA,CAAC;IAAD,mBAAC;AAAD,CAAC;AATY,oCAAY;AAWzB;IAAA;IAKA,CAAC;IAAD,0BAAC;AAAD,CAAC;AAED;IAaI;IAEA,CAAC;IAED,gCAAU,GAAV,UAAW,IAAiB,EAAE,UAAkB,EAAE,mBAA8C;QAA9C,8DAA8C;QAC5F,IAAI;YACA,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC;YAClB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;YACtB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;YACtB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;YAC1B,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;YACxB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;YACtB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;YAEtB,IAAI,CAAC,iBAAiB,CAAC,UAAU,EAAE,mBAAmB,CAAC,CAAC;SAC3D;QACD,WAAM;YACF,OAAO,CAAC,GAAG,CAAC,6BAA6B,CAAC,CAAC;YAC3C,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YAClB,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;YACxB,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC;SACpC;QAGD,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,uCAAiB,GAAjB,UAAkB,UAAkB,EAAE,mBAA8C;QAA9C,8DAA8C;QAChF,IAAI,IAAI,CAAC,MAAM,IAAI,oBAAa,UAAU,CAAE,EAAE;YAC1C,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC;SACrB;QAED,IAAI,WAAW,GAAG,kDAAkD,CAAC;QACrE,IAAI,SAAS,GAAG,uCAAuC,CAAC;QAExD,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE;YAChC,IAAI,YAAU,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YAE3C,IAAI,mBAAmB,CAAC,IAAI,CAAC,gBAAM,IAAI,aAAM,CAAC,UAAU,IAAI,YAAU,EAA/B,CAA+B,CAAC,EAAE;gBACrE,wDAAwD;gBACxD,IAAI,CAAC,MAAM,GAAG,mBAAmB,CAAC,IAAI,CAAC,gBAAM,IAAI,aAAM,CAAC,UAAU,IAAI,YAAU,EAA/B,CAA+B,CAAC,CAAC,UAAU,CAAC;aAChG;SACJ;QAED,IAAI,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC,EAAE;YAC9C,IAAI,YAAU,GAAG,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YACvC,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,gBAAM,IAAI,aAAM,CAAC,UAAU,IAAI,YAAU,EAA/B,CAA+B,CAAC,EAAE;gBACtE,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC;aACrB;SACJ;QAED,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC,EAAE;YAChD,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC;SACrB;IACL,CAAC;IAEL,kBAAC;AAAD,CAAC;AArEY,kCAAW;AAuExB;IAGI,4BAAY,IAAY,EAAE,IAAY;QAClC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QACvB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;IAC3B,CAAC;IACL,yBAAC;AAAD,CAAC;AAPY,gDAAkB;;;;;;;;;;;;;;;;ACvR/B,+HAAyQ;AACzQ,4GAAkG;AAClG,0FAAuG;AACvG,+EAAiD;AACjD,sGAAoE;AACpE,sHAAuH;AAEvH,sGAA6E;AAC7E,uGAAmE;AAGnE;IAQI,mCAAY,SAAc,EAAE,aAAkB;QAA9C,iBAgCC;QAnCD,wBAAmB,GAAa,EAAE,CAAC;QAI/B,CAAC,CAAC;YACE,KAAI,CAAC,YAAY,GAAG,oCAAY,EAAC,oCAAQ,EAAc,aAAa,CAAC,CAAC;YACtE,KAAI,CAAC,YAAY,CAAC,OAAO,CAAC,kBAAQ,IAAI,eAAQ,CAAC,UAAU,EAAE,EAArB,CAAqB,CAAC,CAAC;YAC7D,KAAI,CAAC,gBAAgB,GAAG,oCAAY,EAAC,sDAA0B,EAAgC,SAAS,CAAC,CAAC;YAE1G,KAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,cAAI;gBAC9B,IAAI,aAAa,GAA2B,EAAE,CAAC;gBAC/C,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAAC,kBAAQ;oBACvC,IAAI,WAAW,GAAG,gDAAoB,CAAC,iCAAiC,CAAC,QAAQ,CAAC,CAAC;oBACnF,aAAa,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;gBACpC,CAAC,CAAC,CAAC;gBACH,IAAI,CAAC,qBAAqB,GAAG,aAAa,CAAC;gBAE3C,IAAI,YAAY,GAA0B,EAAE,CAAC;gBAC7C,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,iBAAO;oBACrC,IAAI,UAAU,GAAG,+CAAmB,CAAC,gCAAgC,CAAC,OAAO,CAAC,CAAC;oBAC/E,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;gBAClC,CAAC,CAAC,CAAC;gBACH,IAAI,CAAC,oBAAoB,GAAG,YAAY,CAAC;YAC7C,CAAC,CAAC;YAEF,KAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,cAAI;gBAC9B,IAAI,CAAC,UAAU,EAAE,CAAC;gBAClB,IAAI,CAAC,iBAAiB,CAAC,KAAI,CAAC,YAAY,CAAC,CAAC;YAC9C,CAAC,CAAC,CAAC;YAEH,KAAI,CAAC,iBAAiB,EAAE,CAAC;YACzB,KAAI,CAAC,eAAe,EAAE,CAAC;YACvB,KAAI,CAAC,eAAe,GAAG,IAAI,gDAAiB,CAAC,KAAI,CAAC,YAAY,CAAC,CAAC;QAEpE,CAAC,CAAC,CAAC;IACP,CAAC;IAED,qDAAiB,GAAjB;QAAA,iBAgEC;QA/DG,gBAAgB;QAChB,iDAAwB,EAAC,mBAAmB,EAAE,4BAAM,EAAC,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,cAAI,IAAI,WAAI,CAAC,cAAc,CAAC,IAAI,EAAxB,CAAwB,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC;QAC/H,iDAAwB,EAAC,qBAAqB,EAAE,4BAAM,EAAC,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,cAAI,IAAI,WAAI,CAAC,YAAY,CAAC,IAAI,EAAtB,CAAsB,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC;QAC/H,iDAAwB,EAAC,wBAAwB,EAAE,4BAAM,EAAC,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,cAAI,IAAI,WAAI,CAAC,OAAO,CAAC,IAAI,EAAjB,CAAiB,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC;QAC7H,iDAAwB,EAAC,uBAAuB,EAAE,4BAAM,EAAC,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,cAAI,IAAI,WAAI,CAAC,OAAO,CAAC,MAAM,EAAnB,CAAmB,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC;QAE9H,mDAAmD;QACnD,IAAI,WAAW,GAAa,EAAE,CAAC;QAC/B,IAAI,eAAe,GAAa,EAAE,CAAC;QACnC,IAAI,aAAa,GAAa,EAAE,CAAC;QACjC,IAAI,YAAY,GAAa,EAAE,CAAC;QAChC,IAAI,cAAc,GAAa,EAAE,CAAC;QAClC,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,cAAI;YAC9B,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAAC,kBAAQ;gBACvC,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,QAAQ,CAAC,cAAc,CAAC;oBAAE,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;gBACtG,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC;oBAAE,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;gBAC9F,QAAQ,CAAC,eAAe,CAAC,OAAO,CAAC,oBAAU;oBACvC,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,UAAU,CAAC;wBAAE,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;gBACxE,CAAC,CAAC;YACN,CAAC,CAAC,CAAC;YAEH,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,iBAAO;gBACrC,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,OAAO,CAAC,WAAW,CAAC;oBAAE,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;gBAC5F,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,OAAO,CAAC,aAAa,CAAC;oBAAE,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;gBAC5F,OAAO,CAAC,eAAe,CAAC,OAAO,CAAC,oBAAU;oBACtC,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,UAAU,CAAC;wBAAE,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;gBACxE,CAAC,CAAC;YACN,CAAC,CAAC;QACN,CAAC,CAAC,CAAC;QACH,eAAe,CAAC,IAAI,EAAE,CAAC;QACvB,aAAa,CAAC,IAAI,EAAE,CAAC;QACrB,cAAc,CAAC,IAAI,EAAE,CAAC;QACtB,YAAY,CAAC,IAAI,EAAE,CAAC;QAGpB,IAAI,iBAAiB,GAAe,EAAE,CAAC;QACvC,WAAW,CAAC,OAAO,CAAC,YAAE;YAClB,IAAI,KAAK,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC;YACzB,IAAI,aAAa,GAAG,KAAI,CAAC,YAAY,CAAC,IAAI,CAAC,kBAAQ,IAAI,eAAQ,CAAC,UAAU,IAAI,KAAK,EAA5B,CAA4B,CAAC,CAAC;YACrF,IAAI,aAAa,IAAI,SAAS,EAAE;gBAC5B,iBAAiB,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;aACzC;QACL,CAAC,CAAC,CAAC;QACH,iBAAiB,CAAC,IAAI,CAAC,UAAC,EAAE,EAAE,EAAE,IAAK,SAAE,CAAC,SAAS,CAAC,aAAa,CAAC,EAAE,CAAC,SAAS,CAAC,EAAxC,CAAwC,CAAC,CAAC;QAE7E,IAAI,oBAAoB,GAAU,EAAE,CAAC;QACrC,iBAAiB,CAAC,OAAO,CAAC,kBAAQ;YAC9B,IAAI,UAAU,GAAG,CAAC,QAAQ,CAAC,UAAU,CAAC,QAAQ,EAAE,EAAE,QAAQ,CAAC,SAAS,CAAC,CAAC;YACtE,oBAAoB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC1C,CAAC,CAAC;QAGF,YAAY;QACZ,iDAAwB,EAAC,2BAA2B,EAAE,eAAe,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;QAC/F,iDAAwB,EAAC,yBAAyB,EAAE,aAAa,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;QAC3F,iDAAwB,EAAC,6BAA6B,EAAE,EAAE,EAAE,IAAI,EAAE,oBAAoB,EAAE,IAAI,CAAC,CAAC;QAE9F,WAAW;QACX,iDAAwB,EAAC,wBAAwB,EAAE,YAAY,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;QACzF,iDAAwB,EAAC,0BAA0B,EAAE,cAAc,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;QAC7F,iDAAwB,EAAC,4BAA4B,EAAE,EAAE,EAAE,IAAI,EAAE,oBAAoB,EAAE,IAAI,CAAC,CAAC;QAE7F,IAAI,CAAC,yBAAyB,EAAE,CAAC;IACrC,CAAC;IAED,6DAAyB,GAAzB;QAAA,iBA2BC;QA1BG,oCAAoC;QACpC,CAAC,CAAC,6BAA6B,CAAC,CAAC,EAAE,CAAC,mBAAmB,EAAE,UAAC,CAAC,EAAE,YAAY,EAAE,UAAU,EAAE,aAAa;YAChG,4BAA4B;YAC5B,IAAI,mBAAmB,GAAG,yCAAyB,EAAC,6BAA6B,CAAC,CAAC;YACnF,KAAI,CAAC,mBAAmB,GAAG,mBAAmB,CAAC;YAC/C,6CAA6C;YAC7C,CAAC,CAAC,4BAA4B,CAAC,CAAC,GAAG,CAAC,KAAI,CAAC,mBAAmB,CAAC,CAAC;YAC9D,CAAC,CAAC,4BAA4B,CAAC,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;YAExD,KAAI,CAAC,aAAa,EAAE,CAAC;QACzB,CAAC,CAAC,CAAC;QAEH,mCAAmC;QACnC,CAAC,CAAC,4BAA4B,CAAC,CAAC,EAAE,CAAC,mBAAmB,EAAE,UAAC,CAAC,EAAE,YAAY,EAAE,UAAU,EAAE,aAAa;YAC/F,4BAA4B;YAC5B,IAAI,mBAAmB,GAAG,yCAAyB,EAAC,4BAA4B,CAAC,CAAC;YAClF,KAAI,CAAC,mBAAmB,GAAG,mBAAmB,CAAC;YAE/C,6CAA6C;YAC7C,CAAC,CAAC,6BAA6B,CAAC,CAAC,GAAG,CAAC,KAAI,CAAC,mBAAmB,CAAC,CAAC;YAC/D,CAAC,CAAC,6BAA6B,CAAC,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;YAEzD,KAAI,CAAC,aAAa,EAAE,CAAC;QACzB,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,mBAAmB,GAAG,yCAAyB,EAAC,6BAA6B,CAAC,CAAC;IACxF,CAAC;IAED,wDAAoB,GAApB;QACI,CAAC,CAAC,oBAAoB,CAAC,CAAC,EAAE,CAAC,OAAO,EAAE;YAChC,CAAC,CAAC,yBAAyB,CAAC,CAAC,GAAG,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC;YACpD,CAAC,CAAC,yBAAyB,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QACnD,CAAC,CAAC,CAAC;QAEH,CAAC,CAAC,gBAAgB,CAAC,CAAC,EAAE,CAAC,OAAO,EAAE;YAC5B,CAAC,CAAC,yBAAyB,CAAC,CAAC,GAAG,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC;YAC3D,CAAC,CAAC,yBAAyB,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QACnD,CAAC,CAAC,CAAC;QAEH,CAAC,CAAC,eAAe,CAAC,CAAC,EAAE,CAAC,OAAO,EAAE;YAC3B,CAAC,CAAC,yBAAyB,CAAC,CAAC,GAAG,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC;YAC1D,CAAC,CAAC,yBAAyB,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QACnD,CAAC,CAAC,CAAC;IACP,CAAC;IAED,wCAAwC;IACxC,iDAAa,GAAb;QAAA,iBAuDC;QAtDG,IAAI,aAAa,GAAiC,IAAI,CAAC,gBAAgB,CAAC;QAExE,gBAAgB;QAChB,aAAa,GAAG,aAAa,CAAC,MAAM,CAAC,cAAI,IAAI,4CAAe,EAAC,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,yCAAyB,EAAC,mBAAmB,CAAC,CAAC,EAA3F,CAA2F,CAAC,CAAC;QAC1I,aAAa,GAAG,aAAa,CAAC,MAAM,CAAC,cAAI,IAAI,4CAAe,EAAC,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,yCAAyB,EAAC,qBAAqB,CAAC,CAAC,EAA3F,CAA2F,CAAC,CAAC;QAC1I,aAAa,GAAG,aAAa,CAAC,MAAM,CAAC,cAAI,IAAI,4CAAe,EAAC,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,yCAAyB,EAAC,wBAAwB,CAAC,CAAC,EAAzF,CAAyF,CAAC,CAAC;QACxI,aAAa,GAAG,aAAa,CAAC,MAAM,CAAC,cAAI,IAAI,4CAAe,EAAC,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,yCAAyB,EAAC,uBAAuB,CAAC,CAAC,EAA1F,CAA0F,CAAC,CAAC;QAEzI,YAAY;QACZ,IAAI,uBAAuB,GAAa,yCAAyB,EAAC,2BAA2B,CAAC;QAC9F,IAAI,uBAAuB,CAAC,MAAM,GAAG,CAAC,EAAE;YACpC,aAAa,GAAG,aAAa,CAAC,MAAM,CAAC,cAAI;gBACrC,IAAI,OAAO,GAAG,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBACpD,OAAO,qCAAe,EAAC,OAAO,EAAE,yCAAyB,EAAC,2BAA2B,CAAC,CAAC,CAAC;YAC5F,CAAC,CAAC,CAAC;SACN;QACD,IAAI,qBAAqB,GAAa,yCAAyB,EAAC,yBAAyB,CAAC,CAAC;QAC3F,IAAI,qBAAqB,CAAC,MAAM,GAAG,CAAC,EAAE;YAClC,aAAa,GAAG,aAAa,CAAC,MAAM,CAAC,cAAI;gBACrC,IAAI,KAAK,GAAG,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBAChD,OAAO,qCAAe,EAAC,KAAK,EAAE,yCAAyB,EAAC,yBAAyB,CAAC,CAAC,CAAC;YACxF,CAAC,CAAC,CAAC;SACN;QAGD,YAAY;QACZ,IAAI,oBAAoB,GAAa,yCAAyB,EAAC,wBAAwB,CAAC,CAAC;QACzF,IAAI,oBAAoB,CAAC,MAAM,GAAG,CAAC,EAAE;YACjC,aAAa,GAAG,aAAa,CAAC,MAAM,CAAC,cAAI;gBACrC,IAAI,KAAK,GAAG,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBAC/C,OAAO,qCAAe,EAAC,KAAK,EAAE,yCAAyB,EAAC,wBAAwB,CAAC,CAAC,CAAC;YACvF,CAAC,CAAC,CAAC;SACN;QACD,IAAI,sBAAsB,GAAa,yCAAyB,EAAC,0BAA0B,CAAC,CAAC;QAC7F,IAAI,sBAAsB,CAAC,MAAM,GAAG,CAAC,EAAE;YACnC,aAAa,GAAG,aAAa,CAAC,MAAM,CAAC,cAAI;gBACrC,IAAI,OAAO,GAAG,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBACnD,OAAO,qCAAe,EAAC,OAAO,EAAE,yCAAyB,EAAC,0BAA0B,CAAC,CAAC,CAAC;YAC3F,CAAC,CAAC,CAAC;SACN;QAED,YAAY;QACZ,aAAa,GAAG,aAAa,CAAC,MAAM,CAAC,cAAI;YACrC,IAAI,WAAW,GAAG,EAAE,CAAC;YACrB,IAAI,iBAAiB,GAAG,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,kBAAQ,IAAI,eAAQ,CAAC,eAAe,EAAxB,CAAwB,CAAC,CAAC;YAC7F,iBAAiB,CAAC,OAAO,CAAC,iBAAO,IAAI,kBAAW,CAAC,IAAI,OAAhB,WAAW,EAAS,OAAO,GAA3B,CAA4B,CAAC,CAAC;YACnE,IAAI,gBAAgB,GAAG,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,iBAAO,IAAI,cAAO,CAAC,eAAe,EAAvB,CAAuB,CAAC,CAAC;YACzF,gBAAgB,CAAC,OAAO,CAAC,iBAAO,IAAI,kBAAW,CAAC,IAAI,OAAhB,WAAW,EAAS,OAAO,GAA3B,CAA4B,CAAC,CAAC;YAClE,WAAW,GAAG,4BAAM,EAAC,WAAW,EAAE,KAAK,CAAC,CAAC;YAEzC,OAAO,qCAAe,EAAC,WAAW,EAAE,KAAI,CAAC,mBAAmB,CAAC,CAAC;QAClE,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC;IACpC,CAAC;IAED,+CAAW,GAAX,UAAY,aAA2C;QAEnD,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;QACvB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,IAAI,EAAE,CAAC;QAC9C,IAAI,CAAC,kBAAkB,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;IAClD,CAAC;IAED,gDAAY,GAAZ;QACI,IAAI,UAAU,GAAa;YACvB,mBAAmB,EAAE,qBAAqB,EAAE,wBAAwB,EAAE,uBAAuB;YAC7F,6BAA6B,EAAE,4BAA4B;SAC9D;QAED,IAAI,eAAe,GAAa;YAC5B,2BAA2B,EAAE,yBAAyB;YACtD,wBAAwB,EAAE,0BAA0B;SACvD;QAED,UAAU,CAAC,OAAO,CAAC,UAAC,UAAkB;YAClC,CAAC,CAAC,UAAU,CAAC,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC;YACxC,CAAC,CAAC,UAAU,CAAC,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;QAC1C,CAAC,CAAC,CAAC;QAEH,eAAe,CAAC,OAAO,CAAC,UAAC,UAAkB;YACvC,CAAC,CAAC,UAAU,CAAC,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC;YAC1C,CAAC,CAAC,UAAU,CAAC,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;QAC1C,CAAC,CAAC,CAAC;IACP,CAAC;IAED,qDAAiB,GAAjB;QACI,IAAI,UAAU,GAAa;YACvB,2BAA2B;SAC9B;QAED,IAAI,eAAe,GAAa;YAC5B,iCAAiC,EAAE,+BAA+B;YAClE,8BAA8B,EAAE,gCAAgC;SACnE;QAED,UAAU,CAAC,OAAO,CAAC,UAAC,UAAkB;YAClC,CAAC,CAAC,UAAU,CAAC,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC;YACxC,CAAC,CAAC,UAAU,CAAC,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;QAC1C,CAAC,CAAC,CAAC;QAEH,eAAe,CAAC,OAAO,CAAC,UAAC,UAAkB;YACvC,CAAC,CAAC,UAAU,CAAC,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC;YAC1C,CAAC,CAAC,UAAU,CAAC,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;QAC1C,CAAC,CAAC,CAAC;IACP,CAAC;IAED,mDAAe,GAAf;QAAA,iBA+EC;QA7EG,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC,qBAAqB,CAAC,CAAC,SAAS,CAAC;YAChD,KAAK,EAAE,gFAAgF;YACvF,iGAAiG;YACjG,SAAS,EAAE,IAAI;YACf,IAAI,EAAE,KAAK;YACX,MAAM,EAAE,KAAK;YACb,MAAM,EAAE,IAAI;YACZ,OAAO,EAAE,IAAI;YACb,oBAAoB;YACpB,OAAO,EAAE,MAAM;YACf,cAAc,EAAE,IAAI;YACpB,aAAa,EAAE,IAAI;YACnB,YAAY,EAAE;gBACV,WAAW,EAAE,CAAC;aACjB;YACD,QAAQ,EACR;gBACI,MAAM,EAAE,QAAQ;aACnB;YACD,OAAO,EAAE;gBACL,EAAE,IAAI,EAAE,iBAAiB,EAAE,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,uBAAuB,EAAE;gBACnF,EAAE,IAAI,EAAE,qBAAqB,EAAE,KAAK,EAAE,iBAAiB,EAAE,SAAS,EAAE,qCAAqC,EAAE;gBAC3G,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,qCAAqC,EAAE;gBAC5F,EAAE,IAAI,EAAE,gBAAgB,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,qCAAqC,EAAE;gBAE7F,EAAE,IAAI,EAAE,sBAAsB,EAAE,KAAK,EAAE,kBAAkB,EAAE,SAAS,EAAE,iCAAiC,EAAE;gBACzG,EAAE,IAAI,EAAE,oBAAoB,EAAE,KAAK,EAAE,gBAAgB,EAAE,SAAS,EAAE,iCAAiC,EAAE;gBACrG,EAAE,IAAI,EAAE,gBAAgB,EAAE,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,iCAAiC,EAAE;gBAE5F,EAAE,IAAI,EAAE,mBAAmB,EAAE,KAAK,EAAE,eAAe,EAAE,SAAS,EAAE,gCAAgC,EAAE;gBAClG,EAAE,IAAI,EAAE,qBAAqB,EAAE,KAAK,EAAE,iBAAiB,EAAE,SAAS,EAAE,gCAAgC,EAAE;gBACtG,EAAE,IAAI,EAAE,gBAAgB,EAAE,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,gCAAgC,EAAE;gBAE3F,EAAE,IAAI,EAAE,0BAA0B,EAAE,KAAK,EAAE,cAAc,EAAE,SAAS,EAAE,gCAAgC,EAAE,MAAM,EAAE,UAAU,IAAI,EAAE,IAAI,IAAI,OAAO,UAAG,IAAI,CAAC,oBAAoB,cAAI,IAAI,CAAC,mBAAmB,eAAK,IAAI,CAAC,gBAAgB,MAAG,GAAC,EAAE;gBACvO,EAAE,IAAI,EAAE,0BAA0B,EAAE,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,gCAAgC,EAAE,MAAM,EAAE,UAAU,IAAI,EAAE,IAAI,IAAI,OAAO,UAAG,IAAI,CAAC,mBAAmB,cAAI,IAAI,CAAC,kBAAkB,eAAK,IAAI,CAAC,eAAe,MAAG,EAAC,CAAC,EAAE;gBAEpO,EAAE,IAAI,EAAE,gDAAgD,EAAE,KAAK,EAAE,uBAAuB,EAAE,SAAS,EAAE,8BAA8B,EAAC;aACvI;YACD,OAAO,EAAE;gBACL;oBACI,MAAM,EAAE,KAAK;oBACb,IAAI,EAAE,sCAAsC;oBAC5C,SAAS,EAAE,KAAK;oBAChB,OAAO,EAAE,OAAO;iBACnB;aACJ;YACD,IAAI,EAAE,IAAI,CAAC,gBAAgB;YAC3B,mCAAmC;YACnC,YAAY,EAAE,UAAC,QAAQ,EAAE,IAAI;gBACzB,mGAAmG;YACvG,CAAC;SACJ,CAAC,CAAC;QAEH,CAAC,CAAC,eAAe,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;QAExC,CAAC,CAAC,gBAAgB,CAAC,CAAC,QAAQ,CAAC,sBAAsB,CAAC,CAAC;QACrD,CAAC,CAAC,gBAAgB,CAAC,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,gCAAgC,CAAC,CAAC;QAEnE,CAAC,CAAC,aAAa,CAAC,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAC;QAE7C,CAAC,CAAC,SAAS,CAAC,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAC;QAAC,CAAC;QAC3C,CAAC,CAAC,cAAc,CAAC,CAAC,QAAQ,CAAC,4EAA4E,CAAC,CAAC;QACzG,+IAA+I;QAC/I,CAAC,CAAC,cAAc,CAAC,CAAC,OAAO,CAAC,2EAA2E,CAAC,CAAC;QAEvG,IAAI,CAAC,qBAAqB,GAAG,IAAI,yDAA+B,CAAC,qBAAqB,EAAE,gBAAgB,EAAE;YACtG,IAAI,0CAAgB,CAAC,eAAe,EAAE,IAAI,EAAE,EAAE,EAAE,eAAe,CAAC;YAChE,IAAI,0CAAgB,CAAC,sBAAsB,EAAE,KAAK,EAAE,EAAE,EAAE,WAAW,CAAC;YACpE,IAAI,0CAAgB,CAAC,qBAAqB,EAAE,KAAK,EAAE,EAAE,EAAE,UAAU,CAAC;YAClE,IAAI,0CAAgB,CAAC,kBAAkB,EAAE,KAAK,EAAE,EAAE,EAAE,UAAU,CAAC;SAClE,CAAC,CAAC;QAEH,CAAC,CAAC,qBAAqB,CAAC,CAAC,EAAE,CAAC,WAAW,EAAE,UAAC,CAAC,EAAE,QAAQ;YACjD,KAAI,CAAC,kBAAkB,CAAC,KAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;QAChF,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,oBAAoB,EAAE,CAAC;IAChC,CAAC;IAED,sDAAkB,GAAlB,UAAmB,KAAa;QAC5B,QAAQ,KAAK,EAAE;YACX,KAAK,CAAC;gBAAE,CAAC,CAAC,oBAAoB,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;gBAAC,MAAM;YAC9D,KAAK,CAAC;gBAAE,CAAC,CAAC,oBAAoB,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;gBAAC,MAAM;YAC5D,OAAO,CAAC,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,IAAI,CAAC,KAAK,GAAG,cAAc,CAAC,CAAC;SACjE;IACL,CAAC;IAED,iDAAa,GAAb,UAAc,MAAc;QACxB,IAAI,IAAI,GAA+B,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,YAAE,IAAI,SAAE,CAAC,EAAE,IAAI,MAAM,EAAf,CAAe,CAAC,CAAC;QACzF,IAAI,IAAI,IAAI,SAAS,EAAE;YACnB,IAAI,CAAC,eAAe,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;YAC5C,CAAC,CAAC,YAAY,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;SACjC;IACL,CAAC;IAED,iDAAa,GAAb;QACI,CAAC,CAAC,YAAY,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAClC,CAAC;IAEL,gCAAC;AAAD,CAAC;AA3WY,8DAAyB;;;;;;;;;;;;;;;;;ACXtC,sGAA6E;AAG7E;IAwBI,kCAAY,IAA8B;QACtC,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC;QAClB,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC;QAE1C,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,CAAC;QAC9C,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC,uBAAuB,CAAC;QAC5D,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC;QAC1C,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,qBAAqB,CAAC;QAExD,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,oBAAoB,CAAC;QACtD,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,mBAAmB,CAAC;QACpD,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,CAAC;QAE9C,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,mBAAmB,CAAC;QACpD,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,kBAAkB,CAAC;QAClD,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,eAAe,CAAC;QAE5C,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC,uBAAuB,CAAC;QAC5D,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC,sBAAsB,CAAC;IAC9D,CAAC;IAED,6CAAU,GAAV;QACI,IAAI,CAAC,uBAAuB,GAAG,mCAAc,EAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QACrE,IAAI,CAAC,qBAAqB,GAAG,mCAAc,EAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QAEjE,IAAI,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,EAAE;YACjE,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,gBAAgB,CAAC;YAC5C,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,uBAAuB,CAAC;SAC7D;aACI;YACD,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC;YAC1C,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,qBAAqB,CAAC;SAC3D;QAED,IAAI,eAAe,GAAG,IAAI,IAAI,EAAE,CAAC;QAEjC,+BAA+B;QAC/B,eAAe,CAAC,QAAQ,CAAC,eAAe,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC;QAEzD,IAAI,eAAe,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,EAAE;YAC3D,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;SAC5B;aACI;YACD,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;SAC7B;IAEL,CAAC;IACL,+BAAC;AAAD,CAAC;AAvEY,4DAAwB;AAyErC;IAYI;QAFA,oBAAe,GAAa,EAAE,CAAC;IAI/B,CAAC;IAED,yCAAU,GAAV;QACI,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,IAAI,IAAI,CAAC,WAAW,IAAI,SAAS,IAAI,IAAI,CAAC,WAAW,IAAI,EAAE,EAAE;YACrF,IAAI,CAAC,eAAe,GAAG,EAAE,CAAC;SAC7B;aACI;YACD,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;SACtD;IACL,CAAC;IAEM,+CAA0B,GAAjC,UAAkC,MAAc,EAAE,MAAc,EAAE,IAAY;QAC1E,IAAI,GAAG,GAAG,IAAI,oBAAoB,EAAE,CAAC;QACrC,GAAG,CAAC,kBAAkB,GAAG,MAAM,CAAC;QAChC,GAAG,CAAC,cAAc,GAAG,MAAM,CAAC;QAC5B,GAAG,CAAC,YAAY,GAAG,IAAI,CAAC;QACxB,GAAG,CAAC,WAAW,GAAG,EAAE,CAAC;QAErB,OAAO,GAAG,CAAC;IACf,CAAC;IAEM,sDAAiC,GAAxC,UAAyC,QAA8B;QACnE,IAAI,GAAG,GAAG,IAAI,oBAAoB,EAAE,CAAC;QACrC,GAAG,CAAC,EAAE,GAAG,QAAQ,CAAC,EAAE,CAAC;QACrB,GAAG,CAAC,kBAAkB,GAAG,QAAQ,CAAC,kBAAkB,CAAC;QACrD,GAAG,CAAC,UAAU,GAAG,QAAQ,CAAC,UAAU,CAAC;QACrC,GAAG,CAAC,gBAAgB,GAAG,QAAQ,CAAC,gBAAgB,CAAC;QAEjD,GAAG,CAAC,cAAc,GAAG,QAAQ,CAAC,cAAc,CAAC;QAC7C,GAAG,CAAC,YAAY,GAAG,QAAQ,CAAC,YAAY,CAAC;QACzC,GAAG,CAAC,WAAW,GAAG,QAAQ,CAAC,WAAW,CAAC;QAEvC,OAAO,GAAG,CAAC;IACf,CAAC;IACL,2BAAC;AAAD,CAAC;AAhDY,oDAAoB;AAkDjC;IAAA;QAUI,oBAAe,GAAa,EAAE,CAAC;IAkCnC,CAAC;IAhCG,wCAAU,GAAV;QACI,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,IAAI,IAAI,CAAC,WAAW,IAAI,SAAS,IAAI,IAAI,CAAC,WAAW,IAAI,EAAE,EAAE;YACrF,IAAI,CAAC,eAAe,GAAG,EAAE,CAAC;SAC7B;aACI;YACD,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;SACtD;IACL,CAAC;IAEM,6CAAyB,GAAhC,UAAiC,MAAc,EAAE,MAAc,EAAE,IAAY;QACzE,IAAI,GAAG,GAAG,IAAI,mBAAmB,EAAE,CAAC;QACpC,GAAG,CAAC,kBAAkB,GAAG,MAAM,CAAC;QAChC,GAAG,CAAC,aAAa,GAAG,MAAM,CAAC;QAC3B,GAAG,CAAC,WAAW,GAAG,IAAI,CAAC;QACvB,GAAG,CAAC,WAAW,GAAG,EAAE,CAAC;QAErB,OAAO,GAAG,CAAC;IACf,CAAC;IAEM,oDAAgC,GAAvC,UAAwC,OAA4B;QAChE,IAAI,GAAG,GAAG,IAAI,mBAAmB,EAAE,CAAC;QACpC,GAAG,CAAC,EAAE,GAAG,OAAO,CAAC,EAAE,CAAC;QACpB,GAAG,CAAC,kBAAkB,GAAG,OAAO,CAAC,kBAAkB,CAAC;QACpD,GAAG,CAAC,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;QACpC,GAAG,CAAC,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,CAAC;QAEhD,GAAG,CAAC,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC;QAC1C,GAAG,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;QACtC,GAAG,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;QAEtC,OAAO,GAAG,CAAC;IACf,CAAC;IACL,0BAAC;AAAD,CAAC;AA5CY,kDAAmB;AA8ChC;IAAA;IAIA,CAAC;IAAD,qBAAC;AAAD,CAAC;AAJY,wCAAc;AAM3B;IAAA;IAQA,CAAC;IAAD,mBAAC;AAAD,CAAC;AARY,oCAAY;AAUzB;IAAA;IAMA,CAAC;IAAD,cAAC;AAAD,CAAC;AANY,0BAAO;AAQpB;IAAA;QAQI,eAAU,GAAY,KAAK,CAAC;QAC5B,oBAAe,GAAW,sFAAgF,CAAC;IAgB/G,CAAC;IAdG,6BAAU,GAAV;QACI,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,EAAE,CAAC;IAC9B,CAAC;IAED,+BAAY,GAAZ,UAAa,YAAqB;QAC9B,IAAI,CAAC,UAAU,GAAG,YAAY,CAAC;QAE/B,IAAI,IAAI,CAAC,UAAU,EAAE;YACjB,IAAI,CAAC,eAAe,GAAG,8FAAwF;SAClH;aACI;YACD,IAAI,CAAC,eAAe,GAAG,sFAAgF;SAC1G;IACL,CAAC;IACL,eAAC;AAAD,CAAC;AAzBY,4BAAQ;AA2BrB;IAiHI;QAxGA,yBAAoB,GAAW,EAAE,CAAC;QAClC,uBAAkB,GAAW,EAAE,CAAC;QAChC,wBAAmB,GAAW,EAAE,CAAC;QACjC,sBAAiB,GAAW,EAAE,CAAC;QAC/B,mBAAc,GAAW,EAAE,CAAC;QAC5B,oBAAe,GAAW,EAAE,CAAC;IAqG7B,CAAC;IAnGD,+CAAU,GAAV;QACI,IAAI,CAAC,eAAe,GAAG,kEAA2D,IAAI,CAAC,EAAE,gBAAM,IAAI,CAAC,YAAY,CAAC,IAAI,SAAM,CAAC;QAE5H,0CAA0C;QAC1C,IAAI,CAAC,wBAAwB,CAAC,uBAAuB,GAAG,mCAAc,EAAC,IAAI,CAAC,wBAAwB,CAAC,gBAAgB,CAAC,CAAC;QACvH,IAAI,CAAC,wBAAwB,CAAC,qBAAqB,GAAG,mCAAc,EAAC,IAAI,CAAC,wBAAwB,CAAC,cAAc,CAAC,CAAC;QAEnH,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,wBAAwB,CAAC,gBAAgB,CAAC,CAAC,OAAO,EAAE,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,wBAAwB,CAAC,cAAc,CAAC,CAAC,OAAO,EAAE,EAAE;YACvI,IAAI,CAAC,wBAAwB,CAAC,cAAc,GAAG,IAAI,CAAC,wBAAwB,CAAC,gBAAgB,CAAC;YAC9F,IAAI,CAAC,wBAAwB,CAAC,qBAAqB,GAAG,IAAI,CAAC,wBAAwB,CAAC,uBAAuB,CAAC;SAC/G;aACI;YACD,IAAI,CAAC,wBAAwB,CAAC,cAAc,GAAG,IAAI,CAAC,wBAAwB,CAAC,cAAc,CAAC;YAC5F,IAAI,CAAC,wBAAwB,CAAC,qBAAqB,GAAG,IAAI,CAAC,wBAAwB,CAAC,qBAAqB,CAAC;SAC7G;QAGD,uCAAuC;QACvC,IAAI,mBAAmB,GAAa,EAAE,CAAC;QACvC,IAAI,iBAAiB,GAAa,EAAE,CAAC;QACrC,IAAI,kBAAkB,GAAa,EAAE,CAAC;QACtC,IAAI,gBAAgB,GAAa,EAAE,CAAC;QAEpC,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAAC,kBAAQ;YACvC,QAAQ,CAAC,UAAU,EAAE,CAAC;YACtB,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE;gBACxD,mBAAmB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;aACrD;YACD,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE;gBACpD,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;aACjD;QACL,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,iBAAO;YACrC,OAAO,CAAC,UAAU,EAAE,CAAC;YACrB,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE;gBACnD,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;aAChD;YACD,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE;gBACnD,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;aAChD;QACL,CAAC,CAAC,CAAC;QAEH,mBAAmB,CAAC,IAAI,EAAE,CAAC;QAC3B,iBAAiB,CAAC,IAAI,EAAE,CAAC;QACzB,kBAAkB,CAAC,IAAI,EAAE,CAAC;QAC1B,gBAAgB,CAAC,IAAI,EAAE,CAAC;QAExB,IAAI,CAAC,oBAAoB,GAAG,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC3D,IAAI,CAAC,kBAAkB,GAAG,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACvD,IAAI,CAAC,mBAAmB,GAAG,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACzD,IAAI,CAAC,iBAAiB,GAAG,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAErD,qCAAqC;QAErC,IAAI,eAAe,GAAG,IAAI,IAAI,EAAE,CAAC;QAEjC,iFAAiF;QACjF,eAAe,CAAC,QAAQ,CAAC,eAAe,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC;QAEzD,IAAI,eAAe,CAAC,OAAO,EAAE,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,wBAAwB,CAAC,cAAc,CAAC,CAAC,OAAO,EAAE,IAAI,CAAC,mBAAmB,CAAC,MAAM,GAAG,CAAC,IAAI,kBAAkB,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE;YACnK,IAAI,CAAC,wBAAwB,CAAC,YAAY,GAAG,IAAI,CAAC;SACrD;aACI;YACD,IAAI,CAAC,wBAAwB,CAAC,YAAY,GAAG,KAAK,CAAC;SACtD;IACL,CAAC;IAED,sDAAiB,GAAjB,UAAkB,YAAwB;QACtC,IAAI,eAAe,GAAa,EAAE,CAAC;QACnC,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAAC,kBAAQ;YACvC,QAAQ,CAAC,eAAe,CAAC,OAAO,CAAC,oBAAU;gBACvC,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE;oBACvC,eAAe,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;iBACpC;YACL,CAAC,CAAC;QACN,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,iBAAO;YACrC,OAAO,CAAC,eAAe,CAAC,OAAO,CAAC,oBAAU;gBACtC,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE;oBACvC,eAAe,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;iBACpC;YACL,CAAC,CAAC;QACN,CAAC,CAAC,CAAC;QAEH,IAAI,iBAAiB,GAAa,EAAE,CAAC;QACrC,eAAe,CAAC,OAAO,CAAC,oBAAU;YAC9B,IAAI,KAAK,GAAG,QAAQ,CAAC,UAAU,CAAC,CAAC;YACjC,IAAI,aAAa,GAAG,YAAY,CAAC,IAAI,CAAC,kBAAQ,IAAI,eAAQ,CAAC,UAAU,IAAI,KAAK,EAA5B,CAA4B,CAAC,CAAC;YAChF,IAAI,aAAa,IAAI,SAAS,EAAE;gBAC5B,iBAAiB,CAAC,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;aACnD;QACL,CAAC,CAAC,CAAC;QAEH,iBAAiB,CAAC,IAAI,EAAE,CAAC;QACzB,IAAI,CAAC,cAAc,GAAG,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACvD,CAAC;IAMM,2DAAgC,GAAvC,UAAwC,cAA0C;QAC9E,IAAI,GAAG,GAAG,IAAI,0BAA0B,EAAE,CAAC;QAC3C,GAAG,CAAC,EAAE,GAAG,cAAc,CAAC,EAAE,CAAC;QAC3B,GAAG,CAAC,wBAAwB,GAAG,cAAc,CAAC,wBAAwB,CAAC;QACvE,GAAG,CAAC,qBAAqB,GAAG,cAAc,CAAC,qBAAqB,CAAC;QACjE,GAAG,CAAC,oBAAoB,GAAG,cAAc,CAAC,oBAAoB,CAAC;QAC/D,GAAG,CAAC,cAAc,GAAG,cAAc,CAAC,cAAc,CAAC;QACnD,GAAG,CAAC,YAAY,GAAG,cAAc,CAAC,YAAY,CAAC;QAC/C,GAAG,CAAC,OAAO,GAAG,cAAc,CAAC,OAAO,CAAC;QAErC,OAAO,GAAG,CAAC;IACf,CAAC;IACL,iCAAC;AAAD,CAAC;AAjIY,gEAA0B;AAmIvC;IAYI,6BAAY,SAAiB,EAAE,QAAgB,EAAE,KAAa;QAC1D,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,UAAU,EAAE,CAAC;IACtB,CAAC;IATD,wCAAU,GAAV;QACI,IAAI,CAAC,QAAQ,GAAG,UAAG,IAAI,CAAC,SAAS,cAAI,IAAI,CAAC,QAAQ,CAAE,CAAC;QACrD,IAAI,CAAC,eAAe,GAAG,UAAG,IAAI,CAAC,QAAQ,eAAK,IAAI,CAAC,SAAS,CAAE,CAAC;IACjE,CAAC;IAOL,0BAAC;AAAD,CAAC;AAlBY,kDAAmB;AAoBhC;IAWI,gCAAY,MAAc,EAAE,IAAY,EAAE,QAAgB;QACtD,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QAEzB,IAAI,CAAC,UAAU,EAAE,CAAC;IACtB,CAAC;IAVD,2CAAU,GAAV;QACI,IAAI,CAAC,WAAW,GAAG,UAAG,IAAI,CAAC,MAAM,eAAK,IAAI,CAAC,IAAI,MAAG,CAAC;IACvD,CAAC;IASL,6BAAC;AAAD,CAAC;AAlBY,wDAAsB;AAoBnC;IAUI,6BAAY,QAAkB,EAAE,SAAiC,EAAE,QAA+B;QALlG,wBAAmB,GAAa,EAAE,CAAC;QACnC,sBAAiB,GAAa,EAAE,CAAC;QACjC,uBAAkB,GAAa,EAAE,CAAC;QAClC,qBAAgB,GAAa,EAAE,CAAC;QAG5B,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QAEzB,IAAI,CAAC,UAAU,EAAE,CAAC;IACtB,CAAC;IAED,wCAAU,GAAV;QAAA,iBAkCC;QAjCG,IAAI,mBAAmB,GAAG,EAAE,CAAC;QAC7B,IAAI,iBAAiB,GAAG,EAAE,CAAC;QAC3B,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,kBAAQ;YAC3B,QAAQ,CAAC,UAAU,EAAE,CAAC;YACtB,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE;gBACxD,mBAAmB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;aACrD;YACD,IAAI,CAAC,KAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE;gBACzD,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;aACjD;QACL,CAAC,CAAC,CAAC;QAEH,IAAI,kBAAkB,GAAG,EAAE,CAAC;QAC5B,IAAI,gBAAgB,GAAG,EAAE,CAAC;QAC1B,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,iBAAO;YACzB,OAAO,CAAC,UAAU,EAAE,CAAC;YACrB,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE;gBACnD,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;aAChD;YACD,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE;gBACnD,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;aAChD;QACL,CAAC,CAAC,CAAC;QAEH,mBAAmB,CAAC,IAAI,EAAE,CAAC;QAC3B,iBAAiB,CAAC,IAAI,EAAE,CAAC;QACzB,kBAAkB,CAAC,IAAI,EAAE,CAAC;QAC1B,gBAAgB,CAAC,IAAI,EAAE,CAAC;QAExB,IAAI,CAAC,mBAAmB,GAAG,mBAAmB,CAAC;QAC/C,IAAI,CAAC,iBAAiB,GAAG,iBAAiB,CAAC;QAC3C,IAAI,CAAC,kBAAkB,GAAG,kBAAkB,CAAC;QAC7C,IAAI,CAAC,gBAAgB,GAAG,gBAAgB,CAAC;IAC7C,CAAC;IACL,0BAAC;AAAD,CAAC;AArDY,kDAAmB;;;;;;;;;;;;;;;;AC1YhC,gGAAkG;AAElG;IAAA;QAEI,aAAQ,GAAW,aAAa,CAAC;QACjC,UAAK,GAAW,aAAa,CAAC;QAC9B,WAAM,GAAW,aAAa,CAAC;QAE/B,WAAM,GAAW,aAAa,CAAC;QAkB/B,kBAAa,GAAW,EAAE,CAAC;QAC3B,mBAAc,GAAW,EAAE,CAAC;QAC5B,eAAU,GAAW,EAAE,CAAC;QACxB,oBAAe,GAAW,EAAE,CAAC;QAC7B,mCAA8B,GAAW,EAAE,CAAC;QAG5C,oBAAe,GAAW,EAAE,CAAC;QAE7B,mBAAc,GAAW,EAAE,CAAC;IAoEhC,CAAC;IAlEG,6BAAU,GAAV;QAEI,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,IAAI,CAAC,EAAE;YAAE,IAAI,CAAC,KAAK,GAAG,aAAa,CAAC;SAAE;QACxF,IAAI,IAAI,CAAC,cAAc,IAAI,IAAI,IAAI,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC,MAAM,IAAI,CAAC,EAAE;YAAE,IAAI,CAAC,cAAc,GAAG,aAAa,CAAC;SAAE;QACnH,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,MAAM,IAAI,CAAC,EAAE;YAAE,IAAI,CAAC,QAAQ,GAAG,aAAa,CAAC;SAAE;QAEjG,oBAAoB;QAEpB,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,MAAM,IAAI,CAAC,EAAE;YAAE,IAAI,CAAC,YAAY,GAAG,aAAa,CAAC;YAAC,IAAI,CAAC,SAAS,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;SAAE;aACpI;YACD,IAAI,CAAC,SAAS,GAAG,2BAAK,EAAC,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;YAC1C,IAAI,CAAC,YAAY,GAAG,0BAAI,EAAC,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;YAE3D,IAAI,CAAC,YAAY,GAAG,kCAAY,EAAC,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;YACjE,IAAI,CAAC,cAAc,GAAG,kCAAY,EAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;YACpE,IAAI,CAAC,aAAa,GAAG,kCAAY,EAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;SACtE;QAED,IAAI,IAAI,CAAC,uBAAuB,IAAI,SAAS,IAAI,IAAI,CAAC,uBAAuB,CAAC,MAAM,GAAG,CAAC,EAAE;YACtF,IAAI,CAAC,8BAA8B,GAAG,kBAAkB,GAAG,IAAI,CAAC,uBAAuB,GAAG,yBAAyB,GAAG,IAAI,CAAC,uBAAuB,CAAC,WAAW,EAAE,GAAG,wEAAwE,CAAC;SAC/O;QAED,IAAI,IAAI,CAAC,QAAQ,IAAI,SAAS,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;YACxD,IAAI,CAAC,YAAY,GAAG,2BAAK,EAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;YAC9C,IAAI,CAAC,eAAe,GAAG,0BAAI,EAAC,IAAI,CAAC,YAAY,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;SACpE;QAED,IAAI,CAAC,cAAc,GAAG,EAAE,CAAC;QAEzB,IAAI,IAAI,CAAC,GAAG,IAAI,SAAS,IAAI,IAAI,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE;YAC9C,IAAI,CAAC,UAAU,GAAG,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,4HAA4H,CAAC;YAE/K,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,UAAU,CAAC;SACzC;QAED,IAAI,IAAI,CAAC,QAAQ,IAAI,SAAS,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;YACxD,IAAI,CAAC,eAAe,GAAG,WAAW,GAAG,IAAI,CAAC,QAAQ,GAAG,yCAAyC,GAAG,wEAAwE,CAAC;YAE1K,IAAI,IAAI,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC;gBAAE,IAAI,CAAC,cAAc,IAAI,KAAK,CAAC;YACjE,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,eAAe,CAAC;SAC/C;IACL,CAAC;IAED,gCAAa,GAAb,UAAc,UAAe,EAAE,MAAW,EAAE,OAAY,EAAE,OAAY,EAAE,SAAc,EAAE,OAAY,EAAE,eAAoB;QAEtH,+BAA+B;QAC/B,iFAAiF;QACjF,mEAAmE;QACnE,uEAAuE;QACvE,uEAAuE;QACvE,uGAAuG;QACvG,+FAA+F;QAC/F,qFAAqF;QACrF,GAAG;QAEH,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC;YAAE,OAAO,KAAK,CAAC;QACtD,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC;YAAE,OAAO,KAAK,CAAC;QAC/C,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC;YAAE,OAAO,KAAK,CAAC;QACjD,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC;YAAE,OAAO,KAAK,CAAC;QACjD,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,IAAI,CAAC,cAAc,CAAC;YAAE,OAAO,KAAK,CAAC;QAEjE,IAAI,CAAC,qCAAe,EAAC,SAAS,EAAE,IAAI,CAAC,YAAY,CAAC;YAAE,OAAO,KAAK,CAAC;QACjE,IAAI,CAAC,qCAAe,EAAC,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC;YAAE,OAAO,KAAK,CAAC;QAE5D,OAAO,IAAI,CAAC;IAChB,CAAC;IACL,eAAC;AAAD,CAAC;AArGY,4BAAQ;;;;;;;;;;;;;;;;ACDrB,uGAAuG;AACvG,SAAgB,YAAY,CAAC,KAAY;;IACrC,KAAK,IAAI,CAAC,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;QACvC,IAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAC9C,KAAuB,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,EAA1C,KAAK,CAAC,CAAC,CAAC,UAAE,KAAK,CAAC,CAAC,CAAC,SAAyB;KAC/C;AACL,CAAC;AALD,oCAKC;AAED,SAAgB,YAAY,CAAC,KAAa,EAAE,cAAsB,EAAE,eAAuB,EAAE,IAAa,EAAE,MAAuB;IAAvB,uCAAuB;IAC/H,IAAI,IAAI,GAAa,KAAK,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;IACjD,IAAI,IAAI,EAAE;QAAE,IAAI,CAAC,IAAI,EAAE,CAAC;KAAE;IAC1B,IAAI,MAAM,GAAW,EAAE,CAAC;IACxB,IAAI,CAAC,OAAO,CAAC,UAAC,IAAY,EAAE,KAAa;QACrC,IAAI,KAAK,GAAG,CAAC;YAAE,MAAM,IAAI,eAAe,CAAC;QACzC,IAAI,MAAM;YAAE,MAAM,IAAI,yBAAyB,CAAC;QAChD,MAAM,IAAI,IAAI,CAAC;QACf,IAAI,MAAM;YAAE,MAAM,IAAI,SAAS,CAAC;IACpC,CAAC,CAAC,CAAC;IACH,OAAO,MAAM,CAAC;AAClB,CAAC;AAXD,oCAWC;AAED,SAAgB,KAAK,CAAC,KAAa,EAAE,SAAiB;IAClD,IAAI,KAAK,GAAa,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;IAC7C,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,UAAC,CAAS,IAAK,QAAC,CAAC,IAAI,EAAE,EAAR,CAAQ,CAAC,CAAC;IAC3C,OAAO,KAAK,CAAC;AACjB,CAAC;AAJD,sBAIC;AAED,SAAgB,IAAI,CAAC,IAAc,EAAE,eAAuB,EAAE,IAAa,EAAE,MAAuB;IAAvB,uCAAuB;IAChG,IAAI,IAAI,EAAE;QAAE,IAAI,CAAC,IAAI,EAAE,CAAC;KAAE;IAC1B,IAAI,MAAM,GAAW,EAAE,CAAC;IACxB,IAAI,CAAC,OAAO,CAAC,UAAC,IAAY,EAAE,KAAa;QACrC,IAAI,KAAK,GAAG,CAAC;YAAE,MAAM,IAAI,eAAe,CAAC;QACzC,IAAI,MAAM;YAAE,MAAM,IAAI,yBAAyB,CAAC;QAChD,MAAM,IAAI,IAAI,CAAC;QACf,IAAI,MAAM;YAAE,MAAM,IAAI,SAAS,CAAC;IACpC,CAAC,CAAC,CAAC;IACH,OAAO,MAAM,CAAC;AAClB,CAAC;AAVD,oBAUC;AAED,SAAgB,MAAM,CAAC,MAAgB,EAAE,IAAa,EAAE,UAAyB;IAAzB,4CAAyB;IAE7E,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,UAAC,GAAW;QAC5B,IAAI,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC;YAAE,OAAO,OAAO,CAAC;;YACvC,OAAO,GAAG,CAAC;IACpB,CAAC,CAAC,CAAC;IAEH,IAAI,MAAM,GAAa,MAAM,CAAC,MAAM,CAAC,UAAC,CAAC,EAAE,CAAC,IAAK,aAAM,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,EAAvB,CAAuB,CAAC,CAAC;IACxE,IAAI,IAAI,EAAE;QACN,UAAU,GAAG,UAAU,CAAC,GAAG,CAAC,UAAC,CAAS,IAAK,QAAC,CAAC,WAAW,EAAE,EAAf,CAAe,CAAC,CAAC;QAE5D,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,UAAC,CAAS,EAAE,CAAS;YACtC,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC;YACpB,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC;YAEpB,IAAI,UAAU,CAAC,MAAM,IAAI,CAAC,EAAE;gBAAE,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;aAAE;iBACnD;gBACD,IAAI,cAAY,GAAY,KAAK,CAAC;gBAClC,IAAI,cAAY,GAAY,KAAK,CAAC;gBAElC,UAAU,CAAC,OAAO,CAAC,UAAC,CAAS;oBACzB,IAAI,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE;wBAAE,cAAY,GAAG,IAAI,CAAC;qBAAE;oBAC7C,IAAI,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE;wBAAE,cAAY,GAAG,IAAI,CAAC;qBAAE;gBACjD,CAAC,CAAC,CAAC;gBAEH,IAAI,CAAC,cAAY,IAAI,CAAC,cAAY,EAAE;oBAAE,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;iBAAE;qBAC3D,IAAI,cAAY,IAAI,CAAC,cAAY,EAAE;oBACpC,OAAO,CAAC,CAAC;iBACZ;qBACI,IAAI,CAAC,cAAY,IAAI,cAAY,EAAE;oBACpC,OAAO,CAAC,CAAC,CAAC;iBACb;qBACI;oBACD,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;iBAC3B;aACJ;YAED,sEAAsE;YACtE,yCAAyC;YACzC,0CAA0C;YAC1C,+BAA+B;QAGnC,CAAC,CAAC,CAAC;QAEH,gBAAgB;KACnB;IACD,OAAO,MAAM,CAAC;AAClB,CAAC;AAhDD,wBAgDC;AAED,SAAgB,wBAAwB,CAAC,KAAa,EAAE,WAAmB;IACvE,IAAI,KAAK,GAAa,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACvC,IAAI,MAAM,GAAW,uBAAuB,CAAC;IAC7C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE;QACnC,MAAM,IAAI,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;QACzB,IAAI,CAAC,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC,EAAE;YACxB,MAAM,IAAI,SAAS,CAAC;SACvB;KACJ;IAED,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,WAAW,GAAG,CAAC,CAAC,EAAE;QAAE,MAAM,IAAI,SAAS,CAAC;KAAE;IAC9D,OAAO,MAAM,CAAC,IAAI,EAAE,CAAC;AACzB,CAAC;AAZD,4DAYC;AAED,SAAgB,eAAe,CAAC,MAAW,EAAE,MAAW;IACpD,IAAI,MAAM,IAAI,SAAS,IAAI,MAAM,IAAI,SAAS;QAAE,OAAO,KAAK,CAAC;IAC7D,OAAO,MAAM,CAAC,IAAI,CAAC,WAAC,IAAI,aAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAlB,CAAkB,CAAC,CAAC;AAChD,CAAC;AAHD,0CAGC;AAED,SAAgB,UAAU,CAAC,KAAa;IACpC,OAAO,uBAAuB,GAAG,KAAK,GAAG,SAAS,CAAC;AACvD,CAAC;AAFD,gCAEC;AAED,SAAgB,oBAAoB,CAAC,KAAe,EAAE,eAAuB,EAAE,WAAmB;IAE9F,IAAI,aAAa,GAAW,KAAK,CAAC,SAAS,CAAC,UAAC,KAAK,IAAK,YAAK,CAAC,UAAU,CAAC,eAAe,CAAC,EAAjC,CAAiC,CAAC,CAAC;IAE1F,IAAI,aAAa,IAAI,CAAC,CAAC,EAAE;QAAE,OAAO,KAAK,CAAC;KAAE;SACrC;QAAE,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAAC,OAAO,KAAK,CAAC;KAAE;AACnD,CAAC;AAND,oDAMC;;;;;;;;;;;;;;;;ACvHD,0FAA0I;AAC1I,sGAAqF;AACrF,+HAAgL;AAGhL;IAII,2BAAY,YAAwB,EAAE,UAAgC;QAAhC,wDAA+B,CAAC;QAHtE,gBAAW,GAA+B,IAAI,CAAC;QAC/C,iBAAY,GAAe,EAAE,CAAC;QAG1B,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;QACjC,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAEzB,qEAAqE;QACrE,UAAU,EAAE,CAAC;IAEjB,CAAC;IAED,6CAAiB,GAAjB;QACI,wCAAwB,EAAC,2BAA2B,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC;QAChE,wCAAwB,EAAC,iCAAiC,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC;QACtE,wCAAwB,EAAC,+BAA+B,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC;QACpE,wCAAwB,EAAC,8BAA8B,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC;QACnE,wCAAwB,EAAC,gCAAgC,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC;IACzE,CAAC;IAED,4CAAgB,GAAhB,UAAiB,IAAgC;QAC7C,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;QACxB,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAC5B,IAAI,CAAC,mBAAmB,EAAE,CAAC;IAC/B,CAAC;IAED,gDAAoB,GAApB;QACI,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI;YAAE,OAAO;QAErC,CAAC,CAAC,0BAA0B,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;QACvE,CAAC,CAAC,uBAAuB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;QACtE,CAAC,CAAC,4BAA4B,CAAC,CAAC,IAAI,CAAC,UAAG,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,eAAK,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,MAAM,MAAG,CAAC,CAAC;QAC9G,CAAC,CAAC,4BAA4B,CAAC,CAAC,IAAI,CAAC,UAAG,IAAI,CAAC,WAAW,CAAC,wBAAwB,CAAC,gBAAgB,IAAI,IAAI,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,UAAG,IAAI,CAAC,WAAW,CAAC,wBAAwB,CAAC,oBAAoB,cAAI,IAAI,CAAC,WAAW,CAAC,wBAAwB,CAAC,mBAAmB,+BAAqB,IAAI,CAAC,WAAW,CAAC,wBAAwB,CAAC,gBAAgB,eAAK,IAAI,CAAC,WAAW,CAAC,wBAAwB,CAAC,gBAAgB,UAAO,CAAE,CAAC,CAAC;QAC1Z,CAAC,CAAC,2BAA2B,CAAC,CAAC,IAAI,CAAC,UAAG,IAAI,CAAC,WAAW,CAAC,wBAAwB,CAAC,eAAe,IAAI,IAAI,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,UAAG,IAAI,CAAC,WAAW,CAAC,wBAAwB,CAAC,mBAAmB,cAAI,IAAI,CAAC,WAAW,CAAC,wBAAwB,CAAC,kBAAkB,+BAAqB,IAAI,CAAC,WAAW,CAAC,wBAAwB,CAAC,eAAe,eAAK,IAAI,CAAC,WAAW,CAAC,wBAAwB,CAAC,eAAe,UAAO,CAAE,CAAC,CAAC;QACpZ,CAAC,CAAC,4BAA4B,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,wBAAwB,CAAC,qBAAqB,CAAC,CAAC;IAC1G,CAAC;IAED,+CAAmB,GAAnB;QAAA,iBAiFC;QAhFG,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI;YAAE,OAAO;QAErC,kBAAkB;QAClB,CAAC,CAAC,2BAA2B,CAAC,CAAC,KAAK,EAAE,CAAC;QACvC,CAAC,CAAC,iCAAiC,CAAC,CAAC,KAAK,EAAE,CAAC;QAC7C,CAAC,CAAC,+BAA+B,CAAC,CAAC,KAAK,EAAE,CAAC;QAC3C,CAAC,CAAC,8BAA8B,CAAC,CAAC,KAAK,EAAE,CAAC;QAC1C,CAAC,CAAC,gCAAgC,CAAC,CAAC,KAAK,EAAE,CAAC;QAE5C,wBAAwB;QACxB,YAAY;QACZ,IAAI,WAAW,GAAa,EAAE,CAAC;QAC/B,IAAI,CAAC,WAAW,CAAC,qBAAqB,CAAC,OAAO,CAAC,kBAAQ;YACnD,QAAQ,CAAC,eAAe,CAAC,OAAO,CAAC,oBAAU;gBACvC,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE;oBACnC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;iBAChC;YACL,CAAC,CAAC;QACN,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,WAAW,CAAC,oBAAoB,CAAC,OAAO,CAAC,iBAAO;YACjD,OAAO,CAAC,eAAe,CAAC,OAAO,CAAC,oBAAU;gBACtC,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE;oBACnC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;iBAChC;YACL,CAAC,CAAC;QACN,CAAC,CAAC,CAAC;QACH,IAAI,cAAc,GAAe,EAAE,CAAC;QACpC,WAAW,CAAC,OAAO,CAAC,oBAAU;YAC1B,IAAI,KAAK,GAAG,QAAQ,CAAC,UAAU,CAAC,CAAC;YACjC,IAAI,aAAa,GAAG,KAAI,CAAC,YAAY,CAAC,IAAI,CAAC,kBAAQ,IAAI,eAAQ,CAAC,UAAU,IAAI,KAAK,EAA5B,CAA4B,CAAC,CAAC;YACrF,IAAI,aAAa,IAAI,SAAS,EAAE;gBAC5B,cAAc,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;aACtC;QACL,CAAC,CAAC,CAAC;QACH,cAAc,CAAC,IAAI,CAAC,UAAC,EAAE,EAAE,EAAE,IAAK,SAAE,CAAC,SAAS,CAAC,aAAa,CAAC,EAAE,CAAC,SAAS,CAAC,EAAxC,CAAwC,CAAC,CAAC;QAE1E,IAAI,iBAAiB,GAAG,yCAAyB,EAAC,6BAA6B,CAAC,CAAC;QACjF,cAAc,CAAC,OAAO,CAAC,kBAAQ;YAC3B,IAAI,UAAU,GAAG,iBAAiB,CAAC,QAAQ,CAAC,QAAQ,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC,CAAC;YAC5E,CAAC,CAAC,2BAA2B,CAAC,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,QAAQ,CAAC,SAAS,EAAE,QAAQ,CAAC,UAAU,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC;QAC5H,CAAC,CAAC,CAAC;QAEH,YAAY;QACZ,IAAI,mBAAmB,GAAG,IAAI,CAAC,WAAW,CAAC,oBAAoB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC5E,IAAI,uBAAuB,GAAG,yCAAyB,EAAC,2BAA2B,CAAC,CAAC;QACrF,mBAAmB,CAAC,OAAO,CAAC,gBAAM;YAC9B,IAAI,UAAU,GAAG,uBAAuB,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;YAC1D,CAAC,CAAC,iCAAiC,CAAC,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC;QAC/F,CAAC,CAAC;QACF,IAAI,iBAAiB,GAAG,IAAI,CAAC,WAAW,CAAC,kBAAkB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACxE,IAAI,qBAAqB,GAAG,yCAAyB,EAAC,yBAAyB,CAAC,CAAC;QACjF,iBAAiB,CAAC,OAAO,CAAC,cAAI;YAC1B,IAAI,UAAU,GAAG,qBAAqB,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;YACtD,CAAC,CAAC,+BAA+B,CAAC,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC;QACzF,CAAC,CAAC,CAAC;QAEH,WAAW;QACX,IAAI,kBAAkB,GAAG,IAAI,CAAC,WAAW,CAAC,mBAAmB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC1E,IAAI,sBAAsB,GAAG,yCAAyB,EAAC,0BAA0B,CAAC,CAAC;QACnF,kBAAkB,CAAC,OAAO,CAAC,gBAAM;YAC7B,IAAI,UAAU,GAAG,sBAAsB,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;YACzD,CAAC,CAAC,gCAAgC,CAAC,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC;QAC9F,CAAC,CAAC,CAAC;QACH,IAAI,gBAAgB,GAAG,IAAI,CAAC,WAAW,CAAC,iBAAiB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACtE,IAAI,oBAAoB,GAAG,yCAAyB,EAAC,wBAAwB,CAAC,CAAC;QAC/E,gBAAgB,CAAC,OAAO,CAAC,cAAI;YACzB,IAAI,UAAU,GAAG,oBAAoB,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;YACrD,CAAC,CAAC,8BAA8B,CAAC,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC;QACxF,CAAC,CAAC;QAGF,mBAAmB;QACnB,CAAC,CAAC,2BAA2B,CAAC,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;QACvD,CAAC,CAAC,iCAAiC,CAAC,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;QAC7D,CAAC,CAAC,+BAA+B,CAAC,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;QAC3D,CAAC,CAAC,8BAA8B,CAAC,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;QAC1D,CAAC,CAAC,gCAAgC,CAAC,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;QAE5D,IAAI,CAAC,aAAa,EAAE,CAAC;IAEzB,CAAC;IAED,6CAAiB,GAAjB,UAAkB,qBAA4C;QAC1D,CAAC,CAAC,gCAAgC,CAAC,CAAC,KAAK,EAAE,CAAC;QAE5C,mCAAmC;QACnC,IAAI,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC;QAC5B,IAAI,eAAe,GAAG,4DAAqD,IAAI,CAAC,EAAE,OAAI;QACtF,IAAI,qBAAqB,CAAC,MAAM,IAAI,CAAC,EAAE;YACnC,eAAe,IAAI,0EAA0E,CAAC;YAC9F,eAAe,IAAI,qBAAqB,CAAC;SAC5C;aACI;oCACQ,CAAC;gBACN,IAAI,YAAY,GAAG,qBAAqB,CAAC,CAAC,CAAC,CAAC;gBAC5C,IAAI,QAAQ,GAAG,YAAY,CAAC,QAAQ,CAAC;gBACrC,IAAI,cAAc,GAAG,YAAY,CAAC,SAAS,CAAC;gBAC5C,IAAI,aAAa,GAAG,YAAY,CAAC,QAAQ,CAAC;gBAE1C,IAAI,eAAe,GAAG,EAAE,CAAC;gBACzB,IAAI,cAAc,CAAC,MAAM,IAAI,CAAC,EAAE;oBAC5B,eAAe,GAAG,oEAAoE,CAAC;iBAC1F;qBACI;oBACD,eAAe,GAAG,qCAAmC;oBACrD,cAAc,CAAC,OAAO,CAAC,kBAAQ;wBAC3B,eAAe,IAAI,kCAA2B,QAAQ,CAAC,cAAc,eAAK,QAAQ,CAAC,YAAY,WAAQ;oBAC3G,CAAC,CAAC;oBACF,eAAe,IAAI,OAAO;iBAC7B;gBAED,IAAI,cAAc,GAAG,EAAE,CAAC;gBACxB,IAAI,aAAa,CAAC,MAAM,IAAI,CAAC,EAAE;oBAC3B,cAAc,GAAG,mEAAmE,CAAC;iBACxF;qBACI;oBACD,cAAc,GAAG,qCAAmC;oBACpD,aAAa,CAAC,OAAO,CAAC,iBAAO;wBACzB,cAAc,IAAI,kCAA2B,OAAO,CAAC,aAAa,eAAK,OAAO,CAAC,WAAW,WAAQ;oBACtG,CAAC,CAAC;oBACF,cAAc,IAAI,OAAO;iBAC5B;gBAED,IAAI,WAAW,GAAG,qMAEwF,CAAC,waAM1D,QAAQ,CAAC,SAAS,uKAItC,CAAC,0NAGhB,eAAe,4JAGf,cAAc,yFAGrB;gBAEP,IAAI,aAAa,GAAG,iFAEd,WAAW,+CAEhB;gBAED,eAAe,IAAI,aAAa,CAAC;;YA3DrC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,qBAAqB,CAAC,MAAM,EAAE,CAAC,EAAE;wBAA5C,CAAC;aA4DT;SACJ;QAED,eAAe,IAAI,QAAQ;QAC3B,CAAC,CAAC,gCAAgC,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QAE1D,yBAAyB;QACzB,CAAC,CAAC,gBAAgB,CAAC,CAAC,EAAE,CAAC,OAAO,EAAE;YAE5B,IAAI,QAAQ,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACtC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;gBAC9B,CAAC,CAAC,IAAI,CAAC,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;aACjC;iBACI;gBACD,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;aAC9B;QACL,CAAC,CAAC;IAEN,CAAC;IAGD,yCAAa,GAAb;QAAA,iBAgEC;QA/DG,IAAI,iBAAiB,GAAG,IAAI,CAAC,WAAW,CAAC,qBAAqB,CAAC;QAC/D,IAAI,gBAAgB,GAAG,IAAI,CAAC,WAAW,CAAC,oBAAoB,CAAC;QAE7D,wBAAwB;QACxB,IAAI,mBAAmB,GAAa,EAAE,CAAC;QACvC,iBAAiB,CAAC,OAAO,CAAC,kBAAQ;YAC9B,QAAQ,CAAC,eAAe,CAAC,OAAO,CAAC,oBAAU;gBACvC,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE;oBAC3C,mBAAmB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;iBACxC;YACL,CAAC,CAAC;QACN,CAAC,CAAC,CAAC;QACH,gBAAgB,CAAC,OAAO,CAAC,iBAAO;YAC5B,OAAO,CAAC,eAAe,CAAC,OAAO,CAAC,oBAAU;gBACtC,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE;oBAC3C,mBAAmB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;iBACxC;YACL,CAAC,CAAC;QACN,CAAC,CAAC;QACF,IAAI,mBAAmB,GAAa,yCAAyB,EAAC,2BAA2B,CAAC,CAAC;QAC3F,IAAI,cAAc,GAAe,EAAE,CAAC;QACpC,mBAAmB,CAAC,OAAO,CAAC,oBAAU;YAClC,IAAI,KAAK,GAAG,QAAQ,CAAC,UAAU,CAAC,CAAC;YACjC,IAAI,aAAa,GAAG,KAAI,CAAC,YAAY,CAAC,IAAI,CAAC,kBAAQ,IAAI,eAAQ,CAAC,UAAU,IAAI,KAAK,EAA5B,CAA4B,CAAC,CAAC;YACrF,IAAI,aAAa,IAAI,SAAS,EAAE;gBAC5B,IAAI,mBAAmB,CAAC,QAAQ,CAAC,aAAa,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC,EAAE;oBACnE,cAAc,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;iBACtC;aACJ;QACL,CAAC,CAAC,CAAC;QACH,cAAc,CAAC,IAAI,CAAC,UAAC,EAAE,EAAE,EAAE,IAAK,SAAE,CAAC,SAAS,CAAC,aAAa,CAAC,EAAE,CAAC,SAAS,CAAC,EAAxC,CAAwC,CAAC,CAAC;QAE1E,IAAI,aAAa,GAA0B,EAAE,CAAC;QAC9C,cAAc,CAAC,OAAO,CAAC,kBAAQ;YAC3B,IAAI,mBAAmB,GAAG,iBAAiB,CAAC,MAAM,CAAC,kBAAQ,IAAI,eAAQ,CAAC,eAAe,CAAC,QAAQ,CAAC,QAAQ,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC,EAAjE,CAAiE,CAAC,CAAC;YAClI,IAAI,kBAAkB,GAAG,gBAAgB,CAAC,MAAM,CAAC,iBAAO,IAAI,cAAO,CAAC,eAAe,CAAC,QAAQ,CAAC,QAAQ,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC,EAAhE,CAAgE,CAAC,CAAC;YAE9H,aAAa,CAAC,IAAI,CAAC,IAAI,+CAAmB,CAAC,QAAQ,EAAE,mBAAmB,EAAE,kBAAkB,CAAC,CAAC,CAAC;QACnG,CAAC,CAAC;QAEF,aAAa,CAAC,IAAI,CAAC,UAAC,EAAE,EAAE,EAAE,IAAK,SAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,aAAa,CAAC,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,EAA1D,CAA0D,CAAC,CAAC;QAE3F,IAAI,uBAAuB,GAAa,yCAAyB,EAAC,iCAAiC,CAAC,CAAC;QACrG,IAAI,uBAAuB,CAAC,MAAM,GAAG,CAAC,EAAE;YACpC,aAAa,GAAG,aAAa,CAAC,MAAM,CAAC,sBAAY,IAAI,4CAAe,EAAC,YAAY,CAAC,mBAAmB,EAAE,yCAAyB,EAAC,iCAAiC,CAAC,CAAC,EAA/G,CAA+G,CAAC,CAAC;SACzK;QACD,IAAI,qBAAqB,GAAa,yCAAyB,EAAC,+BAA+B,CAAC,CAAC;QACjG,IAAI,qBAAqB,CAAC,MAAM,GAAG,CAAC,EAAE;YAClC,aAAa,GAAG,aAAa,CAAC,MAAM,CAAC,sBAAY,IAAI,4CAAe,EAAC,YAAY,CAAC,iBAAiB,EAAE,yCAAyB,EAAC,+BAA+B,CAAC,CAAC,EAA3G,CAA2G,CAAC,CAAC;SACrK;QACD,IAAI,oBAAoB,GAAa,yCAAyB,EAAC,8BAA8B,CAAC,CAAC;QAC/F,IAAI,oBAAoB,CAAC,MAAM,GAAG,CAAC,EAAE;YACjC,aAAa,GAAG,aAAa,CAAC,MAAM,CAAC,sBAAY,IAAI,4CAAe,EAAC,YAAY,CAAC,gBAAgB,EAAE,yCAAyB,EAAC,8BAA8B,CAAC,CAAC,EAAzG,CAAyG,CAAC,CAAC;SACnK;QACD,IAAI,sBAAsB,GAAa,yCAAyB,EAAC,gCAAgC,CAAC,CAAC;QACnG,IAAI,sBAAsB,CAAC,MAAM,GAAG,CAAC,EAAE;YACnC,aAAa,GAAG,aAAa,CAAC,MAAM,CAAC,sBAAY,IAAI,4CAAe,EAAC,YAAY,CAAC,kBAAkB,EAAE,yCAAyB,EAAC,gCAAgC,CAAC,CAAC,EAA7G,CAA6G,CAAC;SACtK;QAKD,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC,CAAC;IAC1C,CAAC;IAIL,wBAAC;AAAD,CAAC;AAzRY,8CAAiB;;;;;;;;;;;;;ACL9B,uC;;;;;;;;;;;;;;;ACIA,SAAgB,wBAAwB,CAAC,QAAgB,EAAE,MAAgB,EAAE,WAAoB,EAAE,cAAiC,EAAE,QAAwB;IAA3D,2DAAiC;IAAE,0CAAwB;IAC1J,CAAC,CAAC,QAAQ,CAAC,CAAC,YAAY,CAAC;QACrB,UAAU,EAAE,KAAK;QACjB,kBAAkB,EAAE,OAAO;QAE3B,iBAAiB,EAAE,UAAC,WAAW,EAAE,QAAQ;YACrC,IAAI,WAAW,IAAI,QAAQ,EAAE;gBACzB,OAAO,KAAK,CAAC;aAChB;iBACI;gBACD,OAAO,WAAW,GAAG,WAAW,CAAC;aACpC;QACL,CAAC;KACJ,CAAC,CAAC;IAEH,IAAI,cAAc,IAAI,SAAS,EAAE;QAC7B,MAAM,CAAC,OAAO,CAAC,UAAC,OAAY;YACxB,CAAC,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC;QACtE,CAAC,CAAC,CAAC;KACN;SACI;QACD,cAAc,CAAC,OAAO,CAAC,UAAC,OAAc;YAClC,CAAC,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC;QAC5E,CAAC,CAAC,CAAC;KACN;IAED,CAAC,CAAC,QAAQ,CAAC,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;IAEpC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,mBAAmB,EAAE,UAAC,CAAC,EAAE,YAAY,EAAE,UAAU,EAAE,aAAa;QAC3E,WAAW,CAAC,aAAa,EAAE,CAAC;IAChC,CAAC,CAAC,CAAC;AACP,CAAC;AA/BD,4DA+BC;AAED,SAAgB,yBAAyB,CAAC,QAAgB;IACtD,OAAO,CAAC,CAAC,QAAQ,CAAC,CAAC,GAAG,EAAE,CAAC;AAC7B,CAAC;AAFD,8DAEC;;;;;;;;;;;;;;;;;ACnCD;IAKI,yCAAY,OAAe,EAAE,aAAqB,EAAE,YAAgC;QAApF,iBA8BC;QA7BG,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;QAEjC,CAAC,CAAC,aAAa,CAAC,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,iVAAiV,CAAC,CAAC;QAEjX,CAAC,CAAC,yBAAyB,CAAC,CAAC,YAAY,CAAC;YACtC,UAAU,EAAE,KAAK;YACjB,kBAAkB,EAAE,OAAO;YAE3B,iBAAiB,EAAE,UAAC,WAAW,EAAE,QAAQ;gBACrC,IAAI,WAAW,IAAI,QAAQ,EAAE;oBACzB,OAAO,eAAe,CAAC;iBAC1B;qBACI;oBACD,OAAO,WAAW,GAAG,WAAW,CAAC;iBACpC;YACL,CAAC;SACJ,CAAC,CAAC;QACH,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,UAAC,KAAuB;YAC9C,CAAC,CAAC,yBAAyB,CAAC,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;QAClG,CAAC,CAAC,CAAC;QACH,CAAC,CAAC,yBAAyB,CAAC,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;QAGrD,CAAC,CAAC,yBAAyB,CAAC,CAAC,EAAE,CAAC,mBAAmB,EAAE,UAAC,CAAC,EAAE,YAAY,EAAE,UAAU,EAAE,aAAa;YAC5F,KAAI,CAAC,sBAAsB,EAAE,CAAC;QAClC,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,sBAAsB,EAAE,CAAC;IAElC,CAAC;IAED,iDAAO,GAAP;QACI,CAAC,CAAC,yBAAyB,CAAC,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;IACzD,CAAC;IAED,gEAAsB,GAAtB;QAEI,IAAI,MAAM,GAAuB,CAAC,CAAC,CAAC,yBAAyB,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;QAEtE,IAAI,cAAc,GAAa,EAAE,CAAC;QAClC,IAAI,aAAa,GAAa,EAAE,CAAC;QACjC,IAAI,aAAa,GAAa,EAAE,CAAC;QACjC,IAAI,YAAY,GAAa,EAAE,CAAC;QAChC,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,UAAC,QAA0B;YACjD,IAAI,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;gBAChC,cAAc,CAAC,IAAI,OAAnB,cAAc,EAAS,QAAQ,CAAC,OAAO,EAAE;gBACzC,IAAI,QAAQ,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE;oBAAE,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;iBAAE;aACrF;iBACI;gBACD,aAAa,CAAC,IAAI,OAAlB,aAAa,EAAS,QAAQ,CAAC,OAAO,EAAE;gBACxC,IAAI,QAAQ,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE;oBAAE,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;iBAAE;aACpF;QACL,CAAC,CAAC,CAAC;QAEH,IAAI,KAAK,GAAG,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,SAAS,EAAE,CAAC;QACxC,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE;YAAE,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;SAAE;QACrF,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE;YAAE,KAAK,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;SAAE;QAEtF,YAAY,CAAC,OAAO,CAAC,UAAC,KAAa;YAC/B,KAAK,CAAC,OAAO,CAAC,GAAG,GAAG,KAAK,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACrD,CAAC,CAAC,CAAC;QACH,aAAa,CAAC,OAAO,CAAC,UAAC,KAAa;YAChC,KAAK,CAAC,OAAO,CAAC,GAAG,GAAG,KAAK,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QACpD,CAAC,CAAC,CAAC;QAEH,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,kCAAkC;IAE1E,CAAC;IACL,sCAAC;AAAD,CAAC;AA1EY,0EAA+B;AA6E5C;IAMI,0BAAY,IAAY,EAAE,OAAgB,EAAE,OAAiB,EAAE,WAAmB;QAC9E,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;IACnC,CAAC;IACL,uBAAC;AAAD,CAAC;AAZY,4CAAgB;;;;;;;;;;;;;ACjF7B,uC;;;;;;;;;;;;;;;ACAA,0FAA0I;AAE1I,0GAA2E;AAE3E;IAUI,uBAAY,eAAuB,EAAE,WAAkC,EAAE,UAAgC;QAAhC,wDAA+B,CAAC;QARzG,gBAAW,GAA0B,EAAE,CAAC;QAUpC,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QAC/B,IAAI,CAAC,eAAe,GAAG,eAAe,CAAC;QACvC,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,OAAO,CAAC,0BAA0B,CAAC,CAAC;QAEhF,IAAI,CAAC,yBAAyB,EAAE,CAAC;QAEjC,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;QAClE,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;QAChE,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QAEzD,qEAAqE;QACrE,UAAU,EAAE,CAAC;IAEjB,CAAC;IAED,iDAAyB,GAAzB;QAAA,iBAQC;QAPG,wCAAwB,EAAC,IAAI,CAAC,eAAe,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,UAAC,OAA4B,IAAK,QAAC,OAAO,CAAC,eAAe,EAAE,OAAO,CAAC,KAAK,CAAC,EAAxC,CAAwC,CAAC,EAAE,KAAK,CAAC,CAAC;QAElK,mFAAmF;QACnF,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC,EAAE,CAAC,OAAO,EAAE;YAC5D,KAAI,CAAC,cAAc,EAAE,CAAC;QAC1B,CAAC,CAAC;IAEN,CAAC;IAED,mCAAW,GAAX;QACI,IAAI,IAAI,CAAC,cAAc,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE;YAClG,OAAO,KAAK,CAAC;SAChB;aACI;YACD,OAAO,IAAI,CAAC;SACf;IACL,CAAC;IAED,yCAAiB,GAAjB;QACI,IAAI,CAAC,eAAe,EAAE,CAAC;QACvB,IAAI,OAAO,GAAG,IAAI,CAAC;QAEnB,IAAI,IAAI,CAAC,cAAc,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE;YAClG,OAAO,GAAG,KAAK,CAAC;YAEhB,IAAI,CAAC,cAAc,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;YACxH,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;YACrH,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;YAC5G,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;SAC7E;QAED,OAAO,OAAO,CAAC;IAEnB,CAAC;IAED,uCAAe,GAAf;QAEI,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;QAAC,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC;QAC3F,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;QAAC,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC;QACzF,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;QAAC,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC;QACnF,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAC3E,CAAC;IAED,gDAAgD;IAChD,qCAAa,GAAb;QACI,IAAI,WAAW,GAAG,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,GAAG,EAAE,CAAC;QAEhD,IAAI,WAAW,IAAI,EAAE,IAAI,WAAW,IAAI,SAAS,EAAE;YAC/C,IAAI,CAAC,WAAW,EAAE,CAAC;SACtB;aACI;YACD,IAAI,YAAY,GAAwB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,iBAAO,IAAI,cAAO,CAAC,KAAK,IAAI,WAAW,EAA5B,CAA4B,CAAC,CAAC;YAEvG,IAAI,YAAY,IAAI,SAAS,EAAE;gBAC3B,IAAI,CAAC,WAAW,EAAE,CAAC;aACtB;iBACI;gBACD,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;aAChC;SACJ;IAEL,CAAC;IAED,mCAAW,GAAX;QACI,IAAI,CAAC,eAAe,EAAE,CAAC;QAEvB,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAC5B,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAC3B,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAC5B,CAAC;IAED,iCAAS,GAAT,UAAU,OAA4B;QAClC,IAAI,CAAC,eAAe,EAAE,CAAC;QAEvB,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QAC3C,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QACzC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IACvC,CAAC;IAED,uCAAe,GAAf;QACI,IAAI,YAAY,GAAwB,IAAI,+CAAmB,CAC3D,IAAI,CAAC,cAAc,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,EACpC,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,EACnC,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CACnC,CAAC;QAEF,OAAO,YAAY,CAAC;IACxB,CAAC;IAED,sCAAc,GAAd;QACI,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IACtD,CAAC;IAIL,oBAAC;AAAD,CAAC;AA3HY,sCAAa;;;;;;;;;;;;;;;;;ACJ1B,qFAAuI;AACvI,+EAAiD;AACjD,mGAAiE;AACjE,mHAAoH;AACpH,gHAAsF;AACtF,mGAAuE;AAGvE;IAcI,wBAAY,IAAS,EAAE,SAAc,EAAE,gBAAqB,EAAE,sBAA2B;QAAzF,iBAsCC;QA1CD,aAAQ,GAAkB,EAAE,CAAC;QAC7B,mBAAc,GAAkB,EAAE,CAAC;QACnC,oBAAe,GAAkB,EAAE,CAAC;QACpC,+BAA0B,GAAkB,EAAE,CAAC;QAE3C,CAAC,CAAC;YACE,KAAI,CAAC,SAAS,GAAG,oCAAY,EAAC,8BAAQ,EAAc,IAAI,CAAC,CAAC;YAC1D,KAAI,CAAC,SAAS,CAAC,IAAI,CAAC,UAAC,CAAW,EAAE,CAAW,IAAK,QAAC,CAAC,UAAU,GAAG,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAApC,CAAoC,CAAC,CAAC;YACxF,KAAI,CAAC,SAAS,CAAC,GAAG,CAAC,UAAC,IAAc;gBAC9B,IAAI,CAAC,UAAU,EAAE,CAAC;gBAClB,OAAO,IAAI,CAAC;YAChB,CAAC,CAAC,CAAC;YAEH,8BAA8B;YAE9B,IAAI;gBACA,KAAI,CAAC,QAAQ,GAAG,oCAAY,EAAC,iCAAW,EAAiB,SAAS,CAAC,CAAC;gBACpE,KAAI,CAAC,eAAe,GAAG,oCAAY,EAAC,iCAAW,EAAiB,gBAAgB,CAAC,CAAC;gBAClF,KAAI,CAAC,0BAA0B,GAAG,oCAAY,EAAC,iCAAW,EAAiB,sBAAsB,CAAC,CAAC;aACtG;YACD,WAAM;gBACF,OAAO,CAAC,GAAG,CAAC,yCAAyC,CAAC,CAAC;gBACvD,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;gBACvB,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;gBAC9B,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC;aACvC;YAED,KAAI,CAAC,iBAAiB,GAAG,CAAC,oBAAoB,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,kBAAkB,CAAC;YAC3G,KAAI,CAAC,iBAAiB,EAAE,CAAC;YACzB,KAAI,CAAC,2BAA2B,EAAE,CAAC;YAEnC,KAAI,CAAC,eAAe,EAAE,CAAC;YACvB,KAAI,CAAC,mBAAmB,CAAC,KAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;YAEhD,sBAAsB;YACtB,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,iBAAiB,EAAE;gBAC5B,IAAI,CAAC,CAAC,aAAa,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE;oBAC7B,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;iBACpC;YACL,CAAC,CAAC,CAAC;QAEP,CAAC,CAAC,CAAC;IACP,CAAC;IAED,0CAAiB,GAAjB;QAAA,iBAyBC;QAxBG,YAAY;QACZ,IAAI,YAAY,GAAa,EAAE,CAAC;QAChC,IAAI,WAAW,GAAa,EAAE,CAAC;QAC/B,IAAI,UAAU,GAAa,EAAE,CAAC;QAC9B,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,UAAC,QAAkB;YAClC,QAAQ,CAAC,SAAS,CAAC,OAAO,CAAC,UAAC,QAAQ,IAAK,mBAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAjC,CAAiC,CAAC,CAAC;YAC5E,QAAQ,CAAC,SAAS,CAAC,OAAO,CAAC,UAAC,OAAO,IAAK,kBAAW,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,EAArC,CAAqC,CAAC,CAAC;YAC/E,QAAQ,CAAC,eAAe,CAAC,OAAO,CAAC,UAAC,MAAM,IAAK,iBAAU,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAA5B,CAA4B,CAAC,CAAC;QAC/E,CAAC,CAAC;QACF,YAAY,GAAG,4BAAM,EAAC,YAAY,EAAE,IAAI,CAAC,CAAC;QAC1C,WAAW,GAAG,4BAAM,EAAC,WAAW,EAAE,IAAI,CAAC,CAAC;QACxC,UAAU,GAAG,4BAAM,EAAC,UAAU,EAAE,IAAI,CAAC,CAAC;QAEtC,IAAI,CAAC,kBAAkB,CAAC,oBAAoB,EAAE,YAAY,CAAC,CAAC;QAC5D,IAAI,CAAC,kBAAkB,CAAC,mBAAmB,EAAE,WAAW,CAAC,CAAC;QAC1D,IAAI,CAAC,kBAAkB,CAAC,iBAAiB,EAAE,4BAAM,EAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,UAAC,QAAkB,IAAK,eAAQ,CAAC,MAAM,EAAf,CAAe,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;QACtH,IAAI,CAAC,kBAAkB,CAAC,kBAAkB,EAAE,UAAU,CAAC,CAAC;QAExD,eAAe;QACf,CAAC,CAAC,qBAAqB,CAAC,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;QAC3C,CAAC,CAAC,sBAAsB,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,CAAC;QAE9D,CAAC,CAAC,qBAAqB,CAAC,CAAC,MAAM,CAAC,cAAM,YAAI,CAAC,oBAAoB,EAAE,EAA3B,CAA2B,CAAC;QAClE,CAAC,CAAC,sBAAsB,CAAC,CAAC,MAAM,CAAC,cAAM,YAAI,CAAC,oBAAoB,EAAE,EAA3B,CAA2B,CAAC;IACvE,CAAC;IAED,wCAAe,GAAf;QAAA,iBAqEC;QApEG,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC,oBAAoB,CAAC,CAAC,SAAS,CAAC;YAC/C,oDAAoD;YACpD,KAAK,EAAE,yCAAyC;YAChD,SAAS,EAAE,KAAK;YAChB,IAAI,EAAE,KAAK;YACX,MAAM,EAAE,KAAK;YACb,MAAM,EAAE,IAAI;YACZ,OAAO,EAAE,KAAK;YACd,kBAAkB;YAClB,aAAa,EAAE,IAAI;YACnB,QAAQ,EACR;gBACI,MAAM,EAAE,QAAQ;aACnB;YACD,OAAO,EAAE;gBACL,EAAE,IAAI,EAAE,YAAY,EAAE,SAAS,EAAE,8DAA8D,EAAC;gBAChG,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,8BAA8B,EAAE;gBAC7D,EAAE,IAAI,EAAE,kBAAkB,EAAE,SAAS,EAAE,iCAAiC,EAAE,KAAK,EAAE,OAAO,EAAE;gBAC1F,EAAE,IAAI,EAAE,kBAAkB,EAAE,SAAS,EAAE,iCAAiC,EAAE,KAAK,EAAE,OAAO,EAAE;gBAC1F,EAAE,IAAI,EAAE,EAAE,CAAC,EAAE,YAAY,EAAE,OAAO,EAAE,mBAAmB,EAAE,EAAE,SAAS,EAAE,8DAA8D,EAAC;gBACrI,EAAE,IAAI,EAAE,wBAAwB,EAAE,SAAS,EAAE,wCAAwC,EAAE,KAAK,EAAE,OAAO,EAAE;gBACvG,EAAE,IAAI,EAAE,EAAE,CAAC,EAAE,YAAY,EAAE,OAAO,EAAE,mBAAmB,EAAE,EAAE,SAAS,EAAE,8DAA8D,EAAC;gBACrI,EAAE,IAAI,EAAE,gBAAgB,EAAE,SAAS,EAAE,oCAAoC,EAAE,EAAE,IAAI;aACpF;YACD,KAAK,EAAE,CAAC,CAAC,CAAC;YACV,OAAO,EAAE;gBACL;oBACI,MAAM,EAAE,KAAK;oBACb,IAAI,EAAE,sCAAsC;oBAC5C,SAAS,EAAE,KAAK;oBAChB,OAAO,EAAE,OAAO;iBACnB;aAAC;YACN,IAAI,EAAE,IAAI,CAAC,SAAS;YACpB,YAAY,EAAE,UAAC,QAAQ,EAAE,IAAI;gBACzB,CAAC,CAAC,oBAAoB,CAAC,CAAC,IAAI,CAAC,kEAAkE,CAAC,CAAC;YACrG,CAAC;SACJ,CAAC,CAAC;QAEH,CAAC,CAAC,eAAe,CAAC,CAAC,QAAQ,CAAC,6BAA6B,CAAC,CAAC;QAC3D,CAAC,CAAC,gBAAgB,CAAC,CAAC,QAAQ,CAAC,2BAA2B,CAAC,CAAC;QAC1D,CAAC,CAAC,gBAAgB,CAAC,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,gCAAgC,CAAC,CAAC;QACnE,CAAC,CAAC,aAAa,CAAC,CAAC,QAAQ,CAAC,6BAA6B,CAAC,CAAC;QAEzD,IAAI,CAAC,qBAAqB,GAAG,IAAI,yDAA+B,CAAC,oBAAoB,EAAE,gBAAgB,EAAE;YACrG,IAAI,0CAAgB,CAAC,aAAa,EAAE,IAAI,EAAE,EAAE,EAAE,aAAa,CAAC;YAC5D,IAAI,0CAAgB,CAAC,cAAc,EAAE,IAAI,EAAE,EAAE,EAAE,cAAc,CAAC;YAC9D,IAAI,0CAAgB,CAAC,UAAU,EAAE,IAAI,EAAE,EAAE,EAAE,WAAW,CAAC;YACvD,IAAI,0CAAgB,CAAC,SAAS,EAAE,IAAI,EAAE,EAAE,EAAE,WAAW,CAAC;YACtD,IAAI,0CAAgB,CAAC,aAAa,EAAE,IAAI,EAAE,EAAE,EAAE,aAAa,CAAC;YAC5D,IAAI,0CAAgB,CAAC,aAAa,EAAE,IAAI,EAAE,EAAE,EAAE,aAAa,CAAC;YAC5D,IAAI,0CAAgB,CAAC,cAAc,EAAE,IAAI,EAAE,EAAE,EAAE,kBAAkB,CAAC;YAClE,IAAI,0CAAgB,CAAC,aAAa,EAAE,IAAI,EAAE,EAAE,EAAE,QAAQ,CAAC;SAC1D,CAAC,CAAC;QAGH,CAAC,CAAC,oBAAoB,CAAC,CAAC,EAAE,CAAC,WAAW,EAAE,UAAC,CAAC,EAAE,QAAQ;YAChD,KAAI,CAAC,mBAAmB,CAAC,KAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;QACjF,CAAC,CAAC,CAAC;QAEH,CAAC,CAAC,0BAA0B,CAAC,CAAC,EAAE,CAAC,OAAO,EAAE,IAAI,EAAE,UAAC,KAAK;YAClD,IAAI,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;YAChC,IAAI,GAAG,GAAG,KAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YACjC,IAAI,QAAQ,GAAa,GAAG,CAAC,IAAI,EAAE,CAAC;YACpC,KAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;QACjC,CAAC,CAAC,CAAC;QAEH,eAAe;QACf,CAAC,CAAC,0BAA0B,CAAC,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,CAAC,WAAW,CAAC,cAAc,CAAC,EAAC,CAAC,CAAC,CAAC;IAChH,CAAC;IAED,2CAAkB,GAAlB,UAAmB,QAAgB,EAAE,MAAgB;QAArD,iBAuBC;QAtBG,CAAC,CAAC,QAAQ,CAAC,CAAC,YAAY,CAAC;YACrB,UAAU,EAAE,KAAK;YACjB,kBAAkB,EAAE,OAAO;YAE3B,iBAAiB,EAAE,UAAC,WAAW,EAAE,QAAQ;gBACrC,IAAI,WAAW,IAAI,QAAQ,EAAE;oBACzB,OAAO,KAAK,CAAC;iBAChB;qBACI;oBACD,OAAO,WAAW,GAAG,WAAW,CAAC;iBACpC;YACL,CAAC;SACJ,CAAC,CAAC;QAEH,MAAM,CAAC,OAAO,CAAC,UAAC,OAAY;YACxB,CAAC,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC;QAClE,CAAC,CAAC,CAAC;QACH,CAAC,CAAC,QAAQ,CAAC,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;QAEpC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,mBAAmB,EAAE,UAAC,CAAC,EAAE,YAAY,EAAE,UAAU,EAAE,aAAa;YAC3E,KAAI,CAAC,oBAAoB,EAAE,CAAC;QAChC,CAAC,CAAC,CAAC;IACP,CAAC;IAED,6CAAoB,GAApB;QAAA,iBAqBC;QAnBG,IAAI,cAAc,GAAe,EAAE,CAAC;QAEpC,IAAI,YAAqB,CAAC;QAE1B,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,UAAC,QAAkB;YAEtC,YAAY,GAAG,IAAI,CAAC,CAAC,wBAAwB;YAG7C,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,KAAI,CAAC,yBAAyB,CAAC,oBAAoB,CAAC,EAAE,KAAI,CAAC,yBAAyB,CAAC,mBAAmB,CAAC,EAAE,KAAI,CAAC,yBAAyB,CAAC,iBAAiB,CAAC,EAAE,KAAI,CAAC,yBAAyB,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAC,sBAAsB,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,qBAAqB,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE;gBAC5S,YAAY,GAAG,KAAK,CAAC;aACxB;YAGD,IAAI,YAAY,EAAE;gBAAE,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;aAAE;QAExD,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;IACrC,CAAC;IAED,kDAAyB,GAAzB,UAA0B,QAAgB;QACtC,yCAAyC;QACzC,OAAO,CAAC,CAAC,QAAQ,CAAC,CAAC,GAAG,EAAE,CAAC;IAC7B,CAAC;IAED,oCAAW,GAAX,UAAY,cAA0B;QAClC,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;QACvB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,IAAI,EAAE,CAAC;QAC/C,IAAI,CAAC,mBAAmB,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;IACpD,CAAC;IAED,qCAAY,GAAZ;QAEI,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,UAAC,UAAkB;YAC9C,CAAC,CAAC,UAAU,CAAC,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC;YACxC,CAAC,CAAC,UAAU,CAAC,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;QAC1C,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QAEjC,CAAC,CAAC,qBAAqB,CAAC,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;QAE3C,CAAC,CAAC,sBAAsB,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,CAAC;QAE9D,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACrC,CAAC;IAED,4CAAmB,GAAnB,UAAoB,KAAa;QAE7B,QAAQ,KAAK,EAAE;YACX,KAAK,CAAC;gBAAE,CAAC,CAAC,wBAAwB,CAAC,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;gBAAC,MAAM;YAC5E,KAAK,CAAC;gBAAE,CAAC,CAAC,wBAAwB,CAAC,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;gBAAC,MAAM;YAC1E,OAAO,CAAC,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAC,IAAI,CAAC,KAAK,GAAG,wBAAwB,CAAC,CAAC;SAC/E;IACL,CAAC;IAED,sCAAa,GAAb,UAAc,IAAU;QACpB,IAAI,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;QAEtB,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAC3C,IAAI,KAAK,GAAG,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAEpD,IAAI,UAAU,GAAG,IAAI,CAAC,WAAW,EAAE,GAAG,GAAG,GAAG,KAAK,GAAG,GAAG,GAAG,GAAG,CAAC;QAE9D,OAAO,UAAU,CAAC,QAAQ,EAAE,CAAC;IACjC,CAAC;IAED,sCAAa,GAAb,UAAc,QAAkB;QAC5B,kBAAkB;QAClB,CAAC,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;QAC5C,CAAC,CAAC,qBAAqB,CAAC,CAAC,IAAI,CAAC,gCAAW,EAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC;QACjE,CAAC,CAAC,oBAAoB,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;QAClD,CAAC,CAAC,uBAAuB,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC;QAC3D,CAAC,CAAC,sBAAsB,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC;QAE1D,cAAc;QACd,CAAC,CAAC,+BAA+B,CAAC,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;QACzD,IAAI,WAAW,GAAG,QAAQ,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;QAChD,IAAI,OAAO,GAAG,SAAS,GAAG,WAAW,CAAC;QACtC,CAAC,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QAE9B,yBAAyB;QACzB,CAAC,CAAC,+BAA+B,CAAC,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;QAC5D,CAAC,CAAC,wBAAwB,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QAE7C,UAAU;QACV,IAAI,QAAQ,CAAC,gBAAgB,IAAI,EAAE,EAAE;YACjC,CAAC,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC;SACvD;aACI;YACD,CAAC,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,oDAAoD,CAAC,CAAC;SAClF;QAED,gBAAgB;QAChB,IAAI,CAAC,2BAA2B,CAAC,QAAQ,CAAC,CAAC;QAE3C,kBAAkB;QAClB,CAAC,CAAC,4BAA4B,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;QAC1D,CAAC,CAAC,yBAAyB,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC;QAC7D,CAAC,CAAC,wBAAwB,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC;QAC5D,CAAC,CAAC,mBAAmB,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,sBAAsB,CAAC,CAAC;QAC7D,CAAC,CAAC,4BAA4B,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAC;QACjE,CAAC,CAAC,4BAA4B,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAC;QAEjE,aAAa;QACb,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,CAAC;QAEnC,qBAAqB;QACrB,IAAI,CAAC,2BAA2B,CAAC,QAAQ,CAAC,CAAC;QAE3C,8BAA8B;QAC9B,IAAI,QAAQ,CAAC,0BAA0B,IAAI,EAAE,EAAE;YAC3C,CAAC,CAAC,6BAA6B,CAAC,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC;YAC5D,CAAC,CAAC,6BAA6B,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,0BAA0B,CAAC,CAAC;SAC9E;aACI;YACD,CAAC,CAAC,6BAA6B,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;YACzD,CAAC,CAAC,6BAA6B,CAAC,CAAC,IAAI,CAAC,wEAAwE,CAAC;SAClH;QAED,8BAA8B;QAC9B,IAAI,CAAC,+BAA+B,CAAC,QAAQ,CAAC,CAAC;QAE/C,aAAa;QACb,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,CAAC;QAExC,0BAA0B;QAC1B,IAAI,CAAC,uBAAuB,CAAC,QAAQ,CAAC,CAAC;QAEvC,CAAC,CAAC,sBAAsB,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAC5C,CAAC;IAED,oDAA2B,GAA3B;QAAA,iBA4EC;QA3EG,CAAC,CAAC,sBAAsB,CAAC,CAAC,EAAE,CAAC,OAAO,EAAE,IAAI,EAAE,UAAC,KAAK;YAC9C,gDAAgD;YAChD,IAAI,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;YAChC,IAAI,GAAG,GAAG,KAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAEzC,IAAI,GAAG,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE;gBACrB,sCAAsC;gBACtC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;gBACjB,EAAE,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;aAC3B;iBACI;gBACD,IAAI,GAAG,CAAC,IAAI,EAAE,IAAI,SAAS,EAAE;oBACzB,gBAAgB;oBAChB,GAAG,CAAC,KAAK,CAAC,KAAI,CAAC,wBAAwB,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;oBAC5D,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;iBACxB;aACJ;QACL,CAAC,CAAC,CAAC;QAEH,CAAC,CAAC,0BAA0B,CAAC,CAAC,EAAE,CAAC,OAAO,EAAE,IAAI,EAAE,UAAC,KAAK;YAClD,gDAAgD;YAChD,IAAI,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;YAChC,IAAI,GAAG,GAAG,KAAI,CAAC,eAAe,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAEvC,IAAI,GAAG,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE;gBACrB,sCAAsC;gBACtC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;gBACjB,EAAE,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;aAC3B;iBACI;gBACD,IAAI,GAAG,CAAC,IAAI,EAAE,IAAI,SAAS,EAAE;oBACzB,gBAAgB;oBAChB,GAAG,CAAC,KAAK,CAAC,KAAI,CAAC,wBAAwB,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;oBAC5D,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;iBACxB;aACJ;QACL,CAAC,CAAC,CAAC;QAEH,CAAC,CAAC,mBAAmB,CAAC,CAAC,EAAE,CAAC,OAAO,EAAE,IAAI,EAAE,UAAC,KAAK;YAC3C,gDAAgD;YAChD,IAAI,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;YAChC,IAAI,GAAG,GAAG,KAAI,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAEtC,IAAI,GAAG,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE;gBACrB,sCAAsC;gBACtC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;gBACjB,EAAE,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;aAC3B;iBACI;gBACD,IAAI,GAAG,CAAC,IAAI,EAAE,IAAI,SAAS,EAAE;oBACzB,gBAAgB;oBAChB,GAAG,CAAC,KAAK,CAAC,KAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;oBACtD,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;iBACxB;aACJ;QACL,CAAC,CAAC,CAAC;QAEH,CAAC,CAAC,iBAAiB,CAAC,CAAC,EAAE,CAAC,OAAO,EAAE,IAAI,EAAE,UAAC,KAAK;YACzC,gDAAgD;YAChD,IAAI,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;YAChC,IAAI,GAAG,GAAG,KAAI,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAErC,IAAI,GAAG,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE;gBACrB,sCAAsC;gBACtC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;gBACjB,EAAE,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;aAC3B;iBACI;gBACD,IAAI,GAAG,CAAC,IAAI,EAAE,IAAI,SAAS,EAAE;oBACzB,gBAAgB;oBAChB,GAAG,CAAC,KAAK,CAAC,KAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;oBACpD,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;iBACxB;aACJ;QACL,CAAC,CAAC,CAAC;IACP,CAAC;IAED,oDAA2B,GAA3B,UAA4B,QAAkB;QAC1C,6CAA6C;QAC7C,IAAI,IAAI,CAAC,iBAAiB,IAAI,SAAS;YAAE,IAAI,CAAC,iBAAiB,CAAC,OAAO,EAAE,CAAC;QAE1E,IAAI,CAAC,iBAAiB,GAAG,CAAC,CAAC,sBAAsB,CAAC,CAAC,SAAS,CAAC;YACzD,oDAAoD;YACpD,KAAK,EAAE,sBAAsB;YAC7B,SAAS,EAAE,KAAK;YAChB,IAAI,EAAE,KAAK;YACX,MAAM,EAAE,IAAI;YACZ,UAAU,EAAE,CAAC;YACb,MAAM,EAAE,KAAK;YACb,OAAO,EAAE,KAAK;YACd,UAAU,EAAE;gBACR,YAAY,EAAE,iDAAiD;aAClE;YACD,kBAAkB;YAClB,aAAa,EAAE,IAAI;YACnB,OAAO,EAAE;gBACL,EAAE,SAAS,EAAE,iBAAiB,EAAE,SAAS,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,cAAc,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE;gBACjG,EAAE,IAAI,EAAE,qBAAqB,EAAE,SAAS,EAAE,uBAAuB,EAAE,EAAE,GAAG;aAC3E;YACD,IAAI,EAAE,QAAQ,CAAC,eAAe;YAC9B,YAAY,EAAE,UAAC,QAAQ,EAAE,IAAI;gBACzB,CAAC,CAAC,sBAAsB,CAAC,CAAC,IAAI,CAAC,kEAAkE,CAAC,CAAC;YACvG,CAAC;SACJ,CAAC,CAAC;QAEH,IAAI,QAAQ,CAAC,eAAe,CAAC,MAAM,IAAI,CAAC,EAAE;YACtC,CAAC,CAAC,+BAA+B,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;SACzD;IACL,CAAC;IAED,iDAAwB,GAAxB,UAAyB,IAAkB;QAEvC,IAAI,SAAS,GAAW,0FAA0F,CAAC;QAEnH,SAAS,IAAI,0BAA0B;YACnC,yFAAyF;YACzF,oCAAoC,GAAG,IAAI,CAAC,eAAe,GAAG,OAAO;YACrE,OAAO,CAAC;QAGZ,SAAS,IAAI,0BAA0B;YACnC,sEAAsE;YACtE,oCAAoC,GAAG,2BAAmB,IAAI,CAAC,KAAK,gBAAK,IAAI,CAAC,KAAK,SAAM,GAAG,OAAO;YACnG,OAAO,CAAC;QAEZ,SAAS,IAAI,0BAA0B;YACnC,6EAA6E;YAC7E,oCAAoC,GAAG,IAAI,CAAC,YAAY,GAAG,OAAO;YAClE,OAAO,CAAC;QAEZ,SAAS,IAAI,0BAA0B;YACnC,gFAAgF;YAChF,oCAAoC,GAAG,UAAG,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAE,GAAG,OAAO;YACzG,OAAO,CAAC;QAEZ,SAAS,IAAI,UAAU;QACvB,OAAO,SAAS;IACpB,CAAC;IAED,4CAAmB,GAAnB,UAAoB,QAAkB;QAAtC,iBAwIC;QAvIG,IAAI,CAAC,cAAc,GAAG,EAAE,CAAC;QACzB,IAAI,mBAAmB,GAAyB,EAAE,CAAC;QAEnD,IAAI;YACA,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAC,IAAI;gBACvB,IAAI,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,oBAAa,QAAQ,CAAC,UAAU,MAAG,CAAC,EAAE;oBACzD,KAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,iCAAW,EAAE,CAAC,UAAU,CAAC,IAAI,EAAE,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC;iBACrF;YACL,CAAC,CAAC,CAAC;SACN;QACD,OAAO,GAAG,EAAE;YACR,OAAO,CAAC,GAAG,CAAC,qCAAqC,CAAC,CAAC;YACnD,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACjB,OAAO,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC;YACtC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;SAC9B;QAGD,6CAA6C;QAC7C,IAAI;YACA,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,cAAI;gBAC5B,IAAI,IAAI,CAAC,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC,EAAE;oBACtC,IAAI,YAAU,GAAG,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;oBAEvC,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,gBAAM,IAAI,aAAM,CAAC,UAAU,IAAI,YAAU,EAA/B,CAA+B,CAAC,EAAE;wBACtE,mBAAmB,CAAC,IAAI,CAAC,IAAI,wCAAkB,CAAC,YAAU,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;qBACxE;iBACJ;YACL,CAAC,CAAC;SACL;QACD,OAAO,GAAG,EAAE;YACR,OAAO,CAAC,GAAG,CAAC,8BAA8B,CAAC,CAAC;YAC5C,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACjB,OAAO,CAAC,GAAG,CAAC,+BAA+B,CAAC,CAAC;YAC7C,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;SACpC;QAGD,oCAAoC;QACpC,IAAI;YACA,QAAQ,CAAC,SAAS,CAAC,OAAO,CAAC,iBAAO;gBAC9B,KAAI,CAAC,eAAe,CAAC,OAAO,CAAC,cAAI;oBAE7B,IAAI,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,uCAAgC,OAAO,CAAC,mBAAmB,MAAG,CAAC,EAAE;wBACpF,IAAI,QAAQ,GAAG,IAAI,iCAAW,EAAE,CAAC,UAAU,CAAC,IAAI,EAAE,QAAQ,CAAC,UAAU,EAAE,mBAAmB,CAAC,CAAC;wBAE5F,iFAAiF;wBACjF,IAAI,QAAQ,CAAC,IAAI,IAAI,CAAC,IAAI,QAAQ,CAAC,MAAM,IAAI,GAAG,EAAE;4BAC9C,IAAI,YAAU,GAAG,QAAQ,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;4BAE3C,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,gBAAM,IAAI,aAAM,CAAC,UAAU,IAAI,YAAU,EAA/B,CAA+B,CAAC,EAAE;gCACtE,mBAAmB,CAAC,IAAI,CAAC,IAAI,wCAAkB,CAAC,YAAU,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;6BACxE;yBACJ;wBAED,KAAI,CAAC,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;qBACtC;gBACL,CAAC,CAAC;YACN,CAAC,CAAC,CAAC;SACN;QACD,OAAO,GAAG,EAAE;YACR,OAAO,CAAC,GAAG,CAAC,sCAAsC,CAAC,CAAC;YACpD,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACjB,OAAO,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAC;YAC1C,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;SACrC;QAED,uCAAuC;QACvC,IAAI;YACA,0DAA0D;YAC1D,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,gBAAM,IAAI,aAAM,CAAC,UAAU,IAAI,yBAAyB,EAA9C,CAA8C,CAAC,EAAE;gBACrF,IAAI,aAAa,GAAG,IAAI,iCAAW,EAAE,CAAC;gBACtC,aAAa,CAAC,IAAI,GAAG,eAAe,CAAC;gBACrC,aAAa,CAAC,EAAE,GAAG,oBAAa,QAAQ,CAAC,UAAU,6BAA0B,CAAC;gBAC9E,aAAa,CAAC,IAAI,GAAG,EAAE,CAAC;gBACxB,aAAa,CAAC,MAAM,GAAG,GAAG,CAAC;gBAC3B,aAAa,CAAC,KAAK,GAAG;oBAClB,QAAQ,EAAE,KAAK;oBACf,MAAM,EAAE,KAAK;oBACb,QAAQ,EAAE,KAAK;iBAClB;gBACD,aAAa,CAAC,IAAI,GAAG,yBAAyB,CAAC;gBAC/C,aAAa,CAAC,IAAI,GAAG,CAAC,CAAC;gBACvB,mBAAmB,CAAC,IAAI,CAAC,IAAI,wCAAkB,CAAC,yBAAyB,EAAE,aAAa,CAAC,EAAE,CAAC,CAAC,CAAC;gBAC9F,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;aAC3C;YAED,IAAI,CAAC,0BAA0B,CAAC,OAAO,CAAC,cAAI;gBACxC,IAAI,QAAQ,GAAG,IAAI,iCAAW,EAAE,CAAC,UAAU,CAAC,IAAI,EAAE,QAAQ,CAAC,UAAU,EAAE,mBAAmB,CAAC,CAAC;gBAC5F,IAAI,QAAQ,CAAC,IAAI,IAAI,CAAC,EAAE;oBACpB,QAAQ,CAAC,MAAM,GAAG,oBAAa,QAAQ,CAAC,UAAU,6BAA0B,CAAC;iBAChF;gBAED,KAAI,CAAC,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACvC,CAAC,CAAC,CAAC;SACN;QACD,OAAO,GAAG,EAAE;YACR,OAAO,CAAC,GAAG,CAAC,gDAAgD,CAAC,CAAC;YAC9D,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACjB,OAAO,CAAC,GAAG,CAAC,8BAA8B,CAAC,CAAC;YAC5C,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;SAChD;QAED,sEAAsE;QACtE,IAAI,qBAAqB,GAAkB,EAAE,CAAC;QAC9C,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,cAAI;YAC5B,IAAI,eAAe,GAAG,KAAI,CAAC,cAAc,CAAC,SAAS,CAAC,cAAI,IAAI,WAAI,CAAC,EAAE,IAAI,IAAI,CAAC,MAAM,EAAtB,CAAsB,CAAC,CAAC;YACpF,IAAI,eAAe,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM,IAAI,GAAG,EAAE;gBAC5C,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;aACpC;QACL,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,cAAc,GAAG,qBAAqB,CAAC;QAE5C,kBAAkB;QAClB,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,UAAC,EAAE,EAAE,EAAE,IAAK,SAAE,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,IAAI,CAAC,EAA9B,CAA8B,CAAC,CAAC;QAErE,IAAI;YACA,CAAC,CAAC,SAAS,CAAC,CAAC,MAAM,EAAE,CAAC;YACtB,CAAC,CAAC,mBAAmB,CAAC,CAAC,MAAM,CAAC,2BAAmB,QAAQ,CAAC,UAAU,+BAAyB,CAAC;YAC9F,IAAI,IAAI,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE;gBAChC,IAAI,4BAAY,CAAC,IAAI,CAAC,cAAc,EAAE,iBAAU,QAAQ,CAAC,UAAU,CAAE,EAAE,KAAK,CAAC,CAAC;aACjF;iBACI;gBACD,IAAI,eAAe,GAAG,qDAAqD,CAAC;gBAC5E,CAAC,CAAC,kBAAW,QAAQ,CAAC,UAAU,CAAE,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;aACrF;SACJ;QACD,OAAO,GAAG,EAAE;YACR,OAAO,CAAC,GAAG,CAAC,qCAAqC,CAAC,CAAC;YACnD,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACjB,OAAO,CAAC,GAAG,CAAC,+BAA+B,CAAC,CAAC;YAC7C,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;SACpC;IAGL,CAAC;IAED,oDAA2B,GAA3B,UAA4B,QAAkB;QAC1C,CAAC,CAAC,2BAA2B,CAAC,CAAC,KAAK,EAAE,CAAC;QAEvC,IAAI,QAAQ,CAAC,oBAAoB,CAAC,MAAM,GAAG,CAAC,EAAE;YAC1C,IAAI,YAAU,GAAG,wBAAwB,CAAC;YAE1C,QAAQ,CAAC,oBAAoB,CAAC,OAAO,CAAC,UAAC,QAAQ;gBAC3C,YAAU,IAAI,uCAA6B,QAAQ,CAAC,GAAG,kCAAqB,QAAQ,CAAC,WAAW,cAAW;YAC/G,CAAC,CAAC;YAEF,YAAU,IAAI,OAAO;YAErB,CAAC,CAAC,2BAA2B,CAAC,CAAC,IAAI,CAAC,YAAU,CAAC,CAAC;SACnD;aACI;YACD,IAAI,eAAe,GAAG,iFAAiF;YACvG,CAAC,CAAC,2BAA2B,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;SACxD;IACL,CAAC;IAED,wDAA+B,GAA/B,UAAgC,QAAkB;QAC9C,6CAA6C;QAC7C,IAAI,IAAI,CAAC,eAAe,IAAI,SAAS;YAAE,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,CAAC;QAEtE,IAAI,CAAC,eAAe,GAAG,CAAC,CAAC,0BAA0B,CAAC,CAAC,SAAS,CAAC;YAC3D,oDAAoD;YACpD,KAAK,EAAE,sBAAsB;YAC7B,SAAS,EAAE,KAAK;YAChB,IAAI,EAAE,KAAK;YACX,MAAM,EAAE,IAAI;YACZ,UAAU,EAAE,CAAC;YACb,MAAM,EAAE,KAAK;YACb,OAAO,EAAE,KAAK;YACd,UAAU,EAAE;gBACR,YAAY,EAAE,+DAA+D;aAChF;YACD,kBAAkB;YAClB,aAAa,EAAE,IAAI;YACnB,OAAO,EAAE;gBACL,EAAE,SAAS,EAAE,iBAAiB,EAAE,SAAS,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,cAAc,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE;gBACjG,EAAE,IAAI,EAAE,aAAa,EAAE,SAAS,EAAE,uBAAuB,EAAE;gBAC3D,EAAE,IAAI,EAAE,eAAe,EAAE,SAAS,EAAE,uBAAuB,EAAE,EAAC,GAAG;aACpE;YACD,IAAI,EAAE,QAAQ,CAAC,aAAa;YAC5B,YAAY,EAAE,UAAC,QAAQ,EAAE,IAAI;gBACzB,CAAC,CAAC,0BAA0B,CAAC,CAAC,IAAI,CAAC,kEAAkE,CAAC,CAAC;YAC3G,CAAC;SACJ,CAAC,CAAC;QAEH,IAAI,QAAQ,CAAC,aAAa,CAAC,MAAM,IAAI,CAAC,EAAE;YACpC,CAAC,CAAC,mCAAmC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;SAC7D;IACL,CAAC;IAED,iDAAwB,GAAxB,UAAyB,IAAkB;QACvC,IAAI,SAAS,GAAW,0FAA0F,CAAC;QAEnH,SAAS,IAAI,0BAA0B;YACnC,oGAAoG;YACpG,oCAAoC,GAAG,UAAG,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAE,GAAG,OAAO;YACzG,OAAO,CAAC;QAEZ,IAAI,IAAI,CAAC,gBAAgB,IAAI,EAAE,IAAI,IAAI,CAAC,gBAAgB,IAAI,SAAS,EAAE;YACnE,SAAS,IAAI,0BAA0B;gBACnC,+EAA+E;gBAC/E,oCAAoC,GAAG,UAAG,IAAI,CAAC,aAAa,eAAK,IAAI,CAAC,gBAAgB,MAAG,GAAG,OAAO;gBACnG,OAAO,CAAC;SACf;aAAM;YACH,SAAS,IAAI,0BAA0B;gBACnC,+EAA+E;gBAC/E,oCAAoC,GAAG,IAAI,CAAC,aAAa,GAAG,OAAO;gBACnE,OAAO,CAAC;SACf;QAED,SAAS,IAAI,0BAA0B;YACnC,uEAAuE;YACvE,oCAAoC,GAAG,IAAI,CAAC,aAAa,GAAG,OAAO;YACnE,OAAO,CAAC;QAEZ,SAAS,IAAI,UAAU;QACvB,OAAO,SAAS;IACpB,CAAC;IAED,iDAAwB,GAAxB,UAAyB,QAAkB;QACvC,6CAA6C;QAC7C,IAAI,IAAI,CAAC,cAAc,IAAI,SAAS;YAAE,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC;QAEpE,IAAI,CAAC,cAAc,GAAG,CAAC,CAAC,mBAAmB,CAAC,CAAC,SAAS,CAAC;YACnD,oDAAoD;YACpD,KAAK,EAAE,sBAAsB;YAC7B,SAAS,EAAE,KAAK;YAChB,IAAI,EAAE,KAAK;YACX,MAAM,EAAE,IAAI;YACZ,UAAU,EAAE,CAAC;YACb,MAAM,EAAE,KAAK;YACb,OAAO,EAAE,KAAK;YACd,UAAU,EAAE;gBACR,YAAY,EAAE,8CAA8C;aAC/D;YACD,kBAAkB;YAClB,aAAa,EAAE,IAAI;YACnB,OAAO,EAAE;gBACL,EAAE,SAAS,EAAE,iBAAiB,EAAE,SAAS,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,cAAc,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE;gBACjG,EAAE,IAAI,EAAE,iBAAiB,EAAE,SAAS,EAAE,uBAAuB,EAAE,EAAC,GAAG;aACtE;YACD,IAAI,EAAE,QAAQ,CAAC,YAAY;YAC3B,YAAY,EAAE,UAAC,QAAQ,EAAE,IAAI;gBACzB,CAAC,CAAC,mBAAmB,CAAC,CAAC,IAAI,CAAC,kEAAkE,CAAC,CAAC;YACpG,CAAC;SACJ,CAAC,CAAC;QAEH,IAAI,QAAQ,CAAC,YAAY,CAAC,MAAM,IAAI,CAAC,EAAE;YACnC,CAAC,CAAC,4BAA4B,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;SACtD;IACL,CAAC;IAED,2CAAkB,GAAlB,UAAmB,IAAkB;QACjC,IAAI,SAAS,GAAW,0FAA0F,CAAC;QAEnH,SAAS,IAAI,0BAA0B;YACnC,yFAAyF;YACzF,oCAAoC,GAAG,IAAI,CAAC,eAAe,GAAG,OAAO;YACrE,OAAO,CAAC;QAGZ,SAAS,IAAI,0BAA0B;YACnC,sEAAsE;YACtE,oCAAoC,GAAG,2BAAmB,IAAI,CAAC,KAAK,gBAAK,IAAI,CAAC,KAAK,SAAM,GAAG,OAAO;YACnG,OAAO,CAAC;QAGZ,SAAS,IAAI,0BAA0B;YACnC,6EAA6E;YAC7E,oCAAoC,GAAG,IAAI,CAAC,YAAY,GAAG,OAAO;YAClE,OAAO,CAAC;QAEZ,SAAS,IAAI,0BAA0B;YACnC,gFAAgF;YAChF,oCAAoC,GAAG,IAAI,CAAC,aAAa,GAAG,OAAO;YACnE,OAAO,CAAC;QAEZ,SAAS,IAAI,UAAU;QACvB,OAAO,SAAS;IACpB,CAAC;IAED,gDAAuB,GAAvB,UAAwB,QAAkB;QACtC,6CAA6C;QAC7C,IAAI,IAAI,CAAC,aAAa,IAAI,SAAS;YAAE,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC;QAElE,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC,iBAAiB,CAAC,CAAC,SAAS,CAAC;YAChD,oDAAoD;YACpD,KAAK,EAAE,sBAAsB;YAC7B,SAAS,EAAE,KAAK;YAChB,IAAI,EAAE,KAAK;YACX,MAAM,EAAE,IAAI;YACZ,UAAU,EAAE,CAAC;YACb,MAAM,EAAE,KAAK;YACb,OAAO,EAAE,KAAK;YACd,UAAU,EAAE;gBACR,YAAY,EAAE,yDAAyD;aAC1E;YACD,kBAAkB;YAClB,aAAa,EAAE,IAAI;YACnB,OAAO,EAAE;gBACL,EAAE,SAAS,EAAE,iBAAiB,EAAE,SAAS,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,cAAc,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE;gBACjG,EAAE,IAAI,EAAE,qBAAqB,EAAE,SAAS,EAAE,uBAAuB,EAAE,EAAC,GAAG;aAC1E;YACD,IAAI,EAAE,QAAQ,CAAC,WAAW;YAC1B,YAAY,EAAE,UAAC,QAAQ,EAAE,IAAI;gBACzB,CAAC,CAAC,iBAAiB,CAAC,CAAC,IAAI,CAAC,kEAAkE,CAAC,CAAC;YAClG,CAAC;SACJ,CAAC,CAAC;QAEH,IAAI,QAAQ,CAAC,WAAW,CAAC,MAAM,IAAI,CAAC,EAAE;YAClC,CAAC,CAAC,0BAA0B,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;SACpD;IACL,CAAC;IAED,yCAAgB,GAAhB,UAAiB,IAAgB;QAC7B,IAAI,SAAS,GAAW,0FAA0F,CAAC;QAGnH,SAAS,IAAI,0BAA0B;YACnC,6EAA6E;YAC7E,oCAAoC,GAAG,IAAI,CAAC,YAAY,GAAG,OAAO;YAClE,OAAO,CAAC;QAGZ,SAAS,IAAI,0BAA0B;YACnC,yFAAyF;YACzF,oCAAoC,GAAG,IAAI,CAAC,eAAe,GAAG,OAAO;YACrE,OAAO,CAAC;QAGZ,SAAS,IAAI,0BAA0B;YACnC,sEAAsE;YACtE,oCAAoC,GAAG,2BAAmB,IAAI,CAAC,KAAK,gBAAK,IAAI,CAAC,KAAK,SAAM,GAAG,OAAO;YACnG,OAAO,CAAC;QAEZ,SAAS,IAAI,UAAU;QACvB,OAAO,SAAS;IACpB,CAAC;IAED,sCAAa,GAAb;QACI,CAAC,CAAC,sBAAsB,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAC5C,CAAC;IACL,qBAAC;AAAD,CAAC;AA5xBY,wCAAc;;;;;;;;;;;;;ACR3B,uC;;;;;;;;;;;;;;;ACAA,mGAAuE;AAGvE;IAiEI;QA/DA,mBAAc,GAAW,EAAE,CAAC;QAE5B,SAAI,GAAW,EAAE,CAAC;QAClB,WAAM,GAAW,EAAE,CAAC;QAMpB,yCAAyC;QACzC,yBAAyB;QACzB,YAAO,GAAW,SAAS,CAAC;QAC5B,aAAQ,GAAW,EAAE,CAAC;QACtB,aAAQ,GAAW,EAAE,CAAC;QACtB,oBAAe,GAAW,EAAE,CAAC;QAG7B,oBAAe,GAAW,EAAE,CAAC;QAmB7B,wCAAwC;QACxC,wCAAwC;QACxC,kBAAa,GAAW,SAAS,CAAC;QAQlC,2BAAsB,GAAW,EAAE,CAAC;QACpC,qCAAqC;QACrC,2BAAsB,GAAW,EAAE,CAAC;QACpC,0BAAqB,GAAW,EAAE,CAAC;QACnC,yBAAoB,GAAW,EAAE,CAAC;QAClC,mBAAc,GAAW,EAAE,CAAC;QAC5B,6BAA6B;QAE7B,iBAAY,GAAW,EAAE,CAAC;QAE1B,0BAAqB,GAAa,EAAE,CAAC;QACrC,kBAAa,GAAa,EAAE,CAAC;QAC7B,kBAAa,GAAa,EAAE,CAAC;QAC7B,yBAAoB,GAAW,EAAE,CAAC;QAClC,eAAU,GAAW,EAAE,CAAC;QACxB,iBAAY,GAAW,EAAE,CAAC;IAEV,CAAC;IAEjB,6BAAU,GAAV;QAEI,oBAAoB;QAFxB,iBA2DC;QAvDG,IAAI,IAAI,CAAC,MAAM,IAAI,EAAE;YAAE,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC;QAE/C,IAAI,IAAI,CAAC,eAAe,IAAI,EAAE,EAAE;YAAE,IAAI,CAAC,eAAe,GAAG,SAAS,CAAC;YAAC,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAAC,IAAI,CAAC,sBAAsB,GAAG,SAAS;SAAC;aACrK;YACD,4FAA4F;YAC5F,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAC7D,IAAI,CAAC,sBAAsB,GAAG,kCAAY,EAAC,IAAI,CAAC,eAAe,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;SACtF;QACD,4FAA4F;QAE5F,IAAI,IAAI,CAAC,eAAe,IAAI,EAAE,EAAE;YAC5B,IAAI,CAAC,eAAe,GAAG,SAAS,CAAC;SACpC;QACD,IAAI,CAAC,sBAAsB,GAAG,kCAAY,EAAC,IAAI,CAAC,eAAe,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;QACnF,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC1F,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAErD,IAAI,CAAC,oBAAoB,GAAG,kCAAY,EAAC,IAAI,CAAC,aAAa,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;QAE/E,IAAI,IAAI,CAAC,OAAO,IAAI,EAAE;YAAE,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC;QAEjD,4EAA4E;QAC5E,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAE7C,IAAI,YAAY,GAAa,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;QAC5D,IAAI,CAAC,cAAc,GAAG,EAAE,CAAC;QACzB,YAAY,CAAC,OAAO,CAAC,UAAC,QAAgB,EAAE,KAAa;YACjD,IAAI,KAAK,GAAG,CAAC;gBAAE,KAAI,CAAC,cAAc,IAAI,IAAI,CAAC;YAC3C,IAAI,QAAQ,IAAI,YAAY,IAAI,QAAQ,IAAI,UAAU,IAAI,QAAQ,IAAI,UAAU;gBAC5E,KAAI,CAAC,cAAc,IAAI,oCAAoC,GAAG,QAAQ,GAAG,SAAS,CAAC;;gBAEnF,KAAI,CAAC,cAAc,IAAI,QAAQ,CAAC;QACxC,CAAC,CAAC,CAAC;QACH,wDAAwD;QACxD,qCAAqC;QAErC,4DAA4D;QAC5D,IAAI,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,KAAK,CAAC;YAAE,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QAEvG,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACrD,IAAI,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,IAAI,EAAE;YAAE,IAAI,CAAC,gBAAgB,GAAG,EAAE,CAAC;QAC/D,qCAAqC;QAErC,IAAI,UAAU,GAAa,CAAC,SAAS,EAAE,QAAQ,EAAE,iBAAiB,EAAE,eAAe,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,iBAAiB,EAAE,eAAe,EAAE,cAAc,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,eAAe,EAAE,aAAa,EAAE,cAAc,EAAE,SAAS,CAAE,CAAC;QACjU,UAAU,CAAC,OAAO,CAAC,UAAC,KAAa;YAC7B,IAAI,KAAI,CAAC,KAAK,CAAC,IAAI,SAAS,IAAI,KAAI,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE;gBAC/C,KAAI,CAAC,KAAK,CAAC,GAAG,gBAAgB,CAAC;aAClC;QACL,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,cAAc,CAAC;QAChD,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC;QAChC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC;QAE5B,iCAAiC;IACrC,CAAC;IAIL,eAAC;AAAD,CAAC;AAlIY,4BAAQ;;;;;;;;;;;;;;;;ACHrB,6FAAyE;AACzE,+EAAiD;AACjD,sGAA2E;AAC3E,sHAAuH;AACvH,qFAA0D;AAK1D;IASI,4BAAY,IAAS;QAArB,iBA8CC;QA7CG,CAAC,CAAC;YAEE,oBAAoB;YAEpB,IAAI,eAAe,GAAqB,oCAAY,EAAC,wCAAc,EAAoB,IAAI,CAAC,eAAe,CAAC,CAAC;YAE7G,KAAI,CAAC,cAAc,GAAG,oCAAY,EAAC,sCAAY,EAAkB,IAAI,CAAC,cAAc,CAAC,CAAC;YACtF,KAAI,CAAC,cAAc,CAAC,GAAG,CAAC,UAAC,IAAkB,EAAE,KAAa;gBACtD,IAAI,CAAC,cAAc,GAAG,eAAe,CAAC,IAAI,CAAC,YAAE,IAAI,SAAE,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,EAApB,CAAoB,CAAC,CAAC;gBACvE,IAAI,CAAC,UAAU,EAAE,CAAC;gBAElB,KAAK,IAAI,CAAC,GAAG,KAAK,GAAG,CAAC,EAAE,CAAC,GAAG,KAAI,CAAC,cAAc,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE;oBACzD,IAAI,IAAI,CAAC,cAAc,CAAC,KAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,KAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE;wBACvF,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;wBACzB,KAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,YAAY,GAAG,IAAI,CAAC;wBAC3C,4CAA4C;qBAC/C;iBACJ;gBAED,OAAO,IAAI,CAAC;YAChB,CAAC,CAAC,CAAC;YAEH,mCAAmC;YAEnC,KAAI,CAAC,iBAAiB,GAAG,CAAC,mBAAmB,EAAE,qBAAqB,EAAE,0BAA0B,EAAE,wBAAwB,EAAE,wBAAwB,EAAE,4BAA4B,EAAE,6BAA6B,EAAE,0BAA0B;gBACzO,6BAA6B,EAAE,kCAAkC,EAAE,oCAAoC,EAAE,2BAA2B,EAAE,4BAA4B,EAAE,gCAAgC,EAAE,mCAAmC,EAAE,yBAAyB;gBACpQ,sBAAsB,EAAE,6BAA6B,EAAE,iCAAiC,EAAE,yBAAyB,EAAE,2BAA2B;gBAChJ,0BAA0B,EAAE,wCAAwC,EAAE,mCAAmC;gBACzG,mCAAmC,EAAE,qCAAqC,EAAE,8CAA8C,EAAE,0CAA0C,EAAE,gCAAgC;gBACxM,8CAA8C,EAAE,qDAAqD,EAAE,sDAAsD,EAAE,gDAAgD,EAAE,wCAAwC,EAAE,yCAAyC;aACvS,CAAC;YAGF,mCAAmC;YAEnC,KAAI,CAAC,iBAAiB,EAAE,CAAC;YAEzB,KAAI,CAAC,eAAe,EAAE,CAAC;YAEvB,KAAI,CAAC,eAAe,EAAE,CAAC;YACvB,KAAI,CAAC,kBAAkB,CAAC,KAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;YAEpD,KAAI,CAAC,GAAG,GAAG,IAAI,uCAAiB,EAAE,CAAC;YACnC,KAAI,CAAC,GAAG,CAAC,eAAe,CAAC,KAAI,CAAC,cAAc,CAAC,CAAC;QAClD,CAAC,CAAC,CAAC;IACP,CAAC;IAED,8CAAiB,GAAjB;QACI,IAAI,CAAC,kBAAkB,CAAC,mBAAmB,EAAE,4BAAM,EAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,UAAC,IAAkB,IAAK,WAAI,CAAC,cAAc,CAAC,MAAM,EAA1B,CAA0B,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;QACxI,IAAI,CAAC,kBAAkB,CAAC,qBAAqB,EAAE,4BAAM,EAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,UAAC,IAAkB,IAAK,WAAI,CAAC,QAAQ,EAAb,CAAa,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;QAC7H,IAAI,CAAC,kBAAkB,CAAC,0BAA0B,EAAE,4BAAM,EAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,UAAC,IAAkB,IAAK,WAAI,CAAC,SAAS,EAAd,CAAc,CAAC,EAAE,IAAI,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;QAChJ,IAAI,CAAC,kBAAkB,CAAC,wBAAwB,EAAE,4BAAM,EAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,UAAC,IAAkB,IAAK,WAAI,CAAC,OAAO,EAAZ,CAAY,CAAC,EAAE,IAAI,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;QAC5I,IAAI,CAAC,kBAAkB,CAAC,wBAAwB,EAAE,4BAAM,EAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,UAAC,IAAkB,IAAK,WAAI,CAAC,YAAY,CAAC,gBAAgB,EAAlC,CAAkC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;QACrJ,IAAI,CAAC,kBAAkB,CAAC,6BAA6B,EAAE,4BAAM,EAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,UAAC,IAAkB,IAAK,WAAI,CAAC,OAAO,CAAC,gBAAgB,EAA7B,CAA6B,CAAC,EAAE,IAAI,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;QAClK,IAAI,CAAC,kBAAkB,CAAC,+BAA+B,EAAE,4BAAM,EAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,UAAC,IAAkB,IAAK,WAAI,CAAC,OAAO,CAAC,uBAAuB,EAApC,CAAoC,CAAC,EAAE,IAAI,EAAE,CAAC,SAAS,EAAE,gBAAgB,CAAC,CAAC,CAAC,CAAC;QAC7L,IAAI,CAAC,kBAAkB,CAAC,yBAAyB,EAAE,4BAAM,EAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,UAAC,IAAkB,IAAK,WAAI,CAAC,OAAO,CAAC,qCAAqC,EAAlD,CAAkD,CAAC,EAAE,IAAI,EAAE,CAAC,SAAS,EAAE,gBAAgB,CAAC,CAAC,CAAC,CAAC;QACrM,IAAI,CAAC,kBAAkB,CAAC,sBAAsB,EAAE,4BAAM,EAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,UAAC,IAAkB,IAAK,WAAI,CAAC,WAAW,CAAC,gBAAgB,EAAjC,CAAiC,CAAC,EAAE,IAAI,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;QAC/J,IAAI,CAAC,kBAAkB,CAAC,2BAA2B,EAAE,4BAAM,EAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,UAAC,IAAkB,IAAK,WAAI,CAAC,WAAW,CAAC,gCAAgC,EAAjD,CAAiD,CAAC,EAAE,IAAI,EAAE,CAAC,SAAS,EAAE,gBAAgB,CAAC,CAAC,CAAC,CAAC;QACtM,IAAI,CAAC,kBAAkB,CAAC,mCAAmC,EAAE,4BAAM,EAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,UAAC,IAAkB,IAAK,WAAI,CAAC,cAAc,CAAC,gBAAgB,EAApC,CAAoC,CAAC,EAAE,IAAI,EAAE,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;QACrL,IAAI,CAAC,kBAAkB,CAAC,qCAAqC,EAAE,4BAAM,EAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,UAAC,IAAkB,IAAK,WAAI,CAAC,UAAU,CAAC,iBAAiB,EAAjC,CAAiC,CAAC,EAAE,IAAI,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;QAC9K,IAAI,CAAC,kBAAkB,CAAC,gCAAgC,EAAE,4BAAM,EAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,UAAC,IAAkB,IAAK,WAAI,CAAC,UAAU,CAAC,sBAAsB,EAAtC,CAAsC,CAAC,EAAE,IAAI,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;QAC9K,4LAA4L;QAC5L,IAAI,CAAC,kBAAkB,CAAC,0CAA0C,EAAE,4BAAM,EAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,UAAC,IAAkB,IAAK,WAAI,CAAC,UAAU,CAAC,sBAAsB,EAAtC,CAAsC,CAAC,EAAE,IAAI,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;QACxL,IAAI,CAAC,kBAAkB,CAAC,8CAA8C,EAAE,4BAAM,EAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,UAAC,IAAkB,IAAK,WAAI,CAAC,mBAAmB,CAAC,oBAAoB,EAA7C,CAA6C,CAAC,EAAE,IAAI,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;QACnM,IAAI,CAAC,kBAAkB,CAAC,qDAAqD,EAAE,4BAAM,EAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,UAAC,IAAkB,IAAK,WAAI,CAAC,mBAAmB,CAAC,4BAA4B,EAArD,CAAqD,CAAC,EAAE,IAAI,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;QAClN,IAAI,CAAC,kBAAkB,CAAC,wCAAwC,EAAE,4BAAM,EAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,UAAC,IAAkB,IAAK,WAAI,CAAC,mBAAmB,CAAC,+BAA+B,EAAxD,CAAwD,CAAC,EAAE,IAAI,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;QACxM,IAAI,CAAC,kBAAkB,CAAC,yCAAyC,EAAE,4BAAM,EAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,UAAC,IAAkB,IAAK,WAAI,CAAC,mBAAmB,CAAC,wBAAwB,EAAjD,CAAiD,CAAC,EAAE,IAAI,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;QAElM,IAAI,MAAM,GAAa,EAAE,CAAC;QAC1B,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,UAAC,IAAkB,IAAO,MAAM,CAAC,IAAI,OAAX,MAAM,EAAS,2BAAK,EAAC,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QACpH,IAAI,CAAC,kBAAkB,CAAC,4BAA4B,EAAE,4BAAM,EAAC,MAAM,EAAE,IAAI,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;QACzF,MAAM,GAAG,EAAE,CAAC;QACZ,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,UAAC,IAAkB,IAAO,MAAM,CAAC,IAAI,OAAX,MAAM,EAAS,2BAAK,EAAC,IAAI,CAAC,YAAY,CAAC,wBAAwB,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QACjI,IAAI,CAAC,kBAAkB,CAAC,6BAA6B,EAAE,4BAAM,EAAC,MAAM,EAAE,IAAI,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;QAC1F,MAAM,GAAG,EAAE,CAAC;QACZ,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,UAAC,IAAkB,IAAO,MAAM,CAAC,IAAI,OAAX,MAAM,EAAS,2BAAK,EAAC,IAAI,CAAC,YAAY,CAAC,kBAAkB,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAC3H,IAAI,CAAC,kBAAkB,CAAC,0BAA0B,EAAE,4BAAM,EAAC,MAAM,EAAE,IAAI,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;QACvF,MAAM,GAAG,EAAE,CAAC;QACZ,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,UAAC,IAAkB,IAAO,MAAM,CAAC,IAAI,OAAX,MAAM,EAAS,2BAAK,EAAC,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAC/G,IAAI,CAAC,kBAAkB,CAAC,+BAA+B,EAAE,4BAAM,EAAC,MAAM,EAAE,IAAI,EAAE,CAAC,SAAS,EAAE,gBAAgB,CAAC,CAAC,CAAC,CAAC;QAC9G,MAAM,GAAG,EAAE,CAAC;QACZ,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,UAAC,IAAkB,IAAO,MAAM,CAAC,IAAI,OAAX,MAAM,EAAS,2BAAK,EAAC,IAAI,CAAC,OAAO,CAAC,eAAe,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QACnH,IAAI,CAAC,kBAAkB,CAAC,6BAA6B,EAAE,4BAAM,EAAC,MAAM,EAAE,IAAI,EAAE,CAAC,SAAS,EAAE,gBAAgB,CAAC,CAAC,CAAC,CAAC;QAC5G,MAAM,GAAG,EAAE,CAAC;QACZ,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,UAAC,IAAkB,IAAO,MAAM,CAAC,IAAI,OAAX,MAAM,EAAS,2BAAK,EAAC,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QACjH,IAAI,CAAC,kBAAkB,CAAC,mCAAmC,EAAE,4BAAM,EAAC,MAAM,EAAE,IAAI,EAAE,CAAC,SAAS,EAAE,gBAAgB,CAAC,CAAC,CAAC,CAAC;QAClH,cAAc;QACd,sHAAsH;QACtH,6GAA6G;QAC7G,MAAM,GAAG,EAAE,CAAC;QACZ,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,UAAC,IAAkB,IAAO,MAAM,CAAC,IAAI,OAAX,MAAM,EAAS,2BAAK,EAAC,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAChH,IAAI,CAAC,kBAAkB,CAAC,gCAAgC,EAAE,4BAAM,EAAC,MAAM,EAAE,IAAI,EAAE,CAAC,SAAS,EAAE,gBAAgB,CAAC,CAAC,CAAC,CAAC;QAC/G,MAAM,GAAG,EAAE,CAAC;QACZ,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,UAAC,IAAkB,IAAO,MAAM,CAAC,IAAI,OAAX,MAAM,EAAS,2BAAK,EAAC,IAAI,CAAC,WAAW,CAAC,wBAAwB,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAChI,IAAI,CAAC,kBAAkB,CAAC,6BAA6B,EAAE,4BAAM,EAAC,MAAM,EAAE,IAAI,EAAE,CAAC,SAAS,EAAE,gBAAgB,CAAC,CAAC,CAAC,CAAC;QAC5G,cAAc;QACd,kIAAkI;QAClI,0FAA0F;QAC1F,MAAM,GAAG,EAAE,CAAC;QACZ,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,UAAC,IAAkB,IAAO,MAAM,CAAC,IAAI,OAAX,MAAM,EAAS,2BAAK,EAAC,IAAI,CAAC,WAAW,CAAC,iBAAiB,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QACzH,IAAI,CAAC,kBAAkB,CAAC,iCAAiC,EAAE,4BAAM,EAAC,MAAM,EAAE,IAAI,EAAE,CAAC,SAAS,EAAE,gBAAgB,CAAC,CAAC,CAAC,CAAC;QAChH,MAAM,GAAG,EAAE,CAAC;QACZ,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,UAAC,IAAkB,IAAO,MAAM,CAAC,IAAI,OAAX,MAAM,EAAS,2BAAK,EAAC,IAAI,CAAC,WAAW,CAAC,eAAe,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QACvH,IAAI,CAAC,kBAAkB,CAAC,yBAAyB,EAAE,4BAAM,EAAC,MAAM,EAAE,IAAI,EAAE,CAAC,SAAS,EAAE,gBAAgB,CAAC,CAAC,CAAC,CAAC;QACxG,MAAM,GAAG,EAAE,CAAC;QACZ,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,UAAC,IAAkB,IAAO,MAAM,CAAC,IAAI,OAAX,MAAM,EAAS,2BAAK,EAAC,IAAI,CAAC,gBAAgB,CAAC,qBAAqB,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAClI,IAAI,CAAC,kBAAkB,CAAC,0BAA0B,EAAE,4BAAM,EAAC,MAAM,EAAE,IAAI,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;QACvF,MAAM,GAAG,EAAE,CAAC;QACZ,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,UAAC,IAAkB,IAAO,MAAM,CAAC,IAAI,OAAX,MAAM,EAAS,2BAAK,EAAC,IAAI,CAAC,gBAAgB,CAAC,2BAA2B,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QACxI,IAAI,CAAC,kBAAkB,CAAC,wCAAwC,EAAE,4BAAM,EAAC,MAAM,EAAE,IAAI,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;QACrG,MAAM,GAAG,EAAE,CAAC;QACZ,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,UAAC,IAAkB,IAAO,MAAM,CAAC,IAAI,OAAX,MAAM,EAAS,2BAAK,EAAC,IAAI,CAAC,gBAAgB,CAAC,qBAAqB,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAClI,IAAI,CAAC,kBAAkB,CAAC,mCAAmC,EAAE,4BAAM,EAAC,MAAM,EAAE,IAAI,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;QAChG,MAAM,GAAG,EAAE,CAAC;QACZ,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,UAAC,IAAkB,IAAO,MAAM,CAAC,IAAI,OAAX,MAAM,EAAS,2BAAK,EAAC,IAAI,CAAC,mBAAmB,CAAC,gBAAgB,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAChI,IAAI,CAAC,kBAAkB,CAAC,gDAAgD,EAAE,4BAAM,EAAC,MAAM,EAAE,IAAI,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;QAC7G,MAAM,GAAG,EAAE,CAAC;QACZ,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,UAAC,IAAkB,IAAO,MAAM,CAAC,IAAI,OAAX,MAAM,EAAS,2BAAK,EAAC,IAAI,CAAC,mBAAmB,CAAC,2BAA2B,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAC3I,IAAI,CAAC,kBAAkB,CAAC,sDAAsD,EAAE,4BAAM,EAAC,MAAM,EAAE,IAAI,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;IACvH,CAAC;IAED,4CAAe,GAAf;QAAA,iBA6BC;QA5BG,CAAC,CAAC,sBAAsB,CAAC,CAAC,EAAE,CAAC,cAAc,EAAE,UAAC,CAAC;YAC3C,8DAA8D;YAC9D,IAAI,CAAC,CAAC,aAAa,CAAC,EAAE,IAAI,mBAAmB,EAAE;gBAC3C,CAAC,mBAAmB,EAAE,qBAAqB,EAAE,0BAA0B,EAAE,wBAAwB,EAAE,wBAAwB,EAAE,4BAA4B,EAAE,6BAA6B,EAAE,0BAA0B,CAAC,CAAC,OAAO,CAAC,UAAC,EAAU,IAAK,QAAC,CAAC,EAAE,CAAC,CAAC,YAAY,CAAC,SAAS,CAAC,EAA7B,CAA6B,CAAC,CAAC;aAChR;iBACI,IAAI,CAAC,CAAC,aAAa,CAAC,EAAE,IAAI,aAAa,EAAE;gBAC1C,CAAC,6BAA6B,EAAE,+BAA+B,EAAE,mCAAmC,EAAE,gCAAgC,EAAE,6BAA6B,EAAE,+BAA+B,EAAE,yBAAyB,EAAE,4BAA4B,CAAC,CAAC,OAAO,CAAC,UAAC,EAAU,IAAK,QAAC,CAAC,EAAE,CAAC,CAAC,YAAY,CAAC,SAAS,CAAC,EAA7B,CAA6B,CAAC,CAAC;aAC3T;iBACI,IAAI,CAAC,CAAC,aAAa,CAAC,EAAE,IAAI,kBAAkB,EAAE;gBAC/C,CAAC,sBAAsB,EAAE,6BAA6B,EAAE,2BAA2B,EAAE,iCAAiC,EAAE,yBAAyB,CAAC,CAAC,OAAO,CAAC,UAAC,EAAU,IAAK,QAAC,CAAC,EAAE,CAAC,CAAC,YAAY,CAAC,SAAS,CAAC,EAA7B,CAA6B,CAAC,CAAC;aAC7M;iBACI,IAAI,CAAC,CAAC,aAAa,CAAC,EAAE,IAAI,uBAAuB,EAAE;gBACpD,CAAC,0BAA0B,EAAE,wCAAwC,EAAE,mCAAmC,CAAC,CAAC,OAAO,CAAC,UAAC,EAAU,IAAK,QAAC,CAAC,EAAE,CAAC,CAAC,YAAY,CAAC,SAAS,CAAC,EAA7B,CAA6B,CAAC,CAAC;aACtK;iBACI,IAAI,CAAC,CAAC,aAAa,CAAC,EAAE,IAAI,gBAAgB,EAAE;gBAC7C,CAAC,8CAA8C,EAAE,qDAAqD,EAAE,wCAAwC,EAAE,yCAAyC,EAAE,gDAAgD,EAAE,sDAAsD,CAAC,CAAC,OAAO,CAAC,UAAC,EAAU,IAAK,QAAC,CAAC,EAAE,CAAC,CAAC,YAAY,CAAC,SAAS,CAAC,EAA7B,CAA6B,CAAC,CAAC;aACjW;QACL,CAAC,CAAC,CAAC;QAEH,CAAC,CAAC,uBAAuB,CAAC,CAAC,EAAE,CAAC,cAAc,EAAE,UAAC,CAAC;YAC5C,IAAI,CAAC,CAAC,aAAa,CAAC,EAAE,IAAI,uBAAuB,EAAE;gBAC/C,KAAI,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;gBAChC,KAAI,CAAC,qBAAqB,CAAC,OAAO,EAAE,CAAC;aACxC;iBACI,IAAI,CAAC,CAAC,aAAa,CAAC,EAAE,IAAI,iBAAiB,EAAE;gBAC9C,KAAI,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;aACtB;QACL,CAAC,CAAC,CAAC;IACP,CAAC;IAED,+CAAkB,GAAlB,UAAmB,QAAgB,EAAE,MAAgB;QAArD,iBAuBC;QAtBG,CAAC,CAAC,QAAQ,CAAC,CAAC,YAAY,CAAC;YACrB,UAAU,EAAE,KAAK;YACjB,kBAAkB,EAAE,OAAO;YAE3B,iBAAiB,EAAE,UAAC,WAAW,EAAE,QAAQ;gBACrC,IAAI,WAAW,IAAI,QAAQ,EAAE;oBACzB,OAAO,KAAK,CAAC;iBAChB;qBACI;oBACD,OAAO,WAAW,GAAG,WAAW,CAAC;iBACpC;YACL,CAAC;SACJ,CAAC,CAAC;QAEH,MAAM,CAAC,OAAO,CAAC,UAAC,OAAY;YACxB,CAAC,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC;QAClE,CAAC,CAAC,CAAC;QACH,CAAC,CAAC,QAAQ,CAAC,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;QAEpC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,mBAAmB,EAAE,UAAC,CAAC,EAAE,YAAY,EAAE,UAAU,EAAE,aAAa;YAC3E,KAAI,CAAC,oBAAoB,EAAE,CAAC;QAChC,CAAC,CAAC,CAAC;IACP,CAAC;IAGD,4CAAe,GAAf;QAAA,iBAyLC;QAvLG,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC,wBAAwB,CAAC,CAAC,SAAS,CAAC;YACnD,KAAK,EAAE,gFAAgF;YACvF,iGAAiG;YACjG,SAAS,EAAE,IAAI;YACf,IAAI,EAAE,KAAK;YACX,MAAM,EAAE,KAAK;YACb,MAAM,EAAE,IAAI;YACZ,OAAO,EAAE,IAAI;YACb,oBAAoB;YACpB,OAAO,EAAE,MAAM;YACf,cAAc,EAAE,IAAI;YACpB,aAAa,EAAE,IAAI;YACnB,YAAY,EAAE;gBACV,WAAW,EAAE,CAAC;aACjB;YACD,QAAQ,EACR;gBACI,MAAM,EAAE,QAAQ;aACnB;YACD,OAAO,EAAE;gBACL,EAAE,IAAI,EAAE,EAAE,CAAC,EAAE,iBAAiB,EAAE,IAAI,EAAE,UAAU,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,uBAAuB,EAAE;gBAC5G,EAAE,IAAI,EAAE,EAAE,CAAC,EAAE,8BAA8B,EAAE,IAAI,EAAE,uBAAuB,EAAE,EAAE,KAAK,EAAE,iBAAiB,EAAE,SAAS,EAAE,uBAAuB,EAAE;gBAC5I,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,gCAAgC,EAAE;gBACnF,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,gCAAgC,EAAE;gBAClF,EAAE,IAAI,EAAE,EAAE,CAAC,EAAE,sBAAsB,EAAE,IAAI,EAAE,0BAA0B,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,2BAA2B,EAAE;gBACpI,EAAE,IAAI,EAAE,uBAAuB,EAAE,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,2BAA2B,EAAE;gBAC7F,EAAE,IAAI,EAAE,uBAAuB,EAAE,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,2BAA2B,EAAE;gBAC7F,EAAE,IAAI,EAAE,+BAA+B,EAAE,KAAK,EAAE,mBAAmB,EAAE,SAAS,EAAE,oCAAoC,EAAE;gBACtH,EAAE,IAAI,EAAE,+BAA+B,EAAE,KAAK,EAAE,mBAAmB,EAAE,SAAS,EAAE,oCAAoC,EAAE;gBACtH,EAAE,IAAI,EAAE,iCAAiC,EAAE,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,oCAAoC,EAAE;gBAClH,EAAE,IAAI,EAAE,0BAA0B,EAAE,KAAK,EAAE,mBAAmB,EAAE,SAAS,EAAE,oCAAoC,EAAE;gBACjH,EAAE,IAAI,EAAE,8BAA8B,EAAE,KAAK,EAAE,oBAAoB,EAAE,SAAS,EAAE,oCAAoC,EAAE;gBACtH,EAAE,IAAI,EAAE,uCAAuC,EAAE,KAAK,EAAE,4BAA4B,EAAE,SAAS,EAAE,yCAAyC,EAAE;gBAC5I,EAAE,IAAI,EAAE,wCAAwC,EAAE,KAAK,EAAE,wCAAwC,EAAE,SAAS,EAAE,yCAAyC,EAAE;gBACzJ,EAAE,IAAI,EAAE,+BAA+B,EAAE,KAAK,EAAE,wBAAwB,EAAE,SAAS,EAAE,iCAAiC,EAAE;gBACxH,EAAE,IAAI,EAAE,uCAAuC,EAAE,KAAK,EAAE,sCAAsC,EAAE,SAAS,EAAE,iCAAiC,EAAE;gBAC9I,EAAE,IAAI,EAAE,qCAAqC,EAAE,KAAK,EAAE,+BAA+B,EAAE,SAAS,EAAE,iCAAiC,EAAE;gBACrI,EAAE,IAAI,EAAE,8CAA8C,EAAE,KAAK,EAAE,uBAAuB,EAAE,SAAS,EAAE,mCAAmC,EAAE;gBACxI,EAAE,IAAI,EAAE,wCAAwC,EAAE,KAAK,EAAE,+BAA+B,EAAE,SAAS,EAAE,mCAAmC,EAAE;gBAC1I,EAAE,IAAI,EAAE,2CAA2C,EAAE,KAAK,EAAE,kCAAkC,EAAE,SAAS,EAAE,mCAAmC,EAAE;gBAChJ,EAAE,IAAI,EAAE,4CAA4C,EAAE,KAAK,EAAE,mCAAmC,EAAE,SAAS,EAAE,mCAAmC,EAAE;gBAClJ,EAAE,IAAI,EAAE,uCAAuC,EAAE,KAAK,EAAE,8BAA8B,EAAE,SAAS,EAAE,mCAAmC,EAAE;gBACxI,EAAE,IAAI,EAAE,4BAA4B,EAAE,KAAK,EAAE,cAAc,EAAE,SAAS,EAAE,mCAAmC,EAAE;gBAC7G,EAAE,IAAI,EAAE,8BAA8B,EAAE,KAAK,EAAE,kBAAkB,EAAE,SAAS,EAAE,mCAAmC,EAAE;gBACnH,EAAE,IAAI,EAAE,6BAA6B,EAAE,KAAK,EAAE,eAAe,EAAE,SAAS,EAAE,mCAAmC,EAAE;gBAC/G,EAAE,IAAI,EAAE,sBAAsB,EAAE,KAAK,EAAE,iCAAiC,EAAE,SAAS,EAAE,mCAAmC,EAAE;gBAC1H,EAAE,IAAI,EAAE,qBAAqB,EAAE,KAAK,EAAE,sBAAsB,EAAE,SAAS,EAAE,sCAAsC,EAAE;gBACjH,EAAE,IAAI,EAAE,gCAAgC,EAAE,KAAK,EAAE,kBAAkB,EAAE,SAAS,EAAE,sCAAsC,EAAE;gBACxH,EAAE,IAAI,EAAE,2BAA2B,EAAE,KAAK,EAAE,yBAAyB,EAAE,SAAS,EAAE,sCAAsC,EAAE;gBAC1H,EAAE,IAAI,EAAE,yBAAyB,EAAE,KAAK,EAAE,mBAAmB,EAAE,SAAS,EAAE,sCAAsC,EAAE;gBAClH,6HAA6H;gBAC7H,EAAE,IAAI,EAAE,+CAA+C,EAAE,KAAK,EAAE,gBAAgB,EAAE,SAAS,EAAE,6CAA6C,EAAE;gBAC5I,EAAE,IAAI,EAAE,iBAAiB,EAAE,KAAK,EAAE,iDAAiD,EAAE,SAAS,EAAE,qCAAqC,EAAE;gBACvI,EAAE,IAAI,EAAE,yCAAyC,EAAE,KAAK,EAAE,qDAAqD,EAAE,SAAS,EAAE,qCAAqC,EAAE;gBACnK,EAAE,IAAI,EAAE,iCAAiC,EAAE,KAAK,EAAE,6BAA6B,EAAE,SAAS,EAAE,qCAAqC,EAAE;gBACnI,EAAE,IAAI,EAAE,0BAA0B,EAAE,KAAK,EAAE,yBAAyB,EAAE,SAAS,EAAE,qCAAqC,EAAE;gBACxH,EAAE,IAAI,EAAE,oCAAoC,EAAE,KAAK,EAAE,gBAAgB,EAAE,SAAS,EAAE,qCAAqC,EAAE;gBACzH,EAAE,IAAI,EAAE,uBAAuB,EAAE,KAAK,EAAE,gBAAgB,EAAE,SAAS,EAAE,qCAAqC,EAAE;gBAC5G,EAAE,IAAI,EAAE,8BAA8B,EAAE,KAAK,EAAE,4BAA4B,EAAE,SAAS,EAAE,qCAAqC,EAAE;gBAC/H,+JAA+J;gBAC/J,4IAA4I;gBAE5I,uIAAuI;gBACvI,kIAAkI;gBAClI,oIAAoI;gBACpI,EAAE,IAAI,EAAE,6CAA6C,EAAE,KAAK,EAAE,2BAA2B,EAAE,SAAS,EAAE,oCAAoC,EAAE;gBAC5I,EAAE,IAAI,EAAE,sCAAsC,EAAE,KAAK,EAAE,gCAAgC,EAAE,SAAS,EAAE,oCAAoC,EAAE;gBAC1I,EAAE,IAAI,EAAE,oCAAoC,EAAE,KAAK,EAAE,kBAAkB,EAAE,SAAS,EAAE,oCAAoC,EAAE;gBAC1H,EAAE,IAAI,EAAE,wCAAwC,EAAE,KAAK,EAAE,+BAA+B,EAAE,SAAS,EAAE,oCAAoC,EAAE;gBAC3I,EAAE,IAAI,EAAE,qCAAqC,EAAE,KAAK,EAAE,2BAA2B,EAAE,SAAS,EAAE,oCAAoC,EAAE;gBACpI,EAAE,IAAI,EAAE,qCAAqC,EAAE,KAAK,EAAE,oCAAoC,EAAE,SAAS,EAAE,oCAAoC,EAAE;gBAC7I,EAAE,IAAI,EAAE,+BAA+B,EAAE,KAAK,EAAE,uBAAuB,EAAE,SAAS,EAAE,oCAAoC,EAAE;gBAC1H,EAAE,IAAI,EAAE,sCAAsC,EAAE,KAAK,EAAE,sCAAsC,EAAE,SAAS,EAAE,oCAAoC,EAAE;gBAChJ,EAAE,IAAI,EAAE,yCAAyC,EAAE,KAAK,EAAE,iCAAiC,EAAE,SAAS,EAAE,oCAAoC,EAAE;gBAC9I,EAAE,IAAI,EAAE,qCAAqC,EAAE,KAAK,EAAE,0DAA0D,EAAE,SAAS,EAAE,qCAAqC,EAAE;gBACpK,EAAE,IAAI,EAAE,0DAA0D,EAAE,KAAK,EAAE,mCAAmC,EAAE,SAAS,EAAE,qCAAqC,EAAE;gBAClK,EAAE,IAAI,EAAE,iCAAiC,EAAE,KAAK,EAAE,kCAAkC,EAAE,SAAS,EAAE,qCAAqC,EAAE;gBACxI,EAAE,IAAI,EAAE,+BAA+B,EAAE,KAAK,EAAE,0BAA0B,EAAE,SAAS,EAAE,qCAAqC,EAAE;gBAC9H,EAAE,IAAI,EAAE,wCAAwC,EAAE,KAAK,EAAE,kCAAkC,EAAE,SAAS,EAAE,qCAAqC,EAAE;gBAC/I,EAAE,IAAI,EAAE,mCAAmC,EAAE,KAAK,EAAE,sCAAsC,EAAE,SAAS,EAAE,qCAAqC,EAAE;gBAC9I,EAAE,IAAI,EAAE,8CAA8C,EAAE,KAAK,EAAE,sCAAsC,EAAE,SAAS,EAAE,oCAAoC,EAAE;gBACxJ,EAAE,IAAI,EAAE,0BAA0B,EAAE,KAAK,EAAE,eAAe,EAAE,SAAS,EAAE,oCAAoC,EAAE;gBAC7G,EAAE,IAAI,EAAE,uCAAuC,EAAE,KAAK,EAAE,6BAA6B,EAAE,SAAS,EAAE,oCAAoC,EAAE;gBACxI,EAAE,IAAI,EAAE,gCAAgC,EAAE,KAAK,EAAE,qBAAqB,EAAE,SAAS,EAAE,oCAAoC,EAAE;gBACzH,EAAE,IAAI,EAAE,+CAA+C,EAAE,KAAK,EAAE,wBAAwB,EAAE,SAAS,EAAE,gCAAgC,EAAE;gBACvI,EAAE,IAAI,EAAE,yDAAyD,EAAE,KAAK,EAAE,oCAAoC,EAAE,SAAS,EAAE,gCAAgC,EAAE;gBAC7J,8IAA8I;gBAC9I,4JAA4J;gBAC5J,4IAA4I;gBAC5I,EAAE,IAAI,EAAE,qDAAqD,EAAE,KAAK,EAAE,0BAA0B,EAAE,SAAS,EAAE,gCAAgC,EAAE;gBAC/I,EAAE,IAAI,EAAE,+CAA+C,EAAE,KAAK,EAAE,wBAAwB,EAAE,SAAS,EAAE,gCAAgC,EAAE;gBACvI,oIAAoI;gBACpI,sIAAsI;gBACtI,8HAA8H;gBAC9H,8HAA8H;gBAC9H,8HAA8H;gBAC9H,EAAE,IAAI,EAAE,iCAAiC,EAAE,KAAK,EAAE,4BAA4B,EAAE,SAAS,EAAE,yCAAyC,EAAE;gBACtI,EAAE,IAAI,EAAE,uCAAuC,EAAE,KAAK,EAAE,0BAA0B,EAAE,SAAS,EAAE,yCAAyC,EAAE;gBAC1I,EAAE,IAAI,EAAE,gCAAgC,EAAE,KAAK,EAAE,kBAAkB,EAAE,SAAS,EAAE,yCAAyC,EAAE;gBAC3H,EAAE,IAAI,EAAE,4BAA4B,EAAE,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,yCAAyC,EAAE;gBAClH,EAAE,IAAI,EAAE,mCAAmC,EAAE,KAAK,EAAE,wBAAwB,EAAE,SAAS,EAAE,yCAAyC,EAAE;gBACpI,EAAE,IAAI,EAAE,iCAAiC,EAAE,KAAK,EAAE,oBAAoB,EAAE,SAAS,EAAE,yCAAyC,EAAE;gBAC9H,EAAE,IAAI,EAAE,0CAA0C,EAAE,KAAK,EAAE,8BAA8B,EAAE,SAAS,EAAE,yCAAyC,EAAE;gBACjJ,EAAE,IAAI,EAAE,8BAA8B,EAAE,KAAK,EAAE,gBAAgB,EAAE,SAAS,EAAE,yCAAyC,EAAE;gBACvH,EAAE,IAAI,EAAE,mCAAmC,EAAE,KAAK,EAAE,kCAAkC,EAAE,SAAS,EAAE,+CAA+C,EAAE;gBACpJ,EAAE,IAAI,EAAE,gCAAgC,EAAE,KAAK,EAAE,+BAA+B,EAAE,SAAS,EAAE,+CAA+C,EAAE;gBAC9I,EAAE,IAAI,EAAE,mCAAmC,EAAE,KAAK,EAAE,mCAAmC,EAAE,SAAS,EAAE,+CAA+C,EAAE;gBACrJ,EAAE,IAAI,EAAE,sCAAsC,EAAE,KAAK,EAAE,sCAAsC,EAAE,SAAS,EAAE,+CAA+C,EAAE;gBAC3J,EAAE,IAAI,EAAE,8BAA8B,EAAE,KAAK,EAAE,8BAA8B,EAAE,SAAS,EAAE,2CAA2C,EAAE;gBACvI,EAAE,IAAI,EAAE,oBAAoB,EAAE,KAAK,EAAE,eAAe,EAAE,SAAS,EAAE,2CAA2C,EAAE;gBAC9G,EAAE,IAAI,EAAE,gCAAgC,EAAE,KAAK,EAAE,4BAA4B,EAAE,SAAS,EAAE,2CAA2C,EAAE;gBACvI,EAAE,IAAI,EAAE,kCAAkC,EAAE,KAAK,EAAE,8BAA8B,EAAE,SAAS,EAAE,2CAA2C,EAAE;gBAC3I,EAAE,IAAI,EAAE,qCAAqC,EAAE,KAAK,EAAE,gCAAgC,EAAE,SAAS,EAAE,2CAA2C,EAAE;gBAChJ,+IAA+I;gBAC/I,mJAAmJ;gBACnJ,gLAAgL;gBAChL,uJAAuJ;gBACvJ,qLAAqL;gBACrL,yJAAyJ;gBACzJ,EAAE,IAAI,EAAE,0CAA0C,EAAE,KAAK,EAAE,+CAA+C,EAAE,SAAS,EAAE,0CAA0C,EAAE;gBACnK,EAAE,IAAI,EAAE,kDAAkD,EAAE,KAAK,EAAE,4CAA4C,EAAE,SAAS,EAAE,0CAA0C,EAAE;gBACxK,EAAE,IAAI,EAAE,0CAA0C,EAAE,KAAK,EAAE,4CAA4C,EAAE,SAAS,EAAE,0CAA0C,EAAE;gBAChK,EAAE,IAAI,EAAE,qDAAqD,EAAE,KAAK,EAAE,sCAAsC,EAAE,SAAS,EAAE,0CAA0C,EAAE;gBACrK,EAAE,IAAI,EAAE,6CAA6C,EAAE,KAAK,EAAE,4BAA4B,EAAE,SAAS,EAAE,0CAA0C,EAAE;gBACnJ,EAAE,IAAI,EAAE,wDAAwD,EAAE,KAAK,EAAE,+BAA+B,EAAE,SAAS,EAAE,0CAA0C,EAAE;gBACjK,EAAE,IAAI,EAAE,6CAA6C,EAAE,KAAK,EAAE,4BAA4B,EAAE,SAAS,EAAE,uCAAuC,EAAE;gBAChJ,EAAE,IAAI,EAAE,mDAAmD,EAAE,KAAK,EAAE,2CAA2C,EAAE,SAAS,EAAE,uCAAuC,EAAE;gBACrK,EAAE,IAAI,EAAE,yCAAyC,EAAE,KAAK,EAAE,iCAAiC,EAAE,SAAS,EAAE,uCAAuC,EAAE;gBACjJ,EAAE,IAAI,EAAE,8CAA8C,EAAE,KAAK,EAAE,mDAAmD,EAAE,SAAS,EAAE,uCAAuC,EAAE;gBACxK,EAAE,IAAI,EAAE,qCAAqC,EAAE,KAAK,EAAE,8BAA8B,EAAE,SAAS,EAAE,uCAAuC,EAAE;aAE7I;YACD,OAAO,EAAE;gBACL;oBACI,MAAM,EAAE,KAAK;oBACb,IAAI,EAAE,sCAAsC;oBAC5C,SAAS,EAAE,KAAK;oBAChB,OAAO,EAAE,OAAO;iBACnB;aACJ;YACD,IAAI,EAAE,IAAI,CAAC,cAAc;YACzB,mCAAmC;YACnC,YAAY,EAAE,UAAC,QAAQ,EAAE,IAAI;gBACzB,mGAAmG;YACvG,CAAC;SACJ,CAAC,CAAC;QAEH,CAAC,CAAC,eAAe,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;QAExC,CAAC,CAAC,gBAAgB,CAAC,CAAC,QAAQ,CAAC,sBAAsB,CAAC,CAAC;QACrD,CAAC,CAAC,gBAAgB,CAAC,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,gCAAgC,CAAC,CAAC;QAEnE,CAAC,CAAC,aAAa,CAAC,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAC;QAE7C,CAAC,CAAC,SAAS,CAAC,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAC;QAAA,CAAC;QAC1C,CAAC,CAAC,cAAc,CAAC,CAAC,QAAQ,CAAC,uEAAuE,CAAC,CAAC;QACpG,+IAA+I;QAC/I,CAAC,CAAC,cAAc,CAAC,CAAC,OAAO,CAAC,2EAA2E,CAAC,CAAC;QAEvG,IAAI,CAAC,qBAAqB,GAAG,IAAI,yDAA+B,CAAC,wBAAwB,EAAE,gBAAgB,EAAE;YACzG,IAAI,0CAAgB,CAAC,eAAe,EAAE,KAAK,EAAE,EAAE,EAAE,UAAU,CAAC;YAC5D,IAAI,0CAAgB,CAAC,wBAAwB,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,CAAC;YAChE,IAAI,0CAAgB,CAAC,eAAe,EAAE,IAAI,EAAE,EAAE,EAAE,cAAc,CAAC;YAC/D,IAAI,0CAAgB,CAAC,WAAW,EAAE,KAAK,EAAE,EAAE,EAAE,WAAW,CAAC;YACzD,IAAI,0CAAgB,CAAC,mBAAmB,EAAE,KAAK,EAAE,EAAE,EAAE,mBAAmB,CAAC;YACzE,IAAI,0CAAgB,CAAC,yBAAyB,EAAE,KAAK,EAAE,EAAE,EAAE,aAAa,CAAC;YACzE,IAAI,0CAAgB,CAAC,yBAAyB,EAAE,KAAK,EAAE,EAAE,EAAE,aAAa,CAAC;YACzE,IAAI,0CAAgB,CAAC,4BAA4B,EAAE,KAAK,EAAE,EAAE,EAAE,gBAAgB,CAAC;YAC/E,IAAI,0CAAgB,CAAC,2BAA2B,EAAE,KAAK,EAAE,EAAE,EAAE,eAAe,CAAC;YAC7E,IAAI,0CAAgB,CAAC,2BAA2B,EAAE,KAAK,EAAE,EAAE,EAAE,cAAc,CAAC;YAC5E,IAAI,0CAAgB,CAAC,0CAA0C,EAAE,KAAK,EAAE,EAAE,EAAE,eAAe,CAAC;YAC5F,IAAI,0CAAgB,CAAC,0CAA0C,EAAE,KAAK,EAAE,EAAE,EAAE,cAAc,CAAC;YAC3F,IAAI,0CAAgB,CAAC,mBAAmB,EAAE,KAAK,EAAE,EAAE,EAAE,UAAU,CAAC;YAChE,IAAI,0CAAgB,CAAC,kCAAkC,EAAE,KAAK,EAAE,EAAE,EAAE,mBAAmB,CAAC;YACxF,IAAI,0CAAgB,CAAC,uBAAuB,EAAE,KAAK,EAAE,EAAE,EAAE,qBAAqB,CAAC;YAC/E,IAAI,0CAAgB,CAAC,4BAA4B,EAAE,KAAK,EAAE,EAAE,EAAE,yBAAyB,CAAC;YACxF,IAAI,0CAAgB,CAAC,oCAAoC,EAAE,KAAK,EAAE,EAAE,EAAE,oBAAoB,CAAC;YAC3F,IAAI,0CAAgB,CAAC,wCAAwC,EAAE,KAAK,EAAE,EAAE,EAAE,iBAAiB,CAAC;SAC/F,CAAC,CAAC;QAEH,CAAC,CAAC,wBAAwB,CAAC,CAAC,EAAE,CAAC,WAAW,EAAE,UAAC,CAAC,EAAE,QAAQ;YACpD,KAAI,CAAC,kBAAkB,CAAC,KAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;QAChF,CAAC,CAAC,CAAC;IACP,CAAC;IAED,iDAAoB,GAApB;QAAA,iBAwDC;QAtDG,IAAI,aAAa,GAAmB,EAAE,CAAC;QAEvC,kDAAkD;QAElD,GAAG;QAEH,IAAI,WAAoB,CAAC;QACzB,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,UAAC,IAAkB;YAE3C,WAAW,GAAG,IAAI,CAAC,CAAC,wBAAwB;YAE5C,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,KAAI,CAAC,yBAAyB,CAAC,mBAAmB,CAAC,EAAE,KAAI,CAAC,yBAAyB,CAAC,mCAAmC,CAAC,CAAC,EAAE;gBAC9J,WAAW,GAAG,KAAK,CAAC;gBACpB,2CAA2C;aAC9C;iBACI,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,KAAI,CAAC,yBAAyB,CAAC,qBAAqB,CAAC,EAAE,KAAI,CAAC,yBAAyB,CAAC,0BAA0B,CAAC,EAAE,KAAI,CAAC,yBAAyB,CAAC,wBAAwB,CAAC,CAAC,EAAE;gBACvM,WAAW,GAAG,KAAK,CAAC;gBACpB,6CAA6C;aAChD;iBACI,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,KAAI,CAAC,yBAAyB,CAAC,wBAAwB,CAAC,EAAE,KAAI,CAAC,yBAAyB,CAAC,4BAA4B,CAAC,EAAE,KAAI,CAAC,yBAAyB,CAAC,6BAA6B,CAAC,EAAE,KAAI,CAAC,yBAAyB,CAAC,0BAA0B,CAAC,CAAC,EAAE;gBAC1R,WAAW,GAAG,KAAK,CAAC;gBACpB,iDAAiD;aACpD;iBACI,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,KAAI,CAAC,yBAAyB,CAAC,6BAA6B,CAAC,EAAE,KAAI,CAAC,yBAAyB,CAAC,+BAA+B,CAAC,EAAE,KAAI,CAAC,yBAAyB,CAAC,mCAAmC,CAAC,EAAE,KAAI,CAAC,yBAAyB,CAAC,6BAA6B,CAAC,EAAE,KAAI,CAAC,yBAAyB,CAAC,4BAA4B,CAAC,EAAE,KAAI,CAAC,yBAAyB,CAAC,gCAAgC,CAAC,EAAE,KAAI,CAAC,yBAAyB,CAAC,+BAA+B,CAAC,EAAE,KAAI,CAAC,yBAAyB,CAAC,yBAAyB,CAAC,CAAC,EAAE;gBACliB,WAAW,GAAG,KAAK,CAAC;gBACpB,gDAAgD;aACnD;iBACI,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,KAAI,CAAC,yBAAyB,CAAC,sBAAsB,CAAC,EAAE,KAAI,CAAC,yBAAyB,CAAC,6BAA6B,CAAC,EAAE,KAAI,CAAC,yBAAyB,CAAC,iCAAiC,CAAC,EAAE,KAAI,CAAC,yBAAyB,CAAC,yBAAyB,CAAC,CAAC,EAAE;gBAC3R,WAAW,GAAG,KAAK,CAAC;gBACpB,oDAAoD;aACvD;iBACI,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC,KAAI,CAAC,yBAAyB,CAAC,0BAA0B,CAAC,EAAE,KAAI,CAAC,yBAAyB,CAAC,wCAAwC,CAAC,EAAE,KAAI,CAAC,yBAAyB,CAAC,mCAAmC,CAAC,CAAC,EAAE;gBACtP,WAAW,GAAG,KAAK,CAAC;gBACpB,iDAAiD;aACpD;YACD,6PAA6P;YAC7P,0BAA0B;YAC1B,GAAG;YACH,iVAAiV;iBAC5U,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,KAAI,CAAC,yBAAyB,CAAC,qCAAqC,CAAC,EAAE,KAAI,CAAC,yBAAyB,CAAC,gCAAgC,CAAC,EAAE,KAAI,CAAC,yBAAyB,CAAC,0CAA0C,CAAC,CAAC,EAAE;gBAC1P,WAAW,GAAG,KAAK,CAAC;gBACpB,mDAAmD;aACtD;iBACI,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,aAAa,CAAC,KAAI,CAAC,yBAAyB,CAAC,gDAAgD,CAAC,EAAE,KAAI,CAAC,yBAAyB,CAAC,yCAAyC,CAAC,EAAE,KAAI,CAAC,yBAAyB,CAAC,8CAA8C,CAAC,EAAE,KAAI,CAAC,yBAAyB,CAAC,qDAAqD,CAAC,EAAE,KAAI,CAAC,yBAAyB,CAAC,wCAAwC,CAAC,EAAE,KAAI,CAAC,yBAAyB,CAAC,sDAAsD,CAAC,CAAC,EAAE;gBACphB,WAAW,GAAG,KAAK,CAAC;gBACpB,iDAAiD;aACpD;YAED,IAAI,WAAW,EAAE;gBAAE,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;aAAE;QAElD,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC;QAChC,IAAI,CAAC,GAAG,CAAC,eAAe,CAAC,aAAa,CAAC,CAAC;IAC5C,CAAC;IAED,sDAAyB,GAAzB,UAA0B,QAAgB;QACtC,yCAAyC;QACzC,OAAO,CAAC,CAAC,QAAQ,CAAC,CAAC,GAAG,EAAE,CAAC;IAC7B,CAAC;IAED,4CAAe,GAAf,UAAgB,QAAgB;QAC5B,iDAAiD;QACjD,IAAI,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,GAAG,EAAE,CAAC;QACjC,IAAI,KAAK,GAAW,CAAC,CAAC,QAAQ,GAAG,SAAS,CAAC,CAAC,MAAM,CAAC;QAEnD,gEAAgE;QAEhE,OAAa,QAAS,CAAC,MAAM,IAAI,KAAK,CAAC;IAC3C,CAAC;IAED,wCAAW,GAAX,UAAY,aAA6B;QAErC,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;QACvB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,IAAI,EAAE,CAAC;QAC9C,IAAI,CAAC,kBAAkB,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;IAClD,CAAC;IAED,yCAAY,GAAZ;QAEI,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,UAAC,UAAkB;YAC9C,CAAC,CAAC,UAAU,CAAC,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC;YACxC,CAAC,CAAC,UAAU,CAAC,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;QAC1C,CAAC,CAAC,CAAC;QAEH,8BAA8B;QAC9B,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QAEjC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IAC1C,CAAC;IAED,+CAAkB,GAAlB,UAAmB,KAAa;QAE5B,QAAQ,KAAK,EAAE;YACX,KAAK,CAAC;gBAAE,CAAC,CAAC,oBAAoB,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;gBAAC,MAAM;YAC9D,KAAK,CAAC;gBAAE,CAAC,CAAC,oBAAoB,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;gBAAC,MAAM;YAC5D,OAAO,CAAC,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,IAAI,CAAC,KAAK,GAAG,cAAc,CAAC,CAAC;SACjE;IACL,CAAC;IAED,0CAAa,GAAb;QACI,CAAC,CAAC,kBAAkB,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IACxC,CAAC;IACL,yBAAC;AAAD,CAAC;AAheY,gDAAkB;;;;;;;;;;;;;;;;;ACP/B,SAAgB,UAAU,CAAC,IAAI;IAE3B,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,EAAE,EAAE;QACnC,IAAI,MAAM,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC;QAC5B,IAAI,KAAK,GAAG;YACR,KAAK;YACL,KAAK;YACL,KAAK;YACL,KAAK;YACL,KAAK;YACL,KAAK;YACL,KAAK;YACL,KAAK;YACL,KAAK;YACL,KAAK;YACL,KAAK;YACL,KAAK;SACR,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;QACrB,IAAI,GAAG,GAAG,MAAM,CAAC,OAAO,EAAE,GAAG,GAAG,GAAG,KAAK,GAAG,GAAG,GAAG,MAAM,CAAC,WAAW,EAAE,CAAC;QACtE,OAAO,GAAG,CAAC;KACd;IACD,OAAO,EAAE,CAAC;AACd,CAAC;AAtBD,gCAsBC;AAED,SAAgB,WAAW,CAAC,IAAI;IAE5B,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,EAAE,EAAE;QACnC,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAC9B,IAAI,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAClC,IAAI,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAE7B,IAAI,KAAK,GAAG;YACR,EAAE;YACF,KAAK;YACL,KAAK;YACL,KAAK;YACL,KAAK;YACL,KAAK;YACL,KAAK;YACL,KAAK;YACL,KAAK;YACL,KAAK;YACL,KAAK;YACL,KAAK;YACL,KAAK;SACR,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC;QAEtB,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,KAAK,GAAG,GAAG,GAAG,IAAI,CAAC;QACzC,OAAO,GAAG,CAAC;KACd;IACD,OAAO,EAAE,CAAC;AACd,CAAC;AA3BD,kCA2BC;AAED,SAAgB,cAAc,CAAC,IAAU;IACrC,IAAI,IAAI,IAAI,IAAI,EAAE;QACd,OAAO,EAAE,CAAC;KACb;IAED,IAAI,WAAW,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC;IAEjC,IAAI,IAAI,GAAG,WAAW,CAAC,WAAW,EAAE,CAAC;IAErC,IAAI,KAAK,GAAG;QACR,KAAK;QACL,KAAK;QACL,KAAK;QACL,KAAK;QACL,KAAK;QACL,KAAK;QACL,KAAK;QACL,KAAK;QACL,KAAK;QACL,KAAK;QACL,KAAK;QACL,KAAK;KACR,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC,CAAC;IAE1B,IAAI,GAAG,GAAG,WAAW,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC;IAE3C,OAAO,UAAG,KAAK,cAAI,GAAG,eAAK,IAAI,CAAE;AACrC,CAAC;AA3BD,wCA2BC;;;;;;;;;;;;;;;;AClFD,iGAAuD;AACvD,gHAAiH;AACjH,+EAAiD;AACjD,gGAA8D;AAC9D,gGAAqE;AAGrE;IAMI,6BAAY,IAAS;QAArB,iBAiBC;QAhBG,CAAC,CAAC;YAEE,KAAI,CAAC,SAAS,GAAG,oCAAY,EAAC,oCAAQ,EAAc,IAAI,CAAC,CAAC;YAC1D,KAAI,CAAC,SAAS,GAAG,KAAI,CAAC,SAAS,CAAC,GAAG,CAAC,UAAC,QAAkB;gBACnD,QAAQ,CAAC,UAAU,EAAE,CAAC;gBACtB,OAAO,QAAQ,CAAC;YACpB,CAAC,CAAC,CAAC;YAEH,KAAI,CAAC,iBAAiB,GAAG,CAAC,oBAAoB,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,kBAAkB,CAAC,CAAC;YAC9K,KAAI,CAAC,iBAAiB,EAAE,CAAC;YACzB,iCAAiC;YAEjC,KAAI,CAAC,eAAe,EAAE,CAAC;YACvB,KAAI,CAAC,sBAAsB,CAAC,KAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QAEvD,CAAC,CAAC,CAAC;IACP,CAAC;IAED,+CAAiB,GAAjB;QACI,IAAI,CAAC,kBAAkB,CAAC,oBAAoB,EAAE,4BAAM,EAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,UAAC,QAAkB,IAAK,eAAQ,CAAC,QAAQ,EAAjB,CAAiB,CAAC,EAAE,IAAI,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;QAC5I,IAAI,CAAC,kBAAkB,CAAC,iBAAiB,EAAE,4BAAM,EAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,UAAC,QAAkB,IAAK,eAAQ,CAAC,KAAK,EAAd,CAAc,CAAC,EAAE,IAAI,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;QACtI,IAAI,CAAC,kBAAkB,CAAC,kBAAkB,EAAE,4BAAM,EAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,UAAC,QAAkB,IAAK,eAAQ,CAAC,MAAM,EAAf,CAAe,CAAC,EAAE,IAAI,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;QACxI,IAAI,CAAC,kBAAkB,CAAC,qBAAqB,EAAE,4BAAM,EAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,UAAC,QAAkB,IAAK,eAAQ,CAAC,cAAc,EAAvB,CAAuB,CAAC,EAAE,IAAI,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;QACnJ,IAAI,CAAC,kBAAkB,CAAC,kBAAkB,EAAE,4BAAM,EAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,UAAC,QAAkB,IAAK,eAAQ,CAAC,MAAM,EAAf,CAAe,CAAC,EAAE,IAAI,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;QAExI,IAAI,MAAM,GAAa,EAAE,CAAC;QAC1B,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,UAAC,QAAkB,IAAO,MAAM,CAAC,IAAI,OAAX,MAAM,EAAS,QAAQ,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC;QACxF,IAAI,CAAC,kBAAkB,CAAC,oBAAoB,EAAE,4BAAM,EAAC,MAAM,EAAE,IAAI,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;QAErF,MAAM,GAAG,EAAE,CAAC;QACZ,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,UAAC,QAAkB,IAAO,MAAM,CAAC,IAAI,OAAX,MAAM,EAAS,QAAQ,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,CAAC;QAC3F,IAAI,CAAC,kBAAkB,CAAC,oBAAoB,EAAE,4BAAM,EAAC,MAAM,EAAE,IAAI,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;IACzF,CAAC;IAED,yDAAyD;IACzD,gDAAkB,GAAlB,UAAmB,QAAgB,EAAE,MAAgB;QAArD,iBAuBC;QAtBG,CAAC,CAAC,QAAQ,CAAC,CAAC,YAAY,CAAC;YACrB,UAAU,EAAE,KAAK;YACjB,kBAAkB,EAAE,OAAO;YAE3B,iBAAiB,EAAE,UAAC,WAAW,EAAE,QAAQ;gBACrC,IAAI,WAAW,IAAI,QAAQ,EAAE;oBACzB,OAAO,KAAK,CAAC;iBAChB;qBACI;oBACD,OAAO,WAAW,GAAG,WAAW,CAAC;iBACpC;YACL,CAAC;SACJ,CAAC,CAAC;QAEH,MAAM,CAAC,OAAO,CAAC,UAAC,OAAY;YACxB,CAAC,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC;QAClE,CAAC,CAAC,CAAC;QACH,CAAC,CAAC,QAAQ,CAAC,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;QAEpC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,mBAAmB,EAAE,UAAC,CAAC,EAAE,YAAY,EAAE,UAAU,EAAE,aAAa;YAC3E,KAAI,CAAC,eAAe,EAAE,CAAC;QAC3B,CAAC,CAAC,CAAC;IACP,CAAC;IAGD,6CAAe,GAAf;QAAA,iBAkFC;QAjFG,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC,kBAAkB,CAAC,CAAC,SAAS,CAAC;YAC7C,KAAK,EAAE,gFAAgF;YACvF,iGAAiG;YACjG,SAAS,EAAE,IAAI;YACf,IAAI,EAAE,KAAK;YACX,MAAM,EAAE,KAAK;YACb,MAAM,EAAE,IAAI;YACZ,OAAO,EAAE,IAAI;YACb,oBAAoB;YACpB,OAAO,EAAE,MAAM;YACf,cAAc,EAAE,IAAI;YACpB,aAAa,EAAE,IAAI;YACnB,YAAY,EAAE;gBACV,WAAW,EAAE,CAAC;aACjB;YACD,QAAQ,EACR;gBACI,MAAM,EAAE,QAAQ;aACnB;YACD,OAAO,EAAE;gBACL,EAAE,IAAI,EAAE,EAAE,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,eAAe,EAAE,SAAS,EAAE,qCAAqC,EAAE;gBAC/G,wGAAwG;gBACxG,8GAA8G;gBAC9G,EAAE,IAAI,EAAE,gBAAgB,EAAE,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,oDAAoD,EAAE;gBAC9G,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,eAAe,EAAE,SAAS,EAAE,oDAAoD,EAAE;gBAC7G,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,oDAAoD,EAAE;gBAClG,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,sCAAsC,EAAE;gBACtF,EAAE,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,uDAAuD,EAAE;gBACjH,EAAE,IAAI,EAAE,iBAAiB,EAAE,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,+BAA+B,EAAE;gBAC3F,EAAE,IAAI,EAAE,eAAe,EAAE,KAAK,EAAE,gBAAgB,EAAE,SAAS,EAAE,+BAA+B,EAAE;gBAC9F,EAAE,IAAI,EAAE,iBAAiB,EAAE,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,+BAA+B,EAAE;gBAC7F,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,cAAc,EAAE,SAAS,EAAE,kCAAkC,EAAE;gBACxF,EAAE,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE,cAAc,EAAE,SAAS,EAAE,kCAAkC,EAAE;gBAC7F,EAAE,IAAI,EAAE,wBAAwB,EAAE,KAAK,EAAE,+BAA+B,EAAE,SAAS,EAAE,kCAAkC,EAAE;gBACzH,EAAE,IAAI,EAAE,+BAA+B,EAAE,KAAK,EAAE,sCAAsC,EAAE,SAAS,EAAE,kCAAkC,EAAE;gBACvI,EAAE,IAAI,EAAE,gCAAgC,EAAE,KAAK,EAAE,gCAAgC,EAAE,SAAS,EAAE,kCAAkC,EAAE;gBAClI,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,yCAAyC,EAAE,SAAS,EAAE,kCAAkC,EAAE;gBACzH,EAAE,IAAI,EAAE,gBAAgB,EAAE,KAAK,EAAE,wCAAwC,EAAE,SAAS,EAAE,kCAAkC,EAAE;gBAC1H,EAAE,IAAI,EAAE,eAAe,EAAE,KAAK,EAAE,4CAA4C,EAAE,SAAS,EAAE,kCAAkC,EAAE;gBAC7H,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,2CAA2C,EAAE,SAAS,EAAE,qCAAqC,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,+BAAa,EAAG;aACzK;YACD,OAAO,EAAE;gBACL;oBACI,MAAM,EAAE,KAAK;oBACb,IAAI,EAAE,sCAAsC;oBAC5C,SAAS,EAAE,KAAK;oBAChB,OAAO,EAAE,OAAO;iBACnB;aACJ;YACD,IAAI,EAAE,IAAI,CAAC,SAAS;YACpB,mCAAmC;YACnC,YAAY,EAAE,UAAC,QAAQ,EAAE,IAAI;gBACzB,mGAAmG;YACvG,CAAC;SACJ,CAAC,CAAC;QAEH,CAAC,CAAC,eAAe,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;QAExC,CAAC,CAAC,gBAAgB,CAAC,CAAC,QAAQ,CAAC,sBAAsB,CAAC,CAAC;QACrD,CAAC,CAAC,gBAAgB,CAAC,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,gCAAgC,CAAC,CAAC;QAEnE,CAAC,CAAC,aAAa,CAAC,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAC;QAE7C,CAAC,CAAC,SAAS,CAAC,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAC;QACzC,CAAC,CAAC,cAAc,CAAC,CAAC,QAAQ,CAAC,uEAAuE,CAAC,CAAC;QACpG,+IAA+I;QAC/I,CAAC,CAAC,cAAc,CAAC,CAAC,OAAO,CAAC,2EAA2E,CAAC,CAAC;QAEvG,IAAI,CAAC,qBAAqB,GAAG,IAAI,yDAA+B,CAAC,kBAAkB,EAAE,gBAAgB,EAAE;YACnG,IAAI,0CAAgB,CAAC,gCAAgC,EAAE,IAAI,EAAE,EAAE,EAAE,gBAAgB,CAAC;YAClF,IAAI,0CAAgB,CAAC,qBAAqB,EAAE,IAAI,EAAE,EAAE,EAAE,iBAAiB,CAAC;YACxE,IAAI,0CAAgB,CAAC,QAAQ,EAAE,KAAK,EAAE,EAAE,EAAE,SAAS,CAAC;YACpD,IAAI,0CAAgB,CAAC,2BAA2B,EAAE,KAAK,EAAE,EAAE,EAAE,YAAY,CAAC;YAC1E,IAAI,0CAAgB,CAAC,UAAU,EAAE,KAAK,EAAE,EAAE,EAAE,YAAY,CAAC;YACzD,IAAI,0CAAgB,CAAC,eAAe,EAAE,IAAI,EAAE,EAAE,EAAE,eAAe,CAAC;SACnE,CAAC,CAAC;QAEH,CAAC,CAAC,kBAAkB,CAAC,CAAC,EAAE,CAAC,WAAW,EAAE,UAAC,CAAC,EAAE,QAAQ;YAC9C,KAAI,CAAC,sBAAsB,CAAC,KAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;QACpF,CAAC,CAAC,CAAC;IAEP,CAAC;IAED,6CAAe,GAAf;QAAA,iBAOC;QALG,IAAI,OAAO,GAAe,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,UAAC,QAAkB;YAC/D,OAAO,QAAQ,CAAC,aAAa,CAAC,KAAI,CAAC,yBAAyB,CAAC,oBAAoB,CAAC,EAAE,KAAI,CAAC,yBAAyB,CAAC,iBAAiB,CAAC,EAAE,KAAI,CAAC,yBAAyB,CAAC,kBAAkB,CAAC,EAAE,KAAI,CAAC,yBAAyB,CAAC,kBAAkB,CAAC,EAAE,KAAI,CAAC,yBAAyB,CAAC,oBAAoB,CAAC,EAAE,KAAI,CAAC,yBAAyB,CAAC,oBAAoB,CAAC,EAAE,KAAI,CAAC,yBAAyB,CAAC,qBAAqB,CAAC,CAAC,CAAC;QACtZ,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;IAC9B,CAAC;IAED,uDAAyB,GAAzB,UAA0B,QAAgB;QACtC,OAAO,CAAC,CAAC,QAAQ,CAAC,CAAC,GAAG,EAAE,CAAC;IAC7B,CAAC;IAED,8CAA8C;IAC9C,uCAAuC;IACvC,yDAAyD;IACzD,6CAA6C;IAC7C,GAAG;IAGH,yCAAW,GAAX,UAAY,iBAA6B;QAErC,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;QACvB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC,IAAI,EAAE,CAAC;QAClD,IAAI,CAAC,sBAAsB,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC;IAC1D,CAAC;IAED,0CAAY,GAAZ;QAEI,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,UAAC,UAAkB;YAC9C,CAAC,CAAC,UAAU,CAAC,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC;YACxC,CAAC,CAAC,UAAU,CAAC,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;QAC1C,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QACjC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACrC,CAAC;IAED,oDAAsB,GAAtB,UAAuB,KAAa;QAEhC,QAAQ,KAAK,EAAE;YACX,KAAK,CAAC;gBAAE,CAAC,CAAC,wBAAwB,CAAC,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;gBAAC,MAAM;YACtE,KAAK,CAAC;gBAAE,CAAC,CAAC,wBAAwB,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;gBAAC,MAAM;YACpE,OAAO,CAAC,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAC,IAAI,CAAC,KAAK,GAAG,kBAAkB,CAAC,CAAC;SACzE;IACL,CAAC;IAED,2CAAa,GAAb;QACI,CAAC,CAAC,uBAAuB,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAC7C,CAAC;IAED,+CAAiB,GAAjB;QAEI,MAAM,CAAC,IAAI,CAAC,uCAAuC,EAAE,QAAQ,CAAC,CAAC;IAEnE,CAAC;IACL,0BAAC;AAAD,CAAC;AAhNY,kDAAmB;;;;;;;;;;;;;;;;;ACJhC;IAAA;IAIA,CAAC;IAAD,oBAAC;AAAD,CAAC;AAJY,sCAAa;;;;;;;;;;;;ACH1B,uC;;;;;;;;;;;;;;;ACCA;IAEI,sBAAY,KAAU,EAAE,MAAyB,EAAE,OAAuB;QAEtE,6BAA6B;QAFT,0CAAyB;QAAE,wCAAuB;QAItE,MAAM,GAAG,GAAG,GAAG,MAAM,CAAC;QAEtB,CAAC,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACxB,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC;YACb,SAAS,EAAE,CAAC,QAAQ,EAAE,UAAU,CAAC;YACjC,QAAQ,EAAE;gBACN,mBAAmB,EAAE,IAAI;gBACzB,OAAO,EAAE,KAAK;aACjB;YACD,OAAO,EAAE;gBACL,QAAQ,EAAE;oBACN,MAAM,EAAE,eAAe;iBAC1B;gBACD,MAAM,EAAE;oBACJ,MAAM,EAAE,iBAAiB;iBAC5B;aACJ;YACD,MAAM,EAAE;gBACJ,MAAM,EAAE,KAAK;aAChB;SACJ,CAAC,CAAC,aAAY;QAEf,gFAAgF;QAChF,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,oBAAoB,EAAE,UAAU,CAAC,EAAE,IAAI;YAChD,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACzC,CAAC,CAAC,CAAC;QAEH,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,gBAAgB,EAAE,UAAU,CAAC,EAAE,IAAI;YAC5C,qCAAqC;YACrC,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,GAAG,CAAC,EAAE;gBAE7B,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,IAAI,OAAO,EAAE,EAAE,KAAK;oBAChD,IAAI,KAAK,GAAG,CAAC,CAAC,sBAAsB,CAAC,CAAC;oBACtC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;oBAEtD,KAAK,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;oBAEpE,uCAAuC;oBAEvC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;iBACvB;qBACI,EAAE,kBAAkB;oBACrB,IAAI,UAAU,GAAG,CAAC,CAAC,eAAe,CAAC,CAAC;oBACpC,UAAU,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;oBACjD,UAAU,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;oBACpC,UAAU,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;iBAEzB;aAGJ;QACL,CAAC,CAAC,CAAC;QAGH,oBAAoB;QACpB,CAAC,CAAC,YAAY,CAAC,CAAC,KAAK,CAAC;YAClB,IAAI,MAAM,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,CAAC;YAC3B,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QACvC,CAAC,CAAC,CAAC;QAEH,4BAA4B;QAC5B,CAAC,CAAC,cAAc,CAAC,CAAC,KAAK,CAAC;YACpB,CAAC,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YACxB,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;QACnC,CAAC,CAAC,CAAC;IAEP,CAAC;IACL,mBAAC;AAAD,CAAC;AAzEY,oCAAY","file":"secure.d8eb3d89c65ac27f80be.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"secure\"] = factory();\n\telse\n\t\troot[\"lib\"] = root[\"lib\"] || {}, root[\"lib\"][\"secure\"] = factory();\n})(window, function() {\nreturn ","import { plainToClass } from \"class-transformer\";\r\nimport { SplitAndJoin, FormatStringByWordLength, NoWordWrap, Split, Join, DoArraysOverlap, CheckArrayStartsWith } from \"../../../../shared/scripts/array-functions\";\r\n\r\n\r\nexport class SiteCapacity {\r\n\r\n SiteId: number;\r\n RcId: number;\r\n SiteName: string;\r\n CoordLat: number;\r\n CoordLon: number;\r\n IsMapCluster: boolean = false;\r\n SubRegion: string = \"Unknown\";\r\n Country: string = \"Unknown\";\r\n\r\n ResearchCenter: ResearchCenter;\r\n\r\n SiteOverviewJson: any;\r\n BiorepoJson: any;\r\n LabFacilityJson: any;\r\n OutbreakResearchJson: any;\r\n RegulatoryJson: any;\r\n ShippingProcurementJson: any;\r\n\r\n SiteOverview: SiteOverview;\r\n Biorepo: Biorepository;\r\n LabFacility: LabFacility;\r\n OutbreakResearch: OutbreakResearch;\r\n Regulatory: Regulatory;\r\n ShippingProcurement: ShippingProcurement;\r\n\r\n SiteNameDisplay: string;\r\n\r\n constructor() { }\r\n\r\n initialize(): void {\r\n this.SiteOverview = plainToClass(SiteOverview, this.SiteOverviewJson);\r\n this.Biorepo = plainToClass(Biorepository, this.BiorepoJson);\r\n this.LabFacility = plainToClass(LabFacility, this.LabFacilityJson);\r\n this.OutbreakResearch = plainToClass(OutbreakResearch, this.OutbreakResearchJson);\r\n this.Regulatory = plainToClass(Regulatory, this.RegulatoryJson);\r\n this.ShippingProcurement = plainToClass(ShippingProcurement, this.ShippingProcurementJson);\r\n\r\n this.SiteOverview.initialize();\r\n\r\n this.Biorepo.initialize();\r\n this.LabFacility.initialize();\r\n this.OutbreakResearch.initialize();\r\n this.Regulatory.initialize();\r\n this.ShippingProcurement.initialize();\r\n this.ResearchCenter.initialize();\r\n\r\n this.SiteNameDisplay = FormatStringByWordLength(this.SiteName, 3);\r\n\r\n //if (this.LabFacility.HasLabFacilities == \"No\") {\r\n // console.log(this);\r\n //}\r\n\r\n\r\n delete this.SiteOverviewJson;\r\n delete this.BiorepoJson;\r\n delete this.LabFacilityJson;\r\n delete this.OutbreakResearchJson;\r\n delete this.RegulatoryJson;\r\n delete this.ShippingProcurementJson;\r\n }\r\n\r\n matchesFilter(siteNames: any, subregions: any, countries: any): boolean {\r\n\r\n if (!siteNames.includes(this.SiteName)) return false;\r\n if (!subregions.includes(this.SubRegion)) return false;\r\n if (!countries.includes(this.Country)) return false;\r\n\r\n return true;\r\n\r\n }\r\n\r\n isCloseToPoint(x: number, y: number): boolean {\r\n //let radius: number = 0.25; //start with 1 degree\r\n //return (((x - this.CoordLat) * (x - this.CoordLat)) | ((y - this.CoordLon) * (y - this.CoordLon))) <= (radius * radius);\r\n\r\n return (this.CoordLat == x) && (this.CoordLon == y);\r\n }\r\n}\r\n\r\nexport class Biorepository {\r\n HasBiorepository: string = \"Unknown\";\r\n SampleTypes: string = \"Unknown\";\r\n SpeciesStored: string = \"Unknown\";\r\n LiveIsolates: string = \"Unknown\";\r\n HasSurgeCapacityToCollectProcessStore: string = \"Unknown\";\r\n BiosafetyLevels: string = \"Unknown\";\r\n ApprovedForSelectAgents: string = \"Unknown\";\r\n //ShippingCapacity: string = \"Unknown\";\r\n\r\n HasSops: string = \"\";\r\n Temperature: string = \"\";\r\n HasExternalAudit: string = \"\";\r\n OperateUnderQualitySystems: string = \"\";\r\n HasSystemToTrackSamples: string = \"\";\r\n LevelOfExperienceDuringOutbreak: string = \"\";\r\n HasLiquidNitrogen: string = \"\";\r\n SelectAgents: string = \"\";\r\n BackupGenerator: string = \"\";\r\n StaffTraining: string = \"\";\r\n ShareArchivalSamples: string = \"\";\r\n\r\n SampleTypesDisplay: string = \"\";\r\n SampleTypesList: string[] = [];\r\n SpeciesStoredDisplay: string = \"\";\r\n SpeciesStoredList: string[] = [];\r\n LiveIsolatesDisplay: string = \"\";\r\n LiveIsolatesList: string[] = [];\r\n BiosafetyLevelsDisplay: string = \"\";\r\n BiosafetyLevelsList: string[] = [];\r\n //ShippingCapacityDisplay: string = \"\";\r\n //ShippingCapacityList: string[] = [];\r\n\r\n initialize(): void {\r\n if (this.HasBiorepository == \"No\") {\r\n this.SampleTypes = this.BiosafetyLevels = this.SpeciesStored = this.LiveIsolates = this.ApprovedForSelectAgents = this.HasSurgeCapacityToCollectProcessStore = \"Not Applicable\";\r\n }\r\n\r\n this.SampleTypesList = Split(this.SampleTypes, \"|\");\r\n this.SampleTypesDisplay = Join(this.SampleTypesList, \", \", true, true);\r\n this.SampleTypesList = CheckArrayStartsWith(this.SampleTypesList, \"Other\", \"Other\");\r\n this.BiosafetyLevelsList = Split(this.BiosafetyLevels, \"|\");\r\n this.BiosafetyLevelsDisplay = Join(this.BiosafetyLevelsList, \", \", true, true);\r\n this.SpeciesStoredList = Split(this.SpeciesStored, \"|\");\r\n this.SpeciesStoredDisplay = Join(this.SpeciesStoredList, \", \", true, true);\r\n this.SpeciesStoredList = CheckArrayStartsWith(this.SpeciesStoredList, \"Other\", \"Other\");\r\n\r\n //this.ShippingCapacityList = Split(this.ShippingCapacity, \"|\");\r\n //this.ShippingCapacityDisplay = Join(this.ShippingCapacityList, \", \", true, true);\r\n //this.SpeciesStoredList = CheckArrayStartsWith(this.SpeciesStoredList, \"Other\", \"Other\");\r\n this.LiveIsolatesList = Split(this.LiveIsolates, \"|\");\r\n this.LiveIsolatesDisplay = Join(this.LiveIsolatesList, \", \", true, true);\r\n this.LiveIsolatesList = CheckArrayStartsWith(this.LiveIsolatesList, \"Other\", \"Other\");\r\n\r\n this.Temperature = SplitAndJoin(this.Temperature, \"|\", \", \", true, true);\r\n this.Temperature = this.Temperature.split(\"?\").join(\"°\");\r\n\r\n this.SelectAgents = SplitAndJoin(this.SelectAgents, \"|\", \", \", true, true);\r\n }\r\n\r\n matchesFilter(hasBiorepo: any, sampleTypes: any, speciesStored: any, biosafety: any, shipping: any, liveIsolates: any, selectAgents: any, surgeCapacity: any): boolean {\r\n\r\n if (!hasBiorepo.includes(this.HasBiorepository)) return false;\r\n if (!DoArraysOverlap(sampleTypes, this.SampleTypesList)) return false;\r\n if (!DoArraysOverlap(biosafety, this.BiosafetyLevelsList)) return false;\r\n if (!DoArraysOverlap(speciesStored, this.SpeciesStoredList)) return false;\r\n //if (!DoArraysOverlap(shipping, this.ShippingCapacityList)) return false;\r\n if (!DoArraysOverlap(liveIsolates, this.LiveIsolatesList)) return false;\r\n if (!selectAgents.includes(this.ApprovedForSelectAgents)) return false;\r\n if (!surgeCapacity.includes(this.HasSurgeCapacityToCollectProcessStore)) return false;\r\n //if (!DoArraysOverlap(surgeCapacity, this.HasSurgeCapacityToCollectProcessStore)) return false;\r\n\r\n return true;\r\n }\r\n}\r\n\r\nexport class LabFacility {\r\n HasLabFacilities: string = \"Unknown\";\r\n PrimarySiteResearchFocus: string = \"Unknown\";\r\n ResearchPerformed: string = \"Unknown\";\r\n BiosafetyLevels: string = \"Unknown\";\r\n RegisteredWithSelectAgentProgram: string = \"Unknown\";\r\n\r\n ExternalSystemOversight: string = \"\";\r\n ParticipateInAccreditationProficiencyTesting: string = \"\";\r\n ExternalAuditReview: string = \"\";\r\n ExternalReviewers: string = \"\";\r\n ExternalProficiencyTesting: string = \"\";\r\n NameOfExternalProgram: string = \"\";\r\n SelectAgents: string = \"\";\r\n RequireAdditionalTraining: string = \"\";\r\n AdditionalTraining: string = \"\";\r\n HasNovelTechnologyPlatform: string = \"\";\r\n NovelTechnologyPlatform: string = \"\";\r\n ExperienceLevelRequired: string = \"\";\r\n LabAssistanceNeed: string = \"\";\r\n PreClinicalAnimalStudies: string = \"\";\r\n PreclinicalSpeciesAndModels: string = \"\";\r\n\r\n PrimarySiteResearchFocusDisplay: string = \"\";\r\n PrimarySiteResearchFocusList: string[] = [];\r\n ResearchPerformedDisplay: string = \"\";\r\n ResearchPerformedList: string[] = [];\r\n BiosafetyLevelsDisplay: string = \"\";\r\n BiosafetyLevelsList: string[] = [];\r\n\r\n initialize(): void {\r\n if (this.HasLabFacilities == \"No\") {\r\n this.PrimarySiteResearchFocus = this.ResearchPerformed = this.BiosafetyLevels = this.RegisteredWithSelectAgentProgram = \"Not Applicable\";\r\n }\r\n\r\n this.PrimarySiteResearchFocusList = Split(this.PrimarySiteResearchFocus, \"|\");\r\n this.PrimarySiteResearchFocusDisplay = Join(this.PrimarySiteResearchFocusList, \", \", true, true);\r\n this.ResearchPerformedList = Split(this.ResearchPerformed, \"|\");\r\n this.ResearchPerformedDisplay = Join(this.ResearchPerformedList, \", \", true, true);\r\n this.ResearchPerformedList = CheckArrayStartsWith(this.ResearchPerformedList, \"Other\", \"Other\");\r\n this.BiosafetyLevelsList = Split(this.BiosafetyLevels, \"|\");\r\n this.BiosafetyLevelsDisplay = Join(this.BiosafetyLevelsList, \", \", true, true);\r\n\r\n this.ParticipateInAccreditationProficiencyTesting = SplitAndJoin(this.ParticipateInAccreditationProficiencyTesting, \"|\", \", \", true, true);\r\n this.SelectAgents = SplitAndJoin(this.SelectAgents, \"|\", \", \", true, true);\r\n this.LabAssistanceNeed = SplitAndJoin(this.LabAssistanceNeed, \"|\", \", \", true, true);\r\n }\r\n\r\n matchesFilter(hasLabFacility: any, researchFocus: any, researchPerformed: any, biosafetyLevels: any): boolean {\r\n\r\n if (!hasLabFacility.includes(this.HasLabFacilities)) return false;\r\n if (!DoArraysOverlap(researchFocus, this.PrimarySiteResearchFocusList)) return false;\r\n if (!DoArraysOverlap(researchPerformed, this.ResearchPerformedList)) return false;\r\n if (!DoArraysOverlap(biosafetyLevels, this.BiosafetyLevelsList)) return false;\r\n\r\n return true;\r\n }\r\n\r\n}\r\n\r\nexport class OutbreakResearch {\r\n OutbreakResponseAreas: string = \"Unknown\";\r\n AssociationWithNationalLabs: string = \"Unknown\";\r\n CollaborativeEntities: string = \"Unknown\";\r\n //OutbreakChallenge1: string = \"\";\r\n //OutbreakChallenge2: string = \"\";\r\n //OutbreakChallenge3: string = \"\";\r\n //RelationshipWithGovernment: string = \"\";\r\n //InCountryAuthorityDuringOutbreak: string = \"\";\r\n //RelationshipWithOneHealth: string = \"\";\r\n //InCountryInstitutions: string = \"\";\r\n //InCountryOrganizations: string = \"\";\r\n CurrentlyInvolvedInOneHealthInitiative: string = \"\";\r\n\r\n OutbreakResponseAreasDisplay: string = \"\";\r\n OutbreakResponseAreasList: string[] = [];\r\n AssociationWithNationalLabsDisplay: string = \"\";\r\n AssociationWithNationalLabsList: string[] = [];\r\n CollaborativeEntitiesDisplay: string = \"\";\r\n CollaborativeEntitiesList: string[] = [];\r\n\r\n initialize(): void {\r\n\r\n this.OutbreakResponseAreasList = Split(this.OutbreakResponseAreas, \"|\");\r\n this.OutbreakResponseAreasDisplay = Join(this.OutbreakResponseAreasList, \", \", true, true);\r\n this.OutbreakResponseAreasList = CheckArrayStartsWith(this.OutbreakResponseAreasList, \"Other\", \"Other\");\r\n this.AssociationWithNationalLabsList = Split(this.AssociationWithNationalLabs, \"|\");\r\n this.AssociationWithNationalLabsDisplay = Join(this.AssociationWithNationalLabsList, \", \", true, true);\r\n this.AssociationWithNationalLabsList = CheckArrayStartsWith(this.AssociationWithNationalLabsList, \"Other\", \"Other\");\r\n this.CollaborativeEntitiesList = Split(this.CollaborativeEntities, \"|\");\r\n this.CollaborativeEntitiesDisplay = Join(this.CollaborativeEntitiesList, \", \", true, true);\r\n this.CollaborativeEntitiesList = CheckArrayStartsWith(this.CollaborativeEntitiesList, \"Other\", \"Other\");\r\n\r\n // this.RelationshipWithGovernment = SplitAndJoin(this.RelationshipWithGovernment, \"|\", \", \", true, true);\r\n // this.RelationshipWithOneHealth = SplitAndJoin(this.RelationshipWithOneHealth, \"|\", \", \", true, true);\r\n // this.InCountryInstitutions = SplitAndJoin(this.InCountryInstitutions, \"|\", \", \", true, true);\r\n // this.InCountryOrganizations = SplitAndJoin(this.InCountryOrganizations, \"|\", \", \", true, true);\r\n }\r\n\r\n matchesFilter(areas: any, nationalLabs: any, collaborators: any): boolean {\r\n\r\n if (!DoArraysOverlap(areas, this.OutbreakResponseAreas)) return false;\r\n if (!DoArraysOverlap(nationalLabs, this.AssociationWithNationalLabs)) return false;\r\n if (!DoArraysOverlap(collaborators, this.CollaborativeEntities)) return false;\r\n\r\n return true;\r\n }\r\n}\r\n\r\nexport class Regulatory {\r\n AnySharingRestrictions: string = \"Unknown\";\r\n RequireIndemnityClause: string = \"Unknown\";\r\n UtilizeCommonRule: string = \"Unknown\";\r\n //ApprovalRequirements: string = \"Unknown\";\r\n SharingRestrictions: string = \"\";\r\n CentralizedAssistanceNeed: string = \"\";\r\n IrbName: string = \"\";\r\n IrbMeetingFrequency: string = \"\";\r\n AverageReviewTimeline: string = \"\";\r\n MinimumExpeditedTimeline: string = \"\";\r\n //RequirePeriodicReview: string = \"\";\r\n //ContinuationDependOnPeriodicReview: string = \"\";\r\n //ImmediateReportingOfSAE: string = \"\";\r\n //ImmediateReportingOfProtocolViolations: string = \"\";\r\n //GreatestOutbreakIrbHurdles: string = \"\";\r\n\r\n initialize(): void {\r\n this.CentralizedAssistanceNeed = SplitAndJoin(this.CentralizedAssistanceNeed, \"|\", \", \", true, true);\r\n }\r\n\r\n //matchesFilter(siteCommonRule: any, irbApprovalRequirements: any, indemnity: any, sharingRestrictions: any): boolean {\r\n matchesFilter(siteCommonRule: any, indemnity: any, sharingRestrictions: any): boolean {\r\n\r\n if (!DoArraysOverlap(indemnity, this.RequireIndemnityClause)) return false;\r\n if (!DoArraysOverlap(sharingRestrictions, this.AnySharingRestrictions)) return false;\r\n if (!DoArraysOverlap(siteCommonRule, this.UtilizeCommonRule)) return false;\r\n //if (!DoArraysOverlap(irbApprovalRequirements, this.ApprovalRequirements)) return false;\r\n\r\n return true;\r\n }\r\n}\r\n\r\nexport class ShippingProcurement {\r\n ShippingCapacity: string = \"Unknown\";\r\n TrainingAndCertification: string = \"Unknown\";\r\n AverageReceivingTime: string = \"Unknown\";\r\n PercentSuppliedWithinCountry: string = \"Unknown\";\r\n AbleToObtainImportExportPermits: string = \"Unknown\";\r\n InternationalShippingMethod: string = \"Unknown\";\r\n AccessToInternationalCouriers: string = \"\";\r\n AbleToObtainPermits: string = \"\";\r\n TypesOfTraining: string = \"\";\r\n AccessToLargerPortal: string = \"\";\r\n TimelineToObtainPermits: string = \"\";\r\n\r\n ShippingCapacityDisplay: string = \"\";\r\n ShippingCapacityList: string[] = [];\r\n InternationalShippingMethodDisplay: string = \"\";\r\n InternationalShippingMethodList: string[] = [];\r\n\r\n initialize(): void {\r\n //this.CentralizedAssistanceNeed = SplitAndJoin(this.CentralizedAssistanceNeed, \"|\", \", \", true, true);\r\n\r\n this.ShippingCapacityList = Split(this.ShippingCapacity, \"|\");\r\n this.ShippingCapacityDisplay = Join(this.ShippingCapacityList, \", \", true, true);\r\n this.InternationalShippingMethodList = Split(this.InternationalShippingMethod, \"|\");\r\n this.InternationalShippingMethodDisplay = Join(this.InternationalShippingMethodList, \", \", true, true);\r\n }\r\n\r\n matchesFilter(shipping: any, training: any, receivingTime: any, suppliedWithinCountry: any, permits: any, internationalShipping: any): boolean {\r\n\r\n if (!DoArraysOverlap(shipping, this.ShippingCapacityList)) return false;\r\n if (!DoArraysOverlap(training, this.TrainingAndCertification)) return false;\r\n if (!DoArraysOverlap(receivingTime, this.AverageReceivingTime)) return false;\r\n if (!DoArraysOverlap(suppliedWithinCountry, this.PercentSuppliedWithinCountry)) return false;\r\n if (!DoArraysOverlap(permits, this.AbleToObtainImportExportPermits)) return false;\r\n if (!DoArraysOverlap(internationalShipping, this.InternationalShippingMethodList)) return false;\r\n\r\n return true;\r\n }\r\n}\r\n\r\nexport class SiteOverview {\r\n OrganizationType: string = \"Unknown\";\r\n PathogensLabAssays: string = \"Unknown\";\r\n Disciplines: string = \"Unknown\";\r\n FieldStudyTypeExperience: string = \"Unknown\";\r\n\r\n CapacityBuildingTraining: string = \"\";\r\n BarrierToCapacityTraining: string = \"\";\r\n PerformsResearch: string = \"\";\r\n PathogensActivelyStudied: string = \"\";\r\n PathogensStudiesInPast: string = \"\";\r\n TypesOfAnimalFieldStudies: string = \"\";\r\n TypesOfLivestockFieldStudies: string = \"\";\r\n TypesOfEntomologyFieldStudies: string = \"\";\r\n TypesOfHumanFieldStudies: string = \"\";\r\n PocFirstName: string = \"\";\r\n PocLastName: string = \"\";\r\n PocEmail: string = \"\";\r\n PocTitle: string = \"\";\r\n\r\n OrganizationTypesList: string[] = [];\r\n DisciplinesDisplay: string = \"\";\r\n DisciplinesList: string[] = [];\r\n FieldStudyTypeExperienceDisplay: string = \"\";\r\n FieldStudyTypeExperienceList: string[] = [];\r\n PathogensDisplay: string = \"\";\r\n PathogensList: string[] = [];\r\n PocName: string = \"\";\r\n\r\n initialize(): void {\r\n this.OrganizationTypesList = [this.OrganizationType ];\r\n this.OrganizationTypesList = CheckArrayStartsWith(this.OrganizationTypesList, \"Other\", \"Other\");\r\n\r\n this.DisciplinesList = Split(this.Disciplines, \"|\");\r\n this.DisciplinesDisplay = Join(this.DisciplinesList, \", \", true, true);\r\n this.DisciplinesList = CheckArrayStartsWith(this.DisciplinesList, \"Other\", \"Other\");\r\n\r\n this.FieldStudyTypeExperienceList = Split(this.FieldStudyTypeExperience, \"|\");\r\n this.FieldStudyTypeExperienceDisplay = Join(this.FieldStudyTypeExperienceList, \", \", true, true);\r\n this.FieldStudyTypeExperienceList = CheckArrayStartsWith(this.FieldStudyTypeExperienceList, \"Other\", \"Other\");\r\n\r\n this.PathogensList = Split(this.PathogensLabAssays, \"|\");\r\n this.PathogensDisplay = Join(this.PathogensList, \", \", true, true);\r\n this.PathogensList = CheckArrayStartsWith(this.PathogensList, \"Other\", \"Other\");\r\n\r\n this.BarrierToCapacityTraining = SplitAndJoin(this.BarrierToCapacityTraining, \"|\", \", \", true, true);\r\n this.TypesOfAnimalFieldStudies = SplitAndJoin(this.TypesOfAnimalFieldStudies, \"|\", \", \", true, true);\r\n this.TypesOfLivestockFieldStudies = SplitAndJoin(this.TypesOfLivestockFieldStudies, \"|\", \", \", true, true);\r\n this.TypesOfEntomologyFieldStudies = SplitAndJoin(this.TypesOfEntomologyFieldStudies, \"|\", \", \", true, true);\r\n this.TypesOfHumanFieldStudies = SplitAndJoin(this.TypesOfHumanFieldStudies, \"|\", \", \", true, true);\r\n\r\n this.PocName = (this.PocFirstName + \" \" + this.PocLastName).trim();\r\n this.PocEmail = NoWordWrap(this.PocEmail);\r\n }\r\n\r\n matchesFilter(orgTypes: any, disciplineList: any, fieldTypes: any, pathogenList: any, ): boolean {\r\n\r\n //if (!orgTypes.includes(this.OrganizationType)) return false;\r\n if (!DoArraysOverlap(orgTypes, this.OrganizationTypesList)) { /*console.log(\"OrgType\");*/ return false; }\r\n if (!DoArraysOverlap(disciplineList, this.DisciplinesList)) { /*console.log(\"Disciplines\");*/ return false; }\r\n if (!DoArraysOverlap(pathogenList, this.PathogensLabAssays)) { /*console.log(\"Pathogens\");*/ return false; }\r\n if (!DoArraysOverlap(fieldTypes, this.FieldStudyTypeExperience)) { /*console.log(\"FieldStudy\");*/ return false; }\r\n\r\n return true;\r\n }\r\n}\r\n\r\nexport class ResearchCenter {\r\n RcId: number;\r\n RcName: string = \"\";\r\n HubIrbCommonRule: string = \"\";\r\n HubSinceWhenCommonRule: string = \"\";\r\n HubHowManyIrbs: string = \"\";\r\n HubIrbNames: string = \"\";\r\n HubHowOftenIrbMeet: string = \"\";\r\n HubIrbReviewTime: string = \"\";\r\n HubIrbExpeditedReviewTime: string = \"\";\r\n HubIrbHurdles: string = \"\";\r\n\r\n RcNameDisplay: string = \"\";\r\n\r\n initialize(): void {\r\n this.RcNameDisplay = NoWordWrap(this.RcName);\r\n\r\n this.HubIrbNames = SplitAndJoin(this.HubIrbNames, \"|\", \", \", true, true);\r\n }\r\n\r\n matchesFilter(rcNames: any, rcIrbCommonRule: any): boolean {\r\n\r\n if (!rcNames.includes(this.RcName)) return false;\r\n if (!rcIrbCommonRule.includes(this.HubIrbCommonRule)) return false;\r\n\r\n return true;\r\n\r\n }\r\n}","import { DocumentTree } from \"../../shared/components/document-tree/document-tree\";\r\n\r\n\r\nexport class OutbreakResponseResourcesPage {\r\n\r\n //cdeDocumentTree: DocumentTree;\r\n\r\n constructor(resources: any, pathogens: any, roadmaps: any, mappings: any) {\r\n $(() => {\r\n\r\n //console.log(resources, pathogens, roadmaps);\r\n\r\n new DocumentTree(resources, \"resources-tree\");\r\n new DocumentTree(pathogens, \"pathogens-tree\");\r\n new DocumentTree(roadmaps, \"roadmaps-tree\");\r\n new DocumentTree(mappings, \"mappings-tree\");\r\n\r\n });\r\n }\r\n\r\n}","import dateFormat from \"dateformat\";\r\n\r\n\r\nexport function FormatStringColumnByLength(value: string, wordsOnLine: number): string {\r\n let parts: string[] = value.split(\" \");\r\n let output: string = \"\";\r\n for (let i = 0; i < parts.length; ++i) {\r\n output += parts[i] + \" \";\r\n if (i == (wordsOnLine - 1)) {\r\n output += \"\";\r\n }\r\n }\r\n\r\n if (parts.length < (wordsOnLine - 1)) { output += \"\"; }\r\n return output.trim();\r\n}\r\n\r\n\r\nexport function RenderProgressBar(data, type, row, meta): any {\r\n let output: string;\r\n if (type !== 'display') { output = data; }\r\n else if (data == '-1') { output = \"\" }\r\n else {\r\n output = '
' + Math.round(data * 100.0) + '%
'\r\n }\r\n return output;\r\n}\r\n\r\nexport function RenderProgressValue(data, type, row, meta): any {\r\n let output: string;\r\n if (type !== 'display') { output = data; }\r\n else if (data == '-1' || data == undefined) { output = \"\" }\r\n else {\r\n output = Math.round(data * 100.0) + '%'\r\n }\r\n return output;\r\n}\r\n\r\nexport function RenderNullableNumber(data, type, row, meta): any {\r\n if (data == -1) return \"\";\r\n else return data;\r\n}\r\nexport function RenderNullabledNumberAndRound_1Digit(data, type, row): any {\r\n if (data == -1 || data == undefined) return \"\";\r\n else return (data).toFixed(1);\r\n}\r\nexport function RenderNullabledNumberAndRound_2Digits(data, type, row): any {\r\n if (data == -1 || data == undefined) return \"\";\r\n else return (+data).toFixed(2);\r\n}\r\n\r\nexport function RenderNullableNumberWithSeparators(data, type, row, meta): any {\r\n if (data == -1 || data == undefined) return \"\";\r\n else return data.toLocaleString(\"en-US\")\r\n}\r\n\r\nexport function RenderDateMDY(data, type, row, meta): any {\r\n\r\n //console.log(\"Render Date:\", data, row);\r\n\r\n let dateString: string = GetDateString(data);\r\n if (dateString == \"\") return \"\";\r\n\r\n let delimiter: string = GetDateDelimiter(dateString);\r\n if (delimiter == \"\") return \"\";\r\n\r\n let date: Date = undefined;\r\n try {\r\n let parts: string[] = (dateString).split(delimiter);\r\n //let date: Date = new Date(data + \" 06:00:00Z-0400\");\r\n date = new Date(Number.parseInt(parts[2]), Number.parseInt(parts[0]) - 1, Number.parseInt(parts[1]), 11, 0);\r\n }\r\n catch (error) {\r\n date = undefined;\r\n }\r\n\r\n if (type == 'sort') {\r\n if (date != undefined) return date.getTime();\r\n else return -1;\r\n }\r\n else {\r\n if (date != undefined) return \"\" + dateFormat(date, \"mmm dd yyyy\") + \"\";\r\n else return \"\";\r\n }\r\n}\r\n\r\nexport function RenderDateYMD(data, type, row, meta): any {\r\n\r\n let dateString: string = GetDateString(data);\r\n if (dateString == \"\") return \"\";\r\n\r\n let delimiter: string = GetDateDelimiter(dateString);\r\n if (delimiter == \"\") return \"\";\r\n\r\n let date: Date = undefined;\r\n try {\r\n let parts: string[] = (dateString).split(delimiter);\r\n //let date: Date = new Date(data + \" 06:00:00Z-0400\");\r\n date = new Date(Number.parseInt(parts[0]), Number.parseInt(parts[1]) - 1, Number.parseInt(parts[2]), 11, 0);\r\n }\r\n catch (error) {\r\n date = undefined;\r\n }\r\n\r\n if (type == 'sort') {\r\n if (date != undefined) return date.getTime();\r\n else return -1;\r\n }\r\n else {\r\n if (date != undefined) return \"\" + dateFormat(date, \"mmm dd yyyy\") + \"\";\r\n else return \"\";\r\n }\r\n}\r\n\r\nexport function GetDateString(data: any): string {\r\n\r\n if (data == undefined || data == -1 || data == \"\") return \"\";\r\n\r\n //to remove trailing time\r\n let dateString: string = data;\r\n if (dateString.indexOf(\" \") != -1) { dateString = dateString.substring(0, dateString.indexOf(\" \")).trim(); }\r\n\r\n return dateString;\r\n}\r\n\r\nexport function GetDateDelimiter(date: string): string {\r\n if (date.indexOf(\"-\") != -1) { return \"-\"; }\r\n else if (date.indexOf(\"/\")! - 1) { return \"/\"; }\r\n else return \"\";\r\n}\r\n\r\nexport function InitializeFilterDropdown(selectId: string, values: string[], tableFilter: ITableFilter, compoundValues: any[] = undefined, selected: boolean = true): void {\r\n $(selectId).selectpicker({\r\n dropupAuto: false,\r\n selectedTextFormat: \"count\",\r\n\r\n countSelectedText: (numSelected, numTotal) => {\r\n if (numSelected == numTotal) {\r\n return \"All\";\r\n }\r\n else {\r\n return numSelected + \" Selected\";\r\n }\r\n }\r\n });\r\n\r\n if (compoundValues == undefined) {\r\n values.forEach((element: any) => {\r\n $(selectId).append(new Option(element, element, false, selected));\r\n });\r\n }\r\n else {\r\n //compoundValues.forEach((element: ExpertiseArea) => {\r\n // $(selectId).append(new Option(element.Expertise, element.Id, false, selected));\r\n //});\r\n }\r\n\r\n $(selectId).selectpicker(\"refresh\");\r\n\r\n $(selectId).on('changed.bs.select', (e, clickedIndex, isSelected, previousValue) => {\r\n tableFilter.triggerFilter();\r\n });\r\n}\r\n\r\nexport function GetSelectedDropdownValues(selectId: string): any {\r\n return $(selectId).val();\r\n}\r\n\r\n\r\nexport interface ITableFilter {\r\n triggerFilter(): void;\r\n}","import { DocumentTree } from '../../shared/components/document-tree/document-tree';\r\nimport { UserDirectoryEntity } from '../communications/directory/directory.objects';\r\nimport { plainToClass } from 'class-transformer';\r\n\r\nexport class CommitteePage {\r\n\r\n documentTree: DocumentTree;\r\n\r\n constructor(nodes: any, userJson: any, tableId: string, primaryId: string, secondaryId: string, observerId: string, communicationsId: string) {\r\n $(() => {\r\n\r\n //console.log(\"Init\");\r\n //console.log(nodes);\r\n if (nodes) {\r\n this.documentTree = new DocumentTree(nodes);\r\n }\r\n\r\n if (tableId != \"\") {\r\n this.initializeParticipantTable(tableId, userJson, primaryId, secondaryId, observerId, communicationsId);\r\n }\r\n });\r\n }\r\n\r\n initializeParticipantTable(tableId: string, userJson: any, primaryId: string, secondaryId: string, observerId: string, communicationsId: string): void {\r\n\r\n let users: UserDirectoryEntity[] = plainToClass(UserDirectoryEntity, userJson);\r\n\r\n users = users.map((user: UserDirectoryEntity) => {\r\n user.initialize();\r\n user.setMembershipForGroupDirectory(primaryId, secondaryId, observerId, communicationsId);\r\n return user;\r\n });\r\n\r\n //console.log(users);\r\n\r\n let table = $('#' + tableId).DataTable({\r\n \"dom\": '<\"top-controls\"f<\"top-right-section\"<\"filtering-section\">B>>rtip',\r\n autoWidth: true,\r\n info: false,\r\n paging: false,\r\n search: true,\r\n scrollX: false,\r\n orderCellsTop: true,\r\n columns: [\r\n { data: \"DisplayName\", className: \"text-left\" },\r\n { data: \"Network\", className: \"text-left\", width: '15%' },\r\n { data: \"Organization\", className: \"text-left\", width: '25%' },\r\n { data: \"Email\", className: \"text-left\", width: '25%' },\r\n { data: \"Membership\", visible: false },\r\n ],\r\n columnDefs: [{ //to sort by last name first\r\n targets: 0,\r\n data: \"DisplayName\",\r\n render: function (data, type, full, meta) {\r\n if (type == 'sort') {\r\n data = full.SortName;\r\n }\r\n return data;\r\n }\r\n }],\r\n buttons: [\r\n {\r\n extend: 'csv',\r\n text: '',\r\n titleAttr: 'CSV',\r\n charset: 'utf-8',\r\n //exportOptions: {\r\n // columns: [1, 2, 3, 4]\r\n //}\r\n }\r\n ],\r\n data: users\r\n });\r\n\r\n let filterSectionDiv: string =\r\n \"
\" +\r\n \"
\" +\r\n \"
\"\r\n ;\r\n $(\".filtering-section\").empty().html(filterSectionDiv);\r\n $(\".filtering-section\").css('display', 'inline-block');\r\n //$(\".filtering-section\").css('float', 'right');\r\n $(\".top-right-section\").css('float', 'right');\r\n\r\n\r\n for (let index = 0; index <= 5; ++index) {\r\n if (index != 4) continue; //only filtering on membership\r\n\r\n var select = $(\"#membershipOptions\");\r\n select.empty();\r\n\r\n select.append($(\"\").attr(\"value\", 'All').text('All'));\r\n\r\n let choices: string[] = [];\r\n if (primaryId != \"SKIP\") { choices.push(\"Primary Members\"); }\r\n if (secondaryId != \"SKIP\") { choices.push(\"Secondary Members\"); }\r\n if (observerId != \"SKIP\") { choices.push(\"Observers\"); }\r\n if (communicationsId != \"SKIP\") { choices.push(\"Communications\"); }\r\n choices.forEach((val: string) => {\r\n select.append($(\"\").attr(\"value\", val.split(' ').join('-')).text(val));\r\n });\r\n\r\n select.on('change', (event) => {\r\n let selected: string = $(event.currentTarget).val();\r\n //console.log(selected);\r\n if (selected == 'All') selected = '';\r\n table.column(index)\r\n .search(selected)\r\n .draw();\r\n });\r\n }\r\n }\r\n}\r\n","import { plainToClass } from \"class-transformer\";\r\nimport { Stakeholder } from \"./stakeholders.entities\";\r\nimport { TableColumnVisibilityController, TableColumnGroup } from \"../../../shared/scripts/table-column-visibility\";\r\nimport { Unique, Split } from \"../../../shared/scripts/array-functions\";\r\n\r\n\r\nexport class StakeholdersPage {\r\n\r\n stakeholders: Stakeholder[];\r\n dataTable: any;\r\n tableColumnController: TableColumnVisibilityController;\r\n filterDropdownIds: string[];\r\n\r\n constructor(data: any) {\r\n $(() => {\r\n\r\n this.stakeholders = plainToClass(Stakeholder, data);\r\n this.stakeholders = this.stakeholders.map((stakeholder: Stakeholder) => {\r\n stakeholder.initialize();\r\n return stakeholder;\r\n });\r\n\r\n this.filterDropdownIds = ['#stakeholder-type-dropdown', '#organization-type-dropdown', '#geographic-focus-dropdown', '#pathogen-focus-dropdown'];\r\n this.initializeFilters();\r\n //console.log(this.stakeholders);\r\n\r\n this.initializeTable();\r\n this.setStakeholdersFoundLabel(this.stakeholders.length);\r\n\r\n });\r\n }\r\n\r\n initializeFilters(): void {\r\n this.initializeDropdown('#stakeholder-type-dropdown', Unique(this.stakeholders.map((stakeholder: Stakeholder) => stakeholder.StakeholderType), true, [\"Unknown\"]));\r\n this.initializeDropdown('#organization-type-dropdown', Unique(this.stakeholders.map((stakeholder: Stakeholder) => stakeholder.OrganizationType), true, [\"Unknown\"]));\r\n\r\n let values: string[] = [];\r\n this.stakeholders.forEach((stakeholder: Stakeholder) => { values.push(...stakeholder.GeographicFocusList); });\r\n this.initializeDropdown('#geographic-focus-dropdown', Unique(values, true, [\"Not Defined\"]));\r\n\r\n values = [];\r\n this.stakeholders.forEach((stakeholder: Stakeholder) => { values.push(...stakeholder.VirusesList); });\r\n this.initializeDropdown('#pathogen-focus-dropdown', Unique(values, true, [\"Not Defined\"]));\r\n\r\n }\r\n\r\n initializeDropdown(selectId: string, values: string[]): void {\r\n $(selectId).selectpicker({\r\n dropupAuto: false,\r\n selectedTextFormat: \"count\",\r\n\r\n countSelectedText: (numSelected, numTotal) => {\r\n if (numSelected == numTotal) {\r\n return \"All\";\r\n }\r\n else {\r\n return numSelected + \" Selected\";\r\n }\r\n }\r\n });\r\n\r\n values.forEach((element: any) => {\r\n $(selectId).append(new Option(element, element, false, true));\r\n });\r\n $(selectId).selectpicker(\"refresh\");\r\n\r\n $(selectId).on('changed.bs.select', (e, clickedIndex, isSelected, previousValue) => {\r\n this.filterStakeholders();\r\n });\r\n }\r\n\r\n\r\n initializeTable(): void {\r\n this.dataTable = $('#stakeholders-table').DataTable({\r\n \"dom\": '<\"top-controls\"<\"column-select\"><\"search-bar\"f><\"spacer\"><\"count-found\"B>>rtip',\r\n //\"dom\": '<\"top-controls\"<\"left-section\"<\"search-bar\"f>><\"right-section\"<\"column-select\">B>rtip',\r\n autoWidth: true,\r\n info: false,\r\n paging: false,\r\n search: true,\r\n scrollX: true,\r\n //responsive: false,\r\n scrollY: '68vh',\r\n scrollCollapse: true,\r\n orderCellsTop: true,\r\n fixedColumns: {\r\n leftColumns: 1\r\n },\r\n language:\r\n {\r\n search: \"Search\",\r\n },\r\n columns: [\r\n { data: { _: \"StakeholderName\", sort: \"StakeholderName\" }, title: \"Stakeholder Name\", className: \"text-left font-size12 min-width-250\" },\r\n { data: \"StakeholderType\", title: \"Stakeholder Type\", className: \"about text-left font-size12\" },\r\n { data: \"OrganizationType\", title: \"Organization Type\", className: \"about text-left font-size12\" },\r\n { data: \"GeographicFocusDisplay\", title: \"Geographic Focus\", className: \"about text-left font-size12\" },\r\n { data: \"About\", title: \"Description\", className: \"about text-left font-size11 about-col min-width-400\" },\r\n { data: \"VirusesDisplay\", title: \"Virus Focus\", className: \"about text-left font-size12\" },\r\n { data: \"DiseasesDisplay\", title: \"Disease Focus\", className: \"about text-left font-size12\" },\r\n { data: \"StakeholderOffering\", title: \"Stakeholder Offering\", className: \"about text-left font-size12 min-width-150\" },\r\n { data: \"Notes\", title: \"Notes\", className: \"about text-left font-size12 min-width-200\" },\r\n { data: \"URLDisplay\", title: \"URL\", className: \"contact text-left font-size12\" },\r\n { data: \"StakeholderContactName\", title: \"Stakeholder Contact (Name)\", className: \"contact text-left font-size12 min-width-200\" },\r\n { data: \"StakeholderContactEmailDisplay\", title: \"Stakeholder Contact (Email)\", className: \"contact text-left font-size12\" },\r\n { data: \"POC\", title: \"CC/DMID Point of Contact\", className: \"contact text-left font-size12 min-width-150\" },\r\n { data: \"AgreementInPlace\", title: \"Agreement in Place\", className: \"engage text-left font-size12 min-width-100\" },\r\n { data: \"PresenttoSC\", title: \"Present to SC\", className: \"engage text-left font-size12 min-width-100\" },\r\n { data: \"AttendAnnualMeeting\", title: \"Attend Annual Meeting\", className: \"engage text-left font-size12 min-width-100\" },\r\n { data: \"AttendStakeholderForum\", title: \"Attend Stakeholder Forum\", className: \"engage text-left font-size12 min-width-100\" },\r\n { data: \"PresentatScientificSeries\", title: \"Present at Scientific Series\", className: \"engage text-left font-size12 min-width-100\" },\r\n { data: \"AttendScientificSeries\", title: \"Attend Scientific Series\", className: \"engage text-left font-size12 min-width-100\" },\r\n { data: \"PresentatWGMeetings\", title: \"Present at WG Meetings\", className: \"engage text-left font-size12 min-width-100\" },\r\n { data: \"InvitedGuesttoWG\", title: \"Invited Guest to WG\", className: \"engage text-left font-size12 min-width-100\" },\r\n { data: \"MemberofWG\", title: \"Member of WG\", className: \"engage text-left font-size12 min-width-100\" },\r\n { data: \"ReceiveQuarterlyUpdates\", title: \"Receive Quarterly Updates\", className: \"engage text-left font-size12 min-width-100\" },\r\n { data: \"BenefitsForm\", title: \"Have Benefits Form\", className: \"document text-left font-size12 min-width-100\" },\r\n { data: \"StakeholderAgreedDate\", title: \"Stakeholder Agreed Date\", className: \"document text-left font-size12 min-width-100\" },\r\n { data: \"SCAgreedDate\", title: \"SC Agreed Date\", className: \"document text-left font-size12 min-width-100\" },\r\n { data: \"Families\", title: \"Virus Family\", visible: false },\r\n ],\r\n buttons: [\r\n {\r\n extend: 'csv',\r\n text: '',\r\n titleAttr: 'CSV',\r\n charset: 'utf-8',\r\n }\r\n ],\r\n data: this.stakeholders,\r\n //order: [[5, 'desc'], [1, 'asc']],\r\n initComplete: (settings, json) => {\r\n //$(\"#hub-details-table\").wrap(\"
\");\r\n },\r\n });\r\n\r\n $(\".top-controls\").addClass('row mx-0');\r\n\r\n $(\".column-select\").addClass('col-12 col-md-3 px-0');\r\n $(\".column-select\").empty().html('
');\r\n\r\n $(\".search-bar\").addClass('col-12 col-md-3');\r\n\r\n $(\".spacer\").addClass('col-12 col-md-3'); 0\r\n $(\".count-found\").addClass('col-12 col-md-3 d-flex justify-content-end vertical-align-middle mt-2');\r\n //$(\".count-found\").prepend('
');\r\n $(\".count-found\").prepend('
');\r\n\r\n this.tableColumnController = new TableColumnVisibilityController('#stakeholders-table', '#column-select', [\r\n new TableColumnGroup(\"About\", true, [], \"about\"),\r\n new TableColumnGroup(\"Contact Info\", false, [], \"contact\"),\r\n new TableColumnGroup(\"Network Engagement\", false, [], \"engage\"),\r\n new TableColumnGroup(\"Documentation\", false, [], \"document\"),\r\n ]);\r\n\r\n $('#stakeholders-table').on('search.dt', (e, settings) => {\r\n this.setStakeholdersFoundLabel(this.dataTable.rows({ search: 'applied' }).count());\r\n });\r\n\r\n }\r\n\r\n filterStakeholders(): void {\r\n\r\n let matches: Stakeholder[] = this.stakeholders.filter((stakeholder: Stakeholder) => {\r\n return stakeholder.matchesFilter(this.getSelectedDropdownValues('#stakeholder-type-dropdown'), this.getSelectedDropdownValues('#organization-type-dropdown'), this.getSelectedDropdownValues('#geographic-focus-dropdown'), this.getSelectedDropdownValues('#pathogen-focus-dropdown'));\r\n });\r\n\r\n this.updateTable(matches);\r\n }\r\n\r\n getSelectedDropdownValues(selectId: string): any {\r\n return $(selectId).val();\r\n }\r\n\r\n //isFilterApplied(selectId: string): boolean {\r\n // var selected = $(selectId).val();\r\n // var count: number = $(selectId + ' option').length;\r\n // return (selected).length != count;\r\n //}\r\n\r\n\r\n updateTable(matchingStakeholders: Stakeholder[]): void {\r\n\r\n this.dataTable.clear();\r\n this.dataTable.rows.add(matchingStakeholders).draw();\r\n this.setStakeholdersFoundLabel(matchingStakeholders.length);\r\n }\r\n\r\n resetFilters(): void {\r\n\r\n this.filterDropdownIds.forEach((dropdownId: string) => {\r\n $(dropdownId).selectpicker('selectAll');\r\n $(dropdownId).selectpicker('refresh');\r\n });\r\n\r\n this.dataTable.search('').draw();\r\n this.updateTable(this.stakeholders);\r\n }\r\n\r\n setStakeholdersFoundLabel(count: number): void {\r\n\r\n switch (count) {\r\n case 0: $('#stakeholders-found-count').text(\"No Stakeholders Found\"); break;\r\n case 1: $('#stakeholders-found-count').text(\"1 Stakeholder Found\"); break;\r\n default: $('#stakeholders-found-count').text(count + \" Stakeholders Found\");\r\n }\r\n }\r\n\r\n showHelpModal(): void {\r\n $('#stakeholder-help-modal').modal('show');\r\n }\r\n\r\n showRulesOfEngagement(): void {\r\n var modal = $('#view-document-modal');\r\n modal.find('#filename').html('CREID Network Stakeholder Rules of Engagement');\r\n modal.find('#document-iframe').attr('src', 'https://creid-documents.s3.amazonaws.com/stakeholders/Rules%20of%20Engagement_v10.pdf?AWSAccessKeyId=AKIA4POBIQOPDQEZDFZD&Expires=1744769496&Signature=b8yz4tTSr1uTOoZc1GYpVDsizgg%3D');\r\n modal.modal('show');\r\n }\r\n}","import { BiodirectoryResearchSite, ResearchCenter, ResearchSite, Country, Pathogen, BiodirectoryReagent, BiodirectorySpecimen, BiodirectoryCombinedEntity, BiodirectoryContact, BiodirectorySourceType} from \"./biodirectory-form.objects\";\r\nimport { InitializeFilterDropdown } from '../../../../shared/scripts/dropdown-functions';\r\nimport { plainToClass } from \"class-transformer\";\r\nimport { Unique } from \"../../../../shared/scripts/array-functions\";\r\nimport { TableColumnVisibilityController, TableColumnGroup } from \"../../../../shared/scripts/table-column-visibility\";\r\nimport { FormatDate2 } from './../../../../shared/scripts/date-functions';\r\nimport { ContactSelect } from \"./contact-select\";\r\nimport { BiodirectoryUpdateTool } from '../scripts/biodirectory-update-tool';\r\n\r\ndeclare var $: any;\r\nexport class BiodirectoryFormPage {\r\n biodirectoryResearchSites: BiodirectoryCombinedEntity[];\r\n pathogenList: Pathogen[];\r\n currentBiodirectorySite: BiodirectoryCombinedEntity = null;\r\n userDirectory: BiodirectoryContact[];\r\n\r\n specimenContactSelect: ContactSelect;\r\n reagentContactSelect: ContactSelect;\r\n\r\n specimenUpdateTool: BiodirectoryUpdateTool;\r\n reagentUpdateTool: BiodirectoryUpdateTool;\r\n\r\n constructor(biodirectorySites: any, pathogenList: any, userDirectory: any) {\r\n $(() => {\r\n this.biodirectoryResearchSites = plainToClass(BiodirectoryCombinedEntity, biodirectorySites);\r\n\r\n this.biodirectoryResearchSites.forEach(site => {\r\n let siteSpecimens: BiodirectorySpecimen[] = [];\r\n site.BiodirectorySpecimens.forEach(specimen => {\r\n let newSpecimen = BiodirectorySpecimen.createBiodirectorySpecimenFromObj(specimen);\r\n siteSpecimens.push(newSpecimen);\r\n });\r\n site.BiodirectorySpecimens = siteSpecimens;\r\n\r\n let siteReagents: BiodirectoryReagent[] = [];\r\n site.BiodirectoryReagents.forEach(reagent => {\r\n let newReagent = BiodirectoryReagent.createBiodirectoryReagentFromObj(reagent);\r\n siteReagents.push(newReagent);\r\n });\r\n site.BiodirectoryReagents = siteReagents;\r\n })\r\n\r\n this.biodirectoryResearchSites.forEach(site => site.initialize());\r\n\r\n this.pathogenList = plainToClass(Pathogen, pathogenList);\r\n this.pathogenList.forEach(pathogen => pathogen.initialize());\r\n\r\n this.userDirectory = plainToClass(BiodirectoryContact, userDirectory);\r\n this.userDirectory.forEach(user => user.initialize());\r\n this.userDirectory.sort((x1, x2) => x1.LastName.localeCompare(x2.LastName));\r\n\r\n this.initializeResearchSitesList();\r\n this.initializePOCModal();\r\n this.initializeSpecimenModal();\r\n this.initializeReagentModal();\r\n\r\n // For Multiple Modals\r\n $('body').on('hidden.bs.modal', function () {\r\n if ($('.modal.show').length > 0) {\r\n $('body').addClass('modal-open');\r\n }\r\n });\r\n });\r\n }\r\n\r\n initializeResearchSitesList(): void {\r\n\r\n let uniqueRCs: string[] = [];\r\n this.biodirectoryResearchSites.forEach(site => {\r\n if (!uniqueRCs.includes(site.ResearchCenter.Name)) uniqueRCs.push(site.ResearchCenter.Name);\r\n })\r\n uniqueRCs.sort();\r\n let rcList = \"\";\r\n\r\n for (let i = 0; i < uniqueRCs.length; i++) {\r\n let foundResearchSites = this.biodirectoryResearchSites.filter(site => site.ResearchCenter.Name == uniqueRCs[i]);\r\n if (foundResearchSites.length <= 0) continue;\r\n\r\n foundResearchSites.sort((x1, x2) => {\r\n return x1.ResearchSite.Name.localeCompare(x2.ResearchSite.Name);\r\n });\r\n\r\n let rcBlock = `
${uniqueRCs[i]}: ${foundResearchSites.length}
`;\r\n rcBlock += `
`\r\n\r\n let sitesBlock = \"\";\r\n\r\n for (let j = 0; j < foundResearchSites.length; j++) {\r\n\r\n let specimenContent = this.getSpecimenCardDisplay(foundResearchSites[j]);\r\n\r\n let reagentContent = this.getReagentCardDisplay(foundResearchSites[j]);\r\n\r\n let unreviewedIcon = `
Needs Review
`;\r\n\r\n let unreviewedBanner = `\r\n
\r\n
\r\n

It has been more than 3 months since this site's BioDirectory information has been confirmed or updated. If there have been any changes to the site's collection of specimens or reagents, please make the appropriate adjustments using the 'Add/Edit' tools below. If there have not been any changes and the existing data are still accurate, please use the 'Confirm BioDirectory Info' button below to confirm this site's BioDirectory information and remove this warning.

\r\n
\r\n `;\r\n\r\n\r\n let reviewBtn = `\r\n
\r\n \r\n
\r\n `;\r\n\r\n\r\n let card = `\r\n
\r\n \r\n\r\n
\r\n
\r\n ${unreviewedBanner}\r\n
\r\n
\r\n
Research Center: ${foundResearchSites[j].ResearchCenter.Name}
\r\n
Country: ${foundResearchSites[j].Country.Name} (${foundResearchSites[j].Country.Region})
\r\n
Specimens POC: ${foundResearchSites[j].BiodirectoryResearchSite.SpecimenPOCEmail != null ? foundResearchSites[j].BiodirectoryResearchSite.SpecimenPOCFirstName + \" \" + foundResearchSites[j].BiodirectoryResearchSite.SpecimenPOCLastName + \" (\" + foundResearchSites[j].BiodirectoryResearchSite.SpecimenPOCEmail + \")\" : \"Not Specified\"}
\r\n
Reagents POC: ${foundResearchSites[j].BiodirectoryResearchSite.ReagentPOCEmail != null ? foundResearchSites[j].BiodirectoryResearchSite.ReagentPOCFirstName + \" \" + foundResearchSites[j].BiodirectoryResearchSite.ReagentPOCLastName + \" (\" + foundResearchSites[j].BiodirectoryResearchSite.ReagentPOCEmail + \")\" : \"Not Specified\"}
\r\n
\r\n
\r\n
\r\n Last Updated/Reviewed:
\r\n ${foundResearchSites[j].BiodirectoryResearchSite.MoreRecentDateDisplay}\r\n
\r\n ${reviewBtn}\r\n
\r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n\r\n
\r\n
\r\n
\r\n Specimens\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n ${specimenContent}\r\n
\r\n\r\n
\r\n\r\n
\r\n\r\n
\r\n
\r\n
\r\n Reagents / Virus Isolates\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n ${reagentContent}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n `\r\n sitesBlock += card;\r\n }\r\n\r\n rcBlock += sitesBlock;\r\n rcBlock += `
`\r\n rcList += rcBlock;\r\n }\r\n\r\n $(\"#research-centers\").html(rcList);\r\n\r\n // Custom functionality for show/hide items ($(this) = card-body)\r\n $(\"#research-centers\").find(\".collapse\").on(\"show.bs.collapse\", function () {\r\n $(this).siblings(\".card-header\").addClass(\"active\");\r\n });\r\n\r\n $(\"#research-centers\").find(\".collapse\").on(\"hide.bs.collapse\", function () {\r\n $(this).siblings(\".card-header\").removeClass(\"active\");\r\n });\r\n\r\n // Custom Collapse Toggle\r\n $(\"#research-centers\").find(\".specimen-section\").find(\".specimen-collapse\").on('click', function () {\r\n let targetId = $(this).data(\"target\");\r\n\r\n if ($(targetId).hasClass(\"show\")) {\r\n $(targetId).removeClass(\"show\");\r\n $(this).removeClass(\"active\");\r\n }\r\n else {\r\n $(targetId).addClass(\"show\");\r\n $(this).addClass(\"active\");\r\n }\r\n });\r\n\r\n $(\"#research-centers\").find(\".reagent-section\").find(\".reagent-collapse\").on('click', function () {\r\n let targetId = $(this).data(\"target\");\r\n\r\n if ($(targetId).hasClass(\"show\")) {\r\n $(targetId).removeClass(\"show\");\r\n $(this).removeClass(\"active\");\r\n }\r\n else {\r\n $(targetId).addClass(\"show\");\r\n $(this).addClass(\"active\");\r\n }\r\n })\r\n\r\n }\r\n\r\n initializePOCModal(): void {\r\n this.specimenContactSelect = new ContactSelect(\"#specimen-poc-search\", this.userDirectory);\r\n this.reagentContactSelect = new ContactSelect(\"#reagent-poc-search\", this.userDirectory);\r\n }\r\n\r\n initializeSpecimenModal(): void {\r\n let specimenSources: string[] = [\"Human\", \"Animal\", \"Arthropod\", \"Environmental\"];\r\n let specimenTypes: string[][] = [\r\n [\"Whole Blood\", \"Isolated Cells\", \"Serum/Plasma\", \"Host Swabs\", \"Nucleic Acids\", \"Tissue Specimens/Extracts\", \"Feces\", \"Other Specimens\"],\r\n [\"Whole Blood\", \"Isolated Cells\", \"Serum/Plasma\", \"Host Swabs\", \"Nucleic Acids\", \"Tissue Specimens/Extracts\", \"Feces\", \"Other Specimens\"],\r\n [\"Nucleic Acids\", \"Tissue Specimens/Extracts\", \"Other Specimens\"],\r\n [\"Nucleic Acids\", \"Air Samples\", \"Environmental Swabs/Solids\", \"Water Samples\", \"Other Specimens\"]\r\n ]\r\n\r\n let specimenSourceTypes: BiodirectorySourceType[] = [];\r\n let sourceId = 0;\r\n for (let i = 0; i < specimenSources.length; i++) {\r\n let sourceName: string = specimenSources[i];\r\n let types: string[] = specimenTypes[i];\r\n\r\n for (let j = 0; j < types.length; j++) {\r\n specimenSourceTypes.push(new BiodirectorySourceType(sourceName, types[j], sourceId));\r\n sourceId++;\r\n }\r\n }\r\n\r\n this.specimenUpdateTool = new BiodirectoryUpdateTool(\"specimen\",\"#specimen-source-select\", \"#specimen-pathogen-search\", \"#specimen-pathogen-family-select\", \"#specimen-pathogen-name-select\", \"#specimen-pathogen-table\", \"#specimen-mapping-table\", specimenSourceTypes, this.pathogenList);\r\n }\r\n\r\n initializeReagentModal(): void {\r\n let reagentTypes: string[] = [\"Monoclonal Antibody\", \"Polyclonal Antibody/Sera\", \"Recombinant Protein\", \"Cell Line\", \"Virus Isolate\"];\r\n let reagentSources: string[][] = [\r\n [\"Human Derived\", \"Animal Derived\"],\r\n [\"Human Derived\", \"Animal Derived\"],\r\n [\"Human Derived\", \"Animal Derived\", \"Virus Derived\"],\r\n [\"Human Derived\", \"Animal Derived\", \"Arthropod Derived\"],\r\n [\"Natural Derived\", \"Synthetic\"],\r\n ]\r\n\r\n let reagentSourceTypes: BiodirectorySourceType[] = [];\r\n let sourceId = 0;\r\n for (let i = 0; i < reagentTypes.length; i++) {\r\n let typeName: string = reagentTypes[i];\r\n let sources: string[] = reagentSources[i];\r\n\r\n for (let j = 0; j < sources.length; j++) {\r\n reagentSourceTypes.push(new BiodirectorySourceType(typeName, sources[j], sourceId));\r\n sourceId++;\r\n }\r\n }\r\n\r\n this.reagentUpdateTool = new BiodirectoryUpdateTool(\"reagent\", \"#reagent-source-select\", \"#reagent-pathogen-search\", \"#reagent-pathogen-family-select\", \"#reagent-pathogen-name-select\", \"#reagent-pathogen-table\", \"#reagent-mapping-table\", reagentSourceTypes, this.pathogenList);\r\n }\r\n\r\n openPOCmodal(siteId: number): void {\r\n // Scroll to Top\r\n $(\"#pocModal\").find(\".modal-body\").scrollTop(0);\r\n\r\n // Clear Existing Data\r\n this.specimenContactSelect.resetValues();\r\n\r\n // Get Research Site\r\n let site: BiodirectoryCombinedEntity = this.biodirectoryResearchSites.find(entity => entity.Id == siteId);\r\n\r\n if (site == null || site == undefined) return;\r\n\r\n this.currentBiodirectorySite = site;\r\n\r\n $(\"#current-specimen-poc\").html(site.BiodirectoryResearchSite.SpecimenPOCEmail != null ? site.BiodirectoryResearchSite.SpecimenPOCFirstName + \" \" + site.BiodirectoryResearchSite.SpecimenPOCLastName + \" (\" + site.BiodirectoryResearchSite.SpecimenPOCEmail + \")\" : \"Not Specified\");\r\n $(\"#current-reagent-poc\").html(site.BiodirectoryResearchSite.ReagentPOCEmail != null ? site.BiodirectoryResearchSite.ReagentPOCFirstName + \" \" + site.BiodirectoryResearchSite.ReagentPOCLastName + \" (\" + site.BiodirectoryResearchSite.ReagentPOCEmail + \")\" : \"Not Specified\")\r\n\r\n $(\"#pocModal\").modal('show');\r\n\r\n setTimeout(() => {\r\n this.specimenContactSelect.resetSearchBar();\r\n // Prepopulate Fields\r\n if (site.BiodirectoryResearchSite.SpecimenPOCEmail != null && site.BiodirectoryResearchSite.SpecimenPOCEmail != \"\") {\r\n let specimenContact = new BiodirectoryContact(site.BiodirectoryResearchSite.SpecimenPOCFirstName, site.BiodirectoryResearchSite.SpecimenPOCLastName, site.BiodirectoryResearchSite.SpecimenPOCEmail)\r\n this.specimenContactSelect.setValues(specimenContact);\r\n }\r\n\r\n this.reagentContactSelect.resetSearchBar();\r\n // Prepopulate Fields\r\n if (site.BiodirectoryResearchSite.ReagentPOCEmail != null && site.BiodirectoryResearchSite.ReagentPOCEmail != \"\") {\r\n let reagentContact = new BiodirectoryContact(site.BiodirectoryResearchSite.ReagentPOCFirstName, site.BiodirectoryResearchSite.ReagentPOCLastName, site.BiodirectoryResearchSite.ReagentPOCEmail)\r\n this.reagentContactSelect.setValues(reagentContact);\r\n }\r\n\r\n $(\"#pocModal\").find(\".modal-body\").animate({ scrollTop: 0 }, 'fast');\r\n }, 250);\r\n\r\n }\r\n\r\n openSpecimenModal(siteId: number): void {\r\n $(\"#specimenModal\").find(\".modal-body\").scrollTop(0);\r\n this.specimenUpdateTool.resetAll();\r\n let foundBiodirectorySite = this.biodirectoryResearchSites.find(site => site.Id == siteId);\r\n if (foundBiodirectorySite != undefined) {\r\n foundBiodirectorySite.initialize();\r\n this.specimenUpdateTool.prepopulateBiodirectoryInformation(foundBiodirectorySite);\r\n }\r\n $(\"#specimenModal\").modal('show');\r\n\r\n setTimeout(() => {\r\n $(\"#specimenModal\").find(\".modal-body\").animate({ scrollTop: 0 }, 'fast');\r\n }, 250)\r\n }\r\n\r\n openReagentModal(siteId: number): void {\r\n this.reagentUpdateTool.resetAll();\r\n let foundBiodirectorySite = this.biodirectoryResearchSites.find(site => site.Id == siteId);\r\n if (foundBiodirectorySite != undefined) {\r\n foundBiodirectorySite.initialize();\r\n this.reagentUpdateTool.prepopulateBiodirectoryInformation(foundBiodirectorySite);\r\n }\r\n $(\"#reagentModal\").modal('show');\r\n\r\n setTimeout(() => {\r\n $(\"#reagentModal\").find(\".modal-body\").animate({ scrollTop: 0 }, 'fast');\r\n }, 250)\r\n }\r\n\r\n openReviewModal(siteId: number): void {\r\n let foundBioDirectorySite = this.biodirectoryResearchSites.find(site => site.Id == siteId);\r\n if (foundBioDirectorySite != undefined) {\r\n foundBioDirectorySite.initialize();\r\n $(\"#reviewInfoModal\").find(\".review-site-name\").text(foundBioDirectorySite.ResearchSite.Name);\r\n $(\"#reviewInfoModal\").find(\".review-center-name\").text(foundBioDirectorySite.ResearchCenter.Name);\r\n $(\"#reviewInfoModal\").find(\".review-country-name\").text(foundBioDirectorySite.Country.Name);\r\n $(\"#reviewInfoModal\").find(\".review-region-name\").text(foundBioDirectorySite.Country.Region);\r\n $(\"#reviewInfoModal\").find(\".review-last-reviewed\").text(foundBioDirectorySite.BiodirectoryResearchSite.MoreRecentDateDisplay);\r\n this.currentBiodirectorySite = foundBioDirectorySite;\r\n }\r\n $(\"#reviewInfoModal\").modal('show');\r\n }\r\n\r\n saveSpecimenPoc(): void {\r\n\r\n // Validate Form\r\n if (!this.specimenContactSelect.contactValidation()) {\r\n return;\r\n }\r\n\r\n // Valid Form\r\n let specimenContact: BiodirectoryContact = this.specimenContactSelect.getAddedContact();\r\n\r\n let updatedSite = new BiodirectoryResearchSite(this.currentBiodirectorySite.BiodirectoryResearchSite);\r\n updatedSite.SpecimenPOCFirstName = specimenContact.FirstName;\r\n updatedSite.SpecimenPOCLastName = specimenContact.LastName;\r\n updatedSite.SpecimenPOCEmail = specimenContact.Email;\r\n updatedSite.LastModifiedDate = new Date();\r\n\r\n // Show Loading\r\n $(\"#current-specimen-poc\").html(``);\r\n\r\n // Function to run after database is updated\r\n let onSuccess = (response: any) => {\r\n // Response is the updated Biodirectory Object\r\n let updatedSite: BiodirectoryResearchSite = response;\r\n\r\n // Update array of Sites\r\n let foundIndex: number = this.biodirectoryResearchSites.findIndex(entry => entry.Id == updatedSite.Id);\r\n if (foundIndex >= 0) {\r\n\r\n let updatedEntity: BiodirectoryCombinedEntity = BiodirectoryCombinedEntity.createBiodirectoryCombinedEntity(this.biodirectoryResearchSites[foundIndex]);\r\n updatedEntity.BiodirectoryResearchSite = updatedSite;\r\n updatedEntity.initialize();\r\n\r\n this.biodirectoryResearchSites.splice(foundIndex, 1, updatedEntity);\r\n\r\n // Update Research Site List\r\n this.updateBiodirectorySiteDisplay(updatedEntity)\r\n }\r\n\r\n // Update the POC Modal with new information\r\n $(\"#current-specimen-poc\").html(updatedSite.SpecimenPOCEmail != null ? updatedSite.SpecimenPOCFirstName + \" \" + updatedSite.SpecimenPOCLastName + \" (\" + updatedSite.SpecimenPOCEmail + \")\" : \"Not Specified\")\r\n\r\n\r\n }\r\n\r\n let onError = (response: any) => {\r\n console.log(response);\r\n alert(\"An unexpected error occurred. Please try again.\");\r\n }\r\n\r\n // Update Database\r\n this.updateBiodirectorySite(updatedSite, onSuccess, onError)\r\n\r\n }\r\n\r\n saveReagentPoc(): void {\r\n\r\n // Validate Form\r\n if (!this.reagentContactSelect.contactValidation()) {\r\n return;\r\n }\r\n\r\n // Valid Form\r\n let reagentContact: BiodirectoryContact = this.reagentContactSelect.getAddedContact();\r\n\r\n let updatedSite = new BiodirectoryResearchSite(this.currentBiodirectorySite.BiodirectoryResearchSite);\r\n updatedSite.ReagentPOCFirstName = reagentContact.FirstName;\r\n updatedSite.ReagentPOCLastName = reagentContact.LastName;\r\n updatedSite.ReagentPOCEmail = reagentContact.Email;\r\n updatedSite.LastModifiedDate = new Date();\r\n\r\n // Show Loading\r\n $(\"#current-reagent-poc\").html(``);\r\n\r\n // Function to run after database is updated\r\n let onSuccess = (response: any) => {\r\n // Response is the updated Biodirectory Object\r\n let updatedSite: BiodirectoryResearchSite = response;\r\n\r\n // Update array of Sites\r\n let foundIndex: number = this.biodirectoryResearchSites.findIndex(entry => entry.Id == updatedSite.Id);\r\n if (foundIndex >= 0) {\r\n\r\n let updatedEntity: BiodirectoryCombinedEntity = BiodirectoryCombinedEntity.createBiodirectoryCombinedEntity(this.biodirectoryResearchSites[foundIndex]);\r\n updatedEntity.BiodirectoryResearchSite = updatedSite;\r\n updatedEntity.initialize();\r\n\r\n this.biodirectoryResearchSites.splice(foundIndex, 1, updatedEntity);\r\n\r\n // Update Research Site List\r\n this.updateBiodirectorySiteDisplay(updatedEntity)\r\n }\r\n\r\n // Update the POC Modal with new information \r\n $(\"#current-reagent-poc\").html(updatedSite.ReagentPOCEmail != null ? updatedSite.ReagentPOCFirstName + \" \" + updatedSite.ReagentPOCLastName + \" (\" + updatedSite.ReagentPOCEmail + \")\" : \"Not Specified\")\r\n\r\n }\r\n\r\n let onError = (response: any) => {\r\n console.log(response);\r\n alert(\"An unexpected error occurred. Please try again.\");\r\n }\r\n\r\n // Update Database\r\n this.updateBiodirectorySite(updatedSite, onSuccess, onError)\r\n\r\n }\r\n\r\n savePocInfo(): void {\r\n // Check if we need to save specimen/reagent Poc\r\n let saveSpecimens: boolean = false;\r\n if (this.specimenContactSelect.checkIfData()) {\r\n if (!this.specimenContactSelect.contactValidation()) {\r\n return;\r\n }\r\n saveSpecimens = true;\r\n }\r\n\r\n let saveReagents: boolean = false;\r\n if (this.reagentContactSelect.checkIfData()) {\r\n if (!this.reagentContactSelect.contactValidation()) {\r\n return;\r\n }\r\n saveReagents = true;\r\n }\r\n\r\n // Need to save information\r\n if (saveSpecimens || saveReagents) {\r\n let updatedSite = new BiodirectoryResearchSite(this.currentBiodirectorySite.BiodirectoryResearchSite);\r\n updatedSite.LastModifiedDate = new Date();\r\n\r\n if (saveSpecimens) {\r\n let specimenContact: BiodirectoryContact = this.specimenContactSelect.getAddedContact();\r\n updatedSite.SpecimenPOCFirstName = specimenContact.FirstName;\r\n updatedSite.SpecimenPOCLastName = specimenContact.LastName;\r\n updatedSite.SpecimenPOCEmail = specimenContact.Email;\r\n $(\"#current-specimen-poc\").html(``);\r\n }\r\n\r\n if (saveReagents) {\r\n let reagentContact: BiodirectoryContact = this.reagentContactSelect.getAddedContact();\r\n updatedSite.ReagentPOCFirstName = reagentContact.FirstName;\r\n updatedSite.ReagentPOCLastName = reagentContact.LastName;\r\n updatedSite.ReagentPOCEmail = reagentContact.Email;\r\n $(\"#current-reagent-poc\").html(``);\r\n }\r\n\r\n let onSuccess = (response: any) => {\r\n // Response is the updated Biodirectory Object\r\n let updatedSite: BiodirectoryResearchSite = response;\r\n\r\n // Update array of Sites\r\n let foundIndex: number = this.biodirectoryResearchSites.findIndex(entry => entry.Id == updatedSite.Id);\r\n if (foundIndex >= 0) {\r\n\r\n let updatedEntity: BiodirectoryCombinedEntity = BiodirectoryCombinedEntity.createBiodirectoryCombinedEntity(this.biodirectoryResearchSites[foundIndex]);\r\n updatedEntity.BiodirectoryResearchSite = updatedSite;\r\n updatedEntity.initialize();\r\n\r\n this.biodirectoryResearchSites.splice(foundIndex, 1, updatedEntity);\r\n\r\n // Update Research Site List\r\n this.updateBiodirectorySiteDisplay(updatedEntity)\r\n }\r\n\r\n // Update the POC Modal with new information\r\n $(\"#current-reagent-poc\").html(updatedSite.ReagentPOCEmail != null ? updatedSite.ReagentPOCFirstName + \" \" + updatedSite.ReagentPOCLastName + \" (\" + updatedSite.ReagentPOCEmail + \")\" : \"Not Specified\")\r\n $(\"#current-specimen-poc\").html(updatedSite.SpecimenPOCEmail != null ? updatedSite.SpecimenPOCFirstName + \" \" + updatedSite.SpecimenPOCLastName + \" (\" + updatedSite.SpecimenPOCEmail + \")\" : \"Not Specified\")\r\n\r\n }\r\n\r\n let onError = (response: any) => {\r\n console.log(response);\r\n alert(\"An unexpected error occurred. Please try again.\");\r\n }\r\n\r\n // Update Database\r\n this.updateBiodirectorySite(updatedSite, onSuccess, onError)\r\n }\r\n\r\n // Close Modal\r\n $(\"#pocModal\").modal('hide');\r\n\r\n }\r\n\r\n saveReviewModal(): void {\r\n let updatedSite = new BiodirectoryResearchSite(this.currentBiodirectorySite.BiodirectoryResearchSite);\r\n updatedSite.LastReviewDate = new Date();\r\n\r\n let onSuccess = (response: any) => {\r\n // Response is the updated Biodirectory Object\r\n let updatedSite: BiodirectoryResearchSite = response;\r\n\r\n // Update array of Sites\r\n let foundIndex: number = this.biodirectoryResearchSites.findIndex(entry => entry.Id == updatedSite.Id);\r\n if (foundIndex >= 0) {\r\n\r\n let updatedEntity: BiodirectoryCombinedEntity = BiodirectoryCombinedEntity.createBiodirectoryCombinedEntity(this.biodirectoryResearchSites[foundIndex]);\r\n updatedEntity.BiodirectoryResearchSite = updatedSite;\r\n updatedEntity.initialize();\r\n\r\n this.biodirectoryResearchSites.splice(foundIndex, 1, updatedEntity);\r\n\r\n // Update Research Site List\r\n this.updateBiodirectorySiteDisplay(updatedEntity)\r\n }\r\n }\r\n\r\n let onError = (response: any) => {\r\n console.log(response);\r\n alert(\"An unexpected error occurred. Please try again.\");\r\n }\r\n\r\n // Update Database\r\n this.updateBiodirectorySite(updatedSite, onSuccess, onError);\r\n\r\n // Close Modal\r\n $(\"#reviewInfoModal\").modal('hide');\r\n }\r\n\r\n saveAndCloseSpecimenModal(): void {\r\n this.saveSpecimenInformation();\r\n $(\"#specimenModal\").modal('hide');\r\n }\r\n\r\n saveAndCloseReagentModal(): void {\r\n this.saveReagentInformation();\r\n $(\"#reagentModal\").modal('hide');\r\n }\r\n\r\n saveSpecimenInformation(): void {\r\n // get the modified site information\r\n let targetBiodirectorySite = this.specimenUpdateTool.getTargetBiodirectorySite();\r\n // save information to database\r\n this.specimenUpdateTool.saveSiteAndSpecimens();\r\n\r\n // update listing of sites\r\n let foundIndex = this.biodirectoryResearchSites.findIndex(site => site.Id == targetBiodirectorySite.Id);\r\n if (foundIndex >= 0){\r\n let updatedEntity: BiodirectoryCombinedEntity = BiodirectoryCombinedEntity.createBiodirectoryCombinedEntity(this.biodirectoryResearchSites[foundIndex]);\r\n updatedEntity.initialize();\r\n\r\n this.biodirectoryResearchSites.splice(foundIndex, 1, updatedEntity);\r\n } \r\n\r\n // Update Research Site List\r\n targetBiodirectorySite.initialize();\r\n this.updateBiodirectorySiteDisplay(targetBiodirectorySite);\r\n }\r\n\r\n saveReagentInformation(): void {\r\n // get the modified site information\r\n let targetBiodirectorySite = this.reagentUpdateTool.getTargetBiodirectorySite();\r\n // save information to database\r\n this.reagentUpdateTool.saveSiteAndReagents();\r\n\r\n // update listing of sites\r\n let foundIndex = this.biodirectoryResearchSites.findIndex(site => site.Id == targetBiodirectorySite.Id);\r\n if (foundIndex >= 0) {\r\n let updatedEntity: BiodirectoryCombinedEntity = BiodirectoryCombinedEntity.createBiodirectoryCombinedEntity(this.biodirectoryResearchSites[foundIndex]);\r\n updatedEntity.initialize();\r\n\r\n this.biodirectoryResearchSites.splice(foundIndex, 1, updatedEntity);\r\n }\r\n\r\n // Update Research Site List\r\n targetBiodirectorySite.initialize();\r\n this.updateBiodirectorySiteDisplay(targetBiodirectorySite);\r\n }\r\n\r\n updateBiodirectorySite(siteInfo: BiodirectoryResearchSite, onSuccessFn: Function = (response: any) => { }, onErrorFn: Function = (response: any) => { }): void {\r\n $.ajax({\r\n url: '/secure/biodirectory/biodirectory-form/biodirectory-form?handler=SaveBiodirectoryInformation',\r\n method: \"POST\",\r\n //dataType: \"json\",\r\n //contentType: \"application/json\",\r\n data: { formData: JSON.stringify(siteInfo)},\r\n headers: { \"RequestVerificationToken\": $('input[name=\"__RequestVerificationToken\"]').val() },\r\n success: (response) => { \r\n onSuccessFn(response);\r\n },\r\n error: (response) => {\r\n onErrorFn(response);\r\n }\r\n });\r\n }\r\n\r\n updateBiodirectorySiteDisplay(site: BiodirectoryCombinedEntity): void {\r\n // get block id \r\n let blockId: string = `#site-${site.Id}`;\r\n\r\n // Last Updated\r\n $(blockId).find(\".display-last-updated\").text(site.BiodirectoryResearchSite.MoreRecentDateDisplay);\r\n\r\n // Update POC Information\r\n if (site.BiodirectoryResearchSite.SpecimenPOCEmail != null) {\r\n $(blockId).find(\".display-specimen-poc\").text(`${site.BiodirectoryResearchSite.SpecimenPOCFirstName + \" \" + site.BiodirectoryResearchSite.SpecimenPOCLastName + \" (\" + site.BiodirectoryResearchSite.SpecimenPOCEmail + \")\"}`);\r\n }\r\n if (site.BiodirectoryResearchSite.ReagentPOCEmail != null) {\r\n $(blockId).find(\".display-reagent-poc\").text(`${site.BiodirectoryResearchSite.ReagentPOCFirstName + \" \" + site.BiodirectoryResearchSite.ReagentPOCLastName + \" (\" + site.BiodirectoryResearchSite.ReagentPOCEmail + \")\"}`)\r\n }\r\n\r\n // Update Specimen Information\r\n this.displaySiteSpecimens(site);\r\n\r\n // Update Reagent Information\r\n this.displaySiteReagents(site);\r\n\r\n // Update Reivew Display\r\n this.displayReviewInformation(site);\r\n\r\n // Set current Research Site\r\n this.currentBiodirectorySite = site;\r\n }\r\n\r\n displaySiteSpecimens(site: BiodirectoryCombinedEntity): void {\r\n let blockId: string = `#site-${site.Id}`;\r\n\r\n $(blockId).find(\".specimen-section\").empty();\r\n\r\n let specimenContent = this.getSpecimenCardDisplay(site);\r\n\r\n $(blockId).find(\".specimen-section\").html(specimenContent);\r\n\r\n // Custom Collapse Toggle\r\n $(blockId).find(\".specimen-section\").find(\".specimen-collapse\").on('click', function() {\r\n let targetId = $(this).data(\"target\");\r\n\r\n if ($(targetId).hasClass(\"show\")) {\r\n $(targetId).removeClass(\"show\");\r\n $(this).removeClass(\"active\");\r\n }\r\n else {\r\n $(targetId).addClass(\"show\");\r\n $(this).addClass(\"active\");\r\n }\r\n })\r\n }\r\n\r\n displaySiteReagents(site: BiodirectoryCombinedEntity): void {\r\n let blockId: string = `#site-${site.Id}`;\r\n\r\n $(blockId).find(\".reagent-section\").empty();\r\n\r\n let reagentContent = this.getReagentCardDisplay(site);\r\n\r\n $(blockId).find(\".reagent-section\").html(reagentContent);\r\n\r\n // Custom Collapse Toggle\r\n $(blockId).find(\".reagent-section\").find(\".reagent-collapse\").on('click', function () {\r\n let targetId = $(this).data(\"target\");\r\n\r\n if ($(targetId).hasClass(\"show\")) {\r\n $(targetId).removeClass(\"show\");\r\n $(this).removeClass(\"active\");\r\n }\r\n else {\r\n $(targetId).addClass(\"show\");\r\n $(this).addClass(\"active\");\r\n }\r\n })\r\n }\r\n\r\n displayReviewInformation(site: BiodirectoryCombinedEntity): void {\r\n let blockId: string = `#site-${site.Id}`;\r\n let parentBlock = $(blockId).closest(\".card\");\r\n\r\n // Show/Hide the Review Options\r\n if (site.BiodirectoryResearchSite.ShouldReview) {\r\n\r\n $(parentBlock).find(\".review-block-wrapper\").removeClass(\"d-none\").addClass(\"d-inline-block\");\r\n $(blockId).find(\".site-review-banner\").removeClass(\"d-none\");\r\n }\r\n else {\r\n $(parentBlock).find(\".review-block-wrapper\").addClass(\"d-none\").removeClass(\"d-inline-block\");\r\n $(blockId).find(\".site-review-banner\").addClass(\"d-none\");\r\n }\r\n }\r\n\r\n getSpecimenCardDisplay(site: BiodirectoryCombinedEntity): string {\r\n let specimenContent = \"\"\r\n\r\n if (site.BiodirectorySpecimens.length == 0) {\r\n specimenContent = `\r\n
\r\n

There are currently no specimens associated with this research site. Use the 'Add/Edit Specimens' button to add specimens.

\r\n
`\r\n }\r\n else {\r\n specimenContent = `
`\r\n site.BiodirectorySpecimens.sort((x1, x2) => x1.SpecimenSource.localeCompare(x2.SpecimenSource));\r\n\r\n for (let i = 0; i < site.BiodirectorySpecimens.length; i++) {\r\n let specimen = site.BiodirectorySpecimens[i];\r\n\r\n let pathogenContent = \"\";\r\n\r\n \r\n if (site.BiodirectorySpecimens[i].PathogenIds == \"\" || site.BiodirectorySpecimens[i].PathogenIds == undefined) {\r\n pathogenContent = `
No Associated Pathogens
`;\r\n }\r\n else {\r\n let pathogenIds: string[] = site.BiodirectorySpecimens[i].PathogenIds.split(\"|\");\r\n let foundPathogens: Pathogen[] = [];\r\n pathogenContent = `
    `\r\n pathogenIds.forEach(id => {\r\n let foundPathogen: Pathogen = this.pathogenList.find(pathogen => pathogen.PathogenId.toString() == id);\r\n if (foundPathogen != undefined) {\r\n foundPathogens.push(foundPathogen);\r\n }\r\n })\r\n foundPathogens.sort((x1, x2) => x1.VirusName.localeCompare(x2.VirusName));\r\n foundPathogens.forEach(pathogen => {\r\n pathogenContent += `
  • ${pathogen.VirusName}
  • `\r\n })\r\n pathogenContent += `
`\r\n }\r\n \r\n\r\n\r\n let cardContent = `\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n ${specimen.SpecimenSource}
\r\n ${specimen.SpecimenType}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n Pathogens \r\n ${pathogenContent}\r\n
\r\n
\r\n
`\r\n\r\n let cardContainer = `\r\n
\r\n ${cardContent}\r\n
\r\n `\r\n\r\n specimenContent += cardContainer;\r\n }\r\n\r\n specimenContent += `
`\r\n\r\n }\r\n\r\n return specimenContent\r\n }\r\n\r\n getReagentCardDisplay(site: BiodirectoryCombinedEntity): string {\r\n let reagentContent = \"\"\r\n\r\n if (site.BiodirectoryReagents.length == 0) {\r\n reagentContent = `\r\n
\r\n

There are currently no reagents associated with this research site. Use the 'Add/Edit Reagents' button to add reagents.

\r\n
`\r\n }\r\n else {\r\n reagentContent = `
`\r\n site.BiodirectoryReagents.sort((x1, x2) => x1.ReagentSource.localeCompare(x2.ReagentSource));\r\n\r\n for (let i = 0; i < site.BiodirectoryReagents.length; i++) {\r\n let reagent = site.BiodirectoryReagents[i];\r\n\r\n let pathogenContent = \"\";\r\n\r\n\r\n if (site.BiodirectoryReagents[i].PathogenIds == \"\" || site.BiodirectoryReagents[i].PathogenIds == undefined) {\r\n pathogenContent = `
No Associated Pathogens
`;\r\n }\r\n else {\r\n let pathogenIds: string[] = site.BiodirectoryReagents[i].PathogenIds.split(\"|\");\r\n let foundPathogens: Pathogen[] = [];\r\n pathogenContent = `
    `\r\n pathogenIds.forEach(id => {\r\n let foundPathogen: Pathogen = this.pathogenList.find(pathogen => pathogen.PathogenId.toString() == id);\r\n if (foundPathogen != undefined) {\r\n foundPathogens.push(foundPathogen);\r\n }\r\n });\r\n foundPathogens.sort((x1, x2) => x1.VirusName.localeCompare(x2.VirusName));\r\n foundPathogens.forEach(pathogen => {\r\n pathogenContent += `
  • ${pathogen.VirusName}
  • `\r\n })\r\n pathogenContent += `
`\r\n }\r\n\r\n\r\n\r\n let cardContent = `\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n ${reagent.ReagentSource}
\r\n ${reagent.ReagentType}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n Pathogens \r\n ${pathogenContent}\r\n
\r\n
\r\n
`\r\n\r\n let cardContainer = `\r\n
\r\n ${cardContent}\r\n
\r\n `\r\n\r\n reagentContent += cardContainer;\r\n }\r\n\r\n reagentContent += `
`\r\n\r\n }\r\n\r\n return reagentContent\r\n }\r\n \r\n}","// extracted by mini-css-extract-plugin","// extracted by mini-css-extract-plugin","\r\n\r\nexport class DataHubPage {\r\n constructor() {\r\n $(() => {\r\n $(document).ready(function () {\r\n function switchTab(tabId, addToHistory = true) {\r\n $('#dataHubTabs .nav-link').removeClass('active');\r\n $(`#dataHubTabs button[data-target=\"${tabId}\"]`).addClass('active');\r\n $('#tabContent .tab-pane').removeClass('show active');\r\n $(`#tabContent ${tabId}`).addClass('show active');\r\n window.scrollTo(0, 0);\r\n\r\n if (addToHistory) {\r\n history.pushState(null, null, tabId);\r\n }\r\n }\r\n\r\n /* $('a[href=\"#overview\"]').on('click', function (e) {\r\n e.preventDefault();\r\n $('#dataHubTabs .nav-link').removeClass('active');\r\n $('#dataHubTabs button#overview-tab').addClass('active');\r\n $('#tabContent div.tab-pane').removeClass('show active');\r\n $('#tabContent #overview').addClass('show active');\r\n window.scrollTo(0, 0);\r\n });\r\n $('a[href=\"#repo\"]').on('click', function (e) {\r\n e.preventDefault(); \r\n $('#dataHubTabs .nav-link').removeClass('active'); \r\n $('#dataHubTabs button#repo-tab').addClass('active');\r\n $('#tabContent div.tab-pane').removeClass('show active');\r\n $('#tabContent #repo').addClass('show active');\r\n window.scrollTo(0, 0);\r\n });\r\n\r\n $('a[href=\"#faq\"]').on('click', function (e) {\r\n e.preventDefault();\r\n $('#dataHubTabs .nav-link').removeClass('active');\r\n $('#dataHubTabs button#faq-tab').addClass('active');\r\n $('#tabContent div.tab-pane').removeClass('show active');\r\n $('#tabContent #faq').addClass('show active');\r\n window.scrollTo(0, 0);\r\n });\r\n\r\n $('a[href=\"#schema\"]').on('click', function (e) {\r\n e.preventDefault();\r\n $('#dataHubTabs .nav-link').removeClass('active');\r\n $('#dataHubTabs button#schema-tab').addClass('active');\r\n $('#tabContent div.tab-pane').removeClass('show active');\r\n $('#tabContent #schema').addClass('show active');\r\n window.scrollTo(0, 0);\r\n });*/\r\n\r\n $('a[href^=\"#\"]').on('click', function (e) {\r\n const targetId = $(this).attr('href');\r\n if ($(this).data('tab-target')) {\r\n e.preventDefault();\r\n switchTab(targetId);\r\n }\r\n else if ($(this).parents('#faqAccordion').length) {\r\n e.preventDefault();\r\n $('html, body').animate({\r\n scrollTop: $(targetId).offset().top\r\n }, 500);\r\n }\r\n });\r\n\r\n window.addEventListener('popstate', function () {\r\n const activeTab = location.hash || '#overview';\r\n switchTab(activeTab);\r\n });\r\n\r\n const initialTab = location.hash || '#overview';\r\n switchTab(initialTab, false);\r\n\r\n });\r\n })\r\n }\r\n}","import { InitializeFilterDropdown, GetSelectedDropdownValues, ResetDropdownFilters, IFilter } from '../../../../shared/scripts/filtering';\r\nimport { Unique } from '../../../../shared/scripts/array-functions';\r\nimport { BiodirectorySourceType, Pathogen, BiodirectoryCombinedEntity, BiodirectorySpecimen, BiodirectoryReagent, BiodirectoryResearchSite } from '../scripts/biodirectory-form.objects';\r\nimport { plainToClass } from 'class-transformer';\r\nimport { faUnderline } from '@fortawesome/free-solid-svg-icons';\r\nimport { Path } from 'leaflet';\r\nimport { Site } from '../../../../general/network-map/scripts/entities';\r\n\r\ndeclare var $: any;\r\nexport class BiodirectoryUpdateTool implements IFilter {\r\n pathogenList: Pathogen[] = [];\r\n familyList: string[] = [];\r\n\r\n // store information\r\n currentBiodirectorySite: BiodirectoryCombinedEntity = null;\r\n currentSpecimens: BiodirectorySpecimen[] = [];\r\n targetSpecimen: BiodirectorySpecimen = null;\r\n currentReagents: BiodirectoryReagent[] = [];\r\n targetReagent: BiodirectoryReagent = null;\r\n currentUse: string = null;\r\n\r\n // Source Selection Tool\r\n sourceSelectId: string;\r\n sourceList: BiodirectorySourceType[] = [];\r\n currentSourceIds: number[] = [];\r\n\r\n // Pathogen Search Tool\r\n searchedPathogen: Pathogen = null;\r\n searchBlock: JQuery;\r\n tableBlock: JQuery;\r\n formBlock: JQuery;\r\n addFamilyBtn: JQuery;\r\n addPathogenBtn: JQuery;\r\n pathogenSearchSelectId: string;\r\n pathogenFamilySelectId: string;\r\n pathogenNameSelectId: string;\r\n pathogenTableId: string;\r\n pathogenTable: any;\r\n addedPathogens: Pathogen[] = [];\r\n\r\n // Source <-> Pathogen Mapping Tool\r\n mappingTableId: string;\r\n mappingTable: any;\r\n mappingBlock: JQuery;\r\n\r\n constructor(use: string, sourceSelectId: string, pathogenSearchSelectId: string, pathogenFamilySelectId: string, pathogenNameSelectId: string, pathogenTableId: string, mappingTableId: string, sourceList: BiodirectorySourceType[], pathogenList: Pathogen[], callbackFn: Function = () => { }) {\r\n if (use == \"specimen\") {\r\n this.currentUse = \"specimen\";\r\n }\r\n if (use == \"reagent\") {\r\n this.currentUse = \"reagent\";\r\n }\r\n\r\n this.sourceSelectId = sourceSelectId;\r\n this.sourceList = sourceList;\r\n\r\n this.pathogenList = pathogenList.filter(pathogen => pathogen.VirusName != \"NA\"); // No Families\r\n this.pathogenList.forEach(pathogen => {\r\n if (!this.familyList.includes(pathogen.Family)) {\r\n this.familyList.push(pathogen.Family);\r\n }\r\n });\r\n this.familyList.sort();\r\n\r\n this.pathogenSearchSelectId = pathogenSearchSelectId;\r\n this.pathogenFamilySelectId = pathogenFamilySelectId;\r\n this.pathogenNameSelectId = pathogenNameSelectId;\r\n this.pathogenTableId = pathogenTableId;\r\n\r\n this.searchBlock = $(this.pathogenSearchSelectId).closest(\".search-section-block\");\r\n this.formBlock = $(this.pathogenFamilySelectId).closest(\".add-contact-block\");\r\n this.tableBlock = $(this.pathogenTableId).closest(\".contact-block-table\");\r\n\r\n this.mappingTableId = mappingTableId;\r\n this.mappingBlock = $(this.mappingTableId).closest(\".mapping-block\");\r\n\r\n this.initializeDropdowns();\r\n this.initializeBtns();\r\n this.initializePathogenTable();\r\n this.initializeMappingTable();\r\n this.initializeMappingSourceSelect()\r\n\r\n // optionally run a callback function after the selector is generated\r\n callbackFn();\r\n \r\n }\r\n\r\n initializeDropdowns(): void {\r\n // Source/Type Dropdown\r\n InitializeFilterDropdown(this.sourceSelectId, [], this, this.sourceList.map((sourceType: BiodirectorySourceType) => [sourceType.DisplayName, sourceType.SourceId]).sort((a: any[], b: any[]) => a[0] - b[0]), false);\r\n\r\n }\r\n\r\n initializeBtns(): void {\r\n this.addFamilyBtn = $(this.formBlock).find(\".add-family-btn\");\r\n this.addPathogenBtn = $(this.formBlock).find(\".add-pathogen-btn\");\r\n\r\n $(this.addFamilyBtn).on('click', () => {\r\n // Get Family\r\n let searchedFamily = GetSelectedDropdownValues(this.pathogenFamilySelectId);\r\n let foundFamily = this.familyList.find(family => family == searchedFamily);\r\n if (foundFamily == undefined) return;\r\n\r\n // Get Pathogens in Family\r\n let foundPathogens = this.pathogenList.filter(pathogen => pathogen.Family == foundFamily);\r\n foundPathogens.sort((x1, x2) => x1.VirusName.localeCompare(x2.VirusName));\r\n\r\n // Add Pathogens to List of Added Pathogens (no duplicates)\r\n foundPathogens.forEach(foundPathogen => {\r\n if (this.addedPathogens.find(pathogen => pathogen.PathogenId == foundPathogen.PathogenId) == undefined) {\r\n this.addedPathogens.push(foundPathogen);\r\n }\r\n });\r\n\r\n // Update Added Pathogens Table\r\n this.updatePathogenTable();\r\n this.updatePathogenMappingTable();\r\n });\r\n\r\n $(this.addPathogenBtn).on('click', () => {\r\n // Get Pathogen\r\n let searchedPathogen = GetSelectedDropdownValues(this.pathogenNameSelectId);\r\n let foundPathogen = this.pathogenList.find(pathogen => pathogen.PathogenId == searchedPathogen);\r\n if (foundPathogen == undefined) return;\r\n\r\n // Add Pathogen to List of Added Pathogens (no duplicates)\r\n if (this.addedPathogens.find(pathogen => pathogen.PathogenId == foundPathogen.PathogenId) == undefined) {\r\n this.addedPathogens.push(foundPathogen);\r\n } \r\n\r\n // Update Added Pathogens Table\r\n this.updatePathogenTable();\r\n this.updatePathogenMappingTable();\r\n })\r\n\r\n // Search for Pathogen\r\n $(this.pathogenSearchSelectId).on('changed.bs.select', (e, clickedIndex, isSelected, previousValue) => {\r\n // Get Searched Pathogen (Id)\r\n let searchedPathogen = GetSelectedDropdownValues(this.pathogenSearchSelectId);\r\n \r\n let foundPathogen = this.pathogenList.find(pathogen => pathogen.PathogenId == searchedPathogen);\r\n this.searchedPathogen = foundPathogen;\r\n if (foundPathogen != undefined) {\r\n // Set Pathogen Family Dropdown\r\n let foundFamily = this.familyList.find(family => family == foundPathogen.Family);\r\n if (foundFamily != undefined) {\r\n $(this.pathogenFamilySelectId).val(foundFamily).trigger(\"change\");\r\n }\r\n }\r\n else {\r\n // No Pathogen Selected, Reset Family\r\n $(this.pathogenFamilySelectId).val(\"\");\r\n $(this.pathogenFamilySelectId).selectpicker(\"refresh\").trigger(\"change\");\r\n }\r\n\r\n });\r\n\r\n // Change Pathogen Family\r\n $(this.pathogenFamilySelectId).on('changed.bs.select', (e, clickedIndex, isSelected, previousValue) => {\r\n // Get Selected Family\r\n let searchedFamily = GetSelectedDropdownValues(this.pathogenFamilySelectId);\r\n\r\n // Clear existing options\r\n $(this.pathogenNameSelectId).empty();\r\n\r\n // Create Dropdown options for Pathogen Name\r\n let foundFamily = this.familyList.find(family => family == searchedFamily);\r\n if (foundFamily != undefined) {\r\n\r\n let foundPathogens = this.pathogenList.filter(pathogen => pathogen.Family == foundFamily);\r\n foundPathogens.sort((x1, x2) => x1.VirusName.localeCompare(x2.VirusName));\r\n\r\n foundPathogens.forEach(pathogen => {\r\n $(this.pathogenNameSelectId).append(``)\r\n });\r\n\r\n $(this.addFamilyBtn).removeClass(\"disabled\");\r\n }\r\n else {\r\n $(this.addFamilyBtn).addClass(\"disabled\");\r\n }\r\n\r\n $(this.pathogenNameSelectId).selectpicker(\"refresh\");\r\n // If there is a searched pathogen, set it as the value in Pathogen Name\r\n if (this.searchedPathogen != null) {\r\n $(this.pathogenNameSelectId).val(this.searchedPathogen.PathogenId);\r\n this.searchedPathogen = null;\r\n }\r\n $(this.pathogenNameSelectId).trigger(\"change\");\r\n });\r\n\r\n // Change Pathogen Name\r\n $(this.pathogenNameSelectId).on('changed.bs.select', (e, clickedIndex, isSelected, previousValue) => {\r\n\r\n // Get Selected Pathogen\r\n let searchedPathogen = GetSelectedDropdownValues(this.pathogenNameSelectId);\r\n\r\n // Create Dropdown options for Pathogen Name\r\n let foundPathogen = this.pathogenList.find(pathogen => pathogen.PathogenId == searchedPathogen);\r\n if (foundPathogen != undefined) {\r\n $(this.addPathogenBtn).removeClass(\"disabled\");\r\n }\r\n else {\r\n $(this.addPathogenBtn).addClass(\"disabled\");\r\n }\r\n });\r\n\r\n\r\n $(this.searchBlock).find(\".reset-pathogen-search-btn\").on('click', () => {\r\n this.resetSearchBar();\r\n });\r\n\r\n $(this.mappingBlock).find(\".delete-source-type-btn\").on('click', () => {\r\n if (this.currentUse == \"specimen\" && this.targetSpecimen != null) {\r\n\r\n // Remove Source/Type from select\r\n let foundSource = this.sourceList.find(source => source.Source == this.targetSpecimen.SpecimenSource && source.Type == this.targetSpecimen.SpecimenType);\r\n if (foundSource != undefined) {\r\n let foundSourceIndex = this.currentSourceIds.findIndex(id => id == foundSource.SourceId)\r\n if (foundSourceIndex >= 0) {\r\n this.currentSourceIds.splice(foundSourceIndex, 1);\r\n let stringSourceIds: string[] = this.currentSourceIds.map(id => id.toString());\r\n $(this.sourceSelectId).val(stringSourceIds);\r\n $(this.sourceSelectId).selectpicker(\"refresh\");\r\n }\r\n }\r\n\r\n // Remove from current Specimens\r\n let foundIndex = this.currentSpecimens.findIndex(specimen => specimen.SpecimenSource == this.targetSpecimen.SpecimenSource && specimen.SpecimenType == this.targetSpecimen.SpecimenType);\r\n if (foundIndex >= 0) {\r\n this.currentSpecimens.splice(foundIndex, 1);\r\n this.deleteSpecimen(this.targetSpecimen); // Delete specimen from database (if its in there)\r\n }\r\n\r\n // Update the source Dropdown\r\n this.triggerFilter(); // update list source/types\r\n this.updatePathogenMappingTable();\r\n }\r\n else if (this.currentUse == \"reagent\" && this.targetReagent != null) {\r\n\r\n // Remove Source/Type from select\r\n let foundSource = this.sourceList.find(source => source.Source == this.targetReagent.ReagentSource && source.Type == this.targetReagent.ReagentType);\r\n if (foundSource != undefined) {\r\n let foundSourceIndex = this.currentSourceIds.findIndex(id => id == foundSource.SourceId)\r\n if (foundSourceIndex >= 0) {\r\n this.currentSourceIds.splice(foundSourceIndex, 1);\r\n let stringSourceIds: string[] = this.currentSourceIds.map(id => id.toString());\r\n $(this.sourceSelectId).val(stringSourceIds);\r\n $(this.sourceSelectId).selectpicker(\"refresh\");\r\n }\r\n }\r\n\r\n // Remove from current Reagents\r\n let foundIndex = this.currentReagents.findIndex(reagent => reagent.ReagentSource == this.targetReagent.ReagentSource && reagent.ReagentType == this.targetReagent.ReagentType);\r\n if (foundIndex >= 0) {\r\n this.currentReagents.splice(foundIndex, 1);\r\n this.deleteReagent(this.targetReagent); // Delete specimen from database (if its in there)\r\n }\r\n\r\n // Update the source Dropdown\r\n this.triggerFilter(); // update list source/types\r\n this.updatePathogenMappingTable();\r\n }\r\n })\r\n }\r\n\r\n initializePathogenTable(): void {\r\n let table = $(this.pathogenTableId).DataTable({\r\n \"dom\": '<\"top-controls\"<\"count-section\"><\"search-section\"<\"search-bar\"f>>>rtip',\r\n autoWidth: false,\r\n info: false,\r\n paging: true,\r\n pageLength: 8,\r\n search: true,\r\n scrollX: false,\r\n orderCellsTop: true,\r\n columns: [\r\n { data: \"VirusName\", title: \"Name\", className: \"text-left font-size12\" },\r\n { data: \"Family\", title: \"Family\", className: \"text-left font-size12\" },\r\n { title: \"\", className: \"text-center delete-pathogen-btn\", defaultContent: `` },\r\n ],\r\n language: {\r\n emptyTable: 'No Added Pathogens',\r\n search: \"\"\r\n },\r\n data: this.addedPathogens\r\n\r\n });\r\n this.pathogenTable = table;\r\n\r\n $(\".top-controls\").addClass('row justify-content-between align-items-center');\r\n\r\n $(this.tableBlock).find(\".count-section\").addClass(\"col-6\").html(``)\r\n $(this.tableBlock).find(\".search-section\").addClass('col-6');\r\n $(this.tableBlock).find(\".search-bar\").addClass('d-flex justify-content-end vertical-align-top align-content-start');\r\n\r\n /*$(this.pathogenTableId).on('search.dt', (e, settings) => {\r\n this.setAddedPathogenCountLabel(this.pathogenTable.rows({ search: 'applied' }).count());\r\n });*/\r\n\r\n //on delete pathogen button click\r\n $(`${this.pathogenTableId} tbody`).on('click', '.delete-pathogen-btn', (event) => {\r\n // Get Item from Row\r\n var tr = $(event.currentTarget).closest('tr');\r\n var row = this.pathogenTable.row(tr);\r\n let data: Pathogen = row.data();\r\n\r\n // Find Index in Added Pathogens\r\n let foundIndex = this.addedPathogens.findIndex(pathogen => pathogen.PathogenId == data.PathogenId);\r\n if (foundIndex >= 0) {\r\n this.addedPathogens.splice(foundIndex, 1);\r\n\r\n // Remove Pathogen from any current specimens/reagents\r\n this.removePathogenFromCurrentItems(data.PathogenId);\r\n\r\n // Update Table\r\n this.updatePathogenTable();\r\n this.updateSourceList();\r\n this.updatePathogenMappingTable();\r\n }\r\n });\r\n\r\n this.setAddedPathogenCountLabel(this.addedPathogens.length);\r\n }\r\n\r\n initializeMappingTable(): void {\r\n let table = $(this.mappingTableId).DataTable({\r\n \"dom\": '<\"top-controls\"<\"count-section\"><\"search-section\"<\"search-bar\"f>>>rtip',\r\n autoWidth: false,\r\n info: false,\r\n paging: false,\r\n search: true,\r\n scrollX: false,\r\n orderCellsTop: true,\r\n columns: [\r\n { title: \"\", orderable: false, width: \"15px\", className: \"text-center pathogen-select-option\", data: { _: \"IsSelected\", display: \"SelectorDisplay\" } },\r\n { data: \"VirusName\", title: \"Name\", className: \"text-left font-size12\" },\r\n { data: \"Family\", title: \"Family\", className: \"text-left font-size12\" },\r\n ],\r\n order: [[1, 'asc']],\r\n language: {\r\n emptyTable: 'Please Select a Source/Type',\r\n search: \"\"\r\n },\r\n data: []\r\n\r\n });\r\n this.mappingTable = table;\r\n\r\n $(\".top-controls\").addClass('row justify-content-between align-items-center');\r\n\r\n $(this.mappingBlock).find(\".count-section\").addClass(\"col-6\").html(``)\r\n $(this.mappingBlock).find(\".search-section\").addClass('col-6');\r\n $(this.mappingBlock).find(\".search-bar\").addClass('d-flex justify-content-end vertical-align-top align-content-start');\r\n\r\n /*$(this.pathogenTableId).on('search.dt', (e, settings) => {\r\n this.setAssociatedPathogenCountLabel(this.mappingTable.rows({ search: 'applied' }).count());\r\n });*/\r\n\r\n //on td.details-control removed\r\n $(`${this.mappingTableId} tbody`).on('click', 'td', (event) => {\r\n let td = $(event.currentTarget);\r\n if (td.hasClass(\"pathogen-select-option\")) {\r\n this.updateSelector(td.find(\".form-check-input\").first());\r\n return;\r\n };\r\n });\r\n\r\n this.setAssociatedPathogenCountLabel(this.addedPathogens.length);\r\n }\r\n\r\n initializeMappingSourceSelect(): void {\r\n $(this.mappingBlock).find(\".source-type-list\").on('click', '.mapping-source-item', (event) => {\r\n $(this.mappingBlock).find(\".mapping-source-item\").removeClass(\"active\");\r\n\r\n if (this.currentUse == \"specimen\") {\r\n // If there is a current target, save the content\r\n if (this.targetSpecimen != null) {\r\n this.saveSpecimen(this.targetSpecimen);\r\n }\r\n\r\n // get index in currentSpecimens\r\n let specimenIndex = $(event.currentTarget).data(\"index\");\r\n let foundSpecimen = this.currentSpecimens[specimenIndex];\r\n $(event.currentTarget).addClass(\"active\");\r\n\r\n // Set the foundSpecimen as the target\r\n this.targetSpecimen = foundSpecimen;\r\n\r\n // Update the Mapping Table for new target\r\n this.updatePathogenMappingTable();\r\n $(this.mappingBlock).find(\".delete-source-type-btn\").removeClass(\"disabled\");\r\n }\r\n else if (this.currentUse == \"reagent\") {\r\n // If there is a current target, save the content\r\n if (this.targetReagent != null) {\r\n this.saveReagent(this.targetReagent);\r\n }\r\n\r\n // get index in currentReagents\r\n let reagentIndex = $(event.currentTarget).data(\"index\");\r\n let foundReagent = this.currentReagents[reagentIndex];\r\n $(event.currentTarget).addClass(\"active\");\r\n\r\n // Set the foundReagent as the target\r\n this.targetReagent = foundReagent;\r\n\r\n // Update the Mapping Table for new target\r\n this.updatePathogenMappingTable();\r\n $(this.mappingBlock).find(\".delete-source-type-btn\").removeClass(\"disabled\");\r\n }\r\n \r\n });\r\n }\r\n\r\n resetAll(): void {\r\n this.currentBiodirectorySite = null;\r\n this.targetSpecimen = null;\r\n this.currentSpecimens = [];\r\n this.currentReagents = [];\r\n this.targetReagent = null;\r\n this.currentSourceIds = [];\r\n\r\n // Reset Sources\r\n this.resetDropdowns();\r\n\r\n // Reset Pathogen Select Tool\r\n this.resetSearchBar();\r\n this.searchedPathogen = null;\r\n this.addedPathogens = [];\r\n this.updatePathogenTable();\r\n this.setAddedPathogenCountLabel(this.addedPathogens.length);\r\n\r\n // Reset Mapping Tool\r\n this.updateSourceList();\r\n this.updatePathogenMappingTable();\r\n this.setAssociatedPathogenCountLabel(this.addedPathogens.length);\r\n }\r\n\r\n // Commands to Run when Source Selection is Changed\r\n triggerFilter(): void {\r\n\r\n // de-select any items in the mapping section\r\n this.targetSpecimen = null;\r\n this.targetReagent = null;\r\n\r\n // Get Selected Source Ids\r\n let sourceIds: string[] = GetSelectedDropdownValues(this.sourceSelectId);\r\n\r\n // If source Id isn't included in current source Id array, add it\r\n let addedSources: BiodirectorySourceType[] = [];\r\n sourceIds.forEach(sourceId => {\r\n let numId: number = parseInt(sourceId);\r\n\r\n if (!this.currentSourceIds.includes(numId)) {\r\n this.currentSourceIds.push(numId);\r\n let foundSource: BiodirectorySourceType = this.sourceList.find(source => source.SourceId == numId);\r\n if (foundSource != undefined) {\r\n addedSources.push(foundSource);\r\n }\r\n }\r\n })\r\n\r\n // if there are existing source Ids that are not present in source selection, potentially remove them\r\n let potentialRemoveIds: number[] = [];\r\n this.currentSourceIds.forEach(sourceId => {\r\n if (!sourceIds.includes(sourceId.toString())) {\r\n potentialRemoveIds.push(sourceId);\r\n }\r\n });\r\n\r\n // Check if remove Ids have mapped Pathogen Data, if no, remove them\r\n let removeIds: number[] = [];\r\n if (this.currentUse == \"specimen\") {\r\n potentialRemoveIds.forEach(sourceId => {\r\n let foundSource = this.sourceList.find(source => source.SourceId == sourceId);\r\n if (foundSource != undefined) {\r\n let foundSpecimen = this.currentSpecimens.find(specimen => specimen.SpecimenSource == foundSource.Source && specimen.SpecimenType == foundSource.Type);\r\n if (foundSpecimen == undefined) {\r\n removeIds.push(sourceId);\r\n }\r\n else if (foundSpecimen.PathogenIds.length == 0) {\r\n removeIds.push(sourceId);\r\n }\r\n }\r\n })\r\n\r\n // Remove from current source Ids, and remove current specimens \r\n removeIds.forEach(removeSourceId => {\r\n let foundIndex = this.currentSourceIds.findIndex(id => id == removeSourceId);\r\n if (foundIndex >= 0) {\r\n this.currentSourceIds.splice(foundIndex, 1);\r\n }\r\n\r\n let foundSource = this.sourceList.find(source => source.SourceId == removeSourceId);\r\n if (foundSource != undefined) {\r\n let foundSpecimenIndex = this.currentSpecimens.findIndex(specimen => specimen.SpecimenSource == foundSource.Source && specimen.SpecimenType == foundSource.Type);\r\n\r\n if (foundSpecimenIndex >= 0) {\r\n this.deleteSpecimen(this.currentSpecimens[foundSpecimenIndex]);\r\n this.currentSpecimens.splice(foundSpecimenIndex, 1);\r\n }\r\n }\r\n })\r\n }\r\n else if (this.currentUse == \"reagent\") {\r\n potentialRemoveIds.forEach(sourceId => {\r\n let foundSource = this.sourceList.find(source => source.SourceId == sourceId);\r\n if (foundSource != undefined) {\r\n let foundReagent = this.currentReagents.find(reagent => reagent.ReagentSource == foundSource.Source && reagent.ReagentType == foundSource.Type);\r\n if (foundReagent == undefined) {\r\n removeIds.push(sourceId);\r\n }\r\n else if (foundReagent.PathogenIds.length == 0) {\r\n removeIds.push(sourceId);\r\n }\r\n }\r\n })\r\n\r\n // Remove from current source Ids, and remove current reagents \r\n removeIds.forEach(removeSourceId => {\r\n let foundIndex = this.currentSourceIds.findIndex(id => id == removeSourceId);\r\n if (foundIndex >= 0) {\r\n this.currentSourceIds.splice(foundIndex, 1);\r\n }\r\n\r\n let foundSource = this.sourceList.find(source => source.SourceId == removeSourceId);\r\n if (foundSource != undefined) {\r\n let foundReagentIndex = this.currentReagents.findIndex(reagnet => reagnet.ReagentSource == foundSource.Source && reagnet.ReagentType == foundSource.Type);\r\n\r\n if (foundReagentIndex >= 0) {\r\n this.deleteReagent(this.currentReagents[foundReagentIndex]);\r\n this.currentReagents.splice(foundReagentIndex, 1);\r\n }\r\n }\r\n })\r\n }\r\n\r\n // Create new specimen entries\r\n if (this.currentUse == \"specimen\") {\r\n addedSources.forEach(source => {\r\n this.currentSpecimens.push(BiodirectorySpecimen.createBiodirectorySpecimen(this.currentBiodirectorySite.Id, source.Source, source.Type))\r\n })\r\n }\r\n else if (this.currentUse == \"reagent\") {\r\n addedSources.forEach(source => {\r\n this.currentReagents.push(BiodirectoryReagent.createBiodirectoryReagent(this.currentBiodirectorySite.Id, source.Source, source.Type))\r\n })\r\n }\r\n\r\n // Update Mapping Table\r\n this.updateSourceList();\r\n\r\n }\r\n\r\n resetSearchBar(): void {\r\n $(this.pathogenSearchSelectId).val(\"\").trigger(\"change\");\r\n $(this.addFamilyBtn).addClass(\"disabled\");\r\n $(this.addPathogenBtn).addClass(\"disabled\");\r\n }\r\n\r\n setAddedPathogenCountLabel(count: number): void {\r\n $(this.tableBlock).find(\".added-pathogens-count\").text(count);\r\n }\r\n\r\n setAssociatedPathogenCountLabel(count: number): void {\r\n $(this.mappingBlock).find(\".associated-pathogen-count\").text(count);\r\n }\r\n\r\n adjustTableColumns(): void {\r\n this.pathogenTable.columns.adjust().draw();\r\n this.mappingTable.columns.adjust().draw();\r\n }\r\n\r\n updatePathogenTable(): void {\r\n this.pathogenTable.clear();\r\n this.pathogenTable.rows.add(this.addedPathogens);\r\n this.pathogenTable.draw();\r\n\r\n this.setAddedPathogenCountLabel(this.addedPathogens.length);\r\n\r\n if (this.currentUse == \"specimen\" && this.currentBiodirectorySite != null) {\r\n let pathogenIdArray: string[] = this.addedPathogens.map(pathogen => pathogen.PathogenId.toString());\r\n let pathogenIdString = pathogenIdArray.join(\"|\");\r\n this.currentBiodirectorySite.BiodirectoryResearchSite.SpecimenPathogenListIds = pathogenIdString;\r\n\r\n // Update list of added pathogens in database\r\n this.updatePathogenIds(this.currentBiodirectorySite.BiodirectoryResearchSite);\r\n }\r\n else if (this.currentUse == \"reagent\" && this.currentBiodirectorySite != null) {\r\n let pathogenIdArray: string[] = this.addedPathogens.map(pathogen => pathogen.PathogenId.toString());\r\n let pathogenIdString = pathogenIdArray.join(\"|\");\r\n this.currentBiodirectorySite.BiodirectoryResearchSite.ReagentPathogenListIds = pathogenIdString;\r\n\r\n // Update list of added pathogens in database\r\n this.updatePathogenIds(this.currentBiodirectorySite.BiodirectoryResearchSite);\r\n }\r\n \r\n }\r\n\r\n updatePathogenMappingTable(): void {\r\n this.addedPathogens.forEach(pathogen => {\r\n if (this.currentUse == \"specimen\") {\r\n if (this.targetSpecimen != null) {\r\n if (this.targetSpecimen.PathogenIdArray.includes(pathogen.PathogenId.toString())) {\r\n pathogen.updateSelect(true);\r\n }\r\n else {\r\n pathogen.updateSelect(false);\r\n }\r\n }\r\n else {\r\n pathogen.updateSelect(false);\r\n }\r\n }\r\n else if (this.currentUse == \"reagent\") {\r\n if (this.targetReagent != null) {\r\n if (this.targetReagent.PathogenIdArray.includes(pathogen.PathogenId.toString())) {\r\n pathogen.updateSelect(true);\r\n }\r\n else {\r\n pathogen.updateSelect(false);\r\n }\r\n }\r\n else {\r\n pathogen.updateSelect(false);\r\n }\r\n }\r\n })\r\n\r\n this.mappingTable.clear();\r\n if (this.currentUse == \"specimen\") {\r\n if (this.targetSpecimen == null) {\r\n this.mappingTable.rows.add([]);\r\n this.setAssociatedPathogenCountLabel(0);\r\n }\r\n else {\r\n this.mappingTable.rows.add(this.addedPathogens);\r\n this.setAssociatedPathogenCountLabel(this.addedPathogens.filter(pathogen => pathogen.IsSelected).length)\r\n }\r\n }\r\n else if (this.currentUse == \"reagent\") {\r\n if (this.targetReagent == null) {\r\n this.mappingTable.rows.add([]);\r\n this.setAssociatedPathogenCountLabel(0);\r\n }\r\n else {\r\n this.mappingTable.rows.add(this.addedPathogens);\r\n this.setAssociatedPathogenCountLabel(this.addedPathogens.filter(pathogen => pathogen.IsSelected).length)\r\n }\r\n } \r\n this.mappingTable.draw();\r\n }\r\n\r\n updateSourceList(): void {\r\n $(this.mappingBlock).find(\".source-type-list\").empty();\r\n $(this.mappingBlock).find(\".delete-source-type-btn\").addClass(\"disabled\");\r\n\r\n let content = \"\";\r\n\r\n if (this.currentUse == \"specimen\") {\r\n for (let i = 0; i < this.currentSpecimens.length; i++) {\r\n let rowContent = `\r\n
\r\n \r\n
\r\n `\r\n content += rowContent;\r\n }\r\n }\r\n else if (this.currentUse == \"reagent\") {\r\n for (let i = 0; i < this.currentReagents.length; i++) {\r\n let rowContent = `\r\n
\r\n \r\n
\r\n `\r\n content += rowContent;\r\n }\r\n }\r\n $(this.mappingBlock).find(\".source-type-list\").html(content);\r\n }\r\n\r\n updateSelector(checkbox): void {\r\n let tr = $(checkbox).closest('tr');\r\n let row = this.mappingTable.row(tr);\r\n let currentData: Pathogen = row.data();\r\n let isChecked = !currentData.IsSelected;\r\n currentData.updateSelect(isChecked);\r\n\r\n if (this.currentUse == \"specimen\" && this.targetSpecimen != null) {\r\n if (isChecked) {\r\n this.targetSpecimen.PathogenIdArray.push(currentData.PathogenId.toString());\r\n }\r\n else {\r\n let foundIndex = this.targetSpecimen.PathogenIdArray.findIndex(id => id == currentData.PathogenId.toString());\r\n if (foundIndex >= 0) {\r\n this.targetSpecimen.PathogenIdArray.splice(foundIndex, 1);\r\n }\r\n }\r\n\r\n // Update warning icon on source selection \r\n let foundIndex = this.currentSpecimens.findIndex(specimen => specimen.SpecimenSource == this.targetSpecimen.SpecimenSource && specimen.SpecimenType == this.targetSpecimen.SpecimenType);\r\n if (foundIndex >= 0) {\r\n let warningIcon = $(this.mappingBlock).find(`[data-index='${foundIndex}']`).find(\".warning-icon\");\r\n\r\n if (this.targetSpecimen.PathogenIdArray.length > 0) {\r\n $(warningIcon).addClass(\"d-none\");\r\n }\r\n else {\r\n $(warningIcon).removeClass(\"d-none\");\r\n }\r\n }\r\n\r\n // Update core object with associated pathogens\r\n this.targetSpecimen.PathogenIds = this.targetSpecimen.PathogenIdArray.join(\"|\");\r\n }\r\n else if (this.currentUse == \"reagent\" && this.targetReagent != null) {\r\n if (isChecked) {\r\n this.targetReagent.PathogenIdArray.push(currentData.PathogenId.toString());\r\n }\r\n else {\r\n let foundIndex = this.targetReagent.PathogenIdArray.findIndex(id => id == currentData.PathogenId.toString());\r\n if (foundIndex >= 0) {\r\n this.targetReagent.PathogenIdArray.splice(foundIndex, 1);\r\n }\r\n }\r\n\r\n // Update warning icon on source selection \r\n let foundIndex = this.currentReagents.findIndex(reagent => reagent.ReagentSource == this.targetReagent.ReagentSource && reagent.ReagentType == this.targetReagent.ReagentType);\r\n if (foundIndex >= 0) {\r\n let warningIcon = $(this.mappingBlock).find(`[data-index='${foundIndex}']`).find(\".warning-icon\");\r\n\r\n if (this.targetReagent.PathogenIdArray.length > 0) {\r\n $(warningIcon).addClass(\"d-none\");\r\n }\r\n else {\r\n $(warningIcon).removeClass(\"d-none\");\r\n }\r\n }\r\n\r\n // Update core object with associated pathogens\r\n this.targetReagent.PathogenIds = this.targetReagent.PathogenIdArray.join(\"|\");\r\n }\r\n row.data(currentData);\r\n this.setAssociatedPathogenCountLabel(this.addedPathogens.filter(pathogen => pathogen.IsSelected).length)\r\n }\r\n\r\n resetDropdowns(): void {\r\n $(this.sourceSelectId).selectpicker('deselectAll');\r\n $(this.sourceSelectId).selectpicker('refresh');\r\n }\r\n\r\n prepopulateBiodirectoryInformation(site: BiodirectoryCombinedEntity): void {\r\n // Set current Biodirectory Site\r\n this.currentBiodirectorySite = site;\r\n\r\n // Set Current Specimens/Reagents\r\n this.currentSpecimens = site.BiodirectorySpecimens;\r\n this.currentReagents = site.BiodirectoryReagents;\r\n\r\n // Set current source Ids\r\n let associatedPathogenIdArray: string[] = [];\r\n if (this.currentUse == \"specimen\") {\r\n let targetSourceIds = [];\r\n this.currentSpecimens.forEach(specimen => {\r\n let foundSourceType = this.sourceList.find(source => source.Source == specimen.SpecimenSource && source.Type == specimen.SpecimenType);\r\n if (foundSourceType != undefined) {\r\n if (!targetSourceIds.includes(foundSourceType.SourceId)) {\r\n targetSourceIds.push(foundSourceType.SourceId);\r\n }\r\n }\r\n\r\n if (specimen.PathogenIds != \"\" && specimen.PathogenIds != null && specimen.PathogenIds != undefined) {\r\n let pathogenIdArray = specimen.PathogenIds.split(\"|\");\r\n associatedPathogenIdArray.push(...pathogenIdArray);\r\n }\r\n\r\n })\r\n associatedPathogenIdArray = Unique(associatedPathogenIdArray, true);\r\n this.currentSourceIds = targetSourceIds;\r\n }\r\n else if (this.currentUse == \"reagent\") {\r\n let targetSourceIds = [];\r\n this.currentReagents.forEach(reagent => {\r\n let foundSourceType = this.sourceList.find(source => source.Source == reagent.ReagentSource && source.Type == reagent.ReagentType);\r\n if (foundSourceType != undefined) {\r\n if (!targetSourceIds.includes(foundSourceType.SourceId)) {\r\n targetSourceIds.push(foundSourceType.SourceId);\r\n }\r\n }\r\n\r\n if (reagent.PathogenIds != \"\" && reagent.PathogenIds != null && reagent.PathogenIds != undefined) {\r\n let pathogenIdArray = reagent.PathogenIds.split(\"|\");\r\n associatedPathogenIdArray.push(...pathogenIdArray);\r\n }\r\n })\r\n associatedPathogenIdArray = Unique(associatedPathogenIdArray, true);\r\n this.currentSourceIds = targetSourceIds;\r\n }\r\n\r\n // Update Source Dropdown\r\n let stringSourceIds: string[] = this.currentSourceIds.map(id => id.toString());\r\n $(this.sourceSelectId).val(stringSourceIds);\r\n $(this.sourceSelectId).selectpicker(\"refresh\");\r\n this.updateSourceList();\r\n\r\n // Set Added Pathogens\r\n let addedPathogenIdArray: string[] = [];\r\n if (this.currentUse == \"specimen\") {\r\n if (this.currentBiodirectorySite.BiodirectoryResearchSite.SpecimenPathogenListIds != null) {\r\n addedPathogenIdArray = this.currentBiodirectorySite.BiodirectoryResearchSite.SpecimenPathogenListIds.split(\"|\");\r\n associatedPathogenIdArray.forEach(id => {\r\n if (!addedPathogenIdArray.includes(id)) {\r\n addedPathogenIdArray.push(id);\r\n }\r\n });\r\n }\r\n }\r\n else if (this.currentUse == \"reagent\") {\r\n if (this.currentBiodirectorySite.BiodirectoryResearchSite.ReagentPathogenListIds != null) {\r\n addedPathogenIdArray = this.currentBiodirectorySite.BiodirectoryResearchSite.ReagentPathogenListIds.split(\"|\");\r\n associatedPathogenIdArray.forEach(id => {\r\n if (!addedPathogenIdArray.includes(id)) {\r\n addedPathogenIdArray.push(id);\r\n }\r\n });\r\n }\r\n }\r\n\r\n let addedPathogens: Pathogen[] = [];\r\n addedPathogenIdArray.forEach(pathogenId => {\r\n let foundPathogen: Pathogen = this.pathogenList.find(pathogen => pathogen.PathogenId.toString() == pathogenId);\r\n if (foundPathogen != undefined) {\r\n // don't add duplicates\r\n if (addedPathogens.findIndex(pathogen => pathogen.PathogenId == foundPathogen.PathogenId) < 0) {\r\n addedPathogens.push(foundPathogen)\r\n }\r\n }\r\n });\r\n\r\n this.addedPathogens = addedPathogens;\r\n this.updatePathogenTable();\r\n this.updatePathogenMappingTable();\r\n }\r\n\r\n saveSpecimen(specimen: BiodirectorySpecimen): void {\r\n this.currentBiodirectorySite.BiodirectoryResearchSite.LastModifiedDate = new Date();\r\n\r\n this.currentBiodirectorySite.BiodirectorySpecimens.forEach(specimen => {\r\n specimen.PathogenIds = specimen.PathogenIdArray.join(\"|\");\r\n });\r\n\r\n specimen.PathogenIds = specimen.PathogenIdArray.join(\"|\");\r\n\r\n specimen.LastModifiedDate = new Date();\r\n\r\n let onSuccess = (response: any) => {\r\n // response is the specimen\r\n let updatedSpecimen: BiodirectorySpecimen = BiodirectorySpecimen.createBiodirectorySpecimenFromObj(response);\r\n updatedSpecimen.initialize();\r\n\r\n // update the specimens\r\n let foundSpecimenIndex = this.currentSpecimens.findIndex(specimen => specimen.SpecimenSource == updatedSpecimen.SpecimenSource && specimen.SpecimenType == updatedSpecimen.SpecimenType);\r\n if (foundSpecimenIndex >= 0) {\r\n this.currentSpecimens.splice(foundSpecimenIndex, 1, updatedSpecimen);\r\n }\r\n }\r\n\r\n let onError = (response: any) => {\r\n console.log(response);\r\n alert(\"An unexpected error occurred. Please try again.\");\r\n }\r\n\r\n this.updateBiodirectorySpecimen(specimen, onSuccess, onError);\r\n }\r\n\r\n saveReagent(reagent: BiodirectoryReagent): void {\r\n this.currentBiodirectorySite.BiodirectoryResearchSite.LastModifiedDate = new Date();\r\n\r\n this.currentBiodirectorySite.BiodirectoryReagents.forEach(reagent => {\r\n reagent.PathogenIds = reagent.PathogenIdArray.join(\"|\");\r\n });\r\n\r\n reagent.PathogenIds = reagent.PathogenIdArray.join(\"|\");\r\n\r\n reagent.LastModifiedDate = new Date();\r\n\r\n let onSuccess = (response: any) => {\r\n // response is the specimen\r\n let updatedReagent: BiodirectoryReagent = BiodirectoryReagent.createBiodirectoryReagentFromObj(response);\r\n updatedReagent.initialize();\r\n\r\n // update the specimens\r\n let foundReagentIndex = this.currentReagents.findIndex(reagent => reagent.ReagentSource == updatedReagent.ReagentSource && reagent.ReagentType == updatedReagent.ReagentType);\r\n if (foundReagentIndex >= 0) {\r\n this.currentReagents.splice(foundReagentIndex, 1, updatedReagent);\r\n }\r\n }\r\n\r\n let onError = (response: any) => {\r\n console.log(response);\r\n alert(\"An unexpected error occurred. Please try again.\");\r\n }\r\n\r\n this.updateBiodirectoryReagent(reagent, onSuccess, onError);\r\n }\r\n\r\n saveSiteAndSpecimens(): void {\r\n this.currentBiodirectorySite.BiodirectoryResearchSite.LastModifiedDate = new Date();\r\n this.currentBiodirectorySite.BiodirectorySpecimens.forEach(specimen => specimen.LastModifiedDate = new Date());\r\n this.updateBiodirectorySiteAndSpecimen(this.currentBiodirectorySite);\r\n }\r\n\r\n saveSiteAndReagents(): void {\r\n this.currentBiodirectorySite.BiodirectoryResearchSite.LastModifiedDate = new Date();\r\n this.currentBiodirectorySite.BiodirectoryReagents.forEach(reagent => reagent.LastModifiedDate = new Date());\r\n this.updateBiodirectorySiteAndReagent(this.currentBiodirectorySite);\r\n }\r\n\r\n getTargetBiodirectorySite(): BiodirectoryCombinedEntity {\r\n return this.currentBiodirectorySite;\r\n }\r\n\r\n removePathogenFromCurrentItems(pathogenId: number): void {\r\n if (this.currentUse == \"specimen\") {\r\n this.currentSpecimens.forEach(specimen => {\r\n if (specimen.PathogenIdArray.includes(pathogenId.toString())) {\r\n let foundIndex = specimen.PathogenIdArray.findIndex(id => id == pathogenId.toString());\r\n specimen.PathogenIdArray.splice(foundIndex, 1);\r\n specimen.PathogenIds = specimen.PathogenIdArray.join(\"|\");\r\n }\r\n })\r\n }\r\n else if (this.currentUse == \"reagent\") {\r\n this.currentReagents.forEach(reagent => {\r\n if (reagent.PathogenIdArray.includes(pathogenId.toString())) {\r\n let foundIndex = reagent.PathogenIdArray.findIndex(id => id == pathogenId.toString());\r\n reagent.PathogenIdArray.splice(foundIndex, 1);\r\n reagent.PathogenIds = reagent.PathogenIdArray.join(\"|\");\r\n }\r\n })\r\n }\r\n }\r\n\r\n updatePathogenIds(site: BiodirectoryResearchSite, onSuccessFn: Function = (response: any) => { }, onErrorFn: Function = (response: any) => { }): void {\r\n $.ajax({\r\n url: '/secure/biodirectory/biodirectory-form/biodirectory-form?handler=SaveBiodirectoryInformation',\r\n method: \"POST\",\r\n //dataType: \"json\",\r\n //contentType: \"application/json\",\r\n data: { formData: JSON.stringify(site) },\r\n headers: { \"RequestVerificationToken\": $('input[name=\"__RequestVerificationToken\"]').val() },\r\n success: (response) => {\r\n onSuccessFn(response);\r\n },\r\n error: (response) => {\r\n onErrorFn(response);\r\n }\r\n });\r\n }\r\n\r\n updateBiodirectorySpecimen(specimen: BiodirectorySpecimen, onSuccessFn: Function = (response: any) => { }, onErrorFn: Function = (response: any) => { }): void {\r\n $.ajax({\r\n url: '/secure/biodirectory/biodirectory-form/biodirectory-form?handler=SaveBiodirectorySpecimen',\r\n method: \"POST\",\r\n //dataType: \"json\",\r\n //contentType: \"application/json\",\r\n data: { formData: JSON.stringify(specimen) },\r\n headers: { \"RequestVerificationToken\": $('input[name=\"__RequestVerificationToken\"]').val() },\r\n success: (response) => {\r\n onSuccessFn(response);\r\n },\r\n error: (response) => {\r\n onErrorFn(response);\r\n }\r\n });\r\n }\r\n\r\n updateBiodirectorySiteAndSpecimen(siteInfo: BiodirectoryCombinedEntity, onSuccessFn: Function = (response: any) => { }, onErrorFn: Function = (response: any) => { }): void {\r\n $.ajax({\r\n url: '/secure/biodirectory/biodirectory-form/biodirectory-form?handler=SaveBiodirectorySiteAndSpecimen',\r\n method: \"POST\",\r\n //dataType: \"json\",\r\n //contentType: \"application/json\",\r\n data: { formData: JSON.stringify(siteInfo) },\r\n headers: { \"RequestVerificationToken\": $('input[name=\"__RequestVerificationToken\"]').val() },\r\n success: (response) => {\r\n onSuccessFn(response);\r\n },\r\n error: (response) => {\r\n onErrorFn(response);\r\n }\r\n });\r\n }\r\n\r\n deleteSpecimen(specimen: BiodirectorySpecimen, onSuccessFn: Function = (response: any) => { }, onErrorFn: Function = (response: any) => { }): void {\r\n $.ajax({\r\n url: '/secure/biodirectory/biodirectory-form/biodirectory-form?handler=DeleteSpecimen',\r\n method: \"POST\",\r\n //dataType: \"json\",\r\n //contentType: \"application/json\",\r\n data: { formData: JSON.stringify(specimen) },\r\n headers: { \"RequestVerificationToken\": $('input[name=\"__RequestVerificationToken\"]').val() },\r\n success: (response) => {\r\n onSuccessFn(response);\r\n },\r\n error: (response) => {\r\n onErrorFn(response);\r\n }\r\n });\r\n }\r\n\r\n updateBiodirectoryReagent(reagent: BiodirectoryReagent, onSuccessFn: Function = (response: any) => { }, onErrorFn: Function = (response: any) => { }): void {\r\n $.ajax({\r\n url: '/secure/biodirectory/biodirectory-form/biodirectory-form?handler=SaveBiodirectoryReagent',\r\n method: \"POST\",\r\n //dataType: \"json\",\r\n //contentType: \"application/json\",\r\n data: { formData: JSON.stringify(reagent) },\r\n headers: { \"RequestVerificationToken\": $('input[name=\"__RequestVerificationToken\"]').val() },\r\n success: (response) => {\r\n onSuccessFn(response);\r\n },\r\n error: (response) => {\r\n onErrorFn(response);\r\n }\r\n });\r\n }\r\n\r\n updateBiodirectorySiteAndReagent(siteInfo: BiodirectoryCombinedEntity, onSuccessFn: Function = (response: any) => { }, onErrorFn: Function = (response: any) => { }): void {\r\n $.ajax({\r\n url: '/secure/biodirectory/biodirectory-form/biodirectory-form?handler=SaveBiodirectorySiteAndReagent',\r\n method: \"POST\",\r\n //dataType: \"json\",\r\n //contentType: \"application/json\",\r\n data: { formData: JSON.stringify(siteInfo) },\r\n headers: { \"RequestVerificationToken\": $('input[name=\"__RequestVerificationToken\"]').val() },\r\n success: (response) => {\r\n onSuccessFn(response);\r\n },\r\n error: (response) => {\r\n onErrorFn(response);\r\n }\r\n });\r\n }\r\n\r\n deleteReagent(reagent: BiodirectoryReagent, onSuccessFn: Function = (response: any) => { }, onErrorFn: Function = (response: any) => { }): void {\r\n $.ajax({\r\n url: '/secure/biodirectory/biodirectory-form/biodirectory-form?handler=DeleteReagent',\r\n method: \"POST\",\r\n //dataType: \"json\",\r\n //contentType: \"application/json\",\r\n data: { formData: JSON.stringify(reagent) },\r\n headers: { \"RequestVerificationToken\": $('input[name=\"__RequestVerificationToken\"]').val() },\r\n success: (response) => {\r\n onSuccessFn(response);\r\n },\r\n error: (response) => {\r\n onErrorFn(response);\r\n }\r\n });\r\n }\r\n}\r\n","// extracted by mini-css-extract-plugin","// extracted by mini-css-extract-plugin","\r\n\r\nexport class EventEntry {\r\n\r\n Title: string;\r\n SortOrder: number;\r\n EventType: string;\r\n EventDate: string;\r\n Sponsor: string;\r\n Details: string;\r\n Language: string;\r\n AccessInfo: string;\r\n\r\n AccessInfoContent: string = \"\";\r\n SponsorFilter: string = \"\";\r\n\r\n constructor() { }\r\n\r\n initialize(): void {\r\n\r\n if (this.AccessInfo != undefined) {\r\n if (this.AccessInfo.startsWith(\"http\")) {\r\n this.AccessInfoContent = \"Details\";\r\n }\r\n else if (this.AccessInfo.includes(\"@\")) {\r\n this.AccessInfoContent = \"More Info\";\r\n }\r\n }\r\n\r\n this.EventDate = \"\" + this.EventDate + \"\";\r\n this.SponsorFilter = this.Sponsor.split(\"(\").join(\"\").split(\")\").join(\"\");\r\n }\r\n}","import { Split, Join, DoArraysOverlap, SplitAndJoin } from \"../../../shared/scripts/array-functions\";\r\n\r\n\r\n\r\nexport class Stakeholder {\r\n\r\n StakeholderName: string;\r\n StakeholderType: string = \"Unknown\";\r\n OrganizationType: string = \"Unknown\";\r\n GeographicFocus: string = \"Not Defined\";\r\n About: string = \"\";\r\n //PathogenFocus: string = \"Unknown\";\r\n Viruses: string = \"Not Defined\";\r\n Diseases: string = \"\";\r\n Families: string = \"\";\r\n URL: string = \"\";\r\n StakeholderContactName: string = \"\";\r\n StakeholderContactEmail: string = \"\";\r\n POC: string = \"\";\r\n PresentatScientificSeries: string = \"\";\r\n Notes: string = \"\";\r\n StakeholderOffering: string = \"\";\r\n AgreementInPlace: string = \"\";\r\n SCAgreedDate: string = \"\";\r\n StakeholderAgreedDate: string = \"\";\r\n BenefitsForm: string = \"\";\r\n ReceiveQuarterlyUpdates: string = \"\";\r\n AttendAnnualMeeting: string = \"\";\r\n AttendScientificSeries: string = \"\";\r\n PresentatWGMeetings: string = \"\";\r\n PresenttoSC: string = \"\";\r\n AttendStakeholderForum: string = \"\";\r\n MemberofWG: string = \"\";\r\n InvitedGuesttoWG: string = \"\";\r\n\r\n GeographicFocusList: string[];\r\n GeographicFocusDisplay: string = \"\";\r\n VirusesList: string[];\r\n VirusesDisplay: string = \"\";\r\n\r\n DiseasesDisplay: string = \"\";\r\n\r\n URLDisplay: string = \"\";\r\n StakeholderContactEmailDisplay: string = \"\";\r\n\r\n initialize(): void {\r\n\r\n if (this.GeographicFocus == null || this.GeographicFocus.trim().length == 0) { this.GeographicFocus = \"Not Defined\"; }\r\n if (this.Viruses == null || this.Viruses.trim().length == 0) { this.Viruses = \"Not Defined\"; }\r\n\r\n this.DiseasesDisplay = SplitAndJoin(this.Diseases, \"|\", \", \", true);\r\n\r\n this.GeographicFocusList = Split(this.GeographicFocus, \"|\");\r\n this.GeographicFocusDisplay = Join(this.GeographicFocusList, \", \", true, true);\r\n\r\n this.VirusesList = Split(this.Viruses, \"|\");\r\n this.VirusesDisplay = Join(this.VirusesList, \", \", true, true);\r\n\r\n if (this.URL != null && this.URL.length > 0) {\r\n this.URLDisplay = \"\" + this.URL + \"\";\r\n }\r\n\r\n if (this.StakeholderContactEmail != null && this.StakeholderContactEmail.length > 0) {\r\n this.StakeholderContactEmailDisplay = \"\" + this.StakeholderContactEmail + \"\";\r\n }\r\n\r\n if (this.BenefitsForm != \"Yes\") { this.BenefitsForm = \"No\"; }\r\n }\r\n\r\n matchesFilter(stakeholderTypes: any, organizationTypes: any, geoFocus: any, viruses: any): boolean {\r\n\r\n if (!stakeholderTypes.includes(this.StakeholderType)) return false;\r\n if (!organizationTypes.includes(this.OrganizationType)) return false;\r\n if (!DoArraysOverlap(geoFocus, this.GeographicFocusList)) return false;\r\n if (!DoArraysOverlap(viruses, this.Viruses)) return false;\r\n\r\n return true;\r\n }\r\n\r\n\r\n}","import L, { Marker, Point } from \"leaflet\";\r\nimport { basemapLayer, featureLayer } from 'esri-leaflet';\r\nimport { SiteCapacity } from \"./site-capacities.objects\";\r\n\r\n\r\nexport class SiteCapacitiesMap {\r\n\r\n map: L.Map;\r\n basemapDetailedLayer: L.Layer;\r\n basemapGrayscaleLayer: L.Layer;\r\n markersLayerSite: L.LayerGroup;\r\n markerRenderer: L.Renderer;\r\n clusterLayer: any;\r\n\r\n constructor() { this.initializeMap(); }\r\n\r\n initializeMap(): void {\r\n $(\"#site-capacities-map\").empty();\r\n\r\n this.map = L.map('site-capacities-map', {\r\n zoomSnap: 0.1,\r\n worldCopyJump: true\r\n });\r\n\r\n this.basemapDetailedLayer = L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', {});\r\n this.basemapGrayscaleLayer = basemapLayer('Gray').addTo(this.map);\r\n\r\n this.markersLayerSite = L.layerGroup().addTo(this.map);\r\n\r\n this.setupMarkerCluster();\r\n this.clusterLayer = L.markerClusterGroup({\r\n maxClusterRadius: 10,\r\n //disableClusteringAtZoom: this.map.options.maxZoom + 1\r\n zoomToBoundsOnClick: false,\r\n iconCreateFunction: function (cluster) {\r\n return new L.DivIcon({ html: cluster.getChildCount() + '', className: 'site-marker-cluster', iconSize: L.point(18, 18) });\r\n },\r\n spiderfyShapePositions: function (count: number, centerPt: { y: number; x: number; }) {\r\n var distanceFromCenter = 25,\r\n markerDistance = 25,\r\n lineLength = markerDistance * (count - 1),\r\n lineStart = centerPt.y - lineLength / 2,\r\n res = [],\r\n i;\r\n\r\n res.length = count;\r\n\r\n for (i = count - 1; i >= 0; i--) {\r\n res[i] = new Point(centerPt.x - distanceFromCenter, lineStart + markerDistance * i);\r\n }\r\n\r\n return res;\r\n }\r\n } as any); //casted to 'any' as shapePositions not part of type\r\n\r\n this.clusterLayer.on('clusterclick', function (a) {\r\n //console.log(a);\r\n a.layer.spiderfy();\r\n });\r\n\r\n\r\n this.map.setView([28.5, 0], 2.05);\r\n\r\n this.markerRenderer = L.canvas({ padding: 0.5 });\r\n\r\n L.control.layers({\r\n \"Detailed\": this.basemapDetailedLayer,\r\n \"Grayscale\": this.basemapGrayscaleLayer\r\n }, {}).addTo(this.map);\r\n\r\n //$('#loading-indicator').hide();\r\n $('#site-capacities-map').show();\r\n this.map.invalidateSize();\r\n\r\n this.map.on(\"baselayerchange\", (e: any) => this.setAttribution(e.name));\r\n this.setAttribution(\"Grayscale\");\r\n\r\n }\r\n\r\n setAttribution(basemap: string): void {\r\n if (basemap == \"Grayscale\") {\r\n $('.leaflet-control-attribution').html('Powered by Esri');\r\n }\r\n else if (basemap == \"Detailed\") {\r\n $('.leaflet-control-attribution').html('Powered by OpenStreetMap');\r\n }\r\n }\r\n\r\n setVisibleSites(sites: SiteCapacity[]) {\r\n if (this.map == undefined) { return; }\r\n\r\n if (this.map.hasLayer(this.markersLayerSite)) {\r\n this.markersLayerSite.clearLayers();\r\n }\r\n if (this.map.hasLayer(this.clusterLayer)) {\r\n this.clusterLayer.clearLayers();\r\n }\r\n\r\n sites.forEach((site: SiteCapacity) => {\r\n\r\n if (site.IsMapCluster) {\r\n //if (site.Country == \"Senegal\") {\r\n this.clusterLayer.addLayer((L).shapeMarker([site.CoordLat, site.CoordLon], {\r\n shape: 'triangle',\r\n color: '#51344d',\r\n radius: 5,\r\n weight: 1,\r\n fillOpacity: 0.5\r\n }).addTo(this.markersLayerSite).bindPopup(this.createSitePopupContent(site)));\r\n }\r\n else {\r\n (L).shapeMarker([site.CoordLat, site.CoordLon], {\r\n shape: 'triangle',\r\n color: '#51344d',\r\n radius: 5,\r\n weight: 1,\r\n fillOpacity: 0.5\r\n }).addTo(this.markersLayerSite).bindPopup(this.createSitePopupContent(site));\r\n }\r\n });\r\n\r\n this.map.addLayer(this.clusterLayer);\r\n }\r\n\r\n createSitePopupContent(site: SiteCapacity): string {\r\n\r\n let popupContent: string = \"
\";\r\n popupContent += \"
\" + site.SiteName + \"
\";\r\n popupContent += \"
\" + site.ResearchCenter.RcNameDisplay + \"
\";\r\n\r\n popupContent += \"
\" + site.SiteOverview?.PocName + \"
\";\r\n popupContent += \"
\" + site.SiteOverview?.PocTitle + \"
\";\r\n popupContent += \"
\" + site.SiteOverview?.PocEmail + \"
\";\r\n\r\n //popupContent += \"\";\r\n //site.pathogens.forEach(pathogen => {\r\n // popupContent += \"\";\r\n //});\r\n //popupContent += \"
Pathogens
\" + pathogen + \"
\";\r\n popupContent += \"
\";\r\n return popupContent;\r\n }\r\n\r\n refresh(): void {\r\n\r\n //if (this.map == undefined) {\r\n // this.initializeMap();\r\n //}\r\n //else {\r\n this.map.invalidateSize();\r\n this.map.setView([28.5, 0], 2.05);\r\n //}\r\n }\r\n\r\n\r\n setupMarkerCluster(): void {\r\n L.MarkerCluster.include({\r\n spiderfy: function () {\r\n if (this._group._spiderfied === this || this._group._inZoomAnimation) {\r\n return;\r\n }\r\n\r\n var childMarkers = this.getAllChildMarkers(null, true),\r\n group = this._group,\r\n map = group._map,\r\n center = map.latLngToLayerPoint(this._latlng),\r\n positions;\r\n\r\n this._group._unspiderfy();\r\n this._group._spiderfied = this;\r\n\r\n //TODO Maybe: childMarkers order by distance to center\r\n\r\n if (this._group.options.spiderfyShapePositions) {\r\n positions = this._group.options.spiderfyShapePositions(childMarkers.length, center);\r\n } else if (childMarkers.length >= this._circleSpiralSwitchover) {\r\n positions = this._generatePointsSpiral(childMarkers.length, center);\r\n } else {\r\n center.y += 10; // Otherwise circles look wrong => hack for standard blue icon, renders differently for other icons.\r\n positions = this._generatePointsCircle(childMarkers.length, center);\r\n }\r\n\r\n this._animationSpiderfy(childMarkers, positions);\r\n }\r\n });\r\n }\r\n\r\n}","\r\n\r\n\r\n\r\nexport function InitializeFilterDropdown(selectId: string, values: string[], tableFilter: IFilter, compoundValues: any[] = undefined, selected: boolean = true): void {\r\n $(selectId).selectpicker({\r\n dropupAuto: false,\r\n selectedTextFormat: \"count\",\r\n\r\n countSelectedText: (numSelected, numTotal) => {\r\n if (numSelected == numTotal) {\r\n return \"All\";\r\n }\r\n else {\r\n return numSelected + \" Selected\";\r\n }\r\n }\r\n });\r\n\r\n if (compoundValues == undefined) {\r\n values.forEach((element: any) => {\r\n $(selectId).append(new Option(element, element, false, selected));\r\n });\r\n }\r\n else {\r\n compoundValues.forEach((element: any[]) => {\r\n $(selectId).append(new Option(element[0], element[1], false, selected));\r\n });\r\n }\r\n\r\n $(selectId).selectpicker(\"refresh\");\r\n\r\n $(selectId).on('changed.bs.select', (e, clickedIndex, isSelected, previousValue) => {\r\n tableFilter.triggerFilter();\r\n });\r\n}\r\n\r\nexport function GetSelectedDropdownValues(selectId: string): any {\r\n return $(selectId).val();\r\n}\r\n\r\nexport function ResetDropdownFilters(filterList: string[]): void {\r\n filterList.forEach((dropdownId: string) => {\r\n $(dropdownId).selectpicker('selectAll');\r\n $(dropdownId).selectpicker('refresh');\r\n });\r\n}\r\n\r\nexport function SelectDropdownOption(selectId: string, values: string[]): void {\r\n $(selectId).selectpicker('val', values);\r\n}\r\n\r\nexport interface IFilter {\r\n triggerFilter(): void;\r\n}","// extracted by mini-css-extract-plugin","\r\n\r\nexport class UserExperienceEntry {\r\n Email: string;\r\n ExperienceJson: string;\r\n constructor() { }\r\n}\r\n\r\nexport class UserExperience {\r\n\r\n TrainingDegrees: string[];\r\n TrainingDegreesOther: string;\r\n TrainingExperience: string[];\r\n TrainingExperienceOther: string;\r\n PathogenFamilies: string[];\r\n PathogenFamiliesOther: string;\r\n OtherPathogens: string[];\r\n OtherPathogensOther: string;\r\n StudyTypes: string[];\r\n DataScience: string[];\r\n AssayDevelopment: string[];\r\n AssayDevelopmentOther: string;\r\n ContainmentLab: string[];\r\n UsRegulations: string[];\r\n MinionAnalysis: string[];\r\n RawShortReadAnalysis: string[];\r\n StatisticalSequenceAnalysis: string[];\r\n OtherExpertise: string;\r\n\r\n constructor() {}\r\n\r\n initialize(): void {\r\n\r\n $(\"#expertise-form :input\").each((index, element) => {\r\n let input: any = $(element);\r\n let inputId: string = input.attr(\"id\");\r\n //console.log(input.attr(\"id\"), input.is(\":checked\"));\r\n\r\n if (inputId && inputId.startsWith(\"text\") && input.val() != \"\") {\r\n if (inputId == \"textDegreeOther\") { this.TrainingDegreesOther = input.val(); }\r\n else if (inputId == \"textExperienceOther\") { this.TrainingExperienceOther = input.val(); }\r\n else if (inputId == \"textPathogenOther\") { this.PathogenFamiliesOther = input.val(); }\r\n else if (inputId == \"textOtherPathogenOther\") { this.OtherPathogensOther = input.val(); }\r\n else if (inputId == \"textAssayDevelopmentOther\") { this.AssayDevelopmentOther = input.val(); }\r\n else if (inputId == \"textOtherExpertise\") { this.OtherExpertise = input.val(); }\r\n }\r\n else if (input.is(\":checked\")) {\r\n\r\n if (inputId.startsWith(\"degree\")) {\r\n if (!this.TrainingDegrees) this.TrainingDegrees = [];\r\n this.TrainingDegrees.push(inputId);\r\n }\r\n else if (inputId.startsWith(\"experience\")) {\r\n if (!this.TrainingExperience) this.TrainingExperience = [];\r\n this.TrainingExperience.push(inputId);\r\n }\r\n else if (inputId.startsWith(\"pathogen\")) {\r\n if (!this.PathogenFamilies) this.PathogenFamilies = [];\r\n this.PathogenFamilies.push(inputId);\r\n }\r\n else if (inputId.startsWith(\"otherpathogen\")) {\r\n if (!this.OtherPathogens) this.OtherPathogens = [];\r\n this.OtherPathogens.push(inputId);\r\n }\r\n else if (inputId.startsWith(\"studytype\")) {\r\n if (!this.StudyTypes) this.StudyTypes = [];\r\n this.StudyTypes.push(inputId);\r\n }\r\n else if (inputId.startsWith(\"datascience\")) {\r\n if (!this.DataScience) this.DataScience = [];\r\n this.DataScience.push(inputId);\r\n }\r\n else if (inputId.startsWith(\"assaydev\")) {\r\n if (!this.AssayDevelopment) this.AssayDevelopment = [];\r\n this.AssayDevelopment.push(inputId);\r\n }\r\n else if (inputId.startsWith(\"contain\")) {\r\n if (!this.ContainmentLab) this.ContainmentLab = [];\r\n this.ContainmentLab.push(inputId);\r\n }\r\n else if (inputId.startsWith(\"regulation\")) {\r\n if (!this.UsRegulations) this.UsRegulations = [];\r\n this.UsRegulations.push(inputId);\r\n }\r\n else if (inputId.startsWith(\"minion\")) {\r\n if (!this.MinionAnalysis) this.MinionAnalysis = [];\r\n this.MinionAnalysis.push(inputId);\r\n }\r\n else if (inputId.startsWith(\"rawshort\")) {\r\n if (!this.RawShortReadAnalysis) this.RawShortReadAnalysis = [];\r\n this.RawShortReadAnalysis.push(inputId);\r\n }\r\n else if (inputId.startsWith(\"statsequence\")) {\r\n if (!this.StatisticalSequenceAnalysis) this.StatisticalSequenceAnalysis = [];\r\n this.StatisticalSequenceAnalysis.push(inputId);\r\n }\r\n\r\n //console.log(input.attr(\"id\"));\r\n }\r\n });\r\n }\r\n\r\n setupUI(): void {\r\n\r\n let textfields: string[] = [ \"TrainingDegreesOther\", \"TrainingExperienceOther\", \"PathogenFamiliesOther\", \"OtherPathogensOther\", \"AssayDevelopmentOther\", \"OtherExpertise\" ];\r\n let switches: string[] = [\"TrainingDegrees\", \"TrainingExperience\", \"PathogenFamilies\", \"OtherPathogens\", \"StudyTypes\", \"DataScience\", \"AssayDevelopment\", \"ContainmentLab\", \"UsRegulations\", \"MinionAnalysis\", \"RawShortReadAnalysis\",\"StatisticalSequenceAnalysis\" ];\r\n\r\n textfields.forEach((field: string) => {\r\n if (this[field] != undefined) {\r\n if (field == \"TrainingDegreesOther\") { $(\"#textDegreeOther\").val(this[field]); }\r\n else if (field == \"TrainingExperienceOther\") { $(\"#textExperienceOther\").val(this[field]); }\r\n else if (field == \"PathogenFamiliesOther\") { $(\"#textPathogenOther\").val(this[field]); }\r\n else if (field == \"OtherPathogensOther\") { $(\"#textOtherPathogenOther\").val(this[field]); }\r\n else if (field == \"AssayDevelopmentOther\") { $(\"#textAssayDevelopmentOther\").val(this[field]); }\r\n else if (field == \"OtherExpertise\") { $(\"#textOtherExpertise\").val(this[field]); }\r\n }\r\n });\r\n\r\n switches.forEach((field: string) => {\r\n if (this[field] != undefined) {\r\n this[field].forEach((switchId: string) => {\r\n $(\"#\" + switchId).prop(\"checked\", true);\r\n });\r\n }\r\n });\r\n }\r\n\r\n getTrainingDegreeString(): string {\r\n let output: string = \"\";\r\n if (this.TrainingDegrees == undefined && this.TrainingDegreesOther == undefined) return \"\";\r\n if (this.TrainingDegrees != undefined) {\r\n if (this.TrainingDegrees.includes(\"degree1\")) output = this.addValue(output, \"Bioinformatics Professional\");\r\n if (this.TrainingDegrees.includes(\"degree2\")) output = this.addValue(output, \"Biosafety/Biosecurity Professional\");\r\n if (this.TrainingDegrees.includes(\"degree3\")) output = this.addValue(output, \"Structural Biologist\");\r\n if (this.TrainingDegrees.includes(\"degree4\")) output = this.addValue(output, \"Data Scientist/Computational Biologist\");\r\n if (this.TrainingDegrees.includes(\"degree5\")) output = this.addValue(output, \"Ecologist\");\r\n if (this.TrainingDegrees.includes(\"degree6\")) output = this.addValue(output, \"Entomologist\");\r\n if (this.TrainingDegrees.includes(\"degree7\")) output = this.addValue(output, \"Epidemiologist\");\r\n if (this.TrainingDegrees.includes(\"degree8\")) output = this.addValue(output, \"Geneticist\");\r\n if (this.TrainingDegrees.includes(\"degree9\")) output = this.addValue(output, \"Immunologist\");\r\n if (this.TrainingDegrees.includes(\"degree10\")) output = this.addValue(output, \"Legal/Agreements/Intellectual Property Professional\");\r\n if (this.TrainingDegrees.includes(\"degree11\")) output = this.addValue(output, \"Medical Doctor\");\r\n if (this.TrainingDegrees.includes(\"degree12\")) output = this.addValue(output, \"Microbiologist\");\r\n if (this.TrainingDegrees.includes(\"degree13\")) output = this.addValue(output, \"Nurse\");\r\n if (this.TrainingDegrees.includes(\"degree14\")) output = this.addValue(output, \"Public Health Professional\");\r\n if (this.TrainingDegrees.includes(\"degree15\")) output = this.addValue(output, \"Statistical Geneticist\");\r\n if (this.TrainingDegrees.includes(\"degree16\")) output = this.addValue(output, \"Statistician\");\r\n if (this.TrainingDegrees.includes(\"degree17\")) output = this.addValue(output, \"Veterinarian\");\r\n if (this.TrainingDegrees.includes(\"degree18\")) output = this.addValue(output, \"Virologist\");\r\n }\r\n if (this.TrainingDegreesOther != undefined && this.TrainingDegreesOther.length > 0) output = this.addValue(output, this.TrainingDegreesOther);\r\n return output;\r\n }\r\n\r\n getTrainingExperienceString(): string {\r\n let output: string = \"\";\r\n if (this.TrainingExperience == undefined && this.TrainingExperienceOther == undefined) return \"\";\r\n if (this.TrainingExperience != undefined) {\r\n if (this.TrainingExperience.includes(\"experience1\")) output = this.addValue(output, \"Administrator or Project Director\");\r\n if (this.TrainingExperience.includes(\"experience2\")) output = this.addValue(output, \"Data Manager\");\r\n if (this.TrainingExperience.includes(\"experience3\")) output = this.addValue(output, \"Project/Program Manager\");\r\n if (this.TrainingExperience.includes(\"experience4\")) output = this.addValue(output, \"Quality Assurance/Control Professional\");\r\n if (this.TrainingExperience.includes(\"experience5\")) output = this.addValue(output, \"Technician\");\r\n }\r\n if (this.TrainingExperienceOther != undefined && this.TrainingExperienceOther.length > 0) output = this.addValue(output, this.TrainingExperienceOther);\r\n return output;\r\n }\r\n\r\n getPathogenFamilyString(): string {\r\n let output: string = \"\";\r\n if (this.PathogenFamilies == undefined && this.PathogenFamiliesOther == undefined) return \"\";\r\n if (this.PathogenFamilies != undefined) {\r\n if (this.PathogenFamilies.includes(\"pathogen1\")) output = this.addValue(output, \"Asfarviridae\");\r\n if (this.PathogenFamilies.includes(\"pathogen2\")) output = this.addValue(output, \"Astroviridae\");\r\n if (this.PathogenFamilies.includes(\"pathogen3\")) output = this.addValue(output, \"Birnaviridae\");\r\n if (this.PathogenFamilies.includes(\"pathogen4\")) output = this.addValue(output, \"Bunyaviridae\");\r\n if (this.PathogenFamilies.includes(\"pathogen5\")) output = this.addValue(output, \"Caliciviridae\");\r\n if (this.PathogenFamilies.includes(\"pathogen6\")) output = this.addValue(output, \"Coronaviridae\");\r\n if (this.PathogenFamilies.includes(\"pathogen7\")) output = this.addValue(output, \"Filoviridae\");\r\n if (this.PathogenFamilies.includes(\"pathogen8\")) output = this.addValue(output, \"Flaviviridae\");\r\n if (this.PathogenFamilies.includes(\"pathogen9\")) output = this.addValue(output, \"Herpesviridae\");\r\n if (this.PathogenFamilies.includes(\"pathogen10\")) output = this.addValue(output, \"Matonaviridae\");\r\n if (this.PathogenFamilies.includes(\"pathogen11\")) output = this.addValue(output, \"Orthomyxoviridae\");\r\n if (this.PathogenFamilies.includes(\"pathogen12\")) output = this.addValue(output, \"Papillomaviridae\");\r\n if (this.PathogenFamilies.includes(\"pathogen13\")) output = this.addValue(output, \"Picornaviridae\");\r\n if (this.PathogenFamilies.includes(\"pathogen14\")) output = this.addValue(output, \"Paramyxoviridae\");\r\n if (this.PathogenFamilies.includes(\"pathogen15\")) output = this.addValue(output, \"Peribunyaviridae\");\r\n if (this.PathogenFamilies.includes(\"pathogen16\")) output = this.addValue(output, \"Pneumoviridae\");\r\n if (this.PathogenFamilies.includes(\"pathogen17\")) output = this.addValue(output, \"Poxviridae\");\r\n if (this.PathogenFamilies.includes(\"pathogen18\")) output = this.addValue(output, \"Polyomaviridae\");\r\n if (this.PathogenFamilies.includes(\"pathogen19\")) output = this.addValue(output, \"Reoviridae\");\r\n if (this.PathogenFamilies.includes(\"pathogen20\")) output = this.addValue(output, \"Retroviridae\");\r\n if (this.PathogenFamilies.includes(\"pathogen21\")) output = this.addValue(output, \"Rhabdoviridae\");\r\n if (this.PathogenFamilies.includes(\"pathogen22\")) output = this.addValue(output, \"Togaviridae\");\r\n }\r\n if (this.PathogenFamiliesOther != undefined && this.PathogenFamiliesOther.length > 0) output = this.addValue(output, this.PathogenFamiliesOther);\r\n return output;\r\n }\r\n\r\n getOtherPathogensString(): string {\r\n let output: string = \"\";\r\n if (this.OtherPathogens == undefined && this.OtherPathogensOther == undefined) return \"\";\r\n if (this.OtherPathogens != undefined) {\r\n if (this.OtherPathogens.includes(\"otherpathogen1\")) output = this.addValue(output, \"Bacteria\");\r\n if (this.OtherPathogens.includes(\"otherpathogen2\")) output = this.addValue(output, \"Fungi\");\r\n if (this.OtherPathogens.includes(\"otherpathogen3\")) output = this.addValue(output, \"Parasites\");\r\n if (this.OtherPathogens.includes(\"otherpathogen4\")) output = this.addValue(output, \"Protozoa\");\r\n }\r\n if (this.OtherPathogensOther != undefined && this.OtherPathogensOther.length > 0) output = this.addValue(output, this.OtherPathogensOther);\r\n return output;\r\n }\r\n\r\n getStudyTypesString(): string {\r\n let output: string = \"\";\r\n if (this.StudyTypes == undefined) return \"\";\r\n if (this.StudyTypes.includes(\"studytype1\")) output = this.addValue(output, \"Aquatic animals\");\r\n if (this.StudyTypes.includes(\"studytype2\")) output = this.addValue(output, \"Humans (behavioral studies)\");\r\n if (this.StudyTypes.includes(\"studytype3\")) output = this.addValue(output, \"Humans (clinical trials)\");\r\n if (this.StudyTypes.includes(\"studytype4\")) output = this.addValue(output, \"Humans (serosurveys)\");\r\n if (this.StudyTypes.includes(\"studytype5\")) output = this.addValue(output, \"Insects\");\r\n if (this.StudyTypes.includes(\"studytype6\")) output = this.addValue(output, \"Livestock\");\r\n if (this.StudyTypes.includes(\"studytype7\")) output = this.addValue(output, \"Wildlife\");\r\n return output;\r\n }\r\n\r\n getDataScienceString(): string {\r\n let output: string = \"\";\r\n if (this.DataScience == undefined) return \"\";\r\n if (this.DataScience.includes(\"datascience1\")) output = this.addValue(output, \"Bioinformatics\");\r\n if (this.DataScience.includes(\"datascience2\")) output = this.addValue(output, \"Biostatistics\");\r\n if (this.DataScience.includes(\"datascience3\")) output = this.addValue(output, \"Epidemiological analysis\");\r\n if (this.DataScience.includes(\"datascience4\")) output = this.addValue(output, \"Geospatial analyses\");\r\n if (this.DataScience.includes(\"datascience5\")) output = this.addValue(output, \"Genomic/Sequence analysis\");\r\n return output;\r\n }\r\n\r\n getAssayDevelopmentString(): string {\r\n let output: string = \"\";\r\n if (this.AssayDevelopment == undefined && this.AssayDevelopmentOther == undefined) return \"\";\r\n if (this.AssayDevelopment != undefined) {\r\n if (this.AssayDevelopment.includes(\"assaydev1\")) output = this.addValue(output, \"Antigen assay development and/or validation\");\r\n if (this.AssayDevelopment.includes(\"assaydev2\")) output = this.addValue(output, \"Molecular assay development and/or validation\");\r\n if (this.AssayDevelopment.includes(\"assaydev3\")) output = this.addValue(output, \"Serology assay development and/or validation\");\r\n }\r\n if (this.AssayDevelopmentOther != undefined && this.AssayDevelopmentOther.length > 0) output = this.addValue(output, this.AssayDevelopmentOther);\r\n return output;\r\n }\r\n\r\n getContainmentLabString(): string {\r\n let output: string = \"\";\r\n if (this.ContainmentLab == undefined) return \"\";\r\n if (this.ContainmentLab.includes(\"contain1\")) output = this.addValue(output, \"BSL-2\");\r\n if (this.ContainmentLab.includes(\"contain2\")) output = this.addValue(output, \"BSL-3\");\r\n if (this.ContainmentLab.includes(\"contain3\")) output = this.addValue(output, \"BSL-4\");\r\n return output;\r\n }\r\n\r\n getUsRegulationsString(): string {\r\n let output: string = \"\";\r\n if (this.UsRegulations == undefined) return \"\";\r\n if (this.UsRegulations.includes(\"regulation1\")) output = this.addValue(output, \"Select agent\");\r\n if (this.UsRegulations.includes(\"regulation2\")) output = this.addValue(output, \"Dual Use Research of Concern (DURC)\");\r\n if (this.UsRegulations.includes(\"regulation3\")) output = this.addValue(output, \"HHS P3CO Framework (potential pandemic pathogens)\");\r\n return output;\r\n }\r\n\r\n getMinionAnalysisString(): string {\r\n let output: string = \"\";\r\n if (this.MinionAnalysis == undefined) return \"\";\r\n if (this.MinionAnalysis.includes(\"minion1\")) output = this.addValue(output, \"Basics of minION QC\");\r\n if (this.MinionAnalysis.includes(\"minion2\")) output = this.addValue(output, \"Using CLC Genomics Workbench\");\r\n if (this.MinionAnalysis.includes(\"minion3\")) output = this.addValue(output, \"Using NANOPACK\");\r\n return output;\r\n }\r\n\r\n getRawShortReadAnalysisString(): string {\r\n let output: string = \"\";\r\n if (this.RawShortReadAnalysis == undefined) return \"\";\r\n if (this.RawShortReadAnalysis.includes(\"rawshort1\")) output = this.addValue(output, \"Demultiplexing, quality, and basics of short read QC\");\r\n if (this.RawShortReadAnalysis.includes(\"rawshort2\")) output = this.addValue(output, \"Read trimming, read removal, and other QC topics\");\r\n if (this.RawShortReadAnalysis.includes(\"rawshort3\")) output = this.addValue(output, \"Creating consensus sequences\");\r\n if (this.RawShortReadAnalysis.includes(\"rawshort4\")) output = this.addValue(output, \"Aligning short reads to reference sequence (e.g. BWA)\");\r\n if (this.RawShortReadAnalysis.includes(\"rawshort5\")) output = this.addValue(output, \"Variant calling (e.g., GATK, variant filtering, joint calling)\");\r\n if (this.RawShortReadAnalysis.includes(\"rawshort6\")) output = this.addValue(output, \"De novo or reference-based genome assembly\");\r\n if (this.RawShortReadAnalysis.includes(\"rawshort7\")) output = this.addValue(output, \"BLAST and taxon identification\");\r\n if (this.RawShortReadAnalysis.includes(\"rawshort8\")) output = this.addValue(output, \"Annotating variant calls (e.g., identifying ORFs, functional regions)\");\r\n if (this.RawShortReadAnalysis.includes(\"rawshort9\")) output = this.addValue(output, \"Phylogeny construction\");\r\n if (this.RawShortReadAnalysis.includes(\"rawshort10\")) output = this.addValue(output, \"PacBio long read QC, haplotype construction\");\r\n return output;\r\n }\r\n\r\n getStatisticalSequenceAnalysisString(): string {\r\n let output: string = \"\";\r\n if (this.StatisticalSequenceAnalysis == undefined) return \"\";\r\n if (this.StatisticalSequenceAnalysis.includes(\"statsequence1\")) output = this.addValue(output, \"Bulk RNAseq - differential expression (e.g., DESeq, dream, limma-voom)\");\r\n if (this.StatisticalSequenceAnalysis.includes(\"statsequence2\")) output = this.addValue(output, \"Bulk RNAseq - mapping & quantification (e.g., RSEM, STAR, HISAT2)\");\r\n if (this.StatisticalSequenceAnalysis.includes(\"statsequence3\")) output = this.addValue(output, \"Bulk RNAseq - pseudo-alignment (e.g., Salmon, Kallisto)\");\r\n if (this.StatisticalSequenceAnalysis.includes(\"statsequence4\")) output = this.addValue(output, \"Metagenomics - ribosome subunit approaches (e.g., 16S, 18S)\");\r\n if (this.StatisticalSequenceAnalysis.includes(\"statsequence5\")) output = this.addValue(output, \"Metagenomics - shotgun sequence approaches\");\r\n if (this.StatisticalSequenceAnalysis.includes(\"statsequence6\")) output = this.addValue(output, \"Metagenomics - meta-transcriptomics approaches\");\r\n if (this.StatisticalSequenceAnalysis.includes(\"statsequence7\")) output = this.addValue(output, \"Metagenomics - phylogenies & systematics\");\r\n if (this.StatisticalSequenceAnalysis.includes(\"statsequence8\")) output = this.addValue(output, \"Statistical modeling - linear/logistic mixed models for genomics analysis\");\r\n if (this.StatisticalSequenceAnalysis.includes(\"statsequence9\")) output = this.addValue(output, \"Enrichment testing - gene-based or SNP-based tests (e.g., GSEA, GO)\");\r\n if (this.StatisticalSequenceAnalysis.includes(\"statsequence10\")) output = this.addValue(output, \"Phylogenetic analysis - ML approaches\");\r\n if (this.StatisticalSequenceAnalysis.includes(\"statsequence11\")) output = this.addValue(output, \"Phylogenetic analysis - Bayesian approaches\");\r\n if (this.StatisticalSequenceAnalysis.includes(\"statsequence12\")) output = this.addValue(output, \"Phylogenetic analysis - Phylodynamics & phylogeography\");\r\n return output;\r\n }\r\n\r\n getHiddenFilter(): string {\r\n let output: string = \"\";\r\n output = this.getTrainingDegreeString() + \" \" + this.getTrainingExperienceString() + \" \" + this.getPathogenFamilyString() + \" \" + this.getOtherPathogensString() + \" \" + this.getStudyTypesString() + \" \" + this.getDataScienceString() + \" \" + this.getContainmentLabString() + \" \" + this.getUsRegulationsString() + \" \" + this.getMinionAnalysisString() + \" \" + this.getStatisticalSequenceAnalysisString() + \" \" + this.getRawShortReadAnalysisString();\r\n if (this.OtherExpertise != undefined) { output += \" \" + this.OtherExpertise; }\r\n return output;\r\n }\r\n\r\n addValue(output: string, value: string): string {\r\n if (output.length > 0) { output += \", \"; }\r\n output += value;\r\n return output;\r\n }\r\n\r\n checkOtherEntries(): void {\r\n if (this.TrainingDegreesOther != undefined) { if (this.TrainingDegrees == undefined) { this.TrainingDegrees = []; } this.TrainingDegrees.push(\"degreeOther\"); }\r\n if (this.TrainingExperienceOther != undefined) { if (this.TrainingExperience == undefined) { this.TrainingExperience = []; } this.TrainingExperience.push(\"experienceOther\"); }\r\n if (this.PathogenFamiliesOther != undefined) { if (this.PathogenFamilies == undefined) { this.PathogenFamilies = []; } this.PathogenFamilies.push(\"pathogenOther\"); }\r\n if (this.OtherPathogensOther != undefined) { if (this.OtherPathogens == undefined) { this.OtherPathogens = []; } this.OtherPathogens.push(\"otherpathogenOther\"); }\r\n if (this.AssayDevelopmentOther != undefined) { if (this.AssayDevelopment == undefined) { this.AssayDevelopment = []; } this.AssayDevelopment.push(\"assaydevOther\"); }\r\n }\r\n}","import { LabAssay } from \"./lab-assays.objects\";\r\nimport { plainToClass } from \"class-transformer\";\r\nimport { SplitAndJoin, DoArraysOverlap } from \"../../../shared/scripts/array-functions\";\r\n\r\n\r\nexport class LabAssaysPage {\r\n\r\n labAssays: LabAssay[];\r\n dataTable: any;\r\n\r\n constructor(data: any) {\r\n $(() => {\r\n\r\n this.labAssays = plainToClass(LabAssay, data);\r\n this.labAssays.map((assay: LabAssay) => {\r\n assay.initialize();\r\n return assay;\r\n });\r\n\r\n //console.log(this.labAssays);\r\n\r\n this.initializeTable();\r\n this.setAssaysFoundLabel(this.labAssays.length);\r\n });\r\n }\r\n\r\n initializeTable(): void {\r\n\r\n this.dataTable = $('#lab-assays-table').DataTable({\r\n //\"dom\": '<\"top-controls\"<\"message-section\">f>rtip',\r\n \"dom\": '<\"top-controls\"<\"reset-section\">Bf>rtip',\r\n autoWidth: false,\r\n info: false,\r\n paging: false,\r\n search: true,\r\n scrollX: false,\r\n //scrollY: '70vh',\r\n orderCellsTop: true,\r\n language:\r\n {\r\n search: \"Filter\",\r\n buttons: {\r\n copyTitle: 'Lab Assays Data Copied',\r\n copyKeys: 'Use your keyboard or menu to select the copy command'\r\n }\r\n },\r\n columns: [\r\n { className: 'details-control', orderable: false, data: null, defaultContent: '', width: '24px' }, //0\r\n { data: \"Name\", className: \"text-left font-size12 pl-0\" }, //1\r\n { data: \"GeneralApproachDisplay\", className: \"text-left font-size12\",width: '18%' }, //2\r\n { data: \"VirusesDisplay\", className: \"text-left font-size12\", width: '18%' }, //3\r\n { data: \"SpecimenSourcesDisplay\", className: \"text-left font-size12\", width: '12%' }, //4\r\n { data: \"ResearchCenter\", className: \"text-left font-size12\", width: '10%' }, //5\r\n { data: \"Site\", className: \"text-left font-size12\", width: '12%' }, //6\r\n { data: \"Region\", className: \"text-left font-size12\", width: '10%' }, //7\r\n { data: \"Viruses\", title: 'Viruses', visible: false }, //8\r\n { data: \"SpecimenSources\", title: 'SpecimenSources', visible: false }, //9\r\n { data: \"GeneralApproachFilter\", visible: false }, //10\r\n { data: \"SpecimenSourcesFilter\", visible: false }, //11\r\n { data: \"VirusesFilter\", visible: false }, //12\r\n { data: \"Purpose\", title: 'Purpose', visible: false }, //13\r\n { data: \"Source\", title: 'Source', visible: false }, //14\r\n { data: \"DevelopmentStage\", title: 'DevelopmentState', visible: false }, // 15\r\n { data: \"AdaptedOutbreak\", title: \"AdaptedToOutbreak\", visible: false }, //16\r\n { data: \"SpecimenTypes\", title: 'SpecimenTypes', visible: false }, //17\r\n { data: \"BiosafetyLevel\", title: 'BiosafetyLevel', visible: false }, //18\r\n { data: \"RequireEquipment\", title: \"RequireSpecializedEquipment\", visible: false }, //19\r\n { data: \"EquipmentDescription\", title: 'EquipmentDescription', visible: false }, //20\r\n { data: \"RequireReagents\", title: 'RequiresReagents', visible: false }, //21\r\n { data: \"ReagentSource\", title: 'ReagentSource', visible: false }, //22\r\n { data: \"ReagentsDescription\", title: 'ReagentDescription', visible: false }, //23\r\n { data: \"Repositories\", title: 'Repositories', visible: false }, //24\r\n { data: \"ProvideTraining\", title: \"CanProvideTraining\", visible: false }, //25\r\n { data: \"ExperienceNeeded\", title: \"ExperienceNeeded1to5\", visible: false }, //26\r\n { data: \"ContactName\", title: 'ContactName', visible: false }, //27\r\n { data: \"ContactEmail\", title: 'ContactEmail', visible: false }, //28\r\n { data: \"SurgeCapacity\", title: 'HasSurgeCapacity', visible: false }, //29\r\n { data: \"Diseases\", title: 'Diseases', visible: false }, //30\r\n { data: \"Families\", title: 'Families', visible: false }, //31\r\n { data: \"GeneralApproach\", title: 'GeneralApproach', visible: false }, //32\r\n //{ data: \"Publications\", visible: false }, //30\r\n ],\r\n buttons: [\r\n {\r\n extend: 'copy',\r\n text: '',\r\n titleAttr: 'Copy',\r\n charset: 'utf-8',\r\n exportOptions: {\r\n columns: [1, 2, 8, 9, 5, 6, 7, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31]\r\n },\r\n title: ''\r\n }\r\n , {\r\n extend: 'csv',\r\n text: '',\r\n titleAttr: 'CSV',\r\n charset: 'utf-8',\r\n exportOptions: {\r\n columns: [1, 2, 8, 9, 5, 6, 7, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31]\r\n }\r\n },\r\n ],\r\n data: this.labAssays,\r\n //order: [[4, 'desc'], [7, 'desc']],\r\n order: [[1, 'asc'], [5, 'asc']],\r\n initComplete: (settings, json) => {\r\n $(\"#lab-assays-table\").wrap(\"
\");\r\n },\r\n });\r\n\r\n let resetSectionDiv: string =\r\n \"
\" +\r\n \"\" +\r\n \"
\"\r\n ;\r\n $(\".reset-section\").empty().html(resetSectionDiv);\r\n $(\".reset-section\").css('display', 'inline-block');\r\n $(\".reset-section\").css('float', 'left');\r\n $(\".reset-section\").css('margin-top', '5px');\r\n\r\n //on td.details-control removed\r\n $('#lab-assays-table tbody').on('click', 'tr', (event) => {\r\n //var tr = $(event.currentTarget).closest('tr');\r\n var tr = $(event.currentTarget);\r\n var row = this.dataTable.row(tr);\r\n\r\n if (row.child.isShown()) {\r\n // This row is already open - close it\r\n row.child.hide();\r\n tr.removeClass('shown');\r\n }\r\n else {\r\n if (row.data() != undefined) {\r\n // Open this row\r\n row.child(this.createDetailRow(row.data())).show();\r\n tr.addClass('shown');\r\n }\r\n }\r\n });\r\n\r\n $('#lab-assays-table').on('search.dt', (e, settings) => {\r\n this.setAssaysFoundLabel(this.dataTable.rows({ search: 'applied' }).count());\r\n });\r\n\r\n this.initializeFilters();\r\n }\r\n \r\n initializeFilters(): void {\r\n\r\n for (let index = 2; index <= 7; ++index) { //skip details and title column\r\n\r\n let uniqueValues: string[] = [];\r\n let delimiter: string = \"\";\r\n\r\n let filterIndex: number = index; \r\n let dropdownSourceIndex: number = index;\r\n\r\n if (index == 2) { //General Approach\r\n dropdownSourceIndex = 32; filterIndex = 10; delimiter = \"|\";\r\n }\r\n else if (index == 3) { //Pathogens\r\n dropdownSourceIndex = 8; filterIndex = 12; delimiter = \"|\";\r\n }\r\n else if (index == 4) { //Species Type\r\n dropdownSourceIndex = 9; filterIndex = 11; delimiter = \"|\";\r\n }\r\n\r\n this.dataTable.column(dropdownSourceIndex).data().unique().map((data: string) => {\r\n let parts: string[] = [];\r\n if (delimiter != \"\") { parts = data.split(delimiter); }\r\n else { parts[0] = data; }\r\n\r\n parts.map((part: string) => {\r\n part = part.trim();\r\n if (part.length > 0 && !uniqueValues.includes(part)) {\r\n uniqueValues.push(part);\r\n }\r\n });\r\n });\r\n\r\n uniqueValues = uniqueValues.sort((a: string, b: string) => {\r\n return a.toLowerCase().localeCompare(b.toLowerCase());\r\n });\r\n\r\n let selectId: string = '#filter-dropdown-' + index;\r\n\r\n $(selectId).selectpicker({\r\n dropupAuto: false,\r\n selectedTextFormat: \"count\",\r\n\r\n countSelectedText: (numSelected, numTotal) => {\r\n if (numSelected == numTotal) {\r\n return \"All\";\r\n }\r\n else {\r\n return numSelected + \" Selected\";\r\n }\r\n }\r\n });\r\n\r\n uniqueValues.forEach((element: any) => {\r\n $(selectId).append(new Option(element, element, false, true));\r\n });\r\n $(selectId).selectpicker(\"refresh\");\r\n\r\n\r\n $(selectId).on('changed.bs.select', (e, clickedIndex, isSelected, previousValue) => {\r\n let values: string[] = ($(selectId).val());\r\n //console.log(\"changed\", values);\r\n\r\n let search: string = \"\";\r\n if (values.length > 0) {\r\n //if (index == 4 || index == 5 || index == 6) { //more strict match\r\n search = \"(\\\\b\" + values.join(\"\\\\b)|(\\\\b\") + \"\\\\b)\";\r\n //}\r\n //else {\r\n // search = \"^(\" + values.join(\"|\") + \")$\";\r\n //}\r\n }\r\n else { search = \"NOTHING-MATCHED-1234567890\"; }\r\n\r\n search = search.split(\"(\").join(\"\").split(\")\").join(\"\");\r\n\r\n //if (filterIndex == 2) { //general approach\r\n // filterIndex = 10;\r\n //}\r\n\r\n //search = $.fn.dataTable.util.escapeRegex(search)\r\n //search = search.split(\"[\").join(\"\\\\[\");\r\n //search = search.split(\"]\").join(\"\\\\]\");\r\n //console.log(search);\r\n\r\n this.triggerFilter();\r\n\r\n /*this.dataTable.column(filterIndex)\r\n .search(search, true, false)\r\n .draw();*/\r\n });\r\n\r\n }\r\n }\r\n\r\n createDetailRow(data: LabAssay): string {\r\n\r\n // `data` is the original data object for the row\r\n let detailRow: string = '';\r\n\r\n //detailRow += ' ' +\r\n // '' +\r\n // '' +\r\n // '';\r\n\r\n detailRow += ' ' +\r\n '' +\r\n '' +\r\n '';\r\n\r\n detailRow += ' ' +\r\n '' +\r\n '' +\r\n '';\r\n\r\n detailRow += ' ' +\r\n '' +\r\n '' +\r\n '';\r\n\r\n //detailRow += ' ' +\r\n // '' +\r\n // '' +\r\n // '';\r\n detailRow += ' ' +\r\n '' +\r\n '' +\r\n '';\r\n\r\n detailRow += ' ' +\r\n '' +\r\n '' +\r\n '';\r\n\r\n detailRow += ' ' +\r\n '' +\r\n '' +\r\n '';\r\n\r\n detailRow += ' ' +\r\n '' +\r\n '' +\r\n '';\r\n\r\n detailRow += ' ' +\r\n '' +\r\n '' +\r\n '';\r\n\r\n //detailRow += ' ' +\r\n // '' +\r\n // '' +\r\n // '';\r\n\r\n //if (data.CdcCompliant == \"Yes\") {\r\n // detailRow += ' ' +\r\n // '' +\r\n // '' +\r\n // '';\r\n //}\r\n\r\n //detailRow += ' ' +\r\n // '' +\r\n // '';\r\n\r\n detailRow += ' ' +\r\n '' +\r\n '';\r\n\r\n detailRow += ' ' +\r\n '' +\r\n '';\r\n\r\n //detailRow += ' ' +\r\n // '' +\r\n // '' +\r\n // '';\r\n //if (data.ProvideMaterial == \"Yes\") {\r\n // detailRow += ' ' +\r\n // '' +\r\n // '' +\r\n // '';\r\n //}\r\n\r\n detailRow += ' ' +\r\n '' +\r\n '' +\r\n '';\r\n //detailRow += ' ' +\r\n // '' +\r\n // '' +\r\n // '';\r\n detailRow += ' ' +\r\n '' +\r\n '' +\r\n '';\r\n //detailRow += ' ' +\r\n // '' +\r\n // '' +\r\n // '';\r\n //detailRow += ' ' +\r\n // '' +\r\n // '' +\r\n // '';\r\n detailRow += ' ' +\r\n '' +\r\n '' +\r\n '';\r\n detailRow += ' ' +\r\n '' +\r\n '' +\r\n '';\r\n detailRow += ' ' +\r\n '' +\r\n '' +\r\n '';\r\n detailRow += ' ' +\r\n '' +\r\n '';\r\n\r\n detailRow += ' ' +\r\n '' +\r\n '\";\r\n\r\n //if (data.Source == \"pubmed\") {\r\n // detailRow += '' +\r\n // '' +\r\n // '' +\r\n // '';\r\n //}\r\n //else if (data.Source == \"local\") {\r\n // detailRow += '' +\r\n // '' +\r\n // '' +\r\n // '';\r\n //}\r\n\r\n\r\n detailRow += '
Assay, Procedure or Protocol Name' + data.Name + '
Purpose' + data.Purpose + '
Assay Source' + data.Source + '
Current Assay Development Stage' + data.DevelopmentStage + '
Specific to one or multiple pathogens/agents?' + data.OneOrManyPathogens + '
Diseases' + SplitAndJoin(data.Diseases, \"|\", \", \", false) + '
Virus Families' + SplitAndJoin(data.Families, \"|\", \", \", false) + '
Adapted to Outbreak Response' + data.AdaptedOutbreak + '
Specimen Types' + data.SpecimenTypesDisplay + '
Required Biosafety Level' + data.BiosafetyLevel + '
Require compliance with US CDC Federal Select Agent Program (or equivalent)?' + data.CdcCompliant + '
Select Agent(s)' + SplitAndJoin(data.CdcAgents, \"|\", \", \", false) + '
Require specialized/atypical technical training?' + data.RequireTraining;\r\n //if (data.RequireTraining == \"Yes\") { detailRow += ' (' + data.TrainingDescription + ')'; }\r\n //detailRow += '
Require specialized major equipment/instrumentation?' + data.RequireEquipment;\r\n if (data.RequireEquipment == \"Yes\") { detailRow += ' (' + data.EquipmentDescription + ')'; }\r\n detailRow += '
Require critical specialized reagents or control/reference/standard material?' + data.RequireReagents;\r\n if (data.RequireReagents == \"Yes\") {\r\n let detailSource: string = \"\";\r\n if (data.ReagentSource != \"\") { detailSource += data.ReagentSource; }\r\n if (data.Repositories != \"\") { detailSource += ((detailSource.length > 0) ? \", \" : \"\") + data.Repositories; }\r\n detailRow += ' (' + data.ReagentsDescription + ')';\r\n }\r\n detailRow += '
Able to provide material to CREID network' + data.ProvideMaterial + '
Amount of material that can be shared' + data.HowMuchMaterial + '
Can provide training to transfer assay/procedure to other CREID laboratories' + data.ProvideTraining + '
Format of results/data report' + SplitAndJoin(data.ResultsFileFormat, \"|\", \", \", false) + '
Technical experience level needed to perform this assay, procedure, or protocol (1-Lowest to 5-Highest)' + data.ExperienceNeeded + '
Average number of samples that can be completed in 1 week' + data.AvgSamplesPerWeek + '
Max number of samples that can be completed in 1 week' + data.MaxSamplesPerWeek + '
Have surge capacity' + data.SurgeCapacity + '
Expert Contact' + data.ContactName + ' (' + data.ContactEmail + ')
Country' + data.Country + '
Protocol Document';\r\n\r\n if (data.UploadedDocument != \"\") {\r\n if (data.UploadedDocument.includes(\".xlsx?\")) {\r\n detailRow += \"Shared Document\";\r\n }\r\n else {\r\n detailRow += \"Shared Document\";\r\n }\r\n }\r\n else {\r\n detailRow += \"Not Provided\";\r\n }\r\n detailRow += '
Key Publications';\r\n if (data.PublicationsList.length > 0) {\r\n data.PublicationsList.forEach((pubId: string) => {\r\n detailRow += 'PubMed Record ';\r\n });\r\n }\r\n else {\r\n detailRow += \"Not Provided\"\r\n }\r\n detailRow += \"
PubMed Record
View Publication
';\r\n\r\n return detailRow;\r\n }\r\n \r\n //showAcronymsDialog(): void {\r\n // $('#acronyms-modal').modal('show');\r\n //}\r\n\r\n resetFilters(): void {\r\n let filterIndex: number;\r\n for (let index = 6; index >= 2; --index) { //skip details and title column\r\n\r\n $('#filter-dropdown-' + index).selectpicker('selectAll');\r\n $('#filter-dropdown-' + index).selectpicker(\"refresh\");\r\n\r\n filterIndex = index;\r\n if(index == 3) filterIndex = 12; //pathogens\r\n else if(index == 4) filterIndex = 11; //species\r\n this.dataTable.column(filterIndex).search('').draw();\r\n }\r\n this.dataTable.search('').draw();\r\n this.updateTable(this.labAssays);\r\n }\r\n\r\n setAssaysFoundLabel(count: number): void {\r\n\r\n switch (count) {\r\n case 0: $('#assays-found-count').text(\"Nothing Found\"); break;\r\n case 1: $('#assays-found-count').text(\"1 Found\"); break;\r\n default: $('#assays-found-count').text(count + \" Found\");\r\n }\r\n }\r\n\r\n showDocument(name: string, url: string): void {\r\n\r\n //console.log(name, filename);\r\n\r\n var modal = $('#view-document-modal');\r\n modal.find('#filename').html(unescape(name));\r\n\r\n modal.find('#document-iframe').attr('src', url);\r\n\r\n //console.log(data.node.original.link);\r\n\r\n modal.modal('show');\r\n\r\n }\r\n\r\n submitNewAssay(): void {\r\n\r\n window.open(\"https://forms.office.com/r/kcmUnAHEuh\", \"_blank\");\r\n\r\n }\r\n\r\n triggerFilter(): void {\r\n const allAssays = this.labAssays;\r\n\r\n // General Approach\r\n let filteredAssays = allAssays.filter(assay => DoArraysOverlap(assay.GeneralApproachFilter, $(\"#filter-dropdown-2\").val()));\r\n\r\n // Visues(es)\r\n filteredAssays = filteredAssays.filter(assay => DoArraysOverlap(assay.VirusesFilter, $(\"#filter-dropdown-3\").val()));\r\n\r\n // Species\r\n filteredAssays = filteredAssays.filter(assay => DoArraysOverlap(assay.SpeciesFilter, $(\"#filter-dropdown-4\").val()));\r\n\r\n // Research Center\r\n filteredAssays = filteredAssays.filter(assay => DoArraysOverlap([assay.ResearchCenterFilter], $(\"#filter-dropdown-5\").val()));\r\n\r\n // Site\r\n filteredAssays = filteredAssays.filter(assay => DoArraysOverlap([assay.SiteFilter], $(\"#filter-dropdown-6\").val()));\r\n\r\n // Region\r\n filteredAssays = filteredAssays.filter(assay => DoArraysOverlap([assay.RegionFilter], $(\"#filter-dropdown-7\").val()));\r\n\r\n this.updateTable(filteredAssays);\r\n }\r\n\r\n updateTable(matchingAssays: LabAssay[]): void {\r\n this.dataTable.clear();\r\n this.dataTable.rows.add(matchingAssays).draw();\r\n this.setAssaysFoundLabel(matchingAssays.length);\r\n }\r\n}","import { UserExperience } from \"../../../auth/pages/profile/scripts/expertise.objects\";\r\nimport { DoArraysOverlap } from \"../../../shared/scripts/array-functions\";\r\n\r\n\r\n\r\nexport class UserDirectoryEntity {\r\n\r\n FirstName: string;\r\n LastName: string;\r\n ProjectRole: string;\r\n Email: string;\r\n Network: string;\r\n Expertise: UserExperience;\r\n Organization: string;\r\n Country: string = \"Not Available\";\r\n Degrees: string;\r\n\r\n DisplayName: string;\r\n SortName: string;\r\n Membership: string;\r\n MembershipArray: string[];\r\n NetworkArray: string[];\r\n HiddenFilter: string = \"\";\r\n\r\n SC_Primary: boolean; SC_Secondary: boolean; SC_Observer: boolean; SC_Comms: boolean;\r\n NLead_Primary: boolean; NLead_Secondary: boolean; NLead_Observer: boolean; NLead_Comms: boolean;\r\n WGroup_Primary: boolean; WGroup_Secondary: boolean; WGroup_Observer: boolean; WGroup_Comms: boolean;\r\n DCap_Primary: boolean; DCap_Secondary: boolean; DCap_Observer: boolean; DCap_Comms: boolean;\r\n BRepo_Primary: boolean; BRepo_Secondary: boolean; BRepo_Observer: boolean; BRepo_Comms: boolean;\r\n LAssay_Primary: boolean; LAssay_Secondary: boolean; LAssay_Observer: boolean; LAssay_Comms: boolean;\r\n ORes_Primary: boolean; ORes_Secondary: boolean; ORes_Observer: boolean; ORes_Comms: boolean;\r\n CBuild_Primary: boolean; CBuild_Secondary: boolean; CBuild_Observer: boolean; CBuild_Comms: boolean;\r\n RAD_Primary: boolean; RAD_Secondary: boolean; RAD_Observer: boolean; RAD_Comms: boolean;\r\n PM_Primary: boolean; PM_Secondary: boolean; PM_Observer: boolean; PM_Comms: boolean;\r\n PilotRP_Primary: boolean; PilotRP_Secondary: boolean; PilotRP_Observer: boolean; PilotRP_Comms: boolean;\r\n\r\n NetworkCompound: boolean = false;\r\n\r\n constructor() { }\r\n\r\n initialize(): void {\r\n if (this.Degrees == undefined) this.Degrees = \"\";\r\n\r\n this.DisplayName = this.FirstName + \" \" + this.LastName;\r\n if (this.Degrees.length > 0) { this.DisplayName += (\", \" + this.Degrees); }\r\n this.SortName = this.LastName + \" \" + this.FirstName;\r\n\r\n this.NetworkArray = this.Network.split(\";\");\r\n this.Network = this.Network.replace(\";\", \";
\");\r\n this.NetworkCompound = this.Network.includes(\";\");\r\n }\r\n\r\n setMembershipForOverallDirectory(): void {\r\n\r\n this.Membership = \"\";\r\n this.MembershipArray = [];\r\n\r\n if (this.SC_Primary == true || this.SC_Secondary == true) { this.Membership += \"Steering-Committee-(Members) | \"; this.MembershipArray.push(\"Steering Committee (Members)\"); }\r\n if (this.SC_Comms == true || this.SC_Observer) { this.Membership += \"Steering-Committee-(Others) | \"; this.MembershipArray.push(\"Steering Committee (Others)\"); }\r\n\r\n if (this.NLead_Primary == true || this.NLead_Secondary == true || this.NLead_Comms == true || this.NLead_Observer == true) { this.Membership += \"Network-Leadership | \"; this.MembershipArray.push(\"Network Leadership\"); }\r\n\r\n if (this.WGroup_Primary == true || this.WGroup_Secondary == true) { this.Membership += \"Working-Group-Facilitator-(Members) | \"; this.MembershipArray.push(\"Working Group Facilitator (Members)\"); }\r\n if (this.WGroup_Comms == true || this.WGroup_Observer) { this.Membership += \"Working-Group-Facilitator-(Others) | \"; this.MembershipArray.push(\"Working Group Facilitator (Others)\"); }\r\n\r\n if (this.DCap_Primary == true || this.DCap_Secondary == true) { this.Membership += \"Data-Capture-CoP-(Members) | \"; this.MembershipArray.push(\"Data Capture CoP (Members)\"); }\r\n if (this.DCap_Comms == true || this.DCap_Observer) { this.Membership += \"Data-Capture-CoP-(Others) | \"; this.MembershipArray.push(\"Data Capture CoP (Others)\"); }\r\n\r\n if (this.BRepo_Primary == true || this.BRepo_Secondary == true) { this.Membership += \"Biorepository-CoP-(Members) | \"; this.MembershipArray.push(\"Biorepository CoP (Members)\"); }\r\n if (this.BRepo_Comms == true || this.BRepo_Observer) { this.Membership += \"Biorepository-CoP-(Others) | \"; this.MembershipArray.push(\"Biorepository CoP (Others)\"); }\r\n\r\n if (this.LAssay_Primary == true || this.LAssay_Secondary == true) { this.Membership += \"Lab-Assays-CoP-(Members) | \"; this.MembershipArray.push(\"Lab Assays CoP (Members)\"); }\r\n if (this.LAssay_Comms == true || this.LAssay_Observer) { this.Membership += \"Lab-Assays-CoP-(Others) | \"; this.MembershipArray.push(\"Lab Assays CoP (Others)\"); }\r\n\r\n if (this.ORes_Primary == true || this.ORes_Secondary == true) { this.Membership += \"Outbreak-Research-Response-WG-(Members) | \"; this.MembershipArray.push(\"Outbreak Research Response WG (Members)\"); }\r\n if (this.ORes_Comms == true || this.ORes_Observer) { this.Membership += \"Outbreak-Research-Response-WG-(Others) | \"; this.MembershipArray.push(\"Outbreak Research Response WG (Others)\"); }\r\n\r\n if (this.CBuild_Primary == true || this.CBuild_Secondary == true) { this.Membership += \"Capacity-Building-WG-(Members) | \"; this.MembershipArray.push(\"Capacity Building WG (Members)\"); }\r\n if (this.CBuild_Comms == true || this.CBuild_Observer) { this.Membership += \"Capacity-Building-WG-(Others) | \"; this.MembershipArray.push(\"Capacity Building WG (Others)\"); }\r\n\r\n if (this.RAD_Primary == true || this.RAD_Secondary == true) { this.Membership += \"RAD-CoP-(Members) | \"; this.MembershipArray.push(\"RAD CoP (Members)\"); }\r\n if (this.RAD_Comms == true || this.RAD_Observer) { this.Membership += \"RAD-CoP-(Others) | \"; this.MembershipArray.push(\"RAD CoP (Others)\"); }\r\n\r\n if (this.PM_Primary == true || this.PM_Secondary == true) { this.Membership += \"Project-Management-CoP-(Members) | \"; this.MembershipArray.push(\"Project Management CoP (Members)\"); }\r\n if (this.PM_Comms == true || this.PM_Observer) { this.Membership += \"Project-Management-CoP-(Others) | \"; this.MembershipArray.push(\"Project Management CoP (Others)\"); }\r\n\r\n if (this.PilotRP_Primary == true || this.PilotRP_Secondary == true) { this.Membership += \"Pilot-Research-Program-(Members) | \"; this.MembershipArray.push(\"Pilot Research Program (Members)\"); }\r\n if (this.PilotRP_Comms == true || this.PilotRP_Observer) { this.Membership += \"Pilot-Research-Program-(Others) | \"; this.MembershipArray.push(\"Pilot Research Program (Others)\"); }\r\n }\r\n\r\n setMembershipForGroupDirectory(primaryId: string, secondaryId: string, observerId: string, communicationsId: string): void {\r\n\r\n this.Membership = \"\";\r\n\r\n if (this[primaryId] == true) this.Membership += \"Primary-Members \";\r\n if (this[secondaryId] == true) this.Membership += \"Secondary-Members \";\r\n if (this[observerId] == true) this.Membership += \"Observers \";\r\n if (this[communicationsId] == true) this.Membership += \"Communications\";\r\n }\r\n\r\n matchesFilter(networkList: any, workingGroup: any, countries: any, trainedAs: any, workAs: any, pathogens: any, otherPathogens: any, animalTypes: any, dataScience: any,\r\n minion: any, rawShort: any, sequenceAnalysis: any, assayDev: any, containment: any, regulations: any): boolean {\r\n\r\n //console.log(trainedAs, this.Expertise?.TrainingDegrees);\r\n\r\n if (!DoArraysOverlap(networkList, this.NetworkArray)) { return false; }\r\n if (!countries.includes(this.Country)) { return false; }\r\n if (workingGroup.length > 0 && !DoArraysOverlap(workingGroup, this.MembershipArray)) { return false; }\r\n if (trainedAs.length > 0 && !DoArraysOverlap(trainedAs, this.Expertise?.TrainingDegrees)) { return false; }\r\n if (workAs.length > 0 && !DoArraysOverlap(workAs, this.Expertise?.TrainingExperience)) { return false; }\r\n if (pathogens.length > 0 && !DoArraysOverlap(pathogens, this.Expertise?.PathogenFamilies)) { return false; }\r\n if (otherPathogens.length > 0 && !DoArraysOverlap(otherPathogens, this.Expertise?.OtherPathogens)) { return false; }\r\n if (animalTypes.length > 0 && !DoArraysOverlap(animalTypes, this.Expertise?.StudyTypes)) { return false; }\r\n if (dataScience.length > 0 && !DoArraysOverlap(dataScience, this.Expertise?.DataScience)) { return false; }\r\n if (minion.length > 0 && !DoArraysOverlap(minion, this.Expertise?.MinionAnalysis)) { return false; }\r\n if (rawShort.length > 0 && !DoArraysOverlap(rawShort, this.Expertise?.RawShortReadAnalysis)) { return false; }\r\n if (sequenceAnalysis.length > 0 && !DoArraysOverlap(sequenceAnalysis, this.Expertise?.StatisticalSequenceAnalysis)) { return false; }\r\n if (assayDev.length > 0 && !DoArraysOverlap(assayDev, this.Expertise?.AssayDevelopment)) { return false; }\r\n if (containment.length > 0 && !DoArraysOverlap(containment, this.Expertise?.ContainmentLab)) { return false; }\r\n if (regulations.length > 0 && !DoArraysOverlap(regulations, this.Expertise?.UsRegulations)) { return false; }\r\n \r\n return true;\r\n }\r\n}","import { plainToClass } from \"class-transformer\";\r\nimport { UserDirectoryEntity } from \"./directory.objects\";\r\nimport { UserExperience, UserExperienceEntry } from \"../../../auth/pages/profile/scripts/expertise.objects\";\r\nimport { Unique, Split } from \"../../../shared/scripts/array-functions\";\r\nimport { ExpertiseArea } from \"../../inventory/expertise/expertise.objects\";\r\n\r\n\r\nexport class DirectoryPage {\r\n\r\n users: UserDirectoryEntity[];\r\n visibleUserEmails: string;\r\n dataTable: any;\r\n\r\n constructor(userData: any, userExpertiseData: any, expertiseAreasData: any) {\r\n $(() => {\r\n\r\n this.users = plainToClass(UserDirectoryEntity, userData);\r\n\r\n let expertiseList: UserExperienceEntry[] = plainToClass(UserExperienceEntry, userExpertiseData);\r\n expertiseList.map((entry: UserExperienceEntry) => {\r\n let user: UserDirectoryEntity = this.users.find((user: UserDirectoryEntity) => user.Email == entry.Email);\r\n if (user != undefined) {\r\n user.Expertise = plainToClass(UserExperience, JSON.parse(entry.ExperienceJson));\r\n user.HiddenFilter = user.Expertise.getHiddenFilter();\r\n if (user.Expertise != undefined) { user.Expertise.checkOtherEntries(); }\r\n //console.log(user);\r\n }\r\n });\r\n\r\n this.users = this.users.map((user: UserDirectoryEntity) => {\r\n user.initialize();\r\n user.setMembershipForOverallDirectory();\r\n return user;\r\n })\r\n\r\n let expertiseAreas: ExpertiseArea[] = plainToClass(ExpertiseArea, expertiseAreasData);\r\n this.initializeFilters(expertiseAreas);\r\n\r\n this.setupTabWatcher();\r\n //console.log(this.users);\r\n\r\n this.initializeTable();\r\n });\r\n }\r\n\r\n initializeFilters(expertiseAreas: ExpertiseArea[]): void {\r\n\r\n let values: string[] = [];\r\n this.users.forEach((user: UserDirectoryEntity) => { values.push(...Split(user.Network, \";
\")); });\r\n this.initializeDropdown('#membership-member-dropdown', Unique(values, true, []));\r\n this.initializeDropdown('#membership-wg-dropdown', Unique([\"Network Leadership\", \"Steering Committee (Members)\", \"Steering Committee (Others)\", \"Working Group Facilitator (Members)\", \"Working Group Facilitator (Others)\", \"Biorepository CoP (Members)\", \"Biorepository CoP (Others)\", \"Capacity Building WG (Members)\", \"Capacity Building WG (Others)\", \"Data Capture CoP (Members)\", \"Data Capture CoP (Others)\", \"Lab Assays CoP (Members)\", \"Lab Assays CoP (Others)\", \"Outbreak Research Response WG (Members)\", \"Outbreak Research Response WG (Others)\", \"Pilot Research Program (Members)\", \"Pilot Research Program (Others)\", \"Project Management CoP (Members)\", \"Project Management CoP (Others)\" ,\"RAD CoP (Members)\", \"RAD CoP (Others)\"], false), undefined, false);\r\n\r\n this.initializeDropdown('#country-dropdown', Unique(this.users.map((user: UserDirectoryEntity) => user.Country), true, [\"Not Available\"]));\r\n\r\n this.initializeDropdown('#expertise-trainedas-dropdown', undefined, expertiseAreas.filter((area: ExpertiseArea) => area.Id.startsWith(\"degree\")), false);\r\n this.initializeDropdown('#expertise-workas-dropdown', undefined, expertiseAreas.filter((area: ExpertiseArea) => area.Id.startsWith(\"experience\")), false);\r\n this.initializeDropdown('#expertise-pathogen-dropdown', undefined, expertiseAreas.filter((area: ExpertiseArea) => area.Id.startsWith(\"pathogen\")), false);\r\n this.initializeDropdown('#expertise-otherpathogens-dropdown', undefined, expertiseAreas.filter((area: ExpertiseArea) => area.Id.startsWith(\"otherpathogen\")), false);\r\n this.initializeDropdown('#expertise-animaltypes-dropdown', undefined, expertiseAreas.filter((area: ExpertiseArea) => area.Id.startsWith(\"studytype\")), false);\r\n this.initializeDropdown('#expertise-datascience-dropdown', undefined, expertiseAreas.filter((area: ExpertiseArea) => area.Id.startsWith(\"datascience\")), false);\r\n this.initializeDropdown('#expertise-minion-dropdown', undefined, expertiseAreas.filter((area: ExpertiseArea) => area.Id.startsWith(\"minion\")), false);\r\n this.initializeDropdown('#expertise-rawshort-dropdown', undefined, expertiseAreas.filter((area: ExpertiseArea) => area.Id.startsWith(\"rawshort\")), false);\r\n this.initializeDropdown('#expertise-sequenceanalysis-dropdown', undefined, expertiseAreas.filter((area: ExpertiseArea) => area.Id.startsWith(\"statsequence\")), false);\r\n this.initializeDropdown('#expertise-assay-dropdown', undefined, expertiseAreas.filter((area: ExpertiseArea) => area.Id.startsWith(\"assaydev\")), false);\r\n this.initializeDropdown('#expertise-containment-dropdown', undefined, expertiseAreas.filter((area: ExpertiseArea) => area.Id.startsWith(\"contain\")), false);\r\n this.initializeDropdown('#expertise-regulations-dropdown', undefined, expertiseAreas.filter((area: ExpertiseArea) => area.Id.startsWith(\"regulation\")), false);\r\n\r\n }\r\n\r\n initializeDropdown(selectId: string, values: string[], compoundValues: ExpertiseArea[] = undefined, selected: boolean = true): void {\r\n $(selectId).selectpicker({\r\n dropupAuto: false,\r\n selectedTextFormat: \"count\",\r\n\r\n countSelectedText: (numSelected, numTotal) => {\r\n if (numSelected == numTotal) {\r\n return \"All\";\r\n }\r\n else {\r\n return numSelected + \" Selected\";\r\n }\r\n }\r\n });\r\n\r\n if (compoundValues == undefined) {\r\n values.forEach((element: any) => {\r\n $(selectId).append(new Option(element, element, false, selected));\r\n });\r\n }\r\n else {\r\n compoundValues.forEach((element: ExpertiseArea) => {\r\n $(selectId).append(new Option(element.Expertise, element.Id, false, selected));\r\n });\r\n }\r\n\r\n $(selectId).selectpicker(\"refresh\");\r\n\r\n $(selectId).on('changed.bs.select', (e, clickedIndex, isSelected, previousValue) => {\r\n this.filterUserDirectory();\r\n });\r\n }\r\n\r\n setupTabWatcher(): void {\r\n $('a[data-toggle=\"tab\"]').on('shown.bs.tab', (e) => {\r\n if (e.currentTarget.id == \"membership-tab\") {\r\n ['#membership-member-dropdown', '#membership-wg-dropdown'].forEach((id: string) => $(id).selectpicker(\"refresh\"));\r\n }\r\n else if (e.currentTarget.id == \"expertise-general-tab\") {\r\n ['#expertise-trainedas-dropdown', '#expertise-workas-dropdown', '#expertise-pathogen-dropdown', '#expertise-otherpathogens-dropdown', '#expertise-animaltypes-dropdown'].forEach((id: string) => $(id).selectpicker(\"refresh\"));\r\n }\r\n else if (e.currentTarget.id == \"expertise-data-lab-tab\") {\r\n ['#expertise-datascience-dropdown', '#expertise-minion-dropdown', '#expertise-rawshort-dropdown', '#expertise-sequenceanalysis-dropdown', '#expertise-assay-dropdown', '#expertise-containment-dropdown', '#expertise-regulations-dropdown'].forEach((id: string) => $(id).selectpicker(\"refresh\"));\r\n }\r\n });\r\n }\r\n\r\n initializeTable(): void {\r\n let table = $('#directory-table').DataTable({\r\n //\"dom\": '<\"top-controls\"<\"filtering-section\"><\"search-section\"<\"search-bar\"fB>>>rtip',\r\n \"dom\": '<\"top-controls\"<\"search-section\"<\"search-bar\"fB>>>rtip',\r\n autoWidth: true,\r\n info: false,\r\n paging: false,\r\n search: true,\r\n scrollX: false,\r\n orderCellsTop: true,\r\n columns: [\r\n { className: 'details-control', orderable: false, data: null, defaultContent: '', width: '12px' },\r\n { data: \"DisplayName\", className: \"text-left pl-0\" },\r\n { data: \"Network\", className: \"text-left\", width: '15%' },\r\n { data: \"ProjectRole\", className: \"text-left\", width: '15%' },\r\n { data: \"Organization\", className: \"text-left\", width: '15%' },\r\n { data: \"Email\", className: \"text-left\", width: '15%' },\r\n { data: \"Membership\", visible: false },\r\n { data: \"HiddenFilter\", visible: false },\r\n ], \r\n columnDefs: [{ //to sort by last name first\r\n targets: 1,\r\n data: \"DisplayName\",\r\n render: function (data, type, full, meta) {\r\n if (type == 'sort') {\r\n data = full.SortName;\r\n }\r\n return data;\r\n }\r\n }],\r\n buttons: [\r\n {\r\n extend: 'csv',\r\n text: '',\r\n titleAttr: 'CSV',\r\n charset: 'utf-8',\r\n //exportOptions: {\r\n // columns: [1, 2, 3, 4]\r\n //}\r\n },\r\n {\r\n text: '',\r\n titleAttr: 'Send Email',\r\n action: (e, dt, node, config) => {\r\n //console.log(this.visibleUserEmails);\r\n //window.location.href = \"mailto:\" + this.visibleUserEmails;\r\n\r\n //const temp = document.createElement(\"input\");\r\n //temp.setAttribute(\"value\", this.visibleUserEmails);\r\n //document.body.appendChild(temp);\r\n //temp.select();\r\n //document.execCommand(\"copy\");\r\n //document.body.removeChild(temp);\r\n\r\n navigator.clipboard.writeText(this.visibleUserEmails).then(\r\n () => {\r\n $('#directory-email-modal').modal('show');\r\n $('#modal-email-list').text(this.visibleUserEmails);\r\n });\r\n\r\n\r\n }\r\n }\r\n ],\r\n createdRow: (row, data: UserDirectoryEntity, index) => {\r\n if (data.Expertise == undefined) {\r\n var td = $(row).find(\"td:first\");\r\n td.removeClass('details-control');\r\n }\r\n },\r\n data: this.users\r\n\r\n });\r\n this.dataTable = table;\r\n\r\n $(\".top-controls\").addClass('row');\r\n\r\n $(\".search-section\").addClass('col-12 mt-3');\r\n $(\".search-bar\").addClass('d-flex justify-content-end vertical-align-top align-content-start');\r\n //$(\".search-section\").append('
')\r\n\r\n $('#directory-table').on('search.dt', (e, settings) => {\r\n this.createEmailList(this.dataTable.rows({ search: 'applied' }).data());\r\n this.setPeopleFoundLabel(this.dataTable.rows({ search: 'applied' }).count());\r\n });\r\n this.createEmailList(this.users);\r\n this.setPeopleFoundLabel(this.users.length);\r\n\r\n //on td.details-control click\r\n $('#directory-table tbody').on('click', 'tr', (event) => {\r\n //var tr = $(event.currentTarget).closest('tr');\r\n var tr = $(event.currentTarget);\r\n var row = this.dataTable.row(tr);\r\n let data: UserDirectoryEntity = row.data();\r\n\r\n if (data.Expertise != undefined) {\r\n if (row.child.isShown()) {\r\n // This row is already open - close it\r\n row.child.hide();\r\n tr.removeClass('shown');\r\n }\r\n else {\r\n // Open this row\r\n row.child(this.createDetailRow(row.data())).show();\r\n tr.addClass('shown');\r\n }\r\n }\r\n });\r\n }\r\n\r\n updateTable(matchingUsers: UserDirectoryEntity[]): void {\r\n\r\n this.dataTable.clear();\r\n this.dataTable.rows.add(matchingUsers).draw();\r\n this.setPeopleFoundLabel(matchingUsers.length);\r\n this.createEmailList(matchingUsers);\r\n }\r\n\r\n filterUserDirectory(): void {\r\n\r\n let matchingUsers: UserDirectoryEntity[] = [];\r\n\r\n let userMatches: boolean;\r\n this.users.forEach((user: UserDirectoryEntity) => {\r\n\r\n userMatches = true; //must match all filters\r\n\r\n if (!user.matchesFilter(this.getSelectedDropdownValues('#membership-member-dropdown'), this.getSelectedDropdownValues('#membership-wg-dropdown'), this.getSelectedDropdownValues('#country-dropdown'),\r\n this.getSelectedDropdownValues('#expertise-trainedas-dropdown'), this.getSelectedDropdownValues('#expertise-workas-dropdown'),\r\n this.getSelectedDropdownValues('#expertise-pathogen-dropdown'), this.getSelectedDropdownValues('#expertise-otherpathogens-dropdown'),\r\n this.getSelectedDropdownValues('#expertise-animaltypes-dropdown'), this.getSelectedDropdownValues('#expertise-datascience-dropdown'),\r\n this.getSelectedDropdownValues('#expertise-minion-dropdown'), this.getSelectedDropdownValues('#expertise-rawshort-dropdown'),\r\n this.getSelectedDropdownValues('#expertise-sequenceanalysis-dropdown'), this.getSelectedDropdownValues('#expertise-assay-dropdown'),\r\n this.getSelectedDropdownValues('#expertise-containment-dropdown'), this.getSelectedDropdownValues('#expertise-regulations-dropdown'))) {\r\n userMatches = false;\r\n }\r\n\r\n if (userMatches) { matchingUsers.push(user); }\r\n });\r\n\r\n this.updateTable(matchingUsers);\r\n }\r\n\r\n getSelectedDropdownValues(selectId: string): any {\r\n //return $(selectId).selectpicker('val');\r\n return $(selectId).val();\r\n }\r\n\r\n setPeopleFoundLabel(count: number): void {\r\n\r\n switch (count) {\r\n case 0: $('#people-found-count').text(\"Nobody Found\"); break;\r\n case 1: $('#people-found-count').text(\"1 Person Found\"); break;\r\n default: $('#people-found-count').text(count + \" People Found\");\r\n }\r\n }\r\n\r\n createEmailList(matchingUsers: UserDirectoryEntity[]): void {\r\n this.visibleUserEmails = matchingUsers.map((user: UserDirectoryEntity) => user.Email).join(\"; \");\r\n //console.log(this.visibleUserEmails);\r\n }\r\n\r\n showHelpModal(): void {\r\n $('#directory-help-modal').modal('show');\r\n }\r\n\r\n createDetailRow(data: UserDirectoryEntity): string {\r\n // `data` is the original data object for the row\r\n let detailRow: string = '';\r\n\r\n let value: string = data.Expertise.getTrainingDegreeString();\r\n if (value.length > 0) {\r\n detailRow += ' ' +\r\n '' +\r\n '' +\r\n '';\r\n }\r\n\r\n value = data.Expertise.getTrainingExperienceString();\r\n if (value.length > 0) {\r\n detailRow += ' ' +\r\n '' +\r\n '' +\r\n '';\r\n }\r\n\r\n value = data.Expertise.getPathogenFamilyString();\r\n if (value.length > 0) {\r\n detailRow += ' ' +\r\n '' +\r\n '' +\r\n '';\r\n }\r\n\r\n value = data.Expertise.getOtherPathogensString();\r\n if (value.length > 0) {\r\n detailRow += ' ' +\r\n '' +\r\n '' +\r\n '';\r\n }\r\n\r\n value = data.Expertise.getStudyTypesString();\r\n if (value.length > 0) {\r\n detailRow += ' ' +\r\n '' +\r\n '' +\r\n '';\r\n }\r\n\r\n value = data.Expertise.getDataScienceString();\r\n if (value.length > 0) {\r\n detailRow += ' ' +\r\n '' +\r\n '' +\r\n '';\r\n }\r\n\r\n value = data.Expertise.getAssayDevelopmentString();\r\n if (value.length > 0) {\r\n detailRow += ' ' +\r\n '' +\r\n '' +\r\n '';\r\n }\r\n\r\n value = data.Expertise.getContainmentLabString();\r\n if (value.length > 0) {\r\n detailRow += ' ' +\r\n '' +\r\n '' +\r\n '';\r\n }\r\n\r\n value = data.Expertise.getUsRegulationsString();\r\n if (value.length > 0) {\r\n detailRow += ' ' +\r\n '' +\r\n '' +\r\n '';\r\n }\r\n\r\n value = data.Expertise.getMinionAnalysisString();\r\n if (value.length > 0) {\r\n detailRow += ' ' +\r\n '' +\r\n '' +\r\n '';\r\n }\r\n\r\n value = data.Expertise.getRawShortReadAnalysisString();\r\n if (value.length > 0) {\r\n detailRow += ' ' +\r\n '' +\r\n '' +\r\n '';\r\n }\r\n\r\n value = data.Expertise.getStatisticalSequenceAnalysisString();\r\n if (value.length > 0) {\r\n detailRow += ' ' +\r\n '' +\r\n '' +\r\n '';\r\n }\r\n\r\n if (data.Expertise.OtherExpertise != undefined) {\r\n detailRow += ' ' +\r\n '' +\r\n '' +\r\n '';\r\n }\r\n\r\n detailRow += '
Trained to work as a(n):' + value + '
2 or more years experience as a(n):' + value + '
Expertise with pathogen families:' + value + '
Expertise with other pathogens:' + value + '
Expertise designing/conducting studies involving:' + value + '
Expertise in data science:' + value + '
Expertise with assay development:' + value + '
Expertise with containment laboratory work:' + value + '
Expertise with US Regulations:' + value + '
Expertise with minion/gridION analysis:' + value + '
Expertise with raw short read sequencing analysis:' + value + '
Expertise with statistical methods for sequence analysis:' + value + '
Other Expertise:' + data.Expertise.OtherExpertise + '
';\r\n\r\n return detailRow;\r\n }\r\n\r\n resetFilters(): void {\r\n\r\n $('#membership-member-dropdown').selectpicker('selectAll');\r\n $('#membership-member-dropdown').selectpicker('refresh');\r\n\r\n let deselectAllControls: string[] = ['#membership-wg-dropdown', '#expertise-trainedas-dropdown', '#expertise-workas-dropdown', '#expertise-pathogen-dropdown', '#expertise-otherpathogens-dropdown', '#expertise-animaltypes-dropdown', '#expertise-datascience-dropdown', '#expertise-minion-dropdown', '#expertise-rawshort-dropdown', '#expertise-sequenceanalysis-dropdown', '#expertise-assay-dropdown', '#expertise-containment-dropdown', '#expertise-regulations-dropdown'];\r\n deselectAllControls.forEach((dropdownId: string) => {\r\n $(dropdownId).selectpicker('deselectAll');\r\n $(dropdownId).selectpicker('refresh');\r\n });\r\n\r\n this.dataTable.search('').draw();\r\n\r\n this.updateTable(this.users);\r\n }\r\n\r\n}\r\n\r\n","// extracted by mini-css-extract-plugin","import { EventEntry } from \"./events.objects\";\r\nimport { plainToClass } from \"class-transformer\";\r\n\r\n\r\nexport class EventsPage {\r\n\r\n events: EventEntry[];\r\n dataTable: any;\r\n\r\n constructor(data: any) {\r\n $(() => {\r\n\r\n this.events = plainToClass(EventEntry, data);\r\n this.events.sort((a: EventEntry, b: EventEntry) => a.SortOrder < b.SortOrder ? 1 : -1);\r\n this.events.map((data: EventEntry) => {\r\n data.initialize();\r\n return data;\r\n });\r\n\r\n //console.log(this.events);\r\n\r\n this.initializeTable();\r\n this.setEventsFoundLabel(this.events.length);\r\n });\r\n }\r\n\r\n initializeTable(): void {\r\n this.dataTable = $('#events-table').DataTable({\r\n //\"dom\": '<\"top-controls\"<\"message-section\">f>rtip',\r\n \"dom\": '<\"top-controls\"<\"reset-section\">Bf>rtip',\r\n autoWidth: false,\r\n info: false,\r\n paging: false,\r\n search: true,\r\n scrollX: false,\r\n //scrollY: '70vh',\r\n orderCellsTop: true,\r\n language:\r\n {\r\n search: \"Filter\",\r\n buttons: {\r\n copyTitle: 'Lab Assays Data Copied',\r\n copyKeys: 'Use your keyboard or menu to select the copy command'\r\n }\r\n },\r\n columns: [\r\n { className: 'details-control', orderable: false, data: null, defaultContent: '', width: '24px' }, //0\r\n { data: \"Title\", className: \"text-left font-size12 pl-0\" }, //1\r\n { data: \"EventDate\", className: \"text-left font-size12\", width: '12%' }, //2\r\n { data: \"EventType\", className: \"text-left font-size12\", width: '5%' }, //3\r\n { data: \"Language\", className: \"text-left font-size12\", width: '5%' }, //4\r\n { data: \"Sponsor\", className: \"text-left font-size12\", width: '15%' }, //5\r\n { data: \"AccessInfoContent\", className: \"text-left font-size12\", width: '8%' }, //6\r\n { data: \"SponsorFilter\", visible: false }, //7\r\n ],\r\n buttons: [],\r\n data: this.events,\r\n initComplete: (settings, json) => {\r\n $(\"#events-table\").wrap(\"
\");\r\n },\r\n });\r\n\r\n //on td.details-control removed\r\n $('#events-table tbody').on('click', 'tr', (event) => {\r\n //var tr = $(event.currentTarget).closest('tr');\r\n var tr = $(event.currentTarget);\r\n var row = this.dataTable.row(tr);\r\n\r\n if (row.child.isShown()) {\r\n // This row is already open - close it\r\n row.child.hide();\r\n tr.removeClass('shown');\r\n }\r\n else {\r\n if (row.data() != undefined) {\r\n // Open this row\r\n row.child(this.createDetailRow(row.data())).show();\r\n tr.addClass('shown');\r\n }\r\n }\r\n });\r\n\r\n $('#events-table').on('search.dt', (e, settings) => {\r\n this.setEventsFoundLabel(this.dataTable.rows({ search: 'applied' }).count());\r\n });\r\n\r\n this.initializeFilters();\r\n }\r\n\r\n initializeFilters(): void {\r\n\r\n for (let index = 3; index <= 5; ++index) { \r\n\r\n let uniqueValues: string[] = [];\r\n let delimiter: string = \"\";\r\n\r\n let filterIndex: number = index;\r\n let dropdownSourceIndex: number = index;\r\n\r\n if (index == 5) filterIndex = 7;\r\n\r\n this.dataTable.column(dropdownSourceIndex).data().unique().map((data: string) => {\r\n let parts: string[] = [];\r\n if (delimiter != \"\") { parts = data.split(delimiter); }\r\n else { parts[0] = data; }\r\n\r\n parts.map((part: string) => {\r\n part = part.trim();\r\n if (part.length > 0 && !uniqueValues.includes(part)) {\r\n uniqueValues.push(part);\r\n }\r\n });\r\n });\r\n\r\n uniqueValues = uniqueValues.sort((a: string, b: string) => {\r\n return a.toLowerCase().localeCompare(b.toLowerCase());\r\n });\r\n\r\n let selectId: string = '#filter-dropdown-' + index;\r\n\r\n $(selectId).selectpicker({\r\n dropupAuto: false,\r\n selectedTextFormat: \"count\",\r\n\r\n countSelectedText: (numSelected, numTotal) => {\r\n if (numSelected == numTotal) {\r\n return \"All\";\r\n }\r\n else {\r\n return numSelected + \" Selected\";\r\n }\r\n }\r\n });\r\n\r\n uniqueValues.forEach((element: any) => {\r\n $(selectId).append(new Option(element, element, false, true));\r\n });\r\n $(selectId).selectpicker(\"refresh\");\r\n\r\n\r\n $(selectId).on('changed.bs.select', (e, clickedIndex, isSelected, previousValue) => {\r\n let values: string[] = ($(selectId).val());\r\n //console.log(\"changed\", filterIndex, values);\r\n\r\n let search: string = \"\";\r\n if (values.length > 0) {\r\n search = \"(\\\\b\" + values.join(\"\\\\b)|(\\\\b\") + \"\\\\b)\";\r\n }\r\n else { search = \"NOTHING-MATCHED-1234567890\"; }\r\n\r\n search = search.split(\"(\").join(\"\").split(\")\").join(\"\");\r\n\r\n this.dataTable.column(filterIndex)\r\n .search(search, true, false)\r\n .draw();\r\n });\r\n }\r\n }\r\n\r\n\r\n createDetailRow(data: EventEntry): string {\r\n\r\n let html: string = \"
\" + data.Details + \"
\"\r\n return html;\r\n }\r\n\r\n setEventsFoundLabel(count: number): void {\r\n\r\n switch (count) {\r\n case 0: $('#events-found-count').text(\"No Events Found\"); break;\r\n case 1: $('#events-found-count').text(\"1 Event Found\"); break;\r\n default: $('#events-found-count').text(count + \" Events Found\");\r\n }\r\n }\r\n}","\r\n\r\n\r\n//to make discoverable from cshtml\r\nimport { CommitteePage } from './committees/committees'; export { CommitteePage };\r\nimport { DirectoryPage } from './communications/directory/directory.page'; export { DirectoryPage };\r\nimport { LabAssaysPage } from './inventory/lab-assays/lab-assays.page'; export { LabAssaysPage };\r\nimport { SiteCapacitiesPage } from './inventory/site-capacities/scripts/site-capacities.page'; export { SiteCapacitiesPage };\r\nimport { EventsPage } from './communications/events/events.page'; export { EventsPage };\r\nimport { OutbreakResponseResourcesPage } from './outbreak-response/resources.page'; export { OutbreakResponseResourcesPage };\r\nimport { StakeholdersPage } from './communications/stakeholders/stakeholders.page'; export { StakeholdersPage };\r\nimport { ResourceLibraryPage } from './resource-library/resource-library.page'; export { ResourceLibraryPage };\r\nimport { OrrTrackerPage } from './orr-tracker/scripts/orr-tracker.page'; export { OrrTrackerPage };\r\nimport { BiodirectoryFormPage } from './biodirectory/biodirectory-form/scripts/biodirectory-form.page'; export { BiodirectoryFormPage };\r\nimport { BiodirectoryDashboardPage } from './biodirectory/biodirectory-dashboard/scripts/biodirectory-dashboard.page'; export { BiodirectoryDashboardPage };\r\nimport { DataHubPage } from './dataHub/dataHub.page'; export { DataHubPage }\r\n\r\n\r\n// STYLES\r\nimport './communications/directory/directory.scss';\r\nimport './inventory/lab-assays/lab-assays.scss';\r\nimport './inventory/site-capacities/site-capacities.scss';\r\nimport './outbreak-response/resources.scss';\r\nimport './communications/stakeholders/stakeholders.scss';\r\nimport './resource-library/resource-library.scss';\r\nimport './orr-tracker/orr-tracker.scss'\r\nimport './biodirectory/biodirectory-form/biodirectory-form.scss';\r\nimport './biodirectory/biodirectory-dashboard/biodirectory-dashboard.scss';\r\nimport './dataHub/dataHub.scss';\r\n\r\n","import { FormatDate2 } from './../../../shared/scripts/date-functions';\r\n\r\nexport class OrrEvent {\r\n\r\n ID: string;\r\n OutbreakId: string;\r\n Pathogens: Pathogen[];\r\n DisplayPathogens: string;\r\n Countries: Country[];\r\n DisplayCountries: string;\r\n ReportDate: string;\r\n DisplayReportDate: string;\r\n ClosedDate: string;\r\n DisplayClosedDate: string;\r\n LastUpdated: string;\r\n ResearchCenters: ResearchCenter[];\r\n DisplayResearchCenters: string;\r\n AccessInfo: string;\r\n Status: string;\r\n CollaborationOpportunities: string;\r\n SitutationReport: string;\r\n OrrKeyPersonnel: OrrKeyPerson[];\r\n OrrTigerTeam: OrrTigerTeam[];\r\n OrrPartners: OrrPartner[];\r\n OrrFinancials: OrrFinancial[];\r\n OrrExternalResources: OrrExternalResource[];\r\n\r\n ViewDetailsBtn: string;\r\n\r\n constructor() { }\r\n\r\n initialize(): void {\r\n this.DisplayPathogens = \"\";\r\n for (let i = 0; i < this.Pathogens.length; i++) {\r\n \r\n if (this.Pathogens[i] == null || this.Pathogens[i] == undefined) {\r\n this.Pathogens = [];\r\n }\r\n else {\r\n if (i == 0) this.DisplayPathogens += this.Pathogens[i].Virus;\r\n else this.DisplayPathogens += \", \" + this.Pathogens[i].Virus;\r\n } \r\n }\r\n\r\n this.DisplayCountries = \"\";\r\n for (let i = 0; i < this.Countries.length; i++) {\r\n if (this.Countries[i] == null || this.Countries[i] == undefined) {\r\n this.Countries = [];\r\n }\r\n else { \r\n if (i == 0) this.DisplayCountries += this.Countries[i].CountryName;\r\n else this.DisplayCountries += \", \" + this.Countries[i].CountryName;\r\n }\r\n }\r\n\r\n this.DisplayResearchCenters = \"\";\r\n for (let i = 0; i < this.ResearchCenters.length; i++) {\r\n if (this.ResearchCenters[i] == null || this.ResearchCenters[i] == undefined) {\r\n this.ResearchCenters = [];\r\n }\r\n else {\r\n if (i == 0) this.DisplayResearchCenters += this.ResearchCenters[i].Name;\r\n else this.DisplayResearchCenters += \", \" + this.ResearchCenters[i].Name;\r\n }\r\n }\r\n\r\n this.OrrKeyPersonnel.forEach((keyPerson) => {\r\n keyPerson.DisplayFullName = `${keyPerson.FirstName} ${keyPerson.LastName}`;\r\n if (keyPerson.ResearchCenter) {\r\n keyPerson.DisplayOrganization = `${keyPerson.DisplayFullName} (${keyPerson.ResearchCenter.Name})`;\r\n }\r\n else {\r\n keyPerson.DisplayOrganization = keyPerson.DisplayFullName;\r\n }\r\n });\r\n this.OrrTigerTeam.forEach((person) => person.DisplayFullName = `${person.FirstName} ${person.LastName}`);\r\n this.OrrPartners.forEach((person) => {\r\n person.DisplayFullName = `${person.FirstName} ${person.LastName}`;\r\n if (person.DisplayFullName != \" \") {\r\n person.DisplayOrganization = `${person.Organization} - ${person.DisplayFullName}`;\r\n }\r\n else {\r\n person.DisplayOrganization = person.Organization;\r\n }\r\n });\r\n\r\n let USDollar = new Intl.NumberFormat('en-US', {\r\n style: 'currency',\r\n currency: 'USD',\r\n });\r\n this.OrrFinancials.forEach((financial) => {\r\n if (parseInt(financial.Amount) != NaN) {\r\n financial.DisplayAmount = USDollar.format(parseInt(financial.Amount));\r\n }\r\n\r\n if (financial.SubFundingSource != \"\") {\r\n financial.DisplayName = `${financial.FundingSource} (${financial.SubFundingSource})`;\r\n }\r\n else {\r\n financial.DisplayName = financial.FundingSource;\r\n }\r\n })\r\n\r\n this.ViewDetailsBtn = \"Record\"\r\n this.DisplayReportDate = FormatDate2(this.ReportDate);\r\n this.DisplayClosedDate = FormatDate2(this.ClosedDate);\r\n }\r\n\r\n matchesFilter(pathogens: any, countries: any, stages: any, researchCenters: any, reportedBefore: any, reportedAfter: any): boolean {\r\n\r\n let pathogenBoolVal = false;\r\n this.Pathogens.forEach((pathogen) => { if (pathogens.includes(pathogen.Virus)) pathogenBoolVal = true; })\r\n if (!pathogenBoolVal) return false;\r\n\r\n let countryBoolVal = false;\r\n this.Countries.forEach((country) => { if (countries.includes(country.CountryName)) countryBoolVal = true })\r\n if (!countryBoolVal) return false;\r\n\r\n let rcBoolVal = false;\r\n this.ResearchCenters.forEach((center) => { if (researchCenters.includes(center.Name)) rcBoolVal = true; })\r\n if (!rcBoolVal) return false;\r\n\r\n let beforeDate = new Date(reportedBefore);\r\n let afterDate = new Date(reportedAfter);\r\n\r\n if (new Date(this.ReportDate) > beforeDate || new Date(this.ReportDate) < afterDate) {\r\n\r\n return false;\r\n }\r\n\r\n if (!stages.includes(this.Status)) return false;\r\n\r\n return true;\r\n\r\n }\r\n}\r\n\r\nclass Pathogen {\r\n ID: string;\r\n VirusId: string;\r\n Family: string;\r\n Virus: string;\r\n Disease: string;\r\n}\r\n\r\nclass Country {\r\n ID: string;\r\n CountryName: string;\r\n CountryAbbreviation: string;\r\n}\r\n\r\nclass ResearchCenter {\r\n ID: string;\r\n Name: string;\r\n}\r\n\r\nexport class OrrKeyPerson {\r\n ID: string;\r\n OutbreakId: string;\r\n FirstName: string;\r\n LastName: string;\r\n Email: string;\r\n Organization: string;\r\n ResearchCenter: ResearchCenter;\r\n DisplayFullName: string;\r\n DisplayOrganization: string;\r\n}\r\n\r\nexport class OrrTigerTeam {\r\n ID: string;\r\n OutbreakId: string;\r\n FirstName: string;\r\n LastName: string;\r\n Email: string;\r\n Organization: string;\r\n RCAffiliation: string;\r\n DisplayFullName: string;\r\n}\r\n\r\nexport class OrrPartner {\r\n ID: string;\r\n OutbreakId: string;\r\n FirstName: string;\r\n LastName: string;\r\n Email: string;\r\n Organization: string;\r\n DisplayFullName: string;\r\n DisplayOrganization: string;\r\n}\r\n\r\nexport class OrrFinancial {\r\n ID: string;\r\n OutbreakId: string;\r\n ResearchCenter: ResearchCenter;\r\n FundingSource: string;\r\n SubFundingSource: string;\r\n Amount: string;\r\n DisplayAmount: string;\r\n DisplayName: string;\r\n}\r\n\r\nclass OrrExternalResource {\r\n ID: string;\r\n OutbreakId: string;\r\n DisplayText: string;\r\n Url: string;\r\n}\r\n\r\nexport class OrrKeyAsset {\r\n id: string;\r\n icon: string;\r\n link: string;\r\n parent: string;\r\n state: {\r\n disabled: boolean;\r\n opened: boolean;\r\n selected: boolean;\r\n }\r\n text: string;\r\n type: number;\r\n\r\n constructor() {\r\n\r\n }\r\n\r\n initialize(file: OrrKeyAsset, outbreakId: string, existingRootFolders: OrrKeyAssetMapping[] = []) {\r\n try {\r\n this.id = file.id;\r\n this.icon = file.icon;\r\n this.link = file.link;\r\n this.parent = file.parent;\r\n this.state = file.state;\r\n this.text = file.text;\r\n this.type = file.type;\r\n\r\n this.updateFilePathing(outbreakId, existingRootFolders);\r\n }\r\n catch {\r\n console.log(\"Error initializing the file\");\r\n console.log(file);\r\n console.log(outbreakId);\r\n console.log(existingRootFolders);\r\n }\r\n \r\n\r\n return this;\r\n }\r\n\r\n updateFilePathing(outbreakId: string, existingRootFolders: OrrKeyAssetMapping[] = []) {\r\n if (this.parent == `documents/${outbreakId}`) {\r\n this.parent = \"#\";\r\n }\r\n\r\n let parentRegex = /documents\\/_country-documents\\/[\\w]+\\/[\\s\\w\\d]+$/;\r\n let rootRegex = /documents\\/_country-documents\\/[\\w]+$/;\r\n\r\n if (this.parent.match(parentRegex)) {\r\n let folderName = this.parent.split(\"/\")[3];\r\n\r\n if (existingRootFolders.find(folder => folder.folderName == folderName)) {\r\n //this.parent = `documents/${outbreakId}/${folderName}`;\r\n this.parent = existingRootFolders.find(folder => folder.folderName == folderName).folderPath;\r\n }\r\n }\r\n\r\n if (this.id.match(parentRegex) && this.type == 0) {\r\n let folderName = this.id.split(\"/\")[3];\r\n if (!existingRootFolders.find(folder => folder.folderName == folderName)) {\r\n this.parent = \"#\";\r\n }\r\n }\r\n\r\n if (this.parent.match(rootRegex) && this.type != 0) {\r\n this.parent = \"#\";\r\n }\r\n }\r\n\r\n}\r\n\r\nexport class OrrKeyAssetMapping {\r\n folderName: string;\r\n folderPath: string;\r\n constructor(name: string, path: string) {\r\n this.folderName = name;\r\n this.folderPath = path;\r\n }\r\n}","import { BiodirectoryResearchSite, ResearchCenter, ResearchSite, Country, Pathogen, BiodirectoryReagent, BiodirectorySpecimen, BiodirectoryCombinedEntity, BiodirectoryContact, BiodirectorySourceType} from \"../../biodirectory-form/scripts/biodirectory-form.objects\";\r\nimport { IFilter, InitializeFilterDropdown } from '../../../../shared/scripts/dropdown-functions';\r\nimport { GetSelectedDropdownValues, SelectDropdownOption } from '../../../../shared/scripts/filtering';\r\nimport { plainToClass } from \"class-transformer\";\r\nimport { Unique } from \"../../../../shared/scripts/array-functions\";\r\nimport { TableColumnVisibilityController, TableColumnGroup } from \"../../../../shared/scripts/table-column-visibility\";\r\nimport { FormatDate2 } from './../../../../shared/scripts/date-functions';\r\nimport { DoArraysOverlap } from '../../../../shared/scripts/array-functions';\r\nimport { BiodirectoryModal } from './biodirectory-dashboard.modal';\r\n\r\ndeclare var $: any;\r\nexport class BiodirectoryDashboardPage implements IFilter {\r\n researchSiteList: BiodirectoryCombinedEntity[];\r\n pathogenList: Pathogen[];\r\n dataTable: any;\r\n tableColumnController: TableColumnVisibilityController;\r\n selectedPathogenIds: string[] = [];\r\n modalController: BiodirectoryModal;\r\n\r\n constructor(sitesJson: any, pathogensJson: any) {\r\n $(() => {\r\n this.pathogenList = plainToClass(Pathogen, pathogensJson);\r\n this.pathogenList.forEach(pathogen => pathogen.initialize());\r\n this.researchSiteList = plainToClass(BiodirectoryCombinedEntity, sitesJson);\r\n\r\n this.researchSiteList.forEach(site => {\r\n let siteSpecimens: BiodirectorySpecimen[] = [];\r\n site.BiodirectorySpecimens.forEach(specimen => {\r\n let newSpecimen = BiodirectorySpecimen.createBiodirectorySpecimenFromObj(specimen);\r\n siteSpecimens.push(newSpecimen);\r\n });\r\n site.BiodirectorySpecimens = siteSpecimens;\r\n\r\n let siteReagents: BiodirectoryReagent[] = [];\r\n site.BiodirectoryReagents.forEach(reagent => {\r\n let newReagent = BiodirectoryReagent.createBiodirectoryReagentFromObj(reagent);\r\n siteReagents.push(newReagent);\r\n });\r\n site.BiodirectoryReagents = siteReagents;\r\n })\r\n\r\n this.researchSiteList.forEach(site => {\r\n site.initialize();\r\n site.setPathogenString(this.pathogenList);\r\n });\r\n\r\n this.initializeFilters();\r\n this.initializeTable();\r\n this.modalController = new BiodirectoryModal(this.pathogenList);\r\n\r\n });\r\n }\r\n\r\n initializeFilters(): void {\r\n // Site Overview\r\n InitializeFilterDropdown(\"#site-rc-dropdown\", Unique(this.researchSiteList.map(site => site.ResearchCenter.Name), true), this);\r\n InitializeFilterDropdown(\"#site-site-dropdown\", Unique(this.researchSiteList.map(site => site.ResearchSite.Name), true), this);\r\n InitializeFilterDropdown(\"#site-country-dropdown\", Unique(this.researchSiteList.map(site => site.Country.Name), true), this);\r\n InitializeFilterDropdown(\"#site-region-dropdown\", Unique(this.researchSiteList.map(site => site.Country.Region), true), this);\r\n\r\n // Specimens + Reagents + Pathogens List Generation\r\n let pathogenIds: string[] = [];\r\n let specimenSources: string[] = [];\r\n let specimenTypes: string[] = [];\r\n let reagentTypes: string[] = [];\r\n let reagentSources: string[] = [];\r\n this.researchSiteList.forEach(site => {\r\n site.BiodirectorySpecimens.forEach(specimen => {\r\n if (!specimenSources.includes(specimen.SpecimenSource)) specimenSources.push(specimen.SpecimenSource);\r\n if (!specimenTypes.includes(specimen.SpecimenType)) specimenTypes.push(specimen.SpecimenType);\r\n specimen.PathogenIdArray.forEach(pathogenId => {\r\n if (!pathogenIds.includes(pathogenId)) pathogenIds.push(pathogenId);\r\n })\r\n });\r\n\r\n site.BiodirectoryReagents.forEach(reagent => {\r\n if (!reagentSources.includes(reagent.ReagentType)) reagentSources.push(reagent.ReagentType);\r\n if (!reagentTypes.includes(reagent.ReagentSource)) reagentTypes.push(reagent.ReagentSource);\r\n reagent.PathogenIdArray.forEach(pathogenId => {\r\n if (!pathogenIds.includes(pathogenId)) pathogenIds.push(pathogenId);\r\n })\r\n })\r\n });\r\n specimenSources.sort();\r\n specimenTypes.sort();\r\n reagentSources.sort();\r\n reagentTypes.sort();\r\n\r\n\r\n let foundPathogenList: Pathogen[] = [];\r\n pathogenIds.forEach(id => {\r\n let numId = parseInt(id);\r\n let foundPathogen = this.pathogenList.find(pathogen => pathogen.PathogenId == numId);\r\n if (foundPathogen != undefined) {\r\n foundPathogenList.push(foundPathogen);\r\n }\r\n });\r\n foundPathogenList.sort((x1, x2) => x1.VirusName.localeCompare(x2.VirusName));\r\n\r\n let displayPathogenArray: any[] = [];\r\n foundPathogenList.forEach(pathogen => {\r\n let newDisplay = [pathogen.PathogenId.toString(), pathogen.VirusName];\r\n displayPathogenArray.push(newDisplay);\r\n })\r\n\r\n \r\n // Specimens\r\n InitializeFilterDropdown(\"#specimen-source-dropdown\", specimenSources, this, undefined, false);\r\n InitializeFilterDropdown(\"#specimen-type-dropdown\", specimenTypes, this, undefined, false);\r\n InitializeFilterDropdown(\"#specimen-pathogen-dropdown\", [], this, displayPathogenArray, true);\r\n\r\n // Reagents\r\n InitializeFilterDropdown(\"#reagent-type-dropdown\", reagentTypes, this, undefined, false);\r\n InitializeFilterDropdown(\"#reagent-source-dropdown\", reagentSources, this, undefined, false);\r\n InitializeFilterDropdown(\"#reagent-pathogen-dropdown\", [], this, displayPathogenArray, true);\r\n\r\n this.initializeFilterCarryOver();\r\n }\r\n\r\n initializeFilterCarryOver(): void {\r\n // Change specimen Pathogen Dropdown\r\n $(\"#specimen-pathogen-dropdown\").on('changed.bs.select', (e, clickedIndex, isSelected, previousValue) => {\r\n // Get Searched Pathogen Ids\r\n let searchedPathogenIds = GetSelectedDropdownValues(\"#specimen-pathogen-dropdown\");\r\n this.selectedPathogenIds = searchedPathogenIds;\r\n // set the value for other pathogen dropdowns\r\n $(\"#reagent-pathogen-dropdown\").val(this.selectedPathogenIds);\r\n $(\"#reagent-pathogen-dropdown\").selectpicker(\"refresh\");\r\n\r\n this.triggerFilter();\r\n });\r\n\r\n // Change reagent Pathogen Dropdown\r\n $(\"#reagent-pathogen-dropdown\").on('changed.bs.select', (e, clickedIndex, isSelected, previousValue) => {\r\n // Get Searched Pathogen Ids\r\n let searchedPathogenIds = GetSelectedDropdownValues(\"#reagent-pathogen-dropdown\");\r\n this.selectedPathogenIds = searchedPathogenIds;\r\n\r\n // set the value for other pathogen dropdowns\r\n $(\"#specimen-pathogen-dropdown\").val(this.selectedPathogenIds);\r\n $(\"#specimen-pathogen-dropdown\").selectpicker(\"refresh\");\r\n\r\n this.triggerFilter();\r\n });\r\n\r\n this.selectedPathogenIds = GetSelectedDropdownValues(\"#specimen-pathogen-dropdown\");\r\n }\r\n\r\n initializeTabButtons(): void {\r\n $(\"#site-overview-tab\").on('click', () => {\r\n $(\"#column-filter-dropdown\").val([\"Site Overview\"]);\r\n $(\"#column-filter-dropdown\").trigger(\"change\");\r\n });\r\n\r\n $(\"#specimens-tab\").on('click', () => {\r\n $(\"#column-filter-dropdown\").val([\"Specimen Information\"]);\r\n $(\"#column-filter-dropdown\").trigger(\"change\");\r\n });\r\n\r\n $(\"#reagents-tab\").on('click', () => {\r\n $(\"#column-filter-dropdown\").val([\"Reagent Information\"]);\r\n $(\"#column-filter-dropdown\").trigger(\"change\");\r\n });\r\n }\r\n\r\n // Update Table when Filters are changed\r\n triggerFilter(): void {\r\n let filteredSites: BiodirectoryCombinedEntity[] = this.researchSiteList;\r\n\r\n // Site Overview\r\n filteredSites = filteredSites.filter(site => DoArraysOverlap([site.ResearchCenter.Name], GetSelectedDropdownValues(\"#site-rc-dropdown\")));\r\n filteredSites = filteredSites.filter(site => DoArraysOverlap([site.ResearchSite.Name], GetSelectedDropdownValues(\"#site-site-dropdown\")));\r\n filteredSites = filteredSites.filter(site => DoArraysOverlap([site.Country.Name], GetSelectedDropdownValues(\"#site-country-dropdown\")));\r\n filteredSites = filteredSites.filter(site => DoArraysOverlap([site.Country.Region], GetSelectedDropdownValues(\"#site-region-dropdown\")));\r\n\r\n // Specimens\r\n let selectedSpecimenSources: string[] = GetSelectedDropdownValues(\"#specimen-source-dropdown\")\r\n if (selectedSpecimenSources.length > 0) {\r\n filteredSites = filteredSites.filter(site => {\r\n let sources = site.SpecimenSourceString.split(\", \");\r\n return DoArraysOverlap(sources, GetSelectedDropdownValues(\"#specimen-source-dropdown\"));\r\n });\r\n }\r\n let selectedSpecimenTypes: string[] = GetSelectedDropdownValues(\"#specimen-type-dropdown\");\r\n if (selectedSpecimenTypes.length > 0) {\r\n filteredSites = filteredSites.filter(site => {\r\n let types = site.SpecimenTypeString.split(\", \");\r\n return DoArraysOverlap(types, GetSelectedDropdownValues(\"#specimen-type-dropdown\"));\r\n });\r\n }\r\n \r\n\r\n // Reagents \r\n let selectedReagentTypes: string[] = GetSelectedDropdownValues(\"#reagent-type-dropdown\");\r\n if (selectedReagentTypes.length > 0) {\r\n filteredSites = filteredSites.filter(site => {\r\n let types = site.ReagentTypeString.split(\", \");\r\n return DoArraysOverlap(types, GetSelectedDropdownValues(\"#reagent-type-dropdown\"));\r\n });\r\n }\r\n let selectedReagentSources: string[] = GetSelectedDropdownValues(\"#reagent-source-dropdown\");\r\n if (selectedReagentSources.length > 0) {\r\n filteredSites = filteredSites.filter(site => {\r\n let sources = site.ReagentSourceString.split(\", \");\r\n return DoArraysOverlap(sources, GetSelectedDropdownValues(\"#reagent-source-dropdown\"));\r\n });\r\n }\r\n \r\n // Pathogens\r\n filteredSites = filteredSites.filter(site => {\r\n let pathogenIds = [];\r\n let specimenPathogens = site.BiodirectorySpecimens.map(specimen => specimen.PathogenIdArray);\r\n specimenPathogens.forEach(idArray => pathogenIds.push(...idArray));\r\n let reagentPathogens = site.BiodirectoryReagents.map(reagent => reagent.PathogenIdArray);\r\n reagentPathogens.forEach(idArray => pathogenIds.push(...idArray));\r\n pathogenIds = Unique(pathogenIds, false);\r\n\r\n return DoArraysOverlap(pathogenIds, this.selectedPathogenIds);\r\n });\r\n\r\n this.updateTable(filteredSites);\r\n }\r\n\r\n updateTable(matchingSites: BiodirectoryCombinedEntity[]): void {\r\n\r\n this.dataTable.clear();\r\n this.dataTable.rows.add(matchingSites).draw();\r\n this.setSitesFoundLabel(matchingSites.length);\r\n }\r\n\r\n resetFilters(): void {\r\n let filterList: string[] = [\r\n \"#site-rc-dropdown\", \"#site-site-dropdown\", \"#site-country-dropdown\", \"#site-region-dropdown\",\r\n \"#specimen-pathogen-dropdown\", \"#reagent-pathogen-dropdown\"\r\n ]\r\n\r\n let emptyFilterList: string[] = [\r\n \"#specimen-source-dropdown\", \"#specimen-type-dropdown\",\r\n \"#reagent-type-dropdown\", \"#reagent-source-dropdown\"\r\n ]\r\n\r\n filterList.forEach((dropdownId: string) => {\r\n $(dropdownId).selectpicker('selectAll');\r\n $(dropdownId).selectpicker('refresh');\r\n });\r\n\r\n emptyFilterList.forEach((dropdownId: string) => {\r\n $(dropdownId).selectpicker('deselectAll');\r\n $(dropdownId).selectpicker('refresh');\r\n });\r\n }\r\n\r\n modalResetFilters(): void {\r\n let filterList: string[] = [\r\n \"#modal-pathogens-dropdown\"\r\n ]\r\n\r\n let emptyFilterList: string[] = [\r\n \"#modal-specimen-source-dropdown\", \"#modal-specimen-type-dropdown\",\r\n \"#modal-reagent-type-dropdown\", \"#modal-reagent-source-dropdown\"\r\n ]\r\n\r\n filterList.forEach((dropdownId: string) => {\r\n $(dropdownId).selectpicker('selectAll');\r\n $(dropdownId).selectpicker('refresh');\r\n });\r\n\r\n emptyFilterList.forEach((dropdownId: string) => {\r\n $(dropdownId).selectpicker('deselectAll');\r\n $(dropdownId).selectpicker('refresh');\r\n });\r\n }\r\n\r\n initializeTable(): void {\r\n\r\n this.dataTable = $('#biodirectory-table').DataTable({\r\n \"dom\": '<\"top-controls\"<\"column-select\"><\"search-bar\"f><\"spacer\"><\"count-found\"B>>rtip',\r\n //\"dom\": '<\"top-controls\"<\"left-section\"<\"search-bar\"f>><\"right-section\"<\"column-select\">B>rtip',\r\n autoWidth: true,\r\n info: false,\r\n paging: false,\r\n search: true,\r\n scrollX: true,\r\n //responsive: false,\r\n scrollY: '80vh',\r\n scrollCollapse: true,\r\n orderCellsTop: true,\r\n fixedColumns: {\r\n leftColumns: 1\r\n },\r\n language:\r\n {\r\n search: \"Search\",\r\n },\r\n columns: [\r\n { data: \"DisplaySiteName\", title: \"Site Name\", className: \"text-left font-size12\" },\r\n { data: \"ResearchCenter.Name\", title: \"Research Center\", className: \"site-overview text-left font-size12\" },\r\n { data: \"Country.Name\", title: \"Country\", className: \"site-overview text-left font-size12\" },\r\n { data: \"Country.Region\", title: \"Region\", className: \"site-overview text-left font-size12\" },\r\n\r\n { data: \"SpecimenSourceString\", title: \"Specimen Sources\", className: \"specimens text-left font-size12\" },\r\n { data: \"SpecimenTypeString\", title: \"Specimen Types\", className: \"specimens text-left font-size12\" },\r\n { data: \"PathogenString\", title: \"Pathogens\", className: \"specimens text-left font-size12\" },\r\n\r\n { data: \"ReagentTypeString\", title: \"Reagent Types\", className: \"reagents text-left font-size12\" },\r\n { data: \"ReagentSourceString\", title: \"Reagent Sources\", className: \"reagents text-left font-size12\" },\r\n { data: \"PathogenString\", title: \"Pathogens\", className: \"reagents text-left font-size12\" },\r\n\r\n { data: \"BiodirectoryResearchSite\", title: \"Specimen POC\", className: \"poc-info text-left font-size12\", render: function (data, type) { return `${data.SpecimenPOCFirstName} ${data.SpecimenPOCLastName} (${data.SpecimenPOCEmail})`} },\r\n { data: \"BiodirectoryResearchSite\", title: \"Reagent POC\", className: \"poc-info text-left font-size12\", render: function (data, type) { return `${data.ReagentPOCFirstName} ${data.ReagentPOCLastName} (${data.ReagentPOCEmail})` } },\r\n\r\n { data: \"BiodirectoryResearchSite.MoreRecentDateDisplay\", title: \"Last Updated/Reviewed\", className: \"text-left font-size12 nowrap\"}\r\n ],\r\n buttons: [\r\n {\r\n extend: 'csv',\r\n text: '',\r\n titleAttr: 'CSV',\r\n charset: 'utf-8',\r\n }\r\n ],\r\n data: this.researchSiteList,\r\n //order: [[5, 'desc'], [1, 'asc']],\r\n initComplete: (settings, json) => {\r\n //$(\"#hub-details-table\").wrap(\"
\");\r\n },\r\n });\r\n\r\n $(\".top-controls\").addClass('row mx-0');\r\n\r\n $(\".column-select\").addClass('col-12 col-md-3 px-0');\r\n $(\".column-select\").empty().html('
');\r\n\r\n $(\".search-bar\").addClass('col-12 col-md-3');\r\n\r\n $(\".spacer\").addClass('col-12 col-md-3'); 0\r\n $(\".count-found\").addClass('col-12 col-md-3 d-flex justify-content-end vertical-align-middle mt-2 px-0');\r\n //$(\".count-found\").prepend('
');\r\n $(\".count-found\").prepend('
');\r\n\r\n this.tableColumnController = new TableColumnVisibilityController('#biodirectory-table', '#column-select', [\r\n new TableColumnGroup(\"Site Overview\", true, [], \"site-overview\"),\r\n new TableColumnGroup(\"Specimen Information\", false, [], \"specimens\"),\r\n new TableColumnGroup(\"Reagent Information\", false, [], \"reagents\"),\r\n new TableColumnGroup(\"Point of Contact\", false, [], \"poc-info\")\r\n ]);\r\n\r\n $('#biodirectory-table').on('search.dt', (e, settings) => {\r\n this.setSitesFoundLabel(this.dataTable.rows({ search: 'applied' }).count());\r\n });\r\n\r\n this.initializeTabButtons();\r\n }\r\n\r\n setSitesFoundLabel(count: number): void {\r\n switch (count) {\r\n case 0: $('#sites-found-count').text(\"No Sites Found\"); break;\r\n case 1: $('#sites-found-count').text(\"1 Site Found\"); break;\r\n default: $('#sites-found-count').text(count + \" Sites Found\");\r\n }\r\n }\r\n\r\n openSiteModal(siteId: number): void {\r\n let site: BiodirectoryCombinedEntity = this.researchSiteList.find(rs => rs.Id == siteId);\r\n if (site != undefined) {\r\n this.modalController.prepopulateModal(site);\r\n $(\"#siteModal\").modal('show');\r\n }\r\n }\r\n\r\n showHelpModal(): void {\r\n $(\"#helpModal\").modal('show');\r\n }\r\n \r\n}","import { getDisplayDate } from './../../../../shared/scripts/date-functions';\r\nimport { get } from 'jquery';\r\nimport { Path } from 'leaflet';\r\nexport class BiodirectoryResearchSite {\r\n Id: number;\r\n ResearchSiteId: number;\r\n LastModifiedDate: Date;\r\n LastReviewDate: Date;\r\n\r\n SpecimenPOCFirstName: string;\r\n SpecimenPOCLastName: string;\r\n SpecimenPOCEmail: string;\r\n\r\n ReagentPOCFirstName: string;\r\n ReagentPOCLastName: string;\r\n ReagentPOCEmail: string;\r\n\r\n SpecimenPathogenListIds: string;\r\n ReagentPathogenListIds: string;\r\n\r\n // Virtuals\r\n LastModifiedDateDisplay: string;\r\n LastReviewDateDisplay: string;\r\n MoreRecentDate: Date;\r\n MoreRecentDateDisplay: string;\r\n ShouldReview: boolean;\r\n\r\n constructor(site: BiodirectoryResearchSite) {\r\n this.Id = site.Id;\r\n this.ResearchSiteId = site.ResearchSiteId;\r\n\r\n this.LastModifiedDate = site.LastModifiedDate;\r\n this.LastModifiedDateDisplay = site.LastModifiedDateDisplay;\r\n this.LastReviewDate = site.LastReviewDate;\r\n this.LastReviewDateDisplay = site.LastReviewDateDisplay;\r\n\r\n this.SpecimenPOCFirstName = site.SpecimenPOCFirstName;\r\n this.SpecimenPOCLastName = site.SpecimenPOCLastName;\r\n this.SpecimenPOCEmail = site.SpecimenPOCEmail;\r\n\r\n this.ReagentPOCFirstName = site.ReagentPOCFirstName;\r\n this.ReagentPOCLastName = site.ReagentPOCLastName;\r\n this.ReagentPOCEmail = site.ReagentPOCEmail;\r\n\r\n this.SpecimenPathogenListIds = site.SpecimenPathogenListIds;\r\n this.ReagentPathogenListIds = site.ReagentPathogenListIds;\r\n }\r\n\r\n initialize(): void {\r\n this.LastModifiedDateDisplay = getDisplayDate(this.LastModifiedDate);\r\n this.LastReviewDateDisplay = getDisplayDate(this.LastReviewDate);\r\n\r\n if (this.LastModifiedDate.getTime() > this.LastReviewDate.getTime()) {\r\n this.MoreRecentDate = this.LastModifiedDate;\r\n this.MoreRecentDateDisplay = this.LastModifiedDateDisplay;\r\n }\r\n else {\r\n this.MoreRecentDate = this.LastReviewDate;\r\n this.MoreRecentDateDisplay = this.LastReviewDateDisplay;\r\n }\r\n\r\n let reviewCheckDate = new Date();\r\n\r\n // review/update every 3 months\r\n reviewCheckDate.setMonth(reviewCheckDate.getMonth() - 2);\r\n \r\n if (reviewCheckDate.getTime() > this.MoreRecentDate.getTime()) {\r\n this.ShouldReview = true;\r\n }\r\n else {\r\n this.ShouldReview = false;\r\n }\r\n \r\n }\r\n}\r\n\r\nexport class BiodirectorySpecimen {\r\n Id: number;\r\n BiodirectorySiteId: number;\r\n CreateDate: Date;\r\n LastModifiedDate: Date;\r\n\r\n SpecimenSource: string;\r\n SpecimenType: string;\r\n PathogenIds: string;\r\n\r\n PathogenIdArray: string[] = [];\r\n\r\n constructor() {\r\n\r\n }\r\n\r\n initialize(): void {\r\n if (this.PathogenIds == null || this.PathogenIds == undefined || this.PathogenIds == \"\") {\r\n this.PathogenIdArray = [];\r\n }\r\n else {\r\n this.PathogenIdArray = this.PathogenIds.split(\"|\");\r\n }\r\n }\r\n\r\n static createBiodirectorySpecimen(siteId: number, source: string, type: string): BiodirectorySpecimen {\r\n let obj = new BiodirectorySpecimen();\r\n obj.BiodirectorySiteId = siteId;\r\n obj.SpecimenSource = source;\r\n obj.SpecimenType = type;\r\n obj.PathogenIds = \"\";\r\n\r\n return obj;\r\n }\r\n\r\n static createBiodirectorySpecimenFromObj(specimen: BiodirectorySpecimen): BiodirectorySpecimen {\r\n let obj = new BiodirectorySpecimen();\r\n obj.Id = specimen.Id;\r\n obj.BiodirectorySiteId = specimen.BiodirectorySiteId;\r\n obj.CreateDate = specimen.CreateDate;\r\n obj.LastModifiedDate = specimen.LastModifiedDate;\r\n\r\n obj.SpecimenSource = specimen.SpecimenSource;\r\n obj.SpecimenType = specimen.SpecimenType;\r\n obj.PathogenIds = specimen.PathogenIds;\r\n\r\n return obj;\r\n }\r\n}\r\n\r\nexport class BiodirectoryReagent {\r\n Id: number;\r\n BiodirectorySiteId: number;\r\n CreateDate: Date;\r\n LastModifiedDate: Date;\r\n\r\n ReagentSource: string;\r\n ReagentType: string;\r\n PathogenIds: string;\r\n\r\n PathogenIdArray: string[] = [];\r\n\r\n initialize(): void {\r\n if (this.PathogenIds == null || this.PathogenIds == undefined || this.PathogenIds == \"\") {\r\n this.PathogenIdArray = [];\r\n }\r\n else {\r\n this.PathogenIdArray = this.PathogenIds.split(\"|\");\r\n }\r\n }\r\n\r\n static createBiodirectoryReagent(siteId: number, source: string, type: string): BiodirectoryReagent {\r\n let obj = new BiodirectoryReagent();\r\n obj.BiodirectorySiteId = siteId;\r\n obj.ReagentSource = source;\r\n obj.ReagentType = type;\r\n obj.PathogenIds = \"\";\r\n\r\n return obj;\r\n }\r\n\r\n static createBiodirectoryReagentFromObj(reagent: BiodirectoryReagent): BiodirectoryReagent {\r\n let obj = new BiodirectoryReagent();\r\n obj.Id = reagent.Id;\r\n obj.BiodirectorySiteId = reagent.BiodirectorySiteId;\r\n obj.CreateDate = reagent.CreateDate;\r\n obj.LastModifiedDate = reagent.LastModifiedDate;\r\n\r\n obj.ReagentSource = reagent.ReagentSource;\r\n obj.ReagentType = reagent.ReagentType;\r\n obj.PathogenIds = reagent.PathogenIds;\r\n\r\n return obj;\r\n }\r\n}\r\n\r\nexport class ResearchCenter {\r\n //Id: number;\r\n ResearchCenterId: number;\r\n Name: string;\r\n}\r\n\r\nexport class ResearchSite {\r\n //Id: number;\r\n ResearchSiteId: number;\r\n ResearchCenterId: number;\r\n Name: string;\r\n CountryId: number;\r\n Latitude: number;\r\n Longitude: number;\r\n}\r\n\r\nexport class Country {\r\n //Id: number;\r\n CountryId: number;\r\n Name: string;\r\n Code: string;\r\n Region: string;\r\n}\r\n\r\nexport class Pathogen {\r\n Id: number;\r\n PathogenId: number;\r\n VirusId: string;\r\n VirusName: string;\r\n Family: string;\r\n Disease: string;\r\n\r\n IsSelected: boolean = false;\r\n SelectorDisplay: string = `
`;\r\n\r\n initialize() {\r\n this.PathogenId = this.Id;\r\n }\r\n\r\n updateSelect(selectStatus: boolean): void {\r\n this.IsSelected = selectStatus;\r\n\r\n if (this.IsSelected) {\r\n this.SelectorDisplay = `
`\r\n }\r\n else {\r\n this.SelectorDisplay = `
`\r\n }\r\n }\r\n}\r\n\r\nexport class BiodirectoryCombinedEntity {\r\n Id: number;\r\n BiodirectoryResearchSite: BiodirectoryResearchSite;\r\n BiodirectorySpecimens: BiodirectorySpecimen[];\r\n BiodirectoryReagents: BiodirectoryReagent[];\r\n ResearchCenter: ResearchCenter;\r\n ResearchSite: ResearchSite;\r\n Country: Country;\r\n\r\n SpecimenSourceString: string = \"\";\r\n SpecimenTypeString: string = \"\";\r\n ReagentSourceString: string = \"\";\r\n ReagentTypeString: string = \"\";\r\n PathogenString: string = \"\";\r\n DisplaySiteName: string = \"\";\r\n\r\n initialize(): void {\r\n this.DisplaySiteName = `${this.ResearchSite.Name}`;\r\n\r\n // Set Up Biodirectory Research Site Dates\r\n this.BiodirectoryResearchSite.LastModifiedDateDisplay = getDisplayDate(this.BiodirectoryResearchSite.LastModifiedDate);\r\n this.BiodirectoryResearchSite.LastReviewDateDisplay = getDisplayDate(this.BiodirectoryResearchSite.LastReviewDate);\r\n\r\n if (new Date(this.BiodirectoryResearchSite.LastModifiedDate).getTime() > new Date(this.BiodirectoryResearchSite.LastReviewDate).getTime()) {\r\n this.BiodirectoryResearchSite.MoreRecentDate = this.BiodirectoryResearchSite.LastModifiedDate;\r\n this.BiodirectoryResearchSite.MoreRecentDateDisplay = this.BiodirectoryResearchSite.LastModifiedDateDisplay;\r\n }\r\n else {\r\n this.BiodirectoryResearchSite.MoreRecentDate = this.BiodirectoryResearchSite.LastReviewDate;\r\n this.BiodirectoryResearchSite.MoreRecentDateDisplay = this.BiodirectoryResearchSite.LastReviewDateDisplay;\r\n }\r\n\r\n\r\n // Get String Versions of Sources/Types\r\n let specimenSourceArray: string[] = [];\r\n let specimenTypeArray: string[] = [];\r\n let reagentSourceArray: string[] = [];\r\n let reagentTypeArray: string[] = [];\r\n\r\n this.BiodirectorySpecimens.forEach(specimen => {\r\n specimen.initialize();\r\n if (!specimenSourceArray.includes(specimen.SpecimenSource)) {\r\n specimenSourceArray.push(specimen.SpecimenSource);\r\n }\r\n if (!specimenTypeArray.includes(specimen.SpecimenType)) {\r\n specimenTypeArray.push(specimen.SpecimenType);\r\n }\r\n });\r\n this.BiodirectoryReagents.forEach(reagent => {\r\n reagent.initialize();\r\n if (!reagentSourceArray.includes(reagent.ReagentType)) {\r\n reagentSourceArray.push(reagent.ReagentType);\r\n }\r\n if (!reagentTypeArray.includes(reagent.ReagentSource)) {\r\n reagentTypeArray.push(reagent.ReagentSource);\r\n }\r\n });\r\n\r\n specimenSourceArray.sort();\r\n specimenTypeArray.sort();\r\n reagentSourceArray.sort();\r\n reagentTypeArray.sort();\r\n\r\n this.SpecimenSourceString = specimenSourceArray.join(\", \");\r\n this.SpecimenTypeString = specimenTypeArray.join(\", \");\r\n this.ReagentSourceString = reagentSourceArray.join(\", \");\r\n this.ReagentTypeString = reagentTypeArray.join(\", \");\r\n\r\n // Check if Item Needs to be reviewed\r\n\r\n let reviewCheckDate = new Date();\r\n\r\n // review/update every 3 months, also don't require review for sites with nothing\r\n reviewCheckDate.setMonth(reviewCheckDate.getMonth() - 3);\r\n\r\n if (reviewCheckDate.getTime() > new Date(this.BiodirectoryResearchSite.MoreRecentDate).getTime() && (specimenSourceArray.length > 0 || reagentSourceArray.length > 0)) {\r\n this.BiodirectoryResearchSite.ShouldReview = true;\r\n }\r\n else {\r\n this.BiodirectoryResearchSite.ShouldReview = false;\r\n }\r\n }\r\n\r\n setPathogenString(pathogenList: Pathogen[]) {\r\n let pathogenIdArray: string[] = [];\r\n this.BiodirectorySpecimens.forEach(specimen => {\r\n specimen.PathogenIdArray.forEach(pathogenId => {\r\n if (!pathogenIdArray.includes(pathogenId)) {\r\n pathogenIdArray.push(pathogenId);\r\n }\r\n })\r\n });\r\n this.BiodirectoryReagents.forEach(reagent => {\r\n reagent.PathogenIdArray.forEach(pathogenId => {\r\n if (!pathogenIdArray.includes(pathogenId)) {\r\n pathogenIdArray.push(pathogenId);\r\n }\r\n })\r\n });\r\n\r\n let pathogenNameArray: string[] = [];\r\n pathogenIdArray.forEach(pathogenId => {\r\n let numId = parseInt(pathogenId);\r\n let foundPathogen = pathogenList.find(pathogen => pathogen.PathogenId == numId);\r\n if (foundPathogen != undefined) {\r\n pathogenNameArray.push(foundPathogen.VirusName);\r\n }\r\n });\r\n\r\n pathogenNameArray.sort();\r\n this.PathogenString = pathogenNameArray.join(\", \");\r\n }\r\n\r\n constructor() {\r\n\r\n }\r\n\r\n static createBiodirectoryCombinedEntity(combinedEntity: BiodirectoryCombinedEntity): BiodirectoryCombinedEntity {\r\n let obj = new BiodirectoryCombinedEntity();\r\n obj.Id = combinedEntity.Id;\r\n obj.BiodirectoryResearchSite = combinedEntity.BiodirectoryResearchSite;\r\n obj.BiodirectorySpecimens = combinedEntity.BiodirectorySpecimens;\r\n obj.BiodirectoryReagents = combinedEntity.BiodirectoryReagents;\r\n obj.ResearchCenter = combinedEntity.ResearchCenter;\r\n obj.ResearchSite = combinedEntity.ResearchSite;\r\n obj.Country = combinedEntity.Country;\r\n \r\n return obj;\r\n }\r\n}\r\n\r\nexport class BiodirectoryContact {\r\n FirstName: string;\r\n LastName: string;\r\n Email: string;\r\n\r\n FullName: string;\r\n DropdownDisplay: string;\r\n\r\n initialize(): void {\r\n this.FullName = `${this.FirstName} ${this.LastName}`;\r\n this.DropdownDisplay = `${this.LastName}, ${this.FirstName}`;\r\n }\r\n constructor(firstName: string, lastName: string, email: string) {\r\n this.FirstName = firstName;\r\n this.LastName = lastName;\r\n this.Email = email;\r\n this.initialize();\r\n }\r\n}\r\n\r\nexport class BiodirectorySourceType {\r\n Source: string;\r\n Type: string;\r\n\r\n DisplayName: string;\r\n SourceId: number;\r\n\r\n initialize(): void {\r\n this.DisplayName = `${this.Source} (${this.Type})`;\r\n }\r\n\r\n constructor(source: string, type: string, sourceId: number) {\r\n this.Source = source;\r\n this.Type = type;\r\n this.SourceId = sourceId;\r\n\r\n this.initialize();\r\n }\r\n}\r\n\r\nexport class PathogenCardDisplay {\r\n Pathogen: Pathogen;\r\n Specimens: BiodirectorySpecimen[];\r\n Reagents: BiodirectoryReagent[];\r\n\r\n SpecimenSourceArray: string[] = [];\r\n SpecimenTypeArray: string[] = [];\r\n ReagentSourceArray: string[] = [];\r\n ReagentTypeArray: string[] = [];\r\n\r\n constructor(pathogen: Pathogen, specimens: BiodirectorySpecimen[], reagents: BiodirectoryReagent[]) {\r\n this.Pathogen = pathogen;\r\n this.Specimens = specimens;\r\n this.Reagents = reagents;\r\n\r\n this.initialize();\r\n }\r\n\r\n initialize(): void {\r\n let specimenSourceArray = [];\r\n let specimenTypeArray = [];\r\n this.Specimens.forEach(specimen => {\r\n specimen.initialize();\r\n if (!specimenSourceArray.includes(specimen.SpecimenSource)) {\r\n specimenSourceArray.push(specimen.SpecimenSource);\r\n }\r\n if (!this.SpecimenTypeArray.includes(specimen.SpecimenType)) {\r\n specimenTypeArray.push(specimen.SpecimenType);\r\n }\r\n });\r\n\r\n let reagentSourceArray = [];\r\n let reagentTypeArray = [];\r\n this.Reagents.forEach(reagent => {\r\n reagent.initialize();\r\n if (!reagentSourceArray.includes(reagent.ReagentType)) {\r\n reagentSourceArray.push(reagent.ReagentType);\r\n }\r\n if (!reagentTypeArray.includes(reagent.ReagentSource)) {\r\n reagentTypeArray.push(reagent.ReagentSource);\r\n }\r\n });\r\n\r\n specimenSourceArray.sort();\r\n specimenTypeArray.sort();\r\n reagentSourceArray.sort();\r\n reagentTypeArray.sort();\r\n\r\n this.SpecimenSourceArray = specimenSourceArray;\r\n this.SpecimenTypeArray = specimenTypeArray;\r\n this.ReagentSourceArray = reagentSourceArray;\r\n this.ReagentTypeArray = reagentTypeArray;\r\n }\r\n}","import { SplitAndJoin, Split, Join, DoArraysOverlap } from \"../../shared/scripts/array-functions\";\r\n\r\nexport class Resource {\r\n Name: string;\r\n Category: string = \"Not Defined\";\r\n Topic: string = \"Not Defined\";\r\n Format: string = \"Not Defined\";\r\n Description: string;\r\n Source: string = \"Not Defined\";\r\n CourseStructure: string;\r\n TrainingDates: string;\r\n PrimaryContributorName: string;\r\n PrimaryContributorAffiliation: string;\r\n PrimaryContributorEmail: string;\r\n Language: string;\r\n Filename: string;\r\n Url: string;\r\n OtherSource: string;\r\n ExpertiseLevel: string;\r\n Viruses: string;\r\n Families: string;\r\n Diseases: string;\r\n ModifiedDate: string;\r\n\r\n VirusList: string[];\r\n VirusDisplay: string;\r\n FamilyDisplay: string = \"\";\r\n DiseaseDisplay: string = \"\";\r\n UrlDisplay: string = \"\";\r\n FilenameDisplay: string = \"\";\r\n PrimaryContributorEmailDisplay: string = \"\";\r\n\r\n LanguageList: string[];\r\n LanguageDisplay: string = \"\";\r\n\r\n ResourceAccess: string = \"\";\r\n\r\n initialize(): void {\r\n\r\n if (this.Topic == null || this.Topic.trim().length == 0) { this.Topic = \"Not Defined\"; }\r\n if (this.ExpertiseLevel == null || this.ExpertiseLevel.trim().length == 0) { this.ExpertiseLevel = \"Not Defined\"; }\r\n if (this.Language == null || this.Language.trim().length == 0) { this.Language = \"Not Defined\"; }\r\n\r\n //console.log(this);\r\n\r\n if (this.Viruses == null || this.Viruses.trim().length == 0) { this.VirusDisplay = \"Not Defined\"; this.VirusList = [this.VirusDisplay]; }\r\n else {\r\n this.VirusList = Split(this.Viruses, \"|\");\r\n this.VirusDisplay = Join(this.VirusList, \", \", true, true);\r\n\r\n this.VirusDisplay = SplitAndJoin(this.Viruses, \"|\", \", \", false);\r\n this.DiseaseDisplay = SplitAndJoin(this.Diseases, \"|\", \", \", false);\r\n this.FamilyDisplay = SplitAndJoin(this.Families, \"|\", \", \", false);\r\n }\r\n\r\n if (this.PrimaryContributorEmail != undefined && this.PrimaryContributorEmail.length > 0) {\r\n this.PrimaryContributorEmailDisplay = \"\" + this.PrimaryContributorEmail.toLowerCase() + \"\";\r\n }\r\n\r\n if (this.Language != undefined && this.Language.length > 0) {\r\n this.LanguageList = Split(this.Language, \"|\");\r\n this.LanguageDisplay = Join(this.LanguageList, \", \", true, true);\r\n }\r\n\r\n this.ResourceAccess = \"\";\r\n\r\n if (this.Url != undefined && this.Url.length > 0) {\r\n this.UrlDisplay = \"Link\";\r\n\r\n this.ResourceAccess = this.UrlDisplay;\r\n }\r\n\r\n if (this.Filename != undefined && this.Filename.length > 0) {\r\n this.FilenameDisplay = \"\" + \"File\";\r\n\r\n if (this.ResourceAccess.length > 0) this.ResourceAccess += \" | \";\r\n this.ResourceAccess += this.FilenameDisplay;\r\n }\r\n }\r\n\r\n matchesFilter(categories: any, topics: any, formats: any, sources: any, languages: any, viruses: any, expertiseLevels: any): boolean {\r\n\r\n //if (this.Name == \"ImmPort\") {\r\n // console.log(categories, this.Category, categories.includes(this.Category));\r\n // console.log(topics, this.Topic, topics.includes(this.Topic));\r\n // console.log(formats, this.Format, formats.includes(this.Format));\r\n // console.log(sources, this.Source, sources.includes(this.Source));\r\n // console.log(expertiseLevels, this.ExpertiseLevel, expertiseLevels.includes(this.ExpertiseLevel));\r\n // console.log(languages, this.LanguageList, DoArraysOverlap(languages, this.LanguageList));\r\n // console.log(viruses, this.VirusList, DoArraysOverlap(viruses, this.VirusList));\r\n //}\r\n\r\n if (!categories.includes(this.Category)) return false;\r\n if (!topics.includes(this.Topic)) return false;\r\n if (!formats.includes(this.Format)) return false;\r\n if (!sources.includes(this.Source)) return false;\r\n if (!expertiseLevels.includes(this.ExpertiseLevel)) return false;\r\n\r\n if (!DoArraysOverlap(languages, this.LanguageList)) return false;\r\n if (!DoArraysOverlap(viruses, this.VirusList)) return false;\r\n\r\n return true;\r\n }\r\n}","\r\n//Durstenfeld Approach: https://en.wikipedia.org/wiki/Fisher%E2%80%93Yates_shuffle#The_modern_algorithm\r\nexport function ShuffleArray(array: any[]) {\r\n for (let i = array.length - 1; i > 0; i--) {\r\n const j = Math.floor(Math.random() * (i + 1));\r\n [array[i], array[j]] = [array[j], array[i]];\r\n }\r\n}\r\n\r\nexport function SplitAndJoin(input: string, splitDelimiter: string, outputDelimiter: string, sort: boolean, nowrap: boolean = false): string {\r\n let list: string[] = input.split(splitDelimiter);\r\n if (sort) { list.sort(); }\r\n let output: string = \"\";\r\n list.forEach((item: string, index: number) => {\r\n if (index > 0) output += outputDelimiter;\r\n if (nowrap) output += \"\";\r\n output += item;\r\n if (nowrap) output += \"\";\r\n });\r\n return output;\r\n}\r\n\r\nexport function Split(input: string, delimiter: string): string[] {\r\n let parts: string[] = input.split(delimiter);\r\n parts = parts.map((p: string) => p.trim());\r\n return parts;\r\n}\r\n\r\nexport function Join(list: string[], outputDelimiter: string, sort: boolean, nowrap: boolean = false): string {\r\n if (sort) { list.sort(); }\r\n let output: string = \"\";\r\n list.forEach((item: string, index: number) => {\r\n if (index > 0) output += outputDelimiter;\r\n if (nowrap) output += \"\";\r\n output += item;\r\n if (nowrap) output += \"\";\r\n });\r\n return output;\r\n}\r\n\r\nexport function Unique(values: string[], sort: boolean, lastValues: string[] = []): string[] {\r\n\r\n values = values.map((val: string) => {\r\n if (val.startsWith(\"Other\")) return \"Other\";\r\n else return val;\r\n });\r\n\r\n let unique: string[] = values.filter((n, i) => values.indexOf(n) === i);\r\n if (sort) {\r\n lastValues = lastValues.map((v: string) => v.toLowerCase());\r\n\r\n unique = unique.sort((a: string, b: string) => {\r\n a = a.toLowerCase();\r\n b = b.toLowerCase();\r\n \r\n if (lastValues.length == 0) { return (a > b ? 1 : -1); }\r\n else {\r\n let isALastValue: boolean = false;\r\n let isBLastValue: boolean = false;\r\n\r\n lastValues.forEach((v: string) => {\r\n if (a.startsWith(v)) { isALastValue = true; }\r\n if (b.startsWith(v)) { isBLastValue = true; }\r\n });\r\n\r\n if (!isALastValue && !isBLastValue) { return (a > b ? 1 : -1); }\r\n else if (isALastValue && !isBLastValue) {\r\n return 1;\r\n }\r\n else if (!isALastValue && isBLastValue) {\r\n return -1;\r\n }\r\n else {\r\n return (a > b ? 1 : -1);\r\n }\r\n }\r\n\r\n //if (a.startsWith(v) && b.startsWith(v)) { return (a > b ? 1 : -1); }\r\n //else if (a.startsWith(v)) { return 1; }\r\n //else if (b.startsWith(v)) { return -1; }\r\n //else return (a > b ? 1 : -1);\r\n\r\n\r\n });\r\n\r\n //unique.sort();\r\n }\r\n return unique; \r\n}\r\n\r\nexport function FormatStringByWordLength(value: string, wordsOnLine: number): string {\r\n let parts: string[] = value.split(\" \");\r\n let output: string = \"\";\r\n for (let i = 0; i < parts.length; ++i) {\r\n output += parts[i] + \" \";\r\n if (i == (wordsOnLine - 1)) {\r\n output += \"\";\r\n }\r\n }\r\n\r\n if (parts.length < (wordsOnLine - 1)) { output += \"\"; }\r\n return output.trim();\r\n}\r\n\r\nexport function DoArraysOverlap(array1: any, array2: any): boolean {\r\n if (array1 == undefined || array2 == undefined) return false;\r\n return array1.some(r => array2.includes(r));\r\n}\r\n\r\nexport function NoWordWrap(input: string): string {\r\n return \"\" + input + \"\";\r\n}\r\n\r\nexport function CheckArrayStartsWith(array: string[], startsWithValue: string, appendValue: string): string[] {\r\n\r\n let includesValue: number = array.findIndex((value) => value.startsWith(startsWithValue));\r\n\r\n if (includesValue == -1) { return array; }\r\n else { array.push(appendValue); return array; }\r\n}","import { InitializeFilterDropdown, GetSelectedDropdownValues, ResetDropdownFilters, IFilter } from '../../../../shared/scripts/filtering';\r\nimport { DoArraysOverlap, Unique } from '../../../../shared/scripts/array-functions';\r\nimport { BiodirectoryCombinedEntity, BiodirectoryReagent, BiodirectorySpecimen, Pathogen, PathogenCardDisplay } from '../../biodirectory-form/scripts/biodirectory-form.objects'\r\nimport { plainToClass } from 'class-transformer';\r\nimport { Path } from 'leaflet';\r\nexport class BiodirectoryModal implements IFilter { \r\n currentSite: BiodirectoryCombinedEntity = null;\r\n pathogenList: Pathogen[] = [];\r\n\r\n constructor(pathogenList: Pathogen[], callbackFn: Function = () => { }) {\r\n this.pathogenList = pathogenList;\r\n this.initializeFilters();\r\n\r\n // optionally run a callback function after the selector is generated\r\n callbackFn();\r\n \r\n }\r\n\r\n initializeFilters(): void {\r\n InitializeFilterDropdown('#modal-pathogens-dropdown', [], this);\r\n InitializeFilterDropdown('#modal-specimen-source-dropdown', [], this);\r\n InitializeFilterDropdown('#modal-specimen-type-dropdown', [], this);\r\n InitializeFilterDropdown('#modal-reagent-type-dropdown', [], this);\r\n InitializeFilterDropdown('#modal-reagent-source-dropdown', [], this);\r\n }\r\n\r\n prepopulateModal(site: BiodirectoryCombinedEntity) {\r\n this.currentSite = site;\r\n this.updateGeneralContent();\r\n this.updateFilterOptions();\r\n }\r\n\r\n updateGeneralContent(): void {\r\n if (this.currentSite == null) return;\r\n\r\n $(\"#biodirectory-site-title\").text(this.currentSite.ResearchSite.Name);\r\n $(\"#biodirectory-site-rc\").text(this.currentSite.ResearchCenter.Name);\r\n $(\"#biodirectory-site-country\").text(`${this.currentSite.Country.Name} (${this.currentSite.Country.Region})`);\r\n $(\"#biodirectory-specimen-poc\").html(`${this.currentSite.BiodirectoryResearchSite.SpecimenPOCEmail == null ? \"Not Specified\" : `${this.currentSite.BiodirectoryResearchSite.SpecimenPOCFirstName} ${this.currentSite.BiodirectoryResearchSite.SpecimenPOCLastName} (${this.currentSite.BiodirectoryResearchSite.SpecimenPOCEmail})`}`);\r\n $(\"#biodirectory-reagent-poc\").html(`${this.currentSite.BiodirectoryResearchSite.ReagentPOCEmail == null ? \"Not Specified\" : `${this.currentSite.BiodirectoryResearchSite.ReagentPOCFirstName} ${this.currentSite.BiodirectoryResearchSite.ReagentPOCLastName} (${this.currentSite.BiodirectoryResearchSite.ReagentPOCEmail})`}`);\r\n $(\"#biodirectory-last-updated\").text(this.currentSite.BiodirectoryResearchSite.MoreRecentDateDisplay);\r\n }\r\n\r\n updateFilterOptions(): void {\r\n if (this.currentSite == null) return;\r\n\r\n // Empty Dropdowns\r\n $(\"#modal-pathogens-dropdown\").empty();\r\n $(\"#modal-specimen-source-dropdown\").empty();\r\n $(\"#modal-specimen-type-dropdown\").empty();\r\n $(\"#modal-reagent-type-dropdown\").empty();\r\n $(\"#modal-reagent-source-dropdown\").empty();\r\n\r\n // Update Options ------\r\n // Pathogens\r\n let pathogenIds: string[] = [];\r\n this.currentSite.BiodirectorySpecimens.forEach(specimen => {\r\n specimen.PathogenIdArray.forEach(pathogenId => {\r\n if (!pathogenIds.includes(pathogenId)) {\r\n pathogenIds.push(pathogenId);\r\n }\r\n })\r\n });\r\n this.currentSite.BiodirectoryReagents.forEach(reagent => {\r\n reagent.PathogenIdArray.forEach(pathogenId => {\r\n if (!pathogenIds.includes(pathogenId)) {\r\n pathogenIds.push(pathogenId);\r\n }\r\n })\r\n });\r\n let foundPathogens: Pathogen[] = [];\r\n pathogenIds.forEach(pathogenId => {\r\n let numId = parseInt(pathogenId);\r\n let foundPathogen = this.pathogenList.find(pathogen => pathogen.PathogenId == numId);\r\n if (foundPathogen != undefined) {\r\n foundPathogens.push(foundPathogen);\r\n }\r\n });\r\n foundPathogens.sort((x1, x2) => x1.VirusName.localeCompare(x2.VirusName));\r\n\r\n let selectedPathogens = GetSelectedDropdownValues(\"#specimen-pathogen-dropdown\");\r\n foundPathogens.forEach(pathogen => {\r\n let isSelected = selectedPathogens.includes(pathogen.PathogenId.toString());\r\n $(\"#modal-pathogens-dropdown\").append(new Option(pathogen.VirusName, pathogen.PathogenId.toString(), false, isSelected))\r\n });\r\n\r\n // Specimens\r\n let specimenSourceArray = this.currentSite.SpecimenSourceString.split(\", \");\r\n let selectedSpecimenSources = GetSelectedDropdownValues(\"#specimen-source-dropdown\");\r\n specimenSourceArray.forEach(source => {\r\n let isSelected = selectedSpecimenSources.includes(source);\r\n $(\"#modal-specimen-source-dropdown\").append(new Option(source, source, false, isSelected));\r\n })\r\n let specimenTypeArray = this.currentSite.SpecimenTypeString.split(\", \");\r\n let selectedSpecimenTypes = GetSelectedDropdownValues(\"#specimen-type-dropdown\");\r\n specimenTypeArray.forEach(type => {\r\n let isSelected = selectedSpecimenTypes.includes(type);\r\n $(\"#modal-specimen-type-dropdown\").append(new Option(type, type, false, isSelected));\r\n });\r\n\r\n // Reagents\r\n let reagentSourceArray = this.currentSite.ReagentSourceString.split(\", \");\r\n let selectedReagentSources = GetSelectedDropdownValues(\"#reagent-source-dropdown\");\r\n reagentSourceArray.forEach(source => {\r\n let isSelected = selectedReagentSources.includes(source);\r\n $(\"#modal-reagent-source-dropdown\").append(new Option(source, source, false, isSelected));\r\n });\r\n let reagentTypeArray = this.currentSite.ReagentTypeString.split(\", \");\r\n let selectedReagentTypes = GetSelectedDropdownValues(\"#reagent-type-dropdown\");\r\n reagentTypeArray.forEach(type => {\r\n let isSelected = selectedReagentTypes.includes(type);\r\n $(\"#modal-reagent-type-dropdown\").append(new Option(type, type, false, isSelected));\r\n })\r\n \r\n\r\n // Update Dropdowns\r\n $(\"#modal-pathogens-dropdown\").selectpicker('refresh');\r\n $(\"#modal-specimen-source-dropdown\").selectpicker('refresh');\r\n $(\"#modal-specimen-type-dropdown\").selectpicker('refresh');\r\n $(\"#modal-reagent-type-dropdown\").selectpicker('refresh');\r\n $(\"#modal-reagent-source-dropdown\").selectpicker('refresh');\r\n\r\n this.triggerFilter();\r\n \r\n }\r\n\r\n updateCardDisplay(filteredPathogenCards: PathogenCardDisplay[]): void {\r\n $(\".biodirectory-pathogen-section\").empty();\r\n\r\n // For each pathogen, create a card\r\n let site = this.currentSite;\r\n let pathogenContent = `
`\r\n if (filteredPathogenCards.length == 0) {\r\n pathogenContent += `
`;\r\n pathogenContent += \"No Found Pathogens.\";\r\n }\r\n else {\r\n for (let i = 0; i < filteredPathogenCards.length; i++) {\r\n let pathogenCard = filteredPathogenCards[i];\r\n let pathogen = pathogenCard.Pathogen;\r\n let foundSpecimens = pathogenCard.Specimens;\r\n let foundReagents = pathogenCard.Reagents;\r\n\r\n let specimenContent = \"\";\r\n if (foundSpecimens.length == 0) {\r\n specimenContent = `
No Associated Specimens
`;\r\n }\r\n else {\r\n specimenContent = `
    `\r\n foundSpecimens.forEach(specimen => {\r\n specimenContent += `
  • ${specimen.SpecimenSource} (${specimen.SpecimenType})
  • `\r\n })\r\n specimenContent += `
`\r\n }\r\n\r\n let reagentContent = \"\";\r\n if (foundReagents.length == 0) {\r\n reagentContent = `
No Associated Reagents
`;\r\n }\r\n else {\r\n reagentContent = `
    `\r\n foundReagents.forEach(reagent => {\r\n reagentContent += `
  • ${reagent.ReagentSource} (${reagent.ReagentType})
  • `\r\n })\r\n reagentContent += `
`\r\n }\r\n\r\n let cardContent = `\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n ${pathogen.VirusName}
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n Specimens \r\n ${specimenContent}\r\n
\r\n Reagents\r\n ${reagentContent}\r\n
\r\n
\r\n
`\r\n\r\n let cardContainer = `\r\n
\r\n ${cardContent}\r\n
\r\n `\r\n\r\n pathogenContent += cardContainer;\r\n }\r\n }\r\n \r\n pathogenContent += `
`\r\n $(\".biodirectory-pathogen-section\").html(pathogenContent);\r\n\r\n // Custom Collapse Toggle\r\n $(\".card-collapse\").on('click', function () {\r\n \r\n let targetId = $(this).data(\"target\");\r\n if ($(targetId).hasClass(\"show\")) {\r\n $(this).removeClass(\"active\");\r\n }\r\n else {\r\n $(this).addClass(\"active\");\r\n }\r\n })\r\n \r\n }\r\n\r\n\r\n triggerFilter(): void {\r\n let filteredSpecimens = this.currentSite.BiodirectorySpecimens;\r\n let filteredReagents = this.currentSite.BiodirectoryReagents;\r\n\r\n // Get List of Pathogens\r\n let targetedPathogenIds: string[] = [];\r\n filteredSpecimens.forEach(specimen => {\r\n specimen.PathogenIdArray.forEach(pathogenId => {\r\n if (!targetedPathogenIds.includes(pathogenId)) {\r\n targetedPathogenIds.push(pathogenId);\r\n }\r\n })\r\n });\r\n filteredReagents.forEach(reagent => {\r\n reagent.PathogenIdArray.forEach(pathogenId => {\r\n if (!targetedPathogenIds.includes(pathogenId)) {\r\n targetedPathogenIds.push(pathogenId);\r\n }\r\n })\r\n })\r\n let selectedPathogenIds: string[] = GetSelectedDropdownValues(\"#modal-pathogens-dropdown\");\r\n let foundPathogens: Pathogen[] = [];\r\n selectedPathogenIds.forEach(pathogenId => {\r\n let numId = parseInt(pathogenId);\r\n let foundPathogen = this.pathogenList.find(pathogen => pathogen.PathogenId == numId);\r\n if (foundPathogen != undefined) {\r\n if (targetedPathogenIds.includes(foundPathogen.PathogenId.toString())) {\r\n foundPathogens.push(foundPathogen);\r\n }\r\n }\r\n });\r\n foundPathogens.sort((x1, x2) => x1.VirusName.localeCompare(x2.VirusName));\r\n\r\n let pathogenCards: PathogenCardDisplay[] = [];\r\n foundPathogens.forEach(pathogen => {\r\n let assocatiedSpecimens = filteredSpecimens.filter(specimen => specimen.PathogenIdArray.includes(pathogen.PathogenId.toString()));\r\n let associatedReagents = filteredReagents.filter(reagent => reagent.PathogenIdArray.includes(pathogen.PathogenId.toString()));\r\n\r\n pathogenCards.push(new PathogenCardDisplay(pathogen, assocatiedSpecimens, associatedReagents));\r\n })\r\n\r\n pathogenCards.sort((x1, x2) => x1.Pathogen.VirusName.localeCompare(x2.Pathogen.VirusName));\r\n\r\n let selectedSpecimenSources: string[] = GetSelectedDropdownValues(\"#modal-specimen-source-dropdown\");\r\n if (selectedSpecimenSources.length > 0) {\r\n pathogenCards = pathogenCards.filter(pathogenCard => DoArraysOverlap(pathogenCard.SpecimenSourceArray, GetSelectedDropdownValues(\"#modal-specimen-source-dropdown\")));\r\n }\r\n let selectedSpecimenTypes: string[] = GetSelectedDropdownValues(\"#modal-specimen-type-dropdown\");\r\n if (selectedSpecimenTypes.length > 0) {\r\n pathogenCards = pathogenCards.filter(pathogenCard => DoArraysOverlap(pathogenCard.SpecimenTypeArray, GetSelectedDropdownValues(\"#modal-specimen-type-dropdown\")));\r\n }\r\n let selectedReagentTypes: string[] = GetSelectedDropdownValues(\"#modal-reagent-type-dropdown\");\r\n if (selectedReagentTypes.length > 0) {\r\n pathogenCards = pathogenCards.filter(pathogenCard => DoArraysOverlap(pathogenCard.ReagentTypeArray, GetSelectedDropdownValues(\"#modal-reagent-type-dropdown\")));\r\n }\r\n let selectedReagentSources: string[] = GetSelectedDropdownValues(\"#modal-reagent-source-dropdown\");\r\n if (selectedReagentSources.length > 0) {\r\n pathogenCards = pathogenCards.filter(pathogenCard => DoArraysOverlap(pathogenCard.ReagentSourceArray, GetSelectedDropdownValues(\"#modal-reagent-source-dropdown\")))\r\n }\r\n\r\n\r\n \r\n\r\n this.updateCardDisplay(pathogenCards);\r\n }\r\n\r\n \r\n\r\n}\r\n","// extracted by mini-css-extract-plugin","\r\n\r\n\r\n\r\nexport function InitializeFilterDropdown(selectId: string, values: string[], tableFilter: IFilter, compoundValues: any[] = undefined, selected: boolean = true): void {\r\n $(selectId).selectpicker({\r\n dropupAuto: false,\r\n selectedTextFormat: \"count\",\r\n\r\n countSelectedText: (numSelected, numTotal) => {\r\n if (numSelected == numTotal) {\r\n return \"All\";\r\n }\r\n else {\r\n return numSelected + \" Selected\";\r\n }\r\n }\r\n });\r\n\r\n if (compoundValues == undefined) {\r\n values.forEach((element: any) => {\r\n $(selectId).append(new Option(element, element, false, selected));\r\n });\r\n }\r\n else {\r\n compoundValues.forEach((element: any[]) => {\r\n $(selectId).append(new Option(element[1], element[0], false, selected));\r\n });\r\n }\r\n\r\n $(selectId).selectpicker(\"refresh\");\r\n\r\n $(selectId).on('changed.bs.select', (e, clickedIndex, isSelected, previousValue) => {\r\n tableFilter.triggerFilter();\r\n });\r\n}\r\n\r\nexport function GetSelectedDropdownValues(selectId: string): any {\r\n return $(selectId).val();\r\n}\r\n\r\nexport interface IFilter {\r\n triggerFilter(): void;\r\n}","\r\n\r\n\r\n\r\nexport class TableColumnVisibilityController {\r\n\r\n tableId: string;\r\n columnGroups: TableColumnGroup[];\r\n\r\n constructor(tableId: string, dropdownDivId: string, columnGroups: TableColumnGroup[]) {\r\n this.tableId = tableId;\r\n this.columnGroups = columnGroups;\r\n\r\n $(dropdownDivId).empty().html(\"
\");\r\n\r\n $('#column-filter-dropdown').selectpicker({\r\n dropupAuto: false,\r\n selectedTextFormat: \"count\",\r\n\r\n countSelectedText: (numSelected, numTotal) => {\r\n if (numSelected == numTotal) {\r\n return \"All Available\";\r\n }\r\n else {\r\n return numSelected + \" Selected\";\r\n }\r\n }\r\n });\r\n this.columnGroups.forEach((group: TableColumnGroup) => {\r\n $('#column-filter-dropdown').append(new Option(group.name, group.name, false, group.visible));\r\n });\r\n $('#column-filter-dropdown').selectpicker(\"refresh\");\r\n\r\n\r\n $('#column-filter-dropdown').on('changed.bs.select', (e, clickedIndex, isSelected, previousValue) => {\r\n this.updateColumnVisibility();\r\n });\r\n this.updateColumnVisibility();\r\n\r\n }\r\n\r\n refresh(): void {\r\n $('#column-filter-dropdown').selectpicker(\"refresh\");\r\n }\r\n\r\n updateColumnVisibility(): void {\r\n\r\n let values: string[] = ($('#column-filter-dropdown').val());\r\n\r\n let visibleColumns: number[] = [];\r\n let visibleStyles: string[] = [];\r\n let hiddenColumns: number[] = [];\r\n let hiddenStyles: string[] = [];\r\n this.columnGroups.forEach((colgroup: TableColumnGroup) => {\r\n if (values.includes(colgroup.name)) {\r\n visibleColumns.push(...colgroup.columns);\r\n if (colgroup.columnStyle.length > 0) { visibleStyles.push(colgroup.columnStyle); }\r\n }\r\n else {\r\n hiddenColumns.push(...colgroup.columns);\r\n if (colgroup.columnStyle.length > 0) { hiddenStyles.push(colgroup.columnStyle); }\r\n }\r\n });\r\n\r\n var table = $(this.tableId).DataTable();\r\n if (hiddenColumns.length > 0) { table.columns(hiddenColumns).visible(false, false); }\r\n if (visibleColumns.length > 0) { table.columns(visibleColumns).visible(true, false); }\r\n\r\n hiddenStyles.forEach((style: string) => {\r\n table.columns('.' + style).visible(false, false);\r\n });\r\n visibleStyles.forEach((style: string) => {\r\n table.columns('.' + style).visible(true, false);\r\n });\r\n\r\n table.columns.adjust().draw(false); // adjust column sizing and redraw\r\n\r\n }\r\n}\r\n\r\n\r\nexport class TableColumnGroup {\r\n name: string;\r\n visible: boolean;\r\n columns: number[];\r\n columnStyle: string;\r\n\r\n constructor(name: string, visible: boolean, columns: number[], columnStyle: string) {\r\n this.name = name;\r\n this.visible = visible;\r\n this.columns = columns;\r\n this.columnStyle = columnStyle;\r\n }\r\n}","// extracted by mini-css-extract-plugin","import { InitializeFilterDropdown, GetSelectedDropdownValues, ResetDropdownFilters, IFilter } from '../../../../shared/scripts/filtering';\r\nimport { Unique } from '../../../../shared/scripts/array-functions';\r\nimport { BiodirectoryContact } from '../scripts/biodirectory-form.objects';\r\nimport { plainToClass } from 'class-transformer';\r\nexport class ContactSelect implements IFilter {\r\n\r\n contactList: BiodirectoryContact[] = [];\r\n contactSelectId: string;\r\n\r\n contactBlock: JQuery;\r\n firstNameInput: JQuery;\r\n lastNameInput: JQuery;\r\n emailInput: JQuery;\r\n\r\n constructor(contactSelectId: string, contactList: BiodirectoryContact[], callbackFn: Function = () => { }) {\r\n\r\n this.contactList = contactList;\r\n this.contactSelectId = contactSelectId;\r\n this.contactBlock = $(this.contactSelectId).closest(\".contact-selection-block\");\r\n\r\n this.initializeContactDropdown();\r\n\r\n this.firstNameInput = this.contactBlock.find(\".first-name-input\");\r\n this.lastNameInput = this.contactBlock.find(\".last-name-input\");\r\n this.emailInput = this.contactBlock.find(\".email-input\");\r\n\r\n // optionally run a callback function after the selector is generated\r\n callbackFn();\r\n \r\n }\r\n\r\n initializeContactDropdown(): void {\r\n InitializeFilterDropdown(this.contactSelectId, [], this, this.contactList.map((contact: BiodirectoryContact) => [contact.DropdownDisplay, contact.Email]), false);\r\n\r\n /*let contactBlock = $(this.contactSelectId).closest(\".contact-selection-block\");*/\r\n this.contactBlock.find(\".reset-contact-search-btn\").on('click', () => {\r\n this.resetSearchBar();\r\n })\r\n\r\n }\r\n\r\n checkIfData(): boolean {\r\n if (this.firstNameInput.val() == \"\" && this.lastNameInput.val() == \"\" && this.emailInput.val() == \"\") {\r\n return false;\r\n }\r\n else {\r\n return true;\r\n }\r\n }\r\n\r\n contactValidation(): boolean {\r\n this.resetValidation();\r\n let isValid = true;\r\n\r\n if (this.firstNameInput.val() == \"\" || this.lastNameInput.val() == \"\" || this.emailInput.val() == \"\") {\r\n isValid = false;\r\n\r\n this.firstNameInput.val() == \"\" ? this.firstNameInput.addClass(\"is-invalid\") : this.firstNameInput.addClass(\"is-valid\");\r\n this.lastNameInput.val() == \"\" ? this.lastNameInput.addClass(\"is-invalid\") : this.lastNameInput.addClass(\"is-valid\");\r\n this.emailInput.val() == \"\" ? this.emailInput.addClass(\"is-invalid\") : this.emailInput.addClass(\"is-valid\");\r\n this.contactBlock.find(\".contact-invalid-feedback\").removeClass(\"d-none\");\r\n }\r\n\r\n return isValid;\r\n\r\n }\r\n\r\n resetValidation(): void {\r\n\r\n this.firstNameInput.removeClass(\"is-valid\"); this.firstNameInput.removeClass(\"is-invalid\");\r\n this.lastNameInput.removeClass(\"is-valid\"); this.lastNameInput.removeClass(\"is-invalid\");\r\n this.emailInput.removeClass(\"is-valid\"); this.emailInput.removeClass(\"is-invalid\");\r\n this.contactBlock.find(\".contact-invalid-feedback\").addClass(\"d-none\");\r\n }\r\n\r\n // Runs when the item is changed in the dropdown\r\n triggerFilter(): void {\r\n let searchValue = $(this.contactSelectId).val();\r\n\r\n if (searchValue == \"\" || searchValue == undefined) {\r\n this.resetValues(); \r\n }\r\n else {\r\n let foundContact: BiodirectoryContact = this.contactList.find(contact => contact.Email == searchValue);\r\n\r\n if (foundContact == undefined) {\r\n this.resetValues();\r\n }\r\n else {\r\n this.setValues(foundContact);\r\n }\r\n }\r\n\r\n }\r\n\r\n resetValues(): void {\r\n this.resetValidation();\r\n\r\n this.firstNameInput.val(\"\");\r\n this.lastNameInput.val(\"\");\r\n this.emailInput.val(\"\");\r\n }\r\n\r\n setValues(contact: BiodirectoryContact): void {\r\n this.resetValidation();\r\n\r\n this.firstNameInput.val(contact.FirstName);\r\n this.lastNameInput.val(contact.LastName);\r\n this.emailInput.val(contact.Email);\r\n }\r\n\r\n getAddedContact(): BiodirectoryContact {\r\n let addedContact: BiodirectoryContact = new BiodirectoryContact(\r\n this.firstNameInput.val().toString(),\r\n this.lastNameInput.val().toString(),\r\n this.emailInput.val().toString(),\r\n );\r\n\r\n return addedContact;\r\n }\r\n\r\n resetSearchBar(): void {\r\n $(this.contactSelectId).val(\"\").trigger(\"change\");\r\n }\r\n\r\n \r\n\r\n}\r\n","import { OrrEvent, OrrKeyPerson, OrrKeyAsset, OrrFinancial, OrrTigerTeam, OrrPartner, OrrKeyAssetMapping} from \"./orr-tracker.objects\";\r\nimport { plainToClass } from \"class-transformer\";\r\nimport { Unique } from \"../../../shared/scripts/array-functions\";\r\nimport { TableColumnVisibilityController, TableColumnGroup } from \"../../../shared/scripts/table-column-visibility\";\r\nimport { DocumentTree } from \"../../../shared/components/document-tree/document-tree\";\r\nimport { FormatDate2 } from './../../../shared/scripts/date-functions';\r\n\r\n\r\nexport class OrrTrackerPage {\r\n\r\n orrEvents: OrrEvent[]\r\n dataTable: any;\r\n filterDropdownIds: string[];\r\n tableColumnController: TableColumnVisibilityController;\r\n keyPersonnelTable: any;\r\n financialsTable: any;\r\n tigerTeamTable: any;\r\n partnersTable: any;\r\n allFiles: OrrKeyAsset[] = [];\r\n keyAssetsFiles: OrrKeyAsset[] = [];\r\n allCountryFiles: OrrKeyAsset[] = []; \r\n baseCommunicationDocuments: OrrKeyAsset[] = [];\r\n constructor(data: any, documents: any, countryDocuments: any, communicationDocuments: any) {\r\n $(() => {\r\n this.orrEvents = plainToClass(OrrEvent, data);\r\n this.orrEvents.sort((a: OrrEvent, b: OrrEvent) => a.ReportDate < b.ReportDate ? 1 : -1);\r\n this.orrEvents.map((data: OrrEvent) => {\r\n data.initialize();\r\n return data;\r\n });\r\n\r\n //console.log(this.orrEvents);\r\n\r\n try {\r\n this.allFiles = plainToClass(OrrKeyAsset, documents);\r\n this.allCountryFiles = plainToClass(OrrKeyAsset, countryDocuments);\r\n this.baseCommunicationDocuments = plainToClass(OrrKeyAsset, communicationDocuments);\r\n }\r\n catch {\r\n console.log(\"Error converting the documents to class\");\r\n console.log(documents);\r\n console.log(countryDocuments);\r\n console.log(communicationDocuments);\r\n }\r\n\r\n this.filterDropdownIds = [\"#pathogen-dropdown\", \"#country-dropdown\", \"#stage-dropdown\", \"#center-dropdown\"]\r\n this.initializeFilters();\r\n this.initializeTableInteractions();\r\n\r\n this.initializeTable();\r\n this.setEventsFoundLabel(this.orrEvents.length);\r\n\r\n // For Multiple Modals\r\n $('body').on('hidden.bs.modal', function () {\r\n if ($('.modal.show').length > 0) {\r\n $('body').addClass('modal-open');\r\n }\r\n });\r\n\r\n });\r\n }\r\n\r\n initializeFilters(): void {\r\n // Dropdowns\r\n let pathogenList: string[] = [];\r\n let countryList: string[] = [];\r\n let centerList: string[] = [];\r\n this.orrEvents.map((orrEvent: OrrEvent) => {\r\n orrEvent.Pathogens.forEach((pathogen) => pathogenList.push(pathogen.Virus));\r\n orrEvent.Countries.forEach((country) => countryList.push(country.CountryName));\r\n orrEvent.ResearchCenters.forEach((center) => centerList.push(center.Name));\r\n })\r\n pathogenList = Unique(pathogenList, true);\r\n countryList = Unique(countryList, true);\r\n centerList = Unique(centerList, true);\r\n\r\n this.initializeDropdown('#pathogen-dropdown', pathogenList);\r\n this.initializeDropdown('#country-dropdown', countryList);\r\n this.initializeDropdown('#stage-dropdown', Unique(this.orrEvents.map((orrEvent: OrrEvent) => orrEvent.Status), true));\r\n this.initializeDropdown('#center-dropdown', centerList);\r\n\r\n // Report Dates\r\n $(\"#report-after-input\").val(\"2020-01-01\");\r\n $(\"#report-before-input\").val(this.getStringDate(new Date()));\r\n\r\n $(\"#report-after-input\").change(() => this.filterOutbreakEvents())\r\n $(\"#report-before-input\").change(() => this.filterOutbreakEvents())\r\n }\r\n\r\n initializeTable(): void {\r\n this.dataTable = $('#orr-tracker-table').DataTable({\r\n //\"dom\": '<\"top-controls\"<\"message-section\">f>rtip',\r\n \"dom\": '<\"top-controls\"<\"column-select\">fB>rtip',\r\n autoWidth: false,\r\n info: false,\r\n paging: false,\r\n search: true,\r\n scrollX: false,\r\n //scrollY: '70vh',\r\n orderCellsTop: true,\r\n language:\r\n {\r\n search: \"Search\",\r\n },\r\n columns: [\r\n { data: \"OutbreakId\", className: \"outbreak-id outbreakId-col text-left font-size11 text-nowrap\"}, //0\r\n { data: \"Status\", className: \"status text-left font-size12\" }, //7\r\n { data: \"DisplayPathogens\", className: \"pathogens text-left font-size12\", width: \"200px\" }, //2\r\n { data: \"DisplayCountries\", className: \"countries text-left font-size12\", width: \"200px\" }, //3\r\n { data: { _: \"ReportDate\", display: \"DisplayReportDate\" }, className: \"report-date reportDate-col text-left font-size12 text-nowrap\"}, //4\r\n { data: \"DisplayResearchCenters\", className: \"research-centers text-left font-size12\", width: \"200px\" }, //6\r\n { data: { _: \"ClosedDate\", display: \"DisplayClosedDate\" }, className: \"closed-date closedDate-col text-left font-size12 text-nowrap\"}, //5\r\n { data: \"ViewDetailsBtn\", className: \"view-details text-left font-size12\" }, //1 \r\n ],\r\n order: [4],\r\n buttons: [\r\n {\r\n extend: 'csv',\r\n text: '',\r\n titleAttr: 'CSV',\r\n charset: 'utf-8',\r\n }],\r\n data: this.orrEvents,\r\n initComplete: (settings, json) => {\r\n $(\"#orr-tracker-table\").wrap(\"
\");\r\n },\r\n });\r\n\r\n $(\".top-controls\").addClass('row px-3 align-items-center');\r\n $(\".column-select\").addClass('col-12 col-md-3 px-0 mr-3');\r\n $(\".column-select\").empty().html('
');\r\n $(\".dt-buttons\").addClass(\"ml-auto align-self-end mb-1\");\r\n\r\n this.tableColumnController = new TableColumnVisibilityController('#orr-tracker-table', '#column-select', [\r\n new TableColumnGroup(\"Outbreak Id\", true, [], \"outbreak-id\"),\r\n new TableColumnGroup(\"View Details\", true, [], \"view-details\"),\r\n new TableColumnGroup(\"Pathogen\", true, [], \"pathogens\"),\r\n new TableColumnGroup(\"Country\", true, [], \"countries\"),\r\n new TableColumnGroup(\"Report Date\", true, [], \"report-date\"),\r\n new TableColumnGroup(\"Closed Date\", true, [], \"closed-date\"),\r\n new TableColumnGroup(\"CREID Center\", true, [], \"research-centers\"),\r\n new TableColumnGroup(\"CREID Stage\", true, [], \"status\")\r\n ]);\r\n\r\n\r\n $('#orr-tracker-table').on('search.dt', (e, settings) => {\r\n this.setEventsFoundLabel(this.dataTable.rows({ search: 'applied' }).count());\r\n });\r\n\r\n $('#orr-tracker-table tbody').on('click', 'tr', (event) => {\r\n var tr = $(event.currentTarget);\r\n var row = this.dataTable.row(tr);\r\n let orrEvent: OrrEvent = row.data();\r\n this.generateModal(orrEvent);\r\n });\r\n\r\n // Modal Clicks\r\n $(\".modal-section-heading a\").click(function () { $(this).children().first().toggleClass(\"show-content\") });\r\n }\r\n\r\n initializeDropdown(selectId: string, values: string[]): void {\r\n $(selectId).selectpicker({\r\n dropupAuto: false,\r\n selectedTextFormat: \"count\",\r\n\r\n countSelectedText: (numSelected, numTotal) => {\r\n if (numSelected == numTotal) {\r\n return \"All\";\r\n }\r\n else {\r\n return numSelected + \" Selected\";\r\n }\r\n }\r\n });\r\n\r\n values.forEach((element: any) => {\r\n $(selectId).append(new Option(element, element, false, true));\r\n });\r\n $(selectId).selectpicker(\"refresh\");\r\n\r\n $(selectId).on('changed.bs.select', (e, clickedIndex, isSelected, previousValue) => {\r\n this.filterOutbreakEvents();\r\n });\r\n }\r\n\r\n filterOutbreakEvents(): void {\r\n\r\n let matchingEvents: OrrEvent[] = [];\r\n\r\n let eventMatches: boolean;\r\n\r\n this.orrEvents.forEach((orrEvent: OrrEvent) => {\r\n\r\n eventMatches = true; //must match all filters\r\n\r\n\r\n if (!orrEvent.matchesFilter(this.getSelectedDropdownValues('#pathogen-dropdown'), this.getSelectedDropdownValues('#country-dropdown'), this.getSelectedDropdownValues('#stage-dropdown'), this.getSelectedDropdownValues('#center-dropdown'), $(\"#report-before-input\").val(), $(\"#report-after-input\").val())) {\r\n eventMatches = false;\r\n }\r\n \r\n\r\n if (eventMatches) { matchingEvents.push(orrEvent); }\r\n\r\n });\r\n\r\n this.updateTable(matchingEvents);\r\n }\r\n\r\n getSelectedDropdownValues(selectId: string): any {\r\n //return $(selectId).selectpicker('val');\r\n return $(selectId).val();\r\n }\r\n\r\n updateTable(matchingEvents: OrrEvent[]): void {\r\n this.dataTable.clear();\r\n this.dataTable.rows.add(matchingEvents).draw();\r\n this.setEventsFoundLabel(matchingEvents.length);\r\n }\r\n\r\n resetFilters(): void {\r\n\r\n this.filterDropdownIds.forEach((dropdownId: string) => {\r\n $(dropdownId).selectpicker('selectAll');\r\n $(dropdownId).selectpicker('refresh');\r\n });\r\n\r\n this.dataTable.search('').draw();\r\n\r\n $(\"#report-after-input\").val(\"2020-01-01\");\r\n\r\n $(\"#report-before-input\").val(this.getStringDate(new Date()));\r\n\r\n this.updateTable(this.orrEvents);\r\n }\r\n\r\n setEventsFoundLabel(count: number): void {\r\n\r\n switch (count) {\r\n case 0: $('#outbreaks-found-count').text(\"No Outbreak Events Found\"); break;\r\n case 1: $('#outbreaks-found-count').text(\"1 Outbreak Event Found\"); break;\r\n default: $('#outbreaks-found-count').text(count + \" Outbreak Events Found\");\r\n }\r\n }\r\n\r\n getStringDate(date: Date): string {\r\n var date = new Date();\r\n\r\n var day = (\"0\" + date.getDate()).slice(-2);\r\n var month = (\"0\" + (date.getMonth() + 1)).slice(-2);\r\n\r\n let returnDate = date.getFullYear() + \"-\" + month + \"-\" + day;\r\n\r\n return returnDate.toString();\r\n }\r\n\r\n generateModal(orrEvent: OrrEvent): void {\r\n // Title + Heading\r\n $(\"#modal-title\").text(orrEvent.OutbreakId);\r\n $(\"#modal-last-updated\").text(FormatDate2(orrEvent.LastUpdated));\r\n $(\"#modal-outbreak-id\").text(orrEvent.OutbreakId);\r\n $(\"#modal-title-pathogen\").text(orrEvent.DisplayPathogens);\r\n $(\"#modal-title-country\").text(orrEvent.DisplayCountries);\r\n\r\n // CREID Stage\r\n $(\".modal-stage-button-container\").removeClass(\"active\");\r\n let stageString = orrEvent.Status.toLowerCase();\r\n let stageId = \"#modal-\" + stageString;\r\n $(stageId).addClass(\"active\");\r\n\r\n // Modal Section Headings\r\n $(\".modal-section-heading a span\").addClass(\"show-content\");\r\n $(\".modal-section-content\").addClass(\"show\");\r\n\r\n // Sit Rep\r\n if (orrEvent.SitutationReport != \"\") {\r\n $(\"#modal-sit-rep\").html(orrEvent.SitutationReport);\r\n }\r\n else {\r\n $(\"#modal-sit-rep\").text(\"No Situation Report associated with this outbreak.\");\r\n }\r\n\r\n // Key Personnel\r\n this.initializeKeyPersonnelTable(orrEvent);\r\n\r\n //Outbreak Details\r\n $(\"#modal-details-outbreak-id\").text(orrEvent.OutbreakId);\r\n $(\"#modal-details-pathogen\").text(orrEvent.DisplayPathogens);\r\n $(\"#modal-details-country\").text(orrEvent.DisplayCountries);\r\n $(\"#modal-details-rc\").text(orrEvent.DisplayResearchCenters);\r\n $(\"#modal-details-report-date\").text(orrEvent.DisplayReportDate);\r\n $(\"#modal-details-closed-date\").text(orrEvent.DisplayClosedDate);\r\n\r\n // Key Assets\r\n this.initializeKeyAssets(orrEvent);\r\n\r\n // External Resources\r\n this.initializeExternalResources(orrEvent);\r\n\r\n // Collaboration Opportunities\r\n if (orrEvent.CollaborationOpportunities != \"\") {\r\n $(\"#modal-collab-opportunities\").removeClass(\"text-center\");\r\n $(\"#modal-collab-opportunities\").html(orrEvent.CollaborationOpportunities);\r\n }\r\n else {\r\n $(\"#modal-collab-opportunities\").addClass(\"text-center\");\r\n $(\"#modal-collab-opportunities\").text(\"No Collaboration Opportunities/Requests associated with this outbreak.\")\r\n }\r\n\r\n // Estimated Financial Support\r\n this.initializeFinancialSupportTable(orrEvent);\r\n\r\n // Tiger Team\r\n this.initializeTigerTeamTable(orrEvent);\r\n\r\n // Partners + Stakeholders\r\n this.initializePartnersTable(orrEvent);\r\n\r\n $(\"#view-outbreak-modal\").modal('show');\r\n }\r\n\r\n initializeTableInteractions() {\r\n $('#key-personnel-table').on('click', 'tr', (event) => {\r\n //var tr = $(event.currentTarget).closest('tr');\r\n var tr = $(event.currentTarget);\r\n var row = this.keyPersonnelTable.row(tr);\r\n\r\n if (row.child.isShown()) {\r\n // This row is already open - close it\r\n row.child.hide();\r\n tr.removeClass('shown');\r\n }\r\n else {\r\n if (row.data() != undefined) {\r\n // Open this row\r\n row.child(this.createPersonnelDetailRow(row.data())).show();\r\n tr.addClass('shown');\r\n }\r\n }\r\n });\r\n\r\n $('#financial-support-table').on('click', 'tr', (event) => {\r\n //var tr = $(event.currentTarget).closest('tr');\r\n var tr = $(event.currentTarget);\r\n var row = this.financialsTable.row(tr);\r\n\r\n if (row.child.isShown()) {\r\n // This row is already open - close it\r\n row.child.hide();\r\n tr.removeClass('shown');\r\n }\r\n else {\r\n if (row.data() != undefined) {\r\n // Open this row\r\n row.child(this.createFinancialDetailRow(row.data())).show();\r\n tr.addClass('shown');\r\n }\r\n }\r\n });\r\n\r\n $('#tiger-team-table').on('click', 'tr', (event) => {\r\n //var tr = $(event.currentTarget).closest('tr');\r\n var tr = $(event.currentTarget);\r\n var row = this.tigerTeamTable.row(tr);\r\n\r\n if (row.child.isShown()) {\r\n // This row is already open - close it\r\n row.child.hide();\r\n tr.removeClass('shown');\r\n }\r\n else {\r\n if (row.data() != undefined) {\r\n // Open this row\r\n row.child(this.createTigerTeamRow(row.data())).show();\r\n tr.addClass('shown');\r\n }\r\n }\r\n });\r\n\r\n $('#partners-table').on('click', 'tr', (event) => {\r\n //var tr = $(event.currentTarget).closest('tr');\r\n var tr = $(event.currentTarget);\r\n var row = this.partnersTable.row(tr);\r\n\r\n if (row.child.isShown()) {\r\n // This row is already open - close it\r\n row.child.hide();\r\n tr.removeClass('shown');\r\n }\r\n else {\r\n if (row.data() != undefined) {\r\n // Open this row\r\n row.child(this.createPartnerRow(row.data())).show();\r\n tr.addClass('shown');\r\n }\r\n }\r\n });\r\n }\r\n\r\n initializeKeyPersonnelTable(orrEvent: OrrEvent): void {\r\n // remove previous table if it already exists\r\n if (this.keyPersonnelTable != undefined) this.keyPersonnelTable.destroy();\r\n\r\n this.keyPersonnelTable = $('#key-personnel-table').DataTable({\r\n //\"dom\": '<\"top-controls\"<\"message-section\">f>rtip',\r\n \"dom\": '<\"top-controls\">prti',\r\n autoWidth: false,\r\n info: false,\r\n paging: true,\r\n pageLength: 5,\r\n search: false,\r\n scrollX: false,\r\n \"language\": {\r\n \"emptyTable\": \"No Key Personnel associated with this outbreak.\"\r\n },\r\n //scrollY: '70vh',\r\n orderCellsTop: true,\r\n columns: [\r\n { className: 'details-control', orderable: false, data: null, defaultContent: '', width: '20px' }, //0\r\n { data: \"DisplayOrganization\", className: \"text-left font-size12\" }, //1\r\n ],\r\n data: orrEvent.OrrKeyPersonnel,\r\n initComplete: (settings, json) => {\r\n $(\"#key-personnel-table\").wrap(\"
\");\r\n },\r\n }); \r\n\r\n if (orrEvent.OrrKeyPersonnel.length <= 5) {\r\n $(\"#key-personnel-table_paginate\").addClass(\"d-none\");\r\n }\r\n }\r\n\r\n createPersonnelDetailRow(data: OrrKeyPerson): string {\r\n\r\n let detailRow: string = '';\r\n\r\n detailRow += ' ' +\r\n '' +\r\n '' +\r\n '';\r\n\r\n\r\n detailRow += ' ' +\r\n '' +\r\n '' +\r\n '';\r\n\r\n detailRow += ' ' +\r\n '' +\r\n '' +\r\n '';\r\n\r\n detailRow += ' ' +\r\n '' +\r\n '' +\r\n '';\r\n \r\n detailRow += \"
Name' + data.DisplayFullName + '
Email' + `${data.Email}` + '
Organization' + data.Organization + '
Research Center' + `${data.ResearchCenter ? data.ResearchCenter.Name : ''}` + '
\"\r\n return detailRow\r\n }\r\n\r\n initializeKeyAssets(orrEvent: OrrEvent) {\r\n this.keyAssetsFiles = [];\r\n let existingRootFolders: OrrKeyAssetMapping[] = [];\r\n\r\n try {\r\n this.allFiles.forEach((file) => {\r\n if (file.id.startsWith(`documents/${orrEvent.OutbreakId}/`)) {\r\n this.keyAssetsFiles.push(new OrrKeyAsset().initialize(file, orrEvent.OutbreakId));\r\n }\r\n });\r\n }\r\n catch (err) {\r\n console.log(\"Error Creating Key Asset File Array\");\r\n console.log(err);\r\n console.log(\"All ORR Files from S3:\");\r\n console.log(this.allFiles);\r\n }\r\n \r\n\r\n // check to see what root folders are present\r\n try {\r\n this.keyAssetsFiles.forEach(file => {\r\n if (file.parent == \"#\" && file.type == 0) {\r\n let folderName = file.id.split(\"/\")[2];\r\n\r\n if (!existingRootFolders.find(folder => folder.folderName == folderName)) {\r\n existingRootFolders.push(new OrrKeyAssetMapping(folderName, file.id))\r\n }\r\n }\r\n })\r\n }\r\n catch (err) {\r\n console.log(\"Error Remapping Folder Names\");\r\n console.log(err);\r\n console.log(\"Key Asset Files for Outbreak:\");\r\n console.log(this.keyAssetsFiles);\r\n }\r\n \r\n\r\n // include any country related files\r\n try {\r\n orrEvent.Countries.forEach(country => {\r\n this.allCountryFiles.forEach(file => {\r\n\r\n if (file.id.startsWith(`documents/_country-documents/${country.CountryAbbreviation}/`)) {\r\n let newAsset = new OrrKeyAsset().initialize(file, orrEvent.OutbreakId, existingRootFolders);\r\n\r\n // if the asset is a new root folder, add it to the list of existing root folders\r\n if (newAsset.type == 0 && newAsset.parent == \"#\") {\r\n let folderName = newAsset.id.split(\"/\")[3];\r\n\r\n if (!existingRootFolders.find(folder => folder.folderName == folderName)) {\r\n existingRootFolders.push(new OrrKeyAssetMapping(folderName, file.id))\r\n }\r\n }\r\n\r\n this.keyAssetsFiles.push(newAsset);\r\n }\r\n })\r\n });\r\n }\r\n catch (err) {\r\n console.log(\"Error Getting Relevant Country Files\");\r\n console.log(err);\r\n console.log(\"All Country Files from S3:\");\r\n console.log(this.allCountryFiles);\r\n }\r\n\r\n // include communication document files\r\n try {\r\n // add communication resources folder if it is not present\r\n if (!existingRootFolders.find(folder => folder.folderName == \"Communication Resources\")) {\r\n let newCommFolder = new OrrKeyAsset();\r\n newCommFolder.icon = \"fas fa-folder\";\r\n newCommFolder.id = `documents/${orrEvent.OutbreakId}/Communication Resources`;\r\n newCommFolder.link = \"\";\r\n newCommFolder.parent = \"#\";\r\n newCommFolder.state = {\r\n disabled: false,\r\n opened: false,\r\n selected: false\r\n }\r\n newCommFolder.text = \"Communication Resources\";\r\n newCommFolder.type = 0;\r\n existingRootFolders.push(new OrrKeyAssetMapping(\"Communication Resources\", newCommFolder.id));\r\n this.keyAssetsFiles.push(newCommFolder);\r\n }\r\n\r\n this.baseCommunicationDocuments.forEach(file => {\r\n let newAsset = new OrrKeyAsset().initialize(file, orrEvent.OutbreakId, existingRootFolders);\r\n if (newAsset.type != 0) {\r\n newAsset.parent = `documents/${orrEvent.OutbreakId}/Communication Resources`;\r\n }\r\n\r\n this.keyAssetsFiles.push(newAsset);\r\n });\r\n }\r\n catch (err) {\r\n console.log(\"Error Getting Relevant Communication Documents\");\r\n console.log(err);\r\n console.log(\"All Communication Documents:\");\r\n console.log(this.baseCommunicationDocuments);\r\n }\r\n\r\n // Remove any items that are missing parents (moved country documents)\r\n let filteredKeyAssetFiles: OrrKeyAsset[] = [];\r\n this.keyAssetsFiles.forEach(file => {\r\n let foundMatchIndex = this.keyAssetsFiles.findIndex(item => item.id == file.parent);\r\n if (foundMatchIndex >= 0 || file.parent == \"#\") {\r\n filteredKeyAssetFiles.push(file);\r\n }\r\n });\r\n this.keyAssetsFiles = filteredKeyAssetFiles;\r\n\r\n // Sort Key Assets\r\n this.keyAssetsFiles.sort((x1, x2) => x1.text.localeCompare(x2.text));\r\n\r\n try {\r\n $(\".jstree\").remove();\r\n $(\".jstree-container\").append(`
`)\r\n if (this.keyAssetsFiles.length > 0) {\r\n new DocumentTree(this.keyAssetsFiles, `jstree-${orrEvent.OutbreakId}`, false);\r\n }\r\n else {\r\n let noKeyAssetsHtml = `

No Key Assets associated with this outbreak.

`;\r\n $(`#jstree-${orrEvent.OutbreakId}`).html(noKeyAssetsHtml).addClass(\"text-center\");\r\n }\r\n }\r\n catch (err) {\r\n console.log(\"Error With Generating Document Tree\");\r\n console.log(err);\r\n console.log(\"Key Asset Files for Outbreak:\");\r\n console.log(this.keyAssetsFiles);\r\n }\r\n\r\n \r\n }\r\n\r\n initializeExternalResources(orrEvent: OrrEvent) {\r\n $(\"#modal-external-resources\").empty();\r\n\r\n if (orrEvent.OrrExternalResources.length > 0) {\r\n let exResource = \"
    \";\r\n\r\n orrEvent.OrrExternalResources.forEach((resource) => {\r\n exResource += `
  • ${resource.DisplayText}
  • `\r\n })\r\n\r\n exResource += \"
\"\r\n\r\n $(\"#modal-external-resources\").html(exResource);\r\n }\r\n else {\r\n let noResourcesHtml = \"

No external resources associated with this outbreak.

\"\r\n $(\"#modal-external-resources\").html(noResourcesHtml);\r\n }\r\n }\r\n\r\n initializeFinancialSupportTable(orrEvent: OrrEvent) {\r\n // remove previous table if it already exists\r\n if (this.financialsTable != undefined) this.financialsTable.destroy();\r\n\r\n this.financialsTable = $('#financial-support-table').DataTable({\r\n //\"dom\": '<\"top-controls\"<\"message-section\">f>rtip',\r\n \"dom\": '<\"top-controls\">prti',\r\n autoWidth: false,\r\n info: false,\r\n paging: true,\r\n pageLength: 5,\r\n search: false,\r\n scrollX: false,\r\n \"language\": {\r\n \"emptyTable\": \"No Estimated Financial Support associated with this outbreak.\"\r\n },\r\n //scrollY: '70vh',\r\n orderCellsTop: true,\r\n columns: [\r\n { className: 'details-control', orderable: false, data: null, defaultContent: '', width: '20px' }, //0\r\n { data: \"DisplayName\", className: \"text-left font-size12\" },\r\n { data: \"DisplayAmount\", className: \"text-left font-size12\" },//1\r\n ],\r\n data: orrEvent.OrrFinancials,\r\n initComplete: (settings, json) => {\r\n $(\"#financial-support-table\").wrap(\"
\");\r\n },\r\n }); \r\n\r\n if (orrEvent.OrrFinancials.length <= 5) {\r\n $(\"#financial-support-table_paginate\").addClass(\"d-none\");\r\n }\r\n }\r\n\r\n createFinancialDetailRow(data: OrrFinancial) {\r\n let detailRow: string = '';\r\n\r\n detailRow += ' ' +\r\n '' +\r\n '' +\r\n '';\r\n\r\n if (data.SubFundingSource != \"\" && data.SubFundingSource != undefined) {\r\n detailRow += ' ' +\r\n '' +\r\n '' +\r\n '';\r\n } else {\r\n detailRow += ' ' +\r\n '' +\r\n '' +\r\n '';\r\n }\r\n\r\n detailRow += ' ' +\r\n '' +\r\n '' +\r\n '';\r\n\r\n detailRow += \"
Research Center' + `${data.ResearchCenter ? data.ResearchCenter.Name : ''}` + '
Funding Source' + `${data.FundingSource} (${data.SubFundingSource})` + '
Funding Source' + data.FundingSource + '
Amount' + data.DisplayAmount + '
\"\r\n return detailRow\r\n }\r\n\r\n initializeTigerTeamTable(orrEvent: OrrEvent) {\r\n // remove previous table if it already exists\r\n if (this.tigerTeamTable != undefined) this.tigerTeamTable.destroy();\r\n\r\n this.tigerTeamTable = $('#tiger-team-table').DataTable({\r\n //\"dom\": '<\"top-controls\"<\"message-section\">f>rtip',\r\n \"dom\": '<\"top-controls\">prti',\r\n autoWidth: false,\r\n info: false,\r\n paging: true,\r\n pageLength: 5,\r\n search: false,\r\n scrollX: false,\r\n \"language\": {\r\n \"emptyTable\": \"No Tiger Team associated with this outbreak.\"\r\n },\r\n //scrollY: '70vh',\r\n orderCellsTop: true,\r\n columns: [\r\n { className: 'details-control', orderable: false, data: null, defaultContent: '', width: '20px' }, //0\r\n { data: \"DisplayFullName\", className: \"text-left font-size12\" },//1\r\n ],\r\n data: orrEvent.OrrTigerTeam,\r\n initComplete: (settings, json) => {\r\n $(\"#tiger-team-table\").wrap(\"
\");\r\n },\r\n });\r\n\r\n if (orrEvent.OrrTigerTeam.length <= 5) {\r\n $(\"#tiger-team-table_paginate\").addClass(\"d-none\");\r\n }\r\n }\r\n\r\n createTigerTeamRow(data: OrrTigerTeam) {\r\n let detailRow: string = '';\r\n\r\n detailRow += ' ' +\r\n '' +\r\n '' +\r\n '';\r\n\r\n\r\n detailRow += ' ' +\r\n '' +\r\n '' +\r\n '';\r\n\r\n\r\n detailRow += ' ' +\r\n '' +\r\n '' +\r\n '';\r\n\r\n detailRow += ' ' +\r\n '' +\r\n '' +\r\n '';\r\n\r\n detailRow += \"
Name' + data.DisplayFullName + '
Email' + `${data.Email}` + '
Organization' + data.Organization + '
Research Center' + data.RCAffiliation + '
\"\r\n return detailRow\r\n }\r\n\r\n initializePartnersTable(orrEvent: OrrEvent) {\r\n // remove previous table if it already exists\r\n if (this.partnersTable != undefined) this.partnersTable.destroy();\r\n\r\n this.partnersTable = $('#partners-table').DataTable({\r\n //\"dom\": '<\"top-controls\"<\"message-section\">f>rtip',\r\n \"dom\": '<\"top-controls\">prti',\r\n autoWidth: false,\r\n info: false,\r\n paging: true,\r\n pageLength: 5,\r\n search: false,\r\n scrollX: false,\r\n \"language\": {\r\n \"emptyTable\": \"No Partners/Stakeholders associated with this outbreak.\"\r\n },\r\n //scrollY: '70vh',\r\n orderCellsTop: true,\r\n columns: [\r\n { className: 'details-control', orderable: false, data: null, defaultContent: '', width: '20px' }, //0\r\n { data: \"DisplayOrganization\", className: \"text-left font-size12\" },//1\r\n ],\r\n data: orrEvent.OrrPartners,\r\n initComplete: (settings, json) => {\r\n $(\"#partners-table\").wrap(\"
\");\r\n },\r\n }); \r\n\r\n if (orrEvent.OrrPartners.length <= 5) {\r\n $(\"#partners-table_paginate\").addClass(\"d-none\");\r\n }\r\n }\r\n\r\n createPartnerRow(data: OrrPartner) {\r\n let detailRow: string = '';\r\n\r\n\r\n detailRow += ' ' +\r\n '' +\r\n '' +\r\n '';\r\n\r\n\r\n detailRow += ' ' +\r\n '' +\r\n '' +\r\n '';\r\n\r\n\r\n detailRow += ' ' +\r\n '' +\r\n '' +\r\n '';\r\n\r\n detailRow += \"
Organization' + data.Organization + '
Name' + data.DisplayFullName + '
Email' + `${data.Email}` + '
\"\r\n return detailRow\r\n }\r\n\r\n showHelpModal(): void {\r\n $(\"#outbreak-help-modal\").modal('show');\r\n }\r\n}","// extracted by mini-css-extract-plugin","import { SplitAndJoin } from \"../../../shared/scripts/array-functions\";\r\n\r\n\r\nexport class LabAssay {\r\n\r\n ResearchCenter: string = \"\";\r\n SiteId: string;\r\n Site: string = \"\";\r\n Region: string = \"\";\r\n Country: string;\r\n Name: string;\r\n Purpose: string;\r\n Source: string;\r\n DevelopmentStage: string;\r\n //OneOrManyPathogens: string = \"Unknown\";\r\n //Pathogens: string = \"\";\r\n Viruses: string = \"Unknown\";\r\n Diseases: string = \"\";\r\n Families: string = \"\";\r\n GeneralApproach: string = \"\";\r\n AdaptedOutbreak: string;\r\n SpecimenTypes: string;\r\n SpecimenSources: string = \"\";\r\n BiosafetyLevel: string;\r\n //CdcCompliant: string = \"Unknown\";\r\n //CdcAgents: string = \"Unknown\";\r\n //RequireTraining: string;\r\n //TrainingDescription: string = \"Unknown\";\r\n RequireEquipment: string;\r\n EquipmentDescription: string;\r\n RequireReagents: string;\r\n ReagentsDescription: string;\r\n ReagentSource: string;\r\n Repositories: string;\r\n //ProvideMaterial: string = \"Unknown\";\r\n ProvideTraining: string;\r\n ExperienceNeeded: string;\r\n ContactName: string;\r\n ContactEmail: string;\r\n Publications: string;\r\n PublicationsList: string[];\r\n //AvgSamplesPerWeek: string = \"Unknown\";\r\n //MaxSamplesPerWeek: string = \"Unknown\";\r\n SurgeCapacity: string = \"Unknown\";\r\n //HowMuchMaterial: string = \"Unknown\";\r\n //HowToMakeMaterialAvailable: string = \"Unknown\";\r\n //ContributeDocuments: string = \"Unknown\";\r\n //ResultsFileFormat: string = \"Unknown\";\r\n //SizeOfReportPackage: string = \"Unknown\";\r\n UploadedDocument: string;\r\n\r\n GeneralApproachDisplay: string = \"\";\r\n //GeneralApproachFilter: string = \"\";\r\n SpecimenSourcesDisplay: string = \"\";\r\n SpecimenSourcesFilter: string = \"\";\r\n SpecimenTypesDisplay: string = \"\";\r\n VirusesDisplay: string = \"\";\r\n //VirusesFilter: string = \"\";\r\n\r\n HiddenFilter: string = \"\";\r\n\r\n GeneralApproachFilter: string[] = [];\r\n VirusesFilter: string[] = [];\r\n SpeciesFilter: string[] = [];\r\n ResearchCenterFilter: string = \"\";\r\n SiteFilter: string = \"\";\r\n RegionFilter: string = \"\";\r\n\r\n constructor() { }\r\n\r\n initialize(): void {\r\n\r\n //console.log(this);\r\n\r\n if (this.Region == \"\") this.Region = \"Unknown\";\r\n\r\n if (this.GeneralApproach == \"\") { this.GeneralApproach = \"Unknown\"; this.GeneralApproachFilter = this.GeneralApproach.split(\"|\"); this.GeneralApproachDisplay = \"Unknown\"}\r\n else {\r\n //this.GeneralApproachFilter = this.GeneralApproach.split(\"(\").join(\"\").split(\")\").join(\"\");\r\n this.GeneralApproachFilter = this.GeneralApproach.split(\"|\");\r\n this.GeneralApproachDisplay = SplitAndJoin(this.GeneralApproach, \"|\", \", \", false);\r\n }\r\n //this.GeneralApproachFilter = this.GeneralApproach.split(\"(\").join(\"\").split(\")\").join(\"\");\r\n\r\n if (this.SpecimenSources == \"\") {\r\n this.SpecimenSources = \"Unknown\";\r\n }\r\n this.SpecimenSourcesDisplay = SplitAndJoin(this.SpecimenSources, \"|\", \", \", false);\r\n this.SpecimenSourcesFilter = this.SpecimenSources.split(\"(\").join(\"\").split(\")\").join(\"\");\r\n this.SpeciesFilter = this.SpecimenSources.split(\"|\");\r\n\r\n this.SpecimenTypesDisplay = SplitAndJoin(this.SpecimenTypes, \"|\", \", \", false);\r\n\r\n if (this.Viruses == \"\") this.Viruses = \"Unknown\";\r\n\r\n //this.VirusesFilter = this.Viruses.split(\"(\").join(\"\").split(\")\").join(\"\");\r\n this.VirusesFilter = this.Viruses.split(\"|\");\r\n\r\n let pathogenList: string[] = this.Viruses.split('|').sort();\r\n this.VirusesDisplay = \"\";\r\n pathogenList.forEach((pathogen: string, index: number) => {\r\n if (index > 0) this.VirusesDisplay += \", \";\r\n if (pathogen == \"SARS-CoV-2\" || pathogen == \"SARS-CoV\" || pathogen == \"MERS-CoV\")\r\n this.VirusesDisplay += \"\" + pathogen + \"\";\r\n else\r\n this.VirusesDisplay += pathogen;\r\n });\r\n //this.Pathogens = \" \" + pathogenList.join(\" | \") + \" \";\r\n //console.log(this.PathogensDisplay);\r\n\r\n //foreign character encoding triggers the parser to be weird\r\n if (this.ResearchCenter.endsWith(\"TBD\")) this.ResearchCenter = this.ResearchCenter.replace(' TBD', '');\r\n\r\n this.PublicationsList = this.Publications.split(\"|\");\r\n if (this.PublicationsList[0] == \"\") this.PublicationsList = [];\r\n //console.log(this.PublicationsList);\r\n\r\n let detailRows: string[] = [\"Purpose\", \"Source\", \"AdaptedOutbreak\", \"SpecimenTypes\", \"BiosafetyLevel\", \"RequireEquipment\", \"EquipmentDescription\", \"RequireReagents\", \"ReagentSource\", \"Repositories\", \"ReagentsDescription\", \"ProvideTraining\", \"ExperienceNeeded\", \"SurgeCapacity\", \"ContactName\", \"ContactEmail\", \"Country\" ];\r\n detailRows.forEach((field: string) => {\r\n if (this[field] == undefined || this[field] == \"\") {\r\n this[field] = \"Unknown\";\r\n }\r\n });\r\n\r\n this.ResearchCenterFilter = this.ResearchCenter;\r\n this.RegionFilter = this.Region;\r\n this.SiteFilter = this.Site;\r\n\r\n //console.log(this.ContactEmail);\r\n }\r\n\r\n\r\n\r\n}","import { SiteCapacity, ResearchCenter } from \"./site-capacities.objects\";\r\nimport { plainToClass } from \"class-transformer\";\r\nimport { Unique, Split } from \"../../../../shared/scripts/array-functions\";\r\nimport { TableColumnVisibilityController, TableColumnGroup } from \"../../../../shared/scripts/table-column-visibility\";\r\nimport { SiteCapacitiesMap } from \"./site-capacities.map\";\r\n\r\n\r\n\r\n\r\nexport class SiteCapacitiesPage {\r\n\r\n map: SiteCapacitiesMap;\r\n\r\n siteCapacities: SiteCapacity[];\r\n dataTable: any;\r\n tableColumnController: TableColumnVisibilityController;\r\n filterDropdownIds: string[];\r\n\r\n constructor(data: any) {\r\n $(() => {\r\n\r\n //console.log(data);\r\n\r\n let researchCenters: ResearchCenter[] = plainToClass(ResearchCenter, data.ResearchCenters);\r\n\r\n this.siteCapacities = plainToClass(SiteCapacity, data.SiteCapacities);\r\n this.siteCapacities.map((site: SiteCapacity, index: number) => {\r\n site.ResearchCenter = researchCenters.find(rc => rc.RcId == site.RcId);\r\n site.initialize();\r\n\r\n for (let i = index + 1; i < this.siteCapacities.length; ++i) {\r\n if (site.isCloseToPoint(this.siteCapacities[i].CoordLat, this.siteCapacities[i].CoordLon)) {\r\n site.IsMapCluster = true;\r\n this.siteCapacities[i].IsMapCluster = true;\r\n //console.log(site, this.siteCapacities[i]);\r\n }\r\n }\r\n\r\n return site;\r\n });\r\n\r\n //console.log(this.siteCapacities);\r\n\r\n this.filterDropdownIds = ['#site-rc-dropdown', '#site-site-dropdown', '#site-subregion-dropdown', '#site-country-dropdown', '#site-orgtype-dropdown', '#site-disciplines-dropdown', '#site-collectsfrom-dropdown', '#site-pathogens-dropdown',\r\n '#biorepo-isbiorepo-dropdown', '#biorepo-typesfromhosts-dropdown', '#biorepo-typesfromvectors-dropdown', '#biorepo-species-dropdown', '#biorepo-nonhuman-dropdown', '#biorepo-liveisolates-dropdown', '#biorepo-providetraining-dropdown', '#biorepo-surge-dropdown',\r\n '#lab-haslab-dropdown', '#lab-researchfocus-dropdown', '#lab-researchperformed-dropdown', '#lab-biosafety-dropdown', '#lab-selectagent-dropdown',\r\n '#outbreak-areas-dropdown', '#outbreak-nationalassociation-dropdown', '#outbreak-collaborations-dropdown',\r\n '#regulatory-rccommonrule-dropdown', '#regulatory-sitecommonrule-dropdown', '#regulatory-irbapprovalrequirements-dropdown', '#regulatory-sharingrestrictions-dropdown', '#regulatory-indemnity-dropdown',\r\n '#shipping-procurement-receivingtime-dropdown', '#shipping-procurement-sourcedwithincountry-dropdown', '#shipping-procurement-internationalshipping-dropdown', '#shipping-procurement-bioreposhipping-dropdown', '#shipping-procurement-permits-dropdown', '#shipping-procurement-training-dropdown'\r\n ];\r\n\r\n\r\n //console.log(this.siteCapacities);\r\n\r\n this.initializeFilters();\r\n\r\n this.setupTabWatcher();\r\n\r\n this.initializeTable();\r\n this.setSitesFoundLabel(this.siteCapacities.length);\r\n\r\n this.map = new SiteCapacitiesMap();\r\n this.map.setVisibleSites(this.siteCapacities);\r\n });\r\n }\r\n\r\n initializeFilters(): void {\r\n this.initializeDropdown('#site-rc-dropdown', Unique(this.siteCapacities.map((site: SiteCapacity) => site.ResearchCenter.RcName), true));\r\n this.initializeDropdown('#site-site-dropdown', Unique(this.siteCapacities.map((site: SiteCapacity) => site.SiteName), true));\r\n this.initializeDropdown('#site-subregion-dropdown', Unique(this.siteCapacities.map((site: SiteCapacity) => site.SubRegion), true, [\"Unknown\"]));\r\n this.initializeDropdown('#site-country-dropdown', Unique(this.siteCapacities.map((site: SiteCapacity) => site.Country), true, [\"Unknown\"]));\r\n this.initializeDropdown('#site-orgtype-dropdown', Unique(this.siteCapacities.map((site: SiteCapacity) => site.SiteOverview.OrganizationType), true));\r\n this.initializeDropdown('#biorepo-isbiorepo-dropdown', Unique(this.siteCapacities.map((site: SiteCapacity) => site.Biorepo.HasBiorepository), true, [\"Unknown\"]));\r\n this.initializeDropdown('#biorepo-selectagent-dropdown', Unique(this.siteCapacities.map((site: SiteCapacity) => site.Biorepo.ApprovedForSelectAgents), true, [\"Unknown\", \"Not Applicable\"]));\r\n this.initializeDropdown('#biorepo-surge-dropdown', Unique(this.siteCapacities.map((site: SiteCapacity) => site.Biorepo.HasSurgeCapacityToCollectProcessStore), true, [\"Unknown\", \"Not Applicable\"]));\r\n this.initializeDropdown('#lab-haslab-dropdown', Unique(this.siteCapacities.map((site: SiteCapacity) => site.LabFacility.HasLabFacilities), true, [\"Unknown\"]));\r\n this.initializeDropdown('#lab-selectagent-dropdown', Unique(this.siteCapacities.map((site: SiteCapacity) => site.LabFacility.RegisteredWithSelectAgentProgram), true, [\"Unknown\", \"Not Applicable\"]));\r\n this.initializeDropdown('#regulatory-rccommonrule-dropdown', Unique(this.siteCapacities.map((site: SiteCapacity) => site.ResearchCenter.HubIrbCommonRule), true, [\"I do not know\"]));\r\n this.initializeDropdown('#regulatory-sitecommonrule-dropdown', Unique(this.siteCapacities.map((site: SiteCapacity) => site.Regulatory.UtilizeCommonRule), true, [\"Unknown\"]));\r\n this.initializeDropdown('#regulatory-indemnity-dropdown', Unique(this.siteCapacities.map((site: SiteCapacity) => site.Regulatory.RequireIndemnityClause), true, [\"Unknown\"]));\r\n //this.initializeDropdown('#regulatory-irbapprovalrequirements-dropdown', Unique(this.siteCapacities.map((site: SiteCapacity) => site.Regulatory.ApprovalRequirements), true, [\"Unknown\"]));\r\n this.initializeDropdown('#regulatory-sharingrestrictions-dropdown', Unique(this.siteCapacities.map((site: SiteCapacity) => site.Regulatory.AnySharingRestrictions), true, [\"Unknown\"]));\r\n this.initializeDropdown('#shipping-procurement-receivingtime-dropdown', Unique(this.siteCapacities.map((site: SiteCapacity) => site.ShippingProcurement.AverageReceivingTime), true, [\"Unknown\"]));\r\n this.initializeDropdown('#shipping-procurement-sourcedwithincountry-dropdown', Unique(this.siteCapacities.map((site: SiteCapacity) => site.ShippingProcurement.PercentSuppliedWithinCountry), true, [\"Unknown\"]));\r\n this.initializeDropdown('#shipping-procurement-permits-dropdown', Unique(this.siteCapacities.map((site: SiteCapacity) => site.ShippingProcurement.AbleToObtainImportExportPermits), true, [\"Unknown\"]));\r\n this.initializeDropdown('#shipping-procurement-training-dropdown', Unique(this.siteCapacities.map((site: SiteCapacity) => site.ShippingProcurement.TrainingAndCertification), true, [\"Unknown\"]));\r\n\r\n let values: string[] = [];\r\n this.siteCapacities.forEach((site: SiteCapacity) => { values.push(...Split(site.SiteOverview.Disciplines, \"|\")); });\r\n this.initializeDropdown('#site-disciplines-dropdown', Unique(values, true, [\"Unknown\"]));\r\n values = [];\r\n this.siteCapacities.forEach((site: SiteCapacity) => { values.push(...Split(site.SiteOverview.FieldStudyTypeExperience, \"|\")); });\r\n this.initializeDropdown('#site-collectsfrom-dropdown', Unique(values, true, [\"Unknown\"]));\r\n values = [];\r\n this.siteCapacities.forEach((site: SiteCapacity) => { values.push(...Split(site.SiteOverview.PathogensLabAssays, \"|\")); });\r\n this.initializeDropdown('#site-pathogens-dropdown', Unique(values, true, [\"Unknown\"]));\r\n values = [];\r\n this.siteCapacities.forEach((site: SiteCapacity) => { values.push(...Split(site.Biorepo.SampleTypes, \"|\")); });\r\n this.initializeDropdown('#biorepo-sampletypes-dropdown', Unique(values, true, [\"Unknown\", \"Not Applicable\"]));\r\n values = [];\r\n this.siteCapacities.forEach((site: SiteCapacity) => { values.push(...Split(site.Biorepo.BiosafetyLevels, \"|\")); });\r\n this.initializeDropdown('#biorepo-biosafety-dropdown', Unique(values, true, [\"Unknown\", \"Not Applicable\"]));\r\n values = [];\r\n this.siteCapacities.forEach((site: SiteCapacity) => { values.push(...Split(site.Biorepo.SpeciesStored, \"|\")); });\r\n this.initializeDropdown('#biorepo-sourceorganisms-dropdown', Unique(values, true, [\"Unknown\", \"Not Applicable\"]));\r\n //values = [];\r\n //this.siteCapacities.forEach((site: SiteCapacity) => { values.push(...Split(site.Biorepo.ShippingCapacity, \"|\")); });\r\n //this.initializeDropdown('#biorepo-shipping-dropdown', Unique(values, true, [\"Unknown\", \"Not Applicable\"]));\r\n values = [];\r\n this.siteCapacities.forEach((site: SiteCapacity) => { values.push(...Split(site.Biorepo.LiveIsolates, \"|\")); });\r\n this.initializeDropdown('#biorepo-liveisolates-dropdown', Unique(values, true, [\"Unknown\", \"Not Applicable\"]));\r\n values = [];\r\n this.siteCapacities.forEach((site: SiteCapacity) => { values.push(...Split(site.LabFacility.PrimarySiteResearchFocus, \"|\")); });\r\n this.initializeDropdown('#lab-researchfocus-dropdown', Unique(values, true, [\"Unknown\", \"Not Applicable\"]));\r\n //values = [];\r\n //this.siteCapacities.forEach((site: SiteCapacity) => { values.push(...Split(site.LabFacility.PrimarySiteResearchFocus, \"|\")); });\r\n //this.initializeDropdown('#lab-researchfocus-dropdown', Unique(values, true, \"Unknown\"));\r\n values = [];\r\n this.siteCapacities.forEach((site: SiteCapacity) => { values.push(...Split(site.LabFacility.ResearchPerformed, \"|\")); });\r\n this.initializeDropdown('#lab-researchperformed-dropdown', Unique(values, true, [\"Unknown\", \"Not Applicable\"]));\r\n values = [];\r\n this.siteCapacities.forEach((site: SiteCapacity) => { values.push(...Split(site.LabFacility.BiosafetyLevels, \"|\")); });\r\n this.initializeDropdown('#lab-biosafety-dropdown', Unique(values, true, [\"Unknown\", \"Not Applicable\"]));\r\n values = [];\r\n this.siteCapacities.forEach((site: SiteCapacity) => { values.push(...Split(site.OutbreakResearch.OutbreakResponseAreas, \"|\")); });\r\n this.initializeDropdown('#outbreak-areas-dropdown', Unique(values, true, [\"Unknown\"]));\r\n values = [];\r\n this.siteCapacities.forEach((site: SiteCapacity) => { values.push(...Split(site.OutbreakResearch.AssociationWithNationalLabs, \"|\")); });\r\n this.initializeDropdown('#outbreak-nationalassociation-dropdown', Unique(values, true, [\"Unknown\"]));\r\n values = [];\r\n this.siteCapacities.forEach((site: SiteCapacity) => { values.push(...Split(site.OutbreakResearch.CollaborativeEntities, \"|\")); });\r\n this.initializeDropdown('#outbreak-collaborations-dropdown', Unique(values, true, [\"Unknown\"]));\r\n values = [];\r\n this.siteCapacities.forEach((site: SiteCapacity) => { values.push(...Split(site.ShippingProcurement.ShippingCapacity, \"|\")); });\r\n this.initializeDropdown('#shipping-procurement-bioreposhipping-dropdown', Unique(values, true, [\"Unknown\"]));\r\n values = [];\r\n this.siteCapacities.forEach((site: SiteCapacity) => { values.push(...Split(site.ShippingProcurement.InternationalShippingMethod, \"|\")); });\r\n this.initializeDropdown('#shipping-procurement-internationalshipping-dropdown', Unique(values, true, [\"Unknown\"]));\r\n }\r\n\r\n setupTabWatcher(): void {\r\n $('a[data-toggle=\"tab\"]').on('shown.bs.tab', (e) => {\r\n //$($.fn.dataTable.tables(true)).DataTable().columns.adjust();\r\n if (e.currentTarget.id == \"site-overview-tab\") {\r\n ['#site-rc-dropdown', '#site-site-dropdown', '#site-subregion-dropdown', '#site-country-dropdown', '#site-orgtype-dropdown', '#site-disciplines-dropdown', '#site-collectsfrom-dropdown', '#site-pathogens-dropdown'].forEach((id: string) => $(id).selectpicker(\"refresh\"));\r\n }\r\n else if (e.currentTarget.id == \"biorepo-tab\") {\r\n ['#biorepo-isbiorepo-dropdown', '#biorepo-sampletypes-dropdown', '#biorepo-sourceorganisms-dropdown', '#biorepo-liveisolates-dropdown', '#biorepo-biosafety-dropdown', '#biorepo-selectagent-dropdown', '#biorepo-surge-dropdown', '#biorepo-shipping-dropdown'].forEach((id: string) => $(id).selectpicker(\"refresh\"));\r\n }\r\n else if (e.currentTarget.id == \"lab-facility-tab\") {\r\n ['#lab-haslab-dropdown', '#lab-researchfocus-dropdown', '#lab-selectagent-dropdown', '#lab-researchperformed-dropdown', '#lab-biosafety-dropdown'].forEach((id: string) => $(id).selectpicker(\"refresh\"));\r\n }\r\n else if (e.currentTarget.id == \"outbreak-research-tab\") {\r\n ['#outbreak-areas-dropdown', '#outbreak-nationalassociation-dropdown', '#outbreak-collaborations-dropdown'].forEach((id: string) => $(id).selectpicker(\"refresh\"));\r\n }\r\n else if (e.currentTarget.id == \"regulatory-tab\") {\r\n ['#shipping-procurement-receivingtime-dropdown', '#shipping-procurement-sourcedwithincountry-dropdown', '#shipping-procurement-permits-dropdown', '#shipping-procurement-training-dropdown', '#shipping-procurement-bioreposhipping-dropdown', '#shipping-procurement-internationalshipping-dropdown'].forEach((id: string) => $(id).selectpicker(\"refresh\"));\r\n }\r\n });\r\n\r\n $('a[data-toggle=\"pill\"]').on('shown.bs.tab', (e) => {\r\n if (e.currentTarget.id == \"content-datatable-tab\") {\r\n this.dataTable.columns.adjust();\r\n this.tableColumnController.refresh();\r\n }\r\n else if (e.currentTarget.id == \"content-map-tab\") {\r\n this.map.refresh();\r\n }\r\n });\r\n }\r\n\r\n initializeDropdown(selectId: string, values: string[]): void {\r\n $(selectId).selectpicker({\r\n dropupAuto: false,\r\n selectedTextFormat: \"count\",\r\n\r\n countSelectedText: (numSelected, numTotal) => {\r\n if (numSelected == numTotal) {\r\n return \"All\";\r\n }\r\n else {\r\n return numSelected + \" Selected\";\r\n }\r\n }\r\n });\r\n\r\n values.forEach((element: any) => {\r\n $(selectId).append(new Option(element, element, false, true));\r\n });\r\n $(selectId).selectpicker(\"refresh\");\r\n\r\n $(selectId).on('changed.bs.select', (e, clickedIndex, isSelected, previousValue) => {\r\n this.filterSiteCapacities();\r\n });\r\n }\r\n\r\n\r\n initializeTable(): void {\r\n\r\n this.dataTable = $('#site-capacities-table').DataTable({\r\n \"dom\": '<\"top-controls\"<\"column-select\"><\"search-bar\"f><\"spacer\"><\"count-found\"B>>rtip',\r\n //\"dom\": '<\"top-controls\"<\"left-section\"<\"search-bar\"f>><\"right-section\"<\"column-select\">B>rtip',\r\n autoWidth: true,\r\n info: false,\r\n paging: false,\r\n search: true,\r\n scrollX: true,\r\n //responsive: false,\r\n scrollY: '60vh',\r\n scrollCollapse: true,\r\n orderCellsTop: true,\r\n fixedColumns: {\r\n leftColumns: 2\r\n },\r\n language:\r\n {\r\n search: \"Search\",\r\n },\r\n columns: [\r\n { data: { _: \"SiteNameDisplay\", sort: \"SiteName\" }, title: \"Site Name\", className: \"text-left font-size12\" },\r\n { data: { _: \"ResearchCenter.RcNameDisplay\", sort: \"ResearchCenter.RcName\" }, title: \"Research Center\", className: \"text-left font-size12\" },\r\n { data: \"SubRegion\", title: \"Region\", className: \"location text-left font-size12\" },\r\n { data: \"Country\", title: \"Country\", className: \"location text-left font-size12\" },\r\n { data: { _: \"SiteOverview.PocName\", sort: \"SiteOverview.PocLastName\" }, title: \"POC Name\", className: \"poc text-left font-size12\" },\r\n { data: \"SiteOverview.PocTitle\", title: \"POC Title\", className: \"poc text-left font-size12\" },\r\n { data: \"SiteOverview.PocEmail\", title: \"POC Email\", className: \"poc text-left font-size12\" },\r\n { data: \"SiteOverview.PerformsResearch\", title: \"Performs Research\", className: \"siteoverview text-left font-size12\" },\r\n { data: \"SiteOverview.OrganizationType\", title: \"Organization Type\", className: \"siteoverview text-left font-size12\" },\r\n { data: \"SiteOverview.DisciplinesDisplay\", title: \"Disciplines\", className: \"siteoverview text-left font-size12\" }, \r\n { data: \"Biorepo.HasBiorepository\", title: \"Has Biorepository\", className: \"siteoverview text-left font-size12\" },\r\n { data: \"LabFacility.HasLabFacilities\", title: \"Has Lab Facilities\", className: \"siteoverview text-left font-size12\" },\r\n { data: \"SiteOverview.CapacityBuildingTraining\", title: \"Capacity Building Training\", className: \"capacity-building text-left font-size12\" },\r\n { data: \"SiteOverview.BarrierToCapacityTraining\", title: \"Barriers to Capacity Building Training\", className: \"capacity-building text-left font-size12\" },\r\n { data: \"SiteOverview.PathogensDisplay\", title: \"Pathogens (Lab Assays)\", className: \"pathogens text-left font-size12\" },\r\n { data: \"SiteOverview.PathogensActivelyStudied\", title: \"Non-CREID Pathogens Actively Studied\", className: \"pathogens text-left font-size12\" },\r\n { data: \"SiteOverview.PathogensStudiesInPast\", title: \"Pathogens Studied in the Past\", className: \"pathogens text-left font-size12\" },\r\n { data: \"SiteOverview.FieldStudyTypeExperienceDisplay\", title: \"Collects Samples From\", className: \"field-study text-left font-size12\" },\r\n { data: \"SiteOverview.TypesOfAnimalFieldStudies\", title: \"Types of Animal Field Studies\", className: \"field-study text-left font-size12\" },\r\n { data: \"SiteOverview.TypesOfLivestockFieldStudies\", title: \"Types of Livestock Field Studies\", className: \"field-study text-left font-size12\" },\r\n { data: \"SiteOverview.TypesOfEntomologyFieldStudies\", title: \"Types of Entomology Field Studies\", className: \"field-study text-left font-size12\" },\r\n { data: \"SiteOverview.TypesOfHumanFieldStudies\", title: \"Types of Human Field Studies\", className: \"field-study text-left font-size12\" }, \r\n { data: \"Biorepo.SampleTypesDisplay\", title: \"Sample Types\", className: \"bio-samples text-left font-size12\" },\r\n { data: \"Biorepo.SpeciesStoredDisplay\", title: \"Source Organisms\", className: \"bio-samples text-left font-size12\" },\r\n { data: \"Biorepo.LiveIsolatesDisplay\", title: \"Live Isolates\", className: \"bio-samples text-left font-size12\" },\r\n { data: \"Biorepo.SelectAgents\", title: \"Select Agents Approved to Store\", className: \"bio-samples text-left font-size12\" },\r\n { data: \"Biorepo.Temperature\", title: \"Storage Temperatures\", className: \"bio-facilities text-left font-size12\" },\r\n { data: \"Biorepo.BiosafetyLevelsDisplay\", title: \"Biosafety Levels\", className: \"bio-facilities text-left font-size12\" },\r\n { data: \"Biorepo.HasLiquidNitrogen\", title: \"Liquid Nitrogen Storage\", className: \"bio-facilities text-left font-size12\" },\r\n { data: \"Biorepo.BackupGenerator\", title: \"Backup Generators\", className: \"bio-facilities text-left font-size12\" },\r\n //{ data: \"Biorepo.ShippingCapacityDisplay\", title: \"Shipping Capacity\", className: \"bio-facilities text-left font-size12\" },\r\n { data: \"Biorepo.HasSurgeCapacityToCollectProcessStore\", title: \"Surge Capacity\", className: \"bio-facilities text-left font-size12 nowrap\" },\r\n { data: \"Biorepo.HasSops\", title: \"Sample Collection, Processing, and Storage SOPs\", className: \"bio-practices text-left font-size12\" },\r\n { data: \"Biorepo.LevelOfExperienceDuringOutbreak\", title: \"Experience Level to Support Rapid Outbreak Response\", className: \"bio-practices text-left font-size12\" },\r\n { data: \"Biorepo.HasSystemToTrackSamples\", title: \"System for Tracking Samples\", className: \"bio-practices text-left font-size12\" },\r\n { data: \"Biorepo.HasExternalAudit\", title: \"Regular External Review\", className: \"bio-practices text-left font-size12\" },\r\n { data: \"Biorepo.OperateUnderQualitySystems\", title: \"Quality System\", className: \"bio-practices text-left font-size12\" },\r\n { data: \"Biorepo.StaffTraining\", title: \"Staff Training\", className: \"bio-practices text-left font-size12\" },\r\n { data: \"Biorepo.ShareArchivalSamples\", title: \"Can Share Archival Samples\", className: \"bio-practices text-left font-size12\" },\r\n //{ data: \"Biorepo.HasSurgeCapacityToCollectProcessStore\", title: \"Has Surge Capacity to Collect/Process\", className: \"bio-facilities text-left font-size12\" },\r\n //{ data: \"Biorepo.HasSurgeCapacitySpace\", title: \"Has Surge Capacity Space/Equipment\", className: \"bio-facilities text-left font-size12\" },\r\n \r\n //{ data: \"Biorepo.WhyEquipmentOutsideLab\", title: \"Equipment Stored Outside Lab\", className: \"bio-facilities text-left font-size12\" },\r\n //{ data: \"Biorepo.DoesStoreLiveIsolates\", title: \"Stores Live Isolates\", className: \"bio-viral-isolates text-left font-size12\" },\r\n //{ data: \"Biorepo.ApprovedForSelectAgents\", title: \"Stores Select Agents\", className: \"bio-viral-isolates text-left font-size12\" },\r\n { data: \"LabFacility.PrimarySiteResearchFocusDisplay\", title: \"Primary Focus of Lab Site\", className: \"lab-overview text-left font-size12\" },\r\n { data: \"LabFacility.ResearchPerformedDisplay\", title: \"Research Performed at Lab Site\", className: \"lab-overview text-left font-size12\" },\r\n { data: \"LabFacility.BiosafetyLevelsDisplay\", title: \"Biosafety Levels\", className: \"lab-overview text-left font-size12\" },\r\n { data: \"LabFacility.HasNovelTechnologyPlatform\", title: \"Has Novel Technology Platform\", className: \"lab-overview text-left font-size12\" },\r\n { data: \"LabFacility.NovelTechnologyPlatform\", title: \"Novel Technology Platform\", className: \"lab-overview text-left font-size12\" },\r\n { data: \"LabFacility.ExperienceLevelRequired\", title: \"Experience Level Required (1 to 5)\", className: \"lab-overview text-left font-size12\" },\r\n { data: \"LabFacility.LabAssistanceNeed\", title: \"Lab Assistance Needed\", className: \"lab-overview text-left font-size12\" },\r\n { data: \"LabFacility.PreClinicalAnimalStudies\", title: \"Performs Pre-Clinical Animal Studies\", className: \"lab-overview text-left font-size12\" },\r\n { data: \"LabFacility.PreclinicalSpeciesAndModels\", title: \"Pre-Clinical Species and Models\", className: \"lab-overview text-left font-size12\" },\r\n { data: \"LabFacility.ExternalSystemOversight\", title: \"Operates Under External Quality System/Program Oversight\", className: \"lab-oversight text-left font-size12\" },\r\n { data: \"LabFacility.ParticipateInAccreditationProficiencyTesting\", title: \"Programs for Proficiency Training\", className: \"lab-oversight text-left font-size12\" },\r\n { data: \"LabFacility.ExternalAuditReview\", title: \"External Audit of Lab Procedures\", className: \"lab-oversight text-left font-size12\" },\r\n { data: \"LabFacility.ExternalReviewers\", title: \"Types of External Audits\", className: \"lab-oversight text-left font-size12\" },\r\n { data: \"LabFacility.ExternalProficiencyTesting\", title: \"Use External Proficiency Testing\", className: \"lab-oversight text-left font-size12\" },\r\n { data: \"LabFacility.NameOfExternalProgram\", title: \"Name of External Proficiency Program\", className: \"lab-oversight text-left font-size12\" },\r\n { data: \"LabFacility.RegisteredWithSelectAgentProgram\", title: \"Registered with Select Agent Program\", className: \"lab-training text-left font-size12\" },\r\n { data: \"LabFacility.SelectAgents\", title: \"Select Agents\", className: \"lab-training text-left font-size12\" },\r\n { data: \"LabFacility.RequireAdditionalTraining\", title: \"Require Additional Training\", className: \"lab-training text-left font-size12\" },\r\n { data: \"LabFacility.AdditionalTraining\", title: \"Additional Training\", className: \"lab-training text-left font-size12\" },\r\n { data: \"OutbreakResearch.OutbreakResponseAreasDisplay\", title: \"Outbreak Response Area\", className: \"outbreak text-left font-size12\" },\r\n { data: \"OutbreakResearch.CurrentlyInvolvedInOneHealthInitiative\", title: \"Involved with OneHealth Initiative\", className: \"outbreak text-left font-size12\" },\r\n //{ data: \"OutbreakResearch.RelationshipWithGovernment\", title: \"Relationship with Government\", className: \"outbreak text-left font-size12\" },\r\n //{ data: \"OutbreakResearch.InCountryAuthorityDuringOutbreak\", title: \"In-Country Authority During Outbreak\", className: \"outbreak text-left font-size12\" },\r\n //{ data: \"OutbreakResearch.RelationshipWithOneHealth\", title: \"Relationship with OneHealth\", className: \"outbreak text-left font-size12\" },\r\n { data: \"OutbreakResearch.AssociationWithNationalLabsDisplay\", title: \"National Lab Association\", className: \"outbreak text-left font-size12\" },\r\n { data: \"OutbreakResearch.CollaborativeEntitiesDisplay\", title: \"Collaborative Entities\", className: \"outbreak text-left font-size12\" },\r\n //{ data: \"OutbreakResearch.InCountryInstitutions\", title: \"In-Country Institutions\", className: \"outbreak text-left font-size12\" },\r\n //{ data: \"OutbreakResearch.InCountryOrganizations\", title: \"In-Country Organizations\", className: \"outbreak text-left font-size12\" },\r\n //{ data: \"OutbreakResearch.OutbreakChallenge1\", title: \"Outbreak Challenge 1\", className: \"outbreak text-left font-size12\" },\r\n //{ data: \"OutbreakResearch.OutbreakChallenge2\", title: \"Outbreak Challenge 2\", className: \"outbreak text-left font-size12\" },\r\n //{ data: \"OutbreakResearch.OutbreakChallenge3\", title: \"Outbreak Challenge 3\", className: \"outbreak text-left font-size12\" },\r\n { data: \"ResearchCenter.HubIrbCommonRule\", title: \"RC IRB Follows Common Rule\", className: \"regulatory-rc-irb text-left font-size12\" },\r\n { data: \"ResearchCenter.HubSinceWhenCommonRule\", title: \"RC IRB Common Rule Since\", className: \"regulatory-rc-irb text-left font-size12\" },\r\n { data: \"ResearchCenter.HubHowManyIrbs.\", title: \"RC How Many IRBs\", className: \"regulatory-rc-irb text-left font-size12\" },\r\n { data: \"ResearchCenter.HubIrbNames\", title: \"RC IRB Name\", className: \"regulatory-rc-irb text-left font-size12\" },\r\n { data: \"ResearchCenter.HubHowOftenIrbMeet\", title: \"RC How Often IRB Meets\", className: \"regulatory-rc-irb text-left font-size12\" },\r\n { data: \"ResearchCenter.HubIrbReviewTime\", title: \"RC IRB Review Time\", className: \"regulatory-rc-irb text-left font-size12\" },\r\n { data: \"ResearchCenter.HubIrbExpeditedReviewTime\", title: \"RC IRB Expedited Review Time\", className: \"regulatory-rc-irb text-left font-size12\" },\r\n { data: \"ResearchCenter.HubIrbHurdles\", title: \"RC IRB Hurdles\", className: \"regulatory-rc-irb text-left font-size12\" },\r\n { data: \"Regulatory.AnySharingRestrictions\", title: \"Biorepo: Restrictions to Sharing\", className: \"regulatory-site-biorepo text-left font-size12\" },\r\n { data: \"Regulatory.SharingRestrictions\", title: \"Biorepo: Sharing Restrictions\", className: \"regulatory-site-biorepo text-left font-size12\" },\r\n { data: \"Regulatory.RequireIndemnityClause\", title: \"Biorepo: Require Indemnity Clause\", className: \"regulatory-site-biorepo text-left font-size12\" },\r\n { data: \"Regulatory.CentralizedAssistanceNeed\", title: \"Biorepo: Centralized Assistance Need\", className: \"regulatory-site-biorepo text-left font-size12\" },\r\n { data: \"Regulatory.UtilizeCommonRule\", title: \"Site IRB Follows Common Rule\", className: \"regulatory-site-irb text-left font-size12\" },\r\n { data: \"Regulatory.IrbName\", title: \"Site IRB Name\", className: \"regulatory-site-irb text-left font-size12\" },\r\n { data: \"Regulatory.IrbMeetingFrequency\", title: \"Site IRB Meeting Frequency\", className: \"regulatory-site-irb text-left font-size12\" },\r\n { data: \"Regulatory.AverageReviewTimeline\", title: \"Site IRB Average Review Time\", className: \"regulatory-site-irb text-left font-size12\" },\r\n { data: \"Regulatory.MinimumExpeditedTimeline\", title: \"Site IRB Expedited Review Time\", className: \"regulatory-site-irb text-left font-size12\" },\r\n //{ data: \"Regulatory.ApprovalRequirements\", title: \"Site IRB Approval Requirements\", className: \"regulatory-site-irb text-left font-size12\" },\r\n //{ data: \"Regulatory.RequirePeriodicReview\", title: \"Site IRB Requires Periodic Review\", className: \"regulatory-site-irb text-left font-size12\" },\r\n //{ data: \"Regulatory.ContinuationDependOnPeriodicReview.\", title: \"Site IRB Continuation Depends on Periodic Review\", className: \"regulatory-site-irb text-left font-size12\" },\r\n //{ data: \"Regulatory.ImmediateReportingOfSAE\", title: \"Site IRB Immediate Reporting of SAE\", className: \"regulatory-site-irb text-left font-size12\" },\r\n //{ data: \"Regulatory.ImmediateReportingOfProtocolViolations\", title: \"Site IRB Immedite Reporting of Protocol Violations\", className: \"regulatory-site-irb text-left font-size12\" },\r\n //{ data: \"Regulatory.GreatestOutbreakIrbHurdles\", title: \"Site IRB Greatest Outbreak Hurdles\", className: \"regulatory-site-irb text-left font-size12\" },\r\n { data: \"ShippingProcurement.AverageReceivingTime\", title: \"Average Receiving Time for Critical Materials\", className: \"shipping-site-info text-left font-size12\" },\r\n { data: \"ShippingProcurement.PercentSuppliedWithinCountry\", title: \"Amount of Materials Sourced within Country\", className: \"shipping-site-info text-left font-size12\" },\r\n { data: \"ShippingProcurement.AccessToLargerPortal\", title: \"Can Acquire Material Through Larger Portal\", className: \"shipping-site-info text-left font-size12\" },\r\n { data: \"ShippingProcurement.AbleToObtainImportExportPermits\", title: \"Able to Obtain Import/Export Permits\", className: \"shipping-site-info text-left font-size12\" },\r\n { data: \"ShippingProcurement.TimelineToObtainPermits\", title: \"Timeline to Obtain Permits\", className: \"shipping-site-info text-left font-size12\" },\r\n { data: \"ShippingProcurement.InternationalShippingMethodDisplay\", title: \"International Shipping Method\", className: \"shipping-site-info text-left font-size12\" },\r\n { data: \"ShippingProcurement.ShippingCapacityDisplay\", title: \"Biorepo: Shipping Capacity\", className: \"shipping-biorep text-left font-size12\" },\r\n { data: \"ShippingProcurement.AccessToInternationalCouriers\", title: \"Biorepo: Access to International Couriers\", className: \"shipping-biorep text-left font-size12\" },\r\n { data: \"ShippingProcurement.AbleToObtainPermits\", title: \"Biorepo: Able to Obtain Permits\", className: \"shipping-biorep text-left font-size12\" },\r\n { data: \"ShippingProcurement.TrainingAndCertification\", title: \"Biorepo: Have Shipping Training and Certification\", className: \"shipping-biorep text-left font-size12\" },\r\n { data: \"ShippingProcurement.TypesOfTraining\", title: \"Biorepo: Trainings Completed\", className: \"shipping-biorep text-left font-size12\" },\r\n\r\n ],\r\n buttons: [\r\n {\r\n extend: 'csv',\r\n text: '',\r\n titleAttr: 'CSV',\r\n charset: 'utf-8',\r\n }\r\n ],\r\n data: this.siteCapacities,\r\n //order: [[5, 'desc'], [1, 'asc']],\r\n initComplete: (settings, json) => {\r\n //$(\"#hub-details-table\").wrap(\"
\");\r\n },\r\n });\r\n\r\n $(\".top-controls\").addClass('row mx-0');\r\n\r\n $(\".column-select\").addClass('col-12 col-md-3 px-0');\r\n $(\".column-select\").empty().html('
');\r\n\r\n $(\".search-bar\").addClass('col-12 col-md-3');\r\n\r\n $(\".spacer\").addClass('col-12 col-md-3');0\r\n $(\".count-found\").addClass('col-12 col-md-3 d-flex justify-content-end vertical-align-middle mt-2');\r\n //$(\".count-found\").prepend('
');\r\n $(\".count-found\").prepend('
');\r\n\r\n this.tableColumnController = new TableColumnVisibilityController('#site-capacities-table', '#column-select', [\r\n new TableColumnGroup(\"Site Location\", false, [], \"location\"),\r\n new TableColumnGroup(\"Point of Contact (POC)\", false, [], \"poc\"),\r\n new TableColumnGroup(\"Site Overview\", true, [], \"siteoverview\"),\r\n new TableColumnGroup(\"Pathogens\", false, [], \"pathogens\"),\r\n new TableColumnGroup(\"Capacity Building\", false, [], \"capacity-building\"),\r\n new TableColumnGroup(\"Field Study Information\", false, [], \"field-study\"),\r\n new TableColumnGroup(\"Biorepository - Samples\", false, [], \"bio-samples\"),\r\n new TableColumnGroup(\"Biorepository - Facilities\", false, [], \"bio-facilities\"),\r\n new TableColumnGroup(\"Biorepository - Practices\", false, [], \"bio-practices\"),\r\n new TableColumnGroup(\"Lab Facilities - Overview\", false, [], \"lab-overview\"),\r\n new TableColumnGroup(\"Lab Facilities - Oversight & Proficiency\", false, [], \"lab-oversight\"),\r\n new TableColumnGroup(\"Lab Facilities - Select Agent & Training\", false, [], \"lab-training\"),\r\n new TableColumnGroup(\"Outbreak Response\", false, [], \"outbreak\"),\r\n new TableColumnGroup(\"Regulatory - Research Center IRB\", false, [], \"regulatory-rc-irb\"),\r\n new TableColumnGroup(\"Regulatory - Site IRB\", false, [], \"regulatory-site-irb\"),\r\n new TableColumnGroup(\"Regulatory - Biorepository\", false, [], \"regulatory-site-biorepo\"),\r\n new TableColumnGroup(\"Shipping & Procurement - Site Info\", false, [], \"shipping-site-info\"),\r\n new TableColumnGroup(\"Shipping & Procurement - Biorepository\", false, [], \"shipping-biorep\"),\r\n ]);\r\n\r\n $('#site-capacities-table').on('search.dt', (e, settings) => {\r\n this.setSitesFoundLabel(this.dataTable.rows({ search: 'applied' }).count());\r\n });\r\n }\r\n\r\n filterSiteCapacities(): void {\r\n\r\n let matchingSites: SiteCapacity[] = [];\r\n\r\n //if (this.isFilterApplied('#site-rc-dropdown')) {\r\n \r\n //}\r\n\r\n let siteMatches: boolean;\r\n this.siteCapacities.forEach((site: SiteCapacity) => {\r\n\r\n siteMatches = true; //must match all filters\r\n\r\n if (!site.ResearchCenter.matchesFilter(this.getSelectedDropdownValues('#site-rc-dropdown'), this.getSelectedDropdownValues('#regulatory-rccommonrule-dropdown'))) {\r\n siteMatches = false;\r\n //if (site.SiteId == 24) console.log(\"RC\");\r\n }\r\n else if (!site.matchesFilter(this.getSelectedDropdownValues('#site-site-dropdown'), this.getSelectedDropdownValues('#site-subregion-dropdown'), this.getSelectedDropdownValues('#site-country-dropdown'))) {\r\n siteMatches = false;\r\n //if (site.SiteId == 24) console.log(\"Site\");\r\n }\r\n else if (!site.SiteOverview.matchesFilter(this.getSelectedDropdownValues('#site-orgtype-dropdown'), this.getSelectedDropdownValues('#site-disciplines-dropdown'), this.getSelectedDropdownValues('#site-collectsfrom-dropdown'), this.getSelectedDropdownValues('#site-pathogens-dropdown'))) {\r\n siteMatches = false;\r\n //if (site.SiteId == 24) console.log(\"Overview\");\r\n }\r\n else if (!site.Biorepo.matchesFilter(this.getSelectedDropdownValues('#biorepo-isbiorepo-dropdown'), this.getSelectedDropdownValues('#biorepo-sampletypes-dropdown'), this.getSelectedDropdownValues('#biorepo-sourceorganisms-dropdown'), this.getSelectedDropdownValues('#biorepo-biosafety-dropdown'), this.getSelectedDropdownValues('#biorepo-shipping-dropdown'), this.getSelectedDropdownValues('#biorepo-liveisolates-dropdown'), this.getSelectedDropdownValues('#biorepo-selectagent-dropdown'), this.getSelectedDropdownValues('#biorepo-surge-dropdown'))) {\r\n siteMatches = false;\r\n //if (site.SiteId == 24) console.log(\"Biorepo\");\r\n }\r\n else if (!site.LabFacility.matchesFilter(this.getSelectedDropdownValues('#lab-haslab-dropdown'), this.getSelectedDropdownValues('#lab-researchfocus-dropdown'), this.getSelectedDropdownValues('#lab-researchperformed-dropdown'), this.getSelectedDropdownValues('#lab-biosafety-dropdown'))) {\r\n siteMatches = false;\r\n //if (site.SiteId == 24) console.log(\"LabFacility\");\r\n }\r\n else if (!site.OutbreakResearch.matchesFilter(this.getSelectedDropdownValues('#outbreak-areas-dropdown'), this.getSelectedDropdownValues('#outbreak-nationalassociation-dropdown'), this.getSelectedDropdownValues('#outbreak-collaborations-dropdown'))) {\r\n siteMatches = false;\r\n //if (site.SiteId == 24) console.log(\"Outbreak\");\r\n }\r\n //else if (!site.OutbreakResearch.matchesFilter(this.getSelectedDropdownValues('#outbreak-areas-dropdown'), this.getSelectedDropdownValues('#outbreak-nationalassociation-dropdown'), this.getSelectedDropdownValues('#outbreak-collaborations-dropdown'))) {\r\n // siteMatches = false;\r\n //}\r\n //else if (!site.Regulatory.matchesFilter(this.getSelectedDropdownValues('#regulatory-sitecommonrule-dropdown'), this.getSelectedDropdownValues('#regulatory-irbapprovalrequirements-dropdown'), this.getSelectedDropdownValues('#regulatory-indemnity-dropdown'), this.getSelectedDropdownValues('#regulatory-sharingrestrictions-dropdown'))) {\r\n else if (!site.Regulatory.matchesFilter(this.getSelectedDropdownValues('#regulatory-sitecommonrule-dropdown'), this.getSelectedDropdownValues('#regulatory-indemnity-dropdown'), this.getSelectedDropdownValues('#regulatory-sharingrestrictions-dropdown'))) {\r\n siteMatches = false;\r\n //if (site.SiteId == 24) console.log(\"Regulatory\");\r\n }\r\n else if (!site.ShippingProcurement.matchesFilter(this.getSelectedDropdownValues('#shipping-procurement-bioreposhipping-dropdown'), this.getSelectedDropdownValues('#shipping-procurement-training-dropdown'), this.getSelectedDropdownValues('#shipping-procurement-receivingtime-dropdown'), this.getSelectedDropdownValues('#shipping-procurement-sourcedwithincountry-dropdown'), this.getSelectedDropdownValues('#shipping-procurement-permits-dropdown'), this.getSelectedDropdownValues('#shipping-procurement-internationalshipping-dropdown'))) {\r\n siteMatches = false;\r\n //if (site.SiteId == 24) console.log(\"Shipping\");\r\n }\r\n\r\n if (siteMatches) { matchingSites.push(site); }\r\n\r\n });\r\n\r\n this.updateTable(matchingSites);\r\n this.map.setVisibleSites(matchingSites);\r\n }\r\n\r\n getSelectedDropdownValues(selectId: string): any {\r\n //return $(selectId).selectpicker('val');\r\n return $(selectId).val();\r\n }\r\n\r\n isFilterApplied(selectId: string): boolean {\r\n //var selected = $(selectId).selectpicker('val');\r\n var selected = $(selectId).val();\r\n var count: number = $(selectId + ' option').length;\r\n\r\n //console.log(selected.length, count, selected.length == count);\r\n\r\n return (selected).length != count;\r\n }\r\n\r\n updateTable(matchingSites: SiteCapacity[]): void {\r\n\r\n this.dataTable.clear();\r\n this.dataTable.rows.add(matchingSites).draw();\r\n this.setSitesFoundLabel(matchingSites.length);\r\n }\r\n\r\n resetFilters(): void {\r\n\r\n this.filterDropdownIds.forEach((dropdownId: string) => {\r\n $(dropdownId).selectpicker('selectAll');\r\n $(dropdownId).selectpicker('refresh');\r\n });\r\n\r\n //$('#site-capacities-table').\r\n this.dataTable.search('').draw();\r\n\r\n this.updateTable(this.siteCapacities);\r\n }\r\n\r\n setSitesFoundLabel(count: number): void {\r\n\r\n switch (count) {\r\n case 0: $('#sites-found-count').text(\"No Sites Found\"); break;\r\n case 1: $('#sites-found-count').text(\"1 Site Found\"); break;\r\n default: $('#sites-found-count').text(count + \" Sites Found\");\r\n }\r\n }\r\n\r\n showHelpModal(): void {\r\n $('#site-help-modal').modal('show');\r\n }\r\n}","\r\n\r\nexport function FormatDate(date): string {\r\n\r\n if (date !== undefined && date !== \"\") {\r\n var myDate = new Date(date);\r\n var month = [\r\n \"Jan\",\r\n \"Feb\",\r\n \"Mar\",\r\n \"Apr\",\r\n \"May\",\r\n \"Jun\",\r\n \"Jul\",\r\n \"Aug\",\r\n \"Sep\",\r\n \"Oct\",\r\n \"Nov\",\r\n \"Dec\",\r\n ][myDate.getMonth()];\r\n var str = myDate.getDate() + \" \" + month + \" \" + myDate.getFullYear();\r\n return str;\r\n }\r\n return \"\";\r\n}\r\n\r\nexport function FormatDate2(date): string {\r\n\r\n if (date !== undefined && date !== \"\") {\r\n var year = date.split('-')[0];\r\n var monthNum = date.split('-')[1];\r\n var day = date.split('-')[2];\r\n\r\n var month = [\r\n \"\",\r\n \"Jan\",\r\n \"Feb\",\r\n \"Mar\",\r\n \"Apr\",\r\n \"May\",\r\n \"Jun\",\r\n \"Jul\",\r\n \"Aug\",\r\n \"Sep\",\r\n \"Oct\",\r\n \"Nov\",\r\n \"Dec\",\r\n ][parseInt(monthNum)];\r\n\r\n var str = day + \" \" + month + \" \" + year;\r\n return str;\r\n }\r\n return \"\";\r\n}\r\n\r\nexport function getDisplayDate(date: Date): string {\r\n if (date == null) {\r\n return \"\";\r\n }\r\n\r\n let convertDate = new Date(date);\r\n\r\n let year = convertDate.getFullYear();\r\n\r\n let month = [\r\n \"Jan\",\r\n \"Feb\",\r\n \"Mar\",\r\n \"Apr\",\r\n \"May\",\r\n \"Jun\",\r\n \"Jul\",\r\n \"Aug\",\r\n \"Sep\",\r\n \"Oct\",\r\n \"Nov\",\r\n \"Dec\",\r\n ][convertDate.getMonth()];\r\n\r\n let day = convertDate.getDate().toString();\r\n\r\n return `${month} ${day}, ${year}`\r\n}","import { Resource } from \"./resource-library.entities\";\r\nimport { TableColumnVisibilityController, TableColumnGroup } from \"../../shared/scripts/table-column-visibility\";\r\nimport { plainToClass } from \"class-transformer\";\r\nimport { Unique } from \"../../shared/scripts/array-functions\";\r\nimport { RenderDateYMD } from \"../../shared/scripts/table-functions\";\r\n\r\n\r\nexport class ResourceLibraryPage {\r\n resources: Resource[];\r\n dataTable: any;\r\n tableColumnController: TableColumnVisibilityController;\r\n filterDropdownIds: string[];\r\n\r\n constructor(data: any) {\r\n $(() => {\r\n\r\n this.resources = plainToClass(Resource, data);\r\n this.resources = this.resources.map((resource: Resource) => {\r\n resource.initialize();\r\n return resource;\r\n });\r\n\r\n this.filterDropdownIds = ['#category-dropdown', '#topic-dropdown', '#format-dropdown', '#language-dropdown', '#pathogen-dropdown', '#expertise-dropdown', '#source-dropdown'];\r\n this.initializeFilters();\r\n //console.log(this.stakeholders);\r\n\r\n this.initializeTable();\r\n this.setResourcesFoundLabel(this.resources.length);\r\n\r\n });\r\n }\r\n\r\n initializeFilters(): void {\r\n this.initializeDropdown('#category-dropdown', Unique(this.resources.map((resource: Resource) => resource.Category), true, [\"Not Defined\"]));\r\n this.initializeDropdown('#topic-dropdown', Unique(this.resources.map((resource: Resource) => resource.Topic), true, [\"Not Defined\"]));\r\n this.initializeDropdown('#format-dropdown', Unique(this.resources.map((resource: Resource) => resource.Format), true, [\"Not Defined\"]));\r\n this.initializeDropdown('#expertise-dropdown', Unique(this.resources.map((resource: Resource) => resource.ExpertiseLevel), true, [\"Not Defined\"]));\r\n this.initializeDropdown('#source-dropdown', Unique(this.resources.map((resource: Resource) => resource.Source), true, [\"Not Defined\"]));\r\n\r\n let values: string[] = [];\r\n this.resources.forEach((resource: Resource) => { values.push(...resource.VirusList); });\r\n this.initializeDropdown('#pathogen-dropdown', Unique(values, true, [\"Not Defined\"]));\r\n\r\n values = [];\r\n this.resources.forEach((resource: Resource) => { values.push(...resource.LanguageList); });\r\n this.initializeDropdown('#language-dropdown', Unique(values, true, [\"Not Defined\"]));\r\n }\r\n\r\n //could be moved to utility - like in RECOVER-CT codebase\r\n initializeDropdown(selectId: string, values: string[]): void {\r\n $(selectId).selectpicker({\r\n dropupAuto: false,\r\n selectedTextFormat: \"count\",\r\n\r\n countSelectedText: (numSelected, numTotal) => {\r\n if (numSelected == numTotal) {\r\n return \"All\";\r\n }\r\n else {\r\n return numSelected + \" Selected\";\r\n }\r\n }\r\n });\r\n\r\n values.forEach((element: any) => {\r\n $(selectId).append(new Option(element, element, false, true));\r\n });\r\n $(selectId).selectpicker(\"refresh\");\r\n\r\n $(selectId).on('changed.bs.select', (e, clickedIndex, isSelected, previousValue) => {\r\n this.filterResources();\r\n });\r\n }\r\n\r\n\r\n initializeTable(): void {\r\n this.dataTable = $('#resources-table').DataTable({\r\n \"dom\": '<\"top-controls\"<\"column-select\"><\"search-bar\"f><\"spacer\"><\"count-found\"B>>rtip',\r\n //\"dom\": '<\"top-controls\"<\"left-section\"<\"search-bar\"f>><\"right-section\"<\"column-select\">B>rtip',\r\n autoWidth: true,\r\n info: false,\r\n paging: false,\r\n search: true,\r\n scrollX: true,\r\n //responsive: false,\r\n scrollY: '68vh',\r\n scrollCollapse: true,\r\n orderCellsTop: true,\r\n fixedColumns: {\r\n leftColumns: 1\r\n },\r\n language:\r\n {\r\n search: \"Search\",\r\n },\r\n columns: [\r\n { data: { _: \"Name\", sort: \"Name\" }, title: \"Resource Name\", className: \"text-left font-size12 min-width-250\" },\r\n //{ data: \"UrlDisplay\", title: \"URL\", className: \"material-access text-left font-size12 min-width-50\" },\r\n //{ data: \"FilenameDisplay\", title: \"File\", className: \"material-access text-left font-size12 min-width-50\" },\r\n { data: \"ResourceAccess\", title: \"Resource\", className: \"material-access text-left font-size12 min-width-50\" },\r\n { data: \"Category\", title: \"Resource Type\", className: \"category-topic text-left font-size12 min-width-200\" },\r\n { data: \"Topic\", title: \"Topic\", className: \"category-topic text-left font-size12 min-width-200\" },\r\n { data: \"Format\", title: \"Format\", className: \"category-topic text-left font-size12\" },\r\n { data: \"Description\", title: \"Description\", className: \"details text-left font-size11 about-col min-width-400\" },\r\n { data: \"CourseStructure\", title: \"Structure\", className: \"details text-left font-size12\" },\r\n { data: \"TrainingDates\", title: \"Training Dates\", className: \"details text-left font-size12\" },\r\n { data: \"LanguageDisplay\", title: \"Language(s)\", className: \"details text-left font-size12\" },\r\n { data: \"Source\", title: \"CREID Source\", className: \"source-poc text-left font-size12\" },\r\n { data: \"OtherSource\", title: \"Other Source\", className: \"source-poc text-left font-size12\" },\r\n { data: \"PrimaryContributorName\", title: \"Primary Contributor
(Name)\", className: \"source-poc text-left font-size12\" },\r\n { data: \"PrimaryContributorAffiliation\", title: \"Primary Contributor
(Affiliation)\", className: \"source-poc text-left font-size12\" },\r\n { data: \"PrimaryContributorEmailDisplay\", title: \"Primary Contributor
(Email)\", className: \"source-poc text-left font-size12\" },\r\n { data: \"VirusDisplay\", title: \"Pathogen(s)\", className: \"virus-info text-left font-size12\" },\r\n { data: \"DiseaseDisplay\", title: \"Disease(s)\", className: \"virus-info text-left font-size12\" },\r\n { data: \"FamilyDisplay\", title: \"Virus Families\", className: \"virus-info text-left font-size12\" },\r\n { data: \"ModifiedDate\", title: \"Modified Date\", className: \"modified-date text-left font-size12\", width: '100px', render: RenderDateYMD }\r\n ],\r\n buttons: [\r\n {\r\n extend: 'csv',\r\n text: '',\r\n titleAttr: 'CSV',\r\n charset: 'utf-8',\r\n }\r\n ],\r\n data: this.resources,\r\n //order: [[5, 'desc'], [1, 'asc']],\r\n initComplete: (settings, json) => {\r\n //$(\"#hub-details-table\").wrap(\"
\");\r\n },\r\n });\r\n\r\n $(\".top-controls\").addClass('row mx-0');\r\n\r\n $(\".column-select\").addClass('col-12 col-md-3 px-0');\r\n $(\".column-select\").empty().html('
');\r\n\r\n $(\".search-bar\").addClass('col-12 col-md-3');\r\n\r\n $(\".spacer\").addClass('col-12 col-md-3'); \r\n $(\".count-found\").addClass('col-12 col-md-3 d-flex justify-content-end vertical-align-middle mt-2');\r\n //$(\".count-found\").prepend('
');\r\n $(\".count-found\").prepend('
');\r\n\r\n this.tableColumnController = new TableColumnVisibilityController('#resources-table', '#column-select', [\r\n new TableColumnGroup(\"Resource Type, Topic, & Format\", true, [], \"category-topic\"),\r\n new TableColumnGroup(\"Access to Materials\", true, [], \"material-access\"),\r\n new TableColumnGroup(\"Detail\", false, [], \"details\"),\r\n new TableColumnGroup(\"Source & Point of Contact\", false, [], \"source-poc\"),\r\n new TableColumnGroup(\"Pathogen\", false, [], \"virus-info\"),\r\n new TableColumnGroup(\"Modified Date\", true, [], \"modified-date\"),\r\n ]);\r\n\r\n $('#resources-table').on('search.dt', (e, settings) => {\r\n this.setResourcesFoundLabel(this.dataTable.rows({ search: 'applied' }).count());\r\n });\r\n\r\n }\r\n\r\n filterResources(): void {\r\n\r\n let matches: Resource[] = this.resources.filter((resource: Resource) => {\r\n return resource.matchesFilter(this.getSelectedDropdownValues('#category-dropdown'), this.getSelectedDropdownValues('#topic-dropdown'), this.getSelectedDropdownValues('#format-dropdown'), this.getSelectedDropdownValues('#source-dropdown'), this.getSelectedDropdownValues('#language-dropdown'), this.getSelectedDropdownValues('#pathogen-dropdown'), this.getSelectedDropdownValues('#expertise-dropdown'));\r\n });\r\n\r\n this.updateTable(matches);\r\n }\r\n\r\n getSelectedDropdownValues(selectId: string): any {\r\n return $(selectId).val();\r\n }\r\n\r\n //isFilterApplied(selectId: string): boolean {\r\n // var selected = $(selectId).val();\r\n // var count: number = $(selectId + ' option').length;\r\n // return (selected).length != count;\r\n //}\r\n\r\n\r\n updateTable(matchingResources: Resource[]): void {\r\n\r\n this.dataTable.clear();\r\n this.dataTable.rows.add(matchingResources).draw();\r\n this.setResourcesFoundLabel(matchingResources.length);\r\n }\r\n\r\n resetFilters(): void {\r\n\r\n this.filterDropdownIds.forEach((dropdownId: string) => {\r\n $(dropdownId).selectpicker('selectAll');\r\n $(dropdownId).selectpicker('refresh');\r\n });\r\n\r\n this.dataTable.search('').draw();\r\n this.updateTable(this.resources);\r\n }\r\n\r\n setResourcesFoundLabel(count: number): void {\r\n\r\n switch (count) {\r\n case 0: $('#resources-found-count').text(\"No Resources Found\"); break;\r\n case 1: $('#resources-found-count').text(\"1 Resource Found\"); break;\r\n default: $('#resources-found-count').text(count + \" Resources Found\");\r\n }\r\n }\r\n\r\n showHelpModal(): void {\r\n $('#resources-help-modal').modal('show');\r\n }\r\n\r\n submitNewResource(): void {\r\n\r\n window.open(\"https://forms.office.com/r/JShBUwhxP1\", \"_blank\");\r\n\r\n }\r\n}","\r\n\r\n\r\nexport class ExpertiseArea {\r\n Id: string;\r\n Area: string;\r\n Expertise: string;\r\n}","// extracted by mini-css-extract-plugin","\r\nexport class DocumentTree {\r\n\r\n constructor(nodes: any, treeId: string = \"jstree\", showPDF: boolean = true) {\r\n\r\n //console.log(nodes, treeId);\r\n\r\n treeId = '#' + treeId;\r\n\r\n $('#docSearch').val('');\r\n $(treeId).jstree({\r\n \"plugins\": [\"search\", \"wholerow\"],\r\n \"search\": {\r\n \"show_only_matches\": true,\r\n \"fuzzy\": false\r\n },\r\n \"types\": {\r\n \"folder\": {\r\n \"icon\": \"fas fa-folder\"\r\n },\r\n \"file\": {\r\n \"icon\": \"fas fa-file-alt\"\r\n }\r\n },\r\n 'core': {\r\n 'data': nodes\r\n }\r\n });//end jstree\r\n\r\n //open the folder when clicking it (instead of having to target the small arrow)\r\n $(treeId).on('select_node.jstree', function (e, data) {\r\n data.instance.toggle_node(data.node);\r\n });\r\n\r\n $(treeId).on('changed.jstree', function (e, data) {\r\n //if selected node is not a directory\r\n if (data.node.original.type > 0) {\r\n\r\n if (data.node.original.type == 1 && showPDF) { //PDF\r\n var modal = $('#view-document-modal');\r\n modal.find('#filename').html(data.node.original.text);\r\n\r\n modal.find('#document-iframe').attr('src', data.node.original.link);\r\n\r\n //console.log(data.node.original.link);\r\n\r\n modal.modal('show');\r\n }\r\n else { //just download it\r\n var hiddenLink = $('#non-pdf-link');\r\n hiddenLink.attr('href', data.node.original.link);\r\n hiddenLink.attr('target', '_blank');\r\n hiddenLink[0].click();\r\n\r\n }\r\n\r\n\r\n }\r\n });\r\n\r\n\r\n //do search on keyup\r\n $('#docSearch').keyup(function () {\r\n var search = $(this).val();\r\n $(treeId).jstree('search', search);\r\n });\r\n\r\n //handle search clear button\r\n $('#searchClear').click(function () {\r\n $('#docSearch').val('');\r\n $(treeId).jstree('search', '');\r\n });\r\n\r\n }\r\n}"],"sourceRoot":""}