@codama/dynamic-address-resolution 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +22 -0
- package/README.md +155 -0
- package/dist/index.browser.cjs +1288 -0
- package/dist/index.browser.cjs.map +1 -0
- package/dist/index.browser.mjs +1278 -0
- package/dist/index.browser.mjs.map +1 -0
- package/dist/index.node.cjs +1288 -0
- package/dist/index.node.cjs.map +1 -0
- package/dist/index.node.mjs +1278 -0
- package/dist/index.node.mjs.map +1 -0
- package/dist/index.react-native.mjs +1278 -0
- package/dist/index.react-native.mjs.map +1 -0
- package/dist/types/index.d.ts +7 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/resolvers/index.d.ts +9 -0
- package/dist/types/resolvers/index.d.ts.map +1 -0
- package/dist/types/resolvers/resolve-account-address.d.ts +13 -0
- package/dist/types/resolvers/resolve-account-address.d.ts.map +1 -0
- package/dist/types/resolvers/resolve-account-value-node-address.d.ts +15 -0
- package/dist/types/resolvers/resolve-account-value-node-address.d.ts.map +1 -0
- package/dist/types/resolvers/resolve-conditional.d.ts +13 -0
- package/dist/types/resolvers/resolve-conditional.d.ts.map +1 -0
- package/dist/types/resolvers/resolve-instruction-account-address.d.ts +13 -0
- package/dist/types/resolvers/resolve-instruction-account-address.d.ts.map +1 -0
- package/dist/types/resolvers/resolve-pda-address.d.ts +13 -0
- package/dist/types/resolvers/resolve-pda-address.d.ts.map +1 -0
- package/dist/types/resolvers/resolve-standalone-pda.d.ts +8 -0
- package/dist/types/resolvers/resolve-standalone-pda.d.ts.map +1 -0
- package/dist/types/resolvers/types.d.ts +16 -0
- package/dist/types/resolvers/types.d.ts.map +1 -0
- package/dist/types/shared/address.d.ts +13 -0
- package/dist/types/shared/address.d.ts.map +1 -0
- package/dist/types/shared/bytes-encoding.d.ts +15 -0
- package/dist/types/shared/bytes-encoding.d.ts.map +1 -0
- package/dist/types/shared/codecs.d.ts +9 -0
- package/dist/types/shared/codecs.d.ts.map +1 -0
- package/dist/types/shared/nodes.d.ts +2 -0
- package/dist/types/shared/nodes.d.ts.map +1 -0
- package/dist/types/shared/types.d.ts +13 -0
- package/dist/types/shared/types.d.ts.map +1 -0
- package/dist/types/shared/util.d.ts +15 -0
- package/dist/types/shared/util.d.ts.map +1 -0
- package/dist/types/visitors/account-default-value.d.ts +16 -0
- package/dist/types/visitors/account-default-value.d.ts.map +1 -0
- package/dist/types/visitors/codec-input-transformer.d.ts +37 -0
- package/dist/types/visitors/codec-input-transformer.d.ts.map +1 -0
- package/dist/types/visitors/condition-node-value.d.ts +12 -0
- package/dist/types/visitors/condition-node-value.d.ts.map +1 -0
- package/dist/types/visitors/default-value-encoder.d.ts +16 -0
- package/dist/types/visitors/default-value-encoder.d.ts.map +1 -0
- package/dist/types/visitors/index.d.ts +7 -0
- package/dist/types/visitors/index.d.ts.map +1 -0
- package/dist/types/visitors/pda-seed-value.d.ts +20 -0
- package/dist/types/visitors/pda-seed-value.d.ts.map +1 -0
- package/dist/types/visitors/value-node-value.d.ts +14 -0
- package/dist/types/visitors/value-node-value.d.ts.map +1 -0
- package/package.json +71 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/shared/util.ts","../src/shared/address.ts","../src/resolvers/resolve-account-value-node-address.ts","../src/visitors/condition-node-value.ts","../src/visitors/value-node-value.ts","../src/resolvers/resolve-conditional.ts","../src/shared/codecs.ts","../src/shared/bytes-encoding.ts","../src/visitors/codec-input-transformer.ts","../src/visitors/pda-seed-value.ts","../src/resolvers/resolve-pda-address.ts","../src/visitors/account-default-value.ts","../src/resolvers/resolve-account-address.ts","../src/resolvers/resolve-instruction-account-address.ts","../src/resolvers/resolve-standalone-pda.ts","../src/visitors/default-value-encoder.ts","../src/shared/nodes.ts"],"names":["address","isAddress","CodamaError","CODAMA_ERROR__DYNAMIC_CLIENT__CANNOT_CONVERT_TO_ADDRESS","CODAMA_ERROR__DYNAMIC_CLIENT__NODE_REFERENCE_NOT_FOUND","CODAMA_ERROR__DYNAMIC_CLIENT__CIRCULAR_ACCOUNT_DEPENDENCY","CODAMA_ERROR__DYNAMIC_CLIENT__FAILED_TO_EXECUTE_RESOLVER","visitOrElse","CODAMA_ERROR__UNEXPECTED_NODE_KIND","isNode","CODAMA_ERROR__DYNAMIC_CLIENT__INVARIANT_VIOLATION","getAddressEncoder","getUtf8Encoder","getBooleanEncoder","getUtf8Codec","getBase16Codec","getBase58Codec","getBase64Codec","CODAMA_ERROR__UNRECOGNIZED_BYTES_ENCODING","CODAMA_ERROR__DYNAMIC_CLIENT__UNEXPECTED_ARGUMENT_TYPE","CODAMA_ERROR__LINKED_NODE_NOT_FOUND","pascalCase","CODAMA_ERROR__DYNAMIC_CLIENT__FAILED_TO_DERIVE_PDA","CODAMA_ERROR__DYNAMIC_CLIENT__ARGUMENT_MISSING","getNodeCodec","CODAMA_ERROR__UNRECOGNIZED_NODE_KIND","getProgramDerivedAddress","CODAMA_ERROR__DYNAMIC_CLIENT__UNSUPPORTED_NODE","CODAMA_ERROR__DYNAMIC_CLIENT__UNEXPECTED_ADDRESS_TYPE","CODAMA_ERROR__DYNAMIC_CLIENT__ACCOUNT_MISSING","CODAMA_ERROR__DYNAMIC_CLIENT__ACCOUNT_RESOLVER_MISSING","CODAMA_ERROR__DYNAMIC_CLIENT__INVALID_ACCOUNT_ADDRESS","CODAMA_ERROR__DYNAMIC_CLIENT__UNSUPPORTED_OPTIONAL_ACCOUNT_STRATEGY","camelCase"],"mappings":";;;;;;;;;;;AAKO,SAAS,eAAe,KAAA,EAAkD;AAC7E,EAAA,OAAO,OAAO,UAAU,QAAA,IAAY,KAAA,KAAU,QAAQ,MAAA,CAAO,cAAA,CAAe,KAAK,CAAA,KAAM,MAAA,CAAO,SAAA;AAClG;AAGO,SAAS,iBAAiB,IAAA,EAAgC;AAC7D,EAAA,IAAI,CAAC,cAAA,CAAe,IAAI,CAAA,EAAG,OAAO,IAAA;AAClC,EAAA,OAAQ,KAA4B,IAAA,IAAQ,IAAA;AAChD;AAGO,SAAS,gBAAgB,KAAA,EAAwB;AACpD,EAAA,IAAI,KAAA,KAAU,MAAM,OAAO,MAAA;AAC3B,EAAA,IAAI,MAAM,OAAA,CAAQ,KAAK,GAAG,OAAO,CAAA,cAAA,EAAiB,MAAM,MAAM,CAAA,CAAA,CAAA;AAC9D,EAAA,IAAI,KAAA,YAAiB,UAAA,EAAY,OAAO,CAAA,mBAAA,EAAsB,MAAM,MAAM,CAAA,CAAA,CAAA;AAC1E,EAAA,IAAI,OAAO,KAAA,KAAU,QAAA,EAAU,OAAO,QAAA;AACtC,EAAA,OAAO,OAAO,KAAA;AAClB;AAMO,SAAS,cAAc,KAAA,EAAwB;AAClD,EAAA,IAAI;AACA,IAAA,OAAO,IAAA,CAAK,SAAA,CAAU,KAAA,EAAO,CAAC,IAAA,EAAM,CAAA,KAAgB,OAAO,CAAA,KAAM,QAAA,GAAW,MAAA,CAAO,CAAC,CAAA,GAAI,CAAE,CAAA;AAAA,EAC9F,CAAA,CAAA,MAAQ;AACJ,IAAA,OAAO,CAAA,iBAAA,EAAoB,eAAA,CAAgB,KAAK,CAAC,CAAA,CAAA;AAAA,EACrD;AACJ;;;ACpBO,SAAS,gBAAgB,KAAA,EAAwC;AACpE,EAAA,MAAM,GAAA,GAAM,KAAA;AACZ,EAAA,OAAO,OAAO,UAAU,QAAA,IAAY,KAAA,KAAU,QAAQ,UAAA,IAAc,GAAA,IAAO,OAAO,GAAA,CAAI,QAAA,KAAa,UAAA;AACvG;AAEO,SAAS,UAAU,KAAA,EAA8B;AACpD,EAAA,IAAI,gBAAgB,KAAK,CAAA,SAAUA,iBAAA,CAAQ,KAAA,CAAM,UAAU,CAAA;AAC3D,EAAA,IAAI,OAAO,UAAU,QAAA,IAAYC,mBAAA,CAAU,KAAK,CAAA,EAAG,OAAOD,kBAAQ,KAAK,CAAA;AAEvE,EAAA,MAAM,IAAIE,mBAAYC,8DAAA,EAAyD;AAAA,IAC3E,KAAA,EAAO,cAAc,KAAK;AAAA,GAC7B,CAAA;AACL;AAEO,SAAS,qBAAqB,KAAA,EAAuC;AACxE,EAAA,IAAI,KAAA,IAAS,MAAM,OAAO,KAAA;AAC1B,EAAA,OAAO,gBAAgB,KAAK,CAAA,IAAM,OAAO,KAAA,KAAU,QAAA,IAAYF,oBAAU,KAAK,CAAA;AAClF;ACVA,eAAsB,8BAAA,CAIpB,MAAwB,GAAA,EAAmF;AACzG,EAAA,MAAM,EAAE,aAAA,EAAe,MAAA,EAAQ,cAAA,EAAe,GAAI,GAAA;AAGlD,EAAA,MAAM,eAAA,GAAkB,aAAA,GAAgB,IAAA,CAAK,IAAI,CAAA;AACjD,EAAA,IAAI,eAAA,KAAoB,MAAA,IAAa,eAAA,KAAoB,IAAA,EAAM;AAC3D,IAAA,OAAO,UAAU,eAAe,CAAA;AAAA,EACpC;AAGA,EAAA,MAAM,uBAAA,GAA0B,OAAO,QAAA,CAAS,IAAA,CAAK,SAAO,GAAA,CAAI,IAAA,KAAS,KAAK,IAAI,CAAA;AAClF,EAAA,IAAI,CAAC,uBAAA,EAAyB;AAC1B,IAAA,MAAM,IAAIC,mBAAYE,6DAAA,EAAwD;AAAA,MAC1E,iBAAiB,MAAA,CAAO,IAAA;AAAA,MACxB,gBAAgB,IAAA,CAAK;AAAA,KACxB,CAAA;AAAA,EACL;AAGA,EAAA,wBAAA,CAAyB,IAAA,CAAK,MAAM,cAAc,CAAA;AAElD,EAAA,OAAO,MAAM,qBAAA,CAAsB;AAAA,IAC/B,eAAe,GAAA,CAAI,aAAA;AAAA,IACnB,gBAAgB,GAAA,CAAI,cAAA;AAAA,IACpB,aAAA,EAAe,uBAAA;AAAA,IACf,MAAA;AAAA,IACA,cAAA,EAAgB,CAAC,GAAG,cAAA,EAAgB,KAAK,IAAI,CAAA;AAAA,IAC7C,gBAAgB,GAAA,CAAI,cAAA;AAAA,IACpB,MAAM,GAAA,CAAI;AAAA,GACb,CAAA;AACL;AAEO,SAAS,wBAAA,CAAyB,UAAkB,cAAA,EAAgC;AACvF,EAAA,IAAI,cAAA,CAAe,QAAA,CAAS,QAAQ,CAAA,EAAG;AACnC,IAAA,MAAM,IAAIF,mBAAYG,gEAAA,EAA2D;AAAA,MAC7E,OAAO,CAAC,GAAG,gBAAgB,QAAQ,CAAA,CAAE,KAAK,MAAM;AAAA,KACnD,CAAA;AAAA,EACL;AACJ;ACvDO,IAAM,mCAAA,GAAsC;AAAA,EAC/C,kBAAA;AAAA,EACA,mBAAA;AAAA,EACA;AACJ,CAAA;AAQO,SAAS,gCAId,GAAA,EAAqH;AACnH,EAAA,MAAM,EAAE,IAAA,EAAM,MAAA,EAAQ,gBAAgB,aAAA,EAAe,cAAA,EAAgB,gBAAe,GAAI,GAAA;AAExF,EAAA,OAAO;AAAA,IACH,iBAAA,EAAmB,OAAO,IAAA,KAA2B;AAGjD,MAAA,MAAM,mBAAA,GAAsB,aAAA,GAAgB,IAAA,CAAK,IAAI,CAAA;AACrD,MAAA,IAAI,wBAAwB,IAAA,EAAM;AAC9B,QAAA,OAAO,IAAA;AAAA,MACX;AAEA,MAAA,OAAO,MAAM,+BAA+B,IAAA,EAAM;AAAA,QAC9C,aAAA;AAAA,QACA,cAAA;AAAA,QACA,MAAA;AAAA,QACA,cAAA;AAAA,QACA,cAAA;AAAA,QACA;AAAA,OACH,CAAA;AAAA,IACL,CAAA;AAAA,IAEA,kBAAA,EAAoB,OAAO,IAAA,KAA4B;AACnD,MAAA,MAAM,QAAA,GAAW,cAAA,GAAiB,IAAA,CAAK,IAAI,CAAA;AAC3C,MAAA,OAAO,MAAM,OAAA,CAAQ,OAAA,CAAQ,QAAQ,CAAA;AAAA,IACzC,CAAA;AAAA,IAEA,kBAAA,EAAoB,OAAO,IAAA,KAA4B;AACnD,MAAA,MAAM,UAAA,GAAa,cAAA,GAAiB,IAAA,CAAK,IAAI,CAAA;AAC7C,MAAA,IAAI,CAAC,UAAA,EAAY;AAGb,QAAA,OAAO,MAAA;AAAA,MACX;AACA,MAAA,IAAI;AACA,QAAA,OAAO,MAAM,UAAA,CAAW,cAAA,IAAkB,EAAC,EAAG,aAAA,IAAiB,EAAE,CAAA;AAAA,MACrE,SAAS,KAAA,EAAO;AACZ,QAAA,MAAM,IAAIH,mBAAYI,+DAAA,EAA0D;AAAA,UAC5E,KAAA,EAAO,KAAA;AAAA,UACP,cAAc,IAAA,CAAK,IAAA;AAAA,UACnB,UAAA,EAAY,sBAAA;AAAA,UACZ,YAAY,IAAA,CAAK;AAAA,SACpB,CAAA;AAAA,MACL;AAAA,IACJ;AAAA,GACJ;AACJ;AC3CO,IAAM,+BAAA,GAAkC;AAAA,EAC3C,gBAAA;AAAA,EACA,kBAAA;AAAA,EACA,gBAAA;AAAA,EACA,mBAAA;AAAA,EACA,eAAA;AAAA,EACA,cAAA;AAAA,EACA,eAAA;AAAA,EACA,iBAAA;AAAA,EACA,oBAAA;AAAA,EACA,cAAA;AAAA,EACA,eAAA;AAAA,EACA,iBAAA;AAAA,EACA,iBAAA;AAAA,EACA;AACJ,CAAA;AAOO,SAAS,sBAAA,GAA6E;AACzF,EAAA,MAAM,OAAA,GAA8D;AAAA,IAChE,eAAA,EAAiB,CAAC,IAAA,MAA0B;AAAA,MACxC,MAAM,IAAA,CAAK,IAAA;AAAA,MACX,KAAA,EAAO,KAAK,KAAA,CAAM,GAAA;AAAA,QAAI,CAAA,IAAA,KAClBC,kBAAA,CAAY,IAAA,EAAM,OAAA,EAAS,CAAA,CAAA,KAAK;AAC5B,UAAA,MAAM,IAAIL,mBAAYM,yCAAA,EAAoC;AAAA,YACtD,aAAA,EAAe,CAAC,GAAG,+BAA+B,CAAA;AAAA,YAClD,MAAM,CAAA,CAAE,IAAA;AAAA,YACR,IAAA,EAAM;AAAA,WACT,CAAA;AAAA,QACL,CAAC;AAAA;AACL,KACJ,CAAA;AAAA,IAEA,iBAAA,EAAmB,CAAC,IAAA,MAA4B;AAAA,MAC5C,MAAM,IAAA,CAAK,IAAA;AAAA,MACX,OAAO,IAAA,CAAK;AAAA,KAChB,CAAA;AAAA,IAEA,eAAA,EAAiB,CAAC,IAAA,MAA0B;AAAA,MACxC,UAAU,IAAA,CAAK,QAAA;AAAA,MACf,MAAM,IAAA,CAAK,IAAA;AAAA,MACX,OAAO,IAAA,CAAK;AAAA,KAChB,CAAA;AAAA,IAEA,kBAAA,EAAoB,CAAC,IAAA,KAA4B;AAC7C,MAAA,OAAOD,kBAAA,CAAY,IAAA,CAAK,KAAA,EAAO,OAAA,EAAS,CAAA,SAAA,KAAa;AACjD,QAAA,MAAM,IAAIL,mBAAYM,yCAAA,EAAoC;AAAA,UACtD,aAAA,EAAe,CAAC,GAAG,+BAA+B,CAAA;AAAA,UAClD,MAAM,SAAA,CAAU,IAAA;AAAA,UAChB,IAAA,EAAM;AAAA,SACT,CAAA;AAAA,MACL,CAAC,CAAA;AAAA,IACL,CAAA;AAAA,IAEA,cAAA,EAAgB,CAAC,IAAA,MAAyB;AAAA,MACtC,MAAM,IAAA,CAAK,IAAA;AAAA,MACX,OAAO,IAAA,CAAK;AAAA,KAChB,CAAA;AAAA,IAEA,aAAA,EAAe,CAAC,IAAA,MAAwB;AAAA,MACpC,MAAM,IAAA,CAAK,IAAA;AAAA,MACX,KAAA,EAAO,IAAA,CAAK,OAAA,CAAQ,GAAA,CAAI,CAAA,KAAA,MAAU;AAAA,QAC9B,GAAA,EAAKD,kBAAA,CAAY,KAAA,CAAM,GAAA,EAAK,SAAS,CAAA,CAAA,KAAK;AACtC,UAAA,MAAM,IAAIL,mBAAYM,yCAAA,EAAoC;AAAA,YACtD,aAAA,EAAe,CAAC,GAAG,+BAA+B,CAAA;AAAA,YAClD,MAAM,CAAA,CAAE,IAAA;AAAA,YACR,IAAA,EAAM;AAAA,WACT,CAAA;AAAA,QACL,CAAC,CAAA;AAAA,QACD,KAAA,EAAOD,kBAAA,CAAY,KAAA,CAAM,KAAA,EAAO,SAAS,CAAA,CAAA,KAAK;AAC1C,UAAA,MAAM,IAAIL,mBAAYM,yCAAA,EAAoC;AAAA,YACtD,aAAA,EAAe,CAAC,GAAG,+BAA+B,CAAA;AAAA,YAClD,MAAM,CAAA,CAAE,IAAA;AAAA,YACR,IAAA,EAAM;AAAA,WACT,CAAA;AAAA,QACL,CAAC;AAAA,OACL,CAAE;AAAA,KACN,CAAA;AAAA,IAEA,cAAA,EAAgB,CAAC,IAAA,MAAyB;AAAA,MACtC,MAAM,IAAA,CAAK,IAAA;AAAA,MACX,KAAA,EAAO;AAAA,KACX,CAAA;AAAA,IAEA,gBAAA,EAAkB,CAAC,IAAA,MAA2B;AAAA,MAC1C,MAAM,IAAA,CAAK,IAAA;AAAA,MACX,OAAO,IAAA,CAAK;AAAA,KAChB,CAAA;AAAA,IAEA,mBAAA,EAAqB,CAAC,IAAA,MAA8B;AAAA,MAChD,MAAM,IAAA,CAAK,IAAA;AAAA,MACX,KAAA,EAAOR,iBAAAA,CAAQ,IAAA,CAAK,SAAS;AAAA,KACjC,CAAA;AAAA,IAEA,aAAA,EAAe,CAAC,IAAA,MAAwB;AAAA,MACpC,MAAM,IAAA,CAAK,IAAA;AAAA,MACX,KAAA,EAAO,KAAK,KAAA,CAAM,GAAA;AAAA,QAAI,CAAA,IAAA,KAClBO,kBAAA,CAAY,IAAA,EAAM,OAAA,EAAS,CAAA,CAAA,KAAK;AAC5B,UAAA,MAAM,IAAIL,mBAAYM,yCAAA,EAAoC;AAAA,YACtD,aAAA,EAAe,CAAC,GAAG,+BAA+B,CAAA;AAAA,YAClD,MAAM,CAAA,CAAE,IAAA;AAAA,YACR,IAAA,EAAM;AAAA,WACT,CAAA;AAAA,QACL,CAAC;AAAA;AACL,KACJ,CAAA;AAAA,IAEA,cAAA,EAAgB,CAAC,IAAA,KAAwB;AACrC,MAAA,OAAOD,kBAAA,CAAY,IAAA,CAAK,KAAA,EAAO,OAAA,EAAS,CAAA,SAAA,KAAa;AACjD,QAAA,MAAM,IAAIL,mBAAYM,yCAAA,EAAoC;AAAA,UACtD,aAAA,EAAe,CAAC,GAAG,+BAA+B,CAAA;AAAA,UAClD,MAAM,SAAA,CAAU,IAAA;AAAA,UAChB,IAAA,EAAM;AAAA,SACT,CAAA;AAAA,MACL,CAAC,CAAA;AAAA,IACL,CAAA;AAAA,IAEA,gBAAA,EAAkB,CAAC,IAAA,MAA2B;AAAA,MAC1C,MAAM,IAAA,CAAK,IAAA;AAAA,MACX,OAAO,IAAA,CAAK;AAAA,KAChB,CAAA;AAAA,IAEA,gBAAA,EAAkB,CAAC,IAAA,MAA2B;AAAA,MAC1C,MAAM,IAAA,CAAK,IAAA;AAAA,MACX,OAAO,MAAA,CAAO,WAAA;AAAA,QACV,IAAA,CAAK,MAAA,CAAO,GAAA,CAAI,CAAA,KAAA,KAAS;AAAA,UACrB,KAAA,CAAM,IAAA;AAAA,UACND,kBAAA,CAAY,KAAA,CAAM,KAAA,EAAO,OAAA,EAAS,CAAA,CAAA,KAAK;AACnC,YAAA,MAAM,IAAIL,mBAAYM,yCAAA,EAAoC;AAAA,cACtD,aAAA,EAAe,CAAC,GAAG,+BAA+B,CAAA;AAAA,cAClD,MAAM,CAAA,CAAE,IAAA;AAAA,cACR,IAAA,EAAM;AAAA,aACT,CAAA;AAAA,UACL,CAAC;AAAA,SACJ;AAAA;AACL,KACJ,CAAA;AAAA,IAEA,eAAA,EAAiB,CAAC,IAAA,MAA0B;AAAA,MACxC,MAAM,IAAA,CAAK,IAAA;AAAA,MACX,KAAA,EAAO,KAAK,KAAA,CAAM,GAAA;AAAA,QAAI,CAAA,IAAA,KAClBD,kBAAA,CAAY,IAAA,EAAM,OAAA,EAAS,CAAA,CAAA,KAAK;AAC5B,UAAA,MAAM,IAAIL,mBAAYM,yCAAA,EAAoC;AAAA,YACtD,aAAA,EAAe,CAAC,GAAG,+BAA+B,CAAA;AAAA,YAClD,MAAM,CAAA,CAAE,IAAA;AAAA,YACR,IAAA,EAAM;AAAA,WACT,CAAA;AAAA,QACL,CAAC;AAAA;AACL,KACJ;AAAA,GACJ;AAEA,EAAA,OAAO,OAAA;AACX;;;AC7JA,eAAsB,oCAAA,CAIpB;AAAA,EACE,IAAA;AAAA,EACA,MAAA;AAAA,EACA,aAAA;AAAA,EACA,oBAAA;AAAA,EACA,cAAA;AAAA,EACA,aAAA;AAAA,EACA,cAAA;AAAA,EACA;AACJ,CAAA,EAA4G;AACxG,EAAA,IAAI,CAACC,aAAA,CAAO,oBAAA,EAAsB,sBAAsB,CAAA,EAAG;AACvD,IAAA,MAAM,IAAIP,mBAAYM,yCAAAA,EAAoC;AAAA,MACtD,aAAA,EAAe,CAAC,sBAAsB,CAAA;AAAA,MACtC,IAAA,EAAM,iBAAiB,oBAAoB,CAAA;AAAA,MAC3C,IAAA,EAAM;AAAA,KACT,CAAA;AAAA,EACL;AACA,EAAA,MAAM,EAAE,SAAA,EAAW,KAAA,EAAO,iBAAA,EAAmB,MAAA,EAAQ,SAAQ,GAAI,oBAAA;AAEjE,EAAA,IAAI,CAAC,iBAAA,IAAqB,CAAC,MAAA,IAAU,CAAC,OAAA,EAAS;AAC3C,IAAA,MAAM,IAAIN,mBAAYQ,wDAAA,EAAmD;AAAA,MACrE,SAAS,CAAA,qEAAA,EAAwE,aAAA,CAAc,IAAI,CAAA,IAAA,EAAO,OAAO,IAAI,CAAA;AAAA,KACxH,CAAA;AAAA,EACL;AAGA,EAAA,MAAM,mBAAmB,+BAAA,CAAgC;AAAA,IACrD,aAAA;AAAA,IACA,cAAA;AAAA,IACA,MAAA;AAAA,IACA,cAAA;AAAA,IACA,cAAA;AAAA,IACA;AAAA,GACH,CAAA;AACD,EAAA,MAAM,mBAAA,GAAsB,MAAMH,kBAAAA,CAAY,SAAA,EAAW,kBAAkB,CAAA,QAAA,KAAY;AACnF,IAAA,MAAM,IAAIL,mBAAYM,yCAAAA,EAAoC;AAAA,MACtD,aAAA,EAAe,CAAC,GAAG,mCAAmC,CAAA;AAAA,MACtD,MAAM,QAAA,CAAS,IAAA;AAAA,MACf,IAAA,EAAM;AAAA,KACT,CAAA;AAAA,EACL,CAAC,CAAA;AAED,EAAA,IAAI,CAAC,iBAAA,EAAmB;AACpB,IAAA,OAAO,sBAAsB,MAAA,GAAS,OAAA;AAAA,EAC1C;AAGA,EAAA,MAAM,eAAe,sBAAA,EAAuB;AAC5C,EAAA,MAAM,aAAA,GAAgBD,kBAAAA,CAAY,iBAAA,EAAmB,YAAA,EAAc,CAAA,SAAA,KAAa;AAC5E,IAAA,MAAM,IAAIL,mBAAYM,yCAAAA,EAAoC;AAAA,MACtD,aAAA,EAAe,CAAC,GAAG,+BAA+B,CAAA;AAAA,MAClD,MAAM,SAAA,CAAU,IAAA;AAAA,MAChB,IAAA,EAAM;AAAA,KACT,CAAA;AAAA,EACL,CAAC,CAAA;AAED,EAAA,IAAI,OAAO,aAAA,CAAc,KAAA,KAAU,QAAA,IAAY,OAAO,wBAAwB,QAAA,EAAU;AACpF,IAAA,MAAM,IAAIN,mBAAYQ,wDAAA,EAAmD;AAAA,MACrE,OAAA,EAAS;AAAA,KACZ,CAAA;AAAA,EACL;AAEA,EAAA,OAAO,mBAAA,KAAwB,aAAA,CAAc,KAAA,GAAQ,MAAA,GAAS,OAAA;AAClE;ACjFA,IAAI,cAAA;AACG,SAAS,yBAAA,GAA4B;AACxC,EAAA,IAAI,CAAC,cAAA,EAAgB,cAAA,GAAiBC,2BAAA,EAAkB;AACxD,EAAA,OAAO,cAAA;AACX;AAEA,IAAI,WAAA;AACG,SAAS,sBAAA,GAAyB;AACrC,EAAA,IAAI,CAAC,WAAA,EAAa,WAAA,GAAcC,qBAAA,EAAe;AAC/C,EAAA,OAAO,WAAA;AACX;AAEA,IAAI,cAAA;AACG,SAAS,yBAAA,GAA4B;AACxC,EAAA,IAAI,CAAC,cAAA,EAAgB,cAAA,GAAiBC,wBAAA,EAAkB;AACxD,EAAA,OAAO,cAAA;AACX;AAEA,IAAI,SAAA;AACG,SAAS,oBAAA,GAAuB;AACnC,EAAA,IAAI,CAAC,SAAA,EAAW,SAAA,GAAYC,mBAAA,EAAa;AACzC,EAAA,OAAO,SAAA;AACX;AAEA,IAAI,WAAA;AACG,SAAS,sBAAA,GAAyB;AACrC,EAAA,IAAI,CAAC,WAAA,EAAa,WAAA,GAAcC,qBAAA,EAAe;AAC/C,EAAA,OAAO,WAAA;AACX;AAEA,IAAI,WAAA;AACG,SAAS,sBAAA,GAAyB;AACrC,EAAA,IAAI,CAAC,WAAA,EAAa,WAAA,GAAcC,qBAAA,EAAe;AAC/C,EAAA,OAAO,WAAA;AACX;AAEA,IAAI,WAAA;AACG,SAAS,sBAAA,GAAyB;AACrC,EAAA,IAAI,CAAC,WAAA,EAAa,WAAA,GAAcC,qBAAA,EAAe;AAC/C,EAAA,OAAO,WAAA;AACX;;;AC3CO,SAAS,yBAAA,CAA0B,OAAmB,QAAA,EAAiC;AAC1F,EAAA,MAAM,KAAA,GAAQ,0BAA0B,QAAQ,CAAA;AAChD,EAAA,OAAO,KAAA,CAAM,OAAO,KAAK,CAAA;AAC7B;AAKO,SAAS,0BAA0B,QAAA,EAAyB;AAC/D,EAAA,QAAQ,QAAA;AAAU,IACd,KAAK,QAAA;AACD,MAAA,OAAO,sBAAA,EAAuB;AAAA,IAClC,KAAK,QAAA;AACD,MAAA,OAAO,sBAAA,EAAuB;AAAA,IAClC,KAAK,QAAA;AACD,MAAA,OAAO,sBAAA,EAAuB;AAAA,IAClC,KAAK,MAAA;AACD,MAAA,OAAO,oBAAA,EAAqB;AAAA,IAChC;AACI,MAAA,MAAM,IAAIf,mBAAYgB,gDAAA,EAA2C;AAAA,QAC7D,QAAA,EAAU,cAAc,QAAmB;AAAA,OAC9C,CAAA;AAAA;AAEb;AAIO,SAAS,aAAa,KAAA,EAAqC;AAC9D,EAAA,OAAO,KAAA,YAAiB,UAAA;AAC5B;ACvBO,IAAM,4CAAA,GAA+C;AAAA,EACxD,gBAAA;AAAA,EACA,eAAA;AAAA,EACA,iBAAA;AAAA,EACA,eAAA;AAAA,EACA,kBAAA;AAAA,EACA,qBAAA;AAAA,EACA,cAAA;AAAA,EACA,mBAAA;AAAA,EACA,sBAAA;AAAA,EACA,sBAAA;AAAA,EACA,aAAA;AAAA,EACA,gBAAA;AAAA,EACA,gBAAA;AAAA,EACA,oBAAA;AAAA,EACA,mBAAA;AAAA,EACA,mBAAA;AAAA,EACA,yBAAA;AAAA,EACA,kBAAA;AAAA,EACA,aAAA;AAAA,EACA,oBAAA;AAAA,EACA,mBAAA;AAAA,EACA,gBAAA;AAAA,EACA,qBAAA;AAAA,EACA,gBAAA;AAAA,EACA,eAAA;AAAA,EACA;AACJ,CAAA;AAaA,SAAS,uBAAuB,IAAA,EAAmB;AAC/C,EAAA,MAAM,IAAIhB,mBAAYM,yCAAAA,EAAoC;AAAA,IACtD,aAAA,EAAe,CAAC,GAAG,4CAA4C,CAAA;AAAA,IAC/D,MAAM,IAAA,CAAK,IAAA;AAAA,IACX;AAAA,GACH,CAAA;AACL;AAEO,SAAS,kCAAA,CACZ,IAAA,EACA,OAAA,GAAwC,EAAC,EACgB;AACzD,EAAA,MAAM,aAAA,GAAgB,QAAQ,aAAA,IAAiB,QAAA;AAE/C,EAAA,MAAM,OAAA,GAAqE;AAAA,IACvE,gBAAgB,IAAA,EAAM;AAClB,MAAA,OAAOD,kBAAAA,CAAY,IAAA,CAAK,MAAA,EAAQ,OAAA,EAAS,sBAAsB,CAAA;AAAA,IACnE,CAAA;AAAA,IAEA,eAAe,IAAA,EAAM;AACjB,MAAA,MAAM,aAAA,GAAgBA,kBAAAA,CAAY,IAAA,CAAK,IAAA,EAAM,SAAS,sBAAsB,CAAA;AAC5E,MAAA,OAAO,CAAC,KAAA,KAAmB;AACvB,QAAA,IAAI,CAAC,KAAA,CAAM,OAAA,CAAQ,KAAK,CAAA,EAAG;AACvB,UAAA,MAAM,IAAIL,mBAAYiB,6DAAA,EAAwD;AAAA,YAC1E,UAAA,EAAY,gBAAgB,KAAK,CAAA;AAAA,YACjC,YAAA,EAAc,OAAA;AAAA,YACd,QAAA,EAAU;AAAA,WACb,CAAA;AAAA,QACL;AACA,QAAA,OAAO,KAAA,CAAM,IAAI,aAAa,CAAA;AAAA,MAClC,CAAA;AAAA,IACJ,CAAA;AAAA,IAEA,gBAAA,GAAmB;AACf,MAAA,OAAO,CAAC,KAAA,KAAmB,KAAA;AAAA,IAC/B,CAAA;AAAA,IAEA,cAAA,GAAiB;AACb,MAAA,OAAO,CAAC,KAAA,KAAmB;AACvB,QAAA,IAAI,YAAA,CAAa,KAAK,CAAA,EAAG;AACrB,UAAA,OAAO,CAAC,aAAA,EAAe,yBAAA,CAA0B,KAAA,EAAO,aAAa,CAAC,CAAA;AAAA,QAC1E;AAEA,QAAA,IAAI,KAAA,CAAM,OAAA,CAAQ,KAAK,CAAA,IAAK,KAAA,CAAM,MAAM,CAAA,IAAA,KAAQ,OAAO,IAAA,KAAS,QAAQ,CAAA,EAAG;AACvE,UAAA,OAAO,CAAC,eAAe,yBAAA,CAA0B,IAAI,WAAW,KAAK,CAAA,EAAG,aAAa,CAAC,CAAA;AAAA,QAC1F;AACA,QAAA,MAAM,IAAIjB,mBAAYiB,6DAAA,EAAwD;AAAA,UAC1E,UAAA,EAAY,gBAAgB,KAAK,CAAA;AAAA,UACjC,YAAA,EAAc,uBAAA;AAAA,UACd,QAAA,EAAU;AAAA,SACb,CAAA;AAAA,MACL,CAAA;AAAA,IACJ,CAAA;AAAA,IAEA,kBAAkB,IAAA,EAAM;AACpB,MAAA,OAAOZ,kBAAAA,CAAY,IAAA,CAAK,MAAA,EAAQ,OAAA,EAAS,sBAAsB,CAAA;AAAA,IACnE,CAAA;AAAA,IAEA,qBAAqB,IAAA,EAAM;AACvB,MAAA,MAAM,WAAA,GAAc,KAAK,OAAA,CAAQ,YAAA,CAAa,KAAK,CAAA,EAAA,KAAM,EAAA,CAAG,IAAA,KAAS,IAAA,CAAK,IAAI,CAAA;AAC9E,MAAA,IAAI,CAAC,WAAA,EAAa;AACd,QAAA,MAAM,IAAIL,mBAAYkB,0CAAA,EAAqC;AAAA,UACvD,IAAA,EAAM,qBAAA;AAAA,UACN,QAAA,EAAU,IAAA;AAAA,UACV,MAAM,IAAA,CAAK,IAAA;AAAA,UACX,MAAM;AAAC,SACV,CAAA;AAAA,MACL;AACA,MAAA,OAAOb,kBAAAA,CAAY,WAAA,CAAY,IAAA,EAAM,OAAA,EAAS,sBAAsB,CAAA;AAAA,IACxE,CAAA;AAAA,IAEA,cAAc,IAAA,EAAM;AAKhB,MAAA,OAAO,CAAC,KAAA,KAAmB;AACvB,QAAA,IAAI,OAAO,KAAA,KAAU,QAAA,IAAY,OAAO,UAAU,QAAA,EAAU;AACxD,UAAA,OAAO,KAAA;AAAA,QACX;AAEA,QAAA,IAAI,CAAC,cAAA,CAAe,KAAK,CAAA,EAAG;AACxB,UAAA,OAAO,KAAA;AAAA,QACX;AAEA,QAAA,IAAI,EAAE,YAAY,KAAA,CAAA,EAAQ;AACtB,UAAA,OAAO,KAAA;AAAA,QACX;AAEA,QAAA,MAAM,EAAE,MAAA,EAAQ,GAAG,IAAA,EAAK,GAAI,KAAA;AAC5B,QAAA,MAAM,UAAU,EAAE,MAAA,EAAQc,kBAAW,MAAA,CAAO,MAAM,CAAC,CAAA,EAAE;AACrD,QAAA,MAAM,cAAc,IAAA,CAAK,QAAA,CAAS,KAAK,CAAA,CAAA,KAAK,CAAA,CAAE,SAAS,MAAM,CAAA;AAE7D,QAAA,IAAI,CAAC,WAAA,EAAa;AACd,UAAA,MAAM,iBAAA,GAAoB,KAAK,QAAA,CAAS,GAAA,CAAI,OAAK,CAAA,CAAE,IAAI,CAAA,CAAE,IAAA,CAAK,IAAI,CAAA;AAClE,UAAA,MAAM,IAAInB,mBAAYiB,6DAAA,EAAwD;AAAA,YAC1E,UAAA,EAAY,CAAA,SAAA,EAAY,MAAA,CAAO,MAAM,CAAC,CAAA,CAAA,CAAA;AAAA,YACtC,YAAA,EAAc,WAAW,iBAAiB,CAAA,CAAA,CAAA;AAAA,YAC1C,QAAA,EAAU;AAAA,WACb,CAAA;AAAA,QACL;AAEA,QAAA,IAAIV,aAAAA,CAAO,WAAA,EAAa,0BAA0B,CAAA,EAAG;AACjD,UAAA,OAAO,EAAE,GAAG,KAAA,EAAO,GAAG,OAAA,EAAQ;AAAA,QAClC;AAEA,QAAA,IAAIA,aAAAA,CAAO,WAAA,EAAa,2BAA2B,CAAA,EAAG;AAClD,UAAA,MAAM,eAAA,GAAkBF,kBAAAA,CAAY,WAAA,CAAY,MAAA,EAAQ,SAAS,sBAAsB,CAAA;AACvF,UAAA,MAAM,iBAAA,GAAoB,gBAAgB,IAAI,CAAA;AAC9C,UAAA,IAAI,CAAC,cAAA,CAAe,iBAAiB,CAAA,EAAG;AACpC,YAAA,MAAM,IAAIL,mBAAYiB,6DAAA,EAAwD;AAAA,cAC1E,UAAA,EAAY,gBAAgB,iBAAiB,CAAA;AAAA,cAC7C,YAAA,EAAc,QAAA;AAAA,cACd,QAAA,EAAU;AAAA,aACb,CAAA;AAAA,UACL;AACA,UAAA,OAAO,EAAE,GAAG,OAAA,EAAS,GAAG,iBAAA,EAAkB;AAAA,QAC9C;AAEA,QAAA,IAAIV,aAAAA,CAAO,WAAA,EAAa,0BAA0B,CAAA,EAAG;AACjD,UAAA,MAAM,cAAA,GAAiBF,kBAAAA,CAAY,WAAA,CAAY,KAAA,EAAO,SAAS,sBAAsB,CAAA;AACrF,UAAA,IAAI,EAAE,YAAY,IAAA,CAAA,IAAS,CAAC,MAAM,OAAA,CAAQ,IAAA,CAAK,MAAM,CAAA,EAAG;AACpD,YAAA,MAAM,IAAIL,mBAAYiB,6DAAA,EAAwD;AAAA,cAC1E,UAAA,EAAY,eAAA,CAAgB,IAAA,CAAK,MAAA,IAAU,IAAI,CAAA;AAAA,cAC/C,YAAA,EAAc,gBAAA;AAAA,cACd,QAAA,EAAU;AAAA,aACb,CAAA;AAAA,UACL;AACA,UAAA,OAAO,EAAE,GAAG,OAAA,EAAS,QAAQ,cAAA,CAAe,IAAA,CAAK,MAAM,CAAA,EAAE;AAAA,QAC7D;AAEA,QAAA,OAAO,KAAA;AAAA,MACX,CAAA;AAAA,IACJ,CAAA;AAAA,IAEA,mBAAmB,IAAA,EAAM;AACrB,MAAA,OAAOZ,kBAAAA,CAAY,IAAA,CAAK,IAAA,EAAM,OAAA,EAAS,sBAAsB,CAAA;AAAA,IACjE,CAAA;AAAA,IAEA,sBAAsB,IAAA,EAAM;AACxB,MAAA,OAAOA,kBAAAA,CAAY,IAAA,CAAK,IAAA,EAAM,OAAA,EAAS,sBAAsB,CAAA;AAAA,IACjE,CAAA;AAAA,IAEA,sBAAsB,IAAA,EAAM;AACxB,MAAA,OAAOA,kBAAAA,CAAY,IAAA,CAAK,IAAA,EAAM,OAAA,EAAS,sBAAsB,CAAA;AAAA,IACjE,CAAA;AAAA,IAEA,aAAa,IAAA,EAAM;AAEf,MAAA,MAAM,cAAA,GAAiBA,kBAAAA,CAAY,IAAA,CAAK,KAAA,EAAO,SAAS,sBAAsB,CAAA;AAC9E,MAAA,OAAO,CAAC,KAAA,KAAmB;AACvB,QAAA,IAAI,CAAC,cAAA,CAAe,KAAK,CAAA,EAAG;AACxB,UAAA,MAAM,IAAIL,mBAAYiB,6DAAA,EAAwD;AAAA,YAC1E,UAAA,EAAY,gBAAgB,KAAK,CAAA;AAAA,YACjC,YAAA,EAAc,QAAA;AAAA,YACd,QAAA,EAAU;AAAA,WACb,CAAA;AAAA,QACL;AACA,QAAA,MAAM,SAAkC,EAAC;AACzC,QAAA,KAAA,MAAW,CAAC,GAAA,EAAK,KAAK,KAAK,MAAA,CAAO,OAAA,CAAQ,KAAK,CAAA,EAAG;AAC9C,UAAA,MAAA,CAAO,GAAG,CAAA,GAAI,cAAA,CAAe,KAAK,CAAA;AAAA,QACtC;AACA,QAAA,OAAO,MAAA;AAAA,MACX,CAAA;AAAA,IACJ,CAAA;AAAA;AAAA,IAGA,eAAA,GAAkB;AACd,MAAA,OAAO,CAAC,KAAA,KAAmB,KAAA;AAAA,IAC/B,CAAA;AAAA,IAEA,gBAAgB,IAAA,EAAM;AAClB,MAAA,MAAM,cAAA,GAAiBZ,kBAAAA,CAAY,IAAA,CAAK,IAAA,EAAM,SAAS,sBAAsB,CAAA;AAC7E,MAAA,OAAO,CAAC,KAAA,KAAmB;AACvB,QAAA,IAAI,KAAA,KAAU,IAAA,IAAQ,KAAA,KAAU,MAAA,EAAW,OAAO,KAAA;AAClD,QAAA,OAAO,eAAe,KAAK,CAAA;AAAA,MAC/B,CAAA;AAAA,IACJ,CAAA;AAAA,IAEA,oBAAoB,IAAA,EAAM;AACtB,MAAA,OAAOA,kBAAAA,CAAY,IAAA,CAAK,IAAA,EAAM,OAAA,EAAS,sBAAsB,CAAA;AAAA,IACjE,CAAA;AAAA,IAEA,mBAAmB,IAAA,EAAM;AACrB,MAAA,OAAOA,kBAAAA,CAAY,IAAA,CAAK,IAAA,EAAM,OAAA,EAAS,sBAAsB,CAAA;AAAA,IACjE,CAAA;AAAA,IAEA,kBAAA,GAAqB;AACjB,MAAA,OAAO,CAAC,KAAA,KAAmB,KAAA;AAAA,IAC/B,CAAA;AAAA,IAEA,yBAAyB,IAAA,EAAM;AAC3B,MAAA,MAAM,cAAA,GAAiBA,kBAAAA,CAAY,IAAA,CAAK,IAAA,EAAM,SAAS,sBAAsB,CAAA;AAC7E,MAAA,OAAO,CAAC,KAAA,KAAmB;AACvB,QAAA,IAAI,KAAA,KAAU,IAAA,IAAQ,KAAA,KAAU,MAAA,EAAW,OAAO,KAAA;AAClD,QAAA,OAAO,eAAe,KAAK,CAAA;AAAA,MAC/B,CAAA;AAAA,IACJ,CAAA;AAAA,IAEA,kBAAkB,IAAA,EAAM;AACpB,MAAA,OAAOA,kBAAAA,CAAY,IAAA,CAAK,IAAA,EAAM,OAAA,EAAS,sBAAsB,CAAA;AAAA,IACjE,CAAA;AAAA,IAEA,aAAa,IAAA,EAAM;AAEf,MAAA,MAAM,aAAA,GAAgBA,kBAAAA,CAAY,IAAA,CAAK,IAAA,EAAM,SAAS,sBAAsB,CAAA;AAC5E,MAAA,OAAO,CAAC,KAAA,KAAmB;AACvB,QAAA,IAAI,CAAC,KAAA,CAAM,OAAA,CAAQ,KAAK,CAAA,EAAG;AACvB,UAAA,MAAM,IAAIL,mBAAYiB,6DAAA,EAAwD;AAAA,YAC1E,UAAA,EAAY,gBAAgB,KAAK,CAAA;AAAA,YACjC,YAAA,EAAc,OAAA;AAAA,YACd,QAAA,EAAU;AAAA,WACb,CAAA;AAAA,QACL;AACA,QAAA,OAAO,KAAA,CAAM,IAAI,aAAa,CAAA;AAAA,MAClC,CAAA;AAAA,IACJ,CAAA;AAAA,IAEA,oBAAoB,IAAA,EAAM;AACtB,MAAA,OAAOZ,kBAAAA,CAAY,IAAA,CAAK,IAAA,EAAM,OAAA,EAAS,sBAAsB,CAAA;AAAA,IACjE,CAAA;AAAA,IAEA,mBAAmB,IAAA,EAAM;AACrB,MAAA,OAAOA,kBAAAA,CAAY,IAAA,CAAK,MAAA,EAAQ,OAAA,EAAS,sBAAsB,CAAA;AAAA,IACnE,CAAA;AAAA,IAEA,eAAA,GAAkB;AACd,MAAA,OAAO,CAAC,KAAA,KAAmB,KAAA;AAAA,IAC/B,CAAA;AAAA,IAEA,qBAAqB,IAAA,EAAM;AACvB,MAAA,OAAOA,kBAAAA,CAAY,IAAA,CAAK,IAAA,EAAM,OAAA,EAAS,sBAAsB,CAAA;AAAA,IACjE,CAAA;AAAA,IAEA,gBAAgB,IAAA,EAAM;AAClB,MAAA,MAAM,iBAAA,GAAoB,IAAA,CAAK,MAAA,CAAO,GAAA,CAAI,CAAA,KAAA,KAAS;AAC/C,QAAA,MAAM,SAAA,GAAYA,kBAAAA,CAAY,KAAA,EAAO,OAAA,EAAS,sBAAsB,CAAA;AACpE,QAAA,OAAO,EAAE,IAAA,EAAM,KAAA,CAAM,IAAA,EAAM,SAAA,EAAU;AAAA,MACzC,CAAC,CAAA;AACD,MAAA,OAAO,CAAC,KAAA,KAAmB;AACvB,QAAA,IAAI,CAAC,cAAA,CAAe,KAAK,CAAA,EAAG;AACxB,UAAA,MAAM,IAAIL,mBAAYiB,6DAAA,EAAwD;AAAA,YAC1E,UAAA,EAAY,gBAAgB,KAAK,CAAA;AAAA,YACjC,YAAA,EAAc,QAAA;AAAA,YACd,QAAA,EAAU;AAAA,WACb,CAAA;AAAA,QACL;AACA,QAAA,MAAM,MAAA,GAAS,EAAE,GAAG,KAAA,EAAM;AAC1B,QAAA,KAAA,MAAW,EAAE,IAAA,EAAM,SAAA,EAAU,IAAK,iBAAA,EAAmB;AACjD,UAAA,IAAI,QAAQ,MAAA,EAAQ;AAChB,YAAA,MAAA,CAAO,IAAI,CAAA,GAAI,SAAA,CAAU,MAAA,CAAO,IAAI,CAAC,CAAA;AAAA,UACzC;AAAA,QACJ;AACA,QAAA,OAAO,MAAA;AAAA,MACX,CAAA;AAAA,IACJ,CAAA;AAAA,IAEA,eAAe,IAAA,EAAM;AACjB,MAAA,MAAM,cAAA,GAAiB,KAAK,KAAA,CAAM,GAAA,CAAI,UAAQZ,kBAAAA,CAAY,IAAA,EAAM,OAAA,EAAS,sBAAsB,CAAC,CAAA;AAChG,MAAA,OAAO,CAAC,KAAA,KAAmB;AACvB,QAAA,IAAI,CAAC,KAAA,CAAM,OAAA,CAAQ,KAAK,CAAA,EAAG;AACvB,UAAA,MAAM,IAAIL,mBAAYiB,6DAAA,EAAwD;AAAA,YAC1E,UAAA,EAAY,gBAAgB,KAAK,CAAA;AAAA,YACjC,YAAA,EAAc,OAAA;AAAA,YACd,QAAA,EAAU;AAAA,WACb,CAAA;AAAA,QACL;AACA,QAAA,IAAI,KAAA,CAAM,MAAA,KAAW,cAAA,CAAe,MAAA,EAAQ;AACxC,UAAA,MAAM,IAAIjB,mBAAYiB,6DAAA,EAAwD;AAAA,YAC1E,UAAA,EAAY,CAAA,aAAA,EAAgB,KAAA,CAAM,MAAM,CAAA,CAAA,CAAA;AAAA,YACxC,YAAA,EAAc,CAAA,aAAA,EAAgB,cAAA,CAAe,MAAM,CAAA,CAAA,CAAA;AAAA,YACnD,QAAA,EAAU;AAAA,WACb,CAAA;AAAA,QACL;AACA,QAAA,OAAO,KAAA,CAAM,IAAI,CAAC,KAAA,EAAgB,UAAU,cAAA,CAAe,KAAK,CAAA,CAAE,KAAK,CAAC,CAAA;AAAA,MAC5E,CAAA;AAAA,IACJ,CAAA;AAAA,IAEA,wBAAwB,IAAA,EAAM;AAC1B,MAAA,MAAM,cAAA,GAAiBZ,kBAAAA,CAAY,IAAA,CAAK,IAAA,EAAM,SAAS,sBAAsB,CAAA;AAC7E,MAAA,OAAO,CAAC,KAAA,KAAmB;AACvB,QAAA,IAAI,KAAA,KAAU,IAAA,IAAQ,KAAA,KAAU,MAAA,EAAW,OAAO,KAAA;AAClD,QAAA,OAAO,eAAe,KAAK,CAAA;AAAA,MAC/B,CAAA;AAAA,IACJ;AAAA,GACJ;AAEA,EAAA,OAAO,OAAA;AACX;AAsBO,SAAS,2BAAA,CACZ,QAAA,EACA,IAAA,EACA,OAAA,EACqB;AACrB,EAAA,MAAM,OAAA,GAAU,kCAAA,CAAmC,IAAA,EAAM,OAAO,CAAA;AAChE,EAAA,OAAOA,kBAAAA,CAAY,QAAA,EAAU,OAAA,EAAS,sBAAsB,CAAA;AAChE;;;AClVO,IAAM,mCAAA,GAAsC;AAAA,EAC/C,kBAAA;AAAA,EACA,mBAAA;AAAA,EACA,kBAAA;AAAA,EACA,gBAAA;AAAA,EACA,mBAAA;AAAA,EACA,eAAA;AAAA,EACA,iBAAA;AAAA,EACA,oBAAA;AAAA,EACA,oBAAA;AAAA,EACA,eAAA;AAAA,EACA;AACJ,CAAA;AAgBO,SAAS,0BACZ,GAAA,EACmE;AACnE,EAAA,MAAM,EAAE,IAAA,EAAM,MAAA,EAAQ,WAAW,YAAA,EAAc,cAAA,EAAgB,gBAAe,GAAI,GAAA;AAClF,EAAA,MAAM,aAAA,GAAgB,GAAA,CAAI,aAAA,IAAiB,EAAC;AAC5C,EAAA,MAAM,cAAA,GAAiB,GAAA,CAAI,cAAA,IAAkB,EAAC;AAE9C,EAAA,OAAO;AAAA,IACH,iBAAA,EAAmB,OAAO,IAAA,KAA2B;AACjD,MAAA,MAAM,eAAA,GAAkB,MAAM,8BAAA,CAA+B,IAAA,EAAM;AAAA,QAC/D,aAAA;AAAA,QACA,cAAA;AAAA,QACA,MAAA;AAAA,QACA,cAAA;AAAA,QACA,cAAA;AAAA,QACA;AAAA,OACH,CAAA;AAED,MAAA,IAAI,oBAAoB,IAAA,EAAM;AAC1B,QAAA,MAAM,IAAIL,mBAAYoB,yDAAA,EAAoD;AAAA,UACtE,aAAa,IAAA,CAAK;AAAA,SACrB,CAAA;AAAA,MACL;AAEA,MAAA,OAAO,yBAAA,EAA0B,CAAE,MAAA,CAAO,eAAe,CAAA;AAAA,IAC7D,CAAA;AAAA,IAEA,kBAAA,EAAoB,OAAO,IAAA,KAA4B;AACnD,MAAA,MAAM,cAAA,GAAiB,OAAO,SAAA,CAAU,IAAA,CAAK,SAAO,GAAA,CAAI,IAAA,KAAS,KAAK,IAAI,CAAA;AAC1E,MAAA,IAAI,CAAC,cAAA,EAAgB;AACjB,QAAA,MAAM,IAAIpB,mBAAYE,6DAAAA,EAAwD;AAAA,UAC1E,iBAAiB,MAAA,CAAO,IAAA;AAAA,UACxB,gBAAgB,IAAA,CAAK;AAAA,SACxB,CAAA;AAAA,MACL;AACA,MAAA,MAAM,QAAA,GAAW,cAAA,CAAe,IAAA,CAAK,IAAI,CAAA;AAKzC,MAAA,MAAM,QAAA,GAAW,gBAAgB,cAAA,CAAe,IAAA;AAEhD,MAAA,IAAI,QAAA,KAAa,MAAA,IAAa,QAAA,KAAa,IAAA,EAAM;AAE7C,QAAA,IAAIK,aAAAA,CAAO,QAAA,EAAU,yBAAyB,CAAA,EAAG;AAC7C,UAAA,OAAO,IAAI,WAAW,CAAC,CAAA;AAAA,QAC3B;AACA,QAAA,MAAM,IAAIP,mBAAYqB,qDAAA,EAAgD;AAAA,UAClE,cAAc,IAAA,CAAK,IAAA;AAAA,UACnB,iBAAiB,MAAA,CAAO;AAAA,SAC3B,CAAA;AAAA,MACL;AACA,MAAA,MAAM,KAAA,GAAQC,0BAAA,CAAa,CAAC,IAAA,EAAM,IAAA,CAAK,OAAA,EAAS,MAAA,EAAQ,EAAE,GAAG,cAAA,EAAgB,IAAA,EAAM,QAAA,EAAU,CAAC,CAAA;AAC9F,MAAA,MAAM,WAAA,GAAc,2BAAA,CAA4B,QAAA,EAAU,IAAA,EAAM;AAAA,QAC5D,aAAA,EAAe;AAAA,OAClB,CAAA;AACD,MAAA,MAAM,gBAAA,GAAmB,YAAY,QAAQ,CAAA;AAC7C,MAAA,OAAO,MAAM,OAAA,CAAQ,OAAA,CAAQ,KAAA,CAAM,MAAA,CAAO,gBAAgB,CAAC,CAAA;AAAA,IAC/D,CAAA;AAAA,IAEA,iBAAA,EAAmB,OAAO,IAAA,KACtB,MAAM,OAAA,CAAQ,OAAA,CAAQ,yBAAA,EAA0B,CAAE,MAAA,CAAO,IAAA,CAAK,OAAO,CAAC,CAAA;AAAA,IAE1E,eAAA,EAAiB,OAAO,IAAA,KAAyB;AAC7C,MAAA,MAAM,eAAe,yBAAA,CAA0B,IAAA,CAAK,QAAQ,CAAA,CAAE,MAAA,CAAO,KAAK,IAAI,CAAA;AAC9E,MAAA,OAAO,MAAM,OAAA,CAAQ,OAAA,CAAQ,YAAY,CAAA;AAAA,IAC7C,CAAA;AAAA,IAEA,kBAAA,EAAoB,OAAO,IAAA,KAA4B;AACnD,MAAA,MAAM,YAAA,GAAe,0BAA0B,GAAG,CAAA;AAClD,MAAA,OAAO,MAAMjB,kBAAAA,CAAY,IAAA,CAAK,KAAA,EAAO,cAAc,CAAA,SAAA,KAAa;AAC5D,QAAA,MAAM,IAAIL,mBAAYM,yCAAAA,EAAoC;AAAA,UACtD,aAAA,EAAe,CAAC,GAAG,mCAAmC,CAAA;AAAA,UACtD,MAAM,SAAA,CAAU,IAAA;AAAA,UAChB,IAAA,EAAM;AAAA,SACT,CAAA;AAAA,MACL,CAAC,CAAA;AAAA,IACL,CAAA;AAAA,IAEA,cAAA,EAAgB,OAAO,KAAA,KAAyB,MAAM,QAAQ,OAAA,CAAQ,IAAI,UAAA,CAAW,CAAC,CAAC,CAAA;AAAA,IAEvF,gBAAA,EAAkB,OAAO,IAAA,KAA0B;AAE/C,MAAA,IAAI,CAAC,MAAA,CAAO,SAAA,CAAU,IAAA,CAAK,MAAM,CAAA,IAAK,IAAA,CAAK,MAAA,GAAS,CAAA,IAAK,IAAA,CAAK,MAAA,GAAS,GAAA,EAAM;AACzE,QAAA,MAAM,IAAIN,mBAAYQ,wDAAAA,EAAmD;AAAA,UACrE,OAAA,EAAS,CAAA,+EAAA,EAA6E,IAAA,CAAK,MAAM,CAAA;AAAA,SACpG,CAAA;AAAA,MACL;AACA,MAAA,OAAO,MAAM,QAAQ,OAAA,CAAQ,IAAI,WAAW,CAAC,IAAA,CAAK,MAAM,CAAC,CAAC,CAAA;AAAA,IAC9D,CAAA;AAAA,IAEA,mBAAA,EAAqB,OAAO,KAAA,KAA8B;AACtD,MAAA,OAAO,MAAM,QAAQ,OAAA,CAAQ,yBAAA,GAA4B,MAAA,CAAO,SAAA,CAAU,SAAS,CAAC,CAAC,CAAA;AAAA,IACzF,CAAA;AAAA,IAEA,mBAAA,EAAqB,OAAO,IAAA,KAA6B;AACrD,MAAA,OAAO,MAAM,OAAA,CAAQ,OAAA,CAAQ,yBAAA,EAA0B,CAAE,OAAO,SAAA,CAAU,IAAA,CAAK,SAAS,CAAC,CAAC,CAAA;AAAA,IAC9F,CAAA;AAAA,IAEA,cAAA,EAAgB,OAAO,IAAA,KAAwB;AAC3C,MAAA,MAAM,YAAA,GAAe,0BAA0B,GAAG,CAAA;AAClD,MAAA,OAAO,MAAMH,kBAAAA,CAAY,IAAA,CAAK,KAAA,EAAO,cAAc,CAAA,SAAA,KAAa;AAC5D,QAAA,MAAM,IAAIL,mBAAYM,yCAAAA,EAAoC;AAAA,UACtD,aAAA,EAAe,CAAC,GAAG,mCAAmC,CAAA;AAAA,UACtD,MAAM,SAAA,CAAU,IAAA;AAAA,UAChB,IAAA,EAAM;AAAA,SACT,CAAA;AAAA,MACL,CAAC,CAAA;AAAA,IACL,CAAA;AAAA,IAEA,gBAAA,EAAkB,OAAO,IAAA,KACrB,MAAM,OAAA,CAAQ,OAAA,CAAQ,oBAAA,EAAqB,CAAE,MAAA,CAAO,IAAA,CAAK,MAAM,CAAC;AAAA,GACxE;AACJ;;;ACjJA,eAAsB,iBAAA,CAIpB;AAAA,EACE,IAAA;AAAA,EACA,MAAA;AAAA,EACA,cAAA;AAAA,EACA,aAAA;AAAA,EACA,YAAA;AAAA,EACA,cAAA;AAAA,EACA;AACJ,CAAA,EAAkG;AAC9F,EAAA,IAAI,CAACC,aAAAA,CAAO,YAAA,EAAc,cAAc,CAAA,EAAG;AACvC,IAAA,MAAM,IAAIP,mBAAYM,yCAAAA,EAAoC;AAAA,MACtD,aAAA,EAAe,CAAC,cAAc,CAAA;AAAA,MAC9B,IAAA,EAAM,iBAAiB,YAAY,CAAA;AAAA,MACnC,IAAA,EAAM;AAAA,KACT,CAAA;AAAA,EACL;AAEA,EAAA,MAAM,OAAA,GAAU,cAAA,CAAe,YAAA,EAAc,IAAA,CAAK,QAAQ,IAAI,CAAA;AAC9D,EAAA,MAAM,YAAYR,iBAAAA,CAAQ,OAAA,CAAQ,SAAA,IAAa,IAAA,CAAK,QAAQ,SAAS,CAAA;AAErE,EAAA,MAAM,UAAA,GAAa,MAAM,OAAA,CAAQ,GAAA;AAAA,IAC7B,OAAA,CAAQ,KAAA,CAAM,GAAA,CAAI,OAAM,QAAA,KAAY;AAChC,MAAA,IAAI,QAAA,CAAS,SAAS,qBAAA,EAAuB;AACzC,QAAA,OAAO,MAAM,sBAAA,CAAuB;AAAA,UAChC,aAAA;AAAA,UACA,cAAA;AAAA,UACA,MAAA;AAAA,UACA,SAAA;AAAA,UACA,cAAA;AAAA,UACA,cAAA;AAAA,UACA,IAAA;AAAA,UACA;AAAA,SACH,CAAA;AAAA,MACL;AAEA,MAAA,IAAI,QAAA,CAAS,SAAS,qBAAA,EAAuB;AACzC,QAAA,MAAM,yBAAyB,YAAA,CAAa,KAAA;AAC5C,QAAA,MAAM,WAAW,QAAA,CAAS,IAAA;AAC1B,QAAA,MAAM,wBAAwB,sBAAA,CAAuB,IAAA,CAAK,CAAA,IAAA,KAAQ,IAAA,CAAK,SAAS,QAAQ,CAAA;AAExF,QAAA,IAAI,CAAC,qBAAA,EAAuB;AACxB,UAAA,MAAM,IAAIE,mBAAYE,6DAAAA,EAAwD;AAAA,YAC1E,iBAAiB,MAAA,CAAO,IAAA;AAAA,YACxB,cAAA,EAAgB;AAAA,WACnB,CAAA;AAAA,QACL;AAEA,QAAA,OAAO,MAAM,sBAAA,CAAuB;AAAA,UAChC,aAAA;AAAA,UACA,cAAA;AAAA,UACA,MAAA;AAAA,UACA,SAAA;AAAA,UACA,cAAA;AAAA,UACA,cAAA;AAAA,UACA,IAAA;AAAA,UACA,QAAA;AAAA,UACA;AAAA,SACH,CAAA;AAAA,MACL;AAEA,MAAA,MAAM,IAAIF,mBAAYuB,2CAAA,EAAsC;AAAA,QACxD,IAAA,EAAM,gBAAA,CAAiB,QAAQ,CAAA,IAAK;AAAA,OACvC,CAAA;AAAA,IACL,CAAC;AAAA,GACL;AAEA,EAAA,OAAO,MAAMC,kCAAA,CAAyB;AAAA,IAClC,cAAA,EAAgB,SAAA;AAAA,IAChB,KAAA,EAAO;AAAA,GACV,CAAA;AACL;AAEA,SAAS,cAAA,CAAe,iBAA+B,IAAA,EAA0B;AAC7E,EAAA,IAAIjB,aAAAA,CAAO,eAAA,CAAgB,GAAA,EAAK,aAAa,CAAA,EAAG;AAC5C,IAAA,MAAM,SAAA,GAAY,KAAK,IAAA,CAAK,CAAA,CAAA,KAAK,EAAE,IAAA,KAAS,eAAA,CAAgB,IAAI,IAAI,CAAA;AACpE,IAAA,IAAI,CAAC,SAAA,EAAW;AACZ,MAAA,MAAM,IAAIP,mBAAYkB,0CAAAA,EAAqC;AAAA,QACvD,IAAA,EAAM,aAAA;AAAA,QACN,UAAU,eAAA,CAAgB,GAAA;AAAA,QAC1B,IAAA,EAAM,gBAAgB,GAAA,CAAI,IAAA;AAAA,QAC1B,MAAM;AAAC,OACV,CAAA;AAAA,IACL;AACA,IAAA,OAAO,SAAA;AAAA,EACX;AAEA,EAAA,IAAIX,aAAAA,CAAO,eAAA,CAAgB,GAAA,EAAK,SAAS,CAAA,EAAG;AACxC,IAAA,OAAO,eAAA,CAAgB,GAAA;AAAA,EAC3B;AAEA,EAAA,MAAM,IAAIP,mBAAYM,yCAAAA,EAAoC;AAAA,IACtD,aAAA,EAAe,CAAC,aAAA,EAAe,SAAS,CAAA;AAAA,IACxC,IAAA,EAAM,gBAAA,CAAiB,eAAA,CAAgB,GAAG,CAAA;AAAA,IAC1C,MAAM,eAAA,CAAgB;AAAA,GACzB,CAAA;AACL;AAWA,SAAS,sBAAA,CAIP;AAAA,EACE,aAAA;AAAA,EACA,cAAA;AAAA,EACA,MAAA;AAAA,EACA,SAAA;AAAA,EACA,cAAA;AAAA,EACA,cAAA;AAAA,EACA,IAAA;AAAA,EACA,QAAA;AAAA,EACA;AACJ,CAAA,EAAqF;AACjF,EAAA,IAAI,CAACC,aAAAA,CAAO,qBAAA,EAAuB,kBAAkB,CAAA,EAAG;AACpD,IAAA,MAAM,IAAIP,mBAAYM,yCAAAA,EAAoC;AAAA,MACtD,aAAA,EAAe,CAAC,kBAAkB,CAAA;AAAA,MAClC,IAAA,EAAM,iBAAiB,qBAAqB,CAAA;AAAA,MAC5C,IAAA,EAAM;AAAA,KACT,CAAA;AAAA,EACL;AAEA,EAAA,IAAI,QAAA,CAAS,IAAA,KAAS,qBAAA,CAAsB,IAAA,EAAM;AAE9C,IAAA,MAAM,IAAIN,mBAAYQ,wDAAAA,EAAmD;AAAA,MACrE,SAAS,CAAA,qCAAA,EAAwC,QAAA,CAAS,IAAI,CAAA,QAAA,EAAW,sBAAsB,IAAI,CAAA,CAAA;AAAA,KACtG,CAAA;AAAA,EACL;AAEA,EAAA,MAAM,UAAU,yBAAA,CAA0B;AAAA,IACtC,aAAA;AAAA,IACA,cAAA;AAAA,IACA,MAAA;AAAA,IACA,SAAA;AAAA,IACA,cAAA;AAAA,IACA,cAAA;AAAA,IACA,IAAA;AAAA,IACA,cAAc,QAAA,CAAS;AAAA,GAC1B,CAAA;AAED,EAAA,OAAOH,kBAAAA,CAAY,qBAAA,CAAsB,KAAA,EAAO,OAAA,EAAS,CAAA,IAAA,KAAQ;AAC7D,IAAA,MAAM,IAAIL,mBAAYM,yCAAAA,EAAoC;AAAA,MACtD,aAAA,EAAe,CAAC,GAAG,mCAAmC,CAAA;AAAA,MACtD,MAAM,IAAA,CAAK,IAAA;AAAA,MACX;AAAA,KACH,CAAA;AAAA,EACL,CAAC,CAAA;AACL;AAUA,SAAS,sBAAA,CAIP;AAAA,EACE,aAAA;AAAA,EACA,cAAA;AAAA,EACA,MAAA;AAAA,EACA,SAAA;AAAA,EACA,cAAA;AAAA,EACA,cAAA;AAAA,EACA,IAAA;AAAA,EACA;AACJ,CAAA,EAA6F;AACzF,EAAA,IAAI,CAACC,aAAAA,CAAO,QAAA,EAAU,qBAAqB,CAAA,EAAG;AAC1C,IAAA,MAAM,IAAIP,mBAAYM,yCAAAA,EAAoC;AAAA,MACtD,aAAA,EAAe,CAAC,qBAAqB,CAAA;AAAA,MACrC,MAAM,QAAA,CAAS,IAAA;AAAA,MACf,IAAA,EAAM;AAAA,KACT,CAAA;AAAA,EACL;AAEA,EAAA,MAAM,UAAU,yBAAA,CAA0B;AAAA,IACtC,aAAA;AAAA,IACA,cAAA;AAAA,IACA,MAAA;AAAA,IACA,SAAA;AAAA,IACA,cAAA;AAAA,IACA,cAAA;AAAA,IACA,IAAA;AAAA,IACA,cAAc,QAAA,CAAS;AAAA,GAC1B,CAAA;AACD,EAAA,OAAOD,kBAAAA,CAAY,QAAA,CAAS,KAAA,EAAO,OAAA,EAAS,CAAA,IAAA,KAAQ;AAChD,IAAA,MAAM,IAAIL,mBAAYM,yCAAAA,EAAoC;AAAA,MACtD,aAAA,EAAe,CAAC,GAAG,mCAAmC,CAAA;AAAA,MACtD,MAAM,IAAA,CAAK,IAAA;AAAA,MACX;AAAA,KACH,CAAA;AAAA,EACL,CAAC,CAAA;AACL;;;AChMO,IAAM,0CAAA,GAA6C;AAAA,EACtD,sBAAA;AAAA,EACA,kBAAA;AAAA,EACA,mBAAA;AAAA,EACA,sBAAA;AAAA,EACA,mBAAA;AAAA,EACA,gBAAA;AAAA,EACA,cAAA;AAAA,EACA,oBAAA;AAAA,EACA,oBAAA;AAAA,EACA;AACJ,CAAA;AAOO,SAAS,iCAKZ,GAAA,EACsE;AACtE,EAAA,MAAM,EAAE,MAAM,MAAA,EAAQ,aAAA,EAAe,gBAAgB,aAAA,EAAe,cAAA,EAAgB,gBAAe,GAAI,GAAA;AACvG,EAAA,MAAM,mBAAA,GAAsB,aAAA,GAAgB,aAAA,CAAc,IAAI,CAAA;AAE9D,EAAA,OAAO;AAAA,IACH,qBAAA,EAAuB,OAAO,KAAA,KAAgC;AAC1D,MAAA,OAAO,MAAM,OAAA,CAAQ,MAAA;AAAA,QACjB,IAAIN,mBAAYyB,qDAAA,EAAgD;AAAA,UAC5D,QAAA,EAAU;AAAA,SACb;AAAA,OACL;AAAA,IACJ,CAAA;AAAA,IAEA,iBAAA,EAAmB,OAAO,IAAA,KAA2B;AACjD,MAAA,OAAO,MAAM,+BAA+B,IAAA,EAAM;AAAA,QAC9C,aAAA;AAAA,QACA,cAAA;AAAA,QACA,MAAA;AAAA,QACA,cAAA;AAAA,QACA,cAAA;AAAA,QACA;AAAA,OACH,CAAA;AAAA,IACL,CAAA;AAAA,IAEA,kBAAA,EAAoB,OAAO,IAAA,KAA4B;AACnD,MAAA,MAAM,QAAA,GAAW,cAAA,GAAiB,IAAA,CAAK,IAAI,CAAA;AAC3C,MAAA,IAAI,QAAA,KAAa,MAAA,IAAa,QAAA,KAAa,IAAA,EAAM;AAC7C,QAAA,MAAM,IAAIzB,mBAAYqB,qDAAAA,EAAgD;AAAA,UAClE,cAAc,IAAA,CAAK,IAAA;AAAA,UACnB,iBAAiB,MAAA,CAAO;AAAA,SAC3B,CAAA;AAAA,MACL;AAEA,MAAA,IAAI,CAAC,oBAAA,CAAqB,QAAQ,CAAA,EAAG;AACjC,QAAA,MAAM,IAAIrB,mBAAY0B,4DAAA,EAAuD;AAAA,UACzE,aAAa,aAAA,CAAc,IAAA;AAAA,UAC3B,UAAA,EAAY,gBAAgB,QAAQ,CAAA;AAAA,UACpC,YAAA,EAAc;AAAA,SACjB,CAAA;AAAA,MACL;AAEA,MAAA,OAAO,MAAM,OAAA,CAAQ,OAAA,CAAQ,SAAA,CAAU,QAAQ,CAAC,CAAA;AAAA,IACpD,CAAA;AAAA,IAEA,qBAAA,EAAuB,OAAO,oBAAA,KAA+C;AAEzE,MAAA,MAAM,sBAAA,GAAyB,MAAM,oCAAA,CAAqC;AAAA,QACtE,aAAA;AAAA,QACA,cAAA;AAAA,QACA,oBAAA;AAAA,QACA,aAAA;AAAA,QACA,MAAA;AAAA,QACA,cAAA;AAAA,QACA,cAAA;AAAA,QACA;AAAA,OACH,CAAA;AAED,MAAA,IAAI,2BAA2B,MAAA,EAAW;AAGtC,QAAA,IAAI,cAAc,UAAA,EAAY;AAC1B,UAAA,OAAO,IAAA;AAAA,QACX;AACA,QAAA,MAAM,IAAI1B,mBAAY2B,oDAAA,EAA+C;AAAA,UACjE,aAAa,aAAA,CAAc,IAAA;AAAA,UAC3B,iBAAiB,MAAA,CAAO;AAAA,SAC3B,CAAA;AAAA,MACL;AAEA,MAAA,MAAM,OAAA,GAAU,iCAAiC,GAAG,CAAA;AACpD,MAAA,MAAM,YAAA,GAAe,MAAMtB,kBAAAA,CAAY,sBAAA,EAAwB,SAAS,CAAA,SAAA,KAAa;AACjF,QAAA,MAAM,IAAIL,mBAAYM,yCAAAA,EAAoC;AAAA,UACtD,aAAA,EAAe,CAAC,GAAG,0CAA0C,CAAA;AAAA,UAC7D,MAAM,SAAA,CAAU,IAAA;AAAA,UAChB,IAAA,EAAM;AAAA,SACT,CAAA;AAAA,MACL,CAAC,CAAA;AACD,MAAA,OAAO,YAAA;AAAA,IACX,CAAA;AAAA,IAEA,kBAAA,EAAoB,OAAO,KAAA,KAA6B;AACpD,MAAA,IAAI,mBAAA,KAAwB,MAAA,IAAa,mBAAA,KAAwB,IAAA,EAAM;AACnE,QAAA,MAAM,IAAIN,mBAAY2B,oDAAA,EAA+C;AAAA,UACjE,aAAa,aAAA,CAAc,IAAA;AAAA,UAC3B,iBAAiB,MAAA,CAAO;AAAA,SAC3B,CAAA;AAAA,MACL;AACA,MAAA,OAAO,MAAM,OAAA,CAAQ,OAAA,CAAQ,SAAA,CAAU,mBAAmB,CAAC,CAAA;AAAA,IAC/D,CAAA;AAAA,IAEA,eAAA,EAAiB,OAAO,KAAA,KAA0B;AAC9C,MAAA,IAAI,mBAAA,KAAwB,MAAA,IAAa,mBAAA,KAAwB,IAAA,EAAM;AACnE,QAAA,MAAM,IAAI3B,mBAAY2B,oDAAA,EAA+C;AAAA,UACjE,aAAa,aAAA,CAAc,IAAA;AAAA,UAC3B,iBAAiB,MAAA,CAAO;AAAA,SAC3B,CAAA;AAAA,MACL;AACA,MAAA,OAAO,MAAM,OAAA,CAAQ,OAAA,CAAQ,SAAA,CAAU,mBAAmB,CAAC,CAAA;AAAA,IAC/D,CAAA;AAAA,IAEA,aAAA,EAAe,OAAO,IAAA,KAAuB;AACzC,MAAA,MAAM,GAAA,GAAM,MAAM,iBAAA,CAAkB;AAAA,QAChC,aAAA;AAAA,QACA,cAAA;AAAA,QACA,MAAA;AAAA,QACA,YAAA,EAAc,IAAA;AAAA,QACd,cAAA;AAAA,QACA,cAAA;AAAA,QACA;AAAA,OACH,CAAA;AACD,MAAA,IAAI,QAAQ,IAAA,EAAM;AACd,QAAA,MAAM,IAAI3B,mBAAYoB,yDAAAA,EAAoD;AAAA,UACtE,aAAa,aAAA,CAAc;AAAA,SAC9B,CAAA;AAAA,MACL;AACA,MAAA,OAAO,IAAI,CAAC,CAAA;AAAA,IAChB,CAAA;AAAA,IAEA,mBAAA,EAAqB,OAAO,KAAA,KAA8B;AACtD,MAAA,OAAO,MAAM,OAAA,CAAQ,OAAA,CAAQtB,kBAAQ,IAAA,CAAK,OAAA,CAAQ,SAAS,CAAC,CAAA;AAAA,IAChE,CAAA;AAAA,IAEA,mBAAA,EAAqB,OAAO,IAAA,KAA6B;AACrD,MAAA,OAAO,MAAM,OAAA,CAAQ,OAAA,CAAQA,iBAAAA,CAAQ,IAAA,CAAK,SAAS,CAAC,CAAA;AAAA,IACxD,CAAA;AAAA,IAEA,kBAAA,EAAoB,OAAO,IAAA,KAA4B;AACnD,MAAA,MAAM,UAAA,GAAa,cAAA,GAAiB,IAAA,CAAK,IAAI,CAAA;AAC7C,MAAA,IAAI,CAAC,UAAA,EAAY;AACb,QAAA,MAAM,IAAIE,mBAAY4B,6DAAA,EAAwD;AAAA,UAC1E,aAAa,aAAA,CAAc,IAAA;AAAA,UAC3B,cAAc,IAAA,CAAK;AAAA,SACtB,CAAA;AAAA,MACL;AACA,MAAA,IAAI,MAAA;AACJ,MAAA,IAAI;AACA,QAAA,MAAA,GAAS,MAAM,UAAA,CAAW,cAAA,IAAkB,EAAC,EAAG,aAAA,IAAiB,EAAE,CAAA;AAAA,MACvE,SAAS,KAAA,EAAO;AACZ,QAAA,MAAM,IAAI5B,mBAAYI,+DAAAA,EAA0D;AAAA,UAC5E,KAAA,EAAO,KAAA;AAAA,UACP,cAAc,IAAA,CAAK,IAAA;AAAA,UACnB,UAAA,EAAY,wBAAA;AAAA,UACZ,YAAY,aAAA,CAAc;AAAA,SAC7B,CAAA;AAAA,MACL;AAEA,MAAA,IAAI,CAAC,oBAAA,CAAqB,MAAM,CAAA,EAAG;AAC/B,QAAA,MAAM,IAAIJ,mBAAY6B,4DAAA,EAAuD;AAAA,UACzE,aAAa,aAAA,CAAc,IAAA;AAAA,UAC3B,KAAA,EAAO,cAAc,MAAM;AAAA,SAC9B,CAAA;AAAA,MACL;AAEA,MAAA,OAAO,UAAU,MAAM,CAAA;AAAA,IAC3B;AAAA,GACJ;AACJ;;;ACnMA,eAAsB,qBAAA,CAIpB;AAAA,EACE,IAAA;AAAA,EACA,MAAA;AAAA,EACA,aAAA;AAAA,EACA,cAAA;AAAA,EACA,aAAA;AAAA,EACA,cAAA;AAAA,EACA;AACJ,CAAA,EAAwF;AACpF,EAAA,MAAM,mBAAA,GAAsB,aAAA,GAAgB,aAAA,CAAc,IAAI,CAAA;AAE9D,EAAA,IAAI,mBAAA,KAAwB,IAAA,IAAQ,aAAA,CAAc,UAAA,EAAY;AAC1D,IAAA,OAAO,kCAAA,CAAmC,IAAA,EAAM,MAAA,EAAQ,aAAa,CAAA;AAAA,EACzE;AAEA,EAAA,IAAI,cAAc,YAAA,EAAc;AAC5B,IAAA,MAAM,UAAU,gCAAA,CAAiC;AAAA,MAC7C,aAAA;AAAA,MACA,cAAA;AAAA,MACA,aAAA;AAAA,MACA,MAAA;AAAA,MACA,cAAA;AAAA,MACA,cAAA;AAAA,MACA;AAAA,KACH,CAAA;AAED,IAAA,MAAM,eAAe,MAAMxB,kBAAAA,CAAY,aAAA,CAAc,YAAA,EAAc,SAAS,CAAA,IAAA,KAAQ;AAChF,MAAA,MAAM,IAAIL,mBAAYM,yCAAAA,EAAoC;AAAA,QACtD,aAAA,EAAe,CAAC,GAAG,0CAA0C,CAAA;AAAA,QAC7D,MAAM,IAAA,CAAK,IAAA;AAAA,QACX;AAAA,OACH,CAAA;AAAA,IACL,CAAC,CAAA;AAID,IAAA,IAAI,YAAA,KAAiB,IAAA,IAAQ,aAAA,CAAc,UAAA,EAAY;AACnD,MAAA,OAAO,kCAAA,CAAmC,IAAA,EAAM,MAAA,EAAQ,aAAa,CAAA;AAAA,IACzE;AAEA,IAAA,OAAO,YAAA;AAAA,EACX;AAEA,EAAA,MAAM,IAAIN,mBAAY2B,oDAAAA,EAA+C;AAAA,IACjE,aAAa,aAAA,CAAc,IAAA;AAAA,IAC3B,iBAAiB,MAAA,CAAO;AAAA,GAC3B,CAAA;AACL;AAOA,SAAS,kCAAA,CACL,IAAA,EACA,MAAA,EACA,aAAA,EACF;AACE,EAAA,IAAI,CAAC,cAAc,UAAA,EAAY;AAC3B,IAAA,MAAM,IAAI3B,mBAAYQ,wDAAAA,EAAmD;AAAA,MACrE,OAAA,EAAS,CAAA,oEAAA,EAAuE,aAAA,CAAc,IAAI,CAAA;AAAA,KACrG,CAAA;AAAA,EACL;AACA,EAAA,QAAQ,OAAO,uBAAA;AAAyB,IACpC,KAAK,SAAA;AACD,MAAA,OAAO,IAAA;AAAA,IACX,KAAK,WAAA;AACD,MAAA,OAAO,SAAA,CAAU,IAAA,CAAK,OAAA,CAAQ,SAAS,CAAA;AAAA,IAC3C;AACI,MAAA,MAAM,IAAIR,mBAAY8B,0EAAA,EAAqE;AAAA,QACvF,aAAa,aAAA,CAAc,IAAA;AAAA,QAC3B,iBAAiB,MAAA,CAAO,IAAA;AAAA,QACxB,QAAA,EAAU,aAAA,CAAc,MAAA,CAAO,uBAAuB;AAAA,OACzD,CAAA;AAAA;AAEb;AC1FA,eAAsB,gCAAA,CAIpB;AAAA,EACE,aAAA;AAAA,EACA,cAAA;AAAA,EACA,aAAA;AAAA,EACA,MAAA;AAAA,EACA,cAAA;AAAA,EACA;AACJ,CAAA,EAAiG;AAC7F,EAAA,MAAM,mBAAA,GAAsB,aAAA,GAAgB,aAAA,CAAc,IAAI,CAAA;AAC9D,EAAA,MAAM,iBAAA,GAAoB,mBAAA,KAAwB,MAAA,IAAa,mBAAA,KAAwB,IAAA;AAYvF,EAAA,MAAM,iBAAiB,CAAC,CAAC,cAAc,YAAA,IAAiB,aAAA,CAAc,cAAc,mBAAA,KAAwB,IAAA;AAE5G,EAAA,IAAI,CAAC,iBAAA,IAAqB,CAAC,cAAA,EAAgB;AACvC,IAAA,MAAM,IAAI9B,mBAAY2B,oDAAAA,EAA+C;AAAA,MACjE,aAAa,aAAA,CAAc,IAAA;AAAA,MAC3B,iBAAiB,MAAA,CAAO;AAAA,KAC3B,CAAA;AAAA,EACL;AAEA,EAAA,IAAI,iBAAA,EAAmB;AACnB,IAAA,OAAO,UAAU,mBAAmB,CAAA;AAAA,EACxC;AAEA,EAAA,OAAO,MAAM,qBAAA,CAAsB;AAAA,IAC/B,aAAA;AAAA,IACA,cAAA;AAAA,IACA,aAAA;AAAA,IACA,MAAA;AAAA,IACA,gBAAgB,EAAC;AAAA,IACjB,cAAA;AAAA,IACA;AAAA,GACH,CAAA;AACL;AC5CA,IAAM,kBAAA,GAAsC;AAAA,EACxC,UAAU,EAAC;AAAA,EACX,WAAW,EAAC;AAAA,EACZ,IAAA,EAAM,iBAAA;AAAA,EACN,IAAA,EAAM;AACV,CAAA;AAMA,eAAsB,oBAAA,CAClB,IAAA,EACA,OAAA,EACA,UAAA,GAAsC,EAAC,EACT;AAC9B,EAAA,MAAM,iBAAiB,SAAA,CAAU,OAAA,CAAQ,SAAA,IAAa,IAAA,CAAK,QAAQ,SAAS,CAAA;AAC5E,EAAA,MAAM,UAAA,GAAa,MAAM,OAAA,CAAQ,GAAA;AAAA,IAC7B,OAAA,CAAQ,KAAA,CAAM,GAAA,CAAI,OAAO,QAAA,KAA0C;AAC/D,MAAA,IAAI,QAAA,CAAS,SAAS,qBAAA,EAAuB;AACzC,QAAA,OAAO,MAAM,6BAAA,CAA8B,IAAA,EAAM,cAAA,EAAgB,QAAQ,CAAA;AAAA,MAC7E;AACA,MAAA,IAAI,QAAA,CAAS,SAAS,qBAAA,EAAuB;AACzC,QAAA,OAAO,MAAM,6BAAA,CAA8B,IAAA,EAAM,QAAA,EAAU,UAAU,CAAA;AAAA,MACzE;AACA,MAAA,MAAM,IAAI3B,mBAAYuB,2CAAAA,EAAsC;AAAA,QACxD,IAAA,EAAM,gBAAA,CAAiB,QAAQ,CAAA,IAAK;AAAA,OACvC,CAAA;AAAA,IACL,CAAC;AAAA,GACL;AAEA,EAAA,OAAO,MAAMC,kCAAAA,CAAyB,EAAE,cAAA,EAAgB,KAAA,EAAO,YAAY,CAAA;AAC/E;AAEA,SAAS,6BAAA,CACL,IAAA,EACA,cAAA,EACA,QAAA,EAC2B;AAC3B,EAAA,IAAI,CAACjB,aAAAA,CAAO,QAAA,EAAU,qBAAqB,CAAA,EAAG;AAC1C,IAAA,MAAM,IAAIP,mBAAYM,yCAAAA,EAAoC;AAAA,MACtD,aAAA,EAAe,CAAC,qBAAqB,CAAA;AAAA,MACrC,MAAM,QAAA,CAAS,IAAA;AAAA,MACf,IAAA,EAAM;AAAA,KACT,CAAA;AAAA,EACL;AACA,EAAA,MAAM,UAAU,yBAAA,CAA0B;AAAA,IACtC,aAAA,EAAe,MAAA;AAAA,IACf,cAAA,EAAgB,MAAA;AAAA,IAChB,MAAA,EAAQ,kBAAA;AAAA,IACR,SAAA,EAAW,cAAA;AAAA,IACX,gBAAgB,EAAC;AAAA,IACjB,cAAA,EAAgB,MAAA;AAAA,IAChB;AAAA,GACH,CAAA;AACD,EAAA,OAAOD,kBAAAA,CAAY,QAAA,CAAS,KAAA,EAAO,OAAA,EAAS,CAAA,IAAA,KAAQ;AAChD,IAAA,MAAM,IAAIL,mBAAYM,yCAAAA,EAAoC;AAAA,MACtD,aAAA,EAAe,KAAA,CAAM,IAAA,CAAK,mCAAmC,CAAA;AAAA,MAC7D,MAAM,IAAA,CAAK,IAAA;AAAA,MACX;AAAA,KACH,CAAA;AAAA,EACL,CAAC,CAAA;AACL;AAEA,SAAS,6BAAA,CACL,IAAA,EACA,QAAA,EACA,UAAA,EAC2B;AAC3B,EAAA,MAAM,KAAA,GAAQ,UAAA,CAAW,QAAA,CAAS,IAAI,CAAA;AACtC,EAAA,MAAM,WAAW,QAAA,CAAS,IAAA;AAG1B,EAAA,IAAI,KAAA,KAAU,MAAA,IAAa,KAAA,KAAU,IAAA,EAAM;AACvC,IAAA,IAAIC,aAAAA,CAAO,QAAA,EAAU,yBAAyB,CAAA,EAAG;AAC7C,MAAA,OAAO,OAAA,CAAQ,OAAA,CAAQ,IAAI,UAAA,CAAW,CAAC,CAAC,CAAA;AAAA,IAC5C;AACA,IAAA,MAAM,IAAIP,mBAAYqB,qDAAAA,EAAgD;AAAA,MAClE,cAAc,QAAA,CAAS,IAAA;AAAA,MACvB,eAAA,EAAiBU,iBAAU,oBAAoB;AAAA,KAClD,CAAA;AAAA,EACL;AAGA,EAAA,IAAIxB,aAAAA,CAAO,QAAA,EAAU,gBAAgB,CAAA,EAAG;AACpC,IAAA,IAAI,OAAO,UAAU,QAAA,EAAU;AAC3B,MAAA,MAAM,IAAIP,mBAAYiB,6DAAAA,EAAwD;AAAA,QAC1E,UAAA,EAAY,gBAAgB,KAAK,CAAA;AAAA,QACjC,YAAA,EAAc,QAAA;AAAA,QACd,QAAA,EAAU;AAAA,OACb,CAAA;AAAA,IACL;AACA,IAAA,OAAO,QAAQ,OAAA,CAAQ,sBAAA,EAAuB,CAAE,MAAA,CAAO,KAAK,CAAC,CAAA;AAAA,EACjE;AAIA,EAAA,MAAM,gBAAA,GAAmB,uBAAuB,QAAQ,CAAA;AACxD,EAAA,MAAM,QAAQK,0BAAAA,CAAa,CAAC,MAAM,IAAA,CAAK,OAAA,EAAS,gBAAgB,CAAC,CAAA;AACjE,EAAA,MAAM,cAAc,2BAAA,CAA4B,QAAA,EAAU,MAAM,EAAE,aAAA,EAAe,UAAU,CAAA;AAC3F,EAAA,MAAM,gBAAA,GAAmB,YAAY,KAAK,CAAA;AAC1C,EAAA,OAAO,OAAA,CAAQ,OAAA,CAAQ,KAAA,CAAM,MAAA,CAAO,gBAAgB,CAAC,CAAA;AACzD;AAEA,SAAS,uBAAuB,QAAA,EAA+B;AAC3D,EAAA,OAAO;AAAA,IACH,MAAM,EAAC;AAAA,IACP,IAAA,EAAM,yBAAA;AAAA,IACN,MAAM,QAAA,CAAS,IAAA;AAAA,IACf,MAAM,QAAA,CAAS;AAAA,GACnB;AACJ;;;AC5HO,IAAM,0CAAA,GAA6C;AAAA,EACtD,kBAAA;AAAA,EACA,gBAAA;AAAA,EACA,eAAA;AAAA,EACA,eAAA;AAAA,EACA,iBAAA;AAAA,EACA,oBAAA;AAAA,EACA;AACJ;AAWO,SAAS,iCAAiC,KAAA,EAEqB;AAClE,EAAA,OAAO;AAAA,IACH,mBAAmB,CAAC,IAAA,KAA2B,KAAA,CAAM,MAAA,CAAO,KAAK,OAAO,CAAA;AAAA,IACxE,eAAA,EAAiB,CAAC,IAAA,KAAyB,KAAA,CAAM,MAAA,CAAO,CAAC,IAAA,CAAK,QAAA,EAAU,IAAA,CAAK,IAAI,CAAC,CAAA;AAAA,IAClF,gBAAgB,CAAC,IAAA,KAAwB,KAAA,CAAM,MAAA,CAAO,KAAK,OAAO,CAAA;AAAA,IAClE,cAAA,EAAgB,MAAM,KAAA,CAAM,MAAA,CAAO,IAAI,CAAA;AAAA,IACvC,kBAAkB,CAAC,IAAA,KAA0B,KAAA,CAAM,MAAA,CAAO,KAAK,MAAM,CAAA;AAAA,IACrE,qBAAqB,CAAC,IAAA,KAA6B,KAAA,CAAM,MAAA,CAAO,KAAK,SAAS,CAAA;AAAA,IAC9E,kBAAkB,CAAC,IAAA,KAA0B,KAAA,CAAM,MAAA,CAAO,KAAK,MAAM;AAAA,GACzE;AACJ;;;AC1CO,IAAM,mBAAA,GAAsB,CAAC,gBAAA,EAAkB,wBAAA,EAA0B,yBAAyB","file":"index.node.cjs","sourcesContent":["import type { NodeKind } from 'codama';\n\n/**\n * Checks if a value is a plain object record (struct-like).\n */\nexport function isObjectRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === 'object' && value !== null && Object.getPrototypeOf(value) === Object.prototype;\n}\n\n/** Returns the `NodeKind` of a node or `null`. */\nexport function getMaybeNodeKind(node: unknown): NodeKind | null {\n if (!isObjectRecord(node)) return null;\n return (node as { kind: NodeKind }).kind ?? null;\n}\n\n/** Formats the type of a given value as a string. */\nexport function formatValueType(value: unknown): string {\n if (value === null) return 'null';\n if (Array.isArray(value)) return `array (length ${value.length})`;\n if (value instanceof Uint8Array) return `Uint8Array (length ${value.length})`;\n if (typeof value === 'object') return 'object';\n return typeof value;\n}\n\n/**\n * Serializes a value for use in error messages and diagnostic output.\n * Converts BigInt to strings, always returns a string and never throws.\n */\nexport function safeStringify(value: unknown): string {\n try {\n return JSON.stringify(value, (_key, v: unknown) => (typeof v === 'bigint' ? String(v) : v));\n } catch {\n return `non-serializable ${formatValueType(value)}`;\n }\n}\n","import { CODAMA_ERROR__DYNAMIC_CLIENT__CANNOT_CONVERT_TO_ADDRESS, CodamaError } from '@codama/errors';\nimport type { Address } from '@solana/addresses';\nimport { address, isAddress } from '@solana/addresses';\n\nimport { safeStringify } from './util';\n\n/**\n * Accept both modern Address strings and legacy PublicKey-like objects.\n * We intentionally use duck-typing to avoid hard dependency on @solana/web3.js types.\n */\nexport type PublicKeyLike = { toBase58(): string };\n\nexport type AddressInput = Address | PublicKeyLike | string;\n\nexport function isPublicKeyLike(value: unknown): value is PublicKeyLike {\n const obj = value as Record<string, unknown>;\n return typeof value === 'object' && value !== null && 'toBase58' in obj && typeof obj.toBase58 === 'function';\n}\n\nexport function toAddress(input: AddressInput): Address {\n if (isPublicKeyLike(input)) return address(input.toBase58());\n if (typeof input === 'string' && isAddress(input)) return address(input);\n\n throw new CodamaError(CODAMA_ERROR__DYNAMIC_CLIENT__CANNOT_CONVERT_TO_ADDRESS, {\n value: safeStringify(input),\n });\n}\n\nexport function isAddressConvertible(value: unknown): value is AddressInput {\n if (value == null) return false;\n return isPublicKeyLike(value) || (typeof value === 'string' && isAddress(value));\n}\n","import {\n CODAMA_ERROR__DYNAMIC_CLIENT__CIRCULAR_ACCOUNT_DEPENDENCY,\n CODAMA_ERROR__DYNAMIC_CLIENT__NODE_REFERENCE_NOT_FOUND,\n CodamaError,\n} from '@codama/errors';\nimport type { Address } from '@solana/addresses';\nimport type { AccountValueNode } from 'codama';\n\nimport { toAddress } from '../shared/address';\nimport type { AccountsInput, ArgumentsInput, ResolverFnInput, ResolversInput } from '../shared/types';\nimport { resolveAccountAddress } from './resolve-account-address';\nimport type { BaseResolutionContext, ResolutionPath } from './types';\n\n/**\n * Resolves an AccountValueNode reference to an Address.\n *\n * Shared logic for resolving account references across visitors:\n * Checks if the user provided the account address in accountsInput.\n * Finds the referenced InstructionAccountNode.\n * Delegates to resolveAccountAddress for default value resolution.\n */\nexport async function resolveAccountValueNodeAddress<\n TAccounts extends AccountsInput = AccountsInput,\n TArgs extends ArgumentsInput = ArgumentsInput,\n TResolvers extends ResolverFnInput = ResolversInput,\n>(node: AccountValueNode, ctx: BaseResolutionContext<TAccounts, TArgs, TResolvers>): Promise<Address | null> {\n const { accountsInput, ixNode, resolutionPath } = ctx;\n\n // Check if user provided the account address.\n const providedAddress = accountsInput?.[node.name];\n if (providedAddress !== undefined && providedAddress !== null) {\n return toAddress(providedAddress);\n }\n\n // Find the referenced account in the instruction.\n const referencedIxAccountNode = ixNode.accounts.find(acc => acc.name === node.name);\n if (!referencedIxAccountNode) {\n throw new CodamaError(CODAMA_ERROR__DYNAMIC_CLIENT__NODE_REFERENCE_NOT_FOUND, {\n instructionName: ixNode.name,\n referencedName: node.name,\n });\n }\n\n // Detect circular dependencies before recursing.\n detectCircularDependency(node.name, resolutionPath);\n\n return await resolveAccountAddress({\n accountsInput: ctx.accountsInput,\n argumentsInput: ctx.argumentsInput,\n ixAccountNode: referencedIxAccountNode,\n ixNode,\n resolutionPath: [...resolutionPath, node.name],\n resolversInput: ctx.resolversInput,\n root: ctx.root,\n });\n}\n\nexport function detectCircularDependency(nodeName: string, resolutionPath: ResolutionPath) {\n if (resolutionPath.includes(nodeName)) {\n throw new CodamaError(CODAMA_ERROR__DYNAMIC_CLIENT__CIRCULAR_ACCOUNT_DEPENDENCY, {\n chain: [...resolutionPath, nodeName].join(' -> '),\n });\n }\n}\n","import { CODAMA_ERROR__DYNAMIC_CLIENT__FAILED_TO_EXECUTE_RESOLVER, CodamaError } from '@codama/errors';\nimport type { Visitor } from 'codama';\nimport type { AccountValueNode, ArgumentValueNode, ResolverValueNode } from 'codama';\n\nimport { resolveAccountValueNodeAddress } from '../resolvers/resolve-account-value-node-address';\nimport type { BaseResolutionContext } from '../resolvers/types';\nimport type { AccountsInput, ArgumentsInput, ResolverFnInput, ResolversInput } from '../shared/types';\n\nexport const CONDITION_NODE_SUPPORTED_NODE_KINDS = [\n 'accountValueNode',\n 'argumentValueNode',\n 'resolverValueNode',\n] as const;\n\ntype ConditionNodeSupportedNodeKind = (typeof CONDITION_NODE_SUPPORTED_NODE_KINDS)[number];\n\n/**\n * Visitor for resolving condition nodes in ConditionalValueNode.\n * Returns the runtime value of the condition (from accounts or arguments).\n */\nexport function createConditionNodeValueVisitor<\n TAccounts extends AccountsInput = AccountsInput,\n TArgs extends ArgumentsInput = ArgumentsInput,\n TResolvers extends ResolverFnInput = ResolversInput,\n>(ctx: BaseResolutionContext<TAccounts, TArgs, TResolvers>): Visitor<Promise<unknown>, ConditionNodeSupportedNodeKind> {\n const { root, ixNode, argumentsInput, accountsInput, resolutionPath, resolversInput } = ctx;\n\n return {\n visitAccountValue: async (node: AccountValueNode) => {\n // If the user explicitly provides null for a conditional account,\n // return it for the conditionalValueNode ifFalse branch.\n const accountAddressInput = accountsInput?.[node.name];\n if (accountAddressInput === null) {\n return null;\n }\n\n return await resolveAccountValueNodeAddress(node, {\n accountsInput,\n argumentsInput,\n ixNode,\n resolutionPath,\n resolversInput,\n root,\n });\n },\n\n visitArgumentValue: async (node: ArgumentValueNode) => {\n const argInput = argumentsInput?.[node.name];\n return await Promise.resolve(argInput);\n },\n\n visitResolverValue: async (node: ResolverValueNode) => {\n const resolverFn = resolversInput?.[node.name];\n if (!resolverFn) {\n // ConditionalValueNode evaluates condition and based on result it chooses to take either ifTrue or ifFalse branch.\n // If resolver is not provided, we assume condition is false and return undefined instead of throwing an error to take ifFalse branch.\n return undefined;\n }\n try {\n return await resolverFn(argumentsInput ?? {}, accountsInput ?? {});\n } catch (error) {\n throw new CodamaError(CODAMA_ERROR__DYNAMIC_CLIENT__FAILED_TO_EXECUTE_RESOLVER, {\n cause: error,\n resolverName: node.name,\n targetKind: 'conditionalValueNode',\n targetName: node.name,\n });\n }\n },\n };\n}\n","import { CODAMA_ERROR__UNEXPECTED_NODE_KIND, CodamaError } from '@codama/errors';\nimport { address } from '@solana/addresses';\nimport type { Visitor } from 'codama';\nimport type {\n ArrayValueNode,\n BooleanValueNode,\n BytesValueNode,\n ConstantValueNode,\n EnumValueNode,\n MapValueNode,\n NoneValueNode,\n NumberValueNode,\n PublicKeyValueNode,\n SetValueNode,\n SomeValueNode,\n StringValueNode,\n StructValueNode,\n TupleValueNode,\n} from 'codama';\nimport { visitOrElse } from 'codama';\n\ntype ResolvedValue = {\n encoding?: string;\n kind: string;\n value: unknown;\n};\n\nexport const VALUE_NODE_SUPPORTED_NODE_KINDS = [\n 'arrayValueNode',\n 'booleanValueNode',\n 'bytesValueNode',\n 'constantValueNode',\n 'enumValueNode',\n 'mapValueNode',\n 'noneValueNode',\n 'numberValueNode',\n 'publicKeyValueNode',\n 'setValueNode',\n 'someValueNode',\n 'stringValueNode',\n 'structValueNode',\n 'tupleValueNode',\n] as const;\n\ntype ValueNodeSupportedNodeKind = (typeof VALUE_NODE_SUPPORTED_NODE_KINDS)[number];\n\n/**\n * Visitor for resolving regular ValueNode types to their typed values.\n */\nexport function createValueNodeVisitor(): Visitor<ResolvedValue, ValueNodeSupportedNodeKind> {\n const visitor: Visitor<ResolvedValue, ValueNodeSupportedNodeKind> = {\n visitArrayValue: (node: ArrayValueNode) => ({\n kind: node.kind,\n value: node.items.map(item =>\n visitOrElse(item, visitor, n => {\n throw new CodamaError(CODAMA_ERROR__UNEXPECTED_NODE_KIND, {\n expectedKinds: [...VALUE_NODE_SUPPORTED_NODE_KINDS],\n kind: n.kind,\n node: n,\n });\n }),\n ),\n }),\n\n visitBooleanValue: (node: BooleanValueNode) => ({\n kind: node.kind,\n value: node.boolean,\n }),\n\n visitBytesValue: (node: BytesValueNode) => ({\n encoding: node.encoding,\n kind: node.kind,\n value: node.data,\n }),\n\n visitConstantValue: (node: ConstantValueNode) => {\n return visitOrElse(node.value, visitor, innerNode => {\n throw new CodamaError(CODAMA_ERROR__UNEXPECTED_NODE_KIND, {\n expectedKinds: [...VALUE_NODE_SUPPORTED_NODE_KINDS],\n kind: innerNode.kind,\n node: innerNode,\n });\n });\n },\n\n visitEnumValue: (node: EnumValueNode) => ({\n kind: node.kind,\n value: node.variant,\n }),\n\n visitMapValue: (node: MapValueNode) => ({\n kind: node.kind,\n value: node.entries.map(entry => ({\n key: visitOrElse(entry.key, visitor, n => {\n throw new CodamaError(CODAMA_ERROR__UNEXPECTED_NODE_KIND, {\n expectedKinds: [...VALUE_NODE_SUPPORTED_NODE_KINDS],\n kind: n.kind,\n node: n,\n });\n }),\n value: visitOrElse(entry.value, visitor, n => {\n throw new CodamaError(CODAMA_ERROR__UNEXPECTED_NODE_KIND, {\n expectedKinds: [...VALUE_NODE_SUPPORTED_NODE_KINDS],\n kind: n.kind,\n node: n,\n });\n }),\n })),\n }),\n\n visitNoneValue: (node: NoneValueNode) => ({\n kind: node.kind,\n value: null,\n }),\n\n visitNumberValue: (node: NumberValueNode) => ({\n kind: node.kind,\n value: node.number,\n }),\n\n visitPublicKeyValue: (node: PublicKeyValueNode) => ({\n kind: node.kind,\n value: address(node.publicKey),\n }),\n\n visitSetValue: (node: SetValueNode) => ({\n kind: node.kind,\n value: node.items.map(item =>\n visitOrElse(item, visitor, n => {\n throw new CodamaError(CODAMA_ERROR__UNEXPECTED_NODE_KIND, {\n expectedKinds: [...VALUE_NODE_SUPPORTED_NODE_KINDS],\n kind: n.kind,\n node: n,\n });\n }),\n ),\n }),\n\n visitSomeValue: (node: SomeValueNode) => {\n return visitOrElse(node.value, visitor, innerNode => {\n throw new CodamaError(CODAMA_ERROR__UNEXPECTED_NODE_KIND, {\n expectedKinds: [...VALUE_NODE_SUPPORTED_NODE_KINDS],\n kind: innerNode.kind,\n node: innerNode,\n });\n });\n },\n\n visitStringValue: (node: StringValueNode) => ({\n kind: node.kind,\n value: node.string,\n }),\n\n visitStructValue: (node: StructValueNode) => ({\n kind: node.kind,\n value: Object.fromEntries(\n node.fields.map(field => [\n field.name,\n visitOrElse(field.value, visitor, n => {\n throw new CodamaError(CODAMA_ERROR__UNEXPECTED_NODE_KIND, {\n expectedKinds: [...VALUE_NODE_SUPPORTED_NODE_KINDS],\n kind: n.kind,\n node: n,\n });\n }),\n ]),\n ),\n }),\n\n visitTupleValue: (node: TupleValueNode) => ({\n kind: node.kind,\n value: node.items.map(item =>\n visitOrElse(item, visitor, n => {\n throw new CodamaError(CODAMA_ERROR__UNEXPECTED_NODE_KIND, {\n expectedKinds: [...VALUE_NODE_SUPPORTED_NODE_KINDS],\n kind: n.kind,\n node: n,\n });\n }),\n ),\n }),\n };\n\n return visitor;\n}\n","import {\n CODAMA_ERROR__DYNAMIC_CLIENT__INVARIANT_VIOLATION,\n CODAMA_ERROR__UNEXPECTED_NODE_KIND,\n CodamaError,\n} from '@codama/errors';\nimport type { ConditionalValueNode, InstructionAccountNode, InstructionInputValueNode } from 'codama';\nimport { isNode, visitOrElse } from 'codama';\n\nimport type { AccountsInput, ArgumentsInput, ResolverFnInput, ResolversInput } from '../shared/types';\nimport { getMaybeNodeKind } from '../shared/util';\nimport { CONDITION_NODE_SUPPORTED_NODE_KINDS, createConditionNodeValueVisitor } from '../visitors/condition-node-value';\nimport { createValueNodeVisitor, VALUE_NODE_SUPPORTED_NODE_KINDS } from '../visitors/value-node-value';\nimport type { BaseResolutionContext } from './types';\n\nexport type ResolveConditionalContext<\n TAccounts extends AccountsInput = AccountsInput,\n TArgs extends ArgumentsInput = ArgumentsInput,\n TResolvers extends ResolverFnInput = ResolversInput,\n> = BaseResolutionContext<TAccounts, TArgs, TResolvers> & {\n conditionalValueNode: ConditionalValueNode;\n ixAccountNode: InstructionAccountNode;\n};\n\n/**\n * Evaluates a ConditionalValueNode's condition.\n * Returns the matching branch (ifTrue or ifFalse) as an InstructionInputValueNode or undefined if no branch matches.\n */\nexport async function resolveConditionalValueNodeCondition<\n TAccounts extends AccountsInput = AccountsInput,\n TArgs extends ArgumentsInput = ArgumentsInput,\n TResolvers extends ResolverFnInput = ResolversInput,\n>({\n root,\n ixNode,\n ixAccountNode,\n conditionalValueNode,\n argumentsInput,\n accountsInput,\n resolutionPath,\n resolversInput,\n}: ResolveConditionalContext<TAccounts, TArgs, TResolvers>): Promise<InstructionInputValueNode | undefined> {\n if (!isNode(conditionalValueNode, 'conditionalValueNode')) {\n throw new CodamaError(CODAMA_ERROR__UNEXPECTED_NODE_KIND, {\n expectedKinds: ['conditionalValueNode'],\n kind: getMaybeNodeKind(conditionalValueNode),\n node: conditionalValueNode,\n });\n }\n const { condition, value: expectedValueNode, ifTrue, ifFalse } = conditionalValueNode;\n\n if (!expectedValueNode && !ifTrue && !ifFalse) {\n throw new CodamaError(CODAMA_ERROR__DYNAMIC_CLIENT__INVARIANT_VIOLATION, {\n message: `Invalid conditionalValueNode: missing value and branches for account ${ixAccountNode.name} in ${ixNode.name}`,\n });\n }\n\n // Resolve the condition value of ConditionalValueNode.\n const conditionVisitor = createConditionNodeValueVisitor({\n accountsInput,\n argumentsInput,\n ixNode,\n resolutionPath,\n resolversInput,\n root,\n });\n const actualProvidedValue = await visitOrElse(condition, conditionVisitor, condNode => {\n throw new CodamaError(CODAMA_ERROR__UNEXPECTED_NODE_KIND, {\n expectedKinds: [...CONDITION_NODE_SUPPORTED_NODE_KINDS],\n kind: condNode.kind,\n node: condNode,\n });\n });\n\n if (!expectedValueNode) {\n return actualProvidedValue ? ifTrue : ifFalse;\n }\n\n // If expectedValueNode exists, the condition must be equal to expected value.\n const valueVisitor = createValueNodeVisitor();\n const expectedValue = visitOrElse(expectedValueNode, valueVisitor, valueNode => {\n throw new CodamaError(CODAMA_ERROR__UNEXPECTED_NODE_KIND, {\n expectedKinds: [...VALUE_NODE_SUPPORTED_NODE_KINDS],\n kind: valueNode.kind,\n node: valueNode,\n });\n });\n\n if (typeof expectedValue.value === 'object' || typeof actualProvidedValue === 'object') {\n throw new CodamaError(CODAMA_ERROR__DYNAMIC_CLIENT__INVARIANT_VIOLATION, {\n message: 'Deep equality comparison not yet supported for conditional value',\n });\n }\n\n return actualProvidedValue === expectedValue.value ? ifTrue : ifFalse;\n}\n","import { getAddressEncoder } from '@solana/addresses';\nimport type { Encoder } from '@solana/codecs';\nimport {\n getBase16Codec,\n getBase58Codec,\n getBase64Codec,\n getBooleanEncoder,\n getUtf8Codec,\n getUtf8Encoder,\n} from '@solana/codecs';\n\n// Memoized encoders and codecs to avoid unnecessary re-instantiation.\n\nlet addressEncoder: ReturnType<typeof getAddressEncoder> | undefined;\nexport function getMemoizedAddressEncoder() {\n if (!addressEncoder) addressEncoder = getAddressEncoder();\n return addressEncoder;\n}\n\nlet utf8Encoder: ReturnType<typeof getUtf8Encoder> | undefined;\nexport function getMemoizedUtf8Encoder() {\n if (!utf8Encoder) utf8Encoder = getUtf8Encoder();\n return utf8Encoder;\n}\n\nlet booleanEncoder: Encoder<boolean> | undefined;\nexport function getMemoizedBooleanEncoder() {\n if (!booleanEncoder) booleanEncoder = getBooleanEncoder();\n return booleanEncoder;\n}\n\nlet utf8Codec: ReturnType<typeof getUtf8Codec> | undefined;\nexport function getMemoizedUtf8Codec() {\n if (!utf8Codec) utf8Codec = getUtf8Codec();\n return utf8Codec;\n}\n\nlet base16Codec: ReturnType<typeof getBase16Codec> | undefined;\nexport function getMemoizedBase16Codec() {\n if (!base16Codec) base16Codec = getBase16Codec();\n return base16Codec;\n}\n\nlet base58Codec: ReturnType<typeof getBase58Codec> | undefined;\nexport function getMemoizedBase58Codec() {\n if (!base58Codec) base58Codec = getBase58Codec();\n return base58Codec;\n}\n\nlet base64Codec: ReturnType<typeof getBase64Codec> | undefined;\nexport function getMemoizedBase64Codec() {\n if (!base64Codec) base64Codec = getBase64Codec();\n return base64Codec;\n}\n","import { CODAMA_ERROR__UNRECOGNIZED_BYTES_ENCODING, CodamaError } from '@codama/errors';\nimport type { BytesEncoding } from 'codama';\n\nimport { getMemoizedBase16Codec, getMemoizedBase58Codec, getMemoizedBase64Codec, getMemoizedUtf8Codec } from './codecs';\nimport { safeStringify } from './util';\n\n/**\n * Converts Uint8Array to encoded string based on encoding type.\n * Uses @solana/codecs encoders internally for consistent encoding/decoding.\n */\nexport function uint8ArrayToEncodedString(bytes: Uint8Array, encoding: BytesEncoding): string {\n const codec = getCodecFromBytesEncoding(encoding);\n return codec.decode(bytes);\n}\n\n/**\n * Gets the appropriate codec for a given bytes encoding format.\n */\nexport function getCodecFromBytesEncoding(encoding: BytesEncoding) {\n switch (encoding) {\n case 'base16':\n return getMemoizedBase16Codec();\n case 'base58':\n return getMemoizedBase58Codec();\n case 'base64':\n return getMemoizedBase64Codec();\n case 'utf8':\n return getMemoizedUtf8Codec();\n default:\n throw new CodamaError(CODAMA_ERROR__UNRECOGNIZED_BYTES_ENCODING, {\n encoding: safeStringify(encoding as unknown),\n });\n }\n}\n/**\n * Type guard to check if a value is a Uint8Array.\n */\nexport function isUint8Array(value: unknown): value is Uint8Array {\n return value instanceof Uint8Array;\n}\n","import {\n CODAMA_ERROR__DYNAMIC_CLIENT__UNEXPECTED_ARGUMENT_TYPE,\n CODAMA_ERROR__LINKED_NODE_NOT_FOUND,\n CODAMA_ERROR__UNEXPECTED_NODE_KIND,\n CodamaError,\n} from '@codama/errors';\nimport type { BytesEncoding, Node, RootNode, TypeNode, Visitor } from 'codama';\nimport { isNode, pascalCase, visitOrElse } from 'codama';\n\nimport { isUint8Array, uint8ArrayToEncodedString } from '../shared/bytes-encoding';\nimport { formatValueType, isObjectRecord } from '../shared/util';\n\n/**\n * Type nodes that the input value transformer can process.\n * Includes all StandaloneTypeNode kinds plus definedTypeLinkNode.\n */\nexport const CODEC_INPUT_TRANSFORMER_SUPPORTED_NODE_KINDS = [\n 'amountTypeNode',\n 'arrayTypeNode',\n 'booleanTypeNode',\n 'bytesTypeNode',\n 'dateTimeTypeNode',\n 'definedTypeLinkNode',\n 'enumTypeNode',\n 'fixedSizeTypeNode',\n 'hiddenPrefixTypeNode',\n 'hiddenSuffixTypeNode',\n 'mapTypeNode',\n 'numberTypeNode',\n 'optionTypeNode',\n 'postOffsetTypeNode',\n 'preOffsetTypeNode',\n 'publicKeyTypeNode',\n 'remainderOptionTypeNode',\n 'sentinelTypeNode',\n 'setTypeNode',\n 'sizePrefixTypeNode',\n 'solAmountTypeNode',\n 'stringTypeNode',\n 'structFieldTypeNode',\n 'structTypeNode',\n 'tupleTypeNode',\n 'zeroableOptionTypeNode',\n] as const;\n\nexport type TransformableTypeNodeKind = (typeof CODEC_INPUT_TRANSFORMER_SUPPORTED_NODE_KINDS)[number];\n\nexport type CodecInputTransformerOptions = {\n bytesEncoding?: BytesEncoding;\n};\n\n/**\n * A transformer function that converts user input to Codama codec-compatible format.\n */\nexport type CodecInputTransformer = (input: unknown) => unknown;\n\nfunction unexpectedNodeFallback(node: Node): never {\n throw new CodamaError(CODAMA_ERROR__UNEXPECTED_NODE_KIND, {\n expectedKinds: [...CODEC_INPUT_TRANSFORMER_SUPPORTED_NODE_KINDS],\n kind: node.kind,\n node,\n });\n}\n\nexport function createCodecInputTransformerVisitor(\n root: RootNode,\n options: CodecInputTransformerOptions = {},\n): Visitor<CodecInputTransformer, TransformableTypeNodeKind> {\n const bytesEncoding = options.bytesEncoding ?? 'base16';\n\n const visitor: Visitor<CodecInputTransformer, TransformableTypeNodeKind> = {\n visitAmountType(node) {\n return visitOrElse(node.number, visitor, unexpectedNodeFallback);\n },\n\n visitArrayType(node) {\n const itemTransform = visitOrElse(node.item, visitor, unexpectedNodeFallback);\n return (input: unknown) => {\n if (!Array.isArray(input)) {\n throw new CodamaError(CODAMA_ERROR__DYNAMIC_CLIENT__UNEXPECTED_ARGUMENT_TYPE, {\n actualType: formatValueType(input),\n expectedType: 'array',\n nodeKind: 'arrayTypeNode',\n });\n }\n return input.map(itemTransform);\n };\n },\n\n visitBooleanType() {\n return (input: unknown) => input;\n },\n\n visitBytesType() {\n return (input: unknown) => {\n if (isUint8Array(input)) {\n return [bytesEncoding, uint8ArrayToEncodedString(input, bytesEncoding)];\n }\n // Accept number[] by coercing to Uint8Array.\n if (Array.isArray(input) && input.every(item => typeof item === 'number')) {\n return [bytesEncoding, uint8ArrayToEncodedString(new Uint8Array(input), bytesEncoding)];\n }\n throw new CodamaError(CODAMA_ERROR__DYNAMIC_CLIENT__UNEXPECTED_ARGUMENT_TYPE, {\n actualType: formatValueType(input),\n expectedType: 'Uint8Array | number[]',\n nodeKind: 'bytesTypeNode',\n });\n };\n },\n\n visitDateTimeType(node) {\n return visitOrElse(node.number, visitor, unexpectedNodeFallback);\n },\n\n visitDefinedTypeLink(node) {\n const definedType = root.program.definedTypes.find(dt => dt.name === node.name);\n if (!definedType) {\n throw new CodamaError(CODAMA_ERROR__LINKED_NODE_NOT_FOUND, {\n kind: 'definedTypeLinkNode',\n linkNode: node,\n name: node.name,\n path: [],\n });\n }\n return visitOrElse(definedType.type, visitor, unexpectedNodeFallback);\n },\n\n visitEnumType(node) {\n // Scalar enums pass through (just numbers/strings)\n // Data enums need variant transformation with PascalCase __kind\n // Because @codama/dynamic-codecs applies pascalCase() to variant names when building discriminated union codecs:\n // @see https://github.com/codama-idl/codama/blob/main/packages/dynamic-codecs/src/codecs.ts#L199\n return (input: unknown) => {\n if (typeof input === 'number' || typeof input === 'string') {\n return input;\n }\n\n if (!isObjectRecord(input)) {\n return input;\n }\n\n if (!('__kind' in input)) {\n return input;\n }\n\n const { __kind, ...rest } = input;\n const kindObj = { __kind: pascalCase(String(__kind)) };\n const variantNode = node.variants.find(v => v.name === __kind);\n\n if (!variantNode) {\n const availableVariants = node.variants.map(v => v.name).join(', ');\n throw new CodamaError(CODAMA_ERROR__DYNAMIC_CLIENT__UNEXPECTED_ARGUMENT_TYPE, {\n actualType: `variant '${String(__kind)}'`,\n expectedType: `one of [${availableVariants}]`,\n nodeKind: 'enumTypeNode',\n });\n }\n\n if (isNode(variantNode, 'enumEmptyVariantTypeNode')) {\n return { ...input, ...kindObj };\n }\n\n if (isNode(variantNode, 'enumStructVariantTypeNode')) {\n const structTransform = visitOrElse(variantNode.struct, visitor, unexpectedNodeFallback);\n const transformedFields = structTransform(rest);\n if (!isObjectRecord(transformedFields)) {\n throw new CodamaError(CODAMA_ERROR__DYNAMIC_CLIENT__UNEXPECTED_ARGUMENT_TYPE, {\n actualType: formatValueType(transformedFields),\n expectedType: 'object',\n nodeKind: 'enumStructVariantTypeNode',\n });\n }\n return { ...kindObj, ...transformedFields };\n }\n\n if (isNode(variantNode, 'enumTupleVariantTypeNode')) {\n const tupleTransform = visitOrElse(variantNode.tuple, visitor, unexpectedNodeFallback);\n if (!('fields' in rest) || !Array.isArray(rest.fields)) {\n throw new CodamaError(CODAMA_ERROR__DYNAMIC_CLIENT__UNEXPECTED_ARGUMENT_TYPE, {\n actualType: formatValueType(rest.fields ?? rest),\n expectedType: 'array (fields)',\n nodeKind: 'enumTupleVariantTypeNode',\n });\n }\n return { ...kindObj, fields: tupleTransform(rest.fields) };\n }\n\n return input;\n };\n },\n\n visitFixedSizeType(node) {\n return visitOrElse(node.type, visitor, unexpectedNodeFallback);\n },\n\n visitHiddenPrefixType(node) {\n return visitOrElse(node.type, visitor, unexpectedNodeFallback);\n },\n\n visitHiddenSuffixType(node) {\n return visitOrElse(node.type, visitor, unexpectedNodeFallback);\n },\n\n visitMapType(node) {\n // Maps are represented as objects in dynamic-codecs\n const valueTransform = visitOrElse(node.value, visitor, unexpectedNodeFallback);\n return (input: unknown) => {\n if (!isObjectRecord(input)) {\n throw new CodamaError(CODAMA_ERROR__DYNAMIC_CLIENT__UNEXPECTED_ARGUMENT_TYPE, {\n actualType: formatValueType(input),\n expectedType: 'object',\n nodeKind: 'mapTypeNode',\n });\n }\n const result: Record<string, unknown> = {};\n for (const [key, value] of Object.entries(input)) {\n result[key] = valueTransform(value);\n }\n return result;\n };\n },\n\n // Primitive types (pass through)\n visitNumberType() {\n return (input: unknown) => input;\n },\n\n visitOptionType(node) {\n const innerTransform = visitOrElse(node.item, visitor, unexpectedNodeFallback);\n return (input: unknown) => {\n if (input === null || input === undefined) return input;\n return innerTransform(input);\n };\n },\n\n visitPostOffsetType(node) {\n return visitOrElse(node.type, visitor, unexpectedNodeFallback);\n },\n\n visitPreOffsetType(node) {\n return visitOrElse(node.type, visitor, unexpectedNodeFallback);\n },\n\n visitPublicKeyType() {\n return (input: unknown) => input;\n },\n\n visitRemainderOptionType(node) {\n const innerTransform = visitOrElse(node.item, visitor, unexpectedNodeFallback);\n return (input: unknown) => {\n if (input === null || input === undefined) return input;\n return innerTransform(input);\n };\n },\n\n visitSentinelType(node) {\n return visitOrElse(node.type, visitor, unexpectedNodeFallback);\n },\n\n visitSetType(node) {\n // Sets are represented as arrays in dynamic-codecs\n const itemTransform = visitOrElse(node.item, visitor, unexpectedNodeFallback);\n return (input: unknown) => {\n if (!Array.isArray(input)) {\n throw new CodamaError(CODAMA_ERROR__DYNAMIC_CLIENT__UNEXPECTED_ARGUMENT_TYPE, {\n actualType: formatValueType(input),\n expectedType: 'array',\n nodeKind: 'setTypeNode',\n });\n }\n return input.map(itemTransform);\n };\n },\n\n visitSizePrefixType(node) {\n return visitOrElse(node.type, visitor, unexpectedNodeFallback);\n },\n\n visitSolAmountType(node) {\n return visitOrElse(node.number, visitor, unexpectedNodeFallback);\n },\n\n visitStringType() {\n return (input: unknown) => input;\n },\n\n visitStructFieldType(node) {\n return visitOrElse(node.type, visitor, unexpectedNodeFallback);\n },\n\n visitStructType(node) {\n const fieldTransformers = node.fields.map(field => {\n const transform = visitOrElse(field, visitor, unexpectedNodeFallback);\n return { name: field.name, transform };\n });\n return (input: unknown) => {\n if (!isObjectRecord(input)) {\n throw new CodamaError(CODAMA_ERROR__DYNAMIC_CLIENT__UNEXPECTED_ARGUMENT_TYPE, {\n actualType: formatValueType(input),\n expectedType: 'object',\n nodeKind: 'structTypeNode',\n });\n }\n const result = { ...input } as Record<string, unknown>;\n for (const { name, transform } of fieldTransformers) {\n if (name in result) {\n result[name] = transform(result[name]);\n }\n }\n return result;\n };\n },\n\n visitTupleType(node) {\n const itemTransforms = node.items.map(item => visitOrElse(item, visitor, unexpectedNodeFallback));\n return (input: unknown) => {\n if (!Array.isArray(input)) {\n throw new CodamaError(CODAMA_ERROR__DYNAMIC_CLIENT__UNEXPECTED_ARGUMENT_TYPE, {\n actualType: formatValueType(input),\n expectedType: 'array',\n nodeKind: 'tupleTypeNode',\n });\n }\n if (input.length !== itemTransforms.length) {\n throw new CodamaError(CODAMA_ERROR__DYNAMIC_CLIENT__UNEXPECTED_ARGUMENT_TYPE, {\n actualType: `array(length:${input.length})`,\n expectedType: `array(length:${itemTransforms.length})`,\n nodeKind: 'tupleTypeNode',\n });\n }\n return input.map((value: unknown, index) => itemTransforms[index](value));\n };\n },\n\n visitZeroableOptionType(node) {\n const innerTransform = visitOrElse(node.item, visitor, unexpectedNodeFallback);\n return (input: unknown) => {\n if (input === null || input === undefined) return input;\n return innerTransform(input);\n };\n },\n };\n\n return visitor;\n}\n\n/**\n * Creates a transformer function that converts user input to codec-compatible input format.\n * For example: user input Uint8Array for binary data but @codama/dynamic-codecs expects [BytesEncoding, string] as input\n *\n * @param typeNode - The Codama type node describing the expected structure\n * @param root - Root node for resolving definedTypeLinkNode references\n * @param options - Configuration options (encoding preference)\n * @returns Transformer function that converts input to codec format\n *\n * @example\n * const transformer = createCodecInputTransformer(\n * bytesTypeNode(),\n * root,\n * { bytesEncoding: 'base16' }\n * );\n *\n * const input = new Uint8Array([72, 101, 108, 108, 111]);\n * const transformed = transformer(input); // => ['base16', '48656c6c6f']\n * Usage with codec: codamaCodec.encode(['base16', '48656c6c6f'])\n */\nexport function createCodecInputTransformer(\n typeNode: TypeNode,\n root: RootNode,\n options?: CodecInputTransformerOptions,\n): CodecInputTransformer {\n const visitor = createCodecInputTransformerVisitor(root, options);\n return visitOrElse(typeNode, visitor, unexpectedNodeFallback);\n}\n","import { getNodeCodec } from '@codama/dynamic-codecs';\nimport {\n CODAMA_ERROR__DYNAMIC_CLIENT__ARGUMENT_MISSING,\n CODAMA_ERROR__DYNAMIC_CLIENT__FAILED_TO_DERIVE_PDA,\n CODAMA_ERROR__DYNAMIC_CLIENT__INVARIANT_VIOLATION,\n CODAMA_ERROR__DYNAMIC_CLIENT__NODE_REFERENCE_NOT_FOUND,\n CODAMA_ERROR__UNEXPECTED_NODE_KIND,\n CodamaError,\n} from '@codama/errors';\nimport type { Address } from '@solana/addresses';\nimport type { ReadonlyUint8Array } from '@solana/codecs';\nimport type {\n AccountValueNode,\n ArgumentValueNode,\n BooleanValueNode,\n BytesValueNode,\n ConstantValueNode,\n NoneValueNode,\n NumberValueNode,\n ProgramIdValueNode,\n PublicKeyValueNode,\n SomeValueNode,\n StringValueNode,\n TypeNode,\n Visitor,\n} from 'codama';\nimport { isNode, visitOrElse } from 'codama';\n\nimport { resolveAccountValueNodeAddress } from '../resolvers/resolve-account-value-node-address';\nimport type { BaseResolutionContext } from '../resolvers/types';\nimport { toAddress } from '../shared/address';\nimport { getCodecFromBytesEncoding } from '../shared/bytes-encoding';\nimport { getMemoizedAddressEncoder, getMemoizedBooleanEncoder, getMemoizedUtf8Codec } from '../shared/codecs';\nimport { createCodecInputTransformer } from './codec-input-transformer';\n\nexport const PDA_SEED_VALUE_SUPPORTED_NODE_KINDS = [\n 'accountValueNode',\n 'argumentValueNode',\n 'booleanValueNode',\n 'bytesValueNode',\n 'constantValueNode',\n 'noneValueNode',\n 'numberValueNode',\n 'programIdValueNode',\n 'publicKeyValueNode',\n 'someValueNode',\n 'stringValueNode',\n] as const;\n\ntype PdaSeedValueSupportedNodeKind = (typeof PDA_SEED_VALUE_SUPPORTED_NODE_KINDS)[number];\n\ntype PdaSeedValueVisitorContext = BaseResolutionContext & {\n programId: Address;\n seedTypeNode?: TypeNode;\n};\n\n/**\n * Visitor for resolving PdaSeedValueNode value to raw bytes.\n * Supports recursive resolution of dependent PDAs (accounts that are themselves auto-derived PDAs).\n * This is used for both:\n * - Variable seeds (e.g. seeds based on instruction accounts/arguments), and\n * - Constant seeds (e.g. bytes/string/programId/publicKey constants).\n */\nexport function createPdaSeedValueVisitor(\n ctx: PdaSeedValueVisitorContext,\n): Visitor<Promise<ReadonlyUint8Array>, PdaSeedValueSupportedNodeKind> {\n const { root, ixNode, programId, seedTypeNode, resolversInput, resolutionPath } = ctx;\n const accountsInput = ctx.accountsInput ?? {};\n const argumentsInput = ctx.argumentsInput ?? {};\n\n return {\n visitAccountValue: async (node: AccountValueNode) => {\n const resolvedAddress = await resolveAccountValueNodeAddress(node, {\n accountsInput,\n argumentsInput,\n ixNode,\n resolutionPath,\n resolversInput,\n root,\n });\n\n if (resolvedAddress === null) {\n throw new CodamaError(CODAMA_ERROR__DYNAMIC_CLIENT__FAILED_TO_DERIVE_PDA, {\n accountName: node.name,\n });\n }\n\n return getMemoizedAddressEncoder().encode(resolvedAddress);\n },\n\n visitArgumentValue: async (node: ArgumentValueNode) => {\n const ixArgumentNode = ixNode.arguments.find(arg => arg.name === node.name);\n if (!ixArgumentNode) {\n throw new CodamaError(CODAMA_ERROR__DYNAMIC_CLIENT__NODE_REFERENCE_NOT_FOUND, {\n instructionName: ixNode.name,\n referencedName: node.name,\n });\n }\n const argInput = argumentsInput[node.name];\n\n // Use the PDA seed's declared type (e.g. plain stringTypeNode) rather than\n // the instruction argument's type (e.g. sizePrefixTypeNode) so the seed\n // bytes match what the on-chain program derives.\n const typeNode = seedTypeNode ?? ixArgumentNode.type;\n\n if (argInput === undefined || argInput === null) {\n // optional remainderOptionTypeNode seeds encodes to zero bytes.\n if (isNode(typeNode, 'remainderOptionTypeNode')) {\n return new Uint8Array(0);\n }\n throw new CodamaError(CODAMA_ERROR__DYNAMIC_CLIENT__ARGUMENT_MISSING, {\n argumentName: node.name,\n instructionName: ixNode.name,\n });\n }\n const codec = getNodeCodec([root, root.program, ixNode, { ...ixArgumentNode, type: typeNode }]);\n const transformer = createCodecInputTransformer(typeNode, root, {\n bytesEncoding: 'base16',\n });\n const transformedInput = transformer(argInput);\n return await Promise.resolve(codec.encode(transformedInput));\n },\n\n visitBooleanValue: async (node: BooleanValueNode) =>\n await Promise.resolve(getMemoizedBooleanEncoder().encode(node.boolean)),\n\n visitBytesValue: async (node: BytesValueNode) => {\n const encodedValue = getCodecFromBytesEncoding(node.encoding).encode(node.data);\n return await Promise.resolve(encodedValue);\n },\n\n visitConstantValue: async (node: ConstantValueNode) => {\n const innerVisitor = createPdaSeedValueVisitor(ctx);\n return await visitOrElse(node.value, innerVisitor, innerNode => {\n throw new CodamaError(CODAMA_ERROR__UNEXPECTED_NODE_KIND, {\n expectedKinds: [...PDA_SEED_VALUE_SUPPORTED_NODE_KINDS],\n kind: innerNode.kind,\n node: innerNode,\n });\n });\n },\n\n visitNoneValue: async (_node: NoneValueNode) => await Promise.resolve(new Uint8Array(0)),\n\n visitNumberValue: async (node: NumberValueNode) => {\n // Sanity check: a violation here indicates a malformed IDL, not a user input error.\n if (!Number.isInteger(node.number) || node.number < 0 || node.number > 0xff) {\n throw new CodamaError(CODAMA_ERROR__DYNAMIC_CLIENT__INVARIANT_VIOLATION, {\n message: `NumberValueNode PDA seed is out of range: must be a valid u8 (0–255), got ${node.number}`,\n });\n }\n return await Promise.resolve(new Uint8Array([node.number]));\n },\n\n visitProgramIdValue: async (_node: ProgramIdValueNode) => {\n return await Promise.resolve(getMemoizedAddressEncoder().encode(toAddress(programId)));\n },\n\n visitPublicKeyValue: async (node: PublicKeyValueNode) => {\n return await Promise.resolve(getMemoizedAddressEncoder().encode(toAddress(node.publicKey)));\n },\n\n visitSomeValue: async (node: SomeValueNode) => {\n const innerVisitor = createPdaSeedValueVisitor(ctx);\n return await visitOrElse(node.value, innerVisitor, innerNode => {\n throw new CodamaError(CODAMA_ERROR__UNEXPECTED_NODE_KIND, {\n expectedKinds: [...PDA_SEED_VALUE_SUPPORTED_NODE_KINDS],\n kind: innerNode.kind,\n node: innerNode,\n });\n });\n },\n\n visitStringValue: async (node: StringValueNode) =>\n await Promise.resolve(getMemoizedUtf8Codec().encode(node.string)),\n };\n}\n","import {\n CODAMA_ERROR__DYNAMIC_CLIENT__INVARIANT_VIOLATION,\n CODAMA_ERROR__DYNAMIC_CLIENT__NODE_REFERENCE_NOT_FOUND,\n CODAMA_ERROR__LINKED_NODE_NOT_FOUND,\n CODAMA_ERROR__UNEXPECTED_NODE_KIND,\n CODAMA_ERROR__UNRECOGNIZED_NODE_KIND,\n CodamaError,\n} from '@codama/errors';\nimport type { Address, ProgramDerivedAddress } from '@solana/addresses';\nimport { address, getProgramDerivedAddress } from '@solana/addresses';\nimport type { ReadonlyUint8Array } from '@solana/codecs';\nimport type { Node, PdaNode, PdaSeedValueNode, PdaValueNode, RegisteredPdaSeedNode, VariablePdaSeedNode } from 'codama';\nimport { isNode, visitOrElse } from 'codama';\n\nimport type { AccountsInput, ArgumentsInput, ResolverFnInput, ResolversInput } from '../shared/types';\nimport { getMaybeNodeKind } from '../shared/util';\nimport { createPdaSeedValueVisitor, PDA_SEED_VALUE_SUPPORTED_NODE_KINDS } from '../visitors/pda-seed-value';\nimport type { BaseResolutionContext } from './types';\n\nexport type ResolvePDAAddressContext<\n TAccounts extends AccountsInput = AccountsInput,\n TArgs extends ArgumentsInput = ArgumentsInput,\n TResolvers extends ResolverFnInput = ResolversInput,\n> = BaseResolutionContext<TAccounts, TArgs, TResolvers> & {\n pdaValueNode: PdaValueNode;\n};\n\n/**\n * Derives a PDA from a PdaValueNode.\n * Encodes each seed (ConstantPdaSeedNode and VariablePdaSeedNode) into bytes and computes the address.\n */\nexport async function resolvePDAAddress<\n TAccounts extends AccountsInput = AccountsInput,\n TArgs extends ArgumentsInput = ArgumentsInput,\n TResolvers extends ResolverFnInput = ResolversInput,\n>({\n root,\n ixNode,\n argumentsInput,\n accountsInput,\n pdaValueNode,\n resolutionPath,\n resolversInput,\n}: ResolvePDAAddressContext<TAccounts, TArgs, TResolvers>): Promise<ProgramDerivedAddress | null> {\n if (!isNode(pdaValueNode, 'pdaValueNode')) {\n throw new CodamaError(CODAMA_ERROR__UNEXPECTED_NODE_KIND, {\n expectedKinds: ['pdaValueNode'],\n kind: getMaybeNodeKind(pdaValueNode),\n node: pdaValueNode,\n });\n }\n\n const pdaNode = resolvePdaNode(pdaValueNode, root.program.pdas);\n const programId = address(pdaNode.programId || root.program.publicKey);\n\n const seedValues = await Promise.all(\n pdaNode.seeds.map(async seedNode => {\n if (seedNode.kind === 'constantPdaSeedNode') {\n return await resolveConstantPdaSeed({\n accountsInput,\n argumentsInput,\n ixNode,\n programId,\n resolutionPath,\n resolversInput,\n root,\n seedNode,\n });\n }\n\n if (seedNode.kind === 'variablePdaSeedNode') {\n const variableSeedValueNodes = pdaValueNode.seeds;\n const seedName = seedNode.name;\n const variableSeedValueNode = variableSeedValueNodes.find(node => node.name === seedName);\n\n if (!variableSeedValueNode) {\n throw new CodamaError(CODAMA_ERROR__DYNAMIC_CLIENT__NODE_REFERENCE_NOT_FOUND, {\n instructionName: ixNode.name,\n referencedName: seedName,\n });\n }\n\n return await resolveVariablePdaSeed({\n accountsInput,\n argumentsInput,\n ixNode,\n programId,\n resolutionPath,\n resolversInput,\n root,\n seedNode,\n variableSeedValueNode,\n });\n }\n\n throw new CodamaError(CODAMA_ERROR__UNRECOGNIZED_NODE_KIND, {\n kind: getMaybeNodeKind(seedNode) ?? 'unknown',\n });\n }),\n );\n\n return await getProgramDerivedAddress({\n programAddress: programId,\n seeds: seedValues,\n });\n}\n\nfunction resolvePdaNode(pdaDefaultValue: PdaValueNode, pdas: PdaNode[]): PdaNode {\n if (isNode(pdaDefaultValue.pda, 'pdaLinkNode')) {\n const linkedPda = pdas.find(p => p.name === pdaDefaultValue.pda.name);\n if (!linkedPda) {\n throw new CodamaError(CODAMA_ERROR__LINKED_NODE_NOT_FOUND, {\n kind: 'pdaLinkNode',\n linkNode: pdaDefaultValue.pda,\n name: pdaDefaultValue.pda.name,\n path: [],\n });\n }\n return linkedPda;\n }\n\n if (isNode(pdaDefaultValue.pda, 'pdaNode')) {\n return pdaDefaultValue.pda;\n }\n\n throw new CodamaError(CODAMA_ERROR__UNEXPECTED_NODE_KIND, {\n expectedKinds: ['pdaLinkNode', 'pdaNode'],\n kind: getMaybeNodeKind(pdaDefaultValue.pda),\n node: pdaDefaultValue.pda,\n });\n}\n\ntype ResolvePdaSeedContext<\n TAccounts extends AccountsInput = AccountsInput,\n TArgs extends ArgumentsInput = ArgumentsInput,\n TResolvers extends ResolverFnInput = ResolversInput,\n> = BaseResolutionContext<TAccounts, TArgs, TResolvers> & {\n programId: Address;\n seedNode: VariablePdaSeedNode;\n variableSeedValueNode: PdaSeedValueNode;\n};\nfunction resolveVariablePdaSeed<\n TAccounts extends AccountsInput = AccountsInput,\n TArgs extends ArgumentsInput = ArgumentsInput,\n TResolvers extends ResolverFnInput = ResolversInput,\n>({\n accountsInput,\n argumentsInput,\n ixNode,\n programId,\n resolutionPath,\n resolversInput,\n root,\n seedNode,\n variableSeedValueNode,\n}: ResolvePdaSeedContext<TAccounts, TArgs, TResolvers>): Promise<ReadonlyUint8Array> {\n if (!isNode(variableSeedValueNode, 'pdaSeedValueNode')) {\n throw new CodamaError(CODAMA_ERROR__UNEXPECTED_NODE_KIND, {\n expectedKinds: ['pdaSeedValueNode'],\n kind: getMaybeNodeKind(variableSeedValueNode),\n node: variableSeedValueNode as Node,\n });\n }\n\n if (seedNode.name !== variableSeedValueNode.name) {\n // Sanity check: this should not happen.\n throw new CodamaError(CODAMA_ERROR__DYNAMIC_CLIENT__INVARIANT_VIOLATION, {\n message: `Mismatched PDA seed names: expected [${seedNode.name}], got [${variableSeedValueNode.name}]`,\n });\n }\n\n const visitor = createPdaSeedValueVisitor({\n accountsInput,\n argumentsInput,\n ixNode,\n programId,\n resolutionPath,\n resolversInput,\n root,\n seedTypeNode: seedNode.type,\n });\n\n return visitOrElse(variableSeedValueNode.value, visitor, node => {\n throw new CodamaError(CODAMA_ERROR__UNEXPECTED_NODE_KIND, {\n expectedKinds: [...PDA_SEED_VALUE_SUPPORTED_NODE_KINDS],\n kind: node.kind,\n node,\n });\n });\n}\n\ntype ResolveConstantPdaSeedContext<\n TAccounts extends AccountsInput = AccountsInput,\n TArgs extends ArgumentsInput = ArgumentsInput,\n TResolvers extends ResolverFnInput = ResolversInput,\n> = BaseResolutionContext<TAccounts, TArgs, TResolvers> & {\n programId: Address;\n seedNode: RegisteredPdaSeedNode;\n};\nfunction resolveConstantPdaSeed<\n TAccounts extends AccountsInput = AccountsInput,\n TArgs extends ArgumentsInput = ArgumentsInput,\n TResolvers extends ResolverFnInput = ResolversInput,\n>({\n accountsInput,\n argumentsInput,\n ixNode,\n programId,\n resolutionPath,\n resolversInput,\n root,\n seedNode,\n}: ResolveConstantPdaSeedContext<TAccounts, TArgs, TResolvers>): Promise<ReadonlyUint8Array> {\n if (!isNode(seedNode, 'constantPdaSeedNode')) {\n throw new CodamaError(CODAMA_ERROR__UNEXPECTED_NODE_KIND, {\n expectedKinds: ['constantPdaSeedNode'],\n kind: seedNode.kind,\n node: seedNode,\n });\n }\n\n const visitor = createPdaSeedValueVisitor({\n accountsInput,\n argumentsInput,\n ixNode,\n programId,\n resolutionPath,\n resolversInput,\n root,\n seedTypeNode: seedNode.type,\n });\n return visitOrElse(seedNode.value, visitor, node => {\n throw new CodamaError(CODAMA_ERROR__UNEXPECTED_NODE_KIND, {\n expectedKinds: [...PDA_SEED_VALUE_SUPPORTED_NODE_KINDS],\n kind: node.kind,\n node,\n });\n });\n}\n","import {\n CODAMA_ERROR__DYNAMIC_CLIENT__ACCOUNT_MISSING,\n CODAMA_ERROR__DYNAMIC_CLIENT__ACCOUNT_RESOLVER_MISSING,\n CODAMA_ERROR__DYNAMIC_CLIENT__ARGUMENT_MISSING,\n CODAMA_ERROR__DYNAMIC_CLIENT__FAILED_TO_DERIVE_PDA,\n CODAMA_ERROR__DYNAMIC_CLIENT__FAILED_TO_EXECUTE_RESOLVER,\n CODAMA_ERROR__DYNAMIC_CLIENT__INVALID_ACCOUNT_ADDRESS,\n CODAMA_ERROR__DYNAMIC_CLIENT__UNEXPECTED_ADDRESS_TYPE,\n CODAMA_ERROR__DYNAMIC_CLIENT__UNSUPPORTED_NODE,\n CODAMA_ERROR__UNEXPECTED_NODE_KIND,\n CodamaError,\n} from '@codama/errors';\nimport type { Address } from '@solana/addresses';\nimport { address } from '@solana/addresses';\nimport type { Visitor } from 'codama';\nimport type {\n AccountBumpValueNode,\n AccountValueNode,\n ArgumentValueNode,\n ConditionalValueNode,\n IdentityValueNode,\n InstructionAccountNode,\n PayerValueNode,\n PdaValueNode,\n ProgramIdValueNode,\n PublicKeyValueNode,\n ResolverValueNode,\n} from 'codama';\nimport { visitOrElse } from 'codama';\n\nimport { resolveAccountValueNodeAddress } from '../resolvers/resolve-account-value-node-address';\nimport { resolveConditionalValueNodeCondition } from '../resolvers/resolve-conditional';\nimport { resolvePDAAddress } from '../resolvers/resolve-pda-address';\nimport type { BaseResolutionContext } from '../resolvers/types';\nimport { isAddressConvertible, toAddress } from '../shared/address';\nimport type { AccountsInput, ArgumentsInput, ResolverFnInput, ResolversInput } from '../shared/types';\nimport { formatValueType, safeStringify } from '../shared/util';\n\ntype AccountDefaultValueVisitorContext<\n TAccounts extends AccountsInput = AccountsInput,\n TArgs extends ArgumentsInput = ArgumentsInput,\n TResolvers extends ResolverFnInput = ResolversInput,\n> = BaseResolutionContext<TAccounts, TArgs, TResolvers> & {\n ixAccountNode: InstructionAccountNode;\n};\n\nexport const ACCOUNT_DEFAULT_VALUE_SUPPORTED_NODE_KINDS = [\n 'accountBumpValueNode',\n 'accountValueNode',\n 'argumentValueNode',\n 'conditionalValueNode',\n 'identityValueNode',\n 'payerValueNode',\n 'pdaValueNode',\n 'programIdValueNode',\n 'publicKeyValueNode',\n 'resolverValueNode',\n] as const;\n\ntype AccountDefaultValueSupportedNodeKind = (typeof ACCOUNT_DEFAULT_VALUE_SUPPORTED_NODE_KINDS)[number];\n\n/**\n * Visitor for resolving InstructionInputValueNode types to Address values for account resolution.\n */\nexport function createAccountDefaultValueVisitor<\n TAccounts extends AccountsInput = AccountsInput,\n TArgs extends ArgumentsInput = ArgumentsInput,\n TResolvers extends ResolverFnInput = ResolversInput,\n>(\n ctx: AccountDefaultValueVisitorContext<TAccounts, TArgs, TResolvers>,\n): Visitor<Promise<Address | null>, AccountDefaultValueSupportedNodeKind> {\n const { root, ixNode, ixAccountNode, argumentsInput, accountsInput, resolversInput, resolutionPath } = ctx;\n const accountAddressInput = accountsInput?.[ixAccountNode.name];\n\n return {\n visitAccountBumpValue: async (_node: AccountBumpValueNode) => {\n return await Promise.reject(\n new CodamaError(CODAMA_ERROR__DYNAMIC_CLIENT__UNSUPPORTED_NODE, {\n nodeKind: 'accountBumpValueNode',\n }),\n );\n },\n\n visitAccountValue: async (node: AccountValueNode) => {\n return await resolveAccountValueNodeAddress(node, {\n accountsInput,\n argumentsInput,\n ixNode,\n resolutionPath,\n resolversInput,\n root,\n });\n },\n\n visitArgumentValue: async (node: ArgumentValueNode) => {\n const argValue = argumentsInput?.[node.name];\n if (argValue === undefined || argValue === null) {\n throw new CodamaError(CODAMA_ERROR__DYNAMIC_CLIENT__ARGUMENT_MISSING, {\n argumentName: node.name,\n instructionName: ixNode.name,\n });\n }\n\n if (!isAddressConvertible(argValue)) {\n throw new CodamaError(CODAMA_ERROR__DYNAMIC_CLIENT__UNEXPECTED_ADDRESS_TYPE, {\n accountName: ixAccountNode.name,\n actualType: formatValueType(argValue),\n expectedType: 'Address | PublicKey',\n });\n }\n\n return await Promise.resolve(toAddress(argValue));\n },\n\n visitConditionalValue: async (conditionalValueNode: ConditionalValueNode) => {\n // ifTrue or ifFalse branch of ConditionalValueNode.\n const resolvedInputValueNode = await resolveConditionalValueNodeCondition({\n accountsInput,\n argumentsInput,\n conditionalValueNode,\n ixAccountNode,\n ixNode,\n resolutionPath,\n resolversInput,\n root,\n });\n\n if (resolvedInputValueNode === undefined) {\n // No matching branch (e.g. conditional with no ifFalse and falsy condition).\n // Return null to signal \"unresolved\" to apply optionalAccountStrategy.\n if (ixAccountNode.isOptional) {\n return null;\n }\n throw new CodamaError(CODAMA_ERROR__DYNAMIC_CLIENT__ACCOUNT_MISSING, {\n accountName: ixAccountNode.name,\n instructionName: ixNode.name,\n });\n }\n // Recursively resolve the chosen branch.\n const visitor = createAccountDefaultValueVisitor(ctx);\n const addressValue = await visitOrElse(resolvedInputValueNode, visitor, innerNode => {\n throw new CodamaError(CODAMA_ERROR__UNEXPECTED_NODE_KIND, {\n expectedKinds: [...ACCOUNT_DEFAULT_VALUE_SUPPORTED_NODE_KINDS],\n kind: innerNode.kind,\n node: innerNode,\n });\n });\n return addressValue;\n },\n\n visitIdentityValue: async (_node: IdentityValueNode) => {\n if (accountAddressInput === undefined || accountAddressInput === null) {\n throw new CodamaError(CODAMA_ERROR__DYNAMIC_CLIENT__ACCOUNT_MISSING, {\n accountName: ixAccountNode.name,\n instructionName: ixNode.name,\n });\n }\n return await Promise.resolve(toAddress(accountAddressInput));\n },\n\n visitPayerValue: async (_node: PayerValueNode) => {\n if (accountAddressInput === undefined || accountAddressInput === null) {\n throw new CodamaError(CODAMA_ERROR__DYNAMIC_CLIENT__ACCOUNT_MISSING, {\n accountName: ixAccountNode.name,\n instructionName: ixNode.name,\n });\n }\n return await Promise.resolve(toAddress(accountAddressInput));\n },\n\n visitPdaValue: async (node: PdaValueNode) => {\n const pda = await resolvePDAAddress({\n accountsInput,\n argumentsInput,\n ixNode,\n pdaValueNode: node,\n resolutionPath,\n resolversInput,\n root,\n });\n if (pda === null) {\n throw new CodamaError(CODAMA_ERROR__DYNAMIC_CLIENT__FAILED_TO_DERIVE_PDA, {\n accountName: ixAccountNode.name,\n });\n }\n return pda[0];\n },\n\n visitProgramIdValue: async (_node: ProgramIdValueNode) => {\n return await Promise.resolve(address(root.program.publicKey));\n },\n\n visitPublicKeyValue: async (node: PublicKeyValueNode) => {\n return await Promise.resolve(address(node.publicKey));\n },\n\n visitResolverValue: async (node: ResolverValueNode) => {\n const resolverFn = resolversInput?.[node.name];\n if (!resolverFn) {\n throw new CodamaError(CODAMA_ERROR__DYNAMIC_CLIENT__ACCOUNT_RESOLVER_MISSING, {\n accountName: ixAccountNode.name,\n resolverName: node.name,\n });\n }\n let result: unknown;\n try {\n result = await resolverFn(argumentsInput ?? {}, accountsInput ?? {});\n } catch (error) {\n throw new CodamaError(CODAMA_ERROR__DYNAMIC_CLIENT__FAILED_TO_EXECUTE_RESOLVER, {\n cause: error,\n resolverName: node.name,\n targetKind: 'instructionAccountNode',\n targetName: ixAccountNode.name,\n });\n }\n\n if (!isAddressConvertible(result)) {\n throw new CodamaError(CODAMA_ERROR__DYNAMIC_CLIENT__INVALID_ACCOUNT_ADDRESS, {\n accountName: ixAccountNode.name,\n value: safeStringify(result),\n });\n }\n\n return toAddress(result);\n },\n };\n}\n","import {\n CODAMA_ERROR__DYNAMIC_CLIENT__ACCOUNT_MISSING,\n CODAMA_ERROR__DYNAMIC_CLIENT__INVARIANT_VIOLATION,\n CODAMA_ERROR__DYNAMIC_CLIENT__UNSUPPORTED_OPTIONAL_ACCOUNT_STRATEGY,\n CODAMA_ERROR__UNEXPECTED_NODE_KIND,\n CodamaError,\n} from '@codama/errors';\nimport type { Address } from '@solana/addresses';\nimport type { InstructionAccountNode, InstructionNode, RootNode } from 'codama';\nimport { visitOrElse } from 'codama';\n\nimport { toAddress } from '../shared/address';\nimport type { AccountsInput, ArgumentsInput, ResolverFnInput, ResolversInput } from '../shared/types';\nimport { safeStringify } from '../shared/util';\nimport {\n ACCOUNT_DEFAULT_VALUE_SUPPORTED_NODE_KINDS,\n createAccountDefaultValueVisitor,\n} from '../visitors/account-default-value';\nimport type { BaseResolutionContext } from './types';\n\ntype ResolveAccountAddressContext<\n TAccounts extends AccountsInput = AccountsInput,\n TArgs extends ArgumentsInput = ArgumentsInput,\n TResolvers extends ResolverFnInput = ResolversInput,\n> = BaseResolutionContext<TAccounts, TArgs, TResolvers> & {\n ixAccountNode: InstructionAccountNode;\n};\n\n/**\n * Resolves the address of an instruction account node via either defaultValue or optionalAccountStrategy.\n */\nexport async function resolveAccountAddress<\n TAccounts extends AccountsInput = AccountsInput,\n TArgs extends ArgumentsInput = ArgumentsInput,\n TResolvers extends ResolverFnInput = ResolversInput,\n>({\n root,\n ixNode,\n ixAccountNode,\n argumentsInput,\n accountsInput,\n resolutionPath,\n resolversInput,\n}: ResolveAccountAddressContext<TAccounts, TArgs, TResolvers>): Promise<Address | null> {\n const accountAddressInput = accountsInput?.[ixAccountNode.name];\n // Optional accounts explicitly provided as null should be resolved based on optionalAccountStrategy\n if (accountAddressInput === null && ixAccountNode.isOptional) {\n return resolveOptionalAccountWithStrategy(root, ixNode, ixAccountNode);\n }\n\n if (ixAccountNode.defaultValue) {\n const visitor = createAccountDefaultValueVisitor({\n accountsInput,\n argumentsInput,\n ixAccountNode,\n ixNode,\n resolutionPath,\n resolversInput,\n root,\n });\n\n const addressValue = await visitOrElse(ixAccountNode.defaultValue, visitor, node => {\n throw new CodamaError(CODAMA_ERROR__UNEXPECTED_NODE_KIND, {\n expectedKinds: [...ACCOUNT_DEFAULT_VALUE_SUPPORTED_NODE_KINDS],\n kind: node.kind,\n node,\n });\n });\n\n // conditionalValueNode with ifFalse branch returns null.\n // This should be resolved via optionalAccountStrategy for optional accounts.\n if (addressValue === null && ixAccountNode.isOptional) {\n return resolveOptionalAccountWithStrategy(root, ixNode, ixAccountNode);\n }\n\n return addressValue;\n }\n\n throw new CodamaError(CODAMA_ERROR__DYNAMIC_CLIENT__ACCOUNT_MISSING, {\n accountName: ixAccountNode.name,\n instructionName: ixNode.name,\n });\n}\n\n/**\n * Optional account resolution via instruction strategy.\n * With \"programId\" strategy, optional accounts are resolved to programId.\n * With \"omitted\" strategy, optional accounts must be excluded from accounts list.\n */\nfunction resolveOptionalAccountWithStrategy(\n root: RootNode,\n ixNode: InstructionNode,\n ixAccountNode: InstructionAccountNode,\n) {\n if (!ixAccountNode.isOptional) {\n throw new CodamaError(CODAMA_ERROR__DYNAMIC_CLIENT__INVARIANT_VIOLATION, {\n message: `resolveOptionalAccountWithStrategy called for non-optional account: ${ixAccountNode.name}`,\n });\n }\n switch (ixNode.optionalAccountStrategy) {\n case 'omitted':\n return null;\n case 'programId':\n return toAddress(root.program.publicKey);\n default:\n throw new CodamaError(CODAMA_ERROR__DYNAMIC_CLIENT__UNSUPPORTED_OPTIONAL_ACCOUNT_STRATEGY, {\n accountName: ixAccountNode.name,\n instructionName: ixNode.name,\n strategy: safeStringify(ixNode.optionalAccountStrategy),\n });\n }\n}\n","import { CODAMA_ERROR__DYNAMIC_CLIENT__ACCOUNT_MISSING, CodamaError } from '@codama/errors';\nimport type { Address } from '@solana/addresses';\nimport type { InstructionAccountNode, InstructionNode, RootNode } from 'codama';\n\nimport { toAddress } from '../shared/address';\nimport type { AccountsInput, ArgumentsInput, ResolverFnInput, ResolversInput } from '../shared/types';\nimport { resolveAccountAddress } from './resolve-account-address';\n\nexport type ResolveInstructionAccountAddressInput<\n TAccounts extends AccountsInput = AccountsInput,\n TArgs extends ArgumentsInput = ArgumentsInput,\n TResolvers extends ResolverFnInput = ResolversInput,\n> = {\n accountsInput?: TAccounts;\n argumentsInput?: TArgs;\n ixAccountNode: InstructionAccountNode;\n ixNode: InstructionNode;\n resolversInput?: TResolvers;\n root: RootNode;\n};\n\nexport async function resolveInstructionAccountAddress<\n TAccounts extends AccountsInput = AccountsInput,\n TArgs extends ArgumentsInput = ArgumentsInput,\n TResolvers extends ResolverFnInput = ResolversInput,\n>({\n accountsInput,\n argumentsInput,\n ixAccountNode,\n ixNode,\n resolversInput,\n root,\n}: ResolveInstructionAccountAddressInput<TAccounts, TArgs, TResolvers>): Promise<Address | null> {\n const accountAddressInput = accountsInput?.[ixAccountNode.name];\n const isAccountProvided = accountAddressInput !== undefined && accountAddressInput !== null;\n\n // Accounts values (with default or with optionalAccountStrategy) can be omitted, as they are auto-resolved.\n // [AccountStatus + HasDefaultValue + UserInput]:\n // - Required + no default + undefined: throws.\n // - Required + no default + null: throws.\n // - Required + default + undefined: resolves from default value.\n // - Required + default + null: resolves from default value.\n // - Optional + no default + undefined: throws.\n // - Optional + no default + null: resolves from optionalAccountStrategy (programId or omitted).\n // - Optional + default + undefined: resolves from default value.\n // - Optional + default + null: resolves from optionalAccountStrategy (programId or omitted).\n const canAutoResolve = !!ixAccountNode.defaultValue || (ixAccountNode.isOptional && accountAddressInput === null);\n\n if (!isAccountProvided && !canAutoResolve) {\n throw new CodamaError(CODAMA_ERROR__DYNAMIC_CLIENT__ACCOUNT_MISSING, {\n accountName: ixAccountNode.name,\n instructionName: ixNode.name,\n });\n }\n\n if (isAccountProvided) {\n return toAddress(accountAddressInput);\n }\n\n return await resolveAccountAddress({\n accountsInput,\n argumentsInput,\n ixAccountNode,\n ixNode,\n resolutionPath: [],\n resolversInput,\n root,\n });\n}\n","import { getNodeCodec } from '@codama/dynamic-codecs';\nimport {\n CODAMA_ERROR__DYNAMIC_CLIENT__ARGUMENT_MISSING,\n CODAMA_ERROR__DYNAMIC_CLIENT__UNEXPECTED_ARGUMENT_TYPE,\n CODAMA_ERROR__UNEXPECTED_NODE_KIND,\n CODAMA_ERROR__UNRECOGNIZED_NODE_KIND,\n CodamaError,\n} from '@codama/errors';\nimport type { Address, ProgramDerivedAddress } from '@solana/addresses';\nimport { getProgramDerivedAddress } from '@solana/addresses';\nimport type { ReadonlyUint8Array } from '@solana/codecs';\nimport type { InstructionNode, PdaNode, RegisteredPdaSeedNode, RootNode, VariablePdaSeedNode } from 'codama';\nimport { camelCase, isNode, visitOrElse } from 'codama';\n\nimport { toAddress } from '../shared/address';\nimport { getMemoizedUtf8Encoder } from '../shared/codecs';\nimport { formatValueType, getMaybeNodeKind } from '../shared/util';\nimport { createCodecInputTransformer } from '../visitors/codec-input-transformer';\nimport { createPdaSeedValueVisitor, PDA_SEED_VALUE_SUPPORTED_NODE_KINDS } from '../visitors/pda-seed-value';\n\n/**\n * Minimal InstructionNode stub to satisfy constant PDA seeds requirements.\n * Constant seeds only use programIdValue / publicKeyValue / bytesValue / stringValue, none of which reference instruction arguments or accounts\n */\nconst STANDALONE_IX_NODE: InstructionNode = {\n accounts: [],\n arguments: [],\n kind: 'instructionNode',\n name: '__standalone__' as InstructionNode['name'],\n};\n\n/**\n * Derives a PDA from a standalone `PdaNode` and user-supplied seed values,\n * without requiring an instruction context.\n */\nexport async function resolveStandalonePda(\n root: RootNode,\n pdaNode: PdaNode,\n seedInputs: Record<string, unknown> = {},\n): Promise<ProgramDerivedAddress> {\n const programAddress = toAddress(pdaNode.programId || root.program.publicKey);\n const seedValues = await Promise.all(\n pdaNode.seeds.map(async (seedNode): Promise<ReadonlyUint8Array> => {\n if (seedNode.kind === 'constantPdaSeedNode') {\n return await resolveStandaloneConstantSeed(root, programAddress, seedNode);\n }\n if (seedNode.kind === 'variablePdaSeedNode') {\n return await resolveStandaloneVariableSeed(root, seedNode, seedInputs);\n }\n throw new CodamaError(CODAMA_ERROR__UNRECOGNIZED_NODE_KIND, {\n kind: getMaybeNodeKind(seedNode) ?? 'unknown',\n });\n }),\n );\n\n return await getProgramDerivedAddress({ programAddress, seeds: seedValues });\n}\n\nfunction resolveStandaloneConstantSeed(\n root: RootNode,\n programAddress: Address,\n seedNode: RegisteredPdaSeedNode,\n): Promise<ReadonlyUint8Array> {\n if (!isNode(seedNode, 'constantPdaSeedNode')) {\n throw new CodamaError(CODAMA_ERROR__UNEXPECTED_NODE_KIND, {\n expectedKinds: ['constantPdaSeedNode'],\n kind: seedNode.kind,\n node: seedNode,\n });\n }\n const visitor = createPdaSeedValueVisitor({\n accountsInput: undefined,\n argumentsInput: undefined,\n ixNode: STANDALONE_IX_NODE,\n programId: programAddress,\n resolutionPath: [],\n resolversInput: undefined,\n root,\n });\n return visitOrElse(seedNode.value, visitor, node => {\n throw new CodamaError(CODAMA_ERROR__UNEXPECTED_NODE_KIND, {\n expectedKinds: Array.from(PDA_SEED_VALUE_SUPPORTED_NODE_KINDS),\n kind: node.kind,\n node,\n });\n });\n}\n\nfunction resolveStandaloneVariableSeed(\n root: RootNode,\n seedNode: VariablePdaSeedNode,\n seedInputs: Record<string, unknown>,\n): Promise<ReadonlyUint8Array> {\n const input = seedInputs[seedNode.name];\n const typeNode = seedNode.type;\n\n // remainderOptionTypeNode seeds are optional — null means zero bytes.\n if (input === undefined || input === null) {\n if (isNode(typeNode, 'remainderOptionTypeNode')) {\n return Promise.resolve(new Uint8Array(0));\n }\n throw new CodamaError(CODAMA_ERROR__DYNAMIC_CLIENT__ARGUMENT_MISSING, {\n argumentName: seedNode.name,\n instructionName: camelCase('standaloneSeedNode'),\n });\n }\n\n // For simple string seeds encode directly with UTF-8 (no length prefix)\n if (isNode(typeNode, 'stringTypeNode')) {\n if (typeof input !== 'string') {\n throw new CodamaError(CODAMA_ERROR__DYNAMIC_CLIENT__UNEXPECTED_ARGUMENT_TYPE, {\n actualType: formatValueType(input),\n expectedType: 'string',\n nodeKind: 'stringTypeNode',\n });\n }\n return Promise.resolve(getMemoizedUtf8Encoder().encode(input));\n }\n\n // Create a synthetic instructionArgumentNode so getNodeCodec can resolve the type.\n // The seed's declared type is used directly (no size-prefix wrapper).\n const syntheticArgNode = createSyntheticArgNode(seedNode);\n const codec = getNodeCodec([root, root.program, syntheticArgNode]);\n const transformer = createCodecInputTransformer(typeNode, root, { bytesEncoding: 'base16' });\n const transformedInput = transformer(input);\n return Promise.resolve(codec.encode(transformedInput));\n}\n\nfunction createSyntheticArgNode(seedNode: VariablePdaSeedNode) {\n return {\n docs: [] as string[],\n kind: 'instructionArgumentNode' as const,\n name: seedNode.name,\n type: seedNode.type,\n };\n}\n","import type { ReadonlyUint8Array } from '@solana/codecs';\nimport type { Visitor } from 'codama';\nimport type {\n BooleanValueNode,\n BytesValueNode,\n EnumValueNode,\n NumberValueNode,\n PublicKeyValueNode,\n StringValueNode,\n} from 'codama';\n\nexport const DEFAULT_VALUE_ENCODER_SUPPORTED_NODE_KINDS = [\n 'booleanValueNode',\n 'bytesValueNode',\n 'enumValueNode',\n 'noneValueNode',\n 'numberValueNode',\n 'publicKeyValueNode',\n 'stringValueNode',\n] as const;\n\ntype DefaultValueEncoderSupportedNodeKind = (typeof DEFAULT_VALUE_ENCODER_SUPPORTED_NODE_KINDS)[number];\n\n/**\n * Visitor for encoding default (omitted) values for instruction arguments.\n *\n * Today, Anchor/Codama primarily uses omitted defaults for discriminators\n * (`bytesValueNode`), but this visitor is intentionally extensible as we\n * expand node coverage over time.\n */\nexport function createDefaultValueEncoderVisitor(codec: {\n encode: (value: unknown) => ReadonlyUint8Array;\n}): Visitor<ReadonlyUint8Array, DefaultValueEncoderSupportedNodeKind> {\n return {\n visitBooleanValue: (node: BooleanValueNode) => codec.encode(node.boolean),\n visitBytesValue: (node: BytesValueNode) => codec.encode([node.encoding, node.data]),\n visitEnumValue: (node: EnumValueNode) => codec.encode(node.variant),\n visitNoneValue: () => codec.encode(null),\n visitNumberValue: (node: NumberValueNode) => codec.encode(node.number),\n visitPublicKeyValue: (node: PublicKeyValueNode) => codec.encode(node.publicKey),\n visitStringValue: (node: StringValueNode) => codec.encode(node.string),\n };\n}\n","export const OPTIONAL_NODE_KINDS = ['optionTypeNode', 'zeroableOptionTypeNode', 'remainderOptionTypeNode'];\n"]}
|