@agentrun/sdk 0.0.3 → 0.0.4
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/README.md +20 -15
- package/dist/agent-runtime/api/index.cjs +907 -0
- package/dist/agent-runtime/api/index.cjs.map +1 -0
- package/dist/agent-runtime/api/index.d.cts +193 -0
- package/dist/agent-runtime/api/index.d.ts +193 -0
- package/dist/agent-runtime/api/index.js +882 -0
- package/dist/agent-runtime/api/index.js.map +1 -0
- package/dist/agent-runtime/index.cjs +2528 -0
- package/dist/agent-runtime/index.cjs.map +1 -0
- package/dist/agent-runtime/index.d.cts +778 -0
- package/dist/agent-runtime/index.d.ts +778 -0
- package/dist/agent-runtime/index.js +2496 -0
- package/dist/agent-runtime/index.js.map +1 -0
- package/dist/base-K1GMfJbH.d.ts +59 -0
- package/dist/base-xcWt5bua.d.cts +59 -0
- package/dist/client-DHXxjuo3.d.ts +58 -0
- package/dist/client-DPUTs69s.d.cts +58 -0
- package/dist/config-07gMelJP.d.cts +125 -0
- package/dist/config-07gMelJP.d.ts +125 -0
- package/dist/control-api-BWD4eua5.d.cts +27 -0
- package/dist/control-api-d-82Sgpr.d.ts +27 -0
- package/dist/credential/api/index.cjs +655 -0
- package/dist/credential/api/index.cjs.map +1 -0
- package/dist/credential/api/index.d.cts +93 -0
- package/dist/credential/api/index.d.ts +93 -0
- package/dist/credential/api/index.js +630 -0
- package/dist/credential/api/index.js.map +1 -0
- package/dist/credential/index.cjs +1286 -0
- package/dist/credential/index.cjs.map +1 -0
- package/dist/credential/index.d.cts +246 -0
- package/dist/credential/index.d.ts +246 -0
- package/dist/credential/index.js +1263 -0
- package/dist/credential/index.js.map +1 -0
- package/dist/data-api-B-4h9_Vf.d.ts +166 -0
- package/dist/data-api-DsG-8JRQ.d.cts +166 -0
- package/dist/exception-DM9H2Rpo.d.cts +68 -0
- package/dist/exception-DM9H2Rpo.d.ts +68 -0
- package/dist/index.cjs +29281 -1427
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +38 -4485
- package/dist/index.d.ts +38 -4485
- package/dist/index.js +29259 -1426
- package/dist/index.js.map +1 -1
- package/dist/integration/builtin/index.cjs +9399 -0
- package/dist/integration/builtin/index.cjs.map +1 -0
- package/dist/integration/builtin/index.d.cts +692 -0
- package/dist/integration/builtin/index.d.ts +692 -0
- package/dist/integration/builtin/index.js +9363 -0
- package/dist/integration/builtin/index.js.map +1 -0
- package/dist/integration/index.cjs +9524 -0
- package/dist/integration/index.cjs.map +1 -0
- package/dist/integration/index.d.cts +98 -0
- package/dist/integration/index.d.ts +98 -0
- package/dist/integration/index.js +9481 -0
- package/dist/integration/index.js.map +1 -0
- package/dist/integration/mastra/index.cjs +9383 -0
- package/dist/integration/mastra/index.cjs.map +1 -0
- package/dist/integration/mastra/index.d.cts +186 -0
- package/dist/integration/mastra/index.d.ts +186 -0
- package/dist/integration/mastra/index.js +9348 -0
- package/dist/integration/mastra/index.js.map +1 -0
- package/dist/model/index.cjs +2392 -0
- package/dist/model/index.cjs.map +1 -0
- package/dist/model/index.d.cts +97 -0
- package/dist/model/index.d.ts +97 -0
- package/dist/model/index.js +2368 -0
- package/dist/model/index.js.map +1 -0
- package/dist/model--I90nCqy.d.cts +66 -0
- package/dist/model--I90nCqy.d.ts +66 -0
- package/dist/model-BV7A6Trb.d.cts +512 -0
- package/dist/model-DGBy-o_L.d.cts +176 -0
- package/dist/model-DGBy-o_L.d.ts +176 -0
- package/dist/model-RiiiZnou.d.ts +512 -0
- package/dist/model-service-D-P2FZNi.d.ts +540 -0
- package/dist/model-service-VpzBb7rV.d.cts +540 -0
- package/dist/resource-CQovFUeh.d.cts +44 -0
- package/dist/resource-DnE_DEka.d.ts +44 -0
- package/dist/sandbox/index.cjs +3557 -0
- package/dist/sandbox/index.cjs.map +1 -0
- package/dist/sandbox/index.d.cts +1598 -0
- package/dist/sandbox/index.d.ts +1598 -0
- package/dist/sandbox/index.js +3532 -0
- package/dist/sandbox/index.js.map +1 -0
- package/dist/server/adapter/index.cjs +24886 -0
- package/dist/server/adapter/index.cjs.map +1 -0
- package/dist/server/adapter/index.d.cts +68 -0
- package/dist/server/adapter/index.d.ts +68 -0
- package/dist/server/adapter/index.js +24883 -0
- package/dist/server/adapter/index.js.map +1 -0
- package/dist/server/core/index.cjs +313 -0
- package/dist/server/core/index.cjs.map +1 -0
- package/dist/server/core/index.d.cts +58 -0
- package/dist/server/core/index.d.ts +58 -0
- package/dist/server/core/index.js +309 -0
- package/dist/server/core/index.js.map +1 -0
- package/dist/server/index.cjs +25098 -0
- package/dist/server/index.cjs.map +1 -0
- package/dist/server/index.d.cts +73 -0
- package/dist/server/index.d.ts +73 -0
- package/dist/server/index.js +25067 -0
- package/dist/server/index.js.map +1 -0
- package/dist/server/protocol/index.cjs +1057 -0
- package/dist/server/protocol/index.cjs.map +1 -0
- package/dist/server/protocol/index.d.cts +135 -0
- package/dist/server/protocol/index.d.ts +135 -0
- package/dist/server/protocol/index.js +1053 -0
- package/dist/server/protocol/index.js.map +1 -0
- package/dist/tool-CG0LY-ov.d.cts +155 -0
- package/dist/tool-JJHam0ms.d.ts +155 -0
- package/dist/toolset/api/index.cjs +754 -0
- package/dist/toolset/api/index.cjs.map +1 -0
- package/dist/toolset/api/index.d.cts +207 -0
- package/dist/toolset/api/index.d.ts +207 -0
- package/dist/toolset/api/index.js +727 -0
- package/dist/toolset/api/index.js.map +1 -0
- package/dist/toolset/index.cjs +1945 -0
- package/dist/toolset/index.cjs.map +1 -0
- package/dist/toolset/index.d.cts +182 -0
- package/dist/toolset/index.d.ts +182 -0
- package/dist/toolset/index.js +1920 -0
- package/dist/toolset/index.js.map +1 -0
- package/dist/toolset-BYDvhwRp.d.cts +394 -0
- package/dist/toolset-CSRsJxCb.d.ts +394 -0
- package/dist/utils/index.cjs +994 -0
- package/dist/utils/index.cjs.map +1 -0
- package/dist/utils/index.d.cts +30 -0
- package/dist/utils/index.d.ts +30 -0
- package/dist/utils/index.js +951 -0
- package/dist/utils/index.js.map +1 -0
- package/package.json +65 -13
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/utils/log.ts","../../src/utils/version-check.ts","../../src/utils/config.ts","../../src/utils/exception.ts","../../src/utils/control-api.ts","../../src/sandbox/api/control.ts","../../src/sandbox/api/sandbox-data.ts","../../src/sandbox/api/browser-data.ts","../../src/utils/model.ts","../../src/sandbox/model.ts","../../src/sandbox/api/code-interpreter-data.ts","../../src/sandbox/api/aio-data.ts","../../src/utils/data-api.ts","../../src/utils/index.ts","../../src/utils/resource.ts","../../src/sandbox/code-interpreter-sandbox.ts","../../src/sandbox/browser-sandbox.ts","../../src/sandbox/custom-sandbox.ts","../../src/sandbox/sandbox.ts","../../src/sandbox/aio-sandbox.ts","../../src/sandbox/template.ts","../../src/sandbox/client.ts","../../src/sandbox/index.ts"],"names":["fp","config","$AgentRun","$AgentRun2","path","$AgentRun3","$Util2","fs","init_model","TemplateType","SandboxState","TemplateNetworkMode","TemplateOSSPermission","CodeLanguage","SandboxClient","CodeInterpreterSandbox","BrowserSandbox","AioSandbox","CustomSandbox"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,IASM,UAAA,EAOA,QAWA,MAAA,EAmMO,MAAA;AA9Nb,IAAA,QAAA,GAAA,KAAA,CAAA;AAAA,EAAA,kBAAA,GAAA;AASA,IAAM,UAAA,GAAuC;AAAA,MAC3C,KAAA,EAAO,CAAA;AAAA,MACP,IAAA,EAAM,CAAA;AAAA,MACN,IAAA,EAAM,CAAA;AAAA,MACN,KAAA,EAAO;AAAA,KACT;AAEA,IAAM,MAAA,GAAS;AAAA,MACb,KAAA,EAAO,SAAA;AAAA,MACP,MAAA,EAAQ,SAAA;AAAA,MACR,GAAA,EAAK,SAAA;AAAA,MACL,MAAA,EAAQ,SAAA;AAAA,MACR,IAAA,EAAM,UAAA;AAAA,MACN,IAAA,EAAM,UAAA;AAAA,MACN,MAAA,EAAQ,UAAA;AAAA,MACR,GAAA,EAAK;AAAA,KACP;AAEA,IAAM,SAAN,MAAa;AAAA,MACH,KAAA,GAAkB,MAAA;AAAA;AAAA,MAElB,MAAA,GAAS,iBAAA;AAAA,MAEjB,SAAS,KAAA,EAAuB;AAC9B,QAAA,IAAA,CAAK,KAAA,GAAQ,KAAA;AAAA,MACf;AAAA,MAEQ,UAAU,KAAA,EAA0B;AAC1C,QAAA,OAAO,UAAA,CAAW,KAAK,CAAA,IAAK,UAAA,CAAW,KAAK,KAAK,CAAA;AAAA,MACnD;AAAA,MAEQ,SAAS,KAAA,EAAyB;AACxC,QAAA,QAAQ,KAAA;AAAO,UACb,KAAK,OAAA;AACH,YAAA,OAAO,MAAA,CAAO,IAAA;AAAA,UAChB,KAAK,MAAA;AACH,YAAA,OAAO,MAAA,CAAO,IAAA;AAAA,UAChB,KAAK,MAAA;AACH,YAAA,OAAO,MAAA,CAAO,MAAA;AAAA,UAChB,KAAK,OAAA;AACH,YAAA,OAAO,MAAA,CAAO,GAAA;AAAA,UAChB;AACE,YAAA,OAAO,MAAA,CAAO,KAAA;AAAA;AAClB,MACF;AAAA;AAAA,MAGQ,eAAA,CAAgB,CAAA,mBAAI,IAAI,IAAA,EAAK,EAAW;AAC9C,QAAA,MAAM,GAAA,GAAM,CAAC,CAAA,EAAW,EAAA,GAAK,CAAA,KAAM,EAAE,QAAA,EAAS,CAAE,QAAA,CAAS,EAAA,EAAI,GAAG,CAAA;AAChE,QAAA,MAAM,IAAA,GAAO,EAAE,WAAA,EAAY;AAC3B,QAAA,MAAM,KAAA,GAAQ,GAAA,CAAI,CAAA,CAAE,QAAA,KAAa,CAAC,CAAA;AAClC,QAAA,MAAM,GAAA,GAAM,GAAA,CAAI,CAAA,CAAE,OAAA,EAAS,CAAA;AAC3B,QAAA,MAAM,IAAA,GAAO,GAAA,CAAI,CAAA,CAAE,QAAA,EAAU,CAAA;AAC7B,QAAA,MAAM,MAAA,GAAS,GAAA,CAAI,CAAA,CAAE,UAAA,EAAY,CAAA;AACjC,QAAA,MAAM,MAAA,GAAS,GAAA,CAAI,CAAA,CAAE,UAAA,EAAY,CAAA;AACjC,QAAA,MAAM,EAAA,GAAK,GAAA,CAAI,CAAA,CAAE,eAAA,IAAmB,CAAC,CAAA;AACrC,QAAA,OAAO,CAAA,EAAG,IAAI,CAAA,CAAA,EAAI,KAAK,CAAA,CAAA,EAAI,GAAG,CAAA,CAAA,EAAI,IAAI,CAAA,CAAA,EAAI,MAAM,CAAA,CAAA,EAAI,MAAM,IAAI,EAAE,CAAA,CAAA;AAAA,MAClE;AAAA;AAAA;AAAA,MAIQ,WAAW,KAAA,EAAe;AAChC,QAAA,MAAM,CAAA,GAAI,KAAA,CAAM,KAAA,CAAM,iDAAiD,CAAA;AACvE,QAAA,IAAI,CAAC,GAAG,OAAO,IAAA;AACf,QAAA,OAAO;AAAA,UACL,YAAA,EAAc,EAAE,CAAC,CAAA,GAAI,EAAE,CAAC,CAAA,CAAE,MAAK,GAAI,MAAA;AAAA,UACnC,QAAA,EAAU,EAAE,CAAC,CAAA;AAAA,UACb,IAAA,EAAM,QAAA,CAAS,CAAA,CAAE,CAAC,GAAG,EAAE;AAAA,SACzB;AAAA,MACF;AAAA;AAAA,MAGQ,iBAAA,GAA0D;AAChE,QAAA,MAAM,GAAA,GAAM,IAAI,KAAA,EAAM;AACtB,QAAA,MAAM,QAAQ,GAAA,CAAI,KAAA;AAClB,QAAA,IAAI,CAAC,KAAA,EAAO,OAAO,EAAC;AACpB,QAAA,MAAM,KAAA,GAAQ,MAAM,KAAA,CAAM,IAAI,EAAE,GAAA,CAAI,CAAA,CAAA,KAAK,CAAA,CAAE,IAAA,EAAM,CAAA;AAGjD,QAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,KAAA,CAAM,QAAQ,CAAA,EAAA,EAAK;AACrC,UAAA,IAAI,MAAA,GAAS,IAAA,CAAK,UAAA,CAAW,KAAA,CAAM,CAAC,CAAC,CAAA;AAErC,UAAA,IAAI,CAAC,MAAA,EAAQ;AACX,YAAA,MAAM,CAAA,GAAI,KAAA,CAAM,CAAC,CAAA,CAAE,MAAM,qBAAqB,CAAA;AAC9C,YAAA,IAAI,CAAA,EAAG;AACL,cAAA,MAAM,KAAA,GAAQ,CAAA,CAAE,CAAC,CAAA,CAAE,MAAM,GAAG,CAAA;AAC5B,cAAA,KAAA,CAAM,GAAA,EAAI;AACV,cAAA,MAAM,EAAA,GAAK,MAAA,CAAO,KAAA,CAAM,GAAA,EAAK,CAAA;AAC7B,cAAA,MAAMA,GAAAA,GAAK,KAAA,CAAM,IAAA,CAAK,GAAG,CAAA;AACzB,cAAA,MAAA,GAAS,EAAE,QAAA,EAAUA,GAAAA,EAAI,IAAA,EAAM,EAAA,EAAI,cAAc,MAAA,EAAU;AAAA,YAC7D;AAAA,UACF;AACA,UAAA,IAAI,CAAC,MAAA,EAAQ;AACb,UAAA,MAAM,KAAK,MAAA,CAAO,QAAA;AAClB,UAAA,IACE,EAAA,CAAG,QAAA,CAAS,cAAc,CAAA,IAC1B,GAAG,QAAA,CAAS,UAAU,CAAA,IACtB,EAAA,CAAG,QAAA,CAAS,aAAa,CAAA,IACzB,EAAA,CAAG,SAAS,QAAQ,CAAA;AAEpB,YAAA;AAEF,UAAA,OAAO,EAAE,QAAA,EAAU,MAAA,CAAO,QAAA,EAAU,IAAA,EAAM,OAAO,IAAA,EAAK;AAAA,QACxD;AAEA,QAAA,MAAM,GAAA,GAAM,QAAQ,GAAA,EAAI;AACxB,QAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,KAAA,CAAM,QAAQ,CAAA,EAAA,EAAK;AACrC,UAAA,IAAI,MAAA,GAAS,IAAA,CAAK,UAAA,CAAW,KAAA,CAAM,CAAC,CAAC,CAAA;AACrC,UAAA,IAAI,CAAC,MAAA,EAAQ;AACX,YAAA,MAAM,CAAA,GAAI,KAAA,CAAM,CAAC,CAAA,CAAE,MAAM,qBAAqB,CAAA;AAC9C,YAAA,IAAI,CAAA,EAAG;AACL,cAAA,MAAM,KAAA,GAAQ,CAAA,CAAE,CAAC,CAAA,CAAE,MAAM,GAAG,CAAA;AAC5B,cAAA,KAAA,CAAM,GAAA,EAAI;AACV,cAAA,MAAM,EAAA,GAAK,MAAA,CAAO,KAAA,CAAM,GAAA,EAAK,CAAA;AAC7B,cAAA,MAAMA,GAAAA,GAAK,KAAA,CAAM,IAAA,CAAK,GAAG,CAAA;AACzB,cAAA,MAAA,GAAS,EAAE,QAAA,EAAUA,GAAAA,EAAI,IAAA,EAAM,EAAA,EAAI,cAAc,MAAA,EAAU;AAAA,YAC7D;AAAA,UACF;AACA,UAAA,IAAI,CAAC,MAAA,EAAQ;AACb,UAAA,MAAM,KAAK,MAAA,CAAO,QAAA;AAClB,UAAA,IACE,EAAA,CAAG,QAAA,CAAS,cAAc,CAAA,IAC1B,GAAG,QAAA,CAAS,UAAU,CAAA,IACtB,EAAA,CAAG,QAAA,CAAS,aAAa,CAAA,IACzB,EAAA,CAAG,SAAS,QAAQ,CAAA;AAEpB,YAAA;AACF,UAAA,IAAI,EAAA,CAAG,QAAA,CAAS,mBAAmB,CAAA,EAAG;AACtC,UAAA,IAAI,EAAA,CAAG,UAAA,CAAW,GAAG,CAAA,EAAG,OAAO,EAAE,QAAA,EAAU,MAAA,CAAO,QAAA,EAAU,IAAA,EAAM,MAAA,CAAO,IAAA,EAAK;AAAA,QAChF;AAEA,QAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,KAAA,CAAM,QAAQ,CAAA,EAAA,EAAK;AACrC,UAAA,IAAI,MAAA,GAAS,IAAA,CAAK,UAAA,CAAW,KAAA,CAAM,CAAC,CAAC,CAAA;AACrC,UAAA,IAAI,CAAC,MAAA,EAAQ;AACX,YAAA,MAAM,CAAA,GAAI,KAAA,CAAM,CAAC,CAAA,CAAE,MAAM,qBAAqB,CAAA;AAC9C,YAAA,IAAI,CAAA,EAAG;AACL,cAAA,MAAM,KAAA,GAAQ,CAAA,CAAE,CAAC,CAAA,CAAE,MAAM,GAAG,CAAA;AAC5B,cAAA,KAAA,CAAM,GAAA,EAAI;AACV,cAAA,MAAM,EAAA,GAAK,MAAA,CAAO,KAAA,CAAM,GAAA,EAAK,CAAA;AAC7B,cAAA,MAAMA,GAAAA,GAAK,KAAA,CAAM,IAAA,CAAK,GAAG,CAAA;AACzB,cAAA,MAAA,GAAS,EAAE,QAAA,EAAUA,GAAAA,EAAI,IAAA,EAAM,EAAA,EAAI,cAAc,MAAA,EAAU;AAAA,YAC7D;AAAA,UACF;AACA,UAAA,IAAI,CAAC,MAAA,EAAQ;AACb,UAAA,MAAM,KAAK,MAAA,CAAO,QAAA;AAClB,UAAA,IACE,EAAA,CAAG,QAAA,CAAS,cAAc,CAAA,IAC1B,GAAG,QAAA,CAAS,UAAU,CAAA,IACtB,EAAA,CAAG,QAAA,CAAS,aAAa,CAAA,IACzB,EAAA,CAAG,SAAS,QAAQ,CAAA;AAEpB,YAAA;AACF,UAAA,IAAI,EAAA,CAAG,QAAA,CAAS,mBAAmB,CAAA,EAAG;AACtC,UAAA,OAAO,EAAE,QAAA,EAAU,MAAA,CAAO,QAAA,EAAU,IAAA,EAAM,OAAO,IAAA,EAAK;AAAA,QACxD;AACA,QAAA,OAAO,EAAC;AAAA,MACV;AAAA,MAEQ,aAAA,CACN,KAAA,EACA,OAAA,EACA,QAAA,EACA,IAAA,EACQ;AACR,QAAA,MAAM,SAAA,GAAY,KAAK,eAAA,EAAgB;AACvC,QAAA,MAAM,KAAA,GAAQ,IAAA,CAAK,QAAA,CAAS,KAAK,CAAA;AACjC,QAAA,MAAM,QAAQ,MAAA,CAAO,KAAA;AAKrB,QAAA,MAAM,SAAA,GAAY,KAAA,KAAU,MAAA,GAAS,SAAA,GAAY,MAAM,WAAA,EAAY;AACnE,QAAA,MAAM,QAAA,GAAW,GAAG,MAAA,CAAO,MAAM,GAAG,KAAK,CAAA,EAAG,SAAS,CAAA,EAAG,KAAK,CAAA,CAAA;AAC7D,QAAA,MAAM,UAAU,CAAA,EAAG,KAAK,IAAI,IAAA,CAAK,MAAM,IAAI,KAAK,CAAA,CAAA;AAChD,QAAA,MAAM,QAAQ,CAAA,EAAG,KAAK,CAAA,CAAA,EAAI,SAAS,GAAG,KAAK,CAAA,CAAA;AAC3C,QAAA,MAAM,WACJ,QAAA,IAAY,IAAA,KAAS,MAAA,GACjB,CAAA,CAAA,EAAI,OAAO,GAAG,CAAA,EAAG,MAAA,CAAO,MAAM,GAAG,QAAQ,CAAA,CAAA,EAAI,IAAI,CAAA,EAAG,KAAK,CAAA,CAAA,GACzD,EAAA;AACN,QAAA,MAAM,GAAA,GAAM,KAAA,KAAU,OAAA,GAAU,CAAA,EAAG,MAAA,CAAO,GAAG,CAAA,EAAG,OAAO,CAAA,EAAG,KAAK,CAAA,CAAA,GAAK,OAAA;AAEpE,QAAA,OAAO;AAAA,EAAK,QAAQ,CAAA,CAAA,EAAI,OAAO,CAAA,EAAG,KAAK,GAAG,QAAQ;AAAA,EAAK,GAAG;AAAA,CAAA;AAAA,MAC5D;AAAA,MAEA,KAAA,CAAM,YAAoB,IAAA,EAAuB;AAC/C,QAAA,IAAI,IAAA,CAAK,SAAA,CAAU,OAAO,CAAA,EAAG;AAC3B,UAAA,MAAM,MAAA,GAAS,KAAK,iBAAA,EAAkB;AACtC,UAAA,OAAA,CAAQ,KAAA,CAAM,IAAA,CAAK,aAAA,CAAc,OAAA,EAAS,OAAA,EAAS,MAAA,CAAO,QAAA,EAAU,MAAA,CAAO,IAAI,CAAA,EAAG,GAAG,IAAI,CAAA;AAAA,QAC3F;AAAA,MACF;AAAA,MAEA,IAAA,CAAK,YAAoB,IAAA,EAAuB;AAC9C,QAAA,IAAI,IAAA,CAAK,SAAA,CAAU,MAAM,CAAA,EAAG;AAC1B,UAAA,MAAM,MAAA,GAAS,KAAK,iBAAA,EAAkB;AACtC,UAAA,OAAA,CAAQ,IAAA,CAAK,IAAA,CAAK,aAAA,CAAc,MAAA,EAAQ,OAAA,EAAS,MAAA,CAAO,QAAA,EAAU,MAAA,CAAO,IAAI,CAAA,EAAG,GAAG,IAAI,CAAA;AAAA,QACzF;AAAA,MACF;AAAA,MAEA,IAAA,CAAK,YAAoB,IAAA,EAAuB;AAC9C,QAAA,IAAI,IAAA,CAAK,SAAA,CAAU,MAAM,CAAA,EAAG;AAC1B,UAAA,MAAM,MAAA,GAAS,KAAK,iBAAA,EAAkB;AACtC,UAAA,OAAA,CAAQ,IAAA,CAAK,IAAA,CAAK,aAAA,CAAc,MAAA,EAAQ,OAAA,EAAS,MAAA,CAAO,QAAA,EAAU,MAAA,CAAO,IAAI,CAAA,EAAG,GAAG,IAAI,CAAA;AAAA,QACzF;AAAA,MACF;AAAA,MAEA,KAAA,CAAM,YAAoB,IAAA,EAAuB;AAC/C,QAAA,IAAI,IAAA,CAAK,SAAA,CAAU,OAAO,CAAA,EAAG;AAC3B,UAAA,MAAM,MAAA,GAAS,KAAK,iBAAA,EAAkB;AACtC,UAAA,OAAA,CAAQ,KAAA,CAAM,IAAA,CAAK,aAAA,CAAc,OAAA,EAAS,OAAA,EAAS,MAAA,CAAO,QAAA,EAAU,MAAA,CAAO,IAAI,CAAA,EAAG,GAAG,IAAI,CAAA;AAAA,QAC3F;AAAA,MACF;AAAA,KACF;AAEO,IAAM,MAAA,GAAS,IAAI,MAAA,EAAO;AACjC,IAAA,IACE,CAAC,CAAC,MAAA,EAAW,IAAA,EAAM,IAAI,OAAA,EAAS,OAAA,EAAS,OAAA,EAAS,GAAG,EAAE,QAAA,CAAS,OAAA,CAAQ,GAAA,CAAI,oBAAoB,CAAC,CAAA,EACjG;AACA,MAAA,MAAA,CAAO,SAAS,OAAO,CAAA;AAEvB,MAAA,IAAI,CAAE,WAAmB,sBAAA,EAAwB;AAC/C,QAAA,MAAA,CAAO,KAAK,qIAAqD,CAAA;AACjE,QAAC,WAAmB,sBAAA,GAAyB,IAAA;AAAA,MAC/C;AAAA,IACF,CAAA,MAAO;AACL,MAAA,MAAA,CAAO,SAAS,MAAM,CAAA;AAAA,IACxB;AAAA,EAAA;AAAA,CAAA,CAAA;;;AC1OA,IAEa,OAAA;AAFb,IAAA,kBAAA,GAAA,KAAA,CAAA;AAAA,EAAA,4BAAA,GAAA;AAGA,IAAA,QAAA,EAAA;AADO,IAAM,OAAA,GAA+C,OAAA,CAAc;AAG1E,IAAA,IACE,CAAC,OAAA,CAAQ,GAAA,CAAI,gCAAA,IACb,CAAE,WAAmB,+BAAA,EACrB;AACA,MAAC,WAAmB,+BAAA,GAAkC,IAAA;AACtD,MAAA,MAAA,CAAO,IAAA;AAAA,QACL,+EAAkC,OAAO,CAAA;AAAA,oDAAA,EACS,OAAO,CAAA;AAAA,sCAAA,EACrB,OAAO,CAAA;;AAAA;AAAA;AAAA;AAAA,yFAAA;AAAA,OAM7C;AAAA,IACF;AAAA,EAAA;AAAA,CAAA,CAAA;ACLA,SAAS,iBAAA,CAAkB,iBAAyB,IAAA,EAAwB;AAC1E,EAAA,KAAA,MAAW,OAAO,IAAA,EAAM;AACtB,IAAA,MAAM,KAAA,GAAQ,OAAA,CAAQ,GAAA,CAAI,GAAG,CAAA;AAC7B,IAAA,IAAI,KAAA,KAAU,MAAA,IAAa,KAAA,KAAU,EAAA,EAAI;AACvC,MAAA,OAAO,KAAA;AAAA,IACT;AAAA,EACF;AACA,EAAA,OAAO,YAAA;AACT;AAvBA,IAqHa,MAAA;AArHb,IAAA,WAAA,GAAA,KAAA,CAAA;AAAA,EAAA,qBAAA,GAAA;AAUA,IAAO,MAAA,CAAA,MAAA,EAAO;AA2GP,IAAM,MAAA,GAAN,MAAM,OAAA,CAAO;AAAA,MACV,YAAA;AAAA,MACA,gBAAA;AAAA,MACA,cAAA;AAAA,MACA,UAAA;AAAA,MACA,MAAA;AAAA,MACA,SAAA;AAAA,MACA,QAAA;AAAA,MACA,YAAA;AAAA,MACA,gBAAA;AAAA,MACA,aAAA;AAAA,MACA,aAAA;AAAA,MACA,QAAA;AAAA,MAER,WAAA,CAAY,OAAA,GAAyB,EAAC,EAAG;AACvC,QAAA,IAAA,CAAK,eACH,OAAA,CAAQ,WAAA,IACR,iBAAA,CAAkB,EAAA,EAAI,0BAA0B,6BAA6B,CAAA;AAE/E,QAAA,IAAA,CAAK,mBACH,OAAA,CAAQ,eAAA,IACR,iBAAA,CAAkB,EAAA,EAAI,8BAA8B,iCAAiC,CAAA;AAEvF,QAAA,IAAA,CAAK,iBACH,OAAA,CAAQ,aAAA,IACR,iBAAA,CAAkB,EAAA,EAAI,2BAA2B,8BAA8B,CAAA;AAEjF,QAAA,IAAA,CAAK,aACH,OAAA,CAAQ,SAAA,IAAa,iBAAA,CAAkB,EAAA,EAAI,uBAAuB,eAAe,CAAA;AAEnF,QAAA,IAAA,CAAK,SAAS,OAAA,CAAQ,KAAA;AAEtB,QAAA,IAAA,CAAK,YACH,OAAA,CAAQ,QAAA,IAAY,iBAAA,CAAkB,aAAA,EAAe,mBAAmB,WAAW,CAAA;AAErF,QAAA,IAAA,CAAK,QAAA,GAAW,QAAQ,OAAA,IAAW,GAAA;AACnC,QAAA,IAAA,CAAK,YAAA,GAAe,QAAQ,WAAA,IAAe,GAAA;AAE3C,QAAA,IAAA,CAAK,gBAAA,GACH,OAAA,CAAQ,eAAA,IAAmB,iBAAA,CAAkB,IAAI,2BAA2B,CAAA;AAE9E,QAAA,IAAA,CAAK,aAAA,GAAgB,OAAA,CAAQ,YAAA,IAAgB,iBAAA,CAAkB,IAAI,wBAAwB,CAAA;AAE3F,QAAA,IAAA,CAAK,aAAA,GAAgB,OAAA,CAAQ,YAAA,IAAgB,iBAAA,CAAkB,IAAI,eAAe,CAAA;AAElF,QAAA,IAAA,CAAK,QAAA,GAAW,OAAA,CAAQ,OAAA,IAAW,EAAC;AAAA,MACtC;AAAA;AAAA;AAAA;AAAA;AAAA,MAMA,OAAO,eAAe,OAAA,EAAyC;AAC7D,QAAA,OAAO,IAAI,OAAA,EAAO,CAAE,MAAA,CAAO,GAAG,OAAO,CAAA;AAAA,MACvC;AAAA;AAAA;AAAA;AAAA;AAAA,MAMA,UAAU,OAAA,EAAyC;AACjD,QAAA,KAAA,MAAWC,WAAU,OAAA,EAAS;AAC5B,UAAA,IAAI,CAACA,OAAAA,EAAQ;AAEb,UAAA,IAAIA,OAAAA,CAAO,YAAA,EAAc,IAAA,CAAK,YAAA,GAAeA,OAAAA,CAAO,YAAA;AACpD,UAAA,IAAIA,OAAAA,CAAO,gBAAA,EAAkB,IAAA,CAAK,gBAAA,GAAmBA,OAAAA,CAAO,gBAAA;AAC5D,UAAA,IAAIA,OAAAA,CAAO,cAAA,EAAgB,IAAA,CAAK,cAAA,GAAiBA,OAAAA,CAAO,cAAA;AACxD,UAAA,IAAIA,OAAAA,CAAO,UAAA,EAAY,IAAA,CAAK,UAAA,GAAaA,OAAAA,CAAO,UAAA;AAChD,UAAA,IAAIA,OAAAA,CAAO,MAAA,EAAQ,IAAA,CAAK,MAAA,GAASA,OAAAA,CAAO,MAAA;AACxC,UAAA,IAAIA,OAAAA,CAAO,SAAA,EAAW,IAAA,CAAK,SAAA,GAAYA,OAAAA,CAAO,SAAA;AAC9C,UAAA,IAAIA,OAAAA,CAAO,QAAA,EAAU,IAAA,CAAK,QAAA,GAAWA,OAAAA,CAAO,QAAA;AAC5C,UAAA,IAAIA,OAAAA,CAAO,YAAA,EAAc,IAAA,CAAK,YAAA,GAAeA,OAAAA,CAAO,YAAA;AACpD,UAAA,IAAIA,OAAAA,CAAO,gBAAA,EAAkB,IAAA,CAAK,gBAAA,GAAmBA,OAAAA,CAAO,gBAAA;AAC5D,UAAA,IAAIA,OAAAA,CAAO,aAAA,EAAe,IAAA,CAAK,aAAA,GAAgBA,OAAAA,CAAO,aAAA;AACtD,UAAA,IAAIA,OAAAA,CAAO,aAAA,EAAe,IAAA,CAAK,aAAA,GAAgBA,OAAAA,CAAO,aAAA;AACtD,UAAA,IAAIA,OAAAA,CAAO,YAAY,MAAA,CAAO,IAAA,CAAKA,QAAO,QAAQ,CAAA,CAAE,SAAS,CAAA,EAAG;AAC9D,YAAA,IAAA,CAAK,WAAW,EAAE,GAAG,KAAK,QAAA,EAAU,GAAGA,QAAO,QAAA,EAAS;AAAA,UACzD;AAAA,QACF;AACA,QAAA,OAAO,IAAA;AAAA,MACT;AAAA,MAEA,IAAI,WAAA,GAAsB;AACxB,QAAA,OAAO,IAAA,CAAK,YAAA;AAAA,MACd;AAAA,MAEA,IAAI,eAAA,GAA0B;AAC5B,QAAA,OAAO,IAAA,CAAK,gBAAA;AAAA,MACd;AAAA,MAEA,IAAI,aAAA,GAAwB;AAC1B,QAAA,OAAO,IAAA,CAAK,cAAA;AAAA,MACd;AAAA,MAEA,IAAI,SAAA,GAAoB;AACtB,QAAA,IAAI,CAAC,KAAK,UAAA,EAAY;AACpB,UAAA,MAAM,IAAI,KAAA;AAAA,YACR;AAAA,WACF;AAAA,QACF;AACA,QAAA,OAAO,IAAA,CAAK,UAAA;AAAA,MACd;AAAA,MAEA,IAAI,KAAA,GAA4B;AAC9B,QAAA,OAAO,IAAA,CAAK,MAAA;AAAA,MACd;AAAA,MAEA,IAAI,QAAA,GAAmB;AACrB,QAAA,OAAO,KAAK,SAAA,IAAa,aAAA;AAAA,MAC3B;AAAA,MAEA,IAAI,OAAA,GAAkB;AACpB,QAAA,OAAO,KAAK,QAAA,IAAY,GAAA;AAAA,MAC1B;AAAA,MAEA,IAAI,WAAA,GAAsB;AACxB,QAAA,OAAO,KAAK,YAAA,IAAgB,GAAA;AAAA,MAC9B;AAAA,MAEA,IAAI,eAAA,GAA0B;AAC5B,QAAA,IAAI,KAAK,gBAAA,EAAkB;AACzB,UAAA,OAAO,IAAA,CAAK,gBAAA;AAAA,QACd;AACA,QAAA,OAAO,CAAA,iBAAA,EAAoB,KAAK,QAAQ,CAAA,aAAA,CAAA;AAAA,MAC1C;AAAA,MAEA,IAAI,YAAA,GAAuB;AACzB,QAAA,IAAI,KAAK,aAAA,EAAe;AACtB,UAAA,OAAO,IAAA,CAAK,aAAA;AAAA,QACd;AACA,QAAA,OAAO,CAAA,QAAA,EAAW,IAAA,CAAK,SAAS,CAAA,eAAA,EAAkB,KAAK,QAAQ,CAAA,aAAA,CAAA;AAAA,MACjE;AAAA,MAEA,IAAI,YAAA,GAAuB;AACzB,QAAA,IAAI,KAAK,aAAA,EAAe;AACtB,UAAA,OAAO,IAAA,CAAK,aAAA;AAAA,QACd;AACA,QAAA,OAAO,CAAA,aAAA,EAAgB,KAAK,QAAQ,CAAA,aAAA,CAAA;AAAA,MACtC;AAAA,MAEA,IAAI,OAAA,GAAkC;AACpC,QAAA,OAAO,IAAA,CAAK,QAAA;AAAA,MACd;AAAA,KACF;AAAA,EAAA;AAAA,CAAA,CAAA;;;ACpQA,IAUa,aAAA,EAWA,SAAA,EAuCA,WAAA,EAkBA,WAAA,EAkBA,qBAAA,EAyBA,yBAAA;AAzHb,IAAA,cAAA,GAAA,KAAA,CAAA;AAAA,EAAA,wBAAA,GAAA;AAUO,IAAM,aAAA,GAAN,MAAM,cAAA,SAAsB,KAAA,CAAM;AAAA,MACvC,YAAY,OAAA,EAAiB;AAC3B,QAAA,KAAA,CAAM,OAAO,CAAA;AACb,QAAA,IAAA,CAAK,IAAA,GAAO,eAAA;AACZ,QAAA,MAAA,CAAO,cAAA,CAAe,IAAA,EAAM,cAAA,CAAc,SAAS,CAAA;AAAA,MACrD;AAAA,KACF;AAKO,IAAM,SAAA,GAAN,MAAM,UAAA,SAAkB,aAAA,CAAc;AAAA,MAClC,UAAA;AAAA,MACA,SAAA;AAAA,MACA,SAAA;AAAA,MAET,WAAA,CACE,UAAA,EACA,OAAA,EACA,OAAA,EAIA;AACA,QAAA,KAAA,CAAM,OAAO,CAAA;AACb,QAAA,IAAA,CAAK,IAAA,GAAO,WAAA;AACZ,QAAA,IAAA,CAAK,UAAA,GAAa,UAAA;AAClB,QAAA,IAAA,CAAK,YAAY,OAAA,EAAS,SAAA;AAC1B,QAAA,IAAA,CAAK,YAAY,OAAA,EAAS,SAAA;AAC1B,QAAA,MAAA,CAAO,cAAA,CAAe,IAAA,EAAM,UAAA,CAAU,SAAS,CAAA;AAAA,MACjD;AAAA;AAAA;AAAA;AAAA,MAKA,eAAA,CAAgB,cAAsB,UAAA,EAAgC;AACpE,QAAA,IAAI,KAAK,UAAA,IAAc,GAAA,SAAY,IAAI,qBAAA,CAAsB,cAAc,UAAU,CAAA;AAAA,aAAA,IAC5E,KAAK,UAAA,IAAc,GAAA,SAAY,IAAI,yBAAA,CAA0B,cAAc,UAAU,CAAA;AAAA,aAAA,IAAA,CAE3F,IAAA,CAAK,cAAc,GAAA,IAAO,IAAA,CAAK,cAAc,GAAA,KAC9C,IAAA,CAAK,OAAA,CAAQ,QAAA,CAAS,gBAAgB,CAAA;AAEtC,UAAA,OAAO,IAAI,yBAAA,CAA0B,YAAA,EAAc,UAAU,CAAA;AAAA,aAC1D,OAAO,IAAA;AAAA,MACd;AAAA,KACF;AAKO,IAAM,WAAA,GAAN,MAAM,YAAA,SAAoB,SAAA,CAAU;AAAA,MACzC,WAAA,CACE,UAAA,EACA,OAAA,EACA,OAAA,EAIA;AACA,QAAA,KAAA,CAAM,UAAA,EAAY,SAAS,OAAO,CAAA;AAClC,QAAA,IAAA,CAAK,IAAA,GAAO,aAAA;AACZ,QAAA,MAAA,CAAO,cAAA,CAAe,IAAA,EAAM,YAAA,CAAY,SAAS,CAAA;AAAA,MACnD;AAAA,KACF;AAKO,IAAM,WAAA,GAAN,MAAM,YAAA,SAAoB,SAAA,CAAU;AAAA,MACzC,WAAA,CACE,UAAA,EACA,OAAA,EACA,OAAA,EAIA;AACA,QAAA,KAAA,CAAM,UAAA,EAAY,SAAS,OAAO,CAAA;AAClC,QAAA,IAAA,CAAK,IAAA,GAAO,aAAA;AACZ,QAAA,MAAA,CAAO,cAAA,CAAe,IAAA,EAAM,YAAA,CAAY,SAAS,CAAA;AAAA,MACnD;AAAA,KACF;AAKO,IAAM,qBAAA,GAAN,MAAM,sBAAA,SAA8B,WAAA,CAAY;AAAA,MAC5C,YAAA;AAAA,MACA,UAAA;AAAA,MAET,WAAA,CACE,YAAA,EACA,UAAA,EACA,OAAA,EAGA;AACA,QAAA,MAAM,OAAA,GAAU,aACZ,CAAA,EAAG,YAAY,KAAK,UAAU,CAAA,gBAAA,CAAA,GAC9B,GAAG,YAAY,CAAA,eAAA,CAAA;AACnB,QAAA,KAAA,CAAM,GAAA,EAAK,SAAS,OAAO,CAAA;AAC3B,QAAA,IAAA,CAAK,IAAA,GAAO,uBAAA;AACZ,QAAA,IAAA,CAAK,YAAA,GAAe,YAAA;AACpB,QAAA,IAAA,CAAK,UAAA,GAAa,UAAA;AAClB,QAAA,MAAA,CAAO,cAAA,CAAe,IAAA,EAAM,sBAAA,CAAsB,SAAS,CAAA;AAAA,MAC7D;AAAA,KACF;AAKO,IAAM,yBAAA,GAAN,MAAM,0BAAA,SAAkC,WAAA,CAAY;AAAA,MAChD,YAAA;AAAA,MACA,UAAA;AAAA,MAET,WAAA,CACE,YAAA,EACA,UAAA,EACA,OAAA,EAGA;AACA,QAAA,MAAM,OAAA,GAAU,aACZ,CAAA,EAAG,YAAY,KAAK,UAAU,CAAA,gBAAA,CAAA,GAC9B,GAAG,YAAY,CAAA,eAAA,CAAA;AACnB,QAAA,KAAA,CAAM,GAAA,EAAK,SAAS,OAAO,CAAA;AAC3B,QAAA,IAAA,CAAK,IAAA,GAAO,2BAAA;AACZ,QAAA,IAAA,CAAK,YAAA,GAAe,YAAA;AACpB,QAAA,IAAA,CAAK,UAAA,GAAa,UAAA;AAClB,QAAA,MAAA,CAAO,cAAA,CAAe,IAAA,EAAM,0BAAA,CAA0B,SAAS,CAAA;AAAA,MACjE;AAAA,KACF;AAAA,EAAA;AAAA,CAAA,CAAA;AC7IA,IAaM,eAAA,EAYO,UAAA;AAzBb,IAAA,gBAAA,GAAA,KAAA,CAAA;AAAA,EAAA,0BAAA,GAAA;AAUA,IAAA,WAAA,EAAA;AAGA,IAAM,eAAA;AAAA,IAEMC,UAAA,CAAA,OAAA,EAAS,WAAqBA,UAAA,CAAA,OAAA,IAAWA,UAAA;AAU9C,IAAM,aAAN,MAAiB;AAAA,MACZ,MAAA;AAAA,MAEV,YAAYD,OAAAA,EAAiB;AAC3B,QAAA,IAAA,CAAK,MAAA,GAASA,OAAAA;AAAA,MAChB;AAAA;AAAA;AAAA;AAAA,MAKA,UAAUA,OAAAA,EAAyB;AACjC,QAAA,MAAM,GAAA,GAAM,MAAA,CAAO,WAAA,CAAY,IAAA,CAAK,QAAQA,OAAM,CAAA;AAClD,QAAA,IAAI,WAAW,GAAA,CAAI,eAAA;AAGnB,QAAA,IAAI,SAAS,UAAA,CAAW,SAAS,KAAK,QAAA,CAAS,UAAA,CAAW,UAAU,CAAA,EAAG;AACrE,UAAA,QAAA,GAAW,QAAA,CAAS,KAAA,CAAM,KAAK,CAAA,CAAE,CAAC,CAAA;AAAA,QACpC;AAEA,QAAA,MAAM,aAAA,GAAgB,IAAa,QAAA,CAAA,MAAA,CAAO;AAAA,UACxC,aAAa,GAAA,CAAI,WAAA;AAAA,UACjB,iBAAiB,GAAA,CAAI,eAAA;AAAA,UACrB,aAAA,EAAe,IAAI,aAAA,IAAiB,MAAA;AAAA,UACpC,UAAU,GAAA,CAAI,QAAA;AAAA,UACd,QAAA;AAAA,UACA,gBAAgB,GAAA,CAAI,OAAA;AAAA,UACpB,aAAa,GAAA,CAAI;AAAA,SAClB,CAAA;AAED,QAAA,OAAO,IAAI,gBAAgB,aAAa,CAAA;AAAA,MAC1C;AAAA,KACF;AAAA,EAAA;AAAA,CAAA,CAAA;ACxDA,IAsBa,iBAAA;AAtBb,IAAA,YAAA,GAAA,KAAA,CAAA;AAAA,EAAA,4BAAA,GAAA;AAeA,IAAA,gBAAA,EAAA;AACA,IAAA,cAAA,EAAA;AACA,IAAA,QAAA,EAAA;AAKO,IAAM,iBAAA,GAAN,cAAgC,UAAA,CAAW;AAAA,MAChD,YAAYA,OAAAA,EAAiB;AAC3B,QAAA,KAAA,CAAMA,OAAM,CAAA;AAAA,MACd;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAWA,cAAA,GAAiB,OAAO,MAAA,KAIW;AACjC,QAAA,MAAM,EAAE,KAAA,EAAO,OAAA,EAAS,MAAA,EAAAA,SAAO,GAAI,MAAA;AAEnC,QAAA,IAAI;AACF,UAAA,MAAM,MAAA,GAAS,IAAA,CAAK,SAAA,CAAUA,OAAM,CAAA;AACpC,UAAA,MAAM,OAAA,GAAU,IAAU,KAAA,CAAA,cAAA,CAAe,EAAE,CAAA;AAE3C,UAAA,MAAM,QAAA,GAAW,MAAM,MAAA,CAAO,yBAAA;AAAA,YAC5B,IAAcE,UAAA,CAAA,qBAAA,CAAsB,EAAE,IAAA,EAAM,OAAO,CAAA;AAAA,YACnD,WAAW,EAAC;AAAA,YACZ;AAAA,WACF;AAEA,UAAA,MAAA,CAAO,KAAA;AAAA,YACL,CAAA,gDAAA,EAAmD,QAAA,CAAS,IAAA,EAAM,SAAS;AAAA,WAAA,EAAgB,IAAA,CAAK,SAAA,CAAU,CAAC,KAAK,CAAC,CAAC;AAAA,YAAA,EAAiB,IAAA,CAAK,SAAA,CAAU,QAAA,CAAS,IAAA,EAAM,IAAI,CAAC,CAAA;AAAA,WACxK;AAEA,UAAA,OAAO,SAAS,IAAA,EAAM,IAAA;AAAA,QACxB,SAAS,KAAA,EAAgB;AACvB,UAAA,IAAI,KAAA,IAAS,OAAO,KAAA,KAAU,QAAA,IAAY,gBAAgB,KAAA,EAAO;AAC/D,YAAA,MAAM,CAAA,GAAI,KAAA;AACV,YAAA,MAAM,aAAa,CAAA,CAAE,UAAA;AACrB,YAAA,MAAM,OAAA,GAAU,EAAE,OAAA,IAAW,eAAA;AAC7B,YAAA,MAAM,SAAA,GAAY,EAAE,IAAA,EAAM,SAAA;AAE1B,YAAA,IAAI,UAAA,IAAc,GAAA,IAAO,UAAA,GAAa,GAAA,EAAK;AACzC,cAAA,MAAM,IAAI,WAAA,CAAY,UAAA,EAAY,OAAA,EAAS,EAAE,WAAW,CAAA;AAAA,YAC1D,CAAA,MAAA,IAAW,cAAc,GAAA,EAAK;AAC5B,cAAA,MAAM,IAAI,WAAA,CAAY,UAAA,EAAY,OAAA,EAAS,EAAE,WAAW,CAAA;AAAA,YAC1D;AAAA,UACF;AACA,UAAA,MAAM,KAAA;AAAA,QACR;AAAA,MACF,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAWA,cAAA,GAAiB,OAAO,MAAA,KAIW;AACjC,QAAA,MAAM,EAAE,YAAA,EAAc,OAAA,EAAS,MAAA,EAAAF,SAAO,GAAI,MAAA;AAE1C,QAAA,IAAI;AACF,UAAA,MAAM,MAAA,GAAS,IAAA,CAAK,SAAA,CAAUA,OAAM,CAAA;AACpC,UAAA,MAAM,OAAA,GAAU,IAAU,KAAA,CAAA,cAAA,CAAe,EAAE,CAAA;AAE3C,UAAA,MAAM,QAAA,GAAW,MAAM,MAAA,CAAO,yBAAA,CAA0B,cAAc,OAAA,IAAW,IAAI,OAAO,CAAA;AAE5F,UAAA,MAAA,CAAO,KAAA;AAAA,YACL,CAAA,gDAAA,EAAmD,QAAA,CAAS,IAAA,EAAM,SAAS;AAAA,WAAA,EAAgB,IAAA,CAAK,SAAA,CAAU,CAAC,YAAY,CAAC,CAAC;AAAA,YAAA,EAAiB,IAAA,CAAK,SAAA,CAAU,QAAA,CAAS,IAAA,EAAM,IAAI,CAAC,CAAA;AAAA,WAC/K;AAEA,UAAA,OAAO,SAAS,IAAA,EAAM,IAAA;AAAA,QACxB,SAAS,KAAA,EAAgB;AACvB,UAAA,IAAI,KAAA,IAAS,OAAO,KAAA,KAAU,QAAA,IAAY,gBAAgB,KAAA,EAAO;AAC/D,YAAA,MAAM,CAAA,GAAI,KAAA;AACV,YAAA,MAAM,aAAa,CAAA,CAAE,UAAA;AACrB,YAAA,MAAM,OAAA,GAAU,EAAE,OAAA,IAAW,eAAA;AAC7B,YAAA,MAAM,SAAA,GAAY,EAAE,IAAA,EAAM,SAAA;AAE1B,YAAA,IAAI,UAAA,IAAc,GAAA,IAAO,UAAA,GAAa,GAAA,EAAK;AACzC,cAAA,MAAM,IAAI,WAAA,CAAY,UAAA,EAAY,OAAA,EAAS,EAAE,WAAW,CAAA;AAAA,YAC1D,CAAA,MAAA,IAAW,cAAc,GAAA,EAAK;AAC5B,cAAA,MAAM,IAAI,WAAA,CAAY,UAAA,EAAY,OAAA,EAAS,EAAE,WAAW,CAAA;AAAA,YAC1D;AAAA,UACF;AACA,UAAA,MAAM,KAAA;AAAA,QACR;AAAA,MACF,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAYA,cAAA,GAAiB,OAAO,MAAA,KAKW;AACjC,QAAA,MAAM,EAAE,YAAA,EAAc,KAAA,EAAO,OAAA,EAAS,MAAA,EAAAA,SAAO,GAAI,MAAA;AAEjD,QAAA,IAAI;AACF,UAAA,MAAM,MAAA,GAAS,IAAA,CAAK,SAAA,CAAUA,OAAM,CAAA;AACpC,UAAA,MAAM,OAAA,GAAU,IAAU,KAAA,CAAA,cAAA,CAAe,EAAE,CAAA;AAE3C,UAAA,MAAM,QAAA,GAAW,MAAM,MAAA,CAAO,yBAAA;AAAA,YAC5B,YAAA;AAAA,YACA,IAAcE,UAAA,CAAA,qBAAA,CAAsB,EAAE,IAAA,EAAM,OAAO,CAAA;AAAA,YACnD,WAAW,EAAC;AAAA,YACZ;AAAA,WACF;AAEA,UAAA,MAAA,CAAO,KAAA;AAAA,YACL,CAAA,gDAAA,EAAmD,QAAA,CAAS,IAAA,EAAM,SAAS;AAAA,WAAA,EAAgB,KAAK,SAAA,CAAU,CAAC,YAAA,EAAc,KAAK,CAAC,CAAC;AAAA,YAAA,EAAiB,IAAA,CAAK,SAAA,CAAU,QAAA,CAAS,IAAA,EAAM,IAAI,CAAC,CAAA;AAAA,WACtL;AAEA,UAAA,OAAO,SAAS,IAAA,EAAM,IAAA;AAAA,QACxB,SAAS,KAAA,EAAgB;AACvB,UAAA,IAAI,KAAA,IAAS,OAAO,KAAA,KAAU,QAAA,IAAY,gBAAgB,KAAA,EAAO;AAC/D,YAAA,MAAM,CAAA,GAAI,KAAA;AACV,YAAA,MAAM,aAAa,CAAA,CAAE,UAAA;AACrB,YAAA,MAAM,OAAA,GAAU,EAAE,OAAA,IAAW,eAAA;AAC7B,YAAA,MAAM,SAAA,GAAY,EAAE,IAAA,EAAM,SAAA;AAE1B,YAAA,IAAI,UAAA,IAAc,GAAA,IAAO,UAAA,GAAa,GAAA,EAAK;AACzC,cAAA,MAAM,IAAI,WAAA,CAAY,UAAA,EAAY,OAAA,EAAS,EAAE,WAAW,CAAA;AAAA,YAC1D,CAAA,MAAA,IAAW,cAAc,GAAA,EAAK;AAC5B,cAAA,MAAM,IAAI,WAAA,CAAY,UAAA,EAAY,OAAA,EAAS,EAAE,WAAW,CAAA;AAAA,YAC1D;AAAA,UACF;AACA,UAAA,MAAM,KAAA;AAAA,QACR;AAAA,MACF,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAWA,WAAA,GAAc,OAAO,MAAA,KAIc;AACjC,QAAA,MAAM,EAAE,YAAA,EAAc,OAAA,EAAS,MAAA,EAAAF,SAAO,GAAI,MAAA;AAE1C,QAAA,IAAI;AACF,UAAA,MAAM,MAAA,GAAS,IAAA,CAAK,SAAA,CAAUA,OAAM,CAAA;AACpC,UAAA,MAAM,OAAA,GAAU,IAAU,KAAA,CAAA,cAAA,CAAe,EAAE,CAAA;AAE3C,UAAA,MAAM,QAAA,GAAW,MAAM,MAAA,CAAO,sBAAA,CAAuB,cAAc,OAAA,IAAW,IAAI,OAAO,CAAA;AAEzF,UAAA,MAAA,CAAO,KAAA;AAAA,YACL,CAAA,6CAAA,EAAgD,QAAA,CAAS,IAAA,EAAM,SAAS;AAAA,WAAA,EAAgB,IAAA,CAAK,SAAA,CAAU,CAAC,YAAY,CAAC,CAAC;AAAA,YAAA,EAAiB,IAAA,CAAK,SAAA,CAAU,QAAA,CAAS,IAAA,EAAM,IAAI,CAAC,CAAA;AAAA,WAC5K;AAEA,UAAA,OAAO,SAAS,IAAA,EAAM,IAAA;AAAA,QACxB,SAAS,KAAA,EAAgB;AACvB,UAAA,IAAI,KAAA,IAAS,OAAO,KAAA,KAAU,QAAA,IAAY,gBAAgB,KAAA,EAAO;AAC/D,YAAA,MAAM,CAAA,GAAI,KAAA;AACV,YAAA,MAAM,aAAa,CAAA,CAAE,UAAA;AACrB,YAAA,MAAM,OAAA,GAAU,EAAE,OAAA,IAAW,eAAA;AAC7B,YAAA,MAAM,SAAA,GAAY,EAAE,IAAA,EAAM,SAAA;AAE1B,YAAA,IAAI,UAAA,IAAc,GAAA,IAAO,UAAA,GAAa,GAAA,EAAK;AACzC,cAAA,MAAM,IAAI,WAAA,CAAY,UAAA,EAAY,OAAA,EAAS,EAAE,WAAW,CAAA;AAAA,YAC1D,CAAA,MAAA,IAAW,cAAc,GAAA,EAAK;AAC5B,cAAA,MAAM,IAAI,WAAA,CAAY,UAAA,EAAY,OAAA,EAAS,EAAE,WAAW,CAAA;AAAA,YAC1D;AAAA,UACF;AACA,UAAA,MAAM,KAAA;AAAA,QACR;AAAA,MACF,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAWA,aAAA,GAAgB,OAAO,MAAA,KAIuB;AAC5C,QAAA,MAAM,EAAE,KAAA,EAAO,OAAA,EAAS,MAAA,EAAAA,SAAO,GAAI,MAAA;AAEnC,QAAA,IAAI;AACF,UAAA,MAAM,MAAA,GAAS,IAAA,CAAK,SAAA,CAAUA,OAAM,CAAA;AACpC,UAAA,MAAM,OAAA,GAAU,IAAU,KAAA,CAAA,cAAA,CAAe,EAAE,CAAA;AAE3C,UAAA,MAAM,QAAA,GAAW,MAAM,MAAA,CAAO,wBAAA,CAAyB,OAAO,OAAA,IAAW,IAAI,OAAO,CAAA;AAEpF,UAAA,MAAA,CAAO,KAAA;AAAA,YACL,CAAA,+CAAA,EAAkD,QAAA,CAAS,IAAA,EAAM,SAAS;AAAA,WAAA,EAAgB,IAAA,CAAK,SAAA,CAAU,CAAC,KAAK,CAAC,CAAC;AAAA,YAAA,EAAiB,IAAA,CAAK,SAAA,CAAU,QAAA,CAAS,IAAA,EAAM,IAAI,CAAC,CAAA;AAAA,WACvK;AAEA,UAAA,OAAO,SAAS,IAAA,EAAM,IAAA;AAAA,QACxB,SAAS,KAAA,EAAgB;AACvB,UAAA,IAAI,KAAA,IAAS,OAAO,KAAA,KAAU,QAAA,IAAY,gBAAgB,KAAA,EAAO;AAC/D,YAAA,MAAM,CAAA,GAAI,KAAA;AACV,YAAA,MAAM,aAAa,CAAA,CAAE,UAAA;AACrB,YAAA,MAAM,OAAA,GAAU,EAAE,OAAA,IAAW,eAAA;AAC7B,YAAA,MAAM,SAAA,GAAY,EAAE,IAAA,EAAM,SAAA;AAE1B,YAAA,IAAI,UAAA,IAAc,GAAA,IAAO,UAAA,GAAa,GAAA,EAAK;AACzC,cAAA,MAAM,IAAI,WAAA,CAAY,UAAA,EAAY,OAAA,EAAS,EAAE,WAAW,CAAA;AAAA,YAC1D,CAAA,MAAA,IAAW,cAAc,GAAA,EAAK;AAC5B,cAAA,MAAM,IAAI,WAAA,CAAY,UAAA,EAAY,OAAA,EAAS,EAAE,WAAW,CAAA;AAAA,YAC1D;AAAA,UACF;AACA,UAAA,MAAM,KAAA;AAAA,QACR;AAAA,MACF,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAWA,aAAA,GAAgB,OAAO,MAAA,KAIW;AAChC,QAAA,MAAM,EAAE,KAAA,EAAO,OAAA,EAAS,MAAA,EAAAA,SAAO,GAAI,MAAA;AAEnC,QAAA,IAAI;AACF,UAAA,MAAM,MAAA,GAAS,IAAA,CAAK,SAAA,CAAUA,OAAM,CAAA;AACpC,UAAA,MAAM,OAAA,GAAU,IAAU,KAAA,CAAA,cAAA,CAAe;AAAA,YACvC,WAAA,EAAa;AAAA,WACd,CAAA;AAED,UAAA,MAAM,QAAA,GAAW,MAAM,MAAA,CAAO,wBAAA;AAAA,YAC5B,IAAcE,UAAA,CAAA,oBAAA,CAAqB,EAAE,IAAA,EAAM,OAAO,CAAA;AAAA,YAClD,WAAW,EAAC;AAAA,YACZ;AAAA,WACF;AAEA,UAAA,MAAA,CAAO,KAAA;AAAA,YACL,CAAA,+CAAA,EAAkD,QAAA,CAAS,IAAA,EAAM,SAAS;AAAA,WAAA,EAAgB,IAAA,CAAK,SAAA,CAAU,CAAC,KAAK,CAAC,CAAC;AAAA,YAAA,EAAiB,IAAA,CAAK,SAAA,CAAU,QAAA,CAAS,IAAA,EAAM,IAAI,CAAC,CAAA;AAAA,WACvK;AAEA,UAAA,OAAO,SAAS,IAAA,EAAM,IAAA;AAAA,QACxB,SAAS,KAAA,EAAgB;AACvB,UAAA,IAAI,KAAA,IAAS,OAAO,KAAA,KAAU,QAAA,IAAY,gBAAgB,KAAA,EAAO;AAC/D,YAAA,MAAM,CAAA,GAAI,KAAA;AACV,YAAA,MAAM,aAAa,CAAA,CAAE,UAAA;AACrB,YAAA,MAAM,OAAA,GAAU,EAAE,OAAA,IAAW,eAAA;AAC7B,YAAA,MAAM,SAAA,GAAY,EAAE,IAAA,EAAM,SAAA;AAE1B,YAAA,IAAI,UAAA,IAAc,GAAA,IAAO,UAAA,GAAa,GAAA,EAAK;AACzC,cAAA,MAAM,IAAI,WAAA,CAAY,UAAA,EAAY,OAAA,EAAS,EAAE,WAAW,CAAA;AAAA,YAC1D,CAAA,MAAA,IAAW,cAAc,GAAA,EAAK;AAC5B,cAAA,MAAM,IAAI,WAAA,CAAY,UAAA,EAAY,OAAA,EAAS,EAAE,WAAW,CAAA;AAAA,YAC1D;AAAA,UACF;AACA,UAAA,MAAM,KAAA;AAAA,QACR;AAAA,MACF,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAWA,aAAA,GAAgB,OAAO,MAAA,KAIW;AAChC,QAAA,MAAM,EAAE,SAAA,EAAW,OAAA,EAAS,MAAA,EAAAF,SAAO,GAAI,MAAA;AAEvC,QAAA,IAAI;AACF,UAAA,MAAM,MAAA,GAAS,IAAA,CAAK,SAAA,CAAUA,OAAM,CAAA;AACpC,UAAA,MAAM,OAAA,GAAU,IAAU,KAAA,CAAA,cAAA,CAAe,EAAE,CAAA;AAE3C,UAAA,MAAM,QAAA,GAAW,MAAM,MAAA,CAAO,wBAAA,CAAyB,WAAW,OAAA,IAAW,IAAI,OAAO,CAAA;AAExF,UAAA,MAAA,CAAO,KAAA;AAAA,YACL,CAAA,+CAAA,EAAkD,QAAA,CAAS,IAAA,EAAM,SAAS;AAAA,WAAA,EAAgB,IAAA,CAAK,SAAA,CAAU,CAAC,SAAS,CAAC,CAAC;AAAA,YAAA,EAAiB,IAAA,CAAK,SAAA,CAAU,QAAA,CAAS,IAAA,EAAM,IAAI,CAAC,CAAA;AAAA,WAC3K;AAEA,UAAA,OAAO,SAAS,IAAA,EAAM,IAAA;AAAA,QACxB,SAAS,KAAA,EAAgB;AACvB,UAAA,IAAI,KAAA,IAAS,OAAO,KAAA,KAAU,QAAA,IAAY,gBAAgB,KAAA,EAAO;AAC/D,YAAA,MAAM,CAAA,GAAI,KAAA;AACV,YAAA,MAAM,aAAa,CAAA,CAAE,UAAA;AACrB,YAAA,MAAM,OAAA,GAAU,EAAE,OAAA,IAAW,eAAA;AAC7B,YAAA,MAAM,SAAA,GAAY,EAAE,IAAA,EAAM,SAAA;AAE1B,YAAA,IAAI,UAAA,IAAc,GAAA,IAAO,UAAA,GAAa,GAAA,EAAK;AACzC,cAAA,MAAM,IAAI,WAAA,CAAY,UAAA,EAAY,OAAA,EAAS,EAAE,WAAW,CAAA;AAAA,YAC1D,CAAA,MAAA,IAAW,cAAc,GAAA,EAAK;AAC5B,cAAA,MAAM,IAAI,WAAA,CAAY,UAAA,EAAY,OAAA,EAAS,EAAE,WAAW,CAAA;AAAA,YAC1D;AAAA,UACF;AACA,UAAA,MAAM,KAAA;AAAA,QACR;AAAA,MACF,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAWA,WAAA,GAAc,OAAO,MAAA,KAIa;AAChC,QAAA,MAAM,EAAE,SAAA,EAAW,OAAA,EAAS,MAAA,EAAAA,SAAO,GAAI,MAAA;AAEvC,QAAA,IAAI;AACF,UAAA,MAAM,MAAA,GAAS,IAAA,CAAK,SAAA,CAAUA,OAAM,CAAA;AACpC,UAAA,MAAM,OAAA,GAAU,IAAU,KAAA,CAAA,cAAA,CAAe,EAAE,CAAA;AAE3C,UAAA,MAAM,QAAA,GAAW,MAAM,MAAA,CAAO,sBAAA,CAAuB,WAAW,OAAA,IAAW,IAAI,OAAO,CAAA;AAEtF,UAAA,MAAA,CAAO,KAAA;AAAA,YACL,CAAA,6CAAA,EAAgD,QAAA,CAAS,IAAA,EAAM,SAAS;AAAA,WAAA,EAAgB,IAAA,CAAK,SAAA,CAAU,CAAC,SAAS,CAAC,CAAC;AAAA,YAAA,EAAiB,IAAA,CAAK,SAAA,CAAU,QAAA,CAAS,IAAA,EAAM,IAAI,CAAC,CAAA;AAAA,WACzK;AAEA,UAAA,OAAO,SAAS,IAAA,EAAM,IAAA;AAAA,QACxB,SAAS,KAAA,EAAgB;AACvB,UAAA,IAAI,KAAA,IAAS,OAAO,KAAA,KAAU,QAAA,IAAY,gBAAgB,KAAA,EAAO;AAC/D,YAAA,MAAM,CAAA,GAAI,KAAA;AACV,YAAA,MAAM,aAAa,CAAA,CAAE,UAAA;AACrB,YAAA,MAAM,OAAA,GAAU,EAAE,OAAA,IAAW,eAAA;AAC7B,YAAA,MAAM,SAAA,GAAY,EAAE,IAAA,EAAM,SAAA;AAE1B,YAAA,IAAI,UAAA,IAAc,GAAA,IAAO,UAAA,GAAa,GAAA,EAAK;AACzC,cAAA,MAAM,IAAI,WAAA,CAAY,UAAA,EAAY,OAAA,EAAS,EAAE,WAAW,CAAA;AAAA,YAC1D,CAAA,MAAA,IAAW,cAAc,GAAA,EAAK;AAC5B,cAAA,MAAM,IAAI,WAAA,CAAY,UAAA,EAAY,OAAA,EAAS,EAAE,WAAW,CAAA;AAAA,YAC1D;AAAA,UACF;AACA,UAAA,MAAM,KAAA;AAAA,QACR;AAAA,MACF,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAWA,UAAA,GAAa,OAAO,MAAA,KAIc;AAChC,QAAA,MAAM,EAAE,SAAA,EAAW,OAAA,EAAS,MAAA,EAAAA,SAAO,GAAI,MAAA;AAEvC,QAAA,IAAI;AACF,UAAA,MAAM,MAAA,GAAS,IAAA,CAAK,SAAA,CAAUA,OAAM,CAAA;AACpC,UAAA,MAAM,OAAA,GAAU,IAAU,KAAA,CAAA,cAAA,CAAe,EAAE,CAAA;AAE3C,UAAA,MAAM,QAAA,GAAW,MAAM,MAAA,CAAO,qBAAA,CAAsB,WAAW,OAAA,IAAW,IAAI,OAAO,CAAA;AAErF,UAAA,MAAA,CAAO,KAAA;AAAA,YACL,CAAA,4CAAA,EAA+C,QAAA,CAAS,IAAA,EAAM,SAAS;AAAA,WAAA,EAAgB,IAAA,CAAK,SAAA,CAAU,CAAC,SAAS,CAAC,CAAC;AAAA,YAAA,EAAiB,IAAA,CAAK,SAAA,CAAU,QAAA,CAAS,IAAA,EAAM,IAAI,CAAC,CAAA;AAAA,WACxK;AAEA,UAAA,OAAO,SAAS,IAAA,EAAM,IAAA;AAAA,QACxB,SAAS,KAAA,EAAgB;AACvB,UAAA,IAAI,KAAA,IAAS,OAAO,KAAA,KAAU,QAAA,IAAY,gBAAgB,KAAA,EAAO;AAC/D,YAAA,MAAM,CAAA,GAAI,KAAA;AACV,YAAA,MAAM,aAAa,CAAA,CAAE,UAAA;AACrB,YAAA,MAAM,OAAA,GAAU,EAAE,OAAA,IAAW,eAAA;AAC7B,YAAA,MAAM,SAAA,GAAY,EAAE,IAAA,EAAM,SAAA;AAE1B,YAAA,IAAI,UAAA,IAAc,GAAA,IAAO,UAAA,GAAa,GAAA,EAAK;AACzC,cAAA,MAAM,IAAI,WAAA,CAAY,UAAA,EAAY,OAAA,EAAS,EAAE,WAAW,CAAA;AAAA,YAC1D,CAAA,MAAA,IAAW,cAAc,GAAA,EAAK;AAC5B,cAAA,MAAM,IAAI,WAAA,CAAY,UAAA,EAAY,OAAA,EAAS,EAAE,WAAW,CAAA;AAAA,YAC1D;AAAA,UACF;AACA,UAAA,MAAM,KAAA;AAAA,QACR;AAAA,MACF,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAWA,aAAA,GAAgB,OAAO,MAAA,KAIuB;AAC5C,QAAA,MAAM,EAAE,KAAA,EAAO,OAAA,EAAS,MAAA,EAAAA,SAAO,GAAI,MAAA;AAEnC,QAAA,IAAI;AACF,UAAA,MAAM,MAAA,GAAS,IAAA,CAAK,SAAA,CAAUA,OAAM,CAAA;AACpC,UAAA,MAAM,OAAA,GAAU,IAAU,KAAA,CAAA,cAAA,CAAe,EAAE,CAAA;AAE3C,UAAA,MAAM,QAAA,GAAW,MAAM,MAAA,CAAO,wBAAA,CAAyB,OAAO,OAAA,IAAW,IAAI,OAAO,CAAA;AAEpF,UAAA,MAAA,CAAO,KAAA;AAAA,YACL,CAAA,+CAAA,EAAkD,QAAA,CAAS,IAAA,EAAM,SAAS;AAAA,WAAA,EAAgB,IAAA,CAAK,SAAA,CAAU,CAAC,KAAK,CAAC,CAAC;AAAA,YAAA,EAAiB,IAAA,CAAK,SAAA,CAAU,QAAA,CAAS,IAAA,EAAM,IAAI,CAAC,CAAA;AAAA,WACvK;AAEA,UAAA,OAAO,SAAS,IAAA,EAAM,IAAA;AAAA,QACxB,SAAS,KAAA,EAAgB;AACvB,UAAA,IAAI,KAAA,IAAS,OAAO,KAAA,KAAU,QAAA,IAAY,gBAAgB,KAAA,EAAO;AAC/D,YAAA,MAAM,CAAA,GAAI,KAAA;AACV,YAAA,MAAM,aAAa,CAAA,CAAE,UAAA;AACrB,YAAA,MAAM,OAAA,GAAU,EAAE,OAAA,IAAW,eAAA;AAC7B,YAAA,MAAM,SAAA,GAAY,EAAE,IAAA,EAAM,SAAA;AAE1B,YAAA,IAAI,UAAA,IAAc,GAAA,IAAO,UAAA,GAAa,GAAA,EAAK;AACzC,cAAA,MAAM,IAAI,WAAA,CAAY,UAAA,EAAY,OAAA,EAAS,EAAE,WAAW,CAAA;AAAA,YAC1D,CAAA,MAAA,IAAW,cAAc,GAAA,EAAK;AAC5B,cAAA,MAAM,IAAI,WAAA,CAAY,UAAA,EAAY,OAAA,EAAS,EAAE,WAAW,CAAA;AAAA,YAC1D;AAAA,UACF;AACA,UAAA,MAAM,KAAA;AAAA,QACR;AAAA,MACF,CAAA;AAAA,KACF;AAAA,EAAA;AAAA,CAAA,CAAA;ACneA,IA+Ba;AA/Bb,IAAA,iBAAA,GAAA,KAAA,CAAA;AAAA,EAAA,iCAAA,GAAA;AAUA,IAAA,WAAA,EAAA;AACA,IAAA,gBAAA,EAAA;AACA,IAAA,cAAA,EAAA;AACA,IAAA,QAAA,EAAA;AAkBO,IAAM,iBAAN,MAAqB;AAAA,MAChB,YAAA;AAAA,MACA,YAAA;AAAA,MACA,SAAA;AAAA,MACA,MAAA;AAAA,MACA,WAAA;AAAA,MACA,cAAA,uBAA0C,GAAA,EAAI;AAAA,MAExD,YAAY,MAAA,EAKT;AACD,QAAA,MAAM,EAAE,MAAA,EAAAA,OAAAA,EAAQ,SAAA,GAAY,aAAY,GAAI,MAAA;AAE5C,QAAA,IAAA,CAAK,YAAA,GAAe,EAAA;AACpB,QAAA,IAAA,CAAK,YAAA,GAAe,UAAA;AACpB,QAAA,IAAA,CAAK,SAAA,GAAY,SAAA;AACjB,QAAA,IAAA,CAAK,MAAA,GAASA,OAAAA,IAAU,IAAI,MAAA,EAAO;AAAA,MAIrC;AAAA;AAAA;AAAA;AAAA,MAKA,MAAgB,mBAAmB,MAAA,EAIjB;AAChB,QAAA,MAAM,EAAE,SAAA,EAAW,YAAA,EAAc,MAAA,EAAAA,SAAO,GAAI,MAAA;AAC5C,QAAA,MAAM,GAAA,GAAM,MAAA,CAAO,WAAA,CAAYA,OAAAA,EAAQ,KAAK,MAAM,CAAA;AAElD,QAAA,MAAM,WAAY,SAAA,IAAa,YAAA;AAC/B,QAAA,MAAM,WAAA,GAAc,IAAA,CAAK,cAAA,CAAe,GAAA,CAAI,QAAQ,CAAA;AAEpD,QAAA,IAAI,SAAA,EAAW;AACb,UAAA,IAAA,CAAK,YAAA,GAAe,SAAA;AACpB,UAAA,IAAA,CAAK,YAAA,GAAe,SAAA;AACpB,UAAA,IAAA,CAAK,SAAA,GAAY,aAAa,SAAS,CAAA,CAAA;AAAA,QACzC,WAAW,YAAA,EAAc;AACvB,UAAA,IAAA,CAAK,YAAA,GAAe,YAAA;AACpB,UAAA,IAAA,CAAK,YAAA,GAAe,UAAA;AACpB,UAAA,IAAA,CAAK,SAAA,GAAY,WAAA;AAAA,QACnB;AAEA,QAAA,IAAI,WAAA,EAAa;AACf,UAAA,IAAA,CAAK,WAAA,GAAc,WAAA;AACnB,UAAA;AAAA,QACF;AAGA,QAAA,IAAA,CAAK,WAAA,GAAc,MAAA;AACnB,QAAA,MAAM,IAAA,CAAK,IAAA,CAAK,EAAE,MAAA,EAAQ,KAAK,CAAA;AAC/B,QAAA,IAAI,KAAK,WAAA,EAAa;AACpB,UAAA,IAAA,CAAK,cAAA,CAAe,GAAA,CAAI,QAAA,EAAU,IAAA,CAAK,WAAW,CAAA;AAAA,QACpD;AAAA,MACF;AAAA;AAAA;AAAA;AAAA,MAKU,UAAA,GAAqB;AAC7B,QAAA,OAAO,KAAK,MAAA,CAAO,YAAA;AAAA,MACrB;AAAA;AAAA;AAAA;AAAA,MAKU,QAAA,CAASG,OAAc,KAAA,EAAqC;AAEpE,QAAAA,KAAAA,GAAOA,KAAAA,CAAK,OAAA,CAAQ,KAAA,EAAO,EAAE,CAAA;AAG7B,QAAA,MAAM,KAAA,GAAQ,CAAC,IAAA,CAAK,UAAA,IAAc,IAAA,CAAK,SAAA,EAAWA,KAAI,CAAA,CAAE,MAAA,CAAO,CAAA,CAAA,KAAK,CAAA,IAAK,CAAA,CAAE,SAAS,CAAC,CAAA;AACrF,QAAA,IAAI,GAAA,GAAM,KAAA,CAAM,IAAA,CAAK,GAAG,CAAA,CAAE,OAAA,CAAQ,MAAA,EAAQ,GAAG,CAAA,CAAE,OAAA,CAAQ,MAAA,EAAQ,KAAK,CAAA;AAGpE,QAAA,IAAI,SAAS,MAAA,CAAO,IAAA,CAAK,KAAK,CAAA,CAAE,SAAS,CAAA,EAAG;AAC1C,UAAA,MAAM,MAAA,GAAS,IAAI,GAAA,CAAI,GAAG,CAAA;AAC1B,UAAA,MAAA,CAAO,OAAA,CAAQ,KAAK,CAAA,CAAE,OAAA,CAAQ,CAAC,CAAC,GAAA,EAAK,KAAK,CAAA,KAAM;AAC9C,YAAA,IAAI,KAAA,CAAM,OAAA,CAAQ,KAAK,CAAA,EAAG;AACxB,cAAA,KAAA,CAAM,OAAA,CAAQ,OAAK,MAAA,CAAO,YAAA,CAAa,OAAO,GAAA,EAAK,MAAA,CAAO,CAAC,CAAC,CAAC,CAAA;AAAA,YAC/D,CAAA,MAAA,IAAW,KAAA,KAAU,MAAA,IAAa,KAAA,KAAU,IAAA,EAAM;AAChD,cAAA,MAAA,CAAO,YAAA,CAAa,MAAA,CAAO,GAAA,EAAK,MAAA,CAAO,KAAK,CAAC,CAAA;AAAA,YAC/C;AAAA,UACF,CAAC,CAAA;AACD,UAAA,GAAA,GAAM,OAAO,QAAA,EAAS;AAAA,QACxB;AAEA,QAAA,OAAO,GAAA;AAAA,MACT;AAAA;AAAA;AAAA;AAAA,MAKA,MAAgB,KAAK,MAAA,EAA4C;AAC/D,QAAA,MAAM,MAAM,MAAA,CAAO,WAAA,CAAY,IAAA,CAAK,MAAA,EAAQ,OAAO,MAAM,CAAA;AAGzD,QAAA,IAAI,IAAI,KAAA,EAAO;AACb,UAAA,MAAA,CAAO,MAAM,CAAA,yCAAA,EAA4C,IAAA,CAAK,UAAU,GAAA,CAAI,KAAK,CAAC,CAAA,CAAE,CAAA;AACpF,UAAA,IAAA,CAAK,cAAc,GAAA,CAAI,KAAA;AACvB,UAAA;AAAA,QACF;AAGA,QAAA,IAAI,CAAC,KAAK,WAAA,IAAe,IAAA,CAAK,gBAAgB,IAAA,CAAK,YAAA,IAAgB,CAAC,GAAA,CAAI,KAAA,EAAO;AAC7E,UAAA,IAAI;AACF,YAAA,MAAM,UAAA,GAAa,IAAI,UAAA,CAAW,GAAG,CAAA;AACrC,YAAA,MAAM,MAAA,GAAU,UAAA,CAAmB,SAAA,CAAU,GAAG,CAAA;AAEhD,YAAA,MAAM,OAAA,GACJ,IAAA,CAAK,YAAA,KAAiB,SAAA,iBAClB,IAAcC,UAAA,CAAA,qBAAA,CAAsB;AAAA,cAClC,YAAY,IAAA,CAAK,YAAA;AAAA,cACjB,cAAc,IAAA,CAAK;AAAA,aACpB,CAAA,GACD,IAAcA,UAAA,CAAA,qBAAA,CAAsB;AAAA,cAClC,cAAc,IAAA,CAAK,YAAA;AAAA,cACnB,cAAc,IAAA,CAAK;AAAA,aACpB,CAAA;AAEP,YAAA,MAAM,OAAA,GAAU,IAAUC,KAAA,CAAA,cAAA,CAAe,EAAE,CAAA;AAC3C,YAAA,MAAM,WAAW,MAAM,MAAA,CAAO,0BAA0B,OAAA,EAAS,IAAI,OAAO,CAAA;AAE5E,YAAA,IAAA,CAAK,WAAA,GAAc,QAAA,CAAS,IAAA,EAAM,IAAA,EAAM,WAAA;AAExC,YAAA,MAAA,CAAO,KAAA;AAAA,cACL,CAAA,kCAAA,EAAqC,IAAA,CAAK,YAAY,CAAA,SAAA,EAAY,IAAA,CAAK,YAAY,CAAA,EAAA,EAAK,IAAA,CAAK,SAAA,CAAU,IAAA,CAAK,WAAA,IAAe,EAAE,CAAC,CAAA;AAAA,aAChI;AAAA,UACF,SAAS,KAAA,EAAO;AACd,YAAA,MAAA,CAAO,IAAA;AAAA,cACL,kCAAkC,IAAA,CAAK,YAAY,IAAI,IAAA,CAAK,YAAY,MAAM,KAAK,CAAA;AAAA,aACrF;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA;AAAA;AAAA;AAAA,MAKU,UAAU,KAAA,EAAuB;AACzC,QAAA,IAAI,CAAC,KAAA,IAAS,KAAA,CAAM,MAAA,IAAU,CAAA,EAAG;AAC/B,UAAA,OAAO,KAAA;AAAA,QACT;AACA,QAAA,OAAO,CAAA,EAAG,KAAA,CAAM,SAAA,CAAU,CAAA,EAAG,CAAC,CAAC,CAAA,GAAA,EAAM,KAAA,CAAM,SAAA,CAAU,KAAA,CAAM,MAAA,GAAS,CAAC,CAAC,CAAA,CAAA;AAAA,MACxE;AAAA;AAAA;AAAA;AAAA,MAKU,eAAe,MAAA,EAGE;AACzB,QAAA,MAAM,MAAM,MAAA,CAAO,WAAA,CAAY,IAAA,CAAK,MAAA,EAAQ,OAAO,MAAM,CAAA;AAEzD,QAAA,MAAM,UAAA,GAAqC;AAAA,UACzC,cAAA,EAAgB,kBAAA;AAAA,UAChB,YAAA,EAAc,6BAAA;AAAA,UACd,uBAAA,EAAyB,GAAA,CAAI,KAAA,IAAS,IAAA,CAAK,WAAA,IAAe,EAAA;AAAA,UAC1D,GAAG,GAAA,CAAI,OAAA;AAAA,UACP,GAAI,MAAA,CAAO,OAAA,IAAW;AAAC,SACzB;AAEA,QAAA,OAAO,UAAA;AAAA,MACT;AAAA;AAAA;AAAA;AAAA,MAKA,MAAgB,YAAqB,MAAA,EAOtB;AACb,QAAA,MAAM,EAAE,QAAQ,GAAA,EAAK,IAAA,EAAM,SAAS,KAAA,EAAO,MAAA,EAAAL,SAAO,GAAI,MAAA;AAGtD,QAAA,MAAM,aAAa,IAAA,CAAK,cAAA,CAAe,EAAE,OAAA,EAAS,MAAA,EAAAA,SAAQ,CAAA;AAG1D,QAAA,IAAI,QAAA,GAAW,GAAA;AACf,QAAA,IAAI,SAAS,MAAA,CAAO,IAAA,CAAK,KAAK,CAAA,CAAE,SAAS,CAAA,EAAG;AAC1C,UAAA,MAAM,MAAA,GAAS,IAAI,GAAA,CAAI,GAAG,CAAA;AAC1B,UAAA,MAAA,CAAO,OAAA,CAAQ,KAAK,CAAA,CAAE,OAAA,CAAQ,CAAC,CAAC,GAAA,EAAK,KAAK,CAAA,KAAM;AAC9C,YAAA,IAAI,KAAA,KAAU,MAAA,IAAa,KAAA,KAAU,IAAA,EAAM;AACzC,cAAA,IAAI,KAAA,CAAM,OAAA,CAAQ,KAAK,CAAA,EAAG;AACxB,gBAAA,KAAA,CAAM,OAAA,CAAQ,OAAK,MAAA,CAAO,YAAA,CAAa,OAAO,GAAA,EAAK,MAAA,CAAO,CAAC,CAAC,CAAC,CAAA;AAAA,cAC/D,CAAA,MAAO;AACL,gBAAA,MAAA,CAAO,YAAA,CAAa,MAAA,CAAO,GAAA,EAAK,MAAA,CAAO,KAAK,CAAC,CAAA;AAAA,cAC/C;AAAA,YACF;AAAA,UACF,CAAC,CAAA;AACD,UAAA,QAAA,GAAW,OAAO,QAAA,EAAS;AAAA,QAC7B;AAEA,QAAA,MAAA,CAAO,KAAA;AAAA,UACL,CAAA,EAAG,MAAM,CAAA,CAAA,EAAI,QAAQ,CAAA,SAAA,EAAY,IAAA,CAAK,SAAA,CAAU,UAAU,CAAC,CAAA,MAAA,EAAS,IAAA,CAAK,SAAA,CAAU,IAAI,CAAC,CAAA;AAAA,SAC1F;AAEA,QAAA,IAAI;AACF,UAAA,MAAM,GAAA,GAAM,MAAA,CAAO,WAAA,CAAY,IAAA,CAAK,QAAQA,OAAM,CAAA;AAClD,UAAA,MAAM,QAAA,GAAW,MAAM,KAAA,CAAM,QAAA,EAAU;AAAA,YACrC,MAAA;AAAA,YACA,OAAA,EAAS,UAAA;AAAA,YACT,IAAA,EAAM,IAAA,GAAO,IAAA,CAAK,SAAA,CAAU,IAAI,CAAA,GAAI,KAAA,CAAA;AAAA,YACpC,MAAA,EAAQ,WAAA,CAAY,OAAA,CAAQ,GAAA,CAAI,OAAO;AAAA,WACxC,CAAA;AAED,UAAA,MAAM,YAAA,GAAe,MAAM,QAAA,CAAS,IAAA,EAAK;AACzC,UAAA,MAAA,CAAO,KAAA,CAAM,CAAA,UAAA,EAAa,YAAY,CAAA,CAAE,CAAA;AAGxC,UAAA,IAAI,YAAA,EAAc;AAChB,YAAA,IAAI;AACF,cAAA,OAAO,IAAA,CAAK,MAAM,YAAY,CAAA;AAAA,YAChC,SAAS,KAAA,EAAO;AACd,cAAA,MAAM,QAAA,GAAW,kCAAkC,KAAK,CAAA,CAAA;AACxD,cAAA,MAAA,CAAO,MAAM,QAAQ,CAAA;AAErB,cAAA,IAAI,SAAS,MAAA,KAAW,GAAA,IAAO,YAAA,CAAa,QAAA,CAAS,iBAAiB,CAAA,EAAG;AACvE,gBAAA,MAAM,IAAI,WAAA,CAAY,QAAA,CAAS,MAAA,EAAQ,iBAAiB,CAAA;AAAA,cAC1D;AAEA,cAAA,MAAM,IAAI,WAAA,CAAY,QAAA,CAAS,MAAA,EAAQ,QAAQ,CAAA;AAAA,YACjD;AAAA,UACF;AAEA,UAAA,OAAO,EAAC;AAAA,QACV,SAAS,KAAA,EAAO;AACd,UAAA,IAAI,iBAAiB,WAAA,EAAa;AAChC,YAAA,MAAM,KAAA;AAAA,UACR;AAEA,UAAA,MAAM,QAAA,GAAW,kBAAkB,KAAK,CAAA,CAAA;AACxC,UAAA,MAAM,IAAI,WAAA,CAAY,CAAA,EAAG,QAAQ,CAAA;AAAA,QACnC;AAAA,MACF;AAAA;AAAA;AAAA;AAAA,MAKA,MAAM,IAAa,MAAA,EAKJ;AACb,QAAA,MAAM,MAAM,IAAA,CAAK,QAAA,CAAS,MAAA,CAAO,IAAA,EAAM,OAAO,KAAK,CAAA;AACnD,QAAA,OAAO,KAAK,WAAA,CAAe;AAAA,UACzB,MAAA,EAAQ,KAAA;AAAA,UACR,GAAA;AAAA,UACA,SAAS,MAAA,CAAO,OAAA;AAAA,UAChB,QAAQ,MAAA,CAAO;AAAA,SAChB,CAAA;AAAA,MACH;AAAA;AAAA;AAAA;AAAA,MAKA,MAAM,KAAc,MAAA,EAML;AACb,QAAA,MAAM,MAAM,IAAA,CAAK,QAAA,CAAS,MAAA,CAAO,IAAA,EAAM,OAAO,KAAK,CAAA;AACnD,QAAA,OAAO,KAAK,WAAA,CAAe;AAAA,UACzB,MAAA,EAAQ,MAAA;AAAA,UACR,GAAA;AAAA,UACA,MAAM,MAAA,CAAO,IAAA;AAAA,UACb,SAAS,MAAA,CAAO,OAAA;AAAA,UAChB,QAAQ,MAAA,CAAO;AAAA,SAChB,CAAA;AAAA,MACH;AAAA;AAAA;AAAA;AAAA,MAKA,MAAM,IAAa,MAAA,EAMJ;AACb,QAAA,MAAM,MAAM,IAAA,CAAK,QAAA,CAAS,MAAA,CAAO,IAAA,EAAM,OAAO,KAAK,CAAA;AACnD,QAAA,OAAO,KAAK,WAAA,CAAe;AAAA,UACzB,MAAA,EAAQ,KAAA;AAAA,UACR,GAAA;AAAA,UACA,MAAM,MAAA,CAAO,IAAA;AAAA,UACb,SAAS,MAAA,CAAO,OAAA;AAAA,UAChB,QAAQ,MAAA,CAAO;AAAA,SAChB,CAAA;AAAA,MACH;AAAA;AAAA;AAAA;AAAA,MAKA,MAAM,MAAe,MAAA,EAMN;AACb,QAAA,MAAM,MAAM,IAAA,CAAK,QAAA,CAAS,MAAA,CAAO,IAAA,EAAM,OAAO,KAAK,CAAA;AACnD,QAAA,OAAO,KAAK,WAAA,CAAe;AAAA,UACzB,MAAA,EAAQ,OAAA;AAAA,UACR,GAAA;AAAA,UACA,MAAM,MAAA,CAAO,IAAA;AAAA,UACb,SAAS,MAAA,CAAO,OAAA;AAAA,UAChB,QAAQ,MAAA,CAAO;AAAA,SAChB,CAAA;AAAA,MACH;AAAA;AAAA;AAAA;AAAA,MAKA,MAAM,OAAgB,MAAA,EAKP;AACb,QAAA,MAAM,MAAM,IAAA,CAAK,QAAA,CAAS,MAAA,CAAO,IAAA,EAAM,OAAO,KAAK,CAAA;AACnD,QAAA,OAAO,KAAK,WAAA,CAAe;AAAA,UACzB,MAAA,EAAQ,QAAA;AAAA,UACR,GAAA;AAAA,UACA,SAAS,MAAA,CAAO,OAAA;AAAA,UAChB,QAAQ,MAAA,CAAO;AAAA,SAChB,CAAA;AAAA,MACH;AAAA;AAAA;AAAA;AAAA,MAKA,WAAA,GAAc,OAAO,MAAA,KAGkC;AACrD,QAAA,MAAM,KAAK,kBAAA,CAAmB;AAAA,UAC5B,WAAW,MAAA,CAAO,SAAA;AAAA,UAClB,QAAQ,MAAA,CAAO;AAAA,SAChB,CAAA;AAED,QAAA,OAAO,IAAA,CAAK,IAAI,EAAE,IAAA,EAAM,WAAW,MAAA,EAAQ,MAAA,CAAO,QAAQ,CAAA;AAAA,MAC5D,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAMA,aAAA,GAAgB,OAAO,MAAA,KAOH;AAClB,QAAA,MAAM,KAAK,kBAAA,CAAmB;AAAA,UAC5B,cAAc,MAAA,CAAO,YAAA;AAAA,UACrB,QAAQ,MAAA,CAAO;AAAA,SAChB,CAAA;AAGD,QAAA,MAAM,IAAA,GAA4B;AAAA,UAChC,cAAc,MAAA,CAAO,YAAA;AAAA,UACrB,yBAAA,EAA2B,OAAO,yBAAA,IAA6B;AAAA,SACjE;AAGA,QAAA,IAAI,MAAA,CAAO,cAAc,MAAA,EAAW;AAClC,UAAA,IAAA,CAAK,YAAY,MAAA,CAAO,SAAA;AAAA,QAC1B;AACA,QAAA,IAAI,MAAA,CAAO,mBAAmB,MAAA,EAAW;AACvC,UAAA,IAAA,CAAK,iBAAiB,MAAA,CAAO,cAAA;AAAA,QAC/B;AACA,QAAA,IAAI,MAAA,CAAO,kBAAkB,MAAA,EAAW;AACtC,UAAA,IAAA,CAAK,gBAAgB,MAAA,CAAO,aAAA;AAAA,QAC9B;AAEA,QAAA,OAAO,KAAK,IAAA,CAAK;AAAA,UACf,IAAA,EAAM,GAAA;AAAA,UACN;AAAA,SACD,CAAA;AAAA,MACH,CAAA;AAAA;AAAA;AAAA;AAAA,MAKA,aAAA,GAAgB,OAAO,MAAA,KAAiE;AACtF,QAAA,MAAM,KAAK,kBAAA,CAAmB;AAAA,UAC5B,WAAW,MAAA,CAAO,SAAA;AAAA,UAClB,QAAQ,MAAA,CAAO;AAAA,SAChB,CAAA;AAED,QAAA,OAAO,IAAA,CAAK,MAAA,CAAO,EAAE,IAAA,EAAM,KAAK,CAAA;AAAA,MAClC,CAAA;AAAA;AAAA;AAAA;AAAA,MAKA,WAAA,GAAc,OAAO,MAAA,KAAiE;AACpF,QAAA,MAAM,KAAK,kBAAA,CAAmB;AAAA,UAC5B,WAAW,MAAA,CAAO,SAAA;AAAA,UAClB,QAAQ,MAAA,CAAO;AAAA,SAChB,CAAA;AAED,QAAA,OAAO,IAAA,CAAK,IAAA,CAAK,EAAE,IAAA,EAAM,SAAS,CAAA;AAAA,MACpC,CAAA;AAAA;AAAA;AAAA;AAAA,MAKA,UAAA,GAAa,OAAO,MAAA,KAAiE;AACnF,QAAA,MAAM,KAAK,kBAAA,CAAmB;AAAA,UAC5B,WAAW,MAAA,CAAO,SAAA;AAAA,UAClB,QAAQ,MAAA,CAAO;AAAA,SAChB,CAAA;AAED,QAAA,OAAO,IAAA,CAAK,GAAA,CAAI,EAAE,IAAA,EAAM,KAAK,CAAA;AAAA,MAC/B,CAAA;AAAA,KACF;AAAA,EAAA;AAAA,CAAA,CAAA;AChdA,IAoBa;AApBb,IAAA,iBAAA,GAAA,KAAA,CAAA;AAAA,EAAA,iCAAA,GAAA;AASA,IAAA,WAAA,EAAA;AACA,IAAA,cAAA,EAAA;AACA,IAAA,QAAA,EAAA;AAEA,IAAA,iBAAA,EAAA;AAOO,IAAM,cAAA,GAAN,cAA6B,cAAA,CAAe;AAAA,MACvC,SAAA;AAAA,MAEV,YAAY,MAAA,EAAgD;AAC1D,QAAA,KAAA,CAAM;AAAA,UACJ,WAAW,MAAA,CAAO,SAAA;AAAA,UAClB,QAAQ,MAAA,CAAO,MAAA;AAAA;AAAA,UAEf,SAAA,EAAW,CAAA,UAAA,EAAa,MAAA,CAAO,SAAS,CAAA;AAAA,SACzC,CAAA;AACD,QAAA,IAAA,CAAK,YAAY,MAAA,CAAO,SAAA;AAAA,MAC1B;AAAA;AAAA;AAAA;AAAA,MAKA,UAAU,MAAA,EAA0B;AAClC,QAAA,MAAM,SAAS,IAAA,CAAK,QAAA,CAAS,gBAAgB,CAAA,CAAE,OAAA,CAAQ,QAAQ,IAAI,CAAA;AACnE,QAAA,MAAM,GAAA,GAAM,IAAI,GAAA,CAAI,MAAM,CAAA;AAE1B,QAAA,GAAA,CAAI,YAAA,CAAa,GAAA,CAAI,UAAA,EAAY,IAAA,CAAK,OAAO,SAAS,CAAA;AACtD,QAAA,IAAI,MAAA,EAAQ;AACV,UAAA,GAAA,CAAI,YAAA,CAAa,GAAA,CAAI,WAAA,EAAa,MAAM,CAAA;AAAA,QAC1C;AAEA,QAAA,OAAO,IAAI,QAAA,EAAS;AAAA,MACtB;AAAA;AAAA;AAAA;AAAA,MAKA,UAAU,MAAA,EAA0B;AAClC,QAAA,MAAM,SAAS,IAAA,CAAK,QAAA,CAAS,cAAc,CAAA,CAAE,OAAA,CAAQ,QAAQ,IAAI,CAAA;AACjE,QAAA,MAAM,GAAA,GAAM,IAAI,GAAA,CAAI,MAAM,CAAA;AAE1B,QAAA,GAAA,CAAI,YAAA,CAAa,GAAA,CAAI,UAAA,EAAY,IAAA,CAAK,OAAO,SAAS,CAAA;AACtD,QAAA,IAAI,MAAA,EAAQ;AACV,UAAA,GAAA,CAAI,YAAA,CAAa,GAAA,CAAI,WAAA,EAAa,MAAM,CAAA;AAAA,QAC1C;AAEA,QAAA,OAAO,IAAI,QAAA,EAAS;AAAA,MACtB;AAAA;AAAA;AAAA;AAAA,MAKA,cAAA,GAAiB,OAAO,MAAA,KAA+C;AACrE,QAAA,OAAO,IAAA,CAAK,IAAI,EAAE,IAAA,EAAM,eAAe,MAAA,EAAQ,MAAA,EAAQ,QAAQ,CAAA;AAAA,MACjE,CAAA;AAAA;AAAA;AAAA;AAAA,MAKA,eAAA,GAAkB,OAAO,MAAA,KAAgE;AACvF,QAAA,OAAO,IAAA,CAAK,MAAA,CAAO,EAAE,IAAA,EAAM,CAAA,YAAA,EAAe,MAAA,CAAO,QAAQ,CAAA,CAAA,EAAI,MAAA,EAAQ,MAAA,CAAO,MAAA,EAAQ,CAAA;AAAA,MACtF,CAAA;AAAA;AAAA;AAAA;AAAA,MAKA,iBAAA,GAAoB,OAAO,MAAA,KAGyB;AAClD,QAAA,OAAO,KAAK,QAAA,CAAS;AAAA,UACnB,IAAA,EAAM,CAAA,YAAA,EAAe,MAAA,CAAO,QAAQ,CAAA,CAAA;AAAA,UACpC,UAAU,MAAA,CAAO;AAAA,SAClB,CAAA;AAAA,MACH,CAAA;AAAA;AAAA;AAAA;AAAA,MAKA,MAAgB,SAAS,MAAA,EAMwB;AAC/C,QAAA,MAAM,MAAM,IAAA,CAAK,QAAA,CAAS,MAAA,CAAO,IAAA,EAAM,OAAO,KAAK,CAAA;AAGnD,QAAA,MAAM,MAAM,MAAA,CAAO,WAAA,CAAY,IAAA,CAAK,MAAA,EAAQ,OAAO,MAAM,CAAA;AACzD,QAAA,MAAM,UAAA,GAAa,KAAK,cAAA,CAAe,EAAE,SAAS,MAAA,CAAO,OAAA,EAAS,MAAA,EAAQ,GAAA,EAAK,CAAA;AAE/E,QAAA,IAAI;AACF,UAAA,MAAM,QAAA,GAAW,MAAM,KAAA,CAAM,GAAA,EAAK;AAAA,YAChC,MAAA,EAAQ,KAAA;AAAA,YACR,OAAA,EAAS,UAAA;AAAA,YACT,MAAA,EAAQ,WAAA,CAAY,OAAA,CAAQ,GAAA,CAAI,OAAO;AAAA,WACxC,CAAA;AAED,UAAA,IAAI,CAAC,SAAS,EAAA,EAAI;AAChB,YAAA,MAAM,SAAA,GAAY,MAAM,QAAA,CAAS,IAAA,EAAK;AACtC,YAAA,MAAM,IAAI,WAAA,CAAY,QAAA,CAAS,MAAA,EAAQ,SAAS,CAAA;AAAA,UAClD;AAEA,UAAA,MAAM,WAAA,GAAc,MAAM,QAAA,CAAS,WAAA,EAAY;AAC/C,UAAA,MAAM,MAAA,GAAS,MAAA,CAAO,IAAA,CAAK,WAAW,CAAA;AAEtC,UAAA,MAASM,GAAA,CAAA,QAAA,CAAS,SAAA,CAAU,MAAA,CAAO,QAAA,EAAU,MAAM,CAAA;AAEnD,UAAA,OAAO;AAAA,YACL,WAAW,MAAA,CAAO,QAAA;AAAA,YAClB,MAAM,MAAA,CAAO;AAAA,WACf;AAAA,QACF,SAAS,KAAA,EAAO;AACd,UAAA,IAAI,iBAAiB,WAAA,EAAa;AAChC,YAAA,MAAM,KAAA;AAAA,UACR;AACA,UAAA,MAAA,CAAO,KAAA,CAAM,CAAA,sBAAA,EAAyB,KAAK,CAAA,CAAE,CAAA;AAC7C,UAAA,MAAM,IAAI,WAAA,CAAY,CAAA,EAAG,CAAA,sBAAA,EAAyB,KAAK,CAAA,CAAE,CAAA;AAAA,QAC3D;AAAA,MACF;AAAA,KACF;AAAA,EAAA;AAAA,CAAA,CAAA;;;AC1GO,SAAS,cAAc,MAAA,EAAiB;AAC7C,EAAA,OAAO;AAAA,IACL,MAAA;AAAA,IACA,IAAA;AAAA,IACA,EAAA;AAAA,IACA,GAAI,CAAC,OAAA,EAAS,eAAA,EAAiB,iBAAiB,eAAe;AAAA,GACjE,CAAE,SAAS,MAAM,CAAA;AACnB;AApCA,IAmBa,MAAA;AAnBb,IAAA,UAAA,GAAA,KAAA,CAAA;AAAA,EAAA,oBAAA,GAAA;AAmBO,IAAM,MAAA,GAAS;AAAA,MACpB,QAAA,EAAU,UAAA;AAAA,MACV,aAAA,EAAe,eAAA;AAAA,MACf,KAAA,EAAO,OAAA;AAAA,MACP,QAAA,EAAU,UAAA;AAAA,MACV,aAAA,EAAe,eAAA;AAAA,MACf,QAAA,EAAU,UAAA;AAAA,MACV,aAAA,EAAe;AAAA,KACjB;AAAA,EAAA;AAAA,CAAA,CAAA;;;AC3BA,IAYY,YAAA,CAAA,CAaA,YAAA,CAAA,CAYA,mBAAA,CAAA,CASA,qBAAA,CAAA,CAQA;AAtDZ,IAAAC,WAAAA,GAAA,KAAA,CAAA;AAAA,EAAA,sBAAA,GAAA;AAOA,IAAA,UAAA,EAAA;AAKO,IAAK,YAAA,qBAAAC,aAAAA,KAAL;AACL,MAAAA,cAAA,kBAAA,CAAA,GAAmB,iBAAA;AACnB,MAAAA,cAAA,SAAA,CAAA,GAAU,SAAA;AACV,MAAAA,cAAA,KAAA,CAAA,GAAM,UAAA;AAIN,MAAAA,cAAA,QAAA,CAAA,GAAS,aAAA;AAPC,MAAA,OAAAA,aAAAA;AAAA,IAAA,CAAA,EAAA,YAAA,IAAA,EAAA,CAAA;AAaL,IAAK,YAAA,qBAAAC,aAAAA,KAAL;AACL,MAAAA,cAAA,UAAA,CAAA,GAAW,UAAA;AACX,MAAAA,cAAA,SAAA,CAAA,GAAU,SAAA;AACV,MAAAA,cAAA,OAAA,CAAA,GAAQ,OAAA;AACR,MAAAA,cAAA,SAAA,CAAA,GAAU,SAAA;AACV,MAAAA,cAAA,QAAA,CAAA,GAAS,QAAA;AACT,MAAAA,cAAA,UAAA,CAAA,GAAW,UAAA;AAND,MAAA,OAAAA,aAAAA;AAAA,IAAA,CAAA,EAAA,YAAA,IAAA,EAAA,CAAA;AAYL,IAAK,mBAAA,qBAAAC,oBAAAA,KAAL;AACL,MAAAA,qBAAA,QAAA,CAAA,GAAS,QAAA;AACT,MAAAA,qBAAA,SAAA,CAAA,GAAU,SAAA;AACV,MAAAA,qBAAA,oBAAA,CAAA,GAAqB,oBAAA;AAHX,MAAA,OAAAA,oBAAAA;AAAA,IAAA,CAAA,EAAA,mBAAA,IAAA,EAAA,CAAA;AASL,IAAK,qBAAA,qBAAAC,sBAAAA,KAAL;AACL,MAAAA,uBAAA,YAAA,CAAA,GAAa,YAAA;AACb,MAAAA,uBAAA,WAAA,CAAA,GAAY,WAAA;AAFF,MAAA,OAAAA,sBAAAA;AAAA,IAAA,CAAA,EAAA,qBAAA,IAAA,EAAA,CAAA;AAQL,IAAK,YAAA,qBAAAC,aAAAA,KAAL;AACL,MAAAA,cAAA,QAAA,CAAA,GAAS,QAAA;AACT,MAAAA,cAAA,YAAA,CAAA,GAAa,YAAA;AAFH,MAAA,OAAAA,aAAAA;AAAA,IAAA,CAAA,EAAA,YAAA,IAAA,EAAA,CAAA;AAAA,EAAA;AAAA,CAAA,CAAA;ACtDZ,IAsBa;AAtBb,IAAA,0BAAA,GAAA,KAAA,CAAA;AAAA,EAAA,0CAAA,GAAA;AAUA,IAAA,WAAA,EAAA;AACA,IAAA,cAAA,EAAA;AACA,IAAA,QAAA,EAAA;AACA,IAAAL,WAAAA,EAAAA;AAEA,IAAA,iBAAA,EAAA;AAOO,IAAM,sBAAA,GAAN,cAAqC,cAAA,CAAe;AAAA,MACzD,YAAY,MAAA,EAAgD;AAC1D,QAAA,KAAA,CAAM;AAAA,UACJ,WAAW,MAAA,CAAO,SAAA;AAAA,UAClB,QAAQ,MAAA,CAAO,MAAA;AAAA;AAAA,UAEf,SAAA,EAAW,CAAA,UAAA,EAAa,MAAA,CAAO,SAAS,CAAA;AAAA,SACzC,CAAA;AAAA,MACH;AAAA;AAAA;AAAA;AAAA,MAKA,MAAM,cAAc,MAAA,EAA2E;AAC7F,QAAA,MAAM,QAA6B,EAAC;AACpC,QAAA,IAAI,MAAA,EAAQ,SAAS,MAAA,EAAW;AAC9B,UAAA,KAAA,CAAM,OAAO,MAAA,CAAO,IAAA;AAAA,QACtB;AACA,QAAA,IAAI,MAAA,EAAQ,UAAU,MAAA,EAAW;AAC/B,UAAA,KAAA,CAAM,QAAQ,MAAA,CAAO,KAAA;AAAA,QACvB;AAEA,QAAA,OAAO,IAAA,CAAK,IAAI,EAAE,IAAA,EAAM,eAAe,KAAA,EAAO,MAAA,EAAQ,MAAA,EAAQ,MAAA,EAAQ,CAAA;AAAA,MACxE;AAAA;AAAA;AAAA;AAAA,MAKA,MAAM,KAAK,MAAA,EAAyD;AAClE,QAAA,MAAM,KAAA,GAAQ;AAAA,UACZ,MAAM,MAAA,CAAO;AAAA,SACf;AACA,QAAA,OAAO,IAAA,CAAK,IAAI,EAAE,IAAA,EAAM,oBAAoB,KAAA,EAAO,MAAA,EAAQ,MAAA,CAAO,MAAA,EAAQ,CAAA;AAAA,MAC5E;AAAA;AAAA;AAAA;AAAA,MAKA,MAAM,MAAM,MAAA,EAKK;AACf,QAAA,MAAM,IAAA,GAAO;AAAA,UACX,MAAM,MAAA,CAAO,IAAA;AAAA,UACb,OAAA,EAAS,MAAA,CAAO,OAAA,KAAY,MAAA,GAAY,OAAO,OAAA,GAAU,IAAA;AAAA,UACzD,IAAA,EAAM,OAAO,IAAA,IAAQ;AAAA,SACvB;AACA,QAAA,OAAO,IAAA,CAAK,KAAK,EAAE,IAAA,EAAM,qBAAqB,IAAA,EAAM,MAAA,EAAQ,MAAA,CAAO,MAAA,EAAQ,CAAA;AAAA,MAC7E;AAAA;AAAA;AAAA;AAAA,MAKA,MAAM,SAAS,MAAA,EAAgF;AAC7F,QAAA,MAAM,IAAA,GAAO;AAAA,UACX,QAAQ,MAAA,CAAO,MAAA;AAAA,UACf,aAAa,MAAA,CAAO;AAAA,SACtB;AACA,QAAA,OAAO,IAAA,CAAK,KAAK,EAAE,IAAA,EAAM,oBAAoB,IAAA,EAAM,MAAA,EAAQ,MAAA,CAAO,MAAA,EAAQ,CAAA;AAAA,MAC5E;AAAA;AAAA;AAAA;AAAA,MAKA,MAAM,WAAW,MAAA,EAAyD;AACxE,QAAA,MAAM,IAAA,GAAO;AAAA,UACX,MAAM,MAAA,CAAO;AAAA,SACf;AACA,QAAA,OAAO,IAAA,CAAK,KAAK,EAAE,IAAA,EAAM,sBAAsB,IAAA,EAAM,MAAA,EAAQ,MAAA,CAAO,MAAA,EAAQ,CAAA;AAAA,MAC9E;AAAA;AAAA;AAAA;AAAA,MAKA,MAAM,aAAa,MAAA,EAA4C;AAC7D,QAAA,OAAO,IAAA,CAAK,IAAI,EAAE,IAAA,EAAM,aAAa,MAAA,EAAQ,MAAA,EAAQ,QAAQ,CAAA;AAAA,MAC/D;AAAA;AAAA;AAAA;AAAA,MAKA,MAAM,cAAc,MAAA,EAIH;AACf,QAAA,MAAM,WAAW,MAAA,EAAQ,QAAA,IAAA,QAAA;AACzB,QAAA,MAAM,GAAA,GAAM,QAAQ,GAAA,IAAO,YAAA;AAG3B,QAAA,IAAI,QAAA,KAAa,QAAA,IAAY,QAAA,KAAa,YAAA,EAAc;AACtD,UAAA,MAAM,IAAI,KAAA,CAAM,CAAA,gDAAA,EAAmD,QAAQ,CAAA,CAAE,CAAA;AAAA,QAC/E;AAEA,QAAA,MAAM,IAAA,GAA4B;AAAA,UAChC,GAAA;AAAA,UACA;AAAA,SACF;AACA,QAAA,OAAO,IAAA,CAAK,KAAK,EAAE,IAAA,EAAM,aAAa,IAAA,EAAM,MAAA,EAAQ,MAAA,EAAQ,MAAA,EAAQ,CAAA;AAAA,MACtE;AAAA;AAAA;AAAA;AAAA,MAKA,MAAM,WAAW,MAAA,EAA8D;AAC7E,QAAA,OAAO,IAAA,CAAK,GAAA,CAAI,EAAE,IAAA,EAAM,CAAA,UAAA,EAAa,MAAA,CAAO,SAAS,CAAA,CAAA,EAAI,MAAA,EAAQ,MAAA,CAAO,MAAA,EAAQ,CAAA;AAAA,MAClF;AAAA;AAAA;AAAA;AAAA,MAKA,MAAM,YAAY,MAAA,EAMD;AACf,QAAA,MAAM,EAAE,MAAM,SAAA,EAAW,QAAA,EAAU,UAAU,EAAA,EAAI,MAAA,EAAAP,SAAO,GAAI,MAAA;AAE5D,QAAA,IAAI,QAAA,IAAY,QAAA,KAAa,QAAA,IAAY,QAAA,KAAa,YAAA,EAAc;AAClE,UAAA,MAAM,IAAI,KAAA,CAAM,CAAA,gDAAA,EAAmD,QAAQ,CAAA,CAAE,CAAA;AAAA,QAC/E;AAEA,QAAA,MAAM,IAAA,GAA4B;AAAA,UAChC;AAAA,SACF;AAEA,QAAA,IAAI,YAAY,MAAA,EAAW;AACzB,UAAA,IAAA,CAAK,OAAA,GAAU,OAAA;AAAA,QACjB;AACA,QAAA,IAAI,aAAa,MAAA,EAAW;AAC1B,UAAA,IAAA,CAAK,QAAA,GAAW,QAAA;AAAA,QAClB;AACA,QAAA,IAAI,cAAc,MAAA,EAAW;AAC3B,UAAA,IAAA,CAAK,SAAA,GAAY,SAAA;AAAA,QACnB;AAEA,QAAA,OAAO,IAAA,CAAK,KAAK,EAAE,IAAA,EAAM,qBAAqB,IAAA,EAAM,MAAA,EAAAA,SAAQ,CAAA;AAAA,MAC9D;AAAA;AAAA;AAAA;AAAA,MAKA,MAAM,cAAc,MAAA,EAA8D;AAChF,QAAA,OAAO,IAAA,CAAK,MAAA,CAAO,EAAE,IAAA,EAAM,CAAA,UAAA,EAAa,MAAA,CAAO,SAAS,CAAA,CAAA,EAAI,MAAA,EAAQ,MAAA,CAAO,MAAA,EAAQ,CAAA;AAAA,MACrF;AAAA;AAAA;AAAA;AAAA,MAKA,MAAM,SAAS,MAAA,EAAyD;AACtE,QAAA,MAAM,KAAA,GAAQ;AAAA,UACZ,MAAM,MAAA,CAAO;AAAA,SACf;AACA,QAAA,OAAO,IAAA,CAAK,IAAI,EAAE,IAAA,EAAM,UAAU,KAAA,EAAO,MAAA,EAAQ,MAAA,CAAO,MAAA,EAAQ,CAAA;AAAA,MAClE;AAAA;AAAA;AAAA;AAAA,MAKA,MAAM,UAAU,MAAA,EAOC;AACf,QAAA,MAAM,IAAA,GAAO;AAAA,UACX,MAAM,MAAA,CAAO,IAAA;AAAA,UACb,SAAS,MAAA,CAAO,OAAA;AAAA,UAChB,IAAA,EAAM,OAAO,IAAA,IAAQ,KAAA;AAAA,UACrB,QAAA,EAAU,OAAO,QAAA,IAAY,OAAA;AAAA,UAC7B,SAAA,EAAW,MAAA,CAAO,SAAA,KAAc,MAAA,GAAY,OAAO,SAAA,GAAY;AAAA,SACjE;AACA,QAAA,OAAO,IAAA,CAAK,KAAK,EAAE,IAAA,EAAM,UAAU,IAAA,EAAM,MAAA,EAAQ,MAAA,CAAO,MAAA,EAAQ,CAAA;AAAA,MAClE;AAAA;AAAA;AAAA;AAAA,MAKA,MAAM,WAAW,MAAA,EAIA;AACf,QAAA,OAAO,KAAK,QAAA,CAAS;AAAA,UACnB,IAAA,EAAM,oBAAA;AAAA,UACN,eAAe,MAAA,CAAO,aAAA;AAAA,UACtB,gBAAgB,MAAA,CAAO,cAAA;AAAA,UACvB,QAAQ,MAAA,CAAO;AAAA,SAChB,CAAA;AAAA,MACH;AAAA;AAAA;AAAA;AAAA,MAKA,MAAM,aAAa,MAAA,EAI8B;AAC/C,QAAA,MAAM,KAAA,GAAQ,EAAE,IAAA,EAAM,MAAA,CAAO,IAAA,EAAK;AAClC,QAAA,OAAO,KAAK,OAAA,CAAQ;AAAA,UAClB,IAAA,EAAM,sBAAA;AAAA,UACN,UAAU,MAAA,CAAO,QAAA;AAAA,UACjB,KAAA;AAAA,UACA,QAAQ,MAAA,CAAO;AAAA,SAChB,CAAA;AAAA,MACH;AAAA;AAAA;AAAA;AAAA,MAKA,MAAM,IAAI,MAAA,EAKO;AACf,QAAA,MAAM,IAAA,GAA4B;AAAA,UAChC,SAAS,MAAA,CAAO,OAAA;AAAA,UAChB,KAAK,MAAA,CAAO;AAAA,SACd;AAEA,QAAA,IAAI,MAAA,CAAO,YAAY,MAAA,EAAW;AAChC,UAAA,IAAA,CAAK,UAAU,MAAA,CAAO,OAAA;AAAA,QACxB;AAEA,QAAA,OAAO,IAAA,CAAK,KAAK,EAAE,IAAA,EAAM,kBAAkB,IAAA,EAAM,MAAA,EAAQ,MAAA,CAAO,MAAA,EAAQ,CAAA;AAAA,MAC1E;AAAA;AAAA;AAAA;AAAA,MAKA,MAAM,cAAc,MAAA,EAA4C;AAC9D,QAAA,OAAO,IAAA,CAAK,IAAI,EAAE,IAAA,EAAM,cAAc,MAAA,EAAQ,MAAA,EAAQ,QAAQ,CAAA;AAAA,MAChE;AAAA;AAAA;AAAA;AAAA,MAKA,MAAM,WAAW,MAAA,EAAwD;AACvE,QAAA,OAAO,IAAA,CAAK,GAAA,CAAI,EAAE,IAAA,EAAM,CAAA,WAAA,EAAc,MAAA,CAAO,GAAG,CAAA,CAAA,EAAI,MAAA,EAAQ,MAAA,CAAO,MAAA,EAAQ,CAAA;AAAA,MAC7E;AAAA;AAAA;AAAA;AAAA,MAKA,MAAM,YAAY,MAAA,EAAwD;AACxE,QAAA,OAAO,IAAA,CAAK,MAAA,CAAO,EAAE,IAAA,EAAM,CAAA,WAAA,EAAc,MAAA,CAAO,GAAG,CAAA,CAAA,EAAI,MAAA,EAAQ,MAAA,CAAO,MAAA,EAAQ,CAAA;AAAA,MAChF;AAAA;AAAA;AAAA;AAAA,MAKA,MAAgB,SAAS,MAAA,EAQR;AACf,QAAA,MAAM,QAAA,GAAgB,IAAA,CAAA,QAAA,CAAS,MAAA,CAAO,aAAa,CAAA;AACnD,QAAA,MAAM,MAAM,IAAA,CAAK,QAAA,CAAS,MAAA,CAAO,IAAA,EAAM,OAAO,KAAK,CAAA;AAEnD,QAAA,MAAM,UAAA,GAAa,IAAA,CAAK,cAAA,CAAe,EAAE,OAAA,EAAS,OAAO,OAAA,EAAS,MAAA,EAAQ,MAAA,CAAO,MAAA,EAAQ,CAAA;AACzF,QAAA,OAAO,WAAW,cAAc,CAAA;AAEhC,QAAA,IAAI;AACF,UAAA,MAAM,WAAA,GAAc,MAAS,GAAA,CAAA,QAAA,CAAS,QAAA,CAAS,OAAO,aAAa,CAAA;AAEnE,UAAA,MAAM,QAAA,GAAW,IAAI,QAAA,EAAS;AAC9B,UAAA,QAAA,CAAS,MAAA,CAAO,QAAQ,IAAI,IAAA,CAAK,CAAC,WAAW,CAAC,GAAG,QAAQ,CAAA;AAEzD,UAAA,MAAM,IAAA,GAAO,MAAA,CAAO,QAAA,IAAY,EAAC;AACjC,UAAA,IAAA,CAAK,OAAO,MAAA,CAAO,cAAA;AAEnB,UAAA,MAAA,CAAO,OAAA,CAAQ,IAAI,CAAA,CAAE,OAAA,CAAQ,CAAC,CAAC,GAAA,EAAK,KAAK,CAAA,KAAM;AAC7C,YAAA,QAAA,CAAS,MAAA,CAAO,GAAA,EAAK,MAAA,CAAO,KAAK,CAAC,CAAA;AAAA,UACpC,CAAC,CAAA;AAED,UAAA,MAAM,MAAM,MAAA,CAAO,WAAA,CAAY,IAAA,CAAK,MAAA,EAAQ,OAAO,MAAM,CAAA;AACzD,UAAA,MAAM,QAAA,GAAW,MAAM,KAAA,CAAM,GAAA,EAAK;AAAA,YAChC,MAAA,EAAQ,MAAA;AAAA,YACR,OAAA,EAAS,UAAA;AAAA,YACT,IAAA,EAAM,QAAA;AAAA,YACN,MAAA,EAAQ,WAAA,CAAY,OAAA,CAAQ,GAAA,CAAI,OAAO;AAAA,WACxC,CAAA;AAED,UAAA,IAAI,CAAC,SAAS,EAAA,EAAI;AAChB,YAAA,MAAM,SAAA,GAAY,MAAM,QAAA,CAAS,IAAA,EAAK;AACtC,YAAA,MAAM,IAAI,WAAA,CAAY,QAAA,CAAS,MAAA,EAAQ,SAAS,CAAA;AAAA,UAClD;AAEA,UAAA,OAAO,SAAS,IAAA,EAAK;AAAA,QACvB,SAAS,KAAA,EAAO;AACd,UAAA,IAAI,iBAAiB,WAAA,EAAa;AAChC,YAAA,MAAM,KAAA;AAAA,UACR;AACA,UAAA,MAAA,CAAO,KAAA,CAAM,CAAA,mBAAA,EAAsB,KAAK,CAAA,CAAE,CAAA;AAC1C,UAAA,MAAM,IAAI,WAAA,CAAY,CAAA,EAAG,CAAA,mBAAA,EAAsB,KAAK,CAAA,CAAE,CAAA;AAAA,QACxD;AAAA,MACF;AAAA;AAAA;AAAA;AAAA,MAKA,MAAgB,QAAQ,MAAA,EAMyB;AAC/C,QAAA,MAAM,MAAM,IAAA,CAAK,QAAA,CAAS,MAAA,CAAO,IAAA,EAAM,OAAO,KAAK,CAAA;AACnD,QAAA,MAAM,UAAA,GAAa,IAAA,CAAK,cAAA,CAAe,EAAE,OAAA,EAAS,OAAO,OAAA,EAAS,MAAA,EAAQ,MAAA,CAAO,MAAA,EAAQ,CAAA;AAEzF,QAAA,IAAI;AACF,UAAA,MAAM,MAAM,MAAA,CAAO,WAAA,CAAY,IAAA,CAAK,MAAA,EAAQ,OAAO,MAAM,CAAA;AACzD,UAAA,MAAM,QAAA,GAAW,MAAM,KAAA,CAAM,GAAA,EAAK;AAAA,YAChC,MAAA,EAAQ,KAAA;AAAA,YACR,OAAA,EAAS,UAAA;AAAA,YACT,MAAA,EAAQ,WAAA,CAAY,OAAA,CAAQ,GAAA,CAAI,OAAO;AAAA,WACxC,CAAA;AAED,UAAA,IAAI,CAAC,SAAS,EAAA,EAAI;AAChB,YAAA,MAAM,SAAA,GAAY,MAAM,QAAA,CAAS,IAAA,EAAK;AACtC,YAAA,MAAM,IAAI,WAAA,CAAY,QAAA,CAAS,MAAA,EAAQ,SAAS,CAAA;AAAA,UAClD;AAEA,UAAA,MAAM,WAAA,GAAc,MAAM,QAAA,CAAS,WAAA,EAAY;AAC/C,UAAA,MAAM,MAAA,GAAS,MAAA,CAAO,IAAA,CAAK,WAAW,CAAA;AAEtC,UAAA,MAAS,GAAA,CAAA,QAAA,CAAS,SAAA,CAAU,MAAA,CAAO,QAAA,EAAU,MAAM,CAAA;AAEnD,UAAA,OAAO;AAAA,YACL,WAAW,MAAA,CAAO,QAAA;AAAA,YAClB,MAAM,MAAA,CAAO;AAAA,WACf;AAAA,QACF,SAAS,KAAA,EAAO;AACd,UAAA,IAAI,iBAAiB,WAAA,EAAa;AAChC,YAAA,MAAM,KAAA;AAAA,UACR;AACA,UAAA,MAAA,CAAO,KAAA,CAAM,CAAA,qBAAA,EAAwB,KAAK,CAAA,CAAE,CAAA;AAC5C,UAAA,MAAM,IAAI,WAAA,CAAY,CAAA,EAAG,CAAA,qBAAA,EAAwB,KAAK,CAAA,CAAE,CAAA;AAAA,QAC1D;AAAA,MACF;AAAA,KACF;AAAA,EAAA;AAAA,CAAA,CAAA;;;ACvXA,IAiBa;AAjBb,IAAA,aAAA,GAAA,KAAA,CAAA;AAAA,EAAA,6BAAA,GAAA;AASA,IAAA,iBAAA,EAAA;AACA,IAAA,0BAAA,EAAA;AAOO,IAAM,UAAA,GAAN,cAAyB,sBAAA,CAAuB;AAAA,MAC7C,UAAA;AAAA,MAER,YAAY,MAAA,EAAgD;AAC1D,QAAA,KAAA,CAAM;AAAA,UACJ,WAAW,MAAA,CAAO,SAAA;AAAA,UAClB,QAAQ,MAAA,CAAO;AAAA,SAChB,CAAA;AAED,QAAA,IAAA,CAAK,UAAA,GAAa,IAAI,cAAA,CAAe;AAAA,UACnC,WAAW,MAAA,CAAO,SAAA;AAAA,UAClB,QAAQ,MAAA,CAAO;AAAA,SAChB,CAAA;AAAA,MACH;AAAA;AAAA;AAAA;AAAA;AAAA,MAOA,UAAU,MAAA,EAA0B;AAClC,QAAA,OAAO,IAAA,CAAK,UAAA,CAAW,SAAA,CAAU,MAAM,CAAA;AAAA,MACzC;AAAA;AAAA;AAAA;AAAA,MAKA,UAAU,MAAA,EAA0B;AAClC,QAAA,OAAO,IAAA,CAAK,UAAA,CAAW,SAAA,CAAU,MAAM,CAAA;AAAA,MACzC;AAAA;AAAA;AAAA;AAAA,MAKA,cAAA,GAAiB,OAAO,MAAA,KAA+C;AACrE,QAAA,OAAO,IAAA,CAAK,UAAA,CAAW,cAAA,CAAe,MAAM,CAAA;AAAA,MAC9C,CAAA;AAAA;AAAA;AAAA;AAAA,MAKA,eAAA,GAAkB,OAAO,MAAA,KAAgE;AACvF,QAAA,OAAO,IAAA,CAAK,UAAA,CAAW,eAAA,CAAgB,MAAM,CAAA;AAAA,MAC/C,CAAA;AAAA;AAAA;AAAA;AAAA,MAKA,iBAAA,GAAoB,OAAO,MAAA,KAGyB;AAClD,QAAA,OAAO,IAAA,CAAK,UAAA,CAAW,iBAAA,CAAkB,MAAM,CAAA;AAAA,MACjD,CAAA;AAAA,KACF;AAAA,EAAA;AAAA,CAAA,CAAA;;;ACvEA,IAAA,aAAA,GAAA,KAAA,CAAA;AAAA,EAAA,uBAAA,GAAA;AAaA,IAAA,WAAA,EAAA;AACA,IAAA,cAAA,EAAA;AACA,IAAA,QAAA,EAAA;AAAA,EAAA;AAAA,CAAA,CAAA;;;ACfA,IAAA,UAAA,GAAA,KAAA,CAAA;AAAA,EAAA,oBAAA,GAAA;AAIA,IAAA,kBAAA,EAAA;AAEA,IAAA,WAAA,EAAA;AACA,IAAA,aAAA,EAAA;AACA,IAAA,cAAA,EAAA;AAQA,IAAA,QAAA,EAAA;AACA,IAAA,UAAA,EAAA;AAAA,EAAA;AAAA,CAAA,CAAA;;;ACIO,SAAS,sBAAA,CAAuB,QAAa,MAAA,EAAmB;AACrE,EAAA,KAAA,MAAW,OAAO,MAAA,EAAQ;AACxB,IAAA,IACE,OAAO,SAAA,CAAU,cAAA,CAAe,IAAA,CAAK,MAAA,EAAQ,GAAG,CAAA,IAChD,OAAO,MAAA,CAAO,GAAG,MAAM,UAAA,IACvB,CAAC,GAAA,CAAI,UAAA,CAAW,GAAG,CAAA,EACnB;AACA,MAAA,MAAA,CAAO,GAAG,CAAA,GAAI,MAAA,CAAO,GAAG,CAAA;AAAA,IAC1B;AAAA,EACF;AACF;AAqHO,SAAS,yBAGd,IAAA,EAAsD;AACtD,EAAA,OAAO,OACL,MAAA,KAGG;AACH,IAAA,MAAM,EAAE,MAAA,EAAAA,OAAAA,EAAQ,GAAG,UAAA,EAAW,GAAI,UAAU,EAAC;AAE7C,IAAA,MAAM,aAA2B,EAAC;AAClC,IAAA,IAAI,IAAA,GAAO,CAAA;AACX,IAAA,MAAM,QAAA,GAAW,EAAA;AACjB,IAAA,OAAO,IAAA,EAAM;AACX,MAAA,MAAM,WAAA,GAAc,MAAM,IAAA,CAAK;AAAA,QAC7B,KAAA,EAAO;AAAA,UACL,GAAG,UAAA;AAAA,UACH,UAAA,EAAY,IAAA;AAAA,UACZ;AAAA,SACF;AAAA,QACA,MAAA,EAAAA;AAAA,OACa,CAAA;AAEf,MAAA,IAAA,IAAQ,CAAA;AACR,MAAA,UAAA,CAAW,IAAA,CAAK,GAAG,WAAW,CAAA;AAC9B,MAAA,IAAI,WAAA,CAAY,SAAS,QAAA,EAAU;AAAA,IACrC;AAEA,IAAA,MAAM,SAAA,uBAAgB,GAAA,EAAY;AAClC,IAAA,MAAM,UAAiB,EAAC;AACxB,IAAA,KAAA,MAAW,QAAQ,UAAA,EAAY;AAC7B,MAAA,MAAM,MAAA,GAAS,IAAA,CAAK,cAAA,EAAe,IAAK,EAAA;AACxC,MAAA,IAAI,CAAC,SAAA,CAAU,GAAA,CAAI,MAAM,KAAK,MAAA,EAAQ;AACpC,QAAA,SAAA,CAAU,IAAI,MAAM,CAAA;AACpB,QAAA,OAAA,CAAQ,KAAK,IAAI,CAAA;AAAA,MACnB;AAAA,IACF;AAEA,IAAA,OAAO,OAAA;AAAA,EACT,CAAA;AACF;AA7LA,IAyCsB,YAAA;AAzCtB,IAAA,aAAA,GAAA,KAAA,CAAA;AAAA,EAAA,uBAAA,GAAA;AAQA,IAAA,cAAA,EAAA;AACA,IAAA,QAAA,EAAA;AACA,IAAA,UAAA,EAAA;AA+BO,IAAe,eAAf,MAA4B;AAAA,MAC1B,MAAA;AAAA,MACG,OAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAYV,SAAA,GAAY,OAAO,MAAA,KAIU;AAC3B,QAAA,MAAM,EAAE,qBAAA,EAAuB,eAAA,GAAkB,CAAA,EAAG,cAAA,GAAiB,KAAI,GAAI,MAAA;AAE7E,QAAA,MAAM,SAAA,GAAY,KAAK,GAAA,EAAI;AAC3B,QAAA,OAAO,IAAA,EAAM;AACX,UAAA,IAAI,MAAM,qBAAA,CAAsB,IAAI,CAAA,EAAG,OAAO,IAAA;AAE9C,UAAA,IAAI,IAAA,CAAK,GAAA,EAAI,GAAI,SAAA,IAAa,iBAAiB,GAAA,EAAM;AACnD,YAAA,MAAM,IAAI,MAAM,qDAAqD,CAAA;AAAA,UACvE;AAEA,UAAA,MAAM,IAAI,OAAA,CAAQ,CAAA,OAAA,KAAW,WAAW,OAAA,EAAS,eAAA,GAAkB,GAAI,CAAC,CAAA;AAAA,QAC1E;AAAA,MACF,CAAA;AAAA,MAEA,sBAAA,GAAyB,OAAO,MAAA,KAI1B;AACJ,QAAA,MAAM,EAAE,UAAU,eAAA,GAAkB,CAAA,EAAG,iBAAiB,GAAA,EAAI,GAAI,UAAU,EAAC;AAE3E,QAAA,eAAe,sBAAsB,QAAA,EAAwB;AAC3D,UAAA,MAAM,SAAS,OAAA,EAAQ;AACvB,UAAA,IAAI,QAAA,EAAU,MAAM,QAAA,CAAS,QAAQ,CAAA;AACrC,UAAA,MAAA,CAAO,KAAA,CAAM,CAAA,iBAAA,EAAqB,QAAA,CAAiB,MAAM,CAAA,CAAE,CAAA;AAE3D,UAAA,OAAO,aAAA,CAAc,SAAS,MAAM,CAAA;AAAA,QACtC;AAEA,QAAA,OAAO,MAAM,KAAK,SAAA,CAAU;AAAA,UAC1B,qBAAA;AAAA,UACA,eAAA;AAAA,UACA;AAAA,SACD,CAAA;AAAA,MACH,CAAA;AAAA,MAEA,0BAAA,GAA6B,OAAO,MAAA,KAI9B;AACJ,QAAA,MAAM,EAAE,UAAU,eAAA,GAAkB,CAAA,EAAG,iBAAiB,GAAA,EAAI,GAAI,UAAU,EAAC;AAE3E,QAAA,IAAI;AACF,UAAA,MAAM,KAAK,MAAA,EAAO;AAAA,QACpB,SAAS,KAAA,EAAO;AACd,UAAA,IAAI,iBAAiB,qBAAA,EAAuB;AAAA,QAC9C;AAEA,QAAA,eAAe,sBAAsB,QAAA,EAAwB;AAC3D,UAAA,IAAI;AACF,YAAA,MAAM,SAAS,OAAA,EAAQ;AACvB,YAAA,IAAI,QAAA,EAAU,MAAM,QAAA,CAAS,QAAQ,CAAA;AAAA,UACvC,SAAS,KAAA,EAAO;AAEd,YAAA,IAAI,KAAA,YAAiB,uBAAuB,OAAO,IAAA;AACnD,YAAA,IAAI,QAAA,CAAS,MAAA,KAAW,MAAA,CAAO,QAAA,EAAU,OAAO,KAAA;AAEhD,YAAA,MAAM,KAAA,CAAM,CAAA,mBAAA,EAAsB,QAAA,CAAS,MAAM,CAAA,CAAE,CAAA;AAAA,UACrD;AAEA,UAAA,OAAO,KAAA;AAAA,QACT;AAEA,QAAA,OAAO,MAAM,KAAK,SAAA,CAAU;AAAA,UAC1B,qBAAA;AAAA,UACA,eAAA;AAAA,UACA;AAAA,SACD,CAAA;AAAA,MACH,CAAA;AAAA,MAEA,UAAU,OAAO,MAAA,KAA8B,MAAM,IAAA,CAAK,IAAI,MAAM,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAOpE,WAAW,MAAA,EAAmB;AAC5B,QAAA,sBAAA,CAAuB,MAAM,MAAM,CAAA;AAAA,MACrC;AAAA,MAEA,SAAA,GAAY,CAACA,OAAAA,KAAmB;AAC9B,QAAA,IAAA,CAAK,OAAA,GAAUA,OAAAA;AACf,QAAA,OAAO,IAAA;AAAA,MACT,CAAA;AAAA,KACF;AAAA,EAAA;AAAA,CAAA,CAAA;;;AClJA,IAAA,gCAAA,GAAA,EAAA;AAAA,QAAA,CAAA,gCAAA,EAAA;AAAA,EAAA,sBAAA,EAAA,MAAA,sBAAA;AAAA,EAAA,iBAAA,EAAA,MAAA,iBAAA;AAAA,EAAA,cAAA,EAAA,MAAA,cAAA;AAAA,EAAA,oBAAA,EAAA,MAAA,oBAAA;AAAA,EAAA,iBAAA,EAAA,MAAA;AAAA,CAAA,CAAA;AAAA,IAkBa,cAAA,CAAA,CA+BA,oBAAA,CAAA,CA+DA,iBAAA,CAAA,CAuCA,iBAAA,CAAA,CA2HA;AAlRb,IAAA,6BAAA,GAAA,KAAA,CAAA;AAAA,EAAA,yCAAA,GAAA;AAQA,IAAA,QAAA,EAAA;AACA,IAAA,cAAA,EAAA;AAEA,IAAA,0BAAA,EAAA;AACA,IAAAO,WAAAA,EAAAA;AACA,IAAA,YAAA,EAAA;AAKO,IAAM,iBAAN,MAAqB;AAAA,MAClB,OAAA;AAAA,MAER,YAAY,OAAA,EAAiC;AAC3C,QAAA,IAAA,CAAK,OAAA,GAAU,OAAA;AAAA,MACjB;AAAA;AAAA;AAAA;AAAA,MAKA,IAAA,GAAO,OAAO,MAAA,KAA2C;AACvD,QAAA,OAAO,IAAA,CAAK,OAAA,CAAQ,OAAA,CAAQ,QAAA,CAAS,MAAM,CAAA;AAAA,MAC7C,CAAA;AAAA;AAAA;AAAA;AAAA,MAKA,KAAA,GAAQ,OAAO,MAAA,KAMK;AAClB,QAAA,OAAO,IAAA,CAAK,OAAA,CAAQ,OAAA,CAAQ,SAAA,CAAU,MAAM,CAAA;AAAA,MAC9C,CAAA;AAAA,KACF;AAKO,IAAM,uBAAN,MAA2B;AAAA,MACxB,OAAA;AAAA,MAER,YAAY,OAAA,EAAiC;AAC3C,QAAA,IAAA,CAAK,OAAA,GAAU,OAAA;AAAA,MACjB;AAAA;AAAA;AAAA;AAAA,MAKA,IAAA,GAAO,OAAO,MAAA,KAA6D;AACzE,QAAA,OAAO,IAAA,CAAK,OAAA,CAAQ,OAAA,CAAQ,aAAA,CAAc,MAAM,CAAA;AAAA,MAClD,CAAA;AAAA;AAAA;AAAA;AAAA,MAKA,IAAA,GAAO,OAAO,MAAA,KAAkE;AAC9E,QAAA,OAAO,IAAA,CAAK,OAAA,CAAQ,OAAA,CAAQ,QAAA,CAAS,MAAM,CAAA;AAAA,MAC7C,CAAA;AAAA;AAAA;AAAA;AAAA,MAKA,MAAA,GAAS,OAAO,MAAA,KAA2C;AACzD,QAAA,OAAO,IAAA,CAAK,OAAA,CAAQ,OAAA,CAAQ,UAAA,CAAW,MAAM,CAAA;AAAA,MAC/C,CAAA;AAAA;AAAA;AAAA;AAAA,MAKA,IAAA,GAAO,OAAO,MAAA,KAA2C;AACvD,QAAA,OAAO,IAAA,CAAK,OAAA,CAAQ,OAAA,CAAQ,IAAA,CAAK,MAAM,CAAA;AAAA,MACzC,CAAA;AAAA;AAAA;AAAA;AAAA,MAKA,KAAA,GAAQ,OAAO,MAAA,KAA6E;AAC1F,QAAA,OAAO,IAAA,CAAK,OAAA,CAAQ,OAAA,CAAQ,KAAA,CAAM,MAAM,CAAA;AAAA,MAC1C,CAAA;AAAA;AAAA;AAAA;AAAA,MAKA,MAAA,GAAS,OAAO,MAAA,KAA4E;AAC1F,QAAA,OAAO,IAAA,CAAK,OAAA,CAAQ,OAAA,CAAQ,UAAA,CAAW,MAAM,CAAA;AAAA,MAC/C,CAAA;AAAA;AAAA;AAAA;AAAA,MAKA,QAAA,GAAW,OAAO,MAAA,KAGkC;AAClD,QAAA,OAAO,IAAA,CAAK,OAAA,CAAQ,OAAA,CAAQ,YAAA,CAAa,MAAM,CAAA;AAAA,MACjD,CAAA;AAAA,KACF;AAKO,IAAM,oBAAN,MAAwB;AAAA,MACrB,OAAA;AAAA,MAER,YAAY,OAAA,EAAiC;AAC3C,QAAA,IAAA,CAAK,OAAA,GAAU,OAAA;AAAA,MACjB;AAAA;AAAA;AAAA;AAAA,MAKA,GAAA,GAAM,OAAO,MAAA,KAA6E;AACxF,QAAA,OAAO,IAAA,CAAK,OAAA,CAAQ,OAAA,CAAQ,GAAA,CAAI,MAAM,CAAA;AAAA,MACxC,CAAA;AAAA;AAAA;AAAA;AAAA,MAKA,IAAA,GAAO,OAAO,MAAA,KAA+C;AAC3D,QAAA,OAAO,IAAA,CAAK,OAAA,CAAQ,OAAA,CAAQ,aAAA,CAAc,MAAM,CAAA;AAAA,MAClD,CAAA;AAAA;AAAA;AAAA;AAAA,MAKA,GAAA,GAAM,OAAO,MAAA,KAA0C;AACrD,QAAA,OAAO,IAAA,CAAK,OAAA,CAAQ,OAAA,CAAQ,UAAA,CAAW,MAAM,CAAA;AAAA,MAC/C,CAAA;AAAA;AAAA;AAAA;AAAA,MAKA,IAAA,GAAO,OAAO,MAAA,KAA0C;AACtD,QAAA,OAAO,IAAA,CAAK,OAAA,CAAQ,OAAA,CAAQ,WAAA,CAAY,MAAM,CAAA;AAAA,MAChD,CAAA;AAAA,KACF;AAKO,IAAM,oBAAN,MAAwB;AAAA,MACrB,OAAA;AAAA,MACA,UAAA;AAAA,MACA,SAAA;AAAA,MACA,IAAA;AAAA,MAER,YAAY,OAAA,EAAiC;AAC3C,QAAA,IAAA,CAAK,OAAA,GAAU,OAAA;AAAA,MACjB;AAAA;AAAA;AAAA;AAAA,MAKA,IAAI,SAAA,GAAgC;AAClC,QAAA,OAAO,IAAA,CAAK,UAAA;AAAA,MACd;AAAA;AAAA;AAAA;AAAA,MAKA,IAAA,GAAO,OAAO,MAAA,KAA+C;AAC3D,QAAA,OAAO,IAAA,CAAK,OAAA,CAAQ,OAAA,CAAQ,YAAA,CAAa,MAAM,CAAA;AAAA,MACjD,CAAA;AAAA;AAAA;AAAA;AAAA,MAKA,MAAA,GAAS,OAAO,MAAA,KAGkB;AAChC,QAAA,MAAM,WAAW,MAAA,EAAQ,QAAA,IAAA,QAAA;AACzB,QAAA,MAAM,GAAA,GAAM,QAAQ,GAAA,IAAO,YAAA;AAE3B,QAAA,MAAM,MAAA,GAAS,MAAM,IAAA,CAAK,OAAA,CAAQ,QAAQ,aAAA,CAAc;AAAA,UACtD,QAAA;AAAA,UACA;AAAA,SACD,CAAA;AAED,QAAA,IAAI,MAAA,EAAQ,EAAA,IAAM,MAAA,EAAQ,GAAA,IAAO,QAAQ,QAAA,EAAU;AACjD,UAAA,IAAA,CAAK,aAAa,MAAA,CAAO,EAAA;AACzB,UAAA,IAAA,CAAK,YAAY,MAAA,CAAO,QAAA;AACxB,UAAA,IAAA,CAAK,OAAO,MAAA,CAAO,GAAA;AACnB,UAAA,OAAO,IAAA;AAAA,QACT;AAEA,QAAA,MAAM,IAAI,WAAA,CAAY,GAAA,EAAK,0BAA0B,CAAA;AAAA,MACvD,CAAA;AAAA;AAAA;AAAA;AAAA,MAKA,GAAA,GAAM,OAAO,MAAA,KAAgE;AAC3E,QAAA,MAAM,EAAA,GAAK,MAAA,EAAQ,SAAA,IAAa,IAAA,CAAK,UAAA;AACrC,QAAA,IAAI,CAAC,EAAA,EAAI;AACP,UAAA,MAAA,CAAO,MAAM,uBAAuB,CAAA;AACpC,UAAA,MAAM,IAAI,MAAM,uBAAuB,CAAA;AAAA,QACzC;AAEA,QAAA,MAAM,MAAA,GAAS,MAAM,IAAA,CAAK,OAAA,CAAQ,QAAQ,UAAA,CAAW,EAAE,SAAA,EAAW,EAAA,EAAI,CAAA;AAEtE,QAAA,IAAI,MAAA,EAAQ,EAAA,IAAM,MAAA,EAAQ,GAAA,IAAO,QAAQ,QAAA,EAAU;AACjD,UAAA,IAAA,CAAK,aAAa,MAAA,CAAO,EAAA;AACzB,UAAA,IAAA,CAAK,YAAY,MAAA,CAAO,QAAA;AACxB,UAAA,IAAA,CAAK,OAAO,MAAA,CAAO,GAAA;AACnB,UAAA,OAAO,IAAA;AAAA,QACT;AAEA,QAAA,MAAM,IAAI,WAAA,CAAY,GAAA,EAAK,uBAAuB,CAAA;AAAA,MACpD,CAAA;AAAA;AAAA;AAAA;AAAA,MAKA,OAAA,GAAU,OAAO,MAAA,KAKG;AAClB,QAAA,MAAM,EAAE,IAAA,EAAM,OAAA,GAAU,EAAA,EAAG,GAAI,MAAA;AAC/B,QAAA,IAAI,EAAE,SAAA,EAAW,QAAA,EAAS,GAAI,MAAA;AAE9B,QAAA,IAAI,CAAC,SAAA,EAAW;AACd,UAAA,SAAA,GAAY,IAAA,CAAK,UAAA;AAAA,QACnB;AAEA,QAAA,IAAI,CAAC,SAAA,IAAa,CAAC,QAAA,EAAU;AAC3B,UAAA,MAAA,CAAO,MAAM,qDAAqD,CAAA;AAClE,UAAA,QAAA,GAAA,QAAA;AAAA,QACF;AAEA,QAAA,OAAO,IAAA,CAAK,OAAA,CAAQ,OAAA,CAAQ,WAAA,CAAY;AAAA,UACtC,IAAA;AAAA,UACA,SAAA;AAAA,UACA,QAAA;AAAA,UACA;AAAA,SACD,CAAA;AAAA,MACH,CAAA;AAAA;AAAA;AAAA;AAAA,MAKA,MAAA,GAAS,OAAO,MAAA,KAAkD;AAChE,QAAA,MAAM,EAAA,GAAK,MAAA,EAAQ,SAAA,IAAa,IAAA,CAAK,UAAA;AACrC,QAAA,IAAI,CAAC,EAAA,EAAI;AACP,UAAA,MAAM,IAAI,KAAA;AAAA,YACR;AAAA,WACF;AAAA,QACF;AAEA,QAAA,MAAM,MAAA,GAAS,MAAM,IAAA,CAAK,OAAA,CAAQ,QAAQ,aAAA,CAAc,EAAE,SAAA,EAAW,EAAA,EAAI,CAAA;AAEzE,QAAA,IAAA,CAAK,UAAA,GAAa,MAAA;AAClB,QAAA,OAAO,MAAA;AAAA,MACT,CAAA;AAAA,KACF;AAOO,IAAM,sBAAA,GAAN,cAAqC,OAAA,CAAQ;AAAA,MAClD,OAAO,YAAA,GAAA,iBAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAMP,aAAa,kBAAA,CACX,YAAA,EACA,OAAA,EAMAP,OAAAA,EACiC;AACjC,QAAA,MAAM,OAAA,GAAU,MAAM,OAAA,CAAQ,MAAA,CAAO;AAAA,UACnC,KAAA,EAAO;AAAA,YACL,YAAA;AAAA,YACA,2BAA2B,OAAA,EAAS,yBAAA;AAAA,YACpC,WAAW,OAAA,EAAS,SAAA;AAAA,YACpB,gBAAgB,OAAA,EAAS,cAAA;AAAA,YACzB,eAAe,OAAA,EAAS;AAAA,WAC1B;AAAA,UACA,YAAA,EAAA,iBAAA;AAAA,UACA,MAAA,EAAAA;AAAA,SACD,CAAA;AAED,QAAA,OAAO,OAAA;AAAA,MACT;AAAA,MAEA,WAAA,CAAY,SAAkBA,OAAAA,EAAiB;AAC7C,QAAA,KAAA,CAAM,SAASA,OAAM,CAAA;AAAA,MACvB;AAAA,MAEQ,QAAA;AAAA,MACA,KAAA;AAAA,MACA,WAAA;AAAA,MACA,QAAA;AAAA,MACA,QAAA;AAAA;AAAA;AAAA;AAAA,MAKR,IAAI,OAAA,GAAkC;AACpC,QAAA,IAAI,CAAC,KAAK,QAAA,EAAU;AAClB,UAAA,IAAA,CAAK,QAAA,GAAW,IAAI,sBAAA,CAAuB;AAAA,YACzC,SAAA,EAAW,KAAK,SAAA,IAAa,EAAA;AAAA,YAC7B,QAAQ,IAAA,CAAK;AAAA,WACd,CAAA;AAAA,QACH;AACA,QAAA,OAAO,IAAA,CAAK,QAAA;AAAA,MACd;AAAA;AAAA;AAAA;AAAA,MAKA,IAAI,IAAA,GAAuB;AACzB,QAAA,IAAI,CAAC,KAAK,KAAA,EAAO;AACf,UAAA,IAAA,CAAK,KAAA,GAAQ,IAAI,cAAA,CAAe,IAAI,CAAA;AAAA,QACtC;AACA,QAAA,OAAO,IAAA,CAAK,KAAA;AAAA,MACd;AAAA;AAAA;AAAA;AAAA,MAKA,IAAI,UAAA,GAAmC;AACrC,QAAA,IAAI,CAAC,KAAK,WAAA,EAAa;AACrB,UAAA,IAAA,CAAK,WAAA,GAAc,IAAI,oBAAA,CAAqB,IAAI,CAAA;AAAA,QAClD;AACA,QAAA,OAAO,IAAA,CAAK,WAAA;AAAA,MACd;AAAA;AAAA;AAAA;AAAA,MAKA,IAAI,OAAA,GAA6B;AAC/B,QAAA,IAAI,CAAC,KAAK,QAAA,EAAU;AAClB,UAAA,IAAA,CAAK,QAAA,GAAW,IAAI,iBAAA,CAAkB,IAAI,CAAA;AAAA,QAC5C;AACA,QAAA,OAAO,IAAA,CAAK,QAAA;AAAA,MACd;AAAA;AAAA;AAAA;AAAA,MAKA,IAAI,OAAA,GAA6B;AAC/B,QAAA,IAAI,CAAC,KAAK,QAAA,EAAU;AAClB,UAAA,IAAA,CAAK,QAAA,GAAW,IAAI,iBAAA,CAAkB,IAAI,CAAA;AAAA,QAC5C;AACA,QAAA,OAAO,IAAA,CAAK,QAAA;AAAA,MACd;AAAA;AAAA;AAAA;AAAA,MAKA,WAAA,GAAc,OAAO,MAAA,KAEkC;AACrD,QAAA,OAAO,IAAA,CAAK,QAAQ,WAAA,CAAY;AAAA,UAC9B,WAAW,IAAA,CAAK,SAAA;AAAA,UAChB,QAAQ,MAAA,EAAQ;AAAA,SACjB,CAAA;AAAA,MACH,CAAA;AAAA;AAAA;AAAA;AAAA,MAKA,OAAA,GAAU,OAAO,MAAA,KAKG;AAClB,QAAA,OAAO,IAAA,CAAK,OAAA,CAAQ,OAAA,CAAQ,MAAM,CAAA;AAAA,MACpC,CAAA;AAAA,KACF;AAAA,EAAA;AAAA,CAAA,CAAA;;;ACxYA,IAAA,uBAAA,GAAA,EAAA;AAAA,QAAA,CAAA,uBAAA,EAAA;AAAA,EAAA,cAAA,EAAA,MAAA;AAAA,CAAA,CAAA;AAAA,IAkBa;AAlBb,IAAA,oBAAA,GAAA,KAAA,CAAA;AAAA,EAAA,gCAAA,GAAA;AASA,IAAA,iBAAA,EAAA;AACA,IAAAO,WAAAA,EAAAA;AACA,IAAA,YAAA,EAAA;AAOO,IAAM,cAAA,GAAN,cAA6B,OAAA,CAAQ;AAAA,MAC1C,OAAO,YAAA,GAAA,SAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAMP,aAAa,kBAAA,CACX,YAAA,EACA,OAAA,EAMAP,OAAAA,EACyB;AACzB,QAAA,MAAM,OAAA,GAAU,MAAM,OAAA,CAAQ,MAAA,CAAO;AAAA,UACnC,KAAA,EAAO;AAAA,YACL,YAAA;AAAA,YACA,2BAA2B,OAAA,EAAS,yBAAA;AAAA,YACpC,WAAW,OAAA,EAAS,SAAA;AAAA,YACpB,gBAAgB,OAAA,EAAS,cAAA;AAAA,YACzB,eAAe,OAAA,EAAS;AAAA,WAC1B;AAAA,UACA,YAAA,EAAA,SAAA;AAAA,UACA,MAAA,EAAAA;AAAA,SACD,CAAA;AAED,QAAA,OAAO,OAAA;AAAA,MACT;AAAA,MAEA,WAAA,CAAY,SAAkBA,OAAAA,EAAiB;AAC7C,QAAA,KAAA,CAAM,SAASA,OAAM,CAAA;AAAA,MACvB;AAAA,MAEQ,QAAA;AAAA;AAAA;AAAA;AAAA,MAKR,IAAI,OAAA,GAA0B;AAC5B,QAAA,IAAI,CAAC,KAAK,QAAA,EAAU;AAClB,UAAA,IAAI,CAAC,KAAK,SAAA,EAAW;AACnB,YAAA,MAAM,IAAI,MAAM,uBAAuB,CAAA;AAAA,UACzC;AAEA,UAAA,IAAA,CAAK,QAAA,GAAW,IAAI,cAAA,CAAe;AAAA,YACjC,WAAW,IAAA,CAAK,SAAA;AAAA,YAChB,QAAQ,IAAA,CAAK;AAAA,WACd,CAAA;AAAA,QACH;AACA,QAAA,OAAO,IAAA,CAAK,QAAA;AAAA,MACd;AAAA;AAAA;AAAA;AAAA,MAKA,WAAA,GAAc,OAAO,MAAA,KAEkC;AACrD,QAAA,OAAO,IAAA,CAAK,QAAQ,WAAA,CAAY;AAAA,UAC9B,WAAW,IAAA,CAAK,SAAA;AAAA,UAChB,QAAQ,MAAA,EAAQ;AAAA,SACjB,CAAA;AAAA,MACH,CAAA;AAAA;AAAA;AAAA;AAAA,MAKA,UAAU,MAAA,EAA0B;AAClC,QAAA,OAAO,IAAA,CAAK,OAAA,CAAQ,SAAA,CAAU,MAAM,CAAA;AAAA,MACtC;AAAA;AAAA;AAAA;AAAA,MAKA,UAAU,MAAA,EAA0B;AAClC,QAAA,OAAO,IAAA,CAAK,OAAA,CAAQ,SAAA,CAAU,MAAM,CAAA;AAAA,MACtC;AAAA;AAAA;AAAA;AAAA,MAKA,cAAA,GAAiB,OAAO,MAAA,KAA+C;AACrE,QAAA,OAAO,IAAA,CAAK,OAAA,CAAQ,cAAA,CAAe,MAAM,CAAA;AAAA,MAC3C,CAAA;AAAA;AAAA;AAAA;AAAA,MAKA,iBAAA,GAAoB,OAAO,MAAA,KAGyB;AAClD,QAAA,OAAO,IAAA,CAAK,OAAA,CAAQ,iBAAA,CAAkB,MAAM,CAAA;AAAA,MAC9C,CAAA;AAAA;AAAA;AAAA;AAAA,MAKA,eAAA,GAAkB,OAAO,MAAA,KAAgE;AACvF,QAAA,OAAO,IAAA,CAAK,OAAA,CAAQ,eAAA,CAAgB,MAAM,CAAA;AAAA,MAC5C,CAAA;AAAA,KACF;AAAA,EAAA;AAAA,CAAA,CAAA;;;AC1HA,IAAA,sBAAA,GAAA,EAAA;AAAA,QAAA,CAAA,sBAAA,EAAA;AAAA,EAAA,aAAA,EAAA,MAAA;AAAA,CAAA,CAAA;AAAA,IAiBa;AAjBb,IAAA,mBAAA,GAAA,KAAA,CAAA;AAAA,EAAA,+BAAA,GAAA;AAMA,IAAA,WAAA,EAAA;AAEA,IAAAO,WAAAA,EAAAA;AACA,IAAA,YAAA,EAAA;AACA,IAAA,iBAAA,EAAA;AAOO,IAAM,aAAA,GAAN,cAA4B,OAAA,CAAQ;AAAA,MACzC,OAAO,YAAA,GAAA,aAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAMP,aAAa,kBAAA,CACX,YAAA,EACA,OAAA,EAMAP,OAAAA,EACwB;AACxB,QAAA,OAAQ,MAAM,QAAQ,MAAA,CAAO;AAAA,UAC3B,KAAA,EAAO;AAAA,YACL,YAAA;AAAA,YACA,2BAA2B,OAAA,EAAS,yBAAA;AAAA,YACpC,WAAW,OAAA,EAAS,SAAA;AAAA,YACpB,gBAAgB,OAAA,EAAS,cAAA;AAAA,YACzB,eAAe,OAAA,EAAS;AAAA,WAC1B;AAAA,UACA,YAAA,EAAA,aAAA;AAAA,UACA,MAAA,EAAAA;AAAA,SACD,CAAA;AAAA,MACH;AAAA,MAEA,WAAA,CAAY,SAAkBA,OAAAA,EAAiB;AAC7C,QAAA,KAAA,CAAM,SAASA,OAAM,CAAA;AAAA,MACvB;AAAA,MAEQ,QAAA;AAAA;AAAA;AAAA;AAAA,MAKR,IAAI,OAAA,GAA0B;AAC5B,QAAA,IAAI,CAAC,KAAK,QAAA,EAAU;AAClB,UAAA,IAAA,CAAK,QAAA,GAAW,IAAI,cAAA,CAAe;AAAA,YACjC,SAAA,EAAW,KAAK,SAAA,IAAa,EAAA;AAAA,YAC7B,QAAQ,IAAA,CAAK;AAAA,WACd,CAAA;AAAA,QACH;AACA,QAAA,OAAO,IAAA,CAAK,QAAA;AAAA,MACd;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAQA,UAAA,GAAqB;AACnB,QAAA,MAAM,GAAA,GAAM,MAAA,CAAO,WAAA,CAAY,IAAA,CAAK,OAAO,CAAA;AAC3C,QAAA,OAAO,CAAA,EAAG,GAAA,CAAI,YAAY,CAAA,WAAA,EAAc,KAAK,SAAS,CAAA,CAAA;AAAA,MACxD;AAAA,KACF;AAAA,EAAA;AAAA,CAAA,CAAA;;;AC5EA,IA8Ba;AA9Bb,IAAA,YAAA,GAAA,KAAA,CAAA;AAAA,EAAA,wBAAA,GAAA;AAOA,IAAA,UAAA,EAAA;AACA,IAAA,QAAA,EAAA;AACA,IAAA,WAAA,EAAA;AACA,IAAA,aAAA,EAAA;AAEA,IAAAO,WAAAA,EAAAA;AAOA,IAAA,iBAAA,EAAA;AAWO,IAAM,OAAA,GAAN,MAAM,QAAA,SAAgB,YAAA,CAAoC;AAAA,MAC/D,YAAA;AAAA;AAAA;AAAA;AAAA,MAKA,SAAA;AAAA;AAAA;AAAA;AAAA,MAIA,WAAA;AAAA;AAAA;AAAA;AAAA,MAIA,UAAA;AAAA;AAAA;AAAA;AAAA,MAIA,YAAA;AAAA;AAAA;AAAA;AAAA,MAIA,KAAA;AAAA;AAAA;AAAA;AAAA,MAIA,WAAA;AAAA;AAAA;AAAA;AAAA,MAIA,SAAA;AAAA;AAAA;AAAA;AAAA,MAIA,aAAA;AAAA;AAAA;AAAA;AAAA,MAIA,yBAAA;AAAA;AAAA;AAAA;AAAA,MAIA,OAAA;AAAA;AAAA;AAAA;AAAA,MAIA,QAAA;AAAA;AAAA;AAAA;AAAA,MAIA,UAAA;AAAA;AAAA;AAAA;AAAA,MAIA,uBAAA;AAAA,MAEU,OAAA;AAAA,MAEV,WAAA,CAAY,MAA6BP,OAAAA,EAAiB;AACxD,QAAA,KAAA,EAAM;AAEN,QAAA,IAAI,IAAA,EAAM;AACR,UAAA,sBAAA,CAAuB,MAAM,IAAI,CAAA;AAAA,QACnC;AACA,QAAA,IAAA,CAAK,OAAA,GAAUA,OAAAA;AAAA,MACjB;AAAA;AAAA;AAAA;AAAA;AAAA,MAMA,OAAO,eAAA,CAAgB,GAAA,EAAUA,OAAAA,EAA0B;AACzD,QAAA,OAAO,IAAI,QAAA;AAAA,UACT;AAAA,YACE,WAAW,GAAA,CAAI,SAAA;AAAA,YACf,aAAa,GAAA,CAAI,WAAA;AAAA,YACjB,YAAY,GAAA,CAAI,UAAA;AAAA,YAChB,cAAc,GAAA,CAAI,YAAA;AAAA;AAAA,YAElB,KAAA,EAAQ,GAAA,CAAI,MAAA,IAAU,GAAA,CAAI,KAAA;AAAA,YAC1B,aAAa,GAAA,CAAI,WAAA;AAAA,YACjB,WAAW,GAAA,CAAI,SAAA;AAAA,YACf,eAAe,GAAA,CAAI,aAAA;AAAA,YACnB,2BAA2B,GAAA,CAAI,yBAAA;AAAA;AAAA,YAE/B,SAAS,GAAA,CAAI,OAAA;AAAA,YACb,UAAU,GAAA,CAAI,QAAA;AAAA,YACd,YAAY,GAAA,CAAI,UAAA;AAAA,YAChB,yBAAyB,GAAA,CAAI;AAAA,WAC/B;AAAA,UACAA;AAAA,SACF;AAAA,MACF;AAAA,MAEA,OAAe,SAAA,GAA2B;AAIxC,QAAA,MAAM,EAAE,aAAA,EAAAa,cAAAA,EAAc,IAAI,WAAA,EAAA,EAAA,YAAA,CAAA,cAAA,CAAA,CAAA;AAC1B,QAAA,OAAO,IAAIA,cAAAA,EAAc;AAAA,MAC3B;AAAA,MAkCA,aAAa,MAAA,CACX,IAAA,EAOA,IAAA,EACkB;AAClB,QAAA,IAAI,OAAO,IAAA,KAAS,QAAA,IAAY,IAAA,KAAS,IAAA,IAAQ,WAAW,IAAA,EAAM;AAEhE,UAAA,OAAO,MAAM,QAAA,CAAQ,SAAA,EAAU,CAAE,cAAc,IAAI,CAAA;AAAA,QACrD;AAEA,QAAA,MAAA,CAAO,IAAA;AAAA,UACL;AAAA,SACF;AACA,QAAA,OAAO,MAAM,QAAA,CAAQ,SAAA,EAAU,CAAE,aAAA,CAAc,MAA4B,IAAI,CAAA;AAAA,MACjF;AAAA,MAQA,aAAa,MAAA,CACX,IAAA,EACA,IAAA,EACkB;AAClB,QAAA,IAAI,OAAO,SAAS,QAAA,EAAU;AAE5B,UAAA,MAAA,CAAO,IAAA;AAAA,YACL;AAAA,WACF;AACA,UAAA,OAAO,MAAM,QAAA,CAAQ,SAAA,EAAU,CAAE,aAAA,CAAc,MAAM,IAAI,CAAA;AAAA,QAC3D;AAEA,QAAA,OAAO,MAAM,QAAA,CAAQ,SAAA,EAAU,CAAE,cAAc,IAAI,CAAA;AAAA,MACrD;AAAA,MAQA,aAAa,IAAA,CACX,IAAA,EACA,IAAA,EACkB;AAClB,QAAA,IAAI,OAAO,SAAS,QAAA,EAAU;AAE5B,UAAA,MAAA,CAAO,IAAA;AAAA,YACL;AAAA,WACF;AACA,UAAA,OAAO,MAAM,QAAA,CAAQ,SAAA,EAAU,CAAE,WAAA,CAAY,MAAM,IAAI,CAAA;AAAA,QACzD;AAEA,QAAA,OAAO,MAAM,QAAA,CAAQ,SAAA,EAAU,CAAE,YAAY,IAAI,CAAA;AAAA,MACnD;AAAA,MAYA,aAAa,GAAA,CACX,IAAA,EACA,IAAA,EACA,IAAA,EACkB;AAClB,QAAA,IAAI,EAAA;AACJ,QAAA,IAAI,YAAA;AACJ,QAAA,IAAIb,OAAAA;AAEJ,QAAA,IAAI,OAAO,SAAS,QAAA,EAAU;AAC5B,UAAA,MAAA,CAAO,IAAA;AAAA,YACL;AAAA,WACF;AACA,UAAA,EAAA,GAAK,IAAA;AACL,UAAA,IAAI,IAAA,IAAQ,OAAO,IAAA,KAAS,QAAA,EAAU;AACpC,YAAA,YAAA,GAAe,IAAA;AACf,YAAAA,OAAAA,GAAS,IAAA;AAAA,UACX,CAAA,MAAO;AACL,YAAAA,OAAAA,GAAS,IAAA;AAAA,UACX;AAAA,QACF,CAAA,MAAO;AACL,UAAA,EAAA,GAAK,IAAA,CAAK,EAAA;AACV,UAAA,YAAA,GAAe,IAAA,CAAK,YAAA;AACpB,UAAAA,UAAS,IAAA,CAAK,MAAA;AAAA,QAChB;AAEA,QAAA,IAAI;AACF,UAAA,MAAM,GAAA,GAAM,MAAA,CAAO,WAAA,CAAYA,OAAM,CAAA;AAGrC,UAAA,MAAM,OAAA,GAAU,IAAI,cAAA,CAAe;AAAA,YACjC,SAAA,EAAW,EAAA;AAAA,YACX,MAAA,EAAQ;AAAA,WACT,CAAA;AAED,UAAA,MAAM,MAAA,GAAS,MAAM,OAAA,CAAQ,UAAA,CAAW;AAAA,YACtC,SAAA,EAAW,EAAA;AAAA,YACX,MAAA,EAAQ;AAAA,WACT,CAAA;AAGD,UAAA,IAAI,MAAA,CAAO,SAAS,SAAA,EAAW;AAC7B,YAAA,MAAM,IAAI,WAAA,CAAY,CAAA,EAAG,0BAA0B,MAAA,CAAO,OAAA,IAAW,eAAe,CAAA,CAAE,CAAA;AAAA,UACxF;AAGA,UAAA,MAAM,IAAA,GAAO,MAAA,CAAO,IAAA,IAAQ,EAAC;AAC7B,UAAA,MAAM,WAAA,GAAc,QAAA,CAAQ,eAAA,CAAgB,IAAA,EAAaA,OAAM,CAAA;AAG/D,UAAA,IAAI,YAAA,EAAc;AAEhB,YAAA,QAAQ,YAAA;AAAc,cACpB,KAAA,iBAAA,yBAAoC;AAClC,gBAAA,MAAM,EAAE,sBAAA,EAAAc,uBAAAA,EAAuB,GAAI,MAAM,OAAA,CAAA,OAAA,EAAA,CAAA,IAAA,CAAA,OAAA,6BAAA,EAAA,EAAA,gCAAA,CAAA,CAAA;AAEzC,gBAAA,MAAM,OAAA,GAAU,IAAIA,uBAAAA,CAAuB,WAAA,EAAad,OAAM,CAAA;AAC9D,gBAAA,OAAO,OAAA;AAAA,cACT;AAAA,cACA,KAAA,SAAA,gBAA2B;AACzB,gBAAA,MAAM,EAAE,cAAA,EAAAe,eAAAA,EAAe,GAAI,MAAM,OAAA,CAAA,OAAA,EAAA,CAAA,IAAA,CAAA,OAAA,oBAAA,EAAA,EAAA,uBAAA,CAAA,CAAA;AAEjC,gBAAA,MAAM,OAAA,GAAU,IAAIA,eAAAA,CAAe,WAAA,EAAaf,OAAM,CAAA;AACtD,gBAAA,OAAO,OAAA;AAAA,cACT;AAAA,cACA,KAAA,UAAA,YAAuB;AACrB,gBAAA,MAAM,EAAE,UAAA,EAAAgB,WAAAA,EAAW,GAAI,MAAM,OAAA,CAAA,OAAA,EAAA,CAAA,IAAA,CAAA,OAAA,gBAAA,EAAA,EAAA,mBAAA,CAAA,CAAA;AAE7B,gBAAA,MAAM,OAAA,GAAU,IAAIA,WAAAA,CAAW,WAAA,EAAahB,OAAM,CAAA;AAClD,gBAAA,OAAO,OAAA;AAAA,cACT;AAAA,cACA,KAAA,aAAA,eAA0B;AACxB,gBAAA,MAAM,EAAE,aAAA,EAAAiB,cAAAA,EAAc,GAAI,MAAM,OAAA,CAAA,OAAA,EAAA,CAAA,IAAA,CAAA,OAAA,mBAAA,EAAA,EAAA,sBAAA,CAAA,CAAA;AAEhC,gBAAA,MAAM,OAAA,GAAU,IAAIA,cAAAA,CAAc,WAAA,EAAajB,OAAM,CAAA;AACrD,gBAAA,OAAO,OAAA;AAAA,cACT;AAAA;AACF,UACF;AAEA,UAAA,OAAO,WAAA;AAAA,QACT,SAAS,KAAA,EAAO;AACd,UAAA,IAAI,iBAAiB,SAAA,EAAW;AAC9B,YAAA,MAAM,KAAA,CAAM,eAAA,CAAgB,SAAA,EAAW,EAAE,CAAA;AAAA,UAC3C;AACA,UAAA,MAAM,KAAA;AAAA,QACR;AAAA,MACF;AAAA,MAQA,aAAa,IAAA,CACX,IAAA,EACA,IAAA,EACoB;AAEpB,QAAA,IACE,IAAA,KAAS,MAAA,IACR,IAAA,KACE,YAAA,IAAgB,IAAA,IACf,WAAA,IAAe,IAAA,IACf,QAAA,IAAY,IAAA,IACZ,cAAA,IAAkB,IAAA,IAClB,cAAA,IAAkB,IAAA,CAAA,EACtB;AAEA,UAAA,MAAA,CAAO,IAAA;AAAA,YACL;AAAA,WACF;AACA,UAAA,OAAO,MAAM,QAAA,CAAQ,SAAA,EAAU,CAAE,aAAA,CAAc,MAA0B,IAAI,CAAA;AAAA,QAC/E;AAEA,QAAA,OAAO,MAAM,QAAA,CAAQ,SAAA,EAAU,CAAE,aAAA;AAAA,UAC/B;AAAA,SACF;AAAA,MACF;AAAA,MAEA,GAAA,GAAM,OAAO,MAAA,KAAiC;AAC5C,QAAA,MAAM,EAAE,MAAA,EAAAA,OAAAA,EAAO,GAAI,UAAU,EAAC;AAE9B,QAAA,OAAO,MAAM,SAAQ,GAAA,CAAI;AAAA,UACvB,IAAI,IAAA,CAAK,SAAA;AAAA,UACT,cAAc,IAAA,CAAK,YAAA;AAAA,UACnB,MAAA,EAAQ,MAAA,CAAO,WAAA,CAAY,IAAA,CAAK,SAASA,OAAM;AAAA,SAChD,CAAA;AAAA,MACH,CAAA;AAAA;AAAA;AAAA;AAAA,MAKA,MAAA,GAAS,OAAO,MAAA,KAAmD;AACjE,QAAA,MAAMA,UAAS,MAAA,EAAQ,MAAA;AACvB,QAAA,IAAI,CAAC,KAAK,SAAA,EAAW;AACnB,UAAA,MAAM,IAAI,MAAM,2CAA2C,CAAA;AAAA,QAC7D;AAEA,QAAA,MAAM,MAAA,GAAS,MAAM,QAAA,CAAQ,MAAA,CAAO;AAAA,UAClC,IAAI,IAAA,CAAK,SAAA;AAAA,UACT,MAAA,EAAQA,WAAU,IAAA,CAAK;AAAA,SACxB,CAAA;AACD,QAAA,sBAAA,CAAuB,MAAM,MAAM,CAAA;AACnC,QAAA,OAAO,IAAA;AAAA,MACT,CAAA;AAAA;AAAA;AAAA;AAAA,MAKA,IAAA,GAAO,OAAO,MAAA,KAAmD;AAC/D,QAAA,MAAMA,UAAS,MAAA,EAAQ,MAAA;AACvB,QAAA,IAAI,CAAC,KAAK,SAAA,EAAW;AACnB,UAAA,MAAM,IAAI,MAAM,yCAAyC,CAAA;AAAA,QAC3D;AAEA,QAAA,MAAM,MAAA,GAAS,MAAM,QAAA,CAAQ,IAAA,CAAK;AAAA,UAChC,IAAI,IAAA,CAAK,SAAA;AAAA,UACT,MAAA,EAAQA,WAAU,IAAA,CAAK;AAAA,SACxB,CAAA;AACD,QAAA,sBAAA,CAAuB,MAAM,MAAM,CAAA;AACnC,QAAA,OAAO,IAAA;AAAA,MACT,CAAA;AAAA;AAAA;AAAA;AAAA,MAKA,OAAA,GAAU,OAAO,MAAA,KAAmD;AAClE,QAAA,MAAMA,UAAS,MAAA,EAAQ,MAAA;AACvB,QAAA,IAAI,CAAC,KAAK,SAAA,EAAW;AACnB,UAAA,MAAM,IAAI,MAAM,4CAA4C,CAAA;AAAA,QAC9D;AAEA,QAAA,MAAM,MAAA,GAAS,MAAM,QAAA,CAAQ,GAAA,CAAI;AAAA,UAC/B,IAAI,IAAA,CAAK,SAAA;AAAA,UACT,MAAA,EAAQA,WAAU,IAAA,CAAK;AAAA,SACxB,CAAA;AACD,QAAA,sBAAA,CAAuB,MAAM,MAAM,CAAA;AACnC,QAAA,OAAO,IAAA;AAAA,MACT,CAAA;AAAA;AAAA;AAAA;AAAA,MAKA,gBAAA,GAAmB,OACjB,OAAA,EAKAA,OAAAA,KACqB;AACrB,QAAA,MAAM,OAAA,GAAA,CAAW,OAAA,EAAS,cAAA,IAAkB,GAAA,IAAO,GAAA;AACnD,QAAA,MAAM,QAAA,GAAA,CAAY,OAAA,EAAS,eAAA,IAAmB,CAAA,IAAK,GAAA;AACnD,QAAA,MAAM,SAAA,GAAY,KAAK,GAAA,EAAI;AAE3B,QAAA,OAAO,IAAA,CAAK,GAAA,EAAI,GAAI,SAAA,GAAY,OAAA,EAAS;AACvC,UAAA,MAAM,IAAA,CAAK,OAAA,CAAQ,EAAE,MAAA,EAAAA,SAAQ,CAAA;AAE7B,UAAA,IAAI,SAAS,WAAA,EAAa;AACxB,YAAA,OAAA,CAAQ,YAAY,IAAI,CAAA;AAAA,UAC1B;AAIA,UAAA,IAAI,IAAA,CAAK,KAAA,KAAA,SAAA,kBAAkC,IAAA,CAAK,KAAA,KAAA,OAAA,cAA8B;AAC5E,YAAA,OAAO,IAAA;AAAA,UACT;AAEA,UAAA,IAAI,KAAK,KAAA,KAAA,QAAA,eAA+B;AACtC,YAAA,MAAM,IAAI,KAAA,CAAM,CAAA,gBAAA,EAAmB,IAAA,CAAK,WAAW,CAAA,CAAE,CAAA;AAAA,UACvD;AAEA,UAAA,MAAM,IAAI,OAAA,CAAQ,CAAA,OAAA,KAAW,UAAA,CAAW,OAAA,EAAS,QAAQ,CAAC,CAAA;AAAA,QAC5D;AAEA,QAAA,MAAM,IAAI,KAAA;AAAA,UACR,CAAA,gDAAA,EAAmD,OAAA,EAAS,cAAA,IAAkB,GAAG,CAAA,QAAA;AAAA,SACnF;AAAA,MACF,CAAA;AAAA,KACF;AAAA,EAAA;AAAA,CAAA,CAAA;;;AC1cA,IAAA,mBAAA,GAAA,EAAA;AAAA,QAAA,CAAA,mBAAA,EAAA;AAAA,EAAA,oBAAA,EAAA,MAAA,oBAAA;AAAA,EAAA,iBAAA,EAAA,MAAA,iBAAA;AAAA,EAAA,uBAAA,EAAA,MAAA,uBAAA;AAAA,EAAA,oBAAA,EAAA,MAAA,oBAAA;AAAA,EAAA,UAAA,EAAA,MAAA;AAAA,CAAA,CAAA;AAAA,IAkBa,iBAAA,CAAA,CA+BA,uBAAA,CAAA,CA+DA,oBAAA,CAAA,CAuCA,oBAAA,CAAA,CA2HA;AAlRb,IAAA,gBAAA,GAAA,KAAA,CAAA;AAAA,EAAA,4BAAA,GAAA;AAQA,IAAA,QAAA,EAAA;AACA,IAAA,cAAA,EAAA;AAEA,IAAA,aAAA,EAAA;AACA,IAAAO,WAAAA,EAAAA;AACA,IAAA,YAAA,EAAA;AAKO,IAAM,oBAAN,MAAwB;AAAA,MACrB,OAAA;AAAA,MAER,YAAY,OAAA,EAAqB;AAC/B,QAAA,IAAA,CAAK,OAAA,GAAU,OAAA;AAAA,MACjB;AAAA;AAAA;AAAA;AAAA,MAKA,IAAA,GAAO,OAAOJ,KAAAA,KAA+B;AAC3C,QAAA,OAAO,KAAK,OAAA,CAAQ,OAAA,CAAQ,SAAS,EAAE,IAAA,EAAAA,OAAM,CAAA;AAAA,MAC/C,CAAA;AAAA;AAAA;AAAA;AAAA,MAKA,KAAA,GAAQ,OAAO,MAAA,KAMK;AAClB,QAAA,OAAO,IAAA,CAAK,OAAA,CAAQ,OAAA,CAAQ,SAAA,CAAU,MAAM,CAAA;AAAA,MAC9C,CAAA;AAAA,KACF;AAKO,IAAM,0BAAN,MAA8B;AAAA,MAC3B,OAAA;AAAA,MAER,YAAY,OAAA,EAAqB;AAC/B,QAAA,IAAA,CAAK,OAAA,GAAU,OAAA;AAAA,MACjB;AAAA;AAAA;AAAA;AAAA,MAKA,IAAA,GAAO,OAAO,MAAA,KAA6D;AACzE,QAAA,OAAO,IAAA,CAAK,OAAA,CAAQ,OAAA,CAAQ,aAAA,CAAc,MAAM,CAAA;AAAA,MAClD,CAAA;AAAA;AAAA;AAAA;AAAA,MAKA,IAAA,GAAO,OAAO,MAAA,KAAkE;AAC9E,QAAA,OAAO,IAAA,CAAK,OAAA,CAAQ,OAAA,CAAQ,QAAA,CAAS,MAAM,CAAA;AAAA,MAC7C,CAAA;AAAA;AAAA;AAAA;AAAA,MAKA,MAAA,GAAS,OAAO,MAAA,KAA2C;AACzD,QAAA,OAAO,IAAA,CAAK,OAAA,CAAQ,OAAA,CAAQ,UAAA,CAAW,MAAM,CAAA;AAAA,MAC/C,CAAA;AAAA;AAAA;AAAA;AAAA,MAKA,IAAA,GAAO,OAAO,MAAA,KAA2C;AACvD,QAAA,OAAO,IAAA,CAAK,OAAA,CAAQ,OAAA,CAAQ,IAAA,CAAK,MAAM,CAAA;AAAA,MACzC,CAAA;AAAA;AAAA;AAAA;AAAA,MAKA,KAAA,GAAQ,OAAO,MAAA,KAA6E;AAC1F,QAAA,OAAO,IAAA,CAAK,OAAA,CAAQ,OAAA,CAAQ,KAAA,CAAM,MAAM,CAAA;AAAA,MAC1C,CAAA;AAAA;AAAA;AAAA;AAAA,MAKA,MAAA,GAAS,OAAO,MAAA,KAA4E;AAC1F,QAAA,OAAO,IAAA,CAAK,OAAA,CAAQ,OAAA,CAAQ,UAAA,CAAW,MAAM,CAAA;AAAA,MAC/C,CAAA;AAAA;AAAA;AAAA;AAAA,MAKA,QAAA,GAAW,OAAO,MAAA,KAGkC;AAClD,QAAA,OAAO,IAAA,CAAK,OAAA,CAAQ,OAAA,CAAQ,YAAA,CAAa,MAAM,CAAA;AAAA,MACjD,CAAA;AAAA,KACF;AAKO,IAAM,uBAAN,MAA2B;AAAA,MACxB,OAAA;AAAA,MAER,YAAY,OAAA,EAAqB;AAC/B,QAAA,IAAA,CAAK,OAAA,GAAU,OAAA;AAAA,MACjB;AAAA;AAAA;AAAA;AAAA,MAKA,GAAA,GAAM,OAAO,MAAA,KAA6E;AACxF,QAAA,OAAO,IAAA,CAAK,OAAA,CAAQ,OAAA,CAAQ,GAAA,CAAI,MAAM,CAAA;AAAA,MACxC,CAAA;AAAA;AAAA;AAAA;AAAA,MAKA,IAAA,GAAO,OAAO,MAAA,KAA+C;AAC3D,QAAA,OAAO,IAAA,CAAK,OAAA,CAAQ,OAAA,CAAQ,aAAA,CAAc,MAAM,CAAA;AAAA,MAClD,CAAA;AAAA;AAAA;AAAA;AAAA,MAKA,GAAA,GAAM,OAAO,MAAA,KAA0C;AACrD,QAAA,OAAO,IAAA,CAAK,OAAA,CAAQ,OAAA,CAAQ,UAAA,CAAW,MAAM,CAAA;AAAA,MAC/C,CAAA;AAAA;AAAA;AAAA;AAAA,MAKA,IAAA,GAAO,OAAO,MAAA,KAA0C;AACtD,QAAA,OAAO,IAAA,CAAK,OAAA,CAAQ,OAAA,CAAQ,WAAA,CAAY,MAAM,CAAA;AAAA,MAChD,CAAA;AAAA,KACF;AAKO,IAAM,uBAAN,MAA2B;AAAA,MACxB,OAAA;AAAA,MACA,UAAA;AAAA,MACA,SAAA;AAAA,MACA,IAAA;AAAA,MAER,YAAY,OAAA,EAAqB;AAC/B,QAAA,IAAA,CAAK,OAAA,GAAU,OAAA;AAAA,MACjB;AAAA;AAAA;AAAA;AAAA,MAKA,IAAI,SAAA,GAAgC;AAClC,QAAA,OAAO,IAAA,CAAK,UAAA;AAAA,MACd;AAAA;AAAA;AAAA;AAAA,MAKA,IAAA,GAAO,OAAO,MAAA,KAA+C;AAC3D,QAAA,OAAO,IAAA,CAAK,OAAA,CAAQ,OAAA,CAAQ,YAAA,CAAa,MAAM,CAAA;AAAA,MACjD,CAAA;AAAA;AAAA;AAAA;AAAA,MAKA,MAAA,GAAS,OAAO,MAAA,KAGqB;AACnC,QAAA,MAAM,WAAW,MAAA,EAAQ,QAAA,IAAA,QAAA;AACzB,QAAA,MAAM,GAAA,GAAM,QAAQ,GAAA,IAAO,YAAA;AAE3B,QAAA,MAAM,MAAA,GAAS,MAAM,IAAA,CAAK,OAAA,CAAQ,QAAQ,aAAA,CAAc;AAAA,UACtD,QAAA;AAAA,UACA;AAAA,SACD,CAAA;AAED,QAAA,IAAI,MAAA,EAAQ,EAAA,IAAM,MAAA,EAAQ,GAAA,IAAO,QAAQ,QAAA,EAAU;AACjD,UAAA,IAAA,CAAK,aAAa,MAAA,CAAO,EAAA;AACzB,UAAA,IAAA,CAAK,YAAY,MAAA,CAAO,QAAA;AACxB,UAAA,IAAA,CAAK,OAAO,MAAA,CAAO,GAAA;AACnB,UAAA,OAAO,IAAA;AAAA,QACT;AAEA,QAAA,MAAM,IAAI,WAAA,CAAY,GAAA,EAAK,0BAA0B,CAAA;AAAA,MACvD,CAAA;AAAA;AAAA;AAAA;AAAA,MAKA,GAAA,GAAM,OAAO,MAAA,KAAmE;AAC9E,QAAA,MAAM,EAAA,GAAK,MAAA,EAAQ,SAAA,IAAa,IAAA,CAAK,UAAA;AACrC,QAAA,IAAI,CAAC,EAAA,EAAI;AACP,UAAA,MAAA,CAAO,MAAM,uBAAuB,CAAA;AACpC,UAAA,MAAM,IAAI,MAAM,uBAAuB,CAAA;AAAA,QACzC;AAEA,QAAA,MAAM,MAAA,GAAS,MAAM,IAAA,CAAK,OAAA,CAAQ,QAAQ,UAAA,CAAW,EAAE,SAAA,EAAW,EAAA,EAAI,CAAA;AAEtE,QAAA,IAAI,MAAA,EAAQ,EAAA,IAAM,MAAA,EAAQ,GAAA,IAAO,QAAQ,QAAA,EAAU;AACjD,UAAA,IAAA,CAAK,aAAa,MAAA,CAAO,EAAA;AACzB,UAAA,IAAA,CAAK,YAAY,MAAA,CAAO,QAAA;AACxB,UAAA,IAAA,CAAK,OAAO,MAAA,CAAO,GAAA;AACnB,UAAA,OAAO,IAAA;AAAA,QACT;AAEA,QAAA,MAAM,IAAI,WAAA,CAAY,GAAA,EAAK,uBAAuB,CAAA;AAAA,MACpD,CAAA;AAAA;AAAA;AAAA;AAAA,MAKA,OAAA,GAAU,OAAO,MAAA,KAKG;AAClB,QAAA,MAAM,EAAE,IAAA,EAAM,OAAA,GAAU,EAAA,EAAG,GAAI,MAAA;AAC/B,QAAA,IAAI,EAAE,SAAA,EAAW,QAAA,EAAS,GAAI,MAAA;AAE9B,QAAA,IAAI,CAAC,SAAA,EAAW;AACd,UAAA,SAAA,GAAY,IAAA,CAAK,UAAA;AAAA,QACnB;AAEA,QAAA,IAAI,CAAC,SAAA,IAAa,CAAC,QAAA,EAAU;AAC3B,UAAA,MAAA,CAAO,MAAM,qDAAqD,CAAA;AAClE,UAAA,QAAA,GAAA,QAAA;AAAA,QACF;AAEA,QAAA,OAAO,IAAA,CAAK,OAAA,CAAQ,OAAA,CAAQ,WAAA,CAAY;AAAA,UACtC,IAAA;AAAA,UACA,SAAA;AAAA,UACA,QAAA;AAAA,UACA;AAAA,SACD,CAAA;AAAA,MACH,CAAA;AAAA;AAAA;AAAA;AAAA,MAKA,MAAA,GAAS,OAAO,MAAA,KAAkD;AAChE,QAAA,MAAM,EAAA,GAAK,MAAA,EAAQ,SAAA,IAAa,IAAA,CAAK,UAAA;AACrC,QAAA,IAAI,CAAC,EAAA,EAAI;AACP,UAAA,MAAM,IAAI,KAAA;AAAA,YACR;AAAA,WACF;AAAA,QACF;AAEA,QAAA,MAAM,MAAA,GAAS,MAAM,IAAA,CAAK,OAAA,CAAQ,QAAQ,aAAA,CAAc,EAAE,SAAA,EAAW,EAAA,EAAI,CAAA;AAEzE,QAAA,IAAA,CAAK,UAAA,GAAa,MAAA;AAClB,QAAA,OAAO,MAAA;AAAA,MACT,CAAA;AAAA,KACF;AAOO,IAAM,UAAA,GAAN,cAAyB,OAAA,CAAQ;AAAA,MACtC,OAAO,YAAA,GAAA,UAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAMP,aAAa,kBAAA,CACX,YAAA,EACA,OAAA,EAMAH,OAAAA,EACqB;AACrB,QAAA,MAAM,OAAA,GAAU,MAAM,OAAA,CAAQ,MAAA,CAAO;AAAA,UACnC,KAAA,EAAO;AAAA,YACL,YAAA;AAAA,YACA,2BAA2B,OAAA,EAAS,yBAAA;AAAA,YACpC,WAAW,OAAA,EAAS,SAAA;AAAA,YACpB,gBAAgB,OAAA,EAAS,cAAA;AAAA,YACzB,eAAe,OAAA,EAAS;AAAA,WAC1B;AAAA,UACA,YAAA,EAAA,UAAA;AAAA,UACA,MAAA,EAAAA;AAAA,SACD,CAAA;AAED,QAAA,OAAO,OAAA;AAAA,MACT;AAAA,MAEA,WAAA,CAAY,SAAkBA,OAAAA,EAAiB;AAC7C,QAAA,KAAA,CAAM,SAASA,OAAM,CAAA;AAAA,MACvB;AAAA,MAEQ,QAAA;AAAA,MACA,KAAA;AAAA,MACA,WAAA;AAAA,MACA,QAAA;AAAA,MACA,QAAA;AAAA;AAAA;AAAA;AAAA,MAKR,IAAI,OAAA,GAAsB;AACxB,QAAA,IAAI,CAAC,KAAK,QAAA,EAAU;AAClB,UAAA,IAAA,CAAK,QAAA,GAAW,IAAI,UAAA,CAAW;AAAA,YAC7B,SAAA,EAAW,KAAK,SAAA,IAAa,EAAA;AAAA,YAC7B,QAAQ,IAAA,CAAK;AAAA,WACd,CAAA;AAAA,QACH;AACA,QAAA,OAAO,IAAA,CAAK,QAAA;AAAA,MACd;AAAA;AAAA;AAAA;AAAA,MAKA,IAAI,IAAA,GAA0B;AAC5B,QAAA,IAAI,CAAC,KAAK,KAAA,EAAO;AACf,UAAA,IAAA,CAAK,KAAA,GAAQ,IAAI,iBAAA,CAAkB,IAAI,CAAA;AAAA,QACzC;AACA,QAAA,OAAO,IAAA,CAAK,KAAA;AAAA,MACd;AAAA;AAAA;AAAA;AAAA,MAKA,IAAI,UAAA,GAAsC;AACxC,QAAA,IAAI,CAAC,KAAK,WAAA,EAAa;AACrB,UAAA,IAAA,CAAK,WAAA,GAAc,IAAI,uBAAA,CAAwB,IAAI,CAAA;AAAA,QACrD;AACA,QAAA,OAAO,IAAA,CAAK,WAAA;AAAA,MACd;AAAA;AAAA;AAAA;AAAA,MAKA,IAAI,OAAA,GAAgC;AAClC,QAAA,IAAI,CAAC,KAAK,QAAA,EAAU;AAClB,UAAA,IAAA,CAAK,QAAA,GAAW,IAAI,oBAAA,CAAqB,IAAI,CAAA;AAAA,QAC/C;AACA,QAAA,OAAO,IAAA,CAAK,QAAA;AAAA,MACd;AAAA;AAAA;AAAA;AAAA,MAKA,IAAI,OAAA,GAAgC;AAClC,QAAA,IAAI,CAAC,KAAK,QAAA,EAAU;AAClB,UAAA,IAAA,CAAK,QAAA,GAAW,IAAI,oBAAA,CAAqB,IAAI,CAAA;AAAA,QAC/C;AACA,QAAA,OAAO,IAAA,CAAK,QAAA;AAAA,MACd;AAAA;AAAA;AAAA;AAAA,MAKA,WAAA,GAAc,OAAO,MAAA,KAEkC;AACrD,QAAA,OAAO,IAAA,CAAK,QAAQ,WAAA,CAAY;AAAA,UAC9B,WAAW,IAAA,CAAK,SAAA;AAAA,UAChB,QAAQ,MAAA,EAAQ;AAAA,SACjB,CAAA;AAAA,MACH,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MASA,UAAU,MAAA,EAA0B;AAClC,QAAA,OAAO,IAAA,CAAK,OAAA,CAAQ,SAAA,CAAU,MAAM,CAAA;AAAA,MACtC;AAAA;AAAA;AAAA;AAAA,MAKA,UAAU,MAAA,EAA0B;AAClC,QAAA,OAAO,IAAA,CAAK,OAAA,CAAQ,SAAA,CAAU,MAAM,CAAA;AAAA,MACtC;AAAA;AAAA;AAAA;AAAA,MAKA,cAAA,GAAiB,OAAO,MAAA,KAA+C;AACrE,QAAA,OAAO,IAAA,CAAK,OAAA,CAAQ,cAAA,CAAe,MAAM,CAAA;AAAA,MAC3C,CAAA;AAAA;AAAA;AAAA;AAAA,MAKA,iBAAA,GAAoB,OAAO,MAAA,KAGyB;AAClD,QAAA,OAAO,IAAA,CAAK,OAAA,CAAQ,iBAAA,CAAkB,MAAM,CAAA;AAAA,MAC9C,CAAA;AAAA;AAAA;AAAA;AAAA,MAKA,eAAA,GAAkB,OAAO,MAAA,KAAgE;AACvF,QAAA,OAAO,IAAA,CAAK,OAAA,CAAQ,eAAA,CAAgB,MAAM,CAAA;AAAA,MAC5C,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MASA,OAAA,GAAU,OAAO,MAAA,KAKG;AAClB,QAAA,OAAO,IAAA,CAAK,OAAA,CAAQ,OAAA,CAAQ,MAAM,CAAA;AAAA,MACpC,CAAA;AAAA,KACF;AAAA,EAAA;AAAA,CAAA,CAAA;;;ACtbA,IAuBa;AAvBb,IAAA,aAAA,GAAA,KAAA,CAAA;AAAA,EAAA,yBAAA,GAAA;AASA,IAAA,aAAA,EAAA;AAcO,IAAM,QAAA,GAAN,MAAM,SAAA,SAAiB,YAAA,CAAqC;AAAA;AAAA;AAAA;AAAA,MAIjE,WAAA;AAAA;AAAA;AAAA;AAAA,MAIA,UAAA;AAAA;AAAA;AAAA;AAAA,MAIA,YAAA;AAAA;AAAA;AAAA;AAAA,MAIA,YAAA;AAAA;AAAA;AAAA;AAAA,MAIA,GAAA;AAAA;AAAA;AAAA;AAAA,MAIA,MAAA;AAAA;AAAA;AAAA;AAAA,MAIA,SAAA;AAAA;AAAA;AAAA;AAAA,MAIA,WAAA;AAAA;AAAA;AAAA;AAAA,MAIA,gBAAA;AAAA;AAAA;AAAA;AAAA,MAIA,aAAA;AAAA;AAAA;AAAA;AAAA,MAIA,YAAA;AAAA;AAAA;AAAA;AAAA,MAIA,2BAAA;AAAA;AAAA;AAAA;AAAA,MAIA,mBAAA;AAAA;AAAA;AAAA;AAAA,MAIA,+BAAA;AAAA;AAAA;AAAA;AAAA,MAQA,YAAA;AAAA;AAAA;AAAA;AAAA,MAIA,QAAA;AAAA;AAAA;AAAA;AAAA,MAIA,oBAAA;AAAA,MAEU,OAAA;AAAA,MAEV,WAAA,CAAY,MAAYA,OAAAA,EAAiB;AACvC,QAAA,KAAA,EAAM;AAEN,QAAA,IAAI,IAAA,EAAM;AACR,UAAA,sBAAA,CAAuB,MAAM,IAAI,CAAA;AACjC,UAAA,IAAA,CAAK,sBAAA,EAAuB;AAAA,QAC9B;AAEA,QAAA,IAAA,CAAK,OAAA,GAAUA,OAAAA;AAAA,MACjB;AAAA,MAEA,cAAA,GAAiB,MAAM,IAAA,CAAK,UAAA;AAAA,MAE5B,OAAe,SAAA,GAAY;AAEzB,QAAA,MAAM,EAAE,aAAA,EAAAa,cAAAA,EAAc,IAAI,WAAA,EAAA,EAAA,YAAA,CAAA,cAAA,CAAA,CAAA;AAC1B,QAAA,OAAO,IAAIA,cAAAA,EAAc;AAAA,MAC3B;AAAA;AAAA;AAAA;AAAA,MAKA,aAAa,OAAO,MAAA,EAA4E;AAC9F,QAAA,OAAO,MAAM,SAAA,CAAS,SAAA,EAAU,CAAE,eAAe,MAAM,CAAA;AAAA,MACzD;AAAA;AAAA;AAAA;AAAA,MAKA,aAAa,OAAO,MAAA,EAA8D;AAChF,QAAA,OAAO,MAAM,SAAA,CAAS,SAAA,EAAU,CAAE,eAAe,MAAM,CAAA;AAAA,MACzD;AAAA;AAAA;AAAA;AAAA,MAKA,aAAa,OAAO,MAAA,EAIE;AACpB,QAAA,OAAO,MAAM,SAAA,CAAS,SAAA,EAAU,CAAE,eAAe,MAAM,CAAA;AAAA,MACzD;AAAA;AAAA;AAAA;AAAA,MAKA,aAAa,IAAI,MAAA,EAA8D;AAC7E,QAAA,OAAO,MAAM,SAAA,CAAS,SAAA,EAAU,CAAE,YAAY,MAAM,CAAA;AAAA,MACtD;AAAA;AAAA;AAAA;AAAA,MAKA,aAAa,KAAK,MAAA,EAA8E;AAC9F,QAAA,OAAO,MAAM,SAAA,CAAS,SAAA,EAAU,CAAE,cAAc,MAAM,CAAA;AAAA,MACxD;AAAA;AAAA;AAAA;AAAA,MAKA,OAAO,OAAA,GAAU,wBAAA,CAAyB,IAAA,CAAK,IAAI,CAAA;AAAA,MAEnD,GAAA,GAAM,OAAO,MAAA,GAA8B,EAAC,KAAyB;AACnE,QAAA,OAAO,MAAM,UAAS,GAAA,CAAI;AAAA,UACxB,MAAM,IAAA,CAAK,YAAA;AAAA,UACX,QAAQ,MAAA,CAAO;AAAA,SAChB,CAAA;AAAA,MACH,CAAA;AAAA;AAAA;AAAA;AAAA,MAKA,MAAA,GAAS,OAAO,MAAA,KAAoD;AAClE,QAAA,MAAMb,UAAS,MAAA,EAAQ,MAAA;AACvB,QAAA,IAAI,CAAC,KAAK,YAAA,EAAc;AACtB,UAAA,MAAM,IAAI,MAAM,+CAA+C,CAAA;AAAA,QACjE;AAEA,QAAA,MAAM,MAAA,GAAS,MAAM,SAAA,CAAS,MAAA,CAAO;AAAA,UACnC,MAAM,IAAA,CAAK,YAAA;AAAA,UACX,MAAA,EAAQA,WAAU,IAAA,CAAK;AAAA,SACxB,CAAA;AACD,QAAA,sBAAA,CAAuB,MAAM,MAAM,CAAA;AACnC,QAAA,IAAA,CAAK,sBAAA,EAAuB;AAC5B,QAAA,OAAO,IAAA;AAAA,MACT,CAAA;AAAA;AAAA;AAAA;AAAA,MAKA,MAAA,GAAS,OAAO,MAAA,KAA+E;AAC7F,QAAA,MAAM,EAAE,KAAA,EAAO,MAAA,EAAAA,OAAAA,EAAO,GAAI,MAAA;AAC1B,QAAA,IAAI,CAAC,KAAK,YAAA,EAAc;AACtB,UAAA,MAAM,IAAI,MAAM,+CAA+C,CAAA;AAAA,QACjE;AAEA,QAAA,MAAM,MAAA,GAAS,MAAM,SAAA,CAAS,MAAA,CAAO;AAAA,UACnC,MAAM,IAAA,CAAK,YAAA;AAAA,UACX,KAAA;AAAA,UACA,MAAA,EAAQA,WAAU,IAAA,CAAK;AAAA,SACxB,CAAA;AACD,QAAA,sBAAA,CAAuB,MAAM,MAAM,CAAA;AACnC,QAAA,IAAA,CAAK,sBAAA,EAAuB;AAC5B,QAAA,OAAO,IAAA;AAAA,MACT,CAAA;AAAA;AAAA;AAAA;AAAA,MAKA,OAAA,GAAU,OAAO,MAAA,KAAoD;AACnE,QAAA,MAAMA,UAAS,MAAA,EAAQ,MAAA;AACvB,QAAA,IAAI,CAAC,KAAK,YAAA,EAAc;AACtB,UAAA,MAAM,IAAI,MAAM,gDAAgD,CAAA;AAAA,QAClE;AAEA,QAAA,MAAM,MAAA,GAAS,MAAM,SAAA,CAAS,GAAA,CAAI;AAAA,UAChC,MAAM,IAAA,CAAK,YAAA;AAAA,UACX,MAAA,EAAQA,WAAU,IAAA,CAAK;AAAA,SACxB,CAAA;AACD,QAAA,sBAAA,CAAuB,MAAM,MAAM,CAAA;AACnC,QAAA,IAAA,CAAK,sBAAA,EAAuB;AAC5B,QAAA,OAAO,IAAA;AAAA,MACT,CAAA;AAAA,MAEQ,sBAAA,GAAyB;AAC/B,QAAA,MAAM,QAAA,GAAW,CAAC,KAAA,KAA4B;AAC5C,UAAA,IAAI,OAAO,KAAA,KAAU,QAAA,EAAU,OAAO,KAAA;AACtC,UAAA,IAAI,OAAO,UAAU,QAAA,EAAU;AAC7B,YAAA,MAAM,MAAA,GAAS,OAAO,KAAK,CAAA;AAC3B,YAAA,OAAO,MAAA,CAAO,KAAA,CAAM,MAAM,CAAA,GAAI,MAAA,GAAY,MAAA;AAAA,UAC5C;AACA,UAAA,OAAO,MAAA;AAAA,QACT,CAAA;AAEA,QAAA,IAAA,CAAK,2BAAA,GAA8B,QAAA,CAAS,IAAA,CAAK,2BAA2B,CAAA;AAC5E,QAAA,IAAA,CAAK,mBAAA,GAAsB,QAAA,CAAS,IAAA,CAAK,mBAAmB,CAAA;AAC5D,QAAA,IAAA,CAAK,+BAAA,GAAkC,QAAA,CAAS,IAAA,CAAK,+BAA+B,CAAA;AACpF,QAAA,IAAA,CAAK,GAAA,GAAM,QAAA,CAAS,IAAA,CAAK,GAAG,CAAA;AAC5B,QAAA,IAAA,CAAK,MAAA,GAAS,QAAA,CAAS,IAAA,CAAK,MAAM,CAAA;AAClC,QAAA,IAAA,CAAK,QAAA,GAAW,QAAA,CAAS,IAAA,CAAK,QAAQ,CAAA;AAAA,MACxC;AAAA,KACF;AAAA,EAAA;AAAA,CAAA,CAAA;;;ACjPA,IAAA,cAAA,GAAA,EAAA;AAAA,QAAA,CAAA,cAAA,EAAA;AAAA,EAAA,aAAA,EAAA,MAAA;AAAA,CAAA,CAAA;AAAA,IAsCa;AAtCb,IAAA,WAAA,GAAA,KAAA,CAAA;AAAA,EAAA,uBAAA,GAAA;AAQA,IAAA,WAAA,EAAA;AACA,IAAA,cAAA,EAAA;AACA,IAAA,QAAA,EAAA;AACA,IAAA,YAAA,EAAA;AAEA,IAAA,gBAAA,EAAA;AACA,IAAA,oBAAA,EAAA;AACA,IAAA,6BAAA,EAAA;AACA,IAAA,mBAAA,EAAA;AACA,IAAAO,WAAAA,EAAAA;AAaA,IAAA,YAAA,EAAA;AACA,IAAA,aAAA,EAAA;AAOO,IAAM,gBAAN,MAAoB;AAAA,MACjB,MAAA;AAAA,MACA,UAAA;AAAA,MAER,YAAYP,OAAAA,EAAiB;AAC3B,QAAA,IAAA,CAAK,MAAA,GAASA,OAAAA;AACd,QAAA,IAAA,CAAK,UAAA,GAAa,IAAI,iBAAA,CAAkBA,OAAM,CAAA;AAAA,MAChD;AAAA;AAAA;AAAA;AAAA;AAAA,MAOA,cAAA,GAII,OACF,IAAA,EACA,IAAA,KACsB;AACtB,QAAA,IAAI,KAAA;AACJ,QAAA,IAAIA,OAAAA;AAEJ,QAAA,IAAI,WAAW,IAAA,EAAM;AACnB,UAAA,KAAA,GAAQ,IAAA,CAAK,KAAA;AACb,UAAAA,UAAS,IAAA,CAAK,MAAA;AAAA,QAChB,CAAA,MAAO;AACL,UAAA,MAAA,CAAO,IAAA;AAAA,YACL;AAAA,WACF;AACA,UAAA,KAAA,GAAQ,IAAA;AACR,UAAAA,OAAAA,GAAS,IAAA;AAAA,QACX;AAEA,QAAA,MAAM,GAAA,GAAM,MAAA,CAAO,WAAA,CAAY,IAAA,CAAK,QAAQA,OAAM,CAAA;AAElD,QAAA,IAAI;AACF,UAAA,MAAM,UAAA,GAAa,IAAA,CAAK,0BAAA,CAA2B,KAAK,CAAA;AAExD,UAAA,MAAM,MAAA,GAAS,MAAM,IAAA,CAAK,UAAA,CAAW,cAAA,CAAe;AAAA,YAClD,KAAA,EAAO,IAAc,UAAA,CAAA,mBAAA,CAAoB;AAAA,cACvC,GAAG,UAAA;AAAA,cACH,oBAAA,EAAsB,UAAA,CAAW,oBAAA,GAC7B,IAAc,UAAA,CAAA,oBAAA,CAAqB;AAAA,gBACjC,GAAG,UAAA,CAAW;AAAA,eACf,CAAA,GACD,KAAA;AAAA,aACL,CAAA;AAAA,YACD,MAAA,EAAQ;AAAA,WACT,CAAA;AAED,UAAA,OAAO,IAAI,QAAA,CAAS,MAAA,EAAQ,GAAG,CAAA;AAAA,QACjC,SAAS,KAAA,EAAO;AACd,UAAA,IAAI,iBAAiB,SAAA,EAAW;AAC9B,YAAA,MAAM,KAAA,CAAM,eAAA,CAAgB,UAAA,EAAY,KAAA,CAAM,YAAY,CAAA;AAAA,UAC5D;AACA,UAAA,MAAM,KAAA;AAAA,QACR;AAAA,MACF,CAAA;AAAA;AAAA;AAAA;AAAA,MAKA,cAAA,GAII,OACF,IAAA,EACA,IAAA,KACsB;AACtB,QAAA,IAAI,IAAA;AACJ,QAAA,IAAIA,OAAAA;AAEJ,QAAA,IAAI,OAAO,SAAS,QAAA,EAAU;AAC5B,UAAA,MAAA,CAAO,IAAA;AAAA,YACL;AAAA,WACF;AACA,UAAA,IAAA,GAAO,IAAA;AACP,UAAAA,OAAAA,GAAS,IAAA;AAAA,QACX,CAAA,MAAO;AACL,UAAA,IAAA,GAAO,IAAA,CAAK,IAAA;AACZ,UAAAA,UAAS,IAAA,CAAK,MAAA;AAAA,QAChB;AAEA,QAAA,MAAM,GAAA,GAAM,MAAA,CAAO,WAAA,CAAY,IAAA,CAAK,QAAQA,OAAM,CAAA;AAElD,QAAA,IAAI;AACF,UAAA,MAAM,MAAA,GAAS,MAAM,IAAA,CAAK,UAAA,CAAW,cAAA,CAAe;AAAA,YAClD,YAAA,EAAc,IAAA;AAAA,YACd,MAAA,EAAQ;AAAA,WACT,CAAA;AACD,UAAA,OAAO,IAAI,QAAA,CAAS,MAAA,EAAQ,GAAG,CAAA;AAAA,QACjC,SAAS,KAAA,EAAO;AACd,UAAA,IAAI,iBAAiB,SAAA,EAAW;AAC9B,YAAA,MAAM,KAAA,CAAM,eAAA,CAAgB,UAAA,EAAY,IAAI,CAAA;AAAA,UAC9C;AACA,UAAA,MAAM,KAAA;AAAA,QACR;AAAA,MACF,CAAA;AAAA;AAAA;AAAA;AAAA,MAKA,cAAA,GAII,OACF,IAAA,EACA,IAAA,EACA,IAAA,KACsB;AACtB,QAAA,IAAI,IAAA;AACJ,QAAA,IAAI,KAAA;AACJ,QAAA,IAAIA,OAAAA;AAEJ,QAAA,IAAI,OAAO,SAAS,QAAA,EAAU;AAC5B,UAAA,MAAA,CAAO,IAAA;AAAA,YACL;AAAA,WACF;AACA,UAAA,IAAA,GAAO,IAAA;AACP,UAAA,KAAA,GAAQ,IAAA;AACR,UAAAA,OAAAA,GAAS,IAAA;AAAA,QACX,CAAA,MAAO;AACL,UAAA,IAAA,GAAO,IAAA,CAAK,IAAA;AACZ,UAAA,KAAA,GAAQ,IAAA,CAAK,KAAA;AACb,UAAAA,UAAS,IAAA,CAAK,MAAA;AAAA,QAChB;AAEA,QAAA,MAAM,GAAA,GAAM,MAAA,CAAO,WAAA,CAAY,IAAA,CAAK,QAAQA,OAAM,CAAA;AAElD,QAAA,IAAI;AACF,UAAA,MAAM,MAAA,GAAS,MAAM,IAAA,CAAK,UAAA,CAAW,cAAA,CAAe;AAAA,YAClD,YAAA,EAAc,IAAA;AAAA,YACd,KAAA,EAAO,IAAc,UAAA,CAAA,mBAAA,CAAoB;AAAA,cACvC,GAAG,KAAA;AAAA,cACH,oBAAA,EAAsB,KAAA,CAAM,oBAAA,GACxB,IAAc,UAAA,CAAA,oBAAA,CAAqB;AAAA,gBACjC,GAAG,KAAA,CAAM;AAAA,eACV,CAAA,GACD,KAAA;AAAA,aACL,CAAA;AAAA,YACD,MAAA,EAAQ;AAAA,WACT,CAAA;AACD,UAAA,OAAO,IAAI,QAAA,CAAS,MAAA,EAAQ,GAAG,CAAA;AAAA,QACjC,SAAS,KAAA,EAAO;AACd,UAAA,IAAI,iBAAiB,SAAA,EAAW;AAC9B,YAAA,MAAM,KAAA,CAAM,eAAA,CAAgB,UAAA,EAAY,IAAI,CAAA;AAAA,UAC9C;AACA,UAAA,MAAM,KAAA;AAAA,QACR;AAAA,MACF,CAAA;AAAA;AAAA;AAAA;AAAA,MAKA,WAAA,GAII,OACF,IAAA,EACA,IAAA,KACsB;AACtB,QAAA,IAAI,IAAA;AACJ,QAAA,IAAIA,OAAAA;AAEJ,QAAA,IAAI,OAAO,SAAS,QAAA,EAAU;AAC5B,UAAA,MAAA,CAAO,IAAA;AAAA,YACL;AAAA,WACF;AACA,UAAA,IAAA,GAAO,IAAA;AACP,UAAAA,OAAAA,GAAS,IAAA;AAAA,QACX,CAAA,MAAO;AACL,UAAA,IAAA,GAAO,IAAA,CAAK,IAAA;AACZ,UAAAA,UAAS,IAAA,CAAK,MAAA;AAAA,QAChB;AAEA,QAAA,MAAM,GAAA,GAAM,MAAA,CAAO,WAAA,CAAY,IAAA,CAAK,QAAQA,OAAM,CAAA;AAElD,QAAA,IAAI;AACF,UAAA,MAAM,MAAA,GAAS,MAAM,IAAA,CAAK,UAAA,CAAW,WAAA,CAAY;AAAA,YAC/C,YAAA,EAAc,IAAA;AAAA,YACd,MAAA,EAAQ;AAAA,WACT,CAAA;AACD,UAAA,OAAO,IAAI,QAAA,CAAS,MAAA,EAAQ,GAAG,CAAA;AAAA,QACjC,SAAS,KAAA,EAAO;AACd,UAAA,IAAI,iBAAiB,SAAA,EAAW;AAC9B,YAAA,MAAM,KAAA,CAAM,eAAA,CAAgB,UAAA,EAAY,IAAI,CAAA;AAAA,UAC9C;AACA,UAAA,MAAM,KAAA;AAAA,QACR;AAAA,MACF,CAAA;AAAA;AAAA;AAAA;AAAA,MAKA,aAAA,GAII,OACF,IAAA,EACA,IAAA,KACwB;AACxB,QAAA,IAAI,KAAA;AACJ,QAAA,IAAIA,OAAAA;AAEJ,QAAA,IAAI,QAAS,IAAA,KAAS,YAAA,IAAgB,QAAQ,UAAA,IAAc,IAAA,IAAQ,kBAAkB,IAAA,CAAA,EAAQ;AAC5F,UAAA,MAAA,CAAO,IAAA;AAAA,YACL;AAAA,WACF;AACA,UAAA,KAAA,GAAQ,IAAA;AACR,UAAAA,OAAAA,GAAS,IAAA;AAAA,QACX,CAAA,MAAO;AACL,UAAA,MAAM,MAAA,GAAU,QAA2D,EAAC;AAC5E,UAAA,KAAA,GAAQ,MAAA,CAAO,KAAA;AACf,UAAAA,UAAS,MAAA,CAAO,MAAA;AAAA,QAClB;AAEA,QAAA,MAAM,GAAA,GAAM,MAAA,CAAO,WAAA,CAAY,IAAA,CAAK,QAAQA,OAAM,CAAA;AAClD,QAAA,MAAM,OAAA,GAAU,IAAc,UAAA,CAAA,oBAAA,CAAqB;AAAA,UACjD,GAAG;AAAA,SACJ,CAAA;AACD,QAAA,MAAM,MAAA,GAAS,MAAM,IAAA,CAAK,UAAA,CAAW,aAAA,CAAc;AAAA,UACjD,KAAA,EAAO,OAAA;AAAA,UACP,MAAA,EAAQ;AAAA,SACT,CAAA;AACD,QAAA,OAAA,CAAQ,MAAA,EAAQ,KAAA,IAAS,EAAC,EAAG,GAAA,CAAI,UAAQ,IAAI,QAAA,CAAS,IAAA,EAAM,GAAG,CAAC,CAAA;AAAA,MAClE,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAOA,aAAA,GA4BI,OACF,IAAA,EAOA,IAAA,KACiB;AACjB,QAAA,IAAI,KAAA;AACJ,QAAA,IAAI,YAAA;AACJ,QAAA,IAAIA,OAAAA;AAEJ,QAAA,IAAI,WAAW,IAAA,EAAM;AAEnB,UAAA,MAAM,MAAA,GAAS,IAAA;AAKf,UAAA,KAAA,GAAQ,MAAA,CAAO,KAAA;AACf,UAAA,YAAA,GAAe,MAAA,CAAO,YAAA;AACtB,UAAAA,UAAS,MAAA,CAAO,MAAA;AAAA,QAClB,CAAA,MAAO;AAEL,UAAA,MAAA,CAAO,IAAA;AAAA,YACL;AAAA,WACF;AACA,UAAA,KAAA,GAAQ,IAAA;AACR,UAAAA,OAAAA,GAAS,IAAA;AAAA,QACX;AAEA,QAAA,MAAM,GAAA,GAAM,MAAA,CAAO,WAAA,CAAY,IAAA,CAAK,QAAQA,OAAM,CAAA;AAElD,QAAA,IAAI;AACF,UAAA,MAAM,MAAA,GAAS,MAAM,IAAA,CAAK,UAAA,CAAW,aAAA,CAAc;AAAA,YACjD,KAAA,EAAO,IAAc,UAAA,CAAA,kBAAA,CAAmB;AAAA,cACtC,GAAG;AAAA,aACJ,CAAA;AAAA,YACD,MAAA,EAAQ;AAAA,WACT,CAAA;AAED,UAAA,MAAM,KAAA,GAAU,MAAA,CAA+C,MAAA,IAC5D,MAAA,CAA+C,KAAA;AAClD,UAAA,MAAM,EAAA,GAAK,IAAI,OAAA,CAAQ,EAAE,GAAG,MAAA,EAAQ,KAAA,IAAS,GAAG,CAAA;AAEhD,UAAA,IAAI,YAAA,KAAA,iBAAA;AACF,YAAA,OAAO,IAAI,sBAAA,CAAuB,EAAA,EAAI,GAAG,CAAA;AAAA,eAAA,IAClC,YAAA,KAAA,SAAA,gBAAuC,OAAO,IAAI,cAAA,CAAe,IAAI,GAAG,CAAA;AAAA,eAAA,IACxE,YAAA,KAAA,UAAA,YAAmC,OAAO,IAAI,UAAA,CAAW,IAAI,GAAG,CAAA;AAAA,eAAA,IAChE,YAAA,KAAA,aAAA,eAAsC,OAAO,IAAI,aAAA,CAAc,IAAI,GAAG,CAAA;AAE/E,UAAA,OAAO,EAAA;AAAA,QACT,SAAS,KAAA,EAAO;AACd,UAAA,IAAI,iBAAiB,SAAA,EAAW;AAC9B,YAAA,MAAM,KAAA,CAAM,eAAA,CAAgB,SAAA,EAAW,KAAA,CAAM,YAAY,CAAA;AAAA,UAC3D;AACA,UAAA,MAAM,KAAA;AAAA,QACR;AAAA,MACF,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAMA,4BAAA,GAA+B,OAAO,MAAA,KASC;AACrC,QAAA,MAAM,EAAE,YAAA,EAAc,OAAA,EAAS,MAAA,EAAAA,SAAO,GAAI,MAAA;AAC1C,QAAA,OAAO,uBAAuB,kBAAA,CAAmB,YAAA,EAAc,OAAA,EAASA,OAAAA,IAAU,KAAK,MAAM,CAAA;AAAA,MAC/F,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAMA,oBAAA,GAAuB,OAAO,MAAA,KASC;AAC7B,QAAA,MAAM,EAAE,YAAA,EAAc,OAAA,EAAS,MAAA,EAAAA,SAAO,GAAI,MAAA;AAC1C,QAAA,OAAO,eAAe,kBAAA,CAAmB,YAAA,EAAc,OAAA,EAASA,OAAAA,IAAU,KAAK,MAAM,CAAA;AAAA,MACvF,CAAA;AAAA;AAAA;AAAA;AAAA,MAKA,aAAA,GAII,OAAO,IAAA,EAAgD,IAAA,KAAoC;AAC7F,QAAA,IAAI,EAAA;AACJ,QAAA,IAAIA,OAAAA;AAEJ,QAAA,IAAI,OAAO,SAAS,QAAA,EAAU;AAC5B,UAAA,MAAA,CAAO,IAAA;AAAA,YACL;AAAA,WACF;AACA,UAAA,EAAA,GAAK,IAAA;AACL,UAAAA,OAAAA,GAAS,IAAA;AAAA,QACX,CAAA,MAAO;AACL,UAAA,EAAA,GAAK,IAAA,CAAK,EAAA;AACV,UAAAA,UAAS,IAAA,CAAK,MAAA;AAAA,QAChB;AAEA,QAAA,MAAM,GAAA,GAAM,MAAA,CAAO,WAAA,CAAY,IAAA,CAAK,QAAQA,OAAM,CAAA;AAElD,QAAA,IAAI;AACF,UAAA,MAAM,MAAA,GAAS,MAAM,IAAA,CAAK,UAAA,CAAW,aAAA,CAAc;AAAA,YACjD,SAAA,EAAW,EAAA;AAAA,YACX,MAAA,EAAQ;AAAA,WACT,CAAA;AACD,UAAA,OAAO,OAAA,CAAQ,eAAA,CAAgB,MAAA,EAAQ,GAAG,CAAA;AAAA,QAC5C,SAAS,KAAA,EAAO;AACd,UAAA,IAAI,iBAAiB,SAAA,EAAW;AAC9B,YAAA,MAAM,KAAA,CAAM,eAAA,CAAgB,SAAA,EAAW,EAAE,CAAA;AAAA,UAC3C;AACA,UAAA,MAAM,KAAA;AAAA,QACR;AAAA,MACF,CAAA;AAAA;AAAA;AAAA;AAAA,MAKA,WAAA,GAII,OAAO,IAAA,EAAgD,IAAA,KAAoC;AAC7F,QAAA,IAAI,EAAA;AACJ,QAAA,IAAIA,OAAAA;AAEJ,QAAA,IAAI,OAAO,SAAS,QAAA,EAAU;AAC5B,UAAA,MAAA,CAAO,IAAA;AAAA,YACL;AAAA,WACF;AACA,UAAA,EAAA,GAAK,IAAA;AACL,UAAAA,OAAAA,GAAS,IAAA;AAAA,QACX,CAAA,MAAO;AACL,UAAA,EAAA,GAAK,IAAA,CAAK,EAAA;AACV,UAAAA,UAAS,IAAA,CAAK,MAAA;AAAA,QAChB;AAEA,QAAA,MAAM,GAAA,GAAM,MAAA,CAAO,WAAA,CAAY,IAAA,CAAK,QAAQA,OAAM,CAAA;AAElD,QAAA,IAAI;AACF,UAAA,MAAM,MAAA,GAAS,MAAM,IAAA,CAAK,UAAA,CAAW,WAAA,CAAY;AAAA,YAC/C,SAAA,EAAW,EAAA;AAAA,YACX,MAAA,EAAQ;AAAA,WACT,CAAA;AACD,UAAA,OAAO,OAAA,CAAQ,eAAA,CAAgB,MAAA,EAAQ,GAAG,CAAA;AAAA,QAC5C,SAAS,KAAA,EAAO;AACd,UAAA,IAAI,iBAAiB,SAAA,EAAW;AAC9B,YAAA,MAAM,KAAA,CAAM,eAAA,CAAgB,SAAA,EAAW,EAAE,CAAA;AAAA,UAC3C;AACA,UAAA,MAAM,KAAA;AAAA,QACR;AAAA,MACF,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MASA,UAAA,GAII,OACF,IAAA,EACA,IAAA,EACA,IAAA,KACqB;AACrB,QAAA,IAAI,EAAA;AACJ,QAAA,IAAI,YAAA;AACJ,QAAA,IAAIA,OAAAA;AAEJ,QAAA,IAAI,OAAO,SAAS,QAAA,EAAU;AAC5B,UAAA,MAAA,CAAO,IAAA;AAAA,YACL;AAAA,WACF;AACA,UAAA,EAAA,GAAK,IAAA;AACL,UAAA,IAAI,IAAA,IAAQ,OAAO,IAAA,KAAS,QAAA,EAAU;AACpC,YAAA,YAAA,GAAe,IAAA;AACf,YAAAA,OAAAA,GAAS,IAAA;AAAA,UACX,CAAA,MAAO;AACL,YAAAA,OAAAA,GAAS,IAAA;AAAA,UACX;AAAA,QACF,CAAA,MAAO;AACL,UAAA,EAAA,GAAK,IAAA,CAAK,EAAA;AACV,UAAA,YAAA,GAAe,IAAA,CAAK,YAAA;AACpB,UAAAA,UAAS,IAAA,CAAK,MAAA;AAAA,QAChB;AAEA,QAAA,MAAM,GAAA,GAAM,MAAA,CAAO,WAAA,CAAY,IAAA,CAAK,QAAQA,OAAM,CAAA;AAElD,QAAA,IAAI;AACF,UAAA,MAAM,MAAA,GAAS,MAAM,IAAA,CAAK,UAAA,CAAW,UAAA,CAAW;AAAA,YAC9C,SAAA,EAAW,EAAA;AAAA,YACX,MAAA,EAAQ;AAAA,WACT,CAAA;AACD,UAAA,MAAM,WAAA,GAAc,OAAA,CAAQ,eAAA,CAAgB,MAAA,EAAQ,GAAG,CAAA;AAEvD,UAAA,IAAI,YAAA,EAAc;AAChB,YAAA,QAAQ,YAAA;AAAc,cACpB,KAAA,iBAAA,yBAAoC;AAClC,gBAAA,OAAO,IAAI,sBAAA,CAAuB,WAAA,EAAa,GAAG,CAAA;AAAA,cACpD;AAAA,cACA,KAAA,SAAA,gBAA2B;AACzB,gBAAA,OAAO,IAAI,cAAA,CAAe,WAAA,EAAa,GAAG,CAAA;AAAA,cAC5C;AAAA,cACA,KAAA,UAAA,YAAuB;AACrB,gBAAA,MAAM,EAAE,UAAA,EAAAgB,WAAAA,EAAW,GAAI,MAAM,OAAA,CAAA,OAAA,EAAA,CAAA,IAAA,CAAA,OAAA,gBAAA,EAAA,EAAA,mBAAA,CAAA,CAAA;AAC7B,gBAAA,OAAO,IAAIA,WAAAA,CAAW,WAAA,EAAa,GAAG,CAAA;AAAA,cACxC;AAAA;AACF,UACF;AAEA,UAAA,OAAO,WAAA;AAAA,QACT,SAAS,KAAA,EAAO;AACd,UAAA,IAAI,iBAAiB,SAAA,EAAW;AAC9B,YAAA,MAAM,KAAA,CAAM,eAAA,CAAgB,SAAA,EAAW,EAAE,CAAA;AAAA,UAC3C;AACA,UAAA,MAAM,KAAA;AAAA,QACR;AAAA,MACF,CAAA;AAAA;AAAA;AAAA;AAAA,MAKA,aAAA,GAII,OACF,IAAA,EACA,IAAA,KACuB;AACvB,QAAA,IAAI,KAAA;AACJ,QAAA,IAAIhB,OAAAA;AAEJ,QAAA,IACE,IAAA,IACC,IAAA,KACE,YAAA,IAAgB,IAAA,IACf,WAAA,IAAe,IAAA,IACf,QAAA,IAAY,IAAA,IACZ,cAAA,IAAkB,IAAA,IAClB,cAAA,IAAkB,IAAA,CAAA,EACtB;AACA,UAAA,MAAA,CAAO,IAAA;AAAA,YACL;AAAA,WACF;AACA,UAAA,KAAA,GAAQ,IAAA;AACR,UAAAA,OAAAA,GAAS,IAAA;AAAA,QACX,CAAA,MAAO;AACL,UAAA,MAAM,MAAA,GAAU,QAA0D,EAAC;AAC3E,UAAA,KAAA,GAAQ,MAAA,CAAO,KAAA;AACf,UAAAA,UAAS,MAAA,CAAO,MAAA;AAAA,QAClB;AAEA,QAAA,MAAM,GAAA,GAAM,MAAA,CAAO,WAAA,CAAY,IAAA,CAAK,QAAQA,OAAM,CAAA;AAClD,QAAA,MAAM,OAAA,GAAU,IAAc,UAAA,CAAA,oBAAA,CAAqB;AAAA,UACjD,GAAG;AAAA,SACJ,CAAA;AACD,QAAA,MAAM,MAAA,GAAS,MAAM,IAAA,CAAK,UAAA,CAAW,aAAA,CAAc;AAAA,UACjD,KAAA,EAAO,OAAA;AAAA,UACP,MAAA,EAAQ;AAAA,SACT,CAAA;AACD,QAAA,OAAA,CAAQ,MAAA,CAAO,SAAA,IAAa,EAAC,EAAG,GAAA;AAAA,UAAI,CAAC,IAAA,KACnC,OAAA,CAAQ,eAAA,CAAgB,MAAM,GAAG;AAAA,SACnC;AAAA,MACF,CAAA;AAAA,MAEQ,2BAA2B,KAAA,EAAiD;AAClF,QAAA,MAAM,QAAA,GAAW,IAAA,CAAK,mBAAA,CAAoB,KAAA,CAAM,YAAY,CAAA;AAC5D,QAAA,MAAM,UAAA,GAAa,EAAE,GAAG,QAAA,EAAU,GAAG,KAAA,EAAM;AAE3C,QAAA,IAAI,CAAC,WAAW,oBAAA,EAAsB;AACpC,UAAA,UAAA,CAAW,oBAAA,GAAuB;AAAA,YAChC,WAAA,EAAA,QAAA;AAAA,WACF;AAAA,QACF;AAEA,QAAA,IAAA,CAAK,4BAA4B,UAAU,CAAA;AAC3C,QAAA,OAAO,UAAA;AAAA,MACT;AAAA,MAEQ,oBAAoB,YAAA,EAA0D;AACpF,QAAA,MAAM,IAAA,GAAO;AAAA,UACX,GAAA,EAAK,CAAA;AAAA,UACL,MAAA,EAAQ,IAAA;AAAA,UACR,2BAAA,EAA6B,IAAA;AAAA,UAC7B,mBAAA,EAAqB,KAAA;AAAA,UACrB,+BAAA,EAAiC;AAAA,SACnC;AAEA,QAAA,QAAQ,YAAA;AAAc,UACpB,KAAA,iBAAA;AACE,YAAA,OAAO,EAAE,GAAG,IAAA,EAAM,QAAA,EAAU,GAAA,EAAI;AAAA,UAClC,KAAA,SAAA;AAAA,UACA,KAAA,UAAA;AACE,YAAA,OAAO,EAAE,GAAG,IAAA,EAAM,GAAA,EAAK,GAAG,MAAA,EAAQ,IAAA,EAAM,UAAU,KAAA,EAAM;AAAA,UAC1D;AACE,YAAA,OAAO,EAAE,GAAG,IAAA,EAAM,QAAA,EAAU,GAAA,EAAI;AAAA;AACpC,MACF;AAAA,MAEQ,4BAA4B,KAAA,EAAkC;AACpE,QAAA,IAAA,CACG,MAAM,YAAA,KAAA,SAAA,kBAAyC,KAAA,CAAM,YAAA,KAAA,UAAA,eACtD,KAAA,CAAM,aAAa,KAAA,EACnB;AACA,UAAA,MAAM,IAAI,KAAA;AAAA,YACR,CAAA,iEAAA,EAAoE,MAAM,QAAQ,CAAA;AAAA,WACpF;AAAA,QACF;AAEA,QAAA,IAAA,CACG,MAAM,YAAA,KAAA,iBAAA,2BACL,KAAA,CAAM,YAAA,KAAA,UAAA,eACR,KAAA,CAAM,sBAAsB,WAAA,KAAA,SAAA,gBAC5B;AACA,UAAA,MAAM,IAAI,KAAA;AAAA,YACR,CAAA,2EAAA;AAAA,WACF;AAAA,QACF;AAAA,MACF;AAAA,KACF;AAAA,EAAA;AAAA,CAAA,CAAA;;;ACtoBA,kBAAA,EAAA;AAEA,WAAA,EAAA;AACA,YAAA,EAAA;AACA,aAAA,EAAA;AACA,6BAAA,EAAA;AACA,oBAAA,EAAA;AACA,gBAAA,EAAA;AACA,mBAAA,EAAA;AAGA,iBAAA,EAAA;AACA,0BAAA,EAAA;AACA,iBAAA,EAAA;AACA,aAAA,EAAA;AAEAO,WAAAA,EAAAA","file":"index.js","sourcesContent":["/**\n * Logging utilities for AgentRun SDK\n *\n * 此模块提供日志功能。\n * This module provides logging utilities.\n */\n\nexport type LogLevel = 'debug' | 'info' | 'warn' | 'error';\n\nconst LOG_LEVELS: Record<LogLevel, number> = {\n debug: 0,\n info: 1,\n warn: 2,\n error: 3,\n};\n// concise ANSI color codes we need\nconst COLORS = {\n reset: '\\x1b[0m',\n bright: '\\x1b[1m',\n dim: '\\x1b[2m',\n italic: '\\x1b[3m',\n blue: '\\x1b[34m',\n cyan: '\\x1b[36m',\n yellow: '\\x1b[33m',\n red: '\\x1b[31m',\n};\n\nclass Logger {\n private level: LogLevel = 'info';\n // match Python logger name\n private prefix = 'agentrun-logger';\n\n setLevel(level: LogLevel): void {\n this.level = level;\n }\n\n private shouldLog(level: LogLevel): boolean {\n return LOG_LEVELS[level] >= LOG_LEVELS[this.level];\n }\n\n private getColor(level: LogLevel): string {\n switch (level) {\n case 'debug':\n return COLORS.cyan;\n case 'info':\n return COLORS.blue;\n case 'warn':\n return COLORS.yellow;\n case 'error':\n return COLORS.red;\n default:\n return COLORS.reset;\n }\n }\n\n // format timestamp like Python: YYYY-MM-DD HH:mm:ss,SSS\n private formatTimestamp(d = new Date()): string {\n const pad = (n: number, sz = 2) => n.toString().padStart(sz, '0');\n const year = d.getFullYear();\n const month = pad(d.getMonth() + 1);\n const day = pad(d.getDate());\n const hour = pad(d.getHours());\n const minute = pad(d.getMinutes());\n const second = pad(d.getSeconds());\n const ms = pad(d.getMilliseconds(), 3);\n return `${year}-${month}-${day} ${hour}:${minute}:${second},${ms}`;\n }\n\n // attempt to infer caller file and line by parsing Error.stack\n // helper: parse a single stack frame into {filepath, line, functionName}\n private parseFrame(frame: string) {\n const m = frame.match(/^(?:at\\s+)?(?:(.+?)\\s+\\()?(.*?):(\\d+):(\\d+)\\)?$/);\n if (!m) return null;\n return {\n functionName: m[1] ? m[1].trim() : undefined,\n filepath: m[2],\n line: parseInt(m[3], 10),\n };\n }\n\n // get caller by fixed stack offset (used in public log methods)\n private getCallerByOffset(): { filepath?: string; line?: number } {\n const err = new Error();\n const stack = err.stack;\n if (!stack) return {};\n const lines = stack.split('\\n').map(l => l.trim());\n // try the requested offset, if absent try next few frames\n\n for (let i = 3; i < lines.length; i++) {\n let parsed = this.parseFrame(lines[i]);\n // fallback: try extract /path:line:col substring\n if (!parsed) {\n const m = lines[i].match(/(\\/[^:\\s]+:\\d+:\\d+)/);\n if (m) {\n const parts = m[1].split(':');\n parts.pop(); // col\n const ln = Number(parts.pop());\n const fp = parts.join(':');\n parsed = { filepath: fp, line: ln, functionName: undefined } as any;\n }\n }\n if (!parsed) continue;\n const fp = parsed.filepath;\n if (\n fp.includes('node_modules') ||\n fp.includes('internal') ||\n fp.includes('<anonymous>') ||\n fp.includes('native')\n )\n continue;\n // skip logger internal frames\n return { filepath: parsed.filepath, line: parsed.line };\n }\n // fallback: scan all frames and return first project frame\n const cwd = process.cwd();\n for (let i = 0; i < lines.length; i++) {\n let parsed = this.parseFrame(lines[i]);\n if (!parsed) {\n const m = lines[i].match(/(\\/[^:\\s]+:\\d+:\\d+)/);\n if (m) {\n const parts = m[1].split(':');\n parts.pop(); // col\n const ln = Number(parts.pop());\n const fp = parts.join(':');\n parsed = { filepath: fp, line: ln, functionName: undefined } as any;\n }\n }\n if (!parsed) continue;\n const fp = parsed.filepath;\n if (\n fp.includes('node_modules') ||\n fp.includes('internal') ||\n fp.includes('<anonymous>') ||\n fp.includes('native')\n )\n continue;\n if (fp.includes('/src/utils/log.ts')) continue;\n if (fp.startsWith(cwd)) return { filepath: parsed.filepath, line: parsed.line };\n }\n // final fallback: first non-node_modules parsed frame\n for (let i = 0; i < lines.length; i++) {\n let parsed = this.parseFrame(lines[i]);\n if (!parsed) {\n const m = lines[i].match(/(\\/[^:\\s]+:\\d+:\\d+)/);\n if (m) {\n const parts = m[1].split(':');\n parts.pop(); // col\n const ln = Number(parts.pop());\n const fp = parts.join(':');\n parsed = { filepath: fp, line: ln, functionName: undefined } as any;\n }\n }\n if (!parsed) continue;\n const fp = parsed.filepath;\n if (\n fp.includes('node_modules') ||\n fp.includes('internal') ||\n fp.includes('<anonymous>') ||\n fp.includes('native')\n )\n continue;\n if (fp.includes('/src/utils/log.ts')) continue;\n return { filepath: parsed.filepath, line: parsed.line };\n }\n return {};\n }\n\n private formatMessage(\n level: LogLevel,\n message: string,\n filepath?: string,\n line?: number\n ): string {\n const timestamp = this.formatTimestamp();\n const color = this.getColor(level);\n const reset = COLORS.reset;\n\n // filepath/line should be provided by caller via getCallerByOffset;\n // if missing, leave blank\n\n const levelName = level === 'warn' ? 'WARNING' : level.toUpperCase();\n const levelStr = `${COLORS.bright}${color}${levelName}${reset}`;\n const nameStr = `${color}[${this.prefix}]${reset}`;\n const tsStr = `${color} ${timestamp}${reset}`;\n const pathInfo =\n filepath && line !== undefined\n ? ` ${COLORS.dim}${COLORS.italic}${filepath}:${line}${reset}`\n : '';\n const msg = level === 'debug' ? `${COLORS.dim}${message}${reset}` : message;\n\n return `\\n${levelStr} ${nameStr}${tsStr}${pathInfo}\\n${msg}\\n`;\n }\n\n debug(message: string, ...args: unknown[]): void {\n if (this.shouldLog('debug')) {\n const caller = this.getCallerByOffset();\n console.debug(this.formatMessage('debug', message, caller.filepath, caller.line), ...args);\n }\n }\n\n info(message: string, ...args: unknown[]): void {\n if (this.shouldLog('info')) {\n const caller = this.getCallerByOffset();\n console.info(this.formatMessage('info', message, caller.filepath, caller.line), ...args);\n }\n }\n\n warn(message: string, ...args: unknown[]): void {\n if (this.shouldLog('warn')) {\n const caller = this.getCallerByOffset();\n console.warn(this.formatMessage('warn', message, caller.filepath, caller.line), ...args);\n }\n }\n\n error(message: string, ...args: unknown[]): void {\n if (this.shouldLog('error')) {\n const caller = this.getCallerByOffset();\n console.error(this.formatMessage('error', message, caller.filepath, caller.line), ...args);\n }\n }\n}\n\nexport const logger = new Logger();\nif (\n ![undefined, null, '', 'False', 'FALSE', 'false', '0'].includes(process.env['AGENTRUN_SDK_DEBUG'])\n) {\n logger.setLevel('debug');\n\n if (!(globalThis as any)._AGENTRUN_DEBUG_LOGGED) {\n logger.warn('启用 AgentRun SDK 调试日志, 移除 AGENTRUN_SDK_DEBUG 环境变量以关闭');\n (globalThis as any)._AGENTRUN_DEBUG_LOGGED = true;\n }\n} else {\n logger.setLevel('info');\n}\n","// Version check utility to ensure warning is only shown once globally\ndeclare const __VERSION__: string;\nexport const VERSION = typeof __VERSION__ !== 'undefined' ? __VERSION__ : '0.0.0-dev';\nimport { logger } from './log';\n\nif (\n !process.env.DISABLE_BREAKING_CHANGES_WARNING &&\n !(globalThis as any)._AGENTRUN_VERSION_WARNING_SHOWN\n) {\n (globalThis as any)._AGENTRUN_VERSION_WARNING_SHOWN = true;\n logger.warn(\n `当前您正在使用 AgentRun Python SDK 版本 ${VERSION}。早期版本通常包含许多新功能,这些功能\\x1b[1;33m 可能引入不兼容的变更 \\x1b[0m。为避免潜在问题,我们强烈建议\\x1b[1;32m 将依赖锁定为此版本 \\x1b[0m。\nYou are currently using AgentRun Python SDK version ${VERSION}. Early versions often include many new features, which\\x1b[1;33m may introduce breaking changes\\x1b[0m. To avoid potential issues, we strongly recommend \\x1b[1;32mpinning the dependency to this version\\x1b[0m.\n\\x1b[2;3m pip install 'agentrun-sdk==${VERSION}' \\x1b[0m\n\n增加\\x1b[2;3m DISABLE_BREAKING_CHANGES_WARNING=1 \\x1b[0m到您的环境变量以关闭此警告。\nAdd\\x1b[2;3m DISABLE_BREAKING_CHANGES_WARNING=1 \\x1b[0mto your environment variables to disable this warning.\n \nReleases:\\x1b[2;3m https://github.com/Serverless-Devs/agentrun-sdk-python/releases\\x1b[0m`\n );\n}\n","/**\n * Configuration Management Module\n *\n * 此模块提供 AgentRun SDK 的全局配置管理功能。\n * This module provides global configuration management for AgentRun SDK.\n */\n\nimport * as dotenv from 'dotenv';\n\n// Load environment variables\ndotenv.config();\n\n/**\n * Get environment variable with fallback keys\n */\nfunction getEnvWithDefault(defaultValue: string, ...keys: string[]): string {\n for (const key of keys) {\n const value = process.env[key];\n if (value !== undefined && value !== '') {\n return value;\n }\n }\n return defaultValue;\n}\n\n/**\n * Configuration options for AgentRun SDK\n */\nexport interface ConfigOptions {\n /**\n * Access Key ID for authentication.\n * Read from AGENTRUN_ACCESS_KEY_ID or ALIBABA_CLOUD_ACCESS_KEY_ID if not provided.\n */\n accessKeyId?: string;\n\n /**\n * Access Key Secret for authentication.\n * Read from AGENTRUN_ACCESS_KEY_SECRET or ALIBABA_CLOUD_ACCESS_KEY_SECRET if not provided.\n */\n accessKeySecret?: string;\n\n /**\n * Security token for STS authentication.\n * Read from AGENTRUN_SECURITY_TOKEN or ALIBABA_CLOUD_SECURITY_TOKEN if not provided.\n */\n securityToken?: string;\n\n /**\n * Account ID.\n * Read from AGENTRUN_ACCOUNT_ID or FC_ACCOUNT_ID if not provided.\n */\n accountId?: string;\n\n /**\n * Custom token for data API calls.\n */\n token?: string;\n\n /**\n * Region ID. Defaults to cn-hangzhou.\n * Read from AGENTRUN_REGION or FC_REGION if not provided.\n */\n regionId?: string;\n\n /**\n * Request timeout in milliseconds. Defaults to 600000 (10 minutes).\n */\n timeout?: number;\n\n /**\n * Read timeout in milliseconds. Defaults to 100000000.\n */\n readTimeout?: number;\n\n /**\n * Custom control API endpoint.\n * Read from AGENTRUN_CONTROL_ENDPOINT if not provided.\n */\n controlEndpoint?: string;\n\n /**\n * Custom data API endpoint.\n * Read from AGENTRUN_DATA_ENDPOINT if not provided.\n */\n dataEndpoint?: string;\n\n /**\n * Custom DevS API endpoint.\n * Read from DEVS_ENDPOINT if not provided.\n */\n devsEndpoint?: string;\n\n /**\n * Custom request headers.\n */\n headers?: Record<string, string>;\n}\n\n/**\n * AgentRun SDK Global Configuration Class\n *\n * 用于管理账号凭证和客户端配置。\n * Used for managing account credentials and client configuration.\n *\n * @example\n * ```typescript\n * // Create config from parameters\n * const config = new Config({\n * accountId: 'your-account-id',\n * accessKeyId: 'your-key-id',\n * accessKeySecret: 'your-secret',\n * });\n *\n * // Or read from environment variables\n * const config = new Config();\n * ```\n */\nexport class Config {\n private _accessKeyId: string;\n private _accessKeySecret: string;\n private _securityToken: string;\n private _accountId: string;\n private _token?: string;\n private _regionId: string;\n private _timeout: number;\n private _readTimeout: number;\n private _controlEndpoint: string;\n private _dataEndpoint: string;\n private _devsEndpoint: string;\n private _headers: Record<string, string>;\n\n constructor(options: ConfigOptions = {}) {\n this._accessKeyId =\n options.accessKeyId ??\n getEnvWithDefault('', 'AGENTRUN_ACCESS_KEY_ID', 'ALIBABA_CLOUD_ACCESS_KEY_ID');\n\n this._accessKeySecret =\n options.accessKeySecret ??\n getEnvWithDefault('', 'AGENTRUN_ACCESS_KEY_SECRET', 'ALIBABA_CLOUD_ACCESS_KEY_SECRET');\n\n this._securityToken =\n options.securityToken ??\n getEnvWithDefault('', 'AGENTRUN_SECURITY_TOKEN', 'ALIBABA_CLOUD_SECURITY_TOKEN');\n\n this._accountId =\n options.accountId ?? getEnvWithDefault('', 'AGENTRUN_ACCOUNT_ID', 'FC_ACCOUNT_ID');\n\n this._token = options.token;\n\n this._regionId =\n options.regionId ?? getEnvWithDefault('cn-hangzhou', 'AGENTRUN_REGION', 'FC_REGION');\n\n this._timeout = options.timeout ?? 600000;\n this._readTimeout = options.readTimeout ?? 100000000;\n\n this._controlEndpoint =\n options.controlEndpoint ?? getEnvWithDefault('', 'AGENTRUN_CONTROL_ENDPOINT');\n\n this._dataEndpoint = options.dataEndpoint ?? getEnvWithDefault('', 'AGENTRUN_DATA_ENDPOINT');\n\n this._devsEndpoint = options.devsEndpoint ?? getEnvWithDefault('', 'DEVS_ENDPOINT');\n\n this._headers = options.headers ?? {};\n }\n\n /**\n * Create a new Config by merging multiple configs.\n * Later configs take precedence.\n */\n static withConfigs(...configs: (Config | undefined)[]): Config {\n return new Config().update(...configs);\n }\n\n /**\n * Update this config with values from other configs.\n * Non-undefined values from later configs take precedence.\n */\n update(...configs: (Config | undefined)[]): Config {\n for (const config of configs) {\n if (!config) continue;\n\n if (config._accessKeyId) this._accessKeyId = config._accessKeyId;\n if (config._accessKeySecret) this._accessKeySecret = config._accessKeySecret;\n if (config._securityToken) this._securityToken = config._securityToken;\n if (config._accountId) this._accountId = config._accountId;\n if (config._token) this._token = config._token;\n if (config._regionId) this._regionId = config._regionId;\n if (config._timeout) this._timeout = config._timeout;\n if (config._readTimeout) this._readTimeout = config._readTimeout;\n if (config._controlEndpoint) this._controlEndpoint = config._controlEndpoint;\n if (config._dataEndpoint) this._dataEndpoint = config._dataEndpoint;\n if (config._devsEndpoint) this._devsEndpoint = config._devsEndpoint;\n if (config._headers && Object.keys(config._headers).length > 0) {\n this._headers = { ...this._headers, ...config._headers };\n }\n }\n return this;\n }\n\n get accessKeyId(): string {\n return this._accessKeyId;\n }\n\n get accessKeySecret(): string {\n return this._accessKeySecret;\n }\n\n get securityToken(): string {\n return this._securityToken;\n }\n\n get accountId(): string {\n if (!this._accountId) {\n throw new Error(\n 'Account ID is not set. Please add AGENTRUN_ACCOUNT_ID environment variable or set it in code.'\n );\n }\n return this._accountId;\n }\n\n get token(): string | undefined {\n return this._token;\n }\n\n get regionId(): string {\n return this._regionId || 'cn-hangzhou';\n }\n\n get timeout(): number {\n return this._timeout || 600000;\n }\n\n get readTimeout(): number {\n return this._readTimeout || 100000000;\n }\n\n get controlEndpoint(): string {\n if (this._controlEndpoint) {\n return this._controlEndpoint;\n }\n return `https://agentrun.${this.regionId}.aliyuncs.com`;\n }\n\n get dataEndpoint(): string {\n if (this._dataEndpoint) {\n return this._dataEndpoint;\n }\n return `https://${this.accountId}.agentrun-data.${this.regionId}.aliyuncs.com`;\n }\n\n get devsEndpoint(): string {\n if (this._devsEndpoint) {\n return this._devsEndpoint;\n }\n return `https://devs.${this.regionId}.aliyuncs.com`;\n }\n\n get headers(): Record<string, string> {\n return this._headers;\n }\n}\n","/**\n * Exception classes for AgentRun SDK\n *\n * 此模块定义 AgentRun SDK 的异常类。\n * This module defines exception classes for AgentRun SDK.\n */\n\n/**\n * Base error class for AgentRun SDK\n */\nexport class AgentRunError extends Error {\n constructor(message: string) {\n super(message);\n this.name = 'AgentRunError';\n Object.setPrototypeOf(this, AgentRunError.prototype);\n }\n}\n\n/**\n * HTTP error with status code and request ID\n */\nexport class HTTPError extends AgentRunError {\n readonly statusCode: number;\n readonly requestId?: string;\n readonly errorCode?: string;\n\n constructor(\n statusCode: number,\n message: string,\n options?: {\n requestId?: string;\n errorCode?: string;\n }\n ) {\n super(message);\n this.name = 'HTTPError';\n this.statusCode = statusCode;\n this.requestId = options?.requestId;\n this.errorCode = options?.errorCode;\n Object.setPrototypeOf(this, HTTPError.prototype);\n }\n\n /**\n * Convert HTTP error to resource-specific error based on status code\n */\n toResourceError(resourceType: string, resourceId?: string): HTTPError {\n if (this.statusCode == 404) return new ResourceNotExistError(resourceType, resourceId);\n else if (this.statusCode == 409) return new ResourceAlreadyExistError(resourceType, resourceId);\n else if (\n (this.statusCode == 400 || this.statusCode == 500) &&\n this.message.includes('already exists')\n )\n return new ResourceAlreadyExistError(resourceType, resourceId);\n else return this;\n }\n}\n\n/**\n * Client-side error (4xx status codes)\n */\nexport class ClientError extends HTTPError {\n constructor(\n statusCode: number,\n message: string,\n options?: {\n requestId?: string;\n errorCode?: string;\n }\n ) {\n super(statusCode, message, options);\n this.name = 'ClientError';\n Object.setPrototypeOf(this, ClientError.prototype);\n }\n}\n\n/**\n * Server-side error (5xx status codes)\n */\nexport class ServerError extends HTTPError {\n constructor(\n statusCode: number,\n message: string,\n options?: {\n requestId?: string;\n errorCode?: string;\n }\n ) {\n super(statusCode, message, options);\n this.name = 'ServerError';\n Object.setPrototypeOf(this, ServerError.prototype);\n }\n}\n\n/**\n * Resource not found error\n */\nexport class ResourceNotExistError extends ClientError {\n readonly resourceType: string;\n readonly resourceId?: string;\n\n constructor(\n resourceType: string,\n resourceId?: string,\n options?: {\n requestId?: string;\n }\n ) {\n const message = resourceId\n ? `${resourceType} '${resourceId}' does not exist`\n : `${resourceType} does not exist`;\n super(404, message, options);\n this.name = 'ResourceNotExistError';\n this.resourceType = resourceType;\n this.resourceId = resourceId;\n Object.setPrototypeOf(this, ResourceNotExistError.prototype);\n }\n}\n\n/**\n * Resource already exists error\n */\nexport class ResourceAlreadyExistError extends ClientError {\n readonly resourceType: string;\n readonly resourceId?: string;\n\n constructor(\n resourceType: string,\n resourceId?: string,\n options?: {\n requestId?: string;\n }\n ) {\n const message = resourceId\n ? `${resourceType} '${resourceId}' already exists`\n : `${resourceType} already exists`;\n super(409, message, options);\n this.name = 'ResourceAlreadyExistError';\n this.resourceType = resourceType;\n this.resourceId = resourceId;\n Object.setPrototypeOf(this, ResourceAlreadyExistError.prototype);\n }\n}\n","/**\n * Control API Base Module\n *\n * 此模块定义控制链路 API 的基类。\n * This module defines the base class for control API.\n */\n\nimport * as $AgentRun from '@alicloud/agentrun20250910';\nimport * as $OpenApi from '@alicloud/openapi-client';\n\nimport { Config } from './config';\n\n// Handle ESM/CJS interop for Client class\nconst $AgentRunClient =\n // @ts-expect-error - ESM interop: default.default exists when imported as ESM namespace\n $AgentRun.default?.default ?? $AgentRun.default ?? $AgentRun;\n\ntype Client = InstanceType<typeof $AgentRunClient>;\n\n/**\n * Base class for Control API clients\n *\n * 提供控制链路和 DevS API 客户端的获取功能。\n * Provides functionality to get control API and DevS API clients.\n */\nexport class ControlAPI {\n protected config?: Config;\n\n constructor(config?: Config) {\n this.config = config;\n }\n\n /**\n * Get the underlying AgentRun client instance\n */\n getClient(config?: Config): Client {\n const cfg = Config.withConfigs(this.config, config);\n let endpoint = cfg.controlEndpoint;\n\n // Remove protocol prefix\n if (endpoint.startsWith('http://') || endpoint.startsWith('https://')) {\n endpoint = endpoint.split('://')[1];\n }\n\n const openApiConfig = new $OpenApi.Config({\n accessKeyId: cfg.accessKeyId,\n accessKeySecret: cfg.accessKeySecret,\n securityToken: cfg.securityToken || undefined,\n regionId: cfg.regionId,\n endpoint: endpoint,\n connectTimeout: cfg.timeout,\n readTimeout: cfg.readTimeout,\n });\n\n return new $AgentRunClient(openApiConfig);\n }\n}\n\n// Re-export the AgentRun models for use in generated code\nexport { $AgentRun };\n","/**\n * This file is auto generated by the code generation script.\n * Do not modify this file manually.\n * Use the `bun run codegen` command to regenerate.\n *\n * 当前文件为自动生成的控制 API 客户端代码。请勿手动修改此文件。\n * 使用 `bun run codegen` 命令重新生成。\n */\n\n// Source: sandbox_control_api.yaml\n\nimport * as $AgentRun from '@alicloud/agentrun20250910';\nimport * as $Util from '@alicloud/tea-util';\n\nimport { Config } from '../../utils/config';\nimport { ControlAPI } from '../../utils/control-api';\nimport { ClientError, ServerError } from '../../utils/exception';\nimport { logger } from '../../utils/log';\n\n/**\n * Sandbox Control API\n */\nexport class SandboxControlAPI extends ControlAPI {\n constructor(config?: Config) {\n super(config);\n }\n\n /**\n * Create Sandbox Template\n *\n * @param params - Method parameters\n * @param params.input - Template configuration\n * @param params.headers - Custom request headers\n * @param params.config - Optional config override\n * @returns Created Template object\n */\n createTemplate = async (params: {\n input: $AgentRun.CreateTemplateInput;\n headers?: Record<string, string>;\n config?: Config;\n }): Promise<$AgentRun.Template> => {\n const { input, headers, config } = params;\n\n try {\n const client = this.getClient(config);\n const runtime = new $Util.RuntimeOptions({});\n\n const response = await client.createTemplateWithOptions(\n new $AgentRun.CreateTemplateRequest({ body: input }),\n headers ?? {},\n runtime\n );\n\n logger.debug(\n `request api createTemplate, request Request ID: ${response.body?.requestId}\\n request: ${JSON.stringify([input])}\\n response: ${JSON.stringify(response.body?.data)}`\n );\n\n return response.body?.data as $AgentRun.Template;\n } catch (error: unknown) {\n if (error && typeof error === 'object' && 'statusCode' in error) {\n const e = error as { statusCode: number; message: string; data?: { requestId?: string } };\n const statusCode = e.statusCode;\n const message = e.message || 'Unknown error';\n const requestId = e.data?.requestId;\n\n if (statusCode >= 400 && statusCode < 500) {\n throw new ClientError(statusCode, message, { requestId });\n } else if (statusCode >= 500) {\n throw new ServerError(statusCode, message, { requestId });\n }\n }\n throw error;\n }\n };\n\n /**\n * Delete Sandbox Template\n *\n * @param params - Method parameters\n * @param params.templateName - Template name\n * @param params.headers - Custom request headers\n * @param params.config - Optional config override\n * @returns Deleted Template object\n */\n deleteTemplate = async (params: {\n templateName: string;\n headers?: Record<string, string>;\n config?: Config;\n }): Promise<$AgentRun.Template> => {\n const { templateName, headers, config } = params;\n\n try {\n const client = this.getClient(config);\n const runtime = new $Util.RuntimeOptions({});\n\n const response = await client.deleteTemplateWithOptions(templateName, headers ?? {}, runtime);\n\n logger.debug(\n `request api deleteTemplate, request Request ID: ${response.body?.requestId}\\n request: ${JSON.stringify([templateName])}\\n response: ${JSON.stringify(response.body?.data)}`\n );\n\n return response.body?.data as $AgentRun.Template;\n } catch (error: unknown) {\n if (error && typeof error === 'object' && 'statusCode' in error) {\n const e = error as { statusCode: number; message: string; data?: { requestId?: string } };\n const statusCode = e.statusCode;\n const message = e.message || 'Unknown error';\n const requestId = e.data?.requestId;\n\n if (statusCode >= 400 && statusCode < 500) {\n throw new ClientError(statusCode, message, { requestId });\n } else if (statusCode >= 500) {\n throw new ServerError(statusCode, message, { requestId });\n }\n }\n throw error;\n }\n };\n\n /**\n * Update Sandbox Template\n *\n * @param params - Method parameters\n * @param params.templateName - Template name\n * @param params.input - Template configuration\n * @param params.headers - Custom request headers\n * @param params.config - Optional config override\n * @returns Updated Template object\n */\n updateTemplate = async (params: {\n templateName: string;\n input: $AgentRun.UpdateTemplateInput;\n headers?: Record<string, string>;\n config?: Config;\n }): Promise<$AgentRun.Template> => {\n const { templateName, input, headers, config } = params;\n\n try {\n const client = this.getClient(config);\n const runtime = new $Util.RuntimeOptions({});\n\n const response = await client.updateTemplateWithOptions(\n templateName,\n new $AgentRun.UpdateTemplateRequest({ body: input }),\n headers ?? {},\n runtime\n );\n\n logger.debug(\n `request api updateTemplate, request Request ID: ${response.body?.requestId}\\n request: ${JSON.stringify([templateName, input])}\\n response: ${JSON.stringify(response.body?.data)}`\n );\n\n return response.body?.data as $AgentRun.Template;\n } catch (error: unknown) {\n if (error && typeof error === 'object' && 'statusCode' in error) {\n const e = error as { statusCode: number; message: string; data?: { requestId?: string } };\n const statusCode = e.statusCode;\n const message = e.message || 'Unknown error';\n const requestId = e.data?.requestId;\n\n if (statusCode >= 400 && statusCode < 500) {\n throw new ClientError(statusCode, message, { requestId });\n } else if (statusCode >= 500) {\n throw new ServerError(statusCode, message, { requestId });\n }\n }\n throw error;\n }\n };\n\n /**\n * Get Sandbox Template\n *\n * @param params - Method parameters\n * @param params.templateName - Template name\n * @param params.headers - Custom request headers\n * @param params.config - Optional config override\n * @returns Template object\n */\n getTemplate = async (params: {\n templateName: string;\n headers?: Record<string, string>;\n config?: Config;\n }): Promise<$AgentRun.Template> => {\n const { templateName, headers, config } = params;\n\n try {\n const client = this.getClient(config);\n const runtime = new $Util.RuntimeOptions({});\n\n const response = await client.getTemplateWithOptions(templateName, headers ?? {}, runtime);\n\n logger.debug(\n `request api getTemplate, request Request ID: ${response.body?.requestId}\\n request: ${JSON.stringify([templateName])}\\n response: ${JSON.stringify(response.body?.data)}`\n );\n\n return response.body?.data as $AgentRun.Template;\n } catch (error: unknown) {\n if (error && typeof error === 'object' && 'statusCode' in error) {\n const e = error as { statusCode: number; message: string; data?: { requestId?: string } };\n const statusCode = e.statusCode;\n const message = e.message || 'Unknown error';\n const requestId = e.data?.requestId;\n\n if (statusCode >= 400 && statusCode < 500) {\n throw new ClientError(statusCode, message, { requestId });\n } else if (statusCode >= 500) {\n throw new ServerError(statusCode, message, { requestId });\n }\n }\n throw error;\n }\n };\n\n /**\n * List Sandbox Templates\n *\n * @param params - Method parameters\n * @param params.input - List options\n * @param params.headers - Custom request headers\n * @param params.config - Optional config override\n * @returns List of Template objects\n */\n listTemplates = async (params: {\n input: $AgentRun.ListTemplatesRequest;\n headers?: Record<string, string>;\n config?: Config;\n }): Promise<$AgentRun.ListTemplatesOutput> => {\n const { input, headers, config } = params;\n\n try {\n const client = this.getClient(config);\n const runtime = new $Util.RuntimeOptions({});\n\n const response = await client.listTemplatesWithOptions(input, headers ?? {}, runtime);\n\n logger.debug(\n `request api listTemplates, request Request ID: ${response.body?.requestId}\\n request: ${JSON.stringify([input])}\\n response: ${JSON.stringify(response.body?.data)}`\n );\n\n return response.body?.data as $AgentRun.ListTemplatesOutput;\n } catch (error: unknown) {\n if (error && typeof error === 'object' && 'statusCode' in error) {\n const e = error as { statusCode: number; message: string; data?: { requestId?: string } };\n const statusCode = e.statusCode;\n const message = e.message || 'Unknown error';\n const requestId = e.data?.requestId;\n\n if (statusCode >= 400 && statusCode < 500) {\n throw new ClientError(statusCode, message, { requestId });\n } else if (statusCode >= 500) {\n throw new ServerError(statusCode, message, { requestId });\n }\n }\n throw error;\n }\n };\n\n /**\n * Create Sandbox\n *\n * @param params - Method parameters\n * @param params.input - Sandbox configuration\n * @param params.headers - Custom request headers\n * @param params.config - Optional config override\n * @returns Created Sandbox object\n */\n createSandbox = async (params: {\n input: $AgentRun.CreateSandboxInput;\n headers?: Record<string, string>;\n config?: Config;\n }): Promise<$AgentRun.Sandbox> => {\n const { input, headers, config } = params;\n\n try {\n const client = this.getClient(config);\n const runtime = new $Util.RuntimeOptions({\n readTimeout: 30000,\n });\n\n const response = await client.createSandboxWithOptions(\n new $AgentRun.CreateSandboxRequest({ body: input }),\n headers ?? {},\n runtime\n );\n\n logger.debug(\n `request api createSandbox, request Request ID: ${response.body?.requestId}\\n request: ${JSON.stringify([input])}\\n response: ${JSON.stringify(response.body?.data)}`\n );\n\n return response.body?.data as $AgentRun.Sandbox;\n } catch (error: unknown) {\n if (error && typeof error === 'object' && 'statusCode' in error) {\n const e = error as { statusCode: number; message: string; data?: { requestId?: string } };\n const statusCode = e.statusCode;\n const message = e.message || 'Unknown error';\n const requestId = e.data?.requestId;\n\n if (statusCode >= 400 && statusCode < 500) {\n throw new ClientError(statusCode, message, { requestId });\n } else if (statusCode >= 500) {\n throw new ServerError(statusCode, message, { requestId });\n }\n }\n throw error;\n }\n };\n\n /**\n * Delete Sandbox\n *\n * @param params - Method parameters\n * @param params.sandboxId - Sandbox ID\n * @param params.headers - Custom request headers\n * @param params.config - Optional config override\n * @returns Deleted Sandbox object\n */\n deleteSandbox = async (params: {\n sandboxId: string;\n headers?: Record<string, string>;\n config?: Config;\n }): Promise<$AgentRun.Sandbox> => {\n const { sandboxId, headers, config } = params;\n\n try {\n const client = this.getClient(config);\n const runtime = new $Util.RuntimeOptions({});\n\n const response = await client.deleteSandboxWithOptions(sandboxId, headers ?? {}, runtime);\n\n logger.debug(\n `request api deleteSandbox, request Request ID: ${response.body?.requestId}\\n request: ${JSON.stringify([sandboxId])}\\n response: ${JSON.stringify(response.body?.data)}`\n );\n\n return response.body?.data as $AgentRun.Sandbox;\n } catch (error: unknown) {\n if (error && typeof error === 'object' && 'statusCode' in error) {\n const e = error as { statusCode: number; message: string; data?: { requestId?: string } };\n const statusCode = e.statusCode;\n const message = e.message || 'Unknown error';\n const requestId = e.data?.requestId;\n\n if (statusCode >= 400 && statusCode < 500) {\n throw new ClientError(statusCode, message, { requestId });\n } else if (statusCode >= 500) {\n throw new ServerError(statusCode, message, { requestId });\n }\n }\n throw error;\n }\n };\n\n /**\n * Stop Sandbox\n *\n * @param params - Method parameters\n * @param params.sandboxId - Sandbox ID\n * @param params.headers - Custom request headers\n * @param params.config - Optional config override\n * @returns Stopped Sandbox object\n */\n stopSandbox = async (params: {\n sandboxId: string;\n headers?: Record<string, string>;\n config?: Config;\n }): Promise<$AgentRun.Sandbox> => {\n const { sandboxId, headers, config } = params;\n\n try {\n const client = this.getClient(config);\n const runtime = new $Util.RuntimeOptions({});\n\n const response = await client.stopSandboxWithOptions(sandboxId, headers ?? {}, runtime);\n\n logger.debug(\n `request api stopSandbox, request Request ID: ${response.body?.requestId}\\n request: ${JSON.stringify([sandboxId])}\\n response: ${JSON.stringify(response.body?.data)}`\n );\n\n return response.body?.data as $AgentRun.Sandbox;\n } catch (error: unknown) {\n if (error && typeof error === 'object' && 'statusCode' in error) {\n const e = error as { statusCode: number; message: string; data?: { requestId?: string } };\n const statusCode = e.statusCode;\n const message = e.message || 'Unknown error';\n const requestId = e.data?.requestId;\n\n if (statusCode >= 400 && statusCode < 500) {\n throw new ClientError(statusCode, message, { requestId });\n } else if (statusCode >= 500) {\n throw new ServerError(statusCode, message, { requestId });\n }\n }\n throw error;\n }\n };\n\n /**\n * Get Sandbox\n *\n * @param params - Method parameters\n * @param params.sandboxId - Sandbox ID\n * @param params.headers - Custom request headers\n * @param params.config - Optional config override\n * @returns Sandbox object\n */\n getSandbox = async (params: {\n sandboxId: string;\n headers?: Record<string, string>;\n config?: Config;\n }): Promise<$AgentRun.Sandbox> => {\n const { sandboxId, headers, config } = params;\n\n try {\n const client = this.getClient(config);\n const runtime = new $Util.RuntimeOptions({});\n\n const response = await client.getSandboxWithOptions(sandboxId, headers ?? {}, runtime);\n\n logger.debug(\n `request api getSandbox, request Request ID: ${response.body?.requestId}\\n request: ${JSON.stringify([sandboxId])}\\n response: ${JSON.stringify(response.body?.data)}`\n );\n\n return response.body?.data as $AgentRun.Sandbox;\n } catch (error: unknown) {\n if (error && typeof error === 'object' && 'statusCode' in error) {\n const e = error as { statusCode: number; message: string; data?: { requestId?: string } };\n const statusCode = e.statusCode;\n const message = e.message || 'Unknown error';\n const requestId = e.data?.requestId;\n\n if (statusCode >= 400 && statusCode < 500) {\n throw new ClientError(statusCode, message, { requestId });\n } else if (statusCode >= 500) {\n throw new ServerError(statusCode, message, { requestId });\n }\n }\n throw error;\n }\n };\n\n /**\n * List Sandboxes\n *\n * @param params - Method parameters\n * @param params.input - List options\n * @param params.headers - Custom request headers\n * @param params.config - Optional config override\n * @returns List of Sandbox objects\n */\n listSandboxes = async (params: {\n input: $AgentRun.ListSandboxesRequest;\n headers?: Record<string, string>;\n config?: Config;\n }): Promise<$AgentRun.ListSandboxesOutput> => {\n const { input, headers, config } = params;\n\n try {\n const client = this.getClient(config);\n const runtime = new $Util.RuntimeOptions({});\n\n const response = await client.listSandboxesWithOptions(input, headers ?? {}, runtime);\n\n logger.debug(\n `request api listSandboxes, request Request ID: ${response.body?.requestId}\\n request: ${JSON.stringify([input])}\\n response: ${JSON.stringify(response.body?.data)}`\n );\n\n return response.body?.data as $AgentRun.ListSandboxesOutput;\n } catch (error: unknown) {\n if (error && typeof error === 'object' && 'statusCode' in error) {\n const e = error as { statusCode: number; message: string; data?: { requestId?: string } };\n const statusCode = e.statusCode;\n const message = e.message || 'Unknown error';\n const requestId = e.data?.requestId;\n\n if (statusCode >= 400 && statusCode < 500) {\n throw new ClientError(statusCode, message, { requestId });\n } else if (statusCode >= 500) {\n throw new ServerError(statusCode, message, { requestId });\n }\n }\n throw error;\n }\n };\n}\n","/**\n * Sandbox Data API Base Class\n *\n * This module provides an HTTP client for interacting with the AgentRun Sandbox Data API.\n * 此模块提供用于与 AgentRun Sandbox Data API 交互的 HTTP 客户端。\n */\n\nimport * as $AgentRun from '@alicloud/agentrun20250910';\nimport * as $Util from '@alicloud/tea-util';\n\nimport { Config } from '../../utils/config';\nimport { ControlAPI } from '../../utils/control-api';\nimport { ClientError } from '../../utils/exception';\nimport { logger } from '../../utils/log';\n\n/**\n * Resource type enum\n */\nexport enum ResourceType {\n Runtime = 'runtime',\n LiteLLM = 'litellm',\n Tool = 'tool',\n Template = 'template',\n Sandbox = 'sandbox',\n}\n\n/**\n * Sandbox Data API Client\n *\n * Provides methods for making HTTP requests to sandbox data API endpoints.\n */\nexport class SandboxDataAPI {\n protected resourceName: string;\n protected resourceType: ResourceType;\n protected namespace: string;\n protected config: Config;\n protected accessToken?: string;\n protected accessTokenMap: Map<string, string> = new Map();\n\n constructor(params: {\n sandboxId?: string;\n templateName?: string;\n config?: Config;\n namespace?: string;\n }) {\n const { config, namespace = 'sandboxes' } = params;\n\n this.resourceName = '';\n this.resourceType = ResourceType.Template;\n this.namespace = namespace;\n this.config = config || new Config();\n\n // Note: Cannot call async refreshAccessToken in constructor\n // Token will be refreshed on first API call\n }\n\n /**\n * Refresh access token for the resource\n */\n protected async refreshAccessToken(params: {\n sandboxId?: string;\n templateName?: string;\n config?: Config;\n }): Promise<void> {\n const { sandboxId, templateName, config } = params;\n const cfg = Config.withConfigs(config, this.config);\n\n const cacheKey = (sandboxId || templateName)!;\n const cachedToken = this.accessTokenMap.get(cacheKey);\n\n if (sandboxId) {\n this.resourceName = sandboxId;\n this.resourceType = ResourceType.Sandbox;\n this.namespace = `sandboxes/${sandboxId}`;\n } else if (templateName) {\n this.resourceName = templateName;\n this.resourceType = ResourceType.Template;\n this.namespace = 'sandboxes';\n }\n\n if (cachedToken) {\n this.accessToken = cachedToken;\n return;\n }\n\n // Fetch new token if not cached\n this.accessToken = undefined;\n await this.auth({ config: cfg });\n if (this.accessToken) {\n this.accessTokenMap.set(cacheKey, this.accessToken);\n }\n }\n\n /**\n * Get base URL for data API\n */\n protected getBaseUrl(): string {\n return this.config.dataEndpoint;\n }\n\n /**\n * Construct full URL with path and query parameters\n */\n protected withPath(path: string, query?: Record<string, any>): string {\n // Remove leading slash\n path = path.replace(/^\\//, '');\n\n // Build base URL\n const parts = [this.getBaseUrl(), this.namespace, path].filter(p => p && p.length > 0);\n let url = parts.join('/').replace(/\\/+/g, '/').replace(/:\\//g, '://');\n\n // Add query parameters\n if (query && Object.keys(query).length > 0) {\n const urlObj = new URL(url);\n Object.entries(query).forEach(([key, value]) => {\n if (Array.isArray(value)) {\n value.forEach(v => urlObj.searchParams.append(key, String(v)));\n } else if (value !== undefined && value !== null) {\n urlObj.searchParams.append(key, String(value));\n }\n });\n url = urlObj.toString();\n }\n\n return url;\n }\n\n /**\n * Authentication hook - gets access token for the resource\n */\n protected async auth(params: { config?: Config }): Promise<void> {\n const cfg = Config.withConfigs(this.config, params.config);\n\n // If token is provided in config, use it directly\n if (cfg.token) {\n logger.debug(`Using provided access token from config: ${this.maskToken(cfg.token)}`);\n this.accessToken = cfg.token;\n return;\n }\n\n // Fetch access token from control API if needed\n if (!this.accessToken && this.resourceName && this.resourceType && !cfg.token) {\n try {\n const controlApi = new ControlAPI(cfg);\n const client = (controlApi as any).getClient(cfg);\n\n const request =\n this.resourceType === ResourceType.Sandbox\n ? new $AgentRun.GetAccessTokenRequest({\n resourceId: this.resourceName,\n resourceType: this.resourceType,\n })\n : new $AgentRun.GetAccessTokenRequest({\n resourceName: this.resourceName,\n resourceType: this.resourceType,\n });\n\n const runtime = new $Util.RuntimeOptions({});\n const response = await client.getAccessTokenWithOptions(request, {}, runtime);\n\n this.accessToken = response.body?.data?.accessToken;\n\n logger.debug(\n `Fetched access token for resource ${this.resourceName} of type ${this.resourceType}: ${this.maskToken(this.accessToken || '')}`\n );\n } catch (error) {\n logger.warn(\n `Failed to get access token for ${this.resourceType}(${this.resourceName}): ${error}`\n );\n }\n }\n }\n\n /**\n * Mask token for logging\n */\n protected maskToken(token: string): string {\n if (!token || token.length <= 8) {\n return '***';\n }\n return `${token.substring(0, 4)}...${token.substring(token.length - 4)}`;\n }\n\n /**\n * Prepare request headers\n */\n protected prepareHeaders(params: {\n headers?: Record<string, string>;\n config?: Config;\n }): Record<string, string> {\n const cfg = Config.withConfigs(this.config, params.config);\n\n const reqHeaders: Record<string, string> = {\n 'Content-Type': 'application/json',\n 'User-Agent': 'AgentRunDataClient-Node/1.0',\n 'Agentrun-Access-Token': cfg.token || this.accessToken || '',\n ...cfg.headers,\n ...(params.headers || {}),\n };\n\n return reqHeaders;\n }\n\n /**\n * Make an HTTP request\n */\n protected async makeRequest<T = any>(params: {\n method: string;\n url: string;\n data?: any;\n headers?: Record<string, string>;\n query?: Record<string, any>;\n config?: Config;\n }): Promise<T> {\n const { method, url, data, headers, query, config } = params;\n\n // Prepare headers\n const reqHeaders = this.prepareHeaders({ headers, config });\n\n // Add query parameters to URL\n let finalUrl = url;\n if (query && Object.keys(query).length > 0) {\n const urlObj = new URL(url);\n Object.entries(query).forEach(([key, value]) => {\n if (value !== undefined && value !== null) {\n if (Array.isArray(value)) {\n value.forEach(v => urlObj.searchParams.append(key, String(v)));\n } else {\n urlObj.searchParams.append(key, String(value));\n }\n }\n });\n finalUrl = urlObj.toString();\n }\n\n logger.debug(\n `${method} ${finalUrl} headers=${JSON.stringify(reqHeaders)} data=${JSON.stringify(data)}`\n );\n\n try {\n const cfg = Config.withConfigs(this.config, config);\n const response = await fetch(finalUrl, {\n method,\n headers: reqHeaders,\n body: data ? JSON.stringify(data) : undefined,\n signal: AbortSignal.timeout(cfg.timeout),\n });\n\n const responseText = await response.text();\n logger.debug(`Response: ${responseText}`);\n\n // Parse JSON response\n if (responseText) {\n try {\n return JSON.parse(responseText) as T;\n } catch (error) {\n const errorMsg = `Failed to parse JSON response: ${error}`;\n logger.error(errorMsg);\n\n if (response.status === 502 && responseText.includes('502 Bad Gateway')) {\n throw new ClientError(response.status, '502 Bad Gateway');\n }\n\n throw new ClientError(response.status, errorMsg);\n }\n }\n\n return {} as T;\n } catch (error) {\n if (error instanceof ClientError) {\n throw error;\n }\n\n const errorMsg = `Request error: ${error}`;\n throw new ClientError(0, errorMsg);\n }\n }\n\n /**\n * GET request\n */\n async get<T = any>(params: {\n path: string;\n query?: Record<string, any>;\n headers?: Record<string, string>;\n config?: Config;\n }): Promise<T> {\n const url = this.withPath(params.path, params.query);\n return this.makeRequest<T>({\n method: 'GET',\n url,\n headers: params.headers,\n config: params.config,\n });\n }\n\n /**\n * POST request\n */\n async post<T = any>(params: {\n path: string;\n data?: any;\n query?: Record<string, any>;\n headers?: Record<string, string>;\n config?: Config;\n }): Promise<T> {\n const url = this.withPath(params.path, params.query);\n return this.makeRequest<T>({\n method: 'POST',\n url,\n data: params.data,\n headers: params.headers,\n config: params.config,\n });\n }\n\n /**\n * PUT request\n */\n async put<T = any>(params: {\n path: string;\n data?: any;\n query?: Record<string, any>;\n headers?: Record<string, string>;\n config?: Config;\n }): Promise<T> {\n const url = this.withPath(params.path, params.query);\n return this.makeRequest<T>({\n method: 'PUT',\n url,\n data: params.data,\n headers: params.headers,\n config: params.config,\n });\n }\n\n /**\n * PATCH request\n */\n async patch<T = any>(params: {\n path: string;\n data?: any;\n query?: Record<string, any>;\n headers?: Record<string, string>;\n config?: Config;\n }): Promise<T> {\n const url = this.withPath(params.path, params.query);\n return this.makeRequest<T>({\n method: 'PATCH',\n url,\n data: params.data,\n headers: params.headers,\n config: params.config,\n });\n }\n\n /**\n * DELETE request\n */\n async delete<T = any>(params: {\n path: string;\n query?: Record<string, any>;\n headers?: Record<string, string>;\n config?: Config;\n }): Promise<T> {\n const url = this.withPath(params.path, params.query);\n return this.makeRequest<T>({\n method: 'DELETE',\n url,\n headers: params.headers,\n config: params.config,\n });\n }\n\n /**\n * Check sandbox health\n */\n checkHealth = async (params: {\n sandboxId: string;\n config?: Config;\n }): Promise<{ status: string; [key: string]: any }> => {\n await this.refreshAccessToken({\n sandboxId: params.sandboxId,\n config: params.config,\n });\n\n return this.get({ path: '/health', config: params.config });\n };\n\n /**\n * Create sandbox from template\n * 从模板创建沙箱 / Create Sandbox from Template\n */\n createSandbox = async (params: {\n templateName: string;\n sandboxIdleTimeoutSeconds?: number;\n nasConfig?: Record<string, any>;\n ossMountConfig?: Record<string, any>;\n polarFsConfig?: Record<string, any>;\n config?: Config;\n }): Promise<any> => {\n await this.refreshAccessToken({\n templateName: params.templateName,\n config: params.config,\n });\n\n // Build request data / 构建请求数据\n const data: Record<string, any> = {\n templateName: params.templateName,\n sandboxIdleTimeoutSeconds: params.sandboxIdleTimeoutSeconds || 600,\n };\n\n // Add optional parameters / 添加可选参数\n if (params.nasConfig !== undefined) {\n data.nasConfig = params.nasConfig;\n }\n if (params.ossMountConfig !== undefined) {\n data.ossMountConfig = params.ossMountConfig;\n }\n if (params.polarFsConfig !== undefined) {\n data.polarFsConfig = params.polarFsConfig;\n }\n\n return this.post({\n path: '/',\n data,\n });\n };\n\n /**\n * Delete sandbox\n */\n deleteSandbox = async (params: { sandboxId: string; config?: Config }): Promise<any> => {\n await this.refreshAccessToken({\n sandboxId: params.sandboxId,\n config: params.config,\n });\n\n return this.delete({ path: '/' });\n };\n\n /**\n * Stop sandbox\n */\n stopSandbox = async (params: { sandboxId: string; config?: Config }): Promise<any> => {\n await this.refreshAccessToken({\n sandboxId: params.sandboxId,\n config: params.config,\n });\n\n return this.post({ path: '/stop' });\n };\n\n /**\n * Get sandbox info\n */\n getSandbox = async (params: { sandboxId: string; config?: Config }): Promise<any> => {\n await this.refreshAccessToken({\n sandboxId: params.sandboxId,\n config: params.config,\n });\n\n return this.get({ path: '/' });\n };\n}\n","/**\n * Browser Sandbox Data API\n *\n * This module provides data API methods for Browser sandboxes.\n * 此模块提供浏览器沙箱的数据 API 方法。\n */\n\nimport * as fs from 'fs';\n\nimport { Config } from '../../utils/config';\nimport { ClientError } from '../../utils/exception';\nimport { logger } from '../../utils/log';\n\nimport { SandboxDataAPI } from './sandbox-data';\n\n/**\n * Browser Data API\n *\n * Provides methods for interacting with Browser sandbox data endpoints.\n */\nexport class BrowserDataAPI extends SandboxDataAPI {\n protected sandboxId: string;\n\n constructor(params: { sandboxId: string; config?: Config }) {\n super({\n sandboxId: params.sandboxId,\n config: params.config,\n // Set namespace to include sandboxId for CDP/VNC URL generation\n namespace: `sandboxes/${params.sandboxId}`,\n });\n this.sandboxId = params.sandboxId;\n }\n\n /**\n * Generate the WebSocket URL for Chrome DevTools Protocol (CDP) connection\n */\n getCdpUrl(record?: boolean): string {\n const cdpUrl = this.withPath('/ws/automation').replace('http', 'ws');\n const url = new URL(cdpUrl);\n\n url.searchParams.set('tenantId', this.config.accountId);\n if (record) {\n url.searchParams.set('recording', 'true');\n }\n\n return url.toString();\n }\n\n /**\n * Generate the WebSocket URL for VNC (Virtual Network Computing) live view connection\n */\n getVncUrl(record?: boolean): string {\n const vncUrl = this.withPath('/ws/liveview').replace('http', 'ws');\n const url = new URL(vncUrl);\n\n url.searchParams.set('tenantId', this.config.accountId);\n if (record) {\n url.searchParams.set('recording', 'true');\n }\n\n return url.toString();\n }\n\n /**\n * List all recordings\n */\n listRecordings = async (params?: { config?: Config }): Promise<any> => {\n return this.get({ path: '/recordings', config: params?.config });\n };\n\n /**\n * Delete a recording\n */\n deleteRecording = async (params: { filename: string; config?: Config }): Promise<any> => {\n return this.delete({ path: `/recordings/${params.filename}`, config: params.config });\n };\n\n /**\n * Download a recording video file\n */\n downloadRecording = async (params: {\n filename: string;\n savePath: string;\n }): Promise<{ savedPath: string; size: number }> => {\n return this.getVideo({\n path: `/recordings/${params.filename}`,\n savePath: params.savePath,\n });\n };\n\n /**\n * Helper method to download video file\n */\n protected async getVideo(params: {\n path: string;\n savePath: string;\n query?: Record<string, any>;\n headers?: Record<string, string>;\n config?: Config;\n }): Promise<{ savedPath: string; size: number }> {\n const url = this.withPath(params.path, params.query);\n\n // Prepare headers with auth\n const cfg = Config.withConfigs(this.config, params.config);\n const reqHeaders = this.prepareHeaders({ headers: params.headers, config: cfg });\n\n try {\n const response = await fetch(url, {\n method: 'GET',\n headers: reqHeaders,\n signal: AbortSignal.timeout(cfg.timeout),\n });\n\n if (!response.ok) {\n const errorText = await response.text();\n throw new ClientError(response.status, errorText);\n }\n\n const arrayBuffer = await response.arrayBuffer();\n const buffer = Buffer.from(arrayBuffer);\n\n await fs.promises.writeFile(params.savePath, buffer);\n\n return {\n savedPath: params.savePath,\n size: buffer.length,\n };\n } catch (error) {\n if (error instanceof ClientError) {\n throw error;\n }\n logger.error(`Download video error: ${error}`);\n throw new ClientError(0, `Download video error: ${error}`);\n }\n }\n}\n","/**\n * Common data models for AgentRun SDK\n *\n * 此模块定义通用的数据模型。\n * This module defines common data models.\n */\n\n/**\n * Resource status enum\n */\nexport type Status =\n | 'CREATING'\n | 'CREATE_FAILED'\n | 'READY'\n | 'UPDATING'\n | 'UPDATE_FAILED'\n | 'DELETING'\n | 'DELETE_FAILED';\n\nexport const Status = {\n CREATING: 'CREATING' as Status,\n CREATE_FAILED: 'CREATE_FAILED' as Status,\n READY: 'READY' as Status,\n UPDATING: 'UPDATING' as Status,\n UPDATE_FAILED: 'UPDATE_FAILED' as Status,\n DELETING: 'DELETING' as Status,\n DELETE_FAILED: 'DELETE_FAILED' as Status,\n};\n\nexport function isFinalStatus(status?: Status) {\n return [\n undefined,\n null,\n '',\n ...(['READY', 'CREATE_FAILED', 'UPDATE_FAILED', 'DELETE_FAILED'] as Status[]),\n ].includes(status);\n}\n\n/**\n * Network mode enum\n */\nexport type NetworkMode = 'PUBLIC' | 'PRIVATE' | 'PUBLIC_AND_PRIVATE';\n\nexport const NetworkMode = {\n PUBLIC: 'PUBLIC' as NetworkMode,\n PRIVATE: 'PRIVATE' as NetworkMode,\n PUBLIC_AND_PRIVATE: 'PUBLIC_AND_PRIVATE' as NetworkMode,\n};\n\n/**\n * Pageable input for list operations\n */\nexport interface PageableInput {\n pageNumber?: number;\n pageSize?: number;\n}\n\n/**\n * Network configuration\n */\nexport interface NetworkConfig {\n networkMode?: NetworkMode;\n vpcId?: string;\n vSwitchIds?: string[];\n securityGroupId?: string;\n}\n\n/**\n * Helper to convert camelCase to snake_case\n */\nexport function toSnakeCase(str: string): string {\n return str.replace(/[A-Z]/g, letter => `_${letter.toLowerCase()}`);\n}\n\n/**\n * Helper to convert snake_case to camelCase\n */\nexport function toCamelCase(str: string): string {\n return str.replace(/_([a-z])/g, (_, letter) => letter.toUpperCase());\n}\n\n/**\n * Convert object keys from camelCase to snake_case\n */\nexport function toSnakeCaseKeys<T extends Record<string, unknown>>(\n obj: T\n): Record<string, unknown> {\n const result: Record<string, unknown> = {};\n for (const [key, value] of Object.entries(obj)) {\n const snakeKey = toSnakeCase(key);\n if (value !== null && typeof value === 'object' && !Array.isArray(value)) {\n result[snakeKey] = toSnakeCaseKeys(value as Record<string, unknown>);\n } else if (Array.isArray(value)) {\n result[snakeKey] = value.map(item =>\n typeof item === 'object' && item !== null\n ? toSnakeCaseKeys(item as Record<string, unknown>)\n : item\n );\n } else {\n result[snakeKey] = value;\n }\n }\n return result;\n}\n\n/**\n * Convert object keys from snake_case to camelCase\n */\nexport function toCamelCaseKeys<T extends Record<string, unknown>>(\n obj: T\n): Record<string, unknown> {\n const result: Record<string, unknown> = {};\n for (const [key, value] of Object.entries(obj)) {\n const camelKey = toCamelCase(key);\n if (value !== null && typeof value === 'object' && !Array.isArray(value)) {\n result[camelKey] = toCamelCaseKeys(value as Record<string, unknown>);\n } else if (Array.isArray(value)) {\n result[camelKey] = value.map(item =>\n typeof item === 'object' && item !== null\n ? toCamelCaseKeys(item as Record<string, unknown>)\n : item\n );\n } else {\n result[camelKey] = value;\n }\n }\n return result;\n}\n\n/**\n * Remove undefined values from object\n */\nexport function removeUndefined<T extends Record<string, unknown>>(obj: T): Partial<T> {\n const result: Partial<T> = {};\n for (const [key, value] of Object.entries(obj)) {\n if (value !== undefined) {\n (result as Record<string, unknown>)[key] = value;\n }\n }\n return result;\n}\n","/**\n * Sandbox Data Models\n *\n * 此模块定义 Sandbox 相关的所有数据模型。\n * This module defines all data models related to Sandbox.\n */\n\nimport { Status, PageableInput } from '../utils/model';\n\n/**\n * Template type enum\n */\nexport enum TemplateType {\n CODE_INTERPRETER = 'CodeInterpreter',\n BROWSER = 'Browser',\n AIO = 'AllInOne',\n /**\n * 自定义镜像 / Custom Image\n */\n CUSTOM = 'CustomImage',\n}\n\n/**\n * Sandbox state enum\n */\nexport enum SandboxState {\n CREATING = 'Creating',\n RUNNING = 'Running',\n READY = 'READY', // API返回的就绪状态,等同于Running\n STOPPED = 'Stopped',\n FAILED = 'Failed',\n DELETING = 'Deleting',\n}\n\n/**\n * Template network mode enum\n */\nexport enum TemplateNetworkMode {\n PUBLIC = 'PUBLIC',\n PRIVATE = 'PRIVATE',\n PUBLIC_AND_PRIVATE = 'PUBLIC_AND_PRIVATE',\n}\n\n/**\n * OSS permission enum\n */\nexport enum TemplateOSSPermission {\n READ_WRITE = 'READ_WRITE',\n READ_ONLY = 'READ_ONLY',\n}\n\n/**\n * Code language enum\n */\nexport enum CodeLanguage {\n PYTHON = 'python',\n JAVASCRIPT = 'javascript',\n}\n\n// ==================== NAS 配置相关 ====================\n\n/**\n * NAS mount configuration\n * NAS 挂载配置 / NAS Mount Configuration\n *\n * 定义 NAS 文件系统的挂载配置。\n * Defines the mount configuration for NAS file system.\n */\nexport interface NASMountConfig {\n /**\n * 是否启用 TLS 加密 / Whether to enable TLS encryption\n */\n enableTLS?: boolean;\n /**\n * 挂载目录 / Mount Directory\n * @example \"/home/test\"\n */\n mountDir?: string;\n /**\n * NAS 服务器地址 / NAS Server Address\n * @example \"***-uni85.cn-hangzhou.nas.com:/\"\n */\n serverAddr?: string;\n}\n\n/**\n * NAS configuration\n * NAS 配置 / NAS Configuration\n *\n * 定义 NAS 文件系统的配置。\n * Defines the configuration for NAS file system.\n */\nexport interface NASConfig {\n /**\n * 组 ID / Group ID\n * @example 100\n */\n groupId?: number;\n /**\n * 挂载点列表 / Mount Points List\n */\n mountPoints?: NASMountConfig[];\n /**\n * 用户 ID / User ID\n * @example 100\n */\n userId?: number;\n}\n\n// ==================== OSS 挂载配置相关 ====================\n\n/**\n * OSS mount point\n * OSS 挂载点 / OSS Mount Point\n *\n * 定义 OSS 存储的挂载点配置。\n * Defines the mount point configuration for OSS storage.\n */\nexport interface OSSMountPoint {\n /**\n * OSS 存储桶名称 / OSS Bucket Name\n * @example \"my-bucket\"\n */\n bucketName?: string;\n /**\n * OSS 存储桶路径 / OSS Bucket Path\n * @example \"/my-dir\"\n */\n bucketPath?: string;\n /**\n * OSS 端点 / OSS Endpoint\n * @example \"http://oss-cn-shanghai.aliyuncs.com\"\n */\n endpoint?: string;\n /**\n * 挂载目录 / Mount Directory\n * @example \"/mnt/dir\"\n */\n mountDir?: string;\n /**\n * 是否只读 / Read Only\n */\n readOnly?: boolean;\n}\n\n/**\n * OSS mount configuration\n * OSS 挂载配置 / OSS Mount Configuration\n *\n * 定义 OSS 存储的挂载配置。\n * Defines the mount configuration for OSS storage.\n */\nexport interface OSSMountConfig {\n /**\n * 挂载点列表 / Mount Points List\n */\n mountPoints?: OSSMountPoint[];\n}\n\n// ==================== PolarFS 配置相关 ====================\n\n/**\n * PolarFS mount configuration\n * PolarFS 挂载配置 / PolarFS Mount Configuration\n *\n * 定义 PolarFS 文件系统的挂载配置。\n * Defines the mount configuration for PolarFS file system.\n */\nexport interface PolarFsMountConfig {\n /**\n * 实例 ID / Instance ID\n */\n instanceId?: string;\n /**\n * 挂载目录 / Mount Directory\n */\n mountDir?: string;\n /**\n * 远程目录 / Remote Directory\n */\n remoteDir?: string;\n}\n\n/**\n * PolarFS configuration\n * PolarFS 配置 / PolarFS Configuration\n *\n * 定义 PolarFS 文件系统的配置。\n * Defines the configuration for PolarFS file system.\n */\nexport interface PolarFsConfig {\n /**\n * 组 ID / Group ID\n */\n groupId?: number;\n /**\n * 挂载点列表 / Mount Points List\n */\n mountPoints?: PolarFsMountConfig[];\n /**\n * 用户 ID / User ID\n */\n userId?: number;\n}\n\n// ==================== 模板配置相关 ====================\n\n/**\n * Template network configuration\n */\nexport interface TemplateNetworkConfiguration {\n networkMode?: TemplateNetworkMode;\n securityGroupId?: string;\n vpcId?: string;\n vswitchIds?: string[];\n}\n\n/**\n * Template OSS configuration\n */\nexport interface TemplateOssConfiguration {\n bucketName: string;\n mountPoint: string;\n permission?: TemplateOSSPermission;\n prefix: string;\n region: string;\n}\n\n/**\n * Template log configuration\n */\nexport interface TemplateLogConfiguration {\n project?: string;\n logstore?: string;\n}\n\n/**\n * Template credential configuration\n */\nexport interface TemplateCredentialConfiguration {\n credentialName?: string;\n}\n\n/**\n * Template ARMS configuration\n */\nexport interface TemplateArmsConfiguration {\n armsLicenseKey?: string;\n enableArms: boolean;\n}\n\n/**\n * Template container configuration\n */\nexport interface TemplateContainerConfiguration {\n image?: string;\n command?: string[];\n /**\n * ACR 实例 ID / ACR Instance ID\n */\n acrInstanceId?: string;\n /**\n * 镜像注册表类型 / Image Registry Type\n */\n imageRegistryType?: string;\n /**\n * 端口 / Port\n */\n port?: number;\n}\n\n/**\n * Template MCP options\n */\nexport interface TemplateMcpOptions {\n enabledTools?: string[];\n transport?: string;\n}\n\n/**\n * Template MCP state\n */\nexport interface TemplateMcpState {\n accessEndpoint?: string;\n status?: string;\n statusReason?: string;\n}\n\n/**\n * Template create input\n * 模板创建输入 / Template Create Input\n */\nexport interface TemplateCreateInput {\n templateName?: string;\n templateType: TemplateType;\n cpu?: number;\n memory?: number;\n executionRoleArn?: string;\n sandboxIdleTimeoutInSeconds?: number;\n sandboxTtlInSeconds?: number;\n shareConcurrencyLimitPerSandbox?: number;\n templateConfiguration?: Record<string, unknown>;\n description?: string;\n environmentVariables?: Record<string, string>;\n networkConfiguration?: TemplateNetworkConfiguration;\n ossConfiguration?: TemplateOssConfiguration[];\n logConfiguration?: TemplateLogConfiguration;\n credentialConfiguration?: TemplateCredentialConfiguration;\n armsConfiguration?: TemplateArmsConfiguration;\n containerConfiguration?: TemplateContainerConfiguration;\n diskSize?: number;\n /**\n * 是否允许匿名管理 / Whether to allow anonymous management\n */\n allowAnonymousManage?: boolean;\n}\n\n/**\n * Template update input\n */\nexport interface TemplateUpdateInput {\n cpu?: number;\n memory?: number;\n executionRoleArn?: string;\n sandboxIdleTimeoutInSeconds?: number;\n sandboxTtlInSeconds?: number;\n shareConcurrencyLimitPerSandbox?: number;\n description?: string;\n environmentVariables?: Record<string, string>;\n networkConfiguration?: TemplateNetworkConfiguration;\n ossConfiguration?: TemplateOssConfiguration[];\n logConfiguration?: TemplateLogConfiguration;\n credentialConfiguration?: TemplateCredentialConfiguration;\n armsConfiguration?: TemplateArmsConfiguration;\n containerConfiguration?: TemplateContainerConfiguration;\n diskSize?: number;\n}\n\n/**\n * Template list input\n */\nexport interface TemplateListInput extends PageableInput {\n templateType?: TemplateType;\n}\n\n/**\n * Sandbox create input\n * 沙箱创建输入 / Sandbox Create Input\n */\nexport interface SandboxCreateInput {\n /**\n * 模板名称 / Template Name\n */\n templateName: string;\n /**\n * 沙箱空闲超时时间(秒) / Sandbox Idle Timeout (seconds)\n */\n sandboxIdleTimeoutSeconds?: number;\n /**\n * 沙箱 ID(可选,用户可指定) / Sandbox ID (optional, user can specify)\n */\n sandboxId?: string;\n /**\n * NAS 配置 / NAS Configuration\n */\n nasConfig?: NASConfig;\n /**\n * OSS 挂载配置 / OSS Mount Configuration\n */\n ossMountConfig?: OSSMountConfig;\n /**\n * PolarFS 配置 / PolarFS Configuration\n */\n polarFsConfig?: PolarFsConfig;\n}\n\n/**\n * Sandbox list input\n */\nexport interface SandboxListInput {\n maxResults?: number;\n nextToken?: string;\n status?: string;\n templateName?: string;\n templateType?: TemplateType;\n}\n\n/**\n * Template data\n * 模板数据 / Template Data\n */\nexport interface TemplateData {\n /**\n * 模板 ARN / Template ARN\n */\n templateArn?: string;\n /**\n * 模板 ID / Template ID\n */\n templateId?: string;\n /**\n * 模板名称 / Template Name\n */\n templateName?: string;\n /**\n * 模板类型 / Template Type\n */\n templateType?: TemplateType;\n /**\n * CPU 核数 / CPU Cores\n */\n cpu?: number;\n /**\n * 内存大小(MB) / Memory Size (MB)\n */\n memory?: number;\n /**\n * 创建时间 / Creation Time\n */\n createdAt?: string;\n /**\n * 描述 / Description\n */\n description?: string;\n /**\n * 执行角色 ARN / Execution Role ARN\n */\n executionRoleArn?: string;\n /**\n * 最后更新时间 / Last Updated Time\n */\n lastUpdatedAt?: string;\n /**\n * 资源名称 / Resource Name\n */\n resourceName?: string;\n /**\n * 沙箱空闲超时时间(秒) / Sandbox Idle Timeout (seconds)\n */\n sandboxIdleTimeoutInSeconds?: number;\n /**\n * 沙箱存活时间(秒) / Sandbox TTL (seconds)\n */\n sandboxTtlInSeconds?: number;\n /**\n * 每个沙箱的最大并发会话数 / Max Concurrency Limit Per Sandbox\n */\n shareConcurrencyLimitPerSandbox?: number;\n /**\n * 状态 / Status\n */\n status?: Status;\n /**\n * 状态原因 / Status Reason\n */\n statusReason?: string;\n /**\n * 磁盘大小(GB) / Disk Size (GB)\n */\n diskSize?: number;\n /**\n * 是否允许匿名管理 / Whether to allow anonymous management\n */\n allowAnonymousManage?: boolean;\n}\n\n/**\n * Sandbox data\n * 沙箱数据 / Sandbox Data\n */\nexport interface SandboxData {\n /**\n * 沙箱 ID / Sandbox ID\n */\n sandboxId?: string;\n /**\n * 沙箱名称 / Sandbox Name\n */\n sandboxName?: string;\n /**\n * 模板 ID / Template ID\n */\n templateId?: string;\n /**\n * 模板名称 / Template Name\n */\n templateName?: string;\n /**\n * 沙箱状态 / Sandbox State\n */\n state?: SandboxState;\n /**\n * 状态原因 / State Reason\n */\n stateReason?: string;\n /**\n * 沙箱创建时间 / Sandbox Creation Time\n */\n createdAt?: string;\n /**\n * 最后更新时间 / Last Updated Time\n */\n lastUpdatedAt?: string;\n /**\n * 沙箱空闲超时时间(秒) / Sandbox Idle Timeout (seconds)\n */\n sandboxIdleTimeoutSeconds?: number;\n /**\n * 沙箱结束时间 / Sandbox End Time\n */\n endedAt?: string;\n /**\n * 元数据 / Metadata\n */\n metadata?: Record<string, any>;\n /**\n * 沙箱全局唯一资源名称 / Sandbox ARN\n */\n sandboxArn?: string;\n /**\n * 沙箱空闲 TTL(秒) / Sandbox Idle TTL (seconds)\n */\n sandboxIdleTTLInSeconds?: number;\n}\n\n/**\n * Code execution result\n */\nexport interface ExecuteCodeResult {\n stdout?: string;\n stderr?: string;\n exitCode?: number;\n error?: string;\n}\n\n/**\n * File info\n */\nexport interface FileInfo {\n name: string;\n path: string;\n size?: number;\n isDirectory?: boolean;\n modifiedAt?: string;\n}\n\nexport { Status };\n","/**\n * Code Interpreter Sandbox Data API\n *\n * This module provides data API methods for Code Interpreter sandboxes.\n * 此模块提供代码解释器沙箱的数据 API 方法。\n */\n\nimport * as fs from 'fs';\nimport * as path from 'path';\n\nimport { Config } from '../../utils/config';\nimport { ClientError } from '../../utils/exception';\nimport { logger } from '../../utils/log';\nimport { CodeLanguage } from '../model';\n\nimport { SandboxDataAPI } from './sandbox-data';\n\n/**\n * Code Interpreter Data API\n *\n * Provides methods for interacting with Code Interpreter sandbox data endpoints.\n */\nexport class CodeInterpreterDataAPI extends SandboxDataAPI {\n constructor(params: { sandboxId: string; config?: Config }) {\n super({\n sandboxId: params.sandboxId,\n config: params.config,\n // Set namespace to include sandboxId for correct API path generation\n namespace: `sandboxes/${params.sandboxId}`,\n });\n }\n\n /**\n * List directory contents\n */\n async listDirectory(params?: { path?: string; depth?: number; config?: Config }): Promise<any> {\n const query: Record<string, any> = {};\n if (params?.path !== undefined) {\n query.path = params.path;\n }\n if (params?.depth !== undefined) {\n query.depth = params.depth;\n }\n\n return this.get({ path: '/filesystem', query, config: params?.config });\n }\n\n /**\n * Get file/directory stats\n */\n async stat(params: { path: string; config?: Config }): Promise<any> {\n const query = {\n path: params.path,\n };\n return this.get({ path: '/filesystem/stat', query, config: params.config });\n }\n\n /**\n * Create directory\n */\n async mkdir(params: {\n path: string;\n parents?: boolean;\n mode?: string;\n config?: Config;\n }): Promise<any> {\n const data = {\n path: params.path,\n parents: params.parents !== undefined ? params.parents : true,\n mode: params.mode || '0755',\n };\n return this.post({ path: '/filesystem/mkdir', data, config: params.config });\n }\n\n /**\n * Move file or directory\n */\n async moveFile(params: { source: string; destination: string; config?: Config }): Promise<any> {\n const data = {\n source: params.source,\n destination: params.destination,\n };\n return this.post({ path: '/filesystem/move', data, config: params.config });\n }\n\n /**\n * Remove file or directory\n */\n async removeFile(params: { path: string; config?: Config }): Promise<any> {\n const data = {\n path: params.path,\n };\n return this.post({ path: '/filesystem/remove', data, config: params.config });\n }\n\n /**\n * List code execution contexts\n */\n async listContexts(params?: { config?: Config }): Promise<any> {\n return this.get({ path: '/contexts', config: params?.config });\n }\n\n /**\n * Create a new code execution context\n */\n async createContext(params?: {\n language?: CodeLanguage;\n cwd?: string;\n config?: Config;\n }): Promise<any> {\n const language = params?.language || CodeLanguage.PYTHON;\n const cwd = params?.cwd || '/home/user';\n\n // Validate language parameter\n if (language !== 'python' && language !== 'javascript') {\n throw new Error(`language must be 'python' or 'javascript', got: ${language}`);\n }\n\n const data: Record<string, any> = {\n cwd,\n language,\n };\n return this.post({ path: '/contexts', data, config: params?.config });\n }\n\n /**\n * Get context details\n */\n async getContext(params: { contextId: string; config?: Config }): Promise<any> {\n return this.get({ path: `/contexts/${params.contextId}`, config: params.config });\n }\n\n /**\n * Execute code in a context\n */\n async executeCode(params: {\n code: string;\n contextId?: string;\n language?: CodeLanguage;\n timeout?: number;\n config?: Config;\n }): Promise<any> {\n const { code, contextId, language, timeout = 30, config } = params;\n\n if (language && language !== 'python' && language !== 'javascript') {\n throw new Error(`language must be 'python' or 'javascript', got: ${language}`);\n }\n\n const data: Record<string, any> = {\n code,\n };\n\n if (timeout !== undefined) {\n data.timeout = timeout;\n }\n if (language !== undefined) {\n data.language = language;\n }\n if (contextId !== undefined) {\n data.contextId = contextId;\n }\n\n return this.post({ path: '/contexts/execute', data, config });\n }\n\n /**\n * Delete a context\n */\n async deleteContext(params: { contextId: string; config?: Config }): Promise<any> {\n return this.delete({ path: `/contexts/${params.contextId}`, config: params.config });\n }\n\n /**\n * Read file contents\n */\n async readFile(params: { path: string; config?: Config }): Promise<any> {\n const query = {\n path: params.path,\n };\n return this.get({ path: '/files', query, config: params.config });\n }\n\n /**\n * Write file contents\n */\n async writeFile(params: {\n path: string;\n content: string;\n mode?: string;\n encoding?: string;\n createDir?: boolean;\n config?: Config;\n }): Promise<any> {\n const data = {\n path: params.path,\n content: params.content,\n mode: params.mode || '644',\n encoding: params.encoding || 'utf-8',\n createDir: params.createDir !== undefined ? params.createDir : true,\n };\n return this.post({ path: '/files', data, config: params.config });\n }\n\n /**\n * Upload file to sandbox\n */\n async uploadFile(params: {\n localFilePath: string;\n targetFilePath: string;\n config?: Config;\n }): Promise<any> {\n return this.postFile({\n path: '/filesystem/upload',\n localFilePath: params.localFilePath,\n targetFilePath: params.targetFilePath,\n config: params.config,\n });\n }\n\n /**\n * Download file from sandbox\n */\n async downloadFile(params: {\n path: string;\n savePath: string;\n config?: Config;\n }): Promise<{ savedPath: string; size: number }> {\n const query = { path: params.path };\n return this.getFile({\n path: '/filesystem/download',\n savePath: params.savePath,\n query,\n config: params.config,\n });\n }\n\n /**\n * Execute shell command\n */\n async cmd(params: {\n command: string;\n cwd: string;\n timeout?: number;\n config?: Config;\n }): Promise<any> {\n const data: Record<string, any> = {\n command: params.command,\n cwd: params.cwd,\n };\n\n if (params.timeout !== undefined) {\n data.timeout = params.timeout;\n }\n\n return this.post({ path: '/processes/cmd', data, config: params.config });\n }\n\n /**\n * List running processes\n */\n async listProcesses(params?: { config?: Config }): Promise<any> {\n return this.get({ path: '/processes', config: params?.config });\n }\n\n /**\n * Get process details\n */\n async getProcess(params: { pid: string; config?: Config }): Promise<any> {\n return this.get({ path: `/processes/${params.pid}`, config: params.config });\n }\n\n /**\n * Kill a process\n */\n async killProcess(params: { pid: string; config?: Config }): Promise<any> {\n return this.delete({ path: `/processes/${params.pid}`, config: params.config });\n }\n\n /**\n * Helper method to upload file using multipart/form-data\n */\n protected async postFile(params: {\n path: string;\n localFilePath: string;\n targetFilePath: string;\n formData?: Record<string, any>;\n query?: Record<string, any>;\n headers?: Record<string, string>;\n config?: Config;\n }): Promise<any> {\n const filename = path.basename(params.localFilePath);\n const url = this.withPath(params.path, params.query);\n\n const reqHeaders = this.prepareHeaders({ headers: params.headers, config: params.config });\n delete reqHeaders['Content-Type']; // Let fetch set it with boundary\n\n try {\n const fileContent = await fs.promises.readFile(params.localFilePath);\n\n const formData = new FormData();\n formData.append('file', new Blob([fileContent]), filename);\n\n const data = params.formData || {};\n data.path = params.targetFilePath;\n\n Object.entries(data).forEach(([key, value]) => {\n formData.append(key, String(value));\n });\n\n const cfg = Config.withConfigs(this.config, params.config);\n const response = await fetch(url, {\n method: 'POST',\n headers: reqHeaders,\n body: formData,\n signal: AbortSignal.timeout(cfg.timeout),\n });\n\n if (!response.ok) {\n const errorText = await response.text();\n throw new ClientError(response.status, errorText);\n }\n\n return response.json();\n } catch (error) {\n if (error instanceof ClientError) {\n throw error;\n }\n logger.error(`Upload file error: ${error}`);\n throw new ClientError(0, `Upload file error: ${error}`);\n }\n }\n\n /**\n * Helper method to download file\n */\n protected async getFile(params: {\n path: string;\n savePath: string;\n query?: Record<string, any>;\n headers?: Record<string, string>;\n config?: Config;\n }): Promise<{ savedPath: string; size: number }> {\n const url = this.withPath(params.path, params.query);\n const reqHeaders = this.prepareHeaders({ headers: params.headers, config: params.config });\n\n try {\n const cfg = Config.withConfigs(this.config, params.config);\n const response = await fetch(url, {\n method: 'GET',\n headers: reqHeaders,\n signal: AbortSignal.timeout(cfg.timeout),\n });\n\n if (!response.ok) {\n const errorText = await response.text();\n throw new ClientError(response.status, errorText);\n }\n\n const arrayBuffer = await response.arrayBuffer();\n const buffer = Buffer.from(arrayBuffer);\n\n await fs.promises.writeFile(params.savePath, buffer);\n\n return {\n savedPath: params.savePath,\n size: buffer.length,\n };\n } catch (error) {\n if (error instanceof ClientError) {\n throw error;\n }\n logger.error(`Download file error: ${error}`);\n throw new ClientError(0, `Download file error: ${error}`);\n }\n }\n}\n","/**\n * AIO (All-In-One) Sandbox Data API\n *\n * This module provides a combined data API that includes both Code Interpreter\n * and Browser sandbox functionalities.\n * 此模块提供包含代码解释器和浏览器沙箱功能的组合数据 API。\n */\n\nimport { Config } from '../../utils/config';\nimport { BrowserDataAPI } from './browser-data';\nimport { CodeInterpreterDataAPI } from './code-interpreter-data';\n\n/**\n * AIO Data API\n *\n * Combines both Code Interpreter and Browser data API methods.\n */\nexport class AioDataAPI extends CodeInterpreterDataAPI {\n private browserAPI: BrowserDataAPI;\n\n constructor(params: { sandboxId: string; config?: Config }) {\n super({\n sandboxId: params.sandboxId,\n config: params.config,\n });\n\n this.browserAPI = new BrowserDataAPI({\n sandboxId: params.sandboxId,\n config: params.config,\n });\n }\n\n // Browser API methods - delegate to browserAPI\n\n /**\n * Get CDP WebSocket URL for browser automation\n */\n getCdpUrl(record?: boolean): string {\n return this.browserAPI.getCdpUrl(record);\n }\n\n /**\n * Get VNC WebSocket URL for live view\n */\n getVncUrl(record?: boolean): string {\n return this.browserAPI.getVncUrl(record);\n }\n\n /**\n * List browser recordings\n */\n listRecordings = async (params?: { config?: Config }): Promise<any> => {\n return this.browserAPI.listRecordings(params);\n };\n\n /**\n * Delete a recording\n */\n deleteRecording = async (params: { filename: string; config?: Config }): Promise<any> => {\n return this.browserAPI.deleteRecording(params);\n };\n\n /**\n * Download a recording\n */\n downloadRecording = async (params: {\n filename: string;\n savePath: string;\n }): Promise<{ savedPath: string; size: number }> => {\n return this.browserAPI.downloadRecording(params);\n };\n}\n","/**\n * AgentRun Data API Client\n *\n * 用于与 AgentRun Data API 交互的 HTTP 客户端。\n * HTTP client for interacting with the AgentRun Data API.\n */\n\nimport * as http from 'http';\nimport * as https from 'https';\nimport * as fs from 'fs';\nimport * as nodePath from 'path';\nimport { URL } from 'url';\n\nimport { Config } from './config';\nimport { ClientError } from './exception';\nimport { logger } from './log';\n\n/**\n * Resource type enumeration\n */\nexport enum ResourceType {\n Runtime = 'runtime',\n LiteLLM = 'litellm',\n Tool = 'tool',\n Template = 'template',\n Sandbox = 'sandbox',\n}\n\n/**\n * Data API response interface\n */\nexport interface DataAPIResponse {\n [key: string]: unknown;\n}\n\n/**\n * File download result\n */\nexport interface FileDownloadResult {\n savedPath: string;\n size: number;\n}\n\n/**\n * AgentRun Data API Client\n *\n * This client provides methods for making HTTP requests to the AgentRun Data API\n * with automatic URL construction, JSON handling, and error management.\n */\nexport class DataAPI {\n private resourceName: string;\n private resourceType: ResourceType;\n private accessToken: string | null = null;\n private config: Config;\n private namespace: string;\n\n /**\n * Initialize the Data API Client.\n *\n * @param resourceName - Resource name for access token\n * @param resourceType - Resource type for access token\n * @param config - Configuration options\n * @param namespace - API namespace (default: \"agents\")\n */\n constructor(\n resourceName: string,\n resourceType: ResourceType,\n config?: Config,\n namespace: string = 'agents'\n ) {\n this.resourceName = resourceName;\n this.resourceType = resourceType;\n this.config = Config.withConfigs(config);\n this.namespace = namespace;\n\n // Check for provided access token\n const token = this.config.token;\n if (token) {\n logger.debug(`Using provided access token from config`);\n this.accessToken = token;\n }\n }\n\n /**\n * Get the base URL for API requests.\n */\n private getBaseUrl(): string {\n return this.config.dataEndpoint;\n }\n\n /**\n * Construct full URL with the given path and query parameters.\n *\n * @param path - API path (may include query string)\n * @param query - Query parameters to add/merge\n * @returns Complete URL string with query parameters\n */\n withPath(path: string, query?: Record<string, unknown>): string {\n // Remove leading slash if present\n path = path.replace(/^\\//, '');\n\n const parts = [this.getBaseUrl(), this.namespace, path]\n .filter(Boolean)\n .map(part => part.replace(/^\\/|\\/$/g, ''));\n\n const baseUrl = parts.join('/');\n\n if (!query || Object.keys(query).length === 0) {\n return baseUrl;\n }\n\n const urlObj = new URL(baseUrl);\n const existingParams = urlObj.searchParams;\n\n for (const key in query) {\n if (Object.prototype.hasOwnProperty.call(query, key)) {\n const value = query[key];\n if (Array.isArray(value)) {\n value.forEach(v => existingParams.append(key, String(v)));\n } else if (value !== undefined && value !== null) {\n existingParams.set(key, String(value));\n }\n }\n }\n\n urlObj.search = existingParams.toString();\n return urlObj.toString();\n }\n\n /**\n * Authenticate and prepare headers for the request.\n *\n * @param url - Request URL\n * @param headers - Request headers\n * @param query - Query parameters\n * @param config - Optional config override\n * @returns Tuple of [url, headers, query]\n */\n private async auth(\n url: string,\n headers: Record<string, string>,\n query?: Record<string, unknown>,\n config?: Config\n ): Promise<[string, Record<string, string>, Record<string, unknown> | undefined]> {\n const cfg = Config.withConfigs(this.config, config);\n\n // Fetch access token if not already available\n if (this.accessToken === null && this.resourceName && this.resourceType && !cfg.token) {\n try {\n // Dynamically import to avoid circular dependencies\n const { ControlAPI } = await import('./control-api');\n const $AgentRun = await import('@alicloud/agentrun20250910');\n\n const cli = new ControlAPI(this.config).getClient();\n\n const input =\n this.resourceType === ResourceType.Sandbox\n ? new $AgentRun.GetAccessTokenRequest({\n resourceId: this.resourceName,\n resourceType: this.resourceType,\n })\n : new $AgentRun.GetAccessTokenRequest({\n resourceName: this.resourceName,\n resourceType: this.resourceType,\n });\n\n const resp = await cli.getAccessToken(input);\n this.accessToken = resp.body?.data?.accessToken || null;\n\n logger.debug(\n `Fetched access token for resource ${this.resourceName} of type ${this.resourceType}`\n );\n } catch (e) {\n logger.warn(\n `Failed to get access token for ${this.resourceType}(${this.resourceName}): ${e}`\n );\n }\n }\n\n // Merge headers with authentication\n const authHeaders = {\n 'Agentrun-Access-Token': cfg.token || this.accessToken || '',\n ...cfg.headers,\n ...headers,\n };\n\n return [url, authHeaders, query];\n }\n\n /**\n * Prepare the HTTP request.\n */\n private async prepareRequest(\n method: string,\n url: string,\n data?: Record<string, unknown> | string | Buffer,\n headers?: Record<string, string>,\n query?: Record<string, unknown>,\n config?: Config\n ): Promise<{\n method: string;\n url: string;\n headers: Record<string, string>;\n body?: string | Buffer;\n }> {\n const reqHeaders: Record<string, string> = {\n 'Content-Type': 'application/json',\n 'User-Agent': 'AgentRunDataClient/1.0',\n };\n\n const cfg = Config.withConfigs(this.config, config);\n Object.assign(reqHeaders, cfg.headers);\n if (headers) {\n Object.assign(reqHeaders, headers);\n }\n\n // Apply authentication\n const [authUrl, authHeaders, authQuery] = await this.auth(url, reqHeaders, query, cfg);\n\n // Add query parameters to URL\n let finalUrl = authUrl;\n if (authQuery && Object.keys(authQuery).length > 0) {\n const urlObj = new URL(authUrl);\n for (const key in authQuery) {\n if (Object.prototype.hasOwnProperty.call(authQuery, key)) {\n const value = authQuery[key];\n if (value !== undefined && value !== null) {\n urlObj.searchParams.set(key, String(value));\n }\n }\n }\n finalUrl = urlObj.toString();\n }\n\n // Prepare request body\n let body: string | Buffer | undefined;\n if (data !== undefined) {\n if (Buffer.isBuffer(data)) {\n body = data;\n } else if (typeof data === 'object') {\n body = JSON.stringify(data);\n } else {\n body = data;\n }\n }\n\n logger.debug(`${method} ${finalUrl} headers=${JSON.stringify(authHeaders)}`);\n\n return { method, url: finalUrl, headers: authHeaders, body };\n }\n\n /**\n * Make an HTTP request.\n */\n private async makeRequest(\n method: string,\n path: string,\n data?: Record<string, unknown> | string | Buffer,\n query?: Record<string, unknown>,\n headers?: Record<string, string>,\n config?: Config\n ): Promise<DataAPIResponse> {\n const fullUrl = this.withPath(path, query);\n const {\n method: reqMethod,\n url: reqUrl,\n headers: reqHeaders,\n body: reqBody,\n } = await this.prepareRequest(method, fullUrl, data, headers, undefined, config);\n\n const client = reqUrl.startsWith('https') ? https : http;\n const urlObj = new URL(reqUrl);\n\n const options: http.RequestOptions = {\n hostname: urlObj.hostname,\n port: urlObj.port || (reqUrl.startsWith('https') ? 443 : 80),\n path: urlObj.pathname + urlObj.search,\n method: reqMethod,\n headers: reqHeaders,\n timeout: this.config.timeout,\n };\n\n return new Promise((resolve, reject) => {\n const req = client.request(options, res => {\n let responseData = '';\n res.on('data', chunk => (responseData += chunk));\n res.on('end', () => {\n logger.debug(`Response: ${responseData}`);\n\n if (res.statusCode && res.statusCode >= 200 && res.statusCode < 300) {\n try {\n resolve(responseData ? JSON.parse(responseData) : {});\n } catch (e) {\n const errorMsg = `Failed to parse JSON response: ${e}`;\n logger.error(errorMsg);\n reject(new ClientError(res.statusCode || 0, errorMsg));\n }\n } else {\n const errorMsg = responseData || res.statusMessage || 'Unknown error';\n reject(new ClientError(res.statusCode || 0, errorMsg));\n }\n });\n });\n\n req.on('error', e => {\n reject(new ClientError(0, `Request error: ${e.message}`));\n });\n\n req.on('timeout', () => {\n req.destroy();\n reject(new ClientError(0, 'Request timeout'));\n });\n\n if (reqBody) {\n req.write(reqBody);\n }\n req.end();\n });\n }\n\n /**\n * Make a GET request.\n *\n * @param path - API path\n * @param query - Query parameters\n * @param headers - Additional headers\n * @param config - Optional config override\n */\n async get(\n path: string,\n query?: Record<string, unknown>,\n headers?: Record<string, string>,\n config?: Config\n ): Promise<DataAPIResponse> {\n return this.makeRequest('GET', path, undefined, query, headers, config);\n }\n\n /**\n * Make a POST request.\n *\n * @param path - API path\n * @param data - Request body\n * @param query - Query parameters\n * @param headers - Additional headers\n * @param config - Optional config override\n */\n async post(\n path: string,\n data?: Record<string, unknown> | string | Buffer,\n query?: Record<string, unknown>,\n headers?: Record<string, string>,\n config?: Config\n ): Promise<DataAPIResponse> {\n return this.makeRequest('POST', path, data, query, headers, config);\n }\n\n /**\n * Make a PUT request.\n *\n * @param path - API path\n * @param data - Request body\n * @param query - Query parameters\n * @param headers - Additional headers\n * @param config - Optional config override\n */\n async put(\n path: string,\n data?: Record<string, unknown> | string | Buffer,\n query?: Record<string, unknown>,\n headers?: Record<string, string>,\n config?: Config\n ): Promise<DataAPIResponse> {\n return this.makeRequest('PUT', path, data, query, headers, config);\n }\n\n /**\n * Make a PATCH request.\n *\n * @param path - API path\n * @param data - Request body\n * @param query - Query parameters\n * @param headers - Additional headers\n * @param config - Optional config override\n */\n async patch(\n path: string,\n data?: Record<string, unknown> | string | Buffer,\n query?: Record<string, unknown>,\n headers?: Record<string, string>,\n config?: Config\n ): Promise<DataAPIResponse> {\n return this.makeRequest('PATCH', path, data, query, headers, config);\n }\n\n /**\n * Make a DELETE request.\n *\n * @param path - API path\n * @param query - Query parameters\n * @param headers - Additional headers\n * @param config - Optional config override\n */\n async delete(\n path: string,\n query?: Record<string, unknown>,\n headers?: Record<string, string>,\n config?: Config\n ): Promise<DataAPIResponse> {\n return this.makeRequest('DELETE', path, undefined, query, headers, config);\n }\n\n /**\n * Upload a file using multipart/form-data.\n *\n * @param path - API path\n * @param localFilePath - Local file path to upload\n * @param targetFilePath - Target file path on the server\n * @param formData - Additional form data fields\n * @param query - Query parameters\n * @param headers - Additional headers\n * @param config - Optional config override\n */\n async postFile(\n path: string,\n localFilePath: string,\n targetFilePath: string,\n formData?: Record<string, string>,\n query?: Record<string, unknown>,\n headers?: Record<string, string>,\n config?: Config\n ): Promise<DataAPIResponse> {\n const fullUrl = this.withPath(path, query);\n const { url: reqUrl, headers: reqHeaders } = await this.prepareRequest(\n 'POST',\n fullUrl,\n undefined,\n headers,\n undefined,\n config\n );\n\n const client = reqUrl.startsWith('https') ? https : http;\n const urlObj = new URL(reqUrl);\n\n return new Promise((resolve, reject) => {\n const boundary = `----WebKitFormBoundary${Math.random().toString(36).substring(2)}`;\n const contentHeaders = {\n ...reqHeaders,\n 'Content-Type': `multipart/form-data; boundary=${boundary}`,\n };\n\n const options: http.RequestOptions = {\n hostname: urlObj.hostname,\n port: urlObj.port || (reqUrl.startsWith('https') ? 443 : 80),\n path: urlObj.pathname + urlObj.search,\n method: 'POST',\n headers: contentHeaders,\n timeout: this.config.timeout,\n };\n\n const req = client.request(options, res => {\n let responseData = '';\n res.on('data', chunk => (responseData += chunk));\n res.on('end', () => {\n if (res.statusCode && res.statusCode >= 200 && res.statusCode < 300) {\n try {\n resolve(responseData ? JSON.parse(responseData) : {});\n } catch (e) {\n logger.error(`Failed to parse JSON response: ${e}`);\n reject(new ClientError(res.statusCode || 0, `Failed to parse JSON: ${e}`));\n }\n } else {\n reject(new ClientError(res.statusCode || 0, responseData || 'Unknown error'));\n }\n });\n });\n\n req.on('error', e => {\n reject(new ClientError(0, `Request error: ${e.message}`));\n });\n\n // Helper to write form fields\n const appendField = (name: string, value: string) => {\n req.write(`--${boundary}\\r\\n`);\n req.write(`Content-Disposition: form-data; name=\"${name}\"\\r\\n`);\n req.write('\\r\\n');\n req.write(`${value}\\r\\n`);\n };\n\n // Write form data fields\n if (formData) {\n for (const key in formData) {\n if (Object.prototype.hasOwnProperty.call(formData, key)) {\n appendField(key, formData[key]);\n }\n }\n }\n\n // Add target path field\n appendField('path', targetFilePath);\n\n // Write file\n const filename = nodePath.basename(localFilePath);\n req.write(`--${boundary}\\r\\n`);\n req.write(`Content-Disposition: form-data; name=\"file\"; filename=\"${filename}\"\\r\\n`);\n req.write('Content-Type: application/octet-stream\\r\\n');\n req.write('\\r\\n');\n\n const fileStream = fs.createReadStream(localFilePath);\n fileStream.pipe(req, { end: false });\n\n fileStream.on('end', () => {\n req.write(`\\r\\n--${boundary}--\\r\\n`);\n req.end();\n });\n\n fileStream.on('error', e => {\n reject(new ClientError(0, `File stream error: ${e.message}`));\n });\n });\n }\n\n /**\n * Download a file and save it to local path.\n *\n * @param path - API path\n * @param savePath - Local file path to save the downloaded file\n * @param query - Query parameters\n * @param headers - Additional headers\n * @param config - Optional config override\n */\n async getFile(\n path: string,\n savePath: string,\n query?: Record<string, unknown>,\n headers?: Record<string, string>,\n config?: Config\n ): Promise<FileDownloadResult> {\n const fullUrl = this.withPath(path, query);\n const { url: reqUrl, headers: reqHeaders } = await this.prepareRequest(\n 'GET',\n fullUrl,\n undefined,\n headers,\n undefined,\n config\n );\n\n const client = reqUrl.startsWith('https') ? https : http;\n const urlObj = new URL(reqUrl);\n\n return new Promise((resolve, reject) => {\n const options: http.RequestOptions = {\n hostname: urlObj.hostname,\n port: urlObj.port || (reqUrl.startsWith('https') ? 443 : 80),\n path: urlObj.pathname + urlObj.search,\n method: 'GET',\n headers: reqHeaders,\n timeout: this.config.timeout,\n };\n\n const req = client.request(options, res => {\n if (res.statusCode && res.statusCode >= 200 && res.statusCode < 300) {\n const fileStream = fs.createWriteStream(savePath);\n let downloadedSize = 0;\n\n res.on('data', chunk => {\n fileStream.write(chunk);\n downloadedSize += chunk.length;\n });\n\n res.on('end', () => {\n fileStream.end();\n resolve({ savedPath: savePath, size: downloadedSize });\n });\n\n res.on('error', e => {\n fileStream.end();\n reject(new ClientError(0, `Response error: ${e.message}`));\n });\n } else {\n let errorData = '';\n res.on('data', chunk => (errorData += chunk));\n res.on('end', () => {\n reject(new ClientError(res.statusCode || 0, errorData || 'Download failed'));\n });\n }\n });\n\n req.on('error', e => {\n reject(new ClientError(0, `Request error: ${e.message}`));\n });\n\n req.end();\n });\n }\n\n /**\n * Download a video file and save it to local path.\n *\n * @param path - API path\n * @param savePath - Local file path to save the downloaded video\n * @param query - Query parameters\n * @param headers - Additional headers\n * @param config - Optional config override\n */\n async getVideo(\n path: string,\n savePath: string,\n query?: Record<string, unknown>,\n headers?: Record<string, string>,\n config?: Config\n ): Promise<FileDownloadResult> {\n // Video download is the same as file download\n return this.getFile(path, savePath, query, headers, config);\n }\n}\n","/**\n * Utility exports\n */\n\nimport '@/utils/version-check';\n\nexport { Config, type ConfigOptions } from './config';\nexport { DataAPI, ResourceType } from './data-api';\nexport {\n AgentRunError,\n ClientError,\n HTTPError,\n ResourceAlreadyExistError,\n ResourceNotExistError,\n ServerError,\n} from './exception';\nexport { logger, type LogLevel } from './log';\nexport {\n NetworkMode,\n removeUndefined,\n Status,\n toCamelCase,\n toCamelCaseKeys,\n toSnakeCase,\n toSnakeCaseKeys,\n type NetworkConfig,\n type PageableInput,\n} from './model';\n","/**\n资源基类模板 / Resource Base Template\n\n此模板用于生成资源对象的基类代码。\nThis template is used to generate base class code for resource objects.\n*/\n\nimport { Config } from './config';\nimport { ResourceNotExistError } from './exception';\nimport { logger } from './log';\nimport { isFinalStatus, PageableInput, Status } from './model';\n\n/**\n * 更新对象属性的辅助函数 / Helper function to update object properties\n *\n * 只复制数据属性,跳过方法和私有属性\n * Only copies data properties, skips methods and private properties\n *\n * @param target - 目标对象 / Target object\n * @param source - 源对象 / Source object\n */\nexport function updateObjectProperties(target: any, source: any): void {\n for (const key in source) {\n if (\n Object.prototype.hasOwnProperty.call(source, key) &&\n typeof source[key] !== 'function' &&\n !key.startsWith('_') // 跳过私有属性\n ) {\n target[key] = source[key];\n }\n }\n}\n\nexport interface WithUniqIdCallback {\n uniqIdCallback(): string | undefined;\n}\n\nexport interface ParamsWithConfig {\n config?: Config;\n}\n\nexport abstract class ResourceBase {\n public status?: Status;\n protected _config?: Config;\n\n abstract get(params?: ParamsWithConfig): Promise<any>;\n abstract delete(params?: ParamsWithConfig): Promise<any>;\n\n // static async list(params?: {\n // input?: PageableInput;\n // config?: Config;\n // }): Promise<WithUniqIdCallback[]> {\n // return [];\n // }\n\n waitUntil = async (params: {\n checkFinishedCallback: (resource: ResourceBase) => boolean | Promise<boolean>;\n intervalSeconds?: number;\n timeoutSeconds?: number;\n }): Promise<ResourceBase> => {\n const { checkFinishedCallback, intervalSeconds = 5, timeoutSeconds = 300 } = params;\n\n const startTime = Date.now();\n while (true) {\n if (await checkFinishedCallback(this)) return this;\n\n if (Date.now() - startTime >= timeoutSeconds * 1000) {\n throw new Error('Timeout waiting for resource to reach desired state');\n }\n\n await new Promise(resolve => setTimeout(resolve, intervalSeconds * 1000));\n }\n };\n\n waitUntilReadyOrFailed = async (params?: {\n callback?: (resource: ResourceBase) => void | Promise<void>;\n intervalSeconds?: number;\n timeoutSeconds?: number;\n }) => {\n const { callback, intervalSeconds = 5, timeoutSeconds = 300 } = params ?? {};\n\n async function checkFinishedCallback(resource: ResourceBase) {\n await resource.refresh();\n if (callback) await callback(resource);\n logger.debug(`Resource status: ${(resource as any).status}`);\n\n return isFinalStatus(resource.status);\n }\n\n return await this.waitUntil({\n checkFinishedCallback,\n intervalSeconds,\n timeoutSeconds,\n });\n };\n\n deleteAndWaitUntilFinished = async (params?: {\n callback?: (resource: ResourceBase) => void | Promise<void>;\n intervalSeconds?: number;\n timeoutSeconds?: number;\n }) => {\n const { callback, intervalSeconds = 5, timeoutSeconds = 300 } = params ?? {};\n\n try {\n await this.delete();\n } catch (error) {\n if (error instanceof ResourceNotExistError) return;\n }\n\n async function checkFinishedCallback(resource: ResourceBase) {\n try {\n await resource.refresh();\n if (callback) await callback(resource);\n } catch (error) {\n // Assuming that an error during refresh indicates the resource no longer exists\n if (error instanceof ResourceNotExistError) return true;\n if (resource.status === Status.DELETING) return false;\n\n throw Error(`Resource status is ${resource.status}`);\n }\n\n return false;\n }\n\n return await this.waitUntil({\n checkFinishedCallback,\n intervalSeconds,\n timeoutSeconds,\n });\n };\n\n refresh = async (params?: ParamsWithConfig) => await this.get(params);\n\n /**\n * 更新实例自身的属性 / Update instance properties\n *\n * @param source - 源对象 / Source object\n */\n updateSelf(source: any): void {\n updateObjectProperties(this, source);\n }\n\n setConfig = (config: Config) => {\n this._config = config;\n return this;\n };\n}\n\nexport function listAllResourcesFunction<\n ListParams extends { input?: PageableInput; config?: Config },\n ListResult extends WithUniqIdCallback,\n>(list: (params?: ListParams) => Promise<ListResult[]>) {\n return async (\n params?: Omit<NonNullable<ListParams['input']>, 'pageNumber' | 'pageSize'> & {\n config?: Config;\n }\n ) => {\n const { config, ...restParams } = params ?? {};\n\n const allResults: ListResult[] = [];\n let page = 1;\n const pageSize = 50;\n while (true) {\n const pageResults = await list({\n input: {\n ...restParams,\n pageNumber: page,\n pageSize: pageSize,\n },\n config,\n } as ListParams);\n\n page += 1;\n allResults.push(...pageResults);\n if (pageResults.length < pageSize) break;\n }\n\n const resultSet = new Set<string>();\n const results: any[] = [];\n for (const item of allResults) {\n const uniqId = item.uniqIdCallback() || '';\n if (!resultSet.has(uniqId) && uniqId) {\n resultSet.add(uniqId);\n results.push(item);\n }\n }\n\n return results;\n };\n}\n","/**\n * Code Interpreter Sandbox\n *\n * High-level API for code interpreter sandboxes with file, filesystem,\n * context, and process management operations.\n */\n\nimport { Config } from '../utils/config';\nimport { logger } from '../utils/log';\nimport { ServerError } from '../utils/exception';\n\nimport { CodeInterpreterDataAPI } from './api/code-interpreter-data';\nimport { CodeLanguage, NASConfig, OSSMountConfig, PolarFsConfig, TemplateType } from './model';\nimport { Sandbox } from './sandbox';\n\n/**\n * File upload/download operations\n */\nexport class FileOperations {\n private sandbox: CodeInterpreterSandbox;\n\n constructor(sandbox: CodeInterpreterSandbox) {\n this.sandbox = sandbox;\n }\n\n /**\n * Read a file from the code interpreter\n */\n read = async (params: { path: string }): Promise<any> => {\n return this.sandbox.dataApi.readFile(params);\n };\n\n /**\n * Write a file to the code interpreter\n */\n write = async (params: {\n path: string;\n content: string;\n mode?: string;\n encoding?: string;\n createDir?: boolean;\n }): Promise<any> => {\n return this.sandbox.dataApi.writeFile(params);\n };\n}\n\n/**\n * File system operations (list, move, remove, stat, mkdir)\n */\nexport class FileSystemOperations {\n private sandbox: CodeInterpreterSandbox;\n\n constructor(sandbox: CodeInterpreterSandbox) {\n this.sandbox = sandbox;\n }\n\n /**\n * List directory contents\n */\n list = async (params?: { path?: string; depth?: number }): Promise<any> => {\n return this.sandbox.dataApi.listDirectory(params);\n };\n\n /**\n * Move a file or directory\n */\n move = async (params: { source: string; destination: string }): Promise<any> => {\n return this.sandbox.dataApi.moveFile(params);\n };\n\n /**\n * Remove a file or directory\n */\n remove = async (params: { path: string }): Promise<any> => {\n return this.sandbox.dataApi.removeFile(params);\n };\n\n /**\n * Get file or directory statistics\n */\n stat = async (params: { path: string }): Promise<any> => {\n return this.sandbox.dataApi.stat(params);\n };\n\n /**\n * Create a directory\n */\n mkdir = async (params: { path: string; parents?: boolean; mode?: string }): Promise<any> => {\n return this.sandbox.dataApi.mkdir(params);\n };\n\n /**\n * Upload a file to the code interpreter\n */\n upload = async (params: { localFilePath: string; targetFilePath: string }): Promise<any> => {\n return this.sandbox.dataApi.uploadFile(params);\n };\n\n /**\n * Download a file from the code interpreter\n */\n download = async (params: {\n path: string;\n savePath: string;\n }): Promise<{ savedPath: string; size: number }> => {\n return this.sandbox.dataApi.downloadFile(params);\n };\n}\n\n/**\n * Process management operations\n */\nexport class ProcessOperations {\n private sandbox: CodeInterpreterSandbox;\n\n constructor(sandbox: CodeInterpreterSandbox) {\n this.sandbox = sandbox;\n }\n\n /**\n * Execute a command in the code interpreter\n */\n cmd = async (params: { command: string; cwd: string; timeout?: number }): Promise<any> => {\n return this.sandbox.dataApi.cmd(params);\n };\n\n /**\n * List all processes\n */\n list = async (params?: { config?: Config }): Promise<any> => {\n return this.sandbox.dataApi.listProcesses(params);\n };\n\n /**\n * Get a specific process by PID\n */\n get = async (params: { pid: string }): Promise<any> => {\n return this.sandbox.dataApi.getProcess(params);\n };\n\n /**\n * Kill a specific process by PID\n */\n kill = async (params: { pid: string }): Promise<any> => {\n return this.sandbox.dataApi.killProcess(params);\n };\n}\n\n/**\n * Context management operations\n */\nexport class ContextOperations {\n private sandbox: CodeInterpreterSandbox;\n private _contextId?: string;\n private _language?: CodeLanguage;\n private _cwd?: string;\n\n constructor(sandbox: CodeInterpreterSandbox) {\n this.sandbox = sandbox;\n }\n\n /**\n * Get the current context ID\n */\n get contextId(): string | undefined {\n return this._contextId;\n }\n\n /**\n * List all contexts\n */\n list = async (params?: { config?: Config }): Promise<any> => {\n return this.sandbox.dataApi.listContexts(params);\n };\n\n /**\n * Create a new context and save its ID\n */\n create = async (params?: {\n language?: CodeLanguage;\n cwd?: string;\n }): Promise<ContextOperations> => {\n const language = params?.language || CodeLanguage.PYTHON;\n const cwd = params?.cwd || '/home/user';\n\n const result = await this.sandbox.dataApi.createContext({\n language,\n cwd,\n });\n\n if (result?.id && result?.cwd && result?.language) {\n this._contextId = result.id;\n this._language = result.language;\n this._cwd = result.cwd;\n return this;\n }\n\n throw new ServerError(500, 'Failed to create context');\n };\n\n /**\n * Get a specific context by ID\n */\n get = async (params?: { contextId?: string }): Promise<ContextOperations> => {\n const id = params?.contextId || this._contextId;\n if (!id) {\n logger.error('context id is not set');\n throw new Error('context id is not set');\n }\n\n const result = await this.sandbox.dataApi.getContext({ contextId: id });\n\n if (result?.id && result?.cwd && result?.language) {\n this._contextId = result.id;\n this._language = result.language;\n this._cwd = result.cwd;\n return this;\n }\n\n throw new ServerError(500, 'Failed to get context');\n };\n\n /**\n * Execute code in a context\n */\n execute = async (params: {\n code: string;\n language?: CodeLanguage;\n contextId?: string;\n timeout?: number;\n }): Promise<any> => {\n const { code, timeout = 30 } = params;\n let { contextId, language } = params;\n\n if (!contextId) {\n contextId = this._contextId;\n }\n\n if (!contextId && !language) {\n logger.debug('context id is not set, use default language: python');\n language = CodeLanguage.PYTHON;\n }\n\n return this.sandbox.dataApi.executeCode({\n code,\n contextId,\n language,\n timeout,\n });\n };\n\n /**\n * Delete a context\n */\n delete = async (params?: { contextId?: string }): Promise<any> => {\n const id = params?.contextId || this._contextId;\n if (!id) {\n throw new Error(\n 'context_id is required. Either pass it as parameter or create a context first.'\n );\n }\n\n const result = await this.sandbox.dataApi.deleteContext({ contextId: id });\n // Clear the saved context_id after deletion\n this._contextId = undefined;\n return result;\n };\n}\n\n/**\n * Code Interpreter Sandbox\n *\n * High-level API for interacting with code interpreter sandboxes.\n */\nexport class CodeInterpreterSandbox extends Sandbox {\n static templateType = TemplateType.CODE_INTERPRETER;\n\n /**\n * Create a Code Interpreter Sandbox from template\n * 从模板创建代码解释器沙箱 / Create Code Interpreter Sandbox from Template\n */\n static async createFromTemplate(\n templateName: string,\n options?: {\n sandboxIdleTimeoutSeconds?: number;\n nasConfig?: NASConfig;\n ossMountConfig?: OSSMountConfig;\n polarFsConfig?: PolarFsConfig;\n },\n config?: Config\n ): Promise<CodeInterpreterSandbox> {\n const sandbox = await Sandbox.create({\n input: {\n templateName,\n sandboxIdleTimeoutSeconds: options?.sandboxIdleTimeoutSeconds,\n nasConfig: options?.nasConfig,\n ossMountConfig: options?.ossMountConfig,\n polarFsConfig: options?.polarFsConfig,\n },\n templateType: TemplateType.CODE_INTERPRETER,\n config,\n });\n\n return sandbox as CodeInterpreterSandbox;\n }\n\n constructor(sandbox: Sandbox, config?: Config) {\n super(sandbox, config);\n }\n\n private _dataApi?: CodeInterpreterDataAPI;\n private _file?: FileOperations;\n private _fileSystem?: FileSystemOperations;\n private _context?: ContextOperations;\n private _process?: ProcessOperations;\n\n /**\n * Get data API client\n */\n get dataApi(): CodeInterpreterDataAPI {\n if (!this._dataApi) {\n this._dataApi = new CodeInterpreterDataAPI({\n sandboxId: this.sandboxId || '',\n config: this._config,\n });\n }\n return this._dataApi;\n }\n\n /**\n * Access file upload/download operations\n */\n get file(): FileOperations {\n if (!this._file) {\n this._file = new FileOperations(this);\n }\n return this._file;\n }\n\n /**\n * Access file system operations\n */\n get fileSystem(): FileSystemOperations {\n if (!this._fileSystem) {\n this._fileSystem = new FileSystemOperations(this);\n }\n return this._fileSystem;\n }\n\n /**\n * Access context management operations\n */\n get context(): ContextOperations {\n if (!this._context) {\n this._context = new ContextOperations(this);\n }\n return this._context;\n }\n\n /**\n * Access process management operations\n */\n get process(): ProcessOperations {\n if (!this._process) {\n this._process = new ProcessOperations(this);\n }\n return this._process;\n }\n\n /**\n * Check sandbox health\n */\n checkHealth = async (params?: {\n config?: Config;\n }): Promise<{ status: string; [key: string]: any }> => {\n return this.dataApi.checkHealth({\n sandboxId: this.sandboxId!,\n config: params?.config,\n });\n };\n\n /**\n * Execute code (convenience method delegating to context.execute)\n */\n execute = async (params: {\n code: string;\n language?: CodeLanguage;\n contextId?: string;\n timeout?: number;\n }): Promise<any> => {\n return this.context.execute(params);\n };\n}\n","/**\n * Browser Sandbox\n *\n * High-level API for browser sandboxes with CDP/VNC connectivity\n * and recording management.\n */\n\nimport { Config } from '../utils/config';\n\nimport { BrowserDataAPI } from './api/browser-data';\nimport { NASConfig, OSSMountConfig, PolarFsConfig, TemplateType } from './model';\nimport { Sandbox } from './sandbox';\n\n/**\n * Browser Sandbox\n *\n * High-level API for interacting with browser sandboxes.\n */\nexport class BrowserSandbox extends Sandbox {\n static templateType = TemplateType.BROWSER;\n\n /**\n * Create a Browser Sandbox from template\n * 从模板创建浏览器沙箱 / Create Browser Sandbox from Template\n */\n static async createFromTemplate(\n templateName: string,\n options?: {\n sandboxIdleTimeoutSeconds?: number;\n nasConfig?: NASConfig;\n ossMountConfig?: OSSMountConfig;\n polarFsConfig?: PolarFsConfig;\n },\n config?: Config\n ): Promise<BrowserSandbox> {\n const sandbox = await Sandbox.create({\n input: {\n templateName,\n sandboxIdleTimeoutSeconds: options?.sandboxIdleTimeoutSeconds,\n nasConfig: options?.nasConfig,\n ossMountConfig: options?.ossMountConfig,\n polarFsConfig: options?.polarFsConfig,\n },\n templateType: TemplateType.BROWSER,\n config,\n });\n\n return sandbox as BrowserSandbox;\n }\n\n constructor(sandbox: Sandbox, config?: Config) {\n super(sandbox, config);\n }\n\n private _dataApi?: BrowserDataAPI;\n\n /**\n * Get data API client\n */\n get dataApi(): BrowserDataAPI {\n if (!this._dataApi) {\n if (!this.sandboxId) {\n throw new Error('Sandbox ID is not set');\n }\n\n this._dataApi = new BrowserDataAPI({\n sandboxId: this.sandboxId,\n config: this._config,\n });\n }\n return this._dataApi;\n }\n\n /**\n * Check sandbox health\n */\n checkHealth = async (params?: {\n config?: Config;\n }): Promise<{ status: string; [key: string]: any }> => {\n return this.dataApi.checkHealth({\n sandboxId: this.sandboxId!,\n config: params?.config,\n });\n };\n\n /**\n * Get CDP WebSocket URL for browser automation\n */\n getCdpUrl(record?: boolean): string {\n return this.dataApi.getCdpUrl(record);\n }\n\n /**\n * Get VNC WebSocket URL for live view\n */\n getVncUrl(record?: boolean): string {\n return this.dataApi.getVncUrl(record);\n }\n\n /**\n * List all recordings\n */\n listRecordings = async (params?: { config?: Config }): Promise<any> => {\n return this.dataApi.listRecordings(params);\n };\n\n /**\n * Download a recording video file\n */\n downloadRecording = async (params: {\n filename: string;\n savePath: string;\n }): Promise<{ savedPath: string; size: number }> => {\n return this.dataApi.downloadRecording(params);\n };\n\n /**\n * Delete a recording\n */\n deleteRecording = async (params: { filename: string; config?: Config }): Promise<any> => {\n return this.dataApi.deleteRecording(params);\n };\n}\n","/**\n * Custom Sandbox\n *\n * 自定义镜像沙箱 / Custom Image Sandbox\n */\n\nimport { Config } from '../utils/config';\n\nimport { NASConfig, OSSMountConfig, PolarFsConfig, TemplateType } from './model';\nimport { Sandbox } from './sandbox';\nimport { SandboxDataAPI } from './api/sandbox-data';\n\n/**\n * Custom Sandbox\n *\n * 自定义镜像沙箱类 / Custom Image Sandbox Class\n */\nexport class CustomSandbox extends Sandbox {\n static templateType = TemplateType.CUSTOM;\n\n /**\n * Create a Custom Sandbox from template\n * 从模板创建自定义沙箱 / Create Custom Sandbox from Template\n */\n static async createFromTemplate(\n templateName: string,\n options?: {\n sandboxIdleTimeoutSeconds?: number;\n nasConfig?: NASConfig;\n ossMountConfig?: OSSMountConfig;\n polarFsConfig?: PolarFsConfig;\n },\n config?: Config\n ): Promise<CustomSandbox> {\n return (await Sandbox.create({\n input: {\n templateName,\n sandboxIdleTimeoutSeconds: options?.sandboxIdleTimeoutSeconds,\n nasConfig: options?.nasConfig,\n ossMountConfig: options?.ossMountConfig,\n polarFsConfig: options?.polarFsConfig,\n },\n templateType: TemplateType.CUSTOM,\n config,\n })) as CustomSandbox;\n }\n\n constructor(sandbox: Sandbox, config?: Config) {\n super(sandbox, config);\n }\n\n private _dataApi?: SandboxDataAPI;\n\n /**\n * Get data API client\n */\n get dataApi(): SandboxDataAPI {\n if (!this._dataApi) {\n this._dataApi = new SandboxDataAPI({\n sandboxId: this.sandboxId || '',\n config: this._config,\n });\n }\n return this._dataApi;\n }\n\n /**\n * Get base URL for the sandbox\n * 获取沙箱的基础 URL / Get base URL for the sandbox\n *\n * @returns 基础 URL / Base URL\n */\n getBaseUrl(): string {\n const cfg = Config.withConfigs(this._config);\n return `${cfg.dataEndpoint}/sandboxes/${this.sandboxId}`;\n }\n}\n","/**\n * Base Sandbox Resource\n *\n * 此模块定义基础 Sandbox 资源类。\n * This module defines the base Sandbox resource class.\n */\n\nimport { ClientError, HTTPError } from '@/utils';\nimport { logger } from '../utils/log';\nimport { Config } from '../utils/config';\nimport { ResourceBase, updateObjectProperties } from '../utils/resource';\n\nimport {\n SandboxCreateInput,\n SandboxData,\n SandboxListInput,\n SandboxState,\n TemplateType,\n} from './model';\nimport { SandboxDataAPI } from './api/sandbox-data';\nimport type { AioSandbox } from './aio-sandbox';\nimport type { BrowserSandbox } from './browser-sandbox';\nimport type { CodeInterpreterSandbox } from './code-interpreter-sandbox';\nimport type { CustomSandbox } from './custom-sandbox';\nimport type { SandboxClient } from './client';\n\n/**\n * Base Sandbox resource class\n * 基础沙箱资源类 / Base Sandbox Resource Class\n */\nexport class Sandbox extends ResourceBase implements SandboxData {\n templateType?: TemplateType;\n\n /**\n * 沙箱 ID / Sandbox ID\n */\n sandboxId?: string;\n /**\n * 沙箱名称 / Sandbox Name\n */\n sandboxName?: string;\n /**\n * 模板 ID / Template ID\n */\n templateId?: string;\n /**\n * 模板名称 / Template Name\n */\n templateName?: string;\n /**\n * 沙箱状态 / Sandbox State\n */\n state?: SandboxState;\n /**\n * 状态原因 / State Reason\n */\n stateReason?: string;\n /**\n * 沙箱创建时间 / Sandbox Creation Time\n */\n createdAt?: string;\n /**\n * 最后更新时间 / Last Updated Time\n */\n lastUpdatedAt?: string;\n /**\n * 沙箱空闲超时时间(秒) / Sandbox Idle Timeout (seconds)\n */\n sandboxIdleTimeoutSeconds?: number;\n /**\n * 沙箱结束时间 / Sandbox End Time\n */\n endedAt?: string;\n /**\n * 元数据 / Metadata\n */\n metadata?: Record<string, any>;\n /**\n * 沙箱全局唯一资源名称 / Sandbox ARN\n */\n sandboxArn?: string;\n /**\n * 沙箱空闲 TTL(秒) / Sandbox Idle TTL (seconds)\n */\n sandboxIdleTTLInSeconds?: number;\n\n protected _config?: Config;\n\n constructor(data?: Partial<SandboxData>, config?: Config) {\n super();\n\n if (data) {\n updateObjectProperties(this, data);\n }\n this._config = config;\n }\n\n /**\n * Create sandbox from SDK response object\n * 从 SDK 响应对象创建沙箱 / Create Sandbox from SDK Response Object\n */\n static fromInnerObject(obj: any, config?: Config): Sandbox {\n return new Sandbox(\n {\n sandboxId: obj.sandboxId,\n sandboxName: obj.sandboxName,\n templateId: obj.templateId,\n templateName: obj.templateName,\n // API returns \"status\" field, map it to \"state\"\n state: (obj.status || obj.state) as SandboxState,\n stateReason: obj.stateReason,\n createdAt: obj.createdAt,\n lastUpdatedAt: obj.lastUpdatedAt,\n sandboxIdleTimeoutSeconds: obj.sandboxIdleTimeoutSeconds,\n // New fields / 新增字段\n endedAt: obj.endedAt,\n metadata: obj.metadata,\n sandboxArn: obj.sandboxArn,\n sandboxIdleTTLInSeconds: obj.sandboxIdleTTLInSeconds,\n },\n config\n );\n }\n\n private static getClient(): SandboxClient {\n // lazy-require to avoid circular runtime import between sandbox <-> client\n // keep this dynamic require so module initialization order doesn't break\n // eslint-disable-next-line @typescript-eslint/no-var-requires\n const { SandboxClient } = require('./client') as { SandboxClient: new () => SandboxClient };\n return new SandboxClient();\n }\n\n /**\n * Create a new Sandbox\n * 创建新沙箱 / Create a New Sandbox\n */\n static async create(params: {\n input: SandboxCreateInput;\n templateType: TemplateType.AIO;\n config?: Config;\n }): Promise<AioSandbox>;\n static async create(params: {\n input: SandboxCreateInput;\n templateType: TemplateType.BROWSER;\n config?: Config;\n }): Promise<BrowserSandbox>;\n static async create(params: {\n input: SandboxCreateInput;\n templateType: TemplateType.CODE_INTERPRETER;\n config?: Config;\n }): Promise<CodeInterpreterSandbox>;\n static async create(params: {\n input: SandboxCreateInput;\n templateType: TemplateType.CUSTOM;\n config?: Config;\n }): Promise<CustomSandbox>;\n static async create(params: {\n input: SandboxCreateInput;\n templateType?: TemplateType;\n config?: Config;\n }): Promise<Sandbox>;\n /** @deprecated Use create({ input, config }) instead. */\n static async create(input: SandboxCreateInput, config?: Config): Promise<Sandbox>;\n\n static async create(\n arg1:\n | {\n input: SandboxCreateInput;\n templateType?: TemplateType;\n config?: Config;\n }\n | SandboxCreateInput,\n arg2?: Config\n ): Promise<Sandbox> {\n if (typeof arg1 === 'object' && arg1 !== null && 'input' in arg1) {\n // New API: create({ input, templateType?, config? })\n return await Sandbox.getClient().createSandbox(arg1);\n }\n // Legacy API: create(input, config?)\n logger.warn(\n 'Deprecated: Sandbox.create(input, config) is deprecated. Use Sandbox.create({ input, config }) instead.'\n );\n return await Sandbox.getClient().createSandbox(arg1 as SandboxCreateInput, arg2);\n }\n\n /**\n * Delete a Sandbox by ID\n */\n static async delete(params: { id: string; config?: Config }): Promise<Sandbox>;\n /** @deprecated Use delete({ id, config }) instead. */\n static async delete(id: string, config?: Config): Promise<Sandbox>;\n static async delete(\n arg1: { id: string; config?: Config } | string,\n arg2?: Config\n ): Promise<Sandbox> {\n if (typeof arg1 === 'string') {\n // Legacy API: delete(id, config?)\n logger.warn(\n 'Sandbox.delete(id, config) is deprecated. Use Sandbox.delete({ id, config }) instead.'\n );\n return await Sandbox.getClient().deleteSandbox(arg1, arg2);\n }\n // New API: delete({ id, config })\n return await Sandbox.getClient().deleteSandbox(arg1);\n }\n\n /**\n * Stop a Sandbox by ID\n */\n static async stop(params: { id: string; config?: Config }): Promise<Sandbox>;\n /** @deprecated Use stop({ id, config }) instead. */\n static async stop(id: string, config?: Config): Promise<Sandbox>;\n static async stop(\n arg1: { id: string; config?: Config } | string,\n arg2?: Config\n ): Promise<Sandbox> {\n if (typeof arg1 === 'string') {\n // Legacy API: stop(id, config?)\n logger.warn(\n 'Sandbox.stop(id, config) is deprecated. Use Sandbox.stop({ id, config }) instead.'\n );\n return await Sandbox.getClient().stopSandbox(arg1, arg2);\n }\n // New API: stop({ id, config })\n return await Sandbox.getClient().stopSandbox(arg1);\n }\n\n /**\n * Get a Sandbox by ID\n */\n static async get(params: {\n id: string;\n templateType?: TemplateType;\n config?: Config;\n }): Promise<Sandbox>;\n /** @deprecated Use get({ id, templateType, config }) instead. */\n static async get(id: string, templateType?: TemplateType, config?: Config): Promise<Sandbox>;\n static async get(\n arg1: { id: string; templateType?: TemplateType; config?: Config } | string,\n arg2?: TemplateType | Config,\n arg3?: Config\n ): Promise<Sandbox> {\n let id: string;\n let templateType: TemplateType | undefined;\n let config: Config | undefined;\n\n if (typeof arg1 === 'string') {\n logger.warn(\n 'Deprecated: Sandbox.get(id, templateType?, config?) is deprecated. Use Sandbox.get({ id, templateType, config }) instead.'\n );\n id = arg1;\n if (arg2 && typeof arg2 === 'string') {\n templateType = arg2 as TemplateType;\n config = arg3;\n } else {\n config = arg2 as Config;\n }\n } else {\n id = arg1.id;\n templateType = arg1.templateType;\n config = arg1.config;\n }\n\n try {\n const cfg = Config.withConfigs(config);\n\n // Use Data API to get sandbox\n const dataApi = new SandboxDataAPI({\n sandboxId: id,\n config: cfg,\n });\n\n const result = await dataApi.getSandbox({\n sandboxId: id,\n config: cfg,\n });\n\n // Check if get was successful\n if (result.code !== 'SUCCESS') {\n throw new ClientError(0, `Failed to get sandbox: ${result.message || 'Unknown error'}`);\n }\n\n // Extract data and create Sandbox instance\n const data = result.data || {};\n const baseSandbox = Sandbox.fromInnerObject(data as any, config);\n\n // If templateType is specified, return the appropriate subclass\n if (templateType) {\n // Dynamically import to avoid circular dependencies\n switch (templateType) {\n case TemplateType.CODE_INTERPRETER: {\n const { CodeInterpreterSandbox } = await import('./code-interpreter-sandbox');\n // Pass baseSandbox instead of raw data\n const sandbox = new CodeInterpreterSandbox(baseSandbox, config);\n return sandbox;\n }\n case TemplateType.BROWSER: {\n const { BrowserSandbox } = await import('./browser-sandbox');\n // Pass baseSandbox instead of raw data\n const sandbox = new BrowserSandbox(baseSandbox, config);\n return sandbox;\n }\n case TemplateType.AIO: {\n const { AioSandbox } = await import('./aio-sandbox');\n // Pass baseSandbox instead of raw data\n const sandbox = new AioSandbox(baseSandbox, config);\n return sandbox;\n }\n case TemplateType.CUSTOM: {\n const { CustomSandbox } = await import('./custom-sandbox');\n // Pass baseSandbox instead of raw data\n const sandbox = new CustomSandbox(baseSandbox, config);\n return sandbox;\n }\n }\n }\n\n return baseSandbox;\n } catch (error) {\n if (error instanceof HTTPError) {\n throw error.toResourceError('Sandbox', id);\n }\n throw error;\n }\n }\n\n /**\n * List Sandboxes\n */\n static async list(params?: { input?: SandboxListInput; config?: Config }): Promise<Sandbox[]>;\n /** @deprecated Use list({ input, config }) instead. */\n static async list(input: SandboxListInput, config?: Config): Promise<Sandbox[]>;\n static async list(\n arg1?: SandboxListInput | { input?: SandboxListInput; config?: Config },\n arg2?: Config\n ): Promise<Sandbox[]> {\n // Check if using legacy API (arg1 is input object with list params)\n if (\n arg2 !== undefined ||\n (arg1 &&\n ('maxResults' in arg1 ||\n 'nextToken' in arg1 ||\n 'status' in arg1 ||\n 'templateName' in arg1 ||\n 'templateType' in arg1))\n ) {\n // Legacy API: list(input, config?)\n logger.warn(\n 'Deprecated: Sandbox.list(input, config) is deprecated. Use Sandbox.list({ input, config }) instead.'\n );\n return await Sandbox.getClient().listSandboxes(arg1 as SandboxListInput, arg2);\n }\n // New API: list({ input, config }) or list()\n return await Sandbox.getClient().listSandboxes(\n arg1 as { input?: SandboxListInput; config?: Config }\n );\n }\n\n get = async (params?: { config?: Config }) => {\n const { config } = params ?? {};\n\n return await Sandbox.get({\n id: this.sandboxId!,\n templateType: this.templateType,\n config: Config.withConfigs(this._config, config),\n });\n };\n\n /**\n * Delete this sandbox\n */\n delete = async (params?: { config?: Config }): Promise<Sandbox> => {\n const config = params?.config;\n if (!this.sandboxId) {\n throw new Error('sandboxId is required to delete a Sandbox');\n }\n\n const result = await Sandbox.delete({\n id: this.sandboxId,\n config: config ?? this._config,\n });\n updateObjectProperties(this, result);\n return this;\n };\n\n /**\n * Stop this sandbox\n */\n stop = async (params?: { config?: Config }): Promise<Sandbox> => {\n const config = params?.config;\n if (!this.sandboxId) {\n throw new Error('sandboxId is required to stop a Sandbox');\n }\n\n const result = await Sandbox.stop({\n id: this.sandboxId,\n config: config ?? this._config,\n });\n updateObjectProperties(this, result);\n return this;\n };\n\n /**\n * Refresh this sandbox's data\n */\n refresh = async (params?: { config?: Config }): Promise<Sandbox> => {\n const config = params?.config;\n if (!this.sandboxId) {\n throw new Error('sandboxId is required to refresh a Sandbox');\n }\n\n const result = await Sandbox.get({\n id: this.sandboxId,\n config: config ?? this._config,\n });\n updateObjectProperties(this, result);\n return this;\n };\n\n /**\n * Wait until the sandbox is running\n */\n waitUntilRunning = async (\n options?: {\n timeoutSeconds?: number;\n intervalSeconds?: number;\n beforeCheck?: (sandbox: Sandbox) => void;\n },\n config?: Config\n ): Promise<Sandbox> => {\n const timeout = (options?.timeoutSeconds ?? 300) * 1000;\n const interval = (options?.intervalSeconds ?? 5) * 1000;\n const startTime = Date.now();\n\n while (Date.now() - startTime < timeout) {\n await this.refresh({ config });\n\n if (options?.beforeCheck) {\n options.beforeCheck(this);\n }\n\n // API返回READY状态表示沙箱就绪可以运行\n // API returns READY status to indicate the sandbox is ready to run\n if (this.state === SandboxState.RUNNING || this.state === SandboxState.READY) {\n return this;\n }\n\n if (this.state === SandboxState.FAILED) {\n throw new Error(`Sandbox failed: ${this.stateReason}`);\n }\n\n await new Promise(resolve => setTimeout(resolve, interval));\n }\n\n throw new Error(\n `Timeout waiting for Sandbox to be running after ${options?.timeoutSeconds ?? 300} seconds`\n );\n };\n}\n","/**\n * AIO (All-In-One) Sandbox\n *\n * Combines both Code Interpreter and Browser sandbox functionalities\n * into a single unified interface.\n */\n\nimport { Config } from '../utils/config';\nimport { logger } from '../utils/log';\nimport { ServerError } from '../utils/exception';\n\nimport { AioDataAPI } from './api/aio-data';\nimport { CodeLanguage, NASConfig, OSSMountConfig, PolarFsConfig, TemplateType } from './model';\nimport { Sandbox } from './sandbox';\n\n/**\n * File upload/download operations\n */\nexport class AioFileOperations {\n private sandbox: AioSandbox;\n\n constructor(sandbox: AioSandbox) {\n this.sandbox = sandbox;\n }\n\n /**\n * Read a file from the sandbox\n */\n read = async (path: string): Promise<any> => {\n return this.sandbox.dataApi.readFile({ path });\n };\n\n /**\n * Write a file to the sandbox\n */\n write = async (params: {\n path: string;\n content: string;\n mode?: string;\n encoding?: string;\n createDir?: boolean;\n }): Promise<any> => {\n return this.sandbox.dataApi.writeFile(params);\n };\n}\n\n/**\n * File system operations (list, move, remove, stat, mkdir)\n */\nexport class AioFileSystemOperations {\n private sandbox: AioSandbox;\n\n constructor(sandbox: AioSandbox) {\n this.sandbox = sandbox;\n }\n\n /**\n * List directory contents\n */\n list = async (params?: { path?: string; depth?: number }): Promise<any> => {\n return this.sandbox.dataApi.listDirectory(params);\n };\n\n /**\n * Move a file or directory\n */\n move = async (params: { source: string; destination: string }): Promise<any> => {\n return this.sandbox.dataApi.moveFile(params);\n };\n\n /**\n * Remove a file or directory\n */\n remove = async (params: { path: string }): Promise<any> => {\n return this.sandbox.dataApi.removeFile(params);\n };\n\n /**\n * Get file or directory statistics\n */\n stat = async (params: { path: string }): Promise<any> => {\n return this.sandbox.dataApi.stat(params);\n };\n\n /**\n * Create a directory\n */\n mkdir = async (params: { path: string; parents?: boolean; mode?: string }): Promise<any> => {\n return this.sandbox.dataApi.mkdir(params);\n };\n\n /**\n * Upload a file to the sandbox\n */\n upload = async (params: { localFilePath: string; targetFilePath: string }): Promise<any> => {\n return this.sandbox.dataApi.uploadFile(params);\n };\n\n /**\n * Download a file from the sandbox\n */\n download = async (params: {\n path: string;\n savePath: string;\n }): Promise<{ savedPath: string; size: number }> => {\n return this.sandbox.dataApi.downloadFile(params);\n };\n}\n\n/**\n * Process management operations\n */\nexport class AioProcessOperations {\n private sandbox: AioSandbox;\n\n constructor(sandbox: AioSandbox) {\n this.sandbox = sandbox;\n }\n\n /**\n * Execute a command in the sandbox\n */\n cmd = async (params: { command: string; cwd: string; timeout?: number }): Promise<any> => {\n return this.sandbox.dataApi.cmd(params);\n };\n\n /**\n * List all processes\n */\n list = async (params?: { config?: Config }): Promise<any> => {\n return this.sandbox.dataApi.listProcesses(params);\n };\n\n /**\n * Get a specific process by PID\n */\n get = async (params: { pid: string }): Promise<any> => {\n return this.sandbox.dataApi.getProcess(params);\n };\n\n /**\n * Kill a specific process by PID\n */\n kill = async (params: { pid: string }): Promise<any> => {\n return this.sandbox.dataApi.killProcess(params);\n };\n}\n\n/**\n * Context management operations\n */\nexport class AioContextOperations {\n private sandbox: AioSandbox;\n private _contextId?: string;\n private _language?: CodeLanguage;\n private _cwd?: string;\n\n constructor(sandbox: AioSandbox) {\n this.sandbox = sandbox;\n }\n\n /**\n * Get the current context ID\n */\n get contextId(): string | undefined {\n return this._contextId;\n }\n\n /**\n * List all contexts\n */\n list = async (params?: { config?: Config }): Promise<any> => {\n return this.sandbox.dataApi.listContexts(params);\n };\n\n /**\n * Create a new context and save its ID\n */\n create = async (params?: {\n language?: CodeLanguage;\n cwd?: string;\n }): Promise<AioContextOperations> => {\n const language = params?.language || CodeLanguage.PYTHON;\n const cwd = params?.cwd || '/home/user';\n\n const result = await this.sandbox.dataApi.createContext({\n language,\n cwd,\n });\n\n if (result?.id && result?.cwd && result?.language) {\n this._contextId = result.id;\n this._language = result.language;\n this._cwd = result.cwd;\n return this;\n }\n\n throw new ServerError(500, 'Failed to create context');\n };\n\n /**\n * Get a specific context by ID\n */\n get = async (params?: { contextId?: string }): Promise<AioContextOperations> => {\n const id = params?.contextId || this._contextId;\n if (!id) {\n logger.error('context id is not set');\n throw new Error('context id is not set');\n }\n\n const result = await this.sandbox.dataApi.getContext({ contextId: id });\n\n if (result?.id && result?.cwd && result?.language) {\n this._contextId = result.id;\n this._language = result.language;\n this._cwd = result.cwd;\n return this;\n }\n\n throw new ServerError(500, 'Failed to get context');\n };\n\n /**\n * Execute code in a context\n */\n execute = async (params: {\n code: string;\n language?: CodeLanguage;\n contextId?: string;\n timeout?: number;\n }): Promise<any> => {\n const { code, timeout = 30 } = params;\n let { contextId, language } = params;\n\n if (!contextId) {\n contextId = this._contextId;\n }\n\n if (!contextId && !language) {\n logger.debug('context id is not set, use default language: python');\n language = CodeLanguage.PYTHON;\n }\n\n return this.sandbox.dataApi.executeCode({\n code,\n contextId,\n language,\n timeout,\n });\n };\n\n /**\n * Delete a context\n */\n delete = async (params?: { contextId?: string }): Promise<any> => {\n const id = params?.contextId || this._contextId;\n if (!id) {\n throw new Error(\n 'context_id is required. Either pass it as parameter or create a context first.'\n );\n }\n\n const result = await this.sandbox.dataApi.deleteContext({ contextId: id });\n // Clear the saved context_id after deletion\n this._contextId = undefined;\n return result;\n };\n}\n\n/**\n * AIO (All-In-One) Sandbox\n *\n * Combines both Code Interpreter and Browser sandbox functionalities.\n */\nexport class AioSandbox extends Sandbox {\n static templateType = TemplateType.AIO;\n\n /**\n * Create an AIO Sandbox from template\n * 从模板创建 AIO 沙箱 / Create AIO Sandbox from Template\n */\n static async createFromTemplate(\n templateName: string,\n options?: {\n sandboxIdleTimeoutSeconds?: number;\n nasConfig?: NASConfig;\n ossMountConfig?: OSSMountConfig;\n polarFsConfig?: PolarFsConfig;\n },\n config?: Config\n ): Promise<AioSandbox> {\n const sandbox = await Sandbox.create({\n input: {\n templateName,\n sandboxIdleTimeoutSeconds: options?.sandboxIdleTimeoutSeconds,\n nasConfig: options?.nasConfig,\n ossMountConfig: options?.ossMountConfig,\n polarFsConfig: options?.polarFsConfig,\n },\n templateType: TemplateType.AIO,\n config,\n });\n\n return sandbox as AioSandbox;\n }\n\n constructor(sandbox: Sandbox, config?: Config) {\n super(sandbox, config);\n }\n\n private _dataApi?: AioDataAPI;\n private _file?: AioFileOperations;\n private _fileSystem?: AioFileSystemOperations;\n private _context?: AioContextOperations;\n private _process?: AioProcessOperations;\n\n /**\n * Get data API client\n */\n get dataApi(): AioDataAPI {\n if (!this._dataApi) {\n this._dataApi = new AioDataAPI({\n sandboxId: this.sandboxId || '',\n config: this._config,\n });\n }\n return this._dataApi;\n }\n\n /**\n * Access file upload/download operations\n */\n get file(): AioFileOperations {\n if (!this._file) {\n this._file = new AioFileOperations(this);\n }\n return this._file;\n }\n\n /**\n * Access file system operations\n */\n get fileSystem(): AioFileSystemOperations {\n if (!this._fileSystem) {\n this._fileSystem = new AioFileSystemOperations(this);\n }\n return this._fileSystem;\n }\n\n /**\n * Access context management operations\n */\n get context(): AioContextOperations {\n if (!this._context) {\n this._context = new AioContextOperations(this);\n }\n return this._context;\n }\n\n /**\n * Access process management operations\n */\n get process(): AioProcessOperations {\n if (!this._process) {\n this._process = new AioProcessOperations(this);\n }\n return this._process;\n }\n\n /**\n * Check sandbox health\n */\n checkHealth = async (params?: {\n config?: Config;\n }): Promise<{ status: string; [key: string]: any }> => {\n return this.dataApi.checkHealth({\n sandboxId: this.sandboxId!,\n config: params?.config,\n });\n };\n\n // ========================================\n // Browser API Methods\n // ========================================\n\n /**\n * Get CDP WebSocket URL for browser automation\n */\n getCdpUrl(record?: boolean): string {\n return this.dataApi.getCdpUrl(record);\n }\n\n /**\n * Get VNC WebSocket URL for live view\n */\n getVncUrl(record?: boolean): string {\n return this.dataApi.getVncUrl(record);\n }\n\n /**\n * List all browser recordings\n */\n listRecordings = async (params?: { config?: Config }): Promise<any> => {\n return this.dataApi.listRecordings(params);\n };\n\n /**\n * Download a recording video file\n */\n downloadRecording = async (params: {\n filename: string;\n savePath: string;\n }): Promise<{ savedPath: string; size: number }> => {\n return this.dataApi.downloadRecording(params);\n };\n\n /**\n * Delete a recording\n */\n deleteRecording = async (params: { filename: string; config?: Config }): Promise<any> => {\n return this.dataApi.deleteRecording(params);\n };\n\n // ========================================\n // Code Interpreter API Methods\n // ========================================\n\n /**\n * Execute code (convenience method delegating to context.execute)\n */\n execute = async (params: {\n code: string;\n language?: CodeLanguage;\n contextId?: string;\n timeout?: number;\n }): Promise<any> => {\n return this.context.execute(params);\n };\n}\n","/**\n * Template Resource\n *\n * 此模块定义 Template 资源类。\n * This module defines the Template resource class.\n */\n\nimport { Config } from '../utils/config';\nimport { Status } from '../utils/model';\nimport { listAllResourcesFunction, ResourceBase, updateObjectProperties } from '../utils/resource';\n\nimport {\n TemplateCreateInput,\n TemplateData,\n TemplateListInput,\n TemplateType,\n TemplateUpdateInput,\n} from './model';\n\n/**\n * Template resource class\n * 模板资源类 / Template Resource Class\n */\nexport class Template extends ResourceBase implements TemplateData {\n /**\n * 模板 ARN / Template ARN\n */\n templateArn?: string;\n /**\n * 模板 ID / Template ID\n */\n templateId?: string;\n /**\n * 模板名称 / Template Name\n */\n templateName?: string;\n /**\n * 模板类型 / Template Type\n */\n templateType?: TemplateType;\n /**\n * CPU 核数 / CPU Cores\n */\n cpu?: number;\n /**\n * 内存大小(MB) / Memory Size (MB)\n */\n memory?: number;\n /**\n * 创建时间 / Creation Time\n */\n createdAt?: string;\n /**\n * 描述 / Description\n */\n description?: string;\n /**\n * 执行角色 ARN / Execution Role ARN\n */\n executionRoleArn?: string;\n /**\n * 最后更新时间 / Last Updated Time\n */\n lastUpdatedAt?: string;\n /**\n * 资源名称 / Resource Name\n */\n resourceName?: string;\n /**\n * 沙箱空闲超时时间(秒) / Sandbox Idle Timeout (seconds)\n */\n sandboxIdleTimeoutInSeconds?: number;\n /**\n * 沙箱存活时间(秒) / Sandbox TTL (seconds)\n */\n sandboxTtlInSeconds?: number;\n /**\n * 每个沙箱的最大并发会话数 / Max Concurrency Limit Per Sandbox\n */\n shareConcurrencyLimitPerSandbox?: number;\n /**\n * 状态 / Status\n */\n declare status?: Status;\n /**\n * 状态原因 / Status Reason\n */\n statusReason?: string;\n /**\n * 磁盘大小(GB) / Disk Size (GB)\n */\n diskSize?: number;\n /**\n * 是否允许匿名管理 / Whether to allow anonymous management\n */\n allowAnonymousManage?: boolean;\n\n protected _config?: Config;\n\n constructor(data?: any, config?: Config) {\n super();\n\n if (data) {\n updateObjectProperties(this, data);\n this.normalizeNumericFields();\n }\n\n this._config = config;\n }\n\n uniqIdCallback = () => this.templateId;\n\n private static getClient() {\n // eslint-disable-next-line @typescript-eslint/no-var-requires\n const { SandboxClient } = require('./client');\n return new SandboxClient();\n }\n\n /**\n * Create a new Template\n */\n static async create(params: { input: TemplateCreateInput; config?: Config }): Promise<Template> {\n return await Template.getClient().createTemplate(params);\n }\n\n /**\n * Delete a Template by name\n */\n static async delete(params: { name: string; config?: Config }): Promise<Template> {\n return await Template.getClient().deleteTemplate(params);\n }\n\n /**\n * Update a Template by name\n */\n static async update(params: {\n name: string;\n input: TemplateUpdateInput;\n config?: Config;\n }): Promise<Template> {\n return await Template.getClient().updateTemplate(params);\n }\n\n /**\n * Get a Template by name\n */\n static async get(params: { name: string; config?: Config }): Promise<Template> {\n return await Template.getClient().getTemplate(params);\n }\n\n /**\n * List Templates\n */\n static async list(params?: { input?: TemplateListInput; config?: Config }): Promise<Template[]> {\n return await Template.getClient().listTemplates(params);\n }\n\n /**\n * List all Templates (with pagination)\n */\n static listAll = listAllResourcesFunction(this.list);\n\n get = async (params: { config?: Config } = {}): Promise<Template> => {\n return await Template.get({\n name: this.templateName!,\n config: params.config,\n });\n };\n\n /**\n * Delete this template\n */\n delete = async (params?: { config?: Config }): Promise<Template> => {\n const config = params?.config;\n if (!this.templateName) {\n throw new Error('templateName is required to delete a Template');\n }\n\n const result = await Template.delete({\n name: this.templateName,\n config: config ?? this._config,\n });\n updateObjectProperties(this, result);\n this.normalizeNumericFields();\n return this;\n };\n\n /**\n * Update this template\n */\n update = async (params: { input: TemplateUpdateInput; config?: Config }): Promise<Template> => {\n const { input, config } = params;\n if (!this.templateName) {\n throw new Error('templateName is required to update a Template');\n }\n\n const result = await Template.update({\n name: this.templateName,\n input,\n config: config ?? this._config,\n });\n updateObjectProperties(this, result);\n this.normalizeNumericFields();\n return this;\n };\n\n /**\n * Refresh this template's data\n */\n refresh = async (params?: { config?: Config }): Promise<Template> => {\n const config = params?.config;\n if (!this.templateName) {\n throw new Error('templateName is required to refresh a Template');\n }\n\n const result = await Template.get({\n name: this.templateName,\n config: config ?? this._config,\n });\n updateObjectProperties(this, result);\n this.normalizeNumericFields();\n return this;\n };\n\n private normalizeNumericFields() {\n const toNumber = (value?: string | number) => {\n if (typeof value === 'number') return value;\n if (typeof value === 'string') {\n const parsed = Number(value);\n return Number.isNaN(parsed) ? undefined : parsed;\n }\n return undefined;\n };\n\n this.sandboxIdleTimeoutInSeconds = toNumber(this.sandboxIdleTimeoutInSeconds);\n this.sandboxTtlInSeconds = toNumber(this.sandboxTtlInSeconds);\n this.shareConcurrencyLimitPerSandbox = toNumber(this.shareConcurrencyLimitPerSandbox);\n this.cpu = toNumber(this.cpu);\n this.memory = toNumber(this.memory);\n this.diskSize = toNumber(this.diskSize);\n }\n}\n","/**\n * Sandbox Client\n *\n * 此模块提供 Sandbox 的客户端 API。\n * This module provides the client API for Sandbox.\n */\n\nimport * as $AgentRun from '@alicloud/agentrun20250910';\nimport { Config } from '../utils/config';\nimport { HTTPError } from '../utils/exception';\nimport { logger } from '../utils/log';\nimport { SandboxControlAPI } from './api/control';\n\nimport { AioSandbox } from './aio-sandbox';\nimport { BrowserSandbox } from './browser-sandbox';\nimport { CodeInterpreterSandbox } from './code-interpreter-sandbox';\nimport { CustomSandbox } from './custom-sandbox';\nimport {\n NASConfig,\n OSSMountConfig,\n PolarFsConfig,\n SandboxCreateInput,\n SandboxListInput,\n SandboxState,\n TemplateCreateInput,\n TemplateListInput,\n TemplateNetworkMode,\n TemplateType,\n TemplateUpdateInput,\n} from './model';\nimport { Sandbox } from './sandbox';\nimport { Template } from './template';\n\n/**\n * Sandbox Client\n *\n * 提供 Sandbox 和 Template 的管理功能。\n */\nexport class SandboxClient {\n private config?: Config;\n private controlApi: SandboxControlAPI;\n\n constructor(config?: Config) {\n this.config = config;\n this.controlApi = new SandboxControlAPI(config);\n }\n\n // ============ Template Operations ============\n\n /**\n * Create a Template\n */\n createTemplate: {\n (params: { input: TemplateCreateInput; config?: Config }): Promise<Template>;\n /** @deprecated Use createTemplate({ input, config }) instead. */\n (input: TemplateCreateInput, config?: Config): Promise<Template>;\n } = async (\n arg1: { input: TemplateCreateInput; config?: Config } | TemplateCreateInput,\n arg2?: Config\n ): Promise<Template> => {\n let input: TemplateCreateInput;\n let config: Config | undefined;\n\n if ('input' in arg1) {\n input = arg1.input;\n config = arg1.config;\n } else {\n logger.warn(\n 'Deprecated: createTemplate(input, config) is deprecated. Use createTemplate({ input, config }) instead.'\n );\n input = arg1;\n config = arg2;\n }\n\n const cfg = Config.withConfigs(this.config, config);\n\n try {\n const finalInput = this.prepareTemplateCreateInput(input);\n\n const result = await this.controlApi.createTemplate({\n input: new $AgentRun.CreateTemplateInput({\n ...finalInput,\n networkConfiguration: finalInput.networkConfiguration\n ? new $AgentRun.NetworkConfiguration({\n ...finalInput.networkConfiguration,\n })\n : undefined,\n }),\n config: cfg,\n });\n\n return new Template(result, cfg);\n } catch (error) {\n if (error instanceof HTTPError) {\n throw error.toResourceError('Template', input.templateName);\n }\n throw error;\n }\n };\n\n /**\n * Delete a Template\n */\n deleteTemplate: {\n (params: { name: string; config?: Config }): Promise<Template>;\n /** @deprecated Use deleteTemplate({ name, config }) instead. */\n (name: string, config?: Config): Promise<Template>;\n } = async (\n arg1: { name: string; config?: Config } | string,\n arg2?: Config\n ): Promise<Template> => {\n let name: string;\n let config: Config | undefined;\n\n if (typeof arg1 === 'string') {\n logger.warn(\n 'Deprecated: deleteTemplate(name, config) is deprecated. Use deleteTemplate({ name, config }) instead.'\n );\n name = arg1;\n config = arg2;\n } else {\n name = arg1.name;\n config = arg1.config;\n }\n\n const cfg = Config.withConfigs(this.config, config);\n\n try {\n const result = await this.controlApi.deleteTemplate({\n templateName: name,\n config: cfg,\n });\n return new Template(result, cfg);\n } catch (error) {\n if (error instanceof HTTPError) {\n throw error.toResourceError('Template', name);\n }\n throw error;\n }\n };\n\n /**\n * Update a Template\n */\n updateTemplate: {\n (params: { name: string; input: TemplateUpdateInput; config?: Config }): Promise<Template>;\n /** @deprecated Use updateTemplate({ name, input, config }) instead. */\n (name: string, input: TemplateUpdateInput, config?: Config): Promise<Template>;\n } = async (\n arg1: { name: string; input: TemplateUpdateInput; config?: Config } | string,\n arg2?: TemplateUpdateInput,\n arg3?: Config\n ): Promise<Template> => {\n let name: string;\n let input: TemplateUpdateInput;\n let config: Config | undefined;\n\n if (typeof arg1 === 'string') {\n logger.warn(\n 'Deprecated: updateTemplate(name, input, config) is deprecated. Use updateTemplate({ name, input, config }) instead.'\n );\n name = arg1;\n input = arg2 as TemplateUpdateInput;\n config = arg3;\n } else {\n name = arg1.name;\n input = arg1.input;\n config = arg1.config;\n }\n\n const cfg = Config.withConfigs(this.config, config);\n\n try {\n const result = await this.controlApi.updateTemplate({\n templateName: name,\n input: new $AgentRun.UpdateTemplateInput({\n ...input,\n networkConfiguration: input.networkConfiguration\n ? new $AgentRun.NetworkConfiguration({\n ...input.networkConfiguration,\n })\n : undefined,\n }),\n config: cfg,\n });\n return new Template(result, cfg);\n } catch (error) {\n if (error instanceof HTTPError) {\n throw error.toResourceError('Template', name);\n }\n throw error;\n }\n };\n\n /**\n * Get a Template\n */\n getTemplate: {\n (params: { name: string; config?: Config }): Promise<Template>;\n /** @deprecated Use getTemplate({ name, config }) instead. */\n (name: string, config?: Config): Promise<Template>;\n } = async (\n arg1: { name: string; config?: Config } | string,\n arg2?: Config\n ): Promise<Template> => {\n let name: string;\n let config: Config | undefined;\n\n if (typeof arg1 === 'string') {\n logger.warn(\n 'Deprecated: getTemplate(name, config) is deprecated. Use getTemplate({ name, config }) instead.'\n );\n name = arg1;\n config = arg2;\n } else {\n name = arg1.name;\n config = arg1.config;\n }\n\n const cfg = Config.withConfigs(this.config, config);\n\n try {\n const result = await this.controlApi.getTemplate({\n templateName: name,\n config: cfg,\n });\n return new Template(result, cfg);\n } catch (error) {\n if (error instanceof HTTPError) {\n throw error.toResourceError('Template', name);\n }\n throw error;\n }\n };\n\n /**\n * List Templates\n */\n listTemplates: {\n (params?: { input?: TemplateListInput; config?: Config }): Promise<Template[]>;\n /** @deprecated Use listTemplates({ input, config }) instead. */\n (input: TemplateListInput, config?: Config): Promise<Template[]>;\n } = async (\n arg1?: { input?: TemplateListInput; config?: Config } | TemplateListInput,\n arg2?: Config\n ): Promise<Template[]> => {\n let input: TemplateListInput | undefined;\n let config: Config | undefined;\n\n if (arg2 || (arg1 && ('pageNumber' in arg1 || 'pageSize' in arg1 || 'templateType' in arg1))) {\n logger.warn(\n 'Deprecated: listTemplates(input, config) is deprecated. Use listTemplates({ input, config }) instead.'\n );\n input = arg1 as TemplateListInput;\n config = arg2;\n } else {\n const params = (arg1 as { input?: TemplateListInput; config?: Config }) ?? {};\n input = params.input;\n config = params.config;\n }\n\n const cfg = Config.withConfigs(this.config, config);\n const request = new $AgentRun.ListTemplatesRequest({\n ...input,\n });\n const result = await this.controlApi.listTemplates({\n input: request,\n config: cfg,\n });\n return (result?.items || []).map(item => new Template(item, cfg));\n };\n\n // ============ Sandbox Operations ============\n\n /**\n * Create a Sandbox\n */\n createSandbox: {\n (params: {\n input: SandboxCreateInput;\n templateType: TemplateType.AIO;\n config?: Config;\n }): Promise<AioSandbox>;\n (params: {\n input: SandboxCreateInput;\n templateType: TemplateType.BROWSER;\n config?: Config;\n }): Promise<BrowserSandbox>;\n (params: {\n input: SandboxCreateInput;\n templateType: TemplateType.CODE_INTERPRETER;\n config?: Config;\n }): Promise<CodeInterpreterSandbox>;\n (params: {\n input: SandboxCreateInput;\n templateType: TemplateType.CUSTOM;\n config?: Config;\n }): Promise<CustomSandbox>;\n (params: {\n input: SandboxCreateInput;\n templateType?: TemplateType;\n config?: Config;\n }): Promise<Sandbox>;\n /** @deprecated Use createSandbox({ input, config }) instead. */\n (input: SandboxCreateInput, config?: Config): Promise<Sandbox>;\n } = async (\n arg1:\n | {\n input: SandboxCreateInput;\n templateType?: TemplateType;\n config?: Config;\n }\n | SandboxCreateInput,\n arg2?: Config\n ): Promise<any> => {\n let input: SandboxCreateInput;\n let templateType: TemplateType | undefined;\n let config: Config | undefined;\n\n if ('input' in arg1) {\n // New API: createSandbox({ input, templateType?, config? })\n const params = arg1 as {\n input: SandboxCreateInput;\n templateType?: TemplateType;\n config?: Config;\n };\n input = params.input;\n templateType = params.templateType;\n config = params.config;\n } else {\n // Legacy API: createSandbox(input, config?)\n logger.warn(\n 'Deprecated: createSandbox(input, config) is deprecated. Use createSandbox({ input, config }) instead.'\n );\n input = arg1 as SandboxCreateInput;\n config = arg2;\n }\n\n const cfg = Config.withConfigs(this.config, config);\n\n try {\n const result = await this.controlApi.createSandbox({\n input: new $AgentRun.CreateSandboxInput({\n ...input,\n }),\n config: cfg,\n });\n\n const state = ((result as { status?: string; state?: string }).status ??\n (result as { status?: string; state?: string }).state) as SandboxState | undefined;\n const sb = new Sandbox({ ...result, state }, cfg);\n\n if (templateType === TemplateType.CODE_INTERPRETER)\n return new CodeInterpreterSandbox(sb, cfg);\n else if (templateType === TemplateType.BROWSER) return new BrowserSandbox(sb, cfg);\n else if (templateType === TemplateType.AIO) return new AioSandbox(sb, cfg);\n else if (templateType === TemplateType.CUSTOM) return new CustomSandbox(sb, cfg);\n\n return sb;\n } catch (error) {\n if (error instanceof HTTPError) {\n throw error.toResourceError('Sandbox', input.templateName);\n }\n throw error;\n }\n };\n\n /**\n * Create a Code Interpreter Sandbox\n * 创建代码解释器沙箱 / Create Code Interpreter Sandbox\n */\n createCodeInterpreterSandbox = async (params: {\n templateName: string;\n options?: {\n sandboxIdleTimeoutSeconds?: number;\n nasConfig?: NASConfig;\n ossMountConfig?: OSSMountConfig;\n polarFsConfig?: PolarFsConfig;\n };\n config?: Config;\n }): Promise<CodeInterpreterSandbox> => {\n const { templateName, options, config } = params;\n return CodeInterpreterSandbox.createFromTemplate(templateName, options, config ?? this.config);\n };\n\n /**\n * Create a Browser Sandbox\n * 创建浏览器沙箱 / Create Browser Sandbox\n */\n createBrowserSandbox = async (params: {\n templateName: string;\n options?: {\n sandboxIdleTimeoutSeconds?: number;\n nasConfig?: NASConfig;\n ossMountConfig?: OSSMountConfig;\n polarFsConfig?: PolarFsConfig;\n };\n config?: Config;\n }): Promise<BrowserSandbox> => {\n const { templateName, options, config } = params;\n return BrowserSandbox.createFromTemplate(templateName, options, config ?? this.config);\n };\n\n /**\n * Delete a Sandbox\n */\n deleteSandbox: {\n (params: { id: string; config?: Config }): Promise<Sandbox>;\n /** @deprecated Use deleteSandbox({ id, config }) instead. */\n (id: string, config?: Config): Promise<Sandbox>;\n } = async (arg1: { id: string; config?: Config } | string, arg2?: Config): Promise<Sandbox> => {\n let id: string;\n let config: Config | undefined;\n\n if (typeof arg1 === 'string') {\n logger.warn(\n 'Deprecated: deleteSandbox(id, config) is deprecated. Use deleteSandbox({ id, config }) instead.'\n );\n id = arg1;\n config = arg2;\n } else {\n id = arg1.id;\n config = arg1.config;\n }\n\n const cfg = Config.withConfigs(this.config, config);\n\n try {\n const result = await this.controlApi.deleteSandbox({\n sandboxId: id,\n config: cfg,\n });\n return Sandbox.fromInnerObject(result, cfg);\n } catch (error) {\n if (error instanceof HTTPError) {\n throw error.toResourceError('Sandbox', id);\n }\n throw error;\n }\n };\n\n /**\n * Stop a Sandbox\n */\n stopSandbox: {\n (params: { id: string; config?: Config }): Promise<Sandbox>;\n /** @deprecated Use stopSandbox({ id, config }) instead. */\n (id: string, config?: Config): Promise<Sandbox>;\n } = async (arg1: { id: string; config?: Config } | string, arg2?: Config): Promise<Sandbox> => {\n let id: string;\n let config: Config | undefined;\n\n if (typeof arg1 === 'string') {\n logger.warn(\n 'Deprecated: stopSandbox(id, config) is deprecated. Use stopSandbox({ id, config }) instead.'\n );\n id = arg1;\n config = arg2;\n } else {\n id = arg1.id;\n config = arg1.config;\n }\n\n const cfg = Config.withConfigs(this.config, config);\n\n try {\n const result = await this.controlApi.stopSandbox({\n sandboxId: id,\n config: cfg,\n });\n return Sandbox.fromInnerObject(result, cfg);\n } catch (error) {\n if (error instanceof HTTPError) {\n throw error.toResourceError('Sandbox', id);\n }\n throw error;\n }\n };\n\n /**\n * Get a Sandbox\n *\n * @param params.id - Sandbox ID\n * @param params.templateType - Template type to cast the result to the appropriate subclass\n * @param params.config - Configuration\n */\n getSandbox: {\n (params: { id: string; templateType?: TemplateType; config?: Config }): Promise<Sandbox>;\n /** @deprecated Use getSandbox({ id, templateType, config }) instead. */\n (id: string, templateType?: TemplateType, config?: Config): Promise<Sandbox>;\n } = async (\n arg1: { id: string; templateType?: TemplateType; config?: Config } | string,\n arg2?: TemplateType | Config,\n arg3?: Config\n ): Promise<Sandbox> => {\n let id: string;\n let templateType: TemplateType | undefined;\n let config: Config | undefined;\n\n if (typeof arg1 === 'string') {\n logger.warn(\n 'Deprecated: getSandbox(id, templateType, config?) is deprecated. Use getSandbox({ id, templateType, config }) instead.'\n );\n id = arg1;\n if (arg2 && typeof arg2 === 'string') {\n templateType = arg2 as TemplateType;\n config = arg3;\n } else {\n config = arg2 as Config;\n }\n } else {\n id = arg1.id;\n templateType = arg1.templateType;\n config = arg1.config;\n }\n\n const cfg = Config.withConfigs(this.config, config);\n\n try {\n const result = await this.controlApi.getSandbox({\n sandboxId: id,\n config: cfg,\n });\n const baseSandbox = Sandbox.fromInnerObject(result, cfg);\n\n if (templateType) {\n switch (templateType) {\n case TemplateType.CODE_INTERPRETER: {\n return new CodeInterpreterSandbox(baseSandbox, cfg);\n }\n case TemplateType.BROWSER: {\n return new BrowserSandbox(baseSandbox, cfg);\n }\n case TemplateType.AIO: {\n const { AioSandbox } = await import('./aio-sandbox');\n return new AioSandbox(baseSandbox, cfg);\n }\n }\n }\n\n return baseSandbox;\n } catch (error) {\n if (error instanceof HTTPError) {\n throw error.toResourceError('Sandbox', id);\n }\n throw error;\n }\n };\n\n /**\n * List Sandboxes\n */\n listSandboxes: {\n (params?: { input?: SandboxListInput; config?: Config }): Promise<Sandbox[]>;\n /** @deprecated Use listSandboxes({ input, config }) instead. */\n (input: SandboxListInput, config?: Config): Promise<Sandbox[]>;\n } = async (\n arg1?: { input?: SandboxListInput; config?: Config } | SandboxListInput,\n arg2?: Config\n ): Promise<Sandbox[]> => {\n let input: SandboxListInput | undefined;\n let config: Config | undefined;\n\n if (\n arg2 ||\n (arg1 &&\n ('maxResults' in arg1 ||\n 'nextToken' in arg1 ||\n 'status' in arg1 ||\n 'templateName' in arg1 ||\n 'templateType' in arg1))\n ) {\n logger.warn(\n 'Deprecated: listSandboxes(input, config) is deprecated. Use listSandboxes({ input, config }) instead.'\n );\n input = arg1 as SandboxListInput;\n config = arg2;\n } else {\n const params = (arg1 as { input?: SandboxListInput; config?: Config }) ?? {};\n input = params.input;\n config = params.config;\n }\n\n const cfg = Config.withConfigs(this.config, config);\n const request = new $AgentRun.ListSandboxesRequest({\n ...input,\n });\n const result = await this.controlApi.listSandboxes({\n input: request,\n config: cfg,\n });\n return (result.sandboxes || []).map((item: $AgentRun.Sandbox) =>\n Sandbox.fromInnerObject(item, cfg)\n );\n };\n\n private prepareTemplateCreateInput(input: TemplateCreateInput): TemplateCreateInput {\n const defaults = this.getTemplateDefaults(input.templateType);\n const finalInput = { ...defaults, ...input };\n\n if (!finalInput.networkConfiguration) {\n finalInput.networkConfiguration = {\n networkMode: TemplateNetworkMode.PUBLIC,\n };\n }\n\n this.validateTemplateCreateInput(finalInput);\n return finalInput;\n }\n\n private getTemplateDefaults(templateType: TemplateType): Partial<TemplateCreateInput> {\n const base = {\n cpu: 2,\n memory: 4096,\n sandboxIdleTimeoutInSeconds: 1800,\n sandboxTtlInSeconds: 21600,\n shareConcurrencyLimitPerSandbox: 200,\n };\n\n switch (templateType) {\n case TemplateType.CODE_INTERPRETER:\n return { ...base, diskSize: 512 };\n case TemplateType.BROWSER:\n case TemplateType.AIO:\n return { ...base, cpu: 4, memory: 8192, diskSize: 10240 };\n default:\n return { ...base, diskSize: 512 };\n }\n }\n\n private validateTemplateCreateInput(input: TemplateCreateInput): void {\n if (\n (input.templateType === TemplateType.BROWSER || input.templateType === TemplateType.AIO) &&\n input.diskSize !== 10240\n ) {\n throw new Error(\n `When templateType is BROWSER or AIO, diskSize must be 10240, got ${input.diskSize}`\n );\n }\n\n if (\n (input.templateType === TemplateType.CODE_INTERPRETER ||\n input.templateType === TemplateType.AIO) &&\n input.networkConfiguration?.networkMode === TemplateNetworkMode.PRIVATE\n ) {\n throw new Error(\n `When templateType is CODE_INTERPRETER or AIO, networkMode cannot be PRIVATE`\n );\n }\n }\n}\n","/**\n * Sandbox module exports\n */\n\nimport '@/utils/version-check';\n\nexport { SandboxClient } from './client';\nexport { Sandbox } from './sandbox';\nexport { Template } from './template';\nexport { CodeInterpreterSandbox } from './code-interpreter-sandbox';\nexport { BrowserSandbox } from './browser-sandbox';\nexport { AioSandbox } from './aio-sandbox';\nexport { CustomSandbox } from './custom-sandbox';\n\n// Data API exports\nexport { SandboxDataAPI } from './api/sandbox-data';\nexport { CodeInterpreterDataAPI } from './api/code-interpreter-data';\nexport { BrowserDataAPI } from './api/browser-data';\nexport { AioDataAPI } from './api/aio-data';\n\nexport {\n TemplateType,\n SandboxState,\n TemplateNetworkMode,\n TemplateOSSPermission,\n CodeLanguage,\n} from './model';\n\nexport type {\n TemplateNetworkConfiguration,\n TemplateOssConfiguration,\n TemplateLogConfiguration,\n TemplateCredentialConfiguration,\n TemplateArmsConfiguration,\n TemplateContainerConfiguration,\n TemplateMcpOptions,\n TemplateMcpState,\n TemplateCreateInput,\n TemplateUpdateInput,\n TemplateListInput,\n SandboxCreateInput,\n SandboxListInput,\n TemplateData,\n SandboxData,\n ExecuteCodeResult,\n FileInfo,\n // New types / 新增类型\n NASConfig,\n NASMountConfig,\n OSSMountConfig,\n OSSMountPoint,\n PolarFsConfig,\n PolarFsMountConfig,\n} from './model';\n"]}
|