larkcc 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +24 -0
- package/LICENSE +21 -0
- package/README.md +617 -0
- package/dist/agent.d.ts +9 -0
- package/dist/agent.js +177 -0
- package/dist/agent.js.map +1 -0
- package/dist/app.d.ts +14 -0
- package/dist/app.js +570 -0
- package/dist/app.js.map +1 -0
- package/dist/commands.d.ts +8 -0
- package/dist/commands.js +143 -0
- package/dist/commands.js.map +1 -0
- package/dist/config.d.ts +61 -0
- package/dist/config.js +184 -0
- package/dist/config.js.map +1 -0
- package/dist/feishu.d.ts +52 -0
- package/dist/feishu.js +964 -0
- package/dist/feishu.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +213 -0
- package/dist/index.js.map +1 -0
- package/dist/logger.d.ts +10 -0
- package/dist/logger.js +13 -0
- package/dist/logger.js.map +1 -0
- package/dist/multifile.d.ts +48 -0
- package/dist/multifile.js +107 -0
- package/dist/multifile.js.map +1 -0
- package/dist/oauth.d.ts +19 -0
- package/dist/oauth.js +142 -0
- package/dist/oauth.js.map +1 -0
- package/dist/session.d.ts +6 -0
- package/dist/session.js +59 -0
- package/dist/session.js.map +1 -0
- package/dist/setup.d.ts +2 -0
- package/dist/setup.js +45 -0
- package/dist/setup.js.map +1 -0
- package/package.json +58 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"feishu.js","sourceRoot":"","sources":["../src/feishu.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,yBAAyB,CAAC;AAChD,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AAUzB,MAAM,gBAAgB,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,SAAS,CAAC,CAAC;AAE5D,SAAS,kBAAkB,CAAC,OAAe;IACzC,IAAI,CAAC,OAAO,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QACtC,OAAO,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,mBAAmB,CAAC,CAAC;IAC1D,CAAC;IACD,OAAO,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,gBAAgB,OAAO,OAAO,CAAC,CAAC;AACrE,CAAC;AAED,SAAS,eAAe,CAAC,OAAe;IACtC,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,kBAAkB,CAAC,OAAO,CAAC,CAAC;QAC7C,IAAI,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC5B,OAAO,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC;QACvD,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,OAAO;IACT,CAAC;IACD,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,SAAS,eAAe,CAAC,OAAe,EAAE,OAAyB;IACjE,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,gBAAgB,CAAC,EAAE,CAAC;QACrC,EAAE,CAAC,SAAS,CAAC,gBAAgB,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACtD,CAAC;IACD,MAAM,QAAQ,GAAG,kBAAkB,CAAC,OAAO,CAAC,CAAC;IAC7C,EAAE,CAAC,aAAa,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;AACvE,CAAC;AAED,SAAS,gBAAgB,CAAC,KAAa,EAAE,OAAe;IACtD,MAAM,OAAO,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;IACzC,OAAO,CAAC,IAAI,CAAC;QACX,EAAE,EAAE,KAAK;QACT,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;KACtB,CAAC,CAAC;IACH,eAAe,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;AACpC,CAAC;AAED,SAAS,kBAAkB,CAAC,OAAe,EAAE,SAAiB;IAC5D,MAAM,OAAO,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;IACzC,mBAAmB;IACnB,MAAM,UAAU,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC;IAC1E,qBAAqB;IACrB,IAAI,UAAU,CAAC,MAAM,IAAI,SAAS,EAAE,CAAC;QACnC,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,OAAO,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,UAAU,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;AAC5D,CAAC;AAED,SAAS,oBAAoB,CAAC,KAAa,EAAE,OAAe;IAC1D,MAAM,OAAO,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;IACzC,MAAM,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,KAAK,CAAC,CAAC;IACrD,eAAe,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;AACrC,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,KAAa,EAAE,SAAiB;IAC/D,OAAO,IAAI,IAAI,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;AAC/C,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,KAAa,EAAE,SAAiB;IAC7D,OAAO,IAAI,IAAI,CAAC,QAAQ,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;AACjD,CAAC;AAED,4DAA4D;AAE5D,MAAM,CAAC,KAAK,UAAU,QAAQ,CAC5B,MAAmB,EACnB,MAAc,EACd,IAAY;IAEZ,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC;QACzC,MAAM,EAAE,EAAE,eAAe,EAAE,SAAS,EAAE;QACtC,IAAI,EAAE;YACJ,UAAU,EAAE,MAAM;YAClB,QAAQ,EAAE,MAAM;YAChB,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,CAAC;SAClC;KACF,CAAC,CAAC;IACH,OAAO,GAAG,CAAC,IAAI,EAAE,UAAU,IAAI,EAAE,CAAC;AACpC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,SAAS,CAC7B,MAAmB,EACnB,MAAc,EACd,SAAiB,EACjB,IAAY;IAEZ,MAAM,IAAI,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC;IACrC,MAAM,GAAG,GAAG,MAAO,MAAM,CAAC,EAAE,CAAC,OAAe,CAAC,KAAK,CAAC;QACjD,IAAI,EAAE,EAAE,UAAU,EAAE,SAAS,EAAE;QAC/B,IAAI,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,aAAa,EAAE,eAAe,EAAE,KAAK,EAAE;KACzF,CAAC,CAAC;IACH,OAAO,GAAG,CAAC,IAAI,EAAE,UAAU,IAAI,EAAE,CAAC;AACpC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,UAAU,CAC9B,MAAmB,EACnB,KAAa,EACb,IAAY;IAEZ,MAAM,IAAI,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC;IACrC,MAAM,MAAM,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;QAC5B,IAAI,EAAE,EAAE,UAAU,EAAE,KAAK,EAAE;QAC3B,IAAI,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE;KACxC,CAAC,CAAC;AACL,CAAC;AAED,oCAAoC;AACpC,MAAM,UAAU,GAAG,IAAI,CAAC;AAExB,SAAS,aAAa,CAAC,IAAY,EAAE,IAAY;IAC/C,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI;QAAE,OAAO,CAAC,IAAI,CAAC,CAAC;IACvC,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,IAAI,SAAS,GAAG,IAAI,CAAC;IACrB,OAAO,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC5B,IAAI,SAAS,CAAC,MAAM,IAAI,IAAI,EAAE,CAAC;YAC7B,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YACvB,MAAM;QACR,CAAC;QACD,WAAW;QACX,IAAI,GAAG,GAAG,SAAS,CAAC,WAAW,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAC5C,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG;YAAE,GAAG,GAAG,SAAS,CAAC,WAAW,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QAC7D,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG;YAAE,GAAG,GAAG,IAAI,CAAC;QACjC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;QAC5C,SAAS,GAAG,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;IAC1C,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,MAAmB,EACnB,MAAc,EACd,SAAiB,EACjB,QAAgB,EAChB,OAAsB;IAEtB,MAAM,SAAS,GAAG,OAAO,EAAE,QAAQ,CAAC,IAAI,KAAK,UAAU;QACrD,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,SAAS;QACrC,CAAC,CAAC,OAAO,EAAE,QAAQ,CAAC,KAAK,CAAC,SAAS,IAAI,UAAU,CAAC;IAEpD,WAAW;IACX,IAAI,QAAQ,CAAC,MAAM,IAAI,SAAS,EAAE,CAAC;QACjC,MAAM,gBAAgB,CAAC,MAAM,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;QACpD,OAAO;IACT,CAAC;IAED,OAAO;IACP,IAAI,OAAO,EAAE,QAAQ,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;QAC1C,QAAQ;QACR,MAAM,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;IACxE,CAAC;SAAM,CAAC;QACN,OAAO;QACP,MAAM,MAAM,GAAG,aAAa,CAAC,QAAQ,EAAE,OAAO,EAAE,QAAQ,CAAC,KAAK,CAAC,SAAS,IAAI,UAAU,CAAC,CAAC;QACxF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACvC,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC;gBAC/B,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC,MAAM,QAAQ,MAAM,CAAC,CAAC,CAAC,EAAE;gBACjD,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YACd,MAAM,gBAAgB,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;QACrD,CAAC;IACH,CAAC;AACH,CAAC;AAED,KAAK,UAAU,gBAAgB,CAC7B,MAAmB,EACnB,SAAiB,EACjB,OAAe;IAEf,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,iBAAiB,CAAC,OAAO,CAAC,CAAC;QACxC,MAAO,MAAM,CAAC,EAAE,CAAC,OAAe,CAAC,KAAK,CAAC;YACrC,IAAI,EAAE,EAAE,UAAU,EAAE,SAAS,EAAE;YAC/B,IAAI,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,aAAa,EAAE,eAAe,EAAE,KAAK,EAAE;SACzF,CAAC,CAAC;IACL,CAAC;IAAC,MAAM,CAAC;QACP,sBAAsB;QACtB,MAAO,MAAM,CAAC,EAAE,CAAC,OAAe,CAAC,KAAK,CAAC;YACrC,IAAI,EAAE,EAAE,UAAU,EAAE,SAAS,EAAE;YAC/B,IAAI,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,eAAe,EAAE,KAAK,EAAE;SAC/F,CAAC,CAAC;IACL,CAAC;AACH,CAAC;AAED,KAAK,UAAU,iBAAiB,CAC9B,MAAmB,EACnB,MAAc,EACd,SAAiB,EACjB,QAAgB,EAChB,OAAqB;IAErB,IAAI,CAAC;QACH,yBAAyB;QACzB,MAAM,KAAK,GAAG,MAAM,oBAAoB,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;QAE3E,SAAS;QACT,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,MAAM,QAAQ,GAAG,GAAG,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAClE,MAAM,KAAK,GAAG,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,cAAc;aACnD,OAAO,CAAC,WAAW,EAAE,OAAO,CAAC,OAAO,CAAC;aACrC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC;aAC7B,OAAO,CAAC,cAAc,EAAE,OAAO,CAAC,SAAS,IAAI,EAAE,CAAC;aAChD,OAAO,CAAC,YAAY,EAAE,QAAQ,CAAC;aAC/B,OAAO,CAAC,QAAQ,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;QAE5C,aAAa;QACb,IAAI,eAAe,GAAG,EAAE,CAAC;QACzB,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC;gBACzC,IAAI,EAAE,EAAE,UAAU,EAAE,SAAS,EAAE;aAChC,CAAC,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,CAAC,IAAW,CAAC;YACnC,WAAW;YACX,IAAI,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;gBACvC,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBAC1D,eAAe,GAAG,OAAO,CAAC,IAAI,IAAI,EAAE,CAAC;YACvC,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,UAAU;QACZ,CAAC;QAED,cAAc;QACd,IAAI,aAAa,GAA+C,IAAI,CAAC;QACrE,MAAM,aAAa,GAAG,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC;QACxD,IAAI,aAAa,EAAE,OAAO,EAAE,CAAC;YAC3B,aAAa,GAAG,MAAM,mBAAmB,CAAC,KAAK,EAAE,aAAa,CAAC,QAAQ,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;QAC5F,CAAC;QAED,UAAU;QACV,MAAM,IAAI,GAAiB;YACzB,GAAG,EAAE,OAAO,CAAC,GAAG;YAChB,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,SAAS,EAAE,OAAO,CAAC,SAAS,IAAI,EAAE;YAClC,QAAQ,EAAE,QAAQ;SACnB,CAAC;QAEF,eAAe;QACf,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,sBAAsB,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,eAAe,EAAE,IAAI,CAAC,CAAC;QAEtG,aAAa;QACb,gBAAgB,CAAC,KAAK,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;QAEzC,SAAS;QACT,IAAI,QAAQ,GAAG,kBAAkB,MAAM,EAAE,CAAC;QAC1C,IAAI,aAAa,EAAE,MAAM,IAAI,aAAa,IAAI,CAAC,aAAa,CAAC,OAAO,GAAG,CAAC,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC;YACtG,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC7B,QAAQ,IAAI,aAAa,aAAa,CAAC,OAAO,SAAS,aAAa,CAAC,MAAM,QAAQ,CAAC;YACtF,CAAC;iBAAM,CAAC;gBACN,QAAQ,IAAI,aAAa,aAAa,CAAC,OAAO,cAAc,aAAa,CAAC,QAAQ,KAAK,CAAC;YAC1F,CAAC;QACH,CAAC;QAED,SAAS;QACT,MAAM,gBAAgB,CAAC,MAAM,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;IACtD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,gBAAgB;QAChB,OAAO,CAAC,KAAK,CAAC,4BAA4B,EAAE,KAAK,CAAC,CAAC;QACnD,MAAM,gBAAgB,CAAC,MAAM,EAAE,SAAS,EAAE,aAAa,KAAK,UAAU,CAAC,CAAC;QACxE,MAAM,MAAM,GAAG,aAAa,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;QACnD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACvC,MAAM,OAAO,GAAG,MAAM,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC,MAAM,QAAQ,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;YAChE,MAAM,gBAAgB,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;QACrD,CAAC;IACH,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,MAAmB,EACnB,MAAc,EACd,SAAiB,EACjB,KAAa,EACb,MAAc,EACd,SAAuC,SAAS;IAEhD,MAAM,UAAU,GAAG,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC;IAC3F,MAAM,OAAO,GAAG,GAAG,KAAK,OAAO,MAAM,OAAO,UAAU,EAAE,CAAC;IACzD,MAAM,IAAI,GAAG,iBAAiB,CAAC,OAAO,CAAC,CAAC;IACxC,MAAM,GAAG,GAAG,MAAO,MAAM,CAAC,EAAE,CAAC,OAAe,CAAC,KAAK,CAAC;QACjD,IAAI,EAAE,EAAE,UAAU,EAAE,SAAS,EAAE;QAC/B,IAAI,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,aAAa,EAAE,eAAe,EAAE,KAAK,EAAE;KACzF,CAAC,CAAC;IACH,OAAO,GAAG,CAAC,IAAI,EAAE,UAAU,IAAI,EAAE,CAAC;AACpC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,MAAmB,EACnB,KAAa,EACb,KAAa,EACb,MAAc,EACd,cAAsB;IAEtB,MAAM,OAAO,GAAG,GAAG,KAAK,OAAO,MAAM,UAAU,CAAC;IAChD,MAAM,IAAI,GAAG,iBAAiB,CAAC,OAAO,CAAC,CAAC;IACxC,MAAM,MAAM,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;QAC5B,IAAI,EAAE,EAAE,UAAU,EAAE,KAAK,EAAE;QAC3B,IAAI,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE;KACxC,CAAC,CAAC;AACL,CAAC;AAED,4DAA4D;AAE5D,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,MAAmB,EACnB,SAAiB,EACjB,QAAgB;IAEhB,IAAI,CAAC;QACH,OAAO,CAAC,KAAK,CAAC,8BAA8B,QAAQ,EAAE,CAAC,CAAC;QACxD,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,EAAE,CAAC,eAAe,CAAC,GAAG,CAAC;YAC9C,IAAI,EAAE,EAAE,UAAU,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE;YACnD,MAAM,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE;SAC1B,CAAC,CAAC;QACH,MAAM,MAAM,GAAI,GAAW,CAAC,iBAAiB,EAAE,CAAC;QAChD,MAAM,MAAM,GAAa,EAAE,CAAC;QAC5B,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YAC1C,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAU,EAAE,EAAE;gBAC/B,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;YACnE,CAAC,CAAC,CAAC;YACH,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;YAC1B,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAC7B,CAAC,CAAC,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAClC,MAAM,MAAM,GAAG,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QACtC,MAAM,MAAM,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QAC/C,IAAI,SAAS,GAAG,YAAY,CAAC;QAC7B,IAAI,MAAM,CAAC,UAAU,CAAC,UAAU,CAAC;YAAE,SAAS,GAAG,WAAW,CAAC;aACtD,IAAI,MAAM,CAAC,UAAU,CAAC,UAAU,CAAC;YAAE,SAAS,GAAG,WAAW,CAAC;aAC3D,IAAI,MAAM,CAAC,UAAU,CAAC,UAAU,CAAC;YAAE,SAAS,GAAG,YAAY,CAAC;QACjE,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;QAC7C,OAAO,CAAC,KAAK,CAAC,uBAAuB,SAAS,KAAK,MAAM,cAAc,MAAM,CAAC,MAAM,OAAO,CAAC,CAAC;QAC7F,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;IAC/B,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,OAAO,CAAC,KAAK,CAAC,0BAA0B,EAAE,CAAC,CAAC,CAAC;QAC7C,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAYD;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,MAAmB,EACnB,SAAiB,EACjB,OAAe,EACf,OAAe,EACf,QAAgB;IAEhB,IAAI,CAAC;QACH,OAAO,CAAC,KAAK,CAAC,4BAA4B,OAAO,WAAW,QAAQ,EAAE,CAAC,CAAC;QAExE,WAAW;QACX,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;YAC5B,EAAE,CAAC,SAAS,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC7C,CAAC;QAED,OAAO;QACP,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,EAAE,CAAC,eAAe,CAAC,GAAG,CAAC;YAC9C,IAAI,EAAE,EAAE,UAAU,EAAE,SAAS,EAAE,QAAQ,EAAE,OAAO,EAAE;YAClD,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE;SACzB,CAAC,CAAC;QACH,MAAM,MAAM,GAAI,GAAW,CAAC,iBAAiB,EAAE,CAAC;QAChD,MAAM,MAAM,GAAa,EAAE,CAAC;QAC5B,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YAC1C,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAU,EAAE,EAAE;gBAC/B,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;YACnE,CAAC,CAAC,CAAC;YACH,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;YAC1B,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAC7B,CAAC,CAAC,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAElC,sBAAsB;QACtB,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC7B,MAAM,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAAC,kBAAkB,EAAE,GAAG,CAAC,CAAC;QAC3D,MAAM,UAAU,GAAG,GAAG,SAAS,IAAI,QAAQ,EAAE,CAAC;QAC9C,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;QAEhD,OAAO;QACP,EAAE,CAAC,aAAa,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;QAEhC,aAAa;QACb,MAAM,SAAS,GAA2B;YACxC,KAAK;YACL,KAAK,EAAE,iBAAiB;YACxB,KAAK,EAAE,oBAAoB;YAC3B,MAAM,EAAE,yEAAyE;YACjF,KAAK,EAAE,0BAA0B;YACjC,MAAM,EAAE,mEAAmE;YAC3E,KAAK,EAAE,+BAA+B;YACtC,MAAM,EAAE,2EAA2E;YACnF,KAAK;YACL,KAAK,EAAE,YAAY;YACnB,IAAI,EAAE,eAAe;YACrB,KAAK,EAAE,UAAU;YACjB,MAAM,EAAE,kBAAkB;YAC1B,KAAK,EAAE,iBAAiB;YACxB,MAAM,EAAE,oBAAoB;YAC5B,KAAK,EAAE,oBAAoB;YAC3B,KAAK;YACL,IAAI,EAAE,wBAAwB;YAC9B,IAAI,EAAE,wBAAwB;YAC9B,IAAI,EAAE,eAAe;YACrB,MAAM,EAAE,aAAa;YACrB,IAAI,EAAE,WAAW;YACjB,IAAI,EAAE,aAAa;YACnB,GAAG,EAAE,UAAU;YACf,KAAK,EAAE,YAAY;YACnB,GAAG,EAAE,UAAU;YACf,KAAK,EAAE,YAAY;YACnB,IAAI,EAAE,kBAAkB;YACxB,MAAM,EAAE,kBAAkB;YAC1B,KAAK;YACL,KAAK,EAAE,iBAAiB;YACxB,KAAK,EAAE,mBAAmB;YAC1B,IAAI,EAAE,kBAAkB;YACxB,KAAK,EAAE,qBAAqB;YAC5B,IAAI,EAAE,6BAA6B;YACnC,KAAK;YACL,MAAM,EAAE,WAAW;YACnB,KAAK,EAAE,UAAU;SAClB,CAAC;QAEF,MAAM,GAAG,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC;QAC3D,MAAM,SAAS,GAAG,SAAS,CAAC,GAAG,CAAC,IAAI,0BAA0B,CAAC;QAE/D,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;QAC7C,OAAO,CAAC,KAAK,CAAC,sBAAsB,SAAS,KAAK,MAAM,gBAAgB,QAAQ,EAAE,CAAC,CAAC;QAEpF,OAAO;YACL,QAAQ;YACR,QAAQ;YACR,IAAI,EAAE,GAAG,CAAC,MAAM;YAChB,SAAS;YACT,QAAQ,EAAE,OAAO;SAClB,CAAC;IACJ,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,OAAO,CAAC,KAAK,CAAC,yBAAyB,EAAE,CAAC,CAAC,CAAC;QAC5C,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,4DAA4D;AAE5D,SAAS,iBAAiB,CAAC,QAAgB;IACzC,OAAO;QACL,MAAM,EAAE,KAAK;QACb,IAAI,EAAE,EAAE,QAAQ,EAAE,CAAC,EAAE,GAAG,EAAE,UAAU,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,EAAE;KAC7D,CAAC;AACJ,CAAC;AAeD;;GAEG;AACH,KAAK,UAAU,aAAa,CAAC,GAAa,EAAE,OAAe;IACzD,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;IAC9B,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;QACZ,MAAM,IAAI,KAAK,CAAC,GAAG,OAAO,YAAY,GAAG,CAAC,MAAM,MAAM,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;IAC9E,CAAC;IACD,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,KAAK,CAAC,GAAG,OAAO,uBAAuB,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;IACzE,CAAC;AACH,CAAC;AAED,yBAAyB;AACzB,6CAA6C;AAC7C,MAAM,SAAS,GAAG;IAChB,IAAI,EAAE,CAAC,EAAQ,KAAK;IACpB,IAAI,EAAE,CAAC,EAAQ,KAAK;IACpB,QAAQ,EAAE,CAAC,EAAI,OAAO;IACtB,QAAQ,EAAE,CAAC,EAAI,OAAO;IACtB,QAAQ,EAAE,CAAC,EAAI,OAAO;IACtB,MAAM,EAAE,EAAE,EAAK,OAAO;IACtB,OAAO,EAAE,EAAE,EAAI,OAAO;IACtB,IAAI,EAAE,EAAE,EAAO,MAAM;IACrB,KAAK,EAAE,EAAE,EAAM,MAAM;IACrB,OAAO,EAAE,EAAE,EAAI,MAAM;CACb,CAAC;AAEX,wBAAwB;AACxB,gJAAgJ;AAChJ,MAAM,WAAW,GAA2B;IAC1C,gBAAgB;IAChB,EAAE,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC;IACtC,WAAW;IACX,MAAM,EAAE,CAAC;IACT,UAAU;IACV,KAAK,EAAE,CAAC;IACR,aAAa;IACb,QAAQ,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC;IAC5B,WAAW;IACX,MAAM,EAAE,CAAC;IACT,eAAe;IACf,UAAU,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC;IACvB,WAAW;IACX,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC;IACxC,aAAa;IACb,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC;IAC7B,UAAU;IACV,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC;IACrD,SAAS;IACT,GAAG,EAAE,EAAE;IACP,aAAa;IACb,OAAO,EAAE,EAAE;IACX,WAAW;IACX,KAAK,EAAE,EAAE;IACT,oBAAoB;IACpB,cAAc,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE;IAChC,SAAS;IACT,GAAG,EAAE,EAAE;IACP,YAAY;IACZ,MAAM,EAAE,EAAE;IACV,cAAc;IACd,QAAQ,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE;IACrC,cAAc;IACd,QAAQ,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE;IAC1B,kBAAkB;IAClB,YAAY,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE;IAC9B,cAAc;IACd,QAAQ,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE;IACvB,eAAe;IACf,SAAS,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE;IACxB,cAAc;IACd,QAAQ,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE;IACvB,UAAU;IACV,IAAI,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE;IACtB,cAAc;IACd,QAAQ,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE;IAC1B,YAAY;IACZ,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE;IACrB,gBAAgB;IAChB,UAAU,EAAE,EAAE,EAAE,YAAY,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE;IAC3C,YAAY;IACZ,MAAM,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE;IACvB,eAAe;IACf,SAAS,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE;IACvB,YAAY;IACZ,MAAM,EAAE,EAAE;IACV,YAAY;IACZ,MAAM,EAAE,EAAE;IACV,kBAAkB;IAClB,YAAY,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE;IACrC,aAAa;IACb,OAAO,EAAE,EAAE;IACX,cAAc;IACd,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE;IACjC,aAAa;IACb,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE;IACtB,YAAY;IACZ,MAAM,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE;IACpC,YAAY;IACZ,MAAM,EAAE,EAAE;IACV,WAAW;IACX,KAAK,EAAE,EAAE;IACT,cAAc;IACd,QAAQ,EAAE,EAAE;IACZ,gBAAgB;IAChB,UAAU,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE;IACpC,gBAAgB;IAChB,UAAU,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE;IACxB,aAAa;IACb,OAAO,EAAE,EAAE,EAAE,WAAW,EAAE,EAAE;IAC5B,mBAAmB;IACnB,MAAM,EAAE,EAAE,EAAE,aAAa,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE;IACvC,mBAAmB;IACnB,UAAU,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE;IACzB,WAAW;IACX,KAAK,EAAE,EAAE;IACT,YAAY;IACZ,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE;IACpB,kBAAkB;IAClB,YAAY,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE;IAC1B,kBAAkB;IAClB,YAAY,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE;IACvC,cAAc;IACd,QAAQ,EAAE,EAAE;IACZ,gBAAgB;IAChB,UAAU,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE;IACrC,cAAc;IACd,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE;IACtB,SAAS;IACT,GAAG,EAAE,EAAE;IACP,WAAW;IACX,KAAK,EAAE,EAAE;IACT,YAAY;IACZ,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE;IACpB,YAAY;IACZ,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE;IACpB,WAAW;IACX,KAAK,EAAE,EAAE;IACT,YAAY;IACZ,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE;IACtB,WAAW;IACX,KAAK,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,YAAY,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE;IACrD,aAAa;IACb,OAAO,EAAE,EAAE;IACX,cAAc;IACd,QAAQ,EAAE,EAAE;IACZ,eAAe;IACf,SAAS,EAAE,EAAE;IACb,kCAAkC;IAClC,aAAa;IACb,OAAO,EAAE,EAAE;IACX,cAAc;IACd,QAAQ,EAAE,EAAE;IACZ,kBAAkB;IAClB,YAAY,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE;IACrC,gBAAgB;IAChB,UAAU,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE;IACzB,oBAAoB;IACpB,IAAI,EAAE,EAAE,EAAE,cAAc,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE;IACzC,WAAW;IACX,KAAK,EAAE,EAAE;IACT,YAAY;IACZ,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE;IACrB,aAAa;IACb,OAAO,EAAE,EAAE;IACX,YAAY;IACZ,MAAM,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE;IACvB,eAAe;IACf,SAAS,EAAE,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE;IAC5C,eAAe;IACf,SAAS,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE;IACxB,+BAA+B;IAC/B,MAAM,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE;IACxB,kBAAkB;IAClB,YAAY,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE;IACvC,gBAAgB;IAChB,UAAU,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE;IACzB,YAAY;IACZ,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE;CACtB,CAAC;AAEF;;;GAGG;AACH,SAAS,eAAe,CAAC,IAAY;IACnC,MAAM,QAAQ,GAAU,EAAE,CAAC;IAC3B,IAAI,SAAS,GAAG,IAAI,CAAC;IAErB,wBAAwB;IACxB,OAAO,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC5B,iBAAiB;QACjB,MAAM,SAAS,GAAG,SAAS,CAAC,KAAK,CAAC,0BAA0B,CAAC,CAAC;QAC9D,IAAI,SAAS,EAAE,CAAC;YACd,QAAQ,CAAC,IAAI,CAAC;gBACZ,QAAQ,EAAE;oBACR,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC;oBACrB,kBAAkB,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE;iBACpD;aACF,CAAC,CAAC;YACH,SAAS,GAAG,SAAS,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;YACjD,SAAS;QACX,CAAC;QAED,cAAc;QACd,MAAM,SAAS,GAAG,SAAS,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC;QACtD,IAAI,SAAS,EAAE,CAAC;YACd,QAAQ,CAAC,IAAI,CAAC;gBACZ,QAAQ,EAAE;oBACR,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC;oBACrB,kBAAkB,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE;iBACnC;aACF,CAAC,CAAC;YACH,SAAS,GAAG,SAAS,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;YACjD,SAAS;QACX,CAAC;QAED,cAAc;QACd,MAAM,SAAS,GAAG,SAAS,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;QAChD,IAAI,SAAS,EAAE,CAAC;YACd,QAAQ,CAAC,IAAI,CAAC;gBACZ,QAAQ,EAAE;oBACR,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC;oBACrB,kBAAkB,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE;iBAC1C;aACF,CAAC,CAAC;YACH,SAAS,GAAG,SAAS,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;YACjD,SAAS;QACX,CAAC;QAED,8BAA8B;QAC9B,MAAM,WAAW,GAAG,SAAS,CAAC,KAAK,CAAC,iDAAiD,CAAC,CAAC;QACvF,IAAI,WAAW,EAAE,CAAC;YAChB,MAAM,OAAO,GAAG,WAAW,CAAC,CAAC,CAAC,IAAI,WAAW,CAAC,CAAC,CAAC,CAAC;YACjD,QAAQ,CAAC,IAAI,CAAC;gBACZ,QAAQ,EAAE;oBACR,OAAO;oBACP,kBAAkB,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;iBACrC;aACF,CAAC,CAAC;YACH,SAAS,GAAG,SAAS,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;YACnD,SAAS;QACX,CAAC;QAED,eAAe;QACf,MAAM,WAAW,GAAG,SAAS,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;QACpD,IAAI,WAAW,EAAE,CAAC;YAChB,QAAQ,CAAC,IAAI,CAAC;gBACZ,QAAQ,EAAE;oBACR,OAAO,EAAE,WAAW,CAAC,CAAC,CAAC;oBACvB,kBAAkB,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE;iBAC5C;aACF,CAAC,CAAC;YACH,SAAS,GAAG,SAAS,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;YACnD,SAAS;QACX,CAAC;QAED,eAAe;QACf,MAAM,WAAW,GAAG,SAAS,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;QACjD,IAAI,WAAW,KAAK,CAAC,CAAC,EAAE,CAAC;YACvB,kBAAkB;YAClB,IAAI,SAAS,EAAE,CAAC;gBACd,QAAQ,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,EAAE,CAAC,CAAC;YACtD,CAAC;YACD,MAAM;QACR,CAAC;aAAM,IAAI,WAAW,GAAG,CAAC,EAAE,CAAC;YAC3B,eAAe;YACf,QAAQ,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,EAAE,OAAO,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,WAAW,CAAC,EAAE,EAAE,CAAC,CAAC;YAC1E,SAAS,GAAG,SAAS,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;QAC3C,CAAC;aAAM,CAAC;YACN,4BAA4B;YAC5B,QAAQ,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACvD,SAAS,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACjC,CAAC;IACH,CAAC;IAED,OAAO,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;AAC1E,CAAC;AAYD;;;GAGG;AACH,SAAS,gBAAgB,CAAC,QAAgB,EAAE,eAAuB,EAAE,IAAkB;IACrF,MAAM,MAAM,GAAU,EAAE,CAAC;IAEzB,iBAAiB;IACjB,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACnC,IAAI,WAAW,GAAa,EAAE,CAAC;IAC/B,IAAI,WAAW,GAAG,KAAK,CAAC;IACxB,IAAI,WAAW,GAAa,EAAE,CAAC;IAC/B,IAAI,QAAQ,GAAG,EAAE,CAAC;IAElB,MAAM,SAAS,GAAG,GAAG,EAAE;QACrB,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC3B,MAAM,OAAO,GAAG,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC;YAC9C,IAAI,OAAO,EAAE,CAAC;gBACZ,mBAAmB;gBACnB,MAAM,QAAQ,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;gBAC1C,MAAM,CAAC,IAAI,CAAC;oBACV,UAAU,EAAE,SAAS,CAAC,IAAI;oBAC1B,IAAI,EAAE,EAAE,QAAQ,EAAE;iBACnB,CAAC,CAAC;YACL,CAAC;YACD,WAAW,GAAG,EAAE,CAAC;QACnB,CAAC;IACH,CAAC,CAAC;IAEF,QAAQ;IACR,MAAM,aAAa,GAAG,CAAC,IAAY,EAAE,SAAkB,EAAE,OAAgB,EAAE,EAAE;QAC3E,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QAC5B,IAAI,CAAC,OAAO;YAAE,OAAO;QAErB,MAAM,SAAS,GAAG,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC;QACnE,MAAM,QAAQ,GAAG,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC;QAElD,mBAAmB;QACnB,MAAM,QAAQ,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;QAC1C,MAAM,CAAC,IAAI,CAAC;YACV,UAAU,EAAE,SAAS;YACrB,CAAC,QAAQ,CAAC,EAAE,EAAE,QAAQ,EAAE;SACzB,CAAC,CAAC;IACL,CAAC,CAAC;IAEF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACtC,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QAEtB,QAAQ;QACR,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;YAC3B,IAAI,CAAC,WAAW,EAAE,CAAC;gBACjB,SAAS,EAAE,CAAC;gBACZ,WAAW,GAAG,IAAI,CAAC;gBACnB,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;gBAC9C,WAAW,GAAG,EAAE,CAAC;YACnB,CAAC;iBAAM,CAAC;gBACN,gBAAgB;gBAChB,MAAM,IAAI,GAAG,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACpC,MAAM,MAAM,GAAG,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;gBAE1C,MAAM,CAAC,IAAI,CAAC;oBACV,UAAU,EAAE,SAAS,CAAC,IAAI;oBAC1B,IAAI,EAAE;wBACJ,KAAK,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE;wBACvC,QAAQ,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,CAAC;qBAC5C;iBACF,CAAC,CAAC;gBACH,WAAW,GAAG,KAAK,CAAC;gBACpB,WAAW,GAAG,EAAE,CAAC;gBACjB,QAAQ,GAAG,EAAE,CAAC;YAChB,CAAC;YACD,SAAS;QACX,CAAC;QAED,IAAI,WAAW,EAAE,CAAC;YAChB,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACvB,SAAS;QACX,CAAC;QAED,eAAe;QACf,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;YAC1B,SAAS,EAAE,CAAC;YACZ,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;YAC1C,IAAI,YAAY,EAAE,CAAC;gBACjB,MAAM,QAAQ,GAAG,eAAe,CAAC,YAAY,CAAC,CAAC;gBAC/C,MAAM,CAAC,IAAI,CAAC;oBACV,UAAU,EAAE,SAAS,CAAC,KAAK;oBAC3B,KAAK,EAAE,EAAE,QAAQ,EAAE;iBACpB,CAAC,CAAC;YACL,CAAC;YACD,SAAS;QACX,CAAC;QAED,oBAAoB;QACpB,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC;QACrD,IAAI,WAAW,EAAE,CAAC;YAChB,SAAS,EAAE,CAAC;YACZ,aAAa,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;YACrC,SAAS;QACX,CAAC;QAED,kBAAkB;QAClB,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAC;QACzD,IAAI,YAAY,EAAE,CAAC;YACjB,SAAS,EAAE,CAAC;YACZ,aAAa,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAChE,SAAS;QACX,CAAC;QAED,6BAA6B;QAC7B,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;YAC5B,SAAS,EAAE,CAAC;YACZ,MAAM,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YACrC,MAAM,QAAQ,GAAG,eAAe,CAAC,cAAc,CAAC,CAAC;YACjD,MAAM,CAAC,IAAI,CAAC;gBACV,UAAU,EAAE,SAAS,CAAC,QAAQ;gBAC9B,QAAQ,EAAE,EAAE,QAAQ,EAAE;aACvB,CAAC,CAAC;QACL,CAAC;aAAM,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;YAClC,SAAS,EAAE,CAAC;YACZ,MAAM,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YACrC,MAAM,QAAQ,GAAG,eAAe,CAAC,cAAc,CAAC,CAAC;YACjD,MAAM,CAAC,IAAI,CAAC;gBACV,UAAU,EAAE,SAAS,CAAC,QAAQ;gBAC9B,QAAQ,EAAE,EAAE,QAAQ,EAAE;aACvB,CAAC,CAAC;QACL,CAAC;aAAM,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;YACjC,SAAS,EAAE,CAAC;YACZ,MAAM,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YACrC,MAAM,QAAQ,GAAG,eAAe,CAAC,cAAc,CAAC,CAAC;YACjD,MAAM,CAAC,IAAI,CAAC;gBACV,UAAU,EAAE,SAAS,CAAC,QAAQ;gBAC9B,QAAQ,EAAE,EAAE,QAAQ,EAAE;aACvB,CAAC,CAAC;QACL,CAAC;aAAM,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,KAAK,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,KAAK,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,KAAK,EAAE,CAAC;YACnF,MAAM;YACN,SAAS,EAAE,CAAC;YACZ,MAAM,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,SAAS,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC;QAC9D,CAAC;aAAM,CAAC;YACN,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACzB,CAAC;IACH,CAAC;IAED,YAAY;IACZ,IAAI,WAAW,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC1C,MAAM,IAAI,GAAG,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACpC,MAAM,MAAM,GAAG,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QAC1C,MAAM,CAAC,IAAI,CAAC;YACV,UAAU,EAAE,SAAS,CAAC,IAAI;YAC1B,IAAI,EAAE;gBACJ,KAAK,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE;gBACvC,QAAQ,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,CAAC;aAC5C;SACF,CAAC,CAAC;IACL,CAAC;IAED,WAAW;IACX,SAAS,EAAE,CAAC;IAEZ,sCAAsC;IAEtC,oBAAoB;IACpB,MAAM,UAAU,GAAG;QACjB,UAAU,EAAE,SAAS,CAAC,KAAK;QAC3B,KAAK,EAAE;YACL,QAAQ,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAE,OAAO,EAAE,eAAe,IAAI,aAAa,EAAE,EAAE,CAAC;SACxE;KACF,CAAC;IAEF,SAAS;IACT,MAAM,QAAQ,GAAG,EAAE,UAAU,EAAE,SAAS,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;IAEhE,UAAU;IACV,MAAM,SAAS,GAAG;QAChB,YAAY,IAAI,CAAC,GAAG,EAAE;QACtB,WAAW,IAAI,CAAC,OAAO,EAAE;QACzB,YAAY,IAAI,CAAC,SAAS,EAAE;QAC5B,UAAU,IAAI,CAAC,QAAQ,EAAE;KAC1B,CAAC;IACF,MAAM,SAAS,GAAG;QAChB,UAAU,EAAE,SAAS,CAAC,IAAI;QAC1B,IAAI,EAAE;YACJ,QAAQ,EAAE,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBAC/B,QAAQ,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE;aAC5B,CAAC,CAAC;SACJ;KACF,CAAC;IAEF,SAAS;IACT,MAAM,QAAQ,GAAG,EAAE,UAAU,EAAE,SAAS,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;IAEhE,aAAa;IACb,MAAM,MAAM,GAAG,CAAC,UAAU,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;IAE3D,sBAAsB;IACtB,WAAW;IACX,MAAM,UAAU,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;IAC7B,IAAI,UAAU,IAAI,CAAC,UAAU,CAAC,UAAU,KAAK,SAAS,CAAC,QAAQ;QAC3D,UAAU,CAAC,UAAU,KAAK,SAAS,CAAC,QAAQ;QAC5C,UAAU,CAAC,UAAU,KAAK,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC;QAClD,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,MAAM,CAAC,CAAC;IACjC,CAAC;SAAM,CAAC;QACN,MAAM,CAAC,OAAO,CAAC,GAAG,MAAM,CAAC,CAAC;IAC5B,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC1C,KAAa,EACb,KAAa,EACb,QAAgB,EAChB,eAAuB,EACvB,IAAkB;IAElB,uBAAuB;IACvB,MAAM,MAAM,GAAG,gBAAgB,CAAC,QAAQ,EAAE,eAAe,EAAE,IAAI,CAAC,CAAC;IAEjE,qCAAqC;IACrC,MAAM,SAAS,GAAG,MAAM,KAAK,CAAC,oDAAoD,EAAE;QAClF,MAAM,EAAE,MAAM;QACd,OAAO,EAAE;YACP,eAAe,EAAE,UAAU,KAAK,EAAE;YAClC,cAAc,EAAE,kBAAkB;SACnC;QACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,CAAC;KAChC,CAAC,CAAC;IACH,MAAM,UAAU,GAAG,MAAM,aAAa,CAAC,SAAS,EAAE,iBAAiB,CAAuD,CAAC;IAC3H,MAAM,KAAK,GAAG,UAAU,CAAC,IAAI,EAAE,QAAQ,EAAE,WAAW,CAAC;IAErD,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;IAC/C,CAAC;IAED,8BAA8B;IAC9B,MAAM,UAAU,GAAG,EAAE,CAAC;IACtB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,IAAI,UAAU,EAAE,CAAC;QACnD,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,CAAC;QAC9C,yCAAyC;QACzC,MAAM,KAAK,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC/B,MAAM,SAAS,GAAG,MAAM,KAAK,CAAC,sDAAsD,KAAK,WAAW,KAAK,WAAW,EAAE;YACpH,MAAM,EAAE,MAAM;YACd,OAAO,EAAE;gBACP,eAAe,EAAE,UAAU,KAAK,EAAE;gBAClC,cAAc,EAAE,kBAAkB;aACnC;YACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;gBACnB,QAAQ,EAAE,KAAK;gBACf,KAAK;aACN,CAAC;SACH,CAAC,CAAC;QAEH,MAAM,UAAU,GAAG,MAAM,aAAa,CAAC,SAAS,EAAE,eAAe,CAAoC,CAAC;QACtG,IAAI,UAAU,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;YAC1B,MAAM,IAAI,KAAK,CAAC,yBAAyB,UAAU,CAAC,IAAI,MAAM,UAAU,CAAC,GAAG,EAAE,CAAC,CAAC;QAClF,CAAC;IACH,CAAC;IAED,aAAa;IACb,OAAO;QACL,MAAM,EAAE,0BAA0B,KAAK,EAAE;QACzC,KAAK;KACN,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,IAAI,WAAW,GAAgD,IAAI,CAAC;AAEpE,KAAK,UAAU,oBAAoB,CAAC,KAAa,EAAE,SAAiB;IAClE,OAAO;IACP,IAAI,WAAW,IAAI,WAAW,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC;QACtD,OAAO,WAAW,CAAC,KAAK,CAAC;IAC3B,CAAC;IAED,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,uEAAuE,EAAE;QAC/F,MAAM,EAAE,MAAM;QACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;QAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;YACnB,MAAM,EAAE,KAAK;YACb,UAAU,EAAE,SAAS;SACtB,CAAC;KACH,CAAC,CAAC;IACH,MAAM,IAAI,GAAG,MAAM,aAAa,CAAC,GAAG,EAAE,kBAAkB,CAAmF,CAAC;IAC5I,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAC9B,MAAM,IAAI,KAAK,CAAC,sCAAsC,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC5F,CAAC;IACD,sBAAsB;IACtB,WAAW,GAAG;QACZ,KAAK,EAAE,IAAI,CAAC,mBAAmB;QAC/B,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,GAAG,GAAG,CAAC,GAAG,IAAI;KAC7D,CAAC;IACF,OAAO,WAAW,CAAC,KAAK,CAAC;AAC3B,CAAC;AAED;;GAEG;AACH,SAAS,gBAAgB,CAAC,MAAc,EAAE,SAAiB;IACzD,OAAO,iDAAiD,MAAM,kBAAkB,SAAS,EAAE,CAAC;AAC9F,CAAC;AAED;;;;GAIG;AACH,KAAK,UAAU,mBAAmB,CAChC,KAAa,EACb,OAAe,EACf,OAAe;IAEf,MAAM,MAAM,GAAG,EAAE,OAAO,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;IAEzC,IAAI,CAAC;QACH,iBAAiB;QACjB,MAAM,QAAQ,GAAG,kBAAkB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAEtD,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;YAC3B,IAAI,CAAC;gBACH,4CAA4C;gBAC5C,MAAM,SAAS,GAAG,MAAM,KAAK,CAAC,mDAAmD,GAAG,CAAC,EAAE,YAAY,EAAE;oBACnG,MAAM,EAAE,QAAQ;oBAChB,OAAO,EAAE;wBACP,eAAe,EAAE,UAAU,KAAK,EAAE;qBACnC;iBACF,CAAC,CAAC;gBACH,MAAM,UAAU,GAAG,MAAM,aAAa,CAAC,SAAS,EAAE,iBAAiB,CAAsB,CAAC;gBAE1F,IAAI,UAAU,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;oBAC1B,MAAM,CAAC,OAAO,EAAE,CAAC;oBACjB,UAAU;oBACV,oBAAoB,CAAC,GAAG,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;gBACxC,CAAC;qBAAM,CAAC;oBACN,MAAM,CAAC,MAAM,EAAE,CAAC;oBAChB,OAAO,CAAC,KAAK,CAAC,6BAA6B,GAAG,CAAC,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC;oBAClE,+BAA+B;oBAC/B,oBAAoB,CAAC,GAAG,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;gBACxC,CAAC;YACH,CAAC;YAAC,MAAM,CAAC;gBACP,MAAM,CAAC,MAAM,EAAE,CAAC;gBAChB,aAAa;gBACb,oBAAoB,CAAC,GAAG,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;YACxC,CAAC;QACH,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,gBAAgB,EAAE,KAAK,CAAC,CAAC;IACzC,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
package/dist/index.d.ts
ADDED
package/dist/index.js
ADDED
|
@@ -0,0 +1,213 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import { program } from "commander";
|
|
3
|
+
import chalk from "chalk";
|
|
4
|
+
import fs from "fs";
|
|
5
|
+
import path from "path";
|
|
6
|
+
import os from "os";
|
|
7
|
+
import { loadConfig, globalConfigExists, GLOBAL_CONFIG_PATH, listProfiles } from "./config.js";
|
|
8
|
+
import { runSetup, runNewProfile } from "./setup.js";
|
|
9
|
+
import { startApp, listRunningProcesses } from "./app.js";
|
|
10
|
+
import { logger } from "./logger.js";
|
|
11
|
+
import { clearSession, initSession } from "./session.js";
|
|
12
|
+
function printBanner(version) {
|
|
13
|
+
console.log(chalk.cyan(`
|
|
14
|
+
██╗ █████╗ ██████╗ ██╗ ██╗ ██████╗ ██████╗
|
|
15
|
+
██║ ██╔══██╗██╔══██╗██║ ██╔╝██╔════╝██╔════╝
|
|
16
|
+
██║ ███████║██████╔╝█████╔╝ ██║ ██║
|
|
17
|
+
██║ ██╔══██║██╔══██╗██╔═██╗ ██║ ██║
|
|
18
|
+
███████╗██║ ██║██║ ██║██║ ██╗╚██████╗╚██████╗
|
|
19
|
+
╚══════╝╚═╝ ╚═╝╚═╝ ╚═╝╚═╝ ╚═╝ ╚═════╝ ╚═════╝
|
|
20
|
+
`));
|
|
21
|
+
console.log(chalk.gray(` Claude Code in Feishu v${version}\n`));
|
|
22
|
+
}
|
|
23
|
+
program
|
|
24
|
+
.name("larkcc")
|
|
25
|
+
.description("Claude Code in Feishu — chat with Claude via Lark bot")
|
|
26
|
+
.version("0.1.0")
|
|
27
|
+
.option("-d, --daemon", "run as background process")
|
|
28
|
+
.option("-c, --continue", "resume last Claude session")
|
|
29
|
+
.option("-p, --profile <name>", "use a specific Feishu bot profile")
|
|
30
|
+
.option("--setup", "reconfigure current profile")
|
|
31
|
+
.option("--new-profile", "add a new Feishu bot profile")
|
|
32
|
+
.option("--list-profiles", "list all configured profiles")
|
|
33
|
+
.option("--reset-session", "clear saved Claude session")
|
|
34
|
+
.option("--ps", "list running larkcc processes")
|
|
35
|
+
.option("--cleanup-tmp-files", "clean up temporary files")
|
|
36
|
+
.option("--older-than <hours>", "only clean files older than N hours", "0")
|
|
37
|
+
.option("--all", "clean temp files for all profiles")
|
|
38
|
+
.parse(process.argv);
|
|
39
|
+
const opts = program.opts();
|
|
40
|
+
const cwd = process.cwd();
|
|
41
|
+
const profile = opts.profile;
|
|
42
|
+
// daemon 模式
|
|
43
|
+
if (opts.daemon) {
|
|
44
|
+
const { spawn } = await import("child_process");
|
|
45
|
+
const args = process.argv.slice(1).filter(a => !["-d", "--daemon"].includes(a));
|
|
46
|
+
const child = spawn(process.execPath, args, { detached: true, stdio: "ignore" });
|
|
47
|
+
child.unref();
|
|
48
|
+
logger.success(`larkcc started in background (pid: ${child.pid})`);
|
|
49
|
+
process.exit(0);
|
|
50
|
+
}
|
|
51
|
+
// list profiles
|
|
52
|
+
if (opts.listProfiles) {
|
|
53
|
+
const profiles = listProfiles();
|
|
54
|
+
if (profiles.length === 0) {
|
|
55
|
+
logger.warn("No profiles configured. Run: larkcc --setup");
|
|
56
|
+
}
|
|
57
|
+
else {
|
|
58
|
+
console.log("\nAvailable profiles:");
|
|
59
|
+
for (const p of profiles) {
|
|
60
|
+
const tag = p.name === "default" ? chalk.gray("(default)") : "";
|
|
61
|
+
console.log(` ${chalk.cyan(p.name.padEnd(16))} ${chalk.gray(p.app_id)} ${tag}`);
|
|
62
|
+
}
|
|
63
|
+
console.log();
|
|
64
|
+
}
|
|
65
|
+
process.exit(0);
|
|
66
|
+
}
|
|
67
|
+
// list running processes
|
|
68
|
+
if (opts.ps) {
|
|
69
|
+
const { processes, cleaned } = listRunningProcesses();
|
|
70
|
+
if (cleaned.length > 0) {
|
|
71
|
+
for (const profile of cleaned) {
|
|
72
|
+
console.log(chalk.yellow(`Cleaned stale lock: ${profile} (process already dead)`));
|
|
73
|
+
}
|
|
74
|
+
console.log();
|
|
75
|
+
}
|
|
76
|
+
if (processes.length === 0) {
|
|
77
|
+
console.log(chalk.gray("No running larkcc processes."));
|
|
78
|
+
}
|
|
79
|
+
else {
|
|
80
|
+
console.log("\nRunning larkcc processes:\n");
|
|
81
|
+
console.log(" Profile PID Directory Started Mode");
|
|
82
|
+
console.log(" " + "─".repeat(90));
|
|
83
|
+
for (const p of processes) {
|
|
84
|
+
const profile = p.profile.padEnd(16);
|
|
85
|
+
const pid = String(p.pid).padEnd(8);
|
|
86
|
+
const cwd = p.cwd.length > 32 ? "…" + p.cwd.slice(-31) : p.cwd.padEnd(32);
|
|
87
|
+
const started = new Date(p.startedAt).toLocaleString("zh-CN", {
|
|
88
|
+
month: "2-digit",
|
|
89
|
+
day: "2-digit",
|
|
90
|
+
hour: "2-digit",
|
|
91
|
+
minute: "2-digit",
|
|
92
|
+
}).replace(/\//g, "-").padEnd(12);
|
|
93
|
+
const mode = p.isContinue ? chalk.cyan("continue") : "new ";
|
|
94
|
+
console.log(` ${chalk.cyan(profile)} ${pid} ${chalk.gray(cwd)} ${started} ${mode}`);
|
|
95
|
+
}
|
|
96
|
+
console.log();
|
|
97
|
+
}
|
|
98
|
+
process.exit(0);
|
|
99
|
+
}
|
|
100
|
+
// cleanup temp files
|
|
101
|
+
if (opts.cleanupTmpFiles) {
|
|
102
|
+
const baseTempDir = path.join(os.homedir(), ".larkcc", "temp");
|
|
103
|
+
const olderThanHours = parseFloat(opts.olderThan) || 0;
|
|
104
|
+
const olderThanMs = olderThanHours * 60 * 60 * 1000;
|
|
105
|
+
const cutoffTime = Date.now() - olderThanMs;
|
|
106
|
+
let deletedCount = 0;
|
|
107
|
+
let deletedSize = 0;
|
|
108
|
+
let errorCount = 0;
|
|
109
|
+
const profilesToClean = [];
|
|
110
|
+
if (opts.all) {
|
|
111
|
+
// 清理所有 profile
|
|
112
|
+
if (fs.existsSync(baseTempDir)) {
|
|
113
|
+
const dirs = fs.readdirSync(baseTempDir, { withFileTypes: true });
|
|
114
|
+
for (const dir of dirs) {
|
|
115
|
+
if (dir.isDirectory()) {
|
|
116
|
+
profilesToClean.push(dir.name);
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
else {
|
|
122
|
+
// 只清理当前 profile
|
|
123
|
+
profilesToClean.push(profile ?? "default");
|
|
124
|
+
}
|
|
125
|
+
console.log(chalk.cyan(`\nCleaning temporary files...`));
|
|
126
|
+
if (olderThanHours > 0) {
|
|
127
|
+
console.log(chalk.gray(` Filter: older than ${olderThanHours} hours`));
|
|
128
|
+
}
|
|
129
|
+
console.log(chalk.gray(` Profiles: ${profilesToClean.join(", ")}\n`));
|
|
130
|
+
for (const profileName of profilesToClean) {
|
|
131
|
+
const tempDir = path.join(baseTempDir, profileName);
|
|
132
|
+
if (!fs.existsSync(tempDir)) {
|
|
133
|
+
console.log(chalk.gray(` ${profileName}: (no temp directory)`));
|
|
134
|
+
continue;
|
|
135
|
+
}
|
|
136
|
+
let profileDeleted = 0;
|
|
137
|
+
let profileSize = 0;
|
|
138
|
+
const files = fs.readdirSync(tempDir, { withFileTypes: true });
|
|
139
|
+
for (const file of files) {
|
|
140
|
+
if (!file.isFile())
|
|
141
|
+
continue;
|
|
142
|
+
const filePath = path.join(tempDir, file.name);
|
|
143
|
+
try {
|
|
144
|
+
const stat = fs.statSync(filePath);
|
|
145
|
+
if (olderThanMs > 0 && stat.mtimeMs > cutoffTime) {
|
|
146
|
+
continue; // 文件不够旧,跳过
|
|
147
|
+
}
|
|
148
|
+
const size = stat.size;
|
|
149
|
+
fs.unlinkSync(filePath);
|
|
150
|
+
profileDeleted++;
|
|
151
|
+
profileSize += size;
|
|
152
|
+
}
|
|
153
|
+
catch (e) {
|
|
154
|
+
errorCount++;
|
|
155
|
+
console.log(chalk.yellow(` Failed to delete: ${file.name}`));
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
deletedCount += profileDeleted;
|
|
159
|
+
deletedSize += profileSize;
|
|
160
|
+
const sizeKB = Math.round(profileSize / 1024);
|
|
161
|
+
console.log(` ${chalk.cyan(profileName)}: ${profileDeleted} files, ${sizeKB}KB`);
|
|
162
|
+
}
|
|
163
|
+
console.log();
|
|
164
|
+
const totalSizeMB = (deletedSize / 1024 / 1024).toFixed(2);
|
|
165
|
+
if (deletedCount > 0) {
|
|
166
|
+
console.log(chalk.green(`✅ Cleaned ${deletedCount} files (${totalSizeMB}MB)`));
|
|
167
|
+
}
|
|
168
|
+
else {
|
|
169
|
+
console.log(chalk.gray("No files to clean"));
|
|
170
|
+
}
|
|
171
|
+
if (errorCount > 0) {
|
|
172
|
+
console.log(chalk.yellow(`⚠️ ${errorCount} files failed to delete`));
|
|
173
|
+
}
|
|
174
|
+
console.log();
|
|
175
|
+
process.exit(0);
|
|
176
|
+
}
|
|
177
|
+
// new profile
|
|
178
|
+
if (opts.newProfile) {
|
|
179
|
+
await runNewProfile();
|
|
180
|
+
process.exit(0);
|
|
181
|
+
}
|
|
182
|
+
// reset session
|
|
183
|
+
if (opts.resetSession) {
|
|
184
|
+
initSession(profile);
|
|
185
|
+
clearSession();
|
|
186
|
+
logger.success(`Session cleared${profile ? ` for profile "${profile}"` : ""}`);
|
|
187
|
+
process.exit(0);
|
|
188
|
+
}
|
|
189
|
+
printBanner("0.1.0");
|
|
190
|
+
// setup
|
|
191
|
+
if (opts.setup) {
|
|
192
|
+
await runSetup(profile);
|
|
193
|
+
}
|
|
194
|
+
// 首次运行引导配置
|
|
195
|
+
let config;
|
|
196
|
+
if (!globalConfigExists()) {
|
|
197
|
+
logger.warn("No config found, running setup...\n");
|
|
198
|
+
await runSetup(undefined);
|
|
199
|
+
}
|
|
200
|
+
try {
|
|
201
|
+
config = loadConfig(cwd, profile);
|
|
202
|
+
}
|
|
203
|
+
catch (err) {
|
|
204
|
+
logger.error(String(err));
|
|
205
|
+
logger.info(`Edit your config: ${GLOBAL_CONFIG_PATH}`);
|
|
206
|
+
if (profile)
|
|
207
|
+
logger.info(`Or add this profile: larkcc --setup -p ${profile}`);
|
|
208
|
+
process.exit(1);
|
|
209
|
+
}
|
|
210
|
+
// 初始化 session(按 profile 隔离)
|
|
211
|
+
initSession(profile);
|
|
212
|
+
await startApp(cwd, config, profile, opts.continue ?? false);
|
|
213
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/logger.d.ts
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export declare const logger: {
|
|
2
|
+
info: (msg: string) => void;
|
|
3
|
+
success: (msg: string) => void;
|
|
4
|
+
warn: (msg: string) => void;
|
|
5
|
+
error: (msg: string) => void;
|
|
6
|
+
tool: (name: string, detail: string) => void;
|
|
7
|
+
msg: (openId: string, text: string) => void;
|
|
8
|
+
reply: (openId: string) => void;
|
|
9
|
+
dim: (msg: string) => void;
|
|
10
|
+
};
|
package/dist/logger.js
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import chalk from "chalk";
|
|
2
|
+
const ts = () => chalk.gray(new Date().toLocaleTimeString());
|
|
3
|
+
export const logger = {
|
|
4
|
+
info: (msg) => console.log(`${ts()} ${chalk.cyan("ℹ")} ${msg}`),
|
|
5
|
+
success: (msg) => console.log(`${ts()} ${chalk.green("✅")} ${msg}`),
|
|
6
|
+
warn: (msg) => console.log(`${ts()} ${chalk.yellow("⚠")} ${msg}`),
|
|
7
|
+
error: (msg) => console.log(`${ts()} ${chalk.red("❌")} ${msg}`),
|
|
8
|
+
tool: (name, detail) => console.log(`${ts()} ${chalk.magenta("🔧")} ${chalk.bold(name)} ${chalk.gray(detail)}`),
|
|
9
|
+
msg: (openId, text) => console.log(`${ts()} ${chalk.blue("💬")} ${chalk.gray(openId)} ${text.slice(0, 60)}${text.length > 60 ? "..." : ""}`),
|
|
10
|
+
reply: (openId) => console.log(`${ts()} ${chalk.green("↩")} replied to ${chalk.gray(openId)}`),
|
|
11
|
+
dim: (msg) => console.log(`${ts()} ${chalk.gray(msg)}`),
|
|
12
|
+
};
|
|
13
|
+
//# sourceMappingURL=logger.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../src/logger.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,MAAM,EAAE,GAAG,GAAG,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC,kBAAkB,EAAE,CAAC,CAAC;AAE7D,MAAM,CAAC,MAAM,MAAM,GAAG;IACpB,IAAI,EAAE,CAAC,GAAW,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,IAAI,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,EAAE,CAAC;IACvE,OAAO,EAAE,CAAC,GAAW,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,IAAI,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,GAAG,EAAE,CAAC;IAC3E,IAAI,EAAE,CAAC,GAAW,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,IAAI,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,GAAG,EAAE,CAAC;IACzE,KAAK,EAAE,CAAC,GAAW,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,IAAI,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,GAAG,EAAE,CAAC;IACvE,IAAI,EAAE,CAAC,IAAY,EAAE,MAAc,EAAE,EAAE,CACrC,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;IACzF,GAAG,EAAE,CAAC,MAAc,EAAE,IAAY,EAAE,EAAE,CACpC,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;IACvH,KAAK,EAAE,CAAC,MAAc,EAAE,EAAE,CACxB,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,IAAI,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,eAAe,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;IAC7E,GAAG,EAAE,CAAC,GAAW,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,IAAI,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;CAChE,CAAC"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 多文件模式状态管理
|
|
3
|
+
*
|
|
4
|
+
* 按 profile + chat_id 隔离多文件会话状态
|
|
5
|
+
*/
|
|
6
|
+
import { DownloadedFile } from "./feishu.js";
|
|
7
|
+
export interface MultiFileItem {
|
|
8
|
+
type: "file" | "text";
|
|
9
|
+
content: DownloadedFile | string;
|
|
10
|
+
timestamp: number;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* 开始多文件模式
|
|
14
|
+
*/
|
|
15
|
+
export declare function startMode(profile: string, chatId: string): void;
|
|
16
|
+
/**
|
|
17
|
+
* 重置多文件模式(清空已缓存的内容,重新开始)
|
|
18
|
+
*/
|
|
19
|
+
export declare function resetMode(profile: string, chatId: string): void;
|
|
20
|
+
/**
|
|
21
|
+
* 添加项目到多文件会话
|
|
22
|
+
*/
|
|
23
|
+
export declare function addItem(profile: string, chatId: string, item: MultiFileItem): void;
|
|
24
|
+
/**
|
|
25
|
+
* 获取多文件会话中的所有项目
|
|
26
|
+
*/
|
|
27
|
+
export declare function getItems(profile: string, chatId: string): MultiFileItem[];
|
|
28
|
+
/**
|
|
29
|
+
* 结束多文件模式并返回所有项目
|
|
30
|
+
*/
|
|
31
|
+
export declare function endMode(profile: string, chatId: string): MultiFileItem[];
|
|
32
|
+
/**
|
|
33
|
+
* 检查是否在多文件模式中
|
|
34
|
+
*/
|
|
35
|
+
export declare function isActive(profile: string, chatId: string): boolean;
|
|
36
|
+
/**
|
|
37
|
+
* 检查多文件模式是否超时
|
|
38
|
+
* @returns 如果超时,返回已缓存的项目;否则返回 null
|
|
39
|
+
*/
|
|
40
|
+
export declare function checkTimeout(profile: string, chatId: string, timeoutSeconds: number): MultiFileItem[] | null;
|
|
41
|
+
/**
|
|
42
|
+
* 获取多文件模式的开始时间
|
|
43
|
+
*/
|
|
44
|
+
export declare function getStartedAt(profile: string, chatId: string): number | null;
|
|
45
|
+
/**
|
|
46
|
+
* 获取已缓存的项目数量
|
|
47
|
+
*/
|
|
48
|
+
export declare function getItemCount(profile: string, chatId: string): number;
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 多文件模式状态管理
|
|
3
|
+
*
|
|
4
|
+
* 按 profile + chat_id 隔离多文件会话状态
|
|
5
|
+
*/
|
|
6
|
+
// 内存存储(按 profile:chat_id 作为 key)
|
|
7
|
+
const sessions = new Map();
|
|
8
|
+
/**
|
|
9
|
+
* 生成 session key
|
|
10
|
+
*/
|
|
11
|
+
function getSessionKey(profile, chatId) {
|
|
12
|
+
return `${profile}:${chatId}`;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* 开始多文件模式
|
|
16
|
+
*/
|
|
17
|
+
export function startMode(profile, chatId) {
|
|
18
|
+
const key = getSessionKey(profile, chatId);
|
|
19
|
+
sessions.set(key, {
|
|
20
|
+
active: true,
|
|
21
|
+
items: [],
|
|
22
|
+
startedAt: Date.now(),
|
|
23
|
+
});
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* 重置多文件模式(清空已缓存的内容,重新开始)
|
|
27
|
+
*/
|
|
28
|
+
export function resetMode(profile, chatId) {
|
|
29
|
+
const key = getSessionKey(profile, chatId);
|
|
30
|
+
sessions.set(key, {
|
|
31
|
+
active: true,
|
|
32
|
+
items: [],
|
|
33
|
+
startedAt: Date.now(),
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* 添加项目到多文件会话
|
|
38
|
+
*/
|
|
39
|
+
export function addItem(profile, chatId, item) {
|
|
40
|
+
const key = getSessionKey(profile, chatId);
|
|
41
|
+
const session = sessions.get(key);
|
|
42
|
+
if (session && session.active) {
|
|
43
|
+
session.items.push(item);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* 获取多文件会话中的所有项目
|
|
48
|
+
*/
|
|
49
|
+
export function getItems(profile, chatId) {
|
|
50
|
+
const key = getSessionKey(profile, chatId);
|
|
51
|
+
const session = sessions.get(key);
|
|
52
|
+
return session?.items ?? [];
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* 结束多文件模式并返回所有项目
|
|
56
|
+
*/
|
|
57
|
+
export function endMode(profile, chatId) {
|
|
58
|
+
const key = getSessionKey(profile, chatId);
|
|
59
|
+
const session = sessions.get(key);
|
|
60
|
+
const items = session?.items ?? [];
|
|
61
|
+
sessions.delete(key);
|
|
62
|
+
return items;
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* 检查是否在多文件模式中
|
|
66
|
+
*/
|
|
67
|
+
export function isActive(profile, chatId) {
|
|
68
|
+
const key = getSessionKey(profile, chatId);
|
|
69
|
+
const session = sessions.get(key);
|
|
70
|
+
return session?.active ?? false;
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* 检查多文件模式是否超时
|
|
74
|
+
* @returns 如果超时,返回已缓存的项目;否则返回 null
|
|
75
|
+
*/
|
|
76
|
+
export function checkTimeout(profile, chatId, timeoutSeconds) {
|
|
77
|
+
const key = getSessionKey(profile, chatId);
|
|
78
|
+
const session = sessions.get(key);
|
|
79
|
+
if (!session || !session.active) {
|
|
80
|
+
return null;
|
|
81
|
+
}
|
|
82
|
+
const elapsed = (Date.now() - session.startedAt) / 1000;
|
|
83
|
+
if (elapsed > timeoutSeconds) {
|
|
84
|
+
// 超时,返回项目并清除会话
|
|
85
|
+
const items = session.items;
|
|
86
|
+
sessions.delete(key);
|
|
87
|
+
return items;
|
|
88
|
+
}
|
|
89
|
+
return null;
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* 获取多文件模式的开始时间
|
|
93
|
+
*/
|
|
94
|
+
export function getStartedAt(profile, chatId) {
|
|
95
|
+
const key = getSessionKey(profile, chatId);
|
|
96
|
+
const session = sessions.get(key);
|
|
97
|
+
return session?.startedAt ?? null;
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* 获取已缓存的项目数量
|
|
101
|
+
*/
|
|
102
|
+
export function getItemCount(profile, chatId) {
|
|
103
|
+
const key = getSessionKey(profile, chatId);
|
|
104
|
+
const session = sessions.get(key);
|
|
105
|
+
return session?.items.length ?? 0;
|
|
106
|
+
}
|
|
107
|
+
//# sourceMappingURL=multifile.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"multifile.js","sourceRoot":"","sources":["../src/multifile.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAkBH,iCAAiC;AACjC,MAAM,QAAQ,GAAG,IAAI,GAAG,EAA4B,CAAC;AAErD;;GAEG;AACH,SAAS,aAAa,CAAC,OAAe,EAAE,MAAc;IACpD,OAAO,GAAG,OAAO,IAAI,MAAM,EAAE,CAAC;AAChC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,SAAS,CAAC,OAAe,EAAE,MAAc;IACvD,MAAM,GAAG,GAAG,aAAa,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IAC3C,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE;QAChB,MAAM,EAAE,IAAI;QACZ,KAAK,EAAE,EAAE;QACT,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;KACtB,CAAC,CAAC;AACL,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,SAAS,CAAC,OAAe,EAAE,MAAc;IACvD,MAAM,GAAG,GAAG,aAAa,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IAC3C,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE;QAChB,MAAM,EAAE,IAAI;QACZ,KAAK,EAAE,EAAE;QACT,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;KACtB,CAAC,CAAC;AACL,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,OAAO,CAAC,OAAe,EAAE,MAAc,EAAE,IAAmB;IAC1E,MAAM,GAAG,GAAG,aAAa,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IAC3C,MAAM,OAAO,GAAG,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAClC,IAAI,OAAO,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;QAC9B,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC3B,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,QAAQ,CAAC,OAAe,EAAE,MAAc;IACtD,MAAM,GAAG,GAAG,aAAa,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IAC3C,MAAM,OAAO,GAAG,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAClC,OAAO,OAAO,EAAE,KAAK,IAAI,EAAE,CAAC;AAC9B,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,OAAO,CAAC,OAAe,EAAE,MAAc;IACrD,MAAM,GAAG,GAAG,aAAa,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IAC3C,MAAM,OAAO,GAAG,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAClC,MAAM,KAAK,GAAG,OAAO,EAAE,KAAK,IAAI,EAAE,CAAC;IACnC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IACrB,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,QAAQ,CAAC,OAAe,EAAE,MAAc;IACtD,MAAM,GAAG,GAAG,aAAa,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IAC3C,MAAM,OAAO,GAAG,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAClC,OAAO,OAAO,EAAE,MAAM,IAAI,KAAK,CAAC;AAClC,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,YAAY,CAAC,OAAe,EAAE,MAAc,EAAE,cAAsB;IAClF,MAAM,GAAG,GAAG,aAAa,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IAC3C,MAAM,OAAO,GAAG,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAElC,IAAI,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;QAChC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,OAAO,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,OAAO,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC;IACxD,IAAI,OAAO,GAAG,cAAc,EAAE,CAAC;QAC7B,eAAe;QACf,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;QAC5B,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACrB,OAAO,KAAK,CAAC;IACf,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,YAAY,CAAC,OAAe,EAAE,MAAc;IAC1D,MAAM,GAAG,GAAG,aAAa,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IAC3C,MAAM,OAAO,GAAG,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAClC,OAAO,OAAO,EAAE,SAAS,IAAI,IAAI,CAAC;AACpC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,YAAY,CAAC,OAAe,EAAE,MAAc;IAC1D,MAAM,GAAG,GAAG,aAAa,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IAC3C,MAAM,OAAO,GAAG,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAClC,OAAO,OAAO,EAAE,KAAK,CAAC,MAAM,IAAI,CAAC,CAAC;AACpC,CAAC"}
|
package/dist/oauth.d.ts
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 飞书 OAuth 授权模块
|
|
3
|
+
* 用于获取 user_access_token 以访问用户的个人云空间
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* 生成授权链接(使用 OOB 方式,无需配置回调地址)
|
|
7
|
+
*/
|
|
8
|
+
export declare function generateAuthUrl(appId: string): string;
|
|
9
|
+
/**
|
|
10
|
+
* 获取有效的 user_access_token
|
|
11
|
+
* - 如果 token 有效,直接返回
|
|
12
|
+
* - 如果 token 过期但 refresh_token 有效,刷新后返回
|
|
13
|
+
* - 如果都过期,返回 null 需要重新授权
|
|
14
|
+
*/
|
|
15
|
+
export declare function getValidUserToken(appId: string, appSecret: string, profile?: string): Promise<string | null>;
|
|
16
|
+
/**
|
|
17
|
+
* 执行 OAuth 授权流程
|
|
18
|
+
*/
|
|
19
|
+
export declare function doOAuthFlow(appId: string, appSecret: string, profile?: string): Promise<string>;
|
package/dist/oauth.js
ADDED
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 飞书 OAuth 授权模块
|
|
3
|
+
* 用于获取 user_access_token 以访问用户的个人云空间
|
|
4
|
+
*/
|
|
5
|
+
import * as readline from "readline";
|
|
6
|
+
import { loadAuthToken, saveAuthToken } from "./config.js";
|
|
7
|
+
// 飞书 OAuth 配置
|
|
8
|
+
const AUTH_URL = "https://open.feishu.cn/open-apis/authen/v1/authorize";
|
|
9
|
+
const TOKEN_URL = "https://open.feishu.cn/open-apis/authen/v2/oauth/token";
|
|
10
|
+
// 所需权限:云文档读写
|
|
11
|
+
const REQUIRED_SCOPES = ["drive:file", "drive:file:upload", "docs:doc", "offline_access"];
|
|
12
|
+
/**
|
|
13
|
+
* 生成授权链接(使用 OOB 方式,无需配置回调地址)
|
|
14
|
+
*/
|
|
15
|
+
export function generateAuthUrl(appId) {
|
|
16
|
+
const params = new URLSearchParams({
|
|
17
|
+
app_id: appId,
|
|
18
|
+
redirect_uri: "urn:ietf:wg:oauth:2.0:oob",
|
|
19
|
+
scope: REQUIRED_SCOPES.join(" "),
|
|
20
|
+
});
|
|
21
|
+
return `${AUTH_URL}?${params.toString()}`;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* 等待用户输入授权码
|
|
25
|
+
*/
|
|
26
|
+
function waitForCodeInput() {
|
|
27
|
+
const rl = readline.createInterface({
|
|
28
|
+
input: process.stdin,
|
|
29
|
+
output: process.stdout,
|
|
30
|
+
});
|
|
31
|
+
return new Promise((resolve, reject) => {
|
|
32
|
+
// 5 分钟超时
|
|
33
|
+
const timeout = setTimeout(() => {
|
|
34
|
+
rl.close();
|
|
35
|
+
reject(new Error("授权超时,请重试"));
|
|
36
|
+
}, 5 * 60 * 1000);
|
|
37
|
+
rl.question("\n请输入浏览器中显示的授权码: ", (code) => {
|
|
38
|
+
clearTimeout(timeout);
|
|
39
|
+
rl.close();
|
|
40
|
+
resolve(code.trim());
|
|
41
|
+
});
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* 用授权码换取 access_token
|
|
46
|
+
*/
|
|
47
|
+
async function exchangeCodeForToken(appId, appSecret, code) {
|
|
48
|
+
const res = await fetch(TOKEN_URL, {
|
|
49
|
+
method: "POST",
|
|
50
|
+
headers: { "Content-Type": "application/json" },
|
|
51
|
+
body: JSON.stringify({
|
|
52
|
+
grant_type: "authorization_code",
|
|
53
|
+
client_id: appId,
|
|
54
|
+
client_secret: appSecret,
|
|
55
|
+
code,
|
|
56
|
+
}),
|
|
57
|
+
});
|
|
58
|
+
const data = await res.json();
|
|
59
|
+
if (data.code !== 0) {
|
|
60
|
+
throw new Error(`获取 token 失败: ${data.msg || JSON.stringify(data)}`);
|
|
61
|
+
}
|
|
62
|
+
const now = Date.now();
|
|
63
|
+
return {
|
|
64
|
+
access_token: data.access_token,
|
|
65
|
+
refresh_token: data.refresh_token,
|
|
66
|
+
expires_at: now + (data.expires_in * 1000),
|
|
67
|
+
refresh_expires_at: now + (data.refresh_token_expires_in * 1000),
|
|
68
|
+
};
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* 刷新 access_token
|
|
72
|
+
*/
|
|
73
|
+
async function refreshAccessToken(appId, appSecret, refreshToken) {
|
|
74
|
+
const res = await fetch(TOKEN_URL, {
|
|
75
|
+
method: "POST",
|
|
76
|
+
headers: { "Content-Type": "application/json" },
|
|
77
|
+
body: JSON.stringify({
|
|
78
|
+
grant_type: "refresh_token",
|
|
79
|
+
client_id: appId,
|
|
80
|
+
client_secret: appSecret,
|
|
81
|
+
refresh_token: refreshToken,
|
|
82
|
+
}),
|
|
83
|
+
});
|
|
84
|
+
const data = await res.json();
|
|
85
|
+
if (data.code !== 0) {
|
|
86
|
+
throw new Error(`刷新 token 失败: ${data.msg || JSON.stringify(data)}`);
|
|
87
|
+
}
|
|
88
|
+
const now = Date.now();
|
|
89
|
+
return {
|
|
90
|
+
access_token: data.access_token,
|
|
91
|
+
refresh_token: data.refresh_token,
|
|
92
|
+
expires_at: now + (data.expires_in * 1000),
|
|
93
|
+
refresh_expires_at: now + (data.refresh_token_expires_in * 1000),
|
|
94
|
+
};
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* 获取有效的 user_access_token
|
|
98
|
+
* - 如果 token 有效,直接返回
|
|
99
|
+
* - 如果 token 过期但 refresh_token 有效,刷新后返回
|
|
100
|
+
* - 如果都过期,返回 null 需要重新授权
|
|
101
|
+
*/
|
|
102
|
+
export async function getValidUserToken(appId, appSecret, profile) {
|
|
103
|
+
const token = loadAuthToken(profile);
|
|
104
|
+
if (!token)
|
|
105
|
+
return null;
|
|
106
|
+
const now = Date.now();
|
|
107
|
+
// access_token 还有效(提前 5 分钟刷新)
|
|
108
|
+
if (token.expires_at > now + 5 * 60 * 1000) {
|
|
109
|
+
return token.access_token;
|
|
110
|
+
}
|
|
111
|
+
// refresh_token 还有效,尝试刷新
|
|
112
|
+
if (token.refresh_expires_at > now) {
|
|
113
|
+
try {
|
|
114
|
+
const newToken = await refreshAccessToken(appId, appSecret, token.refresh_token);
|
|
115
|
+
saveAuthToken(newToken, profile);
|
|
116
|
+
return newToken.access_token;
|
|
117
|
+
}
|
|
118
|
+
catch {
|
|
119
|
+
return null;
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
// 都过期了
|
|
123
|
+
return null;
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* 执行 OAuth 授权流程
|
|
127
|
+
*/
|
|
128
|
+
export async function doOAuthFlow(appId, appSecret, profile) {
|
|
129
|
+
console.log("\n🔐 需要授权访问您的云文档");
|
|
130
|
+
console.log("请在浏览器中打开以下链接进行授权:\n");
|
|
131
|
+
console.log(generateAuthUrl(appId));
|
|
132
|
+
console.log("\n授权后,请将浏览器中显示的授权码粘贴到此处。");
|
|
133
|
+
// 等待用户输入授权码
|
|
134
|
+
const code = await waitForCodeInput();
|
|
135
|
+
console.log("✅ 已获取授权码,正在换取 token...");
|
|
136
|
+
// 换取 token
|
|
137
|
+
const token = await exchangeCodeForToken(appId, appSecret, code);
|
|
138
|
+
saveAuthToken(token, profile);
|
|
139
|
+
console.log("✅ 授权成功!\n");
|
|
140
|
+
return token.access_token;
|
|
141
|
+
}
|
|
142
|
+
//# sourceMappingURL=oauth.js.map
|