@yca-software/yca-react-core 0.0.24 → 0.0.25
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{chunk-L4KNKLFW.js → chunk-CTFLNTPC.js} +3 -3
- package/dist/{chunk-L4KNKLFW.js.map → chunk-CTFLNTPC.js.map} +1 -1
- package/dist/{chunk-GDYI2I74.js → chunk-FJUWTB3A.js} +6 -3
- package/dist/chunk-FJUWTB3A.js.map +1 -0
- package/dist/{chunk-BL4GPQGY.js → chunk-VUWBN4CZ.js} +3 -3
- package/dist/{chunk-BL4GPQGY.js.map → chunk-VUWBN4CZ.js.map} +1 -1
- package/dist/components/forms/index.js +2 -2
- package/dist/components/spa/index.js +2 -2
- package/dist/components/ui/index.d.ts +3 -1
- package/dist/components/ui/index.js +1 -1
- package/dist/index.js +4 -4
- package/package.json +1 -1
- package/dist/chunk-GDYI2I74.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/ui/alert/index.tsx","../src/components/ui/alert-dialog/index.tsx","../src/components/ui/avatar/index.tsx","../src/components/ui/badge/index.tsx","../src/components/ui/calendar/index.tsx","../src/components/ui/checkbox/index.tsx","../src/components/ui/confirm-dialog/index.tsx","../src/components/ui/popover/index.tsx","../src/components/ui/date-picker/index.tsx","../src/components/ui/inside-modal-scroll-lock/index.tsx","../src/components/ui/dialog/index.tsx","../src/components/ui/date-range-picker/constants.ts","../src/components/ui/date-range-picker/DateRangePickerActionFooter.tsx","../src/components/ui/date-range-picker/DateRangePickerFieldsCalendar.tsx","../src/components/ui/date-range-picker/parseDateRange.ts","../src/components/ui/date-range-picker/DateRangePickerPresetList.tsx","../src/components/ui/date-range-picker/DateRangePickerTrigger.tsx","../src/components/ui/date-range-picker/useDateRangePresets.ts","../src/components/ui/date-range-picker/useMediaQuery.ts","../src/components/ui/date-range-picker/DateRangePicker.tsx","../src/components/ui/dropdown-menu/index.tsx","../src/components/ui/dropdown-scrollable-list/index.tsx","../src/components/ui/dropdown-select-search-input/index.tsx","../src/components/ui/event-calendar/date-utils.ts","../src/components/ui/event-calendar/index.tsx","../src/components/ui/label/index.tsx","../src/components/ui/form/index.tsx","../src/components/ui/sheet/index.tsx","../src/components/ui/form-drawer/index.tsx","../src/components/ui/link/index.tsx","../src/components/ui/multi-select/index.tsx","../src/components/ui/scroll-area/index.tsx","../src/components/ui/search-field/index.tsx","../src/components/ui/select-search/index.ts","../src/components/ui/select/index.tsx","../src/components/ui/separator/index.tsx","../src/components/ui/switch/index.tsx","../src/components/ui/table/index.tsx","../src/components/ui/tabs/index.tsx","../src/components/ui/textarea/index.tsx","../src/components/ui/tooltip/index.tsx","../src/components/ui/typography/index.tsx","../src/components/ui/upload-dropzone/index.tsx"],"names":["React","jsx","React2","cva","React3","jsxs","React4","CalendarIcon","React5","format","React6","DateRangePickerTrigger","React7","React8","nextRange","React9","React10","ChevronLeft","ChevronRight","React11","SheetPrimitive","XIcon","React12","DEFAULT_TRANSLATIONS","React13","React14","X","React15","React16","React17","React18","React19","React21","useId","useRef","useState","useEffect","nextUrl"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAKA,IAAM,aAAA,GAAgB,GAAA;AAAA,EACpB,mRAAA;AAAA,EACA;AAAA,IACE,QAAA,EAAU;AAAA,MACR,OAAA,EAAS;AAAA,QACP,OAAA,EACE,oFAAA;AAAA,QACF,WAAA,EACE;AAAA;AACJ,KACF;AAAA,IACA,eAAA,EAAiB;AAAA,MACf,OAAA,EAAS;AAAA;AACX;AAEJ,CAAA;AAEA,SAAS,KAAA,CAAM;AAAA,EACb,SAAA;AAAA,EACA,OAAA;AAAA,EACA,GAAG;AACL,CAAA,EAAqE;AACnE,EAAA,uBACE,GAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,WAAA,EAAU,OAAA;AAAA,MACV,IAAA,EAAK,OAAA;AAAA,MACL,WAAW,EAAA,CAAG,aAAA,CAAc,EAAE,OAAA,EAAS,GAAG,SAAS,CAAA;AAAA,MAClD,GAAG;AAAA;AAAA,GACN;AAEJ;AAEA,SAAS,gBAAA,CAAiB,EAAE,SAAA,EAAW,GAAG,OAAM,EAAgC;AAC9E,EAAA,uBACE,GAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,WAAA,EAAU,mBAAA;AAAA,MACV,SAAA,EAAW,EAAA;AAAA,QACT,0EAAA;AAAA,QACA;AAAA,OACF;AAAA,MACC,GAAG;AAAA;AAAA,GACN;AAEJ;ACzCA,IAAM,WAAA,GAAmC,oBAAA,CAAA;AAEzC,IAAM,kBAAA,GAA0C,oBAAA,CAAA;AAEhD,IAAM,iBAAA,GAAyC,oBAAA,CAAA;AAE/C,IAAM,kBAAA,GAA2BA,mBAG/B,CAAC,EAAE,WAAW,GAAG,KAAA,EAAM,EAAG,GAAA,qBAC1BC,GAAAA;AAAA,EAAsB,oBAAA,CAAA,OAAA;AAAA,EAArB;AAAA,IACC,SAAA,EAAW,EAAA;AAAA,MACT,kLAAA;AAAA,MACA;AAAA,KACF;AAAA,IACC,GAAG,KAAA;AAAA,IACJ;AAAA;AACF,CACD;AACD,kBAAA,CAAmB,cAAmC,oBAAA,CAAA,OAAA,CAAQ,WAAA;AAU9D,IAAM,kBAAA,GAA2BD,OAAA,CAAA,UAAA,CAG/B,CAAC,EAAE,SAAA,EAAW,cAAA,EAAgB,gBAAA,EAAkB,GAAG,KAAA,EAAM,EAAG,GAAA,qBAC5D,IAAA,CAAC,iBAAA,EAAA,EACC,QAAA,EAAA;AAAA,kBAAAC,GAAAA,CAAC,kBAAA,EAAA,EAAmB,OAAA,EAAS,cAAA,EAAgB,WAAW,gBAAA,EAAkB,CAAA;AAAA,kBAC1EA,GAAAA;AAAA,IAAsB,oBAAA,CAAA,OAAA;AAAA,IAArB;AAAA,MACC,GAAA;AAAA,MACA,SAAA,EAAW,EAAA;AAAA,QACT,cAAA;AAAA,QACA,+dAAA;AAAA,QACA;AAAA,OACF;AAAA,MACC,GAAG;AAAA;AAAA;AACN,CAAA,EACF,CACD;AACD,kBAAA,CAAmB,cAAmC,oBAAA,CAAA,OAAA,CAAQ,WAAA;AAE9D,IAAM,oBAAoB,CAAC,EAAE,SAAA,EAAW,GAAG,OAAM,qBAC/CA,GAAAA,CAAC,KAAA,EAAA,EAAI,WAAW,EAAA,CAAG,kDAAA,EAAoD,SAAS,CAAA,EAAI,GAAG,KAAA,EAAO;AAEhG,iBAAA,CAAkB,WAAA,GAAc,mBAAA;AAEhC,IAAM,oBAAoB,CAAC,EAAE,WAAW,GAAG,KAAA,uBACzCA,GAAAA;AAAA,EAAC,KAAA;AAAA,EAAA;AAAA,IACC,SAAA,EAAW,EAAA,CAAG,+DAAA,EAAiE,SAAS,CAAA;AAAA,IACvF,GAAG;AAAA;AACN;AAEF,iBAAA,CAAkB,WAAA,GAAc,mBAAA;AAEhC,IAAM,gBAAA,GAAyBD,mBAG7B,CAAC,EAAE,WAAW,GAAG,KAAA,EAAM,EAAG,GAAA,qBAC1BC,GAAAA;AAAA,EAAsB,oBAAA,CAAA,KAAA;AAAA,EAArB;AAAA,IACC,GAAA;AAAA,IACA,SAAA,EAAW,EAAA,CAAG,uBAAA,EAAyB,SAAS,CAAA;AAAA,IAC/C,GAAG;AAAA;AACN,CACD;AACD,gBAAA,CAAiB,cAAmC,oBAAA,CAAA,KAAA,CAAM,WAAA;AAE1D,IAAM,sBAAA,GAA+BD,mBAGnC,CAAC,EAAE,WAAW,GAAG,KAAA,EAAM,EAAG,GAAA,qBAC1BC,GAAAA;AAAA,EAAsB,oBAAA,CAAA,WAAA;AAAA,EAArB;AAAA,IACC,GAAA;AAAA,IACA,SAAA,EAAW,EAAA,CAAG,+BAAA,EAAiC,SAAS,CAAA;AAAA,IACvD,GAAG;AAAA;AACN,CACD;AACD,sBAAA,CAAuB,cAAmC,oBAAA,CAAA,WAAA,CAAY,WAAA;AAEtE,IAAM,iBAAA,GAA0BD,mBAG9B,CAAC,EAAE,WAAW,GAAG,KAAA,EAAM,EAAG,GAAA,qBAC1BC,GAAAA;AAAA,EAAsB,oBAAA,CAAA,MAAA;AAAA,EAArB;AAAA,IACC,GAAA;AAAA,IACA,WAAA,EAAU,qBAAA;AAAA,IACV,SAAA,EAAW,EAAA,CAAG,cAAA,EAAe,EAAG,SAAS,CAAA;AAAA,IACxC,GAAG;AAAA;AACN,CACD;AACD,iBAAA,CAAkB,cAAmC,oBAAA,CAAA,MAAA,CAAO,WAAA;AAE5D,IAAM,iBAAA,GAA0BD,mBAG9B,CAAC,EAAE,WAAW,GAAG,KAAA,EAAM,EAAG,GAAA,qBAC1BC,GAAAA;AAAA,EAAsB,oBAAA,CAAA,MAAA;AAAA,EAArB;AAAA,IACC,GAAA;AAAA,IACA,WAAA,EAAU,qBAAA;AAAA,IACV,SAAA,EAAW,GAAG,cAAA,CAAe,EAAE,SAAS,SAAA,EAAW,CAAA,EAAG,cAAA,EAAgB,SAAS,CAAA;AAAA,IAC9E,GAAG;AAAA;AACN,CACD;AACD,iBAAA,CAAkB,cAAmC,oBAAA,CAAA,MAAA,CAAO,WAAA;AC/G5D,IAAM,MAAA,GAAeC,mBAGnB,CAAC,EAAE,WAAW,GAAG,KAAA,EAAM,EAAG,GAAA,qBAC1BD,GAAAA;AAAA,EAAiB,eAAA,CAAA,IAAA;AAAA,EAAhB;AAAA,IACC,GAAA;AAAA,IACA,SAAA,EAAW,EAAA,CAAG,+DAAA,EAAiE,SAAS,CAAA;AAAA,IACvF,GAAG;AAAA;AACN,CACD;AACD,MAAA,CAAO,cAA8B,eAAA,CAAA,IAAA,CAAK,WAAA;AAE1C,IAAM,WAAA,GAAoBC,mBAGxB,CAAC,EAAE,WAAW,GAAG,KAAA,EAAM,EAAG,GAAA,qBAC1BD,GAAAA;AAAA,EAAiB,eAAA,CAAA,KAAA;AAAA,EAAhB;AAAA,IACC,GAAA;AAAA,IACA,SAAA,EAAW,EAAA,CAAG,6BAAA,EAA+B,SAAS,CAAA;AAAA,IACrD,GAAG;AAAA;AACN,CACD;AACD,WAAA,CAAY,cAA8B,eAAA,CAAA,KAAA,CAAM,WAAA;AAEhD,IAAM,cAAA,GAAuBC,mBAG3B,CAAC,EAAE,WAAW,GAAG,KAAA,EAAM,EAAG,GAAA,qBAC1BD,GAAAA;AAAA,EAAiB,eAAA,CAAA,QAAA;AAAA,EAAhB;AAAA,IACC,GAAA;AAAA,IACA,SAAA,EAAW,EAAA;AAAA,MACT,sEAAA;AAAA,MACA;AAAA,KACF;AAAA,IACC,GAAG;AAAA;AACN,CACD;AACD,cAAA,CAAe,cAA8B,eAAA,CAAA,QAAA,CAAS,WAAA;ACrCtD,IAAM,aAAA,GAAgBE,GAAAA;AAAA,EACpB,sHAAA;AAAA,EACA;AAAA,IACE,QAAA,EAAU;AAAA,MACR,OAAA,EAAS;AAAA,QACP,OAAA,EAAS,2EAAA;AAAA,QACT,SAAA,EACE,iFAAA;AAAA,QACF,WAAA,EAAa,sEAAA;AAAA,QACb,OAAA,EAAS;AAAA;AACX,KACF;AAAA,IACA,eAAA,EAAiB;AAAA,MACf,OAAA,EAAS;AAAA;AACX;AAEJ;AAEA,SAAS,KAAA,CAAM;AAAA,EACb,SAAA;AAAA,EACA,OAAA;AAAA,EACA,GAAG;AACL,CAAA,EAAsE;AACpE,EAAA,uBACEF,GAAAA,CAAC,MAAA,EAAA,EAAK,WAAA,EAAU,SAAQ,SAAA,EAAW,EAAA,CAAG,aAAA,CAAc,EAAE,SAAS,CAAA,EAAG,SAAS,CAAA,EAAI,GAAG,KAAA,EAAO,CAAA;AAE7F;ACrBA,SAAS,QAAA,CAAS;AAAA,EAChB,SAAA;AAAA,EACA,UAAA;AAAA,EACA,eAAA,GAAkB,IAAA;AAAA,EAClB,YAAA;AAAA,EACA,GAAG;AACL,CAAA,EAAkB;AAChB,EAAA,uBACEA,GAAAA;AAAA,IAAC,SAAA;AAAA,IAAA;AAAA,MACC,WAAA,EAAU,UAAA;AAAA,MACV,eAAA;AAAA,MACA,cAAc,YAAA,IAAgB,CAAA;AAAA,MAC9B,SAAA,EAAU,QAAA;AAAA,MACV,SAAA,EAAW,EAAA,CAAG,KAAA,EAAO,SAAS,CAAA;AAAA,MAC9B,UAAA,EAAY;AAAA,QACV,MAAA,EACE,sFAAA;AAAA,QACF,KAAA,EAAO,4BAAA;AAAA,QACP,aAAA,EAAe,wDAAA;AAAA,QACf,aAAA,EAAe,qDAAA;AAAA,QACf,GAAA,EAAK,UAAA;AAAA,QACL,eAAA,EAAiB,EAAA;AAAA,UACf,eAAe,EAAE,OAAA,EAAS,SAAA,EAAW,IAAA,EAAM,WAAW,CAAA;AAAA,UACtD;AAAA,SACF;AAAA,QACA,WAAA,EAAa,EAAA;AAAA,UACX,eAAe,EAAE,OAAA,EAAS,SAAA,EAAW,IAAA,EAAM,WAAW,CAAA;AAAA,UACtD;AAAA,SACF;AAAA,QACA,UAAA,EAAY,wBAAA;AAAA,QACZ,QAAA,EAAU,EAAA;AAAA,QACV,OAAA,EAAS,kFAAA;AAAA,QACT,KAAA,EAAO,MAAA;AAAA,QACP,IAAA,EAAM,EAAA;AAAA,QACN,GAAA,EAAK,8FAAA;AAAA,QACL,UAAA,EAAY,EAAA;AAAA,UACV,4HAAA;AAAA,UACA,8CAAA;AAAA,UACA,yEAAA;AAAA,UACA;AAAA,SACF;AAAA,QACA,QAAA,EACE,+FAAA;AAAA,QACF,KAAA,EACE,4JAAA;AAAA,QACF,OAAA,EACE,wFAAA;AAAA,QACF,YAAA,EACE,0HAAA;AAAA,QACF,SAAA,EACE,6MAAA;AAAA,QACF,WAAA,EACE,2MAAA;AAAA,QACF,QAAA,EAAU,wEAAA;AAAA,QACV,GAAG;AAAA,OACL;AAAA,MACA,UAAA,EAAY;AAAA,QACV,OAAA,EAAS,CAAC,EAAE,WAAA,OACV,WAAA,KAAgB,MAAA,mBACdA,GAAAA,CAAC,WAAA,EAAA,EAAY,WAAU,QAAA,EAAS,aAAA,EAAW,MAAC,CAAA,mBAE5CA,IAAC,YAAA,EAAA,EAAa,SAAA,EAAU,QAAA,EAAS,aAAA,EAAW,IAAA,EAAC;AAAA,OAEnD;AAAA,MACC,GAAG;AAAA;AAAA,GACN;AAEJ;ACtEA,IAAM,QAAA,GAAiBG,mBAGrB,CAAC,EAAE,WAAW,GAAG,KAAA,EAAM,EAAG,GAAA,qBAC1BH,GAAAA;AAAA,EAAmB,iBAAA,CAAA,IAAA;AAAA,EAAlB;AAAA,IACC,GAAA;AAAA,IACA,WAAA,EAAU,UAAA;AAAA,IACV,SAAA,EAAW,EAAA;AAAA,MACT,yHAAA;AAAA,MACA,YAAA;AAAA,MACA,cAAA;AAAA,MACA,gEAAA;AAAA,MACA,kHAAA;AAAA,MACA,oIAAA;AAAA,MACA;AAAA,KACF;AAAA,IACC,GAAG,KAAA;AAAA,IAEJ,QAAA,kBAAAA,GAAAA,CAAmB,iBAAA,CAAA,SAAA,EAAlB,EAA4B,SAAA,EAAU,+CAAA,EACrC,QAAA,kBAAAA,GAAAA,CAAC,KAAA,EAAA,EAAM,SAAA,EAAU,UAAA,EAAW,WAAA,EAAa,GAAG,CAAA,EAC9C;AAAA;AACF,CACD;AACD,QAAA,CAAS,cAAgC,iBAAA,CAAA,IAAA,CAAK,WAAA;ACWvC,SAAS,aAAA,CAAc;AAAA,EAC5B,IAAA;AAAA,EACA,YAAA;AAAA,EACA,KAAA;AAAA,EACA,WAAA;AAAA,EACA,eAAA;AAAA,EACA,WAAA,GAAc,QAAA;AAAA,EACd,YAAA;AAAA,EACA,OAAA,GAAU,SAAA;AAAA,EACV,SAAA;AAAA,EACA,SAAA,GAAY,KAAA;AAAA,EACZ,gBAAA;AAAA,EACA,SAAA;AAAA,EACA,mBAAA,GAAsB;AACxB,CAAA,EAAuB;AACrB,EAAA,MAAM,UAAA,GAAa,OAA0B,IAAI,CAAA;AACjD,EAAA,MAAM,gBAAgB,OAAA,KAAY,aAAA;AAClC,EAAA,MAAM,gBAAA,GAAmB,gBACrB,sGAAA,GACA,MAAA;AAEJ,EAAA,MAAM,gBAAgB,MAAM;AAC1B,IAAA,IAAI,SAAA,EAAW;AACf,IAAA,SAAA,EAAU;AAAA,EACZ,CAAA;AAEA,EAAA,uBACEA,GAAAA,CAAC,WAAA,EAAA,EAAY,IAAA,EAAY,cACvB,QAAA,kBAAAI,IAAAA;AAAA,IAAC,kBAAA;AAAA,IAAA;AAAA,MACC,WAAA,EAAU,wBAAA;AAAA,MACV,SAAA,EAAW,EAAA,CAAG,gBAAA,EAAkB,SAAS,CAAA;AAAA,MACzC,eAAA,EAAiB,CAAC,KAAA,KAAU;AAC1B,QAAA,KAAA,CAAM,cAAA,EAAe;AACrB,QAAA,UAAA,CAAW,SAAS,KAAA,EAAM;AAAA,MAC5B,CAAA;AAAA,MACA,SAAA,EAAW,CAAC,KAAA,KAAU;AACpB,QAAA,IAAI,KAAA,CAAM,GAAA,KAAQ,OAAA,IAAW,SAAA,EAAW;AACxC,QAAA,MAAM,SAAS,KAAA,CAAM,MAAA;AACrB,QAAA,IAAI,MAAA,CAAO,OAAA,CAAQ,mCAAmC,CAAA,EAAG;AACzD,QAAA,IAAI,MAAA,CAAO,OAAA,CAAQ,mCAAmC,CAAA,EAAG;AACzD,QAAA,KAAA,CAAM,cAAA,EAAe;AACrB,QAAA,aAAA,EAAc;AAAA,MAChB,CAAA;AAAA,MACC,GAAI,mBAAA,IAAuB;AAAA,QAC1B,cAAA,EAAgB,MAAM,YAAA,CAAa,KAAK;AAAA,OAC1C;AAAA,MAEA,QAAA,EAAA;AAAA,wBAAAA,IAAAA,CAAC,iBAAA,EAAA,EAAkB,SAAA,EAAU,OAAA,EAC3B,QAAA,EAAA;AAAA,0BAAAJ,GAAAA,CAAC,gBAAA,EAAA,EAAiB,SAAA,EAAU,sBAAA,EAAwB,QAAA,EAAA,KAAA,EAAM,CAAA;AAAA,0BAC1DI,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,WAAA,EACb,QAAA,EAAA;AAAA,4BAAAJ,GAAAA,CAAC,sBAAA,EAAA,EAAuB,SAAA,EAAU,SAAA,EAAW,QAAA,EAAA,WAAA,EAAY,CAAA;AAAA,YACxD,mCAAmBA,GAAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAU,iCAAiC,QAAA,EAAA,eAAA,EAAgB;AAAA,WAAA,EACpF;AAAA,SAAA,EACF,CAAA;AAAA,wBACAI,IAAAA,CAAC,iBAAA,EAAA,EAAkB,SAAA,EAAU,8EAAA,EAC3B,QAAA,EAAA;AAAA,0BAAAJ,GAAAA;AAAA,YAAC,iBAAA;AAAA,YAAA;AAAA,cACC,OAAA,EAAS,MAAM,YAAA,CAAa,KAAK,CAAA;AAAA,cACjC,QAAA,EAAU,SAAA;AAAA,cACV,SAAA,EAAU,sBAAA;AAAA,cAET,QAAA,EAAA;AAAA;AAAA,WACH;AAAA,0BACAI,IAAAA;AAAA,YAAC,iBAAA;AAAA,YAAA;AAAA,cACC,GAAA,EAAK,UAAA;AAAA,cACL,OAAA,EAAS,aAAA;AAAA,cACT,QAAA,EAAU,SAAA;AAAA,cACV,cAAY,gBAAA,IAAoB,YAAA;AAAA,cAChC,SAAA,EAAW,EAAA,CAAG,sBAAA,EAAwB,gBAAgB,CAAA;AAAA,cAErD,QAAA,EAAA;AAAA,gBAAA,SAAA,oBAAaJ,GAAAA,CAAC,OAAA,EAAA,EAAQ,SAAA,EAAU,sBAAA,EAAuB,eAAW,IAAA,EAAC,CAAA;AAAA,gBACnE;AAAA;AAAA;AAAA;AACH,SAAA,EACF;AAAA;AAAA;AAAA,GACF,EACF,CAAA;AAEJ;AC/GA,SAAS,OAAA,CAAQ,EAAE,GAAG,KAAA,EAAM,EAAuD;AACjF,EAAA,uBAAOA,GAAAA,CAAkB,gBAAA,CAAA,IAAA,EAAjB,EAAsB,WAAA,EAAU,SAAA,EAAW,GAAG,KAAA,EAAO,CAAA;AAC/D;AAEA,SAAS,cAAA,CAAe,EAAE,GAAG,KAAA,EAAM,EAA0D;AAC3F,EAAA,uBAAOA,GAAAA,CAAkB,gBAAA,CAAA,OAAA,EAAjB,EAAyB,WAAA,EAAU,iBAAA,EAAmB,GAAG,KAAA,EAAO,CAAA;AAC1E;AAEA,SAAS,aAAA,CAAc,EAAE,GAAG,KAAA,EAAM,EAAyD;AACzF,EAAA,uBAAOA,GAAAA,CAAkB,gBAAA,CAAA,MAAA,EAAjB,EAAwB,WAAA,EAAU,gBAAA,EAAkB,GAAG,KAAA,EAAO,CAAA;AACxE;AAEA,SAAS,cAAA,CAAe;AAAA,EACtB,SAAA;AAAA,EACA,KAAA,GAAQ,OAAA;AAAA,EACR,UAAA,GAAa,CAAA;AAAA,EACb,gBAAA,GAAmB,EAAA;AAAA,EACnB,MAAA,GAAS,QAAA;AAAA,EACT,eAAA,GAAkB,IAAA;AAAA,EAClB,GAAG;AACL,CAAA,EAA0D;AACxD,EAAA,uBACEA,GAAAA,CAAkB,gBAAA,CAAA,MAAA,EAAjB,EACC,QAAA,kBAAAA,GAAAA;AAAA,IAAkB,gBAAA,CAAA,OAAA;AAAA,IAAjB;AAAA,MACC,WAAA,EAAU,iBAAA;AAAA,MACV,KAAA;AAAA,MACA,UAAA;AAAA,MACA,gBAAA;AAAA,MACA,MAAA;AAAA,MACA,eAAA;AAAA,MACA,SAAA,EAAW,EAAA;AAAA,QACT,cAAA;AAAA,QACA,wCAAA;AAAA,QACA,8DAAA;AAAA,QACA,4DAAA;AAAA,QACA,8DAAA;AAAA,QACA,wCAAA;AAAA,QACA,wCAAA;AAAA,QACA,wCAAA;AAAA,QACA,wCAAA;AAAA,QACA;AAAA,OACF;AAAA,MACC,GAAG;AAAA;AAAA,GACN,EACF,CAAA;AAEJ;ACzBO,SAAS,UAAA,CAAW;AAAA,EACzB,KAAA;AAAA,EACA,QAAA;AAAA,EACA,OAAA;AAAA,EACA,OAAA;AAAA,EACA,WAAA,GAAc,aAAA;AAAA,EACd,QAAA,GAAW,KAAA;AAAA,EACX,MAAA;AAAA,EACA,SAAA;AAAA,EACA,YAAA,EAAc;AAChB,CAAA,EAAoB;AAClB,EAAA,MAAM,CAAC,IAAA,EAAM,OAAO,CAAA,GAAUK,iBAAS,KAAK,CAAA;AAC5C,EAAA,MAAM,aAAA,GAAgB,cAAc,OAAO,CAAA;AAC3C,EAAA,MAAM,aAAA,GAAgB,cAAc,OAAO,CAAA;AAE3C,EAAA,MAAM,UAAA,GAAmBA,OAAA,CAAA,OAAA,CAAQ,MAAO,MAAA,GAAS,EAAE,QAAO,GAAI,MAAA,EAAY,CAAC,MAAM,CAAC,CAAA;AAElF,EAAA,MAAM,gBAAA,GAAyBA,gBAAQ,MAAM;AAC3C,IAAA,MAAM,YAAA,GAAe,CAAC,CAAA,KAAY;AAChC,MAAA,MAAM,IAAA,GAAO,IAAI,IAAA,CAAK,CAAC,CAAA;AACvB,MAAA,IAAA,CAAK,QAAA,CAAS,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,CAAC,CAAA;AACxB,MAAA,OAAO,KAAK,OAAA,EAAQ;AAAA,IACtB,CAAA;AACA,IAAA,MAAM,WAA2C,EAAC;AAClD,IAAA,IAAI,aAAA,EAAe;AACjB,MAAA,QAAA,CAAS,IAAA,CAAK,CAAC,IAAA,KAAe,YAAA,CAAa,IAAI,CAAA,GAAI,YAAA,CAAa,aAAc,CAAC,CAAA;AAAA,IACjF;AACA,IAAA,IAAI,aAAA,EAAe;AACjB,MAAA,QAAA,CAAS,IAAA,CAAK,CAAC,IAAA,KAAe,YAAA,CAAa,IAAI,CAAA,GAAI,YAAA,CAAa,aAAc,CAAC,CAAA;AAAA,IACjF;AACA,IAAA,OAAO,QAAA;AAAA,EACT,CAAA,EAAG,CAAC,aAAA,EAAe,aAAa,CAAC,CAAA;AAEjC,EAAA,MAAM,YAAA,GAAe,CAAC,IAAA,KAA2B;AAC/C,IAAA,MAAM,GAAA,GAAM,IAAA,GAAO,aAAA,CAAc,IAAI,CAAA,GAAI,MAAA;AACzC,IAAA,QAAA,CAAS,OAAO,MAAS,CAAA;AACzB,IAAA,OAAA,CAAQ,KAAK,CAAA;AAAA,EACf,CAAA;AAEA,EAAA,uBACED,IAAAA,CAAC,OAAA,EAAA,EAAQ,OAAO,KAAA,EAAO,IAAA,EAAY,cAAc,OAAA,EAC/C,QAAA,EAAA;AAAA,oBAAAJ,GAAAA,CAAC,cAAA,EAAA,EAAe,OAAA,EAAO,IAAA,EACrB,QAAA,kBAAAI,IAAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,IAAA,EAAK,QAAA;AAAA,QACL,QAAA,EAAU,WAAW,EAAA,GAAK,CAAA;AAAA,QAC1B,SAAA,EAAW,CAAC,CAAA,KAAM;AAChB,UAAA,IAAI,CAAC,QAAA,KAAa,CAAA,CAAE,QAAQ,OAAA,IAAW,CAAA,CAAE,QAAQ,GAAA,CAAA,EAAM;AACrD,YAAA,CAAA,CAAE,cAAA,EAAe;AACjB,YAAA,OAAA,CAAQ,CAAC,CAAA,KAAM,CAAC,CAAC,CAAA;AAAA,UACnB;AAAA,QACF,CAAA;AAAA,QACA,SAAA,EAAW,EAAA;AAAA,UACT,WAAA;AAAA,UACA,YAAA;AAAA,UACA,yDAAA;AAAA,UACA,QAAA,IAAY,gCAAA;AAAA,UACZ;AAAA,SACF;AAAA,QAEA,QAAA,EAAA;AAAA,0BAAAJ,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,+GAAA,EACd,QAAA,kBAAAA,GAAAA,CAACM,UAAA,EAAA,EAAa,SAAA,EAAU,QAAA,EAAS,aAAA,EAAW,IAAA,EAAC,CAAA,EAC/C,CAAA;AAAA,0BACAN,GAAAA;AAAA,YAAC,KAAA;AAAA,YAAA;AAAA,cACC,IAAA,EAAK,MAAA;AAAA,cACL,QAAA,EAAQ,IAAA;AAAA,cACR,OAAO,KAAA,GAAQ,MAAA,CAAO,KAAA,EAAO,cAAA,EAAgB,UAAU,CAAA,GAAI,EAAA;AAAA,cAC3D,WAAA;AAAA,cACA,OAAA,EAAS,MAAM,CAAC,QAAA,IAAY,QAAQ,IAAI,CAAA;AAAA,cACxC,SAAA,EAAW,EAAA;AAAA,gBACT,0JAAA;AAAA,gBACA,CAAC,KAAA,IAAS;AAAA,eACZ;AAAA,cACA,YAAA,EAAY;AAAA;AAAA;AACd;AAAA;AAAA,KACF,EACF,CAAA;AAAA,oBACAA,GAAAA,CAAC,cAAA,EAAA,EAAe,WAAU,oBAAA,EAAqB,KAAA,EAAM,SACnD,QAAA,kBAAAA,GAAAA;AAAA,MAAC,QAAA;AAAA,MAAA;AAAA,QACC,IAAA,EAAK,QAAA;AAAA,QACL,QAAA,EAAU,KAAA;AAAA,QACV,QAAA,EAAU,YAAA;AAAA,QACV,QAAA,EAAU,CAAC,IAAA,KAAS,gBAAA,CAAiB,KAAK,CAAC,CAAA,KAAM,CAAA,CAAE,IAAI,CAAC,CAAA;AAAA,QACxD;AAAA;AAAA,KACF,EACF;AAAA,GAAA,EACF,CAAA;AAEJ;AChHA,IAAM,4BAAA,GAAqCO,sBAAc,KAAK,CAAA;AAEvD,SAAS,6BAAA,CAA8B;AAAA,EAC5C,QAAA;AAAA,EACA,MAAA,GAAS;AACX,CAAA,EAGG;AACD,EAAA,uBACEP,GAAAA,CAAC,4BAAA,CAA6B,UAA7B,EAAsC,KAAA,EAAO,QAC3C,QAAA,EACH,CAAA;AAEJ;AAEO,SAAS,wBAAA,GAAoC;AAClD,EAAA,OAAaO,mBAAW,4BAA4B,CAAA;AACtD;ACXA,SAAS,MAAA,CAAO,EAAE,GAAG,KAAA,EAAM,EAAsD;AAC/E,EAAA,uBAAOP,GAAAA,CAAiB,eAAA,CAAA,IAAA,EAAhB,EAAqB,WAAA,EAAU,QAAA,EAAU,GAAG,KAAA,EAAO,CAAA;AAC7D;AAEA,SAAS,aAAA,CAAc,EAAE,GAAG,KAAA,EAAM,EAAyD;AACzF,EAAA,uBAAOA,GAAAA,CAAiB,eAAA,CAAA,OAAA,EAAhB,EAAwB,WAAA,EAAU,gBAAA,EAAkB,GAAG,KAAA,EAAO,CAAA;AACxE;AAEA,SAAS,YAAA,CAAa,EAAE,GAAG,KAAA,EAAM,EAAwD;AACvF,EAAA,uBAAOA,GAAAA,CAAiB,eAAA,CAAA,MAAA,EAAhB,EAAuB,WAAA,EAAU,eAAA,EAAiB,GAAG,KAAA,EAAO,CAAA;AACtE;AAEA,SAAS,WAAA,CAAY,EAAE,GAAG,KAAA,EAAM,EAAuD;AACrF,EAAA,uBAAOA,GAAAA,CAAiB,eAAA,CAAA,KAAA,EAAhB,EAAsB,WAAA,EAAU,cAAA,EAAgB,GAAG,KAAA,EAAO,CAAA;AACpE;AAEA,SAAS,aAAA,CAAc;AAAA,EACrB,SAAA;AAAA,EACA,GAAG;AACL,CAAA,EAAyD;AACvD,EAAA,uBACEA,GAAAA;AAAA,IAAiB,eAAA,CAAA,OAAA;AAAA,IAAhB;AAAA,MACC,WAAA,EAAU,gBAAA;AAAA,MACV,SAAA,EAAW,EAAA;AAAA,QACT,kLAAA;AAAA,QACA;AAAA,OACF;AAAA,MACC,GAAG;AAAA;AAAA,GACN;AAEJ;AAEA,SAAS,aAAA,CAAc;AAAA,EACrB,SAAA;AAAA,EACA,QAAA;AAAA,EACA,eAAA,GAAkB,IAAA;AAAA,EAClB,gBAAA;AAAA,EACA,oBAAA;AAAA,EACA,iBAAA;AAAA,EACA,cAAA;AAAA,EACA,GAAG;AACL,CAAA,EAGG;AACD,EAAA,uBACEI,IAAAA,CAAC,YAAA,EAAA,EAAa,WAAA,EAAU,eAAA,EACtB,QAAA,EAAA;AAAA,oBAAAJ,GAAAA,CAAC,aAAA,EAAA,EAAc,SAAA,EAAW,gBAAA,EAAkB,CAAA;AAAA,oBAC5CI,IAAAA;AAAA,MAAiB,eAAA,CAAA,OAAA;AAAA,MAAhB;AAAA,QACC,WAAA,EAAU,gBAAA;AAAA,QACV,oBAAA,EAAsB,CAAC,KAAA,KAAU;AAC/B,UAAA,+BAAA,CAAgC,KAAK,CAAA;AACrC,UAAA,IAAI,CAAC,MAAM,gBAAA,EAAkB;AAC3B,YAAA,oBAAA,GAAuB,KAAK,CAAA;AAAA,UAC9B;AAAA,QACF,CAAA;AAAA,QACA,iBAAA,EAAmB,CAAC,KAAA,KAAU;AAC5B,UAAA,+BAAA,CAAgC,KAAK,CAAA;AACrC,UAAA,IAAI,CAAC,MAAM,gBAAA,EAAkB;AAC3B,YAAA,iBAAA,GAAoB,KAAK,CAAA;AAAA,UAC3B;AAAA,QACF,CAAA;AAAA,QACA,cAAA,EAAgB,CAAC,KAAA,KAAU;AACzB,UAAA,+BAAA,CAAgC,KAAK,CAAA;AACrC,UAAA,IAAI,CAAC,MAAM,gBAAA,EAAkB;AAC3B,YAAA,cAAA,GAAiB,KAAK,CAAA;AAAA,UACxB;AAAA,QACF,CAAA;AAAA,QACA,SAAA,EAAW,EAAA;AAAA,UACT,cAAA;AAAA,UACA,+VAAA;AAAA,UACA;AAAA,SACF;AAAA,QACC,GAAG,KAAA;AAAA,QAGJ,QAAA,EAAA;AAAA,0BAAAJ,GAAAA,CAAC,iCAA+B,QAAA,EAAS,CAAA;AAAA,UACxC,mCACCI,IAAAA;AAAA,YAAiB,eAAA,CAAA,KAAA;AAAA,YAAhB;AAAA,cACC,WAAA,EAAU,cAAA;AAAA,cACV,SAAA,EAAU,kXAAA;AAAA,cAEV,QAAA,EAAA;AAAA,gCAAAJ,IAAC,KAAA,EAAA,EAAM,CAAA;AAAA,gCACPA,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,WAAU,QAAA,EAAA,OAAA,EAAK;AAAA;AAAA;AAAA;AACjC;AAAA;AAAA;AAEJ,GAAA,EACF,CAAA;AAEJ;AAEA,SAAS,YAAA,CAAa,EAAE,SAAA,EAAW,GAAG,OAAM,EAAgC;AAC1E,EAAA,uBACEA,GAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,WAAA,EAAU,eAAA;AAAA,MACV,SAAA,EAAW,EAAA,CAAG,qDAAA,EAAuD,SAAS,CAAA;AAAA,MAC7E,GAAG;AAAA;AAAA,GACN;AAEJ;AAEA,SAAS,YAAA,CAAa,EAAE,SAAA,EAAW,GAAG,OAAM,EAAgC;AAC1E,EAAA,uBACEA,GAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,WAAA,EAAU,eAAA;AAAA,MACV,SAAA,EAAW,EAAA,CAAG,wDAAA,EAA0D,SAAS,CAAA;AAAA,MAChF,GAAG;AAAA;AAAA,GACN;AAEJ;AAEA,SAAS,WAAA,CAAY,EAAE,SAAA,EAAW,GAAG,OAAM,EAAuD;AAChG,EAAA,uBACEA,GAAAA;AAAA,IAAiB,eAAA,CAAA,KAAA;AAAA,IAAhB;AAAA,MACC,WAAA,EAAU,cAAA;AAAA,MACV,SAAA,EAAW,EAAA,CAAG,uDAAA,EAAyD,SAAS,CAAA;AAAA,MAC/E,GAAG;AAAA;AAAA,GACN;AAEJ;AAEA,SAAS,iBAAA,CAAkB;AAAA,EACzB,SAAA;AAAA,EACA,GAAG;AACL,CAAA,EAA6D;AAC3D,EAAA,uBACEA,GAAAA;AAAA,IAAiB,eAAA,CAAA,WAAA;AAAA,IAAhB;AAAA,MACC,WAAA,EAAU,oBAAA;AAAA,MACV,SAAA,EAAW,EAAA,CAAG,kDAAA,EAAoD,SAAS,CAAA;AAAA,MAC1E,GAAG;AAAA;AAAA,GACN;AAEJ;;;AC1IO,IAAM,wBAAA,GAA2B,GAAA;AACjC,IAAM,oBAAA,GAAuB,CAAA,YAAA,EAAe,wBAAA,GAA2B,CAAC,CAAA,GAAA,CAAA;AAMxE,IAAM,sBAAA,GAAyB,IAAA;AAC/B,IAAM,kBAAA,GAAqB,eAAe,sBAAsB,CAAA,GAAA,CAAA;AAEhE,IAAM,kBAAA,GAAgD;AAAA,EAC3D,EAAE,IAAI,OAAA,EAAQ;AAAA,EACd,EAAE,IAAI,WAAA,EAAY;AAAA,EAClB,EAAE,IAAI,OAAA,EAAQ;AAAA,EACd,EAAE,IAAI,QAAA,EAAS;AAAA,EACf,EAAE,IAAI,QAAA,EAAS;AAAA,EACf,EAAE,IAAI,UAAA,EAAW;AAAA,EACjB,EAAE,IAAI,UAAA,EAAW;AAAA,EACjB,EAAE,IAAI,WAAA,EAAY;AAAA,EAClB,EAAE,IAAI,WAAA;AACR,CAAA;AAEO,IAAM,qBAAA,GAAyD;AAAA,EACpE,KAAA,EAAO,OAAA;AAAA,EACP,SAAA,EAAW,WAAA;AAAA,EACX,KAAA,EAAO,aAAA;AAAA,EACP,MAAA,EAAQ,cAAA;AAAA,EACR,MAAA,EAAQ,cAAA;AAAA,EACR,QAAA,EAAU,WAAA;AAAA,EACV,QAAA,EAAU,WAAA;AAAA,EACV,SAAA,EAAW,YAAA;AAAA,EACX,SAAA,EAAW;AACb,CAAA;AAEO,IAAM,oBAAA,GAA8D;AAAA,EACzE,WAAA,EAAa,OAAA;AAAA,EACb,YAAA,EAAc,QAAA;AAAA,EACd,UAAA,EAAY,OAAA;AAAA,EACZ,QAAA,EAAU,KAAA;AAAA,EACV,WAAA,EAAa,YAAA;AAAA,EACb,SAAA,EAAW,YAAA;AAAA,EACX,YAAA,EAAc,qBAAA;AAAA,EACd,cAAA,EAAgB;AAClB,CAAA;AChCO,SAAS,2BAAA,CAA4B;AAAA,EAC1C,OAAA;AAAA,EACA,cAAA;AAAA,EACA,WAAA;AAAA,EACA,UAAA;AAAA,EACA,QAAA;AAAA,EACA,OAAA;AAAA,EACA;AACF,CAAA,EAAqC;AACnC,EAAA,IAAI,CAAC,SAAS,OAAO,IAAA;AAErB,EAAA,uBACEI,IAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAW,EAAA;AAAA,QACT,4FAAA;AAAA,QACA,cAAA,IACE,gFAAA;AAAA,QACF;AAAA,OACF;AAAA,MAEA,QAAA,EAAA;AAAA,wBAAAJ,GAAAA;AAAA,UAAC,MAAA;AAAA,UAAA;AAAA,YACC,IAAA,EAAK,QAAA;AAAA,YACL,OAAA,EAAQ,OAAA;AAAA,YACR,IAAA,EAAK,IAAA;AAAA,YACL,SAAA,EAAW,EAAA,CAAG,cAAA,IAAkB,4CAA4C,CAAA;AAAA,YAC5E,OAAA,EAAS,QAAA;AAAA,YAER,QAAA,EAAA;AAAA;AAAA,SACH;AAAA,wBACAA,GAAAA;AAAA,UAAC,MAAA;AAAA,UAAA;AAAA,YACC,IAAA,EAAK,QAAA;AAAA,YACL,IAAA,EAAK,IAAA;AAAA,YACL,SAAA,EAAW,EAAA,CAAG,cAAA,IAAkB,4CAA4C,CAAA;AAAA,YAC5E,OAAA,EAAS,OAAA;AAAA,YAER,QAAA,EAAA;AAAA;AAAA;AACH;AAAA;AAAA,GACF;AAEJ;ACxBO,SAAS,6BAAA,CAA8B;AAAA,EAC5C,cAAA;AAAA,EACA,KAAA;AAAA,EACA,cAAA;AAAA,EACA,aAAA;AAAA,EACA,QAAA;AAAA,EACA,gBAAA;AAAA,EACA,MAAA;AAAA,EACA,YAAA;AAAA,EACA,UAAA;AAAA,EACA,UAAA;AAAA,EACA,QAAA;AAAA,EACA,cAAA;AAAA,EACA,YAAA;AAAA,EACA,oBAAA;AAAA,EACA,kBAAA;AAAA,EACA,gBAAA;AAAA,EACA,aAAA;AAAA,EACA;AACF,CAAA,EAAuC;AACrC,EAAA,uBACEI,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,4BAAA,EACb,QAAA,EAAA;AAAA,oBAAAA,IAAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,SAAA,EAAW,EAAA;AAAA,UACT,iGAAA;AAAA,UACA,cAAA,KAAmB,IAAI,YAAA,GAAe;AAAA,SACxC;AAAA,QAEA,QAAA,EAAA;AAAA,0BAAAA,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,+BAAA,EACb,QAAA,EAAA;AAAA,4BAAAJ,IAAC,OAAA,EAAA,EAAM,OAAA,EAAS,YAAA,EAAc,SAAA,EAAU,6CACrC,QAAA,EAAA,UAAA,EACH,CAAA;AAAA,4BACAA,GAAAA;AAAA,cAAC,KAAA;AAAA,cAAA;AAAA,gBACC,EAAA,EAAI,YAAA;AAAA,gBACJ,IAAA,EAAK,MAAA;AAAA,gBACL,KAAA,EAAO,cAAA;AAAA,gBACP,UAAU,CAAC,CAAA,KAAM,kBAAA,CAAmB,CAAA,CAAE,OAAO,KAAK,CAAA;AAAA,gBAClD,MAAA,EAAQ,aAAA;AAAA,gBACR,SAAA,EAAW,CAAC,CAAA,KAAM;AAChB,kBAAA,IAAI,CAAA,CAAE,QAAQ,OAAA,EAAS;AACrB,oBAAA,CAAA,CAAE,cAAA,EAAe;AACjB,oBAAA,aAAA,EAAc;AAAA,kBAChB;AAAA,gBACF,CAAA;AAAA,gBACA,WAAA,EAAa,oBAAA;AAAA,gBACb,SAAA,EAAU;AAAA;AAAA;AACZ,WAAA,EACF,CAAA;AAAA,0BACAI,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,+BAAA,EACb,QAAA,EAAA;AAAA,4BAAAJ,IAAC,OAAA,EAAA,EAAM,OAAA,EAAS,UAAA,EAAY,SAAA,EAAU,6CACnC,QAAA,EAAA,QAAA,EACH,CAAA;AAAA,4BACAA,GAAAA;AAAA,cAAC,KAAA;AAAA,cAAA;AAAA,gBACC,EAAA,EAAI,UAAA;AAAA,gBACJ,IAAA,EAAK,MAAA;AAAA,gBACL,KAAA,EAAO,YAAA;AAAA,gBACP,UAAU,CAAC,CAAA,KAAM,gBAAA,CAAiB,CAAA,CAAE,OAAO,KAAK,CAAA;AAAA,gBAChD,MAAA,EAAQ,WAAA;AAAA,gBACR,SAAA,EAAW,CAAC,CAAA,KAAM;AAChB,kBAAA,IAAI,CAAA,CAAE,QAAQ,OAAA,EAAS;AACrB,oBAAA,CAAA,CAAE,cAAA,EAAe;AACjB,oBAAA,WAAA,EAAY;AAAA,kBACd;AAAA,gBACF,CAAA;AAAA,gBACA,WAAA,EAAa,oBAAA;AAAA,gBACb,SAAA,EAAU;AAAA;AAAA;AACZ,WAAA,EACF;AAAA;AAAA;AAAA,KACF;AAAA,oBACAA,IAAC,KAAA,EAAA,EAAI,SAAA,EAAW,GAAG,WAAA,EAAa,gCAAgC,GAC9D,QAAA,kBAAAA,GAAAA;AAAA,MAAC,QAAA;AAAA,MAAA;AAAA,QACC,IAAA,EAAK,OAAA;AAAA,QACL,cAAA,EAAgB,cAAA;AAAA,QAChB,KAAA,EAAO,cAAA;AAAA,QACP,aAAA;AAAA,QACA,QAAA,EAAU,KAAA;AAAA,QACV,QAAA;AAAA,QACA,QAAA,EAAU,gBAAA;AAAA,QACV,MAAA;AAAA,QACA,SAAA,EAAW,EAAA,CAAG,cAAA,KAAmB,CAAA,IAAK,KAAK;AAAA;AAAA,KAC7C,EACF;AAAA,GAAA,EACF,CAAA;AAEJ;AC5GO,SAAS,WAAA,CAAY,GAA0B,CAAA,EAAuB;AAC3E,EAAA,MAAM,EAAA,GAAK,aAAA,CAAc,CAAA,EAAG,IAAI,GAAG,OAAA,EAAQ;AAC3C,EAAA,MAAM,EAAA,GAAK,aAAA,CAAc,CAAA,EAAG,EAAE,GAAG,OAAA,EAAQ;AACzC,EAAA,MAAM,EAAA,GAAK,aAAA,CAAc,CAAA,CAAE,IAAI,GAAG,OAAA,EAAQ;AAC1C,EAAA,MAAM,EAAA,GAAK,aAAA,CAAc,CAAA,CAAE,EAAE,GAAG,OAAA,EAAQ;AACxC,EAAA,OAAO,EAAA,KAAO,MAAM,EAAA,KAAO,EAAA;AAC7B;AAGO,SAAS,kBAAkB,KAAA,EAAqD;AACrF,EAAA,IAAI,CAAC,KAAA,EAAO,IAAA,EAAM,OAAO,KAAA;AACzB,EAAA,IAAI,KAAA,CAAM,IAAI,OAAO,KAAA;AACrB,EAAA,OAAO,EAAE,IAAA,EAAM,KAAA,CAAM,IAAA,EAAM,EAAA,EAAI,MAAM,IAAA,EAAK;AAC5C;AAEO,SAAS,UAAU,IAAA,EAA2B;AACnD,EAAA,MAAM,CAAA,GAAI,KAAK,IAAA,EAAK;AACpB,EAAA,IAAI,CAAC,GAAG,OAAO,IAAA;AACf,EAAA,MAAM,GAAA,uBAAU,IAAA,EAAK;AACrB,EAAA,KAAA,MAAW,GAAA,IAAO,CAAC,YAAA,EAAc,gBAAA,EAAkB,cAAc,CAAA,EAAG;AAClE,IAAA,IAAI;AACF,MAAA,MAAM,CAAA,GAAI,KAAA,CAAM,CAAA,EAAG,GAAA,EAAK,GAAG,CAAA;AAC3B,MAAA,IAAI,CAAC,MAAA,CAAO,KAAA,CAAM,EAAE,OAAA,EAAS,GAAG,OAAO,CAAA;AAAA,IACzC,CAAA,CAAA,MAAQ;AAAA,IAER;AAAA,EACF;AACA,EAAA,OAAO,IAAA;AACT;AAEO,SAAS,kBAAkB,IAAA,EAAgC;AAChE,EAAA,MAAM,OAAA,GAAU,KAAK,IAAA,EAAK;AAC1B,EAAA,IAAI,CAAC,OAAA,EAAS,OAAO,EAAE,IAAA,EAAM,MAAA,EAAW,IAAI,MAAA,EAAU;AACtD,EAAA,MAAM,KAAA,GAAQ,OAAA,CAAQ,KAAA,CAAM,YAAY,CAAA,CAAE,IAAI,CAAC,CAAA,KAAM,CAAA,CAAE,IAAA,EAAM,CAAA;AAC7D,EAAA,IAAI;AACF,IAAA,IAAI,KAAA,CAAM,UAAU,CAAA,EAAG;AACrB,MAAA,MAAM,IAAA,GAAO,SAAA,CAAU,KAAA,CAAM,CAAC,CAAE,CAAA;AAChC,MAAA,MAAM,EAAA,GAAK,SAAA,CAAU,KAAA,CAAM,CAAC,CAAE,CAAA;AAC9B,MAAA,IAAI,IAAA,IAAQ,EAAA,EAAI,OAAO,EAAE,MAAM,EAAA,EAAG;AAClC,MAAA,IAAI,IAAA,EAAM,OAAO,EAAE,IAAA,EAAM,IAAI,KAAA,CAAA,EAAU;AAAA,IACzC,WAAW,KAAA,CAAM,MAAA,KAAW,CAAA,IAAK,KAAA,CAAM,CAAC,CAAA,EAAG;AACzC,MAAA,MAAM,IAAA,GAAO,SAAA,CAAU,KAAA,CAAM,CAAC,CAAC,CAAA;AAC/B,MAAA,IAAI,IAAA,EAAM,OAAO,EAAE,IAAA,EAAM,IAAI,KAAA,CAAA,EAAU;AAAA,IACzC;AAAA,EACF,CAAA,CAAA,MAAQ;AAAA,EAER;AACA,EAAA,OAAO,IAAA;AACT;AAEO,SAAS,gBAAA,CACd,KAAA,EACA,WAAA,EACA,UAAA,EACQ;AACR,EAAA,MAAM,OAAO,KAAA,EAAO,IAAA;AACpB,EAAA,MAAM,KAAK,KAAA,EAAO,EAAA;AAElB,EAAA,IAAI,QAAQ,EAAA,EAAI;AACd,IAAA,OAAO,CAAA,EAAGQ,MAAAA,CAAO,IAAA,EAAM,cAAA,EAAgB,UAAU,CAAC,CAAA,QAAA,EAAWA,MAAAA,CAAO,EAAA,EAAI,cAAA,EAAgB,UAAU,CAAC,CAAA,CAAA;AAAA,EACrG;AAEA,EAAA,IAAI,IAAA,EAAM;AACR,IAAA,OAAOA,MAAAA,CAAO,IAAA,EAAM,cAAA,EAAgB,UAAU,CAAA;AAAA,EAChD;AAEA,EAAA,OAAO,WAAA;AACT;ACxDO,SAAS,yBAAA,CAA0B;AAAA,EACxC,OAAA;AAAA,EACA,KAAA;AAAA,EACA,MAAA;AAAA,EACA,cAAA;AAAA,EACA;AACF,CAAA,EAAmC;AACjC,EAAA,IAAI,OAAA,CAAQ,MAAA,KAAW,CAAA,EAAG,OAAO,IAAA;AAEjC,EAAA,IAAI,WAAW,YAAA,EAAc;AAC3B,IAAA,uBACER,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,0DAAA,EACb,QAAA,kBAAAA,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,qHAAA,EACZ,QAAA,EAAA,OAAA,CAAQ,GAAA,CAAI,CAAC,MAAA,KAAW;AACvB,MAAA,MAAM,MAAA,GAAS,WAAA,CAAY,KAAA,EAAO,MAAA,CAAO,UAAU,CAAA;AACnD,MAAA,uBACEA,GAAAA;AAAA,QAAC,MAAA;AAAA,QAAA;AAAA,UAEC,IAAA,EAAK,QAAA;AAAA,UACL,OAAA,EAAQ,OAAA;AAAA,UACR,IAAA,EAAK,IAAA;AAAA,UACL,SAAA,EAAW,EAAA;AAAA,YACT,sEAAA;AAAA,YACA,MAAA,IAAU;AAAA,WACZ;AAAA,UACA,OAAA,EAAS,MAAM,QAAA,CAAS,MAAA,CAAO,QAAQ,CAAA;AAAA,UAEtC,QAAA,EAAA,MAAA,CAAO;AAAA,SAAA;AAAA,QAVH,MAAA,CAAO;AAAA,OAWd;AAAA,IAEJ,CAAC,GACH,CAAA,EACF,CAAA;AAAA,EAEJ;AAEA,EAAA,uBACEA,IAAC,KAAA,EAAA,EAAI,SAAA,EAAU,8DACb,QAAA,kBAAAI,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,0FAAA,EACZ,QAAA,EAAA;AAAA,IAAA,cAAA,mBACCJ,GAAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAU,8FAAA,EACV,0BACH,CAAA,GACE,IAAA;AAAA,IACH,OAAA,CAAQ,GAAA,CAAI,CAAC,MAAA,KAAW;AACvB,MAAA,MAAM,MAAA,GAAS,WAAA,CAAY,KAAA,EAAO,MAAA,CAAO,UAAU,CAAA;AACnD,MAAA,uBACEA,GAAAA;AAAA,QAAC,MAAA;AAAA,QAAA;AAAA,UAEC,IAAA,EAAK,QAAA;AAAA,UACL,OAAA,EAAQ,OAAA;AAAA,UACR,IAAA,EAAK,IAAA;AAAA,UACL,SAAA,EAAW,EAAA;AAAA,YACT,mFAAA;AAAA,YACA,MAAA,IAAU;AAAA,WACZ;AAAA,UACA,OAAA,EAAS,MAAM,QAAA,CAAS,MAAA,CAAO,QAAQ,CAAA;AAAA,UAEtC,QAAA,EAAA,MAAA,CAAO;AAAA,SAAA;AAAA,QAVH,MAAA,CAAO;AAAA,OAWd;AAAA,IAEJ,CAAC;AAAA,GAAA,EACH,CAAA,EACF,CAAA;AAEJ;AC9DO,IAAM,sBAAA,GAA+BS,OAAA,CAAA,UAAA;AAAA,EAC1C,SAASC,uBAAAA,CACP;AAAA,IACE,SAAA;AAAA,IACA,SAAA;AAAA,IACA,oBAAA;AAAA,IACA,OAAA;AAAA,IACA,SAAA;AAAA,IACA,MAAA;AAAA,IACA,aAAA;AAAA,IACA,YAAA;AAAA,IACA;AAAA,KAEF,GAAA,EACA;AACA,IAAA,uBACEN,IAAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,GAAA;AAAA,QACA,IAAA,EAAK,QAAA;AAAA,QACL,QAAA,EAAU,CAAA;AAAA,QACV,YAAA,EAAY,SAAA;AAAA,QACZ,eAAA,EAAc,QAAA;AAAA,QACd,OAAA,EAAS,MAAA;AAAA,QACT,SAAA,EAAW,CAAC,CAAA,KAAM;AAChB,UAAA,IAAI,CAAA,CAAE,GAAA,KAAQ,OAAA,IAAW,CAAA,CAAE,QAAQ,GAAA,EAAK;AACtC,YAAA,CAAA,CAAE,cAAA,EAAe;AACjB,YAAA,MAAA,EAAO;AAAA,UACT;AAAA,QACF,CAAA;AAAA,QACA,SAAA,EAAW,EAAA;AAAA,UACT,WAAA;AAAA,UACA,oIAAA;AAAA,UACA;AAAA,SACF;AAAA,QAEA,QAAA,EAAA;AAAA,0BAAAJ,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,+GAAA,EACd,QAAA,kBAAAA,GAAAA,CAACM,UAAAA,EAAA,EAAa,SAAA,EAAU,QAAA,EAAS,aAAA,EAAY,MAAA,EAAO,CAAA,EACtD,CAAA;AAAA,0BACAN,GAAAA;AAAA,YAAC,KAAA;AAAA,YAAA;AAAA,cACC,IAAA,EAAK,MAAA;AAAA,cACL,KAAA,EAAO,SAAA;AAAA,cACP,UAAU,CAAC,CAAA,KAAM,aAAA,CAAc,CAAA,CAAE,OAAO,KAAK,CAAA;AAAA,cAC7C,OAAA,EAAS,YAAA;AAAA,cACT,MAAA,EAAQ,WAAA;AAAA,cACR,OAAA,EAAS,CAAC,CAAA,KAAM;AAEd,gBAAA,CAAA,CAAE,eAAA,EAAgB;AAClB,gBAAA,MAAA,EAAO;AAAA,cACT,CAAA;AAAA,cACA,aAAA,EAAe,CAAC,CAAA,KAAM;AAEpB,gBAAA,CAAA,CAAE,eAAA,EAAgB;AAAA,cACpB,CAAA;AAAA,cACA,SAAA,EAAW,CAAC,CAAA,KAAM;AAChB,gBAAA,IAAI,CAAA,CAAE,QAAQ,OAAA,EAAS;AACrB,kBAAC,CAAA,CAAE,OAA4B,IAAA,EAAK;AAAA,gBACtC;AAAA,cACF,CAAA;AAAA,cACA,WAAA,EAAa,oBAAA;AAAA,cACb,cAAY,OAAA,IAAW,MAAA;AAAA,cACvB,SAAA,EAAW,EAAA;AAAA,gBACT,kJAAA;AAAA,gBACA,OAAA,IAAW;AAAA,eACb;AAAA,cACA,KAAA,EAAO,CAAC,OAAA,GAAU,SAAA,GAAY,MAAA;AAAA,cAC9B,YAAA,EAAY;AAAA;AAAA;AACd;AAAA;AAAA,KACF;AAAA,EAEJ;AACF,CAAA;;;ACrFO,SAAS,eAAe,QAAA,EAAsC;AACnE,EAAA,MAAM,KAAA,uBAAY,IAAA,EAAK;AACvB,EAAA,KAAA,CAAM,QAAA,CAAS,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,GAAG,CAAA;AAC9B,EAAA,MAAM,IAAA,GAAO,IAAI,IAAA,CAAK,KAAK,CAAA;AAC3B,EAAA,IAAA,CAAK,QAAA,CAAS,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,CAAC,CAAA;AACxB,EAAA,MAAM,EAAA,GAAK,IAAI,IAAA,CAAK,KAAK,CAAA;AAEzB,EAAA,QAAQ,QAAA;AAAU,IAChB,KAAK,OAAA;AACH,MAAA,OAAO,EAAE,MAAM,EAAA,EAAG;AAAA,IACpB,KAAK,WAAA;AACH,MAAA,IAAA,CAAK,OAAA,CAAQ,IAAA,CAAK,OAAA,EAAQ,GAAI,CAAC,CAAA;AAC/B,MAAA,EAAA,CAAG,OAAA,CAAQ,EAAA,CAAG,OAAA,EAAQ,GAAI,CAAC,CAAA;AAC3B,MAAA,OAAO,EAAE,MAAM,EAAA,EAAG;AAAA,IACpB,KAAK,OAAA;AACH,MAAA,IAAA,CAAK,OAAA,CAAQ,IAAA,CAAK,OAAA,EAAQ,GAAI,CAAC,CAAA;AAC/B,MAAA,OAAO,EAAE,MAAM,EAAA,EAAG;AAAA,IACpB,KAAK,QAAA;AACH,MAAA,IAAA,CAAK,OAAA,CAAQ,IAAA,CAAK,OAAA,EAAQ,GAAI,EAAE,CAAA;AAChC,MAAA,OAAO,EAAE,MAAM,EAAA,EAAG;AAAA,IACpB,KAAK,QAAA;AACH,MAAA,IAAA,CAAK,OAAA,CAAQ,IAAA,CAAK,OAAA,EAAQ,GAAI,EAAE,CAAA;AAChC,MAAA,OAAO,EAAE,MAAM,EAAA,EAAG;AAAA,IACpB,KAAK,UAAA,EAAY;AACf,MAAA,MAAM,GAAA,GAAM,KAAK,MAAA,EAAO;AACxB,MAAA,MAAM,YAAA,GAAe,GAAA,KAAQ,CAAA,GAAI,EAAA,GAAK,CAAA,GAAI,GAAA;AAC1C,MAAA,IAAA,CAAK,OAAA,CAAQ,IAAA,CAAK,OAAA,EAAQ,GAAI,YAAY,CAAA;AAC1C,MAAA,OAAO,EAAE,MAAM,EAAA,EAAG;AAAA,IACpB;AAAA,IACA,KAAK,UAAA,EAAY;AACf,MAAA,MAAM,GAAA,GAAM,KAAK,MAAA,EAAO;AACxB,MAAA,MAAM,YAAA,GAAe,GAAA,KAAQ,CAAA,GAAI,EAAA,GAAK,CAAA,GAAI,GAAA;AAC1C,MAAA,MAAM,UAAA,GAAa,IAAA,CAAK,OAAA,EAAQ,GAAI,YAAA;AACpC,MAAA,IAAA,CAAK,OAAA,CAAQ,aAAa,CAAC,CAAA;AAC3B,MAAA,EAAA,CAAG,OAAA,CAAQ,aAAa,CAAC,CAAA;AACzB,MAAA,EAAA,CAAG,QAAA,CAAS,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,GAAG,CAAA;AAC3B,MAAA,OAAO,EAAE,MAAM,EAAA,EAAG;AAAA,IACpB;AAAA,IACA,KAAK,WAAA;AACH,MAAA,IAAA,CAAK,QAAQ,CAAC,CAAA;AACd,MAAA,OAAO,EAAE,MAAM,EAAA,EAAG;AAAA,IACpB,KAAK,WAAA;AACH,MAAA,IAAA,CAAK,QAAA,CAAS,IAAA,CAAK,QAAA,EAAS,GAAI,CAAC,CAAA;AACjC,MAAA,IAAA,CAAK,QAAQ,CAAC,CAAA;AACd,MAAA,EAAA,CAAG,QAAQ,CAAC,CAAA;AACZ,MAAA,EAAA,CAAG,QAAA,CAAS,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,GAAG,CAAA;AAC3B,MAAA,OAAO,EAAE,MAAM,EAAA,EAAG;AAAA,IACpB;AACE,MAAA,OAAO,EAAE,MAAM,EAAA,EAAG;AAAA;AAExB;AClDO,SAAS,aAAA,CAAc,KAAA,EAAe,QAAA,GAAW,KAAA,EAAgB;AACtE,EAAA,MAAM,SAAA,GAAkBW,OAAA,CAAA,WAAA;AAAA,IACtB,CAAC,QAAA,KAAyB;AACxB,MAAA,MAAM,GAAA,GAAM,MAAA,CAAO,UAAA,CAAW,KAAK,CAAA;AACnC,MAAA,GAAA,CAAI,gBAAA,CAAiB,UAAU,QAAQ,CAAA;AACvC,MAAA,OAAO,MAAM,GAAA,CAAI,mBAAA,CAAoB,QAAA,EAAU,QAAQ,CAAA;AAAA,IACzD,CAAA;AAAA,IACA,CAAC,KAAK;AAAA,GACR;AACA,EAAA,OAAaA,OAAA,CAAA,oBAAA;AAAA,IACX,SAAA;AAAA,IACA,MAAM,MAAA,CAAO,UAAA,CAAW,KAAK,CAAA,CAAE,OAAA;AAAA,IAC/B,MAAM;AAAA,GACR;AACF;AAEO,SAAS,2BAAA,GAAuC;AACrD,EAAA,OAAO,aAAA,CAAc,sBAAsB,KAAK,CAAA;AAClD;AAEO,SAAS,yBAAA,GAAqC;AACnD,EAAA,OAAO,aAAA,CAAc,oBAAoB,KAAK,CAAA;AAChD;ACCO,SAAS,eAAA,CAAgB;AAAA,EAC9B,KAAA;AAAA,EACA,QAAA;AAAA,EACA,OAAA;AAAA,EACA,OAAA;AAAA,EACA,WAAA;AAAA,EACA,WAAA,GAAc,IAAA;AAAA,EACd,OAAA,EAAS,aAAA;AAAA,EACT,YAAA;AAAA,EACA,MAAA;AAAA,EACA,OAAA;AAAA,EACA,cAAA;AAAA,EACA;AACF,CAAA,EAAyB;AACvB,EAAA,MAAM,CAAA,GAAI,EAAE,GAAG,oBAAA,EAAsB,GAAG,YAAA,EAAa;AACrD,EAAA,MAAM,oBAAA,GAAuB,eAAe,CAAA,CAAE,WAAA;AAC9C,EAAA,MAAM,UAAA,GAAmBC,gBAAQ,MAAM;AACrC,IAAA,IAAI,aAAA,EAAe,QAAQ,OAAO,aAAA;AAClC,IAAA,IAAI,CAAC,WAAA,EAAa,OAAO,EAAC;AAC1B,IAAA,OAAO,kBAAA,CAAmB,GAAA,CAAI,CAAC,EAAE,IAAG,MAAO;AAAA,MACzC,EAAA;AAAA,MACA,OAAO,YAAA,EAAc,YAAA,GAAe,EAAE,CAAA,IAAK,sBAAsB,EAAE,CAAA;AAAA,MACnE,QAAA,EAAU,MAAM,cAAA,CAAe,EAAE;AAAA,KACnC,CAAE,CAAA;AAAA,EACJ,GAAG,CAAC,aAAA,EAAe,WAAA,EAAa,YAAA,EAAc,YAAY,CAAC,CAAA;AAE3D,EAAA,MAAM,aAAA,GAAgB,cAAc,OAAO,CAAA;AAC3C,EAAA,MAAM,aAAA,GAAgB,cAAc,OAAO,CAAA;AAC3C,EAAA,MAAM,iBAAiB,2BAAA,EAA4B;AACnD,EAAA,MAAM,eAAe,yBAAA,EAA0B;AAC/C,EAAA,MAAM,cAAA,GAAiB,cAAA,GAAiB,CAAA,GAAI,YAAA,GAAe,CAAA,GAAI,CAAA;AAC/D,EAAA,MAAM,CAAC,IAAA,EAAM,OAAO,CAAA,GAAUA,iBAAS,KAAK,CAAA;AAC5C,EAAA,MAAM,CAAC,KAAA,EAAO,QAAQ,CAAA,GAAUA,iBAAgC,KAAK,CAAA;AACrE,EAAA,MAAM,CAAC,cAAA,EAAgB,iBAAiB,CAAA,GAAUA,OAAA,CAAA,QAAA,CAAS,MAAM,KAAA,EAAO,IAAA,oBAAQ,IAAI,IAAA,EAAM,CAAA;AAC1F,EAAA,MAAM,UAAA,GAAmBA,eAA8B,KAAK,CAAA;AAC5D,EAAA,MAAM,UAAA,GAAmBA,eAAO,KAAK,CAAA;AACrC,EAAA,MAAM,YAAA,GAAe,CAAC,CAAC,OAAA;AACvB,EAAA,MAAM,UAAgBA,OAAA,CAAA,KAAA,EAAM;AAC5B,EAAA,MAAM,YAAA,GAAe,oBAAoB,OAAO,CAAA,CAAA;AAChD,EAAA,MAAM,UAAA,GAAa,kBAAkB,OAAO,CAAA,CAAA;AAE5C,EAAMA,kBAAU,MAAM;AACpB,IAAA,MAAM,UAAU,UAAA,CAAW,OAAA;AAC3B,IAAA,UAAA,CAAW,OAAA,GAAU,IAAA;AACrB,IAAA,IAAI,IAAA,IAAQ,CAAC,OAAA,EAAS;AACpB,MAAA,UAAA,CAAW,OAAA,GAAU,KAAA;AACrB,MAAA,QAAA,CAAS,KAAK,CAAA;AACd,MAAA,iBAAA,CAAkB,KAAA,EAAO,IAAA,oBAAQ,IAAI,IAAA,EAAM,CAAA;AAAA,IAC7C,CAAA,MAAA,IAAW,QAAQ,OAAA,EAAS;AAC1B,MAAA,QAAA,CAAS,KAAK,CAAA;AAAA,IAChB;AAAA,EACF,CAAA,EAAG,CAAC,IAAA,EAAM,KAAK,CAAC,CAAA;AAEhB,EAAA,MAAM,gBAAA,GAAyBA,OAAA,CAAA,WAAA;AAAA,IAC7B,CAAC,IAAA,KAAkB;AACjB,MAAA,IAAI,CAAC,IAAA,IAAQ,IAAA,IAAQ,CAAC,YAAA,EAAc;AAClC,QAAA,QAAA,CAAS,WAAW,OAAO,CAAA;AAC3B,QAAA,QAAA,CAAS,WAAW,OAAO,CAAA;AAAA,MAC7B;AACA,MAAA,OAAA,CAAQ,IAAI,CAAA;AAAA,IACd,CAAA;AAAA,IACA,CAAC,IAAA,EAAM,YAAA,EAAc,QAAQ;AAAA,GAC/B;AAEA,EAAA,MAAM,UAAA,GAAmBA,OAAA,CAAA,OAAA,CAAQ,MAAO,MAAA,GAAS,EAAE,QAAO,GAAI,MAAA,EAAY,CAAC,MAAM,CAAC,CAAA;AAClF,EAAA,MAAM,KAAA,GAAcA,OAAA,CAAA,OAAA;AAAA,IAClB,MAAM,gBAAA,CAAiB,KAAA,EAAO,oBAAA,EAAsB,UAAU,CAAA;AAAA,IAC9D,CAAC,oBAAA,EAAsB,KAAA,EAAO,UAAU;AAAA,GAC1C;AAEA,EAAA,MAAM,CAAC,SAAA,EAAW,YAAY,CAAA,GAAUA,iBAAS,KAAK,CAAA;AACtD,EAAA,MAAM,eAAA,GAAwBA,eAAO,KAAK,CAAA;AAC1C,EAAMA,kBAAU,MAAM;AACpB,IAAA,IAAI,CAAC,eAAA,CAAgB,OAAA,EAAS,YAAA,CAAa,KAAK,CAAA;AAAA,EAClD,CAAA,EAAG,CAAC,KAAK,CAAC,CAAA;AAEV,EAAA,MAAM,kBAAkB,MAAM;AAC5B,IAAA,eAAA,CAAgB,OAAA,GAAU,KAAA;AAC1B,IAAA,MAAM,IAAA,GAAO,kBAAkB,SAAS,CAAA;AACxC,IAAA,IAAI,IAAA,EAAM;AACR,MAAA,MAAM,SAAA,GACJ,IAAA,CAAK,IAAA,IAAQ,IAAA,CAAK,EAAA,GACd,CAAA,EAAGJ,MAAAA,CAAO,IAAA,CAAK,IAAA,EAAM,cAAA,EAAgB,UAAU,CAAC,CAAA,QAAA,EAAWA,MAAAA,CAAO,IAAA,CAAK,EAAA,EAAI,cAAA,EAAgB,UAAU,CAAC,CAAA,CAAA,GACtG,IAAA,CAAK,IAAA,GACHA,MAAAA,CAAO,IAAA,CAAK,IAAA,EAAM,cAAA,EAAgB,UAAU,CAAA,GAC5C,oBAAA;AACR,MAAA,IAAI,YAAA,EAAc;AAChB,QAAA,QAAA,CAAS,IAAI,CAAA;AACb,QAAA,YAAA,CAAa,SAAS,CAAA;AAAA,MACxB,CAAA,MAAO;AACL,QAAA,QAAA,CAAS,IAAI,CAAA;AACb,QAAA,YAAA,CAAa,SAAS,CAAA;AAAA,MACxB;AAAA,IACF,CAAA,MAAO;AACL,MAAA,YAAA,CAAa,KAAK,CAAA;AAAA,IACpB;AAAA,EACF,CAAA;AAEA,EAAA,MAAM,gBAAA,GAAyBI,gBAAQ,MAAM;AAC3C,IAAA,MAAM,YAAA,GAAe,CAAC,CAAA,KAAY;AAChC,MAAA,MAAM,IAAA,GAAO,IAAI,IAAA,CAAK,CAAC,CAAA;AACvB,MAAA,IAAA,CAAK,QAAA,CAAS,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,CAAC,CAAA;AACxB,MAAA,OAAO,KAAK,OAAA,EAAQ;AAAA,IACtB,CAAA;AACA,IAAA,MAAM,WAA2B,EAAC;AAClC,IAAA,IAAI,aAAA,EAAe;AACjB,MAAA,QAAA,CAAS,IAAA,CAAK,CAAC,IAAA,KAAe,YAAA,CAAa,IAAI,CAAA,GAAI,YAAA,CAAa,aAAc,CAAC,CAAA;AAAA,IACjF;AACA,IAAA,IAAI,aAAA,EAAe;AACjB,MAAA,QAAA,CAAS,IAAA,CAAK,CAAC,IAAA,KAAe,YAAA,CAAa,IAAI,CAAA,GAAI,YAAA,CAAa,aAAc,CAAC,CAAA;AAAA,IACjF;AACA,IAAA,IAAI,gBAAgB,QAAA,CAAS,IAAA,CAAK,CAAC,IAAA,KAAe,cAAA,CAAe,IAAI,CAAC,CAAA;AACtE,IAAA,OAAO,QAAA;AAAA,EACT,CAAA,EAAG,CAAC,aAAA,EAAe,aAAA,EAAe,cAAc,CAAC,CAAA;AAEjD,EAAA,MAAM,YAAA,GAAe,CAAC,QAAA,KAA8B;AAClD,IAAA,MAAM,QAAQ,QAAA,EAAS;AACvB,IAAA,QAAA,CAAS,KAAK,CAAA;AACd,IAAA,IAAI,CAAC,YAAA,EAAc,QAAA,CAAS,KAAK,CAAA;AAAA,EACnC,CAAA;AAEA,EAAA,MAAM,cAAc,MAAM;AACxB,IAAA,IAAI,YAAA,EAAc;AAChB,MAAA,MAAM,SAAA,GAAY,kBAAkB,KAAK,CAAA;AACzC,MAAA,QAAA,CAAS,SAAS,CAAA;AAClB,MAAA,QAAA,CAAS,SAAS,CAAA;AAClB,MAAA,OAAA,GAAU,SAAS,CAAA;AAAA,IACrB;AACA,IAAA,OAAA,CAAQ,KAAK,CAAA;AAAA,EACf,CAAA;AAEA,EAAA,MAAM,eAAe,MAAM;AACzB,IAAA,IAAI,YAAA,EAAc;AAChB,MAAA,QAAA,CAAS,WAAW,OAAO,CAAA;AAAA,IAC7B,CAAA,MAAO;AACL,MAAA,QAAA,CAAS,WAAW,OAAO,CAAA;AAC3B,MAAA,QAAA,CAAS,WAAW,OAAO,CAAA;AAAA,IAC7B;AACA,IAAA,OAAA,CAAQ,KAAK,CAAA;AAAA,EACf,CAAA;AAEA,EAAA,MAAM,YAAA,GAAe,CAAC,KAAA,EAA8B,WAAA,KAAsB;AACxE,IAAA,MAAM,GAAA,GAAM,cAAc,WAAW,CAAA;AACrC,IAAA,IAAI,CAAC,GAAA,EAAK;AACV,IAAA,QAAA,CAAS,CAAC,IAAA,KAAS;AACjB,MAAA,IAAI,CAAC,IAAA,EAAM,IAAA,IAAS,IAAA,CAAK,IAAA,IAAQ,KAAK,EAAA,EAAK;AACzC,QAAA,MAAMC,UAAAA,GAAY,EAAE,IAAA,EAAM,GAAA,EAAK,IAAI,MAAA,EAAU;AAC7C,QAAA,IAAI,CAAC,YAAA,EAAc,QAAA,CAASA,UAAS,CAAA;AACrC,QAAA,OAAOA,UAAAA;AAAA,MACT;AACA,MAAA,IAAI,GAAA,GAAM,KAAK,IAAA,EAAM;AACnB,QAAA,MAAMA,UAAAA,GAAY,EAAE,IAAA,EAAM,GAAA,EAAK,IAAI,MAAA,EAAU;AAC7C,QAAA,IAAI,CAAC,YAAA,EAAc,QAAA,CAASA,UAAS,CAAA;AACrC,QAAA,OAAOA,UAAAA;AAAA,MACT;AACA,MAAA,MAAM,YAAY,EAAE,IAAA,EAAM,IAAA,CAAK,IAAA,EAAM,IAAI,GAAA,EAAI;AAC7C,MAAA,IAAI,CAAC,YAAA,EAAc,QAAA,CAAS,SAAS,CAAA;AACrC,MAAA,OAAO,SAAA;AAAA,IACT,CAAC,CAAA;AAAA,EACH,CAAA;AAEA,EAAA,MAAM,CAAC,cAAA,EAAgB,iBAAiB,CAAA,GAAUD,iBAAS,EAAE,CAAA;AAC7D,EAAA,MAAM,CAAC,YAAA,EAAc,eAAe,CAAA,GAAUA,iBAAS,EAAE,CAAA;AACzD,EAAMA,kBAAU,MAAM;AACpB,IAAA,IAAI,IAAA,EAAM;AACR,MAAA,iBAAA,CAAkB,OAAO,IAAA,GAAOJ,MAAAA,CAAO,MAAM,IAAA,EAAM,YAAY,IAAI,EAAE,CAAA;AACrE,MAAA,eAAA,CAAgB,OAAO,EAAA,GAAKA,MAAAA,CAAO,MAAM,EAAA,EAAI,YAAY,IAAI,EAAE,CAAA;AAAA,IACjE;AAAA,EACF,GAAG,CAAC,IAAA,EAAM,OAAO,IAAA,EAAM,KAAA,EAAO,EAAE,CAAC,CAAA;AAEjC,EAAA,MAAM,mBAAmB,MAAM;AAC7B,IAAA,MAAM,CAAA,GAAI,UAAU,cAAc,CAAA;AAClC,IAAA,IAAI,CAAA,EAAG;AACL,MAAA,QAAA,CAAS,CAAC,IAAA,MAAU,EAAE,IAAA,EAAM,GAAG,EAAA,EAAI,IAAA,EAAM,EAAA,IAAM,IAAA,CAAK,EAAA,IAAM,CAAA,GAAI,IAAA,CAAK,EAAA,GAAK,QAAU,CAAE,CAAA;AAAA,IACtF,CAAA,MAAO;AACL,MAAA,iBAAA,CAAkB,OAAO,IAAA,GAAOA,MAAAA,CAAO,MAAM,IAAA,EAAM,YAAY,IAAI,EAAE,CAAA;AAAA,IACvE;AAAA,EACF,CAAA;AAEA,EAAA,MAAM,iBAAiB,MAAM;AAC3B,IAAA,MAAM,CAAA,GAAI,UAAU,YAAY,CAAA;AAChC,IAAA,IAAI,CAAA,EAAG;AACL,MAAA,QAAA,CAAS,CAAC,IAAA,MAAU,EAAE,IAAA,EAAM,MAAM,IAAA,IAAQ,IAAA,CAAK,IAAA,IAAQ,CAAA,GAAI,IAAA,CAAK,IAAA,GAAO,CAAA,EAAG,EAAA,EAAI,GAAE,CAAE,CAAA;AAAA,IACpF,CAAA,MAAO;AACL,MAAA,eAAA,CAAgB,OAAO,EAAA,GAAKA,MAAAA,CAAO,MAAM,EAAA,EAAI,YAAY,IAAI,EAAE,CAAA;AAAA,IACjE;AAAA,EACF,CAAA;AAEA,EAAA,MAAM,iCACJR,GAAAA;AAAA,IAAC,6BAAA;AAAA,IAAA;AAAA,MACC,cAAA;AAAA,MACA,KAAA;AAAA,MACA,cAAA;AAAA,MACA,aAAA,EAAe,iBAAA;AAAA,MACf,QAAA,EAAU,YAAA;AAAA,MACV,gBAAA;AAAA,MACA,MAAA;AAAA,MACA,YAAA;AAAA,MACA,UAAA;AAAA,MACA,YAAY,CAAA,CAAE,UAAA;AAAA,MACd,UAAU,CAAA,CAAE,QAAA;AAAA,MACZ,cAAA;AAAA,MACA,YAAA;AAAA,MACA,oBAAA;AAAA,MACA,kBAAA,EAAoB,iBAAA;AAAA,MACpB,gBAAA,EAAkB,eAAA;AAAA,MAClB,aAAA,EAAe,gBAAA;AAAA,MACf,WAAA,EAAa;AAAA;AAAA,GACf;AAGF,EAAA,MAAM,yBACJA,GAAAA;AAAA,IAAC,2BAAA;AAAA,IAAA;AAAA,MACC,SAAS,YAAA,IAAgB,cAAA;AAAA,MACzB,cAAA;AAAA,MACA,aAAa,CAAA,CAAE,YAAA;AAAA,MACf,YAAY,CAAA,CAAE,WAAA;AAAA,MACd,QAAA,EAAU,YAAA;AAAA,MACV,OAAA,EAAS;AAAA;AAAA,GACX;AAGF,EAAA,MAAM,0BACJA,GAAAA;AAAA,IAAC,sBAAA;AAAA,IAAA;AAAA,MACC,SAAA;AAAA,MACA,SAAA;AAAA,MACA,oBAAA;AAAA,MACA,OAAA,EAAS,CAAC,KAAA,EAAO,IAAA;AAAA,MACjB,WAAW,CAAA,CAAE,SAAA;AAAA,MACb,MAAA,EAAQ,MAAM,OAAA,CAAQ,IAAI,CAAA;AAAA,MAC1B,aAAA,EAAe,YAAA;AAAA,MACf,cAAc,MAAM;AAClB,QAAA,eAAA,CAAgB,OAAA,GAAU,IAAA;AAAA,MAC5B,CAAA;AAAA,MACA,WAAA,EAAa;AAAA;AAAA,GACf;AAGF,EAAA,IAAI,cAAA,EAAgB;AAClB,IAAA,uBACEI,KAAA,QAAA,EAAA,EACG,QAAA,EAAA;AAAA,MAAA,OAAA;AAAA,sBACDJ,GAAAA,CAAC,MAAA,EAAA,EAAO,IAAA,EAAY,YAAA,EAAc,kBAChC,QAAA,kBAAAI,IAAAA;AAAA,QAAC,aAAA;AAAA,QAAA;AAAA,UACC,eAAA,EAAe,IAAA;AAAA,UACf,SAAA,EAAW,EAAA;AAAA,YACT,mGAAA;AAAA,YACA;AAAA,WACF;AAAA,UACA,gBAAA,EAAiB,OAAA;AAAA,UAEjB,QAAA,EAAA;AAAA,4BAAAJ,GAAAA,CAAC,YAAA,EAAA,EAAa,SAAA,EAAU,oEAAA,EACtB,QAAA,kBAAAA,GAAAA,CAAC,WAAA,EAAA,EAAY,SAAA,EAAU,2BAAA,EAA6B,QAAA,EAAA,CAAA,CAAE,SAAA,EAAU,CAAA,EAClE,CAAA;AAAA,4BACAI,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,8CAAA,EACb,QAAA,EAAA;AAAA,8BAAAJ,GAAAA;AAAA,gBAAC,yBAAA;AAAA,gBAAA;AAAA,kBACC,OAAA,EAAS,UAAA;AAAA,kBACT,KAAA;AAAA,kBACA,MAAA,EAAO,YAAA;AAAA,kBACP,QAAA,EAAU;AAAA;AAAA,eACZ;AAAA,8BACAA,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,wDAAA,EACb,QAAA,kBAAAA,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,oDAAA,EACZ,QAAA,EAAA,cAAA,EACH,CAAA,EACF,CAAA;AAAA,cACC;AAAA,aAAA,EACH;AAAA;AAAA;AAAA,OACF,EACF;AAAA,KAAA,EACF,CAAA;AAAA,EAEJ;AAEA,EAAA;AAAA;AAAA;AAAA,oBAGEI,IAAAA,CAAC,OAAA,EAAA,EAAQ,OAAO,KAAA,EAAO,IAAA,EAAY,cAAc,gBAAA,EAC/C,QAAA,EAAA;AAAA,sBAAAJ,GAAAA,CAAC,cAAA,EAAA,EAAe,OAAA,EAAO,IAAA,EAAE,QAAA,EAAA,OAAA,EAAQ,CAAA;AAAA,sBACjCA,GAAAA;AAAA,QAAC,cAAA;AAAA,QAAA;AAAA,UACC,SAAA,EAAW,EAAA;AAAA,YACT,cAAA;AAAA,YACA;AAAA,WACF;AAAA,UACA,KAAA,EAAM,OAAA;AAAA,UACN,IAAA,EAAK,QAAA;AAAA,UACL,UAAA,EAAY,CAAA;AAAA,UAGZ,eAAA,EAAe,IAAA;AAAA,UACf,gBAAA,EAAkB,EAAA;AAAA,UAClB,MAAA,EAAO,QAAA;AAAA,UACP,eAAA,EAAiB,CAAC,CAAA,KAAM,CAAA,CAAE,cAAA,EAAe;AAAA,UAEzC,QAAA,kBAAAI,KAAC,KAAA,EAAA,EAAI,SAAA,EAAW,GAAG,MAAA,EAAQ,YAAA,GAAe,UAAA,GAAa,UAAU,CAAA,EAC/D,QAAA,EAAA;AAAA,4BAAAJ,GAAAA;AAAA,cAAC,yBAAA;AAAA,cAAA;AAAA,gBACC,OAAA,EAAS,UAAA;AAAA,gBACT,KAAA;AAAA,gBACA,MAAA,EAAQ,eAAe,SAAA,GAAY,YAAA;AAAA,gBACnC,cAAA,EAAgB,YAAA,GAAe,CAAA,CAAE,cAAA,GAAiB,MAAA;AAAA,gBAClD,QAAA,EAAU;AAAA;AAAA,aACZ;AAAA,4BACAI,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,4CAAA,EACb,QAAA,EAAA;AAAA,8BAAAJ,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,wCAAA,EAA0C,QAAA,EAAA,cAAA,EAAe,CAAA;AAAA,cACvE;AAAA,aAAA,EACH;AAAA,WAAA,EACF;AAAA;AAAA;AACF,KAAA,EACF;AAAA;AAEJ;AC1UO,IAAM,2CAAA,GACX;AAEF,SAAS,YAAA,CAAa,EAAE,GAAG,KAAA,EAAM,EAA4D;AAC3F,EAAA,uBAAOA,GAAAA,CAAuB,qBAAA,CAAA,IAAA,EAAtB,EAA2B,WAAA,EAAU,eAAA,EAAiB,GAAG,KAAA,EAAO,CAAA;AAC1E;AAEA,SAAS,mBAAA,CAAoB;AAAA,EAC3B,GAAG;AACL,CAAA,EAA+D;AAC7D,EAAA,uBAAOA,GAAAA,CAAuB,qBAAA,CAAA,OAAA,EAAtB,EAA8B,WAAA,EAAU,uBAAA,EAAyB,GAAG,KAAA,EAAO,CAAA;AACrF;AAaA,SAAS,mBAAA,CAAoB;AAAA,EAC3B,SAAA;AAAA,EACA,QAAA,GAAW,IAAA;AAAA,EACX,UAAA,GAAa,CAAA;AAAA,EACb,SAAA,GAAY,IAAA;AAAA,EACZ,GAAG;AACL,CAAA,EAA6B;AAC3B,EAAA,MAAM,0BACJA,GAAAA;AAAA,IAAuB,qBAAA,CAAA,OAAA;AAAA,IAAtB;AAAA,MACC,WAAA,EAAU,uBAAA;AAAA,MACV,UAAA;AAAA,MACA,SAAA,EAAW,EAAA;AAAA,QACT,cAAA;AAAA,QACA,QAAA,IACE,kVAAA;AAAA,QACF,wKAAA;AAAA,QACA;AAAA,OACF;AAAA,MACC,GAAG;AAAA;AAAA,GACN;AAGF,EAAA,IAAI,CAAC,SAAA,EAAW;AACd,IAAA,OAAO,OAAA;AAAA,EACT;AAEA,EAAA,uBAAOA,GAAAA,CAAuB,qBAAA,CAAA,MAAA,EAAtB,EAA8B,QAAA,EAAA,OAAA,EAAQ,CAAA;AAChD;AAEA,SAAS,gBAAA,CAAiB;AAAA,EACxB,SAAA;AAAA,EACA,GAAG;AACL,CAAA,EAA4D;AAC1D,EAAA,uBACEA,GAAAA;AAAA,IAAuB,qBAAA,CAAA,IAAA;AAAA,IAAtB;AAAA,MACC,WAAA,EAAU,oBAAA;AAAA,MACV,SAAA,EAAW,EAAA;AAAA,QACT,ySAAA;AAAA,QACA;AAAA,OACF;AAAA,MACC,GAAG;AAAA;AAAA,GACN;AAEJ;ACxDO,SAAS,sBAAA,CAAuB;AAAA,EACrC,QAAA;AAAA,EACA,SAAA;AAAA,EACA,SAAA;AAAA,EACA,mBAAA;AAAA,EACA,IAAA,GAAO;AACT,CAAA,EAAgC;AAC9B,EAAA,MAAM,SAAA,GAAkBc,eAAuB,IAAI,CAAA;AACnD,EAAA,MAAM,CAAC,OAAA,EAAS,UAAU,CAAA,GAAUA,iBAAS,KAAK,CAAA;AAClD,EAAA,MAAM,CAAC,UAAA,EAAY,aAAa,CAAA,GAAUA,iBAAS,KAAK,CAAA;AAExD,EAAA,MAAM,MAAA,GAAeA,oBAAY,MAAM;AACrC,IAAA,MAAM,KAAK,SAAA,CAAU,OAAA;AACrB,IAAA,IAAI,CAAC,EAAA,EAAI;AACP,MAAA,UAAA,CAAW,KAAK,CAAA;AAChB,MAAA,aAAA,CAAc,KAAK,CAAA;AACnB,MAAA;AAAA,IACF;AACA,IAAA,MAAM,EAAE,SAAA,EAAW,YAAA,EAAc,YAAA,EAAa,GAAI,EAAA;AAClD,IAAA,MAAM,QAAA,GAAW,eAAe,YAAA,GAAe,CAAA;AAC/C,IAAA,IAAI,CAAC,QAAA,EAAU;AACb,MAAA,UAAA,CAAW,KAAK,CAAA;AAChB,MAAA,aAAA,CAAc,KAAK,CAAA;AACnB,MAAA;AAAA,IACF;AACA,IAAA,UAAA,CAAW,YAAY,CAAC,CAAA;AACxB,IAAA,aAAA,CAAc,SAAA,GAAY,YAAA,GAAe,YAAA,GAAe,CAAC,CAAA;AAAA,EAC3D,CAAA,EAAG,EAAE,CAAA;AAEL,EAAMA,wBAAgB,MAAM;AAC1B,IAAA,MAAA,EAAO;AACP,IAAA,MAAM,EAAA,GAAK,sBAAsB,MAAM;AACrC,MAAA,qBAAA,CAAsB,MAAM,CAAA;AAAA,IAC9B,CAAC,CAAA;AACD,IAAA,OAAO,MAAM,qBAAqB,EAAE,CAAA;AAAA,EACtC,CAAA,EAAG,CAAC,MAAA,EAAQ,SAAS,CAAC,CAAA;AAEtB,EAAMA,kBAAU,MAAM;AACpB,IAAA,MAAM,KAAK,SAAA,CAAU,OAAA;AACrB,IAAA,IAAI,CAAC,EAAA,EAAI;AACT,IAAA,IAAI,OAAO,mBAAmB,WAAA,EAAa;AACzC,MAAA;AAAA,IACF;AACA,IAAA,MAAM,EAAA,GAAK,IAAI,cAAA,CAAe,MAAM;AAClC,MAAA,MAAA,CAAO,sBAAsB,MAAM,CAAA;AAAA,IACrC,CAAC,CAAA;AACD,IAAA,EAAA,CAAG,QAAQ,EAAE,CAAA;AACb,IAAA,OAAO,MAAM,GAAG,UAAA,EAAW;AAAA,EAC7B,CAAA,EAAG,CAAC,MAAM,CAAC,CAAA;AAEX,EAAA,uBACEV,KAAC,KAAA,EAAA,EAAI,SAAA,EAAW,GAAG,gCAAA,EAAkC,IAAA,IAAQ,QAAA,EAAU,SAAS,CAAA,EAC9E,QAAA,EAAA;AAAA,oBAAAJ,GAAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,GAAA,EAAK,SAAA;AAAA,QACL,SAAA,EAAW,EAAA;AAAA,UACT,IAAA,GACI,EAAA,CAAG,yDAAA,EAA2D,mBAAmB,CAAA,GACjF;AAAA,SACN;AAAA,QACA,QAAA,EAAU,MAAA;AAAA,QACV,OAAA,EAAS,CAAC,KAAA,KAAU;AAElB,UAAA,KAAA,CAAM,eAAA,EAAgB;AAAA,QACxB,CAAA;AAAA,QAEC;AAAA;AAAA,KACH;AAAA,IACC,0BACCI,IAAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,SAAA,EAAU,uGAAA;AAAA,QACV,aAAA,EAAW,IAAA;AAAA,QAEX,QAAA,EAAA;AAAA,0BAAAJ,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,oGAAA,EAAqG,CAAA;AAAA,0BACpHA,GAAAA;AAAA,YAAC,SAAA;AAAA,YAAA;AAAA,cACC,SAAA,EAAU,qFAAA;AAAA,cACV,WAAA,EAAa;AAAA;AAAA;AACf;AAAA;AAAA,KACF,GACE,IAAA;AAAA,IACH,6BACCI,IAAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,SAAA,EAAU,wGAAA;AAAA,QACV,aAAA,EAAW,IAAA;AAAA,QAEX,QAAA,EAAA;AAAA,0BAAAJ,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,oGAAA,EAAqG,CAAA;AAAA,0BACpHA,GAAAA;AAAA,YAAC,WAAA;AAAA,YAAA;AAAA,cACC,SAAA,EAAU,qFAAA;AAAA,cACV,WAAA,EAAa;AAAA;AAAA;AACf;AAAA;AAAA,KACF,GACE;AAAA,GAAA,EACN,CAAA;AAEJ;ACpGO,SAAS,yBAAA,CAA0B;AAAA,EACxC,KAAA;AAAA,EACA,QAAA;AAAA,EACA,WAAA,GAAc,cAAA;AAAA,EACd,SAAA;AAAA,EACA,SAAA,GAAY;AACd,CAAA,EAAmC;AACjC,EAAA,uBACEA,IAAC,KAAA,EAAA,EAAI,SAAA,EAAW,GAAG,yBAAA,EAA2B,SAAS,GACrD,QAAA,kBAAAA,GAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,KAAA;AAAA,MACA,UAAU,CAAC,KAAA,KAAU,QAAA,CAAS,KAAA,CAAM,OAAO,KAAK,CAAA;AAAA,MAChD,WAAA;AAAA,MACA,YAAA,EAAY,WAAA;AAAA,MACZ,SAAA;AAAA,MACA,SAAA,EAAW,CAAC,KAAA,KAAU,KAAA,CAAM,eAAA;AAAgB;AAAA,GAC9C,EACF,CAAA;AAEJ;ACZO,SAAS,kBAAA,CAAmB,MAAY,kBAAA,EAAmC;AAChF,EAAA,OAAO,YAAY,IAAA,EAAM,EAAE,cAAc,kBAAA,GAAqB,CAAA,GAAI,GAAG,CAAA;AACvE;AAEO,SAAS,gBAAA,CAAiB,MAAY,kBAAA,EAAmC;AAC9E,EAAA,OAAO,UAAU,IAAA,EAAM,EAAE,cAAc,kBAAA,GAAqB,CAAA,GAAI,GAAG,CAAA;AACrE;AAGO,SAAS,aAAA,CAAc,QAAc,kBAAA,EAAqC;AAC/E,EAAA,MAAM,KAAA,GAAQ,kBAAA,CAAmB,YAAA,CAAa,MAAM,GAAG,kBAAkB,CAAA;AACzE,EAAA,OAAO,KAAA,CAAM,IAAA,CAAK,EAAE,MAAA,EAAQ,EAAA,EAAG,EAAG,CAAC,CAAA,EAAG,CAAA,KAAM,OAAA,CAAQ,KAAA,EAAO,CAAC,CAAC,CAAA;AAC/D;AAEO,SAAS,QAAA,CAAS,QAAc,kBAAA,EAAqC;AAC1E,EAAA,MAAM,KAAA,GAAQ,kBAAA,CAAmB,MAAA,EAAQ,kBAAkB,CAAA;AAC3D,EAAA,OAAO,KAAA,CAAM,IAAA,CAAK,EAAE,MAAA,EAAQ,CAAA,EAAE,EAAG,CAAC,CAAA,EAAG,CAAA,KAAM,OAAA,CAAQ,KAAA,EAAO,CAAC,CAAC,CAAA;AAC9D;AAEO,SAAS,cAAc,KAAA,EAAuD;AACnF,EAAA,MAAM,KAAA,GAAQ,UAAA,CAAW,KAAA,CAAM,KAAK,CAAA;AACpC,EAAA,MAAM,GAAA,GAAM,MAAM,GAAA,GAAM,QAAA,CAAS,MAAM,GAAG,CAAA,GAAI,QAAA,CAAS,KAAA,CAAM,KAAK,CAAA;AAClE,EAAA,OAAO,EAAE,OAAO,GAAA,EAAI;AACtB;AAEO,SAAS,WAAA,CAAY,QAA8B,GAAA,EAAiC;AACzF,EAAA,MAAM,QAAA,GAAW,WAAW,GAAG,CAAA;AAC/B,EAAA,MAAM,MAAA,GAAS,SAAS,GAAG,CAAA;AAC3B,EAAA,OAAO,MAAA,CAAO,MAAA,CAAO,CAAC,KAAA,KAAU;AAC9B,IAAA,MAAM,EAAE,KAAA,EAAO,GAAA,EAAI,GAAI,cAAc,KAAK,CAAA;AAC1C,IAAA,OACE,iBAAiB,QAAA,EAAU,EAAE,KAAA,EAAO,GAAA,EAAK,CAAA,IACzC,gBAAA,CAAiB,MAAA,EAAQ,EAAE,OAAO,GAAA,EAAK,CAAA,IACtC,KAAA,IAAS,YAAY,GAAA,IAAO,MAAA;AAAA,EAEjC,CAAC,CAAA;AACH;AAEO,SAAS,aAAA,CAAc,kBAAA,EAA6B,SAAA,mBAAkB,IAAI,MAAK,EAAa;AACjG,EAAA,MAAM,KAAA,GAAQ,kBAAA,CAAmB,SAAA,EAAW,kBAAkB,CAAA;AAC9D,EAAA,OAAO,KAAA,CAAM,IAAA,CAAK,EAAE,MAAA,EAAQ,GAAE,EAAG,CAAC,CAAA,EAAG,CAAA,KAAMQ,OAAO,OAAA,CAAQ,KAAA,EAAO,CAAC,CAAA,EAAG,KAAK,CAAC,CAAA;AAC7E;AAEO,SAAS,WAAA,CAAY,MAAA,EAAc,IAAA,EAAgC,SAAA,EAAyB;AACjG,EAAA,IAAI,IAAA,KAAS,OAAA,EAAS,OAAO,SAAA,CAAU,QAAQ,SAAS,CAAA;AACxD,EAAA,IAAI,IAAA,KAAS,MAAA,EAAQ,OAAO,QAAA,CAAS,QAAQ,SAAS,CAAA;AACtD,EAAA,OAAO,OAAA,CAAQ,QAAQ,SAAS,CAAA;AAClC;AAEO,SAAS,YAAA,CACd,MAAA,EACA,IAAA,EACA,kBAAA,EACQ;AACR,EAAA,IAAI,IAAA,KAAS,OAAA,EAAS,OAAOA,MAAAA,CAAO,QAAQ,WAAW,CAAA;AACvD,EAAA,IAAI,IAAA,KAAS,KAAA,EAAO,OAAOA,MAAAA,CAAO,QAAQ,mBAAmB,CAAA;AAC7D,EAAA,MAAM,KAAA,GAAQ,kBAAA,CAAmB,MAAA,EAAQ,kBAAkB,CAAA;AAC3D,EAAA,MAAM,GAAA,GAAM,gBAAA,CAAiB,MAAA,EAAQ,kBAAkB,CAAA;AACvD,EAAA,IAAI,WAAA,CAAY,KAAA,EAAO,GAAG,CAAA,EAAG;AAC3B,IAAA,OAAO,CAAA,EAAGA,OAAO,KAAA,EAAO,OAAO,CAAC,CAAA,QAAA,EAAMA,MAAAA,CAAO,GAAA,EAAK,SAAS,CAAC,CAAA,CAAA;AAAA,EAC9D;AACA,EAAA,OAAO,CAAA,EAAGA,OAAO,KAAA,EAAO,OAAO,CAAC,CAAA,QAAA,EAAMA,MAAAA,CAAO,GAAA,EAAK,aAAa,CAAC,CAAA,CAAA;AAClE;AC5DA,IAAM,eAAA,GAAkB,CAAA;AAExB,SAAS,iBAAA,CACP,KAAA,EACA,YAAA,EACA,QAAA,EACA;AACA,EAAA,MAAM,CAAC,UAAU,WAAW,CAAA,GAAUO,iBAAS,YAAA,oBAAgB,IAAI,MAAM,CAAA;AACzE,EAAA,MAAM,eAAe,KAAA,KAAU,MAAA;AAC/B,EAAA,MAAM,OAAA,GAAU,eAAe,KAAA,GAAQ,QAAA;AACvC,EAAA,MAAM,GAAA,GAAYA,OAAA,CAAA,WAAA;AAAA,IAChB,CAAC,IAAA,KAAe;AACd,MAAA,IAAI,CAAC,YAAA,EAAc,WAAA,CAAY,IAAI,CAAA;AACnC,MAAA,QAAA,GAAW,IAAI,CAAA;AAAA,IACjB,CAAA;AAAA,IACA,CAAC,cAAc,QAAQ;AAAA,GACzB;AACA,EAAA,OAAO,CAAC,SAAS,GAAG,CAAA;AACtB;AAEA,SAAS,iBAAA,CACP,KAAA,EACA,YAAA,EACA,QAAA,EACA;AACA,EAAA,MAAM,CAAC,QAAA,EAAU,WAAW,CAAA,GAAUA,iBAAS,YAAY,CAAA;AAC3D,EAAA,MAAM,eAAe,KAAA,KAAU,MAAA;AAC/B,EAAA,MAAM,OAAA,GAAU,eAAe,KAAA,GAAQ,QAAA;AACvC,EAAA,MAAM,GAAA,GAAYA,OAAA,CAAA,WAAA;AAAA,IAChB,CAAC,IAAA,KAA4B;AAC3B,MAAA,IAAI,CAAC,YAAA,EAAc,WAAA,CAAY,IAAI,CAAA;AACnC,MAAA,QAAA,GAAW,IAAI,CAAA;AAAA,IACjB,CAAA;AAAA,IACA,CAAC,cAAc,QAAQ;AAAA,GACzB;AACA,EAAA,OAAO,CAAC,SAAS,GAAG,CAAA;AACtB;AAEA,SAAS,SAAA,CAAU;AAAA,EACjB,KAAA;AAAA,EACA,KAAA;AAAA,EACA;AACF,CAAA,EAIG;AACD,EAAA,uBACEf,GAAAA;AAAA,IAAC,QAAA;AAAA,IAAA;AAAA,MACC,IAAA,EAAK,QAAA;AAAA,MACL,WAAA,EAAU,qBAAA;AAAA,MACV,SAAA,EAAW,EAAA;AAAA,QACT,iFAAA;AAAA,QACA,gDAAA;AAAA,QACA,KAAA,IAAS,0BAAA;AAAA,QACT,KAAA,CAAM;AAAA,OACR;AAAA,MACA,KAAA,EAAO,KAAA,CAAM,KAAA,GAAQ,EAAE,eAAA,EAAiB,CAAA,EAAG,KAAA,CAAM,KAAK,CAAA,EAAA,CAAA,EAAM,KAAA,EAAO,KAAA,CAAM,KAAA,EAAM,GAAI,MAAA;AAAA,MACnF,OAAA,EAAS,CAAC,CAAA,KAAM;AACd,QAAA,CAAA,CAAE,eAAA,EAAgB;AAClB,QAAA,OAAA,GAAU,KAAK,CAAA;AAAA,MACjB,CAAA;AAAA,MAEC,QAAA,EAAA,KAAA,CAAM;AAAA;AAAA,GACT;AAEJ;AAQA,SAAS,aAAA,CAAc;AAAA,EACrB,MAAA;AAAA,EACA,KAAA;AAAA,EACA,YAAA;AAAA,EACA,IAAA,EAAM,QAAA;AAAA,EACN,WAAA,GAAc,OAAA;AAAA,EACd,aAAA;AAAA,EACA,YAAA;AAAA,EACA,YAAA;AAAA,EACA,WAAA;AAAA,EACA,SAAA;AAAA,EACA,kBAAA,GAAqB,IAAA;AAAA,EACrB;AACF,CAAA,EAAuB;AACrB,EAAA,MAAM,CAAC,UAAA,EAAY,SAAS,IAAI,iBAAA,CAAkB,KAAA,EAAO,cAAc,aAAa,CAAA;AACpF,EAAA,MAAM,CAAC,QAAA,EAAU,WAAW,IAAI,iBAAA,CAAkB,QAAA,EAAU,aAAa,YAAY,CAAA;AACrF,EAAA,MAAM,QAAA,GAAiBe,OAAA,CAAA,OAAA;AAAA,IACrB,MAAM,aAAA,CAAc,kBAAA,EAAoB,UAAU,CAAA;AAAA,IAClD,CAAC,oBAAoB,UAAU;AAAA,GACjC;AAEA,EAAA,MAAM,EAAA,GAAK,CAAC,SAAA,KAAsB,SAAA,CAAU,YAAY,UAAA,EAAY,QAAA,EAAU,SAAS,CAAC,CAAA;AAExF,EAAA,uBACEX,IAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,WAAA,EAAU,gBAAA;AAAA,MACV,SAAA,EAAW,EAAA,CAAG,WAAA,EAAa,gCAAA,EAAkC,SAAS,CAAA;AAAA,MAEtE,QAAA,EAAA;AAAA,wBAAAA,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,mDAAA,EACb,QAAA,EAAA;AAAA,0BAAAA,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,yBAAA,EACb,QAAA,EAAA;AAAA,4BAAAJ,GAAAA;AAAA,cAAC,MAAA;AAAA,cAAA;AAAA,gBACC,IAAA,EAAK,QAAA;AAAA,gBACL,OAAA,EAAQ,SAAA;AAAA,gBACR,IAAA,EAAK,SAAA;AAAA,gBACL,YAAA,EAAW,UAAA;AAAA,gBACX,OAAA,EAAS,MAAM,EAAA,CAAG,EAAE,CAAA;AAAA,gBAEpB,QAAA,kBAAAA,GAAAA,CAACgB,WAAAA,EAAA,EAAY;AAAA;AAAA,aACf;AAAA,4BACAhB,GAAAA;AAAA,cAAC,MAAA;AAAA,cAAA;AAAA,gBACC,IAAA,EAAK,QAAA;AAAA,gBACL,OAAA,EAAQ,SAAA;AAAA,gBACR,IAAA,EAAK,SAAA;AAAA,gBACL,YAAA,EAAW,MAAA;AAAA,gBACX,OAAA,EAAS,MAAM,EAAA,CAAG,CAAC,CAAA;AAAA,gBAEnB,QAAA,kBAAAA,GAAAA,CAACiB,YAAAA,EAAA,EAAa;AAAA;AAAA,aAChB;AAAA,4BACAjB,GAAAA,CAAC,MAAA,EAAA,EAAO,MAAK,QAAA,EAAS,OAAA,EAAQ,SAAQ,IAAA,EAAK,IAAA,EAAK,OAAA,EAAS,MAAM,0BAAU,IAAI,IAAA,EAAM,CAAA,EAChF,QAAA,EAAA,MAAA,EAAQ,SAAS,OAAA,EACpB,CAAA;AAAA,4BACAA,IAAC,IAAA,EAAA,EAAG,SAAA,EAAU,2CACX,QAAA,EAAA,YAAA,CAAa,UAAA,EAAY,QAAA,EAAU,kBAAkB,CAAA,EACxD;AAAA,WAAA,EACF,CAAA;AAAA,0BACAA,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,kEAAA,EACX,QAAA,EAAA,CAAC,OAAA,EAAS,MAAA,EAAQ,KAAK,CAAA,CAAY,GAAA,CAAI,CAAC,sBACxCA,GAAAA;AAAA,YAAC,MAAA;AAAA,YAAA;AAAA,cAEC,IAAA,EAAK,QAAA;AAAA,cACL,IAAA,EAAK,IAAA;AAAA,cACL,OAAA,EAAS,QAAA,KAAa,CAAA,GAAI,WAAA,GAAc,OAAA;AAAA,cACxC,OAAA,EAAS,MAAM,WAAA,CAAY,CAAC,CAAA;AAAA,cAE3B,QAAA,EAAA,MAAA,GAAS,CAAC,CAAA,IAAK,CAAA,CAAE,MAAA,CAAO,CAAC,CAAA,CAAE,WAAA,EAAY,GAAI,CAAA,CAAE,KAAA,CAAM,CAAC;AAAA,aAAA;AAAA,YANhD;AAAA,WAQR,CAAA,EACH;AAAA,SAAA,EACF,CAAA;AAAA,QAEC,QAAA,KAAa,2BACZA,GAAAA;AAAA,UAAC,SAAA;AAAA,UAAA;AAAA,YACC,MAAA,EAAQ,UAAA;AAAA,YACR,MAAA;AAAA,YACA,kBAAA;AAAA,YACA,QAAA;AAAA,YACA,YAAA;AAAA,YACA;AAAA;AAAA,SACF;AAAA,QAED,QAAA,KAAa,0BACZA,GAAAA;AAAA,UAAC,QAAA;AAAA,UAAA;AAAA,YACC,MAAA,EAAQ,UAAA;AAAA,YACR,MAAA;AAAA,YACA,kBAAA;AAAA,YACA,QAAA;AAAA,YACA,YAAA;AAAA,YACA;AAAA;AAAA,SACF;AAAA,QAED,QAAA,KAAa,yBACZA,GAAAA;AAAA,UAAC,OAAA;AAAA,UAAA;AAAA,YACC,MAAA,EAAQ,UAAA;AAAA,YACR,MAAA;AAAA,YACA,YAAA;AAAA,YACA;AAAA;AAAA;AACF;AAAA;AAAA,GAEJ;AAEJ;AAEA,SAAS,SAAA,CAAU;AAAA,EACjB,MAAA;AAAA,EACA,MAAA;AAAA,EACA,kBAAA;AAAA,EACA,QAAA;AAAA,EACA,YAAA;AAAA,EACA;AACF,CAAA,EAOG;AACD,EAAA,MAAM,IAAA,GAAO,aAAA,CAAc,MAAA,EAAQ,kBAAkB,CAAA;AACrD,EAAA,MAAM,KAAA,uBAAY,IAAA,EAAK;AAEvB,EAAA,uBACEI,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,qBAAA,EACb,QAAA,EAAA;AAAA,oBAAAJ,GAAAA,CAAC,SAAI,SAAA,EAAU,yBAAA,EACZ,mBAAS,GAAA,CAAI,CAAC,0BACbA,GAAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QAEC,SAAA,EAAU,uEAAA;AAAA,QAET,QAAA,EAAA;AAAA,OAAA;AAAA,MAHI;AAAA,KAKR,CAAA,EACH,CAAA;AAAA,oBACAA,IAAC,KAAA,EAAA,EAAI,SAAA,EAAU,2FACZ,QAAA,EAAA,IAAA,CAAK,GAAA,CAAI,CAAC,GAAA,KAAQ;AACjB,MAAA,MAAM,SAAA,GAAY,WAAA,CAAY,MAAA,EAAQ,GAAG,CAAA;AACzC,MAAA,MAAM,OAAA,GAAU,WAAA,CAAY,GAAA,EAAK,MAAM,CAAA;AACvC,MAAA,MAAM,OAAA,GAAU,SAAA,CAAU,GAAA,EAAK,KAAK,CAAA;AACpC,MAAA,MAAM,QAAA,GAAW,UAAU,MAAA,GAAS,eAAA;AACpC,MAAA,uBACEI,IAAAA;AAAA,QAAC,QAAA;AAAA,QAAA;AAAA,UAEC,IAAA,EAAK,QAAA;AAAA,UACL,WAAA,EAAU,oBAAA;AAAA,UACV,SAAA,EAAW,EAAA;AAAA,YACT,sEAAA;AAAA,YACA,4FAAA;AAAA,YACA,CAAC,OAAA,IAAW;AAAA,WACd;AAAA,UACA,OAAA,EAAS,MAAM,WAAA,GAAc,GAAG,CAAA;AAAA,UAEhC,QAAA,EAAA;AAAA,4BAAAJ,GAAAA;AAAA,cAAC,MAAA;AAAA,cAAA;AAAA,gBACC,SAAA,EAAW,EAAA;AAAA,kBACT,mEAAA;AAAA,kBACA,OAAA,IAAW;AAAA,iBACb;AAAA,gBAEC,QAAA,EAAAQ,MAAAA,CAAO,GAAA,EAAK,GAAG;AAAA;AAAA,aAClB;AAAA,4BACAJ,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,uBAAA,EACZ,QAAA,EAAA;AAAA,cAAA,SAAA,CAAU,MAAM,CAAA,EAAG,eAAe,CAAA,CAAE,GAAA,CAAI,CAAC,KAAA,qBACxCJ,GAAAA,CAAC,SAAA,EAAA,EAAyB,OAAc,KAAA,EAAK,IAAA,EAAC,SAAS,YAAA,EAAA,EAAvC,KAAA,CAAM,EAA+C,CACtE,CAAA;AAAA,cACA,WAAW,CAAA,oBACVI,IAAAA,CAAC,MAAA,EAAA,EAAK,WAAU,2CAAA,EAA4C,QAAA,EAAA;AAAA,gBAAA,GAAA;AAAA,gBAAE;AAAA,eAAA,EAAS;AAAA,aAAA,EAE3E;AAAA;AAAA,SAAA;AAAA,QAzBK,IAAI,WAAA;AAAY,OA0BvB;AAAA,IAEJ,CAAC,CAAA,EACH;AAAA,GAAA,EACF,CAAA;AAEJ;AAEA,SAAS,QAAA,CAAS;AAAA,EAChB,MAAA;AAAA,EACA,MAAA;AAAA,EACA,kBAAA;AAAA,EACA,QAAA;AAAA,EACA,YAAA;AAAA,EACA;AACF,CAAA,EAOG;AACD,EAAA,MAAM,IAAA,GAAO,QAAA,CAAS,MAAA,EAAQ,kBAAkB,CAAA;AAChD,EAAA,MAAM,KAAA,uBAAY,IAAA,EAAK;AAEvB,EAAA,uBACEJ,IAAC,KAAA,EAAA,EAAI,SAAA,EAAU,yCACZ,QAAA,EAAA,IAAA,CAAK,GAAA,CAAI,CAAC,GAAA,EAAK,CAAA,KAAM;AACpB,IAAA,MAAM,SAAA,GAAY,WAAA,CAAY,MAAA,EAAQ,GAAG,CAAA;AACzC,IAAA,uBACEI,IAAAA;AAAA,MAAC,QAAA;AAAA,MAAA;AAAA,QAEC,IAAA,EAAK,QAAA;AAAA,QACL,SAAA,EAAW,EAAA;AAAA,UACT,4FAAA;AAAA,UACA,4FAAA;AAAA,UACA,SAAA,CAAU,GAAA,EAAK,KAAK,CAAA,IAAK;AAAA,SAC3B;AAAA,QACA,OAAA,EAAS,MAAM,WAAA,GAAc,GAAG,CAAA;AAAA,QAEhC,QAAA,EAAA;AAAA,0BAAAA,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,2CAAA,EACb,QAAA,EAAA;AAAA,4BAAAJ,IAAC,MAAA,EAAA,EAAK,SAAA,EAAU,qCAAA,EAAuC,QAAA,EAAA,QAAA,CAAS,CAAC,CAAA,EAAE,CAAA;AAAA,4BACnEA,IAAC,MAAA,EAAA,EAAK,SAAA,EAAU,uBAAuB,QAAA,EAAAQ,MAAAA,CAAO,GAAA,EAAK,GAAG,CAAA,EAAE;AAAA,WAAA,EAC1D,CAAA;AAAA,0BACAR,GAAAA,CAAC,KAAA,EAAA,EAAI,WAAU,qBAAA,EACZ,QAAA,EAAA,SAAA,CAAU,IAAI,CAAC,KAAA,qBACdA,GAAAA,CAAC,aAAyB,KAAA,EAAc,OAAA,EAAS,gBAAjC,KAAA,CAAM,EAAyC,CAChE,CAAA,EACH;AAAA;AAAA,OAAA;AAAA,MAjBK,IAAI,WAAA;AAAY,KAkBvB;AAAA,EAEJ,CAAC,CAAA,EACH,CAAA;AAEJ;AAEA,SAAS,OAAA,CAAQ;AAAA,EACf,MAAA;AAAA,EACA,MAAA;AAAA,EACA,YAAA;AAAA,EACA;AACF,CAAA,EAKG;AACD,EAAA,MAAM,SAAA,GAAY,WAAA,CAAY,MAAA,EAAQ,MAAM,CAAA;AAC5C,EAAA,uBACEI,IAAAA;AAAA,IAAC,QAAA;AAAA,IAAA;AAAA,MACC,IAAA,EAAK,QAAA;AAAA,MACL,SAAA,EAAW,EAAA;AAAA,QACT,4FAAA;AAAA,QACA;AAAA,OACF;AAAA,MACA,OAAA,EAAS,MAAM,WAAA,GAAc,MAAM,CAAA;AAAA,MAEnC,QAAA,EAAA;AAAA,wBAAAJ,GAAAA,CAAC,OAAE,SAAA,EAAU,+BAAA,EAAiC,UAAAQ,MAAAA,CAAO,MAAA,EAAQ,cAAc,CAAA,EAAE,CAAA;AAAA,QAC5E,SAAA,CAAU,MAAA,KAAW,CAAA,mBACpBR,GAAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAU,+BAAA,EAAgC,QAAA,EAAA,WAAA,EAAS,CAAA,mBAEtDA,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,qBAAA,EACZ,QAAA,EAAA,SAAA,CAAU,GAAA,CAAI,CAAC,KAAA,qBACdA,GAAAA,CAAC,SAAA,EAAA,EAAyB,KAAA,EAAc,OAAA,EAAS,YAAA,EAAA,EAAjC,KAAA,CAAM,EAAyC,CAChE,CAAA,EACH;AAAA;AAAA;AAAA,GAEJ;AAEJ;ACxVA,IAAM,aAAA,GAAgBE,GAAAA;AAAA,EACpB;AACF,CAAA;AAEA,SAAS,KAAA,CAAM;AAAA,EACb,SAAA;AAAA,EACA,GAAG;AACL,CAAA,EAA0F;AACxF,EAAA,uBACEF,GAAAA,CAAgB,cAAA,CAAA,IAAA,EAAf,EAAoB,WAAA,EAAU,OAAA,EAAQ,SAAA,EAAW,EAAA,CAAG,aAAA,EAAc,EAAG,SAAS,CAAA,EAAI,GAAG,KAAA,EAAO,CAAA;AAEjG;ACDO,IAAM,IAAA,GAAO;AASpB,IAAM,gBAAA,GAAyBkB,sBAA4C,IAAI,CAAA;AAExE,IAAM,YAAY,CAGvB;AAAA,EACA,GAAG;AACL,CAAA,KAA4C;AAC1C,EAAA,uBACElB,GAAAA,CAAC,gBAAA,CAAiB,QAAA,EAAjB,EAA0B,OAAO,EAAE,IAAA,EAAM,KAAA,CAAM,IAAA,IAC9C,QAAA,kBAAAA,GAAAA,CAAC,UAAA,EAAA,EAAY,GAAG,OAAO,CAAA,EACzB,CAAA;AAEJ;AAEO,IAAM,eAAe,MAAM;AAChC,EAAA,MAAM,YAAA,GAAqBkB,mBAAW,gBAAgB,CAAA;AACtD,EAAA,MAAM,WAAA,GAAoBA,mBAAW,eAAe,CAAA;AAEpD,EAAA,IAAI,YAAA,KAAiB,IAAA,IAAQ,YAAA,KAAiB,MAAA,EAAW;AACvD,IAAA,MAAM,IAAI,MAAM,gDAAgD,CAAA;AAAA,EAClE;AAEA,EAAA,MAAM,EAAE,aAAA,EAAc,GAAI,cAAA,EAAe;AACzC,EAAA,MAAM,YAAY,YAAA,CAAa,EAAE,IAAA,EAAM,YAAA,CAAa,MAAM,CAAA;AAC1D,EAAA,MAAM,UAAA,GAAa,aAAA,CAAc,YAAA,CAAa,IAAA,EAAM,SAAS,CAAA;AAE7D,EAAA,MAAM,EAAE,IAAG,GAAI,WAAA;AAEf,EAAA,OAAO;AAAA,IACL,EAAA;AAAA,IACA,MAAM,YAAA,CAAa,IAAA;AAAA,IACnB,UAAA,EAAY,GAAG,EAAE,CAAA,UAAA,CAAA;AAAA,IACjB,iBAAA,EAAmB,GAAG,EAAE,CAAA,sBAAA,CAAA;AAAA,IACxB,aAAA,EAAe,GAAG,EAAE,CAAA,kBAAA,CAAA;AAAA,IACpB,GAAG;AAAA,GACL;AACF;AAMA,IAAM,eAAA,GAAwBA,OAAA,CAAA,aAAA,CAAoC,EAA0B,CAAA;AAErF,SAAS,QAAA,CAAS,EAAE,SAAA,EAAW,GAAG,OAAM,EAAgC;AAC7E,EAAA,MAAM,KAAWA,OAAA,CAAA,KAAA,EAAM;AAEvB,EAAA,uBACElB,IAAC,eAAA,CAAgB,QAAA,EAAhB,EAAyB,KAAA,EAAO,EAAE,IAAG,EACpC,QAAA,kBAAAA,IAAC,KAAA,EAAA,EAAI,WAAA,EAAU,aAAY,SAAA,EAAW,EAAA,CAAG,cAAc,SAAS,CAAA,EAAI,GAAG,KAAA,EAAO,CAAA,EAChF,CAAA;AAEJ;AAEO,SAAS,SAAA,CAAU;AAAA,EACxB,SAAA;AAAA,EACA,GAAG;AACL,CAAA,EAAqD;AACnD,EAAA,MAAM,EAAE,KAAA,EAAO,UAAA,EAAW,GAAI,YAAA,EAAa;AAE3C,EAAA,uBACEA,GAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,WAAA,EAAU,YAAA;AAAA,MACV,YAAA,EAAY,CAAC,CAAC,KAAA;AAAA,MACd,SAAA,EAAW,EAAA,CAAG,oCAAA,EAAsC,SAAS,CAAA;AAAA,MAC7D,OAAA,EAAS,UAAA;AAAA,MACR,GAAG;AAAA;AAAA,GACN;AAEJ;AAEO,SAAS,WAAA,CAAY,EAAE,GAAG,KAAA,EAAM,EAAsC;AAC3E,EAAA,MAAM,EAAE,KAAA,EAAO,UAAA,EAAY,iBAAA,EAAmB,aAAA,KAAkB,YAAA,EAAa;AAE7E,EAAA,uBACEA,GAAAA;AAAA,IAAC,IAAA;AAAA,IAAA;AAAA,MACC,WAAA,EAAU,cAAA;AAAA,MACV,EAAA,EAAI,UAAA;AAAA,MACJ,kBAAA,EAAkB,CAAC,KAAA,GAAQ,CAAA,EAAG,iBAAiB,CAAA,CAAA,GAAK,CAAA,EAAG,iBAAiB,CAAA,CAAA,EAAI,aAAa,CAAA,CAAA;AAAA,MACzF,cAAA,EAAc,CAAC,CAAC,KAAA;AAAA,MACf,GAAG;AAAA;AAAA,GACN;AAEJ;AAEO,SAAS,eAAA,CAAgB,EAAE,SAAA,EAAW,GAAG,OAAM,EAA8B;AAClF,EAAA,MAAM,EAAE,iBAAA,EAAkB,GAAI,YAAA,EAAa;AAE3C,EAAA,uBACEA,GAAAA;AAAA,IAAC,GAAA;AAAA,IAAA;AAAA,MACC,WAAA,EAAU,kBAAA;AAAA,MACV,EAAA,EAAI,iBAAA;AAAA,MACJ,SAAA,EAAW,EAAA,CAAG,+BAAA,EAAiC,SAAS,CAAA;AAAA,MACvD,GAAG;AAAA;AAAA,GACN;AAEJ;AAEO,SAAS,WAAA,CAAY,EAAE,SAAA,EAAW,GAAG,OAAM,EAA8B;AAC9E,EAAA,MAAM,EAAE,KAAA,EAAO,aAAA,EAAc,GAAI,YAAA,EAAa;AAC9C,EAAA,MAAM,OAAO,KAAA,GAAQ,MAAA,CAAO,OAAO,OAAA,IAAW,EAAE,IAAI,KAAA,CAAM,QAAA;AAE1D,EAAA,IAAI,CAAC,IAAA,EAAM;AACT,IAAA,OAAO,IAAA;AAAA,EACT;AAEA,EAAA,uBACEA,GAAAA;AAAA,IAAC,GAAA;AAAA,IAAA;AAAA,MACC,WAAA,EAAU,cAAA;AAAA,MACV,EAAA,EAAI,aAAA;AAAA,MACJ,SAAA,EAAW,EAAA,CAAG,0BAAA,EAA4B,SAAS,CAAA;AAAA,MAClD,GAAG,KAAA;AAAA,MAEH,QAAA,EAAA;AAAA;AAAA,GACH;AAEJ;ACnIA,SAAS,KAAA,CAAM,EAAE,GAAG,KAAA,EAAM,EAAqD;AAC7E,EAAA,uBAAOA,GAAAA,CAAgBmB,eAAA,CAAA,IAAA,EAAf,EAAqB,GAAG,KAAA,EAAO,CAAA;AACzC;AAEA,SAAS,YAAA,CAAa,EAAE,GAAG,KAAA,EAAM,EAAwD;AACvF,EAAA,uBAAOnB,GAAAA,CAAgBmB,eAAA,CAAA,OAAA,EAAf,EAAwB,GAAG,KAAA,EAAO,CAAA;AAC5C;AAEA,SAAS,UAAA,CAAW,EAAE,GAAG,KAAA,EAAM,EAAsD;AACnF,EAAA,uBAAOnB,GAAAA,CAAgBmB,eAAA,CAAA,KAAA,EAAf,EAAsB,GAAG,KAAA,EAAO,CAAA;AAC1C;AAEA,SAAS,WAAA,CAAY,EAAE,GAAG,KAAA,EAAM,EAAuD;AACrF,EAAA,uBAAOnB,GAAAA,CAAgBmB,eAAA,CAAA,MAAA,EAAf,EAAuB,GAAG,KAAA,EAAO,CAAA;AAC3C;AAEA,SAAS,YAAA,CAAa;AAAA,EACpB,SAAA;AAAA,EACA,GAAG;AACL,CAAA,EAAwD;AACtD,EAAA,uBACEnB,GAAAA;AAAA,IAAgBmB,eAAA,CAAA,OAAA;AAAA,IAAf;AAAA,MACC,SAAA,EAAW,EAAA;AAAA,QACT,oLAAA;AAAA,QACA;AAAA,OACF;AAAA,MACC,GAAG;AAAA;AAAA,GACN;AAEJ;AAEA,SAAS,YAAA,CAAa;AAAA,EACpB,SAAA;AAAA,EACA,QAAA;AAAA,EACA,IAAA,GAAO,OAAA;AAAA,EACP,oBAAA;AAAA,EACA,iBAAA;AAAA,EACA,cAAA;AAAA,EACA,GAAG;AACL,CAAA,EAEG;AACD,EAAA,uBACEf,KAAC,WAAA,EAAA,EACC,QAAA,EAAA;AAAA,oBAAAJ,IAAC,YAAA,EAAA,EAAa,CAAA;AAAA,oBACdI,IAAAA;AAAA,MAAgBe,eAAA,CAAA,OAAA;AAAA,MAAf;AAAA,QACC,oBAAA,EAAsB,CAAC,KAAA,KAAU;AAC/B,UAAA,+BAAA,CAAgC,KAAK,CAAA;AACrC,UAAA,IAAI,CAAC,MAAM,gBAAA,EAAkB;AAC3B,YAAA,oBAAA,GAAuB,KAAK,CAAA;AAAA,UAC9B;AAAA,QACF,CAAA;AAAA,QACA,iBAAA,EAAmB,CAAC,KAAA,KAAU;AAC5B,UAAA,+BAAA,CAAgC,KAAK,CAAA;AACrC,UAAA,IAAI,CAAC,MAAM,gBAAA,EAAkB;AAC3B,YAAA,iBAAA,GAAoB,KAAK,CAAA;AAAA,UAC3B;AAAA,QACF,CAAA;AAAA,QACA,cAAA,EAAgB,CAAC,KAAA,KAAU;AACzB,UAAA,+BAAA,CAAgC,KAAK,CAAA;AACrC,UAAA,IAAI,CAAC,MAAM,gBAAA,EAAkB;AAC3B,YAAA,cAAA,GAAiB,KAAK,CAAA;AAAA,UACxB;AAAA,QACF,CAAA;AAAA,QACA,SAAA,EAAW,EAAA;AAAA,UACT,8SAAA;AAAA,UACA,SAAS,OAAA,IACP,oIAAA;AAAA,UACF,SAAS,MAAA,IACP,iIAAA;AAAA,UACF,SAAS,KAAA,IACP,0GAAA;AAAA,UACF,SAAS,QAAA,IACP,mHAAA;AAAA,UACF;AAAA,SACF;AAAA,QACC,GAAG,KAAA;AAAA,QAGJ,QAAA,EAAA;AAAA,0BAAAnB,GAAAA,CAAC,iCAA+B,QAAA,EAAS,CAAA;AAAA,0BACzCI,IAAAA,CAAgBe,eAAA,CAAA,KAAA,EAAf,EAAqB,WAAU,2PAAA,EAC9B,QAAA,EAAA;AAAA,4BAAAnB,GAAAA,CAACoB,KAAAA,EAAA,EAAM,SAAA,EAAU,SAAA,EAAU,CAAA;AAAA,4BAC3BpB,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,WAAU,QAAA,EAAA,OAAA,EAAK;AAAA,WAAA,EACjC;AAAA;AAAA;AAAA;AACF,GAAA,EACF,CAAA;AAEJ;AAEA,IAAM,cAAc,CAAC,EAAE,SAAA,EAAW,GAAG,OAAM,qBACzCA,GAAAA,CAAC,KAAA,EAAA,EAAI,WAAW,EAAA,CAAG,wCAAA,EAA0C,SAAS,CAAA,EAAI,GAAG,KAAA,EAAO;AAEtF,WAAA,CAAY,WAAA,GAAc,aAAA;AAE1B,IAAM,cAAc,CAAC,EAAE,WAAW,GAAG,KAAA,uBACnCA,GAAAA;AAAA,EAAC,KAAA;AAAA,EAAA;AAAA,IACC,SAAA,EAAW,EAAA;AAAA,MACT,4FAAA;AAAA,MACA;AAAA,KACF;AAAA,IACC,GAAG;AAAA;AACN;AAEF,WAAA,CAAY,WAAA,GAAc,aAAA;AAE1B,SAAS,UAAA,CAAW,EAAE,SAAA,EAAW,GAAG,OAAM,EAAsD;AAC9F,EAAA,uBACEA,GAAAA;AAAA,IAAgBmB,eAAA,CAAA,KAAA;AAAA,IAAf;AAAA,MACC,SAAA,EAAW,EAAA,CAAG,uCAAA,EAAyC,SAAS,CAAA;AAAA,MAC/D,GAAG;AAAA;AAAA,GACN;AAEJ;AAEA,SAAS,gBAAA,CAAiB;AAAA,EACxB,SAAA;AAAA,EACA,GAAG;AACL,CAAA,EAA4D;AAC1D,EAAA,uBACEnB,GAAAA;AAAA,IAAgBmB,eAAA,CAAA,WAAA;AAAA,IAAf;AAAA,MACC,SAAA,EAAW,EAAA,CAAG,+BAAA,EAAiC,SAAS,CAAA;AAAA,MACvD,GAAG;AAAA;AAAA,GACN;AAEJ;ACrGO,SAAS,UAAA,CAAW;AAAA,EACzB,IAAA;AAAA,EACA,YAAA;AAAA,EACA,KAAA;AAAA,EACA,WAAA;AAAA,EACA,IAAA;AAAA,EACA,QAAA;AAAA,EACA,SAAA;AAAA,EACA;AACF,CAAA,EAAoB;AAClB,EAAA,MAAM,OAAA,GAAgBE,eAAuB,IAAI,CAAA;AACjD,EAAA,MAAM,CAAC,QAAA,EAAU,WAAW,CAAA,GAAUA,iBAAS,KAAK,CAAA;AAEpD,EAAMA,kBAAU,MAAM;AACpB,IAAA,IAAI,CAAC,IAAA,EAAM,WAAA,CAAY,KAAK,CAAA;AAAA,EAC9B,CAAA,EAAG,CAAC,IAAI,CAAC,CAAA;AAET,EAAA,uBACErB,GAAAA,CAAC,KAAA,EAAA,EAAM,IAAA,EAAY,cACjB,QAAA,kBAAAI,IAAAA;AAAA,IAAC,YAAA;AAAA,IAAA;AAAA,MACC,WAAA,EAAU,qBAAA;AAAA,MAEV,eAAA,EAAiB,CAAC,KAAA,KAAU;AAC1B,QAAA,KAAA,CAAM,cAAA,EAAe;AACrB,QAAA,OAAA,CAAQ,OAAA,EAAS,KAAA,CAAM,EAAE,aAAA,EAAe,MAAM,CAAA;AAAA,MAChD,CAAA;AAAA,MACA,gBAAA,EAAkB,CAAC,KAAA,KAAU,KAAA,CAAM,cAAA,EAAe;AAAA,MAClD,SAAA,EAAW,EAAA;AAAA,QACT,6FAAA;AAAA,QACA;AAAA,OACF;AAAA,MAEA,QAAA,EAAA;AAAA,wBAAAA,IAAAA,CAAC,WAAA,EAAA,EAAY,SAAA,EAAU,0BAAA,EACrB,QAAA,EAAA;AAAA,0BAAAA,IAAAA,CAAC,UAAA,EAAA,EAAW,SAAA,EAAU,gDAAA,EACpB,QAAA,EAAA;AAAA,4BAAAJ,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,SAAA,EAAW,QAAA,EAAA,KAAA,EAAM,CAAA;AAAA,YAChC,uBACCI,IAAAA,CAAC,WAAQ,IAAA,EAAM,QAAA,EAAU,cAAc,WAAA,EACrC,QAAA,EAAA;AAAA,8BAAAJ,GAAAA,CAAC,cAAA,EAAA,EAAe,OAAA,EAAO,IAAA,EACrB,QAAA,kBAAAA,GAAAA;AAAA,gBAAC,QAAA;AAAA,gBAAA;AAAA,kBACC,IAAA,EAAK,QAAA;AAAA,kBACL,SAAA,EAAU,uKAAA;AAAA,kBACV,YAAA,EAAW,WAAA;AAAA,kBACX,eAAA,EAAe,QAAA;AAAA,kBAEf,0BAAAA,GAAAA,CAAC,IAAA,EAAA,EAAK,SAAA,EAAU,aAAA,EAAc,eAAW,IAAA,EAAC;AAAA;AAAA,eAC5C,EACF,CAAA;AAAA,8BACAA,GAAAA;AAAA,gBAAC,cAAA;AAAA,gBAAA;AAAA,kBACC,IAAA,EAAK,QAAA;AAAA,kBACL,KAAA,EAAM,OAAA;AAAA,kBACN,UAAA,EAAY,CAAA;AAAA,kBACZ,SAAA,EAAU,2CAAA;AAAA,kBAET,QAAA,EAAA;AAAA;AAAA;AACH,aAAA,EACF,CAAA,GACE;AAAA,WAAA,EACN,CAAA;AAAA,UACC,8BACCA,GAAAA,CAAC,oBAAiB,SAAA,EAAU,SAAA,EAAW,uBAAY,CAAA,GACjD;AAAA,SAAA,EACN,CAAA;AAAA,wBACAA,GAAAA,CAAC,6BAAA,EAAA,EACC,QAAA,kBAAAA,GAAAA;AAAA,UAAC,KAAA;AAAA,UAAA;AAAA,YACC,GAAA,EAAK,OAAA;AAAA,YACL,QAAA,EAAU,EAAA;AAAA,YACV,SAAA,EAAW,EAAA;AAAA;AAAA,cAET,2EAAA;AAAA,cACA;AAAA,aACF;AAAA,YAEC;AAAA;AAAA,SACH,EACF;AAAA;AAAA;AAAA,GACF,EACF,CAAA;AAEJ;AC7GA,IAAM,UAAA,GACJ;AAGF,IAAM,kBAAkB,CAAC,OAAA,EAAS,QAAA,EAAU,SAAA,EAAW,QAAQ,EAAE,CAAA;AAEjE,SAAS,aAAa,EAAA,EAAoB;AACxC,EAAA,MAAM,OAAA,GAAU,GAAG,IAAA,EAAK;AACxB,EAAA,IAAI,CAAC,SAAS,OAAO,GAAA;AACrB,EAAA,MAAM,SAAA,GAAY,sBAAA,CAAuB,IAAA,CAAK,OAAO,CAAA;AACrD,EAAA,IAAI,SAAA,EAAW;AACb,IAAA,MAAM,MAAA,GAAS,OAAA,CAAQ,KAAA,CAAM,GAAG,EAAE,CAAC,CAAA;AACnC,IAAA,IAAI,MAAA,IAAU,CAAC,eAAA,CAAgB,QAAA,CAAS,GAAG,MAAA,CAAO,WAAA,EAAa,CAAA,CAAA,CAAG,CAAA,EAAG;AACnE,MAAA,OAAO,GAAA;AAAA,IACT;AAAA,EACF;AACA,EAAA,OAAO,OAAA;AACT;AAUA,SAAS,KAAK,EAAE,SAAA,EAAW,UAAU,EAAA,EAAI,GAAG,OAAM,EAAc;AAC9D,EAAA,MAAM,IAAA,GAAO,aAAa,EAAE,CAAA;AAC5B,EAAA,IAAI,QAAA,EAAU;AACZ,IAAA,uBACEA,GAAAA;AAAA,MAAC,GAAA;AAAA,MAAA;AAAA,QACC,IAAA;AAAA,QACA,MAAA,EAAO,QAAA;AAAA,QACP,GAAA,EAAI,qBAAA;AAAA,QACJ,SAAA,EAAW,EAAA,CAAG,UAAA,EAAY,SAAS,CAAA;AAAA,QAClC,GAAG;AAAA;AAAA,KACN;AAAA,EAEJ;AACA,EAAA,uBAAOA,GAAAA,CAAC,GAAA,EAAA,EAAE,IAAA,EAAY,SAAA,EAAW,GAAG,UAAA,EAAY,SAAS,CAAA,EAAI,GAAG,KAAA,EAAO,CAAA;AACzE;ACEA,IAAMsB,qBAAAA,GAEF;AAAA,EACF,YAAA,EAAc,gBAAA;AAAA,EACd,iBAAA,EAAmB,WAAA;AAAA,EACnB,aAAA,EAAe,YAAA;AAAA,EACf,qBAAA,EAAuB,QAAA;AAAA,EACvB,YAAA,EAAc;AAChB,CAAA;AAEA,SAAS,WAAA,CAAY;AAAA,EACnB,KAAA;AAAA,EACA,aAAA;AAAA,EACA,OAAA;AAAA,EACA,QAAA,GAAW,KAAA;AAAA,EACX,SAAA;AAAA,EACA,YAAA,EAAc,SAAA;AAAA,EACd,gBAAA,GAAmB,KAAA;AAAA,EACnB;AACF,CAAA,EAAqB;AACnB,EAAA,MAAM,CAAA,GAAI,EAAE,GAAGA,qBAAAA,EAAsB,GAAG,YAAA,EAAa;AACrD,EAAA,MAAM,wBAAwB,wBAAA,EAAyB;AACvD,EAAA,MAAM,CAAC,MAAA,EAAQ,SAAS,CAAA,GAAUC,iBAAS,EAAE,CAAA;AAC7C,EAAA,MAAM,WAAA,GAAoBA,gBAAQ,MAAM,IAAI,IAAI,KAAK,CAAA,EAAG,CAAC,KAAK,CAAC,CAAA;AAC/D,EAAA,MAAM,YAAA,GAAqBA,gBAAQ,MAAM;AACvC,IAAA,MAAM,GAAA,uBAAU,GAAA,EAAoB;AACpC,IAAA,KAAA,MAAW,OAAO,OAAA,EAAS,GAAA,CAAI,IAAI,GAAA,CAAI,KAAA,EAAO,IAAI,KAAK,CAAA;AACvD,IAAA,OAAO,GAAA;AAAA,EACT,CAAA,EAAG,CAAC,OAAO,CAAC,CAAA;AACZ,EAAA,MAAM,eAAA,GAAwBA,gBAAQ,MAAM;AAC1C,IAAA,MAAM,CAAA,GAAI,MAAA,CAAO,IAAA,EAAK,CAAE,WAAA,EAAY;AACpC,IAAA,IAAI,CAAC,GAAG,OAAO,OAAA;AACf,IAAA,OAAO,OAAA,CAAQ,MAAA,CAAO,CAAC,GAAA,KAAQ,GAAA,CAAI,MAAM,WAAA,EAAY,CAAE,QAAA,CAAS,CAAC,CAAC,CAAA;AAAA,EACpE,CAAA,EAAG,CAAC,OAAA,EAAS,MAAM,CAAC,CAAA;AAEpB,EAAA,MAAM,OAAA,GAAU,CAAA,CAAE,YAAA,CAAa,IAAA,EAAK;AACpC,EAAA,MAAM,cAAc,KAAA,CAAM,MAAA,GAAS,KAAK,gBAAA,IAAoB,OAAA,GAAU,UAAU,CAAA,CAAE,YAAA;AAElF,EAAA,MAAM,MAAA,GAAS,CAAC,WAAA,EAAqB,OAAA,KAAqB;AACxD,IAAA,IAAI,OAAA,EAAS;AACX,MAAA,aAAA,CAAc,CAAC,GAAG,KAAA,EAAO,WAAW,CAAC,CAAA;AACrC,MAAA;AAAA,IACF;AACA,IAAA,aAAA,CAAc,MAAM,MAAA,CAAO,CAAC,IAAA,KAAS,IAAA,KAAS,WAAW,CAAC,CAAA;AAAA,EAC5D,CAAA;AAEA,EAAA,uBACEnB,IAAAA,CAAC,KAAA,EAAA,EAAI,WAAW,EAAA,CAAG,WAAA,EAAa,SAAS,CAAA,EACtC,QAAA,EAAA;AAAA,IAAA,gBAAA,IAAoB,KAAA,CAAM,MAAA,GAAS,CAAA,mBAClCJ,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,wBAAA,EACZ,QAAA,EAAA,KAAA,CAAM,GAAA,CAAI,CAAC,WAAA,KAAgB;AAC1B,MAAA,MAAM,KAAA,GAAQ,YAAA,CAAa,GAAA,CAAI,WAAW,CAAA,IAAK,WAAA;AAC/C,MAAA,uBACEI,IAAAA,CAAC,KAAA,EAAA,EAAwB,OAAA,EAAQ,WAAA,EAAY,WAAU,wBAAA,EACpD,QAAA,EAAA;AAAA,QAAA,KAAA;AAAA,QACA,CAAC,2BACAJ,GAAAA;AAAA,UAAC,QAAA;AAAA,UAAA;AAAA,YACC,IAAA,EAAK,QAAA;AAAA,YACL,SAAA,EAAU,iDAAA;AAAA,YACV,YAAA,EAAY,CAAA,EAAG,CAAA,CAAE,qBAAqB,IAAI,KAAK,CAAA,CAAA;AAAA,YAC/C,OAAA,EAAS,MAAM,MAAA,CAAO,WAAA,EAAa,KAAK,CAAA;AAAA,YAExC,QAAA,kBAAAA,GAAAA,CAAC,CAAA,EAAA,EAAE,SAAA,EAAU,SAAA,EAAU;AAAA;AAAA,SACzB,GACE;AAAA,OAAA,EAAA,EAXM,WAYZ,CAAA;AAAA,IAEJ,CAAC,GACH,CAAA,GACE,IAAA;AAAA,oBACJI,IAAAA,CAAC,YAAA,EAAA,EAAa,KAAA,EAAO,KAAA,EACnB,QAAA,EAAA;AAAA,sBAAAJ,GAAAA,CAAC,mBAAA,EAAA,EAAoB,OAAA,EAAO,IAAA,EAC1B,QAAA,kBAAAI,IAAAA;AAAA,QAAC,MAAA;AAAA,QAAA;AAAA,UACC,IAAA,EAAK,QAAA;AAAA,UACL,OAAA,EAAQ,SAAA;AAAA,UACR,SAAA,EAAU,wBAAA;AAAA,UACV,cAAY,SAAA,IAAa,WAAA;AAAA,UACzB,QAAA;AAAA,UAEA,QAAA,EAAA;AAAA,4BAAAA,IAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,gCAAA,EACd,QAAA,EAAA;AAAA,8BAAAJ,GAAAA,CAAC,WAAA,EAAA,EAAY,SAAA,EAAU,SAAA,EAAU,CAAA;AAAA,cAChC;AAAA,aAAA,EACH,CAAA;AAAA,YACC,CAAC,gBAAA,IAAoB,KAAA,CAAM,MAAA,GAAS,CAAA,mBACnCA,GAAAA,CAAC,KAAA,EAAA,EAAM,OAAA,EAAQ,WAAA,EAAa,QAAA,EAAA,KAAA,CAAM,MAAA,EAAO,CAAA,GACvC;AAAA;AAAA;AAAA,OACN,EACF,CAAA;AAAA,sBACAI,IAAAA;AAAA,QAAC,mBAAA;AAAA,QAAA;AAAA,UACC,KAAA,EAAM,OAAA;AAAA,UACN,WAAW,CAAC,qBAAA;AAAA,UACZ,SAAA,EAAU,+FAAA;AAAA,UAEV,QAAA,EAAA;AAAA,4BAAAJ,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,yBAAA,EACb,QAAA,kBAAAA,GAAAA;AAAA,cAAC,KAAA;AAAA,cAAA;AAAA,gBACC,KAAA,EAAO,MAAA;AAAA,gBACP,UAAU,CAAC,KAAA,KAAU,SAAA,CAAU,KAAA,CAAM,OAAO,KAAK,CAAA;AAAA,gBACjD,aAAa,CAAA,CAAE,iBAAA;AAAA,gBACf,cAAY,CAAA,CAAE;AAAA;AAAA,aAChB,EACF,CAAA;AAAA,4BACAA,GAAAA;AAAA,cAAC,sBAAA;AAAA,cAAA;AAAA,gBACC,IAAA,EAAM,KAAA;AAAA,gBACN,mBAAA,EAAoB,0BAAA;AAAA,gBACpB,SAAA,EAAW,CAAA,EAAG,eAAA,CAAgB,MAAM,IAAI,MAAM,CAAA,CAAA;AAAA,gBAE7C,QAAA,EAAA,eAAA,CAAgB,MAAA,KAAW,CAAA,mBAC1BA,IAAC,GAAA,EAAA,EAAE,SAAA,EAAU,2CAAA,EAA6C,QAAA,EAAA,CAAA,CAAE,aAAA,EAAc,CAAA,GAE1E,eAAA,CAAgB,GAAA,CAAI,CAAC,MAAA,KAAW;AAC9B,kBAAA,MAAM,OAAA,GAAU,WAAA,CAAY,GAAA,CAAI,MAAA,CAAO,KAAK,CAAA;AAC5C,kBAAA,uBACEI,IAAAA;AAAA,oBAAC,gBAAA;AAAA,oBAAA;AAAA,sBAEC,QAAA,EAAU,CAAC,KAAA,KAAU;AACnB,wBAAA,KAAA,CAAM,cAAA,EAAe;AACrB,wBAAA,MAAA,CAAO,MAAA,CAAO,KAAA,EAAO,CAAC,OAAO,CAAA;AAAA,sBAC/B,CAAA;AAAA,sBAEA,QAAA,EAAA;AAAA,wCAAAJ,GAAAA,CAAC,YAAS,OAAA,EAAkB,CAAA;AAAA,wBAC3B,MAAA,CAAO;AAAA;AAAA,qBAAA;AAAA,oBAPH,MAAA,CAAO;AAAA,mBAQd;AAAA,gBAEJ,CAAC;AAAA;AAAA;AAEL;AAAA;AAAA;AACF,KAAA,EACF;AAAA,GAAA,EACF,CAAA;AAEJ;AC3KA,IAAM,UAAA,GAAmBwB,OAAA,CAAA,UAAA,CAGvB,CAAC,EAAE,SAAA,EAAW,UAAU,GAAG,KAAA,EAAM,EAAG,GAAA,qBACpCpB,IAAAA;AAAA,EAAqB,mBAAA,CAAA,IAAA;AAAA,EAApB;AAAA,IACC,GAAA;AAAA,IACA,SAAA,EAAW,EAAA,CAAG,0BAAA,EAA4B,SAAS,CAAA;AAAA,IAClD,GAAG,KAAA;AAAA,IAEJ,QAAA,EAAA;AAAA,sBAAAJ,GAAAA,CAAqB,mBAAA,CAAA,QAAA,EAApB,EAA6B,SAAA,EAAU,mCACrC,QAAA,EACH,CAAA;AAAA,sBACAA,IAAC,SAAA,EAAA,EAAU,CAAA;AAAA,sBACXA,GAAAA,CAAqB,mBAAA,CAAA,MAAA,EAApB,EAA2B;AAAA;AAAA;AAC9B,CACD;AACD,UAAA,CAAW,cAAkC,mBAAA,CAAA,IAAA,CAAK,WAAA;AAElD,IAAM,SAAA,GAAkBwB,OAAA,CAAA,UAAA,CAGtB,CAAC,EAAE,SAAA,EAAW,WAAA,GAAc,UAAA,EAAY,GAAG,KAAA,EAAM,EAAG,GAAA,qBACpDxB,GAAAA;AAAA,EAAqB,mBAAA,CAAA,mBAAA;AAAA,EAApB;AAAA,IACC,GAAA;AAAA,IACA,WAAA;AAAA,IACA,SAAA,EAAW,EAAA;AAAA,MACT,+CAAA;AAAA,MACA,gBAAgB,UAAA,IAAc,oDAAA;AAAA,MAC9B,gBAAgB,YAAA,IAAgB,sDAAA;AAAA,MAChC;AAAA,KACF;AAAA,IACC,GAAG,KAAA;AAAA,IAEJ,QAAA,kBAAAA,GAAAA,CAAqB,mBAAA,CAAA,eAAA,EAApB,EAAoC,WAAU,wCAAA,EAAyC;AAAA;AAC1F,CACD;AACD,SAAA,CAAU,cAAkC,mBAAA,CAAA,mBAAA,CAAoB,WAAA;ACZzD,SAAS,WAAA,CAAY;AAAA,EAC1B,KAAA;AAAA,EACA,aAAA;AAAA,EACA,QAAA;AAAA,EACA,OAAA;AAAA,EACA,WAAA;AAAA,EACA,YAAA,EAAc,SAAA;AAAA,EACd,iBAAA,GAAoB,QAAA;AAAA,EACpB,gBAAA,GAAmB,OAAA;AAAA,EACnB,SAAA;AAAA,EACA,cAAA;AAAA,EACA,QAAA;AAAA,EACA,EAAA;AAAA,EACA,IAAA;AAAA,EACA,YAAA,GAAe;AACjB,CAAA,EAAqB;AACnB,EAAA,MAAM,OAAA,GAAU,KAAA,CAAM,IAAA,EAAK,CAAE,MAAA,GAAS,CAAA;AAEtC,EAAA,MAAM,aAAA,GAA8D,CAAC,KAAA,KAAU;AAC7E,IAAA,IAAI,KAAA,CAAM,QAAQ,OAAA,EAAS;AACzB,MAAA,KAAA,CAAM,cAAA,EAAe;AACrB,MAAA,QAAA,EAAS;AAAA,IACX;AAAA,EACF,CAAA;AAEA,EAAA,uBACEI,IAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAW,EAAA;AAAA,QACT,gGAAA;AAAA,QACA,6GAAA;AAAA,QACA,QAAA,IAAY,YAAA;AAAA,QACZ;AAAA,OACF;AAAA,MAEA,QAAA,EAAA;AAAA,wBAAAA,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,2CAAA,EACb,QAAA,EAAA;AAAA,0BAAAJ,GAAAA;AAAA,YAAC,KAAA;AAAA,YAAA;AAAA,cACC,EAAA;AAAA,cACA,IAAA;AAAA,cACA,YAAA;AAAA,cACA,QAAA;AAAA,cACA,WAAA;AAAA,cACA,KAAA;AAAA,cACA,UAAU,CAAC,CAAA,KAAM,aAAA,CAAc,CAAA,CAAE,OAAO,KAAK,CAAA;AAAA,cAC7C,SAAA,EAAW,aAAA;AAAA,cACX,SAAA,EAAW,EAAA;AAAA,gBACT,wEAAA;AAAA,gBACA,uDAAA;AAAA,gBACA,WAAW,OAAA,IAAW,MAAA;AAAA,gBACtB;AAAA,eACF;AAAA,cACA,cAAY,SAAA,IAAa;AAAA;AAAA,WAC3B;AAAA,UACC,OAAA,IAAW,0BACVA,GAAAA;AAAA,YAAC,MAAA;AAAA,YAAA;AAAA,cACC,IAAA,EAAK,QAAA;AAAA,cACL,OAAA,EAAQ,OAAA;AAAA,cACR,IAAA,EAAK,SAAA;AAAA,cACL,QAAA;AAAA,cACA,OAAA,EAAS,OAAA;AAAA,cACT,YAAA,EAAY,gBAAA;AAAA,cACZ,SAAA,EAAU,yGAAA;AAAA,cAEV,0BAAAA,GAAAA,CAACyB,CAAAA,EAAA,EAAE,SAAA,EAAU,SAAA,EAAU,eAAW,IAAA,EAAC;AAAA;AAAA,WACrC,GACE;AAAA,SAAA,EACN,CAAA;AAAA,wBACAzB,GAAAA;AAAA,UAAC,MAAA;AAAA,UAAA;AAAA,YACC,IAAA,EAAK,QAAA;AAAA,YACL,OAAA,EAAQ,SAAA;AAAA,YACR,QAAA;AAAA,YACA,OAAA,EAAS,QAAA;AAAA,YACT,YAAA,EAAY,iBAAA;AAAA,YACZ,SAAA,EAAW,EAAA;AAAA,cACT,gHAAA;AAAA,cACA,0CAAA;AAAA,cACA;AAAA,aACF;AAAA,YAEA,0BAAAA,GAAAA,CAAC,MAAA,EAAA,EAAO,SAAA,EAAU,SAAA,EAAU,eAAW,IAAA,EAAC;AAAA;AAAA;AAC1C;AAAA;AAAA,GACF;AAEJ;;;AC9GO,IAAM,6BAAA,GAAgC;AAOtC,SAAS,eAAe,KAAA,EAAuB;AACpD,EAAA,OAAO,KAAA,CACJ,IAAA,EAAK,CACL,iBAAA,CAAkB,IAAI,CAAA,CACtB,OAAA,CAAQ,IAAA,EAAM,GAAG,CAAA,CACjB,OAAA,CAAQ,IAAA,EAAM,GAAG,EACjB,OAAA,CAAQ,IAAA,EAAM,GAAG,CAAA,CACjB,OAAA,CAAQ,KAAA,EAAO,GAAG,CAAA,CAClB,QAAQ,IAAA,EAAM,GAAG,CAAA,CACjB,OAAA,CAAQ,IAAA,EAAM,GAAG,CAAA,CACjB,OAAA,CAAQ,MAAM,GAAG,CAAA;AACtB;AAEO,SAAS,mBAAA,CACd,SACA,KAAA,EACK;AACL,EAAA,MAAM,CAAA,GAAI,eAAe,KAAK,CAAA;AAC9B,EAAA,IAAI,CAAC,GAAG,OAAO,OAAA;AACf,EAAA,OAAO,OAAA,CAAQ,MAAA,CAAO,CAAC,MAAA,KAAW,cAAA,CAAe,OAAO,KAAK,CAAA,CAAE,QAAA,CAAS,CAAC,CAAC,CAAA;AAC5E;AAEO,SAAS,kBAAA,CAAmB,aAAqB,UAAA,EAA+B;AACrF,EAAA,IAAI,UAAA,KAAe,MAAM,OAAO,IAAA;AAChC,EAAA,IAAI,UAAA,KAAe,OAAO,OAAO,KAAA;AACjC,EAAA,OAAO,WAAA,IAAe,6BAAA;AACxB;ACKA,IAAMsB,qBAAAA,GAAqD;AAAA,EACzD,iBAAA,EAAmB,cAAA;AAAA,EACnB,aAAA,EAAe;AACjB,CAAA;AAEA,SAAS,MAAA,CAAO;AAAA,EACd,KAAA;AAAA,EACA,aAAA;AAAA,EACA,OAAA;AAAA,EACA,WAAA,GAAc,EAAA;AAAA,EACd,QAAA,GAAW,KAAA;AAAA,EACX,SAAA;AAAA,EACA,gBAAA;AAAA,EACA,UAAA;AAAA,EACA,YAAA;AAAA,EACA,YAAA,EAAc;AAChB,CAAA,EAAgB;AACd,EAAA,MAAM,CAAA,GAAI,EAAE,GAAGA,qBAAAA,EAAsB,GAAG,YAAA,EAAa;AACrD,EAAA,MAAM,wBAAwB,wBAAA,EAAyB;AACvD,EAAA,MAAM,CAAC,IAAA,EAAM,OAAO,CAAA,GAAUI,iBAAS,KAAK,CAAA;AAC5C,EAAA,MAAM,CAAC,MAAA,EAAQ,SAAS,CAAA,GAAUA,iBAAS,EAAE,CAAA;AAC7C,EAAA,MAAM,UAAA,GAAa,kBAAA,CAAmB,OAAA,CAAQ,MAAA,EAAQ,UAAU,CAAA;AAChE,EAAA,MAAM,eAAA,GAAwBA,OAAA,CAAA,OAAA;AAAA,IAC5B,MAAO,UAAA,GAAa,mBAAA,CAAoB,OAAA,EAAS,MAAM,CAAA,GAAI,OAAA;AAAA,IAC3D,CAAC,OAAA,EAAS,MAAA,EAAQ,UAAU;AAAA,GAC9B;AACA,EAAA,MAAM,iBAAiB,OAAA,CAAQ,IAAA,CAAK,CAAC,GAAA,KAAQ,GAAA,CAAI,UAAU,KAAK,CAAA;AAChE,EAAA,MAAM,YAAA,GAAe,gBAAgB,KAAA,IAAS,WAAA;AAE9C,EAAA,MAAM,gBAAA,GAAmB,CAAC,QAAA,KAAsB;AAC9C,IAAA,OAAA,CAAQ,QAAQ,CAAA;AAChB,IAAA,IAAI,CAAC,QAAA,EAAU,SAAA,CAAU,EAAE,CAAA;AAAA,EAC7B,CAAA;AAEA,EAAA,uBACEtB,IAAAA,CAAC,YAAA,EAAA,EAAa,OAAO,KAAA,EAAO,IAAA,EAAY,cAAc,gBAAA,EACpD,QAAA,EAAA;AAAA,oBAAAJ,GAAAA,CAAC,mBAAA,EAAA,EAAoB,OAAA,EAAO,IAAA,EAC1B,QAAA,kBAAAI,IAAAA;AAAA,MAAC,QAAA;AAAA,MAAA;AAAA,QACC,IAAA,EAAK,QAAA;AAAA,QACL,IAAA,EAAK,UAAA;AAAA,QACL,eAAA,EAAe,IAAA;AAAA,QACf,YAAA,EAAY,SAAA;AAAA,QACZ,eAAA,EAAc,SAAA;AAAA,QACd,QAAA;AAAA,QACA,SAAA,EAAW,EAAA;AAAA,UACT,WAAA;AAAA,UACA,YAAA;AAAA,UACA,+EAAA;AAAA,UACA,qEAAA;AAAA,UACA,CAAC,cAAA,IAAkB,uBAAA;AAAA,UACnB,gBAAA;AAAA,UACA;AAAA,SACF;AAAA,QAEA,QAAA,EAAA;AAAA,0BAAAJ,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,4BAAA,EAA8B,QAAA,EAAA,YAAA,EAAa,CAAA;AAAA,0BAC3DA,GAAAA,CAAC,eAAA,EAAA,EAAgB,SAAA,EAAU,6CAAA,EAA8C;AAAA;AAAA;AAAA,KAC3E,EACF,CAAA;AAAA,oBACAI,IAAAA;AAAA,MAAC,mBAAA;AAAA,MAAA;AAAA,QACC,QAAA,EAAU,KAAA;AAAA,QACV,KAAA,EAAM,OAAA;AAAA,QACN,UAAA,EAAY,CAAA;AAAA,QACZ,WAAW,CAAC,qBAAA;AAAA,QACZ,SAAA,EAAU,uFAAA;AAAA,QACV,gBAAA,EAAkB,CAAC,CAAA,KAAM,CAAA,CAAE,cAAA,EAAe;AAAA,QAEzC,QAAA,EAAA;AAAA,UAAA,UAAA,mBACCJ,GAAAA;AAAA,YAAC,yBAAA;AAAA,YAAA;AAAA,cACC,KAAA,EAAO,MAAA;AAAA,cACP,QAAA,EAAU,SAAA;AAAA,cACV,aAAa,CAAA,CAAE,iBAAA;AAAA,cACf,SAAA,EAAW;AAAA;AAAA,WACb,GACE,IAAA;AAAA,0BACJA,GAAAA;AAAA,YAAC,sBAAA;AAAA,YAAA;AAAA,cACC,IAAA,EAAM,KAAA;AAAA,cACN,mBAAA,EAAqB,EAAA;AAAA,gBACnB,0CAAA;AAAA,gBACA;AAAA,eACF;AAAA,cACA,SAAA,EAAW,GAAG,eAAA,CAAgB,MAAM,IAAI,IAAA,GAAO,CAAA,GAAI,CAAC,CAAA,CAAA,EAAI,MAAM,CAAA,CAAA;AAAA,cAE7D,QAAA,EAAA,eAAA,CAAgB,MAAA,KAAW,CAAA,mBAC1BA,IAAC,GAAA,EAAA,EAAE,SAAA,EAAU,2CAAA,EAA6C,QAAA,EAAA,CAAA,CAAE,eAAc,CAAA,GAE1E,eAAA,CAAgB,GAAA,CAAI,CAAC,wBACnBA,GAAAA;AAAA,gBAAC,gBAAA;AAAA,gBAAA;AAAA,kBAEC,UAAU,MAAM;AACd,oBAAA,aAAA,CAAc,IAAI,KAAK,CAAA;AAAA,kBACzB,CAAA;AAAA,kBAEC,QAAA,EAAA,GAAA,CAAI;AAAA,iBAAA;AAAA,gBALA,GAAA,CAAI;AAAA,eAOZ;AAAA;AAAA;AAEL;AAAA;AAAA;AACF,GAAA,EACF,CAAA;AAEJ;AAEA,SAAS,eAAA,CAAgB,EAAE,SAAA,EAAW,GAAG,OAAM,EAAkC;AAC/E,EAAA,uBACEI,IAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,KAAA,EAAM,4BAAA;AAAA,MACN,KAAA,EAAM,IAAA;AAAA,MACN,MAAA,EAAO,IAAA;AAAA,MACP,OAAA,EAAQ,WAAA;AAAA,MACR,IAAA,EAAK,MAAA;AAAA,MACL,MAAA,EAAO,cAAA;AAAA,MACP,WAAA,EAAY,GAAA;AAAA,MACZ,aAAA,EAAc,OAAA;AAAA,MACd,cAAA,EAAe,OAAA;AAAA,MACf,SAAA;AAAA,MACA,aAAA,EAAY,MAAA;AAAA,MACX,GAAG,KAAA;AAAA,MAEJ,QAAA,EAAA;AAAA,wBAAAJ,GAAAA,CAAC,WAAM,QAAA,EAAA,cAAA,EAAY,CAAA;AAAA,wBACnBA,GAAAA,CAAC,MAAA,EAAA,EAAK,CAAA,EAAE,cAAA,EAAe;AAAA;AAAA;AAAA,GACzB;AAEJ;AC5JA,IAAM,SAAA,GAAkB2B,OAAA,CAAA,UAAA,CAGtB,CAAC,EAAE,SAAA,EAAW,WAAA,GAAc,YAAA,EAAc,UAAA,GAAa,IAAA,EAAM,GAAG,KAAA,EAAM,EAAG,wBACzE3B,GAAAA;AAAA,EAAoB,kBAAA,CAAA,IAAA;AAAA,EAAnB;AAAA,IACC,GAAA;AAAA,IACA,UAAA;AAAA,IACA,WAAA;AAAA,IACA,SAAA,EAAW,EAAA;AAAA,MACT,oBAAA;AAAA,MACA,WAAA,KAAgB,eAAe,gBAAA,GAAmB,gBAAA;AAAA,MAClD;AAAA,KACF;AAAA,IACC,GAAG;AAAA;AACN,CACD;AACD,SAAA,CAAU,cAAiC,kBAAA,CAAA,IAAA,CAAK,WAAA;ACfhD,IAAM,MAAA,GAAe4B,mBAGnB,CAAC,EAAE,WAAW,GAAG,KAAA,EAAM,EAAG,GAAA,qBAC1B5B,GAAAA;AAAA,EAAiB,eAAA,CAAA,IAAA;AAAA,EAAhB;AAAA,IACC,GAAA;AAAA,IACA,WAAA,EAAU,QAAA;AAAA,IACV,SAAA,EAAW,EAAA;AAAA,MACT,+JAAA;AAAA,MACA,YAAA;AAAA,MACA,iDAAA;AAAA,MACA,iEAAA;AAAA,MACA;AAAA,KACF;AAAA,IACC,GAAG,KAAA;AAAA,IAEJ,QAAA,kBAAAA,GAAAA;AAAA,MAAiB,eAAA,CAAA,KAAA;AAAA,MAAhB;AAAA,QACC,WAAA,EAAU,cAAA;AAAA,QACV,SAAA,EAAW,EAAA;AAAA,UACT,wGAAA;AAAA,UACA;AAAA;AACF;AAAA;AACF;AACF,CACD;AACD,MAAA,CAAO,cAA8B,eAAA,CAAA,IAAA,CAAK,WAAA;AC3B1C,IAAM,KAAA,GAAc6B,OAAA,CAAA,UAAA;AAAA,EAClB,CAAC,EAAE,SAAA,EAAW,GAAG,OAAM,EAAG,GAAA,qBACxB7B,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,iCACb,QAAA,kBAAAA,GAAAA,CAAC,OAAA,EAAA,EAAM,GAAA,EAAU,SAAA,EAAW,EAAA,CAAG,iCAAiC,SAAS,CAAA,EAAI,GAAG,KAAA,EAAO,CAAA,EACzF;AAEJ;AACA,KAAA,CAAM,WAAA,GAAc,OAAA;AAEpB,IAAM,WAAA,GAAoB6B,mBAGxB,CAAC,EAAE,WAAW,GAAG,KAAA,EAAM,EAAG,GAAA,qBAC1B7B,GAAAA;AAAA,EAAC,OAAA;AAAA,EAAA;AAAA,IACC,GAAA;AAAA,IACA,SAAA,EAAW,EAAA,CAAG,yCAAA,EAA2C,SAAS,CAAA;AAAA,IACjE,GAAG;AAAA;AACN,CACD;AACD,WAAA,CAAY,WAAA,GAAc,aAAA;AAE1B,IAAM,SAAA,GAAkB6B,mBAGtB,CAAC,EAAE,WAAW,GAAG,KAAA,IAAS,GAAA,qBAC1B7B,IAAC,OAAA,EAAA,EAAM,GAAA,EAAU,WAAW,EAAA,CAAG,4BAAA,EAA8B,SAAS,CAAA,EAAI,GAAG,OAAO,CACrF;AACD,SAAA,CAAU,WAAA,GAAc,WAAA;AAExB,IAAM,WAAA,GAAoB6B,mBAGxB,CAAC,EAAE,WAAW,GAAG,KAAA,EAAM,EAAG,GAAA,qBAC1B7B,GAAAA;AAAA,EAAC,OAAA;AAAA,EAAA;AAAA,IACC,GAAA;AAAA,IACA,SAAA,EAAW,EAAA;AAAA,MACT,0EAAA;AAAA,MACA;AAAA,KACF;AAAA,IACC,GAAG;AAAA;AACN,CACD;AACD,WAAA,CAAY,WAAA,GAAc,aAAA;AAE1B,IAAM,QAAA,GAAiB6B,OAAA,CAAA,UAAA;AAAA,EACrB,CAAC,EAAE,SAAA,EAAW,GAAG,KAAA,EAAM,EAAG,wBACxB7B,GAAAA;AAAA,IAAC,IAAA;AAAA,IAAA;AAAA,MACC,GAAA;AAAA,MACA,SAAA,EAAW,EAAA;AAAA,QACT,iGAAA;AAAA,QACA;AAAA,OACF;AAAA,MACC,GAAG;AAAA;AAAA;AAGV;AACA,QAAA,CAAS,WAAA,GAAc,UAAA;AAEvB,IAAM,SAAA,GAAkB6B,mBAGtB,CAAC,EAAE,WAAW,GAAG,KAAA,EAAM,EAAG,GAAA,qBAC1B7B,GAAAA;AAAA,EAAC,IAAA;AAAA,EAAA;AAAA,IACC,GAAA;AAAA,IACA,SAAA,EAAW,EAAA;AAAA,MACT,kGAAA;AAAA,MACA;AAAA,KACF;AAAA,IACC,GAAG;AAAA;AACN,CACD;AACD,SAAA,CAAU,WAAA,GAAc,WAAA;AAExB,IAAM,SAAA,GAAkB6B,mBAGtB,CAAC,EAAE,WAAW,GAAG,KAAA,EAAM,EAAG,GAAA,qBAC1B7B,GAAAA;AAAA,EAAC,IAAA;AAAA,EAAA;AAAA,IACC,GAAA;AAAA,IACA,SAAA,EAAW,EAAA,CAAG,gDAAA,EAAkD,SAAS,CAAA;AAAA,IACxE,GAAG;AAAA;AACN,CACD;AACD,SAAA,CAAU,WAAA,GAAc,WAAA;AAExB,IAAM,YAAA,GAAqB6B,mBAGzB,CAAC,EAAE,WAAW,GAAG,KAAA,IAAS,GAAA,qBAC1B7B,IAAC,SAAA,EAAA,EAAQ,GAAA,EAAU,WAAW,EAAA,CAAG,oCAAA,EAAsC,SAAS,CAAA,EAAI,GAAG,OAAO,CAC/F;AACD,YAAA,CAAa,WAAA,GAAc,cAAA;AC1FpB,SAAS,IAAA,CAAK,EAAE,SAAA,EAAW,GAAG,OAAM,EAAoD;AAC7F,EAAA,uBACEA,GAAAA;AAAA,IAAe,aAAA,CAAA,IAAA;AAAA,IAAd;AAAA,MACC,WAAA,EAAU,MAAA;AAAA,MACV,SAAA,EAAW,EAAA,CAAG,qBAAA,EAAuB,SAAS,CAAA;AAAA,MAC7C,GAAG;AAAA;AAAA,GACN;AAEJ;AAEO,SAAS,QAAA,CAAS,EAAE,SAAA,EAAW,GAAG,OAAM,EAAoD;AACjG,EAAA,uBACEA,GAAAA;AAAA,IAAe,aAAA,CAAA,IAAA;AAAA,IAAd;AAAA,MACC,WAAA,EAAU,WAAA;AAAA,MACV,SAAA,EAAW,EAAA;AAAA,QACT,2FAAA;AAAA,QACA;AAAA,OACF;AAAA,MACC,GAAG;AAAA;AAAA,GACN;AAEJ;AAEO,SAAS,WAAA,CAAY;AAAA,EAC1B,SAAA;AAAA,EACA,GAAG;AACL,CAAA,EAAuD;AACrD,EAAA,uBACEA,GAAAA;AAAA,IAAe,aAAA,CAAA,OAAA;AAAA,IAAd;AAAA,MACC,WAAA,EAAU,cAAA;AAAA,MACV,SAAA,EAAW,EAAA;AAAA,QACT,yJAAA;AAAA,QACA,qGAAA;AAAA,QACA,kDAAA;AAAA,QACA,qGAAA;AAAA,QACA;AAAA,OACF;AAAA,MACC,GAAG;AAAA;AAAA,GACN;AAEJ;AAEO,SAAS,WAAA,CAAY;AAAA,EAC1B,SAAA;AAAA,EACA,GAAG;AACL,CAAA,EAAuD;AACrD,EAAA,uBACEA,GAAAA;AAAA,IAAe,aAAA,CAAA,OAAA;AAAA,IAAd;AAAA,MACC,WAAA,EAAU,cAAA;AAAA,MACV,SAAA,EAAW,EAAA;AAAA,QACT,iIAAA;AAAA,QACA;AAAA,OACF;AAAA,MACC,GAAG;AAAA;AAAA,GACN;AAEJ;ACvDA,IAAM,QAAA,GAAiB8B,OAAA,CAAA,UAAA;AAAA,EACrB,CAAC,EAAE,SAAA,EAAW,GAAG,KAAA,EAAM,EAAG,wBACxB9B,GAAAA;AAAA,IAAC,UAAA;AAAA,IAAA;AAAA,MACC,GAAA;AAAA,MACA,WAAA,EAAU,UAAA;AAAA,MACV,SAAA,EAAW,EAAA;AAAA,QACT,WAAA;AAAA,QACA,YAAA;AAAA,QACA,cAAA;AAAA,QACA,0FAAA;AAAA,QACA,iEAAA;AAAA,QACA,8EAAA;AAAA,QACA;AAAA,OACF;AAAA,MACC,GAAG;AAAA;AAAA;AAGV;AACA,QAAA,CAAS,WAAA,GAAc,UAAA;AClBhB,IAAM,eAAA,GAAmC,gBAAA,CAAA;AAkBhD,SAAS,oBAAA,GAAgC;AACvC,EAAA,IAAI,OAAO,MAAA,KAAW,WAAA,IAAe,OAAO,MAAA,CAAO,UAAA,KAAe,YAAY,OAAO,KAAA;AACrF,EAAA,OAAO,MAAA,CAAO,UAAA,CAAW,mBAAmB,CAAA,CAAE,OAAA;AAChD;AAEA,SAAS,aAAA,CAAc,EAAA,EAAwB,CAAA,EAAW,CAAA,EAAoB;AAC5E,EAAA,IAAI,CAAC,EAAA,IAAM,OAAO,QAAA,CAAS,gBAAA,KAAqB,YAAY,OAAO,KAAA;AACnE,EAAA,IAAI,CAAC,MAAA,CAAO,QAAA,CAAS,CAAC,CAAA,IAAK,CAAC,MAAA,CAAO,QAAA,CAAS,CAAC,CAAA,EAAG,OAAO,KAAA;AACvD,EAAA,MAAM,KAAA,GAAQ,QAAA,CAAS,gBAAA,CAAiB,CAAA,EAAG,CAAC,CAAA;AAC5C,EAAA,OAAO,QAAQ,KAAA,KAAU,KAAA,KAAU,MAAM,EAAA,CAAG,QAAA,CAAS,KAAK,CAAA,CAAE,CAAA;AAC9D;AAaO,SAAS,OAAA,CAAQ;AAAA,EACtB,OAAA;AAAA,EACA,QAAA;AAAA,EACA,IAAA,GAAO,KAAA;AAAA,EACP,KAAA,GAAQ,QAAA;AAAA,EACR,aAAA,GAAgB,GAAA;AAAA,EAChB,UAAA,GAAa;AACf,CAAA,EAAiB;AACf,EAAA,MAAM,CAAC,IAAA,EAAM,OAAO,CAAA,GAAU,iBAAS,KAAK,CAAA;AAC5C,EAAA,MAAM,UAAA,GAAmB,eAAiC,IAAI,CAAA;AAC9D,EAAA,MAAM,SAAA,GAAkB,eAAO,KAAK,CAAA;AACpC,EAAA,MAAM,WAAA,GAAoB,eAAO,KAAK,CAAA;AACtC,EAAA,MAAM,OAAA,GAAgB,eAAO,KAAK,CAAA;AAElC,EAAA,MAAM,aAAA,GAAsB,eAAO,KAAK,CAAA;AAExC,EAAA,MAAM,cAAA,GAAuB,eAAO,KAAK,CAAA;AACzC,EAAA,MAAM,cAAA,GAAuB,eAAO,EAAE,CAAA,EAAG,OAAO,GAAA,EAAK,CAAA,EAAG,MAAA,CAAO,GAAA,EAAK,CAAA;AAEpE,EAAA,MAAM,cAAA,GAAuB,eAAsB,IAAI,CAAA;AACvD,EAAA,MAAM,eAAA,GAAwB,eAAsB,IAAI,CAAA;AAExD,EAAM,kBAAU,MAAM;AACpB,IAAA,OAAA,CAAQ,OAAA,GAAU,IAAA;AAAA,EACpB,CAAA,EAAG,CAAC,IAAI,CAAC,CAAA;AAET,EAAM,wBAAgB,MAAM;AAC1B,IAAA,aAAA,CAAc,OAAA,GAAU,KAAA;AACxB,IAAA,SAAA,CAAU,OAAA,GAAU,KAAA;AACpB,IAAA,WAAA,CAAY,OAAA,GAAU,KAAA;AACtB,IAAA,cAAA,CAAe,OAAA,GAAU,KAAA;AACzB,IAAA,OAAA,CAAQ,KAAK,CAAA;AAEb,IAAA,MAAM,YAAY,MAAM;AACtB,MAAA,cAAA,CAAe,OAAA,GAAU,IAAA;AACzB,MAAA,MAAM,KAAK,UAAA,CAAW,OAAA;AACtB,MAAA,MAAM,EAAE,CAAA,EAAG,CAAA,EAAE,GAAI,cAAA,CAAe,OAAA;AAChC,MAAA,IAAI,aAAA,CAAc,EAAA,EAAI,CAAA,EAAG,CAAC,CAAA,EAAG;AAC3B,QAAA,aAAA,CAAc,OAAA,GAAU,KAAA;AACxB,QAAA;AAAA,MACF;AACA,MAAA,aAAA,CAAc,OAAA,GAAU,IAAA;AAAA,IAC1B,CAAA;AAEA,IAAA,IAAI,IAAA,GAAO,CAAA;AACX,IAAA,MAAM,IAAA,GAAO,MAAA,CAAO,qBAAA,CAAsB,MAAM;AAC9C,MAAA,IAAA,GAAO,MAAA,CAAO,sBAAsB,SAAS,CAAA;AAAA,IAC/C,CAAC,CAAA;AAED,IAAA,MAAM,aAAA,GAAgB,CAAC,KAAA,KAAwB;AAC7C,MAAA,cAAA,CAAe,UAAU,EAAE,CAAA,EAAG,MAAM,OAAA,EAAS,CAAA,EAAG,MAAM,OAAA,EAAQ;AAC9D,MAAA,IAAI,CAAC,eAAe,OAAA,EAAS;AAC7B,MAAA,IAAI,cAAc,UAAA,CAAW,OAAA,EAAS,MAAM,OAAA,EAAS,KAAA,CAAM,OAAO,CAAA,EAAG;AACrE,MAAA,aAAA,CAAc,OAAA,GAAU,IAAA;AAAA,IAC1B,CAAA;AAEA,IAAA,MAAA,CAAO,iBAAiB,aAAA,EAAe,aAAA,EAAe,EAAE,OAAA,EAAS,MAAM,CAAA;AACvE,IAAA,OAAO,MAAM;AACX,MAAA,MAAA,CAAO,qBAAqB,IAAI,CAAA;AAChC,MAAA,MAAA,CAAO,qBAAqB,IAAI,CAAA;AAChC,MAAA,MAAA,CAAO,mBAAA,CAAoB,eAAe,aAAa,CAAA;AAAA,IACzD,CAAA;AAAA,EACF,CAAA,EAAG,EAAE,CAAA;AAEL,EAAA,MAAM,gBAAA,GAAyB,oBAAY,MAAM;AAC/C,IAAA,IAAI,cAAA,CAAe,YAAY,IAAA,EAAM;AACnC,MAAA,MAAA,CAAO,YAAA,CAAa,eAAe,OAAO,CAAA;AAC1C,MAAA,cAAA,CAAe,OAAA,GAAU,IAAA;AAAA,IAC3B;AAAA,EACF,CAAA,EAAG,EAAE,CAAA;AAEL,EAAA,MAAM,iBAAA,GAA0B,oBAAY,MAAM;AAChD,IAAA,IAAI,eAAA,CAAgB,YAAY,IAAA,EAAM;AACpC,MAAA,MAAA,CAAO,YAAA,CAAa,gBAAgB,OAAO,CAAA;AAC3C,MAAA,eAAA,CAAgB,OAAA,GAAU,IAAA;AAAA,IAC5B;AAAA,EACF,CAAA,EAAG,EAAE,CAAA;AAEL,EAAA,MAAM,aAAA,GAAsB,oBAAY,MAAM;AAC5C,IAAA,IAAI,SAAA,CAAU,OAAA,IAAW,WAAA,CAAY,OAAA,EAAS;AAC9C,IAAA,gBAAA,EAAiB;AACjB,IAAA,iBAAA,EAAkB;AAClB,IAAA,IAAI,eAAe,CAAA,EAAG;AACpB,MAAA,OAAA,CAAQ,KAAK,CAAA;AACb,MAAA;AAAA,IACF;AACA,IAAA,eAAA,CAAgB,OAAA,GAAU,MAAA,CAAO,UAAA,CAAW,MAAM;AAChD,MAAA,IAAI,SAAA,CAAU,OAAA,IAAW,WAAA,CAAY,OAAA,EAAS;AAC9C,MAAA,OAAA,CAAQ,KAAK,CAAA;AAAA,IACf,GAAG,UAAU,CAAA;AAAA,EACf,CAAA,EAAG,CAAC,iBAAA,EAAmB,gBAAA,EAAkB,UAAU,CAAC,CAAA;AAEpD,EAAA,MAAM,gBAAA,GAAyB,OAAA,CAAA,WAAA;AAAA,IAC7B,CAAC,IAAA,KAAkB;AACjB,MAAA,IAAI,IAAA,EAAM;AACR,QAAA,IAAI,CAAC,WAAA,CAAY,OAAA,IAAW,CAAC,UAAU,OAAA,EAAS;AAChD,QAAA,OAAA,CAAQ,IAAI,CAAA;AACZ,QAAA;AAAA,MACF;AACA,MAAA,IAAI,UAAU,OAAA,EAAS;AACrB,QAAA,SAAA,CAAU,OAAA,GAAU,KAAA;AACpB,QAAA,WAAA,CAAY,OAAA,GAAU,KAAA;AACtB,QAAA,gBAAA,EAAiB;AACjB,QAAA,iBAAA,EAAkB;AAClB,QAAA,OAAA,CAAQ,KAAK,CAAA;AACb,QAAA;AAAA,MACF;AACA,MAAA,aAAA,EAAc;AAAA,IAChB,CAAA;AAAA,IACA,CAAC,iBAAA,EAAmB,gBAAA,EAAkB,aAAa;AAAA,GACrD;AAEA,EAAA,MAAM,kBAAA,GAA2B,oBAAY,MAAM;AACjD,IAAA,IAAI,CAAC,cAAc,OAAA,EAAS;AAC5B,IAAA,WAAA,CAAY,OAAA,GAAU,IAAA;AACtB,IAAA,iBAAA,EAAkB;AAClB,IAAA,gBAAA,EAAiB;AACjB,IAAA,IAAI,OAAA,CAAQ,OAAA,IAAW,aAAA,IAAiB,CAAA,EAAG;AACzC,MAAA,OAAA,CAAQ,IAAI,CAAA;AACZ,MAAA;AAAA,IACF;AACA,IAAA,cAAA,CAAe,OAAA,GAAU,MAAA,CAAO,UAAA,CAAW,MAAM;AAC/C,MAAA,IAAI,CAAC,WAAA,CAAY,OAAA,IAAW,CAAC,cAAc,OAAA,EAAS;AACpD,MAAA,OAAA,CAAQ,IAAI,CAAA;AAAA,IACd,GAAG,aAAa,CAAA;AAAA,EAClB,CAAA,EAAG,CAAC,iBAAA,EAAmB,gBAAA,EAAkB,aAAa,CAAC,CAAA;AAEvD,EAAA,MAAM,kBAAA,GAA2B,oBAAY,MAAM;AACjD,IAAA,aAAA,CAAc,OAAA,GAAU,IAAA;AACxB,IAAA,WAAA,CAAY,OAAA,GAAU,KAAA;AACtB,IAAA,aAAA,EAAc;AAAA,EAChB,CAAA,EAAG,CAAC,aAAa,CAAC,CAAA;AAElB,EAAA,MAAM,mBAAA,GAA4B,OAAA,CAAA,WAAA,CAAY,CAAC,CAAA,KAAwB;AACrE,IAAA,CAAA,CAAE,cAAA,EAAe;AAAA,EACnB,CAAA,EAAG,EAAE,CAAA;AAEL,EAAA,MAAM,yBAAA,GAAkC,OAAA,CAAA,WAAA,CAAY,CAAC,CAAA,KAA0B;AAC7E,IAAA,CAAA,CAAE,cAAA,EAAe;AAAA,EACnB,CAAA,EAAG,EAAE,CAAA;AAEL,EAAA,MAAM,kBAAA,GAA2B,OAAA,CAAA,WAAA;AAAA,IAC/B,CAAC,CAAA,KAA6C;AAC5C,MAAA,IAAI,CAAC,sBAAqB,EAAG;AAC3B,QAAA,CAAA,CAAE,cAAA,EAAe;AACjB,QAAA;AAAA,MACF;AACA,MAAA,gBAAA,EAAiB;AACjB,MAAA,iBAAA,EAAkB;AAClB,MAAA,MAAM,OAAO,CAAC,IAAA;AACd,MAAA,SAAA,CAAU,OAAA,GAAU,IAAA;AACpB,MAAA,WAAA,CAAY,OAAA,GAAU,IAAA;AACtB,MAAA,aAAA,CAAc,OAAA,GAAU,IAAA;AACxB,MAAA,OAAA,CAAQ,IAAI,CAAA;AACZ,MAAA,CAAA,CAAE,cAAA,EAAe;AAAA,IACnB,CAAA;AAAA,IACA,CAAC,iBAAA,EAAmB,gBAAA,EAAkB,IAAI;AAAA,GAC5C;AAEA,EAAM,OAAA,CAAA,SAAA;AAAA,IACJ,MAAM,MAAM;AACV,MAAA,gBAAA,EAAiB;AACjB,MAAA,iBAAA,EAAkB;AAAA,IACpB,CAAA;AAAA,IACA,CAAC,mBAAmB,gBAAgB;AAAA,GACtC;AAEA,EAAA,uBACEI,IAAAA,CAAkB,gBAAA,CAAA,IAAA,EAAjB,EAAsB,IAAA,EAAY,cAAc,gBAAA,EAC/C,QAAA,EAAA;AAAA,oBAAAJ,GAAAA;AAAA,MAAkB,gBAAA,CAAA,OAAA;AAAA,MAAjB;AAAA,QACC,GAAA,EAAK,UAAA;AAAA,QACL,OAAA,EAAO,IAAA;AAAA,QACP,OAAA,EAAS,mBAAA;AAAA,QACT,aAAA,EAAe,yBAAA;AAAA,QACf,cAAA,EAAgB,kBAAA;AAAA,QAChB,cAAA,EAAgB,kBAAA;AAAA,QAChB,OAAA,EAAS,kBAAA;AAAA,QAER;AAAA;AAAA,KACH;AAAA,oBACAA,GAAAA,CAAkB,gBAAA,CAAA,MAAA,EAAjB,EACC,QAAA,kBAAAA,GAAAA;AAAA,MAAkB,gBAAA,CAAA,OAAA;AAAA,MAAjB;AAAA,QACC,IAAA;AAAA,QACA,KAAA;AAAA,QACA,UAAA,EAAY,CAAA;AAAA,QACZ,cAAA,EAAgB,kBAAA;AAAA,QAChB,cAAA,EAAgB,kBAAA;AAAA,QAChB,SAAA,EAAW,EAAA;AAAA,UACT,cAAA;AAAA,UACA,+CAAA;AAAA,UACA,iCAAA;AAAA,UACA;AAAA,SACF;AAAA,QAEC,QAAA,EAAA;AAAA;AAAA,KACH,EACF;AAAA,GAAA,EACF,CAAA;AAEJ;ACjPA,IAAM,eAAA,GAAkBE,IAAI,8CAAA,EAAgD;AAAA,EAC1E,QAAA,EAAU;AAAA,IACR,KAAA,EAAO;AAAA,MACL,EAAA,EAAI,oBAAA;AAAA,MACJ,EAAA,EAAI,UAAA;AAAA,MACJ,EAAA,EAAI,SAAA;AAAA,MACJ,EAAA,EAAI;AAAA;AACN,GACF;AAAA,EACA,eAAA,EAAiB;AAAA,IACf,KAAA,EAAO;AAAA;AAEX,CAAC;AAED,IAAM,iBAAA,GAAoBA,IAAI,uCAAA,EAAyC;AAAA,EACrE,QAAA,EAAU;AAAA,IACR,IAAA,EAAM;AAAA,MACJ,OAAA,EAAS,WAAA;AAAA,MACT,EAAA,EAAI,SAAA;AAAA,MACJ,EAAA,EAAI;AAAA;AACN,GACF;AAAA,EACA,eAAA,EAAiB;AAAA,IACf,IAAA,EAAM;AAAA;AAEV,CAAC;AAUD,IAAM,OAAA,GAAgB6B,OAAA,CAAA,UAAA;AAAA,EACpB,CAAC,EAAE,SAAA,EAAW,KAAA,EAAO,IAAI,GAAG,KAAA,IAAS,GAAA,KAAQ;AAC3C,IAAA,MAAM,SAAA,GACJ,EAAA,KAAO,KAAA,KAAU,IAAA,GAAO,IAAA,GAAO,UAAU,IAAA,GAAO,IAAA,GAAO,KAAA,KAAU,IAAA,GAAO,IAAA,GAAO,IAAA,CAAA;AACjF,IAAA,uBACE/B,GAAAA;AAAA,MAAC,SAAA;AAAA,MAAA;AAAA,QACC,GAAA;AAAA,QACA,SAAA,EAAW,GAAG,eAAA,CAAgB,EAAE,OAAO,KAAA,IAAS,EAAA,EAAI,CAAA,EAAG,SAAS,CAAA;AAAA,QAC/D,GAAG;AAAA;AAAA,KACN;AAAA,EAEJ;AACF;AACA,OAAA,CAAQ,WAAA,GAAc,SAAA;AAOtB,IAAM,SAAA,GAAkB+B,OAAA,CAAA,UAAA;AAAA,EACtB,CAAC,EAAE,SAAA,EAAW,MAAM,GAAG,KAAA,IAAS,GAAA,KAAQ;AACtC,IAAA,uBAAO/B,GAAAA,CAAC,GAAA,EAAA,EAAE,GAAA,EAAU,WAAW,EAAA,CAAG,iBAAA,CAAkB,EAAE,IAAA,EAAM,CAAA,EAAG,SAAS,CAAA,EAAI,GAAG,KAAA,EAAO,CAAA;AAAA,EACxF;AACF;AACA,SAAA,CAAU,WAAA,GAAc,WAAA;AAGxB,IAAM,EAAA,GAAW+B,OAAA,CAAA,UAAA;AAAA,EACf,CAAC,EAAE,SAAA,EAAW,GAAG,KAAA,IAAS,GAAA,qBACxB/B,GAAAA,CAAC,OAAA,EAAA,EAAQ,KAAU,KAAA,EAAM,IAAA,EAAK,IAAG,IAAA,EAAK,SAAA,EAAuB,GAAG,KAAA,EAAO;AAE3E;AACA,EAAA,CAAG,WAAA,GAAc,IAAA;ACtDjB,IAAMsB,qBAAAA,GAA6D;AAAA,EACjE,QAAA,EAAU,OAAA;AAAA,EACV,YAAA,EAAc,yDAAA;AAAA,EACd,eAAA,EAAiB,cAAA;AAAA,EACjB,cAAA,EAAgB,aAAA;AAAA,EAChB,UAAA,EAAY,QAAA;AAAA,EACZ,uBAAA,EAAyB,uBAAA;AAAA,EACzB,mBAAA,EAAqB;AACvB,CAAA;AA6CA,SAAS,iBAAA,CAAkB,MAAY,MAAA,EAA0B;AAC/D,EAAA,IAAI,CAAC,MAAA,EAAQ,IAAA,EAAK,EAAG,OAAO,IAAA;AAC5B,EAAA,MAAM,MAAA,GAAS,MAAA,CACZ,KAAA,CAAM,GAAG,EACT,GAAA,CAAI,CAAC,CAAA,KAAM,CAAA,CAAE,MAAK,CAAE,WAAA,EAAa,CAAA,CACjC,OAAO,OAAO,CAAA;AACjB,EAAA,IAAI,CAAC,MAAA,CAAO,MAAA,EAAQ,OAAO,IAAA;AAC3B,EAAA,MAAM,IAAA,GAAO,IAAA,CAAK,IAAA,CAAK,WAAA,EAAY;AACnC,EAAA,MAAM,IAAA,GAAA,CAAQ,IAAA,CAAK,IAAA,IAAQ,EAAA,EAAI,WAAA,EAAY;AAC3C,EAAA,OAAO,MAAA,CAAO,IAAA,CAAK,CAAC,KAAA,KAAU;AAC5B,IAAA,IAAI,MAAM,UAAA,CAAW,GAAG,GAAG,OAAO,IAAA,CAAK,SAAS,KAAK,CAAA;AACrD,IAAA,IAAI,KAAA,CAAM,QAAA,CAAS,IAAI,CAAA,EAAG,OAAO,IAAA,CAAK,UAAA,CAAW,KAAA,CAAM,KAAA,CAAM,CAAA,EAAG,EAAE,CAAC,CAAA;AACnE,IAAA,OAAO,IAAA,KAAS,KAAA;AAAA,EAClB,CAAC,CAAA;AACH;AAEA,SAAS,QAAQ,IAAA,EAAoB;AACnC,EAAA,OAAO,CAAA,EAAG,KAAK,IAAI,CAAA,CAAA,EAAI,KAAK,IAAI,CAAA,CAAA,EAAI,KAAK,YAAY,CAAA,CAAA;AACvD;AAEA,SAAS,WAAW,KAAA,EAA+B;AACjD,EAAA,OACE,OAAO,KAAA,KAAU,QAAA,IACjB,KAAA,IAAS,IAAA,IACT,OAAQ,KAAA,CAAe,IAAA,KAAS,QAAA,IAChC,OAAQ,KAAA,CAAe,IAAA,KAAS,QAAA;AAEpC;AAEA,SAAS,eAAe,KAAA,EAA4B;AAClD,EAAA,MAAM,MAAA,GAAS,MAAM,OAAA,KAAY,MAAA;AAEjC,EAAA,MAAM,UAAA,GAAa,WAAW,KAAA,CAAM,QAAA,KAAa,QAAQ,KAAA,CAAM,OAAA,CAAQ,MAAM,KAAK,CAAA,CAAA;AAClF,EAAA,MAAM,UAAUU,KAAAA,EAAM;AACtB,EAAA,MAAM,wBAAwBA,KAAAA,EAAM;AACpC,EAAA,MAAM,cAAA,GAAiB,UAAU,KAAA,CAAM,QAAA;AACvC,EAAA,MAAM,IAAI,EAAE,GAAGV,qBAAAA,EAAsB,GAAG,MAAM,YAAA,EAAa;AAC3D,EAAA,MAAM,QAAA,GAAWW,OAAgC,IAAI,CAAA;AACrD,EAAA,MAAM,CAAC,UAAA,EAAY,aAAa,CAAA,GAAIC,SAAS,KAAK,CAAA;AAClD,EAAA,MAAM,CAAC,UAAA,EAAY,aAAa,CAAA,GAAIA,SAAwB,IAAI,CAAA;AAEhE,EAAA,MAAM,UAAA,GACJ,UAAU,CAAC,UAAA,IAAc,WAAW,KAAA,CAAM,KAAK,CAAA,GAAK,KAAA,CAAM,KAAA,GAAiB,IAAA;AAC7E,EAAA,MAAM,UAAA,GACJ,UAAA,IAAc,KAAA,CAAM,OAAA,CAAQ,KAAA,CAAM,KAAK,CAAA,GAAK,KAAA,CAAM,KAAA,CAAiB,MAAA,CAAO,UAAU,CAAA,GAAI,EAAC;AAC3F,EAAA,MAAM,MAAA,GAAS,MAAA,GAAS,KAAA,CAAM,MAAA,GAAS,SAAA;AACvC,EAAA,MAAM,aAAA,GAAgB,CAAC,IAAA,KAAsB;AAC3C,IAAA,IAAI,MAAA,IAAU,CAAC,UAAA,EAAY;AACzB,MAAC,KAAA,CAAkC,SAAS,IAAI,CAAA;AAChD,MAAA;AAAA,IACF;AACA,IAAA,IAAI,CAAC,MAAA,EAAQ;AACX,MAAC,KAAA,CAAmC,SAAS,IAAI,CAAA;AACjD,MAAC,KAAA,CAAmC,8BAA8B,KAAK,CAAA;AAAA,IACzE;AAAA,EACF,CAAA;AACA,EAAA,MAAM,aAAA,GAAgB,CAAC,IAAA,KAAiB;AACtC,IAAA,IAAI,UAAA,EAAa,KAAA,CAAuC,QAAA,CAAS,IAAI,CAAA;AAAA,EACvE,CAAA;AAEA,EAAA,MAAM,SAAA,GAAY,CAAC,MAAA,IAAU,UAAA,CAAW,MAAM,KAAK,CAAA,GAAK,MAAM,KAAA,GAAiB,IAAA;AAE/E,EAAAC,UAAU,MAAM;AACd,IAAA,IAAI,MAAA,EAAQ;AACV,MAAA,MAAM,IAAA,GAAO,YAAY,IAAA,IAAQ,EAAA;AACjC,MAAA,IAAI,CAAC,UAAA,IAAc,CAAC,IAAA,CAAK,UAAA,CAAW,QAAQ,CAAA,EAAG;AAC7C,QAAA,aAAA,CAAc,IAAI,CAAA;AAClB,QAAA;AAAA,MACF;AACA,MAAA,MAAMC,QAAAA,GAAU,GAAA,CAAI,eAAA,CAAgB,UAAU,CAAA;AAC9C,MAAA,aAAA,CAAcA,QAAO,CAAA;AACrB,MAAA,OAAO,MAAM,GAAA,CAAI,eAAA,CAAgBA,QAAO,CAAA;AAAA,IAC1C;AACA,IAAA,IAAI,CAAC,SAAA,EAAW;AACd,MAAA,aAAA,CAAc,IAAI,CAAA;AAClB,MAAA;AAAA,IACF;AACA,IAAA,MAAM,OAAA,GAAU,GAAA,CAAI,eAAA,CAAgB,SAAS,CAAA;AAC7C,IAAA,aAAA,CAAc,OAAO,CAAA;AACrB,IAAA,OAAO,MAAM,GAAA,CAAI,eAAA,CAAgB,OAAO,CAAA;AAAA,EAC1C,CAAA,EAAG,CAAC,SAAA,EAAW,MAAA,EAAQ,UAAU,CAAC,CAAA;AAElC,EAAA,MAAM,WAAA,GAAc,CAAC,QAAA,KAAuC;AAC1D,IAAA,IAAI,CAAC,YAAY,cAAA,EAAgB;AACjC,IAAA,MAAM,OAAO,KAAA,CAAM,IAAA,CAAK,QAAQ,CAAA,CAAE,OAAO,UAAU,CAAA;AACnD,IAAA,IAAI,CAAC,KAAK,MAAA,EAAQ;AAElB,IAAA,MAAM,WAAmB,EAAC;AAC1B,IAAA,KAAA,MAAW,QAAQ,IAAA,EAAM;AACvB,MAAA,IAAI,MAAM,YAAA,IAAgB,IAAA,IAAQ,IAAA,CAAK,IAAA,GAAO,MAAM,YAAA,EAAc;AAChE,QAAA,KAAA,CAAM,cAAA,IAAiB;AACvB,QAAA;AAAA,MACF;AACA,MAAA,IAAI,MAAA,EAAQ;AACV,QAAA,IAAI,CAAC,iBAAA,CAAkB,IAAA,EAAM,MAAM,CAAA,EAAG;AACpC,UAAA,KAAA,CAAM,aAAA,IAAgB;AACtB,UAAA;AAAA,QACF;AACA,QAAA,QAAA,CAAS,KAAK,IAAI,CAAA;AAClB,QAAA;AAAA,MACF;AACA,MAAA,IAAI,EAAE,IAAA,CAAK,IAAA,IAAQ,EAAA,EAAI,UAAA,CAAW,QAAQ,CAAA,EAAG;AAC3C,QAAA,KAAA,CAAM,aAAA,IAAgB;AACtB,QAAA;AAAA,MACF;AACA,MAAA,QAAA,CAAS,KAAK,IAAI,CAAA;AAAA,IACpB;AACA,IAAA,IAAI,CAAC,SAAS,MAAA,EAAQ;AAEtB,IAAA,IAAI,UAAA,EAAY;AACd,MAAA,MAAM,OAAO,IAAI,GAAA,CAAI,UAAA,CAAW,GAAA,CAAI,OAAO,CAAC,CAAA;AAC5C,MAAA,MAAM,IAAA,GAAO,CAAC,GAAG,UAAU,CAAA;AAC3B,MAAA,KAAA,MAAW,QAAQ,QAAA,EAAU;AAC3B,QAAA,MAAM,GAAA,GAAM,QAAQ,IAAI,CAAA;AACxB,QAAA,IAAI,IAAA,CAAK,GAAA,CAAI,GAAG,CAAA,EAAG;AACnB,QAAA,IAAA,CAAK,IAAI,GAAG,CAAA;AACZ,QAAA,IAAA,CAAK,KAAK,IAAI,CAAA;AAAA,MAChB;AACA,MAAA,aAAA,CAAc,IAAI,CAAA;AAClB,MAAA;AAAA,IACF;AAEA,IAAA,aAAA,CAAc,QAAA,CAAS,CAAC,CAAA,IAAK,IAAI,CAAA;AAAA,EACnC,CAAA;AAEA,EAAA,MAAM,UAAA,GAAa,CAAC,MAAA,GAAU,KAAA,GAAqC,IAAA;AACnE,EAAA,MAAM,iBACJ,UAAA,KACC,UAAA,KAAe,CAAC,UAAA,CAAW,mBAAA,GAAsB,WAAW,gBAAA,GAAmB,MAAA,CAAA,CAAA;AAElF,EAAA,MAAM,aAAA,GAAgB,EAAA;AAAA,IACpB,gFAAA;AAAA,IACA,cAAA,IAAkB,gCAAA;AAAA,IAClB,CAAC,cAAA,IAAkB,0DAAA;AAAA,IACnB,aAAa,gCAAA,GAAmC;AAAA,GAClD;AAEA,EAAA,MAAM,WAAA,GAAc,MAAA,GAAS,CAAA,CAAE,cAAA,GAAiB,CAAA,CAAE,eAAA;AAElD,EAAA,uBACEhC,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,EAAA,CAAG,aAAa,MAAA,GAAS,KAAA,CAAM,SAAA,GAAY,MAAS,CAAA,EAClE,QAAA,EAAA;AAAA,oBAAAA,IAAAA;AAAA,MAAC,OAAA;AAAA,MAAA;AAAA,QACC,OAAA,EAAS,iBAAiB,MAAA,GAAY,OAAA;AAAA,QACtC,SAAA,EAAW,aAAA;AAAA,QACX,UAAA,EAAY,CAAC,KAAA,KAAU;AACrB,UAAA,KAAA,CAAM,cAAA,EAAe;AACrB,UAAA,IAAI,cAAA,EAAgB;AACpB,UAAA,aAAA,CAAc,IAAI,CAAA;AAAA,QACpB,CAAA;AAAA,QACA,WAAA,EAAa,MAAM,aAAA,CAAc,KAAK,CAAA;AAAA,QACtC,MAAA,EAAQ,CAAC,KAAA,KAAU;AACjB,UAAA,KAAA,CAAM,cAAA,EAAe;AACrB,UAAA,aAAA,CAAc,KAAK,CAAA;AACnB,UAAA,IAAI,cAAA,EAAgB;AACpB,UAAA,WAAA,CAAY,KAAA,CAAM,aAAa,KAAK,CAAA;AAAA,QACtC,CAAA;AAAA,QAEA,QAAA,EAAA;AAAA,0BAAAJ,GAAAA;AAAA,YAAC,OAAA;AAAA,YAAA;AAAA,cACC,EAAA,EAAI,OAAA;AAAA,cACJ,GAAA,EAAK,QAAA;AAAA,cACL,IAAA,EAAK,MAAA;AAAA,cACL,MAAA;AAAA,cACA,UAAU,UAAA,IAAc,MAAA;AAAA,cACxB,UAAU,cAAA,IAAkB,MAAA;AAAA,cAC5B,SAAA,EAAU,SAAA;AAAA,cACV,QAAA,EAAU,CAAC,KAAA,KAAU;AACnB,gBAAA,WAAA,CAAY,KAAA,CAAM,OAAO,KAAK,CAAA;AAC9B,gBAAA,KAAA,CAAM,OAAO,KAAA,GAAQ,EAAA;AAAA,cACvB;AAAA;AAAA,WACF;AAAA,UACC,MAAA,mBACCI,IAAAA,CAAC,KAAA,EAAA,EAAI,WAAU,oIAAA,EACZ,QAAA,EAAA;AAAA,YAAA,UAAA,mBACCJ,GAAAA;AAAA,cAAC,OAAA;AAAA,cAAA;AAAA,gBACC,GAAA,EAAK,UAAA;AAAA,gBACL,QAAA,EAAQ,IAAA;AAAA,gBACR,SAAA,EAAU;AAAA;AAAA,gCAGZA,GAAAA,CAAC,YAAS,SAAA,EAAU,wCAAA,EAAyC,eAAW,IAAA,EAAC,CAAA;AAAA,YAE1E,UAAA,GACC,UAAA,CAAW,MAAA,GAAS,CAAA,mBAClBA,GAAAA,CAAC,IAAA,EAAA,EAAG,SAAA,EAAU,8BAAA,EACX,QAAA,EAAA,UAAA,CAAW,GAAA,CAAI,CAAC,yBACfI,IAAAA;AAAA,cAAC,IAAA;AAAA,cAAA;AAAA,gBAEC,SAAA,EAAU,yFAAA;AAAA,gBAEV,QAAA,EAAA;AAAA,kCAAAJ,GAAAA;AAAA,oBAAC,QAAA;AAAA,oBAAA;AAAA,sBACC,SAAA,EAAU,4CAAA;AAAA,sBACV,aAAA,EAAW;AAAA;AAAA,mBACb;AAAA,kCACAA,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,6CAAA,EACb,eAAK,IAAA,EACR,CAAA;AAAA,kCACAA,GAAAA;AAAA,oBAAC,MAAA;AAAA,oBAAA;AAAA,sBACC,IAAA,EAAK,QAAA;AAAA,sBACL,IAAA,EAAK,IAAA;AAAA,sBACL,OAAA,EAAQ,OAAA;AAAA,sBACR,SAAA,EAAU,sBAAA;AAAA,sBACV,UAAU,cAAA,IAAkB,MAAA;AAAA,sBAC5B,cAAY,CAAA,EAAG,CAAA,CAAE,mBAAmB,CAAA,CAAA,EAAI,KAAK,IAAI,CAAA,CAAA;AAAA,sBACjD,OAAA,EAAS,CAAC,KAAA,KAAU;AAClB,wBAAA,KAAA,CAAM,cAAA,EAAe;AACrB,wBAAA,KAAA,CAAM,eAAA,EAAgB;AACtB,wBAAA,aAAA,CAAc,UAAA,CAAW,MAAA,CAAO,CAAC,CAAA,KAAM,OAAA,CAAQ,CAAC,CAAA,KAAM,OAAA,CAAQ,IAAI,CAAC,CAAC,CAAA;AAAA,sBACtE,CAAA;AAAA,sBAEA,0BAAAA,GAAAA,CAACyB,CAAAA,EAAA,EAAE,SAAA,EAAU,aAAA,EAAc,eAAW,IAAA,EAAC;AAAA;AAAA;AACzC;AAAA,eAAA;AAAA,cAxBK,QAAQ,IAAI;AAAA,aA0BpB,CAAA,EACH,CAAA,GACE,IAAA,GACF,UAAA,mBACFzB,GAAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAU,mDAAA,EAAqD,QAAA,EAAA,UAAA,CAAW,IAAA,EAAK,CAAA,GAChF;AAAA,WAAA,EACN,CAAA,GACE,iCACFA,GAAAA;AAAA,YAAC,KAAA;AAAA,YAAA;AAAA,cACC,GAAA,EAAK,cAAA;AAAA,cACL,KAAK,CAAA,CAAE,QAAA;AAAA,cACP,SAAA,EAAU;AAAA;AAAA,WACZ,mBAEAA,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,2FAAA,EACb,QAAA,kBAAAA,GAAAA,CAAC,SAAA,EAAA,EAAU,SAAA,EAAU,+BAAA,EAAgC,aAAA,EAAW,MAAC,CAAA,EACnE,CAAA;AAAA,0BAGFI,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,oEAAA,EACb,QAAA,EAAA;AAAA,4BAAAJ,GAAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAU,+BAAA,EAAiC,YAAE,YAAA,EAAa,CAAA;AAAA,4BAC7DI,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,sBAAA,EACb,QAAA,EAAA;AAAA,8BAAAA,IAAAA;AAAA,gBAAC,MAAA;AAAA,gBAAA;AAAA,kBACC,IAAA,EAAK,QAAA;AAAA,kBACL,IAAA,EAAK,IAAA;AAAA,kBACL,OAAA,EAAQ,SAAA;AAAA,kBACR,UAAU,cAAA,IAAkB,MAAA;AAAA,kBAC5B,OAAA,EAAS,CAAC,KAAA,KAAU;AAClB,oBAAA,KAAA,CAAM,cAAA,EAAe;AACrB,oBAAA,QAAA,CAAS,SAAS,KAAA,EAAM;AAAA,kBAC1B,CAAA;AAAA,kBAEA,QAAA,EAAA;AAAA,oCAAAJ,GAAAA,CAAC,WAAA,EAAA,EAAY,SAAA,EAAU,cAAA,EAAe,eAAW,IAAA,EAAC,CAAA;AAAA,oBACjD;AAAA;AAAA;AAAA,eACH;AAAA,cACC,CAAC,UAAA,IAAc,MAAA,IAAU,UAAA,mBACxBA,GAAAA;AAAA,gBAAC,MAAA;AAAA,gBAAA;AAAA,kBACC,IAAA,EAAK,QAAA;AAAA,kBACL,IAAA,EAAK,IAAA;AAAA,kBACL,OAAA,EAAQ,SAAA;AAAA,kBACR,UAAU,cAAA,IAAkB,MAAA;AAAA,kBAC5B,OAAA,EAAS,CAAC,KAAA,KAAU;AAClB,oBAAA,KAAA,CAAM,cAAA,EAAe;AACrB,oBAAA,KAAA,CAAM,eAAA,EAAgB;AACtB,oBAAA,aAAA,CAAc,IAAI,CAAA;AAAA,kBACpB,CAAA;AAAA,kBAEC,QAAA,EAAA,CAAA,CAAE;AAAA;AAAA,eACL,GACE,IAAA;AAAA,cACH,UAAA,IAAc,UAAA,CAAW,MAAA,GAAS,CAAA,mBACjCA,GAAAA;AAAA,gBAAC,MAAA;AAAA,gBAAA;AAAA,kBACC,IAAA,EAAK,QAAA;AAAA,kBACL,IAAA,EAAK,IAAA;AAAA,kBACL,OAAA,EAAQ,SAAA;AAAA,kBACR,UAAU,cAAA,IAAkB,MAAA;AAAA,kBAC5B,OAAA,EAAS,CAAC,KAAA,KAAU;AAClB,oBAAA,KAAA,CAAM,cAAA,EAAe;AACrB,oBAAA,KAAA,CAAM,eAAA,EAAgB;AACtB,oBAAA,aAAA,CAAc,EAAE,CAAA;AAAA,kBAClB,CAAA;AAAA,kBAEC,QAAA,EAAA,CAAA,CAAE;AAAA;AAAA,eACL,GACE;AAAA,aAAA,EACN;AAAA,WAAA,EACF;AAAA;AAAA;AAAA,KACF;AAAA,IAEC,UAAA,EAAY,gBAAA,IACb,UAAA,CAAW,2BAAA,IACX,CAAA,CAAE,0CACAI,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,4FAAA,EACb,QAAA,EAAA;AAAA,sBAAAJ,IAAC,MAAA,EAAA,EAAK,SAAA,EAAU,iCAAgC,EAAA,EAAI,qBAAA,EACjD,YAAE,uBAAA,EACL,CAAA;AAAA,sBACAA,GAAAA;AAAA,QAAC,QAAA;AAAA,QAAA;AAAA,UACC,iBAAA,EAAiB,qBAAA;AAAA,UACjB,SAAS,UAAA,CAAW,mBAAA;AAAA,UACpB,iBAAiB,CAAC,OAAA,KAChB,UAAA,CAAW,2BAAA,GAA8B,YAAY,IAAI;AAAA;AAAA;AAE7D,KAAA,EACF,CAAA,GACE;AAAA,GAAA,EACN,CAAA;AAEJ","file":"chunk-FJUWTB3A.js","sourcesContent":["import { cva, type VariantProps } from 'class-variance-authority';\nimport type * as React from 'react';\n\nimport { cn } from '../../../lib/utils';\n\nconst alertVariants = cva(\n 'relative w-full rounded-xl border border-border/45 px-4 py-3 text-sm grid has-[>svg]:grid-cols-[calc(var(--spacing)*4)_1fr] grid-cols-[0_1fr] has-[>svg]:gap-x-3 gap-y-0.5 items-start shadow-[var(--shadow-surface)] [&>svg]:size-4 [&>svg]:translate-y-0.5 [&>svg]:text-current',\n {\n variants: {\n variant: {\n default:\n 'bg-card text-card-foreground *:data-[slot=alert-description]:text-muted-foreground',\n destructive:\n 'bg-destructive/90 dark:bg-destructive text-destructive-foreground border-destructive/50 dark:border-destructive/70 [&>svg]:text-destructive-foreground *:data-[slot=alert-description]:text-destructive-foreground',\n },\n },\n defaultVariants: {\n variant: 'default',\n },\n },\n);\n\nfunction Alert({\n className,\n variant,\n ...props\n}: React.ComponentProps<'div'> & VariantProps<typeof alertVariants>) {\n return (\n <div\n data-slot=\"alert\"\n role=\"alert\"\n className={cn(alertVariants({ variant }), className)}\n {...props}\n />\n );\n}\n\nfunction AlertDescription({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"alert-description\"\n className={cn(\n 'col-start-2 grid justify-items-start gap-1 text-sm [&_p]:leading-relaxed',\n className,\n )}\n {...props}\n />\n );\n}\n\nexport { Alert, AlertDescription };\n","import * as AlertDialogPrimitive from '@radix-ui/react-alert-dialog';\nimport * as React from 'react';\n\nimport { surfaceOverlay } from '../../../lib/surfaces';\nimport { cn } from '../../../lib/utils';\nimport { buttonVariants } from '../button';\n\nconst AlertDialog = AlertDialogPrimitive.Root;\n\nconst AlertDialogTrigger = AlertDialogPrimitive.Trigger;\n\nconst AlertDialogPortal = AlertDialogPrimitive.Portal;\n\nconst AlertDialogOverlay = React.forwardRef<\n React.ElementRef<typeof AlertDialogPrimitive.Overlay>,\n React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Overlay>\n>(({ className, ...props }, ref) => (\n <AlertDialogPrimitive.Overlay\n className={cn(\n 'fixed inset-0 z-110 bg-foreground/20 backdrop-blur-[2px] data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0',\n className,\n )}\n {...props}\n ref={ref}\n />\n));\nAlertDialogOverlay.displayName = AlertDialogPrimitive.Overlay.displayName;\n\ninterface AlertDialogContentProps\n extends React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Content> {\n /** When set, clicking the overlay calls this (e.g. to close when opened from a drawer). */\n onOverlayClick?: () => void;\n /** Optional extra classes for the overlay (e.g. to raise z-index). */\n overlayClassName?: string;\n}\n\nconst AlertDialogContent = React.forwardRef<\n React.ElementRef<typeof AlertDialogPrimitive.Content>,\n AlertDialogContentProps\n>(({ className, onOverlayClick, overlayClassName, ...props }, ref) => (\n <AlertDialogPortal>\n <AlertDialogOverlay onClick={onOverlayClick} className={overlayClassName} />\n <AlertDialogPrimitive.Content\n ref={ref}\n className={cn(\n surfaceOverlay,\n 'bg-background fixed left-[50%] top-[50%] z-110 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 p-6 duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%]',\n className,\n )}\n {...props}\n />\n </AlertDialogPortal>\n));\nAlertDialogContent.displayName = AlertDialogPrimitive.Content.displayName;\n\nconst AlertDialogHeader = ({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) => (\n <div className={cn('flex flex-col space-y-2 text-center sm:text-left', className)} {...props} />\n);\nAlertDialogHeader.displayName = 'AlertDialogHeader';\n\nconst AlertDialogFooter = ({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) => (\n <div\n className={cn('flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2', className)}\n {...props}\n />\n);\nAlertDialogFooter.displayName = 'AlertDialogFooter';\n\nconst AlertDialogTitle = React.forwardRef<\n React.ElementRef<typeof AlertDialogPrimitive.Title>,\n React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Title>\n>(({ className, ...props }, ref) => (\n <AlertDialogPrimitive.Title\n ref={ref}\n className={cn('text-lg font-semibold', className)}\n {...props}\n />\n));\nAlertDialogTitle.displayName = AlertDialogPrimitive.Title.displayName;\n\nconst AlertDialogDescription = React.forwardRef<\n React.ElementRef<typeof AlertDialogPrimitive.Description>,\n React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Description>\n>(({ className, ...props }, ref) => (\n <AlertDialogPrimitive.Description\n ref={ref}\n className={cn('text-sm text-muted-foreground', className)}\n {...props}\n />\n));\nAlertDialogDescription.displayName = AlertDialogPrimitive.Description.displayName;\n\nconst AlertDialogAction = React.forwardRef<\n React.ElementRef<typeof AlertDialogPrimitive.Action>,\n React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Action>\n>(({ className, ...props }, ref) => (\n <AlertDialogPrimitive.Action\n ref={ref}\n data-slot=\"alert-dialog-action\"\n className={cn(buttonVariants(), className)}\n {...props}\n />\n));\nAlertDialogAction.displayName = AlertDialogPrimitive.Action.displayName;\n\nconst AlertDialogCancel = React.forwardRef<\n React.ElementRef<typeof AlertDialogPrimitive.Cancel>,\n React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Cancel>\n>(({ className, ...props }, ref) => (\n <AlertDialogPrimitive.Cancel\n ref={ref}\n data-slot=\"alert-dialog-cancel\"\n className={cn(buttonVariants({ variant: 'outline' }), 'mt-2 sm:mt-0', className)}\n {...props}\n />\n));\nAlertDialogCancel.displayName = AlertDialogPrimitive.Cancel.displayName;\n\nexport {\n AlertDialog,\n AlertDialogAction,\n AlertDialogCancel,\n AlertDialogContent,\n AlertDialogDescription,\n AlertDialogFooter,\n AlertDialogHeader,\n AlertDialogOverlay,\n AlertDialogPortal,\n AlertDialogTitle,\n AlertDialogTrigger,\n};\n","import * as AvatarPrimitive from '@radix-ui/react-avatar';\nimport * as React from 'react';\n\nimport { cn } from '../../../lib/utils';\n\nconst Avatar = React.forwardRef<\n React.ElementRef<typeof AvatarPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof AvatarPrimitive.Root>\n>(({ className, ...props }, ref) => (\n <AvatarPrimitive.Root\n ref={ref}\n className={cn('relative flex h-10 w-10 shrink-0 overflow-hidden rounded-full', className)}\n {...props}\n />\n));\nAvatar.displayName = AvatarPrimitive.Root.displayName;\n\nconst AvatarImage = React.forwardRef<\n React.ElementRef<typeof AvatarPrimitive.Image>,\n React.ComponentPropsWithoutRef<typeof AvatarPrimitive.Image>\n>(({ className, ...props }, ref) => (\n <AvatarPrimitive.Image\n ref={ref}\n className={cn('aspect-square h-full w-full', className)}\n {...props}\n />\n));\nAvatarImage.displayName = AvatarPrimitive.Image.displayName;\n\nconst AvatarFallback = React.forwardRef<\n React.ElementRef<typeof AvatarPrimitive.Fallback>,\n React.ComponentPropsWithoutRef<typeof AvatarPrimitive.Fallback>\n>(({ className, ...props }, ref) => (\n <AvatarPrimitive.Fallback\n ref={ref}\n className={cn(\n 'flex h-full w-full items-center justify-center rounded-full bg-muted',\n className,\n )}\n {...props}\n />\n));\nAvatarFallback.displayName = AvatarPrimitive.Fallback.displayName;\n\nexport { Avatar, AvatarFallback, AvatarImage };\n","import { cva, type VariantProps } from 'class-variance-authority';\nimport type * as React from 'react';\n\nimport { cn } from '../../../lib/utils';\n\nconst badgeVariants = cva(\n 'inline-flex items-center rounded-full border px-2.5 py-0.5 text-xs font-semibold whitespace-nowrap transition-colors',\n {\n variants: {\n variant: {\n default: 'border-transparent bg-primary text-primary-foreground hover:bg-primary/80',\n secondary:\n 'border-transparent bg-secondary text-secondary-foreground hover:bg-secondary/80',\n destructive: 'border-transparent bg-destructive text-white hover:bg-destructive/80',\n outline: 'border-border/50 text-foreground bg-background/80',\n },\n },\n defaultVariants: {\n variant: 'default',\n },\n },\n);\n\nfunction Badge({\n className,\n variant,\n ...props\n}: React.ComponentProps<'span'> & VariantProps<typeof badgeVariants>) {\n return (\n <span data-slot=\"badge\" className={cn(badgeVariants({ variant }), className)} {...props} />\n );\n}\n\nexport { Badge, badgeVariants };\n","import { ChevronLeft, ChevronRight } from 'lucide-react';\nimport { type DateRange, DayPicker, type DayPickerProps } from 'react-day-picker';\n\nimport { cn } from '../../../lib/utils';\nimport { buttonVariants } from '../button';\n\nexport type { DateRange };\n\nexport type CalendarProps = DayPickerProps;\n\nfunction Calendar({\n className,\n classNames,\n showOutsideDays = true,\n weekStartsOn,\n ...props\n}: CalendarProps) {\n return (\n <DayPicker\n data-slot=\"calendar\"\n showOutsideDays={showOutsideDays}\n weekStartsOn={weekStartsOn ?? 1}\n navLayout=\"around\"\n className={cn('p-3', className)}\n classNames={{\n months:\n 'flex flex-col items-stretch justify-center gap-4 sm:flex-row sm:items-start sm:gap-6',\n month: 'relative min-w-0 space-y-3',\n month_caption: 'flex items-center justify-center w-full h-9 pt-1 px-10',\n caption_label: 'text-sm font-medium text-center pointer-events-none',\n nav: 'contents',\n button_previous: cn(\n buttonVariants({ variant: 'outline', size: 'icon-sm' }),\n 'absolute left-0 top-1 z-10 h-8 w-8 bg-transparent p-0 opacity-70 hover:opacity-100',\n ),\n button_next: cn(\n buttonVariants({ variant: 'outline', size: 'icon-sm' }),\n 'absolute right-0 top-1 z-10 h-8 w-8 bg-transparent p-0 opacity-70 hover:opacity-100',\n ),\n month_grid: 'w-full border-collapse',\n weekdays: '',\n weekday: 'text-muted-foreground w-10 rounded-md font-normal text-[0.75rem] text-center p-1',\n weeks: 'mt-1',\n week: '',\n day: 'relative h-10 w-10 text-center text-sm p-0 align-top focus-within:relative focus-within:z-20',\n day_button: cn(\n 'day-button inline-flex size-10 items-center justify-center rounded-md text-sm font-normal transition-colors cursor-pointer',\n 'hover:bg-accent hover:text-accent-foreground',\n 'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring',\n 'aria-disabled:text-muted-foreground/60 aria-disabled:opacity-50 aria-disabled:cursor-not-allowed',\n ),\n selected:\n 'bg-primary/10 text-primary [&_.day-button]:bg-primary [&_.day-button]:text-primary-foreground',\n today:\n 'text-primary [&_.day-button]:border [&_.day-button]:border-primary [&_.day-button]:rounded-md [&.selected]:bg-primary [&.selected]:text-primary-foreground',\n outside:\n 'text-muted-foreground/60 [&.selected]:bg-accent/40 [&.selected]:text-accent-foreground',\n range_middle:\n 'bg-primary/15 text-foreground [&_.day-button]:bg-primary/15 [&_.day-button]:text-foreground [&_.day-button]:rounded-none',\n range_end:\n 'rounded-r-md text-primary-foreground [&_.day-button]:bg-primary [&_.day-button]:text-primary-foreground [&_.day-button]:rounded-r-md [&_.day-button]:rounded-l-none [&.range_start_.day-button]:!rounded-md',\n range_start:\n 'rounded-l-md text-primary-foreground [&_.day-button]:bg-primary [&_.day-button]:text-primary-foreground [&_.day-button]:rounded-l-md [&_.day-button]:rounded-r-none [&.range_end_.day-button]:!rounded-md',\n disabled: 'text-muted-foreground/60 opacity-50 [&_.day-button]:cursor-not-allowed',\n ...classNames,\n }}\n components={{\n Chevron: ({ orientation }) =>\n orientation === 'left' ? (\n <ChevronLeft className=\"size-4\" aria-hidden />\n ) : (\n <ChevronRight className=\"size-4\" aria-hidden />\n ),\n }}\n {...props}\n />\n );\n}\n\nexport { Calendar };\n","import * as CheckboxPrimitive from '@radix-ui/react-checkbox';\nimport { Check } from 'lucide-react';\nimport * as React from 'react';\n\nimport { controlFocus, controlInvalid } from '../../../lib/surfaces';\nimport { cn } from '../../../lib/utils';\n\nconst Checkbox = React.forwardRef<\n React.ComponentRef<typeof CheckboxPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof CheckboxPrimitive.Root>\n>(({ className, ...props }, ref) => (\n <CheckboxPrimitive.Root\n ref={ref}\n data-slot=\"checkbox\"\n className={cn(\n 'peer size-4 shrink-0 rounded-[5px] border border-border/55 bg-muted/30 shadow-[var(--shadow-surface)] transition-colors',\n controlFocus,\n controlInvalid,\n 'cursor-pointer disabled:cursor-not-allowed disabled:opacity-50',\n 'data-[state=checked]:bg-primary data-[state=checked]:border-primary data-[state=checked]:text-primary-foreground',\n 'data-[state=indeterminate]:bg-primary data-[state=indeterminate]:border-primary data-[state=indeterminate]:text-primary-foreground',\n className,\n )}\n {...props}\n >\n <CheckboxPrimitive.Indicator className=\"flex items-center justify-center text-current\">\n <Check className=\"size-2.5\" strokeWidth={3} />\n </CheckboxPrimitive.Indicator>\n </CheckboxPrimitive.Root>\n));\nCheckbox.displayName = CheckboxPrimitive.Root.displayName;\n\nexport { Checkbox };\n","import { Loader2 } from 'lucide-react';\nimport { useRef } from 'react';\n\nimport { cn } from '../../../lib/utils';\nimport {\n AlertDialog,\n AlertDialogAction,\n AlertDialogCancel,\n AlertDialogContent,\n AlertDialogDescription,\n AlertDialogFooter,\n AlertDialogHeader,\n AlertDialogTitle,\n} from '../alert-dialog';\n\nexport interface ConfirmDialogProps {\n open: boolean;\n onOpenChange: (open: boolean) => void;\n title: string;\n description: string;\n /** Optional note shown below the description (e.g. policy or retention info) */\n descriptionNote?: string;\n cancelLabel?: string;\n confirmLabel: string;\n variant?: 'default' | 'destructive';\n onConfirm: () => void;\n isPending?: boolean;\n /** Accessibility: describe the action for screen readers */\n confirmAriaLabel?: string;\n className?: string;\n /** When true, clicking outside the dialog (e.g. overlay) closes it. Useful when dialog is opened from a drawer. */\n closeOnOutsideClick?: boolean;\n}\n\n/**\n * A reusable confirmation dialog for destructive or important actions.\n * By default uses AlertDialog so Escape does not accidentally dismiss.\n * Enter focuses and activates the confirm action (not cancel).\n * Set closeOnOutsideClick to allow closing when opened from a drawer or when overlay click is desired.\n * Mobile-friendly: stacks buttons vertically on small screens.\n */\nexport function ConfirmDialog({\n open,\n onOpenChange,\n title,\n description,\n descriptionNote,\n cancelLabel = 'Cancel',\n confirmLabel,\n variant = 'default',\n onConfirm,\n isPending = false,\n confirmAriaLabel,\n className,\n closeOnOutsideClick = false,\n}: ConfirmDialogProps) {\n const confirmRef = useRef<HTMLButtonElement>(null);\n const isDestructive = variant === 'destructive';\n const confirmClassName = isDestructive\n ? 'bg-destructive text-destructive-foreground hover:bg-destructive/90 focus-visible:ring-destructive/20'\n : undefined;\n\n const handleConfirm = () => {\n if (isPending) return;\n onConfirm();\n };\n\n return (\n <AlertDialog open={open} onOpenChange={onOpenChange}>\n <AlertDialogContent\n data-slot=\"confirm-dialog-content\"\n className={cn('gap-4 sm:gap-6', className)}\n onOpenAutoFocus={(event) => {\n event.preventDefault();\n confirmRef.current?.focus();\n }}\n onKeyDown={(event) => {\n if (event.key !== 'Enter' || isPending) return;\n const target = event.target as HTMLElement;\n if (target.closest('[data-slot=\"alert-dialog-cancel\"]')) return;\n if (target.closest('[data-slot=\"alert-dialog-action\"]')) return;\n event.preventDefault();\n handleConfirm();\n }}\n {...(closeOnOutsideClick && {\n onOverlayClick: () => onOpenChange(false),\n })}\n >\n <AlertDialogHeader className=\"gap-2\">\n <AlertDialogTitle className=\"text-base sm:text-lg\">{title}</AlertDialogTitle>\n <div className=\"space-y-2\">\n <AlertDialogDescription className=\"text-sm\">{description}</AlertDialogDescription>\n {descriptionNote && <p className=\"text-sm text-muted-foreground\">{descriptionNote}</p>}\n </div>\n </AlertDialogHeader>\n <AlertDialogFooter className=\"flex flex-col-reverse gap-2 pt-2 sm:flex-row sm:justify-end sm:gap-2 sm:pt-0\">\n <AlertDialogCancel\n onClick={() => onOpenChange(false)}\n disabled={isPending}\n className=\"m-0 w-full sm:w-auto\"\n >\n {cancelLabel}\n </AlertDialogCancel>\n <AlertDialogAction\n ref={confirmRef}\n onClick={handleConfirm}\n disabled={isPending}\n aria-label={confirmAriaLabel ?? confirmLabel}\n className={cn('m-0 w-full sm:w-auto', confirmClassName)}\n >\n {isPending && <Loader2 className=\"h-4 w-4 animate-spin\" aria-hidden />}\n {confirmLabel}\n </AlertDialogAction>\n </AlertDialogFooter>\n </AlertDialogContent>\n </AlertDialog>\n );\n}\n","import * as PopoverPrimitive from '@radix-ui/react-popover';\nimport type * as React from 'react';\n\nimport { surfaceOverlay } from '../../../lib/surfaces';\nimport { cn } from '../../../lib/utils';\n\nfunction Popover({ ...props }: React.ComponentProps<typeof PopoverPrimitive.Root>) {\n return <PopoverPrimitive.Root data-slot=\"popover\" {...props} />;\n}\n\nfunction PopoverTrigger({ ...props }: React.ComponentProps<typeof PopoverPrimitive.Trigger>) {\n return <PopoverPrimitive.Trigger data-slot=\"popover-trigger\" {...props} />;\n}\n\nfunction PopoverAnchor({ ...props }: React.ComponentProps<typeof PopoverPrimitive.Anchor>) {\n return <PopoverPrimitive.Anchor data-slot=\"popover-anchor\" {...props} />;\n}\n\nfunction PopoverContent({\n className,\n align = 'start',\n sideOffset = 4,\n collisionPadding = 16,\n sticky = 'always',\n avoidCollisions = true,\n ...props\n}: React.ComponentProps<typeof PopoverPrimitive.Content>) {\n return (\n <PopoverPrimitive.Portal>\n <PopoverPrimitive.Content\n data-slot=\"popover-content\"\n align={align}\n sideOffset={sideOffset}\n collisionPadding={collisionPadding}\n sticky={sticky}\n avoidCollisions={avoidCollisions}\n className={cn(\n surfaceOverlay,\n 'z-110 w-auto min-w-48 p-3 outline-none',\n 'data-[state=open]:animate-in data-[state=closed]:animate-out',\n 'data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0',\n 'data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95',\n 'data-[side=bottom]:slide-in-from-top-2',\n 'data-[side=top]:slide-in-from-bottom-2',\n 'data-[side=left]:slide-in-from-right-2',\n 'data-[side=right]:slide-in-from-left-2',\n className,\n )}\n {...props}\n />\n </PopoverPrimitive.Portal>\n );\n}\n\nexport { Popover, PopoverAnchor, PopoverContent, PopoverTrigger };\n","import type { Locale } from 'date-fns';\nimport { format } from 'date-fns';\nimport { Calendar as CalendarIcon } from 'lucide-react';\nimport * as React from 'react';\n\nimport { DISPLAY_FORMAT, normalizeDate } from '../../../lib/dates';\nimport { controlBase, controlFocus } from '../../../lib/surfaces';\nimport { cn } from '../../../lib/utils';\nimport { Calendar } from '../calendar';\nimport { Input } from '../input';\nimport { Popover, PopoverContent, PopoverTrigger } from '../popover';\n\nexport interface DatePickerProps {\n value: Date | undefined;\n onChange: (date: Date | undefined) => void;\n /** Minimum selectable date (inclusive). */\n minDate?: Date;\n /** Maximum selectable date (inclusive). */\n maxDate?: Date;\n placeholder?: string;\n disabled?: boolean;\n /** Locale for calendar and formatting (e.g. from date-fns/locale). */\n locale?: Locale;\n className?: string;\n 'aria-label'?: string;\n}\n\nexport function DatePicker({\n value,\n onChange,\n minDate,\n maxDate,\n placeholder = 'Pick a date',\n disabled = false,\n locale,\n className,\n 'aria-label': ariaLabel,\n}: DatePickerProps) {\n const [open, setOpen] = React.useState(false);\n const normalizedMin = normalizeDate(minDate);\n const normalizedMax = normalizeDate(maxDate);\n\n const formatOpts = React.useMemo(() => (locale ? { locale } : undefined), [locale]);\n\n const disabledMatchers = React.useMemo(() => {\n const toStartOfDay = (d: Date) => {\n const copy = new Date(d);\n copy.setHours(0, 0, 0, 0);\n return copy.getTime();\n };\n const matchers: Array<(date: Date) => boolean> = [];\n if (normalizedMin) {\n matchers.push((date: Date) => toStartOfDay(date) < toStartOfDay(normalizedMin!));\n }\n if (normalizedMax) {\n matchers.push((date: Date) => toStartOfDay(date) > toStartOfDay(normalizedMax!));\n }\n return matchers;\n }, [normalizedMin, normalizedMax]);\n\n const handleSelect = (date: Date | undefined) => {\n const day = date ? normalizeDate(date) : undefined;\n onChange(day ?? undefined);\n setOpen(false);\n };\n\n return (\n <Popover modal={false} open={open} onOpenChange={setOpen}>\n <PopoverTrigger asChild>\n <div\n role=\"button\"\n tabIndex={disabled ? -1 : 0}\n onKeyDown={(e) => {\n if (!disabled && (e.key === 'Enter' || e.key === ' ')) {\n e.preventDefault();\n setOpen((o) => !o);\n }\n }}\n className={cn(\n controlBase,\n controlFocus,\n 'flex w-full cursor-pointer items-center overflow-hidden',\n disabled && 'pointer-events-none opacity-50',\n className,\n )}\n >\n <span className=\"flex h-9 w-9 shrink-0 items-center justify-center border-r border-border/40 bg-muted/25 text-muted-foreground\">\n <CalendarIcon className=\"size-4\" aria-hidden />\n </span>\n <Input\n type=\"text\"\n readOnly\n value={value ? format(value, DISPLAY_FORMAT, formatOpts) : ''}\n placeholder={placeholder}\n onClick={() => !disabled && setOpen(true)}\n className={cn(\n 'h-9 min-w-0 flex-1 cursor-pointer rounded-l-none border-0 bg-transparent py-2 pl-3 pr-3 text-base shadow-none focus-visible:ring-0 md:text-sm capitalize',\n !value && 'text-muted-foreground',\n )}\n aria-label={ariaLabel}\n />\n </div>\n </PopoverTrigger>\n <PopoverContent className=\"w-auto p-0 z-[120]\" align=\"start\">\n <Calendar\n mode=\"single\"\n selected={value}\n onSelect={handleSelect}\n disabled={(date) => disabledMatchers.some((m) => m(date))}\n locale={locale}\n />\n </PopoverContent>\n </Popover>\n );\n}\n","import * as React from 'react';\n\nconst InsideModalScrollLockContext = React.createContext(false);\n\nexport function InsideModalScrollLockProvider({\n children,\n active = true,\n}: {\n children: React.ReactNode;\n active?: boolean;\n}) {\n return (\n <InsideModalScrollLockContext.Provider value={active}>\n {children}\n </InsideModalScrollLockContext.Provider>\n );\n}\n\nexport function useInsideModalScrollLock(): boolean {\n return React.useContext(InsideModalScrollLockContext);\n}\n","import * as DialogPrimitive from '@radix-ui/react-dialog';\nimport { XIcon } from 'lucide-react';\nimport type * as React from 'react';\n\nimport { preventDismissOnPortaledOverlay } from '../../../lib/radix-overlays';\nimport { surfaceOverlay } from '../../../lib/surfaces';\nimport { cn } from '../../../lib/utils';\nimport { InsideModalScrollLockProvider } from '../inside-modal-scroll-lock';\n\nfunction Dialog({ ...props }: React.ComponentProps<typeof DialogPrimitive.Root>) {\n return <DialogPrimitive.Root data-slot=\"dialog\" {...props} />;\n}\n\nfunction DialogTrigger({ ...props }: React.ComponentProps<typeof DialogPrimitive.Trigger>) {\n return <DialogPrimitive.Trigger data-slot=\"dialog-trigger\" {...props} />;\n}\n\nfunction DialogPortal({ ...props }: React.ComponentProps<typeof DialogPrimitive.Portal>) {\n return <DialogPrimitive.Portal data-slot=\"dialog-portal\" {...props} />;\n}\n\nfunction DialogClose({ ...props }: React.ComponentProps<typeof DialogPrimitive.Close>) {\n return <DialogPrimitive.Close data-slot=\"dialog-close\" {...props} />;\n}\n\nfunction DialogOverlay({\n className,\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Overlay>) {\n return (\n <DialogPrimitive.Overlay\n data-slot=\"dialog-overlay\"\n className={cn(\n 'data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-110 bg-foreground/20 backdrop-blur-[2px]',\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction DialogContent({\n className,\n children,\n showCloseButton = true,\n overlayClassName,\n onPointerDownOutside,\n onInteractOutside,\n onFocusOutside,\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Content> & {\n showCloseButton?: boolean;\n overlayClassName?: string;\n}) {\n return (\n <DialogPortal data-slot=\"dialog-portal\">\n <DialogOverlay className={overlayClassName} />\n <DialogPrimitive.Content\n data-slot=\"dialog-content\"\n onPointerDownOutside={(event) => {\n preventDismissOnPortaledOverlay(event);\n if (!event.defaultPrevented) {\n onPointerDownOutside?.(event);\n }\n }}\n onInteractOutside={(event) => {\n preventDismissOnPortaledOverlay(event);\n if (!event.defaultPrevented) {\n onInteractOutside?.(event);\n }\n }}\n onFocusOutside={(event) => {\n preventDismissOnPortaledOverlay(event);\n if (!event.defaultPrevented) {\n onFocusOutside?.(event);\n }\n }}\n className={cn(\n surfaceOverlay,\n 'bg-background data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 fixed top-[50%] left-[50%] z-110 grid w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] gap-4 p-6 duration-200 outline-none sm:max-w-lg',\n className,\n )}\n {...props}\n >\n {/* Keep Select/MultiSelect menus in-tree so react-remove-scroll does not swallow wheel events. */}\n <InsideModalScrollLockProvider>{children}</InsideModalScrollLockProvider>\n {showCloseButton && (\n <DialogPrimitive.Close\n data-slot=\"dialog-close\"\n className=\"ring-offset-background focus:ring-ring data-[state=open]:bg-accent data-[state=open]:text-muted-foreground absolute top-4 right-4 rounded-xs opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none cursor-pointer [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\"\n >\n <XIcon />\n <span className=\"sr-only\">Close</span>\n </DialogPrimitive.Close>\n )}\n </DialogPrimitive.Content>\n </DialogPortal>\n );\n}\n\nfunction DialogHeader({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"dialog-header\"\n className={cn('flex w-full flex-col items-center gap-2 text-center', className)}\n {...props}\n />\n );\n}\n\nfunction DialogFooter({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"dialog-footer\"\n className={cn('flex flex-col-reverse gap-2 sm:flex-row sm:justify-end', className)}\n {...props}\n />\n );\n}\n\nfunction DialogTitle({ className, ...props }: React.ComponentProps<typeof DialogPrimitive.Title>) {\n return (\n <DialogPrimitive.Title\n data-slot=\"dialog-title\"\n className={cn('w-full text-lg leading-none font-semibold text-center', className)}\n {...props}\n />\n );\n}\n\nfunction DialogDescription({\n className,\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Description>) {\n return (\n <DialogPrimitive.Description\n data-slot=\"dialog-description\"\n className={cn('w-full text-muted-foreground text-sm text-center', className)}\n {...props}\n />\n );\n}\n\nexport {\n Dialog,\n DialogClose,\n DialogContent,\n DialogDescription,\n DialogFooter,\n DialogHeader,\n DialogOverlay,\n DialogPortal,\n DialogTitle,\n DialogTrigger,\n};\n","import type { DateRangePickerTranslations, DefaultPresetId } from './types';\n\n/** Viewports below this width use a full-screen picker (Tailwind `sm` is 640px). */\nexport const DATE_RANGE_MOBILE_MAX_PX = 640;\nexport const DATE_RANGE_MOBILE_MQ = `(max-width: ${DATE_RANGE_MOBILE_MAX_PX - 1}px)`;\n\n/**\n * Two months + preset sidebar need ~900px+; below that mid widths (e.g. ~780px)\n * use a compact popover: one month and horizontal preset chips.\n */\nexport const DATE_RANGE_WIDE_MIN_PX = 1024;\nexport const DATE_RANGE_WIDE_MQ = `(min-width: ${DATE_RANGE_WIDE_MIN_PX}px)`;\n\nexport const DEFAULT_PRESET_IDS: { id: DefaultPresetId }[] = [\n { id: 'today' },\n { id: 'yesterday' },\n { id: 'last7' },\n { id: 'last14' },\n { id: 'last30' },\n { id: 'thisWeek' },\n { id: 'lastWeek' },\n { id: 'thisMonth' },\n { id: 'lastMonth' },\n];\n\nexport const DEFAULT_PRESET_LABELS: Record<DefaultPresetId, string> = {\n today: 'Today',\n yesterday: 'Yesterday',\n last7: 'Last 7 days',\n last14: 'Last 14 days',\n last30: 'Last 30 days',\n thisWeek: 'This week',\n lastWeek: 'Last week',\n thisMonth: 'This month',\n lastMonth: 'Last month',\n};\n\nexport const DEFAULT_TRANSLATIONS: Required<DateRangePickerTranslations> = {\n applyButton: 'Apply',\n cancelButton: 'Cancel',\n startLabel: 'Start',\n endLabel: 'End',\n placeholder: 'YYYY/MM/DD',\n ariaLabel: 'Date range',\n presetLabels: DEFAULT_PRESET_LABELS,\n presetsHeading: 'Quick ranges',\n};\n","import { cn } from '../../../lib/utils';\nimport { Button } from '../button';\n\nexport type DateRangePickerActionFooterProps = {\n visible: boolean;\n isMobileLayout: boolean;\n cancelLabel: string;\n applyLabel: string;\n onCancel: () => void;\n onApply: () => void;\n className?: string;\n};\n\n/** Cancel / apply actions for apply-flow and mobile layouts. */\nexport function DateRangePickerActionFooter({\n visible,\n isMobileLayout,\n cancelLabel,\n applyLabel,\n onCancel,\n onApply,\n className,\n}: DateRangePickerActionFooterProps) {\n if (!visible) return null;\n\n return (\n <div\n className={cn(\n 'flex w-full items-center justify-end gap-2 border-t border-border/50 bg-muted/15 px-4 py-3',\n isMobileLayout &&\n 'mt-auto shrink-0 bg-background pb-[max(1rem,env(safe-area-inset-bottom))] pt-4',\n className,\n )}\n >\n <Button\n type=\"button\"\n variant=\"ghost\"\n size=\"sm\"\n className={cn(isMobileLayout && 'min-h-10 flex-1 sm:min-h-9 sm:flex-initial')}\n onClick={onCancel}\n >\n {cancelLabel}\n </Button>\n <Button\n type=\"button\"\n size=\"sm\"\n className={cn(isMobileLayout && 'min-h-10 flex-1 sm:min-h-9 sm:flex-initial')}\n onClick={onApply}\n >\n {applyLabel}\n </Button>\n </div>\n );\n}\n","import type { Locale } from 'date-fns';\nimport type { DateRange } from 'react-day-picker';\nimport { surfaceCard } from '../../../lib/surfaces';\nimport { cn } from '../../../lib/utils';\nimport { Calendar } from '../calendar';\nimport { Input } from '../input';\n\nexport type DateRangePickerFieldsCalendarProps = {\n calendarMonths: number;\n draft: DateRange | undefined;\n displayedMonth: Date;\n onMonthChange: (month: Date) => void;\n onSelect: (next: DateRange | undefined, triggerDate: Date) => void;\n disabledMatchers: import('react-day-picker').Matcher[];\n locale?: Locale;\n startInputId: string;\n endInputId: string;\n startLabel: string;\n endLabel: string;\n startInputText: string;\n endInputText: string;\n effectivePlaceholder: string;\n onStartInputChange: (value: string) => void;\n onEndInputChange: (value: string) => void;\n onCommitStart: () => void;\n onCommitEnd: () => void;\n};\n\n/** Start/end date inputs and range calendar. */\nexport function DateRangePickerFieldsCalendar({\n calendarMonths,\n draft,\n displayedMonth,\n onMonthChange,\n onSelect,\n disabledMatchers,\n locale,\n startInputId,\n endInputId,\n startLabel,\n endLabel,\n startInputText,\n endInputText,\n effectivePlaceholder,\n onStartInputChange,\n onEndInputChange,\n onCommitStart,\n onCommitEnd,\n}: DateRangePickerFieldsCalendarProps) {\n return (\n <div className=\"flex w-full flex-col gap-4\">\n <div\n className={cn(\n 'grid w-full grid-cols-1 gap-3 rounded-xl border border-border/45 bg-muted/20 p-3 sm:grid-cols-2',\n calendarMonths === 2 ? 'max-w-none' : 'max-w-md',\n )}\n >\n <div className=\"flex min-w-0 flex-col gap-1.5\">\n <label htmlFor={startInputId} className=\"text-xs font-medium text-muted-foreground\">\n {startLabel}\n </label>\n <Input\n id={startInputId}\n type=\"text\"\n value={startInputText}\n onChange={(e) => onStartInputChange(e.target.value)}\n onBlur={onCommitStart}\n onKeyDown={(e) => {\n if (e.key === 'Enter') {\n e.preventDefault();\n onCommitStart();\n }\n }}\n placeholder={effectivePlaceholder}\n className=\"h-9 font-mono text-sm tabular-nums\"\n />\n </div>\n <div className=\"flex min-w-0 flex-col gap-1.5\">\n <label htmlFor={endInputId} className=\"text-xs font-medium text-muted-foreground\">\n {endLabel}\n </label>\n <Input\n id={endInputId}\n type=\"text\"\n value={endInputText}\n onChange={(e) => onEndInputChange(e.target.value)}\n onBlur={onCommitEnd}\n onKeyDown={(e) => {\n if (e.key === 'Enter') {\n e.preventDefault();\n onCommitEnd();\n }\n }}\n placeholder={effectivePlaceholder}\n className=\"h-9 font-mono text-sm tabular-nums\"\n />\n </div>\n </div>\n <div className={cn(surfaceCard, 'flex w-full justify-center p-1')}>\n <Calendar\n mode=\"range\"\n numberOfMonths={calendarMonths}\n month={displayedMonth}\n onMonthChange={onMonthChange}\n selected={draft}\n onSelect={onSelect}\n disabled={disabledMatchers}\n locale={locale}\n className={cn(calendarMonths === 2 && 'p-2')}\n />\n </div>\n </div>\n );\n}\n","import { format, parse } from 'date-fns';\nimport type { DateRange } from 'react-day-picker';\n\nimport { DISPLAY_FORMAT, INPUT_FORMAT, INPUT_FORMAT_ALT, normalizeDate } from '../../../lib/dates';\n\nexport function rangesMatch(a: DateRange | undefined, b: DateRange): boolean {\n const af = normalizeDate(a?.from)?.getTime();\n const at = normalizeDate(a?.to)?.getTime();\n const bf = normalizeDate(b.from)?.getTime();\n const bt = normalizeDate(b.to)?.getTime();\n return af === bf && at === bt;\n}\n\n/** If only a start day is set, treat it as a single-day range on apply. */\nexport function completeDateRange(range: DateRange | undefined): DateRange | undefined {\n if (!range?.from) return range;\n if (range.to) return range;\n return { from: range.from, to: range.from };\n}\n\nexport function parseDate(part: string): Date | null {\n const p = part.trim();\n if (!p) return null;\n const ref = new Date();\n for (const fmt of [INPUT_FORMAT, INPUT_FORMAT_ALT, DISPLAY_FORMAT]) {\n try {\n const d = parse(p, fmt, ref);\n if (!Number.isNaN(d.getTime())) return d;\n } catch {\n // try next format\n }\n }\n return null;\n}\n\nexport function parseInputToRange(text: string): DateRange | null {\n const trimmed = text.trim();\n if (!trimmed) return { from: undefined, to: undefined };\n const parts = trimmed.split(/\\s*[–-]\\s*/).map((p) => p.trim());\n try {\n if (parts.length >= 2) {\n const from = parseDate(parts[0]!);\n const to = parseDate(parts[1]!);\n if (from && to) return { from, to };\n if (from) return { from, to: undefined };\n } else if (parts.length === 1 && parts[0]) {\n const from = parseDate(parts[0]);\n if (from) return { from, to: undefined };\n }\n } catch {\n // ignore\n }\n return null;\n}\n\nexport function formatRangeLabel(\n value: DateRange | undefined,\n placeholder: string,\n formatOpts: { locale?: import('date-fns').Locale } | undefined,\n): string {\n const from = value?.from;\n const to = value?.to;\n\n if (from && to) {\n return `${format(from, DISPLAY_FORMAT, formatOpts)} \\u2013 ${format(to, DISPLAY_FORMAT, formatOpts)}`;\n }\n\n if (from) {\n return format(from, DISPLAY_FORMAT, formatOpts);\n }\n\n return placeholder;\n}\n\nexport { DISPLAY_FORMAT, INPUT_FORMAT, normalizeDate };\n","import type { DateRange } from 'react-day-picker';\n\nimport { cn } from '../../../lib/utils';\nimport { Button } from '../button';\nimport { rangesMatch } from './parseDateRange';\nimport type { PresetListItem } from './types';\n\nexport type DateRangePickerPresetListProps = {\n presets: PresetListItem[];\n draft: DateRange | undefined;\n layout: 'mobile-row' | 'sidebar';\n presetsHeading?: string;\n onPreset: (getRange: () => DateRange) => void;\n};\n\n/** Preset chips (mobile) or sidebar list (desktop). */\nexport function DateRangePickerPresetList({\n presets,\n draft,\n layout,\n presetsHeading,\n onPreset,\n}: DateRangePickerPresetListProps) {\n if (presets.length === 0) return null;\n\n if (layout === 'mobile-row') {\n return (\n <div className=\"shrink-0 border-b border-border/50 bg-muted/20 px-2 py-2\">\n <div className=\"flex gap-1 overflow-x-auto overscroll-x-contain px-1 py-1 [scrollbar-width:thin] [-webkit-overflow-scrolling:touch]\">\n {presets.map((preset) => {\n const active = rangesMatch(draft, preset.getRange());\n return (\n <Button\n key={preset.id}\n type=\"button\"\n variant=\"ghost\"\n size=\"sm\"\n className={cn(\n 'h-9 shrink-0 whitespace-nowrap rounded-lg px-2.5 text-sm font-normal',\n active && 'bg-accent font-medium text-accent-foreground',\n )}\n onClick={() => onPreset(preset.getRange)}\n >\n {preset.label}\n </Button>\n );\n })}\n </div>\n </div>\n );\n }\n\n return (\n <div className=\"w-[11.5rem] shrink-0 border-r border-border/50 bg-muted/20\">\n <div className=\"flex max-h-[min(420px,70vh)] flex-col gap-0.5 overflow-y-auto p-2 [scrollbar-width:thin]\">\n {presetsHeading ? (\n <p className=\"px-2 pb-1 pt-0.5 text-[0.65rem] font-semibold uppercase tracking-wider text-muted-foreground\">\n {presetsHeading}\n </p>\n ) : null}\n {presets.map((preset) => {\n const active = rangesMatch(draft, preset.getRange());\n return (\n <Button\n key={preset.id}\n type=\"button\"\n variant=\"ghost\"\n size=\"sm\"\n className={cn(\n 'h-9 w-full shrink-0 justify-start rounded-lg px-2.5 text-left text-sm font-normal',\n active && 'bg-accent font-medium text-accent-foreground',\n )}\n onClick={() => onPreset(preset.getRange)}\n >\n {preset.label}\n </Button>\n );\n })}\n </div>\n </div>\n );\n}\n","import { Calendar as CalendarIcon } from 'lucide-react';\nimport * as React from 'react';\nimport { controlBase } from '../../../lib/surfaces';\nimport { cn } from '../../../lib/utils';\nimport { Input } from '../input';\n\nexport type DateRangePickerTriggerProps = {\n className?: string;\n inputText: string;\n effectivePlaceholder: string;\n isEmpty: boolean;\n ariaLabel: string;\n onOpen: () => void;\n onInputChange: (value: string) => void;\n onInputFocus: () => void;\n onInputBlur: () => void;\n};\n\n/** Calendar icon + free-text range field that opens the picker. */\nexport const DateRangePickerTrigger = React.forwardRef<HTMLDivElement, DateRangePickerTriggerProps>(\n function DateRangePickerTrigger(\n {\n className,\n inputText,\n effectivePlaceholder,\n isEmpty,\n ariaLabel,\n onOpen,\n onInputChange,\n onInputFocus,\n onInputBlur,\n },\n ref,\n ) {\n return (\n <div\n ref={ref}\n role=\"button\"\n tabIndex={0}\n aria-label={ariaLabel}\n aria-haspopup=\"dialog\"\n onClick={onOpen}\n onKeyDown={(e) => {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n onOpen();\n }\n }}\n className={cn(\n controlBase,\n 'flex w-full min-w-[17rem] max-w-full cursor-pointer items-center overflow-hidden focus-within:ring-[3px] focus-within:ring-ring/40',\n className,\n )}\n >\n <span className=\"flex h-9 w-9 shrink-0 items-center justify-center border-r border-border/40 bg-muted/25 text-muted-foreground\">\n <CalendarIcon className=\"size-4\" aria-hidden=\"true\" />\n </span>\n <Input\n type=\"text\"\n value={inputText}\n onChange={(e) => onInputChange(e.target.value)}\n onFocus={onInputFocus}\n onBlur={onInputBlur}\n onClick={(e) => {\n // Keep open controlled: do not bubble to PopoverTrigger toggle.\n e.stopPropagation();\n onOpen();\n }}\n onPointerDown={(e) => {\n // Prevent Trigger from seeing pointerdown toggle before our open.\n e.stopPropagation();\n }}\n onKeyDown={(e) => {\n if (e.key === 'Enter') {\n (e.target as HTMLInputElement).blur();\n }\n }}\n placeholder={effectivePlaceholder}\n data-empty={isEmpty || undefined}\n className={cn(\n 'h-9 min-w-0 flex-1 cursor-pointer rounded-none border-0 bg-transparent py-2 pl-3 pr-3 text-sm shadow-none focus-visible:ring-0 whitespace-nowrap',\n isEmpty && 'text-muted-foreground',\n )}\n title={!isEmpty ? inputText : undefined}\n aria-label={ariaLabel}\n />\n </div>\n );\n },\n);\n","import type { DateRange } from 'react-day-picker';\n\nimport type { DefaultPresetId } from './types';\n\nexport function getPresetRange(presetId: DefaultPresetId): DateRange {\n const today = new Date();\n today.setHours(23, 59, 59, 999);\n const from = new Date(today);\n from.setHours(0, 0, 0, 0);\n const to = new Date(today);\n\n switch (presetId) {\n case 'today':\n return { from, to };\n case 'yesterday':\n from.setDate(from.getDate() - 1);\n to.setDate(to.getDate() - 1);\n return { from, to };\n case 'last7':\n from.setDate(from.getDate() - 6);\n return { from, to };\n case 'last14':\n from.setDate(from.getDate() - 13);\n return { from, to };\n case 'last30':\n from.setDate(from.getDate() - 29);\n return { from, to };\n case 'thisWeek': {\n const day = from.getDay();\n const mondayOffset = day === 0 ? -6 : 1 - day;\n from.setDate(from.getDate() + mondayOffset);\n return { from, to };\n }\n case 'lastWeek': {\n const day = from.getDay();\n const mondayOffset = day === 0 ? -6 : 1 - day;\n const thisMonday = from.getDate() + mondayOffset;\n from.setDate(thisMonday - 7);\n to.setDate(thisMonday - 1);\n to.setHours(23, 59, 59, 999);\n return { from, to };\n }\n case 'thisMonth':\n from.setDate(1);\n return { from, to };\n case 'lastMonth':\n from.setMonth(from.getMonth() - 1);\n from.setDate(1);\n to.setDate(0);\n to.setHours(23, 59, 59, 999);\n return { from, to };\n default:\n return { from, to };\n }\n}\n","import * as React from 'react';\n\nimport { DATE_RANGE_MOBILE_MQ, DATE_RANGE_WIDE_MQ } from './constants';\n\nexport function useMediaQuery(query: string, fallback = false): boolean {\n const subscribe = React.useCallback(\n (onChange: () => void) => {\n const mql = window.matchMedia(query);\n mql.addEventListener('change', onChange);\n return () => mql.removeEventListener('change', onChange);\n },\n [query],\n );\n return React.useSyncExternalStore(\n subscribe,\n () => window.matchMedia(query).matches,\n () => fallback,\n );\n}\n\nexport function useIsDatePickerMobileLayout(): boolean {\n return useMediaQuery(DATE_RANGE_MOBILE_MQ, false);\n}\n\nexport function useIsWideDatePickerLayout(): boolean {\n return useMediaQuery(DATE_RANGE_WIDE_MQ, false);\n}\n","import { format } from 'date-fns';\nimport * as React from 'react';\nimport type { DateRange } from 'react-day-picker';\n\nimport { surfaceOverlay } from '../../../lib/surfaces';\nimport { cn } from '../../../lib/utils';\nimport { Dialog, DialogContent, DialogHeader, DialogTitle } from '../dialog';\nimport { Popover, PopoverContent, PopoverTrigger } from '../popover';\nimport { DEFAULT_PRESET_IDS, DEFAULT_PRESET_LABELS, DEFAULT_TRANSLATIONS } from './constants';\nimport { DateRangePickerActionFooter } from './DateRangePickerActionFooter';\nimport { DateRangePickerFieldsCalendar } from './DateRangePickerFieldsCalendar';\nimport { DateRangePickerPresetList } from './DateRangePickerPresetList';\nimport { DateRangePickerTrigger } from './DateRangePickerTrigger';\nimport {\n completeDateRange,\n DISPLAY_FORMAT,\n formatRangeLabel,\n INPUT_FORMAT,\n normalizeDate,\n parseDate,\n parseInputToRange,\n} from './parseDateRange';\nimport type { DateRangePickerProps } from './types';\nimport { getPresetRange } from './useDateRangePresets';\nimport { useIsDatePickerMobileLayout, useIsWideDatePickerLayout } from './useMediaQuery';\n\n/** Range picker with presets, mobile dialog, and optional apply flow. Storybook: **UI/DateRangePicker**. */\nexport function DateRangePicker({\n value,\n onChange,\n minDate,\n maxDate,\n placeholder,\n showPresets = true,\n presets: customPresets,\n translations,\n locale,\n onApply,\n isDateDisabled,\n className,\n}: DateRangePickerProps) {\n const t = { ...DEFAULT_TRANSLATIONS, ...translations };\n const effectivePlaceholder = placeholder ?? t.placeholder;\n const presetList = React.useMemo(() => {\n if (customPresets?.length) return customPresets;\n if (!showPresets) return [];\n return DEFAULT_PRESET_IDS.map(({ id }) => ({\n id,\n label: translations?.presetLabels?.[id] ?? DEFAULT_PRESET_LABELS[id],\n getRange: () => getPresetRange(id),\n }));\n }, [customPresets, showPresets, translations?.presetLabels]);\n\n const normalizedMin = normalizeDate(minDate);\n const normalizedMax = normalizeDate(maxDate);\n const isMobileLayout = useIsDatePickerMobileLayout();\n const isWideLayout = useIsWideDatePickerLayout();\n const calendarMonths = isMobileLayout ? 1 : isWideLayout ? 2 : 1;\n const [open, setOpen] = React.useState(false);\n const [draft, setDraft] = React.useState<DateRange | undefined>(value);\n const [displayedMonth, setDisplayedMonth] = React.useState(() => value?.from ?? new Date());\n const appliedRef = React.useRef<DateRange | undefined>(value);\n const wasOpenRef = React.useRef(false);\n const useApplyFlow = !!onApply;\n const idScope = React.useId();\n const startInputId = `date-range-start-${idScope}`;\n const endInputId = `date-range-end-${idScope}`;\n\n React.useEffect(() => {\n const wasOpen = wasOpenRef.current;\n wasOpenRef.current = open;\n if (open && !wasOpen) {\n appliedRef.current = value;\n setDraft(value);\n setDisplayedMonth(value?.from ?? new Date());\n } else if (open && wasOpen) {\n setDraft(value);\n }\n }, [open, value]);\n\n const handleOpenChange = React.useCallback(\n (next: boolean) => {\n if (!next && open && !useApplyFlow) {\n onChange(appliedRef.current);\n setDraft(appliedRef.current);\n }\n setOpen(next);\n },\n [open, useApplyFlow, onChange],\n );\n\n const formatOpts = React.useMemo(() => (locale ? { locale } : undefined), [locale]);\n const label = React.useMemo(\n () => formatRangeLabel(value, effectivePlaceholder, formatOpts),\n [effectivePlaceholder, value, formatOpts],\n );\n\n const [inputText, setInputText] = React.useState(label);\n const inputFocusedRef = React.useRef(false);\n React.useEffect(() => {\n if (!inputFocusedRef.current) setInputText(label);\n }, [label]);\n\n const handleInputBlur = () => {\n inputFocusedRef.current = false;\n const next = parseInputToRange(inputText);\n if (next) {\n const formatted =\n next.from && next.to\n ? `${format(next.from, DISPLAY_FORMAT, formatOpts)} \\u2013 ${format(next.to, DISPLAY_FORMAT, formatOpts)}`\n : next.from\n ? format(next.from, DISPLAY_FORMAT, formatOpts)\n : effectivePlaceholder;\n if (useApplyFlow) {\n setDraft(next);\n setInputText(formatted);\n } else {\n onChange(next);\n setInputText(formatted);\n }\n } else {\n setInputText(label);\n }\n };\n\n const disabledMatchers = React.useMemo(() => {\n const toStartOfDay = (d: Date) => {\n const copy = new Date(d);\n copy.setHours(0, 0, 0, 0);\n return copy.getTime();\n };\n const matchers: Array<unknown> = [];\n if (normalizedMin) {\n matchers.push((date: Date) => toStartOfDay(date) < toStartOfDay(normalizedMin!));\n }\n if (normalizedMax) {\n matchers.push((date: Date) => toStartOfDay(date) > toStartOfDay(normalizedMax!));\n }\n if (isDateDisabled) matchers.push((date: Date) => isDateDisabled(date));\n return matchers as import('react-day-picker').Matcher[];\n }, [normalizedMin, normalizedMax, isDateDisabled]);\n\n const handlePreset = (getRange: () => DateRange) => {\n const range = getRange();\n setDraft(range);\n if (!useApplyFlow) onChange(range);\n };\n\n const handleApply = () => {\n if (useApplyFlow) {\n const completed = completeDateRange(draft);\n setDraft(completed);\n onChange(completed);\n onApply?.(completed);\n }\n setOpen(false);\n };\n\n const handleCancel = () => {\n if (useApplyFlow) {\n setDraft(appliedRef.current);\n } else {\n onChange(appliedRef.current);\n setDraft(appliedRef.current);\n }\n setOpen(false);\n };\n\n const handleSelect = (_next: DateRange | undefined, triggerDate: Date) => {\n const day = normalizeDate(triggerDate);\n if (!day) return;\n setDraft((prev) => {\n if (!prev?.from || (prev.from && prev.to)) {\n const nextRange = { from: day, to: undefined };\n if (!useApplyFlow) onChange(nextRange);\n return nextRange;\n }\n if (day < prev.from) {\n const nextRange = { from: day, to: undefined };\n if (!useApplyFlow) onChange(nextRange);\n return nextRange;\n }\n const nextRange = { from: prev.from, to: day };\n if (!useApplyFlow) onChange(nextRange);\n return nextRange;\n });\n };\n\n const [startInputText, setStartInputText] = React.useState('');\n const [endInputText, setEndInputText] = React.useState('');\n React.useEffect(() => {\n if (open) {\n setStartInputText(draft?.from ? format(draft.from, INPUT_FORMAT) : '');\n setEndInputText(draft?.to ? format(draft.to, INPUT_FORMAT) : '');\n }\n }, [open, draft?.from, draft?.to]);\n\n const commitStartInput = () => {\n const d = parseDate(startInputText);\n if (d) {\n setDraft((prev) => ({ from: d, to: prev?.to && prev.to >= d ? prev.to : undefined }));\n } else {\n setStartInputText(draft?.from ? format(draft.from, INPUT_FORMAT) : '');\n }\n };\n\n const commitEndInput = () => {\n const d = parseDate(endInputText);\n if (d) {\n setDraft((prev) => ({ from: prev?.from && prev.from <= d ? prev.from : d, to: d }));\n } else {\n setEndInputText(draft?.to ? format(draft.to, INPUT_FORMAT) : '');\n }\n };\n\n const fieldsCalendar = (\n <DateRangePickerFieldsCalendar\n calendarMonths={calendarMonths}\n draft={draft}\n displayedMonth={displayedMonth}\n onMonthChange={setDisplayedMonth}\n onSelect={handleSelect}\n disabledMatchers={disabledMatchers}\n locale={locale}\n startInputId={startInputId}\n endInputId={endInputId}\n startLabel={t.startLabel}\n endLabel={t.endLabel}\n startInputText={startInputText}\n endInputText={endInputText}\n effectivePlaceholder={effectivePlaceholder}\n onStartInputChange={setStartInputText}\n onEndInputChange={setEndInputText}\n onCommitStart={commitStartInput}\n onCommitEnd={commitEndInput}\n />\n );\n\n const footer = (\n <DateRangePickerActionFooter\n visible={useApplyFlow || isMobileLayout}\n isMobileLayout={isMobileLayout}\n cancelLabel={t.cancelButton}\n applyLabel={t.applyButton}\n onCancel={handleCancel}\n onApply={handleApply}\n />\n );\n\n const trigger = (\n <DateRangePickerTrigger\n className={className}\n inputText={inputText}\n effectivePlaceholder={effectivePlaceholder}\n isEmpty={!value?.from}\n ariaLabel={t.ariaLabel}\n onOpen={() => setOpen(true)}\n onInputChange={setInputText}\n onInputFocus={() => {\n inputFocusedRef.current = true;\n }}\n onInputBlur={handleInputBlur}\n />\n );\n\n if (isMobileLayout) {\n return (\n <>\n {trigger}\n <Dialog open={open} onOpenChange={handleOpenChange}>\n <DialogContent\n showCloseButton\n className={cn(\n 'h-dvh max-h-dvh w-full max-w-full gap-0 rounded-none border-0 p-0 shadow-[var(--shadow-elevated)]',\n 'top-0 left-0 flex translate-x-0 translate-y-0 flex-col',\n )}\n overlayClassName=\"z-110\"\n >\n <DialogHeader className=\"shrink-0 items-start border-b border-border/50 px-4 py-4 text-left\">\n <DialogTitle className=\"pr-10 text-left text-base\">{t.ariaLabel}</DialogTitle>\n </DialogHeader>\n <div className=\"flex min-h-0 flex-1 flex-col overflow-hidden\">\n <DateRangePickerPresetList\n presets={presetList}\n draft={draft}\n layout=\"mobile-row\"\n onPreset={handlePreset}\n />\n <div className=\"flex min-h-0 flex-1 flex-col overflow-y-auto px-4 py-4\">\n <div className=\"mx-auto flex w-full max-w-md flex-col items-center\">\n {fieldsCalendar}\n </div>\n </div>\n {footer}\n </div>\n </DialogContent>\n </Dialog>\n </>\n );\n }\n\n return (\n // Non-modal (editable input keeps focus). PopoverTrigger anchors Popper —\n // Anchor-without-forwardRef parked content at translate(0,-200%) off-screen.\n <Popover modal={false} open={open} onOpenChange={handleOpenChange}>\n <PopoverTrigger asChild>{trigger}</PopoverTrigger>\n <PopoverContent\n className={cn(\n surfaceOverlay,\n 'w-auto max-w-[min(calc(100vw-1.5rem),52rem)] overflow-hidden p-0',\n )}\n align=\"start\"\n side=\"bottom\"\n sideOffset={8}\n // Keep the wide panel inside the viewport (shift/flip). Portal + real\n // trigger ref avoid the old overflow-shell translate(0,-200%) park.\n avoidCollisions\n collisionPadding={16}\n sticky=\"always\"\n onOpenAutoFocus={(e) => e.preventDefault()}\n >\n <div className={cn('flex', isWideLayout ? 'flex-row' : 'flex-col')}>\n <DateRangePickerPresetList\n presets={presetList}\n draft={draft}\n layout={isWideLayout ? 'sidebar' : 'mobile-row'}\n presetsHeading={isWideLayout ? t.presetsHeading : undefined}\n onPreset={handlePreset}\n />\n <div className=\"flex min-w-0 flex-1 flex-col bg-background\">\n <div className=\"flex w-full flex-col items-stretch p-4\">{fieldsCalendar}</div>\n {footer}\n </div>\n </div>\n </PopoverContent>\n </Popover>\n );\n}\n","import * as DropdownMenuPrimitive from '@radix-ui/react-dropdown-menu';\nimport type * as React from 'react';\n\nimport { surfaceOverlay } from '../../../lib/surfaces';\nimport { cn } from '../../../lib/utils';\n\n/** About 6-7 options visible, then scroll; still shrinks when the viewport is short. */\nexport const dropdownMenuSelectOptionsMaxHeightClassName =\n 'max-h-[min(var(--radix-dropdown-menu-content-available-height),17rem)]';\n\nfunction DropdownMenu({ ...props }: React.ComponentProps<typeof DropdownMenuPrimitive.Root>) {\n return <DropdownMenuPrimitive.Root data-slot=\"dropdown-menu\" {...props} />;\n}\n\nfunction DropdownMenuTrigger({\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Trigger>) {\n return <DropdownMenuPrimitive.Trigger data-slot=\"dropdown-menu-trigger\" {...props} />;\n}\n\ntype DropdownMenuContentProps = React.ComponentProps<typeof DropdownMenuPrimitive.Content> & {\n /** Disable entry/exit animation when an immediately reusable trigger must not retain an outgoing layer. */\n animated?: boolean;\n /**\n * When false, render inline instead of portaling to document.body so wheel scroll works\n * inside modal Sheet/Dialog scroll locks (e.g. Select in FormDrawer).\n * @default true\n */\n portalled?: boolean;\n};\n\nfunction DropdownMenuContent({\n className,\n animated = true,\n sideOffset = 4,\n portalled = true,\n ...props\n}: DropdownMenuContentProps) {\n const content = (\n <DropdownMenuPrimitive.Content\n data-slot=\"dropdown-menu-content\"\n sideOffset={sideOffset}\n className={cn(\n surfaceOverlay,\n animated &&\n 'data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2',\n 'z-50 max-h-(--radix-dropdown-menu-content-available-height) min-w-[8rem] origin-(--radix-dropdown-menu-content-transform-origin) overflow-x-hidden overflow-y-auto p-1',\n className,\n )}\n {...props}\n />\n );\n\n if (!portalled) {\n return content;\n }\n\n return <DropdownMenuPrimitive.Portal>{content}</DropdownMenuPrimitive.Portal>;\n}\n\nfunction DropdownMenuItem({\n className,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Item>) {\n return (\n <DropdownMenuPrimitive.Item\n data-slot=\"dropdown-menu-item\"\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground relative flex cursor-pointer items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className,\n )}\n {...props}\n />\n );\n}\n\nexport { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuTrigger };\n","import { ChevronDown, ChevronUp } from 'lucide-react';\nimport * as React from 'react';\nimport { cn } from '../../../lib/utils';\n\nexport type DropdownScrollableListProps = {\n children: React.ReactNode;\n /** When this changes, overflow and fade visibility are recomputed */\n scrollKey?: string | number;\n className?: string;\n /**\n * When true (default), the list fills a flex parent with max-height (e.g. Select).\n * When false, only `scrollAreaClassName` sizes the scroll region (e.g. MultiSelect).\n */\n grow?: boolean;\n /** Extra classes on the scrollable element; when `grow` is false, this must include max-height and overflow */\n scrollAreaClassName?: string;\n};\n\nexport function DropdownScrollableList({\n children,\n scrollKey,\n className,\n scrollAreaClassName,\n grow = true,\n}: DropdownScrollableListProps) {\n const scrollRef = React.useRef<HTMLDivElement>(null);\n const [showTop, setShowTop] = React.useState(false);\n const [showBottom, setShowBottom] = React.useState(false);\n\n const update = React.useCallback(() => {\n const el = scrollRef.current;\n if (!el) {\n setShowTop(false);\n setShowBottom(false);\n return;\n }\n const { scrollTop, scrollHeight, clientHeight } = el;\n const overflow = scrollHeight - clientHeight > 2;\n if (!overflow) {\n setShowTop(false);\n setShowBottom(false);\n return;\n }\n setShowTop(scrollTop > 2);\n setShowBottom(scrollTop + clientHeight < scrollHeight - 2);\n }, []);\n\n React.useLayoutEffect(() => {\n update();\n const id = requestAnimationFrame(() => {\n requestAnimationFrame(update);\n });\n return () => cancelAnimationFrame(id);\n }, [update, scrollKey]);\n\n React.useEffect(() => {\n const el = scrollRef.current;\n if (!el) return;\n if (typeof ResizeObserver === 'undefined') {\n return;\n }\n const ro = new ResizeObserver(() => {\n window.requestAnimationFrame(update);\n });\n ro.observe(el);\n return () => ro.disconnect();\n }, [update]);\n\n return (\n <div className={cn('relative flex min-h-0 flex-col', grow && 'flex-1', className)}>\n <div\n ref={scrollRef}\n className={cn(\n grow\n ? cn('min-h-0 flex-1 overflow-y-auto overscroll-y-contain p-1', scrollAreaClassName)\n : scrollAreaClassName,\n )}\n onScroll={update}\n onWheel={(event) => {\n // Nested overflow parents (drawer body) must not steal wheel while this list scrolls.\n event.stopPropagation();\n }}\n >\n {children}\n </div>\n {showTop ? (\n <div\n className=\"pointer-events-none absolute inset-x-0 top-0 z-[1] flex h-6 flex-col items-center justify-start pt-px\"\n aria-hidden\n >\n <div className=\"absolute inset-0 bg-gradient-to-b from-popover via-popover/35 to-transparent backdrop-blur-[0.5px]\" />\n <ChevronUp\n className=\"relative z-[2] h-3.5 w-3.5 shrink-0 text-muted-foreground opacity-90 drop-shadow-sm\"\n strokeWidth={2.5}\n />\n </div>\n ) : null}\n {showBottom ? (\n <div\n className=\"pointer-events-none absolute inset-x-0 bottom-0 z-[1] flex h-6 flex-col items-center justify-end pb-px\"\n aria-hidden\n >\n <div className=\"absolute inset-0 bg-gradient-to-t from-popover via-popover/35 to-transparent backdrop-blur-[0.5px]\" />\n <ChevronDown\n className=\"relative z-[2] h-3.5 w-3.5 shrink-0 text-muted-foreground opacity-90 drop-shadow-sm\"\n strokeWidth={2.5}\n />\n </div>\n ) : null}\n </div>\n );\n}\n","import { cn } from '../../../lib/utils';\nimport { Input } from '../input';\n\nexport type DropdownSelectSearchInputProps = {\n value: string;\n onChange: (value: string) => void;\n placeholder?: string;\n className?: string;\n autoFocus?: boolean;\n};\n\nexport function DropdownSelectSearchInput({\n value,\n onChange,\n placeholder = 'Search…',\n className,\n autoFocus = false,\n}: DropdownSelectSearchInputProps) {\n return (\n <div className={cn('shrink-0 px-1 pb-2 pt-1', className)}>\n <Input\n value={value}\n onChange={(event) => onChange(event.target.value)}\n placeholder={placeholder}\n aria-label={placeholder}\n autoFocus={autoFocus}\n onKeyDown={(event) => event.stopPropagation()}\n />\n </div>\n );\n}\n","import {\n addDays,\n addMonths,\n addWeeks,\n endOfDay,\n endOfMonth,\n endOfWeek,\n format,\n isSameDay,\n isSameMonth,\n isWithinInterval,\n startOfDay,\n startOfMonth,\n startOfWeek,\n} from 'date-fns';\n\nimport type { EventCalendarEvent } from './types';\n\nexport function startOfVisibleWeek(date: Date, weekStartsOnMonday: boolean): Date {\n return startOfWeek(date, { weekStartsOn: weekStartsOnMonday ? 1 : 0 });\n}\n\nexport function endOfVisibleWeek(date: Date, weekStartsOnMonday: boolean): Date {\n return endOfWeek(date, { weekStartsOn: weekStartsOnMonday ? 1 : 0 });\n}\n\n/** Six-week month grid (42 days) starting from the week that contains month start. */\nexport function monthGridDays(anchor: Date, weekStartsOnMonday: boolean): Date[] {\n const start = startOfVisibleWeek(startOfMonth(anchor), weekStartsOnMonday);\n return Array.from({ length: 42 }, (_, i) => addDays(start, i));\n}\n\nexport function weekDays(anchor: Date, weekStartsOnMonday: boolean): Date[] {\n const start = startOfVisibleWeek(anchor, weekStartsOnMonday);\n return Array.from({ length: 7 }, (_, i) => addDays(start, i));\n}\n\nexport function eventInterval(event: EventCalendarEvent): { start: Date; end: Date } {\n const start = startOfDay(event.start);\n const end = event.end ? endOfDay(event.end) : endOfDay(event.start);\n return { start, end };\n}\n\nexport function eventsOnDay(events: EventCalendarEvent[], day: Date): EventCalendarEvent[] {\n const dayStart = startOfDay(day);\n const dayEnd = endOfDay(day);\n return events.filter((event) => {\n const { start, end } = eventInterval(event);\n return (\n isWithinInterval(dayStart, { start, end }) ||\n isWithinInterval(dayEnd, { start, end }) ||\n (start <= dayStart && end >= dayEnd)\n );\n });\n}\n\nexport function weekdayLabels(weekStartsOnMonday: boolean, reference: Date = new Date()): string[] {\n const start = startOfVisibleWeek(reference, weekStartsOnMonday);\n return Array.from({ length: 7 }, (_, i) => format(addDays(start, i), 'EEE'));\n}\n\nexport function shiftAnchor(anchor: Date, view: 'month' | 'week' | 'day', direction: -1 | 1): Date {\n if (view === 'month') return addMonths(anchor, direction);\n if (view === 'week') return addWeeks(anchor, direction);\n return addDays(anchor, direction);\n}\n\nexport function titleForView(\n anchor: Date,\n view: 'month' | 'week' | 'day',\n weekStartsOnMonday: boolean,\n): string {\n if (view === 'month') return format(anchor, 'MMMM yyyy');\n if (view === 'day') return format(anchor, 'EEEE, MMM d, yyyy');\n const start = startOfVisibleWeek(anchor, weekStartsOnMonday);\n const end = endOfVisibleWeek(anchor, weekStartsOnMonday);\n if (isSameMonth(start, end)) {\n return `${format(start, 'MMM d')} – ${format(end, 'd, yyyy')}`;\n }\n return `${format(start, 'MMM d')} – ${format(end, 'MMM d, yyyy')}`;\n}\n\nexport { endOfMonth, isSameDay, isSameMonth };\n","import { format } from 'date-fns';\nimport { ChevronLeft, ChevronRight } from 'lucide-react';\nimport * as React from 'react';\n\nimport { surfaceCard } from '../../../lib/surfaces';\nimport { cn } from '../../../lib/utils';\nimport { Button } from '../button';\n\nimport {\n eventsOnDay,\n isSameDay,\n isSameMonth,\n monthGridDays,\n shiftAnchor,\n titleForView,\n weekDays,\n weekdayLabels,\n} from './date-utils';\nimport type { EventCalendarEvent, EventCalendarProps, EventCalendarView } from './types';\n\nconst MAX_MONTH_CHIPS = 3;\n\nfunction useControlledDate(\n value: Date | undefined,\n defaultValue: Date | undefined,\n onChange?: (date: Date) => void,\n) {\n const [internal, setInternal] = React.useState(defaultValue ?? new Date());\n const isControlled = value !== undefined;\n const current = isControlled ? value : internal;\n const set = React.useCallback(\n (next: Date) => {\n if (!isControlled) setInternal(next);\n onChange?.(next);\n },\n [isControlled, onChange],\n );\n return [current, set] as const;\n}\n\nfunction useControlledView(\n value: EventCalendarView | undefined,\n defaultValue: EventCalendarView,\n onChange?: (view: EventCalendarView) => void,\n) {\n const [internal, setInternal] = React.useState(defaultValue);\n const isControlled = value !== undefined;\n const current = isControlled ? value : internal;\n const set = React.useCallback(\n (next: EventCalendarView) => {\n if (!isControlled) setInternal(next);\n onChange?.(next);\n },\n [isControlled, onChange],\n );\n return [current, set] as const;\n}\n\nfunction EventChip({\n event,\n dense,\n onClick,\n}: {\n event: EventCalendarEvent;\n dense?: boolean;\n onClick?: (event: EventCalendarEvent) => void;\n}) {\n return (\n <button\n type=\"button\"\n data-slot=\"event-calendar-chip\"\n className={cn(\n 'w-full truncate rounded-md px-1.5 text-left text-[0.7rem] font-medium leading-5',\n 'bg-primary/15 text-primary hover:bg-primary/25',\n dense && 'leading-4 text-[0.65rem]',\n event.colorClassName,\n )}\n style={event.color ? { backgroundColor: `${event.color}22`, color: event.color } : undefined}\n onClick={(e) => {\n e.stopPropagation();\n onClick?.(event);\n }}\n >\n {event.title}\n </button>\n );\n}\n\n/**\n * Month / week / day event calendar shell for app surfaces (time-off, holidays, meetings).\n * Distinct from the day-picker {@link Calendar} used in forms.\n *\n * Storybook: UI/EventCalendar\n */\nfunction EventCalendar({\n events,\n value,\n defaultValue,\n view: viewProp,\n defaultView = 'month',\n onValueChange,\n onViewChange,\n onEventClick,\n onSlotClick,\n className,\n weekStartsOnMonday = true,\n labels,\n}: EventCalendarProps) {\n const [safeAnchor, setAnchor] = useControlledDate(value, defaultValue, onValueChange);\n const [safeView, setViewSafe] = useControlledView(viewProp, defaultView, onViewChange);\n const weekdays = React.useMemo(\n () => weekdayLabels(weekStartsOnMonday, safeAnchor),\n [weekStartsOnMonday, safeAnchor],\n );\n\n const go = (direction: -1 | 1) => setAnchor(shiftAnchor(safeAnchor, safeView, direction));\n\n return (\n <div\n data-slot=\"event-calendar\"\n className={cn(surfaceCard, 'flex flex-col gap-3 p-3 sm:p-4', className)}\n >\n <div className=\"flex flex-wrap items-center justify-between gap-2\">\n <div className=\"flex items-center gap-1\">\n <Button\n type=\"button\"\n variant=\"outline\"\n size=\"icon-sm\"\n aria-label=\"Previous\"\n onClick={() => go(-1)}\n >\n <ChevronLeft />\n </Button>\n <Button\n type=\"button\"\n variant=\"outline\"\n size=\"icon-sm\"\n aria-label=\"Next\"\n onClick={() => go(1)}\n >\n <ChevronRight />\n </Button>\n <Button type=\"button\" variant=\"ghost\" size=\"sm\" onClick={() => setAnchor(new Date())}>\n {labels?.today ?? 'Today'}\n </Button>\n <h2 className=\"ml-1 text-sm font-semibold sm:text-base\">\n {titleForView(safeAnchor, safeView, weekStartsOnMonday)}\n </h2>\n </div>\n <div className=\"flex items-center gap-1 rounded-lg border border-border/50 p-0.5\">\n {(['month', 'week', 'day'] as const).map((v) => (\n <Button\n key={v}\n type=\"button\"\n size=\"sm\"\n variant={safeView === v ? 'secondary' : 'ghost'}\n onClick={() => setViewSafe(v)}\n >\n {labels?.[v] ?? v.charAt(0).toUpperCase() + v.slice(1)}\n </Button>\n ))}\n </div>\n </div>\n\n {safeView === 'month' && (\n <MonthGrid\n anchor={safeAnchor}\n events={events}\n weekStartsOnMonday={weekStartsOnMonday}\n weekdays={weekdays}\n onEventClick={onEventClick}\n onSlotClick={onSlotClick}\n />\n )}\n {safeView === 'week' && (\n <WeekGrid\n anchor={safeAnchor}\n events={events}\n weekStartsOnMonday={weekStartsOnMonday}\n weekdays={weekdays}\n onEventClick={onEventClick}\n onSlotClick={onSlotClick}\n />\n )}\n {safeView === 'day' && (\n <DayPane\n anchor={safeAnchor}\n events={events}\n onEventClick={onEventClick}\n onSlotClick={onSlotClick}\n />\n )}\n </div>\n );\n}\n\nfunction MonthGrid({\n anchor,\n events,\n weekStartsOnMonday,\n weekdays,\n onEventClick,\n onSlotClick,\n}: {\n anchor: Date;\n events: EventCalendarEvent[];\n weekStartsOnMonday: boolean;\n weekdays: string[];\n onEventClick?: (event: EventCalendarEvent) => void;\n onSlotClick?: (date: Date) => void;\n}) {\n const days = monthGridDays(anchor, weekStartsOnMonday);\n const today = new Date();\n\n return (\n <div className=\"flex flex-col gap-1\">\n <div className=\"grid grid-cols-7 gap-px\">\n {weekdays.map((label) => (\n <div\n key={label}\n className=\"px-1 py-1 text-center text-[0.7rem] font-medium text-muted-foreground\"\n >\n {label}\n </div>\n ))}\n </div>\n <div className=\"grid grid-cols-7 gap-px rounded-lg border border-border/40 bg-border/40 overflow-hidden\">\n {days.map((day) => {\n const dayEvents = eventsOnDay(events, day);\n const inMonth = isSameMonth(day, anchor);\n const isToday = isSameDay(day, today);\n const overflow = dayEvents.length - MAX_MONTH_CHIPS;\n return (\n <button\n key={day.toISOString()}\n type=\"button\"\n data-slot=\"event-calendar-day\"\n className={cn(\n 'flex min-h-[5.5rem] flex-col gap-0.5 bg-card p-1 text-left align-top',\n 'hover:bg-accent/40 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring',\n !inMonth && 'bg-muted/20 text-muted-foreground',\n )}\n onClick={() => onSlotClick?.(day)}\n >\n <span\n className={cn(\n 'inline-flex size-6 items-center justify-center rounded-md text-xs',\n isToday && 'bg-primary text-primary-foreground font-semibold',\n )}\n >\n {format(day, 'd')}\n </span>\n <div className=\"flex flex-col gap-0.5\">\n {dayEvents.slice(0, MAX_MONTH_CHIPS).map((event) => (\n <EventChip key={event.id} event={event} dense onClick={onEventClick} />\n ))}\n {overflow > 0 && (\n <span className=\"px-1 text-[0.65rem] text-muted-foreground\">+{overflow}</span>\n )}\n </div>\n </button>\n );\n })}\n </div>\n </div>\n );\n}\n\nfunction WeekGrid({\n anchor,\n events,\n weekStartsOnMonday,\n weekdays,\n onEventClick,\n onSlotClick,\n}: {\n anchor: Date;\n events: EventCalendarEvent[];\n weekStartsOnMonday: boolean;\n weekdays: string[];\n onEventClick?: (event: EventCalendarEvent) => void;\n onSlotClick?: (date: Date) => void;\n}) {\n const days = weekDays(anchor, weekStartsOnMonday);\n const today = new Date();\n\n return (\n <div className=\"grid grid-cols-1 gap-2 sm:grid-cols-7\">\n {days.map((day, i) => {\n const dayEvents = eventsOnDay(events, day);\n return (\n <button\n key={day.toISOString()}\n type=\"button\"\n className={cn(\n 'flex min-h-[10rem] flex-col gap-1 rounded-lg border border-border/40 bg-card p-2 text-left',\n 'hover:bg-accent/30 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring',\n isSameDay(day, today) && 'ring-1 ring-primary/40',\n )}\n onClick={() => onSlotClick?.(day)}\n >\n <div className=\"flex items-baseline justify-between gap-1\">\n <span className=\"text-[0.7rem] text-muted-foreground\">{weekdays[i]}</span>\n <span className=\"text-sm font-medium\">{format(day, 'd')}</span>\n </div>\n <div className=\"flex flex-col gap-1\">\n {dayEvents.map((event) => (\n <EventChip key={event.id} event={event} onClick={onEventClick} />\n ))}\n </div>\n </button>\n );\n })}\n </div>\n );\n}\n\nfunction DayPane({\n anchor,\n events,\n onEventClick,\n onSlotClick,\n}: {\n anchor: Date;\n events: EventCalendarEvent[];\n onEventClick?: (event: EventCalendarEvent) => void;\n onSlotClick?: (date: Date) => void;\n}) {\n const dayEvents = eventsOnDay(events, anchor);\n return (\n <button\n type=\"button\"\n className={cn(\n 'flex min-h-[16rem] flex-col gap-2 rounded-lg border border-border/40 bg-card p-3 text-left',\n 'hover:bg-accent/20 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring',\n )}\n onClick={() => onSlotClick?.(anchor)}\n >\n <p className=\"text-sm text-muted-foreground\">{format(anchor, 'EEEE, MMMM d')}</p>\n {dayEvents.length === 0 ? (\n <p className=\"text-sm text-muted-foreground\">No events</p>\n ) : (\n <div className=\"flex flex-col gap-2\">\n {dayEvents.map((event) => (\n <EventChip key={event.id} event={event} onClick={onEventClick} />\n ))}\n </div>\n )}\n </button>\n );\n}\n\nexport type { EventCalendarEvent, EventCalendarProps, EventCalendarView };\nexport { EventCalendar };\n","import * as LabelPrimitive from '@radix-ui/react-label';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport type * as React from 'react';\n\nimport { cn } from '../../../lib/utils';\n\nconst labelVariants = cva(\n 'text-sm font-medium leading-none tracking-tight text-foreground peer-disabled:cursor-not-allowed peer-disabled:opacity-70',\n);\n\nfunction Label({\n className,\n ...props\n}: React.ComponentProps<typeof LabelPrimitive.Root> & VariantProps<typeof labelVariants>) {\n return (\n <LabelPrimitive.Root data-slot=\"label\" className={cn(labelVariants(), className)} {...props} />\n );\n}\n\nexport { Label };\n","import type * as LabelPrimitive from '@radix-ui/react-label';\nimport { Slot } from '@radix-ui/react-slot';\nimport * as React from 'react';\nimport {\n Controller,\n type ControllerProps,\n type FieldPath,\n type FieldValues,\n FormProvider,\n useFormContext,\n useFormState,\n} from 'react-hook-form';\n\nimport { cn } from '../../../lib/utils';\nimport { Label } from '../label';\n\nexport const Form = FormProvider;\n\ntype FormFieldContextValue<\n TFieldValues extends FieldValues = FieldValues,\n TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>,\n> = {\n name: TName;\n};\n\nconst FormFieldContext = React.createContext<FormFieldContextValue | null>(null);\n\nexport const FormField = <\n TFieldValues extends FieldValues = FieldValues,\n TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>,\n>({\n ...props\n}: ControllerProps<TFieldValues, TName>) => {\n return (\n <FormFieldContext.Provider value={{ name: props.name }}>\n <Controller {...props} />\n </FormFieldContext.Provider>\n );\n};\n\nexport const useFormField = () => {\n const fieldContext = React.useContext(FormFieldContext);\n const itemContext = React.useContext(FormItemContext);\n\n if (fieldContext === null || fieldContext === undefined) {\n throw new Error('useFormField should be used within <FormField>');\n }\n\n const { getFieldState } = useFormContext();\n const formState = useFormState({ name: fieldContext.name });\n const fieldState = getFieldState(fieldContext.name, formState);\n\n const { id } = itemContext;\n\n return {\n id,\n name: fieldContext.name,\n formItemId: `${id}-form-item`,\n formDescriptionId: `${id}-form-item-description`,\n formMessageId: `${id}-form-item-message`,\n ...fieldState,\n };\n};\n\ntype FormItemContextValue = {\n id: string;\n};\n\nconst FormItemContext = React.createContext<FormItemContextValue>({} as FormItemContextValue);\n\nexport function FormItem({ className, ...props }: React.ComponentProps<'div'>) {\n const id = React.useId();\n\n return (\n <FormItemContext.Provider value={{ id }}>\n <div data-slot=\"form-item\" className={cn('grid gap-3', className)} {...props} />\n </FormItemContext.Provider>\n );\n}\n\nexport function FormLabel({\n className,\n ...props\n}: React.ComponentProps<typeof LabelPrimitive.Root>) {\n const { error, formItemId } = useFormField();\n\n return (\n <Label\n data-slot=\"form-label\"\n data-error={!!error}\n className={cn('data-[error=true]:text-destructive', className)}\n htmlFor={formItemId}\n {...props}\n />\n );\n}\n\nexport function FormControl({ ...props }: React.ComponentProps<typeof Slot>) {\n const { error, formItemId, formDescriptionId, formMessageId } = useFormField();\n\n return (\n <Slot\n data-slot=\"form-control\"\n id={formItemId}\n aria-describedby={!error ? `${formDescriptionId}` : `${formDescriptionId} ${formMessageId}`}\n aria-invalid={!!error}\n {...props}\n />\n );\n}\n\nexport function FormDescription({ className, ...props }: React.ComponentProps<'p'>) {\n const { formDescriptionId } = useFormField();\n\n return (\n <p\n data-slot=\"form-description\"\n id={formDescriptionId}\n className={cn('text-muted-foreground text-sm', className)}\n {...props}\n />\n );\n}\n\nexport function FormMessage({ className, ...props }: React.ComponentProps<'p'>) {\n const { error, formMessageId } = useFormField();\n const body = error ? String(error?.message ?? '') : props.children;\n\n if (!body) {\n return null;\n }\n\n return (\n <p\n data-slot=\"form-message\"\n id={formMessageId}\n className={cn('text-destructive text-sm', className)}\n {...props}\n >\n {body}\n </p>\n );\n}\n","import * as SheetPrimitive from '@radix-ui/react-dialog';\nimport { XIcon } from 'lucide-react';\nimport type * as React from 'react';\n\nimport {\n isRadixPortaledOverlay,\n preventDismissOnPortaledOverlay,\n} from '../../../lib/radix-overlays';\nimport { cn } from '../../../lib/utils';\nimport { InsideModalScrollLockProvider } from '../inside-modal-scroll-lock';\n\nfunction Sheet({ ...props }: React.ComponentProps<typeof SheetPrimitive.Root>) {\n return <SheetPrimitive.Root {...props} />;\n}\n\nfunction SheetTrigger({ ...props }: React.ComponentProps<typeof SheetPrimitive.Trigger>) {\n return <SheetPrimitive.Trigger {...props} />;\n}\n\nfunction SheetClose({ ...props }: React.ComponentProps<typeof SheetPrimitive.Close>) {\n return <SheetPrimitive.Close {...props} />;\n}\n\nfunction SheetPortal({ ...props }: React.ComponentProps<typeof SheetPrimitive.Portal>) {\n return <SheetPrimitive.Portal {...props} />;\n}\n\nfunction SheetOverlay({\n className,\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Overlay>) {\n return (\n <SheetPrimitive.Overlay\n className={cn(\n 'fixed inset-0 z-[100] bg-foreground/20 backdrop-blur-[2px] data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0',\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction SheetContent({\n className,\n children,\n side = 'right',\n onPointerDownOutside,\n onInteractOutside,\n onFocusOutside,\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Content> & {\n side?: 'top' | 'right' | 'bottom' | 'left';\n}) {\n return (\n <SheetPortal>\n <SheetOverlay />\n <SheetPrimitive.Content\n onPointerDownOutside={(event) => {\n preventDismissOnPortaledOverlay(event);\n if (!event.defaultPrevented) {\n onPointerDownOutside?.(event);\n }\n }}\n onInteractOutside={(event) => {\n preventDismissOnPortaledOverlay(event);\n if (!event.defaultPrevented) {\n onInteractOutside?.(event);\n }\n }}\n onFocusOutside={(event) => {\n preventDismissOnPortaledOverlay(event);\n if (!event.defaultPrevented) {\n onFocusOutside?.(event);\n }\n }}\n className={cn(\n 'bg-background border-border/50 data-[state=open]:animate-in data-[state=closed]:animate-out fixed z-[100] flex flex-col gap-4 border p-6 shadow-[var(--shadow-elevated)] transition ease-in-out data-[state=closed]:duration-300 data-[state=open]:duration-500 overflow-y-auto overflow-x-hidden max-h-full',\n side === 'right' &&\n 'data-[state=closed]:slide-out-to-right data-[state=open]:slide-in-from-right inset-y-0 right-0 h-full w-11/12 border-l sm:max-w-sm',\n side === 'left' &&\n 'data-[state=closed]:slide-out-to-left data-[state=open]:slide-in-from-left inset-y-0 left-0 h-full w-11/12 border-r sm:max-w-sm',\n side === 'top' &&\n 'data-[state=closed]:slide-out-to-top data-[state=open]:slide-in-from-top inset-x-0 top-0 h-auto border-b',\n side === 'bottom' &&\n 'data-[state=closed]:slide-out-to-bottom data-[state=open]:slide-in-from-bottom inset-x-0 bottom-0 h-auto border-t',\n className,\n )}\n {...props}\n >\n {/* Keep Select/MultiSelect menus in-tree so react-remove-scroll does not swallow wheel events. */}\n <InsideModalScrollLockProvider>{children}</InsideModalScrollLockProvider>\n <SheetPrimitive.Close className=\"ring-offset-background focus:ring-ring data-[state=open]:bg-secondary absolute top-6 right-6 rounded-xs opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none cursor-pointer\">\n <XIcon className=\"h-4 w-4\" />\n <span className=\"sr-only\">Close</span>\n </SheetPrimitive.Close>\n </SheetPrimitive.Content>\n </SheetPortal>\n );\n}\n\nconst SheetHeader = ({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) => (\n <div className={cn('flex flex-col space-y-2 text-left pb-4', className)} {...props} />\n);\nSheetHeader.displayName = 'SheetHeader';\n\nconst SheetFooter = ({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) => (\n <div\n className={cn(\n 'flex flex-col-reverse gap-2 pt-4 border-t sm:flex-row sm:justify-end sm:space-x-2 sm:gap-0',\n className,\n )}\n {...props}\n />\n);\nSheetFooter.displayName = 'SheetFooter';\n\nfunction SheetTitle({ className, ...props }: React.ComponentProps<typeof SheetPrimitive.Title>) {\n return (\n <SheetPrimitive.Title\n className={cn('text-lg font-semibold text-foreground', className)}\n {...props}\n />\n );\n}\n\nfunction SheetDescription({\n className,\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Description>) {\n return (\n <SheetPrimitive.Description\n className={cn('text-sm text-muted-foreground', className)}\n {...props}\n />\n );\n}\n\nexport {\n isRadixPortaledOverlay,\n Sheet,\n SheetClose,\n SheetContent,\n SheetDescription,\n SheetFooter,\n SheetHeader,\n SheetOverlay,\n SheetPortal,\n SheetTitle,\n SheetTrigger,\n};\n","import { Info } from 'lucide-react';\nimport * as React from 'react';\n\nimport { cn } from '../../../lib/utils';\nimport { InsideModalScrollLockProvider } from '../inside-modal-scroll-lock';\nimport { Popover, PopoverContent, PopoverTrigger } from '../popover';\nimport { Sheet, SheetContent, SheetDescription, SheetHeader, SheetTitle } from '../sheet';\n\nexport interface FormDrawerProps {\n open: boolean;\n onOpenChange: (open: boolean) => void;\n title: React.ReactNode;\n /**\n * @deprecated Prefer `info` (tooltip). Do not use for obvious UI chrome\n * (“search/sort/open…”) — only real documentation belongs in `info`.\n */\n description?: React.ReactNode;\n /**\n * Proper docs / instructions for the title. Opens on **click** only —\n * hover tooltips race with drawer slide-under-cursor and cannot be made safe.\n */\n info?: React.ReactNode;\n children: React.ReactNode;\n /** Max width class - applied to SheetContent via contentClassName preferred */\n className?: string;\n /** Sheet content class for overflow/scrolling / width */\n contentClassName?: string;\n}\n\n/**\n * A drawer shell for forms. Provides consistent Sheet + Header layout.\n * The form content (including SheetFooter) is provided by children.\n * Mobile-friendly: full width on small screens, max-width on larger.\n */\nexport function FormDrawer({\n open,\n onOpenChange,\n title,\n description,\n info,\n children,\n className,\n contentClassName,\n}: FormDrawerProps) {\n const bodyRef = React.useRef<HTMLDivElement>(null);\n const [infoOpen, setInfoOpen] = React.useState(false);\n\n React.useEffect(() => {\n if (!open) setInfoOpen(false);\n }, [open]);\n\n return (\n <Sheet open={open} onOpenChange={onOpenChange}>\n <SheetContent\n data-slot=\"form-drawer-content\"\n // Focus an inert body node — never the title info control.\n onOpenAutoFocus={(event) => {\n event.preventDefault();\n bodyRef.current?.focus({ preventScroll: true });\n }}\n onCloseAutoFocus={(event) => event.preventDefault()}\n className={cn(\n 'flex flex-col gap-4 w-[calc(100%-2rem)] max-w-[calc(100%-2rem)] sm:max-w-lg overflow-hidden',\n contentClassName,\n )}\n >\n <SheetHeader className=\"flex-shrink-0 gap-2 pb-2\">\n <SheetTitle className=\"flex items-center gap-1.5 text-base sm:text-lg\">\n <span className=\"min-w-0\">{title}</span>\n {info ? (\n <Popover open={infoOpen} onOpenChange={setInfoOpen}>\n <PopoverTrigger asChild>\n <button\n type=\"button\"\n className=\"inline-flex shrink-0 cursor-help rounded-sm p-0.5 text-muted-foreground hover:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring\"\n aria-label=\"More info\"\n aria-expanded={infoOpen}\n >\n <Info className=\"h-3.5 w-3.5\" aria-hidden />\n </button>\n </PopoverTrigger>\n <PopoverContent\n side=\"bottom\"\n align=\"start\"\n sideOffset={6}\n className=\"z-[120] max-w-xs p-3 text-sm leading-snug\"\n >\n {info}\n </PopoverContent>\n </Popover>\n ) : null}\n </SheetTitle>\n {description ? (\n <SheetDescription className=\"text-sm\">{description}</SheetDescription>\n ) : null}\n </SheetHeader>\n <InsideModalScrollLockProvider>\n <div\n ref={bodyRef}\n tabIndex={-1}\n className={cn(\n // Inset so focus rings / box-shadow on full-width inputs are not clipped by overflow-y-auto\n 'flex flex-col flex-1 min-h-0 gap-4 overflow-y-auto px-2 py-1 outline-none',\n className,\n )}\n >\n {children}\n </div>\n </InsideModalScrollLockProvider>\n </SheetContent>\n </Sheet>\n );\n}\n","import type * as React from 'react';\nimport { cn } from '../../../lib/utils';\n\nconst linkStyles =\n 'cursor-pointer font-medium text-blue-600 underline-offset-4 hover:text-blue-700 hover:underline dark:text-blue-400 dark:hover:text-blue-300';\n\n/** Allowed URL schemes for href. Blocks javascript:, data:, vbscript:, etc. to prevent XSS. */\nconst ALLOWED_SCHEMES = ['http:', 'https:', 'mailto:', 'tel:', ''];\n\nfunction sanitizeHref(to: string): string {\n const trimmed = to.trim();\n if (!trimmed) return '#';\n const hasScheme = /^[a-z][a-z0-9+.-]*:/i.test(trimmed);\n if (hasScheme) {\n const scheme = trimmed.split(':')[0];\n if (scheme && !ALLOWED_SCHEMES.includes(`${scheme.toLowerCase()}:`)) {\n return '#';\n }\n }\n return trimmed;\n}\n\nexport interface LinkProps extends React.AnchorHTMLAttributes<HTMLAnchorElement> {\n /** URL or path (rendered as href on a plain <a>) */\n to: string;\n /** Open in new tab with security attributes */\n external?: boolean;\n}\n\n/** @deprecated Unused in SPAs — prefer react-router `Link`. Kept for Storybook demos only. */\nfunction Link({ className, external, to, ...props }: LinkProps) {\n const href = sanitizeHref(to);\n if (external) {\n return (\n <a\n href={href}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className={cn(linkStyles, className)}\n {...props}\n />\n );\n }\n return <a href={href} className={cn(linkStyles, className)} {...props} />;\n}\n\nexport { Link, linkStyles };\n","import { CheckSquare, X } from 'lucide-react';\nimport * as React from 'react';\nimport { cn } from '../../../lib/utils';\nimport { Badge } from '../badge';\nimport { Button } from '../button';\nimport { Checkbox } from '../checkbox';\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuTrigger,\n} from '../dropdown-menu';\nimport { DropdownScrollableList } from '../dropdown-scrollable-list';\nimport { Input } from '../input';\nimport { useInsideModalScrollLock } from '../inside-modal-scroll-lock';\n\nexport interface MultiSelectOption {\n value: string;\n label: string;\n}\n\nexport interface MultiSelectTranslations {\n triggerLabel?: string;\n searchPlaceholder?: string;\n noOptionsText?: string;\n removeOptionAriaLabel?: string;\n /**\n * When set and there are selected values with `showSelectedTags`, the trigger\n * shows this label instead of `triggerLabel`. Omit / leave empty for legacy\n * behavior (always `triggerLabel`).\n */\n addMoreLabel?: string;\n}\n\ninterface MultiSelectProps {\n value: string[];\n onValueChange: (value: string[]) => void;\n options: MultiSelectOption[];\n disabled?: boolean;\n className?: string;\n 'aria-label'?: string;\n /** When true, selected values render as removable tags above the trigger. */\n showSelectedTags?: boolean;\n translations?: MultiSelectTranslations;\n}\n\nconst DEFAULT_TRANSLATIONS: Required<Omit<MultiSelectTranslations, 'addMoreLabel'>> & {\n addMoreLabel: string;\n} = {\n triggerLabel: 'Select options',\n searchPlaceholder: 'Search...',\n noOptionsText: 'No options',\n removeOptionAriaLabel: 'Remove',\n addMoreLabel: '',\n};\n\nfunction MultiSelect({\n value,\n onValueChange,\n options,\n disabled = false,\n className,\n 'aria-label': ariaLabel,\n showSelectedTags = false,\n translations,\n}: MultiSelectProps) {\n const t = { ...DEFAULT_TRANSLATIONS, ...translations };\n const insideModalScrollLock = useInsideModalScrollLock();\n const [search, setSearch] = React.useState('');\n const selectedSet = React.useMemo(() => new Set(value), [value]);\n const labelByValue = React.useMemo(() => {\n const map = new Map<string, string>();\n for (const opt of options) map.set(opt.value, opt.label);\n return map;\n }, [options]);\n const filteredOptions = React.useMemo(() => {\n const q = search.trim().toLowerCase();\n if (!q) return options;\n return options.filter((opt) => opt.label.toLowerCase().includes(q));\n }, [options, search]);\n\n const addMore = t.addMoreLabel.trim();\n const triggerText = value.length > 0 && showSelectedTags && addMore ? addMore : t.triggerLabel;\n\n const toggle = (optionValue: string, checked: boolean) => {\n if (checked) {\n onValueChange([...value, optionValue]);\n return;\n }\n onValueChange(value.filter((item) => item !== optionValue));\n };\n\n return (\n <div className={cn('space-y-2', className)}>\n {showSelectedTags && value.length > 0 ? (\n <div className=\"flex flex-wrap gap-1.5\">\n {value.map((optionValue) => {\n const label = labelByValue.get(optionValue) ?? optionValue;\n return (\n <Badge key={optionValue} variant=\"secondary\" className=\"gap-1 pr-1 font-normal\">\n {label}\n {!disabled ? (\n <button\n type=\"button\"\n className=\"rounded-full p-0.5 hover:bg-muted-foreground/20\"\n aria-label={`${t.removeOptionAriaLabel} ${label}`}\n onClick={() => toggle(optionValue, false)}\n >\n <X className=\"h-3 w-3\" />\n </button>\n ) : null}\n </Badge>\n );\n })}\n </div>\n ) : null}\n <DropdownMenu modal={false}>\n <DropdownMenuTrigger asChild>\n <Button\n type=\"button\"\n variant=\"outline\"\n className=\"w-full justify-between\"\n aria-label={ariaLabel ?? triggerText}\n disabled={disabled}\n >\n <span className=\"inline-flex items-center gap-2\">\n <CheckSquare className=\"h-4 w-4\" />\n {triggerText}\n </span>\n {!showSelectedTags && value.length > 0 ? (\n <Badge variant=\"secondary\">{value.length}</Badge>\n ) : null}\n </Button>\n </DropdownMenuTrigger>\n <DropdownMenuContent\n align=\"start\"\n portalled={!insideModalScrollLock}\n className=\"z-120 flex w-(--radix-dropdown-menu-trigger-width) min-w-[16rem] flex-col overflow-hidden p-0\"\n >\n <div className=\"shrink-0 px-1 pb-2 pt-1\">\n <Input\n value={search}\n onChange={(event) => setSearch(event.target.value)}\n placeholder={t.searchPlaceholder}\n aria-label={t.searchPlaceholder}\n />\n </div>\n <DropdownScrollableList\n grow={false}\n scrollAreaClassName=\"max-h-52 overflow-y-auto\"\n scrollKey={`${filteredOptions.length}:${search}`}\n >\n {filteredOptions.length === 0 ? (\n <p className=\"px-2 py-1.5 text-sm text-muted-foreground\">{t.noOptionsText}</p>\n ) : (\n filteredOptions.map((option) => {\n const checked = selectedSet.has(option.value);\n return (\n <DropdownMenuItem\n key={option.value}\n onSelect={(event) => {\n event.preventDefault();\n toggle(option.value, !checked);\n }}\n >\n <Checkbox checked={checked} />\n {option.label}\n </DropdownMenuItem>\n );\n })\n )}\n </DropdownScrollableList>\n </DropdownMenuContent>\n </DropdownMenu>\n </div>\n );\n}\n\nexport { MultiSelect };\n","import * as ScrollAreaPrimitive from '@radix-ui/react-scroll-area';\nimport * as React from 'react';\n\nimport { cn } from '../../../lib/utils';\n\nconst ScrollArea = React.forwardRef<\n React.ElementRef<typeof ScrollAreaPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof ScrollAreaPrimitive.Root>\n>(({ className, children, ...props }, ref) => (\n <ScrollAreaPrimitive.Root\n ref={ref}\n className={cn('relative overflow-hidden', className)}\n {...props}\n >\n <ScrollAreaPrimitive.Viewport className=\"h-full w-full rounded-[inherit]\">\n {children}\n </ScrollAreaPrimitive.Viewport>\n <ScrollBar />\n <ScrollAreaPrimitive.Corner />\n </ScrollAreaPrimitive.Root>\n));\nScrollArea.displayName = ScrollAreaPrimitive.Root.displayName;\n\nconst ScrollBar = React.forwardRef<\n React.ElementRef<typeof ScrollAreaPrimitive.ScrollAreaScrollbar>,\n React.ComponentPropsWithoutRef<typeof ScrollAreaPrimitive.ScrollAreaScrollbar>\n>(({ className, orientation = 'vertical', ...props }, ref) => (\n <ScrollAreaPrimitive.ScrollAreaScrollbar\n ref={ref}\n orientation={orientation}\n className={cn(\n 'flex touch-none select-none transition-colors',\n orientation === 'vertical' && 'h-full w-2.5 border-l border-l-transparent p-[1px]',\n orientation === 'horizontal' && 'h-2.5 flex-col border-t border-t-transparent p-[1px]',\n className,\n )}\n {...props}\n >\n <ScrollAreaPrimitive.ScrollAreaThumb className=\"relative flex-1 rounded-full bg-border\" />\n </ScrollAreaPrimitive.ScrollAreaScrollbar>\n));\nScrollBar.displayName = ScrollAreaPrimitive.ScrollAreaScrollbar.displayName;\n\nexport { ScrollArea, ScrollBar };\n","import { Search, X } from 'lucide-react';\nimport type * as React from 'react';\n\nimport { cn } from '../../../lib/utils';\nimport { Button } from '../button';\nimport { Input } from '../input';\n\nexport type SearchFieldProps = {\n value: string;\n onValueChange: (value: string) => void;\n onSubmit: () => void;\n /** Clears draft/applied search. Shown only when value is non-empty. */\n onClear?: () => void;\n placeholder?: string;\n /** Accessible label for the text field (defaults to placeholder). */\n 'aria-label'?: string;\n searchButtonLabel?: string;\n clearButtonLabel?: string;\n className?: string;\n inputClassName?: string;\n disabled?: boolean;\n id?: string;\n name?: string;\n autoComplete?: string;\n};\n\n/**\n * Joined search control: text field + optional clear (X) + primary magnifier submit.\n */\nexport function SearchField({\n value,\n onValueChange,\n onSubmit,\n onClear,\n placeholder,\n 'aria-label': ariaLabel,\n searchButtonLabel = 'Search',\n clearButtonLabel = 'Clear',\n className,\n inputClassName,\n disabled,\n id,\n name,\n autoComplete = 'off',\n}: SearchFieldProps) {\n const hasText = value.trim().length > 0;\n\n const handleKeyDown: React.KeyboardEventHandler<HTMLInputElement> = (event) => {\n if (event.key === 'Enter') {\n event.preventDefault();\n onSubmit();\n }\n };\n\n return (\n <div\n className={cn(\n 'flex h-9 w-full min-w-0 overflow-hidden rounded-md border border-input bg-background shadow-xs',\n 'transition-[border-color,box-shadow] focus-within:border-ring focus-within:ring-2 focus-within:ring-ring/20',\n disabled && 'opacity-60',\n className,\n )}\n >\n <div className=\"relative flex min-w-0 flex-1 items-center\">\n <Input\n id={id}\n name={name}\n autoComplete={autoComplete}\n disabled={disabled}\n placeholder={placeholder}\n value={value}\n onChange={(e) => onValueChange(e.target.value)}\n onKeyDown={handleKeyDown}\n className={cn(\n 'h-9 rounded-none rounded-l-md border-0 bg-transparent px-3 shadow-none',\n 'focus-visible:border-transparent focus-visible:ring-0',\n hasText && onClear && 'pr-9',\n inputClassName,\n )}\n aria-label={ariaLabel ?? placeholder}\n />\n {hasText && onClear ? (\n <Button\n type=\"button\"\n variant=\"ghost\"\n size=\"icon-sm\"\n disabled={disabled}\n onClick={onClear}\n aria-label={clearButtonLabel}\n className=\"absolute right-1 top-1/2 -translate-y-1/2 text-muted-foreground hover:bg-muted/60 hover:text-foreground\"\n >\n <X className=\"h-4 w-4\" aria-hidden />\n </Button>\n ) : null}\n </div>\n <Button\n type=\"button\"\n variant=\"default\"\n disabled={disabled}\n onClick={onSubmit}\n aria-label={searchButtonLabel}\n className={cn(\n 'h-full w-10 shrink-0 rounded-none rounded-r-md border-0 border-l border-primary-foreground/15 px-0 shadow-none',\n 'hover:bg-primary/90 active:bg-primary/95',\n 'shadow-[inset_0_1px_0_0_color-mix(in_oklch,var(--primary-foreground)_20%,transparent)]',\n )}\n >\n <Search className=\"h-4 w-4\" aria-hidden />\n </Button>\n </div>\n );\n}\n","/** Show search in single-select dropdowns when option count reaches this threshold. */\nexport const SEARCHABLE_SELECT_MIN_OPTIONS = 8;\n\nexport interface SelectSearchableOption {\n label: string;\n}\n\n/** Fold Turkish letters so \"hektas\" matches \"Hektaş\" / HEKTS labels. */\nexport function foldSearchText(value: string): string {\n return value\n .trim()\n .toLocaleLowerCase('tr')\n .replace(/ç/g, 'c')\n .replace(/ğ/g, 'g')\n .replace(/ı/g, 'i')\n .replace(/i̇/g, 'i')\n .replace(/ö/g, 'o')\n .replace(/ş/g, 's')\n .replace(/ü/g, 'u');\n}\n\nexport function filterSelectOptions<T extends SelectSearchableOption>(\n options: T[],\n query: string,\n): T[] {\n const q = foldSearchText(query);\n if (!q) return options;\n return options.filter((option) => foldSearchText(option.label).includes(q));\n}\n\nexport function isSelectSearchable(optionCount: number, searchable?: boolean): boolean {\n if (searchable === true) return true;\n if (searchable === false) return false;\n return optionCount >= SEARCHABLE_SELECT_MIN_OPTIONS;\n}\n","import * as React from 'react';\nimport { controlBase, controlFocus } from '../../../lib/surfaces';\nimport { cn } from '../../../lib/utils';\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuTrigger,\n dropdownMenuSelectOptionsMaxHeightClassName,\n} from '../dropdown-menu';\nimport { DropdownScrollableList } from '../dropdown-scrollable-list';\nimport { DropdownSelectSearchInput } from '../dropdown-select-search-input';\nimport { useInsideModalScrollLock } from '../inside-modal-scroll-lock';\nimport { filterSelectOptions, isSelectSearchable } from '../select-search';\n\nexport interface SelectOption {\n value: string;\n label: string;\n}\n\nexport interface SelectTranslations {\n searchPlaceholder?: string;\n noOptionsText?: string;\n}\n\ninterface SelectProps {\n value: string;\n onValueChange: (value: string) => void;\n options: SelectOption[];\n placeholder?: string;\n disabled?: boolean;\n className?: string;\n triggerClassName?: string;\n /** When omitted, search appears automatically for 8+ options. */\n searchable?: boolean;\n translations?: SelectTranslations;\n 'aria-label'?: string;\n}\n\nconst DEFAULT_TRANSLATIONS: Required<SelectTranslations> = {\n searchPlaceholder: 'Search…',\n noOptionsText: 'No options',\n};\n\nfunction Select({\n value,\n onValueChange,\n options,\n placeholder = '',\n disabled = false,\n className,\n triggerClassName,\n searchable,\n translations,\n 'aria-label': ariaLabel,\n}: SelectProps) {\n const t = { ...DEFAULT_TRANSLATIONS, ...translations };\n const insideModalScrollLock = useInsideModalScrollLock();\n const [open, setOpen] = React.useState(false);\n const [search, setSearch] = React.useState('');\n const showSearch = isSelectSearchable(options.length, searchable);\n const filteredOptions = React.useMemo(\n () => (showSearch ? filterSelectOptions(options, search) : options),\n [options, search, showSearch],\n );\n const selectedOption = options.find((opt) => opt.value === value);\n const displayValue = selectedOption?.label ?? placeholder;\n\n const handleOpenChange = (nextOpen: boolean) => {\n setOpen(nextOpen);\n if (!nextOpen) setSearch('');\n };\n\n return (\n <DropdownMenu modal={false} open={open} onOpenChange={handleOpenChange}>\n <DropdownMenuTrigger asChild>\n <button\n type=\"button\"\n role=\"combobox\"\n aria-expanded={open}\n aria-label={ariaLabel}\n aria-haspopup=\"listbox\"\n disabled={disabled}\n className={cn(\n controlBase,\n controlFocus,\n 'flex h-9 w-full cursor-pointer items-center justify-between px-3 py-2 text-sm',\n 'hover:bg-accent/40 disabled:pointer-events-none disabled:opacity-50',\n !selectedOption && 'text-muted-foreground',\n triggerClassName,\n className,\n )}\n >\n <span className=\"min-w-0 truncate text-left\">{displayValue}</span>\n <ChevronDownIcon className=\"ml-2 h-4 w-4 shrink-0 text-muted-foreground\" />\n </button>\n </DropdownMenuTrigger>\n <DropdownMenuContent\n animated={false}\n align=\"start\"\n sideOffset={0}\n portalled={!insideModalScrollLock}\n className=\"z-[120] flex min-w-(--radix-dropdown-menu-trigger-width) flex-col overflow-hidden p-0\"\n onCloseAutoFocus={(e) => e.preventDefault()}\n >\n {showSearch ? (\n <DropdownSelectSearchInput\n value={search}\n onChange={setSearch}\n placeholder={t.searchPlaceholder}\n autoFocus={open}\n />\n ) : null}\n <DropdownScrollableList\n grow={false}\n scrollAreaClassName={cn(\n 'overflow-y-auto overscroll-y-contain p-1',\n dropdownMenuSelectOptionsMaxHeightClassName,\n )}\n scrollKey={`${filteredOptions.length}-${open ? 1 : 0}-${search}`}\n >\n {filteredOptions.length === 0 ? (\n <p className=\"px-2 py-1.5 text-sm text-muted-foreground\">{t.noOptionsText}</p>\n ) : (\n filteredOptions.map((opt) => (\n <DropdownMenuItem\n key={opt.value}\n onSelect={() => {\n onValueChange(opt.value);\n }}\n >\n {opt.label}\n </DropdownMenuItem>\n ))\n )}\n </DropdownScrollableList>\n </DropdownMenuContent>\n </DropdownMenu>\n );\n}\n\nfunction ChevronDownIcon({ className, ...props }: React.SVGProps<SVGSVGElement>) {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n className={className}\n aria-hidden=\"true\"\n {...props}\n >\n <title>Chevron down</title>\n <path d=\"m6 9 6 6 6-6\" />\n </svg>\n );\n}\n\nexport { Select };\n","import * as SeparatorPrimitive from '@radix-ui/react-separator';\nimport * as React from 'react';\n\nimport { cn } from '../../../lib/utils';\n\nconst Separator = React.forwardRef<\n React.ElementRef<typeof SeparatorPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof SeparatorPrimitive.Root>\n>(({ className, orientation = 'horizontal', decorative = true, ...props }, ref) => (\n <SeparatorPrimitive.Root\n ref={ref}\n decorative={decorative}\n orientation={orientation}\n className={cn(\n 'shrink-0 bg-border',\n orientation === 'horizontal' ? 'h-[1px] w-full' : 'h-full w-[1px]',\n className,\n )}\n {...props}\n />\n));\nSeparator.displayName = SeparatorPrimitive.Root.displayName;\n\nexport { Separator };\n","import * as SwitchPrimitive from '@radix-ui/react-switch';\nimport * as React from 'react';\n\nimport { controlFocus } from '../../../lib/surfaces';\nimport { cn } from '../../../lib/utils';\n\nconst Switch = React.forwardRef<\n React.ComponentRef<typeof SwitchPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof SwitchPrimitive.Root>\n>(({ className, ...props }, ref) => (\n <SwitchPrimitive.Root\n ref={ref}\n data-slot=\"switch\"\n className={cn(\n 'peer inline-flex h-[22px] w-11 shrink-0 cursor-pointer items-center rounded-full border-2 border-transparent shadow-[var(--shadow-surface)] transition-colors',\n controlFocus,\n 'disabled:cursor-not-allowed disabled:opacity-50',\n 'data-[state=checked]:bg-primary data-[state=unchecked]:bg-input',\n className,\n )}\n {...props}\n >\n <SwitchPrimitive.Thumb\n data-slot=\"switch-thumb\"\n className={cn(\n 'pointer-events-none block size-[18px] rounded-full bg-background shadow-sm ring-0 transition-transform',\n 'data-[state=checked]:translate-x-[22px] data-[state=unchecked]:translate-x-0.5',\n )}\n />\n </SwitchPrimitive.Root>\n));\nSwitch.displayName = SwitchPrimitive.Root.displayName;\n\nexport { Switch };\n","import * as React from 'react';\n\nimport { cn } from '../../../lib/utils';\n\nconst Table = React.forwardRef<HTMLTableElement, React.HTMLAttributes<HTMLTableElement>>(\n ({ className, ...props }, ref) => (\n <div className=\"relative w-full overflow-auto\">\n <table ref={ref} className={cn('w-full caption-bottom text-sm', className)} {...props} />\n </div>\n ),\n);\nTable.displayName = 'Table';\n\nconst TableHeader = React.forwardRef<\n HTMLTableSectionElement,\n React.HTMLAttributes<HTMLTableSectionElement>\n>(({ className, ...props }, ref) => (\n <thead\n ref={ref}\n className={cn('[&_tr]:border-border/40 [&_tr]:border-b', className)}\n {...props}\n />\n));\nTableHeader.displayName = 'TableHeader';\n\nconst TableBody = React.forwardRef<\n HTMLTableSectionElement,\n React.HTMLAttributes<HTMLTableSectionElement>\n>(({ className, ...props }, ref) => (\n <tbody ref={ref} className={cn('[&_tr:last-child]:border-0', className)} {...props} />\n));\nTableBody.displayName = 'TableBody';\n\nconst TableFooter = React.forwardRef<\n HTMLTableSectionElement,\n React.HTMLAttributes<HTMLTableSectionElement>\n>(({ className, ...props }, ref) => (\n <tfoot\n ref={ref}\n className={cn(\n 'border-border/40 border-t bg-muted/40 font-medium [&>tr]:last:border-b-0',\n className,\n )}\n {...props}\n />\n));\nTableFooter.displayName = 'TableFooter';\n\nconst TableRow = React.forwardRef<HTMLTableRowElement, React.HTMLAttributes<HTMLTableRowElement>>(\n ({ className, ...props }, ref) => (\n <tr\n ref={ref}\n className={cn(\n 'border-border/40 border-b transition-colors hover:bg-muted/40 data-[state=selected]:bg-muted/60',\n className,\n )}\n {...props}\n />\n ),\n);\nTableRow.displayName = 'TableRow';\n\nconst TableHead = React.forwardRef<\n HTMLTableCellElement,\n React.ThHTMLAttributes<HTMLTableCellElement>\n>(({ className, ...props }, ref) => (\n <th\n ref={ref}\n className={cn(\n 'h-12 px-4 text-left align-middle font-medium text-muted-foreground [&:has([role=checkbox])]:pr-0',\n className,\n )}\n {...props}\n />\n));\nTableHead.displayName = 'TableHead';\n\nconst TableCell = React.forwardRef<\n HTMLTableCellElement,\n React.TdHTMLAttributes<HTMLTableCellElement>\n>(({ className, ...props }, ref) => (\n <td\n ref={ref}\n className={cn('p-4 align-middle [&:has([role=checkbox])]:pr-0', className)}\n {...props}\n />\n));\nTableCell.displayName = 'TableCell';\n\nconst TableCaption = React.forwardRef<\n HTMLTableCaptionElement,\n React.HTMLAttributes<HTMLTableCaptionElement>\n>(({ className, ...props }, ref) => (\n <caption ref={ref} className={cn('mt-4 text-sm text-muted-foreground', className)} {...props} />\n));\nTableCaption.displayName = 'TableCaption';\n\nexport { Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, TableRow };\n","import * as TabsPrimitive from '@radix-ui/react-tabs';\nimport type * as React from 'react';\n\nimport { cn } from '../../../lib/utils';\n\nexport function Tabs({ className, ...props }: React.ComponentProps<typeof TabsPrimitive.Root>) {\n return (\n <TabsPrimitive.Root\n data-slot=\"tabs\"\n className={cn('flex flex-col gap-2', className)}\n {...props}\n />\n );\n}\n\nexport function TabsList({ className, ...props }: React.ComponentProps<typeof TabsPrimitive.List>) {\n return (\n <TabsPrimitive.List\n data-slot=\"tabs-list\"\n className={cn(\n 'inline-flex h-9 items-center justify-center rounded-lg bg-muted p-1 text-muted-foreground',\n className,\n )}\n {...props}\n />\n );\n}\n\nexport function TabsTrigger({\n className,\n ...props\n}: React.ComponentProps<typeof TabsPrimitive.Trigger>) {\n return (\n <TabsPrimitive.Trigger\n data-slot=\"tabs-trigger\"\n className={cn(\n 'inline-flex items-center justify-center whitespace-nowrap rounded-md px-3 py-1 text-sm font-medium ring-offset-background transition-all cursor-pointer',\n 'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2',\n 'disabled:pointer-events-none disabled:opacity-50',\n 'data-[state=active]:bg-background data-[state=active]:text-foreground data-[state=active]:shadow-sm',\n className,\n )}\n {...props}\n />\n );\n}\n\nexport function TabsContent({\n className,\n ...props\n}: React.ComponentProps<typeof TabsPrimitive.Content>) {\n return (\n <TabsPrimitive.Content\n data-slot=\"tabs-content\"\n className={cn(\n 'mt-2 ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2',\n className,\n )}\n {...props}\n />\n );\n}\n","import * as React from 'react';\n\nimport { controlBase, controlFocus, controlInvalid } from '../../../lib/surfaces';\nimport { cn } from '../../../lib/utils';\n\n/** Multi-line text field. See Storybook **UI/Textarea**. */\nconst Textarea = React.forwardRef<HTMLTextAreaElement, React.ComponentProps<'textarea'>>(\n ({ className, ...props }, ref) => (\n <textarea\n ref={ref}\n data-slot=\"textarea\"\n className={cn(\n controlBase,\n controlFocus,\n controlInvalid,\n 'placeholder:text-muted-foreground selection:bg-primary selection:text-primary-foreground',\n 'flex min-h-[96px] w-full min-w-0 px-3 py-2 text-base md:text-sm',\n 'disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50',\n className,\n )}\n {...props}\n />\n ),\n);\nTextarea.displayName = 'Textarea';\n\nexport { Textarea };\n","import * as TooltipPrimitive from '@radix-ui/react-tooltip';\nimport * as React from 'react';\n\nimport { surfaceOverlay } from '../../../lib/surfaces';\nimport { cn } from '../../../lib/utils';\n\nexport const TooltipProvider = TooltipPrimitive.Provider;\n\nexport interface TooltipProps {\n content: React.ReactNode;\n children: React.ReactNode;\n side?: 'top' | 'right' | 'bottom' | 'left';\n align?: 'start' | 'center' | 'end';\n /**\n * Delay (in ms) before the tooltip opens on hover.\n */\n delayDuration?: number;\n /**\n * Delay (in ms) before the tooltip closes after hover ends.\n * Keep long enough to move the pointer onto the bubble.\n */\n closeDelay?: number;\n}\n\nfunction prefersCoarsePointer(): boolean {\n if (typeof window === 'undefined' || typeof window.matchMedia !== 'function') return false;\n return window.matchMedia('(pointer: coarse)').matches;\n}\n\nfunction isPointerOver(el: HTMLElement | null, x: number, y: number): boolean {\n if (!el || typeof document.elementFromPoint !== 'function') return false;\n if (!Number.isFinite(x) || !Number.isFinite(y)) return false;\n const under = document.elementFromPoint(x, y);\n return Boolean(under && (under === el || el.contains(under)));\n}\n\n/**\n * Hover-driven tooltip. Never opens from focus. Never opens when UI mounts\n * under an existing cursor — hover is armed only after the pointer leaves the\n * trigger, or moves while clearly outside it (checked via elementFromPoint\n * after the trigger is laid out).\n *\n * Touch / coarse pointers tap to toggle.\n *\n * For chrome that appears with drawers/dialogs (title info), prefer click\n * (FormDrawer `info` uses a Popover) — hover races with slide-under-cursor.\n */\nexport function Tooltip({\n content,\n children,\n side = 'top',\n align = 'center',\n delayDuration = 200,\n closeDelay = 280,\n}: TooltipProps) {\n const [open, setOpen] = React.useState(false);\n const triggerRef = React.useRef<HTMLButtonElement | null>(null);\n const stickyRef = React.useRef(false);\n const hoveringRef = React.useRef(false);\n const openRef = React.useRef(false);\n /** False until leave, or a post-layout move while outside the trigger. */\n const hoverArmedRef = React.useRef(false);\n /** Trigger has painted; safe to trust elementFromPoint. */\n const layoutReadyRef = React.useRef(false);\n const lastPointerRef = React.useRef({ x: Number.NaN, y: Number.NaN });\n\n const openTimeoutRef = React.useRef<number | null>(null);\n const closeTimeoutRef = React.useRef<number | null>(null);\n\n React.useEffect(() => {\n openRef.current = open;\n }, [open]);\n\n React.useLayoutEffect(() => {\n hoverArmedRef.current = false;\n stickyRef.current = false;\n hoveringRef.current = false;\n layoutReadyRef.current = false;\n setOpen(false);\n\n const markReady = () => {\n layoutReadyRef.current = true;\n const el = triggerRef.current;\n const { x, y } = lastPointerRef.current;\n if (isPointerOver(el, x, y)) {\n hoverArmedRef.current = false;\n return;\n }\n hoverArmedRef.current = true;\n };\n\n let raf2 = 0;\n const raf1 = window.requestAnimationFrame(() => {\n raf2 = window.requestAnimationFrame(markReady);\n });\n\n const onPointerMove = (event: PointerEvent) => {\n lastPointerRef.current = { x: event.clientX, y: event.clientY };\n if (!layoutReadyRef.current) return;\n if (isPointerOver(triggerRef.current, event.clientX, event.clientY)) return;\n hoverArmedRef.current = true;\n };\n\n window.addEventListener('pointermove', onPointerMove, { passive: true });\n return () => {\n window.cancelAnimationFrame(raf1);\n window.cancelAnimationFrame(raf2);\n window.removeEventListener('pointermove', onPointerMove);\n };\n }, []);\n\n const clearOpenTimeout = React.useCallback(() => {\n if (openTimeoutRef.current !== null) {\n window.clearTimeout(openTimeoutRef.current);\n openTimeoutRef.current = null;\n }\n }, []);\n\n const clearCloseTimeout = React.useCallback(() => {\n if (closeTimeoutRef.current !== null) {\n window.clearTimeout(closeTimeoutRef.current);\n closeTimeoutRef.current = null;\n }\n }, []);\n\n const scheduleClose = React.useCallback(() => {\n if (stickyRef.current || hoveringRef.current) return;\n clearOpenTimeout();\n clearCloseTimeout();\n if (closeDelay === 0) {\n setOpen(false);\n return;\n }\n closeTimeoutRef.current = window.setTimeout(() => {\n if (stickyRef.current || hoveringRef.current) return;\n setOpen(false);\n }, closeDelay);\n }, [clearCloseTimeout, clearOpenTimeout, closeDelay]);\n\n const handleOpenChange = React.useCallback(\n (next: boolean) => {\n if (next) {\n if (!hoveringRef.current && !stickyRef.current) return;\n setOpen(true);\n return;\n }\n if (stickyRef.current) {\n stickyRef.current = false;\n hoveringRef.current = false;\n clearOpenTimeout();\n clearCloseTimeout();\n setOpen(false);\n return;\n }\n scheduleClose();\n },\n [clearCloseTimeout, clearOpenTimeout, scheduleClose],\n );\n\n const handlePointerEnter = React.useCallback(() => {\n if (!hoverArmedRef.current) return;\n hoveringRef.current = true;\n clearCloseTimeout();\n clearOpenTimeout();\n if (openRef.current || delayDuration <= 0) {\n setOpen(true);\n return;\n }\n openTimeoutRef.current = window.setTimeout(() => {\n if (!hoveringRef.current || !hoverArmedRef.current) return;\n setOpen(true);\n }, delayDuration);\n }, [clearCloseTimeout, clearOpenTimeout, delayDuration]);\n\n const handlePointerLeave = React.useCallback(() => {\n hoverArmedRef.current = true;\n hoveringRef.current = false;\n scheduleClose();\n }, [scheduleClose]);\n\n const blockRadixFocusOpen = React.useCallback((e: React.FocusEvent) => {\n e.preventDefault();\n }, []);\n\n const blockRadixPointerMoveOpen = React.useCallback((e: React.PointerEvent) => {\n e.preventDefault();\n }, []);\n\n const handleTriggerClick = React.useCallback(\n (e: React.MouseEvent | React.PointerEvent) => {\n if (!prefersCoarsePointer()) {\n e.preventDefault();\n return;\n }\n clearOpenTimeout();\n clearCloseTimeout();\n const next = !open;\n stickyRef.current = next;\n hoveringRef.current = next;\n hoverArmedRef.current = true;\n setOpen(next);\n e.preventDefault();\n },\n [clearCloseTimeout, clearOpenTimeout, open],\n );\n\n React.useEffect(\n () => () => {\n clearOpenTimeout();\n clearCloseTimeout();\n },\n [clearCloseTimeout, clearOpenTimeout],\n );\n\n return (\n <TooltipPrimitive.Root open={open} onOpenChange={handleOpenChange}>\n <TooltipPrimitive.Trigger\n ref={triggerRef}\n asChild\n onFocus={blockRadixFocusOpen}\n onPointerMove={blockRadixPointerMoveOpen}\n onPointerEnter={handlePointerEnter}\n onPointerLeave={handlePointerLeave}\n onClick={handleTriggerClick}\n >\n {children}\n </TooltipPrimitive.Trigger>\n <TooltipPrimitive.Portal>\n <TooltipPrimitive.Content\n side={side}\n align={align}\n sideOffset={6}\n onPointerEnter={handlePointerEnter}\n onPointerLeave={handlePointerLeave}\n className={cn(\n surfaceOverlay,\n 'z-110 max-w-xs px-3 py-2 text-sm outline-none',\n 'animate-in fade-in-0 zoom-in-95',\n 'data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95',\n )}\n >\n {content}\n </TooltipPrimitive.Content>\n </TooltipPrimitive.Portal>\n </TooltipPrimitive.Root>\n );\n}\n","import { cva, type VariantProps } from 'class-variance-authority';\nimport * as React from 'react';\n\nimport { cn } from '../../../lib/utils';\n\nconst headingVariants = cva('font-semibold tracking-tight text-foreground', {\n variants: {\n level: {\n h1: 'text-3xl font-bold',\n h2: 'text-2xl',\n h3: 'text-xl',\n h4: 'text-lg',\n },\n },\n defaultVariants: {\n level: 'h1',\n },\n});\n\nconst paragraphVariants = cva('text-muted-foreground leading-relaxed', {\n variants: {\n size: {\n default: 'text-base',\n sm: 'text-sm',\n lg: 'text-lg',\n },\n },\n defaultVariants: {\n size: 'default',\n },\n});\n\ninterface HeadingProps\n extends React.HTMLAttributes<HTMLHeadingElement>,\n VariantProps<typeof headingVariants> {\n /** Semantic heading level when it differs from visual `level`. */\n as?: 'h1' | 'h2' | 'h3' | 'h4';\n}\n\n/** Page and section headings using theme foreground color. */\nconst Heading = React.forwardRef<HTMLHeadingElement, HeadingProps>(\n ({ className, level, as, ...props }, ref) => {\n const Component =\n as || (level === 'h1' ? 'h1' : level === 'h2' ? 'h2' : level === 'h3' ? 'h3' : 'h4');\n return (\n <Component\n ref={ref}\n className={cn(headingVariants({ level: level || as }), className)}\n {...props}\n />\n );\n },\n);\nHeading.displayName = 'Heading';\n\ninterface ParagraphProps\n extends React.HTMLAttributes<HTMLParagraphElement>,\n VariantProps<typeof paragraphVariants> {}\n\n/** Body copy with muted foreground by default. */\nconst Paragraph = React.forwardRef<HTMLParagraphElement, ParagraphProps>(\n ({ className, size, ...props }, ref) => {\n return <p ref={ref} className={cn(paragraphVariants({ size }), className)} {...props} />;\n },\n);\nParagraph.displayName = 'Paragraph';\n\n/** Convenience wrapper for level-3 headings. */\nconst H3 = React.forwardRef<HTMLHeadingElement, Omit<HeadingProps, 'level' | 'as'>>(\n ({ className, ...props }, ref) => (\n <Heading ref={ref} level=\"h3\" as=\"h3\" className={className} {...props} />\n ),\n);\nH3.displayName = 'H3';\n\nexport { H3, Heading, headingVariants, Paragraph, paragraphVariants };\n","import { FileText, ImagePlus, UploadCloud, X } from 'lucide-react';\nimport { useEffect, useId, useRef, useState } from 'react';\n\nimport { cn } from '../../../lib/utils';\nimport { Button } from '../button';\nimport { Checkbox } from '../checkbox';\n\nexport interface UploadDropzoneTranslations {\n imageAlt?: string;\n dropHintText?: string;\n chooseImageText?: string;\n /** Used when `variant=\"file\"` for the primary picker button label */\n chooseFileText?: string;\n removeText?: string;\n removeExistingImageText?: string;\n /** Accessible label for removing one file in multi-file mode */\n removeFileAriaLabel?: string;\n}\n\nconst DEFAULT_TRANSLATIONS: Required<UploadDropzoneTranslations> = {\n imageAlt: 'Image',\n dropHintText: 'Drag and drop an image here, or click to choose a file.',\n chooseImageText: 'Choose image',\n chooseFileText: 'Choose file',\n removeText: 'Remove',\n removeExistingImageText: 'Remove existing image',\n removeFileAriaLabel: 'Remove file',\n};\n\ninterface UploadDropzoneSharedProps {\n translations?: UploadDropzoneTranslations;\n /** Reject files larger than this size (bytes). Invokes `onFileTooLarge` when set. */\n maxSizeBytes?: number;\n onFileTooLarge?: () => void;\n /** Rejected because the file does not match `accept`. */\n onInvalidFile?: () => void;\n}\n\nexport interface UploadDropzoneImageProps extends UploadDropzoneSharedProps {\n variant?: 'image';\n value: File | null;\n onChange: (file: File | null) => void;\n existingImageUrl?: string;\n removeExistingImage?: boolean;\n onRemoveExistingImageChange?: (value: boolean) => void;\n}\n\ninterface UploadDropzoneFileBaseProps extends UploadDropzoneSharedProps {\n variant: 'file';\n /** Passed to the native file input, e.g. `.pdf,.docx` or `application/pdf` */\n accept?: string;\n disabled?: boolean;\n className?: string;\n}\n\nexport interface UploadDropzoneFileProps extends UploadDropzoneFileBaseProps {\n multiple?: false;\n value: File | null;\n onChange: (file: File | null) => void;\n}\n\nexport interface UploadDropzoneMultiFileProps extends UploadDropzoneFileBaseProps {\n multiple: true;\n value: File[];\n onChange: (files: File[]) => void;\n}\n\nexport type UploadDropzoneProps =\n | UploadDropzoneImageProps\n | UploadDropzoneFileProps\n | UploadDropzoneMultiFileProps;\n\nfunction fileMatchesAccept(file: File, accept?: string): boolean {\n if (!accept?.trim()) return true;\n const tokens = accept\n .split(',')\n .map((s) => s.trim().toLowerCase())\n .filter(Boolean);\n if (!tokens.length) return true;\n const name = file.name.toLowerCase();\n const type = (file.type || '').toLowerCase();\n return tokens.some((token) => {\n if (token.startsWith('.')) return name.endsWith(token);\n if (token.endsWith('/*')) return type.startsWith(token.slice(0, -1));\n return type === token;\n });\n}\n\nfunction fileKey(file: File): string {\n return `${file.name}:${file.size}:${file.lastModified}`;\n}\n\nfunction isFileLike(value: unknown): value is File {\n return (\n typeof value === 'object' &&\n value != null &&\n typeof (value as File).name === 'string' &&\n typeof (value as File).size === 'number'\n );\n}\n\nfunction UploadDropzone(props: UploadDropzoneProps) {\n const isFile = props.variant === 'file';\n // Also treat File[] values as multi even if `multiple` was omitted (avoids .type crash).\n const isMultiple = isFile && (props.multiple === true || Array.isArray(props.value));\n const inputId = useId();\n const removeExistingLabelId = useId();\n const pickerDisabled = isFile && props.disabled;\n const t = { ...DEFAULT_TRANSLATIONS, ...props.translations };\n const inputRef = useRef<HTMLInputElement | null>(null);\n const [isDragging, setIsDragging] = useState(false);\n const [previewUrl, setPreviewUrl] = useState<string | null>(null);\n\n const singleFile =\n isFile && !isMultiple && isFileLike(props.value) ? (props.value as File) : null;\n const multiFiles =\n isMultiple && Array.isArray(props.value) ? (props.value as File[]).filter(isFileLike) : [];\n const accept = isFile ? props.accept : 'image/*';\n const setSingleFile = (file: File | null) => {\n if (isFile && !isMultiple) {\n (props as UploadDropzoneFileProps).onChange(file);\n return;\n }\n if (!isFile) {\n (props as UploadDropzoneImageProps).onChange(file);\n (props as UploadDropzoneImageProps).onRemoveExistingImageChange?.(false);\n }\n };\n const setMultiFiles = (next: File[]) => {\n if (isMultiple) (props as UploadDropzoneMultiFileProps).onChange(next);\n };\n\n const imageFile = !isFile && isFileLike(props.value) ? (props.value as File) : null;\n\n useEffect(() => {\n if (isFile) {\n const mime = singleFile?.type || '';\n if (!singleFile || !mime.startsWith('video/')) {\n setPreviewUrl(null);\n return;\n }\n const nextUrl = URL.createObjectURL(singleFile);\n setPreviewUrl(nextUrl);\n return () => URL.revokeObjectURL(nextUrl);\n }\n if (!imageFile) {\n setPreviewUrl(null);\n return;\n }\n const nextUrl = URL.createObjectURL(imageFile);\n setPreviewUrl(nextUrl);\n return () => URL.revokeObjectURL(nextUrl);\n }, [imageFile, isFile, singleFile]);\n\n const acceptFiles = (incoming: FileList | File[] | null) => {\n if (!incoming || pickerDisabled) return;\n const list = Array.from(incoming).filter(isFileLike);\n if (!list.length) return;\n\n const accepted: File[] = [];\n for (const file of list) {\n if (props.maxSizeBytes != null && file.size > props.maxSizeBytes) {\n props.onFileTooLarge?.();\n continue;\n }\n if (isFile) {\n if (!fileMatchesAccept(file, accept)) {\n props.onInvalidFile?.();\n continue;\n }\n accepted.push(file);\n continue;\n }\n if (!(file.type || '').startsWith('image/')) {\n props.onInvalidFile?.();\n continue;\n }\n accepted.push(file);\n }\n if (!accepted.length) return;\n\n if (isMultiple) {\n const seen = new Set(multiFiles.map(fileKey));\n const next = [...multiFiles];\n for (const file of accepted) {\n const key = fileKey(file);\n if (seen.has(key)) continue;\n seen.add(key);\n next.push(file);\n }\n setMultiFiles(next);\n return;\n }\n\n setSingleFile(accepted[0] ?? null);\n };\n\n const imageProps = !isFile ? (props as UploadDropzoneImageProps) : null;\n const displayedImage =\n imageProps &&\n (previewUrl ?? (!imageProps.removeExistingImage ? imageProps.existingImageUrl : undefined));\n\n const dashedClasses = cn(\n 'block rounded-xl border-2 border-dashed border-border/55 p-4 transition-colors',\n pickerDisabled && 'pointer-events-none opacity-50',\n !pickerDisabled && 'cursor-pointer hover:border-primary/50 hover:bg-muted/15',\n isDragging ? 'border-primary/70 bg-primary/5' : undefined,\n );\n\n const chooseLabel = isFile ? t.chooseFileText : t.chooseImageText;\n\n return (\n <div className={cn('space-y-3', isFile ? props.className : undefined)}>\n <label\n htmlFor={pickerDisabled ? undefined : inputId}\n className={dashedClasses}\n onDragOver={(event) => {\n event.preventDefault();\n if (pickerDisabled) return;\n setIsDragging(true);\n }}\n onDragLeave={() => setIsDragging(false)}\n onDrop={(event) => {\n event.preventDefault();\n setIsDragging(false);\n if (pickerDisabled) return;\n acceptFiles(event.dataTransfer.files);\n }}\n >\n <input\n id={inputId}\n ref={inputRef}\n type=\"file\"\n accept={accept}\n multiple={isMultiple || undefined}\n disabled={pickerDisabled || undefined}\n className=\"sr-only\"\n onChange={(event) => {\n acceptFiles(event.target.files);\n event.target.value = '';\n }}\n />\n {isFile ? (\n <div className=\"mb-3 flex min-h-28 flex-col items-center justify-center gap-2 rounded-lg border border-border/45 bg-muted/20 px-3 py-4 text-center\">\n {previewUrl ? (\n <video\n src={previewUrl}\n controls\n className=\"max-h-44 w-full rounded-lg border border-border/45 bg-foreground\"\n />\n ) : (\n <FileText className=\"h-8 w-8 shrink-0 text-muted-foreground\" aria-hidden />\n )}\n {isMultiple ? (\n multiFiles.length > 0 ? (\n <ul className=\"w-full space-y-1.5 text-left\">\n {multiFiles.map((file) => (\n <li\n key={fileKey(file)}\n className=\"flex items-center gap-2 rounded-md border border-border/40 bg-background/60 px-2 py-1.5\"\n >\n <FileText\n className=\"h-3.5 w-3.5 shrink-0 text-muted-foreground\"\n aria-hidden\n />\n <span className=\"min-w-0 flex-1 truncate text-sm font-medium\">\n {file.name}\n </span>\n <Button\n type=\"button\"\n size=\"sm\"\n variant=\"ghost\"\n className=\"h-7 w-7 shrink-0 p-0\"\n disabled={pickerDisabled || undefined}\n aria-label={`${t.removeFileAriaLabel} ${file.name}`}\n onClick={(event) => {\n event.preventDefault();\n event.stopPropagation();\n setMultiFiles(multiFiles.filter((f) => fileKey(f) !== fileKey(file)));\n }}\n >\n <X className=\"h-3.5 w-3.5\" aria-hidden />\n </Button>\n </li>\n ))}\n </ul>\n ) : null\n ) : singleFile ? (\n <p className=\"line-clamp-2 w-full break-all text-sm font-medium\">{singleFile.name}</p>\n ) : null}\n </div>\n ) : displayedImage ? (\n <img\n src={displayedImage}\n alt={t.imageAlt}\n className=\"mb-3 h-44 w-full rounded-lg border border-border/45 object-cover\"\n />\n ) : (\n <div className=\"mb-3 flex h-32 items-center justify-center rounded-lg border border-border/45 bg-muted/20\">\n <ImagePlus className=\"h-8 w-8 text-muted-foreground\" aria-hidden />\n </div>\n )}\n\n <div className=\"flex flex-col gap-2 sm:flex-row sm:items-center sm:justify-between\">\n <p className=\"text-xs text-muted-foreground\">{t.dropHintText}</p>\n <div className=\"flex flex-wrap gap-2\">\n <Button\n type=\"button\"\n size=\"sm\"\n variant=\"outline\"\n disabled={pickerDisabled || undefined}\n onClick={(event) => {\n event.preventDefault();\n inputRef.current?.click();\n }}\n >\n <UploadCloud className=\"mr-2 h-4 w-4\" aria-hidden />\n {chooseLabel}\n </Button>\n {!isMultiple && isFile && singleFile ? (\n <Button\n type=\"button\"\n size=\"sm\"\n variant=\"outline\"\n disabled={pickerDisabled || undefined}\n onClick={(event) => {\n event.preventDefault();\n event.stopPropagation();\n setSingleFile(null);\n }}\n >\n {t.removeText}\n </Button>\n ) : null}\n {isMultiple && multiFiles.length > 0 ? (\n <Button\n type=\"button\"\n size=\"sm\"\n variant=\"outline\"\n disabled={pickerDisabled || undefined}\n onClick={(event) => {\n event.preventDefault();\n event.stopPropagation();\n setMultiFiles([]);\n }}\n >\n {t.removeText}\n </Button>\n ) : null}\n </div>\n </div>\n </label>\n\n {imageProps?.existingImageUrl &&\n imageProps.onRemoveExistingImageChange &&\n t.removeExistingImageText ? (\n <div className=\"flex items-center justify-between rounded-lg border border-border/45 bg-muted/15 px-3 py-2\">\n <span className=\"text-xs text-muted-foreground\" id={removeExistingLabelId}>\n {t.removeExistingImageText}\n </span>\n <Checkbox\n aria-labelledby={removeExistingLabelId}\n checked={imageProps.removeExistingImage}\n onCheckedChange={(checked) =>\n imageProps.onRemoveExistingImageChange?.(checked === true)\n }\n />\n </div>\n ) : null}\n </div>\n );\n}\n\nexport { fileMatchesAccept, UploadDropzone };\n"]}
|