@chuzi/shared 1.3.38 → 1.3.39

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/config/index.ts","../../src/themes/index.ts","../../src/ui/theme/RealmThemeProvider.tsx","../../src/ui/Button.tsx","../../src/ui/FilmCard.tsx","../../src/ui/CreditBadge.tsx"],"names":["jsx","t","Text","styles","Pressable","StyleSheet","jsxs","View"],"mappings":";;;;;;;AA6BA,IAAI,+BAAsD,EAAC;AAyGpD,IAAM,MAAA,GAA2C;AAAA,EACtD,MAAA,EAAQ;AAAA,IACN,KAAA,EAAO,cAAA;AAAA,IACP,WAAA,EAAa,QAAA;AAAA,IACb,OAAA,EAAS;AAAA,MACP,KAAA,EAAO,QAAA;AAAA,MACP,KAAA,EAAO,aAAA;AAAA,MACP,KAAA,EAAO,QAAA;AAAA,MACP,YAAA,EAAc,YAAA;AAAA,MACd,IAAA,EAAM,QAAA;AAAA,MACN,gBAAA,EAAkB,YAAA;AAAA,MAClB,eAAA,EAAiB,cAAA;AAAA,MACjB,qBAAA,EAAuB,MAAA;AAAA,MACvB,MAAA,EAAQ,SAAA;AAAA,MACR,OAAA,EAAS,YAAA;AAAA,MACT,YAAA,EAAc,iBAAA;AAAA,MACd,aAAA,EAAe,kBAAA;AAAA,MACf,MAAA,EAAQ,iBAAA;AAAA,MACR,OAAA,EAAS,QAAA;AAAA,MACT,qBAAA,EAAuB,aAAA;AAAA,MACvB,OAAA,EAAS,SAAA;AAAA,MACT,UAAA,EAAY,WAAA;AAAA,MACZ,WAAA,EAAa,YAAA;AAAA,MACb,UAAA,EAAY,iBAAA;AAAA,MACZ,cAAA,EAAgB,sBAAA;AAAA,MAChB,aAAA,EAAe,gBAAA;AAAA,MACf,YAAA,EAAc,SAAA;AAAA,MACd,aAAA,EAAe,cAAA;AAAA,MACf,gBAAA,EAAkB,mBAAA;AAAA,MAClB,aAAA,EAAe,eAAA;AAAA,MACf,KAAA,EAAO,OAAA;AAAA,MACP,aAAA,EAAe,+BAAA;AAAA,MACf,WAAA,EAAa,4BAAA;AAAA,MACb,iBAAA,EAAmB,0CAAA;AAAA,MACnB,oBAAA,EAAsB,mCAAA;AAAA,MACtB,sBAAA,EAAwB,yBAAA;AAAA,MACxB,iBAAA,EAAmB,iBAAA;AAAA,MACnB,gBAAA,EAAkB,aAAA;AAAA,MAClB,sBAAA,EAAwB,mBAAA;AAAA,MACxB,YAAA,EAAc,eAAA;AAAA,MACd,gBAAA,EAAkB,QAAA;AAAA,MAClB,iBAAA,EAAmB,oBAAA;AAAA,MACnB,mBAAA,EAAqB,cAAA;AAAA,MACrB,iBAAA,EAAmB,oBAAA;AAAA,MACnB,cAAA,EAAgB,gBAAA;AAAA,MAChB,yBAAA,EAA2B,gBAAA;AAAA,MAC3B,qBAAA,EAAuB,uBAAA;AAAA,MACvB,OAAA,EAAS,cAAA;AAAA,MACT,cAAA,EAAgB,YAAA;AAAA,MAChB,eAAA,EAAiB,UAAA;AAAA,MACjB,mBAAA,EAAqB,qBAAA;AAAA,MACrB,oBAAA,EAAsB,sBAAA;AAAA,MACtB,gBAAA,EAAkB,SAAA;AAAA,MAClB,cAAA,EAAgB,SAAA;AAAA,MAChB,qBAAA,EAAuB,eAAA;AAAA,MACvB,kBAAA,EAAoB,YAAA;AAAA,MACpB,iBAAA,EAAmB,mBAAA;AAAA,MACnB,sBAAA,EAAwB,kCAAA;AAAA,MACxB,mBAAA,EAAqB,YAAA;AAAA,MACrB,WAAA,EAAa,QAAA;AAAA,MACb,YAAA,EAAc,MAAA;AAAA,MACd,iBAAA,EAAmB,gBAAA;AAAA,MACnB,iBAAA,EAAmB,YAAA;AAAA,MACnB,WAAA,EAAa,MAAA;AAAA,MACb,eAAA,EAAiB,0BAAA;AAAA,MACjB,gBAAA,EAAkB,oBAAA;AAAA,MAClB,iBAAA,EAAmB,wBAAA;AAAA,MACnB,iBAAA,EAAmB,WAAA;AAAA,MACnB,WAAA,EAAa,SAAA;AAAA,MACb,aAAA,EAAe,OAAA;AAAA,MACf,mBAAA,EAAqB,cAAA;AAAA,MACrB,yBAAA,EAA2B,kBAAA;AAAA,MAC3B,wBAAA,EAA0B,YAAA;AAAA,MAC1B,uBAAA,EAAyB,cAAA;AAAA,MACzB,2BAAA,EAA6B,wBAAA;AAAA,MAC7B,0BAAA,EAA4B,yCAAA;AAAA,MAC5B,kBAAA,EAAoB,UAAA;AAAA,MACpB,kBAAA,EAAoB,uBAAA;AAAA,MACpB,oBAAA,EAAsB,2BAAA;AAAA,MACtB,uBAAA,EAAyB,yCAAA;AAAA,MACzB,wBAAA,EAA0B,0CAAA;AAAA,MAC1B,yBAAA,EAA2B,uCAAA;AAAA,MAC3B,gBAAA,EAAkB,mBAAA;AAAA,MAClB,gBAAA,EAAkB,eAAA;AAAA,MAClB,eAAA,EAAiB,YAAA;AAAA,MACjB,yBAAA,EAA2B,kCAAA;AAAA,MAC3B,qBAAA,EAAuB,uBAAA;AAAA,MACvB,0BAAA,EAA4B,sBAAA;AAAA,MAC5B,qBAAA,EAAuB,cAAA;AAAA,MACvB,gBAAA,EAAkB,kCAAA;AAAA,MAClB,qBAAA,EAAuB,iDAAA;AAAA,MACvB,mBAAA,EAAqB,qBAAA;AAAA,MACrB,qBAAA,EAAuB,4BAAA;AAAA,MACvB,sBAAA,EAAwB,MAAA;AAAA,MACxB,yBAAA,EAA2B,SAAA;AAAA,MAC3B,sBAAA,EAAwB,MAAA;AAAA,MACxB,wBAAA,EAA0B,SAAA;AAAA,MAC1B,6BAAA,EAA+B,6BAAA;AAAA,MAC/B,yBAAA,EAA2B,WAAA;AAAA,MAC3B,sBAAA,EAAwB,MAAA;AAAA,MACxB,uBAAA,EAAyB,YAAA;AAAA,MACzB,4BAAA,EAA8B,YAAA;AAAA,MAC9B,uBAAA,EAAyB,8BAAA;AAAA,MACzB,eAAA,EAAiB,UAAA;AAAA,MACjB,yBAAA,EAA2B,oBAAA;AAAA,MAC3B,wBAAA,EAA0B,QAAA;AAAA,MAC1B,kBAAA,EAAoB,MAAA;AAAA,MACpB,qBAAA,EAAuB,YAAA;AAAA,MACvB,mBAAA,EAAqB,SAAA;AAAA,MACrB,oBAAA,EAAsB,UAAA;AAAA,MACtB,oBAAA,EAAsB,UAAA;AAAA,MACtB,mBAAA,EAAqB,gBAAA;AAAA,MACrB,sBAAA,EAAwB,SAAA;AAAA,MACxB,kBAAA,EAAoB,0BAAA;AAAA,MACpB,2BAAA,EAA6B,eAAA;AAAA,MAC7B,4BAAA,EAA8B,gBAAA;AAAA,MAC9B,4BAAA,EAA8B,SAAA;AAAA,MAC9B,6BAAA,EAA+B,UAAA;AAAA,MAC/B,qBAAA,EAAuB,UAAA;AAAA,MACvB,oBAAA,EAAsB,SAAA;AAAA,MACtB,mBAAA,EAAqB,MAAA;AAAA,MACrB,oBAAA,EAAsB,OAAA;AAAA,MACtB,gCAAA,EAAkC,mCAAA;AAAA,MAClC,6BAAA,EAA+B,gCAAA;AAAA,MAC/B,iBAAA,EAAmB,WAAA;AAAA,MACnB,qBAAA,EAAuB,uBAAA;AAAA,MACvB,iBAAA,EAAmB,gBAAA;AAAA,MACnB,iBAAA,EAAmB,aAAA;AAAA,MACnB,qBAAA,EAAuB,4CAAA;AAAA,MACvB,oBAAA,EAAsB,mBAAA;AAAA,MACtB,oBAAA,EAAsB,kBAAA;AAAA,MACtB,yBAAA,EAA2B,0DAAA;AAAA,MAC3B,gBAAA,EAAkB,MAAA;AAAA,MAClB,mBAAA,EAAqB,YAAA;AAAA,MACrB,oBAAA,EAAsB,YAAA;AAAA,MACtB,qBAAA,EAAuB,cAAA;AAAA,MACvB,2BAAA,EAA6B,qBAAA;AAAA,MAC7B,yBAAA,EAA2B,QAAA;AAAA,MAC3B,uBAAA,EAAyB,SAAA;AAAA,MACzB,0BAAA,EAA4B,SAAA;AAAA,MAC5B,mCAAA,EAAqC,4DAAA;AAAA,MACrC,kBAAA,EAAoB,MAAA;AAAA,MACpB,qBAAA,EAAuB,SAAA;AAAA,MACvB,wBAAA,EAA0B,sDAAA;AAAA,MAC1B,yBAAA,EAA2B,WAAA;AAAA,MAC3B,gBAAA,EAAkB,QAAA;AAAA,MAClB,kBAAA,EAAoB,UAAA;AAAA,MACpB,mBAAA,EAAqB,QAAA;AAAA,MACrB,kBAAA,EAAoB,QAAA;AAAA,MACpB,oBAAA,EAAsB,SAAA;AAAA,MACtB,cAAA,EAAgB,4BAAA;AAAA,MAChB,gBAAA,EAAkB,sBAAA;AAAA,MAClB,YAAA,EAAc,MAAA;AAAA,MACd,eAAA,EAAiB,uBAAA;AAAA,MACjB,kBAAA,EAAoB,UAAA;AAAA,MACpB,kBAAA,EAAoB,QAAA;AAAA,MACpB,aAAA,EAAe,QAAA;AAAA,MACf,oBAAA,EAAsB,kBAAA;AAAA,MACtB,UAAA,EAAY,aAAA;AAAA,MACZ,gBAAA,EAAkB,0BAAA;AAAA,MAClB,UAAA,EAAY,oBAAA;AAAA,MACZ,kBAAA,EAAoB,gBAAA;AAAA,MACpB,UAAA,EAAY,aAAA;AAAA,MACZ,sBAAA,EAAwB,kBAAA;AAAA,MACxB,2BAAA,EAA6B,MAAA;AAAA,MAC7B,4BAAA,EAA8B,kBAAA;AAAA,MAC9B,4BAAA,EAA8B,OAAA;AAAA,MAC9B,2BAAA,EACE,sHAAA;AAAA,MACF,4BAAA,EAA8B,SAAA;AAAA,MAC9B,uCAAA,EAAyC,oBAAA;AAAA,MACzC,2BAAA,EAA6B,YAAA;AAAA,MAC7B,uBAAA,EAAyB,QAAA;AAAA,MACzB,sBAAA,EAAwB,OAAA;AAAA,MACxB,qBAAA,EAAuB,MAAA;AAAA,MACvB,uBAAA,EAAyB,cAAA;AAAA,MACzB,8BAAA,EAAgC,mBAAA;AAAA,MAChC,4BAAA,EAA8B,aAAA;AAAA,MAC9B,0BAAA,EAA4B,kCAAA;AAAA,MAC5B,wBAAA,EAA0B,sCAAA;AAAA,MAC1B,wBAAA,EAA0B,OAAA;AAAA,MAC1B,8BAAA,EAAgC,OAAA;AAAA,MAChC,8BAAA,EAAgC,OAAA;AAAA,MAChC,+BAAA,EAAiC,QAAA;AAAA,MACjC,8BAAA,EAAgC,OAAA;AAAA,MAChC,oCAAA,EAAsC,aAAA;AAAA,MACtC,8BAAA,EAAgC,OAAA;AAAA,MAChC,uCAAA,EAAyC,gBAAA;AAAA,MACzC,8BAAA,EAAgC,OAAA;AAAA,MAChC,6BAAA,EAA+B,MAAA;AAAA,MAC/B,6BAAA,EAA+B,MAAA;AAAA,MAC/B,8BAAA,EAAgC,OAAA;AAAA,MAChC,iCAAA,EAAmC,UAAA;AAAA,MACnC,mCAAA,EAAqC,YAAA;AAAA,MACrC,sCAAA,EAAwC,eAAA;AAAA,MACxC,+BAAA,EAAiC,cAAA;AAAA,MACjC,wBAAA,EAA0B,OAAA;AAAA,MAC1B,6BAAA,EAA+B,yBAAA;AAAA,MAC/B,+BAAA,EAAiC,cAAA;AAAA,MACjC,+BAAA,EAAiC,cAAA;AAAA,MACjC,gCAAA,EAAkC,eAAA;AAAA,MAClC,iCAAA,EAAmC,wBAAA;AAAA,MACnC,+BAAA,EAAiC,gBAAA;AAAA,MACjC,6BAAA,EAA+B,YAAA;AAAA,MAC/B,+BAAA,EAAiC,cAAA;AAAA,MACjC,4BAAA,EAA8B,gDAAA;AAAA,MAC9B,2BAAA,EAA6B,mCAAA;AAAA,MAC7B,wBAAA,EACE,0GAAA;AAAA,MACF,wBAAA,EAA0B,eAAA;AAAA,MAC1B,+BAAA,EAAiC,+BAAA;AAAA,MACjC,8BAAA,EAAgC,sBAAA;AAAA,MAChC,4BAAA,EAA8B,WAAA;AAAA,MAC9B,yBAAA,EAA2B,QAAA;AAAA,MAC3B,oCAAA,EACE,8DAAA;AAAA,MACF,+BAAA,EAAiC,6BAAA;AAAA,MACjC,+BAAA,EAAiC,cAAA;AAAA,MACjC,mCAAA,EAAqC,YAAA;AAAA,MACrC,oCAAA,EACE,uCAAA;AAAA,MACF,kCAAA,EAAoC,oBAAA;AAAA,MACpC,mCAAA,EACE,8DAAA;AAAA,MACF,sBAAA,EAAwB,OAAA;AAAA,MACxB,+BAAA,EAAiC,UAAA;AAAA,MACjC,4BAAA,EAA8B,SAAA;AAAA,MAC9B,wBAAA,EAA0B,eAAA;AAAA,MAC1B,eAAA,EAAiB,SAAA;AAAA,MACjB,eAAA,EAAiB,SAAA;AAAA,MACjB,oBAAA,EAAsB,0CAAA;AAAA,MACtB,oBAAA,EAAsB,qCAAA;AAAA,MACtB,mBAAA,EAAqB,sBAAA;AAAA,MACrB,yBAAA,EAA2B,UAAA;AAAA,MAC3B,mBAAA,EAAqB,sBAAA;AAAA,MACrB,eAAA,EAAiB,eAAA;AAAA,MACjB,qBAAA,EAAuB,kCAAA;AAAA,MACvB,gBAAA,EAAkB,0BAAA;AAAA,MAClB,6BAAA,EAA+B,uBAAA;AAAA,MAC/B,kBAAA,EAAoB,2BAAA;AAAA,MACpB,yBAAA,EAA2B,6BAAA;AAAA,MAC3B,uBAAA,EAAyB,4BAAA;AAAA,MACzB,oBAAA,EACE,0DAAA;AAAA,MACF,2BAAA,EAA6B,yCAAA;AAAA,MAC7B,yBAAA,EAA2B,yBAAA;AAAA,MAC3B,wBAAA,EAA0B,2BAAA;AAAA,MAC1B,sBAAA,EAAwB,wCAAA;AAAA,MACxB,mBAAA,EAAqB,mBAAA;AAAA,MACrB,iBAAA,EAAmB,iBAAA;AAAA,MACnB,sBAAA,EAAwB,mCAAA;AAAA,MACxB,uBAAA,EAAyB,wBAAA;AAAA,MACzB,yBAAA,EAA2B,wDAAA;AAAA,MAC3B,sBAAA,EAAwB,uBAAA;AAAA,MACxB,2BAAA,EAA6B,sCAAA;AAAA,MAC7B,wCAAA,EAA0C,iBAAA;AAAA,MAC1C,mCAAA,EAAqC,YAAA;AAAA,MACrC,wCAAA,EAA0C,iBAAA;AAAA,MAC1C,8BAAA,EAAgC,aAAA;AAAA,MAChC,+BAAA,EAAiC,4BAAA;AAAA,MACjC,+BAAA,EAAiC,yBAAA;AAAA,MACjC,+BAAA,EAAiC,6BAAA;AAAA,MACjC,sCAAA,EAAwC,8BAAA;AAAA,MACxC,8BAAA,EAAgC,qBAAA;AAAA,MAChC,mCAAA,EAAqC;AAAA,KACvC;AAAA,IACA,OAAA,EAAS;AAAA,MACP,EAAA,EAAI;AAAA,QACF,KAAA,EAAO,SAAA;AAAA,QACP,KAAA,EAAO,iBAAA;AAAA,QACP,KAAA,EAAO,SAAA;AAAA,QACP,YAAA,EAAc,aAAA;AAAA,QACd,MAAA,EAAQ,SAAA;AAAA,QACR,OAAA,EAAS,eAAA;AAAA,QACT,MAAA,EAAQ,sBAAA;AAAA,QACR,OAAA,EAAS,QAAA;AAAA,QACT,OAAA,EAAS,iBAAA;AAAA,QACT,cAAA,EAAgB,+BAAA;AAAA,QAChB,iBAAA,EAAmB,uBAAA;AAAA,QACnB,sBAAA,EAAwB,+BAAA;AAAA,QACxB,YAAA,EAAc,qBAAA;AAAA,QACd,UAAA,EAAY;AAAA,OACd;AAAA,MACA,EAAA,EAAI;AAAA,QACF,KAAA,EAAO,SAAA;AAAA,QACP,KAAA,EAAO,sBAAA;AAAA,QACP,KAAA,EAAO,YAAA;AAAA,QACP,YAAA,EAAc,aAAA;AAAA,QACd,MAAA,EAAQ,UAAA;AAAA,QACR,OAAA,EAAS,iBAAA;AAAA,QACT,MAAA,EAAQ,wBAAA;AAAA,QACR,OAAA,EAAS,QAAA;AAAA,QACT,OAAA,EAAS,eAAA;AAAA,QACT,cAAA,EAAgB,iCAAA;AAAA,QAChB,iBAAA,EAAmB,8BAAA;AAAA,QACnB,sBAAA,EAAwB,+BAAA;AAAA,QACxB,YAAA,EAAc,6BAAA;AAAA,QACd,UAAA,EAAY;AAAA,OACd;AAAA,MACA,EAAA,EAAI;AAAA,QACF,KAAA,EAAO,SAAA;AAAA,QACP,KAAA,EAAO,aAAA;AAAA,QACP,KAAA,EAAO,QAAA;AAAA,QACP,MAAA,EAAQ,WAAA;AAAA,QACR,OAAA,EAAS;AAAA,OACX;AAAA,MACA,EAAA,EAAI;AAAA,QACF,KAAA,EAAO,YAAA;AAAA,QACP,KAAA,EAAO,iBAAA;AAAA,QACP,KAAA,EAAO,SAAA;AAAA,QACP,MAAA,EAAQ,UAAA;AAAA,QACR,OAAA,EAAS;AAAA;AACX;AACF,GACF;AAAA,EACA,KAAA,EAAO;AAAA,IACL,KAAA,EAAO,aAAA;AAAA,IACP,WAAA,EAAa,OAAA;AAAA,IACb,OAAA,EAAS;AAAA,MACP,KAAA,EAAO,OAAA;AAAA,MACP,KAAA,EAAO,OAAA;AAAA,MACP,KAAA,EAAO,UAAA;AAAA,MACP,YAAA,EAAc,OAAA;AAAA,MACd,IAAA,EAAM,MAAA;AAAA,MACN,gBAAA,EAAkB,OAAA;AAAA,MAClB,eAAA,EAAiB,OAAA;AAAA,MACjB,qBAAA,EAAuB,UAAA;AAAA,MACvB,MAAA,EAAQ,UAAA;AAAA,MACR,OAAA,EAAS,QAAA;AAAA,MACT,YAAA,EAAc,aAAA;AAAA,MACd,aAAA,EAAe,cAAA;AAAA,MACf,MAAA,EAAQ,WAAA;AAAA,MACR,OAAA,EAAS,OAAA;AAAA,MACT,qBAAA,EAAuB,gBAAA;AAAA,MACvB,OAAA,EAAS,OAAA;AAAA,MACT,UAAA,EAAY,aAAA;AAAA,MACZ,WAAA,EAAa,QAAA;AAAA,MACb,UAAA,EAAY,YAAA;AAAA,MACZ,cAAA,EAAgB,gBAAA;AAAA,MAChB,aAAA,EAAe,eAAA;AAAA,MACf,YAAA,EAAc,WAAA;AAAA,MACd,aAAA,EAAe,QAAA;AAAA,MACf,gBAAA,EAAkB,kBAAA;AAAA,MAClB,aAAA,EAAe,cAAA;AAAA,MACf,KAAA,EAAO,OAAA;AAAA,MACP,aAAA,EAAe,kCAAA;AAAA,MACf,WAAA,EAAa,uBAAA;AAAA,MACb,iBAAA,EAAmB,oCAAA;AAAA,MACnB,oBAAA,EAAsB,kCAAA;AAAA,MACtB,sBAAA,EAAwB,gBAAA;AAAA,MACxB,iBAAA,EAAmB,WAAA;AAAA,MACnB,gBAAA,EAAkB,aAAA;AAAA,MAClB,sBAAA,EAAwB,aAAA;AAAA,MACxB,YAAA,EAAc,cAAA;AAAA,MACd,gBAAA,EAAkB,OAAA;AAAA,MAClB,iBAAA,EAAmB,cAAA;AAAA,MACnB,mBAAA,EAAqB,gBAAA;AAAA,MACrB,iBAAA,EAAmB,cAAA;AAAA,MACnB,cAAA,EAAgB,aAAA;AAAA,MAChB,yBAAA,EAA2B,aAAA;AAAA,MAC3B,qBAAA,EAAuB,oBAAA;AAAA,MACvB,OAAA,EAAS,UAAA;AAAA,MACT,cAAA,EAAgB,KAAA;AAAA,MAChB,eAAA,EAAiB,QAAA;AAAA,MACjB,mBAAA,EAAqB,cAAA;AAAA,MACrB,oBAAA,EAAsB,eAAA;AAAA,MACtB,gBAAA,EAAkB,SAAA;AAAA,MAClB,cAAA,EAAgB,SAAA;AAAA,MAChB,qBAAA,EAAuB,mBAAA;AAAA,MACvB,kBAAA,EAAoB,gBAAA;AAAA,MACpB,iBAAA,EAAmB,aAAA;AAAA,MACnB,sBAAA,EAAwB,4BAAA;AAAA,MACxB,mBAAA,EAAqB,OAAA;AAAA,MACrB,WAAA,EAAa,QAAA;AAAA,MACb,YAAA,EAAc,MAAA;AAAA,MACd,iBAAA,EAAmB,gBAAA;AAAA,MACnB,iBAAA,EAAmB,YAAA;AAAA,MACnB,WAAA,EAAa,MAAA;AAAA,MACb,eAAA,EAAiB,mBAAA;AAAA,MACjB,gBAAA,EAAkB,gBAAA;AAAA,MAClB,iBAAA,EAAmB,iBAAA;AAAA,MACnB,iBAAA,EAAmB,eAAA;AAAA,MACnB,WAAA,EAAa,SAAA;AAAA,MACb,aAAA,EAAe,QAAA;AAAA,MACf,mBAAA,EAAqB,gBAAA;AAAA,MACrB,yBAAA,EAA2B,kBAAA;AAAA,MAC3B,wBAAA,EAA0B,UAAA;AAAA,MAC1B,uBAAA,EAAyB,cAAA;AAAA,MACzB,2BAAA,EAA6B,wBAAA;AAAA,MAC7B,0BAAA,EAA4B,yCAAA;AAAA,MAC5B,kBAAA,EAAoB,eAAA;AAAA,MACpB,kBAAA,EAAoB,YAAA;AAAA,MACpB,oBAAA,EAAsB,sBAAA;AAAA,MACtB,uBAAA,EAAyB,0CAAA;AAAA,MACzB,wBAAA,EAA0B,qCAAA;AAAA,MAC1B,yBAAA,EAA2B,wBAAA;AAAA,MAC3B,gBAAA,EAAkB,YAAA;AAAA,MAClB,gBAAA,EAAkB,aAAA;AAAA,MAClB,eAAA,EAAiB,QAAA;AAAA,MACjB,yBAAA,EAA2B,mCAAA;AAAA,MAC3B,qBAAA,EAAuB,oBAAA;AAAA,MACvB,0BAAA,EAA4B,yBAAA;AAAA,MAC5B,qBAAA,EAAuB,cAAA;AAAA,MACvB,gBAAA,EAAkB,iCAAA;AAAA,MAClB,qBAAA,EAAuB,2CAAA;AAAA,MACvB,mBAAA,EAAqB,cAAA;AAAA,MACrB,qBAAA,EAAuB,4BAAA;AAAA,MACvB,sBAAA,EAAwB,MAAA;AAAA,MACxB,yBAAA,EAA2B,SAAA;AAAA,MAC3B,sBAAA,EAAwB,MAAA;AAAA,MACxB,wBAAA,EAA0B,SAAA;AAAA,MAC1B,6BAAA,EAA+B,6BAAA;AAAA,MAC/B,yBAAA,EAA2B,WAAA;AAAA,MAC3B,sBAAA,EAAwB,MAAA;AAAA,MACxB,uBAAA,EAAyB,YAAA;AAAA,MACzB,4BAAA,EAA8B,YAAA;AAAA,MAC9B,uBAAA,EAAyB,8BAAA;AAAA,MACzB,eAAA,EAAiB,UAAA;AAAA,MACjB,yBAAA,EAA2B,oBAAA;AAAA,MAC3B,wBAAA,EAA0B,QAAA;AAAA,MAC1B,kBAAA,EAAoB,MAAA;AAAA,MACpB,qBAAA,EAAuB,YAAA;AAAA,MACvB,mBAAA,EAAqB,SAAA;AAAA,MACrB,oBAAA,EAAsB,UAAA;AAAA,MACtB,oBAAA,EAAsB,UAAA;AAAA,MACtB,mBAAA,EAAqB,gBAAA;AAAA,MACrB,sBAAA,EAAwB,SAAA;AAAA,MACxB,kBAAA,EAAoB,0BAAA;AAAA,MACpB,2BAAA,EAA6B,eAAA;AAAA,MAC7B,4BAAA,EAA8B,gBAAA;AAAA,MAC9B,4BAAA,EAA8B,SAAA;AAAA,MAC9B,6BAAA,EAA+B,UAAA;AAAA,MAC/B,qBAAA,EAAuB,UAAA;AAAA,MACvB,oBAAA,EAAsB,SAAA;AAAA,MACtB,mBAAA,EAAqB,MAAA;AAAA,MACrB,oBAAA,EAAsB,OAAA;AAAA,MACtB,gCAAA,EAAkC,mCAAA;AAAA,MAClC,6BAAA,EAA+B,gCAAA;AAAA,MAC/B,iBAAA,EAAmB,eAAA;AAAA,MACnB,qBAAA,EAAuB,gBAAA;AAAA,MACvB,iBAAA,EAAmB,WAAA;AAAA,MACnB,iBAAA,EAAmB,iBAAA;AAAA,MACnB,qBAAA,EAAuB,sCAAA;AAAA,MACvB,oBAAA,EAAsB,cAAA;AAAA,MACtB,oBAAA,EAAsB,sBAAA;AAAA,MACtB,yBAAA,EAA2B,yDAAA;AAAA,MAC3B,gBAAA,EAAkB,MAAA;AAAA,MAClB,mBAAA,EAAqB,OAAA;AAAA,MACrB,oBAAA,EAAsB,YAAA;AAAA,MACtB,qBAAA,EAAuB,cAAA;AAAA,MACvB,2BAAA,EAA6B,gBAAA;AAAA,MAC7B,yBAAA,EAA2B,QAAA;AAAA,MAC3B,uBAAA,EAAyB,SAAA;AAAA,MACzB,0BAAA,EAA4B,SAAA;AAAA,MAC5B,mCAAA,EAAqC,sDAAA;AAAA,MACrC,kBAAA,EAAoB,MAAA;AAAA,MACpB,qBAAA,EAAuB,SAAA;AAAA,MACvB,wBAAA,EAA0B,0DAAA;AAAA,MAC1B,yBAAA,EAA2B,QAAA;AAAA,MAC3B,gBAAA,EAAkB,MAAA;AAAA,MAClB,kBAAA,EAAoB,QAAA;AAAA,MACpB,mBAAA,EAAqB,OAAA;AAAA,MACrB,kBAAA,EAAoB,OAAA;AAAA,MACpB,oBAAA,EAAsB,OAAA;AAAA,MACtB,cAAA,EAAgB,0BAAA;AAAA,MAChB,gBAAA,EAAkB,wBAAA;AAAA,MAClB,YAAA,EAAc,OAAA;AAAA,MACd,eAAA,EAAiB,kBAAA;AAAA,MACjB,kBAAA,EAAoB,QAAA;AAAA,MACpB,kBAAA,EAAoB,QAAA;AAAA,MACpB,aAAA,EAAe,QAAA;AAAA,MACf,oBAAA,EAAsB,gBAAA;AAAA,MACtB,UAAA,EAAY,WAAA;AAAA,MACZ,gBAAA,EAAkB,wBAAA;AAAA,MAClB,UAAA,EAAY,kBAAA;AAAA,MACZ,kBAAA,EAAoB,QAAA;AAAA,MACpB,UAAA,EAAY,WAAA;AAAA,MACZ,sBAAA,EAAwB,kBAAA;AAAA,MACxB,2BAAA,EAA6B,MAAA;AAAA,MAC7B,4BAAA,EAA8B,kBAAA;AAAA,MAC9B,4BAAA,EAA8B,OAAA;AAAA,MAC9B,2BAAA,EACE,sHAAA;AAAA,MACF,4BAAA,EAA8B,SAAA;AAAA,MAC9B,uCAAA,EAAyC,oBAAA;AAAA,MACzC,2BAAA,EAA6B,YAAA;AAAA,MAC7B,uBAAA,EAAyB,QAAA;AAAA,MACzB,sBAAA,EAAwB,OAAA;AAAA,MACxB,qBAAA,EAAuB,MAAA;AAAA,MACvB,uBAAA,EAAyB,cAAA;AAAA,MACzB,8BAAA,EAAgC,mBAAA;AAAA,MAChC,4BAAA,EAA8B,aAAA;AAAA,MAC9B,0BAAA,EAA4B,kCAAA;AAAA,MAC5B,wBAAA,EAA0B,sCAAA;AAAA,MAC1B,wBAAA,EAA0B,OAAA;AAAA,MAC1B,8BAAA,EAAgC,OAAA;AAAA,MAChC,8BAAA,EAAgC,OAAA;AAAA,MAChC,+BAAA,EAAiC,QAAA;AAAA,MACjC,8BAAA,EAAgC,OAAA;AAAA,MAChC,oCAAA,EAAsC,aAAA;AAAA,MACtC,8BAAA,EAAgC,OAAA;AAAA,MAChC,uCAAA,EAAyC,gBAAA;AAAA,MACzC,8BAAA,EAAgC,OAAA;AAAA,MAChC,6BAAA,EAA+B,MAAA;AAAA,MAC/B,6BAAA,EAA+B,MAAA;AAAA,MAC/B,8BAAA,EAAgC,OAAA;AAAA,MAChC,iCAAA,EAAmC,UAAA;AAAA,MACnC,mCAAA,EAAqC,YAAA;AAAA,MACrC,sCAAA,EAAwC,eAAA;AAAA,MACxC,+BAAA,EAAiC,cAAA;AAAA,MACjC,wBAAA,EAA0B,OAAA;AAAA,MAC1B,6BAAA,EAA+B,yBAAA;AAAA,MAC/B,+BAAA,EAAiC,cAAA;AAAA,MACjC,+BAAA,EAAiC,cAAA;AAAA,MACjC,gCAAA,EAAkC,eAAA;AAAA,MAClC,iCAAA,EAAmC,wBAAA;AAAA,MACnC,+BAAA,EAAiC,gBAAA;AAAA,MACjC,6BAAA,EAA+B,YAAA;AAAA,MAC/B,+BAAA,EAAiC,cAAA;AAAA,MACjC,4BAAA,EAA8B,gDAAA;AAAA,MAC9B,2BAAA,EAA6B,mCAAA;AAAA,MAC7B,wBAAA,EACE,0GAAA;AAAA,MACF,wBAAA,EAA0B,eAAA;AAAA,MAC1B,+BAAA,EAAiC,+BAAA;AAAA,MACjC,8BAAA,EAAgC,sBAAA;AAAA,MAChC,4BAAA,EAA8B,WAAA;AAAA,MAC9B,yBAAA,EAA2B,QAAA;AAAA,MAC3B,oCAAA,EACE,8DAAA;AAAA,MACF,+BAAA,EAAiC,6BAAA;AAAA,MACjC,+BAAA,EAAiC,cAAA;AAAA,MACjC,mCAAA,EAAqC,YAAA;AAAA,MACrC,oCAAA,EACE,uCAAA;AAAA,MACF,kCAAA,EAAoC,oBAAA;AAAA,MACpC,mCAAA,EACE,8DAAA;AAAA,MACF,sBAAA,EAAwB,OAAA;AAAA,MACxB,+BAAA,EAAiC,UAAA;AAAA,MACjC,4BAAA,EAA8B,SAAA;AAAA,MAC9B,wBAAA,EAA0B,eAAA;AAAA,MAC1B,eAAA,EAAiB,SAAA;AAAA,MACjB,eAAA,EAAiB,SAAA;AAAA,MACjB,oBAAA,EAAsB,0CAAA;AAAA,MACtB,oBAAA,EAAsB,qCAAA;AAAA,MACtB,mBAAA,EAAqB,sBAAA;AAAA,MACrB,yBAAA,EAA2B,UAAA;AAAA,MAC3B,mBAAA,EAAqB,sBAAA;AAAA,MACrB,eAAA,EAAiB,eAAA;AAAA,MACjB,qBAAA,EAAuB,kCAAA;AAAA,MACvB,gBAAA,EAAkB,0BAAA;AAAA,MAClB,6BAAA,EAA+B,uBAAA;AAAA,MAC/B,kBAAA,EAAoB,2BAAA;AAAA,MACpB,yBAAA,EAA2B,6BAAA;AAAA,MAC3B,uBAAA,EAAyB,4BAAA;AAAA,MACzB,oBAAA,EACE,0DAAA;AAAA,MACF,2BAAA,EAA6B,yCAAA;AAAA,MAC7B,yBAAA,EAA2B,yBAAA;AAAA,MAC3B,wBAAA,EAA0B,2BAAA;AAAA,MAC1B,sBAAA,EAAwB,wCAAA;AAAA,MACxB,mBAAA,EAAqB,mBAAA;AAAA,MACrB,iBAAA,EAAmB,iBAAA;AAAA,MACnB,sBAAA,EAAwB,mCAAA;AAAA,MACxB,uBAAA,EAAyB,wBAAA;AAAA,MACzB,yBAAA,EAA2B,wDAAA;AAAA,MAC3B,sBAAA,EAAwB,uBAAA;AAAA,MACxB,2BAAA,EAA6B,sCAAA;AAAA,MAC7B,wCAAA,EAA0C,iBAAA;AAAA,MAC1C,mCAAA,EAAqC,YAAA;AAAA,MACrC,wCAAA,EAA0C,iBAAA;AAAA,MAC1C,8BAAA,EAAgC,aAAA;AAAA,MAChC,+BAAA,EAAiC,4BAAA;AAAA,MACjC,+BAAA,EAAiC,yBAAA;AAAA,MACjC,+BAAA,EAAiC,6BAAA;AAAA,MACjC,sCAAA,EAAwC,8BAAA;AAAA,MACxC,8BAAA,EAAgC,qBAAA;AAAA,MAChC,mCAAA,EAAqC;AAAA,KACvC;AAAA,IACA,OAAA,EAAS;AAAA,MACP,EAAA,EAAI;AAAA,QACF,KAAA,EAAO,OAAA;AAAA,QACP,KAAA,EAAO,UAAA;AAAA,QACP,KAAA,EAAO,OAAA;AAAA,QACP,YAAA,EAAc,SAAA;AAAA,QACd,MAAA,EAAQ,SAAA;AAAA,QACR,OAAA,EAAS,OAAA;AAAA,QACT,MAAA,EAAQ,SAAA;AAAA,QACR,OAAA,EAAS,SAAA;AAAA,QACT,OAAA,EAAS,WAAA;AAAA,QACT,cAAA,EAAgB,wBAAA;AAAA,QAChB,iBAAA,EAAmB,gBAAA;AAAA,QACnB,sBAAA,EAAwB,0BAAA;AAAA,QACxB,YAAA,EAAc,mBAAA;AAAA,QACd,UAAA,EAAY;AAAA,OACd;AAAA,MACA,EAAA,EAAI;AAAA,QACF,KAAA,EAAO,OAAA;AAAA,QACP,KAAA,EAAO,SAAA;AAAA,QACP,KAAA,EAAO,cAAA;AAAA,QACP,YAAA,EAAc,SAAA;AAAA,QACd,MAAA,EAAQ,UAAA;AAAA,QACR,OAAA,EAAS,YAAA;AAAA,QACT,MAAA,EAAQ,mBAAA;AAAA,QACR,OAAA,EAAS,SAAA;AAAA,QACT,OAAA,EAAS,SAAA;AAAA,QACT,cAAA,EAAgB,oBAAA;AAAA,QAChB,iBAAA,EAAmB,iBAAA;AAAA,QACnB,sBAAA,EAAwB,kBAAA;AAAA,QACxB,YAAA,EAAc,0BAAA;AAAA,QACd,UAAA,EAAY;AAAA,OACd;AAAA,MACA,EAAA,EAAI;AAAA,QACF,KAAA,EAAO,MAAA;AAAA,QACP,KAAA,EAAO,MAAA;AAAA,QACP,KAAA,EAAO,UAAA;AAAA,QACP,MAAA,EAAQ,UAAA;AAAA,QACR,OAAA,EAAS;AAAA,OACX;AAAA,MACA,EAAA,EAAI;AAAA,QACF,KAAA,EAAO,OAAA;AAAA,QACP,KAAA,EAAO,QAAA;AAAA,QACP,KAAA,EAAO,UAAA;AAAA,QACP,MAAA,EAAQ,WAAA;AAAA,QACR,OAAA,EAAS;AAAA;AACX;AACF;AAEJ,CAAA;AAEO,IAAM,gBAAA,GAA2C;AAAA,EACtD,KAAA,EAAO,OAAA;AAAA,EACP,KAAA,EAAO,OAAA;AAAA,EACP,KAAA,EAAO,OAAA;AAAA,EACP,YAAA,EAAc,QAAA;AAAA,EACd,IAAA,EAAM,MAAA;AAAA,EACN,gBAAA,EAAkB,QAAA;AAAA,EAClB,eAAA,EAAiB,OAAA;AAAA,EACjB,qBAAA,EAAuB,aAAA;AAAA,EACvB,MAAA,EAAQ,QAAA;AAAA,EACR,OAAA,EAAS,SAAA;AAAA,EACT,YAAA,EAAc,iBAAA;AAAA,EACd,aAAA,EAAe,kBAAA;AAAA,EACf,MAAA,EAAQ,QAAA;AAAA,EACR,OAAA,EAAS,SAAA;AAAA,EACT,qBAAA,EAAuB,kBAAA;AAAA,EACvB,OAAA,EAAS,SAAA;AAAA,EACT,UAAA,EAAY,YAAA;AAAA,EACZ,WAAA,EAAa,YAAA;AAAA,EACb,UAAA,EAAY,WAAA;AAAA,EACZ,cAAA,EAAgB,gBAAA;AAAA,EAChB,aAAA,EAAe,eAAA;AAAA,EACf,YAAA,EAAc,QAAA;AAAA,EACd,aAAA,EAAe,SAAA;AAAA,EACf,gBAAA,EAAkB,oBAAA;AAAA,EAClB,aAAA,EAAe,gBAAA;AAAA,EACf,KAAA,EAAO,OAAA;AAAA,EACP,aAAA,EAAe,0BAAA;AAAA,EACf,WAAA,EAAa,sBAAA;AAAA,EACb,iBAAA,EAAmB,0CAAA;AAAA,EACnB,oBAAA,EAAsB,2BAAA;AAAA,EACtB,sBAAA,EAAwB,iBAAA;AAAA,EACxB,iBAAA,EAAmB,cAAA;AAAA,EACnB,gBAAA,EAAkB,aAAA;AAAA,EAClB,sBAAA,EAAwB,YAAA;AAAA,EACxB,YAAA,EAAc,cAAA;AAAA,EACd,gBAAA,EAAkB,YAAA;AAAA,EAClB,iBAAA,EAAmB,aAAA;AAAA,EACnB,mBAAA,EAAqB,aAAA;AAAA,EACrB,iBAAA,EAAmB,cAAA;AAAA,EACnB,cAAA,EAAgB,QAAA;AAAA,EAChB,yBAAA,EAA2B,gBAAA;AAAA,EAC3B,qBAAA,EAAuB,eAAA;AAAA,EACvB,OAAA,EAAS,WAAA;AAAA,EACT,cAAA,EAAgB,gBAAA;AAAA,EAChB,eAAA,EAAiB,iBAAA;AAAA,EACjB,mBAAA,EAAqB,cAAA;AAAA,EACrB,oBAAA,EAAsB,eAAA;AAAA,EACtB,gBAAA,EAAkB,SAAA;AAAA,EAClB,cAAA,EAAgB,SAAA;AAAA,EAChB,qBAAA,EAAuB,gBAAA;AAAA,EACvB,kBAAA,EAAoB,aAAA;AAAA,EACpB,iBAAA,EAAmB,YAAA;AAAA,EACnB,sBAAA,EAAwB,2BAAA;AAAA,EACxB,mBAAA,EAAqB,cAAA;AAAA,EACrB,WAAA,EAAa,MAAA;AAAA,EACb,YAAA,EAAc,OAAA;AAAA,EACd,iBAAA,EAAmB,gBAAA;AAAA,EACnB,iBAAA,EAAmB,YAAA;AAAA,EACnB,WAAA,EAAa,MAAA;AAAA,EACb,eAAA,EAAiB,mBAAA;AAAA,EACjB,gBAAA,EAAkB,iBAAA;AAAA,EAClB,iBAAA,EAAmB,iBAAA;AAAA,EACnB,iBAAA,EAAmB,YAAA;AAAA,EACnB,WAAA,EAAa,MAAA;AAAA,EACb,aAAA,EAAe,QAAA;AAAA,EACf,mBAAA,EAAqB,cAAA;AAAA,EACrB,yBAAA,EAA2B,kBAAA;AAAA,EAC3B,wBAAA,EAA0B,UAAA;AAAA,EAC1B,uBAAA,EAAyB,cAAA;AAAA,EACzB,2BAAA,EAA6B,wBAAA;AAAA,EAC7B,0BAAA,EAA4B,yCAAA;AAAA,EAC5B,kBAAA,EAAoB,aAAA;AAAA,EACpB,kBAAA,EAAoB,kBAAA;AAAA,EACpB,oBAAA,EAAsB,kBAAA;AAAA,EACtB,uBAAA,EAAyB,qCAAA;AAAA,EACzB,wBAAA,EAA0B,gCAAA;AAAA,EAC1B,yBAAA,EAA2B,qBAAA;AAAA,EAC3B,gBAAA,EAAkB,QAAA;AAAA,EAClB,gBAAA,EAAkB,QAAA;AAAA,EAClB,eAAA,EAAiB,WAAA;AAAA,EACjB,yBAAA,EAA2B,wBAAA;AAAA,EAC3B,qBAAA,EAAuB,yBAAA;AAAA,EACvB,0BAAA,EAA4B,wBAAA;AAAA,EAC5B,qBAAA,EAAuB,OAAA;AAAA,EACvB,gBAAA,EAAkB,sCAAA;AAAA,EAClB,qBAAA,EAAuB,wCAAA;AAAA,EACvB,mBAAA,EAAqB,cAAA;AAAA,EACrB,qBAAA,EAAuB,4BAAA;AAAA,EACvB,sBAAA,EAAwB,MAAA;AAAA,EACxB,yBAAA,EAA2B,SAAA;AAAA,EAC3B,sBAAA,EAAwB,MAAA;AAAA,EACxB,wBAAA,EAA0B,SAAA;AAAA,EAC1B,6BAAA,EAA+B,6BAAA;AAAA,EAC/B,yBAAA,EAA2B,WAAA;AAAA,EAC3B,sBAAA,EAAwB,MAAA;AAAA,EACxB,uBAAA,EAAyB,YAAA;AAAA,EACzB,4BAAA,EAA8B,YAAA;AAAA,EAC9B,uBAAA,EAAyB,8BAAA;AAAA,EACzB,eAAA,EAAiB,UAAA;AAAA,EACjB,yBAAA,EAA2B,YAAA;AAAA,EAC3B,wBAAA,EAA0B,QAAA;AAAA,EAC1B,kBAAA,EAAoB,MAAA;AAAA,EACpB,qBAAA,EAAuB,YAAA;AAAA,EACvB,mBAAA,EAAqB,SAAA;AAAA,EACrB,oBAAA,EAAsB,UAAA;AAAA,EACtB,oBAAA,EAAsB,UAAA;AAAA,EACtB,mBAAA,EAAqB,gBAAA;AAAA,EACrB,sBAAA,EAAwB,SAAA;AAAA,EACxB,kBAAA,EAAoB,0BAAA;AAAA,EACpB,2BAAA,EAA6B,eAAA;AAAA,EAC7B,4BAAA,EAA8B,gBAAA;AAAA,EAC9B,4BAAA,EAA8B,SAAA;AAAA,EAC9B,6BAAA,EAA+B,UAAA;AAAA,EAC/B,qBAAA,EAAuB,UAAA;AAAA,EACvB,oBAAA,EAAsB,SAAA;AAAA,EACtB,mBAAA,EAAqB,MAAA;AAAA,EACrB,oBAAA,EAAsB,OAAA;AAAA,EACtB,gCAAA,EAAkC,mCAAA;AAAA,EAClC,6BAAA,EAA+B,gCAAA;AAAA,EAC/B,iBAAA,EAAmB,YAAA;AAAA,EACnB,qBAAA,EAAuB,gBAAA;AAAA,EACvB,iBAAA,EAAmB,YAAA;AAAA,EACnB,iBAAA,EAAmB,aAAA;AAAA,EACnB,qBAAA,EAAuB,uCAAA;AAAA,EACvB,oBAAA,EAAsB,eAAA;AAAA,EACtB,oBAAA,EAAsB,mBAAA;AAAA,EACtB,yBAAA,EAA2B,6DAAA;AAAA,EAC3B,gBAAA,EAAkB,MAAA;AAAA,EAClB,mBAAA,EAAqB,QAAA;AAAA,EACrB,oBAAA,EAAsB,YAAA;AAAA,EACtB,qBAAA,EAAuB,cAAA;AAAA,EACvB,2BAAA,EAA6B,iBAAA;AAAA,EAC7B,yBAAA,EAA2B,QAAA;AAAA,EAC3B,uBAAA,EAAyB,SAAA;AAAA,EACzB,0BAAA,EAA4B,SAAA;AAAA,EAC5B,mCAAA,EAAqC,yDAAA;AAAA,EACrC,kBAAA,EAAoB,OAAA;AAAA,EACpB,qBAAA,EAAuB,UAAA;AAAA,EACvB,wBAAA,EAA0B,sDAAA;AAAA,EAC1B,yBAAA,EAA2B,UAAA;AAAA,EAC3B,gBAAA,EAAkB,MAAA;AAAA,EAClB,kBAAA,EAAoB,QAAA;AAAA,EACpB,mBAAA,EAAqB,SAAA;AAAA,EACrB,kBAAA,EAAoB,QAAA;AAAA,EACpB,oBAAA,EAAsB,SAAA;AAAA,EACtB,cAAA,EAAgB,0BAAA;AAAA,EAChB,gBAAA,EAAkB,oBAAA;AAAA,EAClB,YAAA,EAAc,MAAA;AAAA,EACd,eAAA,EAAiB,qBAAA;AAAA,EACjB,kBAAA,EAAoB,YAAA;AAAA,EACpB,kBAAA,EAAoB,QAAA;AAAA,EACpB,aAAA,EAAe,QAAA;AAAA,EACf,oBAAA,EAAsB,mBAAA;AAAA,EACtB,UAAA,EAAY,MAAA;AAAA,EACZ,gBAAA,EAAkB,mBAAA;AAAA,EAClB,UAAA,EAAY,aAAA;AAAA,EACZ,kBAAA,EAAoB,SAAA;AAAA,EACpB,UAAA,EAAY,YAAA;AAAA,EACZ,sBAAA,EAAwB,kBAAA;AAAA,EACxB,2BAAA,EAA6B,MAAA;AAAA,EAC7B,4BAAA,EAA8B,kBAAA;AAAA,EAC9B,4BAAA,EAA8B,OAAA;AAAA,EAC9B,2BAAA,EACE,sHAAA;AAAA,EACF,4BAAA,EAA8B,SAAA;AAAA,EAC9B,uCAAA,EAAyC,oBAAA;AAAA,EACzC,2BAAA,EAA6B,YAAA;AAAA,EAC7B,uBAAA,EAAyB,QAAA;AAAA,EACzB,sBAAA,EAAwB,OAAA;AAAA,EACxB,qBAAA,EAAuB,MAAA;AAAA,EACvB,uBAAA,EAAyB,cAAA;AAAA,EACzB,8BAAA,EAAgC,mBAAA;AAAA,EAChC,4BAAA,EAA8B,aAAA;AAAA,EAC9B,0BAAA,EAA4B,kCAAA;AAAA,EAC5B,wBAAA,EAA0B,sCAAA;AAAA,EAC1B,wBAAA,EAA0B,OAAA;AAAA,EAC1B,8BAAA,EAAgC,OAAA;AAAA,EAChC,8BAAA,EAAgC,OAAA;AAAA,EAChC,+BAAA,EAAiC,QAAA;AAAA,EACjC,8BAAA,EAAgC,OAAA;AAAA,EAChC,oCAAA,EAAsC,aAAA;AAAA,EACtC,8BAAA,EAAgC,OAAA;AAAA,EAChC,uCAAA,EAAyC,gBAAA;AAAA,EACzC,8BAAA,EAAgC,OAAA;AAAA,EAChC,6BAAA,EAA+B,MAAA;AAAA,EAC/B,6BAAA,EAA+B,MAAA;AAAA,EAC/B,8BAAA,EAAgC,OAAA;AAAA,EAChC,iCAAA,EAAmC,UAAA;AAAA,EACnC,mCAAA,EAAqC,YAAA;AAAA,EACrC,sCAAA,EAAwC,eAAA;AAAA,EACxC,+BAAA,EAAiC,cAAA;AAAA,EACjC,wBAAA,EAA0B,OAAA;AAAA,EAC1B,6BAAA,EAA+B,yBAAA;AAAA,EAC/B,+BAAA,EAAiC,cAAA;AAAA,EACjC,+BAAA,EAAiC,cAAA;AAAA,EACjC,gCAAA,EAAkC,eAAA;AAAA,EAClC,iCAAA,EAAmC,wBAAA;AAAA,EACnC,+BAAA,EAAiC,gBAAA;AAAA,EACjC,6BAAA,EAA+B,YAAA;AAAA,EAC/B,+BAAA,EAAiC,cAAA;AAAA,EACjC,4BAAA,EAA8B,gDAAA;AAAA,EAC9B,2BAAA,EAA6B,mCAAA;AAAA,EAC7B,wBAAA,EACE,0GAAA;AAAA,EACF,wBAAA,EAA0B,eAAA;AAAA,EAC1B,+BAAA,EAAiC,+BAAA;AAAA,EACjC,8BAAA,EAAgC,sBAAA;AAAA,EAChC,4BAAA,EAA8B,WAAA;AAAA,EAC9B,yBAAA,EAA2B,QAAA;AAAA,EAC3B,oCAAA,EACE,8DAAA;AAAA,EACF,+BAAA,EAAiC,6BAAA;AAAA,EACjC,+BAAA,EAAiC,cAAA;AAAA,EACjC,mCAAA,EAAqC,YAAA;AAAA,EACrC,oCAAA,EACE,uCAAA;AAAA,EACF,kCAAA,EAAoC,oBAAA;AAAA,EACpC,mCAAA,EACE,8DAAA;AAAA,EACF,sBAAA,EAAwB,OAAA;AAAA,EACxB,+BAAA,EAAiC,UAAA;AAAA,EACjC,4BAAA,EAA8B,SAAA;AAAA,EAC9B,wBAAA,EAA0B,eAAA;AAAA,EAC1B,eAAA,EAAiB,SAAA;AAAA,EACjB,eAAA,EAAiB,SAAA;AAAA,EACjB,oBAAA,EAAsB,0CAAA;AAAA,EACtB,oBAAA,EAAsB,qCAAA;AAAA,EACtB,mBAAA,EAAqB,sBAAA;AAAA,EACrB,yBAAA,EAA2B,UAAA;AAAA,EAC3B,mBAAA,EAAqB,sBAAA;AAAA,EACrB,eAAA,EAAiB,eAAA;AAAA,EACjB,qBAAA,EAAuB,kCAAA;AAAA,EACvB,gBAAA,EAAkB,0BAAA;AAAA,EAClB,6BAAA,EAA+B,uBAAA;AAAA,EAC/B,kBAAA,EAAoB,2BAAA;AAAA,EACpB,yBAAA,EAA2B,6BAAA;AAAA,EAC3B,uBAAA,EAAyB,4BAAA;AAAA,EACzB,oBAAA,EACE,0DAAA;AAAA,EACF,2BAAA,EAA6B,yCAAA;AAAA,EAC7B,yBAAA,EAA2B,yBAAA;AAAA,EAC3B,wBAAA,EAA0B,2BAAA;AAAA,EAC1B,sBAAA,EAAwB,wCAAA;AAAA,EACxB,mBAAA,EAAqB,mBAAA;AAAA,EACrB,iBAAA,EAAmB,iBAAA;AAAA,EACnB,sBAAA,EAAwB,mCAAA;AAAA,EACxB,uBAAA,EAAyB,wBAAA;AAAA,EACzB,yBAAA,EAA2B,wDAAA;AAAA,EAC3B,sBAAA,EAAwB,uBAAA;AAAA,EACxB,2BAAA,EAA6B,sCAAA;AAAA,EAC7B,wCAAA,EAA0C,iBAAA;AAAA,EAC1C,mCAAA,EAAqC,YAAA;AAAA,EACrC,wCAAA,EAA0C,iBAAA;AAAA,EAC1C,8BAAA,EAAgC,aAAA;AAAA,EAChC,+BAAA,EAAiC,4BAAA;AAAA,EACjC,+BAAA,EAAiC,yBAAA;AAAA,EACjC,+BAAA,EAAiC,6BAAA;AAAA,EACjC,sCAAA,EAAwC,8BAAA;AAAA,EACxC,8BAAA,EAAgC,qBAAA;AAAA,EAChC,mCAAA,EAAqC;AACvC,CAAA;AAMO,IAAM,gBAAA,GAET;AAAA,EACF,EAAA,EAAI;AAAA,IACF,KAAA,EAAO,WAAA;AAAA,IACP,KAAA,EAAO,UAAA;AAAA,IACP,KAAA,EAAO,QAAA;AAAA,IACP,YAAA,EAAc,aAAA;AAAA,IACd,MAAA,EAAQ,aAAA;AAAA,IACR,OAAA,EAAS,YAAA;AAAA,IACT,MAAA,EAAQ,QAAA;AAAA,IACR,OAAA,EAAS,UAAA;AAAA,IACT,OAAA,EAAS,KAAA;AAAA,IACT,cAAA,EAAgB,wBAAA;AAAA,IAChB,iBAAA,EAAmB,gBAAA;AAAA,IACnB,gBAAA,EAAkB,mBAAA;AAAA,IAClB,sBAAA,EAAwB,6BAAA;AAAA,IACxB,YAAA,EAAc,uBAAA;AAAA,IACd,iBAAA,EAAmB,sBAAA;AAAA,IACnB,UAAA,EAAY;AAAA,GACd;AAAA,EACA,EAAA,EAAI;AAAA,IACF,KAAA,EAAO,OAAA;AAAA,IACP,KAAA,EAAO,UAAA;AAAA,IACP,KAAA,EAAO,UAAA;AAAA,IACP,YAAA,EAAc,OAAA;AAAA,IACd,MAAA,EAAQ,SAAA;AAAA,IACR,OAAA,EAAS,iBAAA;AAAA,IACT,MAAA,EAAQ,YAAA;AAAA,IACR,OAAA,EAAS,SAAA;AAAA,IACT,OAAA,EAAS,KAAA;AAAA,IACT,cAAA,EAAgB,qBAAA;AAAA,IAChB,iBAAA,EAAmB,uBAAA;AAAA,IACnB,gBAAA,EAAkB,kBAAA;AAAA,IAClB,sBAAA,EAAwB,eAAA;AAAA,IACxB,YAAA,EAAc,0BAAA;AAAA,IACd,iBAAA,EAAmB,mBAAA;AAAA,IACnB,UAAA,EAAY;AAAA,GACd;AAAA,EACA,EAAA,EAAI;AAAA,IACF,KAAA,EAAO,OAAA;AAAA,IACP,KAAA,EAAO,YAAA;AAAA,IACP,KAAA,EAAO,OAAA;AAAA,IACP,OAAA,EAAS,oBAAA;AAAA,IACT,OAAA,EAAS,MAAA;AAAA,IACT,cAAA,EAAgB,uBAAA;AAAA,IAChB,iBAAA,EAAmB,sBAAA;AAAA,IACnB,sBAAA,EAAwB,WAAA;AAAA,IACxB,YAAA,EAAc,oBAAA;AAAA,IACd,UAAA,EAAY;AAAA,GACd;AAAA,EACA,EAAA,EAAI;AAAA,IACF,KAAA,EAAO,WAAA;AAAA,IACP,KAAA,EAAO,aAAA;AAAA,IACP,KAAA,EAAO,MAAA;AAAA,IACP,OAAA,EAAS,UAAA;AAAA,IACT,OAAA,EAAS,KAAA;AAAA,IACT,cAAA,EAAgB,2BAAA;AAAA,IAChB,iBAAA,EAAmB,mBAAA;AAAA,IACnB,sBAAA,EAAwB,oBAAA;AAAA,IACxB,YAAA,EAAc,sBAAA;AAAA,IACd,UAAA,EAAY;AAAA;AAEhB,CAAA;AAEA,SAAS,gBAAgB,MAAA,EAA6D;AACpF,EAAA,MAAM,SAAA,GAAY,MAAA,IAAU,gBAAA,CAAiB,MAAM,CAAA;AACnD,EAAA,OAAO,SAAA,GAAY,EAAE,GAAG,gBAAA,EAAkB,GAAG,SAAA,EAAU,GAAI,EAAE,GAAG,gBAAA,EAAiB;AACnF;AAEA,SAAS,YAAA,CACP,SACA,MAAA,EACwB;AACxB,EAAA,MAAM,KAAA,GAAQ,OAAO,OAAO,CAAA;AAC5B,EAAA,MAAM,YAAY,MAAA,IAAU,KAAA,CAAM,UAAU,KAAA,CAAM,OAAA,CAAQ,MAAM,CAAA,GAAI,MAAA;AACpE,EAAA,MAAM,gBAAA,GAAmB,6BAA6B,OAAO,CAAA;AAC7D,EAAA,OAAO;AAAA,IACL,GAAG,KAAA,CAAM,OAAA;AAAA,IACT,GAAI,aAAa,EAAC;AAAA,IAClB,GAAI,oBAAoB;AAAC,GAC3B;AACF;AAMO,SAAS,EACd,OAAA,EACA,GAAA,EACA,QAAA,GAAW,EAAA,EACX,SAAsC,IAAA,EAC9B;AACR,EAAA,IAAI,OAAA,IAAW,MAAA,CAAO,OAAO,CAAA,EAAG;AAC9B,IAAA,MAAM,QAAA,GAAW,YAAA,CAAa,OAAA,EAAS,MAAM,CAAA;AAC7C,IAAA,IAAI,SAAS,GAAG,CAAA,KAAM,MAAA,EAAW,OAAO,SAAS,GAAG,CAAA;AAAA,EACtD;AACA,EAAA,MAAM,EAAA,GAAK,gBAAgB,MAAM,CAAA;AACjC,EAAA,OAAO,EAAA,CAAG,GAAG,CAAA,IAAK,QAAA;AACpB;AAMO,SAAS,eAAA,CACd,OAAA,EACA,MAAA,GAAsC,IAAA,EACd;AACxB,EAAA,MAAM,EAAA,GAAK,gBAAgB,MAAM,CAAA;AACjC,EAAA,IAAI,CAAC,OAAA,IAAW,CAAC,MAAA,CAAO,OAAO,CAAA,EAAG;AAChC,IAAA,OAAO,EAAA;AAAA,EACT;AACA,EAAA,OAAO,EAAE,GAAG,EAAA,EAAI,GAAG,YAAA,CAAa,OAAA,EAAS,MAAM,CAAA,EAAE;AACnD;;;AC3mCO,IAAM,YAAA,GAAkD;AAAA,EAC7D,MAAA,EAAQ;AAAA,IACN,MAAA,EAAQ,SAAA;AAAA,IACR,KAAA,EAAO,SAAA;AAAA,IACP,MAAA,EAAQ,SAAA;AAAA,IACR,UAAA,EAAY,2BAAA;AAAA,IACZ,IAAA,EAAM,SAAA;AAAA,IACN,KAAA,EAAO,2BAAA;AAAA,IACP,UAAA,EAAY;AAAA,GACd;AAAA,EACA,KAAA,EAAO;AAAA,IACL,MAAA,EAAQ,SAAA;AAAA,IACR,KAAA,EAAO,SAAA;AAAA,IACP,MAAA,EAAQ,SAAA;AAAA,IACR,UAAA,EAAY,2BAAA;AAAA,IACZ,IAAA,EAAM,SAAA;AAAA,IACN,KAAA,EAAO,0BAAA;AAAA,IACP,UAAA,EAAY;AAAA;AAEhB,CAAA;AA6DO,SAAS,eAAe,OAAA,EAAuD;AACpF,EAAA,OAAO,YAAA,CAAa,OAAA,IAAW,OAAO,CAAA,IAAK,YAAA,CAAa,KAAA;AAC1D;AC7EA,IAAM,iBAAA,GAAoB,cAAiC,IAAI,CAAA;AASxD,SAAS,kBAAA,CAAmB;AAAA,EACjC,OAAA;AAAA,EACA,MAAA,GAAS,IAAA;AAAA,EACT,eAAA,GAAkB,CAAA;AAAA,EAClB;AACF,CAAA,EAA4B;AAC1B,EAAA,MAAM,KAAA,GAAQ,QAAoB,MAAM;AACtC,IAAA,OAAO;AAAA,MACL,OAAA;AAAA,MACA,MAAA;AAAA,MACA,MAAA,EAAQ,eAAe,OAAO,CAAA;AAAA,MAC9B,OAAA,EAAS,eAAA,CAAgB,OAAA,EAAS,MAAM,CAAA;AAAA,MACxC,CAAA,EAAG,CAAC,GAAA,EAAK,QAAA,GAAW,OAAO,CAAA,CAAe,OAAA,EAAS,GAAA,EAAK,QAAA,EAAU,MAAM;AAAA,KAC1E;AAAA,EACF,CAAA,EAAG,CAAC,OAAA,EAAS,MAAA,EAAQ,eAAe,CAAC,CAAA;AAErC,EAAA,uBACE,GAAA,CAAC,iBAAA,CAAkB,QAAA,EAAlB,EAA2B,OACzB,QAAA,EACH,CAAA;AAEJ;AAEO,SAAS,aAAA,GAA4B;AAC1C,EAAA,MAAM,GAAA,GAAM,WAAW,iBAAiB,CAAA;AACxC,EAAA,IAAI,CAAC,GAAA,EAAK;AACR,IAAA,MAAM,IAAI,KAAA;AAAA,MACR;AAAA,KACF;AAAA,EACF;AACA,EAAA,OAAO,GAAA;AACT;ACpCO,SAAS,MAAA,CAAO;AAAA,EACrB,KAAA;AAAA,EACA,OAAA,GAAU,SAAA;AAAA,EACV,KAAA;AAAA,EACA,GAAG;AACL,CAAA,EAAgB;AACd,EAAA,MAAM,EAAE,MAAA,EAAO,GAAI,aAAA,EAAc;AACjC,EAAA,uBACEA,GAAAA;AAAA,IAAC,SAAA;AAAA,IAAA;AAAA,MACC,iBAAA,EAAkB,QAAA;AAAA,MAClB,KAAA,EAAO,CAAC,EAAE,OAAA,EAAQ,KAAM;AAAA,QACtB,MAAA,CAAO,IAAA;AAAA,QACP,YAAY,SAAA,GACR,EAAE,eAAA,EAAiB,MAAA,CAAO,QAAO,GACjC;AAAA,UACE,eAAA,EAAiB,aAAA;AAAA,UACjB,aAAa,MAAA,CAAO,MAAA;AAAA,UACpB,WAAA,EAAa;AAAA,SACf;AAAA,QACJ,OAAA,IAAW,EAAE,OAAA,EAAS,IAAA,EAAK;AAAA,QAC3B;AAAA,OACF;AAAA,MACC,GAAG,IAAA;AAAA,MAEJ,QAAA,kBAAAA,GAAAA;AAAA,QAAC,IAAA;AAAA,QAAA;AAAA,UACC,KAAA,EAAO;AAAA,YACL,MAAA,CAAO,KAAA;AAAA,YACP;AAAA,cACE,KAAA,EAAO,OAAA,KAAY,SAAA,GAAY,MAAA,CAAO,SAAS,MAAA,CAAO;AAAA;AACxD,WACF;AAAA,UAEC,QAAA,EAAA;AAAA;AAAA;AACH;AAAA,GACF;AAEJ;AAEA,IAAM,MAAA,GAAS,WAAW,MAAA,CAAO;AAAA,EAC/B,IAAA,EAAM;AAAA,IACJ,iBAAA,EAAmB,EAAA;AAAA,IACnB,eAAA,EAAiB,EAAA;AAAA,IACjB,YAAA,EAAc,CAAA;AAAA,IACd,UAAA,EAAY,QAAA;AAAA,IACZ,cAAA,EAAgB;AAAA,GAClB;AAAA,EACA,KAAA,EAAO;AAAA,IACL,QAAA,EAAU,EAAA;AAAA,IACV,UAAA,EAAY,KAAA;AAAA,IACZ,aAAA,EAAe;AAAA;AAEnB,CAAC,CAAA;ACnDM,SAAS,QAAA,CAAS,EAAE,IAAA,EAAM,OAAA,EAAS,OAAM,EAAkB;AAChE,EAAA,MAAM,EAAE,MAAA,EAAQ,CAAA,EAAAC,EAAAA,KAAM,aAAA,EAAc;AAEpC,EAAA,MAAM,QAAQ,IAAA,CAAK,KAAA,EAAO,MAAK,IAAKA,EAAAA,CAAE,kBAAkB,UAAU,CAAA;AAClE,EAAA,MAAM,QAAQ,IAAA,CAAK,KAAA,EAAO,MAAK,IAAKA,EAAAA,CAAE,iBAAiB,SAAS,CAAA;AAChE,EAAA,MAAM,UAAA,GAAaA,EAAAA,CAAE,cAAA,EAAgB,QAAQ,CAAA;AAC7C,EAAA,MAAM,WAAA,GAAcA,EAAAA,CAAE,eAAA,EAAiB,SAAS,CAAA;AAEhD,EAAA,MAAM,wBACJ,IAAA,CAAA,QAAA,EAAA,EACE,QAAA,EAAA;AAAA,oBAAAD,GAAAA;AAAA,MAACE,IAAAA;AAAA,MAAA;AAAA,QACC,KAAA,EAAO,CAACC,OAAAA,CAAO,KAAA,EAAO,EAAE,KAAA,EAAO,MAAA,CAAO,MAAM,CAAA;AAAA,QAC5C,aAAA,EAAe,CAAA;AAAA,QAEd,QAAA,EAAA;AAAA;AAAA,KACH;AAAA,oBACA,IAAA,CAACD,IAAAA,EAAA,EAAK,KAAA,EAAO,CAACC,OAAAA,CAAO,IAAA,EAAM,EAAE,KAAA,EAAO,MAAA,CAAO,KAAA,EAAO,CAAA,EAC/C,QAAA,EAAA;AAAA,MAAA,KAAA;AAAA,MAAM,QAAA;AAAA,MAAI,IAAA,CAAK,YAAA;AAAA,MAAa,GAAA;AAAA,MAAE,UAAA;AAAA,MAAW,QAAA;AAAA,MAAI,IAAA,CAAK,aAAA;AAAA,MAAe,GAAA;AAAA,MACjE;AAAA,KAAA,EACH,CAAA;AAAA,IACC,IAAA,CAAK,SAAS,IAAA,mBACbH,IAACE,IAAAA,EAAA,EAAK,OAAO,CAACC,OAAAA,CAAO,SAAS,EAAE,KAAA,EAAO,OAAO,MAAA,EAAQ,GACnD,QAAA,EAAA,IAAA,CAAK,OAAA,CAAQ,MAChB,CAAA,GACE;AAAA,GAAA,EACN,CAAA;AAGF,EAAA,IAAI,OAAA,EAAS;AACX,IAAA,uBACEH,GAAAA;AAAA,MAACI,SAAAA;AAAA,MAAA;AAAA,QACC,iBAAA,EAAkB,QAAA;AAAA,QAClB,OAAA;AAAA,QACA,KAAA,EAAO,CAAC,EAAE,OAAA,EAAQ,KAAM;AAAA,UACtBD,OAAAA,CAAO,IAAA;AAAA,UACP,EAAE,eAAA,EAAiB,MAAA,CAAO,KAAA,EAAO,WAAA,EAAa,OAAO,UAAA,EAAW;AAAA,UAChE,OAAA,IAAW,EAAE,OAAA,EAAS,IAAA,EAAK;AAAA,UAC3B;AAAA,SACF;AAAA,QAEC,QAAA,EAAA;AAAA;AAAA,KACH;AAAA,EAEJ;AAEA,EAAA,uBACEH,GAAAA;AAAA,IAAC,IAAA;AAAA,IAAA;AAAA,MACC,KAAA,EAAO;AAAA,QACLG,OAAAA,CAAO,IAAA;AAAA,QACP,EAAE,eAAA,EAAiB,MAAA,CAAO,KAAA,EAAO,WAAA,EAAa,OAAO,UAAA,EAAW;AAAA,QAChE;AAAA,OACF;AAAA,MAEC,QAAA,EAAA;AAAA;AAAA,GACH;AAEJ;AAEA,IAAMA,OAAAA,GAASE,WAAW,MAAA,CAAO;AAAA,EAC/B,IAAA,EAAM;AAAA,IACJ,OAAA,EAAS,EAAA;AAAA,IACT,YAAA,EAAc,EAAA;AAAA,IACd,WAAA,EAAa,CAAA;AAAA,IACb,GAAA,EAAK,CAAA;AAAA,IACL,QAAA,EAAU;AAAA,GACZ;AAAA,EACA,KAAA,EAAO;AAAA,IACL,QAAA,EAAU,EAAA;AAAA,IACV,UAAA,EAAY;AAAA,GACd;AAAA,EACA,IAAA,EAAM;AAAA,IACJ,QAAA,EAAU;AAAA,GACZ;AAAA,EACA,OAAA,EAAS;AAAA,IACP,QAAA,EAAU,EAAA;AAAA,IACV,UAAA,EAAY;AAAA;AAEhB,CAAC,CAAA;AChFM,SAAS,WAAA,CAAY,EAAE,IAAA,EAAM,KAAA,EAAO,OAAM,EAAqB;AACpE,EAAA,MAAM,EAAE,MAAA,EAAO,GAAI,aAAA,EAAc;AAEjC,EAAA,MAAM,KAAA,GAAQ,IAAA,KAAS,QAAA,GAAW,gBAAA,GAAmB,iBAAA;AAErD,EAAA,uBACEC,IAAAA;AAAA,IAACC,IAAAA;AAAA,IAAA;AAAA,MACC,KAAA,EAAO;AAAA,QACLJ,OAAAA,CAAO,SAAA;AAAA,QACP;AAAA,UACE,aAAa,MAAA,CAAO,MAAA;AAAA,UACpB,iBAAiB,MAAA,CAAO;AAAA,SAC1B;AAAA,QACA;AAAA,OACF;AAAA,MAEA,QAAA,EAAA;AAAA,wBAAAH,GAAAA,CAACE,IAAAA,EAAA,EAAK,KAAA,EAAO,CAACC,OAAAA,CAAO,KAAA,EAAO,EAAE,KAAA,EAAO,MAAA,CAAO,KAAA,EAAO,GAAI,QAAA,EAAA,KAAA,EAAM,CAAA;AAAA,wBAC7DH,GAAAA,CAACE,IAAAA,EAAA,EAAK,KAAA,EAAO,CAACC,OAAAA,CAAO,KAAA,EAAO,EAAE,KAAA,EAAO,OAAO,MAAA,EAAQ,CAAA,EACjD,QAAA,EAAA,KAAA,CAAM,gBAAe,EACxB;AAAA;AAAA;AAAA,GACF;AAEJ;AAEA,IAAMA,OAAAA,GAASE,WAAW,MAAA,CAAO;AAAA,EAC/B,SAAA,EAAW;AAAA,IACT,aAAA,EAAe,KAAA;AAAA,IACf,UAAA,EAAY,QAAA;AAAA,IACZ,GAAA,EAAK,CAAA;AAAA,IACL,iBAAA,EAAmB,EAAA;AAAA,IACnB,eAAA,EAAiB,CAAA;AAAA,IACjB,YAAA,EAAc,CAAA;AAAA,IACd,WAAA,EAAa;AAAA,GACf;AAAA,EACA,KAAA,EAAO;AAAA,IACL,QAAA,EAAU,EAAA;AAAA,IACV,UAAA,EAAY,KAAA;AAAA,IACZ,aAAA,EAAe,GAAA;AAAA,IACf,aAAA,EAAe;AAAA,GACjB;AAAA,EACA,KAAA,EAAO;AAAA,IACL,QAAA,EAAU,EAAA;AAAA,IACV,UAAA,EAAY;AAAA;AAEhB,CAAC,CAAA","file":"index.js","sourcesContent":["import type {\n RealmId,\n RealmDefinition,\n ContentRating,\n ContentRatingDefinition,\n LocaleId,\n} from \"../types/index.js\";\n\nexport const REALM_IDS: readonly RealmId[] = [\"cosmos\", \"wilds\"] as const;\n\nexport const SUPPORTED_LOCALES: readonly LocaleId[] = [\n \"en\",\n \"es\",\n \"fr\",\n \"de\",\n \"pt\",\n] as const;\n\nexport const LOCALE_LABELS: Record<LocaleId, string> = {\n en: \"English\",\n es: \"Español\",\n fr: \"Français\",\n de: \"Deutsch\",\n pt: \"Português\",\n};\n\nexport const DEFAULT_LOCALE: LocaleId = \"en\";\n\ntype RealmLexiconOverrides = Partial<Record<RealmId, Record<string, string>>>;\nlet runtimeRealmLexiconOverrides: RealmLexiconOverrides = {};\n\nexport function getRealmLexiconOverrides(): RealmLexiconOverrides {\n return {\n cosmos: runtimeRealmLexiconOverrides.cosmos\n ? { ...runtimeRealmLexiconOverrides.cosmos }\n : undefined,\n wilds: runtimeRealmLexiconOverrides.wilds\n ? { ...runtimeRealmLexiconOverrides.wilds }\n : undefined,\n };\n}\n\nexport function setRealmLexiconOverrides(overrides: RealmLexiconOverrides): void {\n runtimeRealmLexiconOverrides = {\n cosmos: overrides.cosmos ? { ...overrides.cosmos } : undefined,\n wilds: overrides.wilds ? { ...overrides.wilds } : undefined,\n };\n}\n\nexport function isSupportedLocale(value: unknown): value is LocaleId {\n return (\n typeof value === \"string\" &&\n SUPPORTED_LOCALES.includes(value as LocaleId)\n );\n}\n\n/**\n * Normalize a raw locale tag (e.g. \"en-US\", \"pt_BR\") to a supported LocaleId,\n * matching the PHP `LocaleResolver::normalize` behavior.\n */\nexport function normalizeLocale(value: string | null | undefined): LocaleId | null {\n if (!value) return null;\n const lower = value.toLowerCase().trim();\n if (isSupportedLocale(lower)) return lower;\n const base = lower.split(/[-_]/, 1)[0];\n return isSupportedLocale(base) ? base : null;\n}\n\n/**\n * Pick the best supported locale from a browser Accept-Language string.\n * Mirrors PHP `LocaleResolver::matchAcceptLanguage` (q-value aware).\n */\nexport function matchAcceptLanguage(\n accept: string | null | undefined\n): LocaleId | null {\n if (!accept) return null;\n const tags = accept\n .split(\",\")\n .map((part) => {\n const [tag, ...params] = part.trim().split(\";\");\n const qParam = params.find((p) => p.trim().startsWith(\"q=\"));\n const q = qParam ? parseFloat(qParam.split(\"=\")[1]) || 0 : 1;\n return { tag: tag.trim(), q };\n })\n .filter((c) => c.tag && c.tag !== \"*\")\n .sort((a, b) => b.q - a.q);\n\n for (const c of tags) {\n const normalized = normalizeLocale(c.tag);\n if (normalized) return normalized;\n }\n return null;\n}\n\nexport const CONTENT_RATING_IDS: readonly ContentRating[] = [\n \"G\",\n \"PG\",\n \"PG-13\",\n \"R\",\n \"NC-17\",\n] as const;\n\nexport const CONTENT_RATINGS: Record<ContentRating, ContentRatingDefinition> = {\n G: {\n id: \"G\",\n label: \"G\",\n description: \"General Audiences — all ages admitted.\",\n },\n PG: {\n id: \"PG\",\n label: \"PG\",\n description: \"Parental Guidance Suggested — some material may not be suitable for children.\",\n },\n \"PG-13\": {\n id: \"PG-13\",\n label: \"PG-13\",\n description: \"Parents Strongly Cautioned — some material may be inappropriate for children under 13.\",\n },\n R: {\n id: \"R\",\n label: \"R\",\n description: \"Restricted — under 17 requires accompanying parent or adult guardian.\",\n },\n \"NC-17\": {\n id: \"NC-17\",\n label: \"NC-17\",\n description: \"Adults Only — no one 17 and under admitted.\",\n },\n};\n\nexport function isContentRating(value: unknown): value is ContentRating {\n return typeof value === \"string\" && CONTENT_RATING_IDS.includes(value as ContentRating);\n}\n\nexport const REALMS: Record<RealmId, RealmDefinition> = {\n cosmos: {\n label: \"CHUZI COSMOS\",\n short_label: \"Cosmos\",\n lexicon: {\n genre: \"Galaxy\",\n story: \"Star System\",\n scene: \"Planet\",\n scene_choice: \"Trajectory\",\n node: \"Signal\",\n node_type_choice: \"Trajectory\",\n node_type_media: \"Transmission\",\n node_type_go_to_scene: \"Warp\",\n player: \"Voyager\",\n library: \"Star Chart\",\n library_open: \"Open Star Chart\",\n library_close: \"Close Star Chart\",\n editor: \"Mission Control\",\n publish: \"Launch\",\n experience_realm_idea: \"Outer Space\",\n the_end: \"The End\",\n media_pool: \"Cargo Bay\",\n scene_graph: \"Star Chart\",\n watch_path: \"Your trajectory\",\n untitled_story: \"Untitled Star System\",\n unknown_genre: \"Unknown Galaxy\",\n scenes_count: \"planets\",\n choices_count: \"trajectories\",\n drafts_published: \"Drafts + Launched\",\n published_ver: \"Launched ver.\",\n draft: \"Draft\",\n no_scenes_yet: \"No planets in this chart yet.\",\n no_path_yet: \"No trajectory to show yet.\",\n menu_empty_drafts: \"No star systems yet. Chart one to begin.\",\n menu_empty_published: \"No launched systems in the chart.\",\n menu_published_heading: \"Launched constellations\",\n menu_create_story: \"New star system\",\n menu_create_film: \"Create film\",\n film_title_placeholder: \"Star system title\",\n select_genre: \"Select galaxy\",\n genre_field_aria: \"Galaxy\",\n delete_story_verb: \"Delete star system\",\n title_scene_default: \"Title planet\",\n choices_made_stat: \"trajectories taken\",\n content_rating: \"Audience Class\",\n content_rating_field_aria: \"Audience class\",\n select_content_rating: \"Select audience class\",\n unrated: \"Unclassified\",\n viewer_credits: \"Fuel Cells\",\n creator_credits: \"Stardust\",\n editor_media_upload: \"Upload Transmission\",\n editor_media_preview: \"Transmission Preview\",\n editor_alt_media: \"Effects\",\n editor_choices: \"Choices\",\n editor_scene_settings: \"Star Settings\",\n editor_title_scene: \"Title Star\",\n editor_film_title: \"Star System Title\",\n editor_film_title_hint: \"Click to rename this star system\",\n editor_ending_scene: \"Final Star\",\n editor_play: \"Engage\",\n editor_pause: \"Hold\",\n editor_prev_frame: \"Previous Frame\",\n editor_next_frame: \"Next Frame\",\n editor_seek: \"Seek\",\n editor_no_media: \"No transmission assigned\",\n editor_uploading: \"Transmitting\\u2026\",\n editor_drop_media: \"Drop transmission here\",\n editor_scene_type: \"Star Type\",\n editor_save: \"Lock In\",\n editor_cancel: \"Abort\",\n editor_create_scene: \"Chart Planet\",\n editor_create_scene_plain: \"Create New Scene\",\n editor_create_scene_cost: \"1 Stardust\",\n editor_delete_scene_cta: \"Delete Scene\",\n editor_delete_scene_confirm: \"Click again to confirm\",\n editor_scene_locked_delete: \"Title and end scenes cannot be deleted.\",\n editor_scene_color: \"Star Hue\",\n editor_ai_generate: \"Generate Transmission\",\n editor_ai_generating: \"Transmitting Signal\\u2026\",\n editor_ai_mood_question: \"What energy should this planet radiate?\",\n editor_ai_style_question: \"What vision style for this transmission?\",\n editor_ai_prompt_question: \"Describe this planet\\u2019s landscape\",\n editor_ai_accept: \"Lock Transmission\",\n editor_ai_reject: \"Reject Signal\",\n editor_ai_retry: \"Retransmit\",\n editor_ai_feedback_prompt: \"How should we adjust the signal?\",\n editor_ai_credit_cost: \"1 Stardust per signal\",\n editor_ai_generating_scene: \"Planet forming\\u2026\",\n editor_ai_style_badge: \"Signal Style\",\n editor_ai_failed: \"Signal lost. Try retransmitting.\",\n editor_media_attached: \"This star already has a transmission locked in.\",\n editor_remove_media: \"Remove Transmission\",\n editor_media_question: \"What's this scene's media?\",\n editor_media_type_text: \"Text\",\n editor_media_type_imagery: \"Imagery\",\n editor_media_type_film: \"Film\",\n editor_media_preview_cta: \"Preview\",\n editor_media_preview_disabled: \"Add text to enable preview.\",\n editor_text_toolbar_label: \"Generator\",\n editor_text_font_label: \"Font\",\n editor_text_color_label: \"Text Color\",\n editor_text_background_label: \"Background\",\n editor_text_placeholder: \"Start writing scene media...\",\n editor_line_add: \"Add Text\",\n editor_text_lines_section: \"Transmission Lines\",\n editor_line_editor_label: \"Editor\",\n editor_line_number: \"Line\",\n editor_line_timestamp: \"Appears at\",\n editor_line_fade_in: \"Fade In\",\n editor_line_fade_out: \"Fade Out\",\n editor_line_duration: \"Duration\",\n editor_line_persist: \"Stay on Screen\",\n editor_effects_section: \"Effects\",\n editor_effects_add: \"Add sounds, effects, etc\",\n editor_effect_fade_in_sound: \"Fade In Sound\",\n editor_effect_fade_out_sound: \"Fade Out Sound\",\n editor_effect_fade_in_visual: \"Fade In\",\n editor_effect_fade_out_visual: \"Fade Out\",\n editor_timeline_label: \"Timeline\",\n editor_preview_label: \"Preview\",\n editor_preview_play: \"Play\",\n editor_preview_pause: \"Pause\",\n editor_media_placeholder_imagery: \"Imagery authoring is coming soon.\",\n editor_media_placeholder_film: \"Film authoring is coming soon.\",\n editor_goto_scene: \"Goto Star\",\n editor_scene_duration: \"Transmission Duration\",\n editor_add_choice: \"Add Trajectory\",\n editor_arrow_tool: \"Place Arrow\",\n editor_goto_nullified: \"Disabled — trajectories override goto\",\n editor_remove_choice: \"Remove Trajectory\",\n editor_choice_target: \"Destination Star\",\n editor_choices_empty_hint: \"Set a goto star or add a trajectory to branch the story.\",\n editor_goto_none: \"None\",\n editor_choice_label: \"Trajectory\",\n editor_flow_timeline: \"Story Flow\",\n editor_flow_goto_path: \"Default Goto\",\n editor_flow_add_choice_here: \"Add Trajectory Here\",\n editor_flow_choice_branch: \"Branch\",\n editor_flow_content_ref: \"Content\",\n editor_scene_duration_unit: \"seconds\",\n editor_scene_duration_override_hint: \"Overrides transmission length. Signal runtime: {duration}s\",\n editor_arrow_scale: \"Span\",\n editor_arrow_rotation: \"Bearing\",\n editor_arrow_rotate_hint: \"Drag the beacon above the arrow in preview to rotate\",\n constellation_no_coverbox: \"Uncharted\",\n hud_edit_control: \"Engage\",\n hud_delete_control: \"Jettison\",\n hud_publish_control: \"Launch\",\n hud_launch_control: \"Launch\",\n editor_publish_story: \"Release\",\n viewer_loading: \"Loading transmission…\",\n viewer_preparing: \"Spooling media…\",\n viewer_close: \"Exit\",\n viewer_complete: \"Transmission complete\",\n viewer_stage_label: \"Viewport\",\n viewer_choose_path: \"Choose\",\n create_button: \"CREATE\",\n publish_form_heading: \"Launch readiness\",\n tags_label: \"Signal Tags\",\n tags_placeholder: \"Search signal tags\\u2026\",\n tags_empty: \"No signal tags yet\",\n story_picker_label: \"Constellations\",\n created_by: \"Directed by\",\n director_profile_title: \"Director profile\",\n director_profile_name_label: \"Name\",\n director_profile_realm_label: \"Experience realm\",\n director_profile_image_label: \"Image\",\n director_profile_image_hint:\n \"Realm-themed seal — switching the realm above swaps the seal. Custom uploads land with the V1 avatar endpoints.\",\n director_profile_tab_profile: \"Profile\",\n director_profile_tab_experience_mapping: \"Experience Mapping\",\n director_profile_admin_only: \"Admin only\",\n director_profile_cancel: \"Cancel\",\n director_profile_close: \"Close\",\n director_profile_save: \"Save\",\n director_profile_saving: \"Saving…\",\n director_profile_name_required: \"Name is required.\",\n director_profile_save_failed: \"Save failed\",\n experience_mapping_loading: \"Loading experience mapping…\",\n experience_mapping_empty: \"No template hierarchy available yet.\",\n experience_mapping_retry: \"Retry\",\n experience_mapping_story_label: \"Story\",\n experience_mapping_scene_label: \"Scene\",\n experience_mapping_action_label: \"Action\",\n experience_mapping_field_title: \"Title\",\n experience_mapping_field_description: \"Description\",\n experience_mapping_field_genre: \"Genre\",\n experience_mapping_field_content_rating: \"Content rating\",\n experience_mapping_field_color: \"Color\",\n experience_mapping_field_name: \"Name\",\n experience_mapping_field_type: \"Type\",\n experience_mapping_field_order: \"Order\",\n experience_mapping_field_duration: \"Duration\",\n experience_mapping_field_properties: \"Properties\",\n experience_mapping_field_subproperties: \"Subproperties\",\n experience_mapping_save_changes: \"Save changes\",\n experience_mapping_saved: \"Saved\",\n experience_mapping_save_error: \"Could not save changes.\",\n experience_mapping_delete_story: \"Delete story\",\n experience_mapping_delete_scene: \"Delete scene\",\n experience_mapping_delete_action: \"Delete action\",\n experience_mapping_delete_confirm: \"Click again to confirm\",\n experience_mapping_delete_error: \"Delete failed.\",\n experience_mapping_expand_all: \"Expand all\",\n experience_mapping_collapse_all: \"Collapse all\",\n experience_mapping_forbidden: \"You do not have admin access for this section.\",\n experience_mapping_bad_json: \"JSON must be valid before saving.\",\n experience_mapping_intro:\n \"Edit realm vocabulary from largest to smallest. Generate JSON and paste it in chat for code application.\",\n experience_mapping_dirty: \"dirty changes\",\n experience_mapping_export_ready: \"No unsaved mapping edits yet.\",\n experience_mapping_export_json: \"Generate JSON export\",\n experience_mapping_copy_json: \"Copy JSON\",\n experience_mapping_copied: \"Copied\",\n experience_mapping_paste_instruction:\n \"Paste this JSON in chat and I will apply it to chuzi-shared.\",\n experience_mapping_export_empty: \"Export output appears here.\",\n experience_mapping_select_realm: \"Select realm\",\n experience_mapping_group_major_idea: \"Major Idea\",\n experience_mapping_helper_realm_idea:\n \"Highest-level concept for this realm.\",\n experience_mapping_save_experience: \"Save to experience\",\n experience_mapping_saved_experience:\n \"Saved to current experience. Some labels appear immediately.\",\n auth_email_placeholder: \"Email\",\n auth_password_input_placeholder: \"Password\",\n auth_password_sign_in_button: \"Sign In\",\n auth_password_signing_in: \"Signing in...\",\n auth_signin_tab: \"Sign in\",\n auth_signup_tab: \"Sign up\",\n auth_signup_subtitle: \"Create your account with secure sign-in.\",\n auth_signin_subtitle: \"Sign in with your account provider.\",\n auth_sign_up_button: \"Continue with Google\",\n auth_username_placeholder: \"Username\",\n auth_sign_in_button: \"Continue with Google\",\n auth_signing_in: \"Signing in...\",\n auth_oidc_redirecting: \"Redirecting to secure sign-in...\",\n auth_oidc_failed: \"Could not start sign-in.\",\n auth_oidc_callback_processing: \"Completing sign-in...\",\n auth_oidc_verified: \"Signed in. Redirecting...\",\n auth_oidc_callback_failed: \"Could not complete sign-in.\",\n auth_oidc_token_missing: \"Sign-in token was missing.\",\n auth_magic_link_sent:\n \"If that email is registered, a magic link has been sent.\",\n auth_magic_link_sent_signup: \"Check your email for your sign-up link.\",\n auth_magic_link_verifying: \"Verifying magic link...\",\n auth_magic_link_verified: \"Signed in. Redirecting...\",\n auth_magic_link_failed: \"This magic link is invalid or expired.\",\n auth_magic_link_cta: \"Use another email\",\n auth_login_failed: \"Sign-in failed.\",\n auth_username_checking: \"Checking username availability...\",\n auth_username_available: \"Username is available.\",\n auth_username_unavailable: \"Username is taken; updated to an available suggestion.\",\n auth_username_required: \"Username is required.\",\n auth_username_update_failed: \"Could not reserve a unique username.\",\n experience_mapping_group_experience_root: \"Experience Root\",\n experience_mapping_group_node_types: \"Node Types\",\n experience_mapping_group_scene_structure: \"Scene Structure\",\n experience_mapping_group_media: \"Media Terms\",\n experience_mapping_group_counts: \"Counts and Adjacent Labels\",\n experience_mapping_helper_story: \"Largest narrative unit.\",\n experience_mapping_helper_scene: \"Contained unit under story.\",\n experience_mapping_helper_scene_choice: \"Branching choice in a scene.\",\n experience_mapping_helper_node: \"Smallest flow node.\",\n experience_mapping_helper_alt_media: \"Smallest related media label.\",\n },\n locales: {\n es: {\n genre: \"Galaxia\",\n story: \"Sistema Estelar\",\n scene: \"Planeta\",\n scene_choice: \"Trayectoria\",\n player: \"Viajero\",\n library: \"Carta Estelar\",\n editor: \"Control de Misión\",\n publish: \"Lanzar\",\n the_end: \"Órbita Final\",\n untitled_story: \"Sistema Estelar sin título\",\n menu_create_story: \"Nuevo sistema estelar\",\n film_title_placeholder: \"Título del sistema estelar\",\n select_genre: \"Seleccionar galaxia\",\n created_by: \"Dirigido por\",\n },\n fr: {\n genre: \"Galaxie\",\n story: \"Système Stellaire\",\n scene: \"Planète\",\n scene_choice: \"Trajectoire\",\n player: \"Voyageur\",\n library: \"Carte Stellaire\",\n editor: \"Contrôle de Mission\",\n publish: \"Lancer\",\n the_end: \"Orbite Finale\",\n untitled_story: \"Système stellaire sans titre\",\n menu_create_story: \"Nouveau système stellaire\",\n film_title_placeholder: \"Titre du système stellaire\",\n select_genre: \"Sélectionner une galaxie\",\n created_by: \"Réalisé par\",\n },\n de: {\n genre: \"Galaxie\",\n story: \"Sternsystem\",\n scene: \"Planet\",\n player: \"Reisender\",\n publish: \"Starten\",\n },\n pt: {\n genre: \"Galáxia\",\n story: \"Sistema Estelar\",\n scene: \"Planeta\",\n player: \"Viajante\",\n publish: \"Lançar\",\n },\n },\n },\n wilds: {\n label: \"CHUZI WILDS\",\n short_label: \"Wilds\",\n lexicon: {\n genre: \"Biome\",\n story: \"Grove\",\n scene: \"Clearing\",\n scene_choice: \"Trail\",\n node: \"Seed\",\n node_type_choice: \"Trail\",\n node_type_media: \"Bloom\",\n node_type_go_to_scene: \"Crossing\",\n player: \"Wanderer\",\n library: \"Canopy\",\n library_open: \"Open Canopy\",\n library_close: \"Close Canopy\",\n editor: \"Heartwood\",\n publish: \"Plant\",\n experience_realm_idea: \"Untamed Nature\",\n the_end: \"Roots\",\n media_pool: \"Undergrowth\",\n scene_graph: \"Canopy\",\n watch_path: \"Your trail\",\n untitled_story: \"Untitled Grove\",\n unknown_genre: \"Unknown Biome\",\n scenes_count: \"clearings\",\n choices_count: \"trails\",\n drafts_published: \"Drafts + Planted\",\n published_ver: \"Planted ver.\",\n draft: \"Draft\",\n no_scenes_yet: \"No clearings in this canopy yet.\",\n no_path_yet: \"No trail to show yet.\",\n menu_empty_drafts: \"No groves yet. Plant one to begin.\",\n menu_empty_published: \"No planted groves in the canopy.\",\n menu_published_heading: \"Planted groves\",\n menu_create_story: \"New grove\",\n menu_create_film: \"Create film\",\n film_title_placeholder: \"Grove title\",\n select_genre: \"Select biome\",\n genre_field_aria: \"Biome\",\n delete_story_verb: \"Delete grove\",\n title_scene_default: \"Title clearing\",\n choices_made_stat: \"trails taken\",\n content_rating: \"Field Guide\",\n content_rating_field_aria: \"Field guide\",\n select_content_rating: \"Select field guide\",\n unrated: \"Unmarked\",\n viewer_credits: \"Sap\",\n creator_credits: \"Pollen\",\n editor_media_upload: \"Upload Bloom\",\n editor_media_preview: \"Bloom Preview\",\n editor_alt_media: \"Effects\",\n editor_choices: \"Choices\",\n editor_scene_settings: \"Clearing Settings\",\n editor_title_scene: \"Title Clearing\",\n editor_film_title: \"Grove Title\",\n editor_film_title_hint: \"Click to rename this grove\",\n editor_ending_scene: \"Roots\",\n editor_play: \"Unfurl\",\n editor_pause: \"Rest\",\n editor_prev_frame: \"Previous Frame\",\n editor_next_frame: \"Next Frame\",\n editor_seek: \"Seek\",\n editor_no_media: \"No bloom assigned\",\n editor_uploading: \"Blooming\\u2026\",\n editor_drop_media: \"Drop bloom here\",\n editor_scene_type: \"Clearing Type\",\n editor_save: \"Engrave\",\n editor_cancel: \"Cancel\",\n editor_create_scene: \"Plant Clearing\",\n editor_create_scene_plain: \"Create New Scene\",\n editor_create_scene_cost: \"1 Pollen\",\n editor_delete_scene_cta: \"Delete Scene\",\n editor_delete_scene_confirm: \"Click again to confirm\",\n editor_scene_locked_delete: \"Title and end scenes cannot be deleted.\",\n editor_scene_color: \"Clearing Tint\",\n editor_ai_generate: \"Grow Bloom\",\n editor_ai_generating: \"Seed Sprouting\\u2026\",\n editor_ai_mood_question: \"What feeling should this clearing evoke?\",\n editor_ai_style_question: \"What growth pattern for this bloom?\",\n editor_ai_prompt_question: \"Describe this clearing\",\n editor_ai_accept: \"Root Bloom\",\n editor_ai_reject: \"Prune Bloom\",\n editor_ai_retry: \"Regrow\",\n editor_ai_feedback_prompt: \"How should we reshape the growth?\",\n editor_ai_credit_cost: \"1 Pollen per bloom\",\n editor_ai_generating_scene: \"Clearing emerging\\u2026\",\n editor_ai_style_badge: \"Growth Style\",\n editor_ai_failed: \"Growth withered. Try regrowing.\",\n editor_media_attached: \"This clearing already has a bloom rooted.\",\n editor_remove_media: \"Uproot Bloom\",\n editor_media_question: \"What's this scene's media?\",\n editor_media_type_text: \"Text\",\n editor_media_type_imagery: \"Imagery\",\n editor_media_type_film: \"Film\",\n editor_media_preview_cta: \"Preview\",\n editor_media_preview_disabled: \"Add text to enable preview.\",\n editor_text_toolbar_label: \"Generator\",\n editor_text_font_label: \"Font\",\n editor_text_color_label: \"Text Color\",\n editor_text_background_label: \"Background\",\n editor_text_placeholder: \"Start writing scene media...\",\n editor_line_add: \"Add Text\",\n editor_text_lines_section: \"Transmission Lines\",\n editor_line_editor_label: \"Editor\",\n editor_line_number: \"Line\",\n editor_line_timestamp: \"Appears at\",\n editor_line_fade_in: \"Fade In\",\n editor_line_fade_out: \"Fade Out\",\n editor_line_duration: \"Duration\",\n editor_line_persist: \"Stay on Screen\",\n editor_effects_section: \"Effects\",\n editor_effects_add: \"Add sounds, effects, etc\",\n editor_effect_fade_in_sound: \"Fade In Sound\",\n editor_effect_fade_out_sound: \"Fade Out Sound\",\n editor_effect_fade_in_visual: \"Fade In\",\n editor_effect_fade_out_visual: \"Fade Out\",\n editor_timeline_label: \"Timeline\",\n editor_preview_label: \"Preview\",\n editor_preview_play: \"Play\",\n editor_preview_pause: \"Pause\",\n editor_media_placeholder_imagery: \"Imagery authoring is coming soon.\",\n editor_media_placeholder_film: \"Film authoring is coming soon.\",\n editor_goto_scene: \"Goto Clearing\",\n editor_scene_duration: \"Bloom Duration\",\n editor_add_choice: \"Add Trail\",\n editor_arrow_tool: \"Place Indicator\",\n editor_goto_nullified: \"Disabled — trails override goto\",\n editor_remove_choice: \"Remove Trail\",\n editor_choice_target: \"Destination Clearing\",\n editor_choices_empty_hint: \"Set a goto clearing or add a trail to branch the story.\",\n editor_goto_none: \"None\",\n editor_choice_label: \"Trail\",\n editor_flow_timeline: \"Story Flow\",\n editor_flow_goto_path: \"Default Goto\",\n editor_flow_add_choice_here: \"Add Trail Here\",\n editor_flow_choice_branch: \"Branch\",\n editor_flow_content_ref: \"Content\",\n editor_scene_duration_unit: \"seconds\",\n editor_scene_duration_override_hint: \"Overrides bloom length. Content runtime: {duration}s\",\n editor_arrow_scale: \"Span\",\n editor_arrow_rotation: \"Bearing\",\n editor_arrow_rotate_hint: \"Drag the beacon above the indicator in preview to rotate\",\n constellation_no_coverbox: \"Unseen\",\n hud_edit_control: \"Tend\",\n hud_delete_control: \"Uproot\",\n hud_publish_control: \"Plant\",\n hud_launch_control: \"Enter\",\n editor_publish_story: \"Share\",\n viewer_loading: \"Entering the grove…\",\n viewer_preparing: \"Gathering blooms…\",\n viewer_close: \"Leave\",\n viewer_complete: \"Journey complete\",\n viewer_stage_label: \"Canopy\",\n viewer_choose_path: \"Choose\",\n create_button: \"CREATE\",\n publish_form_heading: \"Planting check\",\n tags_label: \"Root Tags\",\n tags_placeholder: \"Search root tags\\u2026\",\n tags_empty: \"No root tags yet\",\n story_picker_label: \"Groves\",\n created_by: \"Tended by\",\n director_profile_title: \"Director profile\",\n director_profile_name_label: \"Name\",\n director_profile_realm_label: \"Experience realm\",\n director_profile_image_label: \"Image\",\n director_profile_image_hint:\n \"Realm-themed seal — switching the realm above swaps the seal. Custom uploads land with the V1 avatar endpoints.\",\n director_profile_tab_profile: \"Profile\",\n director_profile_tab_experience_mapping: \"Experience Mapping\",\n director_profile_admin_only: \"Admin only\",\n director_profile_cancel: \"Cancel\",\n director_profile_close: \"Close\",\n director_profile_save: \"Save\",\n director_profile_saving: \"Saving…\",\n director_profile_name_required: \"Name is required.\",\n director_profile_save_failed: \"Save failed\",\n experience_mapping_loading: \"Loading experience mapping…\",\n experience_mapping_empty: \"No template hierarchy available yet.\",\n experience_mapping_retry: \"Retry\",\n experience_mapping_story_label: \"Story\",\n experience_mapping_scene_label: \"Scene\",\n experience_mapping_action_label: \"Action\",\n experience_mapping_field_title: \"Title\",\n experience_mapping_field_description: \"Description\",\n experience_mapping_field_genre: \"Genre\",\n experience_mapping_field_content_rating: \"Content rating\",\n experience_mapping_field_color: \"Color\",\n experience_mapping_field_name: \"Name\",\n experience_mapping_field_type: \"Type\",\n experience_mapping_field_order: \"Order\",\n experience_mapping_field_duration: \"Duration\",\n experience_mapping_field_properties: \"Properties\",\n experience_mapping_field_subproperties: \"Subproperties\",\n experience_mapping_save_changes: \"Save changes\",\n experience_mapping_saved: \"Saved\",\n experience_mapping_save_error: \"Could not save changes.\",\n experience_mapping_delete_story: \"Delete story\",\n experience_mapping_delete_scene: \"Delete scene\",\n experience_mapping_delete_action: \"Delete action\",\n experience_mapping_delete_confirm: \"Click again to confirm\",\n experience_mapping_delete_error: \"Delete failed.\",\n experience_mapping_expand_all: \"Expand all\",\n experience_mapping_collapse_all: \"Collapse all\",\n experience_mapping_forbidden: \"You do not have admin access for this section.\",\n experience_mapping_bad_json: \"JSON must be valid before saving.\",\n experience_mapping_intro:\n \"Edit realm vocabulary from largest to smallest. Generate JSON and paste it in chat for code application.\",\n experience_mapping_dirty: \"dirty changes\",\n experience_mapping_export_ready: \"No unsaved mapping edits yet.\",\n experience_mapping_export_json: \"Generate JSON export\",\n experience_mapping_copy_json: \"Copy JSON\",\n experience_mapping_copied: \"Copied\",\n experience_mapping_paste_instruction:\n \"Paste this JSON in chat and I will apply it to chuzi-shared.\",\n experience_mapping_export_empty: \"Export output appears here.\",\n experience_mapping_select_realm: \"Select realm\",\n experience_mapping_group_major_idea: \"Major Idea\",\n experience_mapping_helper_realm_idea:\n \"Highest-level concept for this realm.\",\n experience_mapping_save_experience: \"Save to experience\",\n experience_mapping_saved_experience:\n \"Saved to current experience. Some labels appear immediately.\",\n auth_email_placeholder: \"Email\",\n auth_password_input_placeholder: \"Password\",\n auth_password_sign_in_button: \"Sign In\",\n auth_password_signing_in: \"Signing in...\",\n auth_signin_tab: \"Sign in\",\n auth_signup_tab: \"Sign up\",\n auth_signup_subtitle: \"Create your account with secure sign-in.\",\n auth_signin_subtitle: \"Sign in with your account provider.\",\n auth_sign_up_button: \"Continue with Google\",\n auth_username_placeholder: \"Username\",\n auth_sign_in_button: \"Continue with Google\",\n auth_signing_in: \"Signing in...\",\n auth_oidc_redirecting: \"Redirecting to secure sign-in...\",\n auth_oidc_failed: \"Could not start sign-in.\",\n auth_oidc_callback_processing: \"Completing sign-in...\",\n auth_oidc_verified: \"Signed in. Redirecting...\",\n auth_oidc_callback_failed: \"Could not complete sign-in.\",\n auth_oidc_token_missing: \"Sign-in token was missing.\",\n auth_magic_link_sent:\n \"If that email is registered, a magic link has been sent.\",\n auth_magic_link_sent_signup: \"Check your email for your sign-up link.\",\n auth_magic_link_verifying: \"Verifying magic link...\",\n auth_magic_link_verified: \"Signed in. Redirecting...\",\n auth_magic_link_failed: \"This magic link is invalid or expired.\",\n auth_magic_link_cta: \"Use another email\",\n auth_login_failed: \"Sign-in failed.\",\n auth_username_checking: \"Checking username availability...\",\n auth_username_available: \"Username is available.\",\n auth_username_unavailable: \"Username is taken; updated to an available suggestion.\",\n auth_username_required: \"Username is required.\",\n auth_username_update_failed: \"Could not reserve a unique username.\",\n experience_mapping_group_experience_root: \"Experience Root\",\n experience_mapping_group_node_types: \"Node Types\",\n experience_mapping_group_scene_structure: \"Scene Structure\",\n experience_mapping_group_media: \"Media Terms\",\n experience_mapping_group_counts: \"Counts and Adjacent Labels\",\n experience_mapping_helper_story: \"Largest narrative unit.\",\n experience_mapping_helper_scene: \"Contained unit under story.\",\n experience_mapping_helper_scene_choice: \"Branching choice in a scene.\",\n experience_mapping_helper_node: \"Smallest flow node.\",\n experience_mapping_helper_alt_media: \"Smallest related media label.\",\n },\n locales: {\n es: {\n genre: \"Bioma\",\n story: \"Arboleda\",\n scene: \"Claro\",\n scene_choice: \"Sendero\",\n player: \"Errante\",\n library: \"Dosel\",\n editor: \"Duramen\",\n publish: \"Plantar\",\n the_end: \"Raíces\",\n untitled_story: \"Arboleda sin título\",\n menu_create_story: \"Nueva arboleda\",\n film_title_placeholder: \"Título de la arboleda\",\n select_genre: \"Seleccionar bioma\",\n created_by: \"Cuidado por\",\n },\n fr: {\n genre: \"Biome\",\n story: \"Bosquet\",\n scene: \"Clairière\",\n scene_choice: \"Sentier\",\n player: \"Vagabond\",\n library: \"Canopée\",\n editor: \"Cœur de bois\",\n publish: \"Planter\",\n the_end: \"Racines\",\n untitled_story: \"Bosquet sans titre\",\n menu_create_story: \"Nouveau bosquet\",\n film_title_placeholder: \"Titre du bosquet\",\n select_genre: \"Sélectionner un biome\",\n created_by: \"Soigné par\",\n },\n de: {\n genre: \"Biom\",\n story: \"Hain\",\n scene: \"Lichtung\",\n player: \"Wanderer\",\n publish: \"Pflanzen\",\n },\n pt: {\n genre: \"Bioma\",\n story: \"Bosque\",\n scene: \"Clareira\",\n player: \"Andarilho\",\n publish: \"Plantar\",\n },\n },\n },\n};\n\nexport const FALLBACK_LEXICON: Record<string, string> = {\n genre: \"Genre\",\n story: \"Story\",\n scene: \"Scene\",\n scene_choice: \"Choice\",\n node: \"Node\",\n node_type_choice: \"Choice\",\n node_type_media: \"Media\",\n node_type_go_to_scene: \"Go to scene\",\n player: \"Player\",\n library: \"Library\",\n library_open: \"Open scene tree\",\n library_close: \"Close scene tree\",\n editor: \"Editor\",\n publish: \"Publish\",\n experience_realm_idea: \"Experience Theme\",\n the_end: \"The End\",\n media_pool: \"Media Pool\",\n scene_graph: \"Scene tree\",\n watch_path: \"Your path\",\n untitled_story: \"Untitled Story\",\n unknown_genre: \"Unknown Genre\",\n scenes_count: \"scenes\",\n choices_count: \"choices\",\n drafts_published: \"Drafts + Published\",\n published_ver: \"Published ver.\",\n draft: \"Draft\",\n no_scenes_yet: \"No scenes available yet.\",\n no_path_yet: \"No path to show yet.\",\n menu_empty_drafts: \"No films yet. Create one to get started.\",\n menu_empty_published: \"No published films found.\",\n menu_published_heading: \"Published Films\",\n menu_create_story: \"Create Story\",\n menu_create_film: \"Create Film\",\n film_title_placeholder: \"Film title\",\n select_genre: \"Select genre\",\n genre_field_aria: \"Film genre\",\n delete_story_verb: \"Delete film\",\n title_scene_default: \"Title Scene\",\n choices_made_stat: \"choices made\",\n content_rating: \"Rating\",\n content_rating_field_aria: \"Content rating\",\n select_content_rating: \"Select rating\",\n unrated: \"Not Rated\",\n viewer_credits: \"Viewer Credits\",\n creator_credits: \"Creator Credits\",\n editor_media_upload: \"Upload Media\",\n editor_media_preview: \"Media Preview\",\n editor_alt_media: \"Effects\",\n editor_choices: \"Choices\",\n editor_scene_settings: \"Scene Settings\",\n editor_title_scene: \"Title Scene\",\n editor_film_title: \"Film Title\",\n editor_film_title_hint: \"Click to rename this film\",\n editor_ending_scene: \"Ending Scene\",\n editor_play: \"Play\",\n editor_pause: \"Pause\",\n editor_prev_frame: \"Previous Frame\",\n editor_next_frame: \"Next Frame\",\n editor_seek: \"Seek\",\n editor_no_media: \"No media assigned\",\n editor_uploading: \"Uploading\\u2026\",\n editor_drop_media: \"Drop media here\",\n editor_scene_type: \"Scene Type\",\n editor_save: \"Save\",\n editor_cancel: \"Cancel\",\n editor_create_scene: \"Create Scene\",\n editor_create_scene_plain: \"Create New Scene\",\n editor_create_scene_cost: \"1 credit\",\n editor_delete_scene_cta: \"Delete Scene\",\n editor_delete_scene_confirm: \"Click again to confirm\",\n editor_scene_locked_delete: \"Title and end scenes cannot be deleted.\",\n editor_scene_color: \"Scene Color\",\n editor_ai_generate: \"Generate with AI\",\n editor_ai_generating: \"Generating\\u2026\",\n editor_ai_mood_question: \"What mood should this scene convey?\",\n editor_ai_style_question: \"What visual style do you want?\",\n editor_ai_prompt_question: \"Describe this scene\",\n editor_ai_accept: \"Accept\",\n editor_ai_reject: \"Reject\",\n editor_ai_retry: \"Try Again\",\n editor_ai_feedback_prompt: \"What should we change?\",\n editor_ai_credit_cost: \"1 credit per generation\",\n editor_ai_generating_scene: \"Scene generating\\u2026\",\n editor_ai_style_badge: \"Style\",\n editor_ai_failed: \"Generation failed. Please try again.\",\n editor_media_attached: \"This scene already has media attached.\",\n editor_remove_media: \"Remove Media\",\n editor_media_question: \"What's this scene's media?\",\n editor_media_type_text: \"Text\",\n editor_media_type_imagery: \"Imagery\",\n editor_media_type_film: \"Film\",\n editor_media_preview_cta: \"Preview\",\n editor_media_preview_disabled: \"Add text to enable preview.\",\n editor_text_toolbar_label: \"Generator\",\n editor_text_font_label: \"Font\",\n editor_text_color_label: \"Text Color\",\n editor_text_background_label: \"Background\",\n editor_text_placeholder: \"Start writing scene media...\",\n editor_line_add: \"Add Text\",\n editor_text_lines_section: \"Text Lines\",\n editor_line_editor_label: \"Editor\",\n editor_line_number: \"Line\",\n editor_line_timestamp: \"Appears at\",\n editor_line_fade_in: \"Fade In\",\n editor_line_fade_out: \"Fade Out\",\n editor_line_duration: \"Duration\",\n editor_line_persist: \"Stay on Screen\",\n editor_effects_section: \"Effects\",\n editor_effects_add: \"Add sounds, effects, etc\",\n editor_effect_fade_in_sound: \"Fade In Sound\",\n editor_effect_fade_out_sound: \"Fade Out Sound\",\n editor_effect_fade_in_visual: \"Fade In\",\n editor_effect_fade_out_visual: \"Fade Out\",\n editor_timeline_label: \"Timeline\",\n editor_preview_label: \"Preview\",\n editor_preview_play: \"Play\",\n editor_preview_pause: \"Pause\",\n editor_media_placeholder_imagery: \"Imagery authoring is coming soon.\",\n editor_media_placeholder_film: \"Film authoring is coming soon.\",\n editor_goto_scene: \"Goto Scene\",\n editor_scene_duration: \"Scene Duration\",\n editor_add_choice: \"Add Choice\",\n editor_arrow_tool: \"Place Arrow\",\n editor_goto_nullified: \"Disabled — choices override goto\",\n editor_remove_choice: \"Remove Choice\",\n editor_choice_target: \"Destination Scene\",\n editor_choices_empty_hint: \"Set a goto scene or add a choice to create branching paths.\",\n editor_goto_none: \"None\",\n editor_choice_label: \"Choice\",\n editor_flow_timeline: \"Story Flow\",\n editor_flow_goto_path: \"Default Goto\",\n editor_flow_add_choice_here: \"Add Choice Here\",\n editor_flow_choice_branch: \"Branch\",\n editor_flow_content_ref: \"Content\",\n editor_scene_duration_unit: \"seconds\",\n editor_scene_duration_override_hint: \"Overrides preview playback length. Content: {duration}s\",\n editor_arrow_scale: \"Scale\",\n editor_arrow_rotation: \"Rotation\",\n editor_arrow_rotate_hint: \"Drag the handle above the arrow in preview to rotate\",\n constellation_no_coverbox: \"No cover\",\n hud_edit_control: \"Edit\",\n hud_delete_control: \"Delete\",\n hud_publish_control: \"Publish\",\n hud_launch_control: \"Launch\",\n editor_publish_story: \"Publish\",\n viewer_loading: \"Loading experience…\",\n viewer_preparing: \"Cueing media…\",\n viewer_close: \"Exit\",\n viewer_complete: \"Experience complete\",\n viewer_stage_label: \"Experience\",\n viewer_choose_path: \"Choose\",\n create_button: \"CREATE\",\n publish_form_heading: \"Publish checklist\",\n tags_label: \"Tags\",\n tags_placeholder: \"Search tags\\u2026\",\n tags_empty: \"No tags yet\",\n story_picker_label: \"Stories\",\n created_by: \"Created by\",\n director_profile_title: \"Director profile\",\n director_profile_name_label: \"Name\",\n director_profile_realm_label: \"Experience realm\",\n director_profile_image_label: \"Image\",\n director_profile_image_hint:\n \"Realm-themed seal — switching the realm above swaps the seal. Custom uploads land with the V1 avatar endpoints.\",\n director_profile_tab_profile: \"Profile\",\n director_profile_tab_experience_mapping: \"Experience Mapping\",\n director_profile_admin_only: \"Admin only\",\n director_profile_cancel: \"Cancel\",\n director_profile_close: \"Close\",\n director_profile_save: \"Save\",\n director_profile_saving: \"Saving…\",\n director_profile_name_required: \"Name is required.\",\n director_profile_save_failed: \"Save failed\",\n experience_mapping_loading: \"Loading experience mapping…\",\n experience_mapping_empty: \"No template hierarchy available yet.\",\n experience_mapping_retry: \"Retry\",\n experience_mapping_story_label: \"Story\",\n experience_mapping_scene_label: \"Scene\",\n experience_mapping_action_label: \"Action\",\n experience_mapping_field_title: \"Title\",\n experience_mapping_field_description: \"Description\",\n experience_mapping_field_genre: \"Genre\",\n experience_mapping_field_content_rating: \"Content rating\",\n experience_mapping_field_color: \"Color\",\n experience_mapping_field_name: \"Name\",\n experience_mapping_field_type: \"Type\",\n experience_mapping_field_order: \"Order\",\n experience_mapping_field_duration: \"Duration\",\n experience_mapping_field_properties: \"Properties\",\n experience_mapping_field_subproperties: \"Subproperties\",\n experience_mapping_save_changes: \"Save changes\",\n experience_mapping_saved: \"Saved\",\n experience_mapping_save_error: \"Could not save changes.\",\n experience_mapping_delete_story: \"Delete story\",\n experience_mapping_delete_scene: \"Delete scene\",\n experience_mapping_delete_action: \"Delete action\",\n experience_mapping_delete_confirm: \"Click again to confirm\",\n experience_mapping_delete_error: \"Delete failed.\",\n experience_mapping_expand_all: \"Expand all\",\n experience_mapping_collapse_all: \"Collapse all\",\n experience_mapping_forbidden: \"You do not have admin access for this section.\",\n experience_mapping_bad_json: \"JSON must be valid before saving.\",\n experience_mapping_intro:\n \"Edit realm vocabulary from largest to smallest. Generate JSON and paste it in chat for code application.\",\n experience_mapping_dirty: \"dirty changes\",\n experience_mapping_export_ready: \"No unsaved mapping edits yet.\",\n experience_mapping_export_json: \"Generate JSON export\",\n experience_mapping_copy_json: \"Copy JSON\",\n experience_mapping_copied: \"Copied\",\n experience_mapping_paste_instruction:\n \"Paste this JSON in chat and I will apply it to chuzi-shared.\",\n experience_mapping_export_empty: \"Export output appears here.\",\n experience_mapping_select_realm: \"Select realm\",\n experience_mapping_group_major_idea: \"Major Idea\",\n experience_mapping_helper_realm_idea:\n \"Highest-level concept for this realm.\",\n experience_mapping_save_experience: \"Save to experience\",\n experience_mapping_saved_experience:\n \"Saved to current experience. Some labels appear immediately.\",\n auth_email_placeholder: \"Email\",\n auth_password_input_placeholder: \"Password\",\n auth_password_sign_in_button: \"Sign In\",\n auth_password_signing_in: \"Signing in...\",\n auth_signin_tab: \"Sign in\",\n auth_signup_tab: \"Sign up\",\n auth_signup_subtitle: \"Create your account with secure sign-in.\",\n auth_signin_subtitle: \"Sign in with your account provider.\",\n auth_sign_up_button: \"Continue with Google\",\n auth_username_placeholder: \"Username\",\n auth_sign_in_button: \"Continue with Google\",\n auth_signing_in: \"Signing in...\",\n auth_oidc_redirecting: \"Redirecting to secure sign-in...\",\n auth_oidc_failed: \"Could not start sign-in.\",\n auth_oidc_callback_processing: \"Completing sign-in...\",\n auth_oidc_verified: \"Signed in. Redirecting...\",\n auth_oidc_callback_failed: \"Could not complete sign-in.\",\n auth_oidc_token_missing: \"Sign-in token was missing.\",\n auth_magic_link_sent:\n \"If that email is registered, a magic link has been sent.\",\n auth_magic_link_sent_signup: \"Check your email for your sign-up link.\",\n auth_magic_link_verifying: \"Verifying magic link...\",\n auth_magic_link_verified: \"Signed in. Redirecting...\",\n auth_magic_link_failed: \"This magic link is invalid or expired.\",\n auth_magic_link_cta: \"Use another email\",\n auth_login_failed: \"Sign-in failed.\",\n auth_username_checking: \"Checking username availability...\",\n auth_username_available: \"Username is available.\",\n auth_username_unavailable: \"Username is taken; updated to an available suggestion.\",\n auth_username_required: \"Username is required.\",\n auth_username_update_failed: \"Could not reserve a unique username.\",\n experience_mapping_group_experience_root: \"Experience Root\",\n experience_mapping_group_node_types: \"Node Types\",\n experience_mapping_group_scene_structure: \"Scene Structure\",\n experience_mapping_group_media: \"Media Terms\",\n experience_mapping_group_counts: \"Counts and Adjacent Labels\",\n experience_mapping_helper_story: \"Largest narrative unit.\",\n experience_mapping_helper_scene: \"Contained unit under story.\",\n experience_mapping_helper_scene_choice: \"Branching choice in a scene.\",\n experience_mapping_helper_node: \"Smallest flow node.\",\n experience_mapping_helper_alt_media: \"Smallest related media label.\",\n};\n\n/**\n * Per-locale overrides for FALLBACK_LEXICON. Missing keys fall through to\n * the English fallback. Mirrors PHP `chuzi_realms.fallback_locales`.\n */\nexport const FALLBACK_LOCALES: Partial<\n Record<LocaleId, Record<string, string>>\n> = {\n es: {\n genre: \"Género\",\n story: \"Historia\",\n scene: \"Escena\",\n scene_choice: \"Elección\",\n player: \"Reproductor\",\n library: \"Biblioteca\",\n editor: \"Editor\",\n publish: \"Publicar\",\n the_end: \"Fin\",\n untitled_story: \"Historia sin título\",\n menu_create_story: \"Crear historia\",\n menu_create_film: \"Crear película\",\n film_title_placeholder: \"Título de la película\",\n select_genre: \"Seleccionar género\",\n delete_story_verb: \"Eliminar película\",\n created_by: \"Creado por\",\n },\n fr: {\n genre: \"Genre\",\n story: \"Histoire\",\n scene: \"Scène\",\n scene_choice: \"Choix\",\n player: \"Lecteur\",\n library: \"Bibliothèque\",\n editor: \"Éditeur\",\n publish: \"Publier\",\n the_end: \"Fin\",\n untitled_story: \"Histoire sans titre\",\n menu_create_story: \"Créer une histoire\",\n menu_create_film: \"Créer un film\",\n film_title_placeholder: \"Titre du film\",\n select_genre: \"Sélectionner un genre\",\n delete_story_verb: \"Supprimer le film\",\n created_by: \"Créé par\",\n },\n de: {\n genre: \"Genre\",\n story: \"Geschichte\",\n scene: \"Szene\",\n publish: \"Veröffentlichen\",\n the_end: \"Ende\",\n untitled_story: \"Unbenannte Geschichte\",\n menu_create_story: \"Geschichte erstellen\",\n film_title_placeholder: \"Filmtitel\",\n select_genre: \"Genre auswählen\",\n created_by: \"Erstellt von\",\n },\n pt: {\n genre: \"Gênero\",\n story: \"História\",\n scene: \"Cena\",\n publish: \"Publicar\",\n the_end: \"Fim\",\n untitled_story: \"História sem título\",\n menu_create_story: \"Criar história\",\n film_title_placeholder: \"Título do filme\",\n select_genre: \"Selecionar gênero\",\n created_by: \"Criado por\",\n },\n};\n\nfunction resolveFallback(locale: LocaleId | null | undefined): Record<string, string> {\n const overrides = locale && FALLBACK_LOCALES[locale];\n return overrides ? { ...FALLBACK_LEXICON, ...overrides } : { ...FALLBACK_LEXICON };\n}\n\nfunction resolveRealm(\n realmId: RealmId,\n locale: LocaleId | null | undefined\n): Record<string, string> {\n const realm = REALMS[realmId];\n const overrides = locale && realm.locales ? realm.locales[locale] : undefined;\n const runtimeOverrides = runtimeRealmLexiconOverrides[realmId];\n return {\n ...realm.lexicon,\n ...(overrides ?? {}),\n ...(runtimeOverrides ?? {}),\n };\n}\n\n/**\n * Get a lexicon value for a realm + locale, falling back to the neutral\n * lexicon (which itself respects locale).\n */\nexport function t(\n realmId: RealmId | null | undefined,\n key: string,\n fallback = \"\",\n locale: LocaleId | null | undefined = null\n): string {\n if (realmId && REALMS[realmId]) {\n const realmLex = resolveRealm(realmId, locale);\n if (realmLex[key] !== undefined) return realmLex[key];\n }\n const fb = resolveFallback(locale);\n return fb[key] ?? fallback;\n}\n\n/**\n * Get the full merged lexicon for a realm + locale (realm lexicon on top of\n * locale-aware fallback).\n */\nexport function lexiconForRealm(\n realmId: RealmId | null | undefined,\n locale: LocaleId | null | undefined = null\n): Record<string, string> {\n const fb = resolveFallback(locale);\n if (!realmId || !REALMS[realmId]) {\n return fb;\n }\n return { ...fb, ...resolveRealm(realmId, locale) };\n}\n","import type { RealmId } from \"../types/index.js\";\n\n/**\n * CSS custom property tokens, mirroring public/css/chuzi-realms.css.\n * Use these for any non-DOM rendering (e.g. React Native, canvas).\n */\nexport interface RealmThemeTokens {\n bgDeep: string;\n bgMid: string;\n accent: string;\n accentSoft: string;\n text: string;\n muted: string;\n effectLine: string;\n}\n\nexport const THEME_TOKENS: Record<RealmId, RealmThemeTokens> = {\n cosmos: {\n bgDeep: \"#04070d\",\n bgMid: \"#0a1020\",\n accent: \"#7eb8ff\",\n accentSoft: \"rgba(126, 184, 255, 0.35)\",\n text: \"#e8f0ff\",\n muted: \"rgba(232, 240, 255, 0.65)\",\n effectLine: \"#ffb347\",\n },\n wilds: {\n bgDeep: \"#0d120c\",\n bgMid: \"#152018\",\n accent: \"#7bc96f\",\n accentSoft: \"rgba(123, 201, 111, 0.35)\",\n text: \"#eef6ea\",\n muted: \"rgba(238, 246, 234, 0.7)\",\n effectLine: \"#b78aff\",\n },\n};\n\n/**\n * Scene tree visualization theme, mirroring the THEMES object in\n * resources/js/scene-tree-viewer.js.\n */\nexport interface SceneTreeTheme {\n bg: string;\n edgeChoice: string;\n edgeGoto: string;\n nodeDefault: string;\n nodeActive: string;\n borderDefault: string;\n borderActive: string;\n labelDefault: string;\n labelActive: string;\n nodeLockedFill: string;\n nodeLockedBorder: string;\n labelLocked: string;\n nodeShape: \"star\" | \"rect\";\n rectRx: number;\n}\n\nexport const SCENE_TREE_THEMES: Record<RealmId, SceneTreeTheme> = {\n cosmos: {\n bg: \"#020408\",\n edgeChoice: \"#e8f0ff\",\n edgeGoto: \"#4a9fff\",\n nodeDefault: \"#ffffff\",\n nodeActive: \"#ffd47e\",\n borderDefault: \"#3a5080\",\n borderActive: \"#fff6d0\",\n labelDefault: \"rgba(220, 232, 255, 0.92)\",\n labelActive: \"rgba(255, 246, 220, 0.98)\",\n nodeLockedFill: \"#151a28\",\n nodeLockedBorder: \"#2a3348\",\n labelLocked: \"rgba(200, 210, 230, 0.35)\",\n nodeShape: \"star\",\n rectRx: 2,\n },\n wilds: {\n bg: \"#04070d\",\n edgeChoice: \"#ffffff\",\n edgeGoto: \"#6ecf7a\",\n nodeDefault: \"#e8f5e4\",\n nodeActive: \"#d31e2f\",\n borderDefault: \"#2d4a32\",\n borderActive: \"#ff9ea8\",\n labelDefault: \"rgba(232, 245, 228, 0.92)\",\n labelActive: \"rgba(255, 214, 219, 0.98)\",\n nodeLockedFill: \"#1a221c\",\n nodeLockedBorder: \"#2a3d30\",\n labelLocked: \"rgba(200, 220, 200, 0.38)\",\n nodeShape: \"rect\",\n rectRx: 3,\n },\n};\n\n/**\n * Get theme tokens for a realm, defaulting to wilds.\n */\nexport function getThemeTokens(realmId: RealmId | null | undefined): RealmThemeTokens {\n return THEME_TOKENS[realmId ?? \"wilds\"] ?? THEME_TOKENS.wilds;\n}\n\n/**\n * Get scene tree theme for a realm, defaulting to wilds.\n */\nexport function getSceneTreeTheme(realmId: RealmId | null | undefined): SceneTreeTheme {\n return SCENE_TREE_THEMES[realmId ?? \"wilds\"] ?? SCENE_TREE_THEMES.wilds;\n}\n","import { createContext, useContext, useMemo, type ReactNode } from \"react\";\nimport { lexiconForRealm, t as translateRealm } from \"../../config/index.js\";\nimport { getThemeTokens, type RealmThemeTokens } from \"../../themes/index.js\";\nimport type { LocaleId, RealmId } from \"../../types/index.js\";\n\n/**\n * Realm-aware theme + lexicon context. Every chuzi-shared/ui primitive reads\n * from this; consuming apps wrap their tree once at the top level. Switching\n * realms or locales re-renders all consumers without prop drilling.\n */\n\nexport interface RealmTheme {\n realmId: RealmId | null;\n locale: LocaleId | null;\n tokens: RealmThemeTokens;\n /** Realm + locale aware lexicon lookup. */\n t: (key: string, fallback?: string) => string;\n /** Full merged lexicon for the current realm + locale. */\n lexicon: Record<string, string>;\n}\n\nconst RealmThemeContext = createContext<RealmTheme | null>(null);\n\nexport interface RealmThemeProviderProps {\n realmId: RealmId | null;\n locale?: LocaleId | null;\n lexiconRevision?: number;\n children: ReactNode;\n}\n\nexport function RealmThemeProvider({\n realmId,\n locale = null,\n lexiconRevision = 0,\n children,\n}: RealmThemeProviderProps) {\n const value = useMemo<RealmTheme>(() => {\n return {\n realmId,\n locale,\n tokens: getThemeTokens(realmId),\n lexicon: lexiconForRealm(realmId, locale),\n t: (key, fallback = \"\") => translateRealm(realmId, key, fallback, locale),\n };\n }, [realmId, locale, lexiconRevision]);\n\n return (\n <RealmThemeContext.Provider value={value}>\n {children}\n </RealmThemeContext.Provider>\n );\n}\n\nexport function useRealmTheme(): RealmTheme {\n const ctx = useContext(RealmThemeContext);\n if (!ctx) {\n throw new Error(\n \"useRealmTheme: no RealmThemeProvider in tree. Wrap your app root with <RealmThemeProvider realmId={...} />.\",\n );\n }\n return ctx;\n}\n","import {\n Pressable,\n StyleSheet,\n Text,\n type PressableProps,\n type StyleProp,\n type ViewStyle,\n} from \"react-native\";\nimport { useRealmTheme } from \"./theme/RealmThemeProvider.js\";\n\nexport type ButtonVariant = \"primary\" | \"ghost\";\n\nexport interface ButtonProps\n extends Omit<PressableProps, \"style\" | \"children\"> {\n label: string;\n variant?: ButtonVariant;\n style?: StyleProp<ViewStyle>;\n}\n\n/**\n * Realm-themed button. Primitives come from react-native so the same\n * component renders on web (via react-native-web) and native. Colors come\n * from the active realm's theme tokens — primary fills with accent, ghost\n * draws an accent outline.\n */\nexport function Button({\n label,\n variant = \"primary\",\n style,\n ...rest\n}: ButtonProps) {\n const { tokens } = useRealmTheme();\n return (\n <Pressable\n accessibilityRole=\"button\"\n style={({ pressed }) => [\n styles.base,\n variant === \"primary\"\n ? { backgroundColor: tokens.accent }\n : {\n backgroundColor: \"transparent\",\n borderColor: tokens.accent,\n borderWidth: 1,\n },\n pressed && { opacity: 0.85 },\n style,\n ]}\n {...rest}\n >\n <Text\n style={[\n styles.label,\n {\n color: variant === \"primary\" ? tokens.bgDeep : tokens.accent,\n },\n ]}\n >\n {label}\n </Text>\n </Pressable>\n );\n}\n\nconst styles = StyleSheet.create({\n base: {\n paddingHorizontal: 18,\n paddingVertical: 10,\n borderRadius: 8,\n alignItems: \"center\",\n justifyContent: \"center\",\n },\n label: {\n fontSize: 14,\n fontWeight: \"600\",\n letterSpacing: 0.5,\n },\n});\n","import {\n Pressable,\n StyleSheet,\n Text,\n View,\n type StyleProp,\n type ViewStyle,\n} from \"react-native\";\nimport type { StoryListItem } from \"../types/index.js\";\nimport { useRealmTheme } from \"./theme/RealmThemeProvider.js\";\n\nexport interface FilmCardProps {\n film: StoryListItem;\n /** Tap/click handler. Without one, the card is a static block. */\n onPress?: () => void;\n style?: StyleProp<ViewStyle>;\n}\n\n/**\n * Realm-themed film card. Title falls back to the realm's \"untitled\" lexicon\n * (Untitled Star System / Untitled Grove). Genre falls back to the realm's\n * \"unknown genre\" string. Pressable when an onPress is provided; otherwise\n * renders a non-interactive View — important for list contexts that want\n * the press handled at the row level instead.\n */\nexport function FilmCard({ film, onPress, style }: FilmCardProps) {\n const { tokens, t } = useRealmTheme();\n\n const title = film.title?.trim() || t(\"untitled_story\", \"Untitled\");\n const genre = film.genre?.trim() || t(\"unknown_genre\", \"Unknown\");\n const sceneLabel = t(\"scenes_count\", \"scenes\");\n const choiceLabel = t(\"choices_count\", \"choices\");\n\n const inner = (\n <>\n <Text\n style={[styles.title, { color: tokens.text }]}\n numberOfLines={2}\n >\n {title}\n </Text>\n <Text style={[styles.meta, { color: tokens.muted }]}>\n {genre} · {film.scenes_count} {sceneLabel} · {film.choices_count}{\" \"}\n {choiceLabel}\n </Text>\n {film.creator?.name ? (\n <Text style={[styles.creator, { color: tokens.accent }]}>\n {film.creator.name}\n </Text>\n ) : null}\n </>\n );\n\n if (onPress) {\n return (\n <Pressable\n accessibilityRole=\"button\"\n onPress={onPress}\n style={({ pressed }) => [\n styles.base,\n { backgroundColor: tokens.bgMid, borderColor: tokens.accentSoft },\n pressed && { opacity: 0.92 },\n style,\n ]}\n >\n {inner}\n </Pressable>\n );\n }\n\n return (\n <View\n style={[\n styles.base,\n { backgroundColor: tokens.bgMid, borderColor: tokens.accentSoft },\n style,\n ]}\n >\n {inner}\n </View>\n );\n}\n\nconst styles = StyleSheet.create({\n base: {\n padding: 16,\n borderRadius: 12,\n borderWidth: 1,\n gap: 6,\n minWidth: 240,\n },\n title: {\n fontSize: 16,\n fontWeight: \"700\",\n },\n meta: {\n fontSize: 12,\n },\n creator: {\n fontSize: 12,\n fontWeight: \"600\",\n },\n});\n","import {\n StyleSheet,\n Text,\n View,\n type StyleProp,\n type ViewStyle,\n} from \"react-native\";\nimport { useRealmTheme } from \"./theme/RealmThemeProvider.js\";\n\nexport type CreditRole = \"viewer\" | \"creator\";\n\nexport interface CreditBadgeProps {\n role: CreditRole;\n value: number;\n style?: StyleProp<ViewStyle>;\n}\n\n/**\n * Realm-themed credit badge — a bordered label showing a viewer or creator\n * credit balance. The label text adapts to the active realm's lexicon and\n * colors pull from the realm's theme tokens.\n */\nexport function CreditBadge({ role, value, style }: CreditBadgeProps) {\n const { tokens } = useRealmTheme();\n\n const label = role === \"viewer\" ? \"Viewer Credits\" : \"Creator Credits\";\n\n return (\n <View\n style={[\n styles.container,\n {\n borderColor: tokens.accent,\n backgroundColor: tokens.bgMid,\n },\n style,\n ]}\n >\n <Text style={[styles.label, { color: tokens.muted }]}>{label}</Text>\n <Text style={[styles.value, { color: tokens.accent }]}>\n {value.toLocaleString()}\n </Text>\n </View>\n );\n}\n\nconst styles = StyleSheet.create({\n container: {\n flexDirection: \"row\",\n alignItems: \"center\",\n gap: 8,\n paddingHorizontal: 14,\n paddingVertical: 8,\n borderRadius: 8,\n borderWidth: 1,\n },\n label: {\n fontSize: 12,\n fontWeight: \"600\",\n letterSpacing: 0.4,\n textTransform: \"uppercase\",\n },\n value: {\n fontSize: 16,\n fontWeight: \"700\",\n },\n});\n"]}
1
+ {"version":3,"sources":["../../src/config/index.ts","../../src/themes/index.ts","../../src/ui/theme/RealmThemeProvider.tsx","../../src/ui/Button.tsx","../../src/ui/FilmCard.tsx","../../src/ui/CreditBadge.tsx"],"names":["jsx","t","Text","styles","Pressable","StyleSheet","jsxs","View"],"mappings":"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","file":"index.js","sourcesContent":["import type {\n RealmId,\n RealmDefinition,\n ContentRating,\n ContentRatingDefinition,\n LocaleId,\n} from \"../types/index.js\";\n\nexport * from \"./credits.js\";\n\nexport const REALM_IDS: readonly RealmId[] = [\"cosmos\", \"wilds\"] as const;\n\nexport const SUPPORTED_LOCALES: readonly LocaleId[] = [\n \"en\",\n \"es\",\n \"fr\",\n \"de\",\n \"pt\",\n] as const;\n\nexport const LOCALE_LABELS: Record<LocaleId, string> = {\n en: \"English\",\n es: \"Español\",\n fr: \"Français\",\n de: \"Deutsch\",\n pt: \"Português\",\n};\n\nexport const DEFAULT_LOCALE: LocaleId = \"en\";\n\ntype RealmLexiconOverrides = Partial<Record<RealmId, Record<string, string>>>;\nlet runtimeRealmLexiconOverrides: RealmLexiconOverrides = {};\n\nexport function getRealmLexiconOverrides(): RealmLexiconOverrides {\n return {\n cosmos: runtimeRealmLexiconOverrides.cosmos\n ? { ...runtimeRealmLexiconOverrides.cosmos }\n : undefined,\n wilds: runtimeRealmLexiconOverrides.wilds\n ? { ...runtimeRealmLexiconOverrides.wilds }\n : undefined,\n };\n}\n\nexport function setRealmLexiconOverrides(overrides: RealmLexiconOverrides): void {\n runtimeRealmLexiconOverrides = {\n cosmos: overrides.cosmos ? { ...overrides.cosmos } : undefined,\n wilds: overrides.wilds ? { ...overrides.wilds } : undefined,\n };\n}\n\nexport function isSupportedLocale(value: unknown): value is LocaleId {\n return (\n typeof value === \"string\" &&\n SUPPORTED_LOCALES.includes(value as LocaleId)\n );\n}\n\n/**\n * Normalize a raw locale tag (e.g. \"en-US\", \"pt_BR\") to a supported LocaleId,\n * matching the PHP `LocaleResolver::normalize` behavior.\n */\nexport function normalizeLocale(value: string | null | undefined): LocaleId | null {\n if (!value) return null;\n const lower = value.toLowerCase().trim();\n if (isSupportedLocale(lower)) return lower;\n const base = lower.split(/[-_]/, 1)[0];\n return isSupportedLocale(base) ? base : null;\n}\n\n/**\n * Pick the best supported locale from a browser Accept-Language string.\n * Mirrors PHP `LocaleResolver::matchAcceptLanguage` (q-value aware).\n */\nexport function matchAcceptLanguage(\n accept: string | null | undefined\n): LocaleId | null {\n if (!accept) return null;\n const tags = accept\n .split(\",\")\n .map((part) => {\n const [tag, ...params] = part.trim().split(\";\");\n const qParam = params.find((p) => p.trim().startsWith(\"q=\"));\n const q = qParam ? parseFloat(qParam.split(\"=\")[1]) || 0 : 1;\n return { tag: tag.trim(), q };\n })\n .filter((c) => c.tag && c.tag !== \"*\")\n .sort((a, b) => b.q - a.q);\n\n for (const c of tags) {\n const normalized = normalizeLocale(c.tag);\n if (normalized) return normalized;\n }\n return null;\n}\n\nexport const CONTENT_RATING_IDS: readonly ContentRating[] = [\n \"G\",\n \"PG\",\n \"PG-13\",\n \"R\",\n \"NC-17\",\n] as const;\n\nexport const CONTENT_RATINGS: Record<ContentRating, ContentRatingDefinition> = {\n G: {\n id: \"G\",\n label: \"G\",\n description: \"General Audiences — all ages admitted.\",\n },\n PG: {\n id: \"PG\",\n label: \"PG\",\n description: \"Parental Guidance Suggested — some material may not be suitable for children.\",\n },\n \"PG-13\": {\n id: \"PG-13\",\n label: \"PG-13\",\n description: \"Parents Strongly Cautioned — some material may be inappropriate for children under 13.\",\n },\n R: {\n id: \"R\",\n label: \"R\",\n description: \"Restricted — under 17 requires accompanying parent or adult guardian.\",\n },\n \"NC-17\": {\n id: \"NC-17\",\n label: \"NC-17\",\n description: \"Adults Only — no one 17 and under admitted.\",\n },\n};\n\nexport function isContentRating(value: unknown): value is ContentRating {\n return typeof value === \"string\" && CONTENT_RATING_IDS.includes(value as ContentRating);\n}\n\nexport const REALMS: Record<RealmId, RealmDefinition> = {\n cosmos: {\n label: \"CHUZI COSMOS\",\n short_label: \"Cosmos\",\n lexicon: {\n genre: \"Galaxy\",\n story: \"Star System\",\n scene: \"Planet\",\n scene_choice: \"Trajectory\",\n node: \"Signal\",\n node_type_choice: \"Trajectory\",\n node_type_media: \"Transmission\",\n node_type_go_to_scene: \"Warp\",\n player: \"Voyager\",\n library: \"Star Chart\",\n library_open: \"Open Star Chart\",\n library_close: \"Close Star Chart\",\n editor: \"Mission Control\",\n publish: \"Launch\",\n experience_realm_idea: \"Outer Space\",\n the_end: \"The End\",\n media_pool: \"Cargo Bay\",\n scene_graph: \"Star Chart\",\n watch_path: \"Your trajectory\",\n untitled_story: \"Untitled Star System\",\n unknown_genre: \"Unknown Galaxy\",\n scenes_count: \"planets\",\n choices_count: \"trajectories\",\n drafts_published: \"Drafts + Launched\",\n published_ver: \"Launched ver.\",\n draft: \"Draft\",\n no_scenes_yet: \"No planets in this chart yet.\",\n no_path_yet: \"No trajectory to show yet.\",\n menu_empty_drafts: \"No star systems yet. Chart one to begin.\",\n menu_empty_published: \"No launched systems in the chart.\",\n menu_published_heading: \"Launched constellations\",\n menu_create_story: \"New star system\",\n menu_create_film: \"Create film\",\n film_title_placeholder: \"Star system title\",\n select_genre: \"Select galaxy\",\n genre_field_aria: \"Galaxy\",\n delete_story_verb: \"Delete star system\",\n title_scene_default: \"Title planet\",\n choices_made_stat: \"trajectories taken\",\n content_rating: \"Audience Class\",\n content_rating_field_aria: \"Audience class\",\n select_content_rating: \"Select audience class\",\n unrated: \"Unclassified\",\n viewer_credits: \"Fuel Cells\",\n creator_credits: \"Stardust\",\n editor_media_upload: \"Upload Transmission\",\n editor_media_preview: \"Transmission Preview\",\n editor_alt_media: \"Effects\",\n editor_choices: \"Choices\",\n editor_scene_settings: \"Star Settings\",\n editor_title_scene: \"Title Star\",\n editor_film_title: \"Star System Title\",\n editor_film_title_hint: \"Click to rename this star system\",\n editor_ending_scene: \"Final Star\",\n editor_play: \"Engage\",\n editor_pause: \"Hold\",\n editor_prev_frame: \"Previous Frame\",\n editor_next_frame: \"Next Frame\",\n editor_seek: \"Seek\",\n editor_no_media: \"No transmission assigned\",\n editor_uploading: \"Transmitting\\u2026\",\n editor_drop_media: \"Drop transmission here\",\n editor_scene_type: \"Star Type\",\n editor_save: \"Lock In\",\n editor_cancel: \"Abort\",\n editor_create_scene: \"Chart Planet\",\n editor_create_scene_plain: \"Create New Scene\",\n editor_create_scene_cost: \"1 Stardust\",\n editor_delete_scene_cta: \"Delete Scene\",\n editor_delete_scene_confirm: \"Click again to confirm\",\n editor_scene_locked_delete: \"Title and end scenes cannot be deleted.\",\n editor_scene_color: \"Star Hue\",\n editor_ai_generate: \"Generate Transmission\",\n editor_ai_generating: \"Transmitting Signal\\u2026\",\n editor_ai_mood_question: \"What energy should this planet radiate?\",\n editor_ai_style_question: \"What vision style for this transmission?\",\n editor_ai_prompt_question: \"Describe this planet\\u2019s landscape\",\n editor_ai_accept: \"Lock Transmission\",\n editor_ai_reject: \"Reject Signal\",\n editor_ai_retry: \"Retransmit\",\n editor_ai_feedback_prompt: \"How should we adjust the signal?\",\n editor_ai_credit_cost: \"1 Stardust per signal\",\n spending_modal_title: \"Refuel Your Mission\",\n spending_modal_body: \"You need more credits to continue. Choose how many to add.\",\n spending_modal_no_payment: \"Add a payment method to purchase credits.\",\n spending_modal_credits_label: \"Credits to add\",\n spending_modal_price_label: \"Total\",\n spending_modal_admin_note: \"Admin — credits are granted free of charge.\",\n spending_modal_purchase: \"Purchase Credits\",\n spending_modal_grant: \"Grant Credits\",\n spending_modal_add_card: \"Add Payment Method\",\n spending_modal_card_last_four: \"Card last four digits\",\n spending_modal_card_label: \"Card label (optional)\",\n spending_modal_processing: \"Processing\\u2026\",\n spending_modal_success: \"Credits added.\",\n spending_modal_error: \"Could not complete purchase. Try again.\",\n spending_modal_cancel: \"Not now\",\n spending_insufficient_credits: \"Not enough credits. Purchase more to continue.\",\n editor_ai_generating_scene: \"Planet forming\\u2026\",\n editor_ai_style_badge: \"Signal Style\",\n editor_ai_failed: \"Signal lost. Try retransmitting.\",\n editor_media_attached: \"This star already has a transmission locked in.\",\n editor_remove_media: \"Remove Transmission\",\n editor_media_question: \"What's this scene's media?\",\n editor_media_type_text: \"Text\",\n editor_media_type_imagery: \"Imagery\",\n editor_media_type_film: \"Film\",\n editor_media_preview_cta: \"Preview\",\n editor_media_preview_disabled: \"Add text to enable preview.\",\n editor_text_toolbar_label: \"Generator\",\n editor_text_font_label: \"Font\",\n editor_text_color_label: \"Text Color\",\n editor_text_background_label: \"Background\",\n editor_text_placeholder: \"Start writing scene media...\",\n editor_line_add: \"Add Text\",\n editor_text_lines_section: \"Transmission Lines\",\n editor_line_editor_label: \"Editor\",\n editor_line_number: \"Line\",\n editor_line_timestamp: \"Appears at\",\n editor_line_fade_in: \"Fade In\",\n editor_line_fade_out: \"Fade Out\",\n editor_line_duration: \"Duration\",\n editor_line_persist: \"Stay on Screen\",\n editor_effects_section: \"Effects\",\n editor_effects_add: \"Add sounds, effects, etc\",\n editor_effect_fade_in_sound: \"Fade In Sound\",\n editor_effect_fade_out_sound: \"Fade Out Sound\",\n editor_effect_fade_in_visual: \"Fade In\",\n editor_effect_fade_out_visual: \"Fade Out\",\n editor_timeline_label: \"Timeline\",\n editor_preview_label: \"Preview\",\n editor_preview_play: \"Play\",\n editor_preview_pause: \"Pause\",\n editor_media_placeholder_imagery: \"Imagery authoring is coming soon.\",\n editor_media_placeholder_film: \"Film authoring is coming soon.\",\n editor_goto_scene: \"Goto Star\",\n editor_scene_duration: \"Transmission Duration\",\n editor_add_choice: \"Add Trajectory\",\n editor_arrow_tool: \"Place Arrow\",\n editor_goto_nullified: \"Disabled — trajectories override goto\",\n editor_remove_choice: \"Remove Trajectory\",\n editor_choice_target: \"Destination Star\",\n editor_choices_empty_hint: \"Set a goto star or add a trajectory to branch the story.\",\n editor_goto_none: \"None\",\n editor_choice_label: \"Trajectory\",\n editor_flow_timeline: \"Story Flow\",\n editor_flow_goto_path: \"Default Goto\",\n editor_flow_add_choice_here: \"Add Trajectory Here\",\n editor_flow_choice_branch: \"Branch\",\n editor_flow_content_ref: \"Content\",\n editor_scene_duration_unit: \"seconds\",\n editor_scene_duration_override_hint: \"Overrides transmission length. Signal runtime: {duration}s\",\n editor_arrow_scale: \"Span\",\n editor_arrow_rotation: \"Bearing\",\n editor_arrow_rotate_hint: \"Drag the beacon above the arrow in preview to rotate\",\n constellation_no_coverbox: \"Uncharted\",\n hud_edit_control: \"Engage\",\n hud_delete_control: \"Jettison\",\n hud_publish_control: \"Launch\",\n hud_launch_control: \"Launch\",\n editor_publish_story: \"Release\",\n viewer_loading: \"Loading transmission…\",\n viewer_preparing: \"Spooling media…\",\n viewer_close: \"Exit\",\n viewer_complete: \"Transmission complete\",\n viewer_stage_label: \"Viewport\",\n viewer_choose_path: \"Choose\",\n create_button: \"CREATE\",\n publish_form_heading: \"Launch readiness\",\n tags_label: \"Signal Tags\",\n tags_placeholder: \"Search signal tags\\u2026\",\n tags_empty: \"No signal tags yet\",\n story_picker_label: \"Constellations\",\n created_by: \"Directed by\",\n director_profile_title: \"Director profile\",\n director_profile_name_label: \"Name\",\n director_profile_realm_label: \"Experience realm\",\n director_profile_image_label: \"Image\",\n director_profile_image_hint:\n \"Realm-themed seal — switching the realm above swaps the seal. Custom uploads land with the V1 avatar endpoints.\",\n director_profile_tab_profile: \"Profile\",\n director_profile_tab_experience_mapping: \"Experience Mapping\",\n director_profile_admin_only: \"Admin only\",\n director_profile_cancel: \"Cancel\",\n director_profile_close: \"Close\",\n director_profile_save: \"Save\",\n director_profile_saving: \"Saving…\",\n director_profile_name_required: \"Name is required.\",\n director_profile_save_failed: \"Save failed\",\n experience_mapping_loading: \"Loading experience mapping…\",\n experience_mapping_empty: \"No template hierarchy available yet.\",\n experience_mapping_retry: \"Retry\",\n experience_mapping_story_label: \"Story\",\n experience_mapping_scene_label: \"Scene\",\n experience_mapping_action_label: \"Action\",\n experience_mapping_field_title: \"Title\",\n experience_mapping_field_description: \"Description\",\n experience_mapping_field_genre: \"Genre\",\n experience_mapping_field_content_rating: \"Content rating\",\n experience_mapping_field_color: \"Color\",\n experience_mapping_field_name: \"Name\",\n experience_mapping_field_type: \"Type\",\n experience_mapping_field_order: \"Order\",\n experience_mapping_field_duration: \"Duration\",\n experience_mapping_field_properties: \"Properties\",\n experience_mapping_field_subproperties: \"Subproperties\",\n experience_mapping_save_changes: \"Save changes\",\n experience_mapping_saved: \"Saved\",\n experience_mapping_save_error: \"Could not save changes.\",\n experience_mapping_delete_story: \"Delete story\",\n experience_mapping_delete_scene: \"Delete scene\",\n experience_mapping_delete_action: \"Delete action\",\n experience_mapping_delete_confirm: \"Click again to confirm\",\n experience_mapping_delete_error: \"Delete failed.\",\n experience_mapping_expand_all: \"Expand all\",\n experience_mapping_collapse_all: \"Collapse all\",\n experience_mapping_forbidden: \"You do not have admin access for this section.\",\n experience_mapping_bad_json: \"JSON must be valid before saving.\",\n experience_mapping_intro:\n \"Edit realm vocabulary from largest to smallest. Generate JSON and paste it in chat for code application.\",\n experience_mapping_dirty: \"dirty changes\",\n experience_mapping_export_ready: \"No unsaved mapping edits yet.\",\n experience_mapping_export_json: \"Generate JSON export\",\n experience_mapping_copy_json: \"Copy JSON\",\n experience_mapping_copied: \"Copied\",\n experience_mapping_paste_instruction:\n \"Paste this JSON in chat and I will apply it to chuzi-shared.\",\n experience_mapping_export_empty: \"Export output appears here.\",\n experience_mapping_select_realm: \"Select realm\",\n experience_mapping_group_major_idea: \"Major Idea\",\n experience_mapping_helper_realm_idea:\n \"Highest-level concept for this realm.\",\n experience_mapping_save_experience: \"Save to experience\",\n experience_mapping_saved_experience:\n \"Saved to current experience. Some labels appear immediately.\",\n auth_email_placeholder: \"Email\",\n auth_password_input_placeholder: \"Password\",\n auth_password_sign_in_button: \"Sign In\",\n auth_password_signing_in: \"Signing in...\",\n auth_signin_tab: \"Sign in\",\n auth_signup_tab: \"Sign up\",\n auth_signup_subtitle: \"Create your account with secure sign-in.\",\n auth_signin_subtitle: \"Sign in with your account provider.\",\n auth_sign_up_button: \"Continue with Google\",\n auth_username_placeholder: \"Username\",\n auth_sign_in_button: \"Continue with Google\",\n auth_signing_in: \"Signing in...\",\n auth_oidc_redirecting: \"Redirecting to secure sign-in...\",\n auth_oidc_failed: \"Could not start sign-in.\",\n auth_oidc_callback_processing: \"Completing sign-in...\",\n auth_oidc_verified: \"Signed in. Redirecting...\",\n auth_oidc_callback_failed: \"Could not complete sign-in.\",\n auth_oidc_token_missing: \"Sign-in token was missing.\",\n auth_magic_link_sent:\n \"If that email is registered, a magic link has been sent.\",\n auth_magic_link_sent_signup: \"Check your email for your sign-up link.\",\n auth_magic_link_verifying: \"Verifying magic link...\",\n auth_magic_link_verified: \"Signed in. Redirecting...\",\n auth_magic_link_failed: \"This magic link is invalid or expired.\",\n auth_magic_link_cta: \"Use another email\",\n auth_login_failed: \"Sign-in failed.\",\n auth_username_checking: \"Checking username availability...\",\n auth_username_available: \"Username is available.\",\n auth_username_unavailable: \"Username is taken; updated to an available suggestion.\",\n auth_username_required: \"Username is required.\",\n auth_username_update_failed: \"Could not reserve a unique username.\",\n experience_mapping_group_experience_root: \"Experience Root\",\n experience_mapping_group_node_types: \"Node Types\",\n experience_mapping_group_scene_structure: \"Scene Structure\",\n experience_mapping_group_media: \"Media Terms\",\n experience_mapping_group_counts: \"Counts and Adjacent Labels\",\n experience_mapping_helper_story: \"Largest narrative unit.\",\n experience_mapping_helper_scene: \"Contained unit under story.\",\n experience_mapping_helper_scene_choice: \"Branching choice in a scene.\",\n experience_mapping_helper_node: \"Smallest flow node.\",\n experience_mapping_helper_alt_media: \"Smallest related media label.\",\n },\n locales: {\n es: {\n genre: \"Galaxia\",\n story: \"Sistema Estelar\",\n scene: \"Planeta\",\n scene_choice: \"Trayectoria\",\n player: \"Viajero\",\n library: \"Carta Estelar\",\n editor: \"Control de Misión\",\n publish: \"Lanzar\",\n the_end: \"Órbita Final\",\n untitled_story: \"Sistema Estelar sin título\",\n menu_create_story: \"Nuevo sistema estelar\",\n film_title_placeholder: \"Título del sistema estelar\",\n select_genre: \"Seleccionar galaxia\",\n created_by: \"Dirigido por\",\n },\n fr: {\n genre: \"Galaxie\",\n story: \"Système Stellaire\",\n scene: \"Planète\",\n scene_choice: \"Trajectoire\",\n player: \"Voyageur\",\n library: \"Carte Stellaire\",\n editor: \"Contrôle de Mission\",\n publish: \"Lancer\",\n the_end: \"Orbite Finale\",\n untitled_story: \"Système stellaire sans titre\",\n menu_create_story: \"Nouveau système stellaire\",\n film_title_placeholder: \"Titre du système stellaire\",\n select_genre: \"Sélectionner une galaxie\",\n created_by: \"Réalisé par\",\n },\n de: {\n genre: \"Galaxie\",\n story: \"Sternsystem\",\n scene: \"Planet\",\n player: \"Reisender\",\n publish: \"Starten\",\n },\n pt: {\n genre: \"Galáxia\",\n story: \"Sistema Estelar\",\n scene: \"Planeta\",\n player: \"Viajante\",\n publish: \"Lançar\",\n },\n },\n },\n wilds: {\n label: \"CHUZI WILDS\",\n short_label: \"Wilds\",\n lexicon: {\n genre: \"Biome\",\n story: \"Grove\",\n scene: \"Clearing\",\n scene_choice: \"Trail\",\n node: \"Seed\",\n node_type_choice: \"Trail\",\n node_type_media: \"Bloom\",\n node_type_go_to_scene: \"Crossing\",\n player: \"Wanderer\",\n library: \"Canopy\",\n library_open: \"Open Canopy\",\n library_close: \"Close Canopy\",\n editor: \"Heartwood\",\n publish: \"Plant\",\n experience_realm_idea: \"Untamed Nature\",\n the_end: \"Roots\",\n media_pool: \"Undergrowth\",\n scene_graph: \"Canopy\",\n watch_path: \"Your trail\",\n untitled_story: \"Untitled Grove\",\n unknown_genre: \"Unknown Biome\",\n scenes_count: \"clearings\",\n choices_count: \"trails\",\n drafts_published: \"Drafts + Planted\",\n published_ver: \"Planted ver.\",\n draft: \"Draft\",\n no_scenes_yet: \"No clearings in this canopy yet.\",\n no_path_yet: \"No trail to show yet.\",\n menu_empty_drafts: \"No groves yet. Plant one to begin.\",\n menu_empty_published: \"No planted groves in the canopy.\",\n menu_published_heading: \"Planted groves\",\n menu_create_story: \"New grove\",\n menu_create_film: \"Create film\",\n film_title_placeholder: \"Grove title\",\n select_genre: \"Select biome\",\n genre_field_aria: \"Biome\",\n delete_story_verb: \"Delete grove\",\n title_scene_default: \"Title clearing\",\n choices_made_stat: \"trails taken\",\n content_rating: \"Field Guide\",\n content_rating_field_aria: \"Field guide\",\n select_content_rating: \"Select field guide\",\n unrated: \"Unmarked\",\n viewer_credits: \"Sap\",\n creator_credits: \"Pollen\",\n editor_media_upload: \"Upload Bloom\",\n editor_media_preview: \"Bloom Preview\",\n editor_alt_media: \"Effects\",\n editor_choices: \"Choices\",\n editor_scene_settings: \"Clearing Settings\",\n editor_title_scene: \"Title Clearing\",\n editor_film_title: \"Grove Title\",\n editor_film_title_hint: \"Click to rename this grove\",\n editor_ending_scene: \"Roots\",\n editor_play: \"Unfurl\",\n editor_pause: \"Rest\",\n editor_prev_frame: \"Previous Frame\",\n editor_next_frame: \"Next Frame\",\n editor_seek: \"Seek\",\n editor_no_media: \"No bloom assigned\",\n editor_uploading: \"Blooming\\u2026\",\n editor_drop_media: \"Drop bloom here\",\n editor_scene_type: \"Clearing Type\",\n editor_save: \"Engrave\",\n editor_cancel: \"Cancel\",\n editor_create_scene: \"Plant Clearing\",\n editor_create_scene_plain: \"Create New Scene\",\n editor_create_scene_cost: \"1 Pollen\",\n editor_delete_scene_cta: \"Delete Scene\",\n editor_delete_scene_confirm: \"Click again to confirm\",\n editor_scene_locked_delete: \"Title and end scenes cannot be deleted.\",\n editor_scene_color: \"Clearing Tint\",\n editor_ai_generate: \"Grow Bloom\",\n editor_ai_generating: \"Seed Sprouting\\u2026\",\n editor_ai_mood_question: \"What feeling should this clearing evoke?\",\n editor_ai_style_question: \"What growth pattern for this bloom?\",\n editor_ai_prompt_question: \"Describe this clearing\",\n editor_ai_accept: \"Root Bloom\",\n editor_ai_reject: \"Prune Bloom\",\n editor_ai_retry: \"Regrow\",\n editor_ai_feedback_prompt: \"How should we reshape the growth?\",\n editor_ai_credit_cost: \"1 Pollen per bloom\",\n spending_modal_title: \"Gather More Pollen\",\n spending_modal_body: \"You need more credits to continue. Choose how many to add.\",\n spending_modal_no_payment: \"Add a payment method to purchase credits.\",\n spending_modal_credits_label: \"Credits to add\",\n spending_modal_price_label: \"Total\",\n spending_modal_admin_note: \"Admin — credits are granted free of charge.\",\n spending_modal_purchase: \"Purchase Credits\",\n spending_modal_grant: \"Grant Credits\",\n spending_modal_add_card: \"Add Payment Method\",\n spending_modal_card_last_four: \"Card last four digits\",\n spending_modal_card_label: \"Card label (optional)\",\n spending_modal_processing: \"Processing\\u2026\",\n spending_modal_success: \"Credits added.\",\n spending_modal_error: \"Could not complete purchase. Try again.\",\n spending_modal_cancel: \"Not now\",\n spending_insufficient_credits: \"Not enough credits. Purchase more to continue.\",\n editor_ai_generating_scene: \"Clearing emerging\\u2026\",\n editor_ai_style_badge: \"Growth Style\",\n editor_ai_failed: \"Growth withered. Try regrowing.\",\n editor_media_attached: \"This clearing already has a bloom rooted.\",\n editor_remove_media: \"Uproot Bloom\",\n editor_media_question: \"What's this scene's media?\",\n editor_media_type_text: \"Text\",\n editor_media_type_imagery: \"Imagery\",\n editor_media_type_film: \"Film\",\n editor_media_preview_cta: \"Preview\",\n editor_media_preview_disabled: \"Add text to enable preview.\",\n editor_text_toolbar_label: \"Generator\",\n editor_text_font_label: \"Font\",\n editor_text_color_label: \"Text Color\",\n editor_text_background_label: \"Background\",\n editor_text_placeholder: \"Start writing scene media...\",\n editor_line_add: \"Add Text\",\n editor_text_lines_section: \"Transmission Lines\",\n editor_line_editor_label: \"Editor\",\n editor_line_number: \"Line\",\n editor_line_timestamp: \"Appears at\",\n editor_line_fade_in: \"Fade In\",\n editor_line_fade_out: \"Fade Out\",\n editor_line_duration: \"Duration\",\n editor_line_persist: \"Stay on Screen\",\n editor_effects_section: \"Effects\",\n editor_effects_add: \"Add sounds, effects, etc\",\n editor_effect_fade_in_sound: \"Fade In Sound\",\n editor_effect_fade_out_sound: \"Fade Out Sound\",\n editor_effect_fade_in_visual: \"Fade In\",\n editor_effect_fade_out_visual: \"Fade Out\",\n editor_timeline_label: \"Timeline\",\n editor_preview_label: \"Preview\",\n editor_preview_play: \"Play\",\n editor_preview_pause: \"Pause\",\n editor_media_placeholder_imagery: \"Imagery authoring is coming soon.\",\n editor_media_placeholder_film: \"Film authoring is coming soon.\",\n editor_goto_scene: \"Goto Clearing\",\n editor_scene_duration: \"Bloom Duration\",\n editor_add_choice: \"Add Trail\",\n editor_arrow_tool: \"Place Indicator\",\n editor_goto_nullified: \"Disabled — trails override goto\",\n editor_remove_choice: \"Remove Trail\",\n editor_choice_target: \"Destination Clearing\",\n editor_choices_empty_hint: \"Set a goto clearing or add a trail to branch the story.\",\n editor_goto_none: \"None\",\n editor_choice_label: \"Trail\",\n editor_flow_timeline: \"Story Flow\",\n editor_flow_goto_path: \"Default Goto\",\n editor_flow_add_choice_here: \"Add Trail Here\",\n editor_flow_choice_branch: \"Branch\",\n editor_flow_content_ref: \"Content\",\n editor_scene_duration_unit: \"seconds\",\n editor_scene_duration_override_hint: \"Overrides bloom length. Content runtime: {duration}s\",\n editor_arrow_scale: \"Span\",\n editor_arrow_rotation: \"Bearing\",\n editor_arrow_rotate_hint: \"Drag the beacon above the indicator in preview to rotate\",\n constellation_no_coverbox: \"Unseen\",\n hud_edit_control: \"Tend\",\n hud_delete_control: \"Uproot\",\n hud_publish_control: \"Plant\",\n hud_launch_control: \"Enter\",\n editor_publish_story: \"Share\",\n viewer_loading: \"Entering the grove…\",\n viewer_preparing: \"Gathering blooms…\",\n viewer_close: \"Leave\",\n viewer_complete: \"Journey complete\",\n viewer_stage_label: \"Canopy\",\n viewer_choose_path: \"Choose\",\n create_button: \"CREATE\",\n publish_form_heading: \"Planting check\",\n tags_label: \"Root Tags\",\n tags_placeholder: \"Search root tags\\u2026\",\n tags_empty: \"No root tags yet\",\n story_picker_label: \"Groves\",\n created_by: \"Tended by\",\n director_profile_title: \"Director profile\",\n director_profile_name_label: \"Name\",\n director_profile_realm_label: \"Experience realm\",\n director_profile_image_label: \"Image\",\n director_profile_image_hint:\n \"Realm-themed seal — switching the realm above swaps the seal. Custom uploads land with the V1 avatar endpoints.\",\n director_profile_tab_profile: \"Profile\",\n director_profile_tab_experience_mapping: \"Experience Mapping\",\n director_profile_admin_only: \"Admin only\",\n director_profile_cancel: \"Cancel\",\n director_profile_close: \"Close\",\n director_profile_save: \"Save\",\n director_profile_saving: \"Saving…\",\n director_profile_name_required: \"Name is required.\",\n director_profile_save_failed: \"Save failed\",\n experience_mapping_loading: \"Loading experience mapping…\",\n experience_mapping_empty: \"No template hierarchy available yet.\",\n experience_mapping_retry: \"Retry\",\n experience_mapping_story_label: \"Story\",\n experience_mapping_scene_label: \"Scene\",\n experience_mapping_action_label: \"Action\",\n experience_mapping_field_title: \"Title\",\n experience_mapping_field_description: \"Description\",\n experience_mapping_field_genre: \"Genre\",\n experience_mapping_field_content_rating: \"Content rating\",\n experience_mapping_field_color: \"Color\",\n experience_mapping_field_name: \"Name\",\n experience_mapping_field_type: \"Type\",\n experience_mapping_field_order: \"Order\",\n experience_mapping_field_duration: \"Duration\",\n experience_mapping_field_properties: \"Properties\",\n experience_mapping_field_subproperties: \"Subproperties\",\n experience_mapping_save_changes: \"Save changes\",\n experience_mapping_saved: \"Saved\",\n experience_mapping_save_error: \"Could not save changes.\",\n experience_mapping_delete_story: \"Delete story\",\n experience_mapping_delete_scene: \"Delete scene\",\n experience_mapping_delete_action: \"Delete action\",\n experience_mapping_delete_confirm: \"Click again to confirm\",\n experience_mapping_delete_error: \"Delete failed.\",\n experience_mapping_expand_all: \"Expand all\",\n experience_mapping_collapse_all: \"Collapse all\",\n experience_mapping_forbidden: \"You do not have admin access for this section.\",\n experience_mapping_bad_json: \"JSON must be valid before saving.\",\n experience_mapping_intro:\n \"Edit realm vocabulary from largest to smallest. Generate JSON and paste it in chat for code application.\",\n experience_mapping_dirty: \"dirty changes\",\n experience_mapping_export_ready: \"No unsaved mapping edits yet.\",\n experience_mapping_export_json: \"Generate JSON export\",\n experience_mapping_copy_json: \"Copy JSON\",\n experience_mapping_copied: \"Copied\",\n experience_mapping_paste_instruction:\n \"Paste this JSON in chat and I will apply it to chuzi-shared.\",\n experience_mapping_export_empty: \"Export output appears here.\",\n experience_mapping_select_realm: \"Select realm\",\n experience_mapping_group_major_idea: \"Major Idea\",\n experience_mapping_helper_realm_idea:\n \"Highest-level concept for this realm.\",\n experience_mapping_save_experience: \"Save to experience\",\n experience_mapping_saved_experience:\n \"Saved to current experience. Some labels appear immediately.\",\n auth_email_placeholder: \"Email\",\n auth_password_input_placeholder: \"Password\",\n auth_password_sign_in_button: \"Sign In\",\n auth_password_signing_in: \"Signing in...\",\n auth_signin_tab: \"Sign in\",\n auth_signup_tab: \"Sign up\",\n auth_signup_subtitle: \"Create your account with secure sign-in.\",\n auth_signin_subtitle: \"Sign in with your account provider.\",\n auth_sign_up_button: \"Continue with Google\",\n auth_username_placeholder: \"Username\",\n auth_sign_in_button: \"Continue with Google\",\n auth_signing_in: \"Signing in...\",\n auth_oidc_redirecting: \"Redirecting to secure sign-in...\",\n auth_oidc_failed: \"Could not start sign-in.\",\n auth_oidc_callback_processing: \"Completing sign-in...\",\n auth_oidc_verified: \"Signed in. Redirecting...\",\n auth_oidc_callback_failed: \"Could not complete sign-in.\",\n auth_oidc_token_missing: \"Sign-in token was missing.\",\n auth_magic_link_sent:\n \"If that email is registered, a magic link has been sent.\",\n auth_magic_link_sent_signup: \"Check your email for your sign-up link.\",\n auth_magic_link_verifying: \"Verifying magic link...\",\n auth_magic_link_verified: \"Signed in. Redirecting...\",\n auth_magic_link_failed: \"This magic link is invalid or expired.\",\n auth_magic_link_cta: \"Use another email\",\n auth_login_failed: \"Sign-in failed.\",\n auth_username_checking: \"Checking username availability...\",\n auth_username_available: \"Username is available.\",\n auth_username_unavailable: \"Username is taken; updated to an available suggestion.\",\n auth_username_required: \"Username is required.\",\n auth_username_update_failed: \"Could not reserve a unique username.\",\n experience_mapping_group_experience_root: \"Experience Root\",\n experience_mapping_group_node_types: \"Node Types\",\n experience_mapping_group_scene_structure: \"Scene Structure\",\n experience_mapping_group_media: \"Media Terms\",\n experience_mapping_group_counts: \"Counts and Adjacent Labels\",\n experience_mapping_helper_story: \"Largest narrative unit.\",\n experience_mapping_helper_scene: \"Contained unit under story.\",\n experience_mapping_helper_scene_choice: \"Branching choice in a scene.\",\n experience_mapping_helper_node: \"Smallest flow node.\",\n experience_mapping_helper_alt_media: \"Smallest related media label.\",\n },\n locales: {\n es: {\n genre: \"Bioma\",\n story: \"Arboleda\",\n scene: \"Claro\",\n scene_choice: \"Sendero\",\n player: \"Errante\",\n library: \"Dosel\",\n editor: \"Duramen\",\n publish: \"Plantar\",\n the_end: \"Raíces\",\n untitled_story: \"Arboleda sin título\",\n menu_create_story: \"Nueva arboleda\",\n film_title_placeholder: \"Título de la arboleda\",\n select_genre: \"Seleccionar bioma\",\n created_by: \"Cuidado por\",\n },\n fr: {\n genre: \"Biome\",\n story: \"Bosquet\",\n scene: \"Clairière\",\n scene_choice: \"Sentier\",\n player: \"Vagabond\",\n library: \"Canopée\",\n editor: \"Cœur de bois\",\n publish: \"Planter\",\n the_end: \"Racines\",\n untitled_story: \"Bosquet sans titre\",\n menu_create_story: \"Nouveau bosquet\",\n film_title_placeholder: \"Titre du bosquet\",\n select_genre: \"Sélectionner un biome\",\n created_by: \"Soigné par\",\n },\n de: {\n genre: \"Biom\",\n story: \"Hain\",\n scene: \"Lichtung\",\n player: \"Wanderer\",\n publish: \"Pflanzen\",\n },\n pt: {\n genre: \"Bioma\",\n story: \"Bosque\",\n scene: \"Clareira\",\n player: \"Andarilho\",\n publish: \"Plantar\",\n },\n },\n },\n};\n\nexport const FALLBACK_LEXICON: Record<string, string> = {\n genre: \"Genre\",\n story: \"Story\",\n scene: \"Scene\",\n scene_choice: \"Choice\",\n node: \"Node\",\n node_type_choice: \"Choice\",\n node_type_media: \"Media\",\n node_type_go_to_scene: \"Go to scene\",\n player: \"Player\",\n library: \"Library\",\n library_open: \"Open scene tree\",\n library_close: \"Close scene tree\",\n editor: \"Editor\",\n publish: \"Publish\",\n experience_realm_idea: \"Experience Theme\",\n the_end: \"The End\",\n media_pool: \"Media Pool\",\n scene_graph: \"Scene tree\",\n watch_path: \"Your path\",\n untitled_story: \"Untitled Story\",\n unknown_genre: \"Unknown Genre\",\n scenes_count: \"scenes\",\n choices_count: \"choices\",\n drafts_published: \"Drafts + Published\",\n published_ver: \"Published ver.\",\n draft: \"Draft\",\n no_scenes_yet: \"No scenes available yet.\",\n no_path_yet: \"No path to show yet.\",\n menu_empty_drafts: \"No films yet. Create one to get started.\",\n menu_empty_published: \"No published films found.\",\n menu_published_heading: \"Published Films\",\n menu_create_story: \"Create Story\",\n menu_create_film: \"Create Film\",\n film_title_placeholder: \"Film title\",\n select_genre: \"Select genre\",\n genre_field_aria: \"Film genre\",\n delete_story_verb: \"Delete film\",\n title_scene_default: \"Title Scene\",\n choices_made_stat: \"choices made\",\n content_rating: \"Rating\",\n content_rating_field_aria: \"Content rating\",\n select_content_rating: \"Select rating\",\n unrated: \"Not Rated\",\n viewer_credits: \"Viewer Credits\",\n creator_credits: \"Creator Credits\",\n editor_media_upload: \"Upload Media\",\n editor_media_preview: \"Media Preview\",\n editor_alt_media: \"Effects\",\n editor_choices: \"Choices\",\n editor_scene_settings: \"Scene Settings\",\n editor_title_scene: \"Title Scene\",\n editor_film_title: \"Film Title\",\n editor_film_title_hint: \"Click to rename this film\",\n editor_ending_scene: \"Ending Scene\",\n editor_play: \"Play\",\n editor_pause: \"Pause\",\n editor_prev_frame: \"Previous Frame\",\n editor_next_frame: \"Next Frame\",\n editor_seek: \"Seek\",\n editor_no_media: \"No media assigned\",\n editor_uploading: \"Uploading\\u2026\",\n editor_drop_media: \"Drop media here\",\n editor_scene_type: \"Scene Type\",\n editor_save: \"Save\",\n editor_cancel: \"Cancel\",\n editor_create_scene: \"Create Scene\",\n editor_create_scene_plain: \"Create New Scene\",\n editor_create_scene_cost: \"1 credit\",\n editor_delete_scene_cta: \"Delete Scene\",\n editor_delete_scene_confirm: \"Click again to confirm\",\n editor_scene_locked_delete: \"Title and end scenes cannot be deleted.\",\n editor_scene_color: \"Scene Color\",\n editor_ai_generate: \"Generate with AI\",\n editor_ai_generating: \"Generating\\u2026\",\n editor_ai_mood_question: \"What mood should this scene convey?\",\n editor_ai_style_question: \"What visual style do you want?\",\n editor_ai_prompt_question: \"Describe this scene\",\n editor_ai_accept: \"Accept\",\n editor_ai_reject: \"Reject\",\n editor_ai_retry: \"Try Again\",\n editor_ai_feedback_prompt: \"What should we change?\",\n editor_ai_credit_cost: \"1 credit per generation\",\n spending_modal_title: \"Purchase Credits\",\n spending_modal_body: \"You need more credits to continue. Choose how many to add.\",\n spending_modal_no_payment: \"Add a payment method to purchase credits.\",\n spending_modal_credits_label: \"Credits to add\",\n spending_modal_price_label: \"Total\",\n spending_modal_admin_note: \"Admin — credits are granted free of charge.\",\n spending_modal_purchase: \"Purchase Credits\",\n spending_modal_grant: \"Grant Credits\",\n spending_modal_add_card: \"Add Payment Method\",\n spending_modal_card_last_four: \"Card last four digits\",\n spending_modal_card_label: \"Card label (optional)\",\n spending_modal_processing: \"Processing\\u2026\",\n spending_modal_success: \"Credits added.\",\n spending_modal_error: \"Could not complete purchase. Try again.\",\n spending_modal_cancel: \"Not now\",\n spending_insufficient_credits: \"Not enough credits. Purchase more to continue.\",\n editor_ai_generating_scene: \"Scene generating\\u2026\",\n editor_ai_style_badge: \"Style\",\n editor_ai_failed: \"Generation failed. Please try again.\",\n editor_media_attached: \"This scene already has media attached.\",\n editor_remove_media: \"Remove Media\",\n editor_media_question: \"What's this scene's media?\",\n editor_media_type_text: \"Text\",\n editor_media_type_imagery: \"Imagery\",\n editor_media_type_film: \"Film\",\n editor_media_preview_cta: \"Preview\",\n editor_media_preview_disabled: \"Add text to enable preview.\",\n editor_text_toolbar_label: \"Generator\",\n editor_text_font_label: \"Font\",\n editor_text_color_label: \"Text Color\",\n editor_text_background_label: \"Background\",\n editor_text_placeholder: \"Start writing scene media...\",\n editor_line_add: \"Add Text\",\n editor_text_lines_section: \"Text Lines\",\n editor_line_editor_label: \"Editor\",\n editor_line_number: \"Line\",\n editor_line_timestamp: \"Appears at\",\n editor_line_fade_in: \"Fade In\",\n editor_line_fade_out: \"Fade Out\",\n editor_line_duration: \"Duration\",\n editor_line_persist: \"Stay on Screen\",\n editor_effects_section: \"Effects\",\n editor_effects_add: \"Add sounds, effects, etc\",\n editor_effect_fade_in_sound: \"Fade In Sound\",\n editor_effect_fade_out_sound: \"Fade Out Sound\",\n editor_effect_fade_in_visual: \"Fade In\",\n editor_effect_fade_out_visual: \"Fade Out\",\n editor_timeline_label: \"Timeline\",\n editor_preview_label: \"Preview\",\n editor_preview_play: \"Play\",\n editor_preview_pause: \"Pause\",\n editor_media_placeholder_imagery: \"Imagery authoring is coming soon.\",\n editor_media_placeholder_film: \"Film authoring is coming soon.\",\n editor_goto_scene: \"Goto Scene\",\n editor_scene_duration: \"Scene Duration\",\n editor_add_choice: \"Add Choice\",\n editor_arrow_tool: \"Place Arrow\",\n editor_goto_nullified: \"Disabled — choices override goto\",\n editor_remove_choice: \"Remove Choice\",\n editor_choice_target: \"Destination Scene\",\n editor_choices_empty_hint: \"Set a goto scene or add a choice to create branching paths.\",\n editor_goto_none: \"None\",\n editor_choice_label: \"Choice\",\n editor_flow_timeline: \"Story Flow\",\n editor_flow_goto_path: \"Default Goto\",\n editor_flow_add_choice_here: \"Add Choice Here\",\n editor_flow_choice_branch: \"Branch\",\n editor_flow_content_ref: \"Content\",\n editor_scene_duration_unit: \"seconds\",\n editor_scene_duration_override_hint: \"Overrides preview playback length. Content: {duration}s\",\n editor_arrow_scale: \"Scale\",\n editor_arrow_rotation: \"Rotation\",\n editor_arrow_rotate_hint: \"Drag the handle above the arrow in preview to rotate\",\n constellation_no_coverbox: \"No cover\",\n hud_edit_control: \"Edit\",\n hud_delete_control: \"Delete\",\n hud_publish_control: \"Publish\",\n hud_launch_control: \"Launch\",\n editor_publish_story: \"Publish\",\n viewer_loading: \"Loading experience…\",\n viewer_preparing: \"Cueing media…\",\n viewer_close: \"Exit\",\n viewer_complete: \"Experience complete\",\n viewer_stage_label: \"Experience\",\n viewer_choose_path: \"Choose\",\n create_button: \"CREATE\",\n publish_form_heading: \"Publish checklist\",\n tags_label: \"Tags\",\n tags_placeholder: \"Search tags\\u2026\",\n tags_empty: \"No tags yet\",\n story_picker_label: \"Stories\",\n created_by: \"Created by\",\n director_profile_title: \"Director profile\",\n director_profile_name_label: \"Name\",\n director_profile_realm_label: \"Experience realm\",\n director_profile_image_label: \"Image\",\n director_profile_image_hint:\n \"Realm-themed seal — switching the realm above swaps the seal. Custom uploads land with the V1 avatar endpoints.\",\n director_profile_tab_profile: \"Profile\",\n director_profile_tab_experience_mapping: \"Experience Mapping\",\n director_profile_admin_only: \"Admin only\",\n director_profile_cancel: \"Cancel\",\n director_profile_close: \"Close\",\n director_profile_save: \"Save\",\n director_profile_saving: \"Saving…\",\n director_profile_name_required: \"Name is required.\",\n director_profile_save_failed: \"Save failed\",\n experience_mapping_loading: \"Loading experience mapping…\",\n experience_mapping_empty: \"No template hierarchy available yet.\",\n experience_mapping_retry: \"Retry\",\n experience_mapping_story_label: \"Story\",\n experience_mapping_scene_label: \"Scene\",\n experience_mapping_action_label: \"Action\",\n experience_mapping_field_title: \"Title\",\n experience_mapping_field_description: \"Description\",\n experience_mapping_field_genre: \"Genre\",\n experience_mapping_field_content_rating: \"Content rating\",\n experience_mapping_field_color: \"Color\",\n experience_mapping_field_name: \"Name\",\n experience_mapping_field_type: \"Type\",\n experience_mapping_field_order: \"Order\",\n experience_mapping_field_duration: \"Duration\",\n experience_mapping_field_properties: \"Properties\",\n experience_mapping_field_subproperties: \"Subproperties\",\n experience_mapping_save_changes: \"Save changes\",\n experience_mapping_saved: \"Saved\",\n experience_mapping_save_error: \"Could not save changes.\",\n experience_mapping_delete_story: \"Delete story\",\n experience_mapping_delete_scene: \"Delete scene\",\n experience_mapping_delete_action: \"Delete action\",\n experience_mapping_delete_confirm: \"Click again to confirm\",\n experience_mapping_delete_error: \"Delete failed.\",\n experience_mapping_expand_all: \"Expand all\",\n experience_mapping_collapse_all: \"Collapse all\",\n experience_mapping_forbidden: \"You do not have admin access for this section.\",\n experience_mapping_bad_json: \"JSON must be valid before saving.\",\n experience_mapping_intro:\n \"Edit realm vocabulary from largest to smallest. Generate JSON and paste it in chat for code application.\",\n experience_mapping_dirty: \"dirty changes\",\n experience_mapping_export_ready: \"No unsaved mapping edits yet.\",\n experience_mapping_export_json: \"Generate JSON export\",\n experience_mapping_copy_json: \"Copy JSON\",\n experience_mapping_copied: \"Copied\",\n experience_mapping_paste_instruction:\n \"Paste this JSON in chat and I will apply it to chuzi-shared.\",\n experience_mapping_export_empty: \"Export output appears here.\",\n experience_mapping_select_realm: \"Select realm\",\n experience_mapping_group_major_idea: \"Major Idea\",\n experience_mapping_helper_realm_idea:\n \"Highest-level concept for this realm.\",\n experience_mapping_save_experience: \"Save to experience\",\n experience_mapping_saved_experience:\n \"Saved to current experience. Some labels appear immediately.\",\n auth_email_placeholder: \"Email\",\n auth_password_input_placeholder: \"Password\",\n auth_password_sign_in_button: \"Sign In\",\n auth_password_signing_in: \"Signing in...\",\n auth_signin_tab: \"Sign in\",\n auth_signup_tab: \"Sign up\",\n auth_signup_subtitle: \"Create your account with secure sign-in.\",\n auth_signin_subtitle: \"Sign in with your account provider.\",\n auth_sign_up_button: \"Continue with Google\",\n auth_username_placeholder: \"Username\",\n auth_sign_in_button: \"Continue with Google\",\n auth_signing_in: \"Signing in...\",\n auth_oidc_redirecting: \"Redirecting to secure sign-in...\",\n auth_oidc_failed: \"Could not start sign-in.\",\n auth_oidc_callback_processing: \"Completing sign-in...\",\n auth_oidc_verified: \"Signed in. Redirecting...\",\n auth_oidc_callback_failed: \"Could not complete sign-in.\",\n auth_oidc_token_missing: \"Sign-in token was missing.\",\n auth_magic_link_sent:\n \"If that email is registered, a magic link has been sent.\",\n auth_magic_link_sent_signup: \"Check your email for your sign-up link.\",\n auth_magic_link_verifying: \"Verifying magic link...\",\n auth_magic_link_verified: \"Signed in. Redirecting...\",\n auth_magic_link_failed: \"This magic link is invalid or expired.\",\n auth_magic_link_cta: \"Use another email\",\n auth_login_failed: \"Sign-in failed.\",\n auth_username_checking: \"Checking username availability...\",\n auth_username_available: \"Username is available.\",\n auth_username_unavailable: \"Username is taken; updated to an available suggestion.\",\n auth_username_required: \"Username is required.\",\n auth_username_update_failed: \"Could not reserve a unique username.\",\n experience_mapping_group_experience_root: \"Experience Root\",\n experience_mapping_group_node_types: \"Node Types\",\n experience_mapping_group_scene_structure: \"Scene Structure\",\n experience_mapping_group_media: \"Media Terms\",\n experience_mapping_group_counts: \"Counts and Adjacent Labels\",\n experience_mapping_helper_story: \"Largest narrative unit.\",\n experience_mapping_helper_scene: \"Contained unit under story.\",\n experience_mapping_helper_scene_choice: \"Branching choice in a scene.\",\n experience_mapping_helper_node: \"Smallest flow node.\",\n experience_mapping_helper_alt_media: \"Smallest related media label.\",\n};\n\n/**\n * Per-locale overrides for FALLBACK_LEXICON. Missing keys fall through to\n * the English fallback. Mirrors PHP `chuzi_realms.fallback_locales`.\n */\nexport const FALLBACK_LOCALES: Partial<\n Record<LocaleId, Record<string, string>>\n> = {\n es: {\n genre: \"Género\",\n story: \"Historia\",\n scene: \"Escena\",\n scene_choice: \"Elección\",\n player: \"Reproductor\",\n library: \"Biblioteca\",\n editor: \"Editor\",\n publish: \"Publicar\",\n the_end: \"Fin\",\n untitled_story: \"Historia sin título\",\n menu_create_story: \"Crear historia\",\n menu_create_film: \"Crear película\",\n film_title_placeholder: \"Título de la película\",\n select_genre: \"Seleccionar género\",\n delete_story_verb: \"Eliminar película\",\n created_by: \"Creado por\",\n },\n fr: {\n genre: \"Genre\",\n story: \"Histoire\",\n scene: \"Scène\",\n scene_choice: \"Choix\",\n player: \"Lecteur\",\n library: \"Bibliothèque\",\n editor: \"Éditeur\",\n publish: \"Publier\",\n the_end: \"Fin\",\n untitled_story: \"Histoire sans titre\",\n menu_create_story: \"Créer une histoire\",\n menu_create_film: \"Créer un film\",\n film_title_placeholder: \"Titre du film\",\n select_genre: \"Sélectionner un genre\",\n delete_story_verb: \"Supprimer le film\",\n created_by: \"Créé par\",\n },\n de: {\n genre: \"Genre\",\n story: \"Geschichte\",\n scene: \"Szene\",\n publish: \"Veröffentlichen\",\n the_end: \"Ende\",\n untitled_story: \"Unbenannte Geschichte\",\n menu_create_story: \"Geschichte erstellen\",\n film_title_placeholder: \"Filmtitel\",\n select_genre: \"Genre auswählen\",\n created_by: \"Erstellt von\",\n },\n pt: {\n genre: \"Gênero\",\n story: \"História\",\n scene: \"Cena\",\n publish: \"Publicar\",\n the_end: \"Fim\",\n untitled_story: \"História sem título\",\n menu_create_story: \"Criar história\",\n film_title_placeholder: \"Título do filme\",\n select_genre: \"Selecionar gênero\",\n created_by: \"Criado por\",\n },\n};\n\nfunction resolveFallback(locale: LocaleId | null | undefined): Record<string, string> {\n const overrides = locale && FALLBACK_LOCALES[locale];\n return overrides ? { ...FALLBACK_LEXICON, ...overrides } : { ...FALLBACK_LEXICON };\n}\n\nfunction resolveRealm(\n realmId: RealmId,\n locale: LocaleId | null | undefined\n): Record<string, string> {\n const realm = REALMS[realmId];\n const overrides = locale && realm.locales ? realm.locales[locale] : undefined;\n const runtimeOverrides = runtimeRealmLexiconOverrides[realmId];\n return {\n ...realm.lexicon,\n ...(overrides ?? {}),\n ...(runtimeOverrides ?? {}),\n };\n}\n\n/**\n * Get a lexicon value for a realm + locale, falling back to the neutral\n * lexicon (which itself respects locale).\n */\nexport function t(\n realmId: RealmId | null | undefined,\n key: string,\n fallback = \"\",\n locale: LocaleId | null | undefined = null\n): string {\n if (realmId && REALMS[realmId]) {\n const realmLex = resolveRealm(realmId, locale);\n if (realmLex[key] !== undefined) return realmLex[key];\n }\n const fb = resolveFallback(locale);\n return fb[key] ?? fallback;\n}\n\n/**\n * Get the full merged lexicon for a realm + locale (realm lexicon on top of\n * locale-aware fallback).\n */\nexport function lexiconForRealm(\n realmId: RealmId | null | undefined,\n locale: LocaleId | null | undefined = null\n): Record<string, string> {\n const fb = resolveFallback(locale);\n if (!realmId || !REALMS[realmId]) {\n return fb;\n }\n return { ...fb, ...resolveRealm(realmId, locale) };\n}\n","import type { RealmId } from \"../types/index.js\";\n\n/**\n * CSS custom property tokens, mirroring public/css/chuzi-realms.css.\n * Use these for any non-DOM rendering (e.g. React Native, canvas).\n */\nexport interface RealmThemeTokens {\n bgDeep: string;\n bgMid: string;\n accent: string;\n accentSoft: string;\n text: string;\n muted: string;\n effectLine: string;\n}\n\nexport const THEME_TOKENS: Record<RealmId, RealmThemeTokens> = {\n cosmos: {\n bgDeep: \"#04070d\",\n bgMid: \"#0a1020\",\n accent: \"#7eb8ff\",\n accentSoft: \"rgba(126, 184, 255, 0.35)\",\n text: \"#e8f0ff\",\n muted: \"rgba(232, 240, 255, 0.65)\",\n effectLine: \"#ffb347\",\n },\n wilds: {\n bgDeep: \"#0d120c\",\n bgMid: \"#152018\",\n accent: \"#7bc96f\",\n accentSoft: \"rgba(123, 201, 111, 0.35)\",\n text: \"#eef6ea\",\n muted: \"rgba(238, 246, 234, 0.7)\",\n effectLine: \"#b78aff\",\n },\n};\n\n/**\n * Scene tree visualization theme, mirroring the THEMES object in\n * resources/js/scene-tree-viewer.js.\n */\nexport interface SceneTreeTheme {\n bg: string;\n edgeChoice: string;\n edgeGoto: string;\n nodeDefault: string;\n nodeActive: string;\n borderDefault: string;\n borderActive: string;\n labelDefault: string;\n labelActive: string;\n nodeLockedFill: string;\n nodeLockedBorder: string;\n labelLocked: string;\n nodeShape: \"star\" | \"rect\";\n rectRx: number;\n}\n\nexport const SCENE_TREE_THEMES: Record<RealmId, SceneTreeTheme> = {\n cosmos: {\n bg: \"#020408\",\n edgeChoice: \"#e8f0ff\",\n edgeGoto: \"#4a9fff\",\n nodeDefault: \"#ffffff\",\n nodeActive: \"#ffd47e\",\n borderDefault: \"#3a5080\",\n borderActive: \"#fff6d0\",\n labelDefault: \"rgba(220, 232, 255, 0.92)\",\n labelActive: \"rgba(255, 246, 220, 0.98)\",\n nodeLockedFill: \"#151a28\",\n nodeLockedBorder: \"#2a3348\",\n labelLocked: \"rgba(200, 210, 230, 0.35)\",\n nodeShape: \"star\",\n rectRx: 2,\n },\n wilds: {\n bg: \"#04070d\",\n edgeChoice: \"#ffffff\",\n edgeGoto: \"#6ecf7a\",\n nodeDefault: \"#e8f5e4\",\n nodeActive: \"#d31e2f\",\n borderDefault: \"#2d4a32\",\n borderActive: \"#ff9ea8\",\n labelDefault: \"rgba(232, 245, 228, 0.92)\",\n labelActive: \"rgba(255, 214, 219, 0.98)\",\n nodeLockedFill: \"#1a221c\",\n nodeLockedBorder: \"#2a3d30\",\n labelLocked: \"rgba(200, 220, 200, 0.38)\",\n nodeShape: \"rect\",\n rectRx: 3,\n },\n};\n\n/**\n * Get theme tokens for a realm, defaulting to wilds.\n */\nexport function getThemeTokens(realmId: RealmId | null | undefined): RealmThemeTokens {\n return THEME_TOKENS[realmId ?? \"wilds\"] ?? THEME_TOKENS.wilds;\n}\n\n/**\n * Get scene tree theme for a realm, defaulting to wilds.\n */\nexport function getSceneTreeTheme(realmId: RealmId | null | undefined): SceneTreeTheme {\n return SCENE_TREE_THEMES[realmId ?? \"wilds\"] ?? SCENE_TREE_THEMES.wilds;\n}\n","import { createContext, useContext, useMemo, type ReactNode } from \"react\";\nimport { lexiconForRealm, t as translateRealm } from \"../../config/index.js\";\nimport { getThemeTokens, type RealmThemeTokens } from \"../../themes/index.js\";\nimport type { LocaleId, RealmId } from \"../../types/index.js\";\n\n/**\n * Realm-aware theme + lexicon context. Every chuzi-shared/ui primitive reads\n * from this; consuming apps wrap their tree once at the top level. Switching\n * realms or locales re-renders all consumers without prop drilling.\n */\n\nexport interface RealmTheme {\n realmId: RealmId | null;\n locale: LocaleId | null;\n tokens: RealmThemeTokens;\n /** Realm + locale aware lexicon lookup. */\n t: (key: string, fallback?: string) => string;\n /** Full merged lexicon for the current realm + locale. */\n lexicon: Record<string, string>;\n}\n\nconst RealmThemeContext = createContext<RealmTheme | null>(null);\n\nexport interface RealmThemeProviderProps {\n realmId: RealmId | null;\n locale?: LocaleId | null;\n lexiconRevision?: number;\n children: ReactNode;\n}\n\nexport function RealmThemeProvider({\n realmId,\n locale = null,\n lexiconRevision = 0,\n children,\n}: RealmThemeProviderProps) {\n const value = useMemo<RealmTheme>(() => {\n return {\n realmId,\n locale,\n tokens: getThemeTokens(realmId),\n lexicon: lexiconForRealm(realmId, locale),\n t: (key, fallback = \"\") => translateRealm(realmId, key, fallback, locale),\n };\n }, [realmId, locale, lexiconRevision]);\n\n return (\n <RealmThemeContext.Provider value={value}>\n {children}\n </RealmThemeContext.Provider>\n );\n}\n\nexport function useRealmTheme(): RealmTheme {\n const ctx = useContext(RealmThemeContext);\n if (!ctx) {\n throw new Error(\n \"useRealmTheme: no RealmThemeProvider in tree. Wrap your app root with <RealmThemeProvider realmId={...} />.\",\n );\n }\n return ctx;\n}\n","import {\n Pressable,\n StyleSheet,\n Text,\n type PressableProps,\n type StyleProp,\n type ViewStyle,\n} from \"react-native\";\nimport { useRealmTheme } from \"./theme/RealmThemeProvider.js\";\n\nexport type ButtonVariant = \"primary\" | \"ghost\";\n\nexport interface ButtonProps\n extends Omit<PressableProps, \"style\" | \"children\"> {\n label: string;\n variant?: ButtonVariant;\n style?: StyleProp<ViewStyle>;\n}\n\n/**\n * Realm-themed button. Primitives come from react-native so the same\n * component renders on web (via react-native-web) and native. Colors come\n * from the active realm's theme tokens — primary fills with accent, ghost\n * draws an accent outline.\n */\nexport function Button({\n label,\n variant = \"primary\",\n style,\n ...rest\n}: ButtonProps) {\n const { tokens } = useRealmTheme();\n return (\n <Pressable\n accessibilityRole=\"button\"\n style={({ pressed }) => [\n styles.base,\n variant === \"primary\"\n ? { backgroundColor: tokens.accent }\n : {\n backgroundColor: \"transparent\",\n borderColor: tokens.accent,\n borderWidth: 1,\n },\n pressed && { opacity: 0.85 },\n style,\n ]}\n {...rest}\n >\n <Text\n style={[\n styles.label,\n {\n color: variant === \"primary\" ? tokens.bgDeep : tokens.accent,\n },\n ]}\n >\n {label}\n </Text>\n </Pressable>\n );\n}\n\nconst styles = StyleSheet.create({\n base: {\n paddingHorizontal: 18,\n paddingVertical: 10,\n borderRadius: 8,\n alignItems: \"center\",\n justifyContent: \"center\",\n },\n label: {\n fontSize: 14,\n fontWeight: \"600\",\n letterSpacing: 0.5,\n },\n});\n","import {\n Pressable,\n StyleSheet,\n Text,\n View,\n type StyleProp,\n type ViewStyle,\n} from \"react-native\";\nimport type { StoryListItem } from \"../types/index.js\";\nimport { useRealmTheme } from \"./theme/RealmThemeProvider.js\";\n\nexport interface FilmCardProps {\n film: StoryListItem;\n /** Tap/click handler. Without one, the card is a static block. */\n onPress?: () => void;\n style?: StyleProp<ViewStyle>;\n}\n\n/**\n * Realm-themed film card. Title falls back to the realm's \"untitled\" lexicon\n * (Untitled Star System / Untitled Grove). Genre falls back to the realm's\n * \"unknown genre\" string. Pressable when an onPress is provided; otherwise\n * renders a non-interactive View — important for list contexts that want\n * the press handled at the row level instead.\n */\nexport function FilmCard({ film, onPress, style }: FilmCardProps) {\n const { tokens, t } = useRealmTheme();\n\n const title = film.title?.trim() || t(\"untitled_story\", \"Untitled\");\n const genre = film.genre?.trim() || t(\"unknown_genre\", \"Unknown\");\n const sceneLabel = t(\"scenes_count\", \"scenes\");\n const choiceLabel = t(\"choices_count\", \"choices\");\n\n const inner = (\n <>\n <Text\n style={[styles.title, { color: tokens.text }]}\n numberOfLines={2}\n >\n {title}\n </Text>\n <Text style={[styles.meta, { color: tokens.muted }]}>\n {genre} · {film.scenes_count} {sceneLabel} · {film.choices_count}{\" \"}\n {choiceLabel}\n </Text>\n {film.creator?.name ? (\n <Text style={[styles.creator, { color: tokens.accent }]}>\n {film.creator.name}\n </Text>\n ) : null}\n </>\n );\n\n if (onPress) {\n return (\n <Pressable\n accessibilityRole=\"button\"\n onPress={onPress}\n style={({ pressed }) => [\n styles.base,\n { backgroundColor: tokens.bgMid, borderColor: tokens.accentSoft },\n pressed && { opacity: 0.92 },\n style,\n ]}\n >\n {inner}\n </Pressable>\n );\n }\n\n return (\n <View\n style={[\n styles.base,\n { backgroundColor: tokens.bgMid, borderColor: tokens.accentSoft },\n style,\n ]}\n >\n {inner}\n </View>\n );\n}\n\nconst styles = StyleSheet.create({\n base: {\n padding: 16,\n borderRadius: 12,\n borderWidth: 1,\n gap: 6,\n minWidth: 240,\n },\n title: {\n fontSize: 16,\n fontWeight: \"700\",\n },\n meta: {\n fontSize: 12,\n },\n creator: {\n fontSize: 12,\n fontWeight: \"600\",\n },\n});\n","import {\n StyleSheet,\n Text,\n View,\n type StyleProp,\n type ViewStyle,\n} from \"react-native\";\nimport { useRealmTheme } from \"./theme/RealmThemeProvider.js\";\n\nexport type CreditRole = \"viewer\" | \"creator\";\n\nexport interface CreditBadgeProps {\n role: CreditRole;\n value: number;\n style?: StyleProp<ViewStyle>;\n}\n\n/**\n * Realm-themed credit badge — a bordered label showing a viewer or creator\n * credit balance. The label text adapts to the active realm's lexicon and\n * colors pull from the realm's theme tokens.\n */\nexport function CreditBadge({ role, value, style }: CreditBadgeProps) {\n const { tokens } = useRealmTheme();\n\n const label = role === \"viewer\" ? \"Viewer Credits\" : \"Creator Credits\";\n\n return (\n <View\n style={[\n styles.container,\n {\n borderColor: tokens.accent,\n backgroundColor: tokens.bgMid,\n },\n style,\n ]}\n >\n <Text style={[styles.label, { color: tokens.muted }]}>{label}</Text>\n <Text style={[styles.value, { color: tokens.accent }]}>\n {value.toLocaleString()}\n </Text>\n </View>\n );\n}\n\nconst styles = StyleSheet.create({\n container: {\n flexDirection: \"row\",\n alignItems: \"center\",\n gap: 8,\n paddingHorizontal: 14,\n paddingVertical: 8,\n borderRadius: 8,\n borderWidth: 1,\n },\n label: {\n fontSize: 12,\n fontWeight: \"600\",\n letterSpacing: 0.4,\n textTransform: \"uppercase\",\n },\n value: {\n fontSize: 16,\n fontWeight: \"700\",\n },\n});\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@chuzi/shared",
3
- "version": "1.3.38",
3
+ "version": "1.3.39",
4
4
  "description": "Shared types, realm config, theme tokens, API client, input layer, and realm rendering primitives for CHUZI apps",
5
5
  "type": "module",
6
6
  "sideEffects": false,