{"version":3,"sources":["../src/lib/native.tsx","../src/bridges/TokenBridge.ts","../src/bridges/ErrorBoundaryBridge.tsx","../src/bridges/LoadingBridge.tsx","../src/bridges/ToastBridge.tsx","../src/components/AdapterStatusBadge.tsx","../src/components/AdapterCard.tsx","../src/components/AdapterConfigForm.tsx","../src/lib/defaultAdapters.ts","../src/provider/index.tsx","../src/hooks/index.ts","../src/components/AdapterList.tsx","../src/pages/AdapterDetailPage.tsx","../src/pages/AdaptersPage.tsx","../src/index.ts"],"names":["AdapterInvariantError","Component","createElement","styles","blue","jsxs","jsx","DOMAIN_LABELS","DOMAIN_ICONS","DOMAIN_DESCRIPTIONS","LAUNCH_DB_PROVIDERS","getProvidersForDomain","useMemo","useState","useEffect","isRecord","StorageError","DbError","AuthError","PaymentsError","AiError","AdminError","role","team","createConsoleLoggerAdapter","createContext","adapters","isAdaptersConfigured","getDomainConfig","ADAPTER_DOMAINS","AdapterError","useCallback","AdapterContextError","useContext","ADAPTER_STATUSES"],"mappings":";;;;;;;;AAqCA,SAAS,SAAS,KAAA,EAAkD;AAClE,EAAA,OAAO,OAAO,KAAA,KAAU,QAAA,IAAY,KAAA,KAAU,IAAA;AAChD;AAEA,SAAS,YAAY,KAAA,EAAyB;AAC5C,EAAA,OACE,OAAO,KAAA,KAAU,UAAA,IAAe,OAAO,KAAA,KAAU,YAAY,KAAA,KAAU,IAAA;AAE3E;AAEA,SAAS,gBAAgB,KAAA,EAAwC;AAC/D,EAAA,OACE,QAAA,CAAS,KAAK,CAAA,IACd,WAAA,CAAY,MAAM,iBAAiB,CAAA,IACnC,WAAA,CAAY,KAAA,CAAM,KAAK,CAAA,IACvB,WAAA,CAAY,KAAA,CAAM,SAAS,CAAA,IAC3B,WAAA,CAAY,KAAA,CAAM,UAAU,CAAA,IAC5B,WAAA,CAAY,KAAA,CAAM,IAAI,KACtB,WAAA,CAAY,KAAA,CAAM,SAAS,CAAA,IAC3B,YAAY,KAAA,CAAM,IAAI,CAAA,IACtB,WAAA,CAAY,MAAM,QAAQ,CAAA;AAE9B;AAEA,SAAS,UAAA,GAAwC;AAC/C,EAAA,MAAM,iBAAA,GAAoB,UAAA;AAC1B,EAAA,IAAI,OAAO,iBAAA,CAAkB,OAAA,KAAY,UAAA,EAAY;AACnD,IAAA,OAAO,iBAAA,CAAkB,OAAA;AAAA,EAC3B;AAEA,EAAA,OAAO,MAAA;AACT;AAEA,SAAS,cAAA,GAAgC;AACvC,EAAA,MAAM,iBACJ,UAAA,CAGA,gCAAA;AACF,EAAA,IAAI,eAAA,CAAgB,cAAc,CAAA,EAAG;AACnC,IAAA,OAAO,cAAA;AAAA,EACT;AAEA,EAAA,MAAM,iBAAiB,UAAA,EAAW;AAClC,EAAA,IAAI,cAAA,EAAgB;AAClB,IAAA,IAAI;AACF,MAAA,MAAM,SAAA,GAAY,eAAe,cAAc,CAAA;AAC/C,MAAA,IAAI,eAAA,CAAgB,SAAS,CAAA,EAAG;AAC9B,QAAA,OAAO,SAAA;AAAA,MACT;AAAA,IACF,CAAA,CAAA,MAAQ;AAAA,IAER;AAAA,EACF;AAEA,EAAA,MAAM,IAAIA,8BAAA;AAAA,IACR;AAAA,GACF;AACF;AAEA,SAAS,sBACP,IAAA,EACkB;AAClB,EAAA,MAAM,eAAA,GAAkB,CAAC,KAAA,KAAa;AACpC,IAAA,MAAMC,UAAAA,GAAY,cAAA,EAAe,CAAE,IAAI,CAAA;AACvC,IAAA,OAAOC,mBAAA,CAAcD,YAAW,KAAK,CAAA;AAAA,EACvC,CAAA;AACA,EAAA,eAAA,CAAgB,WAAA,GAAc,CAAA,aAAA,EAAgB,MAAA,CAAO,IAAI,CAAC,CAAA,CAAA;AAC1D,EAAA,OAAO,eAAA;AACT;AAEO,IAAM,iBAAA,GACX,sBAA8C,mBAAmB,CAAA;AAC5D,SAAS,SACd,KAAA,EACqB;AACrB,EAAA,MAAMA,UAAAA,GAAY,gBAAe,CAAE,QAAA;AAGnC,EAAA,OAAOC,mBAAA,CAAcD,YAAW,KAAK,CAAA;AACvC;AACO,IAAM,KAAA,GAAQ,sBAAkC,OAAO,CAAA;AACvD,IAAM,SAAA,GAAY,sBAAsC,WAAW,CAAA;AACnE,IAAM,UAAA,GAAa,sBAAuC,YAAY,CAAA;AACtE,IAAM,IAAA,GAAO,sBAAiC,MAAM,CAAA;AACpD,IAAM,SAAA,GAAY,sBAAsC,WAAW,CAAA;AACnE,IAAM,IAAA,GAAO,sBAAiC,MAAM,CAAA;AAE3D,SAAS,aAAgB,KAAA,EAAqC;AAC5D,EAAA,IAAI,CAAC,KAAA,EAAO;AACV,IAAA,OAAO,MAAA;AAAA,EACT;AAEA,EAAA,IAAI,CAAC,KAAA,CAAM,OAAA,CAAQ,KAAK,CAAA,EAAG;AACzB,IAAA,OAAO,KAAA;AAAA,EACT;AAEA,EAAA,IAAI,MAAA;AACJ,EAAA,KAAA,MAAW,SAAS,KAAA,EAAO;AACzB,IAAA,MAAM,SAAA,GAAY,aAAa,KAAqB,CAAA;AACpD,IAAA,IAAI,CAAC,SAAA,EAAW;AACd,MAAA;AAAA,IACF;AACA,IAAA,IAAI,QAAA,CAAS,SAAS,CAAA,EAAG;AACvB,MAAA,MAAA,GAAS,EAAE,GAAI,MAAA,IAAU,EAAC,EAAI,GAAG,SAAA,EAAU;AAC3C,MAAA;AAAA,IACF;AACA,IAAA,OAAO,SAAA;AAAA,EACT;AAEA,EAAA,OAAO,MAAA;AACT;AAEO,IAAM,UAAA,GAAa;AAAA,EACxB,OAA0CE,QAAAA,EAAc;AACtD,IAAA,OAAOA,QAAAA;AAAA,EACT,CAAA;AAAA,EACA,QAAW,KAAA,EAAqC;AAC9C,IAAA,OAAO,aAAa,KAAK,CAAA;AAAA,EAC3B;AACF,CAAA;ACrJA,IAAM,UAAUC,WAAA,CAAK,KAAA;AAWd,IAAM,cAAA,GAAiB;AAAA,EAC5B,KAAA,EAAO;AAAA,IACL,IAAI,OAAA,CAAQ,OAAA;AAAA,IACZ,MAAA,EAAQ,QAAQ,gBAAgB,CAAA;AAAA,IAChC,MAAA,EAAQ,QAAQ,cAAc,CAAA;AAAA,IAC9B,OAAA,EAAS,QAAQ,YAAY,CAAA;AAAA,IAC7B,MAAM,OAAA,CAAQ;AAAA,GAChB;AAAA,EACA,MAAA,EAAQ;AAAA,IACN,SAAA,EAAW;AAAA,MACT,EAAA,EAAI,QAAQ,gBAAgB,CAAA;AAAA,MAC5B,QAAQ,OAAA,CAAQ,OAAA;AAAA,MAChB,MAAM,OAAA,CAAQ;AAAA,KAChB;AAAA,IACA,YAAA,EAAc;AAAA,MACZ,IAAI,OAAA,CAAQ,EAAA;AAAA,MACZ,MAAA,EAAQ,QAAQ,eAAe,CAAA;AAAA,MAC/B,IAAA,EAAM,QAAQ,gBAAgB;AAAA,KAChC;AAAA,IACA,KAAA,EAAO;AAAA,MACL,EAAA,EAAI,QAAQ,eAAe,CAAA;AAAA,MAC3B,QAAQ,OAAA,CAAQ,MAAA;AAAA,MAChB,MAAM,OAAA,CAAQ,MAAA;AAAA,MACd,YAAY,OAAA,CAAQ;AAAA,KACtB;AAAA,IACA,YAAA,EAAc;AAAA,MACZ,EAAA,EAAI,QAAQ,aAAa,CAAA;AAAA,MACzB,QAAQ,OAAA,CAAQ,IAAA;AAAA,MAChB,MAAM,OAAA,CAAQ;AAAA,KAChB;AAAA,IACA,OAAA,EAAS;AAAA,MACP,EAAA,EAAI,QAAQ,gBAAgB,CAAA;AAAA,MAC5B,QAAQ,OAAA,CAAQ,OAAA;AAAA,MAChB,MAAM,OAAA,CAAQ;AAAA;AAChB,GACF;AAAA,EACA,OAAA,EAAS;AAAA,IACP,IAAI,OAAA,CAAQ,EAAA;AAAA,IACZ,QAAQ,OAAA,CAAQ,MAAA;AAAA,IAChB,YAAA,EAAc,QAAQ,eAAe,CAAA;AAAA,IACrC,MAAM,OAAA,CAAQ,IAAA;AAAA,IACd,KAAA,EAAO,QAAQ,UAAU,CAAA;AAAA,IACzB,WAAA,EAAa,QAAQ,WAAW,CAAA;AAAA,IAChC,OAAA,EAAS,QAAQ,iBAAiB,CAAA;AAAA,IAClC,QAAA,EAAU,QAAQ,WAAW,CAAA;AAAA,IAC7B,cAAA,EAAgB,QAAQ,eAAe,CAAA;AAAA,IACvC,MAAM,OAAA,CAAQ,IAAA;AAAA,IACd,SAAA,EAAW,QAAQ,eAAe,CAAA;AAAA,IAClC,QAAA,EAAU,QAAQ,gBAAgB;AAAA;AAEtC,CAAA;ACxBO,IAAM,mBAAA,GAAN,cAAkCH,eAAA,CAGvC;AAAA,EACA,KAAA,GAAkC;AAAA,IAChC,KAAA,EAAO;AAAA,GACT;AAAA,EAEA,OAAO,yBAAyB,KAAA,EAAwC;AACtE,IAAA,OAAO,EAAE,KAAA,EAAM;AAAA,EACjB;AAAA,EAEA,iBAAA,CAAkB,OAAc,IAAA,EAAuB;AACrD,IAAA,IAAA,CAAK,KAAA,CAAM,OAAA,GAAU,KAAA,EAAO,IAAI,CAAA;AAAA,EAClC;AAAA,EAEiB,QAAQ,MAAY;AACnC,IAAA,IAAA,CAAK,QAAA,CAAS,EAAE,KAAA,EAAO,IAAA,EAAM,CAAA;AAAA,EAC/B,CAAA;AAAA,EAEA,MAAA,GAAoB;AAClB,IAAA,MAAM,EAAE,KAAA,EAAM,GAAI,IAAA,CAAK,KAAA;AAEvB,IAAA,IAAI,CAAC,KAAA,EAAO;AACV,MAAA,OAAO,KAAK,KAAA,CAAM,QAAA;AAAA,IACpB;AAEA,IAAA,IAAI,OAAO,IAAA,CAAK,KAAA,CAAM,QAAA,KAAa,UAAA,EAAY;AAC7C,MAAA,OAAO,IAAA,CAAK,KAAA,CAAM,QAAA,CAAS,KAAA,EAAO,KAAK,KAAK,CAAA;AAAA,IAC9C;AAEA,IAAA,IAAI,IAAA,CAAK,MAAM,QAAA,EAAU;AACvB,MAAA,OAAO,KAAK,KAAA,CAAM,QAAA;AAAA,IACpB;AAEA,IAAA,uBACEI,eAAA;AAAA,MAAC,IAAA;AAAA,MAAA;AAAA,QACC,iBAAA,EAAkB,OAAA;AAAA,QAClB,OAAO,CAAC,MAAA,CAAO,SAAA,EAAW,IAAA,CAAK,MAAM,KAAK,CAAA;AAAA,QAC1C,MAAA,EAAQ,IAAA,CAAK,KAAA,CAAM,MAAA,IAAU,wBAAA;AAAA,QAE7B,QAAA,EAAA;AAAA,0BAAAC,cAAA,CAAC,IAAA,EAAA,EAAK,KAAA,EAAO,MAAA,CAAO,KAAA,EAAO,QAAA,EAAA,eAAA,EAAa,CAAA;AAAA,yCACvC,IAAA,EAAA,EAAK,KAAA,EAAO,MAAA,CAAO,OAAA,EAAU,gBAAM,OAAA,EAAQ,CAAA;AAAA,0BAC5CA,cAAA;AAAA,YAAC,SAAA;AAAA,YAAA;AAAA,cACC,kBAAA,EAAmB,qBAAA;AAAA,cACnB,iBAAA,EAAkB,QAAA;AAAA,cAClB,SAAS,IAAA,CAAK,KAAA;AAAA,cACd,OAAO,MAAA,CAAO,MAAA;AAAA,cACd,MAAA,EAAO,qBAAA;AAAA,cAEP,QAAA,kBAAAA,cAAA,CAAC,IAAA,EAAA,EAAK,KAAA,EAAO,MAAA,CAAO,YAAY,QAAA,EAAA,OAAA,EAAK;AAAA;AAAA;AACvC;AAAA;AAAA,KACF;AAAA,EAEJ;AACF;AAEA,IAAM,MAAA,GAAS,WAAW,MAAA,CAAO;AAAA,EAC/B,MAAA,EAAQ;AAAA,IACN,SAAA,EAAW,YAAA;AAAA,IACX,eAAA,EAAiB,cAAA,CAAe,MAAA,CAAO,KAAA,CAAM,IAAA;AAAA,IAC7C,YAAA,EAAc,CAAA;AAAA,IACd,SAAA,EAAW,EAAA;AAAA,IACX,iBAAA,EAAmB,EAAA;AAAA,IACnB,eAAA,EAAiB;AAAA,GACnB;AAAA,EACA,UAAA,EAAY;AAAA,IACV,KAAA,EAAO,eAAe,KAAA,CAAM,OAAA;AAAA,IAC5B,QAAA,EAAU,EAAA;AAAA,IACV,UAAA,EAAY;AAAA,GACd;AAAA,EACA,SAAA,EAAW;AAAA,IACT,eAAA,EAAiB,cAAA,CAAe,MAAA,CAAO,KAAA,CAAM,EAAA;AAAA,IAC7C,WAAA,EAAa,cAAA,CAAe,MAAA,CAAO,KAAA,CAAM,MAAA;AAAA,IACzC,YAAA,EAAc,EAAA;AAAA,IACd,WAAA,EAAa,CAAA;AAAA,IACb,OAAA,EAAS;AAAA,GACX;AAAA,EACA,OAAA,EAAS;AAAA,IACP,KAAA,EAAO,cAAA,CAAe,MAAA,CAAO,KAAA,CAAM,UAAA;AAAA,IACnC,QAAA,EAAU,EAAA;AAAA,IACV,SAAA,EAAW;AAAA,GACb;AAAA,EACA,KAAA,EAAO;AAAA,IACL,KAAA,EAAO,cAAA,CAAe,MAAA,CAAO,KAAA,CAAM,IAAA;AAAA,IACnC,QAAA,EAAU,EAAA;AAAA,IACV,UAAA,EAAY;AAAA;AAEhB,CAAC,CAAA;ACjGM,SAAS,aAAA,CAAc;AAAA,EAC5B,KAAA,GAAQ,kBAAA;AAAA,EACR,IAAA,GAAO,OAAA;AAAA,EACP,KAAA;AAAA,EACA;AACF,CAAA,EAAoC;AAClC,EAAA,uBACED,eAAAA;AAAA,IAAC,IAAA;AAAA,IAAA;AAAA,MACC,kBAAA,EAAoB,KAAA;AAAA,MACpB,iBAAA,EAAkB,aAAA;AAAA,MAClB,KAAA,EAAO,CAACF,OAAAA,CAAO,SAAA,EAAW,KAAK,CAAA;AAAA,MAC/B,QAAQ,MAAA,IAAU,wBAAA;AAAA,MAElB,QAAA,EAAA;AAAA,wBAAAG,eAAC,iBAAA,EAAA,EAAkB,KAAA,EAAO,cAAA,CAAe,KAAA,CAAM,IAAI,IAAA,EAAY,CAAA;AAAA,wBAC/DA,cAAAA,CAAC,IAAA,EAAA,EAAK,KAAA,EAAOH,OAAAA,CAAO,OAAQ,QAAA,EAAA,KAAA,EAAM;AAAA;AAAA;AAAA,GACpC;AAEJ;AAEA,IAAMA,OAAAA,GAAS,WAAW,MAAA,CAAO;AAAA,EAC/B,SAAA,EAAW;AAAA,IACT,UAAA,EAAY,QAAA;AAAA,IACZ,aAAA,EAAe,KAAA;AAAA,IACf,GAAA,EAAK,EAAA;AAAA,IACL,eAAA,EAAiB;AAAA,GACnB;AAAA,EACA,KAAA,EAAO;AAAA,IACL,KAAA,EAAO,eAAe,OAAA,CAAQ,QAAA;AAAA,IAC9B,QAAA,EAAU,EAAA;AAAA,IACV,UAAA,EAAY;AAAA;AAEhB,CAAC,CAAA;ACnCD,IAAM,UAAA,GAGF;AAAA,EACF,KAAA,EAAO;AAAA,IACL,eAAA,EAAiB,cAAA,CAAe,MAAA,CAAO,KAAA,CAAM,EAAA;AAAA,IAC7C,WAAA,EAAa,cAAA,CAAe,MAAA,CAAO,KAAA,CAAM,MAAA;AAAA,IACzC,KAAA,EAAO,cAAA,CAAe,MAAA,CAAO,KAAA,CAAM;AAAA,GACrC;AAAA,EACA,IAAA,EAAM;AAAA,IACJ,eAAA,EAAiB,cAAA,CAAe,MAAA,CAAO,YAAA,CAAa,EAAA;AAAA,IACpD,WAAA,EAAa,cAAA,CAAe,MAAA,CAAO,YAAA,CAAa,MAAA;AAAA,IAChD,KAAA,EAAO,cAAA,CAAe,MAAA,CAAO,YAAA,CAAa;AAAA,GAC5C;AAAA,EACA,OAAA,EAAS;AAAA,IACP,eAAA,EAAiB,cAAA,CAAe,MAAA,CAAO,SAAA,CAAU,EAAA;AAAA,IACjD,WAAA,EAAa,cAAA,CAAe,MAAA,CAAO,SAAA,CAAU,MAAA;AAAA,IAC7C,KAAA,EAAO,cAAA,CAAe,MAAA,CAAO,SAAA,CAAU;AAAA,GACzC;AAAA,EACA,OAAA,EAAS;AAAA,IACP,eAAA,EAAiB,cAAA,CAAe,MAAA,CAAO,OAAA,CAAQ,EAAA;AAAA,IAC/C,WAAA,EAAa,cAAA,CAAe,MAAA,CAAO,OAAA,CAAQ,MAAA;AAAA,IAC3C,KAAA,EAAO,cAAA,CAAe,MAAA,CAAO,OAAA,CAAQ;AAAA;AAEzC,CAAA;AAYO,SAAS,WAAA,CAAY;AAAA,EAC1B,IAAA,GAAO,MAAA;AAAA,EACP,OAAA;AAAA,EACA,SAAA;AAAA,EACA,KAAA;AAAA,EACA,MAAA;AAAA,EACA,KAAA;AAAA,EACA,OAAA,GAAU;AACZ,CAAA,EAAyC;AACvC,EAAA,IAAI,CAAC,OAAA,EAAS;AACZ,IAAA,OAAO,IAAA;AAAA,EACT;AAEA,EAAA,MAAM,MAAA,GAAS,WAAW,IAAI,CAAA;AAE9B,EAAA,uBACEE,eAAAA;AAAA,IAAC,IAAA;AAAA,IAAA;AAAA,MACC,oBAAoB,KAAA,GAAQ,CAAA,EAAG,KAAK,CAAA,EAAA,EAAK,OAAO,CAAA,CAAA,GAAK,OAAA;AAAA,MACrD,iBAAA,EAAkB,SAAA;AAAA,MAClB,KAAA,EAAO;AAAA,QACLF,OAAAA,CAAO,SAAA;AAAA,QACP;AAAA,UACE,iBAAiB,MAAA,CAAO,eAAA;AAAA,UACxB,aAAa,MAAA,CAAO;AAAA,SACtB;AAAA,QACA;AAAA,OACF;AAAA,MACA,QAAQ,MAAA,IAAU,sBAAA;AAAA,MAElB,QAAA,EAAA;AAAA,wBAAAE,eAAAA,CAAC,IAAA,EAAA,EAAK,KAAA,EAAOF,OAAAA,CAAO,IAAA,EACjB,QAAA,EAAA;AAAA,UAAA,KAAA,oBACCG,cAAAA,CAAC,IAAA,EAAA,EAAK,KAAA,EAAO,CAACH,OAAAA,CAAO,KAAA,EAAO,EAAE,KAAA,EAAO,MAAA,CAAO,KAAA,EAAO,GAAI,QAAA,EAAA,KAAA,EAAM,CAAA;AAAA,0BAE/DG,cAAAA,CAAC,IAAA,EAAA,EAAK,KAAA,EAAO,CAACH,OAAAA,CAAO,OAAA,EAAS,EAAE,KAAA,EAAO,MAAA,CAAO,KAAA,EAAO,GAAI,QAAA,EAAA,OAAA,EAAQ;AAAA,SAAA,EACnE,CAAA;AAAA,QACC,6BACCG,cAAAA;AAAA,UAAC,SAAA;AAAA,UAAA;AAAA,YACC,kBAAA,EAAmB,uBAAA;AAAA,YACnB,iBAAA,EAAkB,QAAA;AAAA,YAClB,OAAA,EAAS,SAAA;AAAA,YACT,OAAOH,OAAAA,CAAO,OAAA;AAAA,YACd,MAAA,EAAO,uBAAA;AAAA,YAEP,QAAA,kBAAAG,cAAAA,CAAC,IAAA,EAAA,EAAK,KAAA,EAAO,CAACH,OAAAA,CAAO,WAAA,EAAa,EAAE,KAAA,EAAO,MAAA,CAAO,KAAA,EAAO,GAAG,QAAA,EAAA,OAAA,EAE5D;AAAA;AAAA;AACF;AAAA;AAAA,GAEJ;AAEJ;AAEA,IAAMA,OAAAA,GAAS,WAAW,MAAA,CAAO;AAAA,EAC/B,IAAA,EAAM;AAAA,IACJ,IAAA,EAAM;AAAA,GACR;AAAA,EACA,SAAA,EAAW;AAAA,IACT,UAAA,EAAY,QAAA;AAAA,IACZ,YAAA,EAAc,EAAA;AAAA,IACd,WAAA,EAAa,CAAA;AAAA,IACb,aAAA,EAAe,KAAA;AAAA,IACf,GAAA,EAAK,EAAA;AAAA,IACL,iBAAA,EAAmB,EAAA;AAAA,IACnB,eAAA,EAAiB;AAAA,GACnB;AAAA,EACA,OAAA,EAAS;AAAA,IACP,iBAAA,EAAmB,CAAA;AAAA,IACnB,eAAA,EAAiB;AAAA,GACnB;AAAA,EACA,WAAA,EAAa;AAAA,IACX,QAAA,EAAU,EAAA;AAAA,IACV,UAAA,EAAY;AAAA,GACd;AAAA,EACA,OAAA,EAAS;AAAA,IACP,QAAA,EAAU,EAAA;AAAA,IACV,UAAA,EAAY;AAAA,GACd;AAAA,EACA,KAAA,EAAO;AAAA,IACL,QAAA,EAAU,EAAA;AAAA,IACV,UAAA,EAAY,KAAA;AAAA,IACZ,YAAA,EAAc;AAAA;AAElB,CAAC,CAAA;ACzID,IAAM,YAAA,GAAkD;AAAA,EACtD,SAAA,EAAW,WAAA;AAAA,EACX,YAAA,EAAc,cAAA;AAAA,EACd,KAAA,EAAO,OAAA;AAAA,EACP,YAAA,EAAc;AAChB,CAAA;AAQA,IAAM,kBAAA,GAAmC;AAAA,EACvC,eAAA,EAAiB,cAAA,CAAe,MAAA,CAAO,YAAA,CAAa,EAAA;AAAA,EACpD,WAAA,EAAa,cAAA,CAAe,MAAA,CAAO,YAAA,CAAa,MAAA;AAAA,EAChD,KAAA,EAAO,cAAA,CAAe,MAAA,CAAO,YAAA,CAAa;AAC5C,CAAA;AAEA,IAAM,YAAA,GAAwD;AAAA,EAC5D,SAAA,EAAW;AAAA,IACT,eAAA,EAAiB,cAAA,CAAe,MAAA,CAAO,SAAA,CAAU,EAAA;AAAA,IACjD,WAAA,EAAa,cAAA,CAAe,MAAA,CAAO,SAAA,CAAU,MAAA;AAAA,IAC7C,KAAA,EAAO,cAAA,CAAe,MAAA,CAAO,SAAA,CAAU;AAAA,GACzC;AAAA,EACA,YAAA,EAAc,kBAAA;AAAA,EACd,KAAA,EAAO;AAAA,IACL,eAAA,EAAiB,cAAA,CAAe,MAAA,CAAO,KAAA,CAAM,EAAA;AAAA,IAC7C,WAAA,EAAa,cAAA,CAAe,MAAA,CAAO,KAAA,CAAM,MAAA;AAAA,IACzC,KAAA,EAAO,cAAA,CAAe,MAAA,CAAO,KAAA,CAAM;AAAA,GACrC;AAAA,EACA,YAAA,EAAc;AAAA,IACZ,eAAA,EAAiB,cAAA,CAAe,MAAA,CAAO,YAAA,CAAa,EAAA;AAAA,IACpD,WAAA,EAAa,cAAA,CAAe,MAAA,CAAO,YAAA,CAAa,MAAA;AAAA,IAChD,KAAA,EAAO,cAAA,CAAe,MAAA,CAAO,YAAA,CAAa;AAAA;AAE9C,CAAA;AA+BO,SAAS,kBAAA,CAAmB;AAAA,EACjC,MAAA;AAAA,EACA,SAAA,GAAY,IAAA;AAAA,EACZ,IAAA,GAAO,IAAA;AAAA,EACP,KAAA;AAAA,EACA,SAAA;AAAA,EACA;AACF,CAAA,EAAyC;AACvC,EAAA,MAAM,MAAA,GAAS,YAAA,CAAa,MAAM,CAAA,IAAK,kBAAA;AACvC,EAAA,MAAM,KAAA,GAAQ,YAAA,CAAa,MAAM,CAAA,IAAK,MAAA;AAEtC,EAAA,uBACEE,eAAAA;AAAA,IAAC,IAAA;AAAA,IAAA;AAAA,MACC,kBAAA,EAAoB,mBAAmB,KAAK,CAAA,CAAA;AAAA,MAC5C,iBAAA,EAAkB,MAAA;AAAA,MAClB,KAAA,EAAO;AAAA,QACLF,OAAAA,CAAO,KAAA;AAAA,QACP,IAAA,KAAS,QAAQA,OAAAA,CAAO,OAAA;AAAA,QACxB;AAAA,UACE,iBAAiB,MAAA,CAAO,eAAA;AAAA,UACxB,aAAa,MAAA,CAAO;AAAA,SACtB;AAAA,QACA;AAAA,OACF;AAAA,MACA,MAAA,EAAQ,MAAA,IAAU,CAAA,eAAA,EAAkB,MAAM,CAAA,CAAA;AAAA,MAE1C,QAAA,EAAA;AAAA,wBAAAG,cAAAA,CAAC,IAAA,EAAA,EAAK,KAAA,EAAO,CAACH,OAAAA,CAAO,GAAA,EAAK,EAAE,eAAA,EAAiB,MAAA,CAAO,KAAA,EAAO,CAAA,EAAG,CAAA;AAAA,QAC7D,6BACCG,cAAAA;AAAA,UAAC,IAAA;AAAA,UAAA;AAAA,YACC,KAAA,EAAO;AAAA,cACLH,OAAAA,CAAO,KAAA;AAAA,cACP,IAAA,KAAS,QAAQA,OAAAA,CAAO,OAAA;AAAA,cACxB,EAAE,KAAA,EAAO,MAAA,CAAO,KAAA,EAAM;AAAA,cACtB;AAAA,aACF;AAAA,YAEC,QAAA,EAAA;AAAA;AAAA;AACH;AAAA;AAAA,GAEJ;AAEJ;AAEA,IAAMA,OAAAA,GAAS,WAAW,MAAA,CAAO;AAAA,EAC/B,KAAA,EAAO;AAAA,IACL,UAAA,EAAY,QAAA;AAAA,IACZ,SAAA,EAAW,YAAA;AAAA,IACX,YAAA,EAAc,GAAA;AAAA,IACd,WAAA,EAAa,CAAA;AAAA,IACb,aAAA,EAAe,KAAA;AAAA,IACf,GAAA,EAAK,CAAA;AAAA,IACL,iBAAA,EAAmB,CAAA;AAAA,IACnB,eAAA,EAAiB;AAAA,GACnB;AAAA,EACA,OAAA,EAAS;AAAA,IACP,iBAAA,EAAmB,EAAA;AAAA,IACnB,eAAA,EAAiB;AAAA,GACnB;AAAA,EACA,GAAA,EAAK;AAAA,IACH,YAAA,EAAc,GAAA;AAAA,IACd,MAAA,EAAQ,CAAA;AAAA,IACR,KAAA,EAAO;AAAA,GACT;AAAA,EACA,KAAA,EAAO;AAAA,IACL,QAAA,EAAU,EAAA;AAAA,IACV,UAAA,EAAY,KAAA;AAAA,IACZ,aAAA,EAAe,CAAA;AAAA,IACf,aAAA,EAAe;AAAA,GACjB;AAAA,EACA,OAAA,EAAS;AAAA,IACP,QAAA,EAAU;AAAA;AAEd,CAAC,CAAA;ACzGM,SAAS,WAAA,CAAY;AAAA,EAC1B,MAAA;AAAA,EACA,MAAA;AAAA,EACA,OAAA;AAAA,EACA,OAAA;AAAA,EACA,KAAA;AAAA,EACA;AACF,CAAA,EAAkC;AAChC,EAAA,MAAM,cAAc,OAAA,IAAW,OAAA;AAC/B,EAAA,MAAM,aAAA,GAAgB,OAAO,WAAA,KAAgB,UAAA;AAE7C,EAAA,uBACEE,eAAAA;AAAA,IAAC,SAAA;AAAA,IAAA;AAAA,MACC,oBAAoB,CAAA,EAAGE,sBAAA,CAAc,MAAM,CAAC,CAAA,WAAA,EAAc,OAAO,MAAM,CAAA,CAAA;AAAA,MACvE,iBAAA,EAAkB,QAAA;AAAA,MAClB,kBAAA,EAAoB,EAAE,QAAA,EAAU,CAAC,aAAA,EAAc;AAAA,MAC/C,UAAU,CAAC,aAAA;AAAA,MACX,OAAA,EAAS,gBAAgB,WAAA,GAAc,MAAA;AAAA,MACvC,KAAA,EAAO,CAAC,EAAE,OAAA,EAAQ,KAAM;AAAA,QACtBJ,OAAAA,CAAO,IAAA;AAAA,QACP,aAAA,IAAiB,WAAWA,OAAAA,CAAO,WAAA;AAAA,QACnC;AAAA,OACF;AAAA,MACA,MAAA,EAAQ,MAAA,IAAU,CAAA,aAAA,EAAgB,MAAM,CAAA,CAAA;AAAA,MAExC,QAAA,EAAA;AAAA,wBAAAG,cAAAA,CAAC,IAAA,EAAA,EAAK,KAAA,EAAOH,OAAAA,CAAO,SAClB,QAAA,kBAAAG,cAAAA,CAAC,IAAA,EAAA,EAAK,KAAA,EAAOH,OAAAA,CAAO,QAAA,EAAW,QAAA,EAAAK,qBAAA,CAAa,MAAM,GAAE,CAAA,EACtD,CAAA;AAAA,wBACAH,eAAAA,CAAC,IAAA,EAAA,EAAK,KAAA,EAAOF,QAAO,IAAA,EAClB,QAAA,EAAA;AAAA,0BAAAE,eAAAA,CAAC,IAAA,EAAA,EAAK,KAAA,EAAOF,OAAAA,CAAO,MAAA,EAClB,QAAA,EAAA;AAAA,4BAAAG,cAAAA,CAAC,QAAK,aAAA,EAAe,CAAA,EAAG,OAAOH,OAAAA,CAAO,KAAA,EACnC,QAAA,EAAAI,sBAAA,CAAc,MAAM,CAAA,EACvB,CAAA;AAAA,4BACAD,cAAAA,CAAC,kBAAA,EAAA,EAAmB,MAAA,EAAQ,OAAO,MAAA,EAAQ;AAAA,WAAA,EAC7C,CAAA;AAAA,0BACAA,cAAAA,CAAC,IAAA,EAAA,EAAK,aAAA,EAAe,CAAA,EAAG,OAAOH,OAAAA,CAAO,WAAA,EACnC,QAAA,EAAAM,4BAAA,CAAoB,MAAM,CAAA,EAC7B,CAAA;AAAA,UACC,MAAA,CAAO,aAAa,MAAA,oBACnBJ,gBAAC,IAAA,EAAA,EAAK,KAAA,EAAOF,QAAO,OAAA,EAClB,QAAA,EAAA;AAAA,4BAAAG,eAAC,IAAA,EAAA,EAAK,KAAA,EAAOH,OAAAA,CAAO,QAAA,EAAW,iBAAO,QAAA,EAAS,CAAA;AAAA,YAC9C,MAAA,CAAO,YAAY,MAAA,oBAClBE,gBAAC,IAAA,EAAA,EAAK,KAAA,EAAOF,QAAO,OAAA,EAAU,QAAA,EAAA;AAAA,cAAA,MAAA,CAAO,OAAA;AAAA,cAAQ;AAAA,aAAA,EAAE;AAAA,WAAA,EAEnD,CAAA;AAAA,UAED,MAAA,CAAO,KAAA,oBACNG,cAAAA,CAAC,IAAA,EAAA,EAAK,aAAA,EAAe,CAAA,EAAG,KAAA,EAAOH,OAAAA,CAAO,KAAA,EACnC,QAAA,EAAA,MAAA,CAAO,KAAA,EACV;AAAA,SAAA,EAEJ;AAAA;AAAA;AAAA,GACF;AAEJ;AAEA,IAAMA,OAAAA,GAAS,WAAW,MAAA,CAAO;AAAA,EAC/B,IAAA,EAAM;AAAA,IACJ,IAAA,EAAM,CAAA;AAAA,IACN,QAAA,EAAU;AAAA,GACZ;AAAA,EACA,IAAA,EAAM;AAAA,IACJ,UAAA,EAAY,YAAA;AAAA,IACZ,eAAA,EAAiB,eAAe,OAAA,CAAQ,IAAA;AAAA,IACxC,WAAA,EAAa,eAAe,OAAA,CAAQ,MAAA;AAAA,IACpC,YAAA,EAAc,EAAA;AAAA,IACd,WAAA,EAAa,CAAA;AAAA,IACb,aAAA,EAAe,KAAA;AAAA,IACf,GAAA,EAAK,EAAA;AAAA,IACL,OAAA,EAAS;AAAA,GACX;AAAA,EACA,WAAA,EAAa;AAAA,IACX,eAAA,EAAiB,eAAe,OAAA,CAAQ,EAAA;AAAA,IACxC,SAAA,EAAW,CAAC,EAAE,KAAA,EAAO,MAAM;AAAA,GAC7B;AAAA,EACA,WAAA,EAAa;AAAA,IACX,KAAA,EAAO,eAAe,OAAA,CAAQ,SAAA;AAAA,IAC9B,QAAA,EAAU,EAAA;AAAA,IACV,UAAA,EAAY,EAAA;AAAA,IACZ,SAAA,EAAW;AAAA,GACb;AAAA,EACA,KAAA,EAAO;AAAA,IACL,KAAA,EAAO,cAAA,CAAe,MAAA,CAAO,KAAA,CAAM,IAAA;AAAA,IACnC,QAAA,EAAU,EAAA;AAAA,IACV,SAAA,EAAW;AAAA,GACb;AAAA,EACA,MAAA,EAAQ;AAAA,IACN,UAAA,EAAY,QAAA;AAAA,IACZ,aAAA,EAAe,KAAA;AAAA,IACf,GAAA,EAAK,CAAA;AAAA,IACL,cAAA,EAAgB;AAAA,GAClB;AAAA,EACA,OAAA,EAAS;AAAA,IACP,UAAA,EAAY,QAAA;AAAA,IACZ,eAAA,EAAiB,eAAe,OAAA,CAAQ,KAAA;AAAA,IACxC,WAAA,EAAa,eAAe,OAAA,CAAQ,MAAA;AAAA,IACpC,YAAA,EAAc,CAAA;AAAA,IACd,WAAA,EAAa,CAAA;AAAA,IACb,MAAA,EAAQ,EAAA;AAAA,IACR,cAAA,EAAgB,QAAA;AAAA,IAChB,KAAA,EAAO;AAAA,GACT;AAAA,EACA,QAAA,EAAU;AAAA,IACR,QAAA,EAAU;AAAA,GACZ;AAAA,EACA,OAAA,EAAS;AAAA,IACP,KAAA,EAAO,eAAe,OAAA,CAAQ,SAAA;AAAA,IAC9B,QAAA,EAAU;AAAA,GACZ;AAAA,EACA,OAAA,EAAS;AAAA,IACP,UAAA,EAAY,QAAA;AAAA,IACZ,aAAA,EAAe,KAAA;AAAA,IACf,GAAA,EAAK,CAAA;AAAA,IACL,SAAA,EAAW;AAAA,GACb;AAAA,EACA,QAAA,EAAU;AAAA,IACR,eAAA,EAAiB,eAAe,OAAA,CAAQ,KAAA;AAAA,IACxC,YAAA,EAAc,CAAA;AAAA,IACd,KAAA,EAAO,eAAe,OAAA,CAAQ,QAAA;AAAA,IAC9B,QAAA,EAAU,EAAA;AAAA,IACV,UAAA,EAAY,KAAA;AAAA,IACZ,QAAA,EAAU,QAAA;AAAA,IACV,iBAAA,EAAmB,CAAA;AAAA,IACnB,eAAA,EAAiB;AAAA,GACnB;AAAA,EACA,KAAA,EAAO;AAAA,IACL,KAAA,EAAO,eAAe,OAAA,CAAQ,IAAA;AAAA,IAC9B,IAAA,EAAM,CAAA;AAAA,IACN,QAAA,EAAU,EAAA;AAAA,IACV,UAAA,EAAY;AAAA;AAEhB,CAAC,CAAA;ACtID,IAAM,0BAAA,uBAAiC,GAAA,CAAY;AAAA,EACjD,cAAA;AAAA,EACA,GAAGO;AACL,CAAC,CAAA;AAUD,IAAM,sBAAA,GAEF;AAAA,EACF,EAAA,EAAI;AAAA,IACF,MAAA,EAAQ;AAAA,MACN;AAAA,QACE,GAAA,EAAK,YAAA;AAAA,QACL,KAAA,EAAO,YAAA;AAAA,QACP,WAAA,EAAa,oCAAA;AAAA,QACb,WAAA,EAAa;AAAA;AACf,KACF;AAAA,IACA,IAAA,EAAM;AAAA,MACJ;AAAA,QACE,GAAA,EAAK,UAAA;AAAA,QACL,KAAA,EAAO,UAAA;AAAA,QACP,WAAA,EAAa,sDAAA;AAAA,QACb,WAAA,EAAa;AAAA;AACf,KACF;AAAA,IACA,YAAA,EAAc;AAAA,MACZ;AAAA,QACE,GAAA,EAAK,WAAA;AAAA,QACL,KAAA,EAAO,cAAA;AAAA,QACP,WAAA,EAAa,wDAAA;AAAA,QACb,WAAA,EAAa;AAAA,OACf;AAAA,MACA;AAAA,QACE,GAAA,EAAK,mBAAA;AAAA,QACL,KAAA,EAAO,qBAAA;AAAA,QACP,WAAA,EAAa,+CAAA;AAAA,QACb,WAAA,EAAa,KAAA;AAAA,QACb,YAAA,EAAc;AAAA;AAChB,KACF;AAAA,IACA,MAAA,EAAQ;AAAA,MACN;AAAA,QACE,GAAA,EAAK,MAAA;AAAA,QACL,KAAA,EAAO,cAAA;AAAA,QACP,WAAA,EAAa,kDAAA;AAAA,QACb,WAAA,EAAa;AAAA;AACf;AACF;AAEJ,CAAA;AAEA,SAAS,uBAAuB,MAAA,EAAuC;AACrE,EAAA,MAAM,SAAA,GAAYC,+BAAsB,MAAM,CAAA;AAC9C,EAAA,IAAI,WAAW,IAAA,EAAM;AACnB,IAAA,OAAO,SAAA;AAAA,EACT;AAEA,EAAA,OAAO,SAAA,CAAU,OAAO,CAAC,KAAA,KAAU,2BAA2B,GAAA,CAAI,KAAA,CAAM,EAAE,CAAC,CAAA;AAC7E;AAEA,SAAS,eAAA,CACP,QACA,QAAA,EACuB;AACvB,EAAA,OAAO,sBAAA,CAAuB,MAAM,CAAA,GAAI,QAAQ,KAAK,EAAC;AACxD;AAEA,SAAS,qBAAqB,KAAA,EAAwB;AACpD,EAAA,IAAI,KAAA,KAAU,MAAA,IAAa,KAAA,KAAU,IAAA,EAAM;AACzC,IAAA,OAAO,EAAA;AAAA,EACT;AACA,EAAA,OAAO,OAAO,KAAK,CAAA;AACrB;AAEA,SAAS,iBAAA,CAAkB,OAA4B,KAAA,EAAwB;AAC7E,EAAA,MAAM,OAAA,GAAU,MAAM,IAAA,EAAK;AAC3B,EAAA,IAAI,YAAY,EAAA,EAAI;AAClB,IAAA,OAAO,EAAA;AAAA,EACT;AACA,EAAA,IAAI,KAAA,CAAM,iBAAiB,SAAA,EAAW;AACpC,IAAA,OAAO,OAAA;AAAA,EACT;AAEA,EAAA,MAAM,OAAA,GAAU,OAAO,OAAO,CAAA;AAC9B,EAAA,OAAO,MAAA,CAAO,QAAA,CAAS,OAAO,CAAA,GAAI,OAAA,GAAU,OAAA;AAC9C;AAEA,SAAS,oBAAA,CACP,MAAA,EACA,QAAA,EACA,YAAA,EACe;AACf,EAAA,IAAI,MAAA,KAAW,IAAA,IAAQ,QAAA,KAAa,cAAA,EAAgB;AAClD,IAAA,IAAI,CAAC,YAAA,CAAa,SAAA,EAAW,IAAA,EAAK,EAAG;AACnC,MAAA,OAAO,0BAAA;AAAA,IACT;AAEA,IAAA,MAAM,QAAA,GAAW,YAAA,CAAa,iBAAA,EAAmB,IAAA,EAAK;AACtD,IAAA,IAAI,QAAA,EAAU;AACZ,MAAA,MAAM,UAAA,GAAa,OAAO,QAAQ,CAAA;AAClC,MAAA,IAAI,CAAC,MAAA,CAAO,SAAA,CAAU,UAAU,CAAA,IAAK,cAAc,CAAA,EAAG;AACpD,QAAA,OAAO,gDAAA;AAAA,MACT;AAAA,IACF;AAAA,EACF;AAEA,EAAA,KAAA,MAAW,KAAA,IAAS,eAAA,CAAgB,MAAA,EAAQ,QAAQ,CAAA,EAAG;AACrD,IAAA,IAAI,KAAA,CAAM,iBAAiB,SAAA,EAAW;AACpC,MAAA;AAAA,IACF;AACA,IAAA,MAAM,GAAA,GAAM,YAAA,CAAa,KAAA,CAAM,GAAG,GAAG,IAAA,EAAK;AAC1C,IAAA,IAAI,OAAO,CAAC,MAAA,CAAO,SAAS,MAAA,CAAO,GAAG,CAAC,CAAA,EAAG;AACxC,MAAA,OAAO,CAAA,EAAG,MAAM,KAAK,CAAA,iBAAA,CAAA;AAAA,IACvB;AAAA,EACF;AAEA,EAAA,OAAO,IAAA;AACT;AAYO,SAAS,iBAAA,CAAkB;AAAA,EAChC,MAAA;AAAA,EACA,aAAA;AAAA,EACA,MAAA;AAAA,EACA,QAAA;AAAA,EACA,KAAA;AAAA,EACA;AACF,CAAA,EAAwC;AACtC,EAAA,MAAM,SAAA,GAAYC,cAAQ,MAAM,sBAAA,CAAuB,MAAM,CAAA,EAAG,CAAC,MAAM,CAAC,CAAA;AACxE,EAAA,MAAM,kBACJ,SAAA,CAAU,IAAA;AAAA,IACR,CAAC,KAAA,KAAwB,KAAA,CAAM,EAAA,KAAO,aAAA,EAAe;AAAA,GACvD,EAAG,EAAA,IACH,SAAA,CAAU,CAAC,GAAG,EAAA,IACd,EAAA;AACF,EAAA,MAAM,CAAC,QAAA,EAAU,WAAW,CAAA,GAAIC,eAAS,eAAe,CAAA;AACxD,EAAA,MAAM,CAAC,MAAA,EAAQ,SAAS,IAAIA,cAAA,CAAS,aAAA,EAAe,UAAU,EAAE,CAAA;AAChE,EAAA,MAAM,CAAC,OAAA,EAAS,UAAU,IAAIA,cAAA,CAAS,aAAA,EAAe,WAAW,EAAE,CAAA;AACnE,EAAA,MAAM,CAAC,YAAA,EAAc,eAAe,CAAA,GAAIA,cAAA;AAAA,IAAiC,MACvE,MAAA,CAAO,WAAA;AAAA,MACL,MAAA,CAAO,OAAA,CAAQ,aAAA,EAAe,OAAA,IAAW,EAAE,CAAA,CAAE,GAAA,CAAI,CAAC,CAAC,GAAA,EAAK,KAAK,CAAA,KAAM;AAAA,QACjE,GAAA;AAAA,QACA,qBAAqB,KAAK;AAAA,OAC3B;AAAA;AACH,GACF;AACA,EAAA,MAAM,CAAC,QAAA,EAAU,WAAW,CAAA,GAAIA,eAAS,KAAK,CAAA;AAC9C,EAAA,MAAM,CAAC,KAAA,EAAO,QAAQ,CAAA,GAAIA,eAAwB,IAAI,CAAA;AAEtD,EAAA,MAAM,eAAe,SAAA,CAAU,IAAA;AAAA,IAC7B,CAAC,KAAA,KAAwB,KAAA,CAAM,EAAA,KAAO;AAAA,GACxC;AACA,EAAA,MAAM,WAAA,GAAc,cAAc,cAAA,IAAkB,KAAA;AACpD,EAAA,MAAM,YAAA,GAAe,cAAc,eAAA,IAAmB,KAAA;AACtD,EAAA,MAAM,YAAA,GAAe,eAAA,CAAgB,MAAA,EAAQ,QAAQ,CAAA;AAErD,EAAAC,eAAA,CAAU,MAAM;AACd,IAAA,MAAM,YAAY,aAAA,EAAe,QAAA;AACjC,IAAA,MAAM,YAAA,GACJ,SAAA,CAAU,IAAA,CAAK,CAAC,KAAA,KAAwB,KAAA,CAAM,EAAA,KAAO,SAAS,CAAA,EAAG,EAAA,IACjE,SAAA,CAAU,CAAC,GAAG,EAAA,IACd,EAAA;AACF,IAAA,WAAA,CAAY,YAAY,CAAA;AACxB,IAAA,SAAA,CAAU,aAAA,EAAe,UAAU,EAAE,CAAA;AACrC,IAAA,UAAA,CAAW,aAAA,EAAe,WAAW,EAAE,CAAA;AACvC,IAAA,eAAA;AAAA,MACE,MAAA,CAAO,WAAA;AAAA,QACL,MAAA,CAAO,OAAA,CAAQ,aAAA,EAAe,OAAA,IAAW,EAAE,CAAA,CAAE,GAAA,CAAI,CAAC,CAAC,GAAA,EAAK,KAAK,CAAA,KAAM;AAAA,UACjE,GAAA;AAAA,UACA,qBAAqB,KAAK;AAAA,SAC3B;AAAA;AACH,KACF;AACA,IAAA,QAAA,CAAS,IAAI,CAAA;AAAA,EACf,CAAA,EAAG,CAAC,SAAA,EAAW,aAAa,CAAC,CAAA;AAE7B,EAAAA,eAAA,CAAU,MAAM;AACd,IAAA,IAAI,CAAC,eAAe,MAAA,EAAQ;AAC1B,MAAA,SAAA,CAAU,EAAE,CAAA;AAAA,IACd;AACA,IAAA,IAAI,CAAC,gBAAgB,OAAA,EAAS;AAC5B,MAAA,UAAA,CAAW,EAAE,CAAA;AAAA,IACf;AAAA,EACF,GAAG,CAAC,MAAA,EAAQ,OAAA,EAAS,WAAA,EAAa,YAAY,CAAC,CAAA;AAE/C,EAAA,MAAM,oBAAA,GAAuB,CAAC,YAAA,KAA+B;AAC3D,IAAA,IAAI,iBAAiB,QAAA,EAAU;AAC7B,MAAA;AAAA,IACF;AACA,IAAA,WAAA,CAAY,YAAY,CAAA;AAGxB,IAAA,SAAA,CAAU,EAAE,CAAA;AACZ,IAAA,UAAA,CAAW,EAAE,CAAA;AACb,IAAA,eAAA,CAAgB,EAAE,CAAA;AAClB,IAAA,QAAA,CAAS,IAAI,CAAA;AAAA,EACf,CAAA;AAEA,EAAA,MAAM,aAAa,YAA2B;AAC5C,IAAA,QAAA,CAAS,IAAI,CAAA;AAEb,IAAA,IAAI,CAAC,QAAA,EAAU;AACb,MAAA,QAAA,CAAS,mBAAmB,CAAA;AAC5B,MAAA;AAAA,IACF;AAEA,IAAA,IAAI,CAAC,UAAU,IAAA,CAAK,CAAC,UAAwB,KAAA,CAAM,EAAA,KAAO,QAAQ,CAAA,EAAG;AACnE,MAAA,QAAA,CAAS,mBAAmB,CAAA;AAC5B,MAAA;AAAA,IACF;AAEA,IAAA,IAAI,WAAA,IAAe,CAAC,MAAA,CAAO,IAAA,EAAK,EAAG;AACjC,MAAA,QAAA,CAAS,qBAAqB,CAAA;AAC9B,MAAA;AAAA,IACF;AAEA,IAAA,IAAI,YAAA,IAAgB,CAAC,OAAA,CAAQ,IAAA,EAAK,EAAG;AACnC,MAAA,QAAA,CAAS,sBAAsB,CAAA;AAC/B,MAAA;AAAA,IACF;AAEA,IAAA,MAAM,WAAA,GAAc,oBAAA,CAAqB,MAAA,EAAQ,QAAA,EAAU,YAAY,CAAA;AACvE,IAAA,IAAI,WAAA,EAAa;AACf,MAAA,QAAA,CAAS,WAAW,CAAA;AACpB,MAAA;AAAA,IACF;AAEA,IAAA,WAAA,CAAY,IAAI,CAAA;AAChB,IAAA,IAAI;AACF,MAAA,MAAM,MAAA,GAA8B,EAAE,QAAA,EAAS;AAC/C,MAAA,IAAI,WAAA,IAAe,MAAA,CAAO,IAAA,EAAK,EAAG;AAChC,QAAA,MAAA,CAAO,MAAA,GAAS,OAAO,IAAA,EAAK;AAAA,MAC9B;AACA,MAAA,IAAI,YAAA,IAAgB,OAAA,CAAQ,IAAA,EAAK,EAAG;AAClC,QAAA,MAAA,CAAO,OAAA,GAAU,QAAQ,IAAA,EAAK;AAAA,MAChC;AACA,MAAA,MAAM,UAAU,MAAA,CAAO,WAAA;AAAA,QACrB,YAAA,CACG,GAAA,CAAI,CAAC,KAAA,KAAU;AAAA,UACd,KAAA,CAAM,GAAA;AAAA,UACN,kBAAkB,KAAA,EAAO,YAAA,CAAa,KAAA,CAAM,GAAG,KAAK,EAAE;AAAA,SACvD,EACA,MAAA,CAAO,CAAC,GAAG,KAAK,CAAA,KAAM,KAAA,KAAU,EAAE;AAAA,OACvC;AACA,MAAA,IAAI,MAAA,CAAO,IAAA,CAAK,OAAO,CAAA,CAAE,SAAS,CAAA,EAAG;AACnC,QAAA,MAAA,CAAO,OAAA,GAAU,OAAA;AAAA,MACnB;AACA,MAAA,MAAM,OAAO,MAAM,CAAA;AAAA,IACrB,SAAS,SAAA,EAAW;AAClB,MAAA,QAAA;AAAA,QACE,SAAA,YAAqB,KAAA,GAAQ,SAAA,CAAU,OAAA,GAAU;AAAA,OACnD;AAAA,IACF,CAAA,SAAE;AACA,MAAA,WAAA,CAAY,KAAK,CAAA;AAAA,IACnB;AAAA,EACF,CAAA;AAEA,EAAA,uBACET,eAAAA,CAAC,IAAA,EAAA,EAAK,KAAA,EAAO,CAACF,OAAAA,CAAO,IAAA,EAAM,KAAK,CAAA,EAAG,MAAA,EAAQ,MAAA,IAAU,qBAAA,EACnD,QAAA,EAAA;AAAA,oBAAAE,gBAAC,IAAA,EAAA,EACC,QAAA,EAAA;AAAA,sBAAAA,gBAAC,IAAA,EAAA,EAAK,iBAAA,EAAkB,QAAA,EAAS,KAAA,EAAOF,QAAO,KAAA,EAAO,QAAA,EAAA;AAAA,QAAA,YAAA;AAAA,QACzCI,uBAAc,MAAM;AAAA,OAAA,EACjC,CAAA;AAAA,sBACAD,cAAAA,CAAC,IAAA,EAAA,EAAK,KAAA,EAAOH,OAAAA,CAAO,UAAU,QAAA,EAAA,+CAAA,EAE9B;AAAA,KAAA,EACF,CAAA;AAAA,IAEC,yBACCG,cAAAA,CAAC,IAAA,EAAA,EAAK,iBAAA,EAAkB,SAAQ,KAAA,EAAOH,OAAAA,CAAO,QAAA,EAC5C,QAAA,kBAAAG,eAAC,IAAA,EAAA,EAAK,KAAA,EAAOH,OAAAA,CAAO,SAAA,EAAY,iBAAM,CAAA,EACxC,CAAA;AAAA,oBAGFE,eAAAA,CAAC,IAAA,EAAA,EAAK,KAAA,EAAOF,QAAO,OAAA,EAClB,QAAA,EAAA;AAAA,sBAAAG,cAAAA,CAAC,IAAA,EAAA,EAAK,KAAA,EAAOH,OAAAA,CAAO,cAAc,QAAA,EAAA,UAAA,EAAQ,CAAA;AAAA,sBAC1CG,eAAC,IAAA,EAAA,EAAK,KAAA,EAAOH,QAAO,YAAA,EACjB,QAAA,EAAA,SAAA,CAAU,GAAA,CAAI,CAAC,KAAA,KAAwB;AACtC,QAAA,MAAM,QAAA,GAAW,aAAa,KAAA,CAAM,EAAA;AACpC,QAAA,uBACEE,eAAAA;AAAA,UAAC,SAAA;AAAA,UAAA;AAAA,YACC,kBAAA,EAAoB,CAAA,OAAA,EAAU,KAAA,CAAM,IAAI,CAAA,CAAA;AAAA,YACxC,iBAAA,EAAkB,QAAA;AAAA,YAClB,kBAAA,EAAoB,EAAE,QAAA,EAAS;AAAA,YAE/B,OAAA,EAAS,MAAM,oBAAA,CAAqB,KAAA,CAAM,EAAE,CAAA;AAAA,YAC5C,OAAO,CAACF,OAAAA,CAAO,cAAA,EAAgB,QAAA,IAAYA,QAAO,QAAQ,CAAA;AAAA,YAC1D,MAAA,EAAQ,CAAA,gBAAA,EAAmB,KAAA,CAAM,EAAE,CAAA,CAAA;AAAA,YAEnC,QAAA,EAAA;AAAA,8BAAAG,eAAC,IAAA,EAAA,EAAK,KAAA,EAAOH,OAAAA,CAAO,YAAA,EAAe,gBAAM,IAAA,EAAK,CAAA;AAAA,8BAC9CG,cAAAA,CAAC,IAAA,EAAA,EAAK,OAAOH,OAAAA,CAAO,mBAAA,EACjB,gBAAM,WAAA,EACT,CAAA;AAAA,8BACAG,cAAAA,CAAC,IAAA,EAAA,EAAK,OAAOH,OAAAA,CAAO,IAAA,EAAO,gBAAM,IAAA,EAAK;AAAA;AAAA,WAAA;AAAA,UATjC,KAAA,CAAM;AAAA,SAUb;AAAA,MAEJ,CAAC,CAAA,EACH;AAAA,KAAA,EACF,CAAA;AAAA,IAEC,+BACCE,eAAAA,CAAC,IAAA,EAAA,EAAK,KAAA,EAAOF,QAAO,OAAA,EAClB,QAAA,EAAA;AAAA,sBAAAG,cAAAA,CAAC,IAAA,EAAA,EAAK,KAAA,EAAOH,OAAAA,CAAO,cAAc,QAAA,EAAA,SAAA,EAAO,CAAA;AAAA,sBACzCG,cAAAA;AAAA,QAAC,SAAA;AAAA,QAAA;AAAA,UACC,kBAAA,EAAmB,SAAA;AAAA,UACnB,cAAA,EAAe,MAAA;AAAA,UACf,YAAA,EAAc,SAAA;AAAA,UACd,WAAA,EAAa,CAAA,MAAA,EAAS,YAAA,EAAc,IAAA,IAAQ,QAAQ,CAAA,QAAA,CAAA;AAAA,UACpD,eAAA,EAAe,IAAA;AAAA,UACf,OAAOH,OAAAA,CAAO,KAAA;AAAA,UACd,MAAA,EAAO,iBAAA;AAAA,UACP,KAAA,EAAO;AAAA;AAAA;AACT,KAAA,EACF,CAAA;AAAA,IAGD,gCACCE,eAAAA,CAAC,IAAA,EAAA,EAAK,KAAA,EAAOF,QAAO,OAAA,EAClB,QAAA,EAAA;AAAA,sBAAAG,cAAAA,CAAC,IAAA,EAAA,EAAK,KAAA,EAAOH,OAAAA,CAAO,cAAc,QAAA,EAAA,UAAA,EAAQ,CAAA;AAAA,sBAC1CG,cAAAA;AAAA,QAAC,SAAA;AAAA,QAAA;AAAA,UACC,kBAAA,EAAmB,UAAA;AAAA,UACnB,cAAA,EAAe,MAAA;AAAA,UACf,YAAA,EAAc,UAAA;AAAA,UACd,WAAA,EAAY,aAAA;AAAA,UACZ,OAAOH,OAAAA,CAAO,KAAA;AAAA,UACd,MAAA,EAAO,kBAAA;AAAA,UACP,KAAA,EAAO;AAAA;AAAA;AACT,KAAA,EACF,CAAA;AAAA,IAGD,aAAa,MAAA,GAAS,CAAA,oBACrBG,cAAAA,CAAC,IAAA,EAAA,EAAK,OAAOH,OAAAA,CAAO,UAAA,EACjB,QAAA,EAAA,YAAA,CAAa,GAAA,CAAI,CAAC,KAAA,qBACjBE,gBAAC,IAAA,EAAA,EAAqB,KAAA,EAAOF,QAAO,OAAA,EAClC,QAAA,EAAA;AAAA,sBAAAG,eAAC,IAAA,EAAA,EAAK,KAAA,EAAOH,OAAAA,CAAO,YAAA,EAAe,gBAAM,KAAA,EAAM,CAAA;AAAA,sBAC/CG,cAAAA;AAAA,QAAC,SAAA;AAAA,QAAA;AAAA,UACC,oBAAoB,KAAA,CAAM,KAAA;AAAA,UAC1B,cAAA,EAAe,MAAA;AAAA,UACf,cAAc,KAAA,CAAM,YAAA;AAAA,UACpB,YAAA,EAAc,CAAC,KAAA,KACb,eAAA,CAAgB,CAAC,OAAA,MAAa;AAAA,YAC5B,GAAG,OAAA;AAAA,YACH,CAAC,KAAA,CAAM,GAAG,GAAG;AAAA,WACf,CAAE,CAAA;AAAA,UAEJ,aAAa,KAAA,CAAM,WAAA;AAAA,UACnB,OAAOH,OAAAA,CAAO,KAAA;AAAA,UACd,MAAA,EAAQ,CAAA,eAAA,EAAkB,KAAA,CAAM,GAAG,CAAA,CAAA;AAAA,UACnC,KAAA,EAAO,YAAA,CAAa,KAAA,CAAM,GAAG,CAAA,IAAK;AAAA;AAAA,OACpC;AAAA,sBACAG,cAAAA,CAAC,IAAA,EAAA,EAAK,OAAOH,OAAAA,CAAO,iBAAA,EAAoB,gBAAM,WAAA,EAAY;AAAA,KAAA,EAAA,EAjBjD,KAAA,CAAM,GAkBjB,CACD,CAAA,EACH,CAAA;AAAA,oBAGFE,eAAAA,CAAC,IAAA,EAAA,EAAK,KAAA,EAAOF,QAAO,OAAA,EACjB,QAAA,EAAA;AAAA,MAAA,QAAA,oBACCG,cAAAA;AAAA,QAAC,SAAA;AAAA,QAAA;AAAA,UACC,kBAAA,EAAmB,8BAAA;AAAA,UACnB,iBAAA,EAAkB,QAAA;AAAA,UAClB,OAAA,EAAS,QAAA;AAAA,UACT,OAAOH,OAAAA,CAAO,eAAA;AAAA,UACd,MAAA,EAAO,uBAAA;AAAA,UAEP,0BAAAG,cAAAA,CAAC,IAAA,EAAA,EAAK,KAAA,EAAOH,OAAAA,CAAO,qBAAqB,QAAA,EAAA,QAAA,EAAM;AAAA;AAAA,OACjD;AAAA,sBAEFG,cAAAA;AAAA,QAAC,SAAA;AAAA,QAAA;AAAA,UACC,kBAAA,EAAmB,4BAAA;AAAA,UACnB,iBAAA,EAAkB,QAAA;AAAA,UAClB,kBAAA,EAAoB,EAAE,QAAA,EAAU,QAAA,IAAY,CAAC,QAAA,EAAS;AAAA,UACtD,QAAA,EAAU,YAAY,CAAC,QAAA;AAAA,UACvB,OAAA,EAAS,UAAA;AAAA,UACT,KAAA,EAAO;AAAA,YACLH,OAAAA,CAAO,aAAA;AAAA,YAAA,CACN,QAAA,IAAY,CAAC,QAAA,KAAaA,OAAAA,CAAO;AAAA,WACpC;AAAA,UACA,MAAA,EAAO,qBAAA;AAAA,UAEP,QAAA,kBAAAG,eAAC,IAAA,EAAA,EAAK,KAAA,EAAOH,QAAO,iBAAA,EACjB,QAAA,EAAA,QAAA,GAAW,cAAc,oBAAA,EAC5B;AAAA;AAAA;AACF,KAAA,EACF;AAAA,GAAA,EACF,CAAA;AAEJ;AAEA,IAAMA,OAAAA,GAAS,WAAW,MAAA,CAAO;AAAA,EAC/B,OAAA,EAAS;AAAA,IACP,aAAA,EAAe,KAAA;AAAA,IACf,GAAA,EAAK,EAAA;AAAA,IACL,cAAA,EAAgB;AAAA,GAClB;AAAA,EACA,cAAA,EAAgB;AAAA,IACd,OAAA,EAAS;AAAA,GACX;AAAA,EACA,QAAA,EAAU;AAAA,IACR,eAAA,EAAiB,cAAA,CAAe,MAAA,CAAO,KAAA,CAAM,EAAA;AAAA,IAC7C,WAAA,EAAa,cAAA,CAAe,MAAA,CAAO,KAAA,CAAM,MAAA;AAAA,IACzC,YAAA,EAAc,CAAA;AAAA,IACd,WAAA,EAAa,CAAA;AAAA,IACb,OAAA,EAAS;AAAA,GACX;AAAA,EACA,SAAA,EAAW;AAAA,IACT,KAAA,EAAO,cAAA,CAAe,MAAA,CAAO,KAAA,CAAM,IAAA;AAAA,IACnC,QAAA,EAAU,EAAA;AAAA,IACV,UAAA,EAAY;AAAA,GACd;AAAA,EACA,IAAA,EAAM;AAAA,IACJ,eAAA,EAAiB,eAAe,OAAA,CAAQ,IAAA;AAAA,IACxC,WAAA,EAAa,eAAe,OAAA,CAAQ,MAAA;AAAA,IACpC,YAAA,EAAc,EAAA;AAAA,IACd,WAAA,EAAa,CAAA;AAAA,IACb,GAAA,EAAK,EAAA;AAAA,IACL,OAAA,EAAS;AAAA,GACX;AAAA,EACA,KAAA,EAAO;AAAA,IACL,eAAA,EAAiB,eAAe,OAAA,CAAQ,IAAA;AAAA,IACxC,WAAA,EAAa,eAAe,OAAA,CAAQ,YAAA;AAAA,IACpC,YAAA,EAAc,CAAA;AAAA,IACd,WAAA,EAAa,CAAA;AAAA,IACb,KAAA,EAAO,eAAe,OAAA,CAAQ,IAAA;AAAA,IAC9B,QAAA,EAAU,EAAA;AAAA,IACV,iBAAA,EAAmB,EAAA;AAAA,IACnB,eAAA,EAAiB;AAAA,GACnB;AAAA,EACA,iBAAA,EAAmB;AAAA,IACjB,KAAA,EAAO,eAAe,OAAA,CAAQ,SAAA;AAAA,IAC9B,QAAA,EAAU,EAAA;AAAA,IACV,UAAA,EAAY;AAAA,GACd;AAAA,EACA,UAAA,EAAY;AAAA,IACV,GAAA,EAAK;AAAA,GACP;AAAA,EACA,aAAA,EAAe;AAAA,IACb,eAAA,EAAiB,eAAe,KAAA,CAAM,EAAA;AAAA,IACtC,YAAA,EAAc,CAAA;AAAA,IACd,iBAAA,EAAmB,EAAA;AAAA,IACnB,eAAA,EAAiB;AAAA,GACnB;AAAA,EACA,iBAAA,EAAmB;AAAA,IACjB,KAAA,EAAO,eAAe,KAAA,CAAM,OAAA;AAAA,IAC5B,QAAA,EAAU,EAAA;AAAA,IACV,UAAA,EAAY;AAAA,GACd;AAAA,EACA,mBAAA,EAAqB;AAAA,IACnB,KAAA,EAAO,eAAe,OAAA,CAAQ,SAAA;AAAA,IAC9B,QAAA,EAAU,EAAA;AAAA,IACV,UAAA,EAAY,EAAA;AAAA,IACZ,SAAA,EAAW;AAAA,GACb;AAAA,EACA,YAAA,EAAc;AAAA,IACZ,GAAA,EAAK;AAAA,GACP;AAAA,EACA,YAAA,EAAc;AAAA,IACZ,KAAA,EAAO,eAAe,OAAA,CAAQ,IAAA;AAAA,IAC9B,QAAA,EAAU,EAAA;AAAA,IACV,UAAA,EAAY;AAAA,GACd;AAAA,EACA,cAAA,EAAgB;AAAA,IACd,eAAA,EAAiB,eAAe,OAAA,CAAQ,EAAA;AAAA,IACxC,WAAA,EAAa,eAAe,OAAA,CAAQ,MAAA;AAAA,IACpC,YAAA,EAAc,EAAA;AAAA,IACd,WAAA,EAAa,CAAA;AAAA,IACb,OAAA,EAAS;AAAA,GACX;AAAA,EACA,eAAA,EAAiB;AAAA,IACf,YAAA,EAAc,CAAA;AAAA,IACd,iBAAA,EAAmB,EAAA;AAAA,IACnB,eAAA,EAAiB;AAAA,GACnB;AAAA,EACA,mBAAA,EAAqB;AAAA,IACnB,KAAA,EAAO,eAAe,OAAA,CAAQ,QAAA;AAAA,IAC9B,QAAA,EAAU,EAAA;AAAA,IACV,UAAA,EAAY;AAAA,GACd;AAAA,EACA,OAAA,EAAS;AAAA,IACP,GAAA,EAAK;AAAA,GACP;AAAA,EACA,YAAA,EAAc;AAAA,IACZ,KAAA,EAAO,eAAe,OAAA,CAAQ,SAAA;AAAA,IAC9B,QAAA,EAAU,EAAA;AAAA,IACV,UAAA,EAAY,KAAA;AAAA,IACZ,aAAA,EAAe,CAAA;AAAA,IACf,aAAA,EAAe;AAAA,GACjB;AAAA,EACA,QAAA,EAAU;AAAA,IACR,eAAA,EAAiB,eAAe,KAAA,CAAM,MAAA;AAAA,IACtC,WAAA,EAAa,eAAe,KAAA,CAAM;AAAA,GACpC;AAAA,EACA,QAAA,EAAU;AAAA,IACR,KAAA,EAAO,eAAe,OAAA,CAAQ,SAAA;AAAA,IAC9B,QAAA,EAAU,EAAA;AAAA,IACV,SAAA,EAAW;AAAA,GACb;AAAA,EACA,IAAA,EAAM;AAAA,IACJ,SAAA,EAAW,YAAA;AAAA,IACX,eAAA,EAAiB,cAAA,CAAe,MAAA,CAAO,YAAA,CAAa,EAAA;AAAA,IACpD,YAAA,EAAc,CAAA;AAAA,IACd,KAAA,EAAO,cAAA,CAAe,MAAA,CAAO,YAAA,CAAa,IAAA;AAAA,IAC1C,QAAA,EAAU,EAAA;AAAA,IACV,UAAA,EAAY,KAAA;AAAA,IACZ,SAAA,EAAW,CAAA;AAAA,IACX,QAAA,EAAU,QAAA;AAAA,IACV,iBAAA,EAAmB,CAAA;AAAA,IACnB,eAAA,EAAiB,CAAA;AAAA,IACjB,aAAA,EAAe;AAAA,GACjB;AAAA,EACA,KAAA,EAAO;AAAA,IACL,KAAA,EAAO,eAAe,OAAA,CAAQ,IAAA;AAAA,IAC9B,QAAA,EAAU,EAAA;AAAA,IACV,UAAA,EAAY;AAAA;AAEhB,CAAC,CAAA;ACrdD,IAAM,eAAA,GACJ,kEAAA;AAEF,IAAM,aAAA,GAAwB;AAAA,EAC5B;AAAA,IACE,EAAA,EAAI,MAAA;AAAA,IACJ,IAAA,EAAM,MAAA;AAAA,IACN,KAAA,EAAO,CAAA;AAAA,IACP,QAAA,EAAU,KAAA;AAAA,IACV,QAAA,EAAU,OAAA;AAAA,IACV,QAAA,EAAU,CAAC,gBAAA,EAAkB,WAAA,EAAa,mBAAmB;AAAA,GAC/D;AAAA,EACA;AAAA,IACE,EAAA,EAAI,KAAA;AAAA,IACJ,IAAA,EAAM,KAAA;AAAA,IACN,KAAA,EAAO,EAAA;AAAA,IACP,QAAA,EAAU,KAAA;AAAA,IACV,QAAA,EAAU,OAAA;AAAA,IACV,QAAA,EAAU,CAAC,aAAA,EAAe,oBAAA,EAAsB,kBAAkB;AAAA,GACpE;AAAA,EACA;AAAA,IACE,EAAA,EAAI,MAAA;AAAA,IACJ,IAAA,EAAM,MAAA;AAAA,IACN,KAAA,EAAO,EAAA;AAAA,IACP,QAAA,EAAU,KAAA;AAAA,IACV,QAAA,EAAU,OAAA;AAAA,IACV,QAAA,EAAU,CAAC,iBAAA,EAAmB,iBAAA,EAAmB,qBAAqB;AAAA;AAE1E,CAAA;AAEA,IAAM,gBAAA,GAAmB;AAAA,EACvB,gEAAA;AAAA,EACA,2GAAA;AAAA,EACA,gFAAA;AAAA,EACA;AACF,CAAA;AAEA,IAAM,2BAA2B,GAAA,GAAM,IAAA;AAEvC,SAAS,oBAAoB,YAAA,EAAiC;AAC5D,EAAA,IAAI,OAAO,iBAAiB,SAAA,EAAW;AACrC,IAAA,OAAO,YAAA;AAAA,EACT;AACA,EAAA,MAAM,OAAA,GAAU,UAAA;AAGhB,EAAA,OAAO,OAAA,CAAQ,OAAA,EAAS,GAAA,EAAK,QAAA,KAAa,YAAA;AAC5C;AAEA,SAAS,mBAAA,GAA+C;AACtD,EAAA,MAAM,OAAA,uBAAc,GAAA,EAAoB;AAExC,EAAA,OAAO;AAAA,IACL,QAAQ,GAAA,EAAK;AACX,MAAA,OAAO,OAAA,CAAQ,GAAA,CAAI,GAAG,CAAA,IAAK,IAAA;AAAA,IAC7B,CAAA;AAAA,IACA,WAAW,GAAA,EAAK;AACd,MAAA,OAAA,CAAQ,OAAO,GAAG,CAAA;AAAA,IACpB,CAAA;AAAA,IACA,OAAA,CAAQ,KAAK,KAAA,EAAO;AAClB,MAAA,OAAA,CAAQ,GAAA,CAAI,KAAK,KAAK,CAAA;AAAA,IACxB;AAAA,GACF;AACF;AAEA,SAAS,UAAA,CAAW,WAAmB,GAAA,EAAqB;AAC1D,EAAA,OAAO,CAAA,EAAG,SAAS,CAAA,CAAA,EAAI,GAAG,CAAA,CAAA;AAC5B;AAEA,SAAS,SAAS,MAAA,EAAwB;AACxC,EAAA,OAAO,GAAG,MAAM,CAAA,CAAA,EAAI,KAAK,GAAA,EAAI,CAAE,SAAS,EAAE,CAAC,IAAI,IAAA,CAAK,MAAA,GACjD,QAAA,CAAS,EAAE,EACX,KAAA,CAAM,CAAA,EAAG,EAAE,CAAC,CAAA,CAAA;AACjB;AAEA,SAASY,UAAS,KAAA,EAAkD;AAClE,EAAA,OAAO,OAAO,UAAU,QAAA,IAAY,KAAA,KAAU,QAAQ,CAAC,KAAA,CAAM,QAAQ,KAAK,CAAA;AAC5E;AAEA,SAAS,cAAc,KAAA,EAAmC;AACxD,EAAA,OACE,KAAA,CAAM,OAAA,CAAQ,KAAK,CAAA,IAAK,KAAA,CAAM,MAAM,CAAC,IAAA,KAAS,OAAO,IAAA,KAAS,QAAQ,CAAA;AAE1E;AAEA,SAAS,eAAe,KAAA,EAAuC;AAC7D,EAAA,OAAOA,SAAAA,CAAS,KAAK,CAAA,IAAK,OAAO,MAAM,EAAA,KAAO,QAAA;AAChD;AAEA,SAAS,cAAc,KAAA,EAAsC;AAC3D,EAAA,OACEA,UAAS,KAAK,CAAA,IACd,CAAC,QAAA,EAAU,QAAQ,WAAW,CAAA,CAAE,QAAA,CAAS,MAAA,CAAO,MAAM,IAAI,CAAC,CAAA,IAC3D,OAAO,MAAM,OAAA,KAAY,QAAA;AAE7B;AAEA,SAAS,qBAAqB,KAAA,EAA6C;AACzE,EAAA,OACEA,UAAS,KAAK,CAAA,IACd,OAAO,KAAA,CAAM,SAAA,KAAc,YAC3B,OAAO,KAAA,CAAM,aAAa,QAAA,IAC1B,KAAA,CAAM,QAAQ,KAAA,CAAM,QAAQ,KAC5B,KAAA,CAAM,QAAA,CAAS,MAAM,aAAa,CAAA;AAEtC;AAEA,SAAS,mBAAmB,KAAA,EAA2C;AACrE,EAAA,OACEA,UAAS,KAAK,CAAA,IACd,OAAO,KAAA,CAAM,OAAO,QAAA,IACpB,OAAO,KAAA,CAAM,KAAA,KAAU,YACvB,OAAO,KAAA,CAAM,YAAA,KAAiB,QAAA,KAC7B,MAAM,IAAA,KAAS,MAAA,IAAa,OAAO,KAAA,CAAM,SAAS,QAAA,CAAA,KAClD,KAAA,CAAM,KAAA,KAAU,MAAA,IAAa,OAAO,KAAA,CAAM,KAAA,KAAU,QAAA,CAAA,KACpD,KAAA,CAAM,SAAS,MAAA,IAAa,OAAO,KAAA,CAAM,IAAA,KAAS,cAClD,KAAA,CAAM,SAAA,KAAc,MAAA,IAAa,OAAO,MAAM,SAAA,KAAc,QAAA,CAAA,KAC5D,KAAA,CAAM,QAAA,KAAa,UAAa,OAAO,KAAA,CAAM,QAAA,KAAa,SAAA,CAAA,KAC1D,MAAM,IAAA,KAAS,MAAA,IAAa,OAAO,KAAA,CAAM,SAAS,QAAA,CAAA,KAClD,KAAA,CAAM,WAAA,KAAgB,MAAA,IACrB,OAAO,KAAA,CAAM,WAAA,KAAgB,QAAA,CAAA,KAC9B,KAAA,CAAM,YAAY,MAAA,IAAa,aAAA,CAAc,KAAA,CAAM,OAAO,OAC1D,KAAA,CAAM,OAAA,KAAY,MAAA,IAAa,aAAA,CAAc,MAAM,OAAO,CAAA,CAAA;AAE/D;AAEA,SAAS,wBACP,KAAA,EACgC;AAChC,EAAA,OACEA,UAAS,KAAK,CAAA,IACd,OAAO,KAAA,CAAM,EAAA,KAAO,YACpB,OAAO,KAAA,CAAM,IAAA,KAAS,QAAA,KACrB,MAAM,WAAA,KAAgB,MAAA,IACrB,OAAO,KAAA,CAAM,WAAA,KAAgB,aAC/B,aAAA,CAAc,KAAA,CAAM,WAAW,CAAA,KAC9B,MAAM,QAAA,KAAa,MAAA,IAAa,OAAO,KAAA,CAAM,QAAA,KAAa,eAC1D,KAAA,CAAM,SAAA,KAAc,UAAa,OAAO,KAAA,CAAM,cAAc,QAAA,CAAA,KAC5D,KAAA,CAAM,cAAc,MAAA,IAAa,OAAO,MAAM,SAAA,KAAc,QAAA,CAAA;AAEjE;AAEA,SAAS,wBACP,KAAA,EACgC;AAChC,EAAA,OACEA,UAAS,KAAK,CAAA,IACd,OAAO,KAAA,CAAM,OAAO,QAAA,IACpB,OAAO,KAAA,CAAM,IAAA,KAAS,aACrB,KAAA,CAAM,WAAA,KAAgB,UACrB,OAAO,KAAA,CAAM,gBAAgB,QAAA,CAAA,IAC/B,aAAA,CAAc,KAAA,CAAM,aAAa,KACjC,aAAA,CAAc,KAAA,CAAM,OAAO,CAAA,KAC1B,MAAM,SAAA,KAAc,MAAA,IAAa,OAAO,KAAA,CAAM,cAAc,QAAA,CAAA,KAC5D,KAAA,CAAM,cAAc,MAAA,IAAa,OAAO,MAAM,SAAA,KAAc,QAAA,CAAA;AAEjE;AAEA,SAAS,cAAc,KAAA,EAAsC;AAC3D,EAAA,OACEA,UAAS,KAAK,CAAA,IACd,OAAO,KAAA,CAAM,MAAA,KAAW,aACvB,KAAA,CAAM,YAAA,KAAiB,UACtB,OAAO,KAAA,CAAM,iBAAiB,QAAA,CAAA,KAC/B,KAAA,CAAM,cAAc,MAAA,IAAa,OAAO,MAAM,SAAA,KAAc,QAAA,CAAA;AAEjE;AAEA,SAAS,mBAAmB,KAAA,EAA2C;AACrE,EAAA,OACEA,SAAAA,CAAS,KAAK,CAAA,IACd,OAAO,MAAM,EAAA,KAAO,QAAA,IACpB,OAAO,KAAA,CAAM,IAAA,KAAS,QAAA,IACtB,OAAO,KAAA,CAAM,SAAS,QAAA,IACtB,OAAO,KAAA,CAAM,IAAA,KAAS,QAAA,IACtB,OAAO,KAAA,CAAM,QAAA,KAAa,YAC1B,OAAO,KAAA,CAAM,GAAA,KAAQ,QAAA,IACrB,OAAO,KAAA,CAAM,SAAA,KAAc,QAAA,IAC3B,OAAO,MAAM,OAAA,KAAY,QAAA;AAE7B;AAEA,SAAS,OAAO,KAAA,EAA+B;AAC7C,EAAA,OACEA,UAAS,KAAK,CAAA,IACd,OAAO,KAAA,CAAM,EAAA,KAAO,YACpB,OAAO,KAAA,CAAM,SAAS,QAAA,IACtB,OAAO,MAAM,KAAA,KAAU,QAAA,IACvB,OAAO,KAAA,CAAM,QAAA,KAAa,YAC1B,CAAC,OAAA,EAAS,MAAA,EAAQ,UAAU,EAAE,QAAA,CAAS,MAAA,CAAO,MAAM,QAAQ,CAAC,KAC7D,KAAA,CAAM,OAAA,CAAQ,MAAM,QAAQ,CAAA,IAC5B,MAAM,QAAA,CAAS,KAAA,CAAM,CAAC,OAAA,KAAY,OAAO,YAAY,QAAQ,CAAA;AAEjE;AAEA,SAAS,eAAe,KAAA,EAAuC;AAC7D,EAAA,OACEA,SAAAA,CAAS,KAAK,CAAA,IACd,OAAO,MAAM,EAAA,KAAO,QAAA,IACpB,OAAO,KAAA,CAAM,MAAA,KAAW,YACxB,OAAO,KAAA,CAAM,WAAW,QAAA,IACxB,CAAC,UAAU,WAAA,EAAa,UAAA,EAAY,UAAU,CAAA,CAAE,QAAA;AAAA,IAC9C,MAAA,CAAO,MAAM,MAAM;AAAA,OAErB,OAAO,KAAA,CAAM,qBAAqB,QAAA,IAClC,OAAO,MAAM,iBAAA,KAAsB,SAAA;AAEvC;AAEA,eAAe,aAAA,CACb,OAAA,EACA,GAAA,EACA,KAAA,EACA,KAAA,EACc;AACd,EAAA,IAAI;AACF,IAAA,MAAM,GAAA,GAAM,MAAM,OAAA,CAAQ,OAAA,CAAQ,GAAG,CAAA;AACrC,IAAA,MAAM,MAAA,GAAkB,IAAA,CAAK,KAAA,CAAM,GAAA,IAAO,IAAI,CAAA;AAC9C,IAAA,IAAI,CAAC,MAAM,OAAA,CAAQ,MAAM,KAAK,CAAC,MAAA,CAAO,KAAA,CAAM,KAAK,CAAA,EAAG;AAClD,MAAA,MAAM,MAAM,KAAA,CAAS,CAAA;AAAA,IACvB;AACA,IAAA,OAAO,MAAA;AAAA,EACT,SAAS,KAAA,EAAO;AACd,IAAA,MAAM,MAAM,KAAK,CAAA;AAAA,EACnB;AACF;AAEA,eAAe,SAAA,CACb,OAAA,EACA,GAAA,EACA,KAAA,EACA,KAAA,EACe;AACf,EAAA,IAAI;AACF,IAAA,MAAM,QAAQ,OAAA,CAAQ,GAAA,EAAK,IAAA,CAAK,SAAA,CAAU,KAAK,CAAC,CAAA;AAAA,EAClD,SAAS,KAAA,EAAO;AACd,IAAA,MAAM,MAAM,KAAK,CAAA;AAAA,EACnB;AACF;AAEA,SAAS,aAAA,CACP,IAAA,EACA,KAAA,EACA,QAAA,EACS;AACT,EAAA,IAAI,OAAO,IAAA,KAAS,QAAA,IAAY,OAAO,UAAU,QAAA,EAAU;AACzD,IAAA,IAAI,QAAA,KAAa,IAAA,EAAM,OAAO,IAAA,GAAO,KAAA;AACrC,IAAA,IAAI,QAAA,KAAa,KAAA,EAAO,OAAO,IAAA,IAAQ,KAAA;AACvC,IAAA,IAAI,QAAA,KAAa,IAAA,EAAM,OAAO,IAAA,GAAO,KAAA;AACrC,IAAA,OAAO,IAAA,IAAQ,KAAA;AAAA,EACjB;AAEA,EAAA,IAAI,OAAO,IAAA,KAAS,QAAA,IAAY,OAAO,UAAU,QAAA,EAAU;AACzD,IAAA,IAAI,QAAA,KAAa,IAAA,EAAM,OAAO,IAAA,GAAO,KAAA;AACrC,IAAA,IAAI,QAAA,KAAa,KAAA,EAAO,OAAO,IAAA,IAAQ,KAAA;AACvC,IAAA,IAAI,QAAA,KAAa,IAAA,EAAM,OAAO,IAAA,GAAO,KAAA;AACrC,IAAA,OAAO,IAAA,IAAQ,KAAA;AAAA,EACjB;AAEA,EAAA,OAAO,KAAA;AACT;AAEA,SAAS,gBAAA,CACP,MACA,SAAA,EACS;AACT,EAAA,MAAM,KAAA,GAAQ,IAAA,CAAK,SAAA,CAAU,KAAK,CAAA;AAElC,EAAA,QAAQ,UAAU,QAAA;AAAU,IAC1B,KAAK,IAAA;AACH,MAAA,OAAO,UAAU,SAAA,CAAU,KAAA;AAAA,IAC7B,KAAK,KAAA;AACH,MAAA,OAAO,UAAU,SAAA,CAAU,KAAA;AAAA,IAC7B,KAAK,IAAA;AAAA,IACL,KAAK,KAAA;AAAA,IACL,KAAK,IAAA;AAAA,IACL,KAAK,KAAA;AACH,MAAA,OAAO,aAAA,CAAc,KAAA,EAAO,SAAA,CAAU,KAAA,EAAO,UAAU,QAAQ,CAAA;AAAA,IACjE,KAAK,IAAA;AACH,MAAA,OAAO,KAAA,CAAM,QAAQ,SAAA,CAAU,KAAK,KAAK,SAAA,CAAU,KAAA,CAAM,SAAS,KAAK,CAAA;AAAA,IACzE,KAAK,UAAA;AACH,MAAA,OACE,OAAO,KAAA,KAAU,QAAA,IACjB,OAAO,SAAA,CAAU,UAAU,QAAA,IAC3B,KAAA,CAAM,QAAA,CAAS,SAAA,CAAU,KAAK,CAAA;AAAA,IAElC;AACE,MAAA,OAAO,KAAA;AAAA;AAEb;AAEA,SAAS,aAAA,CAAc,MAAoB,MAAA,EAA8B;AACvE,EAAA,OAAO,MAAA,CAAO,KAAA;AAAA,IAAM,CAAC,SAAA,KACnB,gBAAA,CAAiB,IAAA,EAAM,SAAS;AAAA,GAClC;AACF;AAEA,SAAS,WAAc,MAAA,EAAyB;AAC9C,EAAA,OAAO,MAAA;AACT;AAEA,SAAS,YAAe,OAAA,EAA8B;AACpD,EAAA,OAAO,OAAA;AACT;AAEA,SAAS,WAAW,KAAA,EAAuB;AACzC,EAAA,IAAI,IAAA,GAAO,CAAA;AACX,EAAA,KAAA,IAAS,QAAQ,CAAA,EAAG,KAAA,GAAQ,KAAA,CAAM,MAAA,EAAQ,SAAS,CAAA,EAAG;AACpD,IAAA,IAAA,GAAA,CAAQ,IAAA,IAAQ,CAAA,IAAK,IAAA,GAAO,KAAA,CAAM,WAAW,KAAK,CAAA;AAClD,IAAA,IAAA,IAAQ,CAAA;AAAA,EACV;AACA,EAAA,OAAO,IAAA,CAAK,GAAA,CAAI,IAAI,CAAA,CAAE,SAAS,EAAE,CAAA;AACnC;AAEA,SAAS,WAAW,IAAA,EAAkC;AACpD,EAAA,OAAO;AAAA,IACL,IAAI,IAAA,CAAK,EAAA;AAAA,IACT,OAAO,IAAA,CAAK,KAAA;AAAA,IACZ,MAAM,IAAA,CAAK,IAAA;AAAA,IACX,OAAO,IAAA,CAAK,KAAA;AAAA,IACZ,MAAM,IAAA,CAAK,IAAA;AAAA,IACX,WAAW,IAAA,CAAK;AAAA,GAClB;AACF;AAEA,SAAS,YAAY,IAAA,EAAqC;AACxD,EAAA,OAAO;AAAA,IACL,GAAG,WAAW,IAAI,CAAA;AAAA,IAClB,QAAA,EAAU,IAAA;AAAA,IACV,QAAA,EAAU,KAAK,QAAA,IAAY,KAAA;AAAA,IAC3B,OAAA,EAAS,aAAA,CAAc,IAAA,CAAK,OAAA,IAAW,EAAE,CAAA;AAAA,IACzC,OAAA,EAAS,aAAA,CAAc,IAAA,CAAK,OAAA,IAAW,EAAE,CAAA;AAAA,IACzC,IAAA,EAAM,KAAK,IAAA,IAAQ,MAAA;AAAA,IACnB,aAAa,IAAA,CAAK;AAAA,GACpB;AACF;AAEA,SAAS,cAAc,KAAA,EAAoC;AACzD,EAAA,OAAO,CAAC,GAAG,IAAI,GAAA,CAAI,KAAK,CAAC,CAAA;AAC3B;AAEA,SAAS,qBAAA,CACP,KAAA,EACA,OAAA,EACA,aAAA,EACK;AACL,EAAA,IAAI,QAAA,GAAW,KAAA;AAEf,EAAA,IAAI,SAAS,MAAA,EAAQ;AACnB,IAAA,MAAM,KAAA,GAAQ,OAAA,CAAQ,MAAA,CAAO,WAAA,EAAY;AACzC,IAAA,QAAA,GAAW,QAAA,CAAS,MAAA;AAAA,MAAO,CAAC,IAAA,KAC1B,aAAA,CAAc,IAAI,CAAA,CAAE,IAAA,CAAK,CAAC,KAAA,KAAU,KAAA,EAAO,WAAA,EAAY,CAAE,QAAA,CAAS,KAAK,CAAC;AAAA,KAC1E;AAAA,EACF;AAEA,EAAA,MAAM,MAAA,GAAS,SAAS,MAAA,IAAU,CAAA;AAClC,EAAA,MAAM,KAAA,GAAQ,SAAS,KAAA,IAAS,EAAA;AAChC,EAAA,OAAO,QAAA,CAAS,KAAA,CAAM,MAAA,EAAQ,MAAA,GAAS,KAAK,CAAA;AAC9C;AAEA,SAAS,mBAAA,CACP,OACA,QAAA,EACW;AACX,EAAA,MAAM,GAAA,GAAA,iBAAM,IAAI,IAAA,EAAK,EAAE,WAAA,EAAY;AACnC,EAAA,OAAO;AAAA,IACL,IAAI,KAAA,CAAM,EAAA,IAAM,QAAA,EAAU,EAAA,IAAM,SAAS,MAAM,CAAA;AAAA,IAC/C,MAAM,KAAA,CAAM,IAAA;AAAA,IACZ,aAAa,KAAA,CAAM,WAAA;AAAA,IACnB,WAAA,EAAa,aAAA;AAAA,MACX,KAAA,CAAM,WAAA,IAAe,QAAA,EAAU,WAAA,IAAe;AAAC,KACjD;AAAA,IACA,QAAA,EAAU,KAAA,CAAM,QAAA,IAAY,QAAA,EAAU,QAAA;AAAA,IACtC,SAAA,EAAW,UAAU,SAAA,IAAa,GAAA;AAAA,IAClC,SAAA,EAAW;AAAA,GACb;AACF;AAEA,SAAS,mBAAA,CACP,OACA,QAAA,EACW;AACX,EAAA,MAAM,GAAA,GAAA,iBAAM,IAAI,IAAA,EAAK,EAAE,WAAA,EAAY;AACnC,EAAA,OAAO;AAAA,IACL,IAAI,KAAA,CAAM,EAAA,IAAM,QAAA,EAAU,EAAA,IAAM,SAAS,MAAM,CAAA;AAAA,IAC/C,MAAM,KAAA,CAAM,IAAA;AAAA,IACZ,aAAa,KAAA,CAAM,WAAA;AAAA,IACnB,aAAA,EAAe,aAAA;AAAA,MACb,KAAA,CAAM,aAAA,IAAiB,QAAA,EAAU,aAAA,IAAiB;AAAC,KACrD;AAAA,IACA,SAAS,aAAA,CAAc,KAAA,CAAM,WAAW,QAAA,EAAU,OAAA,IAAW,EAAE,CAAA;AAAA,IAC/D,SAAA,EAAW,UAAU,SAAA,IAAa,GAAA;AAAA,IAClC,SAAA,EAAW;AAAA,GACb;AACF;AAEA,SAAS,UAAA,CAAqC,OAAY,IAAA,EAAc;AACtE,EAAA,MAAM,KAAA,GAAQ,MAAM,SAAA,CAAU,CAAC,cAAc,SAAA,CAAU,EAAA,KAAO,KAAK,EAAE,CAAA;AACrE,EAAA,IAAI,QAAQ,CAAA,EAAG;AACb,IAAA,OAAO,CAAC,GAAG,KAAA,EAAO,IAAI,CAAA;AAAA,EACxB;AAEA,EAAA,MAAM,IAAA,GAAO,CAAC,GAAG,KAAK,CAAA;AACtB,EAAA,IAAA,CAAK,KAAK,CAAA,GAAI,IAAA;AACd,EAAA,OAAO,IAAA;AACT;AAEA,SAAS,kBAAkB,QAAA,EAAiC;AAC1D,EAAA,MAAM,WAAA,GAAc,QAAA,CAAS,EAAA,CAAG,EAAE,GAAG,OAAA,IAAW,EAAA;AAChD,EAAA,IAAI,IAAA,GAAO,CAAA;AACX,EAAA,KAAA,IAAS,QAAQ,CAAA,EAAG,KAAA,GAAQ,WAAA,CAAY,MAAA,EAAQ,SAAS,CAAA,EAAG;AAC1D,IAAA,IAAA,GAAA,CAAQ,IAAA,IAAQ,CAAA,IAAK,IAAA,GAAO,WAAA,CAAY,WAAW,KAAK,CAAA;AACxD,IAAA,IAAA,IAAQ,CAAA;AAAA,EACV;AACA,EAAA,OACE,gBAAA,CAAiB,IAAA,CAAK,GAAA,CAAI,IAAI,CAAA,GAAI,iBAAiB,MAAM,CAAA,IACzD,gBAAA,CAAiB,CAAC,CAAA,IAClB,EAAA;AAEJ;AAEA,SAAS,cAAc,KAAA,EAA2B;AAChD,EAAA,IAAI,MAAA,GAAS,EAAA;AACb,EAAA,KAAA,IAAS,QAAQ,CAAA,EAAG,KAAA,GAAQ,KAAA,CAAM,MAAA,EAAQ,SAAS,CAAA,EAAG;AACpD,IAAA,MAAM,KAAA,GAAQ,KAAA,CAAM,KAAK,CAAA,IAAK,CAAA;AAC9B,IAAA,MAAM,MAAA,GAAS,KAAA,CAAM,KAAA,GAAQ,CAAC,CAAA,IAAK,CAAA;AACnC,IAAA,MAAM,KAAA,GAAQ,KAAA,CAAM,KAAA,GAAQ,CAAC,CAAA,IAAK,CAAA;AAClC,IAAA,MAAM,OAAA,GAAW,KAAA,IAAS,EAAA,GAAO,MAAA,IAAU,CAAA,GAAK,KAAA;AAChD,IAAA,MAAA,IAAU,eAAA,CAAiB,OAAA,IAAW,EAAA,GAAM,EAAE,CAAA,IAAK,EAAA;AACnD,IAAA,MAAA,IAAU,eAAA,CAAiB,OAAA,IAAW,EAAA,GAAM,EAAE,CAAA,IAAK,EAAA;AACnD,IAAA,MAAA,IACE,KAAA,GAAQ,IAAI,KAAA,CAAM,MAAA,GACb,gBAAiB,OAAA,IAAW,CAAA,GAAK,EAAE,CAAA,IAAK,EAAA,GACzC,GAAA;AACN,IAAA,MAAA,IACE,KAAA,GAAQ,IAAI,KAAA,CAAM,MAAA,GAAU,gBAAgB,OAAA,GAAU,EAAE,KAAK,EAAA,GAAM,GAAA;AAAA,EACvE;AACA,EAAA,OAAO,MAAA;AACT;AAEA,SAAS,cAAc,MAAA,EAA4B;AACjD,EAAA,MAAM,KAAA,GAAQ,MAAA,CAAO,OAAA,CAAQ,KAAA,EAAO,EAAE,CAAA;AACtC,EAAA,MAAM,SAAmB,EAAC;AAE1B,EAAA,KAAA,IAAS,QAAQ,CAAA,EAAG,KAAA,GAAQ,KAAA,CAAM,MAAA,EAAQ,SAAS,CAAA,EAAG;AACpD,IAAA,MAAM,QAAQ,eAAA,CAAgB,OAAA,CAAQ,KAAA,CAAM,KAAK,KAAK,GAAG,CAAA;AACzD,IAAA,MAAM,SAAS,eAAA,CAAgB,OAAA,CAAQ,MAAM,KAAA,GAAQ,CAAC,KAAK,GAAG,CAAA;AAC9D,IAAA,MAAM,QAAQ,eAAA,CAAgB,OAAA,CAAQ,MAAM,KAAA,GAAQ,CAAC,KAAK,GAAG,CAAA;AAC7D,IAAA,MAAM,SAAS,eAAA,CAAgB,OAAA,CAAQ,MAAM,KAAA,GAAQ,CAAC,KAAK,GAAG,CAAA;AAC9D,IAAA,MAAM,UAAW,KAAA,IAAS,EAAA,GAAO,MAAA,IAAU,EAAA,GAAO,SAAS,CAAA,GAAK,MAAA;AAChE,IAAA,MAAA,CAAO,IAAA,CAAM,OAAA,IAAW,EAAA,GAAM,GAAG,CAAA;AACjC,IAAA,IAAI,KAAA,GAAQ,IAAI,KAAA,CAAM,MAAA,SAAe,IAAA,CAAM,OAAA,IAAW,IAAK,GAAG,CAAA;AAC9D,IAAA,IAAI,QAAQ,CAAA,GAAI,KAAA,CAAM,QAAQ,MAAA,CAAO,IAAA,CAAK,UAAU,GAAG,CAAA;AAAA,EACzD;AAEA,EAAA,OAAO,IAAI,WAAW,MAAM,CAAA;AAC9B;AAEA,eAAe,cAAc,IAAA,EAA6B;AACxD,EAAA,IAAI,OAAO,IAAA,CAAK,WAAA,KAAgB,UAAA,EAAY;AAC1C,IAAA,MAAM,IAAIC,qBAAA;AAAA,MACR,wIAAA;AAAA,MACA;AAAA,KACF;AAAA,EACF;AACA,EAAA,IAAI,WAAA;AACJ,EAAA,IAAI;AACF,IAAA,WAAA,GAAc,MAAM,KAAK,WAAA,EAAY;AAAA,EACvC,SAAS,KAAA,EAAO;AACd,IAAA,MAAM,IAAIA,qBAAA;AAAA,MACR,yCAAA;AAAA,MACA,eAAA;AAAA,MACA;AAAA,KACF;AAAA,EACF;AACA,EAAA,MAAM,KAAA,GAAQ,IAAI,UAAA,CAAW,WAAW,CAAA;AACxC,EAAA,MAAM,QAAA,GAAW,KAAK,IAAA,IAAQ,0BAAA;AAC9B,EAAA,OAAO,CAAA,KAAA,EAAQ,QAAQ,CAAA,QAAA,EAAW,aAAA,CAAc,KAAK,CAAC,CAAA,CAAA;AACxD;AAEA,SAAS,cAAc,OAAA,EAAuB;AAC5C,EAAA,IAAI,OAAO,SAAS,UAAA,EAAY;AAC9B,IAAA,MAAM,IAAIA,qBAAA;AAAA,MACR,0IAAA;AAAA,MACA;AAAA,KACF;AAAA,EACF;AACA,EAAA,MAAM,CAAC,OAAO,EAAA,EAAI,OAAA,GAAU,EAAE,CAAA,GAAI,OAAA,CAAQ,MAAM,GAAG,CAAA;AACnD,EAAA,MAAM,WACJ,IAAA,CAAK,KAAA,CAAM,kBAAkB,CAAA,GAAI,CAAC,CAAA,IAAK,0BAAA;AACzC,EAAA,MAAM,KAAA,GAAQ,cAAc,OAAO,CAAA;AACnC,EAAA,MAAM,WAAA,GAAc,MAAM,MAAA,CAAO,KAAA;AAAA,IAC/B,KAAA,CAAM,UAAA;AAAA,IACN,KAAA,CAAM,aAAa,KAAA,CAAM;AAAA,GAC3B;AACA,EAAA,OAAO,IAAI,KAAK,CAAC,WAAW,GAAG,EAAE,IAAA,EAAM,UAAU,CAAA;AACnD;AAEA,SAAS,qBAAA,CACP,SACA,SAAA,EACW;AACX,EAAA,MAAM,gBAAgB,CAAC,UAAA,KACrB,WAAW,SAAA,EAAW,CAAA,GAAA,EAAM,UAAU,CAAA,CAAE,CAAA;AAC1C,EAAA,MAAM,cAAA,GAAiB,CAAC,UAAA,KACtB,aAAA;AAAA,IACE,OAAA;AAAA,IACA,cAAc,UAAU,CAAA;AAAA,IACxB,cAAA;AAAA,IACA,CAAC,UACC,IAAIC,gBAAA;AAAA,MACF,qCAAA;AAAA,MACA,aAAA;AAAA,MACA;AAAA;AACF,GACJ;AACF,EAAA,MAAM,eAAA,GAAkB,CAAC,UAAA,EAAoB,OAAA,KAC3C,SAAA;AAAA,IACE,OAAA;AAAA,IACA,cAAc,UAAU,CAAA;AAAA,IACxB,OAAA;AAAA,IACA,CAAC,UACC,IAAIA,gBAAA;AAAA,MACF,sCAAA;AAAA,MACA,aAAA;AAAA,MACA;AAAA;AACF,GACJ;AAEF,EAAA,OAAO;AAAA,IACL,MAAM,MAAA,CACJ,UAAA,EACA,IAAA,EACA;AACA,MAAA,MAAM,OAAA,GAAU,MAAM,cAAA,CAAe,UAAU,CAAA;AAC/C,MAAA,MAAM,SAAuB,EAAE,GAAG,MAAM,EAAA,EAAI,QAAA,CAAS,QAAQ,CAAA,EAAE;AAC/D,MAAA,OAAA,CAAQ,KAAK,MAAM,CAAA;AACnB,MAAA,MAAM,eAAA,CAAgB,YAAY,OAAO,CAAA;AACzC,MAAA,OAAO,WAA+B,MAAM,CAAA;AAAA,IAC9C,CAAA;AAAA,IACA,MAAM,GAAA,CAAO,UAAA,EAAoB,EAAA,EAAY;AAC3C,MAAA,MAAM,MAAA,GAAA,CAAU,MAAM,cAAA,CAAe,UAAU,CAAA,EAAG,IAAA;AAAA,QAChD,CAAC,SAAA,KAAc,SAAA,CAAU,EAAA,KAAO;AAAA,OAClC;AACA,MAAA,OAAO,MAAA,GAAS,UAAA,CAAc,MAAM,CAAA,GAAI,IAAA;AAAA,IAC1C,CAAA;AAAA,IACA,MAAM,MAAA,CACJ,UAAA,EACA,EAAA,EACA,IAAA,EACA;AACA,MAAA,MAAM,OAAA,GAAU,MAAM,cAAA,CAAe,UAAU,CAAA;AAC/C,MAAA,MAAM,QAAQ,OAAA,CAAQ,SAAA,CAAU,CAAC,SAAA,KAAc,SAAA,CAAU,OAAO,EAAE,CAAA;AAClE,MAAA,IAAI,KAAA,GAAQ,GAAG,OAAO,IAAA;AACtB,MAAA,MAAM,MAAA,GAAS,QAAQ,KAAK,CAAA;AAC5B,MAAA,IAAI,CAAC,QAAQ,OAAO,IAAA;AACpB,MAAA,OAAA,CAAQ,KAAK,CAAA,GAAI,EAAE,GAAG,MAAA,EAAQ,GAAG,IAAA,EAAK;AACtC,MAAA,MAAM,eAAA,CAAgB,YAAY,OAAO,CAAA;AACzC,MAAA,OAAO,UAAA,CAAc,OAAA,CAAQ,KAAK,CAAA,IAAK,MAAM,CAAA;AAAA,IAC/C,CAAA;AAAA,IACA,MAAM,MAAA,CAAO,UAAA,EAAoB,EAAA,EAAY;AAC3C,MAAA,MAAM,OAAA,GAAU,MAAM,cAAA,CAAe,UAAU,CAAA;AAC/C,MAAA,MAAM,cAAc,OAAA,CAAQ,MAAA,CAAO,CAAC,SAAA,KAAc,SAAA,CAAU,OAAO,EAAE,CAAA;AACrE,MAAA,IAAI,WAAA,CAAY,MAAA,KAAW,OAAA,CAAQ,MAAA,EAAQ,OAAO,KAAA;AAClD,MAAA,MAAM,eAAA,CAAgB,YAAY,WAAW,CAAA;AAC7C,MAAA,OAAO,IAAA;AAAA,IACT,CAAA;AAAA,IACA,MAAM,IAAA,CAAQ,UAAA,EAAoB,OAAA,EAAuB;AACvD,MAAA,IAAI,OAAA,GAAU,MAAM,cAAA,CAAe,UAAU,CAAA;AAC7C,MAAA,IAAI,SAAS,OAAA,EAAS;AACpB,QAAA,MAAM,EAAE,SAAQ,GAAI,OAAA;AACpB,QAAA,MAAM,SAAA,GAAY,OAAA,CAAQ,KAAA,KAAU,MAAA,GAAS,EAAA,GAAK,CAAA;AAClD,QAAA,OAAA,GAAU,CAAC,GAAG,OAAO,EAAE,IAAA,CAAK,CAAC,MAAM,KAAA,KAAU;AAC3C,UAAA,MAAM,SAAA,GAAY,KAAK,OAAO,CAAA;AAC9B,UAAA,MAAM,UAAA,GAAa,MAAM,OAAO,CAAA;AAChC,UAAA,IAAI,OAAO,SAAA,KAAc,QAAA,IAAY,OAAO,eAAe,QAAA,EAAU;AACnE,YAAA,OAAO,YAAY,UAAA,GACf,CAAC,SAAA,GACD,SAAA,GAAY,aACV,SAAA,GACA,CAAA;AAAA,UACR;AACA,UAAA,IAAI,OAAO,SAAA,KAAc,QAAA,IAAY,OAAO,eAAe,QAAA,EAAU;AACnE,YAAA,OAAO,YAAY,UAAA,GACf,CAAC,SAAA,GACD,SAAA,GAAY,aACV,SAAA,GACA,CAAA;AAAA,UACR;AACA,UAAA,OAAO,CAAA;AAAA,QACT,CAAC,CAAA;AAAA,MACH;AACA,MAAA,IAAI,SAAS,MAAA,EAAQ,OAAA,GAAU,OAAA,CAAQ,KAAA,CAAM,QAAQ,MAAM,CAAA;AAC3D,MAAA,IAAI,SAAS,KAAA,EAAO,OAAA,GAAU,QAAQ,KAAA,CAAM,CAAA,EAAG,QAAQ,KAAK,CAAA;AAC5D,MAAA,OAAO,YAAe,OAAO,CAAA;AAAA,IAC/B,CAAA;AAAA,IACA,MAAM,KAAA,CAAS,UAAA,EAAoB,MAAA,EAAqB;AACtD,MAAA,OAAO,WAAA;AAAA,QAAA,CACJ,MAAM,cAAA,CAAe,UAAU,CAAA,EAAG,MAAA;AAAA,UAAO,CAAC,MAAA,KACzC,aAAA,CAAc,MAAA,EAAQ,MAAM;AAAA;AAC9B,OACF;AAAA,IACF,CAAA;AAAA,IACA,MAAM,KAAA,CAAM,UAAA,EAAoB,MAAA,EAAsB;AACpD,MAAA,MAAM,OAAA,GAAU,MAAM,cAAA,CAAe,UAAU,CAAA;AAC/C,MAAA,OAAO,MAAA,IAAU,MAAA,CAAO,MAAA,GAAS,CAAA,GAC7B,QAAQ,MAAA,CAAO,CAAC,MAAA,KAAW,aAAA,CAAc,MAAA,EAAQ,MAAM,CAAC,CAAA,CAAE,SAC1D,OAAA,CAAQ,MAAA;AAAA,IACd;AAAA,GACF;AACF;AAEA,SAAS,uBAAA,CACP,SACA,SAAA,EACa;AACb,EAAA,MAAM,QAAA,GAAW,UAAA,CAAW,SAAA,EAAW,YAAY,CAAA;AACnD,EAAA,MAAM,UAAA,GAAa,UAAA,CAAW,SAAA,EAAW,cAAc,CAAA;AACvD,EAAA,MAAM,YAAY,MAChB,aAAA;AAAA,IACE,OAAA;AAAA,IACA,QAAA;AAAA,IACA,kBAAA;AAAA,IACA,CAAC,UACC,IAAIC,kBAAA;AAAA,MACF,wCAAA;AAAA,MACA,eAAA;AAAA,MACA;AAAA;AACF,GACJ;AACF,EAAA,MAAM,UAAA,GAAa,CAAC,KAAA,KAClB,SAAA;AAAA,IACE,OAAA;AAAA,IACA,QAAA;AAAA,IACA,KAAA;AAAA,IACA,CAAC,UACC,IAAIA,kBAAA;AAAA,MACF,yCAAA;AAAA,MACA,eAAA;AAAA,MACA;AAAA;AACF,GACJ;AAEF,EAAA,eAAe,cAAc,IAAA,EAA8C;AACzE,IAAA,IAAA,CAAK,WAAA,GAAA,iBAAc,IAAI,IAAA,EAAK,EAAE,WAAA,EAAY;AAC1C,IAAA,MAAM,OAAA,GAAuB;AAAA,MAC3B,QAAQ,IAAA,CAAK,EAAA;AAAA,MACb,YAAA,EAAc,SAAS,SAAS,CAAA;AAAA,MAChC,SAAA,EAAW,IAAI,IAAA,CAAK,IAAA,CAAK,GAAA,EAAI,GAAI,CAAA,GAAI,EAAA,GAAK,EAAA,GAAK,EAAA,GAAK,GAAI,CAAA,CAAE,WAAA,EAAY;AAAA,MACtE,IAAA,EAAM,WAAW,IAAI;AAAA,KACvB;AACA,IAAA,IAAI;AACF,MAAA,MAAM,QAAQ,OAAA,CAAQ,UAAA,EAAY,IAAA,CAAK,SAAA,CAAU,OAAO,CAAC,CAAA;AAAA,IAC3D,SAAS,KAAA,EAAO;AACd,MAAA,MAAM,IAAIA,kBAAA;AAAA,QACR,2CAAA;AAAA,QACA,eAAA;AAAA,QACA;AAAA,OACF;AAAA,IACF;AACA,IAAA,OAAO,OAAA;AAAA,EACT;AAEA,EAAA,OAAO;AAAA,IACL,MAAM,MAAA,CAAO,KAAA,EAAe,QAAA,EAAkB;AAC5C,MAAA,MAAM,KAAA,GAAQ,MAAM,SAAA,EAAU;AAC9B,MAAA,MAAM,OAAO,KAAA,CAAM,IAAA;AAAA,QACjB,CAAC,SAAA,KAAc,SAAA,CAAU,MAAM,WAAA,EAAY,KAAM,MAAM,WAAA;AAAY,OACrE;AACA,MAAA,IAAI,CAAC,IAAA,IAAQ,IAAA,CAAK,YAAA,KAAiB,UAAA,CAAW,QAAQ,CAAA,EAAG;AACvD,QAAA,MAAM,IAAIA,kBAAA,CAAU,2BAAA,EAA6B,qBAAqB,CAAA;AAAA,MACxE;AACA,MAAA,MAAM,OAAA,GAAU,MAAM,aAAA,CAAc,IAAI,CAAA;AACxC,MAAA,MAAM,WAAW,KAAK,CAAA;AACtB,MAAA,OAAO,OAAA;AAAA,IACT,CAAA;AAAA,IACA,MAAM,MAAA,CAAO,KAAA,EAAe,QAAA,EAAkB,IAAA,EAAe;AAC3D,MAAA,MAAM,KAAA,GAAQ,MAAM,SAAA,EAAU;AAC9B,MAAA,IACE,KAAA,CAAM,IAAA;AAAA,QACJ,CAAC,SAAA,KAAc,SAAA,CAAU,MAAM,WAAA,EAAY,KAAM,MAAM,WAAA;AAAY,OACrE,EACA;AACA,QAAA,MAAM,IAAIA,kBAAA,CAAU,qBAAA,EAAuB,aAAa,CAAA;AAAA,MAC1D;AACA,MAAA,MAAM,IAAA,GAAyB;AAAA,QAC7B,EAAA,EAAI,SAAS,MAAM,CAAA;AAAA,QACnB,KAAA;AAAA,QACA,MAAM,IAAA,IAAQ,KAAA,CAAM,KAAA,CAAM,GAAG,EAAE,CAAC,CAAA;AAAA,QAChC,SAAA,EAAA,iBAAW,IAAI,IAAA,EAAK,EAAE,WAAA,EAAY;AAAA,QAClC,YAAA,EAAc,WAAW,QAAQ;AAAA,OACnC;AACA,MAAA,KAAA,CAAM,KAAK,IAAI,CAAA;AACf,MAAA,MAAM,OAAA,GAAU,MAAM,aAAA,CAAc,IAAI,CAAA;AACxC,MAAA,MAAM,WAAW,KAAK,CAAA;AACtB,MAAA,OAAO,OAAA;AAAA,IACT,CAAA;AAAA,IACA,MAAM,eAAA,CACJ,QAAA,EACA,OAAA,EACA;AACA,MAAA,OAAO;AAAA,QACL,GAAA,EACE,SAAS,WAAA,IACT,CAAA,gBAAA,EAAmB,mBAAmB,MAAA,CAAO,QAAQ,CAAC,CAAC,CAAA;AAAA,OAC3D;AAAA,IACF,CAAA;AAAA,IACA,MAAM,OAAA,GAAU;AACd,MAAA,IAAI;AACF,QAAA,MAAM,OAAA,CAAQ,WAAW,UAAU,CAAA;AAAA,MACrC,SAAS,KAAA,EAAO;AACd,QAAA,MAAM,IAAIA,kBAAA;AAAA,UACR,2CAAA;AAAA,UACA,eAAA;AAAA,UACA;AAAA,SACF;AAAA,MACF;AAAA,IACF,CAAA;AAAA,IACA,MAAM,UAAA,GAAa;AACjB,MAAA,IAAI,GAAA;AACJ,MAAA,IAAI;AACF,QAAA,GAAA,GAAM,MAAM,OAAA,CAAQ,OAAA,CAAQ,UAAU,CAAA;AAAA,MACxC,SAAS,KAAA,EAAO;AACd,QAAA,MAAM,IAAIA,kBAAA;AAAA,UACR,0CAAA;AAAA,UACA,eAAA;AAAA,UACA;AAAA,SACF;AAAA,MACF;AACA,MAAA,IAAI,CAAC,KAAK,OAAO,IAAA;AACjB,MAAA,IAAI,MAAA;AACJ,MAAA,IAAI;AACF,QAAA,MAAA,GAAS,IAAA,CAAK,MAAM,GAAG,CAAA;AAAA,MACzB,SAAS,KAAA,EAAO;AACd,QAAA,MAAM,IAAIA,kBAAA;AAAA,UACR,0CAAA;AAAA,UACA,eAAA;AAAA,UACA;AAAA,SACF;AAAA,MACF;AACA,MAAA,IAAI,CAAC,aAAA,CAAc,MAAM,CAAA,EAAG;AAC1B,QAAA,MAAM,IAAIA,kBAAA;AAAA,UACR,sCAAA;AAAA,UACA;AAAA,SACF;AAAA,MACF;AACA,MAAA,IAAI,MAAA,CAAO,aAAa,IAAI,IAAA,CAAK,OAAO,SAAS,CAAA,mBAAI,IAAI,IAAA,EAAK,EAAG;AAC/D,QAAA,IAAI;AACF,UAAA,MAAM,OAAA,CAAQ,WAAW,UAAU,CAAA;AAAA,QACrC,SAAS,KAAA,EAAO;AACd,UAAA,MAAM,IAAIA,kBAAA;AAAA,YACR,mDAAA;AAAA,YACA,eAAA;AAAA,YACA;AAAA,WACF;AAAA,QACF;AACA,QAAA,OAAO,IAAA;AAAA,MACT;AACA,MAAA,OAAO,MAAA;AAAA,IACT,CAAA;AAAA,IACA,MAAM,OAAA,GAAU;AACd,MAAA,MAAM,OAAA,GAAU,MAAM,IAAA,CAAK,UAAA,EAAW;AACtC,MAAA,IAAI,CAAC,SAAS,OAAO,IAAA;AACrB,MAAA,MAAM,IAAA,GAAA,CAAQ,MAAM,SAAA,EAAU,EAAG,IAAA;AAAA,QAC/B,CAAC,SAAA,KAAc,SAAA,CAAU,EAAA,KAAO,OAAA,CAAQ;AAAA,OAC1C;AACA,MAAA,OAAO,IAAA,GAAO,UAAA,CAAW,IAAI,CAAA,GAAI,IAAA;AAAA,IACnC,CAAA;AAAA,IACA,MAAM,WAAW,OAAA,EAAoD;AACnE,MAAA,MAAM,OAAA,GAAU,MAAM,IAAA,CAAK,UAAA,EAAW;AACtC,MAAA,IAAI,CAAC,SAAS,OAAO,IAAA;AACrB,MAAA,MAAM,KAAA,GAAQ,MAAM,SAAA,EAAU;AAC9B,MAAA,MAAM,QAAQ,KAAA,CAAM,SAAA;AAAA,QAClB,CAAC,SAAA,KAAc,SAAA,CAAU,EAAA,KAAO,OAAA,CAAQ;AAAA,OAC1C;AACA,MAAA,IAAI,KAAA,GAAQ,GAAG,OAAO,IAAA;AACtB,MAAA,MAAM,IAAA,GAAO,MAAM,KAAK,CAAA;AACxB,MAAA,IAAI,CAAC,MAAM,OAAO,IAAA;AAClB,MAAA,KAAA,CAAM,KAAK,CAAA,GAAI,EAAE,GAAG,IAAA,EAAM,GAAG,OAAA,EAAQ;AACrC,MAAA,MAAM,WAAW,KAAK,CAAA;AACtB,MAAA,OAAO,UAAA,CAAW,KAAA,CAAM,KAAK,CAAA,IAAK,IAAI,CAAA;AAAA,IACxC;AAAA,GACF;AACF;AAEA,SAAS,2BAAA,CACP,SACA,SAAA,EACiB;AACjB,EAAA,MAAM,gBAAA,GAAmB,UAAA,CAAW,SAAA,EAAW,wBAAwB,CAAA;AACvE,EAAA,MAAM,QAAA,GAAW,UAAA,CAAW,SAAA,EAAW,gBAAgB,CAAA;AACvD,EAAA,MAAM,oBAAoB,MACxB,aAAA;AAAA,IACE,OAAA;AAAA,IACA,gBAAA;AAAA,IACA,cAAA;AAAA,IACA,CAAC,UACC,IAAIC,sBAAA;AAAA,MACF,2CAAA;AAAA,MACA,eAAA;AAAA,MACA;AAAA;AACF,GACJ;AACF,EAAA,MAAM,kBAAA,GAAqB,CAAC,aAAA,KAC1B,SAAA;AAAA,IACE,OAAA;AAAA,IACA,gBAAA;AAAA,IACA,aAAA;AAAA,IACA,CAAC,UACC,IAAIA,sBAAA;AAAA,MACF,4CAAA;AAAA,MACA,eAAA;AAAA,MACA;AAAA;AACF,GACJ;AAEF,EAAA,eAAe,SAAA,GAA6B;AAC1C,IAAA,IAAI,GAAA;AACJ,IAAA,IAAI;AACF,MAAA,GAAA,GAAM,MAAM,OAAA,CAAQ,OAAA,CAAQ,QAAQ,CAAA;AAAA,IACtC,SAAS,KAAA,EAAO;AACd,MAAA,MAAM,IAAIA,sBAAA;AAAA,QACR,mCAAA;AAAA,QACA,eAAA;AAAA,QACA;AAAA,OACF;AAAA,IACF;AACA,IAAA,IAAI,CAAC,GAAA,EAAK;AACR,MAAA,MAAM,SAAA;AAAA,QACJ,OAAA;AAAA,QACA,QAAA;AAAA,QACA,aAAA;AAAA,QACA,CAAC,UACC,IAAIA,sBAAA;AAAA,UACF,oCAAA;AAAA,UACA,eAAA;AAAA,UACA;AAAA;AACF,OACJ;AACA,MAAA,OAAO,aAAA;AAAA,IACT;AACA,IAAA,IAAI,MAAA;AACJ,IAAA,IAAI;AACF,MAAA,MAAA,GAAS,IAAA,CAAK,MAAM,GAAG,CAAA;AAAA,IACzB,SAAS,KAAA,EAAO;AACd,MAAA,MAAM,IAAIA,sBAAA;AAAA,QACR,mCAAA;AAAA,QACA,eAAA;AAAA,QACA;AAAA,OACF;AAAA,IACF;AACA,IAAA,IAAI,CAAC,MAAM,OAAA,CAAQ,MAAM,KAAK,CAAC,MAAA,CAAO,KAAA,CAAM,MAAM,CAAA,EAAG;AACnD,MAAA,MAAM,IAAIA,sBAAA;AAAA,QACR,mCAAA;AAAA,QACA;AAAA,OACF;AAAA,IACF;AACA,IAAA,OAAO,MAAA;AAAA,EACT;AAEA,EAAA,OAAO;AAAA,IACL,MAAM,eAAe,MAAA,EAAwB;AAC3C,MAAA,MAAM,IAAA,GAAA,CAAQ,MAAM,SAAA,EAAU,EAAG,IAAA;AAAA,QAC/B,CAAC,SAAA,KAAc,SAAA,CAAU,EAAA,KAAO,MAAA,CAAO;AAAA,OACzC;AACA,MAAA,IAAI,CAAC,IAAA,EAAM;AACT,QAAA,MAAM,IAAIA,sBAAA;AAAA,UACR,CAAA,cAAA,EAAiB,OAAO,MAAM,CAAA,CAAA;AAAA,UAC9B;AAAA,SACF;AAAA,MACF;AACA,MAAA,MAAM,aAAA,GAAgB,MAAM,iBAAA,EAAkB;AAC9C,MAAA,MAAM,YAAA,GAA6B;AAAA,QACjC,EAAA,EAAI,SAAS,cAAc,CAAA;AAAA,QAC3B,QAAQ,MAAA,CAAO,MAAA;AAAA,QACf,QAAQ,IAAA,CAAK,EAAA;AAAA,QACb,MAAA,EAAQ,QAAA;AAAA,QACR,kBAAkB,IAAI,IAAA;AAAA,UACpB,KAAK,GAAA,EAAI,GAAI,EAAA,GAAK,EAAA,GAAK,KAAK,EAAA,GAAK;AAAA,UACjC,WAAA,EAAY;AAAA,QACd,iBAAA,EAAmB;AAAA,OACrB;AACA,MAAA,aAAA,CAAc,KAAK,YAAY,CAAA;AAC/B,MAAA,MAAM,mBAAmB,aAAa,CAAA;AACtC,MAAA,OAAO;AAAA,QACL,GAAA,EAAK,OAAO,UAAA,IAAc,4BAAA;AAAA,QAC1B,WAAW,YAAA,CAAa;AAAA,OAC1B;AAAA,IACF,CAAA;AAAA,IACA,MAAM,gBAAgB,MAAA,EAAgB;AACpC,MAAA,OAAA,CACG,MAAM,mBAAkB,EAAG,IAAA;AAAA,QAC1B,CAAC,SAAA,KACC,SAAA,CAAU,MAAA,KAAW,MAAA,IAAU,UAAU,MAAA,KAAW;AAAA,OACxD,IAAK,IAAA;AAAA,IAET,CAAA;AAAA,IACA,MAAM,mBAAmB,cAAA,EAAwB;AAC/C,MAAA,MAAM,aAAA,GAAgB,MAAM,iBAAA,EAAkB;AAC9C,MAAA,MAAM,QAAQ,aAAA,CAAc,SAAA;AAAA,QAC1B,CAAC,SAAA,KAAc,SAAA,CAAU,EAAA,KAAO;AAAA,OAClC;AACA,MAAA,IAAI,QAAQ,CAAA,EAAG;AACb,QAAA,MAAM,IAAIA,sBAAA;AAAA,UACR,2BAA2B,cAAc,CAAA,CAAA;AAAA,UACzC;AAAA,SACF;AAAA,MACF;AACA,MAAA,MAAM,YAAA,GAAe,cAAc,KAAK,CAAA;AACxC,MAAA,IAAI,CAAC,YAAA,EAAc;AACjB,QAAA,MAAM,IAAIA,sBAAA;AAAA,UACR,2BAA2B,cAAc,CAAA,CAAA;AAAA,UACzC;AAAA,SACF;AAAA,MACF;AACA,MAAA,aAAA,CAAc,KAAK,CAAA,GAAI;AAAA,QACrB,GAAG,YAAA;AAAA,QACH,MAAA,EAAQ,WAAA;AAAA,QACR,iBAAA,EAAmB;AAAA,OACrB;AACA,MAAA,MAAM,mBAAmB,aAAa,CAAA;AAAA,IACxC,CAAA;AAAA,IACA,QAAA,GAAW;AACT,MAAA,OAAO,SAAA,EAAU;AAAA,IACnB,CAAA;AAAA,IACA,MAAM,gBAAA,CAAiB,MAAA,EAAgB,OAAA,EAAiB;AACtD,MAAA,MAAM,YAAA,GAAe,MAAM,IAAA,CAAK,eAAA,CAAgB,MAAM,CAAA;AACtD,MAAA,IAAI,CAAC,cAAc,OAAO,KAAA;AAC1B,MAAA,MAAM,IAAA,GAAA,CAAQ,MAAM,SAAA,EAAU,EAAG,IAAA;AAAA,QAC/B,CAAC,SAAA,KAAc,SAAA,CAAU,EAAA,KAAO,YAAA,CAAa;AAAA,OAC/C;AACA,MAAA,MAAM,iBAAA,GAAoB,QAAQ,WAAA,EAAY;AAC9C,MAAA,OACE,aAAa,MAAA,KAAW,QAAA,IACxB,CAAC,CAAC,MAAM,QAAA,CAAS,IAAA;AAAA,QAAK,CAAC,SAAA,KACrB,SAAA,CAAU,WAAA,EAAY,CAAE,SAAS,iBAAiB;AAAA,OACpD;AAAA,IAEJ;AAAA,GACF;AACF;AAEA,SAAS,oBAAoB,KAAA,EAAsC;AACjE,EAAA,IAAI,OAAO,UAAU,QAAA,IAAY,KAAA,KAAU,QAAQ,KAAA,CAAM,OAAA,CAAQ,KAAK,CAAA,EAAG;AACvE,IAAA,OAAO,KAAA;AAAA,EACT;AACA,EAAA,MAAM,MAAA,GAAS,KAAA;AACf,EAAA,OACE,OAAO,MAAA,CAAO,IAAA,KAAS,QAAA,IACvB,CAAC,QAAA,EAAU,MAAA,EAAQ,WAAW,CAAA,CAAE,SAAS,MAAA,CAAO,IAAI,CAAA,IACpD,OAAO,OAAO,OAAA,KAAY,QAAA;AAE9B;AAEA,SAAS,2BAA2B,QAAA,EAAkC;AACpE,EAAA,IAAI,CAAC,KAAA,CAAM,OAAA,CAAQ,QAAQ,CAAA,IAAK,QAAA,CAAS,WAAW,CAAA,EAAG;AACrD,IAAA,MAAM,IAAIC,gBAAA,CAAQ,uCAAA,EAAyC,eAAe,CAAA;AAAA,EAC5E;AACA,EAAA,IAAI,CAAC,QAAA,CAAS,KAAA,CAAM,mBAAmB,CAAA,EAAG;AACxC,IAAA,MAAM,IAAIA,gBAAA;AAAA,MACR,wDAAA;AAAA,MACA;AAAA,KACF;AAAA,EACF;AACA,EAAA,OAAO,QAAA,CAAS,GAAA,CAAI,CAAC,OAAA,MAAa;AAAA,IAChC,MAAM,OAAA,CAAQ,IAAA;AAAA,IACd,SAAS,OAAA,CAAQ;AAAA,GACnB,CAAE,CAAA;AACJ;AAEA,SAAS,6BAA6B,IAAA,EAAyB;AAC7D,EAAA,MAAM,SAAS,KAAA,CAAM,OAAA,CAAQ,IAAI,CAAA,GAAI,IAAA,GAAO,CAAC,IAAI,CAAA;AACjD,EAAA,IACE,MAAA,CAAO,MAAA,KAAW,CAAA,IAClB,CAAC,OAAO,KAAA,CAAM,CAAC,IAAA,KAAS,OAAO,IAAA,KAAS,QAAA,IAAY,IAAA,CAAK,MAAA,GAAS,CAAC,CAAA,EACnE;AACA,IAAA,MAAM,IAAIA,gBAAA;AAAA,MACR,yEAAA;AAAA,MACA;AAAA,KACF;AAAA,EACF;AACA,EAAA,OAAO,MAAA;AACT;AAEA,IAAM,oCAAA,GACJ,2DAAA;AAEF,SAAS,4BACP,SAAA,EACe;AACf,EAAA,IAAI,SAAA,KAAc,MAAA,IAAa,SAAA,KAAc,KAAA,EAAO;AAClD,IAAA,OAAO,IAAA;AAAA,EACT;AACA,EAAA,IAAI,cAAc,IAAA,EAAM;AACtB,IAAA,OAAO,CAAA;AAAA,EACT;AACA,EAAA,OAAO,IAAA,CAAK,GAAA,CAAI,CAAA,EAAG,SAAA,CAAU,iBAAiB,CAAC,CAAA;AACjD;AAEA,SAAS,2BAAA,CACP,WACA,YAAA,EACM;AACN,EAAA,MAAM,SAAA,GAAY,4BAA4B,SAAS,CAAA;AACvD,EAAA,IAAI,SAAA,KAAc,IAAA,IAAQ,YAAA,GAAe,SAAA,EAAW;AAClD,IAAA;AAAA,EACF;AACA,EAAA,MAAM,UACJ,SAAA,IAAa,OAAO,SAAA,KAAc,QAAA,GAAW,UAAU,OAAA,GAAU,MAAA;AACnE,EAAA,MAAM,IAAIA,gBAAA;AAAA,IACR,OAAA,IAAW,oCAAA;AAAA,IACX;AAAA,GACF;AACF;AAEA,SAAS,qBAAA,CACP,OAAA,EACA,SAAA,EACA,SAAA,EACW;AACX,EAAA,MAAM,UAAA,GAAa,UAAA,CAAW,SAAA,EAAW,YAAY,CAAA;AACrD,EAAA,IAAI,YAAA,GAAe,CAAA;AACnB,EAAA,MAAM,cAAc,MAClB,aAAA;AAAA,IACE,OAAA;AAAA,IACA,UAAA;AAAA,IACA,oBAAA;AAAA,IACA,CAAC,UACC,IAAIA,gBAAA;AAAA,MACF,wCAAA;AAAA,MACA,eAAA;AAAA,MACA;AAAA;AACF,GACJ;AAEF,EAAA,eAAe,WAAA,CAAY,UAAyB,QAAA,EAAkB;AACpE,IAAA,MAAM,OAAA,GAAU,MAAM,WAAA,EAAY;AAClC,IAAA,OAAA,CAAQ,IAAA,CAAK,EAAE,SAAA,EAAA,iBAAW,IAAI,IAAA,IAAO,WAAA,EAAY,EAAG,QAAA,EAAU,QAAA,EAAU,CAAA;AACxE,IAAA,MAAM,SAAA;AAAA,MACJ,OAAA;AAAA,MACA,UAAA;AAAA,MACA,OAAA,CAAQ,MAAM,GAAG,CAAA;AAAA,MACjB,CAAC,UACC,IAAIA,gBAAA;AAAA,QACF,yCAAA;AAAA,QACA,eAAA;AAAA,QACA;AAAA;AACF,KACJ;AAAA,EACF;AAEA,EAAA,OAAO;AAAA,IACL,MAAM,IAAA,CACJ,QAAA,EACA,QAAA,EACuB;AACvB,MAAA,MAAM,SAAA,GAAY,2BAA2B,QAAQ,CAAA;AACrD,MAAA,2BAAA,CAA4B,WAAW,YAAY,CAAA;AACnD,MAAA,MAAM,OAAA,GAAU,kBAAkB,SAAS,CAAA;AAC3C,MAAA,MAAM,WAAA,CAAY,WAAW,OAAO,CAAA;AACpC,MAAA,YAAA,IAAgB,CAAA;AAChB,MAAA,OAAO;AAAA,QACL,OAAA;AAAA,QACA,YAAA,EAAc,MAAA;AAAA,QACd,OAAO,EAAE,YAAA,EAAc,IAAI,gBAAA,EAAkB,EAAA,EAAI,aAAa,EAAA;AAAG,OACnE;AAAA,IACF,CAAA;AAAA,IACA,MAAM,QAAA,CAAS,MAAA,EAAgB,OAAA,EAAqB;AAClD,MAAA,IAAI,OAAO,MAAA,KAAW,QAAA,IAAY,MAAA,CAAO,WAAW,CAAA,EAAG;AACrD,QAAA,MAAM,IAAIA,gBAAA;AAAA,UACR,sCAAA;AAAA,UACA;AAAA,SACF;AAAA,MACF;AACA,MAAA,MAAM,QAAA,GAAW,MAAM,IAAA,CAAK,IAAA;AAAA,QAC1B,CAAC,EAAE,IAAA,EAAM,MAAA,EAAQ,OAAA,EAAS,QAAQ,CAAA;AAAA,QAClC;AAAA,OACF;AACA,MAAA,OAAO,QAAA,CAAS,OAAA;AAAA,IAClB,CAAA;AAAA,IACA,MAAM,MAAM,IAAA,EAAyB;AACnC,MAAA,MAAM,MAAA,GAAS,6BAA6B,IAAI,CAAA;AAChD,MAAA,2BAAA,CAA4B,WAAW,YAAY,CAAA;AACnD,MAAA,YAAA,IAAgB,CAAA;AAChB,MAAA,OAAO,MAAA,CAAO,GAAA,CAAI,CAAC,KAAA,KAAU;AAC3B,QAAA,MAAM,SAAmB,EAAC;AAC1B,QAAA,KAAA,IAAS,KAAA,GAAQ,CAAA,EAAG,KAAA,GAAQ,CAAA,EAAG,SAAS,CAAA,EAAG;AACzC,UAAA,IAAI,OAAO,KAAA,GAAQ,EAAA;AACnB,UAAA,KAAA,IAAS,OAAO,CAAA,EAAG,IAAA,GAAO,KAAA,CAAM,MAAA,EAAQ,QAAQ,CAAA,EAAG;AACjD,YAAA,IAAA,GAAA,CAAQ,IAAA,IAAQ,CAAA,IAAK,IAAA,GAAO,KAAA,CAAM,WAAW,IAAI,CAAA;AACjD,YAAA,IAAA,IAAQ,CAAA;AAAA,UACV;AACA,UAAA,MAAA,CAAO,KAAK,IAAA,CAAK,GAAA,CAAI,IAAI,CAAA,GAAI,MAAM,GAAG,CAAA;AAAA,QACxC;AACA,QAAA,OAAO,MAAA;AAAA,MACT,CAAC,CAAA;AAAA,IACH,CAAA;AAAA,IACA,MAAM,MAAA,CAAO,QAAA,EAAyB,QAAA,EAAsB;AAC1D,MAAA,MAAM,SAAA,GAAY,2BAA2B,QAAQ,CAAA;AACrD,MAAA,2BAAA,CAA4B,WAAW,YAAY,CAAA;AACnD,MAAA,YAAA,IAAgB,CAAA;AAChB,MAAA,gBAAgB,QAAA,GAAW;AACzB,QAAA,MAAM,OAAA,GAAU,kBAAkB,SAAS,CAAA;AAC3C,QAAA,MAAM,WAAA,CAAY,WAAW,OAAO,CAAA;AACpC,QAAA,KAAA,MAAW,KAAA,IAAS,OAAA,CAAQ,KAAA,CAAM,GAAG,CAAA,EAAG;AACtC,UAAA,MAAM,GAAG,KAAK,CAAA,CAAA,CAAA;AAAA,QAChB;AAAA,MACF;AACA,MAAA,OAAO,QAAA,EAAS;AAAA,IAClB;AAAA,GACF;AACF;AAEA,SAAS,8BAAA,CACP,OAAA,EACA,SAAA,EACA,cAAA,EACoB;AACpB,EAAA,MAAM,QAAA,GAAW,UAAA,CAAW,SAAA,EAAW,eAAe,CAAA;AACtD,EAAA,MAAM,YAAY,MAChB,aAAA;AAAA,IACE,OAAA;AAAA,IACA,QAAA;AAAA,IACA,kBAAA;AAAA,IACA,CAAC,UACC,IAAIJ,qBAAA;AAAA,MACF,2CAAA;AAAA,MACA,eAAA;AAAA,MACA;AAAA;AACF,GACJ;AACF,EAAA,MAAM,UAAA,GAAa,CAAC,KAAA,KAClB,SAAA;AAAA,IACE,OAAA;AAAA,IACA,QAAA;AAAA,IACA,KAAA;AAAA,IACA,CAAC,UACC,IAAIA,qBAAA;AAAA,MACF,4CAAA;AAAA,MACA,eAAA;AAAA,MACA;AAAA;AACF,GACJ;AACF,EAAA,MAAM,gBAAA,GAAmB,OAAO,OAAA,KAAoB;AAClD,IAAA,IAAI;AACF,MAAA,MAAM,OAAA,CAAQ,WAAW,OAAO,CAAA;AAAA,IAClC,CAAA,CAAA,MAAQ;AAAA,IAER;AAAA,EACF,CAAA;AAEA,EAAA,OAAO;AAAA,IACL,MAAM,MAAA,CAAO,IAAA,EAAmB,IAAA,EAAc,IAAA,EAAe;AAC3D,MAAA,IAAI,IAAA,CAAK,OAAO,cAAA,EAAgB;AAC9B,QAAA,MAAM,IAAIA,qBAAA;AAAA,UACR,uCAAuC,cAAc,CAAA,MAAA,CAAA;AAAA,UACrD;AAAA,SACF;AAAA,MACF;AAEA,MAAA,MAAM,EAAA,GAAK,SAAS,MAAM,CAAA;AAC1B,MAAA,MAAM,OAAA,GAAU,UAAA,CAAW,SAAA,EAAW,CAAA,aAAA,EAAgB,EAAE,CAAA,CAAE,CAAA;AAC1D,MAAA,MAAM,OAAA,GAAU,MAAM,aAAA,CAAc,IAAI,CAAA;AACxC,MAAA,IAAI;AACF,QAAA,MAAM,OAAA,CAAQ,OAAA,CAAQ,OAAA,EAAS,OAAO,CAAA;AAAA,MACxC,SAAS,KAAA,EAAO;AACd,QAAA,MAAM,IAAIA,qBAAA;AAAA,UACR,wCAAA;AAAA,UACA,eAAA;AAAA,UACA;AAAA,SACF;AAAA,MACF;AACA,MAAA,MAAM,UAAA,GAA+B;AAAA,QACnC,EAAA;AAAA,QACA,IAAA,EACE,IAAA,KACC,OAAO,IAAA,KAAS,WAAA,IAAe,IAAA,YAAgB,IAAA,GAC5C,IAAA,CAAK,IAAA,GACL,CAAA,KAAA,EAAQ,EAAA,CAAG,KAAA,CAAM,EAAE,CAAC,CAAA,CAAA,CAAA;AAAA,QAC1B,IAAA;AAAA,QACA,MAAM,IAAA,CAAK,IAAA;AAAA,QACX,QAAA,EAAU,KAAK,IAAA,IAAQ,0BAAA;AAAA,QACvB,GAAA,EAAK,oBAAoB,EAAE,CAAA,CAAA;AAAA,QAC3B,SAAA,EAAA,iBAAW,IAAI,IAAA,EAAK,EAAE,WAAA,EAAY;AAAA,QAClC;AAAA,OACF;AACA,MAAA,IAAI;AACF,QAAA,MAAM,KAAA,GAAQ,MAAM,SAAA,EAAU;AAC9B,QAAA,KAAA,CAAM,KAAK,UAAU,CAAA;AACrB,QAAA,MAAM,WAAW,KAAK,CAAA;AAAA,MACxB,SAAS,KAAA,EAAO;AACd,QAAA,MAAM,iBAAiB,OAAO,CAAA;AAC9B,QAAA,MAAM,KAAA;AAAA,MACR;AACA,MAAA,MAAM,EAAE,OAAA,EAAS,QAAA,EAAU,GAAG,YAAW,GAAI,UAAA;AAC7C,MAAA,OAAO,UAAA;AAAA,IACT,CAAA;AAAA,IACA,MAAM,SAAS,MAAA,EAAgB;AAC7B,MAAA,MAAM,IAAA,GAAA,CAAQ,MAAM,SAAA,EAAU,EAAG,IAAA;AAAA,QAC/B,CAAC,SAAA,KAAc,SAAA,CAAU,EAAA,KAAO;AAAA,OAClC;AACA,MAAA,IAAI,CAAC,IAAA,EAAM;AACT,QAAA,MAAM,IAAIA,qBAAA,CAAa,CAAA,gBAAA,EAAmB,MAAM,IAAI,WAAW,CAAA;AAAA,MACjE;AACA,MAAA,IAAI,OAAA;AACJ,MAAA,IAAI;AACF,QAAA,OAAA,GAAU,MAAM,OAAA,CAAQ,OAAA,CAAQ,IAAA,CAAK,OAAO,CAAA;AAAA,MAC9C,SAAS,KAAA,EAAO;AACd,QAAA,MAAM,IAAIA,qBAAA;AAAA,UACR,uCAAA;AAAA,UACA,iBAAA;AAAA,UACA;AAAA,SACF;AAAA,MACF;AACA,MAAA,IAAI,CAAC,OAAA,EAAS;AACZ,QAAA,MAAM,IAAIA,qBAAA,CAAa,CAAA,uBAAA,EAA0B,MAAM,IAAI,WAAW,CAAA;AAAA,MACxE;AACA,MAAA,IAAI;AACF,QAAA,OAAO,cAAc,OAAO,CAAA;AAAA,MAC9B,SAAS,KAAA,EAAO;AACd,QAAA,IAAI,iBAAiBA,qBAAA,EAAc;AACjC,UAAA,MAAM,KAAA;AAAA,QACR;AACA,QAAA,MAAM,IAAIA,qBAAA;AAAA,UACR,yCAAA;AAAA,UACA,iBAAA;AAAA,UACA;AAAA,SACF;AAAA,MACF;AAAA,IACF,CAAA;AAAA,IACA,MAAM,OAAO,MAAA,EAAgB;AAC3B,MAAA,MAAM,KAAA,GAAQ,MAAM,SAAA,EAAU;AAC9B,MAAA,MAAM,OAAO,KAAA,CAAM,IAAA,CAAK,CAAC,SAAA,KAAc,SAAA,CAAU,OAAO,MAAM,CAAA;AAC9D,MAAA,IAAI,CAAC,MAAM,OAAO,KAAA;AAClB,MAAA,IAAI;AACF,QAAA,MAAM,OAAA,CAAQ,UAAA,CAAW,IAAA,CAAK,OAAO,CAAA;AAAA,MACvC,SAAS,KAAA,EAAO;AACd,QAAA,MAAM,IAAIA,qBAAA;AAAA,UACR,yCAAA;AAAA,UACA,eAAA;AAAA,UACA;AAAA,SACF;AAAA,MACF;AACA,MAAA,MAAM,UAAA,CAAW,MAAM,MAAA,CAAO,CAAC,cAAc,SAAA,CAAU,EAAA,KAAO,MAAM,CAAC,CAAA;AACrE,MAAA,OAAO,IAAA;AAAA,IACT,CAAA;AAAA,IACA,MAAM,KAAK,MAAA,EAAiB;AAC1B,MAAA,MAAM,KAAA,GAAQ,MAAM,SAAA,EAAU;AAC9B,MAAA,OAAO,KAAA,CACJ,OAAO,CAAC,IAAA,KAAS,CAAC,MAAA,IAAU,IAAA,CAAK,KAAK,UAAA,CAAW,MAAM,CAAC,CAAA,CACxD,GAAA,CAAI,CAAC,EAAE,OAAA,EAAS,UAAU,GAAG,IAAA,OAAW,IAAI,CAAA;AAAA,IACjD,CAAA;AAAA,IACA,MAAM,OAAO,MAAA,EAAgB;AAC3B,MAAA,MAAM,IAAA,GAAA,CAAQ,MAAM,SAAA,EAAU,EAAG,IAAA;AAAA,QAC/B,CAAC,SAAA,KAAc,SAAA,CAAU,EAAA,KAAO;AAAA,OAClC;AACA,MAAA,IAAI,CAAC,IAAA,EAAM;AACT,QAAA,MAAM,IAAIA,qBAAA,CAAa,CAAA,gBAAA,EAAmB,MAAM,IAAI,WAAW,CAAA;AAAA,MACjE;AACA,MAAA,IAAI;AACF,QAAA,OAAQ,MAAM,OAAA,CAAQ,OAAA,CAAQ,IAAA,CAAK,OAAO,KAAM,IAAA,CAAK,GAAA;AAAA,MACvD,SAAS,KAAA,EAAO;AACd,QAAA,MAAM,IAAIA,qBAAA;AAAA,UACR,uCAAA;AAAA,UACA,iBAAA;AAAA,UACA;AAAA,SACF;AAAA,MACF;AAAA,IACF;AAAA,GACF;AACF;AAEA,SAAS,wBAAA,CACP,SACA,SAAA,EACc;AACd,EAAA,MAAM,QAAA,GAAW,UAAA,CAAW,SAAA,EAAW,YAAY,CAAA;AACnD,EAAA,MAAM,QAAA,GAAW,UAAA,CAAW,SAAA,EAAW,aAAa,CAAA;AACpD,EAAA,MAAM,QAAA,GAAW,UAAA,CAAW,SAAA,EAAW,aAAa,CAAA;AACpD,EAAA,MAAM,YAAY,MAChB,aAAA;AAAA,IACE,OAAA;AAAA,IACA,QAAA;AAAA,IACA,kBAAA;AAAA,IACA,CAAC,UACC,IAAIK,mBAAA;AAAA,MACF,yCAAA;AAAA,MACA,kBAAA;AAAA,MACA;AAAA;AACF,GACJ;AACF,EAAA,MAAM,UAAA,GAAa,CAAC,KAAA,KAClB,SAAA;AAAA,IACE,OAAA;AAAA,IACA,QAAA;AAAA,IACA,KAAA;AAAA,IACA,CAAC,UACC,IAAIA,mBAAA;AAAA,MACF,0CAAA;AAAA,MACA,kBAAA;AAAA,MACA;AAAA;AACF,GACJ;AACF,EAAA,MAAM,YAAY,MAChB,aAAA;AAAA,IACE,OAAA;AAAA,IACA,QAAA;AAAA,IACA,uBAAA;AAAA,IACA,CAAC,UACC,IAAIA,mBAAA;AAAA,MACF,yCAAA;AAAA,MACA,kBAAA;AAAA,MACA;AAAA;AACF,GACJ;AACF,EAAA,MAAM,UAAA,GAAa,CAAC,KAAA,KAClB,SAAA;AAAA,IACE,OAAA;AAAA,IACA,QAAA;AAAA,IACA,KAAA;AAAA,IACA,CAAC,UACC,IAAIA,mBAAA;AAAA,MACF,0CAAA;AAAA,MACA,kBAAA;AAAA,MACA;AAAA;AACF,GACJ;AACF,EAAA,MAAM,YAAY,MAChB,aAAA;AAAA,IACE,OAAA;AAAA,IACA,QAAA;AAAA,IACA,uBAAA;AAAA,IACA,CAAC,UACC,IAAIA,mBAAA;AAAA,MACF,yCAAA;AAAA,MACA,kBAAA;AAAA,MACA;AAAA;AACF,GACJ;AACF,EAAA,MAAM,UAAA,GAAa,CAAC,KAAA,KAClB,SAAA;AAAA,IACE,OAAA;AAAA,IACA,QAAA;AAAA,IACA,KAAA;AAAA,IACA,CAAC,UACC,IAAIA,mBAAA;AAAA,MACF,0CAAA;AAAA,MACA,kBAAA;AAAA,MACA;AAAA;AACF,GACJ;AAEF,EAAA,OAAO;AAAA,IACL,MAAM,UAAU,OAAA,EAA4B;AAC1C,MAAA,OAAO,qBAAA;AAAA,QAAA,CACJ,MAAM,SAAA,EAAU,EAAG,GAAA,CAAI,WAAW,CAAA;AAAA,QACnC,OAAA;AAAA,QACA,CAAC,SAAS,CAAC,IAAA,CAAK,OAAO,IAAA,CAAK,IAAA,EAAM,KAAK,IAAI;AAAA,OAC7C;AAAA,IACF,CAAA;AAAA,IACA,MAAM,QAAQ,EAAA,EAAY;AACxB,MAAA,MAAM,IAAA,GAAA,CAAQ,MAAM,SAAA,EAAU,EAAG,KAAK,CAAC,SAAA,KAAc,SAAA,CAAU,EAAA,KAAO,EAAE,CAAA;AACxE,MAAA,OAAO,IAAA,GAAO,WAAA,CAAY,IAAI,CAAA,GAAI,IAAA;AAAA,IACpC,CAAA;AAAA,IACA,MAAM,QAAQ,EAAA,EAAY;AACxB,MAAA,MAAM,KAAA,GAAQ,MAAM,SAAA,EAAU;AAC9B,MAAA,MAAM,OAAO,KAAA,CAAM,IAAA,CAAK,CAAC,SAAA,KAAc,SAAA,CAAU,OAAO,EAAE,CAAA;AAC1D,MAAA,IAAI,CAAC,IAAA,IAAQ,IAAA,CAAK,QAAA,EAAU,OAAO,KAAA;AACnC,MAAA,IAAA,CAAK,QAAA,GAAW,IAAA;AAChB,MAAA,MAAM,WAAW,KAAK,CAAA;AACtB,MAAA,OAAO,IAAA;AAAA,IACT,CAAA;AAAA,IACA,MAAM,UAAU,EAAA,EAAY;AAC1B,MAAA,MAAM,KAAA,GAAQ,MAAM,SAAA,EAAU;AAC9B,MAAA,MAAM,OAAO,KAAA,CAAM,IAAA,CAAK,CAAC,SAAA,KAAc,SAAA,CAAU,OAAO,EAAE,CAAA;AAC1D,MAAA,IAAI,CAAC,IAAA,EAAM,QAAA,EAAU,OAAO,KAAA;AAC5B,MAAA,IAAA,CAAK,QAAA,GAAW,KAAA;AAChB,MAAA,MAAM,WAAW,KAAK,CAAA;AACtB,MAAA,OAAO,IAAA;AAAA,IACT,CAAA;AAAA,IACA,MAAM,WAAW,EAAA,EAAY;AAC3B,MAAA,MAAM,KAAA,GAAQ,MAAM,SAAA,EAAU;AAC9B,MAAA,MAAM,YAAY,KAAA,CAAM,MAAA,CAAO,CAAC,SAAA,KAAc,SAAA,CAAU,OAAO,EAAE,CAAA;AACjE,MAAA,IAAI,SAAA,CAAU,MAAA,KAAW,KAAA,CAAM,MAAA,EAAQ,OAAO,KAAA;AAC9C,MAAA,MAAM,WAAW,SAAS,CAAA;AAC1B,MAAA,MAAM,UAAA;AAAA,QAAA,CACH,MAAM,SAAA,EAAU,EAAG,GAAA,CAAI,CAAC,IAAA,MAAU;AAAA,UACjC,GAAG,IAAA;AAAA,UACH,eAAe,IAAA,CAAK,aAAA,CAAc,OAAO,CAAC,MAAA,KAAW,WAAW,EAAE;AAAA,SACpE,CAAE;AAAA,OACJ;AACA,MAAA,OAAO,IAAA;AAAA,IACT,CAAA;AAAA,IACA,MAAM,UAAU,OAAA,EAA4B;AAC1C,MAAA,OAAO,sBAAsB,MAAM,SAAA,EAAU,EAAG,OAAA,EAAS,CAAC,IAAA,KAAS;AAAA,QACjE,IAAA,CAAK,IAAA;AAAA,QACL,IAAA,CAAK,WAAA;AAAA,QACL,IAAA,CAAK,WAAA,CAAY,IAAA,CAAK,GAAG;AAAA,OAC1B,CAAA;AAAA,IACH,CAAA;AAAA,IACA,MAAM,QAAQ,EAAA,EAAY;AACxB,MAAA,OAAA,CAAQ,MAAM,WAAU,EAAG,IAAA,CAAK,CAAC,IAAA,KAAS,IAAA,CAAK,EAAA,KAAO,EAAE,CAAA,IAAK,IAAA;AAAA,IAC/D,CAAA;AAAA,IACA,MAAM,WAAW,KAAA,EAAuB;AACtC,MAAA,MAAM,KAAA,GAAQ,MAAM,SAAA,EAAU;AAC9B,MAAA,MAAM,QAAA,GAAW,KAAA,CAAM,EAAA,GACnB,KAAA,CAAM,IAAA,CAAK,CAACC,KAAAA,KAASA,KAAAA,CAAK,EAAA,KAAO,KAAA,CAAM,EAAE,CAAA,GACzC,MAAA;AACJ,MAAA,MAAM,IAAA,GAAO,mBAAA,CAAoB,KAAA,EAAO,QAAQ,CAAA;AAChD,MAAA,MAAM,UAAA,CAAW,UAAA,CAAW,KAAA,EAAO,IAAI,CAAC,CAAA;AACxC,MAAA,OAAO,IAAA;AAAA,IACT,CAAA;AAAA,IACA,MAAM,WAAW,EAAA,EAAY;AAC3B,MAAA,MAAM,KAAA,GAAQ,MAAM,SAAA,EAAU;AAC9B,MAAA,MAAM,YAAY,KAAA,CAAM,MAAA,CAAO,CAAC,IAAA,KAAS,IAAA,CAAK,OAAO,EAAE,CAAA;AACvD,MAAA,IAAI,SAAA,CAAU,MAAA,KAAW,KAAA,CAAM,MAAA,EAAQ,OAAO,KAAA;AAE9C,MAAA,MAAM,WAAW,SAAS,CAAA;AAC1B,MAAA,MAAM,UAAA;AAAA,QAAA,CACH,MAAM,SAAA,EAAU,EAAG,GAAA,CAAI,CAAC,IAAA,MAAU;AAAA,UACjC,GAAG,IAAA;AAAA,UACH,OAAA,EAAA,CAAU,KAAK,OAAA,IAAW,IAAI,MAAA,CAAO,CAAC,MAAA,KAAW,MAAA,KAAW,EAAE;AAAA,SAChE,CAAE;AAAA,OACJ;AACA,MAAA,MAAM,UAAA;AAAA,QAAA,CACH,MAAM,SAAA,EAAU,EAAG,GAAA,CAAI,CAAC,IAAA,MAAU;AAAA,UACjC,GAAG,IAAA;AAAA,UACH,SAAS,IAAA,CAAK,OAAA,CAAQ,OAAO,CAAC,MAAA,KAAW,WAAW,EAAE;AAAA,SACxD,CAAE;AAAA,OACJ;AACA,MAAA,OAAO,IAAA;AAAA,IACT,CAAA;AAAA,IACA,MAAM,cAAA,CAAe,MAAA,EAAgB,MAAA,EAAgB;AACnD,MAAA,IAAI,CAAA,CAAE,MAAM,SAAA,EAAU,EAAG,IAAA,CAAK,CAAC,IAAA,KAAS,IAAA,CAAK,EAAA,KAAO,MAAM,CAAA,EAAG;AAC3D,QAAA,OAAO,KAAA;AAAA,MACT;AAEA,MAAA,MAAM,KAAA,GAAQ,MAAM,SAAA,EAAU;AAC9B,MAAA,MAAM,OAAO,KAAA,CAAM,IAAA,CAAK,CAAC,SAAA,KAAc,SAAA,CAAU,OAAO,MAAM,CAAA;AAC9D,MAAA,IAAI,CAAC,MAAM,OAAO,KAAA;AAElB,MAAA,MAAM,OAAA,GAAU,aAAA,CAAc,IAAA,CAAK,OAAA,IAAW,EAAE,CAAA;AAChD,MAAA,IAAI,OAAA,CAAQ,QAAA,CAAS,MAAM,CAAA,EAAG,OAAO,KAAA;AAErC,MAAA,IAAA,CAAK,OAAA,GAAU,CAAC,GAAG,OAAA,EAAS,MAAM,CAAA;AAClC,MAAA,MAAM,WAAW,KAAK,CAAA;AACtB,MAAA,OAAO,IAAA;AAAA,IACT,CAAA;AAAA,IACA,MAAM,cAAA,CAAe,MAAA,EAAgB,MAAA,EAAgB;AACnD,MAAA,MAAM,KAAA,GAAQ,MAAM,SAAA,EAAU;AAC9B,MAAA,MAAM,OAAO,KAAA,CAAM,IAAA,CAAK,CAAC,SAAA,KAAc,SAAA,CAAU,OAAO,MAAM,CAAA;AAC9D,MAAA,IAAI,CAAC,IAAA,EAAM,OAAA,EAAS,QAAA,CAAS,MAAM,GAAG,OAAO,KAAA;AAE7C,MAAA,IAAA,CAAK,OAAA,GAAU,KAAK,OAAA,CAAQ,MAAA;AAAA,QAC1B,CAAC,mBAAmB,cAAA,KAAmB;AAAA,OACzC;AACA,MAAA,MAAM,WAAW,KAAK,CAAA;AACtB,MAAA,OAAO,IAAA;AAAA,IACT,CAAA;AAAA,IACA,MAAM,UAAU,OAAA,EAA4B;AAC1C,MAAA,OAAO,sBAAsB,MAAM,SAAA,EAAU,EAAG,OAAA,EAAS,CAAC,IAAA,KAAS;AAAA,QACjE,IAAA,CAAK,IAAA;AAAA,QACL,IAAA,CAAK;AAAA,OACN,CAAA;AAAA,IACH,CAAA;AAAA,IACA,MAAM,QAAQ,EAAA,EAAY;AACxB,MAAA,OAAA,CAAQ,MAAM,WAAU,EAAG,IAAA,CAAK,CAAC,IAAA,KAAS,IAAA,CAAK,EAAA,KAAO,EAAE,CAAA,IAAK,IAAA;AAAA,IAC/D,CAAA;AAAA,IACA,MAAM,WAAW,KAAA,EAAuB;AACtC,MAAA,MAAM,KAAA,GAAQ,MAAM,SAAA,EAAU;AAC9B,MAAA,MAAM,QAAA,GAAW,KAAA,CAAM,EAAA,GACnB,KAAA,CAAM,IAAA,CAAK,CAACC,KAAAA,KAASA,KAAAA,CAAK,EAAA,KAAO,KAAA,CAAM,EAAE,CAAA,GACzC,MAAA;AACJ,MAAA,MAAM,IAAA,GAAO,mBAAA,CAAoB,KAAA,EAAO,QAAQ,CAAA;AAChD,MAAA,MAAM,UAAA,CAAW,UAAA,CAAW,KAAA,EAAO,IAAI,CAAC,CAAA;AAExC,MAAA,MAAM,SAAA,GAAY,IAAI,GAAA,CAAI,IAAA,CAAK,aAAa,CAAA;AAC5C,MAAA,MAAM,UAAA;AAAA,QAAA,CACH,MAAM,SAAA,EAAU,EAAG,GAAA,CAAI,CAAC,IAAA,KAAS;AAChC,UAAA,MAAM,OAAA,GAAU,aAAA,CAAc,IAAA,CAAK,OAAA,IAAW,EAAE,CAAA;AAChD,UAAA,MAAM,cAAA,GAAiB,SAAA,CAAU,GAAA,CAAI,IAAA,CAAK,EAAE,CAAA;AAC5C,UAAA,OAAO;AAAA,YACL,GAAG,IAAA;AAAA,YACH,SAAS,cAAA,GACL,aAAA,CAAc,CAAC,GAAG,SAAS,IAAA,CAAK,EAAE,CAAC,CAAA,GACnC,QAAQ,MAAA,CAAO,CAAC,MAAA,KAAW,MAAA,KAAW,KAAK,EAAE;AAAA,WACnD;AAAA,QACF,CAAC;AAAA,OACH;AACA,MAAA,OAAO,IAAA;AAAA,IACT,CAAA;AAAA,IACA,MAAM,WAAW,EAAA,EAAY;AAC3B,MAAA,MAAM,KAAA,GAAQ,MAAM,SAAA,EAAU;AAC9B,MAAA,MAAM,YAAY,KAAA,CAAM,MAAA,CAAO,CAAC,IAAA,KAAS,IAAA,CAAK,OAAO,EAAE,CAAA;AACvD,MAAA,IAAI,SAAA,CAAU,MAAA,KAAW,KAAA,CAAM,MAAA,EAAQ,OAAO,KAAA;AAE9C,MAAA,MAAM,WAAW,SAAS,CAAA;AAC1B,MAAA,MAAM,UAAA;AAAA,QAAA,CACH,MAAM,SAAA,EAAU,EAAG,GAAA,CAAI,CAAC,IAAA,MAAU;AAAA,UACjC,GAAG,IAAA;AAAA,UACH,OAAA,EAAA,CAAU,KAAK,OAAA,IAAW,IAAI,MAAA,CAAO,CAAC,MAAA,KAAW,MAAA,KAAW,EAAE;AAAA,SAChE,CAAE;AAAA,OACJ;AACA,MAAA,OAAO,IAAA;AAAA,IACT,CAAA;AAAA,IACA,MAAM,aAAA,CAAc,MAAA,EAAgB,MAAA,EAAgB;AAClD,MAAA,MAAM,KAAA,GAAQ,MAAM,SAAA,EAAU;AAC9B,MAAA,MAAM,OAAO,KAAA,CAAM,IAAA,CAAK,CAAC,SAAA,KAAc,SAAA,CAAU,OAAO,MAAM,CAAA;AAC9D,MAAA,IAAI,CAAC,MAAM,OAAO,KAAA;AAElB,MAAA,MAAM,KAAA,GAAQ,MAAM,SAAA,EAAU;AAC9B,MAAA,MAAM,OAAO,KAAA,CAAM,IAAA,CAAK,CAAC,SAAA,KAAc,SAAA,CAAU,OAAO,MAAM,CAAA;AAC9D,MAAA,IAAI,CAAC,IAAA,IAAQ,IAAA,CAAK,cAAc,QAAA,CAAS,MAAM,GAAG,OAAO,KAAA;AAEzD,MAAA,IAAA,CAAK,aAAA,GAAgB,CAAC,GAAG,IAAA,CAAK,eAAe,MAAM,CAAA;AACnD,MAAA,IAAA,CAAK,OAAA,GAAU,cAAc,CAAC,GAAI,KAAK,OAAA,IAAW,EAAC,EAAI,MAAM,CAAC,CAAA;AAC9D,MAAA,MAAM,WAAW,KAAK,CAAA;AACtB,MAAA,MAAM,WAAW,KAAK,CAAA;AACtB,MAAA,OAAO,IAAA;AAAA,IACT,CAAA;AAAA,IACA,MAAM,gBAAA,CAAiB,MAAA,EAAgB,MAAA,EAAgB;AACrD,MAAA,MAAM,KAAA,GAAQ,MAAM,SAAA,EAAU;AAC9B,MAAA,MAAM,OAAO,KAAA,CAAM,IAAA,CAAK,CAAC,SAAA,KAAc,SAAA,CAAU,OAAO,MAAM,CAAA;AAC9D,MAAA,IAAI,CAAC,IAAA,EAAM,aAAA,CAAc,QAAA,CAAS,MAAM,GAAG,OAAO,KAAA;AAElD,MAAA,MAAM,KAAA,GAAQ,MAAM,SAAA,EAAU;AAC9B,MAAA,MAAM,OAAO,KAAA,CAAM,IAAA,CAAK,CAAC,SAAA,KAAc,SAAA,CAAU,OAAO,MAAM,CAAA;AAC9D,MAAA,IAAA,CAAK,aAAA,GAAgB,KAAK,aAAA,CAAc,MAAA;AAAA,QACtC,CAAC,aAAa,QAAA,KAAa;AAAA,OAC7B;AACA,MAAA,IAAI,MAAM,OAAA,EAAS;AACjB,QAAA,IAAA,CAAK,OAAA,GAAU,KAAK,OAAA,CAAQ,MAAA;AAAA,UAC1B,CAAC,mBAAmB,cAAA,KAAmB;AAAA,SACzC;AAAA,MACF;AACA,MAAA,MAAM,WAAW,KAAK,CAAA;AACtB,MAAA,MAAM,WAAW,KAAK,CAAA;AACtB,MAAA,OAAO,IAAA;AAAA,IACT,CAAA;AAAA,IACA,MAAM,cAAA,CAAe,MAAA,EAAgB,MAAA,EAAgB;AACnD,MAAA,IAAI,CAAA,CAAE,MAAM,SAAA,EAAU,EAAG,IAAA,CAAK,CAAC,IAAA,KAAS,IAAA,CAAK,EAAA,KAAO,MAAM,CAAA,EAAG;AAC3D,QAAA,OAAO,KAAA;AAAA,MACT;AAEA,MAAA,MAAM,KAAA,GAAQ,MAAM,SAAA,EAAU;AAC9B,MAAA,MAAM,OAAO,KAAA,CAAM,IAAA,CAAK,CAAC,SAAA,KAAc,SAAA,CAAU,OAAO,MAAM,CAAA;AAC9D,MAAA,IAAI,CAAC,IAAA,IAAQ,IAAA,CAAK,QAAQ,QAAA,CAAS,MAAM,GAAG,OAAO,KAAA;AAEnD,MAAA,IAAA,CAAK,OAAA,GAAU,CAAC,GAAG,IAAA,CAAK,SAAS,MAAM,CAAA;AACvC,MAAA,MAAM,WAAW,KAAK,CAAA;AACtB,MAAA,OAAO,IAAA;AAAA,IACT,CAAA;AAAA,IACA,MAAM,cAAA,CAAe,MAAA,EAAgB,MAAA,EAAgB;AACnD,MAAA,MAAM,KAAA,GAAQ,MAAM,SAAA,EAAU;AAC9B,MAAA,MAAM,OAAO,KAAA,CAAM,IAAA,CAAK,CAAC,SAAA,KAAc,SAAA,CAAU,OAAO,MAAM,CAAA;AAC9D,MAAA,IAAI,CAAC,IAAA,EAAM,OAAA,CAAQ,QAAA,CAAS,MAAM,GAAG,OAAO,KAAA;AAE5C,MAAA,IAAA,CAAK,OAAA,GAAU,KAAK,OAAA,CAAQ,MAAA;AAAA,QAC1B,CAAC,mBAAmB,cAAA,KAAmB;AAAA,OACzC;AACA,MAAA,MAAM,WAAW,KAAK,CAAA;AACtB,MAAA,OAAO,IAAA;AAAA,IACT,CAAA;AAAA,IACA,MAAM,UAAA,GAAoC;AACxC,MAAA,MAAM,KAAA,GAAA,CAAS,MAAM,SAAA,EAAU,EAAG,IAAI,WAAW,CAAA;AACjD,MAAA,MAAM,KAAA,GAAA,qBAAY,IAAA,EAAK,EAAE,aAAY,CAAE,KAAA,CAAM,GAAG,EAAE,CAAA;AAClD,MAAA,OAAO;AAAA,QACL,YAAY,KAAA,CAAM,MAAA;AAAA,QAClB,WAAA,EAAa,KAAA,CAAM,MAAA,CAAO,CAAC,IAAA,KAAS,KAAK,QAAA,IAAY,CAAC,IAAA,CAAK,QAAQ,CAAA,CAChE,MAAA;AAAA,QACH,aAAA,EAAe,KAAA,CAAM,MAAA,CAAO,CAAC,IAAA,KAAS,KAAK,SAAA,EAAW,UAAA,CAAW,KAAK,CAAC,CAAA,CACpE;AAAA,OACL;AAAA,IACF;AAAA,GACF;AACF;AAEO,SAAS,kCAAA,CACd,OAAA,GAA4C,EAAC,EACf;AAC9B,EAAA,MAAM,OAAA,GAAU,OAAA,CAAQ,YAAA,IAAgB,mBAAA,EAAoB;AAC5D,EAAA,MAAM,SAAA,GAAY,QAAQ,SAAA,IAAa,+BAAA;AACvC,EAAA,MAAM,WAAA,GAAc,8BAAA;AAAA,IAClB,OAAA;AAAA,IACA,SAAA;AAAA,IACA,QAAQ,cAAA,IAAkB;AAAA,GAC5B;AACA,EAAA,MAAM,YAAA,GAAe,OAAA,CAAQ,YAAA,GAAe,cAAA,GAAiB,QAAA;AAC7D,EAAA,MAAM,SAASC,mCAAA,EAA2B;AAE1C,EAAA,IAAI,mBAAA,CAAoB,OAAA,CAAQ,YAAY,CAAA,EAAG;AAC7C,IAAA,KAAK,MAAA,CAAO,IAAA;AAAA,MACV,qIAAA;AAAA,MACA;AAAA,QACE,OAAA,EAAS,gCAAA;AAAA,QACT,QAAA,EAAU;AAAA;AACZ,KACF;AAAA,EACF;AAEA,EAAA,OAAO;AAAA,IACL,YAAA;AAAA,IACA,QAAA,EAAU;AAAA,MACR,EAAA,EAAI,qBAAA,CAAsB,OAAA,EAAS,SAAS,CAAA;AAAA,MAC5C,IAAA,EAAM,uBAAA,CAAwB,OAAA,EAAS,SAAS,CAAA;AAAA,MAChD,QAAA,EAAU,2BAAA,CAA4B,OAAA,EAAS,SAAS,CAAA;AAAA,MACxD,EAAA,EAAI,qBAAA,CAAsB,OAAA,EAAS,SAAA,EAAW,QAAQ,WAAW,CAAA;AAAA,MACjE,OAAA,EAAS,WAAA;AAAA,MACT,WAAA;AAAA,MACA,KAAA,EAAO,wBAAA,CAAyB,OAAA,EAAS,SAAS,CAAA;AAAA,MAClD;AAAA;AACF,GACF;AACF;AAEO,IAAM,uCAAA,GAGT;AAAA,EACF,EAAA,EAAI,QAAA;AAAA,EACJ,IAAA,EAAM,QAAA;AAAA,EACN,QAAA,EAAU,QAAA;AAAA,EACV,EAAA,EAAI,QAAA;AAAA,EACJ,OAAA,EAAS,QAAA;AAAA,EACT,KAAA,EAAO,QAAA;AAAA,EACP,MAAA,EAAQ;AACV,CAAA;AC3hDA,IAAM,cAAA,GAAiBC,oBAA0C,IAAI,CAAA;AAErE,SAAS,iBAAA,CACP,OACA,QAAA,EACoB;AACpB,EAAA,MAAM,QAAA,GAAW;AAAA,IACf,GAAI,KAAA,CAAM,QAAA,IAAY,EAAC;AAAA,IACvB,GAAI,KAAA,CAAM,QAAA,IAAY;AAAC,GACzB;AACA,EAAA,MAAM,WAAA,GACJ,MAAM,WAAA,IACN,KAAA,CAAM,WACN,QAAA,CAAS,WAAA,IACT,QAAA,CAAS,OAAA,IACT,QAAA,CAAS,OAAA;AAEX,EAAA,OAAO;AAAA,IACL,EAAA,EAAI,KAAA,CAAM,EAAA,IAAM,QAAA,CAAS,MAAM,QAAA,CAAS,EAAA;AAAA,IACxC,IAAA,EAAM,KAAA,CAAM,IAAA,IAAQ,QAAA,CAAS,QAAQ,QAAA,CAAS,IAAA;AAAA,IAC9C,QAAA,EAAU,KAAA,CAAM,QAAA,IAAY,QAAA,CAAS,YAAY,QAAA,CAAS,QAAA;AAAA,IAC1D,EAAA,EAAI,KAAA,CAAM,EAAA,IAAM,QAAA,CAAS,MAAM,QAAA,CAAS,EAAA;AAAA,IACxC,OAAA,EAAS,WAAA;AAAA,IACT,WAAA;AAAA,IACA,KAAA,EAAO,KAAA,CAAM,KAAA,IAAS,QAAA,CAAS,SAAS,QAAA,CAAS,KAAA;AAAA,IACjD,MAAA,EAAQ,KAAA,CAAM,MAAA,IAAU,QAAA,CAAS,UAAU,QAAA,CAAS;AAAA,GACtD;AACF;AAEA,SAAS,sBAAA,CACP,MAAA,EACAC,UAAA,EACA,mBAAA,EACA,eAAA,EACQ;AACR,EAAA,MAAM,gBAAA,GAAmB,eAAA,GAAkB,MAAM,CAAA,EAAG,QAAA;AACpD,EAAA,IAAI,qBAAqB,MAAA,EAAW;AAClC,IAAA,OAAO,gBAAA;AAAA,EACT;AAEA,EAAA,IAAI,CAACA,UAAA,CAAS,MAAM,CAAA,EAAG;AACrB,IAAA,OAAO,MAAA;AAAA,EACT;AAEA,EAAA,IAAI,CAACC,+BAAqB,EAAG;AAC3B,IAAA,OAAO,MAAA,KAAW,WAAW,SAAA,GAAY,mBAAA;AAAA,EAC3C;AAEA,EAAA,OACEC,wBAAA,CAAgB,MAAM,CAAA,EAAG,QAAA,IACzB,wCAAwC,MAAM,CAAA;AAElD;AAEA,SAAS,qBAAA,CACPF,UAAA,EACA,mBAAA,EACA,WAAA,EACA,eAAA,EAC0C;AAC1C,EAAA,MAAM,UAAU,EAAC;AAEjB,EAAA,KAAA,MAAW,UAAUG,wBAAA,EAAiB;AACpC,IAAA,MAAM,OAAA,GAAUH,WAAS,MAAM,CAAA;AAC/B,IAAA,OAAA,CAAQ,MAAM,CAAA,GAAI;AAAA,MAChB,MAAA;AAAA,MACA,QAAA,EAAU,sBAAA;AAAA,QACR,MAAA;AAAA,QACAA,UAAA;AAAA,QACA,mBAAA;AAAA,QACA;AAAA,OACF;AAAA,MACA,MAAA,EAAQ,OAAA,GACJ,WAAA,GACE,cAAA,GACA,WAAA,GACF,cAAA;AAAA,MACJ,aAAA,EAAe,KAAK,GAAA,EAAI;AAAA,MACxB,GAAG,kBAAkB,MAAM;AAAA,KAC7B;AAAA,EACF;AAEA,EAAA,OAAO,OAAA;AACT;AAEA,SAAS,cAAA,CAAe,QAAuB,KAAA,EAA8B;AAC3E,EAAA,IAAI,iBAAiBI,qBAAA,EAAc;AACjC,IAAA,OAAO,KAAA;AAAA,EACT;AAEA,EAAA,MAAM,OAAA,GACJ,KAAA,YAAiB,KAAA,GAAQ,KAAA,CAAM,OAAA,GAAU,qBAAA;AAC3C,EAAA,OAAO,IAAIA,qBAAA,CAAa,OAAA,EAAS,MAAA,EAAQ,iBAAiB,KAAK,CAAA;AACjE;AAEA,eAAe,kBAAA,CACb,MAAA,EACA,QAAA,EACA,YAAA,EACoE;AACpE,EAAA,MAAM,WAAA,GAAc,eAAe,MAAM,CAAA;AACzC,EAAA,IAAI,WAAA,EAAa;AACf,IAAA,MAAM,WAAA,CAAY,QAAA,CAAS,MAAM,CAAA,EAAY,QAAQ,CAAA;AACrD,IAAA,OAAO,EAAE,WAAW,IAAA,EAAK;AAAA,EAC3B;AAEA,EAAA,QAAQ,MAAA;AAAQ,IACd,KAAK,MAAA;AACH,MAAA,MAAM,QAAA,CAAS,KAAK,UAAA,EAAW;AAC/B,MAAA,OAAO,EAAE,WAAW,IAAA,EAAK;AAAA,IAC3B,KAAK,UAAA;AACH,MAAA,MAAM,QAAA,CAAS,SAAS,QAAA,EAAS;AACjC,MAAA,OAAO,EAAE,WAAW,IAAA,EAAK;AAAA,IAC3B,KAAK,OAAA;AACH,MAAA,MAAM,QAAA,CAAS,MAAM,UAAA,EAAW;AAChC,MAAA,OAAO,EAAE,WAAW,IAAA,EAAK;AAAA,IAC3B,KAAK,QAAA;AACH,MAAA,MAAM,SAAS,MAAA,CAAO,KAAA,CAAM,EAAE,WAAA,EAAa,MAAM,CAAA;AACjD,MAAA,OAAO,EAAE,WAAW,IAAA,EAAK;AAAA,IAC3B,KAAK,IAAA;AACH,MAAA,MAAM,QAAA,CAAS,EAAA,CAAG,KAAA,CAAM,+BAA+B,CAAA;AACvD,MAAA,OAAO,EAAE,WAAW,IAAA,EAAK;AAAA,IAC3B,KAAK,SAAA;AACH,MAAA,MAAM,QAAA,CAAS,OAAA,CAAQ,IAAA,CAAK,+BAA+B,CAAA;AAC3D,MAAA,OAAO,EAAE,WAAW,IAAA,EAAK;AAAA,IAC3B,KAAK,IAAA;AACH,MAAA,MAAM,QAAA,CAAS,EAAA,CAAG,QAAA,CAAS,8BAA8B,CAAA;AACzD,MAAA,OAAO,EAAE,WAAW,IAAA,EAAK;AAAA;AAG7B,EAAA,OAAO;AAAA,IACL,SAAA,EAAW,KAAA;AAAA,IACX,KAAA,EAAO,qCAAqC,MAAM,CAAA,CAAA;AAAA,GACpD;AACF;AAcO,SAAS,gBAAgB,KAAA,EAA0C;AACxE,EAAA,MAAM;AAAA,IACJ,QAAA;AAAA,IACA,WAAA,GAAc,KAAA;AAAA,IACd,eAAA;AAAA,IACA,QAAA,EAAU,gBAAA;AAAA,IACV,QAAA;AAAA,IACA,EAAA;AAAA,IACA,IAAA;AAAA,IACA,QAAA;AAAA,IACA,EAAA;AAAA,IACA,OAAA;AAAA,IACA,WAAA;AAAA,IACA,KAAA;AAAA,IACA,MAAA;AAAA,IACA,OAAA;AAAA,IACA,YAAA;AAAA,IACA,YAAA;AAAA,IACA;AAAA,GACF,GAAI,KAAA;AACJ,EAAA,MAAM,aAAA,GAAgBlB,aAAAA;AAAA,IACpB,MAAM,kCAAA,CAAmC,EAAE,YAAA,EAAc,WAAW,CAAA;AAAA,IACpE,CAAC,cAAc,SAAS;AAAA,GAC1B;AACA,EAAA,MAAMc,UAAA,GAAWd,aAAAA;AAAA,IACf,MACE,iBAAA;AAAA,MACE;AAAA,QACE,QAAA,EAAU,gBAAA;AAAA,QACV,QAAA;AAAA,QACA,EAAA;AAAA,QACA,IAAA;AAAA,QACA,QAAA;AAAA,QACA,EAAA;AAAA,QACA,OAAA;AAAA,QACA,WAAA;AAAA,QACA,KAAA;AAAA,QACA;AAAA,OACF;AAAA,MACA,aAAA,CAAc;AAAA,KAChB;AAAA,IACF;AAAA,MACE,gBAAA;AAAA,MACA,QAAA;AAAA,MACA,EAAA;AAAA,MACA,IAAA;AAAA,MACA,QAAA;AAAA,MACA,EAAA;AAAA,MACA,OAAA;AAAA,MACA,WAAA;AAAA,MACA,KAAA;AAAA,MACA,MAAA;AAAA,MACA;AAAA;AACF,GACF;AACA,EAAA,MAAM,CAAC,SAAA,EAAW,YAAY,CAAA,GAAIC,eAAS,WAAW,CAAA;AACtD,EAAA,MAAM,CAAC,QAAA,EAAU,WAAW,CAAA,GAAIA,cAAAA;AAAA,IAE9B,MACA,qBAAA;AAAA,MACEa,UAAA;AAAA,MACA,aAAA,CAAc,YAAA;AAAA,MACd,WAAA;AAAA,MACA;AAAA;AACF,GACF;AAEA,EAAAZ,gBAAU,MAAM;AACd,IAAA,WAAA;AAAA,MACE,qBAAA;AAAA,QACEY,UAAA;AAAA,QACA,aAAA,CAAc,YAAA;AAAA,QACd,WAAA;AAAA,QACA;AAAA;AACF,KACF;AAAA,EACF,GAAG,CAACA,UAAA,EAAU,cAAc,YAAA,EAAc,WAAA,EAAa,eAAe,CAAC,CAAA;AAEvE,EAAAZ,gBAAU,MAAM;AACd,IAAA,IAAI,CAAC,WAAA,EAAa;AAChB,MAAA;AAAA,IACF;AAEA,IAAA,IAAI,SAAA,GAAY,KAAA;AAChB,IAAA,YAAA,CAAa,IAAI,CAAA;AAEjB,IAAA,MAAM,MAAA,GAASe,wBAAA,CAAgB,GAAA,CAAI,OAAO,MAAA,KAA0B;AAClE,MAAA,MAAM,OAAA,GAAUH,WAAS,MAAM,CAAA;AAC/B,MAAA,IAAI,CAAC,OAAA,EAAS;AAEd,MAAA,IAAI;AACF,QAAA,WAAA,CAAY,CAAC,QAAA,MAAc;AAAA,UACzB,GAAG,QAAA;AAAA,UACH,CAAC,MAAM,GAAG;AAAA,YACR,GAAG,SAAS,MAAM,CAAA;AAAA,YAClB,MAAA,EAAQ,cAAA;AAAA,YACR,KAAA,EAAO,KAAA;AAAA;AACT,SACF,CAAE,CAAA;AAEF,QAAA,MAAM,MAAA,GAAS,MAAM,kBAAA,CAAmB,MAAA,EAAQA,YAAU,YAAY,CAAA;AACtE,QAAA,IAAI,CAAC,OAAO,SAAA,EAAW;AACrB,UAAA,WAAA,CAAY,CAAC,QAAA,MAAc;AAAA,YACzB,GAAG,QAAA;AAAA,YACH,CAAC,MAAM,GAAG;AAAA,cACR,GAAG,SAAS,MAAM,CAAA;AAAA,cAClB,MAAA,EAAQ,cAAA;AAAA,cACR,OAAO,MAAA,CAAO,KAAA;AAAA,cACd,aAAA,EAAe,KAAK,GAAA;AAAI;AAC1B,WACF,CAAE,CAAA;AACF,UAAA;AAAA,QACF;AAEA,QAAA,IAAI,CAAC,SAAA,EAAW;AACd,UAAA,WAAA,CAAY,CAAC,QAAA,MAAc;AAAA,YACzB,GAAG,QAAA;AAAA,YACH,CAAC,MAAM,GAAG;AAAA,cACR,GAAG,SAAS,MAAM,CAAA;AAAA,cAClB,MAAA,EAAQ,WAAA;AAAA,cACR,KAAA,EAAO,KAAA,CAAA;AAAA,cACP,aAAA,EAAe,KAAK,GAAA;AAAI;AAC1B,WACF,CAAE,CAAA;AAAA,QACJ;AAAA,MACF,SAAS,KAAA,EAAO;AACd,QAAA,MAAM,YAAA,GAAe,cAAA,CAAe,MAAA,EAAQ,KAAK,CAAA;AACjD,QAAA,OAAA,GAAU,YAAY,CAAA;AAEtB,QAAA,IAAI,CAAC,SAAA,EAAW;AACd,UAAA,WAAA,CAAY,CAAC,QAAA,MAAc;AAAA,YACzB,GAAG,QAAA;AAAA,YACH,CAAC,MAAM,GAAG;AAAA,cACR,GAAG,SAAS,MAAM,CAAA;AAAA,cAClB,MAAA,EAAQ,OAAA;AAAA,cACR,OAAO,YAAA,CAAa,OAAA;AAAA,cACpB,aAAA,EAAe,KAAK,GAAA;AAAI;AAC1B,WACF,CAAE,CAAA;AAAA,QACJ;AAAA,MACF;AAAA,IACF,CAAC,CAAA;AAED,IAAA,OAAA,CAAQ,UAAA,CAAW,MAAM,CAAA,CAAE,OAAA,CAAQ,MAAM;AACvC,MAAA,IAAI,CAAC,SAAA,EAAW,YAAA,CAAa,KAAK,CAAA;AAAA,IACpC,CAAC,CAAA;AAED,IAAA,OAAO,MAAM;AACX,MAAA,SAAA,GAAY,IAAA;AAAA,IACd,CAAA;AAAA,EACF,GAAG,CAACA,UAAA,EAAU,WAAA,EAAa,YAAA,EAAc,OAAO,CAAC,CAAA;AAEjD,EAAA,MAAM,UAAA,GAAaK,iBAAA;AAAA,IACjB,CAA0B,MAAA,KAAkC;AAC1D,MAAA,MAAM,OAAA,GAAUL,WAAS,MAAM,CAAA;AAC/B,MAAA,IAAI,CAAC,OAAA,EAAS;AACZ,QAAA,MAAM,IAAIM,4BAAA;AAAA,UACR,CAAA,EAAGzB,sBAAAA,CAAc,MAAM,CAAA,IAAK,MAAM,CAAA,4CAAA,CAAA;AAAA,UAClC;AAAA,SACF;AAAA,MACF;AACA,MAAA,OAAO,OAAA;AAAA,IACT,CAAA;AAAA,IACA,CAACmB,UAAQ;AAAA,GACX;AAEA,EAAA,MAAM,OAAA,GAAUK,iBAAA;AAAA,IACd,CAAC,MAAA,KACC,CAAC,CAACL,UAAA,CAAS,MAAM,CAAA,IAAK,QAAA,CAAS,MAAM,CAAA,EAAG,MAAA,KAAW,WAAA;AAAA,IACrD,CAACA,YAAU,QAAQ;AAAA,GACrB;AAEA,EAAA,MAAM,KAAA,GAAQd,aAAAA;AAAA,IACZ,OAAO;AAAA,gBACLc,UAAA;AAAA,MACA,QAAA;AAAA,MACA,UAAA;AAAA,MACA,OAAA;AAAA,MACA;AAAA,KACF,CAAA;AAAA,IACA,CAACA,UAAA,EAAU,QAAA,EAAU,UAAA,EAAY,SAAS,SAAS;AAAA,GACrD;AAEA,EAAA,uBACEpB,cAAAA,CAAC,cAAA,CAAe,QAAA,EAAf,EAAwB,OAAe,QAAA,EAAS,CAAA;AAErD;AAUO,IAAM,gBAAA,GAAmB;AAYzB,SAAS,iBAAA,GAAyC;AACvD,EAAA,MAAM,OAAA,GAAU2B,iBAAW,cAAc,CAAA;AACzC,EAAA,IAAI,CAAC,OAAA,EAAS;AACZ,IAAA,MAAM,IAAID,4BAAA;AAAA,MACR,yDAAA;AAAA,MACA;AAAA,KACF;AAAA,EACF;AACA,EAAA,OAAO,OAAA;AACT;;;ACzfO,SAAS,KAAA,GAAmB;AACjC,EAAA,OAAO,iBAAA,EAAkB,CAAE,UAAA,CAAW,IAAI,CAAA;AAC5C;AAYO,SAAS,OAAA,GAAuB;AACrC,EAAA,OAAO,iBAAA,EAAkB,CAAE,UAAA,CAAW,MAAM,CAAA;AAC9C;AAWO,SAAS,cAAA,GAA8B;AAC5C,EAAA,OAAO,OAAA,EAAQ;AACjB;AAYO,SAAS,WAAA,GAA+B;AAC7C,EAAA,OAAO,iBAAA,EAAkB,CAAE,UAAA,CAAW,UAAU,CAAA;AAClD;AAYO,SAAS,KAAA,GAAmB;AACjC,EAAA,OAAO,iBAAA,EAAkB,CAAE,UAAA,CAAW,IAAI,CAAA;AAC5C;AAYO,SAAS,cAAA,GAAqC;AACnD,EAAA,OAAO,iBAAA,EAAkB,CAAE,UAAA,CAAW,SAAS,CAAA;AACjD;AAWO,SAAS,UAAA,GAAiC;AAC/C,EAAA,OAAO,cAAA,EAAe;AACxB;AAYO,SAAS,QAAA,GAAyB;AACvC,EAAA,OAAO,iBAAA,EAAkB,CAAE,UAAA,CAAW,OAAO,CAAA;AAC/C;AAYO,SAAS,SAAA,GAA2B;AACzC,EAAA,OAAO,iBAAA,EAAkB,CAAE,UAAA,CAAW,QAAQ,CAAA;AAChD;AAYO,SAAS,kBAAA,GAA+D;AAC7E,EAAA,OAAO,mBAAkB,CAAE,QAAA;AAC7B;AAYO,SAAS,iBAAiB,MAAA,EAA0C;AACzE,EAAA,OAAO,iBAAA,EAAkB,CAAE,QAAA,CAAS,MAAM,CAAA;AAC5C;AAYO,SAAS,kBAAkB,MAAA,EAAgC;AAChE,EAAA,OAAO,iBAAA,EAAkB,CAAE,OAAA,CAAQ,MAAM,CAAA;AAC3C;AAWO,SAAS,WAAA,GAYd;AACA,EAAA,MAAM,UAAU,iBAAA,EAAkB;AAElC,EAAA,OAAOpB,aAAAA;AAAA,IACL,OAAO;AAAA,MACL,EAAA,EAAI,QAAQ,QAAA,CAAS,EAAA;AAAA,MACrB,IAAA,EAAM,QAAQ,QAAA,CAAS,IAAA;AAAA,MACvB,QAAA,EAAU,QAAQ,QAAA,CAAS,QAAA;AAAA,MAC3B,EAAA,EAAI,QAAQ,QAAA,CAAS,EAAA;AAAA,MACrB,WAAA,EAAa,QAAQ,QAAA,CAAS,WAAA;AAAA,MAC9B,OAAA,EAAS,QAAQ,QAAA,CAAS,OAAA;AAAA,MAC1B,KAAA,EAAO,QAAQ,QAAA,CAAS,KAAA;AAAA,MACxB,MAAA,EAAQ,QAAQ,QAAA,CAAS,MAAA;AAAA,MACzB,UAAU,OAAA,CAAQ,QAAA;AAAA,MAClB,WAAW,OAAA,CAAQ,SAAA;AAAA,MACnB,SAAS,OAAA,CAAQ;AAAA,KACnB,CAAA;AAAA,IACA,CAAC,OAAO;AAAA,GACV;AACF;AC/KO,SAAS,WAAA,CAAY;AAAA,EAC1B,QAAA;AAAA,EACA,YAAA;AAAA,EACA,SAAA;AAAA,EACA,UAAA,GAAa,KAAA;AAAA,EACb,KAAA;AAAA,EACA;AACF,CAAA,EAAkC;AAChC,EAAA,MAAM,EAAE,QAAA,EAAU,SAAA,EAAU,GAAI,WAAA,EAAY;AAC5C,EAAA,MAAM,CAAC,MAAA,EAAQ,SAAS,CAAA,GAAIC,eAAS,EAAE,CAAA;AAEvC,EAAA,MAAM,eAAA,GAAkBD,cAAQ,MAAM;AACpC,IAAA,IAAI,OAAA,GAAU,CAAC,GAAGiB,wBAAe,CAAA;AAEjC,IAAA,IAAI,MAAA,EAAQ;AACV,MAAA,MAAM,KAAA,GAAQ,OAAO,WAAA,EAAY;AACjC,MAAA,OAAA,GAAU,OAAA,CAAQ,MAAA,CAAO,CAAC,MAAA,KAAW;AACnC,QAAA,MAAM,KAAA,GAAQtB,sBAAAA,CAAc,MAAM,CAAA,CAAE,WAAA,EAAY;AAChD,QAAA,MAAM,WAAW,QAAA,CAAS,MAAM,CAAA,EAAG,QAAA,EAAU,aAAY,IAAK,EAAA;AAC9D,QAAA,OACE,KAAA,CAAM,QAAA,CAAS,KAAK,CAAA,IACpB,QAAA,CAAS,SAAS,KAAK,CAAA,IACvB,MAAA,CAAO,QAAA,CAAS,KAAK,CAAA;AAAA,MAEzB,CAAC,CAAA;AAAA,IACH;AAEA,IAAA,IAAI,YAAA,EAAc;AAChB,MAAA,OAAA,GAAU,OAAA,CAAQ,MAAA;AAAA,QAChB,CAAC,MAAA,KAAW,QAAA,CAAS,MAAM,GAAG,MAAA,KAAW;AAAA,OAC3C;AAAA,IACF;AAEA,IAAA,OAAO,OAAA;AAAA,EACT,CAAA,EAAG,CAAC,MAAA,EAAQ,YAAA,EAAc,QAAQ,CAAC,CAAA;AAEnC,EAAA,IAAI,SAAA,EAAW;AACb,IAAA,uBACED,cAAAA;AAAA,MAAC,IAAA;AAAA,MAAA;AAAA,QACC,kBAAA,EAAmB,kBAAA;AAAA,QACnB,iBAAA,EAAkB,aAAA;AAAA,QAClB,KAAA,EAAO,CAACH,OAAAA,CAAO,KAAA,EAAO,KAAK,CAAA;AAAA,QAC3B,QAAQ,MAAA,IAAU,sBAAA;AAAA,QAEjB,QAAA,EAAA,CAAC,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,CAAC,CAAA,CAAE,GAAA,CAAI,CAAC,KAAA,qBACjBE,eAAAA,CAAC,IAAA,EAAA,EAAiB,KAAA,EAAOF,QAAO,YAAA,EAC9B,QAAA,EAAA;AAAA,0BAAAG,cAAAA,CAAC,IAAA,EAAA,EAAK,KAAA,EAAOH,OAAAA,CAAO,YAAA,EAAc,CAAA;AAAA,0BAClCE,eAAAA,CAAC,IAAA,EAAA,EAAK,KAAA,EAAOF,QAAO,YAAA,EAClB,QAAA,EAAA;AAAA,4BAAAG,cAAAA,CAAC,IAAA,EAAA,EAAK,KAAA,EAAOH,OAAAA,CAAO,aAAA,EAAe,CAAA;AAAA,4BACnCG,cAAAA,CAAC,IAAA,EAAA,EAAK,KAAA,EAAOH,QAAO,YAAA,EAAc;AAAA,WAAA,EACpC;AAAA,SAAA,EAAA,EALS,KAMX,CACD;AAAA;AAAA,KACH;AAAA,EAEJ;AAEA,EAAA,uBACEE,eAAAA,CAAC,IAAA,EAAA,EAAK,KAAA,EAAO,CAACF,OAAAA,CAAO,SAAA,EAAW,KAAK,CAAA,EAAG,MAAA,EAAQ,MAAA,IAAU,cAAA,EACxD,QAAA,EAAA;AAAA,oBAAAG,cAAAA;AAAA,MAAC,SAAA;AAAA,MAAA;AAAA,QACC,kBAAA,EAAmB,iBAAA;AAAA,QACnB,cAAA,EAAe,MAAA;AAAA,QACf,WAAA,EAAa,KAAA;AAAA,QACb,YAAA,EAAc,SAAA;AAAA,QACd,WAAA,EAAY,oBAAA;AAAA,QACZ,OAAOH,OAAAA,CAAO,MAAA;AAAA,QACd,MAAA,EAAO,gBAAA;AAAA,QACP,KAAA,EAAO;AAAA;AAAA,KACT;AAAA,oBACAG,cAAAA;AAAA,MAAC,QAAA;AAAA,MAAA;AAAA,QACC,kBAAA,EAAmB,UAAA;AAAA,QACnB,kBAAA,EAAoB,EAAE,IAAA,EAAM,UAAA,EAAW;AAAA,QACvC,IAAA,EAAM,eAAA;AAAA,QACN,YAAA,EAAc,CAAC,MAAA,KAAW,MAAA;AAAA,QAC1B,oCACED,eAAAA;AAAA,UAAC,IAAA;AAAA,UAAA;AAAA,YACC,kBAAA,EAAmB,0BAAA;AAAA,YACnB,OAAOF,OAAAA,CAAO,UAAA;AAAA,YACd,MAAA,EAAO,oBAAA;AAAA,YAEP,QAAA,EAAA;AAAA,8BAAAG,eAAC,IAAA,EAAA,EAAK,KAAA,EAAOH,QAAO,SAAA,EACjB,QAAA,EAAA,MAAA,GACG,kCACA,wBAAA,EACN,CAAA;AAAA,8BACAG,eAAC,IAAA,EAAA,EAAK,KAAA,EAAOH,QAAO,SAAA,EACjB,QAAA,EAAA,MAAA,GACG,yDACA,2EAAA,EACN,CAAA;AAAA,cACC,yBACCG,cAAAA;AAAA,gBAAC,SAAA;AAAA,gBAAA;AAAA,kBACC,kBAAA,EAAmB,sBAAA;AAAA,kBACnB,iBAAA,EAAkB,QAAA;AAAA,kBAClB,OAAA,EAAS,MAAM,SAAA,CAAU,EAAE,CAAA;AAAA,kBAC3B,OAAOH,OAAAA,CAAO,WAAA;AAAA,kBACd,MAAA,EAAO,2BAAA;AAAA,kBAEP,0BAAAG,cAAAA,CAAC,IAAA,EAAA,EAAK,KAAA,EAAOH,OAAAA,CAAO,iBAAiB,QAAA,EAAA,cAAA,EAAY;AAAA;AAAA,eACnD,GACE;AAAA;AAAA;AAAA,SACN;AAAA,QAEF,SAAA;AAAA,QACA,UAAA,EAAY,CAAC,EAAE,IAAA,EAAK,qBAClBG,cAAAA,CAAC,IAAA,EAAA,EAAK,KAAA,EAAOH,OAAAA,CAAO,IAAA,EAClB,QAAA,kBAAAG,cAAAA;AAAA,UAAC,WAAA;AAAA,UAAA;AAAA,YACC,MAAA,EAAQ,IAAA;AAAA,YACR,OAAA,EAAS,QAAA,GAAW,MAAM,QAAA,CAAS,IAAI,CAAA,GAAI,MAAA;AAAA,YAC3C,MAAA,EAAQ,SAAS,IAAI;AAAA;AAAA,SACvB,EACF,CAAA;AAAA,QAEF,UAAA;AAAA,QACA,MAAA,EAAO;AAAA;AAAA;AACT,GAAA,EACF,CAAA;AAEJ;AAEA,IAAMH,OAAAA,GAAS,WAAW,MAAA,CAAO;AAAA,EAC/B,SAAA,EAAW;AAAA,IACT,GAAA,EAAK;AAAA,GACP;AAAA,EACA,UAAA,EAAY;AAAA,IACV,UAAA,EAAY,QAAA;AAAA,IACZ,eAAA,EAAiB,eAAe,OAAA,CAAQ,EAAA;AAAA,IACxC,WAAA,EAAa,eAAe,OAAA,CAAQ,MAAA;AAAA,IACpC,YAAA,EAAc,EAAA;AAAA,IACd,WAAA,EAAa,CAAA;AAAA,IACb,OAAA,EAAS;AAAA,GACX;AAAA,EACA,SAAA,EAAW;AAAA,IACT,KAAA,EAAO,eAAe,OAAA,CAAQ,SAAA;AAAA,IAC9B,QAAA,EAAU,EAAA;AAAA,IACV,UAAA,EAAY;AAAA,GACd;AAAA,EACA,SAAA,EAAW;AAAA,IACT,KAAA,EAAO,eAAe,OAAA,CAAQ,SAAA;AAAA,IAC9B,QAAA,EAAU,EAAA;AAAA,IACV,SAAA,EAAW,CAAA;AAAA,IACX,SAAA,EAAW;AAAA,GACb;AAAA,EACA,WAAA,EAAa;AAAA,IACX,eAAA,EAAiB,eAAe,OAAA,CAAQ,IAAA;AAAA,IACxC,WAAA,EAAa,eAAe,OAAA,CAAQ,MAAA;AAAA,IACpC,YAAA,EAAc,CAAA;AAAA,IACd,WAAA,EAAa,CAAA;AAAA,IACb,SAAA,EAAW,EAAA;AAAA,IACX,iBAAA,EAAmB,EAAA;AAAA,IACnB,eAAA,EAAiB;AAAA,GACnB;AAAA,EACA,eAAA,EAAiB;AAAA,IACf,KAAA,EAAO,eAAe,OAAA,CAAQ,IAAA;AAAA,IAC9B,QAAA,EAAU,EAAA;AAAA,IACV,UAAA,EAAY;AAAA,GACd;AAAA,EACA,IAAA,EAAM;AAAA,IACJ,YAAA,EAAc;AAAA,GAChB;AAAA,EACA,MAAA,EAAQ;AAAA,IACN,eAAA,EAAiB,eAAe,OAAA,CAAQ,IAAA;AAAA,IACxC,WAAA,EAAa,eAAe,OAAA,CAAQ,YAAA;AAAA,IACpC,YAAA,EAAc,EAAA;AAAA,IACd,WAAA,EAAa,CAAA;AAAA,IACb,KAAA,EAAO,eAAe,OAAA,CAAQ,IAAA;AAAA,IAC9B,QAAA,EAAU,EAAA;AAAA,IACV,iBAAA,EAAmB,EAAA;AAAA,IACnB,eAAA,EAAiB;AAAA,GACnB;AAAA,EACA,YAAA,EAAc;AAAA,IACZ,IAAA,EAAM,CAAA;AAAA,IACN,GAAA,EAAK;AAAA,GACP;AAAA,EACA,YAAA,EAAc;AAAA,IACZ,UAAA,EAAY,QAAA;AAAA,IACZ,eAAA,EAAiB,eAAe,OAAA,CAAQ,IAAA;AAAA,IACxC,WAAA,EAAa,eAAe,OAAA,CAAQ,MAAA;AAAA,IACpC,YAAA,EAAc,EAAA;AAAA,IACd,WAAA,EAAa,CAAA;AAAA,IACb,aAAA,EAAe,KAAA;AAAA,IACf,GAAA,EAAK,EAAA;AAAA,IACL,OAAA,EAAS;AAAA,GACX;AAAA,EACA,YAAA,EAAc;AAAA,IACZ,eAAA,EAAiB,eAAe,OAAA,CAAQ,QAAA;AAAA,IACxC,YAAA,EAAc,CAAA;AAAA,IACd,MAAA,EAAQ,EAAA;AAAA,IACR,KAAA,EAAO;AAAA,GACT;AAAA,EACA,YAAA,EAAc;AAAA,IACZ,eAAA,EAAiB,eAAe,OAAA,CAAQ,QAAA;AAAA,IACxC,YAAA,EAAc,GAAA;AAAA,IACd,MAAA,EAAQ,CAAA;AAAA,IACR,KAAA,EAAO;AAAA,GACT;AAAA,EACA,aAAA,EAAe;AAAA,IACb,eAAA,EAAiB,eAAe,OAAA,CAAQ,cAAA;AAAA,IACxC,YAAA,EAAc,GAAA;AAAA,IACd,MAAA,EAAQ,EAAA;AAAA,IACR,KAAA,EAAO;AAAA,GACT;AAAA,EACA,KAAA,EAAO;AAAA,IACL,GAAA,EAAK;AAAA;AAET,CAAC,CAAA;ACxMM,SAAS,iBAAA,CAAkB;AAAA,EAChC,MAAA;AAAA,EACA,MAAA;AAAA,EACA,WAAA;AAAA,EACA,KAAA;AAAA,EACA;AACF,CAAA,EAAwC;AACtC,EAAA,uBACEG,cAAAA,CAAC,mBAAA,EAAA,EAAoB,KAAA,EAAc,MAAA,EAAO,iCACxC,QAAA,kBAAAA,cAAAA;AAAA,IAAC,wBAAA;AAAA,IAAA;AAAA,MACC,MAAA;AAAA,MACA,MAAA;AAAA,MACA,WAAA;AAAA,MACA,KAAA;AAAA,MACA;AAAA;AAAA,GACF,EACF,CAAA;AAEJ;AAEA,SAAS,wBAAA,CAAyB;AAAA,EAChC,MAAA;AAAA,EACA,MAAA;AAAA,EACA,WAAA;AAAA,EACA,KAAA;AAAA,EACA;AACF,CAAA,EAAwC;AACtC,EAAA,MAAM,EAAE,SAAA,EAAU,GAAI,WAAA,EAAY;AAClC,EAAA,MAAM,MAAA,GAAS,iBAAiB,MAAM,CAAA;AACtC,EAAA,MAAM,CAAC,SAAA,EAAW,YAAY,CAAA,GAAIO,eAAS,KAAK,CAAA;AAChD,EAAA,MAAM,SAAA,GAA4BF,+BAAsB,MAAM,CAAA;AAC9D,EAAA,MAAM,sBAAsB,IAAI,GAAA;AAAA,IAC9B,MAAA,KAAW,IAAA,GACP,CAAC,cAAA,EAAgB,GAAGD,4BAAmB,CAAA,GACvC,SAAA,CAAU,GAAA,CAAI,CAAC,QAAA,KAAa,QAAA,CAAS,EAAE;AAAA,GAC7C;AAEA,EAAA,IAAI,SAAA,EAAW;AACb,IAAA,uBACEL,eAAAA;AAAA,MAAC,IAAA;AAAA,MAAA;AAAA,QACC,kBAAA,EAAmB,yBAAA;AAAA,QACnB,iBAAA,EAAkB,aAAA;AAAA,QAClB,KAAA,EAAO,CAACF,OAAAA,CAAO,IAAA,EAAM,KAAK,CAAA;AAAA,QAC1B,QAAQ,MAAA,IAAU,wBAAA;AAAA,QAElB,QAAA,EAAA;AAAA,0BAAAG,cAAAA,CAAC,IAAA,EAAA,EAAK,KAAA,EAAOH,OAAAA,CAAO,aAAA,EAAe,CAAA;AAAA,0BACnCG,cAAAA,CAAC,IAAA,EAAA,EAAK,KAAA,EAAOH,QAAO,aAAA,EAAe,CAAA;AAAA,0BACnCG,cAAAA,CAAC,IAAA,EAAA,EAAK,KAAA,EAAOH,QAAO,aAAA,EAAe;AAAA;AAAA;AAAA,KACrC;AAAA,EAEJ;AAEA,EAAA,uBACEE,eAAAA;AAAA,IAAC,UAAA;AAAA,IAAA;AAAA,MACC,kBAAA,EAAoB,CAAA,EAAGE,sBAAAA,CAAc,MAAM,CAAC,CAAA,gBAAA,CAAA;AAAA,MAC5C,qBAAA,EAAuB,CAACJ,OAAAA,CAAO,IAAA,EAAM,KAAK,CAAA;AAAA,MAC1C,yBAAA,EAA0B,SAAA;AAAA,MAC1B,QAAQ,MAAA,IAAU,qBAAA;AAAA,MAEjB,QAAA,EAAA;AAAA,QAAA,MAAA,oBACCG,cAAAA;AAAA,UAAC,SAAA;AAAA,UAAA;AAAA,YACC,kBAAA,EAAmB,kBAAA;AAAA,YACnB,iBAAA,EAAkB,QAAA;AAAA,YAClB,OAAA,EAAS,MAAA;AAAA,YACT,OAAOH,OAAAA,CAAO,UAAA;AAAA,YACd,MAAA,EAAO,qBAAA;AAAA,YAEP,0BAAAG,cAAAA,CAAC,IAAA,EAAA,EAAK,KAAA,EAAOH,OAAAA,CAAO,UAAU,QAAA,EAAA,kBAAA,EAAgB;AAAA;AAAA,SAChD;AAAA,wBAGFE,eAAAA,CAAC,IAAA,EAAA,EAAK,KAAA,EAAOF,QAAO,IAAA,EAClB,QAAA,EAAA;AAAA,0BAAAG,cAAAA,CAAC,IAAA,EAAA,EAAK,KAAA,EAAOH,OAAAA,CAAO,SAClB,QAAA,kBAAAG,cAAAA,CAAC,IAAA,EAAA,EAAK,KAAA,EAAOH,QAAO,QAAA,EAAW,QAAA,EAAAK,qBAAAA,CAAa,MAAM,GAAE,CAAA,EACtD,CAAA;AAAA,0BACAH,eAAAA,CAAC,IAAA,EAAA,EAAK,KAAA,EAAOF,QAAO,QAAA,EAClB,QAAA,EAAA;AAAA,4BAAAE,eAAAA,CAAC,IAAA,EAAA,EAAK,KAAA,EAAOF,OAAAA,CAAO,YAAA,EAClB,QAAA,EAAA;AAAA,8BAAAG,cAAAA,CAAC,IAAA,EAAA,EAAK,iBAAA,EAAkB,QAAA,EAAS,KAAA,EAAOH,QAAO,KAAA,EAC5C,QAAA,EAAAI,sBAAAA,CAAc,MAAM,CAAA,EACvB,CAAA;AAAA,8BACAD,cAAAA,CAAC,kBAAA,EAAA,EAAmB,MAAA,EAAQ,OAAO,MAAA,EAAQ;AAAA,aAAA,EAC7C,CAAA;AAAA,4BACAA,eAAC,IAAA,EAAA,EAAK,KAAA,EAAOH,QAAO,WAAA,EAAc,QAAA,EAAAM,4BAAAA,CAAoB,MAAM,CAAA,EAAE;AAAA,WAAA,EAChE;AAAA,SAAA,EACF,CAAA;AAAA,wBAEAJ,eAAAA,CAAC,IAAA,EAAA,EAAK,KAAA,EAAOF,QAAO,KAAA,EAClB,QAAA,EAAA;AAAA,0BAAAG,cAAAA,CAAC,IAAA,EAAA,EAAK,KAAA,EAAOH,OAAAA,CAAO,cAAc,QAAA,EAAA,gBAAA,EAAc,CAAA;AAAA,0BAChDE,eAAAA,CAAC,IAAA,EAAA,EAAK,KAAA,EAAOF,QAAO,UAAA,EAClB,QAAA,EAAA;AAAA,4BAAAE,eAAAA,CAAC,IAAA,EAAA,EAAK,KAAA,EAAOF,OAAAA,CAAO,UAAA,EAClB,QAAA,EAAA;AAAA,8BAAAG,cAAAA,CAAC,IAAA,EAAA,EAAK,KAAA,EAAOH,OAAAA,CAAO,aAAa,QAAA,EAAA,UAAA,EAAQ,CAAA;AAAA,8BACzCG,cAAAA,CAAC,IAAA,EAAA,EAAK,KAAA,EAAOH,OAAAA,CAAO,WAAA,EACjB,QAAA,EAAA,MAAA,CAAO,QAAA,KAAa,MAAA,GAAS,MAAA,CAAO,QAAA,GAAW,MAAA,EAClD;AAAA,aAAA,EACF,CAAA;AAAA,4BACAE,eAAAA,CAAC,IAAA,EAAA,EAAK,KAAA,EAAOF,QAAO,UAAA,EAClB,QAAA,EAAA;AAAA,8BAAAG,cAAAA,CAAC,IAAA,EAAA,EAAK,KAAA,EAAOH,OAAAA,CAAO,aAAa,QAAA,EAAA,QAAA,EAAM,CAAA;AAAA,8BACvCG,cAAAA,CAAC,kBAAA,EAAA,EAAmB,MAAA,EAAQ,OAAO,MAAA,EAAQ;AAAA,aAAA,EAC7C,CAAA;AAAA,4BACAD,eAAAA,CAAC,IAAA,EAAA,EAAK,KAAA,EAAOF,QAAO,UAAA,EAClB,QAAA,EAAA;AAAA,8BAAAG,cAAAA,CAAC,IAAA,EAAA,EAAK,KAAA,EAAOH,OAAAA,CAAO,aAAa,QAAA,EAAA,cAAA,EAAY,CAAA;AAAA,8BAC7CG,cAAAA,CAAC,IAAA,EAAA,EAAK,KAAA,EAAOH,QAAO,WAAA,EACjB,QAAA,EAAA,MAAA,CAAO,aAAA,GACJ,IAAI,KAAK,MAAA,CAAO,aAAa,CAAA,CAAE,kBAAA,KAC/B,aAAA,EACN;AAAA,aAAA,EACF;AAAA,WAAA,EACF,CAAA;AAAA,UACC,OAAO,KAAA,oBACNG,eAAC,IAAA,EAAA,EAAK,iBAAA,EAAkB,SAAQ,KAAA,EAAOH,OAAAA,CAAO,QAAA,EAC5C,QAAA,kBAAAG,eAAC,IAAA,EAAA,EAAK,KAAA,EAAOH,QAAO,SAAA,EAAY,QAAA,EAAA,MAAA,CAAO,OAAM,CAAA,EAC/C;AAAA,SAAA,EAEJ,CAAA;AAAA,wBAEAE,eAAAA,CAAC,IAAA,EAAA,EAAK,KAAA,EAAOF,QAAO,KAAA,EAClB,QAAA,EAAA;AAAA,0BAAAG,cAAAA,CAAC,IAAA,EAAA,EAAK,KAAA,EAAOH,OAAAA,CAAO,cAAc,QAAA,EAAA,qBAAA,EAAmB,CAAA;AAAA,0BACrDG,eAAC,IAAA,EAAA,EAAK,KAAA,EAAOH,QAAO,SAAA,EACjB,QAAA,EAAA,SAAA,CAAU,GAAA,CAAI,CAAC,QAAA,KAA2B;AACzC,YAAA,MAAM,WAAA,GAAc,mBAAA,CAAoB,GAAA,CAAI,QAAA,CAAS,EAAE,CAAA;AACvD,YAAA,uBACEE,eAAAA,CAAC,IAAA,EAAA,EAAuB,KAAA,EAAOF,QAAO,WAAA,EACpC,QAAA,EAAA;AAAA,8BAAAE,eAAAA,CAAC,IAAA,EAAA,EAAK,KAAA,EAAOF,OAAAA,CAAO,YAAA,EAClB,QAAA,EAAA;AAAA,gCAAAG,eAAC,IAAA,EAAA,EAAK,KAAA,EAAOH,OAAAA,CAAO,YAAA,EAAe,mBAAS,IAAA,EAAK,CAAA;AAAA,gCACjDG,cAAAA,CAAC,IAAA,EAAA,EAAK,OAAOH,OAAAA,CAAO,mBAAA,EACjB,mBAAS,WAAA,EACZ;AAAA,eAAA,EACF,CAAA;AAAA,8BACAE,eAAAA,CAAC,IAAA,EAAA,EAAK,KAAA,EAAOF,QAAO,cAAA,EAClB,QAAA,EAAA;AAAA,gCAAAG,eAAC,IAAA,EAAA,EAAK,KAAA,EAAOH,OAAAA,CAAO,YAAA,EAAe,mBAAS,IAAA,EAAK,CAAA;AAAA,gBAChD,CAAC,+BACAG,cAAAA;AAAA,kBAAC,IAAA;AAAA,kBAAA;AAAA,oBACC,kBAAA,EAAoB,CAAA,EAAG,QAAA,CAAS,IAAI,CAAA,eAAA,CAAA;AAAA,oBACpC,OAAOH,OAAAA,CAAO,gBAAA;AAAA,oBACd,MAAA,EAAQ,CAAA,qBAAA,EAAwB,QAAA,CAAS,EAAE,CAAA,CAAA;AAAA,oBAC5C,QAAA,EAAA;AAAA;AAAA;AAED,eAAA,EAEJ;AAAA,aAAA,EAAA,EAlBS,SAAS,EAmBpB,CAAA;AAAA,UAEJ,CAAC,CAAA,EACH;AAAA,SAAA,EACF,CAAA;AAAA,QAEC,4BACCG,cAAAA;AAAA,UAAC,iBAAA;AAAA,UAAA;AAAA,YACC,MAAA;AAAA,YACA,QAAA,EAAU,MAAM,YAAA,CAAa,KAAK,CAAA;AAAA,YAClC,MAAA,EAAQ,OAAO,MAAA,KAAW;AACxB,cAAA,MAAM,WAAA,GAAc,QAAQ,MAAM,CAAA;AAClC,cAAA,YAAA,CAAa,KAAK,CAAA;AAAA,YACpB;AAAA;AAAA,4BAGFA,cAAAA;AAAA,UAAC,SAAA;AAAA,UAAA;AAAA,YACC,kBAAA,EAAoB,CAAA,UAAA,EAAaC,sBAAAA,CAAc,MAAM,CAAC,CAAA,QAAA,CAAA;AAAA,YACtD,iBAAA,EAAkB,QAAA;AAAA,YAClB,OAAA,EAAS,MAAM,YAAA,CAAa,IAAI,CAAA;AAAA,YAChC,OAAOJ,OAAAA,CAAO,eAAA;AAAA,YACd,MAAA,EAAO,0BAAA;AAAA,YAEP,QAAA,kBAAAE,eAAAA,CAAC,IAAA,EAAA,EAAK,KAAA,EAAOF,QAAO,aAAA,EAAe,QAAA,EAAA;AAAA,cAAA,YAAA;AAAA,cACtBI,uBAAc,MAAM,CAAA;AAAA,cAAE;AAAA,aAAA,EACnC;AAAA;AAAA;AACF;AAAA;AAAA,GAEJ;AAEJ;AAEA,IAAMJ,OAAAA,GAAS,WAAW,MAAA,CAAO;AAAA,EAC/B,UAAA,EAAY;AAAA,IACV,SAAA,EAAW,YAAA;AAAA,IACX,eAAA,EAAiB;AAAA,GACnB;AAAA,EACA,QAAA,EAAU;AAAA,IACR,KAAA,EAAO,eAAe,OAAA,CAAQ,QAAA;AAAA,IAC9B,QAAA,EAAU,EAAA;AAAA,IACV,UAAA,EAAY;AAAA,GACd;AAAA,EACA,eAAA,EAAiB;AAAA,IACf,UAAA,EAAY,QAAA;AAAA,IACZ,eAAA,EAAiB,eAAe,OAAA,CAAQ,IAAA;AAAA,IACxC,WAAA,EAAa,eAAe,OAAA,CAAQ,YAAA;AAAA,IACpC,YAAA,EAAc,EAAA;AAAA,IACd,WAAA,EAAa,QAAA;AAAA,IACb,WAAA,EAAa,CAAA;AAAA,IACb,OAAA,EAAS;AAAA,GACX;AAAA,EACA,aAAA,EAAe;AAAA,IACb,KAAA,EAAO,eAAe,OAAA,CAAQ,QAAA;AAAA,IAC9B,QAAA,EAAU,EAAA;AAAA,IACV,UAAA,EAAY;AAAA,GACd;AAAA,EACA,WAAA,EAAa;AAAA,IACX,KAAA,EAAO,eAAe,OAAA,CAAQ,SAAA;AAAA,IAC9B,QAAA,EAAU,EAAA;AAAA,IACV,UAAA,EAAY,EAAA;AAAA,IACZ,SAAA,EAAW;AAAA,GACb;AAAA,EACA,QAAA,EAAU;AAAA,IACR,eAAA,EAAiB,cAAA,CAAe,MAAA,CAAO,KAAA,CAAM,EAAA;AAAA,IAC7C,WAAA,EAAa,cAAA,CAAe,MAAA,CAAO,KAAA,CAAM,MAAA;AAAA,IACzC,YAAA,EAAc,CAAA;AAAA,IACd,WAAA,EAAa,CAAA;AAAA,IACb,SAAA,EAAW,EAAA;AAAA,IACX,OAAA,EAAS;AAAA,GACX;AAAA,EACA,SAAA,EAAW;AAAA,IACT,KAAA,EAAO,cAAA,CAAe,MAAA,CAAO,KAAA,CAAM,IAAA;AAAA,IACnC,QAAA,EAAU,EAAA;AAAA,IACV,UAAA,EAAY;AAAA,GACd;AAAA,EACA,IAAA,EAAM;AAAA,IACJ,UAAA,EAAY,YAAA;AAAA,IACZ,aAAA,EAAe,KAAA;AAAA,IACf,GAAA,EAAK;AAAA,GACP;AAAA,EACA,QAAA,EAAU;AAAA,IACR,IAAA,EAAM;AAAA,GACR;AAAA,EACA,YAAA,EAAc;AAAA,IACZ,UAAA,EAAY,QAAA;AAAA,IACZ,aAAA,EAAe,KAAA;AAAA,IACf,QAAA,EAAU,MAAA;AAAA,IACV,GAAA,EAAK;AAAA,GACP;AAAA,EACA,OAAA,EAAS;AAAA,IACP,UAAA,EAAY,QAAA;AAAA,IACZ,eAAA,EAAiB,eAAe,OAAA,CAAQ,IAAA;AAAA,IACxC,WAAA,EAAa,eAAe,OAAA,CAAQ,MAAA;AAAA,IACpC,YAAA,EAAc,EAAA;AAAA,IACd,WAAA,EAAa,CAAA;AAAA,IACb,MAAA,EAAQ,EAAA;AAAA,IACR,cAAA,EAAgB,QAAA;AAAA,IAChB,KAAA,EAAO;AAAA,GACT;AAAA,EACA,QAAA,EAAU;AAAA,IACR,QAAA,EAAU;AAAA,GACZ;AAAA,EACA,IAAA,EAAM;AAAA,IACJ,eAAA,EAAiB,eAAe,OAAA,CAAQ,EAAA;AAAA,IACxC,GAAA,EAAK,EAAA;AAAA,IACL,OAAA,EAAS;AAAA,GACX;AAAA,EACA,KAAA,EAAO;AAAA,IACL,eAAA,EAAiB,eAAe,OAAA,CAAQ,IAAA;AAAA,IACxC,WAAA,EAAa,eAAe,OAAA,CAAQ,MAAA;AAAA,IACpC,YAAA,EAAc,EAAA;AAAA,IACd,WAAA,EAAa,CAAA;AAAA,IACb,OAAA,EAAS;AAAA,GACX;AAAA,EACA,YAAA,EAAc;AAAA,IACZ,IAAA,EAAM;AAAA,GACR;AAAA,EACA,mBAAA,EAAqB;AAAA,IACnB,KAAA,EAAO,eAAe,OAAA,CAAQ,SAAA;AAAA,IAC9B,QAAA,EAAU,EAAA;AAAA,IACV,UAAA,EAAY,EAAA;AAAA,IACZ,SAAA,EAAW;AAAA,GACb;AAAA,EACA,YAAA,EAAc;AAAA,IACZ,KAAA,EAAO,eAAe,OAAA,CAAQ,IAAA;AAAA,IAC9B,QAAA,EAAU,EAAA;AAAA,IACV,UAAA,EAAY;AAAA,GACd;AAAA,EACA,WAAA,EAAa;AAAA,IACX,UAAA,EAAY,YAAA;AAAA,IACZ,iBAAA,EAAmB,eAAe,OAAA,CAAQ,MAAA;AAAA,IAC1C,iBAAA,EAAmB,CAAA;AAAA,IACnB,aAAA,EAAe,KAAA;AAAA,IACf,GAAA,EAAK,EAAA;AAAA,IACL,eAAA,EAAiB;AAAA,GACnB;AAAA,EACA,YAAA,EAAc;AAAA,IACZ,eAAA,EAAiB,cAAA,CAAe,MAAA,CAAO,YAAA,CAAa,EAAA;AAAA,IACpD,YAAA,EAAc,CAAA;AAAA,IACd,KAAA,EAAO,cAAA,CAAe,MAAA,CAAO,YAAA,CAAa,IAAA;AAAA,IAC1C,QAAA,EAAU,EAAA;AAAA,IACV,UAAA,EAAY,KAAA;AAAA,IACZ,QAAA,EAAU,QAAA;AAAA,IACV,iBAAA,EAAmB,CAAA;AAAA,IACnB,eAAA,EAAiB,CAAA;AAAA,IACjB,aAAA,EAAe;AAAA,GACjB;AAAA,EACA,SAAA,EAAW;AAAA,IACT,SAAA,EAAW;AAAA,GACb;AAAA,EACA,cAAA,EAAgB;AAAA,IACd,UAAA,EAAY,UAAA;AAAA,IACZ,GAAA,EAAK;AAAA,GACP;AAAA,EACA,YAAA,EAAc;AAAA,IACZ,KAAA,EAAO,eAAe,OAAA,CAAQ,SAAA;AAAA,IAC9B,QAAA,EAAU,EAAA;AAAA,IACV,UAAA,EAAY,KAAA;AAAA,IACZ,aAAA,EAAe;AAAA,GACjB;AAAA,EACA,aAAA,EAAe;AAAA,IACb,eAAA,EAAiB,eAAe,OAAA,CAAQ,QAAA;AAAA,IACxC,YAAA,EAAc,EAAA;AAAA,IACd,MAAA,EAAQ;AAAA,GACV;AAAA,EACA,aAAA,EAAe;AAAA,IACb,eAAA,EAAiB,eAAe,OAAA,CAAQ,cAAA;AAAA,IACxC,YAAA,EAAc,GAAA;AAAA,IACd,MAAA,EAAQ,EAAA;AAAA,IACR,KAAA,EAAO;AAAA,GACT;AAAA,EACA,UAAA,EAAY;AAAA,IACV,IAAA,EAAM,CAAA;AAAA,IACN,QAAA,EAAU;AAAA,GACZ;AAAA,EACA,UAAA,EAAY;AAAA,IACV,aAAA,EAAe,KAAA;AAAA,IACf,QAAA,EAAU,MAAA;AAAA,IACV,GAAA,EAAK,EAAA;AAAA,IACL,SAAA,EAAW;AAAA,GACb;AAAA,EACA,WAAA,EAAa;AAAA,IACX,KAAA,EAAO,eAAe,OAAA,CAAQ,SAAA;AAAA,IAC9B,QAAA,EAAU,EAAA;AAAA,IACV,aAAA,EAAe;AAAA,GACjB;AAAA,EACA,WAAA,EAAa;AAAA,IACX,KAAA,EAAO,eAAe,OAAA,CAAQ,IAAA;AAAA,IAC9B,QAAA,EAAU,EAAA;AAAA,IACV,UAAA,EAAY,KAAA;AAAA,IACZ,SAAA,EAAW;AAAA,GACb;AAAA,EACA,KAAA,EAAO;AAAA,IACL,KAAA,EAAO,eAAe,OAAA,CAAQ,IAAA;AAAA,IAC9B,QAAA,EAAU,EAAA;AAAA,IACV,UAAA,EAAY;AAAA,GACd;AAAA,EACA,gBAAA,EAAkB;AAAA,IAChB,eAAA,EAAiB,eAAe,OAAA,CAAQ,KAAA;AAAA,IACxC,WAAA,EAAa,eAAe,OAAA,CAAQ,MAAA;AAAA,IACpC,YAAA,EAAc,CAAA;AAAA,IACd,WAAA,EAAa,CAAA;AAAA,IACb,KAAA,EAAO,eAAe,OAAA,CAAQ,SAAA;AAAA,IAC9B,QAAA,EAAU,EAAA;AAAA,IACV,UAAA,EAAY,KAAA;AAAA,IACZ,QAAA,EAAU,QAAA;AAAA,IACV,iBAAA,EAAmB,CAAA;AAAA,IACnB,eAAA,EAAiB,CAAA;AAAA,IACjB,aAAA,EAAe;AAAA;AAEnB,CAAC,CAAA;AC3WD,IAAM,cAAA,GAAiB0B,wBAAAA;AACvB,IAAM,eAAA,GAAkBK,yBAAA;AAoCjB,SAAS,aAAa,KAAA,EAAuC;AAClE,EAAA,MAAM,EAAE,aAAA,GAAgB,KAAA,EAAO,KAAA,EAAM,GAAI,KAAA;AACzC,EAAA,uBACE5B,cAAAA,CAAC,mBAAA,EAAA,EAAoB,KAAA,EAAc,MAAA,EAAO,gCACxC,QAAA,kBAAAA,cAAAA;AAAA,IAAC,mBAAA;AAAA,IAAA;AAAA,MACC,gBAAgB,KAAA,CAAM,cAAA;AAAA,MACtB,kBAAkB,KAAA,CAAM,gBAAA;AAAA,MACxB,aAAa,KAAA,CAAM,WAAA;AAAA,MACnB,aAAA;AAAA,MACA,iBAAiB,KAAA,CAAM,eAAA;AAAA,MACvB,OAAO,KAAA,CAAM,KAAA;AAAA,MACb,QAAQ,KAAA,CAAM;AAAA;AAAA,GAChB,EACF,CAAA;AAEJ;AAEA,SAAS,mBAAA,CAAoB;AAAA,EAC3B,cAAA;AAAA,EACA,gBAAA;AAAA,EACA,WAAA;AAAA,EACA,aAAA;AAAA,EACA,eAAA;AAAA,EACA,KAAA;AAAA,EACA;AACF,CAAA,EACyD;AACvD,EAAA,MAAM,EAAE,QAAA,EAAU,SAAA,EAAU,GAAI,WAAA,EAAY;AAC5C,EAAA,MAAM,CAAC,cAAA,EAAgB,iBAAiB,CAAA,GAAIO,cAAAA;AAAA,IAC1C;AAAA,GACF;AACA,EAAA,MAAM,CAAC,YAAA,EAAc,eAAe,CAAA,GAAIA,cAAAA,EAEtC;AACF,EAAA,MAAM,gBAAA,GAAmB,CAAC,MAAA,KACxB,cAAA,GAAiB,MAAM,CAAA,KACtBc,6BAAAA,EAAqB,GAAIC,wBAAAA,CAAgB,MAAM,CAAA,GAAI,MAAA,CAAA,IACpD,MAAA;AAEF,EAAA,MAAM,MAAA,GAAS;AAAA,IACb,WAAW,cAAA,CAAe,MAAA;AAAA,MACxB,CAAC,MAAA,KAA0B,QAAA,CAAS,MAAM,GAAG,MAAA,KAAW;AAAA,KAC1D,CAAE,MAAA;AAAA,IACF,OAAO,cAAA,CAAe,MAAA;AAAA,MACpB,CAAC,MAAA,KAA0B,QAAA,CAAS,MAAM,GAAG,MAAA,KAAW;AAAA,KAC1D,CAAE,MAAA;AAAA,IACF,OAAO,cAAA,CAAe;AAAA,GACxB;AAEA,EAAA,MAAM,YAAA,GAAe,CAAC,MAAA,KAA0B;AAC9C,IAAA,IAAI,gBAAA,EAAkB;AACpB,MAAA,gBAAA,CAAiB,MAAM,CAAA;AACvB,MAAA;AAAA,IACF;AACA,IAAA,iBAAA,CAAkB,MAAM,CAAA;AAAA,EAC1B,CAAA;AAEA,EAAA,uBACEvB,eAAAA;AAAA,IAAC,UAAA;AAAA,IAAA;AAAA,MACC,kBAAA,EAAmB,mBAAA;AAAA,MACnB,qBAAA,EAAuB,CAACF,OAAAA,CAAO,IAAA,EAAM,KAAK,CAAA;AAAA,MAC1C,yBAAA,EAA0B,SAAA;AAAA,MAC1B,QAAQ,MAAA,IAAU,eAAA;AAAA,MAElB,QAAA,EAAA;AAAA,wBAAAE,eAAAA,CAAC,IAAA,EAAA,EAAK,KAAA,EAAOF,OAAAA,CAAO,MAAA,EAClB,QAAA,EAAA;AAAA,0BAAAG,eAAC,IAAA,EAAA,EAAK,iBAAA,EAAkB,UAAS,KAAA,EAAOH,OAAAA,CAAO,OAAO,QAAA,EAAA,UAAA,EAEtD,CAAA;AAAA,0BACAG,cAAAA,CAAC,IAAA,EAAA,EAAK,KAAA,EAAOH,OAAAA,CAAO,UAAU,QAAA,EAAA,mEAAA,EAE9B;AAAA,SAAA,EACF,CAAA;AAAA,wBAEAE,eAAAA,CAAC,IAAA,EAAA,EAAK,KAAA,EAAOF,QAAO,OAAA,EAClB,QAAA,EAAA;AAAA,0BAAAE,eAAAA,CAAC,IAAA,EAAA,EAAK,KAAA,EAAOF,OAAAA,CAAO,UAAA,EAClB,QAAA,EAAA;AAAA,4BAAAG,cAAAA,CAAC,IAAA,EAAA,EAAK,KAAA,EAAOH,OAAAA,CAAO,aAAa,QAAA,EAAA,OAAA,EAAK,CAAA;AAAA,4BACtCG,cAAAA,CAAC,IAAA,EAAA,EAAK,OAAOH,OAAAA,CAAO,WAAA,EAAc,iBAAO,KAAA,EAAM,CAAA;AAAA,4BAC/CG,cAAAA,CAAC,IAAA,EAAA,EAAK,KAAA,EAAOH,OAAAA,CAAO,YAAY,QAAA,EAAA,iBAAA,EAAe;AAAA,WAAA,EACjD,CAAA;AAAA,0BACAE,gBAAC,IAAA,EAAA,EAAK,KAAA,EAAO,CAACF,OAAAA,CAAO,UAAA,EAAYA,OAAAA,CAAO,eAAe,CAAA,EACrD,QAAA,EAAA;AAAA,4BAAAG,cAAAA,CAAC,IAAA,EAAA,EAAK,KAAA,EAAOH,OAAAA,CAAO,aAAa,QAAA,EAAA,WAAA,EAAS,CAAA;AAAA,4BAC1CG,cAAAA,CAAC,IAAA,EAAA,EAAK,OAAOH,OAAAA,CAAO,WAAA,EAAc,iBAAO,SAAA,EAAU,CAAA;AAAA,4BACnDG,cAAAA,CAAC,IAAA,EAAA,EAAK,KAAA,EAAOH,OAAAA,CAAO,YAAY,QAAA,EAAA,iBAAA,EAAe;AAAA,WAAA,EACjD,CAAA;AAAA,UACC,MAAA,CAAO,KAAA,GAAQ,CAAA,oBACdE,eAAAA,CAAC,IAAA,EAAA,EAAK,KAAA,EAAO,CAACF,OAAAA,CAAO,UAAA,EAAYA,OAAAA,CAAO,WAAW,CAAA,EACjD,QAAA,EAAA;AAAA,4BAAAG,cAAAA,CAAC,IAAA,EAAA,EAAK,KAAA,EAAOH,OAAAA,CAAO,aAAa,QAAA,EAAA,QAAA,EAAM,CAAA;AAAA,4BACvCG,cAAAA,CAAC,IAAA,EAAA,EAAK,OAAOH,OAAAA,CAAO,WAAA,EAAc,iBAAO,KAAA,EAAM,CAAA;AAAA,4BAC/CG,cAAAA,CAAC,IAAA,EAAA,EAAK,KAAA,EAAOH,OAAAA,CAAO,YAAY,QAAA,EAAA,gBAAA,EAAc;AAAA,WAAA,EAChD;AAAA,SAAA,EAEJ,CAAA;AAAA,wBAEAE,eAAAA,CAAC,IAAA,EAAA,EAAK,KAAA,EAAOF,QAAO,OAAA,EAClB,QAAA,EAAA;AAAA,0BAAAG,cAAAA;AAAA,YAAC,SAAA;AAAA,YAAA;AAAA,cACC,kBAAA,EAAmB,mBAAA;AAAA,cACnB,iBAAA,EAAkB,QAAA;AAAA,cAClB,kBAAA,EAAoB,EAAE,QAAA,EAAU,YAAA,KAAiB,MAAA,EAAU;AAAA,cAC3D,OAAA,EAAS,MAAM,eAAA,CAAgB,MAAS,CAAA;AAAA,cACxC,OAAO,CAACH,OAAAA,CAAO,QAAQ,CAAC,YAAA,IAAgBA,QAAO,YAAY,CAAA;AAAA,cAC3D,MAAA,EAAO,oBAAA;AAAA,cAEP,0BAAAG,cAAAA,CAAC,IAAA,EAAA,EAAK,KAAA,EAAOH,OAAAA,CAAO,YAAY,QAAA,EAAA,KAAA,EAAG;AAAA;AAAA,WACrC;AAAA,UACC,eAAA,CAAgB,GAAA,CAAI,CAAC,MAAA,qBACpBG,cAAAA;AAAA,YAAC,SAAA;AAAA,YAAA;AAAA,cACC,kBAAA,EAAoB,sBAAsB,MAAM,CAAA,CAAA;AAAA,cAChD,iBAAA,EAAkB,QAAA;AAAA,cAClB,kBAAA,EAAoB,EAAE,QAAA,EAAU,YAAA,KAAiB,MAAA,EAAO;AAAA,cAExD,SAAS,MACP,eAAA;AAAA,gBAAgB,CAAC,OAAA,KACf,OAAA,KAAY,MAAA,GAAS,MAAA,GAAY;AAAA,eACnC;AAAA,cAEF,KAAA,EAAO;AAAA,gBACLH,OAAAA,CAAO,MAAA;AAAA,gBACP,YAAA,KAAiB,UAAUA,OAAAA,CAAO;AAAA,eACpC;AAAA,cACA,MAAA,EAAQ,kBAAkB,MAAM,CAAA,CAAA;AAAA,cAEhC,0BAAAG,cAAAA,CAAC,IAAA,EAAA,EAAK,KAAA,EAAOH,OAAAA,CAAO,YAAa,QAAA,EAAA,MAAA,EAAO;AAAA,aAAA;AAAA,YAZnC;AAAA,WAcR;AAAA,SAAA,EACH,CAAA;AAAA,QAEC,eAAA,IAAmB,gBAAgB,MAAA,GAAS,CAAA,oBAC3CE,eAAAA,CAAC,IAAA,EAAA,EAAK,KAAA,EAAOF,OAAAA,CAAO,QAAA,EAClB,QAAA,EAAA;AAAA,0BAAAG,cAAAA,CAAC,IAAA,EAAA,EAAK,KAAA,EAAOH,OAAAA,CAAO,cAAc,QAAA,EAAA,kBAAA,EAAgB,CAAA;AAAA,UACjD,eAAA,CAAgB,GAAA,CAAI,CAAC,KAAA,qBACpBE,eAAAA;AAAA,YAAC,IAAA;AAAA,YAAA;AAAA,cAEC,OAAOF,OAAAA,CAAO,WAAA;AAAA,cAEd,QAAA,EAAA;AAAA,gCAAAE,gBAAC,IAAA,EAAA,EACC,QAAA,EAAA;AAAA,kCAAAC,eAAC,IAAA,EAAA,EAAK,KAAA,EAAOH,OAAAA,CAAO,cAAA,EAAiB,gBAAM,MAAA,EAAO,CAAA;AAAA,kCAClDG,cAAAA,CAAC,IAAA,EAAA,EAAK,OAAOH,OAAAA,CAAO,gBAAA,EAAmB,gBAAM,QAAA,EAAS;AAAA,iBAAA,EACxD,CAAA;AAAA,gCACAG,cAAAA,CAAC,kBAAA,EAAA,EAAmB,MAAA,EAAQ,MAAM,MAAA,EAAQ;AAAA;AAAA,aAAA;AAAA,YAPrC,CAAA,EAAG,KAAA,CAAM,MAAM,CAAA,CAAA,EAAI,MAAM,QAAQ,CAAA;AAAA,WASzC;AAAA,SAAA,EACH,CAAA;AAAA,wBAGFA,cAAAA;AAAA,UAAC,WAAA;AAAA,UAAA;AAAA,YACC,YAAA;AAAA,YACA,QAAA,EAAU,YAAA;AAAA,YACV,MAAA,EAAQ,YAAY,uBAAA,GAA0B;AAAA;AAAA,SAChD;AAAA,wBAEAA,cAAAA;AAAA,UAAC,KAAA;AAAA,UAAA;AAAA,YACC,aAAA,EAAe,gBAAgB,MAAA,GAAS,OAAA;AAAA,YACxC,cAAA,EAAgB,MAAM,iBAAA,CAAkB,IAAI,CAAA;AAAA,YAC5C,MAAA,EAAO,sBAAA;AAAA,YACP,WAAA,EAAW,IAAA;AAAA,YACX,SAAS,cAAA,KAAmB,IAAA;AAAA,YAE5B,0BAAAA,cAAAA,CAAC,IAAA,EAAA,EAAK,KAAA,EAAOH,OAAAA,CAAO,eAClB,QAAA,kBAAAG,cAAAA;AAAA,cAAC,IAAA;AAAA,cAAA;AAAA,gBACC,oBACE,cAAA,GACI,CAAA,UAAA,EAAaC,sBAAAA,CAAc,cAAc,CAAC,CAAA,QAAA,CAAA,GAC1C,mBAAA;AAAA,gBAEN,wBAAA,EAAwB,IAAA;AAAA,gBACxB,iBAAA,EAAkB,SAAA;AAAA,gBAClB,OAAOJ,OAAAA,CAAO,UAAA;AAAA,gBACd,MAAA,EAAO,4BAAA;AAAA,gBAEN,4CACCG,cAAAA;AAAA,kBAAC,iBAAA;AAAA,kBAAA;AAAA,oBACC,MAAA,EAAQ,cAAA;AAAA,oBACR,aAAA,EAAe,iBAAiB,cAAc,CAAA;AAAA,oBAC9C,QAAA,EAAU,MAAM,iBAAA,CAAkB,IAAI,CAAA;AAAA,oBACtC,MAAA,EAAQ,OAAO,MAAA,KAAW;AACxB,sBAAA,MAAM,WAAA,GAAc,gBAAgB,MAAM,CAAA;AAC1C,sBAAA,iBAAA,CAAkB,IAAI,CAAA;AAAA,oBACxB;AAAA;AAAA;AACF;AAAA,aAEJ,EACF;AAAA;AAAA;AACF;AAAA;AAAA,GACF;AAEJ;AAEA,IAAMH,OAAAA,GAAS,WAAW,MAAA,CAAO;AAAA,EAC/B,YAAA,EAAc;AAAA,IACZ,eAAA,EAAiB,eAAe,KAAA,CAAM,MAAA;AAAA,IACtC,WAAA,EAAa,eAAe,KAAA,CAAM;AAAA,GACpC;AAAA,EACA,eAAA,EAAiB;AAAA,IACf,eAAA,EAAiB,cAAA,CAAe,MAAA,CAAO,SAAA,CAAU,EAAA;AAAA,IACjD,WAAA,EAAa,cAAA,CAAe,MAAA,CAAO,SAAA,CAAU;AAAA,GAC/C;AAAA,EACA,WAAA,EAAa;AAAA,IACX,eAAA,EAAiB,cAAA,CAAe,MAAA,CAAO,KAAA,CAAM,EAAA;AAAA,IAC7C,WAAA,EAAa,cAAA,CAAe,MAAA,CAAO,KAAA,CAAM;AAAA,GAC3C;AAAA,EACA,MAAA,EAAQ;AAAA,IACN,eAAA,EAAiB,eAAe,OAAA,CAAQ,IAAA;AAAA,IACxC,WAAA,EAAa,eAAe,OAAA,CAAQ,MAAA;AAAA,IACpC,YAAA,EAAc,GAAA;AAAA,IACd,WAAA,EAAa,CAAA;AAAA,IACb,iBAAA,EAAmB,EAAA;AAAA,IACnB,eAAA,EAAiB;AAAA,GACnB;AAAA,EACA,UAAA,EAAY;AAAA,IACV,KAAA,EAAO,eAAe,OAAA,CAAQ,QAAA;AAAA,IAC9B,QAAA,EAAU,EAAA;AAAA,IACV,UAAA,EAAY,KAAA;AAAA,IACZ,aAAA,EAAe;AAAA,GACjB;AAAA,EACA,OAAA,EAAS;AAAA,IACP,aAAA,EAAe,KAAA;AAAA,IACf,QAAA,EAAU,MAAA;AAAA,IACV,GAAA,EAAK;AAAA,GACP;AAAA,EACA,MAAA,EAAQ;AAAA,IACN,GAAA,EAAK;AAAA,GACP;AAAA,EACA,UAAA,EAAY;AAAA,IACV,eAAA,EAAiB,eAAe,OAAA,CAAQ,IAAA;AAAA,IACxC,WAAA,EAAa,eAAe,OAAA,CAAQ,MAAA;AAAA,IACpC,YAAA,EAAc,EAAA;AAAA,IACd,WAAA,EAAa,CAAA;AAAA,IACb,IAAA,EAAM,CAAA;AAAA,IACN,QAAA,EAAU,GAAA;AAAA,IACV,OAAA,EAAS;AAAA,GACX;AAAA,EACA,UAAA,EAAY;AAAA,IACV,KAAA,EAAO,eAAe,OAAA,CAAQ,SAAA;AAAA,IAC9B,QAAA,EAAU,EAAA;AAAA,IACV,SAAA,EAAW;AAAA,GACb;AAAA,EACA,WAAA,EAAa;AAAA,IACX,KAAA,EAAO,eAAe,OAAA,CAAQ,SAAA;AAAA,IAC9B,QAAA,EAAU,EAAA;AAAA,IACV,UAAA,EAAY,KAAA;AAAA,IACZ,aAAA,EAAe;AAAA,GACjB;AAAA,EACA,WAAA,EAAa;AAAA,IACX,KAAA,EAAO,eAAe,OAAA,CAAQ,IAAA;AAAA,IAC9B,QAAA,EAAU,EAAA;AAAA,IACV,UAAA,EAAY,KAAA;AAAA,IACZ,SAAA,EAAW;AAAA,GACb;AAAA,EACA,OAAA,EAAS;AAAA,IACP,aAAA,EAAe,KAAA;AAAA,IACf,QAAA,EAAU,MAAA;AAAA,IACV,GAAA,EAAK;AAAA,GACP;AAAA,EACA,aAAA,EAAe;AAAA,IACb,eAAA,EAAiB,eAAe,OAAA,CAAQ,OAAA;AAAA,IACxC,IAAA,EAAM,CAAA;AAAA,IACN,cAAA,EAAgB;AAAA,GAClB;AAAA,EACA,UAAA,EAAY;AAAA,IACV,eAAA,EAAiB,eAAe,OAAA,CAAQ,EAAA;AAAA,IACxC,mBAAA,EAAqB,EAAA;AAAA,IACrB,oBAAA,EAAsB,EAAA;AAAA,IACtB,OAAA,EAAS;AAAA,GACX;AAAA,EACA,IAAA,EAAM;AAAA,IACJ,eAAA,EAAiB,eAAe,OAAA,CAAQ,EAAA;AAAA,IACxC,GAAA,EAAK,EAAA;AAAA,IACL,OAAA,EAAS;AAAA,GACX;AAAA,EACA,QAAA,EAAU;AAAA,IACR,eAAA,EAAiB,eAAe,OAAA,CAAQ,IAAA;AAAA,IACxC,WAAA,EAAa,eAAe,OAAA,CAAQ,MAAA;AAAA,IACpC,YAAA,EAAc,EAAA;AAAA,IACd,WAAA,EAAa,CAAA;AAAA,IACb,GAAA,EAAK,EAAA;AAAA,IACL,OAAA,EAAS;AAAA,GACX;AAAA,EACA,cAAA,EAAgB;AAAA,IACd,KAAA,EAAO,eAAe,OAAA,CAAQ,IAAA;AAAA,IAC9B,QAAA,EAAU,EAAA;AAAA,IACV,UAAA,EAAY;AAAA,GACd;AAAA,EACA,gBAAA,EAAkB;AAAA,IAChB,KAAA,EAAO,eAAe,OAAA,CAAQ,SAAA;AAAA,IAC9B,QAAA,EAAU;AAAA,GACZ;AAAA,EACA,WAAA,EAAa;AAAA,IACX,UAAA,EAAY,QAAA;AAAA,IACZ,aAAA,EAAe,KAAA;AAAA,IACf,cAAA,EAAgB;AAAA,GAClB;AAAA,EACA,YAAA,EAAc;AAAA,IACZ,KAAA,EAAO,eAAe,OAAA,CAAQ,SAAA;AAAA,IAC9B,QAAA,EAAU,EAAA;AAAA,IACV,UAAA,EAAY,KAAA;AAAA,IACZ,aAAA,EAAe;AAAA,GACjB;AAAA,EACA,QAAA,EAAU;AAAA,IACR,KAAA,EAAO,eAAe,OAAA,CAAQ,SAAA;AAAA,IAC9B,QAAA,EAAU,EAAA;AAAA,IACV,UAAA,EAAY;AAAA,GACd;AAAA,EACA,KAAA,EAAO;AAAA,IACL,KAAA,EAAO,eAAe,OAAA,CAAQ,IAAA;AAAA,IAC9B,QAAA,EAAU,EAAA;AAAA,IACV,UAAA,EAAY;AAAA;AAEhB,CAAC,CAAA;;;ACzWM,SAAS,MAAM,OAAA,EAAwD;AAC5E,EAAA,OAAO,OAAA,CAAQ,MAAA,CAAO,OAAO,CAAA,CAAE,KAAK,GAAG,CAAA;AACzC","file":"index.cjs","sourcesContent":["/**\n * @module native\n * @package @geenius/adapters/react-native\n * @description Lazily resolves React Native primitives so the package subpath\n * can be imported by Node-based export smoke tests without parsing the\n * `react-native` package's Flow source.\n */\n\nimport { AdapterInvariantError } from \"@geenius/adapters\";\nimport { type ComponentType, createElement, type ReactElement } from \"react\";\nimport type {\n  ActivityIndicatorProps,\n  FlatListProps,\n  ModalProps,\n  PressableProps,\n  ScrollViewProps,\n  StyleProp,\n  TextInputProps,\n  TextProps,\n  ViewProps,\n} from \"react-native\";\n\ntype NativeComponent<P extends object> = ComponentType<P>;\n\ninterface NativeRuntime {\n  ActivityIndicator: NativeComponent<ActivityIndicatorProps>;\n  FlatList: <ItemT>(props: FlatListProps<ItemT>) => ReactElement | null;\n  Modal: NativeComponent<ModalProps>;\n  Pressable: NativeComponent<PressableProps>;\n  ScrollView: NativeComponent<ScrollViewProps>;\n  Text: NativeComponent<TextProps>;\n  TextInput: NativeComponent<TextInputProps>;\n  View: NativeComponent<ViewProps>;\n}\n\ntype ModuleRequire = (specifier: string) => unknown;\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n  return typeof value === \"object\" && value !== null;\n}\n\nfunction isComponent(value: unknown): boolean {\n  return (\n    typeof value === \"function\" || (typeof value === \"object\" && value !== null)\n  );\n}\n\nfunction isNativeRuntime(value: unknown): value is NativeRuntime {\n  return (\n    isRecord(value) &&\n    isComponent(value.ActivityIndicator) &&\n    isComponent(value.Modal) &&\n    isComponent(value.Pressable) &&\n    isComponent(value.ScrollView) &&\n    isComponent(value.Text) &&\n    isComponent(value.TextInput) &&\n    isComponent(value.View) &&\n    isComponent(value.FlatList)\n  );\n}\n\nfunction getRequire(): ModuleRequire | undefined {\n  const globalWithRequire = globalThis as { require?: ModuleRequire };\n  if (typeof globalWithRequire.require === \"function\") {\n    return globalWithRequire.require;\n  }\n\n  return undefined;\n}\n\nfunction resolveRuntime(): NativeRuntime {\n  const globalOverride = (\n    globalThis as {\n      __GEENIUS_REACT_NATIVE_RUNTIME__?: unknown;\n    }\n  ).__GEENIUS_REACT_NATIVE_RUNTIME__;\n  if (isNativeRuntime(globalOverride)) {\n    return globalOverride;\n  }\n\n  const runtimeRequire = getRequire();\n  if (runtimeRequire) {\n    try {\n      const candidate = runtimeRequire(\"react-native\");\n      if (isNativeRuntime(candidate)) {\n        return candidate;\n      }\n    } catch {\n      // Fall through to the DOM test runtime when available.\n    }\n  }\n\n  throw new AdapterInvariantError(\n    \"@geenius/adapters/react-native requires the react-native runtime to render native components. Tests and Storybook may provide globalThis.__GEENIUS_REACT_NATIVE_RUNTIME__.\",\n  );\n}\n\nfunction createNativeComponent<P extends object>(\n  name: keyof NativeRuntime,\n): ComponentType<P> {\n  const NativeComponent = (props: P) => {\n    const Component = resolveRuntime()[name] as unknown as ComponentType<P>;\n    return createElement(Component, props);\n  };\n  NativeComponent.displayName = `GeeniusNative${String(name)}`;\n  return NativeComponent;\n}\n\nexport const ActivityIndicator =\n  createNativeComponent<ActivityIndicatorProps>(\"ActivityIndicator\");\nexport function FlatList<ItemT>(\n  props: FlatListProps<ItemT>,\n): ReactElement | null {\n  const Component = resolveRuntime().FlatList as unknown as ComponentType<\n    FlatListProps<ItemT>\n  >;\n  return createElement(Component, props);\n}\nexport const Modal = createNativeComponent<ModalProps>(\"Modal\");\nexport const Pressable = createNativeComponent<PressableProps>(\"Pressable\");\nexport const ScrollView = createNativeComponent<ScrollViewProps>(\"ScrollView\");\nexport const Text = createNativeComponent<TextProps>(\"Text\");\nexport const TextInput = createNativeComponent<TextInputProps>(\"TextInput\");\nexport const View = createNativeComponent<ViewProps>(\"View\");\n\nfunction flattenStyle<T>(style?: StyleProp<T>): T | undefined {\n  if (!style) {\n    return undefined;\n  }\n\n  if (!Array.isArray(style)) {\n    return style as T;\n  }\n\n  let merged: Record<string, unknown> | undefined;\n  for (const entry of style) {\n    const flattened = flattenStyle(entry as StyleProp<T>);\n    if (!flattened) {\n      continue;\n    }\n    if (isRecord(flattened)) {\n      merged = { ...(merged ?? {}), ...flattened };\n      continue;\n    }\n    return flattened;\n  }\n\n  return merged as T | undefined;\n}\n\nexport const StyleSheet = {\n  create<T extends Record<string, unknown>>(styles: T): T {\n    return styles;\n  },\n  flatten<T>(style?: StyleProp<T>): T | undefined {\n    return flattenStyle(style);\n  },\n};\n","/**\n * @module TokenBridge\n * @package @geenius/adapters/react-native\n * @description Bridge exposing semantic color tokens for native surfaces.\n */\n\nimport { blue } from \"@geenius/tokens\";\n\nconst palette = blue.light;\n\n/**\n * OKLCH semantic colors shared by React Native adapter components.\n *\n * @remarks Values are native style color strings grouped by brand, status, and surface roles.\n * @example\n * ```tsx\n * <View style={{ backgroundColor: semanticColors.surface.card }} />\n * ```\n */\nexport const semanticColors = {\n  brand: {\n    bg: palette.primary,\n    bgSoft: palette[\"primary-subtle\"],\n    border: palette[\"border-hover\"],\n    onBrand: palette[\"primary-fg\"],\n    text: palette.primary,\n  },\n  status: {\n    connected: {\n      bg: palette[\"success-subtle\"],\n      border: palette.success,\n      text: palette.success,\n    },\n    disconnected: {\n      bg: palette.bg,\n      border: palette[\"border-strong\"],\n      text: palette[\"text-secondary\"],\n    },\n    error: {\n      bg: palette[\"danger-subtle\"],\n      border: palette.danger,\n      text: palette.danger,\n      textStrong: palette.danger,\n    },\n    initializing: {\n      bg: palette[\"info-subtle\"],\n      border: palette.info,\n      text: palette.info,\n    },\n    warning: {\n      bg: palette[\"warning-subtle\"],\n      border: palette.warning,\n      text: palette.warning,\n    },\n  },\n  surface: {\n    bg: palette.bg,\n    border: palette.border,\n    borderStrong: palette[\"border-strong\"],\n    card: palette.card,\n    muted: palette[\"bg-muted\"],\n    mutedStrong: palette[\"bg-subtle\"],\n    overlay: palette[\"surface-overlay\"],\n    skeleton: palette[\"bg-subtle\"],\n    skeletonStrong: palette[\"border-strong\"],\n    text: palette.text,\n    textMuted: palette[\"text-tertiary\"],\n    textSoft: palette[\"text-secondary\"],\n  },\n} as const;\n\n/**\n * Type of the native semantic color token object.\n *\n * @example\n * ```ts\n * const palette: SemanticColors = semanticColors;\n * ```\n */\nexport type SemanticColors = typeof semanticColors;\n","/**\n * @module ErrorBoundaryBridge\n * @package @geenius/adapters/react-native\n * @description Native error boundary bridge for adapter-driven UI surfaces.\n */\n\nimport { Component, type ErrorInfo, type ReactNode } from \"react\";\nimport type { StyleProp, ViewStyle } from \"react-native\";\nimport { Pressable, StyleSheet, Text, View } from \"../lib/native\";\nimport { semanticColors } from \"./TokenBridge\";\n\n/**\n * Props for the native adapter error boundary bridge.\n *\n * @property children React subtree protected by the error boundary.\n * @property fallback Optional custom fallback node or render callback.\n * @property onError Optional callback invoked with the thrown error and info.\n * @property style Optional native style merged onto the default fallback.\n * @property testID Optional deterministic selector for tests and Storybook.\n */\nexport interface ErrorBoundaryBridgeProps {\n  children: ReactNode;\n  fallback?: ReactNode | ((error: Error, reset: () => void) => ReactNode);\n  onError?: (error: Error, info: ErrorInfo) => void;\n  style?: StyleProp<ViewStyle>;\n  testID?: string;\n}\n\n/** Internal state tracked by {@link ErrorBoundaryBridge}. */\ninterface ErrorBoundaryBridgeState {\n  error: Error | null;\n}\n\n/**\n * Catches render errors inside native adapter surfaces.\n *\n * @param props Error boundary props including children and optional fallback.\n * @returns The child subtree, custom fallback, or default native error panel.\n * @example\n * ```tsx\n * <ErrorBoundaryBridge onError={(error) => logger.error(error.message)}>\n *   <AdaptersPage />\n * </ErrorBoundaryBridge>\n * ```\n */\nexport class ErrorBoundaryBridge extends Component<\n  ErrorBoundaryBridgeProps,\n  ErrorBoundaryBridgeState\n> {\n  state: ErrorBoundaryBridgeState = {\n    error: null,\n  };\n\n  static getDerivedStateFromError(error: Error): ErrorBoundaryBridgeState {\n    return { error };\n  }\n\n  componentDidCatch(error: Error, info: ErrorInfo): void {\n    this.props.onError?.(error, info);\n  }\n\n  private readonly reset = (): void => {\n    this.setState({ error: null });\n  };\n\n  render(): ReactNode {\n    const { error } = this.state;\n\n    if (!error) {\n      return this.props.children;\n    }\n\n    if (typeof this.props.fallback === \"function\") {\n      return this.props.fallback(error, this.reset);\n    }\n\n    if (this.props.fallback) {\n      return this.props.fallback;\n    }\n\n    return (\n      <View\n        accessibilityRole=\"alert\"\n        style={[styles.container, this.props.style]}\n        testID={this.props.testID ?? \"adapter-error-boundary\"}\n      >\n        <Text style={styles.title}>Adapter error</Text>\n        <Text style={styles.message}>{error.message}</Text>\n        <Pressable\n          accessibilityLabel=\"Reset adapter error\"\n          accessibilityRole=\"button\"\n          onPress={this.reset}\n          style={styles.button}\n          testID=\"adapter-error-reset\"\n        >\n          <Text style={styles.buttonText}>Retry</Text>\n        </Pressable>\n      </View>\n    );\n  }\n}\n\nconst styles = StyleSheet.create({\n  button: {\n    alignSelf: \"flex-start\",\n    backgroundColor: semanticColors.status.error.text,\n    borderRadius: 8,\n    marginTop: 12,\n    paddingHorizontal: 14,\n    paddingVertical: 9,\n  },\n  buttonText: {\n    color: semanticColors.brand.onBrand,\n    fontSize: 13,\n    fontWeight: \"800\",\n  },\n  container: {\n    backgroundColor: semanticColors.status.error.bg,\n    borderColor: semanticColors.status.error.border,\n    borderRadius: 10,\n    borderWidth: 1,\n    padding: 14,\n  },\n  message: {\n    color: semanticColors.status.error.textStrong,\n    fontSize: 13,\n    marginTop: 4,\n  },\n  title: {\n    color: semanticColors.status.error.text,\n    fontSize: 15,\n    fontWeight: \"900\",\n  },\n});\n","/**\n * @module LoadingBridge\n * @package @geenius/adapters/react-native\n * @description Native loading indicator bridge for async adapter states.\n */\n\nimport type { JSX } from \"react\";\nimport type { StyleProp, ViewStyle } from \"react-native\";\nimport { ActivityIndicator, StyleSheet, Text, View } from \"../lib/native\";\nimport { semanticColors } from \"./TokenBridge\";\n\n/**\n * Props for the native loading bridge.\n *\n * @property label Accessible label and visible loading text.\n * @property size Native activity indicator size.\n * @property style Optional native style merged onto the bridge container.\n * @property testID Optional deterministic selector for tests and Storybook.\n */\nexport interface LoadingBridgeProps {\n  label?: string;\n  size?: \"small\" | \"large\";\n  style?: StyleProp<ViewStyle>;\n  testID?: string;\n}\n\n/**\n * Renders a native loading indicator for adapter-driven async states.\n *\n * @param props Loading bridge props including label and indicator size.\n * @returns A React Native progressbar-style loading row.\n * @example\n * ```tsx\n * <LoadingBridge label=\"Checking adapters\" size=\"large\" />\n * ```\n */\nexport function LoadingBridge({\n  label = \"Loading adapters\",\n  size = \"small\",\n  style,\n  testID,\n}: LoadingBridgeProps): JSX.Element {\n  return (\n    <View\n      accessibilityLabel={label}\n      accessibilityRole=\"progressbar\"\n      style={[styles.container, style]}\n      testID={testID ?? \"adapter-loading-bridge\"}\n    >\n      <ActivityIndicator color={semanticColors.brand.bg} size={size} />\n      <Text style={styles.label}>{label}</Text>\n    </View>\n  );\n}\n\nconst styles = StyleSheet.create({\n  container: {\n    alignItems: \"center\",\n    flexDirection: \"row\",\n    gap: 10,\n    paddingVertical: 8,\n  },\n  label: {\n    color: semanticColors.surface.textSoft,\n    fontSize: 13,\n    fontWeight: \"600\",\n  },\n});\n","/**\n * @module ToastBridge\n * @package @geenius/adapters/react-native\n * @description Native toast-style notification bridge for adapter telemetry.\n */\n\nimport type { JSX } from \"react\";\nimport type { StyleProp, ViewStyle } from \"react-native\";\nimport { Pressable, StyleSheet, Text, View } from \"../lib/native\";\nimport { semanticColors } from \"./TokenBridge\";\n\n/**\n * Props for the native toast bridge.\n *\n * @property kind Semantic tone used for the toast colors.\n * @property message Required toast body text.\n * @property onDismiss Optional callback that renders a dismiss action.\n * @property style Optional native style merged onto the toast container.\n * @property testID Optional deterministic selector for tests and Storybook.\n * @property title Optional title shown before the message.\n * @property visible Controls whether the toast renders.\n */\nexport interface ToastBridgeProps {\n  kind?: \"error\" | \"info\" | \"success\" | \"warning\";\n  message: string;\n  onDismiss?: () => void;\n  style?: StyleProp<ViewStyle>;\n  testID?: string;\n  title?: string;\n  visible?: boolean;\n}\n\nconst kindStyles: Record<\n  NonNullable<ToastBridgeProps[\"kind\"]>,\n  { backgroundColor: string; borderColor: string; color: string }\n> = {\n  error: {\n    backgroundColor: semanticColors.status.error.bg,\n    borderColor: semanticColors.status.error.border,\n    color: semanticColors.status.error.text,\n  },\n  info: {\n    backgroundColor: semanticColors.status.initializing.bg,\n    borderColor: semanticColors.status.initializing.border,\n    color: semanticColors.status.initializing.text,\n  },\n  success: {\n    backgroundColor: semanticColors.status.connected.bg,\n    borderColor: semanticColors.status.connected.border,\n    color: semanticColors.status.connected.text,\n  },\n  warning: {\n    backgroundColor: semanticColors.status.warning.bg,\n    borderColor: semanticColors.status.warning.border,\n    color: semanticColors.status.warning.text,\n  },\n};\n\n/**\n * Renders a native toast-style adapter notification.\n *\n * @param props Toast bridge props including message, tone, and dismiss callback.\n * @returns A native toast surface, or `null` when `visible` is false.\n * @example\n * ```tsx\n * <ToastBridge kind=\"error\" title=\"Adapter offline\" message=\"Retry later\" />\n * ```\n */\nexport function ToastBridge({\n  kind = \"info\",\n  message,\n  onDismiss,\n  style,\n  testID,\n  title,\n  visible = true,\n}: ToastBridgeProps): JSX.Element | null {\n  if (!visible) {\n    return null;\n  }\n\n  const colors = kindStyles[kind];\n\n  return (\n    <View\n      accessibilityLabel={title ? `${title}: ${message}` : message}\n      accessibilityRole=\"summary\"\n      style={[\n        styles.container,\n        {\n          backgroundColor: colors.backgroundColor,\n          borderColor: colors.borderColor,\n        },\n        style,\n      ]}\n      testID={testID ?? \"adapter-toast-bridge\"}\n    >\n      <View style={styles.body}>\n        {title && (\n          <Text style={[styles.title, { color: colors.color }]}>{title}</Text>\n        )}\n        <Text style={[styles.message, { color: colors.color }]}>{message}</Text>\n      </View>\n      {onDismiss && (\n        <Pressable\n          accessibilityLabel=\"Dismiss adapter toast\"\n          accessibilityRole=\"button\"\n          onPress={onDismiss}\n          style={styles.dismiss}\n          testID=\"adapter-toast-dismiss\"\n        >\n          <Text style={[styles.dismissText, { color: colors.color }]}>\n            Close\n          </Text>\n        </Pressable>\n      )}\n    </View>\n  );\n}\n\nconst styles = StyleSheet.create({\n  body: {\n    flex: 1,\n  },\n  container: {\n    alignItems: \"center\",\n    borderRadius: 10,\n    borderWidth: 1,\n    flexDirection: \"row\",\n    gap: 12,\n    paddingHorizontal: 14,\n    paddingVertical: 12,\n  },\n  dismiss: {\n    paddingHorizontal: 6,\n    paddingVertical: 4,\n  },\n  dismissText: {\n    fontSize: 12,\n    fontWeight: \"800\",\n  },\n  message: {\n    fontSize: 13,\n    lineHeight: 18,\n  },\n  title: {\n    fontSize: 13,\n    fontWeight: \"900\",\n    marginBottom: 2,\n  },\n});\n","/**\n * @module AdapterStatusBadge\n * @package @geenius/adapters/react-native\n * @description Renders a compact native status badge for adapter lifecycle\n * state using View/Text and testID selectors.\n */\n\nimport type { AdapterStatusType } from \"@geenius/adapters\";\nimport type { JSX } from \"react\";\nimport type { StyleProp, TextStyle, ViewStyle } from \"react-native\";\nimport { semanticColors } from \"../bridges/TokenBridge\";\nimport { StyleSheet, Text, View } from \"../lib/native\";\n\nconst statusLabels: Record<AdapterStatusType, string> = {\n  connected: \"Connected\",\n  disconnected: \"Disconnected\",\n  error: \"Error\",\n  initializing: \"Initializing\",\n};\n\ntype StatusColors = {\n  backgroundColor: string;\n  borderColor: string;\n  color: string;\n};\n\nconst disconnectedColors: StatusColors = {\n  backgroundColor: semanticColors.status.disconnected.bg,\n  borderColor: semanticColors.status.disconnected.border,\n  color: semanticColors.status.disconnected.text,\n};\n\nconst statusColors: Record<AdapterStatusType, StatusColors> = {\n  connected: {\n    backgroundColor: semanticColors.status.connected.bg,\n    borderColor: semanticColors.status.connected.border,\n    color: semanticColors.status.connected.text,\n  },\n  disconnected: disconnectedColors,\n  error: {\n    backgroundColor: semanticColors.status.error.bg,\n    borderColor: semanticColors.status.error.border,\n    color: semanticColors.status.error.text,\n  },\n  initializing: {\n    backgroundColor: semanticColors.status.initializing.bg,\n    borderColor: semanticColors.status.initializing.border,\n    color: semanticColors.status.initializing.text,\n  },\n};\n\n/**\n * Props for the native adapter status badge.\n *\n * @property showLabel Whether to render the text label next to the status dot.\n * @property size Visual size for the badge.\n * @property status Adapter lifecycle status to display.\n * @property style Optional native style merged onto the badge container.\n * @property textStyle Optional native text style merged onto the label.\n * @property testID Optional deterministic selector for tests and Storybook.\n */\nexport interface AdapterStatusBadgeProps {\n  showLabel?: boolean;\n  size?: \"sm\" | \"md\";\n  status: AdapterStatusType;\n  style?: StyleProp<ViewStyle>;\n  textStyle?: StyleProp<TextStyle>;\n  testID?: string;\n}\n\n/**\n * Renders a compact native badge for an adapter lifecycle status.\n *\n * @param props Badge props including status, size, and visibility options.\n * @returns A native status badge with semantic colors and accessibility label.\n * @example\n * ```tsx\n * <AdapterStatusBadge status=\"connected\" size=\"md\" />\n * ```\n */\nexport function AdapterStatusBadge({\n  status,\n  showLabel = true,\n  size = \"sm\",\n  style,\n  textStyle,\n  testID,\n}: AdapterStatusBadgeProps): JSX.Element {\n  const colors = statusColors[status] ?? disconnectedColors;\n  const label = statusLabels[status] ?? status;\n\n  return (\n    <View\n      accessibilityLabel={`Adapter status: ${label}`}\n      accessibilityRole=\"text\"\n      style={[\n        styles.badge,\n        size === \"md\" && styles.badgeMd,\n        {\n          backgroundColor: colors.backgroundColor,\n          borderColor: colors.borderColor,\n        },\n        style,\n      ]}\n      testID={testID ?? `adapter-status-${status}`}\n    >\n      <View style={[styles.dot, { backgroundColor: colors.color }]} />\n      {showLabel && (\n        <Text\n          style={[\n            styles.label,\n            size === \"md\" && styles.labelMd,\n            { color: colors.color },\n            textStyle,\n          ]}\n        >\n          {label}\n        </Text>\n      )}\n    </View>\n  );\n}\n\nconst styles = StyleSheet.create({\n  badge: {\n    alignItems: \"center\",\n    alignSelf: \"flex-start\",\n    borderRadius: 999,\n    borderWidth: 1,\n    flexDirection: \"row\",\n    gap: 6,\n    paddingHorizontal: 8,\n    paddingVertical: 3,\n  },\n  badgeMd: {\n    paddingHorizontal: 10,\n    paddingVertical: 5,\n  },\n  dot: {\n    borderRadius: 999,\n    height: 6,\n    width: 6,\n  },\n  label: {\n    fontSize: 10,\n    fontWeight: \"700\",\n    letterSpacing: 0,\n    textTransform: \"uppercase\",\n  },\n  labelMd: {\n    fontSize: 12,\n  },\n});\n","/**\n * @module AdapterCard\n * @package @geenius/adapters/react-native\n * @description Renders a native adapter summary card for one adapter domain.\n */\n\nimport type { AdapterDomain, AdapterStatusInfo } from \"@geenius/adapters\";\nimport {\n  DOMAIN_DESCRIPTIONS,\n  DOMAIN_ICONS,\n  DOMAIN_LABELS,\n} from \"@geenius/adapters\";\nimport type { JSX } from \"react\";\nimport type { StyleProp, ViewStyle } from \"react-native\";\nimport { semanticColors } from \"../bridges/TokenBridge\";\nimport { Pressable, StyleSheet, Text, View } from \"../lib/native\";\nimport { AdapterStatusBadge } from \"./AdapterStatusBadge\";\n\n/**\n * Props for a native adapter summary card.\n *\n * @property domain Adapter domain represented by the card.\n * @property onClick Optional compatibility callback invoked when pressed.\n * @property onPress Native press callback invoked when the card is selected.\n * @property status Provider health metadata displayed on the card.\n * @property style Optional native style merged onto the card container.\n * @property testID Optional deterministic selector for tests and Storybook.\n */\nexport interface AdapterCardProps {\n  domain: AdapterDomain;\n  onClick?: () => void;\n  onPress?: () => void;\n  status: AdapterStatusInfo;\n  style?: StyleProp<ViewStyle>;\n  testID?: string;\n}\n\n/**\n * Renders a pressable native summary for one adapter domain.\n *\n * @param props Adapter card props including domain, status, and press handlers.\n * @returns A React Native card rendered through the package runtime bridge.\n * @example\n * ```tsx\n * <AdapterCard domain=\"db\" status={statuses.db} onPress={() => open(\"db\")} />\n * ```\n */\nexport function AdapterCard({\n  domain,\n  status,\n  onClick,\n  onPress,\n  style,\n  testID,\n}: AdapterCardProps): JSX.Element {\n  const handlePress = onPress ?? onClick;\n  const isInteractive = typeof handlePress === \"function\";\n\n  return (\n    <Pressable\n      accessibilityLabel={`${DOMAIN_LABELS[domain]} adapter - ${status.status}`}\n      accessibilityRole=\"button\"\n      accessibilityState={{ disabled: !isInteractive }}\n      disabled={!isInteractive}\n      onPress={isInteractive ? handlePress : undefined}\n      style={({ pressed }) => [\n        styles.card,\n        isInteractive && pressed && styles.cardPressed,\n        style,\n      ]}\n      testID={testID ?? `adapter-card-${domain}`}\n    >\n      <View style={styles.iconBox}>\n        <Text style={styles.iconText}>{DOMAIN_ICONS[domain]}</Text>\n      </View>\n      <View style={styles.body}>\n        <View style={styles.header}>\n          <Text numberOfLines={1} style={styles.title}>\n            {DOMAIN_LABELS[domain]}\n          </Text>\n          <AdapterStatusBadge status={status.status} />\n        </View>\n        <Text numberOfLines={2} style={styles.description}>\n          {DOMAIN_DESCRIPTIONS[domain]}\n        </Text>\n        {status.provider !== \"none\" && (\n          <View style={styles.metaRow}>\n            <Text style={styles.provider}>{status.provider}</Text>\n            {status.latency !== undefined && (\n              <Text style={styles.latency}>{status.latency}ms</Text>\n            )}\n          </View>\n        )}\n        {status.error && (\n          <Text numberOfLines={2} style={styles.error}>\n            {status.error}\n          </Text>\n        )}\n      </View>\n    </Pressable>\n  );\n}\n\nconst styles = StyleSheet.create({\n  body: {\n    flex: 1,\n    minWidth: 0,\n  },\n  card: {\n    alignItems: \"flex-start\",\n    backgroundColor: semanticColors.surface.card,\n    borderColor: semanticColors.surface.border,\n    borderRadius: 10,\n    borderWidth: 1,\n    flexDirection: \"row\",\n    gap: 14,\n    padding: 16,\n  },\n  cardPressed: {\n    backgroundColor: semanticColors.surface.bg,\n    transform: [{ scale: 0.99 }],\n  },\n  description: {\n    color: semanticColors.surface.textMuted,\n    fontSize: 12,\n    lineHeight: 17,\n    marginTop: 4,\n  },\n  error: {\n    color: semanticColors.status.error.text,\n    fontSize: 11,\n    marginTop: 8,\n  },\n  header: {\n    alignItems: \"center\",\n    flexDirection: \"row\",\n    gap: 8,\n    justifyContent: \"space-between\",\n  },\n  iconBox: {\n    alignItems: \"center\",\n    backgroundColor: semanticColors.surface.muted,\n    borderColor: semanticColors.surface.border,\n    borderRadius: 8,\n    borderWidth: 1,\n    height: 44,\n    justifyContent: \"center\",\n    width: 44,\n  },\n  iconText: {\n    fontSize: 22,\n  },\n  latency: {\n    color: semanticColors.surface.textMuted,\n    fontSize: 11,\n  },\n  metaRow: {\n    alignItems: \"center\",\n    flexDirection: \"row\",\n    gap: 8,\n    marginTop: 10,\n  },\n  provider: {\n    backgroundColor: semanticColors.surface.muted,\n    borderRadius: 6,\n    color: semanticColors.surface.textSoft,\n    fontSize: 11,\n    fontWeight: \"700\",\n    overflow: \"hidden\",\n    paddingHorizontal: 8,\n    paddingVertical: 3,\n  },\n  title: {\n    color: semanticColors.surface.text,\n    flex: 1,\n    fontSize: 15,\n    fontWeight: \"800\",\n  },\n});\n","/**\n * @module AdapterConfigForm\n * @package @geenius/adapters/react-native\n * @description Renders a native provider selection and credential form for an\n * adapter domain.\n */\n\nimport type {\n  AdapterDomain,\n  DomainAdapterConfig,\n  ProviderMeta,\n} from \"@geenius/adapters\";\nimport {\n  DOMAIN_LABELS,\n  getProvidersForDomain,\n  LAUNCH_DB_PROVIDERS,\n} from \"@geenius/adapters\";\nimport type { JSX } from \"react\";\nimport { useEffect, useMemo, useState } from \"react\";\nimport type { StyleProp, ViewStyle } from \"react-native\";\nimport { semanticColors } from \"../bridges/TokenBridge\";\nimport { Pressable, StyleSheet, Text, TextInput, View } from \"../lib/native\";\n\n/**\n * Props for the native adapter configuration form.\n *\n * @property domain Adapter domain being configured.\n * @property initialConfig Optional provider configuration used to hydrate inputs.\n * @property onCancel Optional callback fired when the user dismisses the form.\n * @property onSave Callback receiving the validated provider configuration.\n * @property style Optional native style merged onto the form container.\n * @property testID Optional deterministic selector for tests and Storybook.\n * @property titleId Optional title identifier retained for parity with web forms.\n */\nexport interface AdapterConfigFormProps {\n  domain: AdapterDomain;\n  initialConfig?: DomainAdapterConfig;\n  onCancel?: () => void;\n  onSave: (config: DomainAdapterConfig) => Promise<void> | void;\n  style?: StyleProp<ViewStyle>;\n  testID?: string;\n  titleId?: string;\n}\n\nconst SELECTABLE_DB_PROVIDER_IDS = new Set<string>([\n  \"localStorage\",\n  ...LAUNCH_DB_PROVIDERS,\n]);\n\ninterface ProviderOptionField {\n  key: string;\n  label: string;\n  description: string;\n  placeholder?: string;\n  keyboardType?: \"default\" | \"numeric\";\n}\n\nconst PROVIDER_OPTION_FIELDS: Partial<\n  Record<AdapterDomain, Record<string, ProviderOptionField[]>>\n> = {\n  db: {\n    convex: [\n      {\n        key: \"deployment\",\n        label: \"Deployment\",\n        description: \"Convex deployment or project slug.\",\n        placeholder: \"team:project\",\n      },\n    ],\n    neon: [\n      {\n        key: \"database\",\n        label: \"Database\",\n        description: \"Database name or branch label for downstream wiring.\",\n        placeholder: \"main\",\n      },\n    ],\n    cloudflareKV: [\n      {\n        key: \"namespace\",\n        label: \"KV Namespace\",\n        description: \"Worker binding name used by the downstream KV adapter.\",\n        placeholder: \"ADAPTERS_KV\",\n      },\n      {\n        key: \"defaultTtlSeconds\",\n        label: \"Default TTL Seconds\",\n        description: \"Optional TTL for cache/session style records.\",\n        placeholder: \"300\",\n        keyboardType: \"numeric\",\n      },\n    ],\n    memory: [\n      {\n        key: \"seed\",\n        label: \"Fixture Seed\",\n        description: \"Optional deterministic seed for local test data.\",\n        placeholder: \"demo\",\n      },\n    ],\n  },\n};\n\nfunction getSelectableProviders(domain: AdapterDomain): ProviderMeta[] {\n  const providers = getProvidersForDomain(domain);\n  if (domain !== \"db\") {\n    return providers;\n  }\n\n  return providers.filter((entry) => SELECTABLE_DB_PROVIDER_IDS.has(entry.id));\n}\n\nfunction getOptionFields(\n  domain: AdapterDomain,\n  provider: string,\n): ProviderOptionField[] {\n  return PROVIDER_OPTION_FIELDS[domain]?.[provider] ?? [];\n}\n\nfunction stringifyOptionValue(value: unknown): string {\n  if (value === undefined || value === null) {\n    return \"\";\n  }\n  return String(value);\n}\n\nfunction coerceOptionValue(field: ProviderOptionField, value: string): unknown {\n  const trimmed = value.trim();\n  if (trimmed === \"\") {\n    return \"\";\n  }\n  if (field.keyboardType !== \"numeric\") {\n    return trimmed;\n  }\n\n  const numeric = Number(trimmed);\n  return Number.isFinite(numeric) ? numeric : trimmed;\n}\n\nfunction validateOptionValues(\n  domain: AdapterDomain,\n  provider: string,\n  optionValues: Record<string, string>,\n): string | null {\n  if (domain === \"db\" && provider === \"cloudflareKV\") {\n    if (!optionValues.namespace?.trim()) {\n      return \"KV namespace is required\";\n    }\n\n    const ttlValue = optionValues.defaultTtlSeconds?.trim();\n    if (ttlValue) {\n      const ttlSeconds = Number(ttlValue);\n      if (!Number.isInteger(ttlSeconds) || ttlSeconds <= 0) {\n        return \"Default TTL seconds must be a positive integer\";\n      }\n    }\n  }\n\n  for (const field of getOptionFields(domain, provider)) {\n    if (field.keyboardType !== \"numeric\") {\n      continue;\n    }\n    const raw = optionValues[field.key]?.trim();\n    if (raw && !Number.isFinite(Number(raw))) {\n      return `${field.label} must be a number`;\n    }\n  }\n\n  return null;\n}\n\n/**\n * Renders the native provider picker and credential form for one domain.\n *\n * @param props Configuration form props including domain and save callback.\n * @returns A React Native form surface for provider selection.\n * @example\n * ```tsx\n * <AdapterConfigForm domain=\"auth\" onSave={(config) => save(config)} />\n * ```\n */\nexport function AdapterConfigForm({\n  domain,\n  initialConfig,\n  onSave,\n  onCancel,\n  style,\n  testID,\n}: AdapterConfigFormProps): JSX.Element {\n  const providers = useMemo(() => getSelectableProviders(domain), [domain]);\n  const initialProvider =\n    providers.find(\n      (entry: ProviderMeta) => entry.id === initialConfig?.provider,\n    )?.id ??\n    providers[0]?.id ??\n    \"\";\n  const [provider, setProvider] = useState(initialProvider);\n  const [apiKey, setApiKey] = useState(initialConfig?.apiKey ?? \"\");\n  const [baseUrl, setBaseUrl] = useState(initialConfig?.baseUrl ?? \"\");\n  const [optionValues, setOptionValues] = useState<Record<string, string>>(() =>\n    Object.fromEntries(\n      Object.entries(initialConfig?.options ?? {}).map(([key, value]) => [\n        key,\n        stringifyOptionValue(value),\n      ]),\n    ),\n  );\n  const [isSaving, setIsSaving] = useState(false);\n  const [error, setError] = useState<string | null>(null);\n\n  const selectedMeta = providers.find(\n    (entry: ProviderMeta) => entry.id === provider,\n  );\n  const needsApiKey = selectedMeta?.requiresApiKey ?? false;\n  const needsBaseUrl = selectedMeta?.requiresBaseUrl ?? false;\n  const optionFields = getOptionFields(domain, provider);\n\n  useEffect(() => {\n    const candidate = initialConfig?.provider;\n    const nextProvider =\n      providers.find((entry: ProviderMeta) => entry.id === candidate)?.id ??\n      providers[0]?.id ??\n      \"\";\n    setProvider(nextProvider);\n    setApiKey(initialConfig?.apiKey ?? \"\");\n    setBaseUrl(initialConfig?.baseUrl ?? \"\");\n    setOptionValues(\n      Object.fromEntries(\n        Object.entries(initialConfig?.options ?? {}).map(([key, value]) => [\n          key,\n          stringifyOptionValue(value),\n        ]),\n      ),\n    );\n    setError(null);\n  }, [providers, initialConfig]);\n\n  useEffect(() => {\n    if (!needsApiKey && apiKey) {\n      setApiKey(\"\");\n    }\n    if (!needsBaseUrl && baseUrl) {\n      setBaseUrl(\"\");\n    }\n  }, [apiKey, baseUrl, needsApiKey, needsBaseUrl]);\n\n  const handleProviderChange = (nextProvider: string): void => {\n    if (nextProvider === provider) {\n      return;\n    }\n    setProvider(nextProvider);\n    // Reset provider-specific state so credentials/base URLs/options from the\n    // previously selected provider cannot leak into the new submission.\n    setApiKey(\"\");\n    setBaseUrl(\"\");\n    setOptionValues({});\n    setError(null);\n  };\n\n  const handleSave = async (): Promise<void> => {\n    setError(null);\n\n    if (!provider) {\n      setError(\"Select a provider\");\n      return;\n    }\n\n    if (!providers.some((entry: ProviderMeta) => entry.id === provider)) {\n      setError(\"Select a provider\");\n      return;\n    }\n\n    if (needsApiKey && !apiKey.trim()) {\n      setError(\"API key is required\");\n      return;\n    }\n\n    if (needsBaseUrl && !baseUrl.trim()) {\n      setError(\"Base URL is required\");\n      return;\n    }\n\n    const optionError = validateOptionValues(domain, provider, optionValues);\n    if (optionError) {\n      setError(optionError);\n      return;\n    }\n\n    setIsSaving(true);\n    try {\n      const config: DomainAdapterConfig = { provider };\n      if (needsApiKey && apiKey.trim()) {\n        config.apiKey = apiKey.trim();\n      }\n      if (needsBaseUrl && baseUrl.trim()) {\n        config.baseUrl = baseUrl.trim();\n      }\n      const options = Object.fromEntries(\n        optionFields\n          .map((field) => [\n            field.key,\n            coerceOptionValue(field, optionValues[field.key] ?? \"\"),\n          ])\n          .filter(([, value]) => value !== \"\"),\n      );\n      if (Object.keys(options).length > 0) {\n        config.options = options;\n      }\n      await onSave(config);\n    } catch (saveError) {\n      setError(\n        saveError instanceof Error ? saveError.message : \"Failed to save\",\n      );\n    } finally {\n      setIsSaving(false);\n    }\n  };\n\n  return (\n    <View style={[styles.form, style]} testID={testID ?? \"adapter-config-form\"}>\n      <View>\n        <Text accessibilityRole=\"header\" style={styles.title}>\n          Configure {DOMAIN_LABELS[domain]}\n        </Text>\n        <Text style={styles.subtitle}>\n          Select and configure your preferred provider.\n        </Text>\n      </View>\n\n      {error && (\n        <View accessibilityRole=\"alert\" style={styles.errorBox}>\n          <Text style={styles.errorText}>{error}</Text>\n        </View>\n      )}\n\n      <View style={styles.section}>\n        <Text style={styles.sectionLabel}>Provider</Text>\n        <View style={styles.providerList}>\n          {providers.map((entry: ProviderMeta) => {\n            const selected = provider === entry.id;\n            return (\n              <Pressable\n                accessibilityLabel={`Select ${entry.name}`}\n                accessibilityRole=\"button\"\n                accessibilityState={{ selected }}\n                key={entry.id}\n                onPress={() => handleProviderChange(entry.id)}\n                style={[styles.providerOption, selected && styles.selected]}\n                testID={`provider-option-${entry.id}`}\n              >\n                <Text style={styles.providerName}>{entry.name}</Text>\n                <Text style={styles.providerDescription}>\n                  {entry.description}\n                </Text>\n                <Text style={styles.tier}>{entry.tier}</Text>\n              </Pressable>\n            );\n          })}\n        </View>\n      </View>\n\n      {needsApiKey && (\n        <View style={styles.section}>\n          <Text style={styles.sectionLabel}>API Key</Text>\n          <TextInput\n            accessibilityLabel=\"API Key\"\n            autoCapitalize=\"none\"\n            onChangeText={setApiKey}\n            placeholder={`Enter ${selectedMeta?.name ?? provider} API key`}\n            secureTextEntry\n            style={styles.input}\n            testID=\"adapter-api-key\"\n            value={apiKey}\n          />\n        </View>\n      )}\n\n      {needsBaseUrl && (\n        <View style={styles.section}>\n          <Text style={styles.sectionLabel}>Base URL</Text>\n          <TextInput\n            accessibilityLabel=\"Base URL\"\n            autoCapitalize=\"none\"\n            onChangeText={setBaseUrl}\n            placeholder=\"https://...\"\n            style={styles.input}\n            testID=\"adapter-base-url\"\n            value={baseUrl}\n          />\n        </View>\n      )}\n\n      {optionFields.length > 0 && (\n        <View style={styles.optionGrid}>\n          {optionFields.map((field) => (\n            <View key={field.key} style={styles.section}>\n              <Text style={styles.sectionLabel}>{field.label}</Text>\n              <TextInput\n                accessibilityLabel={field.label}\n                autoCapitalize=\"none\"\n                keyboardType={field.keyboardType}\n                onChangeText={(value: string) =>\n                  setOptionValues((current) => ({\n                    ...current,\n                    [field.key]: value,\n                  }))\n                }\n                placeholder={field.placeholder}\n                style={styles.input}\n                testID={`adapter-option-${field.key}`}\n                value={optionValues[field.key] ?? \"\"}\n              />\n              <Text style={styles.optionDescription}>{field.description}</Text>\n            </View>\n          ))}\n        </View>\n      )}\n\n      <View style={styles.actions}>\n        {onCancel && (\n          <Pressable\n            accessibilityLabel=\"Cancel adapter configuration\"\n            accessibilityRole=\"button\"\n            onPress={onCancel}\n            style={styles.secondaryButton}\n            testID=\"adapter-config-cancel\"\n          >\n            <Text style={styles.secondaryButtonText}>Cancel</Text>\n          </Pressable>\n        )}\n        <Pressable\n          accessibilityLabel=\"Save adapter configuration\"\n          accessibilityRole=\"button\"\n          accessibilityState={{ disabled: isSaving || !provider }}\n          disabled={isSaving || !provider}\n          onPress={handleSave}\n          style={[\n            styles.primaryButton,\n            (isSaving || !provider) && styles.disabledButton,\n          ]}\n          testID=\"adapter-config-save\"\n        >\n          <Text style={styles.primaryButtonText}>\n            {isSaving ? \"Saving...\" : \"Save Configuration\"}\n          </Text>\n        </Pressable>\n      </View>\n    </View>\n  );\n}\n\nconst styles = StyleSheet.create({\n  actions: {\n    flexDirection: \"row\",\n    gap: 10,\n    justifyContent: \"flex-end\",\n  },\n  disabledButton: {\n    opacity: 0.55,\n  },\n  errorBox: {\n    backgroundColor: semanticColors.status.error.bg,\n    borderColor: semanticColors.status.error.border,\n    borderRadius: 8,\n    borderWidth: 1,\n    padding: 12,\n  },\n  errorText: {\n    color: semanticColors.status.error.text,\n    fontSize: 13,\n    fontWeight: \"600\",\n  },\n  form: {\n    backgroundColor: semanticColors.surface.card,\n    borderColor: semanticColors.surface.border,\n    borderRadius: 12,\n    borderWidth: 1,\n    gap: 18,\n    padding: 18,\n  },\n  input: {\n    backgroundColor: semanticColors.surface.card,\n    borderColor: semanticColors.surface.borderStrong,\n    borderRadius: 8,\n    borderWidth: 1,\n    color: semanticColors.surface.text,\n    fontSize: 15,\n    paddingHorizontal: 12,\n    paddingVertical: 10,\n  },\n  optionDescription: {\n    color: semanticColors.surface.textMuted,\n    fontSize: 12,\n    lineHeight: 17,\n  },\n  optionGrid: {\n    gap: 12,\n  },\n  primaryButton: {\n    backgroundColor: semanticColors.brand.bg,\n    borderRadius: 8,\n    paddingHorizontal: 16,\n    paddingVertical: 11,\n  },\n  primaryButtonText: {\n    color: semanticColors.brand.onBrand,\n    fontSize: 14,\n    fontWeight: \"800\",\n  },\n  providerDescription: {\n    color: semanticColors.surface.textMuted,\n    fontSize: 12,\n    lineHeight: 17,\n    marginTop: 4,\n  },\n  providerList: {\n    gap: 8,\n  },\n  providerName: {\n    color: semanticColors.surface.text,\n    fontSize: 14,\n    fontWeight: \"800\",\n  },\n  providerOption: {\n    backgroundColor: semanticColors.surface.bg,\n    borderColor: semanticColors.surface.border,\n    borderRadius: 10,\n    borderWidth: 1,\n    padding: 14,\n  },\n  secondaryButton: {\n    borderRadius: 8,\n    paddingHorizontal: 14,\n    paddingVertical: 11,\n  },\n  secondaryButtonText: {\n    color: semanticColors.surface.textSoft,\n    fontSize: 14,\n    fontWeight: \"700\",\n  },\n  section: {\n    gap: 8,\n  },\n  sectionLabel: {\n    color: semanticColors.surface.textMuted,\n    fontSize: 11,\n    fontWeight: \"800\",\n    letterSpacing: 0,\n    textTransform: \"uppercase\",\n  },\n  selected: {\n    backgroundColor: semanticColors.brand.bgSoft,\n    borderColor: semanticColors.brand.border,\n  },\n  subtitle: {\n    color: semanticColors.surface.textMuted,\n    fontSize: 13,\n    marginTop: 4,\n  },\n  tier: {\n    alignSelf: \"flex-start\",\n    backgroundColor: semanticColors.status.initializing.bg,\n    borderRadius: 6,\n    color: semanticColors.status.initializing.text,\n    fontSize: 10,\n    fontWeight: \"800\",\n    marginTop: 8,\n    overflow: \"hidden\",\n    paddingHorizontal: 8,\n    paddingVertical: 3,\n    textTransform: \"uppercase\",\n  },\n  title: {\n    color: semanticColors.surface.text,\n    fontSize: 19,\n    fontWeight: \"900\",\n  },\n});\n","/**\n * @module defaultAdapters\n * @package @geenius/adapters/react-native\n * @description Provides React Native-safe default adapter implementations.\n * They use an AsyncStorage-compatible key/value store when one is supplied and\n * fall back to an in-process Map for tests, previews, and offline prototypes.\n */\n\nimport type * as AdapterContracts from \"@geenius/adapters\";\nimport {\n  AdminError,\n  AiError,\n  AuthError,\n  createConsoleLoggerAdapter,\n  DbError,\n  PaymentsError,\n  StorageError,\n} from \"@geenius/adapters\";\n\ntype AdapterDomain = AdapterContracts.AdapterDomain;\ntype AdminAdapter = AdapterContracts.AdminAdapter;\ntype AdminListOptions = AdapterContracts.AdminListOptions;\ntype AdminMetrics = AdapterContracts.AdminMetrics;\ntype AdminRole = AdapterContracts.AdminRole;\ntype AdminRoleInput = AdapterContracts.AdminRoleInput;\ntype AdminTeam = AdapterContracts.AdminTeam;\ntype AdminTeamInput = AdapterContracts.AdminTeamInput;\ntype AiAdapter = AdapterContracts.AiAdapter;\ntype AiOptions = AdapterContracts.AiOptions;\ntype AuthAdapter = AdapterContracts.AuthAdapter;\ntype AuthSession = AdapterContracts.AuthSession;\ntype AuthUser = AdapterContracts.AuthUser;\ntype ChatMessage = AdapterContracts.ChatMessage;\ntype ChatResponse = AdapterContracts.ChatResponse;\ntype CheckoutParams = AdapterContracts.CheckoutParams;\ntype DbAdapter = AdapterContracts.DbAdapter;\ntype FileStorageAdapter = AdapterContracts.FileStorageAdapter;\ntype ListOptions = AdapterContracts.ListOptions;\ntype LoggerAdapter = AdapterContracts.LoggerAdapter;\ntype ManagedUser = AdapterContracts.ManagedUser;\ntype OAuthProvider = AdapterContracts.OAuthProvider;\ntype PaymentsAdapter = AdapterContracts.PaymentsAdapter;\ntype Plan = AdapterContracts.Plan;\ntype QueryCondition = AdapterContracts.QueryCondition;\ntype QueryFilter = AdapterContracts.QueryFilter;\ntype StoredFile = AdapterContracts.StoredFile;\ntype Subscription = AdapterContracts.Subscription;\n\nexport interface ReactNativeAsyncStorage {\n  getItem(key: string): Promise<string | null> | string | null;\n  removeItem(key: string): Promise<void> | void;\n  setItem(key: string, value: string): Promise<void> | void;\n}\n\n/**\n * Controls deterministic rate-limit simulation for the React Native AI mock.\n */\nexport interface ReactNativeAiRateLimitOptions {\n  /** Number of successful AI operations allowed before RATE_LIMIT is thrown. */\n  afterRequests?: number;\n  /** Error message used when the configured limit is reached. */\n  message?: string;\n}\n\nexport interface ReactNativeDefaultAdapterOptions {\n  asyncStorage?: ReactNativeAsyncStorage;\n  isProduction?: boolean;\n  maxUploadBytes?: number;\n  namespace?: string;\n  /** Enables deterministic RATE_LIMIT failures on the AI mock for tests and demos. */\n  aiRateLimit?: boolean | ReactNativeAiRateLimitOptions;\n}\n\nexport interface ReactNativeDefaultAdapterSet {\n  adapters: {\n    admin: AdminAdapter;\n    ai: AiAdapter;\n    auth: AuthAdapter;\n    db: DbAdapter;\n    fileStorage: FileStorageAdapter;\n    logger: LoggerAdapter;\n    payments: PaymentsAdapter;\n    storage: FileStorageAdapter;\n  };\n  providerName: string;\n}\n\ntype StoredRecord = Record<string, unknown> & { id: string };\ntype StoredNativeUser = AuthUser & {\n  email: string;\n  isBanned?: boolean;\n  lastLoginAt?: string;\n  passwordHash: string;\n  plan?: string;\n  roleIds?: string[];\n  teamIds?: string[];\n};\ntype StoredNativeAdminRole = AdminRole;\ntype StoredNativeAdminTeam = AdminTeam;\ntype StoredNativeFile = StoredFile & {\n  blobKey: string;\n};\ntype StoredHistoryEntry = {\n  messages: ChatMessage[];\n  response: string;\n  timestamp: string;\n};\n\nconst BASE64_ALPHABET =\n  \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\";\n\nconst DEFAULT_PLANS: Plan[] = [\n  {\n    id: \"free\",\n    name: \"Free\",\n    price: 0,\n    currency: \"USD\",\n    interval: \"month\",\n    features: [\"basic features\", \"1 project\", \"community support\"],\n  },\n  {\n    id: \"pro\",\n    name: \"Pro\",\n    price: 29,\n    currency: \"USD\",\n    interval: \"month\",\n    features: [\"ai features\", \"unlimited projects\", \"priority support\"],\n  },\n  {\n    id: \"team\",\n    name: \"Team\",\n    price: 79,\n    currency: \"USD\",\n    interval: \"month\",\n    features: [\"team management\", \"admin dashboard\", \"custom integrations\"],\n  },\n];\n\nconst CANNED_RESPONSES = [\n  \"This React Native mock adapter is ready for local prototyping.\",\n  \"The adapter contract is active. Replace this mock with a production provider when you configure your app.\",\n  \"React Native can use the same adapter contract without importing browser APIs.\",\n  \"This response is deterministic and local-first for mobile previews.\",\n];\n\nconst DEFAULT_MAX_UPLOAD_BYTES = 512 * 1024;\n\nfunction isProductionRuntime(isProduction?: boolean): boolean {\n  if (typeof isProduction === \"boolean\") {\n    return isProduction;\n  }\n  const runtime = globalThis as {\n    process?: { env?: { NODE_ENV?: string } };\n  };\n  return runtime.process?.env?.NODE_ENV === \"production\";\n}\n\nfunction createMemoryStorage(): ReactNativeAsyncStorage {\n  const entries = new Map<string, string>();\n\n  return {\n    getItem(key) {\n      return entries.get(key) ?? null;\n    },\n    removeItem(key) {\n      entries.delete(key);\n    },\n    setItem(key, value) {\n      entries.set(key, value);\n    },\n  };\n}\n\nfunction storageKey(namespace: string, key: string): string {\n  return `${namespace}:${key}`;\n}\n\nfunction createId(prefix: string): string {\n  return `${prefix}_${Date.now().toString(36)}_${Math.random()\n    .toString(36)\n    .slice(2, 10)}`;\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n  return typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\n\nfunction isStringArray(value: unknown): value is string[] {\n  return (\n    Array.isArray(value) && value.every((item) => typeof item === \"string\")\n  );\n}\n\nfunction isStoredRecord(value: unknown): value is StoredRecord {\n  return isRecord(value) && typeof value.id === \"string\";\n}\n\nfunction isChatMessage(value: unknown): value is ChatMessage {\n  return (\n    isRecord(value) &&\n    [\"system\", \"user\", \"assistant\"].includes(String(value.role)) &&\n    typeof value.content === \"string\"\n  );\n}\n\nfunction isStoredHistoryEntry(value: unknown): value is StoredHistoryEntry {\n  return (\n    isRecord(value) &&\n    typeof value.timestamp === \"string\" &&\n    typeof value.response === \"string\" &&\n    Array.isArray(value.messages) &&\n    value.messages.every(isChatMessage)\n  );\n}\n\nfunction isStoredNativeUser(value: unknown): value is StoredNativeUser {\n  return (\n    isRecord(value) &&\n    typeof value.id === \"string\" &&\n    typeof value.email === \"string\" &&\n    typeof value.passwordHash === \"string\" &&\n    (value.name === undefined || typeof value.name === \"string\") &&\n    (value.image === undefined || typeof value.image === \"string\") &&\n    (value.role === undefined || typeof value.role === \"string\") &&\n    (value.createdAt === undefined || typeof value.createdAt === \"string\") &&\n    (value.isBanned === undefined || typeof value.isBanned === \"boolean\") &&\n    (value.plan === undefined || typeof value.plan === \"string\") &&\n    (value.lastLoginAt === undefined ||\n      typeof value.lastLoginAt === \"string\") &&\n    (value.roleIds === undefined || isStringArray(value.roleIds)) &&\n    (value.teamIds === undefined || isStringArray(value.teamIds))\n  );\n}\n\nfunction isStoredNativeAdminRole(\n  value: unknown,\n): value is StoredNativeAdminRole {\n  return (\n    isRecord(value) &&\n    typeof value.id === \"string\" &&\n    typeof value.name === \"string\" &&\n    (value.description === undefined ||\n      typeof value.description === \"string\") &&\n    isStringArray(value.permissions) &&\n    (value.isSystem === undefined || typeof value.isSystem === \"boolean\") &&\n    (value.createdAt === undefined || typeof value.createdAt === \"string\") &&\n    (value.updatedAt === undefined || typeof value.updatedAt === \"string\")\n  );\n}\n\nfunction isStoredNativeAdminTeam(\n  value: unknown,\n): value is StoredNativeAdminTeam {\n  return (\n    isRecord(value) &&\n    typeof value.id === \"string\" &&\n    typeof value.name === \"string\" &&\n    (value.description === undefined ||\n      typeof value.description === \"string\") &&\n    isStringArray(value.memberUserIds) &&\n    isStringArray(value.roleIds) &&\n    (value.createdAt === undefined || typeof value.createdAt === \"string\") &&\n    (value.updatedAt === undefined || typeof value.updatedAt === \"string\")\n  );\n}\n\nfunction isAuthSession(value: unknown): value is AuthSession {\n  return (\n    isRecord(value) &&\n    typeof value.userId === \"string\" &&\n    (value.sessionToken === undefined ||\n      typeof value.sessionToken === \"string\") &&\n    (value.expiresAt === undefined || typeof value.expiresAt === \"string\")\n  );\n}\n\nfunction isStoredNativeFile(value: unknown): value is StoredNativeFile {\n  return (\n    isRecord(value) &&\n    typeof value.id === \"string\" &&\n    typeof value.name === \"string\" &&\n    typeof value.path === \"string\" &&\n    typeof value.size === \"number\" &&\n    typeof value.mimeType === \"string\" &&\n    typeof value.url === \"string\" &&\n    typeof value.createdAt === \"string\" &&\n    typeof value.blobKey === \"string\"\n  );\n}\n\nfunction isPlan(value: unknown): value is Plan {\n  return (\n    isRecord(value) &&\n    typeof value.id === \"string\" &&\n    typeof value.name === \"string\" &&\n    typeof value.price === \"number\" &&\n    typeof value.currency === \"string\" &&\n    [\"month\", \"year\", \"one-time\"].includes(String(value.interval)) &&\n    Array.isArray(value.features) &&\n    value.features.every((feature) => typeof feature === \"string\")\n  );\n}\n\nfunction isSubscription(value: unknown): value is Subscription {\n  return (\n    isRecord(value) &&\n    typeof value.id === \"string\" &&\n    typeof value.userId === \"string\" &&\n    typeof value.planId === \"string\" &&\n    [\"active\", \"cancelled\", \"past_due\", \"trialing\"].includes(\n      String(value.status),\n    ) &&\n    typeof value.currentPeriodEnd === \"string\" &&\n    typeof value.cancelAtPeriodEnd === \"boolean\"\n  );\n}\n\nasync function readJsonArray<T>(\n  storage: ReactNativeAsyncStorage,\n  key: string,\n  guard: (value: unknown) => value is T,\n  error: (cause: unknown) => Error,\n): Promise<T[]> {\n  try {\n    const raw = await storage.getItem(key);\n    const parsed: unknown = JSON.parse(raw ?? \"[]\");\n    if (!Array.isArray(parsed) || !parsed.every(guard)) {\n      throw error(undefined);\n    }\n    return parsed;\n  } catch (cause) {\n    throw error(cause);\n  }\n}\n\nasync function writeJson(\n  storage: ReactNativeAsyncStorage,\n  key: string,\n  value: unknown,\n  error: (cause: unknown) => Error,\n): Promise<void> {\n  try {\n    await storage.setItem(key, JSON.stringify(value));\n  } catch (cause) {\n    throw error(cause);\n  }\n}\n\nfunction compareValues(\n  left: unknown,\n  right: unknown,\n  operator: Extract<QueryCondition[\"operator\"], \"gt\" | \"gte\" | \"lt\" | \"lte\">,\n): boolean {\n  if (typeof left === \"number\" && typeof right === \"number\") {\n    if (operator === \"gt\") return left > right;\n    if (operator === \"gte\") return left >= right;\n    if (operator === \"lt\") return left < right;\n    return left <= right;\n  }\n\n  if (typeof left === \"string\" && typeof right === \"string\") {\n    if (operator === \"gt\") return left > right;\n    if (operator === \"gte\") return left >= right;\n    if (operator === \"lt\") return left < right;\n    return left <= right;\n  }\n\n  return false;\n}\n\nfunction matchesCondition(\n  item: StoredRecord,\n  condition: QueryCondition,\n): boolean {\n  const value = item[condition.field];\n\n  switch (condition.operator) {\n    case \"eq\":\n      return value === condition.value;\n    case \"neq\":\n      return value !== condition.value;\n    case \"gt\":\n    case \"gte\":\n    case \"lt\":\n    case \"lte\":\n      return compareValues(value, condition.value, condition.operator);\n    case \"in\":\n      return Array.isArray(condition.value) && condition.value.includes(value);\n    case \"contains\":\n      return (\n        typeof value === \"string\" &&\n        typeof condition.value === \"string\" &&\n        value.includes(condition.value)\n      );\n    default:\n      return false;\n  }\n}\n\nfunction matchesFilter(item: StoredRecord, filter: QueryFilter): boolean {\n  return filter.every((condition: QueryCondition) =>\n    matchesCondition(item, condition),\n  );\n}\n\nfunction castRecord<T>(record: StoredRecord): T {\n  return record as unknown as T;\n}\n\nfunction castRecords<T>(records: StoredRecord[]): T[] {\n  return records as unknown as T[];\n}\n\nfunction simpleHash(value: string): string {\n  let hash = 0;\n  for (let index = 0; index < value.length; index += 1) {\n    hash = (hash << 5) - hash + value.charCodeAt(index);\n    hash |= 0;\n  }\n  return Math.abs(hash).toString(36);\n}\n\nfunction publicUser(user: StoredNativeUser): AuthUser {\n  return {\n    id: user.id,\n    email: user.email,\n    name: user.name,\n    image: user.image,\n    role: user.role,\n    createdAt: user.createdAt,\n  };\n}\n\nfunction managedUser(user: StoredNativeUser): ManagedUser {\n  return {\n    ...publicUser(user),\n    isActive: true,\n    isBanned: user.isBanned ?? false,\n    roleIds: uniqueStrings(user.roleIds ?? []),\n    teamIds: uniqueStrings(user.teamIds ?? []),\n    plan: user.plan ?? \"free\",\n    lastLoginAt: user.lastLoginAt,\n  };\n}\n\nfunction uniqueStrings(items: readonly string[]): string[] {\n  return [...new Set(items)];\n}\n\nfunction applyAdminListOptions<T>(\n  items: T[],\n  options: AdminListOptions | undefined,\n  getSearchText: (item: T) => Array<string | undefined>,\n): T[] {\n  let filtered = items;\n\n  if (options?.search) {\n    const query = options.search.toLowerCase();\n    filtered = filtered.filter((item) =>\n      getSearchText(item).some((value) => value?.toLowerCase().includes(query)),\n    );\n  }\n\n  const offset = options?.offset ?? 0;\n  const limit = options?.limit ?? 50;\n  return filtered.slice(offset, offset + limit);\n}\n\nfunction makeNativeAdminRole(\n  input: AdminRoleInput,\n  existing?: AdminRole,\n): AdminRole {\n  const now = new Date().toISOString();\n  return {\n    id: input.id ?? existing?.id ?? createId(\"role\"),\n    name: input.name,\n    description: input.description,\n    permissions: uniqueStrings(\n      input.permissions ?? existing?.permissions ?? [],\n    ),\n    isSystem: input.isSystem ?? existing?.isSystem,\n    createdAt: existing?.createdAt ?? now,\n    updatedAt: now,\n  };\n}\n\nfunction makeNativeAdminTeam(\n  input: AdminTeamInput,\n  existing?: AdminTeam,\n): AdminTeam {\n  const now = new Date().toISOString();\n  return {\n    id: input.id ?? existing?.id ?? createId(\"team\"),\n    name: input.name,\n    description: input.description,\n    memberUserIds: uniqueStrings(\n      input.memberUserIds ?? existing?.memberUserIds ?? [],\n    ),\n    roleIds: uniqueStrings(input.roleIds ?? existing?.roleIds ?? []),\n    createdAt: existing?.createdAt ?? now,\n    updatedAt: now,\n  };\n}\n\nfunction upsertById<T extends { id: string }>(items: T[], item: T): T[] {\n  const index = items.findIndex((candidate) => candidate.id === item.id);\n  if (index < 0) {\n    return [...items, item];\n  }\n\n  const next = [...items];\n  next[index] = item;\n  return next;\n}\n\nfunction getCannedResponse(messages: ChatMessage[]): string {\n  const lastMessage = messages.at(-1)?.content ?? \"\";\n  let hash = 0;\n  for (let index = 0; index < lastMessage.length; index += 1) {\n    hash = (hash << 5) - hash + lastMessage.charCodeAt(index);\n    hash |= 0;\n  }\n  return (\n    CANNED_RESPONSES[Math.abs(hash) % CANNED_RESPONSES.length] ??\n    CANNED_RESPONSES[0] ??\n    \"\"\n  );\n}\n\nfunction bytesToBase64(bytes: Uint8Array): string {\n  let output = \"\";\n  for (let index = 0; index < bytes.length; index += 3) {\n    const first = bytes[index] ?? 0;\n    const second = bytes[index + 1] ?? 0;\n    const third = bytes[index + 2] ?? 0;\n    const triplet = (first << 16) | (second << 8) | third;\n    output += BASE64_ALPHABET[(triplet >> 18) & 63] ?? \"\";\n    output += BASE64_ALPHABET[(triplet >> 12) & 63] ?? \"\";\n    output +=\n      index + 1 < bytes.length\n        ? (BASE64_ALPHABET[(triplet >> 6) & 63] ?? \"\")\n        : \"=\";\n    output +=\n      index + 2 < bytes.length ? (BASE64_ALPHABET[triplet & 63] ?? \"\") : \"=\";\n  }\n  return output;\n}\n\nfunction base64ToBytes(base64: string): Uint8Array {\n  const clean = base64.replace(/=+$/, \"\");\n  const output: number[] = [];\n\n  for (let index = 0; index < clean.length; index += 4) {\n    const first = BASE64_ALPHABET.indexOf(clean[index] ?? \"A\");\n    const second = BASE64_ALPHABET.indexOf(clean[index + 1] ?? \"A\");\n    const third = BASE64_ALPHABET.indexOf(clean[index + 2] ?? \"A\");\n    const fourth = BASE64_ALPHABET.indexOf(clean[index + 3] ?? \"A\");\n    const triplet = (first << 18) | (second << 12) | (third << 6) | fourth;\n    output.push((triplet >> 16) & 255);\n    if (index + 2 < clean.length) output.push((triplet >> 8) & 255);\n    if (index + 3 < clean.length) output.push(triplet & 255);\n  }\n\n  return new Uint8Array(output);\n}\n\nasync function blobToDataUrl(blob: Blob): Promise<string> {\n  if (typeof blob.arrayBuffer !== \"function\") {\n    throw new StorageError(\n      \"React Native file storage upload requires Blob.arrayBuffer(); provide a compatible Blob polyfill or a native storage provider adapter.\",\n      \"UPLOAD_FAILED\",\n    );\n  }\n  let arrayBuffer: ArrayBuffer;\n  try {\n    arrayBuffer = await blob.arrayBuffer();\n  } catch (cause) {\n    throw new StorageError(\n      \"Failed to read React Native upload blob\",\n      \"UPLOAD_FAILED\",\n      cause,\n    );\n  }\n  const bytes = new Uint8Array(arrayBuffer);\n  const mimeType = blob.type || \"application/octet-stream\";\n  return `data:${mimeType};base64,${bytesToBase64(bytes)}`;\n}\n\nfunction dataUrlToBlob(dataUrl: string): Blob {\n  if (typeof Blob !== \"function\") {\n    throw new StorageError(\n      \"React Native file storage download requires a Blob constructor; provide a compatible Blob polyfill or a native storage provider adapter.\",\n      \"DOWNLOAD_FAILED\",\n    );\n  }\n  const [meta = \"\", payload = \"\"] = dataUrl.split(\",\");\n  const mimeType =\n    meta.match(/data:(.*);base64/)?.[1] ?? \"application/octet-stream\";\n  const bytes = base64ToBytes(payload);\n  const arrayBuffer = bytes.buffer.slice(\n    bytes.byteOffset,\n    bytes.byteOffset + bytes.byteLength,\n  ) as ArrayBuffer;\n  return new Blob([arrayBuffer], { type: mimeType });\n}\n\nfunction createNativeDbAdapter(\n  storage: ReactNativeAsyncStorage,\n  namespace: string,\n): DbAdapter {\n  const collectionKey = (collection: string) =>\n    storageKey(namespace, `db:${collection}`);\n  const readCollection = (collection: string) =>\n    readJsonArray(\n      storage,\n      collectionKey(collection),\n      isStoredRecord,\n      (cause) =>\n        new DbError(\n          \"Failed to read React Native DB data\",\n          \"QUERY_ERROR\",\n          cause,\n        ),\n    );\n  const writeCollection = (collection: string, records: StoredRecord[]) =>\n    writeJson(\n      storage,\n      collectionKey(collection),\n      records,\n      (cause) =>\n        new DbError(\n          \"Failed to write React Native DB data\",\n          \"QUERY_ERROR\",\n          cause,\n        ),\n    );\n\n  return {\n    async create<T extends Record<string, unknown>>(\n      collection: string,\n      data: Omit<T, \"id\">,\n    ) {\n      const records = await readCollection(collection);\n      const record: StoredRecord = { ...data, id: createId(\"record\") };\n      records.push(record);\n      await writeCollection(collection, records);\n      return castRecord<T & { id: string }>(record);\n    },\n    async get<T>(collection: string, id: string) {\n      const record = (await readCollection(collection)).find(\n        (candidate) => candidate.id === id,\n      );\n      return record ? castRecord<T>(record) : null;\n    },\n    async update<T extends Record<string, unknown>>(\n      collection: string,\n      id: string,\n      data: Partial<T>,\n    ) {\n      const records = await readCollection(collection);\n      const index = records.findIndex((candidate) => candidate.id === id);\n      if (index < 0) return null;\n      const record = records[index];\n      if (!record) return null;\n      records[index] = { ...record, ...data };\n      await writeCollection(collection, records);\n      return castRecord<T>(records[index] ?? record);\n    },\n    async delete(collection: string, id: string) {\n      const records = await readCollection(collection);\n      const nextRecords = records.filter((candidate) => candidate.id !== id);\n      if (nextRecords.length === records.length) return false;\n      await writeCollection(collection, nextRecords);\n      return true;\n    },\n    async list<T>(collection: string, options?: ListOptions) {\n      let records = await readCollection(collection);\n      if (options?.orderBy) {\n        const { orderBy } = options;\n        const direction = options.order === \"desc\" ? -1 : 1;\n        records = [...records].sort((left, right) => {\n          const leftValue = left[orderBy];\n          const rightValue = right[orderBy];\n          if (typeof leftValue === \"number\" && typeof rightValue === \"number\") {\n            return leftValue < rightValue\n              ? -direction\n              : leftValue > rightValue\n                ? direction\n                : 0;\n          }\n          if (typeof leftValue === \"string\" && typeof rightValue === \"string\") {\n            return leftValue < rightValue\n              ? -direction\n              : leftValue > rightValue\n                ? direction\n                : 0;\n          }\n          return 0;\n        });\n      }\n      if (options?.offset) records = records.slice(options.offset);\n      if (options?.limit) records = records.slice(0, options.limit);\n      return castRecords<T>(records);\n    },\n    async query<T>(collection: string, filter: QueryFilter) {\n      return castRecords<T>(\n        (await readCollection(collection)).filter((record) =>\n          matchesFilter(record, filter),\n        ),\n      );\n    },\n    async count(collection: string, filter?: QueryFilter) {\n      const records = await readCollection(collection);\n      return filter && filter.length > 0\n        ? records.filter((record) => matchesFilter(record, filter)).length\n        : records.length;\n    },\n  } satisfies DbAdapter;\n}\n\nfunction createNativeAuthAdapter(\n  storage: ReactNativeAsyncStorage,\n  namespace: string,\n): AuthAdapter {\n  const usersKey = storageKey(namespace, \"auth:users\");\n  const sessionKey = storageKey(namespace, \"auth:session\");\n  const readUsers = () =>\n    readJsonArray(\n      storage,\n      usersKey,\n      isStoredNativeUser,\n      (cause) =>\n        new AuthError(\n          \"Failed to read React Native auth users\",\n          \"SERVICE_ERROR\",\n          cause,\n        ),\n    );\n  const writeUsers = (users: StoredNativeUser[]) =>\n    writeJson(\n      storage,\n      usersKey,\n      users,\n      (cause) =>\n        new AuthError(\n          \"Failed to write React Native auth users\",\n          \"SERVICE_ERROR\",\n          cause,\n        ),\n    );\n\n  async function createSession(user: StoredNativeUser): Promise<AuthSession> {\n    user.lastLoginAt = new Date().toISOString();\n    const session: AuthSession = {\n      userId: user.id,\n      sessionToken: createId(\"session\"),\n      expiresAt: new Date(Date.now() + 7 * 24 * 60 * 60 * 1000).toISOString(),\n      user: publicUser(user),\n    };\n    try {\n      await storage.setItem(sessionKey, JSON.stringify(session));\n    } catch (cause) {\n      throw new AuthError(\n        \"Failed to write React Native auth session\",\n        \"SERVICE_ERROR\",\n        cause,\n      );\n    }\n    return session;\n  }\n\n  return {\n    async signIn(email: string, password: string) {\n      const users = await readUsers();\n      const user = users.find(\n        (candidate) => candidate.email.toLowerCase() === email.toLowerCase(),\n      );\n      if (!user || user.passwordHash !== simpleHash(password)) {\n        throw new AuthError(\"Invalid email or password\", \"INVALID_CREDENTIALS\");\n      }\n      const session = await createSession(user);\n      await writeUsers(users);\n      return session;\n    },\n    async signUp(email: string, password: string, name?: string) {\n      const users = await readUsers();\n      if (\n        users.some(\n          (candidate) => candidate.email.toLowerCase() === email.toLowerCase(),\n        )\n      ) {\n        throw new AuthError(\"User already exists\", \"USER_EXISTS\");\n      }\n      const user: StoredNativeUser = {\n        id: createId(\"user\"),\n        email,\n        name: name ?? email.split(\"@\")[0],\n        createdAt: new Date().toISOString(),\n        passwordHash: simpleHash(password),\n      };\n      users.push(user);\n      const session = await createSession(user);\n      await writeUsers(users);\n      return session;\n    },\n    async signInWithOAuth(\n      provider: OAuthProvider,\n      options?: { redirectUrl?: string },\n    ) {\n      return {\n        url:\n          options?.redirectUrl ??\n          `geenius://oauth/${encodeURIComponent(String(provider))}`,\n      };\n    },\n    async signOut() {\n      try {\n        await storage.removeItem(sessionKey);\n      } catch (cause) {\n        throw new AuthError(\n          \"Failed to clear React Native auth session\",\n          \"SERVICE_ERROR\",\n          cause,\n        );\n      }\n    },\n    async getSession() {\n      let raw: string | null;\n      try {\n        raw = await storage.getItem(sessionKey);\n      } catch (cause) {\n        throw new AuthError(\n          \"Failed to read React Native auth session\",\n          \"SERVICE_ERROR\",\n          cause,\n        );\n      }\n      if (!raw) return null;\n      let parsed: unknown;\n      try {\n        parsed = JSON.parse(raw);\n      } catch (cause) {\n        throw new AuthError(\n          \"Failed to read React Native auth session\",\n          \"SERVICE_ERROR\",\n          cause,\n        );\n      }\n      if (!isAuthSession(parsed)) {\n        throw new AuthError(\n          \"Invalid React Native session payload\",\n          \"SERVICE_ERROR\",\n        );\n      }\n      if (parsed.expiresAt && new Date(parsed.expiresAt) < new Date()) {\n        try {\n          await storage.removeItem(sessionKey);\n        } catch (cause) {\n          throw new AuthError(\n            \"Failed to clear expired React Native auth session\",\n            \"SERVICE_ERROR\",\n            cause,\n          );\n        }\n        return null;\n      }\n      return parsed;\n    },\n    async getUser() {\n      const session = await this.getSession();\n      if (!session) return null;\n      const user = (await readUsers()).find(\n        (candidate) => candidate.id === session.userId,\n      );\n      return user ? publicUser(user) : null;\n    },\n    async updateUser(updates: Partial<Pick<AuthUser, \"name\" | \"image\">>) {\n      const session = await this.getSession();\n      if (!session) return null;\n      const users = await readUsers();\n      const index = users.findIndex(\n        (candidate) => candidate.id === session.userId,\n      );\n      if (index < 0) return null;\n      const user = users[index];\n      if (!user) return null;\n      users[index] = { ...user, ...updates };\n      await writeUsers(users);\n      return publicUser(users[index] ?? user);\n    },\n  } satisfies AuthAdapter;\n}\n\nfunction createNativePaymentsAdapter(\n  storage: ReactNativeAsyncStorage,\n  namespace: string,\n): PaymentsAdapter {\n  const subscriptionsKey = storageKey(namespace, \"payments:subscriptions\");\n  const plansKey = storageKey(namespace, \"payments:plans\");\n  const readSubscriptions = () =>\n    readJsonArray(\n      storage,\n      subscriptionsKey,\n      isSubscription,\n      (cause) =>\n        new PaymentsError(\n          \"Failed to read React Native subscriptions\",\n          \"SERVICE_ERROR\",\n          cause,\n        ),\n    );\n  const writeSubscriptions = (subscriptions: Subscription[]) =>\n    writeJson(\n      storage,\n      subscriptionsKey,\n      subscriptions,\n      (cause) =>\n        new PaymentsError(\n          \"Failed to write React Native subscriptions\",\n          \"SERVICE_ERROR\",\n          cause,\n        ),\n    );\n\n  async function readPlans(): Promise<Plan[]> {\n    let raw: string | null;\n    try {\n      raw = await storage.getItem(plansKey);\n    } catch (cause) {\n      throw new PaymentsError(\n        \"Failed to read React Native plans\",\n        \"SERVICE_ERROR\",\n        cause,\n      );\n    }\n    if (!raw) {\n      await writeJson(\n        storage,\n        plansKey,\n        DEFAULT_PLANS,\n        (cause) =>\n          new PaymentsError(\n            \"Failed to write React Native plans\",\n            \"SERVICE_ERROR\",\n            cause,\n          ),\n      );\n      return DEFAULT_PLANS;\n    }\n    let parsed: unknown;\n    try {\n      parsed = JSON.parse(raw);\n    } catch (cause) {\n      throw new PaymentsError(\n        \"Failed to read React Native plans\",\n        \"SERVICE_ERROR\",\n        cause,\n      );\n    }\n    if (!Array.isArray(parsed) || !parsed.every(isPlan)) {\n      throw new PaymentsError(\n        \"Invalid React Native plan payload\",\n        \"SERVICE_ERROR\",\n      );\n    }\n    return parsed;\n  }\n\n  return {\n    async createCheckout(params: CheckoutParams) {\n      const plan = (await readPlans()).find(\n        (candidate) => candidate.id === params.planId,\n      );\n      if (!plan) {\n        throw new PaymentsError(\n          `Unknown plan: ${params.planId}`,\n          \"INVALID_PLAN\",\n        );\n      }\n      const subscriptions = await readSubscriptions();\n      const subscription: Subscription = {\n        id: createId(\"subscription\"),\n        userId: params.userId,\n        planId: plan.id,\n        status: \"active\",\n        currentPeriodEnd: new Date(\n          Date.now() + 30 * 24 * 60 * 60 * 1000,\n        ).toISOString(),\n        cancelAtPeriodEnd: false,\n      };\n      subscriptions.push(subscription);\n      await writeSubscriptions(subscriptions);\n      return {\n        url: params.successUrl ?? \"geenius://checkout/success\",\n        sessionId: subscription.id,\n      };\n    },\n    async getSubscription(userId: string) {\n      return (\n        (await readSubscriptions()).find(\n          (candidate) =>\n            candidate.userId === userId && candidate.status === \"active\",\n        ) ?? null\n      );\n    },\n    async cancelSubscription(subscriptionId: string) {\n      const subscriptions = await readSubscriptions();\n      const index = subscriptions.findIndex(\n        (candidate) => candidate.id === subscriptionId,\n      );\n      if (index < 0) {\n        throw new PaymentsError(\n          `Subscription not found: ${subscriptionId}`,\n          \"SUBSCRIPTION_NOT_FOUND\",\n        );\n      }\n      const subscription = subscriptions[index];\n      if (!subscription) {\n        throw new PaymentsError(\n          `Subscription not found: ${subscriptionId}`,\n          \"SUBSCRIPTION_NOT_FOUND\",\n        );\n      }\n      subscriptions[index] = {\n        ...subscription,\n        status: \"cancelled\",\n        cancelAtPeriodEnd: true,\n      };\n      await writeSubscriptions(subscriptions);\n    },\n    getPlans() {\n      return readPlans();\n    },\n    async isFeatureEnabled(userId: string, feature: string) {\n      const subscription = await this.getSubscription(userId);\n      if (!subscription) return false;\n      const plan = (await readPlans()).find(\n        (candidate) => candidate.id === subscription.planId,\n      );\n      const normalizedFeature = feature.toLowerCase();\n      return (\n        subscription.status === \"active\" &&\n        !!plan?.features.some((candidate: string) =>\n          candidate.toLowerCase().includes(normalizedFeature),\n        )\n      );\n    },\n  } satisfies PaymentsAdapter;\n}\n\nfunction isNativeChatMessage(value: unknown): value is ChatMessage {\n  if (typeof value !== \"object\" || value === null || Array.isArray(value)) {\n    return false;\n  }\n  const record = value as Record<string, unknown>;\n  return (\n    typeof record.role === \"string\" &&\n    [\"system\", \"user\", \"assistant\"].includes(record.role) &&\n    typeof record.content === \"string\"\n  );\n}\n\nfunction validateNativeChatMessages(messages: unknown): ChatMessage[] {\n  if (!Array.isArray(messages) || messages.length === 0) {\n    throw new AiError(\"AI messages must be a non-empty array\", \"INVALID_INPUT\");\n  }\n  if (!messages.every(isNativeChatMessage)) {\n    throw new AiError(\n      \"AI messages must include valid role and content fields\",\n      \"INVALID_INPUT\",\n    );\n  }\n  return messages.map((message) => ({\n    role: message.role,\n    content: message.content,\n  }));\n}\n\nfunction validateNativeEmbeddingInput(text: unknown): string[] {\n  const inputs = Array.isArray(text) ? text : [text];\n  if (\n    inputs.length === 0 ||\n    !inputs.every((item) => typeof item === \"string\" && item.length > 0)\n  ) {\n    throw new AiError(\n      \"AI embedding input must be a non-empty string or non-empty string array\",\n      \"INVALID_INPUT\",\n    );\n  }\n  return inputs;\n}\n\nconst DEFAULT_NATIVE_AI_RATE_LIMIT_MESSAGE =\n  \"Local AI mock rate limit exceeded for this test scenario.\";\n\nfunction getNativeRateLimitThreshold(\n  rateLimit: boolean | ReactNativeAiRateLimitOptions | undefined,\n): number | null {\n  if (rateLimit === undefined || rateLimit === false) {\n    return null;\n  }\n  if (rateLimit === true) {\n    return 0;\n  }\n  return Math.max(0, rateLimit.afterRequests ?? 0);\n}\n\nfunction assertWithinNativeRateLimit(\n  rateLimit: boolean | ReactNativeAiRateLimitOptions | undefined,\n  requestCount: number,\n): void {\n  const threshold = getNativeRateLimitThreshold(rateLimit);\n  if (threshold === null || requestCount < threshold) {\n    return;\n  }\n  const message =\n    rateLimit && typeof rateLimit === \"object\" ? rateLimit.message : undefined;\n  throw new AiError(\n    message ?? DEFAULT_NATIVE_AI_RATE_LIMIT_MESSAGE,\n    \"RATE_LIMIT\",\n  );\n}\n\nfunction createNativeAiAdapter(\n  storage: ReactNativeAsyncStorage,\n  namespace: string,\n  rateLimit?: boolean | ReactNativeAiRateLimitOptions,\n): AiAdapter {\n  const historyKey = storageKey(namespace, \"ai:history\");\n  let requestCount = 0;\n  const readHistory = () =>\n    readJsonArray(\n      storage,\n      historyKey,\n      isStoredHistoryEntry,\n      (cause) =>\n        new AiError(\n          \"Failed to read React Native AI history\",\n          \"SERVICE_ERROR\",\n          cause,\n        ),\n    );\n\n  async function saveHistory(messages: ChatMessage[], response: string) {\n    const history = await readHistory();\n    history.push({ timestamp: new Date().toISOString(), messages, response });\n    await writeJson(\n      storage,\n      historyKey,\n      history.slice(-50),\n      (cause) =>\n        new AiError(\n          \"Failed to write React Native AI history\",\n          \"SERVICE_ERROR\",\n          cause,\n        ),\n    );\n  }\n\n  return {\n    async chat(\n      messages: ChatMessage[],\n      _options?: AiOptions,\n    ): Promise<ChatResponse> {\n      const validated = validateNativeChatMessages(messages);\n      assertWithinNativeRateLimit(rateLimit, requestCount);\n      const content = getCannedResponse(validated);\n      await saveHistory(validated, content);\n      requestCount += 1;\n      return {\n        content,\n        finishReason: \"stop\",\n        usage: { promptTokens: 10, completionTokens: 12, totalTokens: 22 },\n      };\n    },\n    async complete(prompt: string, options?: AiOptions) {\n      if (typeof prompt !== \"string\" || prompt.length === 0) {\n        throw new AiError(\n          \"AI prompt must be a non-empty string\",\n          \"INVALID_INPUT\",\n        );\n      }\n      const response = await this.chat(\n        [{ role: \"user\", content: prompt }],\n        options,\n      );\n      return response.content;\n    },\n    async embed(text: string | string[]) {\n      const values = validateNativeEmbeddingInput(text);\n      assertWithinNativeRateLimit(rateLimit, requestCount);\n      requestCount += 1;\n      return values.map((value) => {\n        const vector: number[] = [];\n        for (let index = 0; index < 8; index += 1) {\n          let hash = index * 31;\n          for (let char = 0; char < value.length; char += 1) {\n            hash = (hash << 5) - hash + value.charCodeAt(char);\n            hash |= 0;\n          }\n          vector.push(Math.sin(hash) * 0.5 + 0.5);\n        }\n        return vector;\n      });\n    },\n    async stream(messages: ChatMessage[], _options?: AiOptions) {\n      const validated = validateNativeChatMessages(messages);\n      assertWithinNativeRateLimit(rateLimit, requestCount);\n      requestCount += 1;\n      async function* generate() {\n        const content = getCannedResponse(validated);\n        await saveHistory(validated, content);\n        for (const token of content.split(\" \")) {\n          yield `${token} `;\n        }\n      }\n      return generate();\n    },\n  } satisfies AiAdapter;\n}\n\nfunction createNativeFileStorageAdapter(\n  storage: ReactNativeAsyncStorage,\n  namespace: string,\n  maxUploadBytes: number,\n): FileStorageAdapter {\n  const filesKey = storageKey(namespace, \"storage:files\");\n  const readFiles = () =>\n    readJsonArray(\n      storage,\n      filesKey,\n      isStoredNativeFile,\n      (cause) =>\n        new StorageError(\n          \"Failed to read React Native file metadata\",\n          \"SERVICE_ERROR\",\n          cause,\n        ),\n    );\n  const writeFiles = (files: StoredNativeFile[]) =>\n    writeJson(\n      storage,\n      filesKey,\n      files,\n      (cause) =>\n        new StorageError(\n          \"Failed to write React Native file metadata\",\n          \"SERVICE_ERROR\",\n          cause,\n        ),\n    );\n  const removeUploadBlob = async (blobKey: string) => {\n    try {\n      await storage.removeItem(blobKey);\n    } catch {\n      // Keep the original metadata failure as the surfaced upload error.\n    }\n  };\n\n  return {\n    async upload(file: File | Blob, path: string, name?: string) {\n      if (file.size > maxUploadBytes) {\n        throw new StorageError(\n          `React Native upload payload exceeds ${maxUploadBytes} bytes`,\n          \"PAYLOAD_TOO_LARGE\",\n        );\n      }\n\n      const id = createId(\"file\");\n      const blobKey = storageKey(namespace, `storage:blob:${id}`);\n      const dataUrl = await blobToDataUrl(file);\n      try {\n        await storage.setItem(blobKey, dataUrl);\n      } catch (cause) {\n        throw new StorageError(\n          \"Failed to write React Native file blob\",\n          \"UPLOAD_FAILED\",\n          cause,\n        );\n      }\n      const storedFile: StoredNativeFile = {\n        id,\n        name:\n          name ??\n          (typeof File !== \"undefined\" && file instanceof File\n            ? file.name\n            : `file-${id.slice(-8)}`),\n        path,\n        size: file.size,\n        mimeType: file.type || \"application/octet-stream\",\n        url: `geenius-native://${id}`,\n        createdAt: new Date().toISOString(),\n        blobKey,\n      };\n      try {\n        const files = await readFiles();\n        files.push(storedFile);\n        await writeFiles(files);\n      } catch (cause) {\n        await removeUploadBlob(blobKey);\n        throw cause;\n      }\n      const { blobKey: _blobKey, ...publicFile } = storedFile;\n      return publicFile;\n    },\n    async download(fileId: string) {\n      const file = (await readFiles()).find(\n        (candidate) => candidate.id === fileId,\n      );\n      if (!file) {\n        throw new StorageError(`File not found: ${fileId}`, \"NOT_FOUND\");\n      }\n      let dataUrl: string | null;\n      try {\n        dataUrl = await storage.getItem(file.blobKey);\n      } catch (cause) {\n        throw new StorageError(\n          \"Failed to read React Native file blob\",\n          \"DOWNLOAD_FAILED\",\n          cause,\n        );\n      }\n      if (!dataUrl) {\n        throw new StorageError(`Blob missing for file: ${fileId}`, \"NOT_FOUND\");\n      }\n      try {\n        return dataUrlToBlob(dataUrl);\n      } catch (cause) {\n        if (cause instanceof StorageError) {\n          throw cause;\n        }\n        throw new StorageError(\n          \"Failed to decode React Native file data\",\n          \"DOWNLOAD_FAILED\",\n          cause,\n        );\n      }\n    },\n    async delete(fileId: string) {\n      const files = await readFiles();\n      const file = files.find((candidate) => candidate.id === fileId);\n      if (!file) return false;\n      try {\n        await storage.removeItem(file.blobKey);\n      } catch (cause) {\n        throw new StorageError(\n          \"Failed to delete React Native file blob\",\n          \"SERVICE_ERROR\",\n          cause,\n        );\n      }\n      await writeFiles(files.filter((candidate) => candidate.id !== fileId));\n      return true;\n    },\n    async list(prefix?: string) {\n      const files = await readFiles();\n      return files\n        .filter((file) => !prefix || file.path.startsWith(prefix))\n        .map(({ blobKey: _blobKey, ...file }) => file);\n    },\n    async getUrl(fileId: string) {\n      const file = (await readFiles()).find(\n        (candidate) => candidate.id === fileId,\n      );\n      if (!file) {\n        throw new StorageError(`File not found: ${fileId}`, \"NOT_FOUND\");\n      }\n      try {\n        return (await storage.getItem(file.blobKey)) ?? file.url;\n      } catch (cause) {\n        throw new StorageError(\n          \"Failed to read React Native file blob\",\n          \"DOWNLOAD_FAILED\",\n          cause,\n        );\n      }\n    },\n  } satisfies FileStorageAdapter;\n}\n\nfunction createNativeAdminAdapter(\n  storage: ReactNativeAsyncStorage,\n  namespace: string,\n): AdminAdapter {\n  const usersKey = storageKey(namespace, \"auth:users\");\n  const rolesKey = storageKey(namespace, \"admin:roles\");\n  const teamsKey = storageKey(namespace, \"admin:teams\");\n  const readUsers = () =>\n    readJsonArray(\n      storage,\n      usersKey,\n      isStoredNativeUser,\n      (cause) =>\n        new AdminError(\n          \"Failed to read React Native admin users\",\n          \"OPERATION_FAILED\",\n          cause,\n        ),\n    );\n  const writeUsers = (users: StoredNativeUser[]) =>\n    writeJson(\n      storage,\n      usersKey,\n      users,\n      (cause) =>\n        new AdminError(\n          \"Failed to write React Native admin users\",\n          \"OPERATION_FAILED\",\n          cause,\n        ),\n    );\n  const readRoles = () =>\n    readJsonArray(\n      storage,\n      rolesKey,\n      isStoredNativeAdminRole,\n      (cause) =>\n        new AdminError(\n          \"Failed to read React Native admin roles\",\n          \"OPERATION_FAILED\",\n          cause,\n        ),\n    );\n  const writeRoles = (roles: StoredNativeAdminRole[]) =>\n    writeJson(\n      storage,\n      rolesKey,\n      roles,\n      (cause) =>\n        new AdminError(\n          \"Failed to write React Native admin roles\",\n          \"OPERATION_FAILED\",\n          cause,\n        ),\n    );\n  const readTeams = () =>\n    readJsonArray(\n      storage,\n      teamsKey,\n      isStoredNativeAdminTeam,\n      (cause) =>\n        new AdminError(\n          \"Failed to read React Native admin teams\",\n          \"OPERATION_FAILED\",\n          cause,\n        ),\n    );\n  const writeTeams = (teams: StoredNativeAdminTeam[]) =>\n    writeJson(\n      storage,\n      teamsKey,\n      teams,\n      (cause) =>\n        new AdminError(\n          \"Failed to write React Native admin teams\",\n          \"OPERATION_FAILED\",\n          cause,\n        ),\n    );\n\n  return {\n    async listUsers(options?: AdminListOptions) {\n      return applyAdminListOptions(\n        (await readUsers()).map(managedUser),\n        options,\n        (user) => [user.email, user.name, user.plan],\n      );\n    },\n    async getUser(id: string) {\n      const user = (await readUsers()).find((candidate) => candidate.id === id);\n      return user ? managedUser(user) : null;\n    },\n    async banUser(id: string) {\n      const users = await readUsers();\n      const user = users.find((candidate) => candidate.id === id);\n      if (!user || user.isBanned) return false;\n      user.isBanned = true;\n      await writeUsers(users);\n      return true;\n    },\n    async unbanUser(id: string) {\n      const users = await readUsers();\n      const user = users.find((candidate) => candidate.id === id);\n      if (!user?.isBanned) return false;\n      user.isBanned = false;\n      await writeUsers(users);\n      return true;\n    },\n    async deleteUser(id: string) {\n      const users = await readUsers();\n      const nextUsers = users.filter((candidate) => candidate.id !== id);\n      if (nextUsers.length === users.length) return false;\n      await writeUsers(nextUsers);\n      await writeTeams(\n        (await readTeams()).map((team) => ({\n          ...team,\n          memberUserIds: team.memberUserIds.filter((userId) => userId !== id),\n        })),\n      );\n      return true;\n    },\n    async listRoles(options?: AdminListOptions) {\n      return applyAdminListOptions(await readRoles(), options, (role) => [\n        role.name,\n        role.description,\n        role.permissions.join(\" \"),\n      ]);\n    },\n    async getRole(id: string) {\n      return (await readRoles()).find((role) => role.id === id) ?? null;\n    },\n    async upsertRole(input: AdminRoleInput) {\n      const roles = await readRoles();\n      const existing = input.id\n        ? roles.find((role) => role.id === input.id)\n        : undefined;\n      const role = makeNativeAdminRole(input, existing);\n      await writeRoles(upsertById(roles, role));\n      return role;\n    },\n    async deleteRole(id: string) {\n      const roles = await readRoles();\n      const nextRoles = roles.filter((role) => role.id !== id);\n      if (nextRoles.length === roles.length) return false;\n\n      await writeRoles(nextRoles);\n      await writeUsers(\n        (await readUsers()).map((user) => ({\n          ...user,\n          roleIds: (user.roleIds ?? []).filter((roleId) => roleId !== id),\n        })),\n      );\n      await writeTeams(\n        (await readTeams()).map((team) => ({\n          ...team,\n          roleIds: team.roleIds.filter((roleId) => roleId !== id),\n        })),\n      );\n      return true;\n    },\n    async assignUserRole(userId: string, roleId: string) {\n      if (!(await readRoles()).some((role) => role.id === roleId)) {\n        return false;\n      }\n\n      const users = await readUsers();\n      const user = users.find((candidate) => candidate.id === userId);\n      if (!user) return false;\n\n      const roleIds = uniqueStrings(user.roleIds ?? []);\n      if (roleIds.includes(roleId)) return false;\n\n      user.roleIds = [...roleIds, roleId];\n      await writeUsers(users);\n      return true;\n    },\n    async removeUserRole(userId: string, roleId: string) {\n      const users = await readUsers();\n      const user = users.find((candidate) => candidate.id === userId);\n      if (!user?.roleIds?.includes(roleId)) return false;\n\n      user.roleIds = user.roleIds.filter(\n        (assignedRoleId) => assignedRoleId !== roleId,\n      );\n      await writeUsers(users);\n      return true;\n    },\n    async listTeams(options?: AdminListOptions) {\n      return applyAdminListOptions(await readTeams(), options, (team) => [\n        team.name,\n        team.description,\n      ]);\n    },\n    async getTeam(id: string) {\n      return (await readTeams()).find((team) => team.id === id) ?? null;\n    },\n    async upsertTeam(input: AdminTeamInput) {\n      const teams = await readTeams();\n      const existing = input.id\n        ? teams.find((team) => team.id === input.id)\n        : undefined;\n      const team = makeNativeAdminTeam(input, existing);\n      await writeTeams(upsertById(teams, team));\n\n      const memberIds = new Set(team.memberUserIds);\n      await writeUsers(\n        (await readUsers()).map((user) => {\n          const teamIds = uniqueStrings(user.teamIds ?? []);\n          const shouldHaveTeam = memberIds.has(user.id);\n          return {\n            ...user,\n            teamIds: shouldHaveTeam\n              ? uniqueStrings([...teamIds, team.id])\n              : teamIds.filter((teamId) => teamId !== team.id),\n          };\n        }),\n      );\n      return team;\n    },\n    async deleteTeam(id: string) {\n      const teams = await readTeams();\n      const nextTeams = teams.filter((team) => team.id !== id);\n      if (nextTeams.length === teams.length) return false;\n\n      await writeTeams(nextTeams);\n      await writeUsers(\n        (await readUsers()).map((user) => ({\n          ...user,\n          teamIds: (user.teamIds ?? []).filter((teamId) => teamId !== id),\n        })),\n      );\n      return true;\n    },\n    async addTeamMember(teamId: string, userId: string) {\n      const users = await readUsers();\n      const user = users.find((candidate) => candidate.id === userId);\n      if (!user) return false;\n\n      const teams = await readTeams();\n      const team = teams.find((candidate) => candidate.id === teamId);\n      if (!team || team.memberUserIds.includes(userId)) return false;\n\n      team.memberUserIds = [...team.memberUserIds, userId];\n      user.teamIds = uniqueStrings([...(user.teamIds ?? []), teamId]);\n      await writeTeams(teams);\n      await writeUsers(users);\n      return true;\n    },\n    async removeTeamMember(teamId: string, userId: string) {\n      const teams = await readTeams();\n      const team = teams.find((candidate) => candidate.id === teamId);\n      if (!team?.memberUserIds.includes(userId)) return false;\n\n      const users = await readUsers();\n      const user = users.find((candidate) => candidate.id === userId);\n      team.memberUserIds = team.memberUserIds.filter(\n        (memberId) => memberId !== userId,\n      );\n      if (user?.teamIds) {\n        user.teamIds = user.teamIds.filter(\n          (assignedTeamId) => assignedTeamId !== teamId,\n        );\n      }\n      await writeTeams(teams);\n      await writeUsers(users);\n      return true;\n    },\n    async assignTeamRole(teamId: string, roleId: string) {\n      if (!(await readRoles()).some((role) => role.id === roleId)) {\n        return false;\n      }\n\n      const teams = await readTeams();\n      const team = teams.find((candidate) => candidate.id === teamId);\n      if (!team || team.roleIds.includes(roleId)) return false;\n\n      team.roleIds = [...team.roleIds, roleId];\n      await writeTeams(teams);\n      return true;\n    },\n    async removeTeamRole(teamId: string, roleId: string) {\n      const teams = await readTeams();\n      const team = teams.find((candidate) => candidate.id === teamId);\n      if (!team?.roleIds.includes(roleId)) return false;\n\n      team.roleIds = team.roleIds.filter(\n        (assignedRoleId) => assignedRoleId !== roleId,\n      );\n      await writeTeams(teams);\n      return true;\n    },\n    async getMetrics(): Promise<AdminMetrics> {\n      const users = (await readUsers()).map(managedUser);\n      const today = new Date().toISOString().slice(0, 10);\n      return {\n        totalUsers: users.length,\n        activeUsers: users.filter((user) => user.isActive && !user.isBanned)\n          .length,\n        newUsersToday: users.filter((user) => user.createdAt?.startsWith(today))\n          .length,\n      };\n    },\n  } satisfies AdminAdapter;\n}\n\nexport function createReactNativeDefaultAdapterSet(\n  options: ReactNativeDefaultAdapterOptions = {},\n): ReactNativeDefaultAdapterSet {\n  const storage = options.asyncStorage ?? createMemoryStorage();\n  const namespace = options.namespace ?? \"geenius:adapters:react-native\";\n  const fileStorage = createNativeFileStorageAdapter(\n    storage,\n    namespace,\n    options.maxUploadBytes ?? DEFAULT_MAX_UPLOAD_BYTES,\n  );\n  const providerName = options.asyncStorage ? \"asyncStorage\" : \"memory\";\n  const logger = createConsoleLoggerAdapter();\n\n  if (isProductionRuntime(options.isProduction)) {\n    void logger.warn(\n      \"React Native default adapters are local/dev mocks. Do NOT use them in production; wire production providers in app adapter modules.\",\n      {\n        package: \"@geenius/adapters/react-native\",\n        provider: providerName,\n      },\n    );\n  }\n\n  return {\n    providerName,\n    adapters: {\n      db: createNativeDbAdapter(storage, namespace),\n      auth: createNativeAuthAdapter(storage, namespace),\n      payments: createNativePaymentsAdapter(storage, namespace),\n      ai: createNativeAiAdapter(storage, namespace, options.aiRateLimit),\n      storage: fileStorage,\n      fileStorage,\n      admin: createNativeAdminAdapter(storage, namespace),\n      logger,\n    },\n  };\n}\n\nexport const REACT_NATIVE_DEFAULT_PROVIDER_BY_DOMAIN: Record<\n  AdapterDomain,\n  string\n> = {\n  db: \"memory\",\n  auth: \"memory\",\n  payments: \"memory\",\n  ai: \"memory\",\n  storage: \"memory\",\n  admin: \"memory\",\n  logger: \"console\",\n};\n","/**\n * @module provider\n * @package @geenius/adapters/react-native\n * @description Implements the React Native adapter provider and context access\n * helpers with native-safe default adapters.\n */\n\n\"use client\";\n\nimport {\n  ADAPTER_DOMAINS,\n  AdapterContextError,\n  type AdapterDomain,\n  AdapterError,\n  type AdapterStatusInfo,\n  type AdminAdapter,\n  type AiAdapter,\n  type AuthAdapter,\n  type DbAdapter,\n  DOMAIN_LABELS,\n  type FileStorageAdapter,\n  getDomainConfig,\n  isAdaptersConfigured,\n  type LoggerAdapter,\n  type PaymentsAdapter,\n} from \"@geenius/adapters\";\nimport {\n  createContext,\n  type JSX,\n  type ReactNode,\n  useCallback,\n  useContext,\n  useEffect,\n  useMemo,\n  useState,\n} from \"react\";\nimport {\n  createReactNativeDefaultAdapterSet,\n  REACT_NATIVE_DEFAULT_PROVIDER_BY_DOMAIN,\n  type ReactNativeAsyncStorage,\n} from \"../lib/defaultAdapters\";\n\ntype AnyAdapter =\n  | DbAdapter\n  | AuthAdapter\n  | PaymentsAdapter\n  | AiAdapter\n  | FileStorageAdapter\n  | AdminAdapter\n  | LoggerAdapter;\n\ntype AdapterForDomain<D extends AdapterDomain> = D extends \"db\"\n  ? DbAdapter\n  : D extends \"auth\"\n    ? AuthAdapter\n    : D extends \"payments\"\n      ? PaymentsAdapter\n      : D extends \"ai\"\n        ? AiAdapter\n        : D extends \"storage\"\n          ? FileStorageAdapter\n          : D extends \"admin\"\n            ? AdminAdapter\n            : D extends \"logger\"\n              ? LoggerAdapter\n              : never;\n\ntype AdapterByDomain = {\n  [D in AdapterDomain]: AdapterForDomain<D>;\n};\n\ntype ResolvedAdapterSet = AdapterByDomain & {\n  fileStorage: FileStorageAdapter;\n};\n\n/**\n * Adapter instances that may be supplied to the native provider.\n *\n * @property admin Optional admin adapter override.\n * @property ai Optional AI adapter override.\n * @property auth Optional auth adapter override.\n * @property db Optional DB adapter override.\n * @property fileStorage Optional legacy alias for the storage adapter.\n * @property logger Optional logger adapter override.\n * @property payments Optional payments adapter override.\n * @property storage Optional file storage adapter override.\n */\nexport interface AdapterSet extends Partial<Record<AdapterDomain, AnyAdapter>> {\n  admin?: AdminAdapter;\n  ai?: AiAdapter;\n  auth?: AuthAdapter;\n  db?: DbAdapter;\n  fileStorage?: FileStorageAdapter;\n  logger?: LoggerAdapter;\n  payments?: PaymentsAdapter;\n  storage?: FileStorageAdapter;\n}\n\n/**\n * Registry shape accepted by {@link AdapterProvider} for adapter overrides.\n *\n * @example\n * ```tsx\n * <AdapterProvider registry={{ db: memoryDb }} />\n * ```\n */\nexport type AdapterRegistry = AdapterSet;\n\n/**\n * Runtime context value exposed by {@link useAdapterContext}.\n *\n * @property adapters Fully resolved adapter instances.\n * @property getAdapter Typed adapter lookup helper by domain.\n * @property isLoading Whether provider health checks are still running.\n * @property isReady Readiness helper for a single domain.\n * @property statuses Status metadata keyed by adapter domain.\n */\nexport interface AdapterContextValue {\n  adapters: ResolvedAdapterSet;\n  getAdapter: <K extends AdapterDomain>(domain: K) => AdapterByDomain[K];\n  isLoading: boolean;\n  isReady: (domain: AdapterDomain) => boolean;\n  statuses: Record<AdapterDomain, AdapterStatusInfo>;\n}\n\nexport type AdapterHealthProbeMap = Partial<{\n  [D in AdapterDomain]: (\n    adapter: AdapterByDomain[D],\n    adapters: ResolvedAdapterSet,\n  ) => Promise<void> | void;\n}>;\n\n/**\n * Props for the native adapter provider.\n *\n * @property adapters Optional bundle of adapter overrides.\n * @property asyncStorage Async storage implementation used by local native defaults.\n * @property children React subtree receiving the adapter context.\n * @property healthCheck Enables startup health checks for configured adapters.\n * @property healthProbes Optional domain-specific health probes supplied by the host app.\n * @property namespace Storage namespace used by default local adapters.\n * @property onError Optional callback for health-check adapter errors.\n * @property registry Optional registry alias for adapter overrides.\n * @property statusOverrides Optional status metadata overrides for stories/tests.\n */\nexport interface AdapterProviderProps extends Partial<AdapterSet> {\n  adapters?: AdapterSet;\n  asyncStorage?: ReactNativeAsyncStorage;\n  children: ReactNode;\n  healthCheck?: boolean;\n  healthProbes?: AdapterHealthProbeMap;\n  namespace?: string;\n  onError?: (error: AdapterError) => void;\n  registry?: Partial<AdapterRegistry>;\n  statusOverrides?: Partial<Record<AdapterDomain, Partial<AdapterStatusInfo>>>;\n}\n\ntype AdapterResolutionProps = Pick<\n  AdapterProviderProps,\n  | \"adapters\"\n  | \"registry\"\n  | \"db\"\n  | \"auth\"\n  | \"payments\"\n  | \"ai\"\n  | \"storage\"\n  | \"fileStorage\"\n  | \"admin\"\n  | \"logger\"\n>;\n\nconst AdapterContext = createContext<AdapterContextValue | null>(null);\n\nfunction resolveAdapterSet(\n  props: AdapterResolutionProps,\n  defaults: ResolvedAdapterSet,\n): ResolvedAdapterSet {\n  const provided = {\n    ...(props.registry ?? {}),\n    ...(props.adapters ?? {}),\n  };\n  const fileStorage =\n    props.fileStorage ??\n    props.storage ??\n    provided.fileStorage ??\n    provided.storage ??\n    defaults.storage;\n\n  return {\n    db: props.db ?? provided.db ?? defaults.db,\n    auth: props.auth ?? provided.auth ?? defaults.auth,\n    payments: props.payments ?? provided.payments ?? defaults.payments,\n    ai: props.ai ?? provided.ai ?? defaults.ai,\n    storage: fileStorage,\n    fileStorage,\n    admin: props.admin ?? provided.admin ?? defaults.admin,\n    logger: props.logger ?? provided.logger ?? defaults.logger,\n  };\n}\n\nfunction getInitialProviderName(\n  domain: AdapterDomain,\n  adapters: ResolvedAdapterSet,\n  defaultProviderName: string,\n  statusOverrides?: Partial<Record<AdapterDomain, Partial<AdapterStatusInfo>>>,\n): string {\n  const overrideProvider = statusOverrides?.[domain]?.provider;\n  if (overrideProvider !== undefined) {\n    return overrideProvider;\n  }\n\n  if (!adapters[domain]) {\n    return \"none\";\n  }\n\n  if (!isAdaptersConfigured()) {\n    return domain === \"logger\" ? \"console\" : defaultProviderName;\n  }\n\n  return (\n    getDomainConfig(domain)?.provider ??\n    REACT_NATIVE_DEFAULT_PROVIDER_BY_DOMAIN[domain]\n  );\n}\n\nfunction createInitialStatuses(\n  adapters: ResolvedAdapterSet,\n  defaultProviderName: string,\n  healthCheck: boolean,\n  statusOverrides?: Partial<Record<AdapterDomain, Partial<AdapterStatusInfo>>>,\n): Record<AdapterDomain, AdapterStatusInfo> {\n  const initial = {} as Record<AdapterDomain, AdapterStatusInfo>;\n\n  for (const domain of ADAPTER_DOMAINS) {\n    const adapter = adapters[domain];\n    initial[domain] = {\n      domain,\n      provider: getInitialProviderName(\n        domain,\n        adapters,\n        defaultProviderName,\n        statusOverrides,\n      ),\n      status: adapter\n        ? healthCheck\n          ? \"initializing\"\n          : \"connected\"\n        : \"disconnected\",\n      lastCheckedAt: Date.now(),\n      ...statusOverrides?.[domain],\n    };\n  }\n\n  return initial;\n}\n\nfunction toAdapterError(domain: AdapterDomain, error: unknown): AdapterError {\n  if (error instanceof AdapterError) {\n    return error;\n  }\n\n  const message =\n    error instanceof Error ? error.message : \"Health check failed\";\n  return new AdapterError(message, domain, \"SERVICE_ERROR\", error);\n}\n\nasync function probeAdapterDomain(\n  domain: AdapterDomain,\n  adapters: ResolvedAdapterSet,\n  healthProbes?: AdapterHealthProbeMap,\n): Promise<{ connected: true } | { connected: false; error: string }> {\n  const customProbe = healthProbes?.[domain];\n  if (customProbe) {\n    await customProbe(adapters[domain] as never, adapters);\n    return { connected: true };\n  }\n\n  switch (domain) {\n    case \"auth\":\n      await adapters.auth.getSession();\n      return { connected: true };\n    case \"payments\":\n      await adapters.payments.getPlans();\n      return { connected: true };\n    case \"admin\":\n      await adapters.admin.getMetrics();\n      return { connected: true };\n    case \"logger\":\n      await adapters.logger.child({ healthCheck: true });\n      return { connected: true };\n    case \"db\":\n      await adapters.db.count(\"__geenius_adapter_healthcheck\");\n      return { connected: true };\n    case \"storage\":\n      await adapters.storage.list(\"__geenius_adapter_healthcheck\");\n      return { connected: true };\n    case \"ai\":\n      await adapters.ai.complete(\"geenius adapter health check\");\n      return { connected: true };\n  }\n\n  return {\n    connected: false,\n    error: `No health probe is registered for ${domain}.`,\n  };\n}\n\n/**\n * Provides native adapter instances, status metadata, and readiness helpers.\n *\n * @param props Provider props including adapter overrides and local defaults.\n * @returns A React context provider for React Native adapter consumers.\n * @example\n * ```tsx\n * <AdapterProvider healthCheck asyncStorage={storage}>\n *   <AdaptersPage />\n * </AdapterProvider>\n * ```\n */\nexport function AdapterProvider(props: AdapterProviderProps): JSX.Element {\n  const {\n    children,\n    healthCheck = false,\n    statusOverrides,\n    adapters: providedAdapters,\n    registry,\n    db,\n    auth,\n    payments,\n    ai,\n    storage,\n    fileStorage,\n    admin,\n    logger,\n    onError,\n    healthProbes,\n    asyncStorage,\n    namespace,\n  } = props;\n  const defaultBundle = useMemo(\n    () => createReactNativeDefaultAdapterSet({ asyncStorage, namespace }),\n    [asyncStorage, namespace],\n  );\n  const adapters = useMemo(\n    () =>\n      resolveAdapterSet(\n        {\n          adapters: providedAdapters,\n          registry,\n          db,\n          auth,\n          payments,\n          ai,\n          storage,\n          fileStorage,\n          admin,\n          logger,\n        },\n        defaultBundle.adapters,\n      ),\n    [\n      providedAdapters,\n      registry,\n      db,\n      auth,\n      payments,\n      ai,\n      storage,\n      fileStorage,\n      admin,\n      logger,\n      defaultBundle,\n    ],\n  );\n  const [isLoading, setIsLoading] = useState(healthCheck);\n  const [statuses, setStatuses] = useState<\n    Record<AdapterDomain, AdapterStatusInfo>\n  >(() =>\n    createInitialStatuses(\n      adapters,\n      defaultBundle.providerName,\n      healthCheck,\n      statusOverrides,\n    ),\n  );\n\n  useEffect(() => {\n    setStatuses(\n      createInitialStatuses(\n        adapters,\n        defaultBundle.providerName,\n        healthCheck,\n        statusOverrides,\n      ),\n    );\n  }, [adapters, defaultBundle.providerName, healthCheck, statusOverrides]);\n\n  useEffect(() => {\n    if (!healthCheck) {\n      return;\n    }\n\n    let cancelled = false;\n    setIsLoading(true);\n\n    const checks = ADAPTER_DOMAINS.map(async (domain: AdapterDomain) => {\n      const adapter = adapters[domain];\n      if (!adapter) return;\n\n      try {\n        setStatuses((previous) => ({\n          ...previous,\n          [domain]: {\n            ...previous[domain],\n            status: \"initializing\",\n            error: undefined,\n          },\n        }));\n\n        const result = await probeAdapterDomain(domain, adapters, healthProbes);\n        if (!result.connected) {\n          setStatuses((previous) => ({\n            ...previous,\n            [domain]: {\n              ...previous[domain],\n              status: \"disconnected\",\n              error: result.error,\n              lastCheckedAt: Date.now(),\n            },\n          }));\n          return;\n        }\n\n        if (!cancelled) {\n          setStatuses((previous) => ({\n            ...previous,\n            [domain]: {\n              ...previous[domain],\n              status: \"connected\",\n              error: undefined,\n              lastCheckedAt: Date.now(),\n            },\n          }));\n        }\n      } catch (error) {\n        const adapterError = toAdapterError(domain, error);\n        onError?.(adapterError);\n\n        if (!cancelled) {\n          setStatuses((previous) => ({\n            ...previous,\n            [domain]: {\n              ...previous[domain],\n              status: \"error\",\n              error: adapterError.message,\n              lastCheckedAt: Date.now(),\n            },\n          }));\n        }\n      }\n    });\n\n    Promise.allSettled(checks).finally(() => {\n      if (!cancelled) setIsLoading(false);\n    });\n\n    return () => {\n      cancelled = true;\n    };\n  }, [adapters, healthCheck, healthProbes, onError]);\n\n  const getAdapter = useCallback(\n    <K extends AdapterDomain>(domain: K): AdapterByDomain[K] => {\n      const adapter = adapters[domain];\n      if (!adapter) {\n        throw new AdapterContextError(\n          `${DOMAIN_LABELS[domain] ?? domain} adapter not configured in <AdapterProvider>`,\n          \"ADAPTER_NOT_CONFIGURED\",\n        );\n      }\n      return adapter;\n    },\n    [adapters],\n  );\n\n  const isReady = useCallback(\n    (domain: AdapterDomain) =>\n      !!adapters[domain] && statuses[domain]?.status === \"connected\",\n    [adapters, statuses],\n  );\n\n  const value = useMemo<AdapterContextValue>(\n    () => ({\n      adapters,\n      statuses,\n      getAdapter,\n      isReady,\n      isLoading,\n    }),\n    [adapters, statuses, getAdapter, isReady, isLoading],\n  );\n\n  return (\n    <AdapterContext.Provider value={value}>{children}</AdapterContext.Provider>\n  );\n}\n\n/**\n * Alias for {@link AdapterProvider} retained for naming parity with web variants.\n *\n * @example\n * ```tsx\n * <AdaptersProvider><App /></AdaptersProvider>\n * ```\n */\nexport const AdaptersProvider = AdapterProvider;\n\n/**\n * Reads the native adapter context from the nearest provider.\n *\n * @returns The resolved adapter context value.\n * @throws AdapterContextError when rendered outside an {@link AdapterProvider}.\n * @example\n * ```tsx\n * const { statuses, getAdapter } = useAdapterContext();\n * ```\n */\nexport function useAdapterContext(): AdapterContextValue {\n  const context = useContext(AdapterContext);\n  if (!context) {\n    throw new AdapterContextError(\n      \"useAdapterContext must be used within <AdapterProvider>\",\n      \"MISSING_CONTEXT\",\n    );\n  }\n  return context;\n}\n","/**\n * @module hooks\n * @package @geenius/adapters/react-native\n * @description Defines React hooks for reading adapter instances and status\n * state from the React Native provider context.\n */\n\nimport type {\n  AdapterDomain,\n  AdapterStatusInfo,\n  AdminAdapter,\n  AiAdapter,\n  AuthAdapter,\n  DbAdapter,\n  FileStorageAdapter,\n  LoggerAdapter,\n  PaymentsAdapter,\n} from \"@geenius/adapters\";\nimport { useMemo } from \"react\";\nimport { useAdapterContext } from \"../provider\";\n\n/**\n * Reads the configured database adapter from the nearest native provider.\n *\n * @returns The DB adapter registered for the `db` domain.\n * @example\n * ```tsx\n * const db = useDb();\n * const users = await db.list(\"users\");\n * ```\n */\nexport function useDb(): DbAdapter {\n  return useAdapterContext().getAdapter(\"db\");\n}\n\n/**\n * Reads the configured auth adapter from the nearest native provider.\n *\n * @returns The auth adapter registered for the `auth` domain.\n * @example\n * ```tsx\n * const auth = useAuth();\n * const session = await auth.getSession();\n * ```\n */\nexport function useAuth(): AuthAdapter {\n  return useAdapterContext().getAdapter(\"auth\");\n}\n\n/**\n * Alias for {@link useAuth} retained for consumers that prefer explicit names.\n *\n * @returns The auth adapter registered for the `auth` domain.\n * @example\n * ```tsx\n * const auth = useAuthAdapter();\n * ```\n */\nexport function useAuthAdapter(): AuthAdapter {\n  return useAuth();\n}\n\n/**\n * Reads the configured payments adapter from the nearest native provider.\n *\n * @returns The payments adapter registered for the `payments` domain.\n * @example\n * ```tsx\n * const payments = usePayments();\n * const plans = await payments.listPlans();\n * ```\n */\nexport function usePayments(): PaymentsAdapter {\n  return useAdapterContext().getAdapter(\"payments\");\n}\n\n/**\n * Reads the configured AI adapter from the nearest native provider.\n *\n * @returns The AI adapter registered for the `ai` domain.\n * @example\n * ```tsx\n * const ai = useAi();\n * const answer = await ai.complete({ prompt: \"Summarize\" });\n * ```\n */\nexport function useAi(): AiAdapter {\n  return useAdapterContext().getAdapter(\"ai\");\n}\n\n/**\n * Reads the configured file storage adapter from the nearest native provider.\n *\n * @returns The storage adapter registered for the `storage` domain.\n * @example\n * ```tsx\n * const storage = useFileStorage();\n * await storage.upload({ path: \"avatars/a.png\", data });\n * ```\n */\nexport function useFileStorage(): FileStorageAdapter {\n  return useAdapterContext().getAdapter(\"storage\");\n}\n\n/**\n * Alias for {@link useFileStorage} used by storage-focused screens.\n *\n * @returns The storage adapter registered for the `storage` domain.\n * @example\n * ```tsx\n * const storage = useStorage();\n * ```\n */\nexport function useStorage(): FileStorageAdapter {\n  return useFileStorage();\n}\n\n/**\n * Reads the configured admin adapter from the nearest native provider.\n *\n * @returns The admin adapter registered for the `admin` domain.\n * @example\n * ```tsx\n * const admin = useAdmin();\n * const roles = await admin.listRoles();\n * ```\n */\nexport function useAdmin(): AdminAdapter {\n  return useAdapterContext().getAdapter(\"admin\");\n}\n\n/**\n * Reads the configured logger adapter from the nearest native provider.\n *\n * @returns The logger adapter registered for the `logger` domain.\n * @example\n * ```tsx\n * const logger = useLogger();\n * logger.info(\"native screen mounted\");\n * ```\n */\nexport function useLogger(): LoggerAdapter {\n  return useAdapterContext().getAdapter(\"logger\");\n}\n\n/**\n * Reads the status map for every adapter domain.\n *\n * @returns A record keyed by adapter domain with provider status metadata.\n * @example\n * ```tsx\n * const statuses = useAdapterStatuses();\n * const dbStatus = statuses.db.status;\n * ```\n */\nexport function useAdapterStatuses(): Record<AdapterDomain, AdapterStatusInfo> {\n  return useAdapterContext().statuses;\n}\n\n/**\n * Reads the status metadata for a single adapter domain.\n *\n * @param domain Adapter domain to inspect.\n * @returns The status payload for the requested domain.\n * @example\n * ```tsx\n * const status = useAdapterStatus(\"auth\");\n * ```\n */\nexport function useAdapterStatus(domain: AdapterDomain): AdapterStatusInfo {\n  return useAdapterContext().statuses[domain];\n}\n\n/**\n * Reports whether a configured adapter is currently connected.\n *\n * @param domain Adapter domain to inspect.\n * @returns `true` when the domain has an adapter and its status is connected.\n * @example\n * ```tsx\n * const canSubmit = useIsAdapterReady(\"payments\");\n * ```\n */\nexport function useIsAdapterReady(domain: AdapterDomain): boolean {\n  return useAdapterContext().isReady(domain);\n}\n\n/**\n * Reads the full native adapter bundle and provider status helpers.\n *\n * @returns Adapter instances, status records, loading state, and readiness helper.\n * @example\n * ```tsx\n * const { db, statuses, isReady } = useAdapters();\n * ```\n */\nexport function useAdapters(): {\n  admin: AdminAdapter;\n  ai: AiAdapter;\n  auth: AuthAdapter;\n  db: DbAdapter;\n  fileStorage: FileStorageAdapter;\n  isLoading: boolean;\n  isReady: (domain: AdapterDomain) => boolean;\n  logger: LoggerAdapter;\n  payments: PaymentsAdapter;\n  statuses: Record<AdapterDomain, AdapterStatusInfo>;\n  storage: FileStorageAdapter;\n} {\n  const context = useAdapterContext();\n\n  return useMemo(\n    () => ({\n      db: context.adapters.db,\n      auth: context.adapters.auth,\n      payments: context.adapters.payments,\n      ai: context.adapters.ai,\n      fileStorage: context.adapters.fileStorage,\n      storage: context.adapters.storage,\n      admin: context.adapters.admin,\n      logger: context.adapters.logger,\n      statuses: context.statuses,\n      isLoading: context.isLoading,\n      isReady: context.isReady,\n    }),\n    [context],\n  );\n}\n","/**\n * @module AdapterList\n * @package @geenius/adapters/react-native\n * @description Renders the searchable native adapter list with FlatList.\n */\n\nimport type { AdapterDomain, AdapterStatusType } from \"@geenius/adapters\";\nimport { ADAPTER_DOMAINS, DOMAIN_LABELS } from \"@geenius/adapters\";\nimport type { JSX } from \"react\";\nimport { useMemo, useState } from \"react\";\nimport type { StyleProp, ViewStyle } from \"react-native\";\nimport { semanticColors } from \"../bridges/TokenBridge\";\nimport { useAdapters } from \"../hooks\";\nimport {\n  FlatList,\n  Pressable,\n  StyleSheet,\n  Text,\n  TextInput,\n  View,\n} from \"../lib/native\";\nimport { AdapterCard } from \"./AdapterCard\";\n\n/**\n * Props for the searchable native adapter list.\n *\n * @property filterStatus Optional lifecycle status used to filter domains.\n * @property onRefresh Optional native pull-to-refresh callback.\n * @property onSelect Optional callback fired when a domain card is pressed.\n * @property refreshing Whether the native pull-to-refresh control is active.\n * @property style Optional native style merged onto the list container.\n * @property testID Optional deterministic selector for tests and Storybook.\n */\nexport interface AdapterListProps {\n  filterStatus?: AdapterStatusType;\n  onRefresh?: () => void | Promise<void>;\n  onSelect?: (domain: AdapterDomain) => void;\n  refreshing?: boolean;\n  style?: StyleProp<ViewStyle>;\n  testID?: string;\n}\n\n/**\n * Renders a searchable native list of adapter domains.\n *\n * @param props List props including optional status filter and select callback.\n * @returns A React Native list with loading, empty, and filtered states.\n * @example\n * ```tsx\n * <AdapterList filterStatus=\"connected\" onSelect={(domain) => open(domain)} />\n * ```\n */\nexport function AdapterList({\n  onSelect,\n  filterStatus,\n  onRefresh,\n  refreshing = false,\n  style,\n  testID,\n}: AdapterListProps): JSX.Element {\n  const { statuses, isLoading } = useAdapters();\n  const [search, setSearch] = useState(\"\");\n\n  const filteredDomains = useMemo(() => {\n    let domains = [...ADAPTER_DOMAINS];\n\n    if (search) {\n      const query = search.toLowerCase();\n      domains = domains.filter((domain) => {\n        const label = DOMAIN_LABELS[domain].toLowerCase();\n        const provider = statuses[domain]?.provider?.toLowerCase() ?? \"\";\n        return (\n          label.includes(query) ||\n          provider.includes(query) ||\n          domain.includes(query)\n        );\n      });\n    }\n\n    if (filterStatus) {\n      domains = domains.filter(\n        (domain) => statuses[domain]?.status === filterStatus,\n      );\n    }\n\n    return domains;\n  }, [search, filterStatus, statuses]);\n\n  if (isLoading) {\n    return (\n      <View\n        accessibilityLabel=\"Loading adapters\"\n        accessibilityRole=\"progressbar\"\n        style={[styles.stack, style]}\n        testID={testID ?? \"adapter-list-loading\"}\n      >\n        {[1, 2, 3, 4].map((index) => (\n          <View key={index} style={styles.skeletonCard}>\n            <View style={styles.skeletonIcon} />\n            <View style={styles.skeletonBody}>\n              <View style={styles.skeletonTitle} />\n              <View style={styles.skeletonLine} />\n            </View>\n          </View>\n        ))}\n      </View>\n    );\n  }\n\n  return (\n    <View style={[styles.container, style]} testID={testID ?? \"adapter-list\"}>\n      <TextInput\n        accessibilityLabel=\"Search adapters\"\n        autoCapitalize=\"none\"\n        autoCorrect={false}\n        onChangeText={setSearch}\n        placeholder=\"Search adapters...\"\n        style={styles.search}\n        testID=\"adapter-search\"\n        value={search}\n      />\n      <FlatList\n        accessibilityLabel=\"Adapters\"\n        accessibilityState={{ busy: refreshing }}\n        data={filteredDomains}\n        keyExtractor={(domain) => domain}\n        ListEmptyComponent={\n          <View\n            accessibilityLabel=\"Adapter list empty state\"\n            style={styles.emptyState}\n            testID=\"adapter-list-empty\"\n          >\n            <Text style={styles.emptyText}>\n              {search\n                ? \"No adapters match your search\"\n                : \"No adapters configured\"}\n            </Text>\n            <Text style={styles.emptyHint}>\n              {search\n                ? \"Clear the search to return to the full adapter list.\"\n                : \"Check the current filters or configure an adapter from the overview page.\"}\n            </Text>\n            {search ? (\n              <Pressable\n                accessibilityLabel=\"Clear adapter search\"\n                accessibilityRole=\"button\"\n                onPress={() => setSearch(\"\")}\n                style={styles.emptyAction}\n                testID=\"adapter-list-clear-search\"\n              >\n                <Text style={styles.emptyActionText}>Clear search</Text>\n              </Pressable>\n            ) : null}\n          </View>\n        }\n        onRefresh={onRefresh}\n        renderItem={({ item }) => (\n          <View style={styles.item}>\n            <AdapterCard\n              domain={item}\n              onPress={onSelect ? () => onSelect(item) : undefined}\n              status={statuses[item]}\n            />\n          </View>\n        )}\n        refreshing={refreshing}\n        testID=\"adapter-list-results\"\n      />\n    </View>\n  );\n}\n\nconst styles = StyleSheet.create({\n  container: {\n    gap: 12,\n  },\n  emptyState: {\n    alignItems: \"center\",\n    backgroundColor: semanticColors.surface.bg,\n    borderColor: semanticColors.surface.border,\n    borderRadius: 10,\n    borderWidth: 1,\n    padding: 24,\n  },\n  emptyText: {\n    color: semanticColors.surface.textMuted,\n    fontSize: 13,\n    fontWeight: \"600\",\n  },\n  emptyHint: {\n    color: semanticColors.surface.textMuted,\n    fontSize: 12,\n    marginTop: 6,\n    textAlign: \"center\",\n  },\n  emptyAction: {\n    backgroundColor: semanticColors.surface.card,\n    borderColor: semanticColors.surface.border,\n    borderRadius: 8,\n    borderWidth: 1,\n    marginTop: 12,\n    paddingHorizontal: 14,\n    paddingVertical: 8,\n  },\n  emptyActionText: {\n    color: semanticColors.surface.text,\n    fontSize: 13,\n    fontWeight: \"600\",\n  },\n  item: {\n    marginBottom: 10,\n  },\n  search: {\n    backgroundColor: semanticColors.surface.card,\n    borderColor: semanticColors.surface.borderStrong,\n    borderRadius: 10,\n    borderWidth: 1,\n    color: semanticColors.surface.text,\n    fontSize: 15,\n    paddingHorizontal: 14,\n    paddingVertical: 12,\n  },\n  skeletonBody: {\n    flex: 1,\n    gap: 10,\n  },\n  skeletonCard: {\n    alignItems: \"center\",\n    backgroundColor: semanticColors.surface.card,\n    borderColor: semanticColors.surface.border,\n    borderRadius: 10,\n    borderWidth: 1,\n    flexDirection: \"row\",\n    gap: 14,\n    padding: 16,\n  },\n  skeletonIcon: {\n    backgroundColor: semanticColors.surface.skeleton,\n    borderRadius: 8,\n    height: 44,\n    width: 44,\n  },\n  skeletonLine: {\n    backgroundColor: semanticColors.surface.skeleton,\n    borderRadius: 999,\n    height: 8,\n    width: \"80%\",\n  },\n  skeletonTitle: {\n    backgroundColor: semanticColors.surface.skeletonStrong,\n    borderRadius: 999,\n    height: 12,\n    width: \"44%\",\n  },\n  stack: {\n    gap: 10,\n  },\n});\n","/**\n * @module AdapterDetailPage\n * @package @geenius/adapters/react-native\n * @description Renders the native single-domain adapter detail view.\n */\n\nimport type {\n  AdapterDomain,\n  DomainAdapterConfig,\n  ProviderMeta,\n} from \"@geenius/adapters\";\nimport {\n  DOMAIN_DESCRIPTIONS,\n  DOMAIN_ICONS,\n  DOMAIN_LABELS,\n  getProvidersForDomain,\n  LAUNCH_DB_PROVIDERS,\n} from \"@geenius/adapters\";\nimport type { JSX } from \"react\";\nimport { useState } from \"react\";\nimport type { StyleProp, ViewStyle } from \"react-native\";\nimport { ErrorBoundaryBridge } from \"../bridges/ErrorBoundaryBridge\";\nimport { semanticColors } from \"../bridges/TokenBridge\";\nimport { AdapterConfigForm, AdapterStatusBadge } from \"../components\";\nimport { useAdapterStatus, useAdapters } from \"../hooks\";\nimport { Pressable, ScrollView, StyleSheet, Text, View } from \"../lib/native\";\n\n/**\n * Props for the native single-domain adapter detail page.\n *\n * @property domain Adapter domain shown by the detail page.\n * @property onBack Optional callback used to render and handle the back action.\n * @property onConfigure Optional callback invoked with submitted adapter configuration.\n * @property style Optional native style merged onto the page container.\n * @property testID Optional deterministic selector for tests and Storybook.\n */\nexport interface AdapterDetailPageProps {\n  domain: AdapterDomain;\n  onBack?: () => void;\n  onConfigure?: (\n    domain: AdapterDomain,\n    config: DomainAdapterConfig,\n  ) => Promise<void> | void;\n  style?: StyleProp<ViewStyle>;\n  testID?: string;\n}\n\n/**\n * Renders provider metadata, status, and configuration for one adapter domain.\n *\n * @param props Detail page props including the target domain and optional back action.\n * @returns A React Native detail page for the requested adapter domain.\n * @example\n * ```tsx\n * <AdapterDetailPage domain=\"db\" onBack={() => navigation.goBack()} />\n * ```\n */\nexport function AdapterDetailPage({\n  domain,\n  onBack,\n  onConfigure,\n  style,\n  testID,\n}: AdapterDetailPageProps): JSX.Element {\n  return (\n    <ErrorBoundaryBridge style={style} testID=\"adapter-detail-error-boundary\">\n      <AdapterDetailPageContent\n        domain={domain}\n        onBack={onBack}\n        onConfigure={onConfigure}\n        style={style}\n        testID={testID}\n      />\n    </ErrorBoundaryBridge>\n  );\n}\n\nfunction AdapterDetailPageContent({\n  domain,\n  onBack,\n  onConfigure,\n  style,\n  testID,\n}: AdapterDetailPageProps): JSX.Element {\n  const { isLoading } = useAdapters();\n  const status = useAdapterStatus(domain);\n  const [isEditing, setIsEditing] = useState(false);\n  const providers: ProviderMeta[] = getProvidersForDomain(domain);\n  const launchSelectableIds = new Set(\n    domain === \"db\"\n      ? [\"localStorage\", ...LAUNCH_DB_PROVIDERS]\n      : providers.map((provider) => provider.id),\n  );\n\n  if (isLoading) {\n    return (\n      <View\n        accessibilityLabel=\"Loading adapter details\"\n        accessibilityRole=\"progressbar\"\n        style={[styles.page, style]}\n        testID={testID ?? \"adapter-detail-loading\"}\n      >\n        <View style={styles.skeletonTitle} />\n        <View style={styles.skeletonBlock} />\n        <View style={styles.skeletonBlock} />\n      </View>\n    );\n  }\n\n  return (\n    <ScrollView\n      accessibilityLabel={`${DOMAIN_LABELS[domain]} adapter details`}\n      contentContainerStyle={[styles.page, style]}\n      keyboardShouldPersistTaps=\"handled\"\n      testID={testID ?? \"adapter-detail-page\"}\n    >\n      {onBack && (\n        <Pressable\n          accessibilityLabel=\"Back to adapters\"\n          accessibilityRole=\"button\"\n          onPress={onBack}\n          style={styles.backButton}\n          testID=\"adapter-detail-back\"\n        >\n          <Text style={styles.backText}>Back to Adapters</Text>\n        </Pressable>\n      )}\n\n      <View style={styles.hero}>\n        <View style={styles.iconBox}>\n          <Text style={styles.iconText}>{DOMAIN_ICONS[domain]}</Text>\n        </View>\n        <View style={styles.heroBody}>\n          <View style={styles.heroTitleRow}>\n            <Text accessibilityRole=\"header\" style={styles.title}>\n              {DOMAIN_LABELS[domain]}\n            </Text>\n            <AdapterStatusBadge status={status.status} />\n          </View>\n          <Text style={styles.description}>{DOMAIN_DESCRIPTIONS[domain]}</Text>\n        </View>\n      </View>\n\n      <View style={styles.panel}>\n        <Text style={styles.sectionLabel}>Current Status</Text>\n        <View style={styles.statusGrid}>\n          <View style={styles.statusCell}>\n            <Text style={styles.statusLabel}>Provider</Text>\n            <Text style={styles.statusValue}>\n              {status.provider !== \"none\" ? status.provider : \"None\"}\n            </Text>\n          </View>\n          <View style={styles.statusCell}>\n            <Text style={styles.statusLabel}>Status</Text>\n            <AdapterStatusBadge status={status.status} />\n          </View>\n          <View style={styles.statusCell}>\n            <Text style={styles.statusLabel}>Last Checked</Text>\n            <Text style={styles.statusValue}>\n              {status.lastCheckedAt\n                ? new Date(status.lastCheckedAt).toLocaleTimeString()\n                : \"Not checked\"}\n            </Text>\n          </View>\n        </View>\n        {status.error && (\n          <View accessibilityRole=\"alert\" style={styles.errorBox}>\n            <Text style={styles.errorText}>{status.error}</Text>\n          </View>\n        )}\n      </View>\n\n      <View style={styles.panel}>\n        <Text style={styles.sectionLabel}>Available Providers</Text>\n        <View style={styles.providers}>\n          {providers.map((provider: ProviderMeta) => {\n            const isAvailable = launchSelectableIds.has(provider.id);\n            return (\n              <View key={provider.id} style={styles.providerRow}>\n                <View style={styles.providerBody}>\n                  <Text style={styles.providerName}>{provider.name}</Text>\n                  <Text style={styles.providerDescription}>\n                    {provider.description}\n                  </Text>\n                </View>\n                <View style={styles.providerBadges}>\n                  <Text style={styles.providerTier}>{provider.tier}</Text>\n                  {!isAvailable && (\n                    <Text\n                      accessibilityLabel={`${provider.name} is unavailable`}\n                      style={styles.unavailableBadge}\n                      testID={`provider-unavailable-${provider.id}`}\n                    >\n                      Unavailable\n                    </Text>\n                  )}\n                </View>\n              </View>\n            );\n          })}\n        </View>\n      </View>\n\n      {isEditing ? (\n        <AdapterConfigForm\n          domain={domain}\n          onCancel={() => setIsEditing(false)}\n          onSave={async (config) => {\n            await onConfigure?.(domain, config);\n            setIsEditing(false);\n          }}\n        />\n      ) : (\n        <Pressable\n          accessibilityLabel={`Configure ${DOMAIN_LABELS[domain]} adapter`}\n          accessibilityRole=\"button\"\n          onPress={() => setIsEditing(true)}\n          style={styles.configureButton}\n          testID=\"adapter-detail-configure\"\n        >\n          <Text style={styles.configureText}>\n            Configure {DOMAIN_LABELS[domain]} Adapter\n          </Text>\n        </Pressable>\n      )}\n    </ScrollView>\n  );\n}\n\nconst styles = StyleSheet.create({\n  backButton: {\n    alignSelf: \"flex-start\",\n    paddingVertical: 4,\n  },\n  backText: {\n    color: semanticColors.surface.textSoft,\n    fontSize: 14,\n    fontWeight: \"700\",\n  },\n  configureButton: {\n    alignItems: \"center\",\n    backgroundColor: semanticColors.surface.card,\n    borderColor: semanticColors.surface.borderStrong,\n    borderRadius: 10,\n    borderStyle: \"dashed\",\n    borderWidth: 1,\n    padding: 18,\n  },\n  configureText: {\n    color: semanticColors.surface.textSoft,\n    fontSize: 14,\n    fontWeight: \"800\",\n  },\n  description: {\n    color: semanticColors.surface.textMuted,\n    fontSize: 14,\n    lineHeight: 20,\n    marginTop: 4,\n  },\n  errorBox: {\n    backgroundColor: semanticColors.status.error.bg,\n    borderColor: semanticColors.status.error.border,\n    borderRadius: 8,\n    borderWidth: 1,\n    marginTop: 12,\n    padding: 12,\n  },\n  errorText: {\n    color: semanticColors.status.error.text,\n    fontSize: 13,\n    fontWeight: \"600\",\n  },\n  hero: {\n    alignItems: \"flex-start\",\n    flexDirection: \"row\",\n    gap: 14,\n  },\n  heroBody: {\n    flex: 1,\n  },\n  heroTitleRow: {\n    alignItems: \"center\",\n    flexDirection: \"row\",\n    flexWrap: \"wrap\",\n    gap: 10,\n  },\n  iconBox: {\n    alignItems: \"center\",\n    backgroundColor: semanticColors.surface.card,\n    borderColor: semanticColors.surface.border,\n    borderRadius: 12,\n    borderWidth: 1,\n    height: 58,\n    justifyContent: \"center\",\n    width: 58,\n  },\n  iconText: {\n    fontSize: 28,\n  },\n  page: {\n    backgroundColor: semanticColors.surface.bg,\n    gap: 18,\n    padding: 16,\n  },\n  panel: {\n    backgroundColor: semanticColors.surface.card,\n    borderColor: semanticColors.surface.border,\n    borderRadius: 10,\n    borderWidth: 1,\n    padding: 16,\n  },\n  providerBody: {\n    flex: 1,\n  },\n  providerDescription: {\n    color: semanticColors.surface.textMuted,\n    fontSize: 12,\n    lineHeight: 17,\n    marginTop: 3,\n  },\n  providerName: {\n    color: semanticColors.surface.text,\n    fontSize: 14,\n    fontWeight: \"800\",\n  },\n  providerRow: {\n    alignItems: \"flex-start\",\n    borderBottomColor: semanticColors.surface.border,\n    borderBottomWidth: 1,\n    flexDirection: \"row\",\n    gap: 12,\n    paddingVertical: 12,\n  },\n  providerTier: {\n    backgroundColor: semanticColors.status.initializing.bg,\n    borderRadius: 6,\n    color: semanticColors.status.initializing.text,\n    fontSize: 10,\n    fontWeight: \"800\",\n    overflow: \"hidden\",\n    paddingHorizontal: 8,\n    paddingVertical: 3,\n    textTransform: \"uppercase\",\n  },\n  providers: {\n    marginTop: 6,\n  },\n  providerBadges: {\n    alignItems: \"flex-end\",\n    gap: 4,\n  },\n  sectionLabel: {\n    color: semanticColors.surface.textMuted,\n    fontSize: 11,\n    fontWeight: \"800\",\n    textTransform: \"uppercase\",\n  },\n  skeletonBlock: {\n    backgroundColor: semanticColors.surface.skeleton,\n    borderRadius: 12,\n    height: 120,\n  },\n  skeletonTitle: {\n    backgroundColor: semanticColors.surface.skeletonStrong,\n    borderRadius: 999,\n    height: 24,\n    width: \"45%\",\n  },\n  statusCell: {\n    flex: 1,\n    minWidth: 120,\n  },\n  statusGrid: {\n    flexDirection: \"row\",\n    flexWrap: \"wrap\",\n    gap: 16,\n    marginTop: 12,\n  },\n  statusLabel: {\n    color: semanticColors.surface.textMuted,\n    fontSize: 11,\n    textTransform: \"uppercase\",\n  },\n  statusValue: {\n    color: semanticColors.surface.text,\n    fontSize: 14,\n    fontWeight: \"700\",\n    marginTop: 5,\n  },\n  title: {\n    color: semanticColors.surface.text,\n    fontSize: 25,\n    fontWeight: \"900\",\n  },\n  unavailableBadge: {\n    backgroundColor: semanticColors.surface.muted,\n    borderColor: semanticColors.surface.border,\n    borderRadius: 6,\n    borderWidth: 1,\n    color: semanticColors.surface.textMuted,\n    fontSize: 10,\n    fontWeight: \"700\",\n    overflow: \"hidden\",\n    paddingHorizontal: 8,\n    paddingVertical: 3,\n    textTransform: \"uppercase\",\n  },\n});\n","/**\n * @module AdaptersPage\n * @package @geenius/adapters/react-native\n * @description Renders the native adapters overview page.\n */\n\nimport type {\n  AdapterDomain,\n  AdapterStatusType,\n  DomainAdapterConfig,\n} from \"@geenius/adapters\";\nimport {\n  ADAPTER_DOMAINS,\n  ADAPTER_STATUSES,\n  DOMAIN_LABELS,\n  getDomainConfig,\n  isAdaptersConfigured,\n} from \"@geenius/adapters\";\nimport type { JSX } from \"react\";\nimport { useState } from \"react\";\nimport type { StyleProp, ViewStyle } from \"react-native\";\nimport { ErrorBoundaryBridge } from \"../bridges/ErrorBoundaryBridge\";\nimport { semanticColors } from \"../bridges/TokenBridge\";\nimport {\n  AdapterConfigForm,\n  AdapterList,\n  AdapterStatusBadge,\n} from \"../components\";\nimport { useAdapters } from \"../hooks\";\nimport {\n  Modal,\n  Pressable,\n  ScrollView,\n  StyleSheet,\n  Text,\n  View,\n} from \"../lib/native\";\n\ntype RegistryEntry = {\n  domain: AdapterDomain;\n  provider: string;\n  status: AdapterStatusType;\n};\n\nconst adapterDomains = ADAPTER_DOMAINS as readonly AdapterDomain[];\nconst adapterStatuses = ADAPTER_STATUSES as readonly AdapterStatusType[];\n\n/**\n * Props for the native adapters overview page.\n *\n * @property configByDomain Optional configuration snapshot used to hydrate modal forms.\n * @property onNavigateDetail Optional navigation callback for external routers.\n * @property onConfigure Optional callback invoked with submitted adapter configuration.\n * @property reducedMotion Disables modal slide animation when `true`.\n * @property registryEntries Optional provider registry rows shown above the list.\n * @property style Optional native style merged onto the page container.\n * @property testID Optional deterministic selector for tests and Storybook.\n */\nexport interface AdaptersPageProps {\n  configByDomain?: Partial<Record<AdapterDomain, DomainAdapterConfig>>;\n  onNavigateDetail?: (domain: AdapterDomain) => void;\n  onConfigure?: (\n    domain: AdapterDomain,\n    config: DomainAdapterConfig,\n  ) => Promise<void> | void;\n  reducedMotion?: boolean;\n  registryEntries?: RegistryEntry[];\n  style?: StyleProp<ViewStyle>;\n  testID?: string;\n}\n\n/**\n * Renders the native overview dashboard for all adapter domains.\n *\n * @param props Overview page props including optional navigation and registry rows.\n * @returns A React Native adapters page with metrics, filters, and configuration modal.\n * @example\n * ```tsx\n * <AdaptersPage onNavigateDetail={(domain) => router.push(domain)} />\n * ```\n */\nexport function AdaptersPage(props: AdaptersPageProps): JSX.Element {\n  const { reducedMotion = false, style } = props;\n  return (\n    <ErrorBoundaryBridge style={style} testID=\"adapters-page-error-boundary\">\n      <AdaptersPageContent\n        configByDomain={props.configByDomain}\n        onNavigateDetail={props.onNavigateDetail}\n        onConfigure={props.onConfigure}\n        reducedMotion={reducedMotion}\n        registryEntries={props.registryEntries}\n        style={props.style}\n        testID={props.testID}\n      />\n    </ErrorBoundaryBridge>\n  );\n}\n\nfunction AdaptersPageContent({\n  configByDomain,\n  onNavigateDetail,\n  onConfigure,\n  reducedMotion,\n  registryEntries,\n  style,\n  testID,\n}: Required<Pick<AdaptersPageProps, \"reducedMotion\">> &\n  Omit<AdaptersPageProps, \"reducedMotion\">): JSX.Element {\n  const { statuses, isLoading } = useAdapters();\n  const [selectedDomain, setSelectedDomain] = useState<AdapterDomain | null>(\n    null,\n  );\n  const [filterStatus, setFilterStatus] = useState<\n    AdapterStatusType | undefined\n  >();\n  const initialConfigFor = (domain: AdapterDomain) =>\n    configByDomain?.[domain] ??\n    (isAdaptersConfigured() ? getDomainConfig(domain) : undefined) ??\n    undefined;\n\n  const counts = {\n    connected: adapterDomains.filter(\n      (domain: AdapterDomain) => statuses[domain]?.status === \"connected\",\n    ).length,\n    error: adapterDomains.filter(\n      (domain: AdapterDomain) => statuses[domain]?.status === \"error\",\n    ).length,\n    total: adapterDomains.length,\n  };\n\n  const handleSelect = (domain: AdapterDomain) => {\n    if (onNavigateDetail) {\n      onNavigateDetail(domain);\n      return;\n    }\n    setSelectedDomain(domain);\n  };\n\n  return (\n    <ScrollView\n      accessibilityLabel=\"Adapters overview\"\n      contentContainerStyle={[styles.page, style]}\n      keyboardShouldPersistTaps=\"handled\"\n      testID={testID ?? \"adapters-page\"}\n    >\n      <View style={styles.header}>\n        <Text accessibilityRole=\"header\" style={styles.title}>\n          Adapters\n        </Text>\n        <Text style={styles.subtitle}>\n          Manage database, auth, AI, storage, payments, admin, and logging.\n        </Text>\n      </View>\n\n      <View style={styles.metrics}>\n        <View style={styles.metricCard}>\n          <Text style={styles.metricLabel}>Total</Text>\n          <Text style={styles.metricValue}>{counts.total}</Text>\n          <Text style={styles.metricHint}>adapter domains</Text>\n        </View>\n        <View style={[styles.metricCard, styles.connectedMetric]}>\n          <Text style={styles.metricLabel}>Connected</Text>\n          <Text style={styles.metricValue}>{counts.connected}</Text>\n          <Text style={styles.metricHint}>active adapters</Text>\n        </View>\n        {counts.error > 0 && (\n          <View style={[styles.metricCard, styles.errorMetric]}>\n            <Text style={styles.metricLabel}>Errors</Text>\n            <Text style={styles.metricValue}>{counts.error}</Text>\n            <Text style={styles.metricHint}>need attention</Text>\n          </View>\n        )}\n      </View>\n\n      <View style={styles.filters}>\n        <Pressable\n          accessibilityLabel=\"Show all adapters\"\n          accessibilityRole=\"button\"\n          accessibilityState={{ selected: filterStatus === undefined }}\n          onPress={() => setFilterStatus(undefined)}\n          style={[styles.filter, !filterStatus && styles.activeFilter]}\n          testID=\"adapter-filter-all\"\n        >\n          <Text style={styles.filterText}>All</Text>\n        </Pressable>\n        {adapterStatuses.map((status: AdapterStatusType) => (\n          <Pressable\n            accessibilityLabel={`Filter adapters by ${status}`}\n            accessibilityRole=\"button\"\n            accessibilityState={{ selected: filterStatus === status }}\n            key={status}\n            onPress={() =>\n              setFilterStatus((current: AdapterStatusType | undefined) =>\n                current === status ? undefined : status,\n              )\n            }\n            style={[\n              styles.filter,\n              filterStatus === status && styles.activeFilter,\n            ]}\n            testID={`adapter-filter-${status}`}\n          >\n            <Text style={styles.filterText}>{status}</Text>\n          </Pressable>\n        ))}\n      </View>\n\n      {registryEntries && registryEntries.length > 0 && (\n        <View style={styles.registry}>\n          <Text style={styles.sectionLabel}>Adapter Registry</Text>\n          {registryEntries.map((entry) => (\n            <View\n              key={`${entry.domain}-${entry.provider}`}\n              style={styles.registryRow}\n            >\n              <View>\n                <Text style={styles.registryDomain}>{entry.domain}</Text>\n                <Text style={styles.registryProvider}>{entry.provider}</Text>\n              </View>\n              <AdapterStatusBadge status={entry.status} />\n            </View>\n          ))}\n        </View>\n      )}\n\n      <AdapterList\n        filterStatus={filterStatus}\n        onSelect={handleSelect}\n        testID={isLoading ? \"adapters-list-loading\" : \"adapters-list\"}\n      />\n\n      <Modal\n        animationType={reducedMotion ? \"none\" : \"slide\"}\n        onRequestClose={() => setSelectedDomain(null)}\n        testID=\"adapter-config-modal\"\n        transparent\n        visible={selectedDomain !== null}\n      >\n        <View style={styles.modalBackdrop}>\n          <View\n            accessibilityLabel={\n              selectedDomain\n                ? `Configure ${DOMAIN_LABELS[selectedDomain]} adapter`\n                : \"Configure adapter\"\n            }\n            accessibilityViewIsModal\n            accessibilityRole=\"summary\"\n            style={styles.modalPanel}\n            testID=\"adapter-config-modal-panel\"\n          >\n            {selectedDomain && (\n              <AdapterConfigForm\n                domain={selectedDomain}\n                initialConfig={initialConfigFor(selectedDomain)}\n                onCancel={() => setSelectedDomain(null)}\n                onSave={async (config) => {\n                  await onConfigure?.(selectedDomain, config);\n                  setSelectedDomain(null);\n                }}\n              />\n            )}\n          </View>\n        </View>\n      </Modal>\n    </ScrollView>\n  );\n}\n\nconst styles = StyleSheet.create({\n  activeFilter: {\n    backgroundColor: semanticColors.brand.bgSoft,\n    borderColor: semanticColors.brand.border,\n  },\n  connectedMetric: {\n    backgroundColor: semanticColors.status.connected.bg,\n    borderColor: semanticColors.status.connected.border,\n  },\n  errorMetric: {\n    backgroundColor: semanticColors.status.error.bg,\n    borderColor: semanticColors.status.error.border,\n  },\n  filter: {\n    backgroundColor: semanticColors.surface.card,\n    borderColor: semanticColors.surface.border,\n    borderRadius: 999,\n    borderWidth: 1,\n    paddingHorizontal: 12,\n    paddingVertical: 7,\n  },\n  filterText: {\n    color: semanticColors.surface.textSoft,\n    fontSize: 12,\n    fontWeight: \"800\",\n    textTransform: \"capitalize\",\n  },\n  filters: {\n    flexDirection: \"row\",\n    flexWrap: \"wrap\",\n    gap: 8,\n  },\n  header: {\n    gap: 4,\n  },\n  metricCard: {\n    backgroundColor: semanticColors.surface.card,\n    borderColor: semanticColors.surface.border,\n    borderRadius: 10,\n    borderWidth: 1,\n    flex: 1,\n    minWidth: 110,\n    padding: 14,\n  },\n  metricHint: {\n    color: semanticColors.surface.textMuted,\n    fontSize: 11,\n    marginTop: 2,\n  },\n  metricLabel: {\n    color: semanticColors.surface.textMuted,\n    fontSize: 11,\n    fontWeight: \"800\",\n    textTransform: \"uppercase\",\n  },\n  metricValue: {\n    color: semanticColors.surface.text,\n    fontSize: 26,\n    fontWeight: \"900\",\n    marginTop: 4,\n  },\n  metrics: {\n    flexDirection: \"row\",\n    flexWrap: \"wrap\",\n    gap: 10,\n  },\n  modalBackdrop: {\n    backgroundColor: semanticColors.surface.overlay,\n    flex: 1,\n    justifyContent: \"flex-end\",\n  },\n  modalPanel: {\n    backgroundColor: semanticColors.surface.bg,\n    borderTopLeftRadius: 18,\n    borderTopRightRadius: 18,\n    padding: 16,\n  },\n  page: {\n    backgroundColor: semanticColors.surface.bg,\n    gap: 18,\n    padding: 16,\n  },\n  registry: {\n    backgroundColor: semanticColors.surface.card,\n    borderColor: semanticColors.surface.border,\n    borderRadius: 10,\n    borderWidth: 1,\n    gap: 10,\n    padding: 14,\n  },\n  registryDomain: {\n    color: semanticColors.surface.text,\n    fontSize: 13,\n    fontWeight: \"800\",\n  },\n  registryProvider: {\n    color: semanticColors.surface.textMuted,\n    fontSize: 12,\n  },\n  registryRow: {\n    alignItems: \"center\",\n    flexDirection: \"row\",\n    justifyContent: \"space-between\",\n  },\n  sectionLabel: {\n    color: semanticColors.surface.textMuted,\n    fontSize: 11,\n    fontWeight: \"800\",\n    textTransform: \"uppercase\",\n  },\n  subtitle: {\n    color: semanticColors.surface.textMuted,\n    fontSize: 14,\n    lineHeight: 20,\n  },\n  title: {\n    color: semanticColors.surface.text,\n    fontSize: 28,\n    fontWeight: \"900\",\n  },\n});\n","/**\n * @module index\n * @package @geenius/adapters/react-native\n * @description Re-exports the public React Native adapter package surface.\n * The provider and UI affordances mirror the React reference contract while\n * rendering through native primitives instead of DOM nodes or CSS.\n */\n\n/** @doc Public React Native loading, error, and toast bridge components. */\nexport { ErrorBoundaryBridge, LoadingBridge, ToastBridge } from \"./bridges\";\n/** @doc Public React Native adapter status, card, list, and configuration form components. */\nexport {\n  AdapterCard,\n  AdapterConfigForm,\n  AdapterList,\n  AdapterStatusBadge,\n} from \"./components\";\n/**\n * Joins truthy class-name fragments for compatibility with shared examples.\n *\n * @param classes Class-name fragments or falsy placeholders.\n * @returns A space-delimited class-name string.\n * @example\n * ```ts\n * const className = cn(\"base\", isActive && \"active\");\n * ```\n */\nexport function cn(...classes: (string | false | null | undefined)[]): string {\n  return classes.filter(Boolean).join(\" \");\n}\n/** @doc Public React hooks for all configured adapter domains and status state. */\nexport {\n  useAdapterStatus,\n  useAdapterStatuses,\n  useAdapters,\n  useAdmin,\n  useAi,\n  useAuth,\n  useAuthAdapter,\n  useDb,\n  useFileStorage,\n  useIsAdapterReady,\n  useLogger,\n  usePayments,\n  useStorage,\n} from \"./hooks\";\n/** @doc Public React Native route-ready adapter overview and detail pages. */\nexport { AdapterDetailPage, AdaptersPage } from \"./pages\";\n/** @doc Public React Native context provider, provider alias, and context access hook. */\nexport {\n  AdapterProvider,\n  AdaptersProvider,\n  useAdapterContext,\n} from \"./provider\";\n/** @doc Public React Native provider, component, bridge, page, and adapter status prop types. */\nexport type {\n  AdapterCardProps,\n  AdapterConfigFormProps,\n  AdapterContextValue,\n  AdapterDetailPageProps,\n  AdapterHealthProbeMap,\n  AdapterListProps,\n  AdapterProviderProps,\n  AdapterRegistry,\n  AdapterSet,\n  AdapterStatusBadgeProps,\n  AdaptersPageProps,\n  ErrorBoundaryBridgeProps,\n  LoadingBridgeProps,\n  ReactNativeAsyncStorage,\n  ToastBridgeProps,\n} from \"./types\";\n"]}