{"version":3,"sources":["../../src/canTransfer.ts","../../src/generated/pdas/treeConfig.ts","../../src/generated/pdas/voucher.ts","../../src/generated/types/assetDataSchema.ts","../../src/generated/types/bubblegumEventType.ts","../../src/generated/types/collection.ts","../../src/generated/types/creator.ts","../../src/generated/types/decompressibleState.ts","../../src/generated/types/leafSchema.ts","../../src/generated/types/metadataArgs.ts","../../src/generated/types/metadataArgsV2.ts","../../src/generated/types/tokenProgramVersion.ts","../../src/generated/types/tokenStandard.ts","../../src/generated/types/updateArgs.ts","../../src/generated/types/useMethod.ts","../../src/generated/types/uses.ts","../../src/generated/types/version.ts","../../src/generated/accounts/treeConfig.ts","../../src/generated/accounts/voucher.ts","../../src/generated/programs/mplBubblegum.ts","../../src/generated/errors/mplBubblegum.ts","../../src/generated/shared/index.ts","../../src/generated/instructions/burn.ts","../../src/generated/instructions/burnV2.ts","../../src/generated/instructions/cancelRedeem.ts","../../src/generated/instructions/collectV2.ts","../../src/generated/instructions/createTreeConfig.ts","../../src/generated/instructions/createTreeConfigV2.ts","../../src/hooked/associatedToken.ts","../../src/hooked/masterEdition.ts","../../src/hooked/metadata.ts","../../src/hooked/mintAuthority.ts","../../src/leafAssetId.ts","../../src/hash.ts","../../src/hooked/resolvers.ts","../../src/generated/instructions/decompressV1.ts","../../src/generated/instructions/delegate.ts","../../src/generated/instructions/delegateAndFreezeV2.ts","../../src/generated/instructions/delegateV2.ts","../../src/generated/instructions/freezeV2.ts","../../src/generated/instructions/mintToCollectionV1.ts","../../src/generated/instructions/mintV1.ts","../../src/generated/instructions/mintV2.ts","../../src/generated/instructions/redeem.ts","../../src/generated/instructions/setAndVerifyCollection.ts","../../src/generated/instructions/setCollectionV2.ts","../../src/generated/instructions/setDecompressibleState.ts","../../src/generated/instructions/setNonTransferableV2.ts","../../src/generated/instructions/setTreeDelegate.ts","../../src/generated/instructions/thawAndRevokeV2.ts","../../src/generated/instructions/thawV2.ts","../../src/generated/instructions/transfer.ts","../../src/generated/instructions/transferV2.ts","../../src/generated/instructions/unverifyCollection.ts","../../src/generated/instructions/unverifyCreator.ts","../../src/generated/instructions/unverifyCreatorV2.ts","../../src/generated/instructions/updateAssetDataV2.ts","../../src/generated/instructions/updateMetadata.ts","../../src/generated/instructions/updateMetadataV2.ts","../../src/generated/instructions/verifyCollection.ts","../../src/generated/instructions/verifyCreator.ts","../../src/generated/instructions/verifyCreatorV2.ts","../../src/getMinimumBalanceForRentExemption.ts","../../src/createTree.ts","../../src/flags.ts","../../src/getAssetWithProof.ts","../../src/merkleTree.ts"],"names":["getProgramDerivedAddress","getAddressEncoder","AssetDataSchema","BubblegumEventType","getEnumEncoder","getEnumDecoder","combineCodec","getStructEncoder","getBooleanEncoder","getStructDecoder","getAddressDecoder","getBooleanDecoder","DecompressibleState","getU64Encoder","getU8Encoder","getU8Decoder","getUtf8Encoder","transformEncoder","addEncoderSizePrefix","getU32Encoder","getU16Encoder","getOptionEncoder","getArrayEncoder","some","addDecoderSizePrefix","getUtf8Decoder","getU32Decoder","getU16Decoder","getOptionDecoder","getArrayDecoder","TokenProgramVersion","TokenStandard","none","UseMethod","getU64Decoder","Version","fixEncoderSize","getBytesEncoder","fixDecoderSize","getBytesDecoder","address","decodeAccount","assertAccountExists","fetchEncodedAccount","assertAccountsExist","fetchEncodedAccounts","MplBubblegumAccount","MplBubblegumInstruction","kitIsTransactionSigner","AccountRole","BASE_ACCOUNT_SIZE","keccak_256"],"mappings":";;;;;;;AAGA,SAAS,iBACP,KAAA,EACyB;AACzB,EAAA,OAAO,UAAA,IAAc,KAAA;AACvB;AAEO,SAAS,YAAY,KAAA,EAA8C;AACxE,EAAA,MAAM,YAAY,gBAAA,CAAiB,KAAK,IACpC,KAAA,CAAM,QAAA,CAAS,YACf,KAAA,CAAM,SAAA;AAEV,EAAA,MAAM,QAAA,GACJ,SAAA,CAAU,MAAA,KAAW,IAAA,IAAQ,UAAU,gBAAA,KAAqB,IAAA;AAC9D,EAAA,OAAO,CAAC,QAAA;AACV;ACEA,eAAsB,iBAAA,CACpB,KAAA,EACA,MAAA,GAAmD,EAAC,EACpB;AAChC,EAAA,MAAM;AAAA,IACJ,cAAA,GAAiB;AAAA,GACnB,GAAI,MAAA;AACJ,EAAA,OAAO,MAAM,wBAAA,CAAyB;AAAA,IACpC,cAAA;AAAA,IACA,OAAO,CAAC,iBAAA,GAAoB,MAAA,CAAO,KAAA,CAAM,UAAU,CAAC;AAAA,GACrD,CAAA;AACH;ACRA,eAAsB,cAAA,CACpB,KAAA,EACA,MAAA,GAAmD,EAAC,EACpB;AAChC,EAAA,MAAM;AAAA,IACJ,cAAA,GAAiB;AAAA,GACnB,GAAI,MAAA;AACJ,EAAA,OAAO,MAAMA,wBAAAA,CAAyB;AAAA,IACpC,cAAA;AAAA,IACA,KAAA,EAAO;AAAA,MACL,cAAA,EAAe,CAAE,MAAA,CAAO,SAAS,CAAA;AAAA,MACjCC,iBAAAA,EAAkB,CAAE,MAAA,CAAO,KAAA,CAAM,UAAU,CAAA;AAAA,MAC3C,aAAA,EAAc,CAAE,MAAA,CAAO,KAAA,CAAM,KAAK;AAAA;AACpC,GACD,CAAA;AACH;ACpBO,IAAK,eAAA,qBAAAC,gBAAAA,KAAL;AACL,EAAAA,gBAAAA,CAAAA,gBAAAA,CAAA,QAAA,CAAA,GAAA,CAAA,CAAA,GAAA,QAAA;AACA,EAAAA,gBAAAA,CAAAA,gBAAAA,CAAA,MAAA,CAAA,GAAA,CAAA,CAAA,GAAA,MAAA;AACA,EAAAA,gBAAAA,CAAAA,gBAAAA,CAAA,SAAA,CAAA,GAAA,CAAA,CAAA,GAAA,SAAA;AAHU,EAAA,OAAAA,gBAAAA;AAAA,CAAA,EAAA,eAAA,IAAA,EAAA;AAQL,SAAS,yBAAA,GAAmE;AACjF,EAAA,OAAO,eAAe,eAAe,CAAA;AACvC;AAEO,SAAS,yBAAA,GAA+D;AAC7E,EAAA,OAAO,eAAe,eAAe,CAAA;AACvC;AAEO,SAAS,uBAAA,GAGd;AACA,EAAA,OAAO,YAAA,CAAa,yBAAA,EAA0B,EAAG,yBAAA,EAA2B,CAAA;AAC9E;ACrBO,IAAK,kBAAA,qBAAAC,mBAAAA,KAAL;AACL,EAAAA,mBAAAA,CAAAA,mBAAAA,CAAA,eAAA,CAAA,GAAA,CAAA,CAAA,GAAA,eAAA;AACA,EAAAA,mBAAAA,CAAAA,mBAAAA,CAAA,iBAAA,CAAA,GAAA,CAAA,CAAA,GAAA,iBAAA;AAFU,EAAA,OAAAA,mBAAAA;AAAA,CAAA,EAAA,kBAAA,IAAA,EAAA;AAOL,SAAS,4BAAA,GAAyE;AACvF,EAAA,OAAOC,eAAe,kBAAkB,CAAA;AAC1C;AAEO,SAAS,4BAAA,GAAqE;AACnF,EAAA,OAAOC,eAAe,kBAAkB,CAAA;AAC1C;AAEO,SAAS,0BAAA,GAGd;AACA,EAAA,OAAOC,YAAAA;AAAA,IACL,4BAAA,EAA6B;AAAA,IAC7B,4BAAA;AAA6B,GAC/B;AACF;ACdO,SAAS,oBAAA,GAAyD;AACvE,EAAA,OAAO,gBAAA,CAAiB;AAAA,IACtB,CAAC,UAAA,EAAY,iBAAA,EAAmB,CAAA;AAAA,IAChC,CAAC,KAAA,EAAOL,iBAAAA,EAAmB;AAAA,GAC5B,CAAA;AACH;AAEO,SAAS,oBAAA,GAAqD;AACnE,EAAA,OAAO,gBAAA,CAAiB;AAAA,IACtB,CAAC,UAAA,EAAY,iBAAA,EAAmB,CAAA;AAAA,IAChC,CAAC,KAAA,EAAO,iBAAA,EAAmB;AAAA,GAC5B,CAAA;AACH;AAEO,SAAS,kBAAA,GAGd;AACA,EAAA,OAAOK,YAAAA,CAAa,oBAAA,EAAqB,EAAG,oBAAA,EAAsB,CAAA;AACpE;ACRO,SAAS,iBAAA,GAAmD;AACjE,EAAA,OAAOC,gBAAAA,CAAiB;AAAA,IACtB,CAAC,SAAA,EAAWN,iBAAAA,EAAmB,CAAA;AAAA,IAC/B,CAAC,UAAA,EAAYO,iBAAAA,EAAmB,CAAA;AAAA,IAChC,CAAC,OAAA,EAAS,YAAA,EAAc;AAAA,GACzB,CAAA;AACH;AAEO,SAAS,iBAAA,GAA+C;AAC7D,EAAA,OAAOC,gBAAAA,CAAiB;AAAA,IACtB,CAAC,SAAA,EAAWC,iBAAAA,EAAmB,CAAA;AAAA,IAC/B,CAAC,UAAA,EAAYC,iBAAAA,EAAmB,CAAA;AAAA,IAChC,CAAC,OAAA,EAAS,YAAA,EAAc;AAAA,GACzB,CAAA;AACH;AAEO,SAAS,eAAA,GAAwD;AACtE,EAAA,OAAOL,YAAAA,CAAa,iBAAA,EAAkB,EAAG,iBAAA,EAAmB,CAAA;AAC9D;ACtCO,IAAK,mBAAA,qBAAAM,oBAAAA,KAAL;AACL,EAAAA,oBAAAA,CAAAA,oBAAAA,CAAA,SAAA,CAAA,GAAA,CAAA,CAAA,GAAA,SAAA;AACA,EAAAA,oBAAAA,CAAAA,oBAAAA,CAAA,UAAA,CAAA,GAAA,CAAA,CAAA,GAAA,UAAA;AAFU,EAAA,OAAAA,oBAAAA;AAAA,CAAA,EAAA,mBAAA,IAAA,EAAA;AAOL,SAAS,6BAAA,GAA2E;AACzF,EAAA,OAAOR,eAAe,mBAAmB,CAAA;AAC3C;AAEO,SAAS,6BAAA,GAAuE;AACrF,EAAA,OAAOC,eAAe,mBAAmB,CAAA;AAC3C;AAEO,SAAS,2BAAA,GAGd;AACA,EAAA,OAAOC,YAAAA;AAAA,IACL,6BAAA,EAA8B;AAAA,IAC9B,6BAAA;AAA8B,GAChC;AACF;ACuCO,SAAS,oBAAA,GAAgD;AAC9D,EAAA,OAAO,4BAAA,CAA6B;AAAA,IAClC;AAAA,MACE,IAAA;AAAA,MACAC,gBAAAA,CAAiB;AAAA,QACf,CAAC,IAAA,EAAMN,iBAAAA,EAAmB,CAAA;AAAA,QAC1B,CAAC,OAAA,EAASA,iBAAAA,EAAmB,CAAA;AAAA,QAC7B,CAAC,UAAA,EAAYA,iBAAAA,EAAmB,CAAA;AAAA,QAChC,CAAC,OAAA,EAASY,aAAAA,EAAe,CAAA;AAAA,QACzB,CAAC,UAAA,EAAY,cAAA,CAAe,eAAA,EAAgB,EAAG,EAAE,CAAC,CAAA;AAAA,QAClD,CAAC,aAAA,EAAe,cAAA,CAAe,eAAA,EAAgB,EAAG,EAAE,CAAC;AAAA,OACtD;AAAA,KACH;AAAA,IACA;AAAA,MACE,IAAA;AAAA,MACAN,gBAAAA,CAAiB;AAAA,QACf,CAAC,IAAA,EAAMN,iBAAAA,EAAmB,CAAA;AAAA,QAC1B,CAAC,OAAA,EAASA,iBAAAA,EAAmB,CAAA;AAAA,QAC7B,CAAC,UAAA,EAAYA,iBAAAA,EAAmB,CAAA;AAAA,QAChC,CAAC,OAAA,EAASY,aAAAA,EAAe,CAAA;AAAA,QACzB,CAAC,UAAA,EAAY,cAAA,CAAe,eAAA,EAAgB,EAAG,EAAE,CAAC,CAAA;AAAA,QAClD,CAAC,aAAA,EAAe,cAAA,CAAe,eAAA,EAAgB,EAAG,EAAE,CAAC,CAAA;AAAA,QACrD,CAAC,gBAAA,EAAkB,cAAA,CAAe,eAAA,EAAgB,EAAG,EAAE,CAAC,CAAA;AAAA,QACxD,CAAC,eAAA,EAAiB,cAAA,CAAe,eAAA,EAAgB,EAAG,EAAE,CAAC,CAAA;AAAA,QACvD,CAAC,OAAA,EAASC,YAAAA,EAAc;AAAA,OACzB;AAAA;AACH,GACD,CAAA;AACH;AAEO,SAAS,oBAAA,GAA4C;AAC1D,EAAA,OAAO,4BAAA,CAA6B;AAAA,IAClC;AAAA,MACE,IAAA;AAAA,MACAL,gBAAAA,CAAiB;AAAA,QACf,CAAC,IAAA,EAAMC,iBAAAA,EAAmB,CAAA;AAAA,QAC1B,CAAC,OAAA,EAASA,iBAAAA,EAAmB,CAAA;AAAA,QAC7B,CAAC,UAAA,EAAYA,iBAAAA,EAAmB,CAAA;AAAA,QAChC,CAAC,OAAA,EAAS,aAAA,EAAe,CAAA;AAAA,QACzB,CAAC,UAAA,EAAY,cAAA,CAAe,eAAA,EAAgB,EAAG,EAAE,CAAC,CAAA;AAAA,QAClD,CAAC,aAAA,EAAe,cAAA,CAAe,eAAA,EAAgB,EAAG,EAAE,CAAC;AAAA,OACtD;AAAA,KACH;AAAA,IACA;AAAA,MACE,IAAA;AAAA,MACAD,gBAAAA,CAAiB;AAAA,QACf,CAAC,IAAA,EAAMC,iBAAAA,EAAmB,CAAA;AAAA,QAC1B,CAAC,OAAA,EAASA,iBAAAA,EAAmB,CAAA;AAAA,QAC7B,CAAC,UAAA,EAAYA,iBAAAA,EAAmB,CAAA;AAAA,QAChC,CAAC,OAAA,EAAS,aAAA,EAAe,CAAA;AAAA,QACzB,CAAC,UAAA,EAAY,cAAA,CAAe,eAAA,EAAgB,EAAG,EAAE,CAAC,CAAA;AAAA,QAClD,CAAC,aAAA,EAAe,cAAA,CAAe,eAAA,EAAgB,EAAG,EAAE,CAAC,CAAA;AAAA,QACrD,CAAC,gBAAA,EAAkB,cAAA,CAAe,eAAA,EAAgB,EAAG,EAAE,CAAC,CAAA;AAAA,QACxD,CAAC,eAAA,EAAiB,cAAA,CAAe,eAAA,EAAgB,EAAG,EAAE,CAAC,CAAA;AAAA,QACvD,CAAC,OAAA,EAASK,YAAAA,EAAc;AAAA,OACzB;AAAA;AACH,GACD,CAAA;AACH;AAEO,SAAS,kBAAA,GAAwD;AACtE,EAAA,OAAOT,YAAAA,CAAa,oBAAA,EAAqB,EAAG,oBAAA,EAAsB,CAAA;AACpE;AAWO,SAAS,UAAA,CACd,MACA,IAAA,EACA;AACA,EAAA,OAAO,MAAM,OAAA,CAAQ,IAAI,CAAA,GACrB,EAAE,QAAQ,IAAA,EAAM,MAAA,EAAQ,IAAA,EAAK,GAC7B,EAAE,MAAA,EAAQ,IAAA,EAAM,GAAI,IAAA,IAAQ,EAAC,EAAG;AACtC;AAEO,SAAS,YAAA,CACd,MACA,KAAA,EACqC;AACrC,EAAA,OAAO,MAAM,MAAA,KAAW,IAAA;AAC1B;ACxDO,SAAS,sBAAA,GAAoD;AAClE,EAAA,OAAO,gBAAA;AAAA,IACLC,gBAAAA,CAAiB;AAAA,MACf,CAAC,MAAA,EAAQ,oBAAA,CAAqBS,gBAAe,EAAG,aAAA,EAAe,CAAC,CAAA;AAAA,MAChE,CAAC,QAAA,EAAU,oBAAA,CAAqBA,gBAAe,EAAG,aAAA,EAAe,CAAC,CAAA;AAAA,MAClE,CAAC,KAAA,EAAO,oBAAA,CAAqBA,gBAAe,EAAG,aAAA,EAAe,CAAC,CAAA;AAAA,MAC/D,CAAC,sBAAA,EAAwB,aAAA,EAAe,CAAA;AAAA,MACxC,CAAC,qBAAA,EAAuBR,iBAAAA,EAAmB,CAAA;AAAA,MAC3C,CAAC,WAAA,EAAaA,iBAAAA,EAAmB,CAAA;AAAA,MACjC,CAAC,cAAA,EAAgB,gBAAA,CAAiBM,YAAAA,EAAc,CAAC,CAAA;AAAA,MACjD,CAAC,eAAA,EAAiB,gBAAA,CAAiB,uBAAA,EAAyB,CAAC,CAAA;AAAA,MAC7D,CAAC,YAAA,EAAc,gBAAA,CAAiB,oBAAA,EAAsB,CAAC,CAAA;AAAA,MACvD,CAAC,MAAA,EAAQ,gBAAA,CAAiB,cAAA,EAAgB,CAAC,CAAA;AAAA,MAC3C,CAAC,qBAAA,EAAuB,6BAAA,EAA+B,CAAA;AAAA,MACvD,CAAC,UAAA,EAAY,eAAA,CAAgB,iBAAA,EAAmB,CAAC;AAAA,KAClD,CAAA;AAAA,IACD,CAAC,KAAA,MAAW;AAAA,MACV,GAAG,KAAA;AAAA,MACH,MAAA,EAAQ,MAAM,MAAA,IAAU,EAAA;AAAA,MACxB,mBAAA,EAAqB,MAAM,mBAAA,IAAuB,KAAA;AAAA,MAClD,SAAA,EAAW,MAAM,SAAA,IAAa,IAAA;AAAA,MAC9B,YAAA,EAAc,KAAA,CAAM,YAAA,IAAgB,IAAA,EAAK;AAAA,MACzC,aAAA,EAAe,KAAA,CAAM,aAAA,IAAiB,IAAA,CAAA,CAAA,mBAA8B;AAAA,MACpE,IAAA,EAAM,KAAA,CAAM,IAAA,IAAQ,IAAA,EAAK;AAAA,MACzB,qBACE,KAAA,CAAM,mBAAA,IAAA,CAAA;AAAA,KACV;AAAA,GACF;AACF;AAEO,SAAS,sBAAA,GAAgD;AAC9D,EAAA,OAAOL,gBAAAA,CAAiB;AAAA,IACtB,CAAC,MAAA,EAAQ,oBAAA,CAAqB,gBAAe,EAAG,aAAA,EAAe,CAAC,CAAA;AAAA,IAChE,CAAC,QAAA,EAAU,oBAAA,CAAqB,gBAAe,EAAG,aAAA,EAAe,CAAC,CAAA;AAAA,IAClE,CAAC,KAAA,EAAO,oBAAA,CAAqB,gBAAe,EAAG,aAAA,EAAe,CAAC,CAAA;AAAA,IAC/D,CAAC,sBAAA,EAAwB,aAAA,EAAe,CAAA;AAAA,IACxC,CAAC,qBAAA,EAAuBE,iBAAAA,EAAmB,CAAA;AAAA,IAC3C,CAAC,WAAA,EAAaA,iBAAAA,EAAmB,CAAA;AAAA,IACjC,CAAC,cAAA,EAAgB,gBAAA,CAAiBI,YAAAA,EAAc,CAAC,CAAA;AAAA,IACjD,CAAC,eAAA,EAAiB,gBAAA,CAAiB,uBAAA,EAAyB,CAAC,CAAA;AAAA,IAC7D,CAAC,YAAA,EAAc,gBAAA,CAAiB,oBAAA,EAAsB,CAAC,CAAA;AAAA,IACvD,CAAC,MAAA,EAAQ,gBAAA,CAAiB,cAAA,EAAgB,CAAC,CAAA;AAAA,IAC3C,CAAC,qBAAA,EAAuB,6BAAA,EAA+B,CAAA;AAAA,IACvD,CAAC,UAAA,EAAY,eAAA,CAAgB,iBAAA,EAAmB,CAAC;AAAA,GAClD,CAAA;AACH;AAEO,SAAS,oBAAA,GAA8D;AAC5E,EAAA,OAAOT,YAAAA,CAAa,sBAAA,EAAuB,EAAG,sBAAA,EAAwB,CAAA;AACxE;ACrEO,SAAS,wBAAA,GAAwD;AACtE,EAAA,OAAOW,gBAAAA;AAAA,IACLV,gBAAAA,CAAiB;AAAA,MACf,CAAC,MAAA,EAAQW,oBAAAA,CAAqBF,gBAAe,EAAGG,aAAAA,EAAe,CAAC,CAAA;AAAA,MAChE,CAAC,QAAA,EAAUD,oBAAAA,CAAqBF,gBAAe,EAAGG,aAAAA,EAAe,CAAC,CAAA;AAAA,MAClE,CAAC,KAAA,EAAOD,oBAAAA,CAAqBF,gBAAe,EAAGG,aAAAA,EAAe,CAAC,CAAA;AAAA,MAC/D,CAAC,sBAAA,EAAwBC,aAAAA,EAAe,CAAA;AAAA,MACxC,CAAC,qBAAA,EAAuBZ,iBAAAA,EAAmB,CAAA;AAAA,MAC3C,CAAC,WAAA,EAAaA,iBAAAA,EAAmB,CAAA;AAAA,MACjC,CAAC,eAAA,EAAiBa,gBAAAA,CAAiB,uBAAA,EAAyB,CAAC,CAAA;AAAA,MAC7D,CAAC,UAAA,EAAYC,eAAAA,CAAgB,iBAAA,EAAmB,CAAC,CAAA;AAAA,MACjD,CAAC,YAAA,EAAcD,gBAAAA,CAAiBpB,iBAAAA,EAAmB,CAAC;AAAA,KACrD,CAAA;AAAA,IACD,CAAC,KAAA,MAAW;AAAA,MACV,GAAG,KAAA;AAAA,MACH,MAAA,EAAQ,MAAM,MAAA,IAAU,EAAA;AAAA,MACxB,mBAAA,EAAqB,MAAM,mBAAA,IAAuB,KAAA;AAAA,MAClD,SAAA,EAAW,MAAM,SAAA,IAAa,IAAA;AAAA,MAC9B,aAAA,EAAe,KAAA,CAAM,aAAA,IAAiBsB,IAAAA,CAAAA,CAAAA;AAA8B,KACtE;AAAA,GACF;AACF;AAEO,SAAS,wBAAA,GAAoD;AAClE,EAAA,OAAOd,gBAAAA,CAAiB;AAAA,IACtB,CAAC,MAAA,EAAQe,oBAAAA,CAAqBC,gBAAe,EAAGC,aAAAA,EAAe,CAAC,CAAA;AAAA,IAChE,CAAC,QAAA,EAAUF,oBAAAA,CAAqBC,gBAAe,EAAGC,aAAAA,EAAe,CAAC,CAAA;AAAA,IAClE,CAAC,KAAA,EAAOF,oBAAAA,CAAqBC,gBAAe,EAAGC,aAAAA,EAAe,CAAC,CAAA;AAAA,IAC/D,CAAC,sBAAA,EAAwBC,aAAAA,EAAe,CAAA;AAAA,IACxC,CAAC,qBAAA,EAAuBhB,iBAAAA,EAAmB,CAAA;AAAA,IAC3C,CAAC,WAAA,EAAaA,iBAAAA,EAAmB,CAAA;AAAA,IACjC,CAAC,eAAA,EAAiBiB,gBAAAA,CAAiB,uBAAA,EAAyB,CAAC,CAAA;AAAA,IAC7D,CAAC,UAAA,EAAYC,eAAAA,CAAgB,iBAAA,EAAmB,CAAC,CAAA;AAAA,IACjD,CAAC,YAAA,EAAcD,gBAAAA,CAAiBlB,iBAAAA,EAAmB,CAAC;AAAA,GACrD,CAAA;AACH;AAEO,SAAS,sBAAA,GAGd;AACA,EAAA,OAAOJ,YAAAA,CAAa,wBAAA,EAAyB,EAAG,wBAAA,EAA0B,CAAA;AAC5E;ACnHO,IAAK,mBAAA,qBAAAwB,oBAAAA,KAAL;AACL,EAAAA,oBAAAA,CAAAA,oBAAAA,CAAA,UAAA,CAAA,GAAA,CAAA,CAAA,GAAA,UAAA;AACA,EAAAA,oBAAAA,CAAAA,oBAAAA,CAAA,WAAA,CAAA,GAAA,CAAA,CAAA,GAAA,WAAA;AAFU,EAAA,OAAAA,oBAAAA;AAAA,CAAA,EAAA,mBAAA,IAAA,EAAA;AAOL,SAAS,6BAAA,GAA2E;AACzF,EAAA,OAAO1B,eAAe,mBAAmB,CAAA;AAC3C;AAEO,SAAS,6BAAA,GAAuE;AACrF,EAAA,OAAOC,eAAe,mBAAmB,CAAA;AAC3C;AAEO,SAAS,2BAAA,GAGd;AACA,EAAA,OAAOC,YAAAA;AAAA,IACL,6BAAA,EAA8B;AAAA,IAC9B,6BAAA;AAA8B,GAChC;AACF;ACvBO,IAAK,aAAA,qBAAAyB,cAAAA,KAAL;AACL,EAAAA,cAAAA,CAAAA,cAAAA,CAAA,aAAA,CAAA,GAAA,CAAA,CAAA,GAAA,aAAA;AACA,EAAAA,cAAAA,CAAAA,cAAAA,CAAA,eAAA,CAAA,GAAA,CAAA,CAAA,GAAA,eAAA;AACA,EAAAA,cAAAA,CAAAA,cAAAA,CAAA,UAAA,CAAA,GAAA,CAAA,CAAA,GAAA,UAAA;AACA,EAAAA,cAAAA,CAAAA,cAAAA,CAAA,oBAAA,CAAA,GAAA,CAAA,CAAA,GAAA,oBAAA;AAJU,EAAA,OAAAA,cAAAA;AAAA,CAAA,EAAA,aAAA,IAAA,EAAA;AASL,SAAS,uBAAA,GAA+D;AAC7E,EAAA,OAAO3B,eAAe,aAAa,CAAA;AACrC;AAEO,SAAS,uBAAA,GAA2D;AACzE,EAAA,OAAOC,eAAe,aAAa,CAAA;AACrC;AAEO,SAAS,qBAAA,GAGd;AACA,EAAA,OAAOC,YAAAA,CAAa,uBAAA,EAAwB,EAAG,uBAAA,EAAyB,CAAA;AAC1E;ACsBO,SAAS,oBAAA,GAAgD;AAC9D,EAAA,OAAOW,gBAAAA;AAAA,IACLV,gBAAAA,CAAiB;AAAA,MACf;AAAA,QACE,MAAA;AAAA,QACAc,gBAAAA;AAAA,UACEH,oBAAAA,CAAqBF,cAAAA,EAAe,EAAGG,aAAAA,EAAe;AAAA;AACxD,OACF;AAAA,MACA;AAAA,QACE,QAAA;AAAA,QACAE,gBAAAA;AAAA,UACEH,oBAAAA,CAAqBF,cAAAA,EAAe,EAAGG,aAAAA,EAAe;AAAA;AACxD,OACF;AAAA,MACA;AAAA,QACE,KAAA;AAAA,QACAE,gBAAAA;AAAA,UACEH,oBAAAA,CAAqBF,cAAAA,EAAe,EAAGG,aAAAA,EAAe;AAAA;AACxD,OACF;AAAA,MACA,CAAC,UAAA,EAAYE,gBAAAA,CAAiBC,gBAAgB,iBAAA,EAAmB,CAAC,CAAC,CAAA;AAAA,MACnE,CAAC,sBAAA,EAAwBD,gBAAAA,CAAiBD,aAAAA,EAAe,CAAC,CAAA;AAAA,MAC1D,CAAC,qBAAA,EAAuBC,gBAAAA,CAAiBb,iBAAAA,EAAmB,CAAC,CAAA;AAAA,MAC7D,CAAC,WAAA,EAAaa,gBAAAA,CAAiBb,iBAAAA,EAAmB,CAAC;AAAA,KACpD,CAAA;AAAA,IACD,CAAC,KAAA,MAAW;AAAA,MACV,GAAG,KAAA;AAAA,MACH,IAAA,EAAM,KAAA,CAAM,IAAA,IAAQwB,IAAAA,EAAK;AAAA,MACzB,MAAA,EAAQ,KAAA,CAAM,MAAA,IAAUA,IAAAA,EAAK;AAAA,MAC7B,GAAA,EAAK,KAAA,CAAM,GAAA,IAAOA,IAAAA,EAAK;AAAA,MACvB,QAAA,EAAU,KAAA,CAAM,QAAA,IAAYA,IAAAA,EAAK;AAAA,MACjC,oBAAA,EAAsB,KAAA,CAAM,oBAAA,IAAwBA,IAAAA,EAAK;AAAA,MACzD,mBAAA,EAAqB,KAAA,CAAM,mBAAA,IAAuBA,IAAAA,EAAK;AAAA,MACvD,SAAA,EAAW,KAAA,CAAM,SAAA,IAAaA,IAAAA;AAAK,KACrC;AAAA,GACF;AACF;AAEO,SAAS,oBAAA,GAA4C;AAC1D,EAAA,OAAOvB,gBAAAA,CAAiB;AAAA,IACtB;AAAA,MACE,MAAA;AAAA,MACAmB,iBAAiBJ,oBAAAA,CAAqBC,cAAAA,EAAe,EAAGC,aAAAA,EAAe,CAAC;AAAA,KAC1E;AAAA,IACA;AAAA,MACE,QAAA;AAAA,MACAE,iBAAiBJ,oBAAAA,CAAqBC,cAAAA,EAAe,EAAGC,aAAAA,EAAe,CAAC;AAAA,KAC1E;AAAA,IACA;AAAA,MACE,KAAA;AAAA,MACAE,iBAAiBJ,oBAAAA,CAAqBC,cAAAA,EAAe,EAAGC,aAAAA,EAAe,CAAC;AAAA,KAC1E;AAAA,IACA,CAAC,UAAA,EAAYE,gBAAAA,CAAiBC,gBAAgB,iBAAA,EAAmB,CAAC,CAAC,CAAA;AAAA,IACnE,CAAC,sBAAA,EAAwBD,gBAAAA,CAAiBD,aAAAA,EAAe,CAAC,CAAA;AAAA,IAC1D,CAAC,qBAAA,EAAuBC,gBAAAA,CAAiBjB,iBAAAA,EAAmB,CAAC,CAAA;AAAA,IAC7D,CAAC,WAAA,EAAaiB,gBAAAA,CAAiBjB,iBAAAA,EAAmB,CAAC;AAAA,GACpD,CAAA;AACH;AAEO,SAAS,kBAAA,GAAwD;AACtE,EAAA,OAAOL,YAAAA,CAAa,oBAAA,EAAqB,EAAG,oBAAA,EAAsB,CAAA;AACpE;AC1GO,IAAK,SAAA,qBAAA2B,UAAAA,KAAL;AACL,EAAAA,UAAAA,CAAAA,UAAAA,CAAA,MAAA,CAAA,GAAA,CAAA,CAAA,GAAA,MAAA;AACA,EAAAA,UAAAA,CAAAA,UAAAA,CAAA,UAAA,CAAA,GAAA,CAAA,CAAA,GAAA,UAAA;AACA,EAAAA,UAAAA,CAAAA,UAAAA,CAAA,QAAA,CAAA,GAAA,CAAA,CAAA,GAAA,QAAA;AAHU,EAAA,OAAAA,UAAAA;AAAA,CAAA,EAAA,SAAA,IAAA,EAAA;AAQL,SAAS,mBAAA,GAAuD;AACrE,EAAA,OAAO7B,eAAe,SAAS,CAAA;AACjC;AAEO,SAAS,mBAAA,GAAmD;AACjE,EAAA,OAAOC,eAAe,SAAS,CAAA;AACjC;AAEO,SAAS,iBAAA,GAA8D;AAC5E,EAAA,OAAOC,YAAAA,CAAa,mBAAA,EAAoB,EAAG,mBAAA,EAAqB,CAAA;AAClE;ACFO,SAAS,cAAA,GAA6C;AAC3D,EAAA,OAAOC,gBAAAA,CAAiB;AAAA,IACtB,CAAC,WAAA,EAAa,mBAAA,EAAqB,CAAA;AAAA,IACnC,CAAC,WAAA,EAAaM,aAAAA,EAAe,CAAA;AAAA,IAC7B,CAAC,OAAA,EAASA,aAAAA,EAAe;AAAA,GAC1B,CAAA;AACH;AAEO,SAAS,cAAA,GAAyC;AACvD,EAAA,OAAOJ,gBAAAA,CAAiB;AAAA,IACtB,CAAC,WAAA,EAAa,mBAAA,EAAqB,CAAA;AAAA,IACnC,CAAC,WAAA,EAAayB,aAAAA,EAAe,CAAA;AAAA,IAC7B,CAAC,OAAA,EAASA,aAAAA,EAAe;AAAA,GAC1B,CAAA;AACH;AAEO,SAAS,YAAA,GAA+C;AAC7D,EAAA,OAAO5B,YAAAA,CAAa,cAAA,EAAe,EAAG,cAAA,EAAgB,CAAA;AACxD;AClCO,IAAK,OAAA,qBAAA6B,QAAAA,KAAL;AACL,EAAAA,QAAAA,CAAAA,QAAAA,CAAA,IAAA,CAAA,GAAA,CAAA,CAAA,GAAA,IAAA;AACA,EAAAA,QAAAA,CAAAA,QAAAA,CAAA,IAAA,CAAA,GAAA,CAAA,CAAA,GAAA,IAAA;AAFU,EAAA,OAAAA,QAAAA;AAAA,CAAA,EAAA,OAAA,IAAA,EAAA;AAOL,SAAS,iBAAA,GAAmD;AACjE,EAAA,OAAO/B,eAAe,OAAO,CAAA;AAC/B;AAEO,SAAS,iBAAA,GAA+C;AAC7D,EAAA,OAAOC,eAAe,OAAO,CAAA;AAC/B;AAEO,SAAS,eAAA,GAAwD;AACtE,EAAA,OAAOC,YAAAA,CAAa,iBAAA,EAAkB,EAAG,iBAAA,EAAmB,CAAA;AAC9D;;;ACkBO,IAAM,yBAAA,GAA4B,IAAI,UAAA,CAAW;AAAA,EACtD,GAAA;AAAA,EAAK,GAAA;AAAA,EAAK,GAAA;AAAA,EAAK,GAAA;AAAA,EAAK,GAAA;AAAA,EAAK,EAAA;AAAA,EAAI,CAAA;AAAA,EAAG;AAClC,CAAC;AAEM,SAAS,+BAAA,GAAkC;AAChD,EAAA,OAAO8B,eAAeC,eAAAA,EAAgB,EAAG,CAAC,CAAA,CAAE,OAAO,yBAAyB,CAAA;AAC9E;AAuBO,SAAS,oBAAA,GAAyD;AACvE,EAAA,OAAOpB,gBAAAA;AAAA,IACLV,gBAAAA,CAAiB;AAAA,MACf,CAAC,eAAA,EAAiB6B,cAAAA,CAAeC,eAAAA,EAAgB,EAAG,CAAC,CAAC,CAAA;AAAA,MACtD,CAAC,aAAA,EAAepC,iBAAAA,EAAmB,CAAA;AAAA,MACnC,CAAC,cAAA,EAAgBA,iBAAAA,EAAmB,CAAA;AAAA,MACpC,CAAC,mBAAA,EAAqBY,aAAAA,EAAe,CAAA;AAAA,MACrC,CAAC,WAAA,EAAaA,aAAAA,EAAe,CAAA;AAAA,MAC7B,CAAC,UAAA,EAAYL,iBAAAA,EAAmB,CAAA;AAAA,MAChC,CAAC,kBAAA,EAAoB,6BAAA,EAA+B,CAAA;AAAA,MACpD,CAAC,SAAA,EAAW,iBAAA,EAAmB;AAAA,KAChC,CAAA;AAAA,IACD,CAAC,KAAA,MAAW,EAAE,GAAG,KAAA,EAAO,eAAe,yBAAA,EAA0B;AAAA,GACnE;AACF;AAEO,SAAS,oBAAA,GAAqD;AACnE,EAAA,OAAOC,gBAAAA,CAAiB;AAAA,IACtB,CAAC,eAAA,EAAiB6B,cAAAA,CAAeC,eAAAA,EAAgB,EAAG,CAAC,CAAC,CAAA;AAAA,IACtD,CAAC,aAAA,EAAe7B,iBAAAA,EAAmB,CAAA;AAAA,IACnC,CAAC,cAAA,EAAgBA,iBAAAA,EAAmB,CAAA;AAAA,IACpC,CAAC,mBAAA,EAAqBwB,aAAAA,EAAe,CAAA;AAAA,IACrC,CAAC,WAAA,EAAaA,aAAAA,EAAe,CAAA;AAAA,IAC7B,CAAC,UAAA,EAAYvB,iBAAAA,EAAmB,CAAA;AAAA,IAChC,CAAC,kBAAA,EAAoB,6BAAA,EAA+B,CAAA;AAAA,IACpD,CAAC,SAAA,EAAW,iBAAA,EAAmB;AAAA,GAChC,CAAA;AACH;AAEO,SAAS,kBAAA,GAGd;AACA,EAAA,OAAOL,YAAAA,CAAa,oBAAA,EAAqB,EAAG,oBAAA,EAAsB,CAAA;AACpE;AAQO,SAAS,iBACd,cAAA,EACoE;AACpE,EAAA,OAAO,aAAA;AAAA,IACL,cAAA;AAAA,IACA,oBAAA;AAAqB,GACvB;AACF;AAEA,eAAsB,eAAA,CACpB,GAAA,EACAkC,QAAAA,EACA,MAAA,EACwC;AACxC,EAAA,MAAM,YAAA,GAAe,MAAM,oBAAA,CAAqB,GAAA,EAAKA,UAAS,MAAM,CAAA;AACpE,EAAA,mBAAA,CAAoB,YAAY,CAAA;AAChC,EAAA,OAAO,YAAA;AACT;AAEA,eAAsB,oBAAA,CACpB,GAAA,EACAA,QAAAA,EACA,MAAA,EAC6C;AAC7C,EAAA,MAAM,YAAA,GAAe,MAAM,mBAAA,CAAoB,GAAA,EAAKA,UAAS,MAAM,CAAA;AACnE,EAAA,OAAO,iBAAiB,YAAY,CAAA;AACtC;AAEA,eAAsB,kBAAA,CACpB,GAAA,EACA,SAAA,EACA,MAAA,EACgC;AAChC,EAAA,MAAM,aAAA,GAAgB,MAAM,uBAAA,CAAwB,GAAA,EAAK,WAAW,MAAM,CAAA;AAC1E,EAAA,mBAAA,CAAoB,aAAa,CAAA;AACjC,EAAA,OAAO,aAAA;AACT;AAEA,eAAsB,uBAAA,CACpB,GAAA,EACA,SAAA,EACA,MAAA,EACqC;AACrC,EAAA,MAAM,aAAA,GAAgB,MAAM,oBAAA,CAAqB,GAAA,EAAK,WAAW,MAAM,CAAA;AACvE,EAAA,OAAO,cAAc,GAAA,CAAI,CAAC,YAAA,KAAiB,gBAAA,CAAiB,YAAY,CAAC,CAAA;AAC3E;AAEO,SAAS,iBAAA,GAA4B;AAC1C,EAAA,OAAO,EAAA;AACT;AAEA,eAAsB,wBAAA,CACpB,GAAA,EACA,KAAA,EACA,MAAA,GAA4D,EAAC,EAC/B;AAC9B,EAAA,MAAM,YAAA,GAAe,MAAM,6BAAA,CAA8B,GAAA,EAAK,OAAO,MAAM,CAAA;AAC3E,EAAA,mBAAA,CAAoB,YAAY,CAAA;AAChC,EAAA,OAAO,YAAA;AACT;AAEA,eAAsB,6BAAA,CACpB,GAAA,EACA,KAAA,EACA,MAAA,GAA4D,EAAC,EAC1B;AACnC,EAAA,MAAM,EAAE,cAAA,EAAgB,GAAG,WAAA,EAAY,GAAI,MAAA;AAC3C,EAAA,MAAM,CAACA,QAAO,CAAA,GAAI,MAAM,kBAAkB,KAAA,EAAO,EAAE,gBAAgB,CAAA;AACnE,EAAA,OAAO,MAAM,oBAAA,CAAqB,GAAA,EAAKA,QAAAA,EAAS,WAAW,CAAA;AAC7D;AClJO,IAAM,qBAAA,GAAwB,IAAI,UAAA,CAAW;AAAA,EAClD,GAAA;AAAA,EAAK,GAAA;AAAA,EAAK,GAAA;AAAA,EAAK,GAAA;AAAA,EAAK,GAAA;AAAA,EAAK,GAAA;AAAA,EAAK,EAAA;AAAA,EAAI;AACpC,CAAC;AAEM,SAAS,4BAAA,GAA+B;AAC7C,EAAA,OAAOJ,eAAeC,eAAAA,EAAgB,EAAG,CAAC,CAAA,CAAE,OAAO,qBAAqB,CAAA;AAC1E;AAeO,SAAS,iBAAA,GAA0C;AACxD,EAAA,OAAOpB,gBAAAA;AAAA,IACLV,gBAAAA,CAAiB;AAAA,MACf,CAAC,eAAA,EAAiB6B,cAAAA,CAAeC,eAAAA,EAAgB,EAAG,CAAC,CAAC,CAAA;AAAA,MACtD,CAAC,YAAA,EAAc,oBAAA,EAAsB,CAAA;AAAA,MACrC,CAAC,OAAA,EAASlB,aAAAA,EAAe,CAAA;AAAA,MACzB,CAAC,YAAA,EAAclB,iBAAAA,EAAmB;AAAA,KACnC,CAAA;AAAA,IACD,CAAC,KAAA,MAAW,EAAE,GAAG,KAAA,EAAO,eAAe,qBAAA,EAAsB;AAAA,GAC/D;AACF;AAEO,SAAS,iBAAA,GAAsC;AACpD,EAAA,OAAOQ,gBAAAA,CAAiB;AAAA,IACtB,CAAC,eAAA,EAAiB6B,cAAAA,CAAeC,eAAAA,EAAgB,EAAG,CAAC,CAAC,CAAA;AAAA,IACtD,CAAC,YAAA,EAAc,oBAAA,EAAsB,CAAA;AAAA,IACrC,CAAC,OAAA,EAASb,aAAAA,EAAe,CAAA;AAAA,IACzB,CAAC,YAAA,EAAchB,iBAAAA,EAAmB;AAAA,GACnC,CAAA;AACH;AAEO,SAAS,eAAA,GAA+C;AAC7D,EAAA,OAAOJ,YAAAA,CAAa,iBAAA,EAAkB,EAAG,iBAAA,EAAmB,CAAA;AAC9D;AAQO,SAAS,cACd,cAAA,EAC8D;AAC9D,EAAA,OAAOmC,aAAAA;AAAA,IACL,cAAA;AAAA,IACA,iBAAA;AAAkB,GACpB;AACF;AAEA,eAAsB,YAAA,CACpB,GAAA,EACAD,QAAAA,EACA,MAAA,EACqC;AACrC,EAAA,MAAM,YAAA,GAAe,MAAM,iBAAA,CAAkB,GAAA,EAAKA,UAAS,MAAM,CAAA;AACjE,EAAAE,oBAAoB,YAAY,CAAA;AAChC,EAAA,OAAO,YAAA;AACT;AAEA,eAAsB,iBAAA,CACpB,GAAA,EACAF,QAAAA,EACA,MAAA,EAC0C;AAC1C,EAAA,MAAM,YAAA,GAAe,MAAMG,mBAAAA,CAAoB,GAAA,EAAKH,UAAS,MAAM,CAAA;AACnE,EAAA,OAAO,cAAc,YAAY,CAAA;AACnC;AAEA,eAAsB,eAAA,CACpB,GAAA,EACA,SAAA,EACA,MAAA,EAC6B;AAC7B,EAAA,MAAM,aAAA,GAAgB,MAAM,oBAAA,CAAqB,GAAA,EAAK,WAAW,MAAM,CAAA;AACvE,EAAAI,oBAAoB,aAAa,CAAA;AACjC,EAAA,OAAO,aAAA;AACT;AAEA,eAAsB,oBAAA,CACpB,GAAA,EACA,SAAA,EACA,MAAA,EACkC;AAClC,EAAA,MAAM,aAAA,GAAgB,MAAMC,oBAAAA,CAAqB,GAAA,EAAK,WAAW,MAAM,CAAA;AACvE,EAAA,OAAO,cAAc,GAAA,CAAI,CAAC,YAAA,KAAiB,aAAA,CAAc,YAAY,CAAC,CAAA;AACxE;AAEA,eAAsB,qBAAA,CACpB,GAAA,EACA,KAAA,EACA,MAAA,GAA4D,EAAC,EAClC;AAC3B,EAAA,MAAM,YAAA,GAAe,MAAM,0BAAA,CAA2B,GAAA,EAAK,OAAO,MAAM,CAAA;AACxE,EAAAH,oBAAoB,YAAY,CAAA;AAChC,EAAA,OAAO,YAAA;AACT;AAEA,eAAsB,0BAAA,CACpB,GAAA,EACA,KAAA,EACA,MAAA,GAA4D,EAAC,EAC7B;AAChC,EAAA,MAAM,EAAE,cAAA,EAAgB,GAAG,WAAA,EAAY,GAAI,MAAA;AAC3C,EAAA,MAAM,CAACF,QAAO,CAAA,GAAI,MAAM,eAAe,KAAA,EAAO,EAAE,gBAAgB,CAAA;AAChE,EAAA,OAAO,MAAM,iBAAA,CAAkB,GAAA,EAAKA,QAAAA,EAAS,WAAW,CAAA;AAC1D;AChHO,IAAM,6BAAA,GACX;AAEK,IAAK,mBAAA,qBAAAM,oBAAAA,KAAL;AACL,EAAAA,oBAAAA,CAAAA,oBAAAA,CAAA,YAAA,CAAA,GAAA,CAAA,CAAA,GAAA,YAAA;AACA,EAAAA,oBAAAA,CAAAA,oBAAAA,CAAA,SAAA,CAAA,GAAA,CAAA,CAAA,GAAA,SAAA;AAFU,EAAA,OAAAA,oBAAAA;AAAA,CAAA,EAAA,mBAAA,IAAA,EAAA;AAKL,SAAS,4BACd,OAAA,EACqB;AACrB,EAAA,MAAM,IAAA,GAAO,MAAA,IAAU,OAAA,GAAU,OAAA,CAAQ,IAAA,GAAO,OAAA;AAChD,EAAA,IACE,aAAA;AAAA,IACE,IAAA;AAAA,IACAV,cAAAA,CAAeC,eAAAA,EAAgB,EAAG,CAAC,CAAA,CAAE,MAAA;AAAA,MACnC,IAAI,UAAA,CAAW,CAAC,GAAA,EAAK,GAAA,EAAK,GAAA,EAAK,GAAA,EAAK,GAAA,EAAK,EAAA,EAAI,CAAA,EAAG,GAAG,CAAC;AAAA,KACtD;AAAA,IACA;AAAA,GACF,EACA;AACA,IAAA,OAAO,CAAA;AAAA,EACT;AACA,EAAA,IACE,aAAA;AAAA,IACE,IAAA;AAAA,IACAD,cAAAA,CAAeC,eAAAA,EAAgB,EAAG,CAAC,CAAA,CAAE,MAAA;AAAA,MACnC,IAAI,UAAA,CAAW,CAAC,GAAA,EAAK,GAAA,EAAK,GAAA,EAAK,GAAA,EAAK,GAAA,EAAK,GAAA,EAAK,EAAA,EAAI,EAAE,CAAC;AAAA,KACvD;AAAA,IACA;AAAA,GACF,EACA;AACA,IAAA,OAAO,CAAA;AAAA,EACT;AACA,EAAA,MAAM,IAAI,KAAA;AAAA,IACR;AAAA,GACF;AACF;AAEO,IAAK,uBAAA,qBAAAU,wBAAAA,KAAL;AACL,EAAAA,wBAAAA,CAAAA,wBAAAA,CAAA,MAAA,CAAA,GAAA,CAAA,CAAA,GAAA,MAAA;AACA,EAAAA,wBAAAA,CAAAA,wBAAAA,CAAA,QAAA,CAAA,GAAA,CAAA,CAAA,GAAA,QAAA;AACA,EAAAA,wBAAAA,CAAAA,wBAAAA,CAAA,cAAA,CAAA,GAAA,CAAA,CAAA,GAAA,cAAA;AACA,EAAAA,wBAAAA,CAAAA,wBAAAA,CAAA,WAAA,CAAA,GAAA,CAAA,CAAA,GAAA,WAAA;AACA,EAAAA,wBAAAA,CAAAA,wBAAAA,CAAA,kBAAA,CAAA,GAAA,CAAA,CAAA,GAAA,kBAAA;AACA,EAAAA,wBAAAA,CAAAA,wBAAAA,CAAA,oBAAA,CAAA,GAAA,CAAA,CAAA,GAAA,oBAAA;AACA,EAAAA,wBAAAA,CAAAA,wBAAAA,CAAA,cAAA,CAAA,GAAA,CAAA,CAAA,GAAA,cAAA;AACA,EAAAA,wBAAAA,CAAAA,wBAAAA,CAAA,UAAA,CAAA,GAAA,CAAA,CAAA,GAAA,UAAA;AACA,EAAAA,wBAAAA,CAAAA,wBAAAA,CAAA,qBAAA,CAAA,GAAA,CAAA,CAAA,GAAA,qBAAA;AACA,EAAAA,wBAAAA,CAAAA,wBAAAA,CAAA,YAAA,CAAA,GAAA,CAAA,CAAA,GAAA,YAAA;AACA,EAAAA,wBAAAA,CAAAA,wBAAAA,CAAA,UAAA,CAAA,GAAA,EAAA,CAAA,GAAA,UAAA;AACA,EAAAA,wBAAAA,CAAAA,wBAAAA,CAAA,oBAAA,CAAA,GAAA,EAAA,CAAA,GAAA,oBAAA;AACA,EAAAA,wBAAAA,CAAAA,wBAAAA,CAAA,QAAA,CAAA,GAAA,EAAA,CAAA,GAAA,QAAA;AACA,EAAAA,wBAAAA,CAAAA,wBAAAA,CAAA,QAAA,CAAA,GAAA,EAAA,CAAA,GAAA,QAAA;AACA,EAAAA,wBAAAA,CAAAA,wBAAAA,CAAA,QAAA,CAAA,GAAA,EAAA,CAAA,GAAA,QAAA;AACA,EAAAA,wBAAAA,CAAAA,wBAAAA,CAAA,wBAAA,CAAA,GAAA,EAAA,CAAA,GAAA,wBAAA;AACA,EAAAA,wBAAAA,CAAAA,wBAAAA,CAAA,iBAAA,CAAA,GAAA,EAAA,CAAA,GAAA,iBAAA;AACA,EAAAA,wBAAAA,CAAAA,wBAAAA,CAAA,wBAAA,CAAA,GAAA,EAAA,CAAA,GAAA,wBAAA;AACA,EAAAA,wBAAAA,CAAAA,wBAAAA,CAAA,sBAAA,CAAA,GAAA,EAAA,CAAA,GAAA,sBAAA;AACA,EAAAA,wBAAAA,CAAAA,wBAAAA,CAAA,iBAAA,CAAA,GAAA,EAAA,CAAA,GAAA,iBAAA;AACA,EAAAA,wBAAAA,CAAAA,wBAAAA,CAAA,iBAAA,CAAA,GAAA,EAAA,CAAA,GAAA,iBAAA;AACA,EAAAA,wBAAAA,CAAAA,wBAAAA,CAAA,QAAA,CAAA,GAAA,EAAA,CAAA,GAAA,QAAA;AACA,EAAAA,wBAAAA,CAAAA,wBAAAA,CAAA,UAAA,CAAA,GAAA,EAAA,CAAA,GAAA,UAAA;AACA,EAAAA,wBAAAA,CAAAA,wBAAAA,CAAA,YAAA,CAAA,GAAA,EAAA,CAAA,GAAA,YAAA;AACA,EAAAA,wBAAAA,CAAAA,wBAAAA,CAAA,oBAAA,CAAA,GAAA,EAAA,CAAA,GAAA,oBAAA;AACA,EAAAA,wBAAAA,CAAAA,wBAAAA,CAAA,iBAAA,CAAA,GAAA,EAAA,CAAA,GAAA,iBAAA;AACA,EAAAA,wBAAAA,CAAAA,wBAAAA,CAAA,mBAAA,CAAA,GAAA,EAAA,CAAA,GAAA,mBAAA;AACA,EAAAA,wBAAAA,CAAAA,wBAAAA,CAAA,mBAAA,CAAA,GAAA,EAAA,CAAA,GAAA,mBAAA;AACA,EAAAA,wBAAAA,CAAAA,wBAAAA,CAAA,gBAAA,CAAA,GAAA,EAAA,CAAA,GAAA,gBAAA;AACA,EAAAA,wBAAAA,CAAAA,wBAAAA,CAAA,kBAAA,CAAA,GAAA,EAAA,CAAA,GAAA,kBAAA;AACA,EAAAA,wBAAAA,CAAAA,wBAAAA,CAAA,kBAAA,CAAA,GAAA,EAAA,CAAA,GAAA,kBAAA;AACA,EAAAA,wBAAAA,CAAAA,wBAAAA,CAAA,eAAA,CAAA,GAAA,EAAA,CAAA,GAAA,eAAA;AACA,EAAAA,wBAAAA,CAAAA,wBAAAA,CAAA,iBAAA,CAAA,GAAA,EAAA,CAAA,GAAA,iBAAA;AAjCU,EAAA,OAAAA,wBAAAA;AAAA,CAAA,EAAA,uBAAA,IAAA,EAAA;AAoCL,SAAS,gCACd,WAAA,EACyB;AACzB,EAAA,MAAM,IAAA,GAAO,MAAA,IAAU,WAAA,GAAc,WAAA,CAAY,IAAA,GAAO,WAAA;AACxD,EAAA,IACE,aAAA;AAAA,IACE,IAAA;AAAA,IACAX,cAAAA,CAAeC,eAAAA,EAAgB,EAAG,CAAC,CAAA,CAAE,MAAA;AAAA,MACnC,IAAI,UAAA,CAAW,CAAC,GAAA,EAAK,GAAA,EAAK,EAAA,EAAI,EAAA,EAAI,GAAA,EAAK,GAAA,EAAK,EAAA,EAAI,EAAE,CAAC;AAAA,KACrD;AAAA,IACA;AAAA,GACF,EACA;AACA,IAAA,OAAO,CAAA;AAAA,EACT;AACA,EAAA,IACE,aAAA;AAAA,IACE,IAAA;AAAA,IACAD,cAAAA,CAAeC,eAAAA,EAAgB,EAAG,CAAC,CAAA,CAAE,MAAA;AAAA,MACnC,IAAI,UAAA,CAAW,CAAC,GAAA,EAAK,GAAA,EAAK,EAAA,EAAI,GAAA,EAAK,GAAA,EAAK,GAAA,EAAK,GAAA,EAAK,EAAE,CAAC;AAAA,KACvD;AAAA,IACA;AAAA,GACF,EACA;AACA,IAAA,OAAO,CAAA;AAAA,EACT;AACA,EAAA,IACE,aAAA;AAAA,IACE,IAAA;AAAA,IACAD,cAAAA,CAAeC,eAAAA,EAAgB,EAAG,CAAC,CAAA,CAAE,MAAA;AAAA,MACnC,IAAI,UAAA,CAAW,CAAC,GAAA,EAAK,EAAA,EAAI,GAAA,EAAK,EAAA,EAAI,EAAA,EAAI,GAAA,EAAK,EAAA,EAAI,GAAG,CAAC;AAAA,KACrD;AAAA,IACA;AAAA,GACF,EACA;AACA,IAAA,OAAO,CAAA;AAAA,EACT;AACA,EAAA,IACE,aAAA;AAAA,IACE,IAAA;AAAA,IACAD,cAAAA,CAAeC,eAAAA,EAAgB,EAAG,CAAC,CAAA,CAAE,MAAA;AAAA,MACnC,IAAI,UAAA,CAAW,CAAC,EAAA,EAAI,EAAA,EAAI,GAAA,EAAK,EAAA,EAAI,CAAA,EAAG,GAAA,EAAK,GAAA,EAAK,EAAE,CAAC;AAAA,KACnD;AAAA,IACA;AAAA,GACF,EACA;AACA,IAAA,OAAO,CAAA;AAAA,EACT;AACA,EAAA,IACE,aAAA;AAAA,IACE,IAAA;AAAA,IACAD,cAAAA,CAAeC,eAAAA,EAAgB,EAAG,CAAC,CAAA,CAAE,MAAA;AAAA,MACnC,IAAI,UAAA,CAAW,CAAC,GAAA,EAAK,EAAA,EAAI,GAAA,EAAK,GAAA,EAAK,EAAA,EAAI,GAAA,EAAK,EAAA,EAAI,GAAG,CAAC;AAAA,KACtD;AAAA,IACA;AAAA,GACF,EACA;AACA,IAAA,OAAO,CAAA;AAAA,EACT;AACA,EAAA,IACE,aAAA;AAAA,IACE,IAAA;AAAA,IACAD,cAAAA,CAAeC,eAAAA,EAAgB,EAAG,CAAC,CAAA,CAAE,MAAA;AAAA,MACnC,IAAI,UAAA,CAAW,CAAC,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,GAAA,EAAK,GAAA,EAAK,GAAA,EAAK,GAAA,EAAK,GAAG,CAAC;AAAA,KACtD;AAAA,IACA;AAAA,GACF,EACA;AACA,IAAA,OAAO,CAAA;AAAA,EACT;AACA,EAAA,IACE,aAAA;AAAA,IACE,IAAA;AAAA,IACAD,cAAAA,CAAeC,eAAAA,EAAgB,EAAG,CAAC,CAAA,CAAE,MAAA;AAAA,MACnC,IAAI,UAAA,CAAW,CAAC,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,GAAA,EAAK,GAAA,EAAK,GAAA,EAAK,EAAE,CAAC;AAAA,KACpD;AAAA,IACA;AAAA,GACF,EACA;AACA,IAAA,OAAO,CAAA;AAAA,EACT;AACA,EAAA,IACE,aAAA;AAAA,IACE,IAAA;AAAA,IACAD,cAAAA,CAAeC,eAAAA,EAAgB,EAAG,CAAC,CAAA,CAAE,MAAA;AAAA,MACnC,IAAI,UAAA,CAAW,CAAC,EAAA,EAAI,GAAA,EAAK,EAAA,EAAI,GAAA,EAAK,EAAA,EAAI,EAAA,EAAI,CAAA,EAAG,GAAG,CAAC;AAAA,KACnD;AAAA,IACA;AAAA,GACF,EACA;AACA,IAAA,OAAO,CAAA;AAAA,EACT;AACA,EAAA,IACE,aAAA;AAAA,IACE,IAAA;AAAA,IACAD,cAAAA,CAAeC,eAAAA,EAAgB,EAAG,CAAC,CAAA,CAAE,MAAA;AAAA,MACnC,IAAI,UAAA,CAAW,CAAC,EAAA,EAAI,GAAA,EAAK,EAAA,EAAI,GAAA,EAAK,GAAA,EAAK,GAAA,EAAK,GAAA,EAAK,GAAG,CAAC;AAAA,KACvD;AAAA,IACA;AAAA,GACF,EACA;AACA,IAAA,OAAO,CAAA;AAAA,EACT;AACA,EAAA,IACE,aAAA;AAAA,IACE,IAAA;AAAA,IACAD,cAAAA,CAAeC,eAAAA,EAAgB,EAAG,CAAC,CAAA,CAAE,MAAA;AAAA,MACnC,IAAI,UAAA,CAAW,CAAC,EAAA,EAAI,EAAA,EAAI,GAAA,EAAK,GAAA,EAAK,GAAA,EAAK,GAAA,EAAK,GAAA,EAAK,GAAG,CAAC;AAAA,KACvD;AAAA,IACA;AAAA,GACF,EACA;AACA,IAAA,OAAO,CAAA;AAAA,EACT;AACA,EAAA,IACE,aAAA;AAAA,IACE,IAAA;AAAA,IACAD,cAAAA,CAAeC,eAAAA,EAAgB,EAAG,CAAC,CAAA,CAAE,MAAA;AAAA,MACnC,IAAI,UAAA,CAAW,CAAC,GAAA,EAAK,GAAA,EAAK,GAAA,EAAK,GAAA,EAAK,EAAA,EAAI,GAAA,EAAK,GAAA,EAAK,CAAC,CAAC;AAAA,KACtD;AAAA,IACA;AAAA,GACF,EACA;AACA,IAAA,OAAO,EAAA;AAAA,EACT;AACA,EAAA,IACE,aAAA;AAAA,IACE,IAAA;AAAA,IACAD,cAAAA,CAAeC,eAAAA,EAAgB,EAAG,CAAC,CAAA,CAAE,MAAA;AAAA,MACnC,IAAI,UAAA,CAAW,CAAC,GAAA,EAAK,EAAA,EAAI,GAAA,EAAK,EAAA,EAAI,GAAA,EAAK,GAAA,EAAK,EAAA,EAAI,EAAE,CAAC;AAAA,KACrD;AAAA,IACA;AAAA,GACF,EACA;AACA,IAAA,OAAO,EAAA;AAAA,EACT;AACA,EAAA,IACE,aAAA;AAAA,IACE,IAAA;AAAA,IACAD,cAAAA,CAAeC,eAAAA,EAAgB,EAAG,CAAC,CAAA,CAAE,MAAA;AAAA,MACnC,IAAI,UAAA,CAAW,CAAC,GAAA,EAAK,EAAA,EAAI,GAAA,EAAK,GAAA,EAAK,GAAA,EAAK,GAAA,EAAK,GAAA,EAAK,GAAG,CAAC;AAAA,KACxD;AAAA,IACA;AAAA,GACF,EACA;AACA,IAAA,OAAO,EAAA;AAAA,EACT;AACA,EAAA,IACE,aAAA;AAAA,IACE,IAAA;AAAA,IACAD,cAAAA,CAAeC,eAAAA,EAAgB,EAAG,CAAC,CAAA,CAAE,MAAA;AAAA,MACnC,IAAI,UAAA,CAAW,CAAC,GAAA,EAAK,GAAA,EAAK,EAAA,EAAI,GAAA,EAAK,GAAA,EAAK,GAAA,EAAK,GAAA,EAAK,GAAG,CAAC;AAAA,KACxD;AAAA,IACA;AAAA,GACF,EACA;AACA,IAAA,OAAO,EAAA;AAAA,EACT;AACA,EAAA,IACE,aAAA;AAAA,IACE,IAAA;AAAA,IACAD,cAAAA,CAAeC,eAAAA,EAAgB,EAAG,CAAC,CAAA,CAAE,MAAA;AAAA,MACnC,IAAI,UAAA,CAAW,CAAC,GAAA,EAAK,EAAA,EAAI,EAAA,EAAI,GAAA,EAAK,EAAA,EAAI,GAAA,EAAK,EAAA,EAAI,GAAG,CAAC;AAAA,KACrD;AAAA,IACA;AAAA,GACF,EACA;AACA,IAAA,OAAO,EAAA;AAAA,EACT;AACA,EAAA,IACE,aAAA;AAAA,IACE,IAAA;AAAA,IACAD,cAAAA,CAAeC,eAAAA,EAAgB,EAAG,CAAC,CAAA,CAAE,MAAA;AAAA,MACnC,IAAI,UAAA,CAAW,CAAC,GAAA,EAAK,GAAA,EAAK,GAAA,EAAK,GAAA,EAAK,GAAA,EAAK,GAAA,EAAK,GAAA,EAAK,GAAG,CAAC;AAAA,KACzD;AAAA,IACA;AAAA,GACF,EACA;AACA,IAAA,OAAO,EAAA;AAAA,EACT;AACA,EAAA,IACE,aAAA;AAAA,IACE,IAAA;AAAA,IACAD,cAAAA,CAAeC,eAAAA,EAAgB,EAAG,CAAC,CAAA,CAAE,MAAA;AAAA,MACnC,IAAI,UAAA,CAAW,CAAC,GAAA,EAAK,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,GAAG,CAAC;AAAA,KACnD;AAAA,IACA;AAAA,GACF,EACA;AACA,IAAA,OAAO,EAAA;AAAA,EACT;AACA,EAAA,IACE,aAAA;AAAA,IACE,IAAA;AAAA,IACAD,cAAAA,CAAeC,eAAAA,EAAgB,EAAG,CAAC,CAAA,CAAE,MAAA;AAAA,MACnC,IAAI,UAAA,CAAW,CAAC,EAAA,EAAI,GAAA,EAAK,GAAA,EAAK,CAAA,EAAG,GAAA,EAAK,GAAA,EAAK,GAAA,EAAK,EAAE,CAAC;AAAA,KACrD;AAAA,IACA;AAAA,GACF,EACA;AACA,IAAA,OAAO,EAAA;AAAA,EACT;AACA,EAAA,IACE,aAAA;AAAA,IACE,IAAA;AAAA,IACAD,cAAAA,CAAeC,eAAAA,EAAgB,EAAG,CAAC,CAAA,CAAE,MAAA;AAAA,MACnC,IAAI,UAAA,CAAW,CAAC,GAAA,EAAK,GAAA,EAAK,GAAA,EAAK,EAAA,EAAI,GAAA,EAAK,GAAA,EAAK,GAAA,EAAK,GAAG,CAAC;AAAA,KACxD;AAAA,IACA;AAAA,GACF,EACA;AACA,IAAA,OAAO,EAAA;AAAA,EACT;AACA,EAAA,IACE,aAAA;AAAA,IACE,IAAA;AAAA,IACAD,cAAAA,CAAeC,eAAAA,EAAgB,EAAG,CAAC,CAAA,CAAE,MAAA;AAAA,MACnC,IAAI,UAAA,CAAW,CAAC,GAAA,EAAK,GAAA,EAAK,EAAA,EAAI,EAAA,EAAI,GAAA,EAAK,EAAA,EAAI,GAAA,EAAK,GAAG,CAAC;AAAA,KACtD;AAAA,IACA;AAAA,GACF,EACA;AACA,IAAA,OAAO,EAAA;AAAA,EACT;AACA,EAAA,IACE,aAAA;AAAA,IACE,IAAA;AAAA,IACAD,cAAAA,CAAeC,eAAAA,EAAgB,EAAG,CAAC,CAAA,CAAE,MAAA;AAAA,MACnC,IAAI,UAAA,CAAW,CAAC,EAAA,EAAI,GAAA,EAAK,GAAA,EAAK,EAAA,EAAI,GAAA,EAAK,CAAA,EAAG,EAAA,EAAI,GAAG,CAAC;AAAA,KACpD;AAAA,IACA;AAAA,GACF,EACA;AACA,IAAA,OAAO,EAAA;AAAA,EACT;AACA,EAAA,IACE,aAAA;AAAA,IACE,IAAA;AAAA,IACAD,cAAAA,CAAeC,eAAAA,EAAgB,EAAG,CAAC,CAAA,CAAE,MAAA;AAAA,MACnC,IAAI,UAAA,CAAW,CAAC,EAAA,EAAI,GAAA,EAAK,GAAA,EAAK,EAAA,EAAI,EAAA,EAAI,GAAA,EAAK,GAAA,EAAK,GAAG,CAAC;AAAA,KACtD;AAAA,IACA;AAAA,GACF,EACA;AACA,IAAA,OAAO,EAAA;AAAA,EACT;AACA,EAAA,IACE,aAAA;AAAA,IACE,IAAA;AAAA,IACAD,cAAAA,CAAeC,eAAAA,EAAgB,EAAG,CAAC,CAAA,CAAE,MAAA;AAAA,MACnC,IAAI,UAAA,CAAW,CAAC,GAAA,EAAK,EAAA,EAAI,GAAA,EAAK,GAAA,EAAK,GAAA,EAAK,CAAA,EAAG,EAAA,EAAI,GAAG,CAAC;AAAA,KACrD;AAAA,IACA;AAAA,GACF,EACA;AACA,IAAA,OAAO,EAAA;AAAA,EACT;AACA,EAAA,IACE,aAAA;AAAA,IACE,IAAA;AAAA,IACAD,cAAAA,CAAeC,eAAAA,EAAgB,EAAG,CAAC,CAAA,CAAE,MAAA;AAAA,MACnC,IAAI,UAAA,CAAW,CAAC,GAAA,EAAK,EAAA,EAAI,CAAA,EAAG,GAAA,EAAK,GAAA,EAAK,GAAA,EAAK,GAAA,EAAK,EAAE,CAAC;AAAA,KACrD;AAAA,IACA;AAAA,GACF,EACA;AACA,IAAA,OAAO,EAAA;AAAA,EACT;AACA,EAAA,IACE,aAAA;AAAA,IACE,IAAA;AAAA,IACAD,cAAAA,CAAeC,eAAAA,EAAgB,EAAG,CAAC,CAAA,CAAE,MAAA;AAAA,MACnC,IAAI,UAAA,CAAW,CAAC,GAAA,EAAK,GAAA,EAAK,EAAA,EAAI,GAAA,EAAK,EAAA,EAAI,GAAA,EAAK,GAAA,EAAK,GAAG,CAAC;AAAA,KACvD;AAAA,IACA;AAAA,GACF,EACA;AACA,IAAA,OAAO,EAAA;AAAA,EACT;AACA,EAAA,IACE,aAAA;AAAA,IACE,IAAA;AAAA,IACAD,cAAAA,CAAeC,eAAAA,EAAgB,EAAG,CAAC,CAAA,CAAE,MAAA;AAAA,MACnC,IAAI,UAAA,CAAW,CAAC,GAAA,EAAK,GAAA,EAAK,EAAA,EAAI,EAAA,EAAI,GAAA,EAAK,GAAA,EAAK,GAAA,EAAK,GAAG,CAAC;AAAA,KACvD;AAAA,IACA;AAAA,GACF,EACA;AACA,IAAA,OAAO,EAAA;AAAA,EACT;AACA,EAAA,IACE,aAAA;AAAA,IACE,IAAA;AAAA,IACAD,cAAAA,CAAeC,eAAAA,EAAgB,EAAG,CAAC,CAAA,CAAE,MAAA;AAAA,MACnC,IAAI,UAAA,CAAW,CAAC,GAAA,EAAK,GAAA,EAAK,EAAA,EAAI,GAAA,EAAK,GAAA,EAAK,GAAA,EAAK,GAAA,EAAK,CAAC,CAAC;AAAA,KACtD;AAAA,IACA;AAAA,GACF,EACA;AACA,IAAA,OAAO,EAAA;AAAA,EACT;AACA,EAAA,IACE,aAAA;AAAA,IACE,IAAA;AAAA,IACAD,cAAAA,CAAeC,eAAAA,EAAgB,EAAG,CAAC,CAAA,CAAE,MAAA;AAAA,MACnC,IAAI,UAAA,CAAW,CAAC,EAAA,EAAI,EAAA,EAAI,GAAA,EAAK,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,EAAE,CAAC;AAAA,KAClD;AAAA,IACA;AAAA,GACF,EACA;AACA,IAAA,OAAO,EAAA;AAAA,EACT;AACA,EAAA,IACE,aAAA;AAAA,IACE,IAAA;AAAA,IACAD,cAAAA,CAAeC,eAAAA,EAAgB,EAAG,CAAC,CAAA,CAAE,MAAA;AAAA,MACnC,IAAI,UAAA,CAAW,CAAC,GAAA,EAAK,GAAA,EAAK,EAAA,EAAI,GAAA,EAAK,EAAA,EAAI,EAAA,EAAI,GAAA,EAAK,GAAG,CAAC;AAAA,KACtD;AAAA,IACA;AAAA,GACF,EACA;AACA,IAAA,OAAO,EAAA;AAAA,EACT;AACA,EAAA,IACE,aAAA;AAAA,IACE,IAAA;AAAA,IACAD,cAAAA,CAAeC,eAAAA,EAAgB,EAAG,CAAC,CAAA,CAAE,MAAA;AAAA,MACnC,IAAI,UAAA,CAAW,CAAC,EAAA,EAAI,GAAA,EAAK,EAAA,EAAI,EAAA,EAAI,GAAA,EAAK,GAAA,EAAK,EAAA,EAAI,EAAE,CAAC;AAAA,KACpD;AAAA,IACA;AAAA,GACF,EACA;AACA,IAAA,OAAO,EAAA;AAAA,EACT;AACA,EAAA,IACE,aAAA;AAAA,IACE,IAAA;AAAA,IACAD,cAAAA,CAAeC,eAAAA,EAAgB,EAAG,CAAC,CAAA,CAAE,MAAA;AAAA,MACnC,IAAI,UAAA,CAAW,CAAC,EAAA,EAAI,GAAA,EAAK,GAAA,EAAK,GAAA,EAAK,EAAA,EAAI,EAAA,EAAI,GAAA,EAAK,GAAG,CAAC;AAAA,KACtD;AAAA,IACA;AAAA,GACF,EACA;AACA,IAAA,OAAO,EAAA;AAAA,EACT;AACA,EAAA,IACE,aAAA;AAAA,IACE,IAAA;AAAA,IACAD,cAAAA,CAAeC,eAAAA,EAAgB,EAAG,CAAC,CAAA,CAAE,MAAA;AAAA,MACnC,IAAI,UAAA,CAAW,CAAC,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,GAAA,EAAK,EAAA,EAAI,CAAA,EAAG,EAAA,EAAI,GAAG,CAAC;AAAA,KAClD;AAAA,IACA;AAAA,GACF,EACA;AACA,IAAA,OAAO,EAAA;AAAA,EACT;AACA,EAAA,IACE,aAAA;AAAA,IACE,IAAA;AAAA,IACAD,cAAAA,CAAeC,eAAAA,EAAgB,EAAG,CAAC,CAAA,CAAE,MAAA;AAAA,MACnC,IAAI,UAAA,CAAW,CAAC,EAAA,EAAI,GAAA,EAAK,GAAA,EAAK,EAAA,EAAI,EAAA,EAAI,GAAA,EAAK,GAAA,EAAK,GAAG,CAAC;AAAA,KACtD;AAAA,IACA;AAAA,GACF,EACA;AACA,IAAA,OAAO,EAAA;AAAA,EACT;AACA,EAAA,MAAM,IAAI,KAAA;AAAA,IACR;AAAA,GACF;AACF;;;AC/dO,IAAM,yCAAA,GAA4C;AAElD,IAAM,wCAAA,GAA2C;AAEjD,IAAM,qCAAA,GAAwC;AAE9C,IAAM,+CAAA,GAAkD;AAExD,IAAM,mDAAA,GAAsD;AAE5D,IAAM,8CAAA,GAAiD;AAEvD,IAAM,2CAAA,GAA8C;AAEpD,IAAM,sCAAA,GAAyC;AAE/C,IAAM,wCAAA,GAA2C;AAEjD,IAAM,0CAAA,GAA6C;AAEnD,IAAM,uCAAA,GAA0C;AAEhD,IAAM,sCAAA,GAAyC;AAE/C,IAAM,2CAAA,GAA8C;AAEpD,IAAM,6CAAA,GAAgD;AAEtD,IAAM,0CAAA,GAA6C;AAEnD,IAAM,mDAAA,GAAsD;AAE5D,IAAM,6CAAA,GAAgD;AAEtD,IAAM,+CAAA,GAAkD;AAExD,IAAM,6CAAA,GAAgD;AAEtD,IAAM,oCAAA,GAAuC;AAE7C,IAAM,sEAAA,GAAyE;AAE/E,IAAM,yCAAA,GAA4C;AAElD,IAAM,qCAAA,GAAwC;AAE9C,IAAM,uCAAA,GAA0C;AAEhD,IAAM,+CAAA,GAAkD;AAExD,IAAM,6CAAA,GAAgD;AAEtD,IAAM,6CAAA,GAAgD;AAEtD,IAAM,2CAAA,GAA8C;AAEpD,IAAM,iDAAA,GAAoD;AAE1D,IAAM,4CAAA,GAA+C;AAErD,IAAM,8DAAA,GAAiE;AAEvE,IAAM,+DAAA,GAAkE;AAExE,IAAM,2CAAA,GAA8C;AAEpD,IAAM,2CAAA,GAA8C;AAEpD,IAAM,oDAAA,GAAuD;AAE7D,IAAM,wDAAA,GAA2D;AAEjE,IAAM,wCAAA,GAA2C;AAEjD,IAAM,uCAAA,GAA0C;AAEhD,IAAM,6DAAA,GAAgE;AAEtE,IAAM,6CAAA,GAAgD;AAEtD,IAAM,2CAAA,GAA8C;AAEpD,IAAM,wCAAA,GAA2C;AAEjD,IAAM,wCAAA,GAA2C;AAEjD,IAAM,gDAAA,GAAmD;AAEzD,IAAM,2CAAA,GAA8C;AAEpD,IAAM,oCAAA,GAAuC;AAE7C,IAAM,8CAAA,GAAiD;AAEvD,IAAM,sCAAA,GAAyC;AAE/C,IAAM,yCAAA,GAA4C;AAElD,IAAM,0DAAA,GAA6D;AAEnE,IAAM,kCAAA,GAAqC;AAE3C,IAAM,+CAAA,GAAkD;AAExD,IAAM,+CAAA,GAAkD;AAExD,IAAM,0CAAA,GAA6C;AAEnD,IAAM,8CAAA,GAAiD;AAEvD,IAAM,wDAAA,GAA2D;AAEjE,IAAM,wCAAA,GAA2C;AA6DxD,IAAI,yBAAA;AACJ,IAAI,OAAA,CAAQ,GAAA,CAAI,QAAA,KAAa,YAAA,EAAc;AACzC,EAAA,yBAAA,GAA4B;AAAA,IAC1B,CAAC,0CAA0C,GAAG,CAAA,iCAAA,CAAA;AAAA,IAC9C,CAAC,8CAA8C,GAAG,CAAA,mCAAA,CAAA;AAAA,IAClD,CAAC,uCAAuC,GAAG,CAAA,sCAAA,CAAA;AAAA,IAC3C,CAAC,qCAAqC,GAAG,CAAA,oCAAA,CAAA;AAAA,IACzC,CAAC,+CAA+C,GAAG,CAAA,0BAAA,CAAA;AAAA,IACnD,CAAC,oCAAoC,GAAG,CAAA,eAAA,CAAA;AAAA,IACxC,CAAC,8CAA8C,GAAG,CAAA,yBAAA,CAAA;AAAA,IAClD,CAAC,wCAAwC,GAAG,CAAA,mBAAA,CAAA;AAAA,IAC5C,CAAC,yCAAyC,GAAG,CAAA,0BAAA,CAAA;AAAA,IAC7C,CAAC,sEAAsE,GAAG,CAAA,4CAAA,CAAA;AAAA,IAC1E,CAAC,yCAAyC,GAAG,CAAA,oBAAA,CAAA;AAAA,IAC7C,CAAC,8DAA8D,GAAG,CAAA,uCAAA,CAAA;AAAA,IAClE,CAAC,wCAAwC,GAAG,CAAA,mBAAA,CAAA;AAAA,IAC5C,CAAC,+DAA+D,GAAG,CAAA,6CAAA,CAAA;AAAA,IACnE,CAAC,6CAA6C,GAAG,CAAA,yDAAA,CAAA;AAAA,IACjD,CAAC,0DAA0D,GAAG,CAAA,0DAAA,CAAA;AAAA,IAC9D,CAAC,yCAAyC,GAAG,CAAA,gCAAA,CAAA;AAAA,IAC7C,CAAC,6CAA6C,GAAG,CAAA,qCAAA,CAAA;AAAA,IACjD,CAAC,2CAA2C,GAAG,CAAA,mCAAA,CAAA;AAAA,IAC/C,CAAC,0CAA0C,GAAG,CAAA,wEAAA,CAAA;AAAA,IAC9C,CAAC,sCAAsC,GAAG,CAAA,gCAAA,CAAA;AAAA,IAC1C,CAAC,mDAAmD,GAAG,CAAA,8BAAA,CAAA;AAAA,IACvD,CAAC,sCAAsC,GAAG,CAAA,sBAAA,CAAA;AAAA,IAC1C,CAAC,uCAAuC,GAAG,CAAA,kEAAA,CAAA;AAAA,IAC3C,CAAC,2CAA2C,GAAG,CAAA,wCAAA,CAAA;AAAA,IAC/C,CAAC,8CAA8C,GAAG,CAAA,0CAAA,CAAA;AAAA,IAClD,CAAC,qCAAqC,GAAG,CAAA,mCAAA,CAAA;AAAA,IACzC,CAAC,oCAAoC,GAAG,CAAA,uBAAA,CAAA;AAAA,IACxC,CAAC,+CAA+C,GAAG,CAAA,gCAAA,CAAA;AAAA,IACnD,CAAC,sCAAsC,GAAG,CAAA,iBAAA,CAAA;AAAA,IAC1C,CAAC,wCAAwC,GAAG,CAAA,8CAAA,CAAA;AAAA,IAC5C,CAAC,iDAAiD,GAAG,CAAA,4BAAA,CAAA;AAAA,IACrD,CAAC,gDAAgD,GAAG,CAAA,2BAAA,CAAA;AAAA,IACpD,CAAC,4CAA4C,GAAG,CAAA,sCAAA,CAAA;AAAA,IAChD,CAAC,wCAAwC,GAAG,CAAA,2BAAA,CAAA;AAAA,IAC5C,CAAC,2CAA2C,GAAG,CAAA,sCAAA,CAAA;AAAA,IAC/C,CAAC,6CAA6C,GAAG,CAAA,yEAAA,CAAA;AAAA,IACjD,CAAC,2CAA2C,GAAG,CAAA,2DAAA,CAAA;AAAA,IAC/C,CAAC,mDAAmD,GAAG,CAAA,4CAAA,CAAA;AAAA,IACvD,CAAC,uCAAuC,GAAG,CAAA,oBAAA,CAAA;AAAA,IAC3C,CAAC,2CAA2C,GAAG,CAAA,4CAAA,CAAA;AAAA,IAC/C,CAAC,2CAA2C,GAAG,CAAA,4BAAA,CAAA;AAAA,IAC/C,CAAC,6CAA6C,GAAG,CAAA,8BAAA,CAAA;AAAA,IACjD,CAAC,0CAA0C,GAAG,CAAA,2BAAA,CAAA;AAAA,IAC9C,CAAC,+CAA+C,GAAG,CAAA,0BAAA,CAAA;AAAA,IACnD,CAAC,wDAAwD,GAAG,CAAA,mCAAA,CAAA;AAAA,IAC5D,CAAC,oDAAoD,GAAG,CAAA,+BAAA,CAAA;AAAA,IACxD,CAAC,wDAAwD,GAAG,CAAA,mCAAA,CAAA;AAAA,IAC5D,CAAC,wCAAwC,GAAG,CAAA,0BAAA,CAAA;AAAA,IAC5C,CAAC,kCAAkC,GAAG,CAAA,+BAAA,CAAA;AAAA,IACtC,CAAC,6CAA6C,GAAG,CAAA,sBAAA,CAAA;AAAA,IACjD,CAAC,6DAA6D,GAAG,CAAA,oCAAA,CAAA;AAAA,IACjE,CAAC,wCAAwC,GAAG,CAAA,iBAAA,CAAA;AAAA,IAC5C,CAAC,6CAA6C,GAAG,CAAA,wCAAA,CAAA;AAAA,IACjD,CAAC,2CAA2C,GAAG,CAAA,kDAAA,CAAA;AAAA,IAC/C,CAAC,+CAA+C,GAAG,CAAA,0BAAA,CAAA;AAAA,IACnD,CAAC,+CAA+C,GAAG,CAAA,yCAAA;AAAA,GACrD;AACF;AAEO,SAAS,4BAA4B,IAAA,EAAiC;AAC3E,EAAA,IAAI,OAAA,CAAQ,GAAA,CAAI,QAAA,KAAa,YAAA,EAAc;AACzC,IAAA,OAAQ,0BACN,IACF,CAAA;AAAA,EACF;AAEA,EAAA,OAAO,oDAAA;AACT;AAEO,SAAS,mBAAA,CAGd,KAAA,EACA,kBAAA,EAGA,IAAA,EAE6D;AAC7D,EAAA,OAAO,cAAA;AAAA,IACL,KAAA;AAAA,IACA,kBAAA;AAAA,IACA,6BAAA;AAAA,IACA;AAAA,GACF;AACF;AC/PO,SAAS,WAAc,KAAA,EAAgC;AAC5D,EAAA,IAAI,KAAA,KAAU,IAAA,IAAQ,KAAA,KAAU,MAAA,EAAW;AACzC,IAAA,MAAM,IAAI,MAAM,kDAAkD,CAAA;AAAA,EACpE;AACA,EAAA,OAAO,KAAA;AACT;AAMO,SAAS,cACd,KAAA,EAMY;AACZ,EAAA,IAAI,CAAC,KAAA,EAAO;AACV,IAAA,MAAM,IAAI,MAAM,qBAAqB,CAAA;AAAA,EACvC;AACA,EAAA,IAAI,OAAO,KAAA,KAAU,QAAA,IAAY,SAAA,IAAa,KAAA,EAAO;AACnD,IAAA,OAAO,KAAA,CAAM,OAAA;AAAA,EACf;AACA,EAAA,IAAI,KAAA,CAAM,OAAA,CAAQ,KAAK,CAAA,EAAG;AACxB,IAAA,OAAO,MAAM,CAAC,CAAA;AAAA,EAChB;AACA,EAAA,OAAO,KAAA;AACT;AAwBO,SAAS,wBACd,KAAA,EAMsB;AACtB,EAAA,IAAI,CAAC,KAAA,IAAS,CAAC,mBAAA,CAAoB,KAAK,CAAA,EAAG;AACzC,IAAA,MAAM,IAAI,MAAM,+BAA+B,CAAA;AAAA,EACjD;AACA,EAAA,OAAO,KAAA;AACT;AAkCO,SAAS,qBAAA,CACd,gBACA,uBAAA,EACA;AACA,EAAA,OAAO,CACL,OAAA,KACgD;AAChD,IAAA,IAAI,CAAC,QAAQ,KAAA,EAAO;AAElB,MAAA,OAAO,OAAO,MAAA,CAAO;AAAA,QACnB,OAAA,EAAS,cAAA;AAAA,QACT,MAAM,WAAA,CAAY;AAAA,OACnB,CAAA;AAAA,IACH;AAEA,IAAA,MAAM,YAAA,GAAe,OAAA,CAAQ,UAAA,GACzB,WAAA,CAAY,WACZ,WAAA,CAAY,QAAA;AAChB,IAAA,OAAO,OAAO,MAAA,CAAO;AAAA,MACnB,OAAA,EAAS,aAAA,CAAc,OAAA,CAAQ,KAAK,CAAA;AAAA,MACpC,MAAM,mBAAA,CAAoB,OAAA,CAAQ,KAAK,CAAA,GACnC,mBAAA,CAAoB,YAAY,CAAA,GAChC,YAAA;AAAA,MACJ,GAAI,mBAAA,CAAoB,OAAA,CAAQ,KAAK,CAAA,GAAI,EAAE,MAAA,EAAQ,OAAA,CAAQ,KAAA,EAAM,GAAI;AAAC,KACvE,CAAA;AAAA,EACH,CAAA;AACF;AAEO,SAAS,oBACd,KAAA,EAIsC;AACtC,EAAA,OACE,CAAC,CAAC,KAAA,IACF,OAAO,UAAU,QAAA,IACjB,SAAA,IAAa,KAAA,IACbW,qBAAA,CAAuB,KAAK,CAAA;AAEhC;;;ACrHO,IAAM,kBAAA,GAAqB,IAAI,UAAA,CAAW;AAAA,EAC/C,GAAA;AAAA,EAAK,GAAA;AAAA,EAAK,EAAA;AAAA,EAAI,EAAA;AAAA,EAAI,GAAA;AAAA,EAAK,GAAA;AAAA,EAAK,EAAA;AAAA,EAAI;AAClC,CAAC;AAEM,SAAS,yBAAA,GAA4B;AAC1C,EAAA,OAAOZ,eAAeC,eAAAA,EAAgB,EAAG,CAAC,CAAA,CAAE,OAAO,kBAAkB,CAAA;AACvE;AAgEO,SAAS,6BAAA,GAA2E;AACzF,EAAA,OAAOpB,gBAAAA;AAAA,IACLV,gBAAAA,CAAiB;AAAA,MACf,CAAC,eAAA,EAAiB6B,cAAAA,CAAeC,eAAAA,EAAgB,EAAG,CAAC,CAAC,CAAA;AAAA,MACtD,CAAC,MAAA,EAAQD,cAAAA,CAAeC,eAAAA,EAAgB,EAAG,EAAE,CAAC,CAAA;AAAA,MAC9C,CAAC,UAAA,EAAYD,cAAAA,CAAeC,eAAAA,EAAgB,EAAG,EAAE,CAAC,CAAA;AAAA,MAClD,CAAC,aAAA,EAAeD,cAAAA,CAAeC,eAAAA,EAAgB,EAAG,EAAE,CAAC,CAAA;AAAA,MACrD,CAAC,OAAA,EAASxB,aAAAA,EAAe,CAAA;AAAA,MACzB,CAAC,OAAA,EAASM,aAAAA,EAAe;AAAA,KAC1B,CAAA;AAAA,IACD,CAAC,KAAA,MAAW,EAAE,GAAG,KAAA,EAAO,eAAe,kBAAA,EAAmB;AAAA,GAC5D;AACF;AAEO,SAAS,6BAAA,GAAuE;AACrF,EAAA,OAAOV,gBAAAA,CAAiB;AAAA,IACtB,CAAC,eAAA,EAAiB6B,cAAAA,CAAeC,eAAAA,EAAgB,EAAG,CAAC,CAAC,CAAA;AAAA,IACtD,CAAC,MAAA,EAAQD,cAAAA,CAAeC,eAAAA,EAAgB,EAAG,EAAE,CAAC,CAAA;AAAA,IAC9C,CAAC,UAAA,EAAYD,cAAAA,CAAeC,eAAAA,EAAgB,EAAG,EAAE,CAAC,CAAA;AAAA,IAClD,CAAC,aAAA,EAAeD,cAAAA,CAAeC,eAAAA,EAAgB,EAAG,EAAE,CAAC,CAAA;AAAA,IACrD,CAAC,OAAA,EAASL,aAAAA,EAAe,CAAA;AAAA,IACzB,CAAC,OAAA,EAASR,aAAAA,EAAe;AAAA,GAC1B,CAAA;AACH;AAEO,SAAS,2BAAA,GAGd;AACA,EAAA,OAAOpB,YAAAA;AAAA,IACL,6BAAA,EAA8B;AAAA,IAC9B,6BAAA;AAA8B,GAChC;AACF;AA4BA,eAAsB,uBAAA,CAUpB,OASA,MAAA,EAkBA;AAEA,EAAA,MAAM,cAAA,GACJ,QAAQ,cAAA,IAAkB,6BAAA;AAG5B,EAAA,MAAM,gBAAA,GAAmB;AAAA,IACvB,YAAY,EAAE,KAAA,EAAO,MAAM,UAAA,IAAc,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IACjE,WAAW,EAAE,KAAA,EAAO,MAAM,SAAA,IAAa,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IAC/D,cAAc,EAAE,KAAA,EAAO,MAAM,YAAA,IAAgB,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IACrE,YAAY,EAAE,KAAA,EAAO,MAAM,UAAA,IAAc,IAAA,EAAM,YAAY,IAAA,EAAK;AAAA,IAChE,YAAY,EAAE,KAAA,EAAO,MAAM,UAAA,IAAc,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IACjE,kBAAA,EAAoB;AAAA,MAClB,KAAA,EAAO,MAAM,kBAAA,IAAsB,IAAA;AAAA,MACnC,UAAA,EAAY;AAAA,KACd;AAAA,IACA,eAAe,EAAE,KAAA,EAAO,MAAM,aAAA,IAAiB,IAAA,EAAM,YAAY,KAAA;AAAM,GACzE;AACA,EAAA,MAAM,QAAA,GAAW,gBAAA;AAMjB,EAAA,MAAM,IAAA,GAAO,EAAE,GAAG,KAAA,EAAM;AAGxB,EAAA,IAAI,CAAC,QAAA,CAAS,UAAA,CAAW,KAAA,EAAO;AAC9B,IAAA,QAAA,CAAS,UAAA,CAAW,KAAA,GAAQ,MAAM,iBAAA,CAAkB;AAAA,MAClD,UAAA,EAAY,aAAA,CAAc,QAAA,CAAS,UAAA,CAAW,KAAK;AAAA,KACpD,CAAA;AAAA,EACH;AACA,EAAA,IAAI,CAAC,QAAA,CAAS,YAAA,CAAa,KAAA,EAAO;AAChC,IAAA,QAAA,CAAS,YAAA,CAAa,KAAA,GAAQ,UAAA,CAAW,QAAA,CAAS,UAAU,KAAK,CAAA;AAAA,EACnE;AACA,EAAA,IAAI,CAAC,QAAA,CAAS,UAAA,CAAW,KAAA,EAAO;AAC9B,IAAA,QAAA,CAAS,WAAW,KAAA,GAClB,6CAAA;AAAA,EACJ;AACA,EAAA,IAAI,CAAC,QAAA,CAAS,kBAAA,CAAmB,KAAA,EAAO;AACtC,IAAA,QAAA,CAAS,mBAAmB,KAAA,GAC1B,6CAAA;AAAA,EACJ;AACA,EAAA,IAAI,CAAC,QAAA,CAAS,aAAA,CAAc,KAAA,EAAO;AACjC,IAAA,QAAA,CAAS,cAAc,KAAA,GACrB,kCAAA;AAAA,EACJ;AAGA,EAAA,MAAM,iBAAA,GAAA,CAAoC,IAAA,CAAK,KAAA,IAAS,EAAC,EAAG,GAAA;AAAA,IAC1D,CAACkC,QAAAA,MAAa,EAAE,SAAAA,QAAAA,EAAS,IAAA,EAAMS,YAAY,QAAA,EAAS;AAAA,GACtD;AAEA,EAAA,MAAM,cAAA,GAAiB,qBAAA,CAAsB,cAA2B,CAAA;AACxE,EAAA,OAAO,OAAO,MAAA,CAAO;AAAA,IACnB,QAAA,EAAU;AAAA,MACR,cAAA,CAAe,SAAS,UAAU,CAAA;AAAA,MAClC,cAAA,CAAe,SAAS,SAAS,CAAA;AAAA,MACjC,cAAA,CAAe,SAAS,YAAY,CAAA;AAAA,MACpC,cAAA,CAAe,SAAS,UAAU,CAAA;AAAA,MAClC,cAAA,CAAe,SAAS,UAAU,CAAA;AAAA,MAClC,cAAA,CAAe,SAAS,kBAAkB,CAAA;AAAA,MAC1C,cAAA,CAAe,SAAS,aAAa,CAAA;AAAA,MACrC,GAAG;AAAA,KACL;AAAA,IACA,IAAA,EAAM,+BAA8B,CAAE,MAAA;AAAA,MACpC;AAAA,KACF;AAAA,IACA;AAAA,GAgBD,CAAA;AACH;AA4BO,SAAS,kBAAA,CAUd,OASA,MAAA,EAgBA;AAEA,EAAA,MAAM,cAAA,GACJ,QAAQ,cAAA,IAAkB,6BAAA;AAG5B,EAAA,MAAM,gBAAA,GAAmB;AAAA,IACvB,YAAY,EAAE,KAAA,EAAO,MAAM,UAAA,IAAc,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IACjE,WAAW,EAAE,KAAA,EAAO,MAAM,SAAA,IAAa,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IAC/D,cAAc,EAAE,KAAA,EAAO,MAAM,YAAA,IAAgB,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IACrE,YAAY,EAAE,KAAA,EAAO,MAAM,UAAA,IAAc,IAAA,EAAM,YAAY,IAAA,EAAK;AAAA,IAChE,YAAY,EAAE,KAAA,EAAO,MAAM,UAAA,IAAc,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IACjE,kBAAA,EAAoB;AAAA,MAClB,KAAA,EAAO,MAAM,kBAAA,IAAsB,IAAA;AAAA,MACnC,UAAA,EAAY;AAAA,KACd;AAAA,IACA,eAAe,EAAE,KAAA,EAAO,MAAM,aAAA,IAAiB,IAAA,EAAM,YAAY,KAAA;AAAM,GACzE;AACA,EAAA,MAAM,QAAA,GAAW,gBAAA;AAMjB,EAAA,MAAM,IAAA,GAAO,EAAE,GAAG,KAAA,EAAM;AAGxB,EAAA,IAAI,CAAC,QAAA,CAAS,YAAA,CAAa,KAAA,EAAO;AAChC,IAAA,QAAA,CAAS,YAAA,CAAa,KAAA,GAAQ,UAAA,CAAW,QAAA,CAAS,UAAU,KAAK,CAAA;AAAA,EACnE;AACA,EAAA,IAAI,CAAC,QAAA,CAAS,UAAA,CAAW,KAAA,EAAO;AAC9B,IAAA,QAAA,CAAS,WAAW,KAAA,GAClB,6CAAA;AAAA,EACJ;AACA,EAAA,IAAI,CAAC,QAAA,CAAS,kBAAA,CAAmB,KAAA,EAAO;AACtC,IAAA,QAAA,CAAS,mBAAmB,KAAA,GAC1B,6CAAA;AAAA,EACJ;AACA,EAAA,IAAI,CAAC,QAAA,CAAS,aAAA,CAAc,KAAA,EAAO;AACjC,IAAA,QAAA,CAAS,cAAc,KAAA,GACrB,kCAAA;AAAA,EACJ;AAGA,EAAA,MAAM,iBAAA,GAAA,CAAoC,IAAA,CAAK,KAAA,IAAS,EAAC,EAAG,GAAA;AAAA,IAC1D,CAACT,QAAAA,MAAa,EAAE,SAAAA,QAAAA,EAAS,IAAA,EAAMS,YAAY,QAAA,EAAS;AAAA,GACtD;AAEA,EAAA,MAAM,cAAA,GAAiB,qBAAA,CAAsB,cAA2B,CAAA;AACxE,EAAA,OAAO,OAAO,MAAA,CAAO;AAAA,IACnB,QAAA,EAAU;AAAA,MACR,cAAA,CAAe,SAAS,UAAU,CAAA;AAAA,MAClC,cAAA,CAAe,SAAS,SAAS,CAAA;AAAA,MACjC,cAAA,CAAe,SAAS,YAAY,CAAA;AAAA,MACpC,cAAA,CAAe,SAAS,UAAU,CAAA;AAAA,MAClC,cAAA,CAAe,SAAS,UAAU,CAAA;AAAA,MAClC,cAAA,CAAe,SAAS,kBAAkB,CAAA;AAAA,MAC1C,cAAA,CAAe,SAAS,aAAa,CAAA;AAAA,MACrC,GAAG;AAAA,KACL;AAAA,IACA,IAAA,EAAM,+BAA8B,CAAE,MAAA;AAAA,MACpC;AAAA,KACF;AAAA,IACA;AAAA,GAgBD,CAAA;AACH;AAmBO,SAAS,qBAId,WAAA,EAGgD;AAChD,EAAA,IAAI,WAAA,CAAY,QAAA,CAAS,MAAA,GAAS,CAAA,EAAG;AAEnC,IAAA,MAAM,IAAI,MAAM,qBAAqB,CAAA;AAAA,EACvC;AACA,EAAA,IAAI,YAAA,GAAe,CAAA;AACnB,EAAA,MAAM,iBAAiB,MAAM;AAC3B,IAAA,MAAM,WAAA,GAAe,WAAA,CAAY,QAAA,CAA2B,YAAY,CAAA;AACxE,IAAA,YAAA,IAAgB,CAAA;AAChB,IAAA,OAAO,WAAA;AAAA,EACT,CAAA;AACA,EAAA,OAAO;AAAA,IACL,gBAAgB,WAAA,CAAY,cAAA;AAAA,IAC5B,QAAA,EAAU;AAAA,MACR,YAAY,cAAA,EAAe;AAAA,MAC3B,WAAW,cAAA,EAAe;AAAA,MAC1B,cAAc,cAAA,EAAe;AAAA,MAC7B,YAAY,cAAA,EAAe;AAAA,MAC3B,YAAY,cAAA,EAAe;AAAA,MAC3B,oBAAoB,cAAA,EAAe;AAAA,MACnC,eAAe,cAAA;AAAe,KAChC;AAAA,IACA,IAAA,EAAM,6BAAA,EAA8B,CAAE,MAAA,CAAO,YAAY,IAAI;AAAA,GAC/D;AACF;ACvbO,IAAM,qBAAA,GAAwB,IAAI,UAAA,CAAW;AAAA,EAClD,GAAA;AAAA,EAAK,GAAA;AAAA,EAAK,EAAA;AAAA,EAAI,GAAA;AAAA,EAAK,GAAA;AAAA,EAAK,GAAA;AAAA,EAAK,GAAA;AAAA,EAAK;AACpC,CAAC;AAEM,SAAS,2BAAA,GAA8B;AAC5C,EAAA,OAAOb,eAAeC,eAAAA,EAAgB,EAAG,CAAC,CAAA,CAAE,OAAO,qBAAqB,CAAA;AAC1E;AA4FO,SAAS,+BAAA,GAAsE;AACpF,EAAA,OAAOpB,gBAAAA;AAAA,IACLV,gBAAAA,CAAiB;AAAA,MACf,CAAC,eAAA,EAAiB6B,cAAAA,CAAeC,eAAAA,EAAgB,EAAG,CAAC,CAAC,CAAA;AAAA,MACtD,CAAC,MAAA,EAAQD,cAAAA,CAAeC,eAAAA,EAAgB,EAAG,EAAE,CAAC,CAAA;AAAA,MAC9C,CAAC,UAAA,EAAYD,cAAAA,CAAeC,eAAAA,EAAgB,EAAG,EAAE,CAAC,CAAA;AAAA,MAClD,CAAC,aAAA,EAAeD,cAAAA,CAAeC,eAAAA,EAAgB,EAAG,EAAE,CAAC,CAAA;AAAA,MACrD;AAAA,QACE,eAAA;AAAA,QACAhB,gBAAAA,CAAiBe,cAAAA,CAAeC,eAAAA,EAAgB,EAAG,EAAE,CAAC;AAAA,OACxD;AAAA,MACA,CAAC,OAAA,EAAShB,gBAAAA,CAAiBP,YAAAA,EAAc,CAAC,CAAA;AAAA,MAC1C,CAAC,OAAA,EAASD,aAAAA,EAAe,CAAA;AAAA,MACzB,CAAC,OAAA,EAASM,aAAAA,EAAe;AAAA,KAC1B,CAAA;AAAA,IACD,CAAC,KAAA,MAAW;AAAA,MACV,GAAG,KAAA;AAAA,MACH,aAAA,EAAe,qBAAA;AAAA,MACf,aAAA,EAAe,KAAA,CAAM,aAAA,IAAiBa,IAAAA,EAAK;AAAA,MAC3C,KAAA,EAAO,KAAA,CAAM,KAAA,IAASA,IAAAA;AAAK,KAC7B;AAAA,GACF;AACF;AAEO,SAAS,+BAAA,GAAkE;AAChF,EAAA,OAAOvB,gBAAAA,CAAiB;AAAA,IACtB,CAAC,eAAA,EAAiB6B,cAAAA,CAAeC,eAAAA,EAAgB,EAAG,CAAC,CAAC,CAAA;AAAA,IACtD,CAAC,MAAA,EAAQD,cAAAA,CAAeC,eAAAA,EAAgB,EAAG,EAAE,CAAC,CAAA;AAAA,IAC9C,CAAC,UAAA,EAAYD,cAAAA,CAAeC,eAAAA,EAAgB,EAAG,EAAE,CAAC,CAAA;AAAA,IAClD,CAAC,aAAA,EAAeD,cAAAA,CAAeC,eAAAA,EAAgB,EAAG,EAAE,CAAC,CAAA;AAAA,IACrD,CAAC,iBAAiBX,gBAAAA,CAAiBU,cAAAA,CAAeC,iBAAgB,EAAG,EAAE,CAAC,CAAC,CAAA;AAAA,IACzE,CAAC,OAAA,EAASX,gBAAAA,CAAiBb,YAAAA,EAAc,CAAC,CAAA;AAAA,IAC1C,CAAC,OAAA,EAASmB,aAAAA,EAAe,CAAA;AAAA,IACzB,CAAC,OAAA,EAASR,aAAAA,EAAe;AAAA,GAC1B,CAAA;AACH;AAEO,SAAS,6BAAA,GAGd;AACA,EAAA,OAAOpB,YAAAA;AAAA,IACL,+BAAA,EAAgC;AAAA,IAChC,+BAAA;AAAgC,GAClC;AACF;AA2CA,eAAsB,yBAAA,CAepB,OAcA,MAAA,EAiBA;AAEA,EAAA,MAAM,cAAA,GACJ,QAAQ,cAAA,IAAkB,6BAAA;AAG5B,EAAA,MAAM,gBAAA,GAAmB;AAAA,IACvB,YAAY,EAAE,KAAA,EAAO,MAAM,UAAA,IAAc,IAAA,EAAM,YAAY,IAAA,EAAK;AAAA,IAChE,OAAO,EAAE,KAAA,EAAO,MAAM,KAAA,IAAS,IAAA,EAAM,YAAY,IAAA,EAAK;AAAA,IACtD,WAAW,EAAE,KAAA,EAAO,MAAM,SAAA,IAAa,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IAC/D,WAAW,EAAE,KAAA,EAAO,MAAM,SAAA,IAAa,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IAC/D,cAAc,EAAE,KAAA,EAAO,MAAM,YAAA,IAAgB,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IACrE,YAAY,EAAE,KAAA,EAAO,MAAM,UAAA,IAAc,IAAA,EAAM,YAAY,IAAA,EAAK;AAAA,IAChE,gBAAgB,EAAE,KAAA,EAAO,MAAM,cAAA,IAAkB,IAAA,EAAM,YAAY,IAAA,EAAK;AAAA,IACxE,gBAAA,EAAkB;AAAA,MAChB,KAAA,EAAO,MAAM,gBAAA,IAAoB,IAAA;AAAA,MACjC,UAAA,EAAY;AAAA,KACd;AAAA,IACA,YAAY,EAAE,KAAA,EAAO,MAAM,UAAA,IAAc,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IACjE,kBAAA,EAAoB;AAAA,MAClB,KAAA,EAAO,MAAM,kBAAA,IAAsB,IAAA;AAAA,MACnC,UAAA,EAAY;AAAA,KACd;AAAA,IACA,gBAAgB,EAAE,KAAA,EAAO,MAAM,cAAA,IAAkB,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IACzE,eAAe,EAAE,KAAA,EAAO,MAAM,aAAA,IAAiB,IAAA,EAAM,YAAY,KAAA;AAAM,GACzE;AACA,EAAA,MAAM,QAAA,GAAW,gBAAA;AAMjB,EAAA,MAAM,IAAA,GAAO,EAAE,GAAG,KAAA,EAAM;AAGxB,EAAA,IAAI,CAAC,QAAA,CAAS,UAAA,CAAW,KAAA,EAAO;AAC9B,IAAA,QAAA,CAAS,UAAA,CAAW,KAAA,GAAQ,MAAM,iBAAA,CAAkB;AAAA,MAClD,UAAA,EAAY,aAAA,CAAc,QAAA,CAAS,UAAA,CAAW,KAAK;AAAA,KACpD,CAAA;AAAA,EACH;AACA,EAAA,IAAI,CAAC,QAAA,CAAS,gBAAA,CAAiB,KAAA,EAAO;AACpC,IAAA,IAAI,QAAA,CAAS,eAAe,KAAA,EAAO;AACjC,MAAA,QAAA,CAAS,iBAAiB,KAAA,GACxB,8CAAA;AAAA,IACJ;AAAA,EACF;AACA,EAAA,IAAI,CAAC,QAAA,CAAS,UAAA,CAAW,KAAA,EAAO;AAC9B,IAAA,QAAA,CAAS,WAAW,KAAA,GAClB,6CAAA;AAAA,EACJ;AACA,EAAA,IAAI,CAAC,QAAA,CAAS,kBAAA,CAAmB,KAAA,EAAO;AACtC,IAAA,QAAA,CAAS,mBAAmB,KAAA,GAC1B,6CAAA;AAAA,EACJ;AACA,EAAA,IAAI,CAAC,QAAA,CAAS,cAAA,CAAe,KAAA,EAAO;AAClC,IAAA,QAAA,CAAS,eAAe,KAAA,GACtB,8CAAA;AAAA,EACJ;AACA,EAAA,IAAI,CAAC,QAAA,CAAS,aAAA,CAAc,KAAA,EAAO;AACjC,IAAA,QAAA,CAAS,cAAc,KAAA,GACrB,kCAAA;AAAA,EACJ;AAGA,EAAA,MAAM,iBAAA,GAAA,CAAoC,IAAA,CAAK,KAAA,IAAS,EAAC,EAAG,GAAA;AAAA,IAC1D,CAACkC,QAAAA,MAAa,EAAE,SAAAA,QAAAA,EAAS,IAAA,EAAMS,YAAY,QAAA,EAAS;AAAA,GACtD;AAEA,EAAA,MAAM,cAAA,GAAiB,qBAAA,CAAsB,cAA2B,CAAA;AACxE,EAAA,OAAO,OAAO,MAAA,CAAO;AAAA,IACnB,QAAA,EAAU;AAAA,MACR,cAAA,CAAe,SAAS,UAAU,CAAA;AAAA,MAClC,cAAA,CAAe,SAAS,KAAK,CAAA;AAAA,MAC7B,cAAA,CAAe,SAAS,SAAS,CAAA;AAAA,MACjC,cAAA,CAAe,SAAS,SAAS,CAAA;AAAA,MACjC,cAAA,CAAe,SAAS,YAAY,CAAA;AAAA,MACpC,cAAA,CAAe,SAAS,UAAU,CAAA;AAAA,MAClC,cAAA,CAAe,SAAS,cAAc,CAAA;AAAA,MACtC,cAAA,CAAe,SAAS,gBAAgB,CAAA;AAAA,MACxC,cAAA,CAAe,SAAS,UAAU,CAAA;AAAA,MAClC,cAAA,CAAe,SAAS,kBAAkB,CAAA;AAAA,MAC1C,cAAA,CAAe,SAAS,cAAc,CAAA;AAAA,MACtC,cAAA,CAAe,SAAS,aAAa,CAAA;AAAA,MACrC,GAAG;AAAA,KACL;AAAA,IACA,IAAA,EAAM,iCAAgC,CAAE,MAAA;AAAA,MACtC;AAAA,KACF;AAAA,IACA;AAAA,GAeD,CAAA;AACH;AA2CO,SAAS,oBAAA,CAed,OAcA,MAAA,EAeA;AAEA,EAAA,MAAM,cAAA,GACJ,QAAQ,cAAA,IAAkB,6BAAA;AAG5B,EAAA,MAAM,gBAAA,GAAmB;AAAA,IACvB,YAAY,EAAE,KAAA,EAAO,MAAM,UAAA,IAAc,IAAA,EAAM,YAAY,IAAA,EAAK;AAAA,IAChE,OAAO,EAAE,KAAA,EAAO,MAAM,KAAA,IAAS,IAAA,EAAM,YAAY,IAAA,EAAK;AAAA,IACtD,WAAW,EAAE,KAAA,EAAO,MAAM,SAAA,IAAa,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IAC/D,WAAW,EAAE,KAAA,EAAO,MAAM,SAAA,IAAa,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IAC/D,cAAc,EAAE,KAAA,EAAO,MAAM,YAAA,IAAgB,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IACrE,YAAY,EAAE,KAAA,EAAO,MAAM,UAAA,IAAc,IAAA,EAAM,YAAY,IAAA,EAAK;AAAA,IAChE,gBAAgB,EAAE,KAAA,EAAO,MAAM,cAAA,IAAkB,IAAA,EAAM,YAAY,IAAA,EAAK;AAAA,IACxE,gBAAA,EAAkB;AAAA,MAChB,KAAA,EAAO,MAAM,gBAAA,IAAoB,IAAA;AAAA,MACjC,UAAA,EAAY;AAAA,KACd;AAAA,IACA,YAAY,EAAE,KAAA,EAAO,MAAM,UAAA,IAAc,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IACjE,kBAAA,EAAoB;AAAA,MAClB,KAAA,EAAO,MAAM,kBAAA,IAAsB,IAAA;AAAA,MACnC,UAAA,EAAY;AAAA,KACd;AAAA,IACA,gBAAgB,EAAE,KAAA,EAAO,MAAM,cAAA,IAAkB,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IACzE,eAAe,EAAE,KAAA,EAAO,MAAM,aAAA,IAAiB,IAAA,EAAM,YAAY,KAAA;AAAM,GACzE;AACA,EAAA,MAAM,QAAA,GAAW,gBAAA;AAMjB,EAAA,MAAM,IAAA,GAAO,EAAE,GAAG,KAAA,EAAM;AAGxB,EAAA,IAAI,CAAC,QAAA,CAAS,gBAAA,CAAiB,KAAA,EAAO;AACpC,IAAA,IAAI,QAAA,CAAS,eAAe,KAAA,EAAO;AACjC,MAAA,QAAA,CAAS,iBAAiB,KAAA,GACxB,8CAAA;AAAA,IACJ;AAAA,EACF;AACA,EAAA,IAAI,CAAC,QAAA,CAAS,UAAA,CAAW,KAAA,EAAO;AAC9B,IAAA,QAAA,CAAS,WAAW,KAAA,GAClB,6CAAA;AAAA,EACJ;AACA,EAAA,IAAI,CAAC,QAAA,CAAS,kBAAA,CAAmB,KAAA,EAAO;AACtC,IAAA,QAAA,CAAS,mBAAmB,KAAA,GAC1B,6CAAA;AAAA,EACJ;AACA,EAAA,IAAI,CAAC,QAAA,CAAS,cAAA,CAAe,KAAA,EAAO;AAClC,IAAA,QAAA,CAAS,eAAe,KAAA,GACtB,8CAAA;AAAA,EACJ;AACA,EAAA,IAAI,CAAC,QAAA,CAAS,aAAA,CAAc,KAAA,EAAO;AACjC,IAAA,QAAA,CAAS,cAAc,KAAA,GACrB,kCAAA;AAAA,EACJ;AAGA,EAAA,MAAM,iBAAA,GAAA,CAAoC,IAAA,CAAK,KAAA,IAAS,EAAC,EAAG,GAAA;AAAA,IAC1D,CAACT,QAAAA,MAAa,EAAE,SAAAA,QAAAA,EAAS,IAAA,EAAMS,YAAY,QAAA,EAAS;AAAA,GACtD;AAEA,EAAA,MAAM,cAAA,GAAiB,qBAAA,CAAsB,cAA2B,CAAA;AACxE,EAAA,OAAO,OAAO,MAAA,CAAO;AAAA,IACnB,QAAA,EAAU;AAAA,MACR,cAAA,CAAe,SAAS,UAAU,CAAA;AAAA,MAClC,cAAA,CAAe,SAAS,KAAK,CAAA;AAAA,MAC7B,cAAA,CAAe,SAAS,SAAS,CAAA;AAAA,MACjC,cAAA,CAAe,SAAS,SAAS,CAAA;AAAA,MACjC,cAAA,CAAe,SAAS,YAAY,CAAA;AAAA,MACpC,cAAA,CAAe,SAAS,UAAU,CAAA;AAAA,MAClC,cAAA,CAAe,SAAS,cAAc,CAAA;AAAA,MACtC,cAAA,CAAe,SAAS,gBAAgB,CAAA;AAAA,MACxC,cAAA,CAAe,SAAS,UAAU,CAAA;AAAA,MAClC,cAAA,CAAe,SAAS,kBAAkB,CAAA;AAAA,MAC1C,cAAA,CAAe,SAAS,cAAc,CAAA;AAAA,MACtC,cAAA,CAAe,SAAS,aAAa,CAAA;AAAA,MACrC,GAAG;AAAA,KACL;AAAA,IACA,IAAA,EAAM,iCAAgC,CAAE,MAAA;AAAA,MACtC;AAAA,KACF;AAAA,IACA;AAAA,GAeD,CAAA;AACH;AA6BO,SAAS,uBAId,WAAA,EAGkD;AAClD,EAAA,IAAI,WAAA,CAAY,QAAA,CAAS,MAAA,GAAS,EAAA,EAAI;AAEpC,IAAA,MAAM,IAAI,MAAM,qBAAqB,CAAA;AAAA,EACvC;AACA,EAAA,IAAI,YAAA,GAAe,CAAA;AACnB,EAAA,MAAM,iBAAiB,MAAM;AAC3B,IAAA,MAAM,WAAA,GAAe,WAAA,CAAY,QAAA,CAA2B,YAAY,CAAA;AACxE,IAAA,YAAA,IAAgB,CAAA;AAChB,IAAA,OAAO,WAAA;AAAA,EACT,CAAA;AACA,EAAA,MAAM,yBAAyB,MAAM;AACnC,IAAA,MAAM,cAAc,cAAA,EAAe;AACnC,IAAA,OAAO,WAAA,CAAY,OAAA,KAAY,6BAAA,GAC3B,MAAA,GACA,WAAA;AAAA,EACN,CAAA;AACA,EAAA,OAAO;AAAA,IACL,gBAAgB,WAAA,CAAY,cAAA;AAAA,IAC5B,QAAA,EAAU;AAAA,MACR,YAAY,cAAA,EAAe;AAAA,MAC3B,OAAO,cAAA,EAAe;AAAA,MACtB,WAAW,sBAAA,EAAuB;AAAA,MAClC,WAAW,cAAA,EAAe;AAAA,MAC1B,cAAc,sBAAA,EAAuB;AAAA,MACrC,YAAY,cAAA,EAAe;AAAA,MAC3B,gBAAgB,sBAAA,EAAuB;AAAA,MACvC,kBAAkB,sBAAA,EAAuB;AAAA,MACzC,YAAY,cAAA,EAAe;AAAA,MAC3B,oBAAoB,cAAA,EAAe;AAAA,MACnC,gBAAgB,cAAA,EAAe;AAAA,MAC/B,eAAe,cAAA;AAAe,KAChC;AAAA,IACA,IAAA,EAAM,+BAAA,EAAgC,CAAE,MAAA,CAAO,YAAY,IAAI;AAAA,GACjE;AACF;AC9lBO,IAAM,2BAAA,GAA8B,IAAI,UAAA,CAAW;AAAA,EACxD,GAAA;AAAA,EAAK,EAAA;AAAA,EAAI,GAAA;AAAA,EAAK,EAAA;AAAA,EAAI,EAAA;AAAA,EAAI,GAAA;AAAA,EAAK,EAAA;AAAA,EAAI;AACjC,CAAC;AAEM,SAAS,iCAAA,GAAoC;AAClD,EAAA,OAAOb,cAAAA,CAAeC,eAAAA,EAAgB,EAAG,CAAC,CAAA,CAAE,MAAA;AAAA,IAC1C;AAAA,GACF;AACF;AAuDO,SAAS,qCAAA,GAA2F;AACzG,EAAA,OAAOpB,gBAAAA;AAAA,IACLV,gBAAAA,CAAiB;AAAA,MACf,CAAC,eAAA,EAAiB6B,cAAAA,CAAeC,eAAAA,EAAgB,EAAG,CAAC,CAAC,CAAA;AAAA,MACtD,CAAC,MAAA,EAAQD,cAAAA,CAAeC,eAAAA,EAAgB,EAAG,EAAE,CAAC;AAAA,KAC/C,CAAA;AAAA,IACD,CAAC,KAAA,MAAW,EAAE,GAAG,KAAA,EAAO,eAAe,2BAAA,EAA4B;AAAA,GACrE;AACF;AAEO,SAAS,qCAAA,GAAuF;AACrG,EAAA,OAAO5B,gBAAAA,CAAiB;AAAA,IACtB,CAAC,eAAA,EAAiB6B,cAAAA,CAAeC,eAAAA,EAAgB,EAAG,CAAC,CAAC,CAAA;AAAA,IACtD,CAAC,MAAA,EAAQD,cAAAA,CAAeC,eAAAA,EAAgB,EAAG,EAAE,CAAC;AAAA,GAC/C,CAAA;AACH;AAEO,SAAS,mCAAA,GAGd;AACA,EAAA,OAAOjC,YAAAA;AAAA,IACL,qCAAA,EAAsC;AAAA,IACtC,qCAAA;AAAsC,GACxC;AACF;AAqBA,eAAsB,+BAAA,CAUpB,OASA,MAAA,EAYA;AAEA,EAAA,MAAM,cAAA,GACJ,QAAQ,cAAA,IAAkB,6BAAA;AAG5B,EAAA,MAAM,gBAAA,GAAmB;AAAA,IACvB,YAAY,EAAE,KAAA,EAAO,MAAM,UAAA,IAAc,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IACjE,WAAW,EAAE,KAAA,EAAO,MAAM,SAAA,IAAa,IAAA,EAAM,YAAY,IAAA,EAAK;AAAA,IAC9D,YAAY,EAAE,KAAA,EAAO,MAAM,UAAA,IAAc,IAAA,EAAM,YAAY,IAAA,EAAK;AAAA,IAChE,SAAS,EAAE,KAAA,EAAO,MAAM,OAAA,IAAW,IAAA,EAAM,YAAY,IAAA,EAAK;AAAA,IAC1D,YAAY,EAAE,KAAA,EAAO,MAAM,UAAA,IAAc,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IACjE,kBAAA,EAAoB;AAAA,MAClB,KAAA,EAAO,MAAM,kBAAA,IAAsB,IAAA;AAAA,MACnC,UAAA,EAAY;AAAA,KACd;AAAA,IACA,eAAe,EAAE,KAAA,EAAO,MAAM,aAAA,IAAiB,IAAA,EAAM,YAAY,KAAA;AAAM,GACzE;AACA,EAAA,MAAM,QAAA,GAAW,gBAAA;AAMjB,EAAA,MAAM,IAAA,GAAO,EAAE,GAAG,KAAA,EAAM;AAGxB,EAAA,IAAI,CAAC,QAAA,CAAS,UAAA,CAAW,KAAA,EAAO;AAC9B,IAAA,QAAA,CAAS,UAAA,CAAW,KAAA,GAAQ,MAAM,iBAAA,CAAkB;AAAA,MAClD,UAAA,EAAY,aAAA,CAAc,QAAA,CAAS,UAAA,CAAW,KAAK;AAAA,KACpD,CAAA;AAAA,EACH;AACA,EAAA,IAAI,CAAC,QAAA,CAAS,UAAA,CAAW,KAAA,EAAO;AAC9B,IAAA,QAAA,CAAS,WAAW,KAAA,GAClB,6CAAA;AAAA,EACJ;AACA,EAAA,IAAI,CAAC,QAAA,CAAS,kBAAA,CAAmB,KAAA,EAAO;AACtC,IAAA,QAAA,CAAS,mBAAmB,KAAA,GAC1B,6CAAA;AAAA,EACJ;AACA,EAAA,IAAI,CAAC,QAAA,CAAS,aAAA,CAAc,KAAA,EAAO;AACjC,IAAA,QAAA,CAAS,cAAc,KAAA,GACrB,kCAAA;AAAA,EACJ;AAEA,EAAA,MAAM,cAAA,GAAiB,qBAAA,CAAsB,cAA2B,CAAA;AACxE,EAAA,OAAO,OAAO,MAAA,CAAO;AAAA,IACnB,QAAA,EAAU;AAAA,MACR,cAAA,CAAe,SAAS,UAAU,CAAA;AAAA,MAClC,cAAA,CAAe,SAAS,SAAS,CAAA;AAAA,MACjC,cAAA,CAAe,SAAS,UAAU,CAAA;AAAA,MAClC,cAAA,CAAe,SAAS,OAAO,CAAA;AAAA,MAC/B,cAAA,CAAe,SAAS,UAAU,CAAA;AAAA,MAClC,cAAA,CAAe,SAAS,kBAAkB,CAAA;AAAA,MAC1C,cAAA,CAAe,SAAS,aAAa;AAAA,KACvC;AAAA,IACA,IAAA,EAAM,uCAAsC,CAAE,MAAA;AAAA,MAC5C;AAAA,KACF;AAAA,IACA;AAAA,GAUD,CAAA;AACH;AAqBO,SAAS,0BAAA,CAUd,OASA,MAAA,EAUA;AAEA,EAAA,MAAM,cAAA,GACJ,QAAQ,cAAA,IAAkB,6BAAA;AAG5B,EAAA,MAAM,gBAAA,GAAmB;AAAA,IACvB,YAAY,EAAE,KAAA,EAAO,MAAM,UAAA,IAAc,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IACjE,WAAW,EAAE,KAAA,EAAO,MAAM,SAAA,IAAa,IAAA,EAAM,YAAY,IAAA,EAAK;AAAA,IAC9D,YAAY,EAAE,KAAA,EAAO,MAAM,UAAA,IAAc,IAAA,EAAM,YAAY,IAAA,EAAK;AAAA,IAChE,SAAS,EAAE,KAAA,EAAO,MAAM,OAAA,IAAW,IAAA,EAAM,YAAY,IAAA,EAAK;AAAA,IAC1D,YAAY,EAAE,KAAA,EAAO,MAAM,UAAA,IAAc,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IACjE,kBAAA,EAAoB;AAAA,MAClB,KAAA,EAAO,MAAM,kBAAA,IAAsB,IAAA;AAAA,MACnC,UAAA,EAAY;AAAA,KACd;AAAA,IACA,eAAe,EAAE,KAAA,EAAO,MAAM,aAAA,IAAiB,IAAA,EAAM,YAAY,KAAA;AAAM,GACzE;AACA,EAAA,MAAM,QAAA,GAAW,gBAAA;AAMjB,EAAA,MAAM,IAAA,GAAO,EAAE,GAAG,KAAA,EAAM;AAGxB,EAAA,IAAI,CAAC,QAAA,CAAS,UAAA,CAAW,KAAA,EAAO;AAC9B,IAAA,QAAA,CAAS,WAAW,KAAA,GAClB,6CAAA;AAAA,EACJ;AACA,EAAA,IAAI,CAAC,QAAA,CAAS,kBAAA,CAAmB,KAAA,EAAO;AACtC,IAAA,QAAA,CAAS,mBAAmB,KAAA,GAC1B,6CAAA;AAAA,EACJ;AACA,EAAA,IAAI,CAAC,QAAA,CAAS,aAAA,CAAc,KAAA,EAAO;AACjC,IAAA,QAAA,CAAS,cAAc,KAAA,GACrB,kCAAA;AAAA,EACJ;AAEA,EAAA,MAAM,cAAA,GAAiB,qBAAA,CAAsB,cAA2B,CAAA;AACxE,EAAA,OAAO,OAAO,MAAA,CAAO;AAAA,IACnB,QAAA,EAAU;AAAA,MACR,cAAA,CAAe,SAAS,UAAU,CAAA;AAAA,MAClC,cAAA,CAAe,SAAS,SAAS,CAAA;AAAA,MACjC,cAAA,CAAe,SAAS,UAAU,CAAA;AAAA,MAClC,cAAA,CAAe,SAAS,OAAO,CAAA;AAAA,MAC/B,cAAA,CAAe,SAAS,UAAU,CAAA;AAAA,MAClC,cAAA,CAAe,SAAS,kBAAkB,CAAA;AAAA,MAC1C,cAAA,CAAe,SAAS,aAAa;AAAA,KACvC;AAAA,IACA,IAAA,EAAM,uCAAsC,CAAE,MAAA;AAAA,MAC5C;AAAA,KACF;AAAA,IACA;AAAA,GAUD,CAAA;AACH;AAmBO,SAAS,6BAId,WAAA,EAGwD;AACxD,EAAA,IAAI,WAAA,CAAY,QAAA,CAAS,MAAA,GAAS,CAAA,EAAG;AAEnC,IAAA,MAAM,IAAI,MAAM,qBAAqB,CAAA;AAAA,EACvC;AACA,EAAA,IAAI,YAAA,GAAe,CAAA;AACnB,EAAA,MAAM,iBAAiB,MAAM;AAC3B,IAAA,MAAM,WAAA,GAAe,WAAA,CAAY,QAAA,CAA2B,YAAY,CAAA;AACxE,IAAA,YAAA,IAAgB,CAAA;AAChB,IAAA,OAAO,WAAA;AAAA,EACT,CAAA;AACA,EAAA,OAAO;AAAA,IACL,gBAAgB,WAAA,CAAY,cAAA;AAAA,IAC5B,QAAA,EAAU;AAAA,MACR,YAAY,cAAA,EAAe;AAAA,MAC3B,WAAW,cAAA,EAAe;AAAA,MAC1B,YAAY,cAAA,EAAe;AAAA,MAC3B,SAAS,cAAA,EAAe;AAAA,MACxB,YAAY,cAAA,EAAe;AAAA,MAC3B,oBAAoB,cAAA,EAAe;AAAA,MACnC,eAAe,cAAA;AAAe,KAChC;AAAA,IACA,IAAA,EAAM,qCAAA,EAAsC,CAAE,MAAA,CAAO,YAAY,IAAI;AAAA,GACvE;AACF;AChYO,IAAM,wBAAA,GAA2B,IAAI,UAAA,CAAW;AAAA,EACrD,EAAA;AAAA,EAAI,EAAA;AAAA,EAAI,GAAA;AAAA,EAAK,EAAA;AAAA,EAAI,CAAA;AAAA,EAAG,GAAA;AAAA,EAAK,GAAA;AAAA,EAAK;AAChC,CAAC;AAEM,SAAS,8BAAA,GAAiC;AAC/C,EAAA,OAAO8B,eAAeC,eAAAA,EAAgB,EAAG,CAAC,CAAA,CAAE,OAAO,wBAAwB,CAAA;AAC7E;AA2BO,SAAS,kCAAA,GAAqF;AACnG,EAAA,OAAOpB,gBAAAA;AAAA,IACLV,gBAAAA,CAAiB,CAAC,CAAC,eAAA,EAAiB6B,cAAAA,CAAeC,iBAAgB,EAAG,CAAC,CAAC,CAAC,CAAC,CAAA;AAAA,IAC1E,CAAC,KAAA,MAAW,EAAE,GAAG,KAAA,EAAO,eAAe,wBAAA,EAAyB;AAAA,GAClE;AACF;AAEO,SAAS,kCAAA,GAAiF;AAC/F,EAAA,OAAO5B,gBAAAA,CAAiB;AAAA,IACtB,CAAC,eAAA,EAAiB6B,cAAAA,CAAeC,eAAAA,EAAgB,EAAG,CAAC,CAAC;AAAA,GACvD,CAAA;AACH;AAEO,SAAS,gCAAA,GAGd;AACA,EAAA,OAAOjC,YAAAA;AAAA,IACL,kCAAA,EAAmC;AAAA,IACnC,kCAAA;AAAmC,GACrC;AACF;AAUO,SAAS,uBAAA,CAKd,OACA,MAAA,EAKA;AAEA,EAAA,MAAM,cAAA,GACJ,QAAQ,cAAA,IAAkB,6BAAA;AAG5B,EAAA,MAAM,gBAAA,GAAmB;AAAA,IACvB,YAAY,EAAE,KAAA,EAAO,MAAM,UAAA,IAAc,IAAA,EAAM,YAAY,IAAA,EAAK;AAAA,IAChE,aAAa,EAAE,KAAA,EAAO,MAAM,WAAA,IAAe,IAAA,EAAM,YAAY,IAAA;AAAK,GACpE;AACA,EAAA,MAAM,QAAA,GAAW,gBAAA;AAMjB,EAAA,IAAI,CAAC,QAAA,CAAS,WAAA,CAAY,KAAA,EAAO;AAC/B,IAAA,QAAA,CAAS,YAAY,KAAA,GACnB,8CAAA;AAAA,EACJ;AAEA,EAAA,MAAM,cAAA,GAAiB,qBAAA,CAAsB,cAA2B,CAAA;AACxE,EAAA,OAAO,OAAO,MAAA,CAAO;AAAA,IACnB,QAAA,EAAU;AAAA,MACR,cAAA,CAAe,SAAS,UAAU,CAAA;AAAA,MAClC,cAAA,CAAe,SAAS,WAAW;AAAA,KACrC;AAAA,IACA,IAAA,EAAM,kCAAA,EAAmC,CAAE,MAAA,CAAO,EAAE,CAAA;AAAA,IACpD;AAAA,GAKD,CAAA;AACH;AAcO,SAAS,0BAId,WAAA,EAGqD;AACrD,EAAA,IAAI,WAAA,CAAY,QAAA,CAAS,MAAA,GAAS,CAAA,EAAG;AAEnC,IAAA,MAAM,IAAI,MAAM,qBAAqB,CAAA;AAAA,EACvC;AACA,EAAA,IAAI,YAAA,GAAe,CAAA;AACnB,EAAA,MAAM,iBAAiB,MAAM;AAC3B,IAAA,MAAM,WAAA,GAAe,WAAA,CAAY,QAAA,CAA2B,YAAY,CAAA;AACxE,IAAA,YAAA,IAAgB,CAAA;AAChB,IAAA,OAAO,WAAA;AAAA,EACT,CAAA;AACA,EAAA,OAAO;AAAA,IACL,gBAAgB,WAAA,CAAY,cAAA;AAAA,IAC5B,UAAU,EAAE,UAAA,EAAY,gBAAe,EAAG,WAAA,EAAa,gBAAe,EAAE;AAAA,IACxE,IAAA,EAAM,kCAAA,EAAmC,CAAE,MAAA,CAAO,YAAY,IAAI;AAAA,GACpE;AACF;AC3HO,IAAM,gCAAA,GAAmC,IAAI,UAAA,CAAW;AAAA,EAC7D,GAAA;AAAA,EAAK,EAAA;AAAA,EAAI,GAAA;AAAA,EAAK,GAAA;AAAA,EAAK,EAAA;AAAA,EAAI,GAAA;AAAA,EAAK,EAAA;AAAA,EAAI;AAClC,CAAC;AAEM,SAAS,qCAAA,GAAwC;AACtD,EAAA,OAAO8B,cAAAA,CAAeC,eAAAA,EAAgB,EAAG,CAAC,CAAA,CAAE,MAAA;AAAA,IAC1C;AAAA,GACF;AACF;AA8DO,SAAS,yCAAA,GAA0F;AACxG,EAAA,OAAOpB,gBAAAA;AAAA,IACLV,gBAAAA,CAAiB;AAAA,MACf,CAAC,eAAA,EAAiB6B,cAAAA,CAAeC,eAAAA,EAAgB,EAAG,CAAC,CAAC,CAAA;AAAA,MACtD,CAAC,UAAA,EAAYlB,aAAAA,EAAe,CAAA;AAAA,MAC5B,CAAC,eAAA,EAAiBA,aAAAA,EAAe,CAAA;AAAA,MACjC,CAAC,QAAA,EAAUE,gBAAAA,CAAiBb,iBAAAA,EAAmB,CAAC;AAAA,KACjD,CAAA;AAAA,IACD,CAAC,KAAA,MAAW;AAAA,MACV,GAAG,KAAA;AAAA,MACH,aAAA,EAAe,gCAAA;AAAA,MACf,MAAA,EAAQ,KAAA,CAAM,MAAA,IAAUwB,IAAAA;AAAK,KAC/B;AAAA,GACF;AACF;AAEO,SAAS,yCAAA,GAAsF;AACpG,EAAA,OAAOvB,gBAAAA,CAAiB;AAAA,IACtB,CAAC,eAAA,EAAiB6B,cAAAA,CAAeC,eAAAA,EAAgB,EAAG,CAAC,CAAC,CAAA;AAAA,IACtD,CAAC,UAAA,EAAYb,aAAAA,EAAe,CAAA;AAAA,IAC5B,CAAC,eAAA,EAAiBA,aAAAA,EAAe,CAAA;AAAA,IACjC,CAAC,QAAA,EAAUE,gBAAAA,CAAiBjB,iBAAAA,EAAmB,CAAC;AAAA,GACjD,CAAA;AACH;AAEO,SAAS,uCAAA,GAGd;AACA,EAAA,OAAOL,YAAAA;AAAA,IACL,yCAAA,EAA0C;AAAA,IAC1C,yCAAA;AAA0C,GAC5C;AACF;AAuBA,eAAsB,mCAAA,CAUpB,OASA,MAAA,EAaA;AAEA,EAAA,MAAM,cAAA,GACJ,QAAQ,cAAA,IAAkB,6BAAA;AAG5B,EAAA,MAAM,gBAAA,GAAmB;AAAA,IACvB,YAAY,EAAE,KAAA,EAAO,MAAM,UAAA,IAAc,IAAA,EAAM,YAAY,IAAA,EAAK;AAAA,IAChE,YAAY,EAAE,KAAA,EAAO,MAAM,UAAA,IAAc,IAAA,EAAM,YAAY,IAAA,EAAK;AAAA,IAChE,OAAO,EAAE,KAAA,EAAO,MAAM,KAAA,IAAS,IAAA,EAAM,YAAY,IAAA,EAAK;AAAA,IACtD,aAAa,EAAE,KAAA,EAAO,MAAM,WAAA,IAAe,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IACnE,YAAY,EAAE,KAAA,EAAO,MAAM,UAAA,IAAc,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IACjE,kBAAA,EAAoB;AAAA,MAClB,KAAA,EAAO,MAAM,kBAAA,IAAsB,IAAA;AAAA,MACnC,UAAA,EAAY;AAAA,KACd;AAAA,IACA,eAAe,EAAE,KAAA,EAAO,MAAM,aAAA,IAAiB,IAAA,EAAM,YAAY,KAAA;AAAM,GACzE;AACA,EAAA,MAAM,QAAA,GAAW,gBAAA;AAMjB,EAAA,MAAM,IAAA,GAAO,EAAE,GAAG,KAAA,EAAM;AAGxB,EAAA,IAAI,CAAC,QAAA,CAAS,UAAA,CAAW,KAAA,EAAO;AAC9B,IAAA,QAAA,CAAS,UAAA,CAAW,KAAA,GAAQ,MAAM,iBAAA,CAAkB;AAAA,MAClD,UAAA,EAAY,aAAA,CAAc,QAAA,CAAS,UAAA,CAAW,KAAK;AAAA,KACpD,CAAA;AAAA,EACH;AACA,EAAA,IAAI,CAAC,QAAA,CAAS,KAAA,CAAM,KAAA,EAAO;AACzB,IAAA,QAAA,CAAS,KAAA,CAAM,KAAA,GAAQ,UAAA,CAAW,QAAA,CAAS,YAAY,KAAK,CAAA;AAAA,EAC9D;AACA,EAAA,IAAI,CAAC,QAAA,CAAS,UAAA,CAAW,KAAA,EAAO;AAC9B,IAAA,QAAA,CAAS,WAAW,KAAA,GAClB,6CAAA;AAAA,EACJ;AACA,EAAA,IAAI,CAAC,QAAA,CAAS,kBAAA,CAAmB,KAAA,EAAO;AACtC,IAAA,QAAA,CAAS,mBAAmB,KAAA,GAC1B,6CAAA;AAAA,EACJ;AACA,EAAA,IAAI,CAAC,QAAA,CAAS,aAAA,CAAc,KAAA,EAAO;AACjC,IAAA,QAAA,CAAS,cAAc,KAAA,GACrB,kCAAA;AAAA,EACJ;AAGA,EAAA,MAAM,SAAA,GAAoB,CAAC,iBAAA,EAAkB,GAAI,iBAAiB,CAAA,CAAE,MAAA;AAAA,IAClE,CAAC,CAAA,EAAG,CAAA,KAAM,CAAA,GAAI,CAAA;AAAA,IACd;AAAA,GACF;AAEA,EAAA,MAAM,cAAA,GAAiB,qBAAA,CAAsB,cAA2B,CAAA;AACxE,EAAA,OAAO,OAAO,MAAA,CAAO;AAAA,IACnB,QAAA,EAAU;AAAA,MACR,cAAA,CAAe,SAAS,UAAU,CAAA;AAAA,MAClC,cAAA,CAAe,SAAS,UAAU,CAAA;AAAA,MAClC,cAAA,CAAe,SAAS,KAAK,CAAA;AAAA,MAC7B,cAAA,CAAe,SAAS,WAAW,CAAA;AAAA,MACnC,cAAA,CAAe,SAAS,UAAU,CAAA;AAAA,MAClC,cAAA,CAAe,SAAS,kBAAkB,CAAA;AAAA,MAC1C,cAAA,CAAe,SAAS,aAAa;AAAA,KACvC;AAAA,IACA,SAAA;AAAA,IACA,IAAA,EAAM,2CAA0C,CAAE,MAAA;AAAA,MAChD;AAAA,KACF;AAAA,IACA;AAAA,GAWwB,CAAA;AAC5B;AAuBO,SAAS,8BAAA,CAUd,OASA,MAAA,EAWyB;AAEzB,EAAA,MAAM,cAAA,GACJ,QAAQ,cAAA,IAAkB,6BAAA;AAG5B,EAAA,MAAM,gBAAA,GAAmB;AAAA,IACvB,YAAY,EAAE,KAAA,EAAO,MAAM,UAAA,IAAc,IAAA,EAAM,YAAY,IAAA,EAAK;AAAA,IAChE,YAAY,EAAE,KAAA,EAAO,MAAM,UAAA,IAAc,IAAA,EAAM,YAAY,IAAA,EAAK;AAAA,IAChE,OAAO,EAAE,KAAA,EAAO,MAAM,KAAA,IAAS,IAAA,EAAM,YAAY,IAAA,EAAK;AAAA,IACtD,aAAa,EAAE,KAAA,EAAO,MAAM,WAAA,IAAe,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IACnE,YAAY,EAAE,KAAA,EAAO,MAAM,UAAA,IAAc,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IACjE,kBAAA,EAAoB;AAAA,MAClB,KAAA,EAAO,MAAM,kBAAA,IAAsB,IAAA;AAAA,MACnC,UAAA,EAAY;AAAA,KACd;AAAA,IACA,eAAe,EAAE,KAAA,EAAO,MAAM,aAAA,IAAiB,IAAA,EAAM,YAAY,KAAA;AAAM,GACzE;AACA,EAAA,MAAM,QAAA,GAAW,gBAAA;AAMjB,EAAA,MAAM,IAAA,GAAO,EAAE,GAAG,KAAA,EAAM;AAGxB,EAAA,IAAI,CAAC,QAAA,CAAS,KAAA,CAAM,KAAA,EAAO;AACzB,IAAA,QAAA,CAAS,KAAA,CAAM,KAAA,GAAQ,UAAA,CAAW,QAAA,CAAS,YAAY,KAAK,CAAA;AAAA,EAC9D;AACA,EAAA,IAAI,CAAC,QAAA,CAAS,UAAA,CAAW,KAAA,EAAO;AAC9B,IAAA,QAAA,CAAS,WAAW,KAAA,GAClB,6CAAA;AAAA,EACJ;AACA,EAAA,IAAI,CAAC,QAAA,CAAS,kBAAA,CAAmB,KAAA,EAAO;AACtC,IAAA,QAAA,CAAS,mBAAmB,KAAA,GAC1B,6CAAA;AAAA,EACJ;AACA,EAAA,IAAI,CAAC,QAAA,CAAS,aAAA,CAAc,KAAA,EAAO;AACjC,IAAA,QAAA,CAAS,cAAc,KAAA,GACrB,kCAAA;AAAA,EACJ;AAGA,EAAA,MAAM,SAAA,GAAoB,CAAC,iBAAA,EAAkB,GAAI,iBAAiB,CAAA,CAAE,MAAA;AAAA,IAClE,CAAC,CAAA,EAAG,CAAA,KAAM,CAAA,GAAI,CAAA;AAAA,IACd;AAAA,GACF;AAEA,EAAA,MAAM,cAAA,GAAiB,qBAAA,CAAsB,cAA2B,CAAA;AACxE,EAAA,OAAO,OAAO,MAAA,CAAO;AAAA,IACnB,QAAA,EAAU;AAAA,MACR,cAAA,CAAe,SAAS,UAAU,CAAA;AAAA,MAClC,cAAA,CAAe,SAAS,UAAU,CAAA;AAAA,MAClC,cAAA,CAAe,SAAS,KAAK,CAAA;AAAA,MAC7B,cAAA,CAAe,SAAS,WAAW,CAAA;AAAA,MACnC,cAAA,CAAe,SAAS,UAAU,CAAA;AAAA,MAClC,cAAA,CAAe,SAAS,kBAAkB,CAAA;AAAA,MAC1C,cAAA,CAAe,SAAS,aAAa;AAAA,KACvC;AAAA,IACA,SAAA;AAAA,IACA,IAAA,EAAM,2CAA0C,CAAE,MAAA;AAAA,MAChD;AAAA,KACF;AAAA,IACA;AAAA,GAWwB,CAAA;AAC5B;AAmBO,SAAS,iCAId,WAAA,EAG4D;AAC5D,EAAA,IAAI,WAAA,CAAY,QAAA,CAAS,MAAA,GAAS,CAAA,EAAG;AAEnC,IAAA,MAAM,IAAI,MAAM,qBAAqB,CAAA;AAAA,EACvC;AACA,EAAA,IAAI,YAAA,GAAe,CAAA;AACnB,EAAA,MAAM,iBAAiB,MAAM;AAC3B,IAAA,MAAM,WAAA,GAAe,WAAA,CAAY,QAAA,CAA2B,YAAY,CAAA;AACxE,IAAA,YAAA,IAAgB,CAAA;AAChB,IAAA,OAAO,WAAA;AAAA,EACT,CAAA;AACA,EAAA,OAAO;AAAA,IACL,gBAAgB,WAAA,CAAY,cAAA;AAAA,IAC5B,QAAA,EAAU;AAAA,MACR,YAAY,cAAA,EAAe;AAAA,MAC3B,YAAY,cAAA,EAAe;AAAA,MAC3B,OAAO,cAAA,EAAe;AAAA,MACtB,aAAa,cAAA,EAAe;AAAA,MAC5B,YAAY,cAAA,EAAe;AAAA,MAC3B,oBAAoB,cAAA,EAAe;AAAA,MACnC,eAAe,cAAA;AAAe,KAChC;AAAA,IACA,IAAA,EAAM,yCAAA,EAA0C,CAAE,MAAA,CAAO,YAAY,IAAI;AAAA,GAC3E;AACF;ACnaO,IAAM,mCAAA,GAAsC,IAAI,UAAA,CAAW;AAAA,EAChE,EAAA;AAAA,EAAI,EAAA;AAAA,EAAI,EAAA;AAAA,EAAI,GAAA;AAAA,EAAK,GAAA;AAAA,EAAK,GAAA;AAAA,EAAK,GAAA;AAAA,EAAK;AAClC,CAAC;AAEM,SAAS,uCAAA,GAA0C;AACxD,EAAA,OAAO8B,cAAAA,CAAeC,eAAAA,EAAgB,EAAG,CAAC,CAAA,CAAE,MAAA;AAAA,IAC1C;AAAA,GACF;AACF;AA8DO,SAAS,2CAAA,GAA8F;AAC5G,EAAA,OAAOpB,gBAAAA;AAAA,IACLV,gBAAAA,CAAiB;AAAA,MACf,CAAC,eAAA,EAAiB6B,cAAAA,CAAeC,eAAAA,EAAgB,EAAG,CAAC,CAAC,CAAA;AAAA,MACtD,CAAC,UAAA,EAAYlB,aAAAA,EAAe,CAAA;AAAA,MAC5B,CAAC,eAAA,EAAiBA,aAAAA,EAAe,CAAA;AAAA,MACjC,CAAC,QAAA,EAAUE,gBAAAA,CAAiBb,iBAAAA,EAAmB,CAAC;AAAA,KACjD,CAAA;AAAA,IACD,CAAC,KAAA,MAAW;AAAA,MACV,GAAG,KAAA;AAAA,MACH,aAAA,EAAe,mCAAA;AAAA,MACf,MAAA,EAAQ,KAAA,CAAM,MAAA,IAAUwB,IAAAA;AAAK,KAC/B;AAAA,GACF;AACF;AAEO,SAAS,2CAAA,GAA0F;AACxG,EAAA,OAAOvB,gBAAAA,CAAiB;AAAA,IACtB,CAAC,eAAA,EAAiB6B,cAAAA,CAAeC,eAAAA,EAAgB,EAAG,CAAC,CAAC,CAAA;AAAA,IACtD,CAAC,UAAA,EAAYb,aAAAA,EAAe,CAAA;AAAA,IAC5B,CAAC,eAAA,EAAiBA,aAAAA,EAAe,CAAA;AAAA,IACjC,CAAC,QAAA,EAAUE,gBAAAA,CAAiBjB,iBAAAA,EAAmB,CAAC;AAAA,GACjD,CAAA;AACH;AAEO,SAAS,yCAAA,GAGd;AACA,EAAA,OAAOL,YAAAA;AAAA,IACL,2CAAA,EAA4C;AAAA,IAC5C,2CAAA;AAA4C,GAC9C;AACF;AAwBA,eAAsB,qCAAA,CAUpB,OASA,MAAA,EAaA;AAEA,EAAA,MAAM,cAAA,GACJ,QAAQ,cAAA,IAAkB,6BAAA;AAG5B,EAAA,MAAM,gBAAA,GAAmB;AAAA,IACvB,YAAY,EAAE,KAAA,EAAO,MAAM,UAAA,IAAc,IAAA,EAAM,YAAY,IAAA,EAAK;AAAA,IAChE,YAAY,EAAE,KAAA,EAAO,MAAM,UAAA,IAAc,IAAA,EAAM,YAAY,IAAA,EAAK;AAAA,IAChE,OAAO,EAAE,KAAA,EAAO,MAAM,KAAA,IAAS,IAAA,EAAM,YAAY,IAAA,EAAK;AAAA,IACtD,aAAa,EAAE,KAAA,EAAO,MAAM,WAAA,IAAe,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IACnE,YAAY,EAAE,KAAA,EAAO,MAAM,UAAA,IAAc,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IACjE,kBAAA,EAAoB;AAAA,MAClB,KAAA,EAAO,MAAM,kBAAA,IAAsB,IAAA;AAAA,MACnC,UAAA,EAAY;AAAA,KACd;AAAA,IACA,eAAe,EAAE,KAAA,EAAO,MAAM,aAAA,IAAiB,IAAA,EAAM,YAAY,KAAA;AAAM,GACzE;AACA,EAAA,MAAM,QAAA,GAAW,gBAAA;AAMjB,EAAA,MAAM,IAAA,GAAO,EAAE,GAAG,KAAA,EAAM;AAGxB,EAAA,IAAI,CAAC,QAAA,CAAS,UAAA,CAAW,KAAA,EAAO;AAC9B,IAAA,QAAA,CAAS,UAAA,CAAW,KAAA,GAAQ,MAAM,iBAAA,CAAkB;AAAA,MAClD,UAAA,EAAY,aAAA,CAAc,QAAA,CAAS,UAAA,CAAW,KAAK;AAAA,KACpD,CAAA;AAAA,EACH;AACA,EAAA,IAAI,CAAC,QAAA,CAAS,UAAA,CAAW,KAAA,EAAO;AAC9B,IAAA,QAAA,CAAS,WAAW,KAAA,GAClB,6CAAA;AAAA,EACJ;AACA,EAAA,IAAI,CAAC,QAAA,CAAS,kBAAA,CAAmB,KAAA,EAAO;AACtC,IAAA,QAAA,CAAS,mBAAmB,KAAA,GAC1B,6CAAA;AAAA,EACJ;AACA,EAAA,IAAI,CAAC,QAAA,CAAS,aAAA,CAAc,KAAA,EAAO;AACjC,IAAA,QAAA,CAAS,cAAc,KAAA,GACrB,kCAAA;AAAA,EACJ;AAGA,EAAA,MAAM,SAAA,GAAoB,CAAC,iBAAA,EAAkB,GAAI4C,iBAAiB,CAAA,CAAE,MAAA;AAAA,IAClE,CAAC,CAAA,EAAG,CAAA,KAAM,CAAA,GAAI,CAAA;AAAA,IACd;AAAA,GACF;AAEA,EAAA,MAAM,cAAA,GAAiB,qBAAA,CAAsB,cAA2B,CAAA;AACxE,EAAA,OAAO,OAAO,MAAA,CAAO;AAAA,IACnB,QAAA,EAAU;AAAA,MACR,cAAA,CAAe,SAAS,UAAU,CAAA;AAAA,MAClC,cAAA,CAAe,SAAS,UAAU,CAAA;AAAA,MAClC,cAAA,CAAe,SAAS,KAAK,CAAA;AAAA,MAC7B,cAAA,CAAe,SAAS,WAAW,CAAA;AAAA,MACnC,cAAA,CAAe,SAAS,UAAU,CAAA;AAAA,MAClC,cAAA,CAAe,SAAS,kBAAkB,CAAA;AAAA,MAC1C,cAAA,CAAe,SAAS,aAAa;AAAA,KACvC;AAAA,IACA,SAAA;AAAA,IACA,IAAA,EAAM,6CAA4C,CAAE,MAAA;AAAA,MAClD;AAAA,KACF;AAAA,IACA;AAAA,GAWwB,CAAA;AAC5B;AAwBO,SAAS,gCAAA,CAUd,OASA,MAAA,EAWyB;AAEzB,EAAA,MAAM,cAAA,GACJ,QAAQ,cAAA,IAAkB,6BAAA;AAG5B,EAAA,MAAM,gBAAA,GAAmB;AAAA,IACvB,YAAY,EAAE,KAAA,EAAO,MAAM,UAAA,IAAc,IAAA,EAAM,YAAY,IAAA,EAAK;AAAA,IAChE,YAAY,EAAE,KAAA,EAAO,MAAM,UAAA,IAAc,IAAA,EAAM,YAAY,IAAA,EAAK;AAAA,IAChE,OAAO,EAAE,KAAA,EAAO,MAAM,KAAA,IAAS,IAAA,EAAM,YAAY,IAAA,EAAK;AAAA,IACtD,aAAa,EAAE,KAAA,EAAO,MAAM,WAAA,IAAe,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IACnE,YAAY,EAAE,KAAA,EAAO,MAAM,UAAA,IAAc,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IACjE,kBAAA,EAAoB;AAAA,MAClB,KAAA,EAAO,MAAM,kBAAA,IAAsB,IAAA;AAAA,MACnC,UAAA,EAAY;AAAA,KACd;AAAA,IACA,eAAe,EAAE,KAAA,EAAO,MAAM,aAAA,IAAiB,IAAA,EAAM,YAAY,KAAA;AAAM,GACzE;AACA,EAAA,MAAM,QAAA,GAAW,gBAAA;AAMjB,EAAA,MAAM,IAAA,GAAO,EAAE,GAAG,KAAA,EAAM;AAGxB,EAAA,IAAI,CAAC,QAAA,CAAS,UAAA,CAAW,KAAA,EAAO;AAC9B,IAAA,QAAA,CAAS,WAAW,KAAA,GAClB,6CAAA;AAAA,EACJ;AACA,EAAA,IAAI,CAAC,QAAA,CAAS,kBAAA,CAAmB,KAAA,EAAO;AACtC,IAAA,QAAA,CAAS,mBAAmB,KAAA,GAC1B,6CAAA;AAAA,EACJ;AACA,EAAA,IAAI,CAAC,QAAA,CAAS,aAAA,CAAc,KAAA,EAAO;AACjC,IAAA,QAAA,CAAS,cAAc,KAAA,GACrB,kCAAA;AAAA,EACJ;AAGA,EAAA,MAAM,SAAA,GAAoB,CAAC,iBAAA,EAAkB,GAAIA,iBAAiB,CAAA,CAAE,MAAA;AAAA,IAClE,CAAC,CAAA,EAAG,CAAA,KAAM,CAAA,GAAI,CAAA;AAAA,IACd;AAAA,GACF;AAEA,EAAA,MAAM,cAAA,GAAiB,qBAAA,CAAsB,cAA2B,CAAA;AACxE,EAAA,OAAO,OAAO,MAAA,CAAO;AAAA,IACnB,QAAA,EAAU;AAAA,MACR,cAAA,CAAe,SAAS,UAAU,CAAA;AAAA,MAClC,cAAA,CAAe,SAAS,UAAU,CAAA;AAAA,MAClC,cAAA,CAAe,SAAS,KAAK,CAAA;AAAA,MAC7B,cAAA,CAAe,SAAS,WAAW,CAAA;AAAA,MACnC,cAAA,CAAe,SAAS,UAAU,CAAA;AAAA,MAClC,cAAA,CAAe,SAAS,kBAAkB,CAAA;AAAA,MAC1C,cAAA,CAAe,SAAS,aAAa;AAAA,KACvC;AAAA,IACA,SAAA;AAAA,IACA,IAAA,EAAM,6CAA4C,CAAE,MAAA;AAAA,MAClD;AAAA,KACF;AAAA,IACA;AAAA,GAWwB,CAAA;AAC5B;AAoBO,SAAS,mCAId,WAAA,EAG8D;AAC9D,EAAA,IAAI,WAAA,CAAY,QAAA,CAAS,MAAA,GAAS,CAAA,EAAG;AAEnC,IAAA,MAAM,IAAI,MAAM,qBAAqB,CAAA;AAAA,EACvC;AACA,EAAA,IAAI,YAAA,GAAe,CAAA;AACnB,EAAA,MAAM,iBAAiB,MAAM;AAC3B,IAAA,MAAM,WAAA,GAAe,WAAA,CAAY,QAAA,CAA2B,YAAY,CAAA;AACxE,IAAA,YAAA,IAAgB,CAAA;AAChB,IAAA,OAAO,WAAA;AAAA,EACT,CAAA;AACA,EAAA,MAAM,yBAAyB,MAAM;AACnC,IAAA,MAAM,cAAc,cAAA,EAAe;AACnC,IAAA,OAAO,WAAA,CAAY,OAAA,KAAY,6BAAA,GAC3B,MAAA,GACA,WAAA;AAAA,EACN,CAAA;AACA,EAAA,OAAO;AAAA,IACL,gBAAgB,WAAA,CAAY,cAAA;AAAA,IAC5B,QAAA,EAAU;AAAA,MACR,YAAY,cAAA,EAAe;AAAA,MAC3B,YAAY,cAAA,EAAe;AAAA,MAC3B,OAAO,cAAA,EAAe;AAAA,MACtB,aAAa,sBAAA,EAAuB;AAAA,MACpC,YAAY,cAAA,EAAe;AAAA,MAC3B,oBAAoB,cAAA,EAAe;AAAA,MACnC,eAAe,cAAA;AAAe,KAChC;AAAA,IACA,IAAA,EAAM,6CAA4C,CAAE,MAAA;AAAA,MAClD,WAAA,CAAY;AAAA;AACd,GACF;AACF;AC1cA,eAAsB,sBAAA,CACpB,KAAA,EACA,MAAA,GAAmD,EAAC,EACpB;AAChC,EAAA,MAAM;AAAA,IACJ,cAAA,GAAiB;AAAA,GACnB,GAAI,MAAA;AACJ,EAAA,OAAO,MAAMlD,wBAAAA,CAAyB;AAAA,IACpC,cAAA;AAAA,IACA,KAAA,EAAO;AAAA,MACLC,iBAAAA,EAAkB,CAAE,MAAA,CAAO,KAAA,CAAM,KAAK,CAAA;AAAA,MACtCA,iBAAAA,EAAkB,CAAE,MAAA,CAAO,KAAA,CAAM,YAAY,CAAA;AAAA,MAC7CA,iBAAAA,EAAkB,CAAE,MAAA,CAAO,KAAA,CAAM,IAAI;AAAA;AACvC,GACD,CAAA;AACH;AClBA,eAAsB,oBAAA,CACpB,KAAA,EACA,MAAA,GAAmD,EAAC,EACpB;AAChC,EAAA,MAAM;AAAA,IACJ,cAAA,GAAiB;AAAA,GACnB,GAAI,MAAA;AACJ,EAAA,OAAO,MAAMD,wBAAAA,CAAyB;AAAA,IACpC,cAAA;AAAA,IACA,KAAA,EAAO;AAAA,MACLgB,cAAAA,EAAe,CAAE,MAAA,CAAO,UAAU,CAAA;AAAA,MAClCf,iBAAAA,EAAkB,CAAE,MAAA,CAAO,cAAc,CAAA;AAAA,MACzCA,iBAAAA,EAAkB,CAAE,MAAA,CAAO,KAAA,CAAM,IAAI,CAAA;AAAA,MACrCe,cAAAA,EAAe,CAAE,MAAA,CAAO,SAAS;AAAA;AACnC,GACD,CAAA;AACH;AChBA,eAAsB,eAAA,CACpB,KAAA,EACA,MAAA,GAAmD,EAAC,EACpB;AAChC,EAAA,MAAM;AAAA,IACJ,cAAA,GAAiB;AAAA,GACnB,GAAI,MAAA;AACJ,EAAA,OAAO,MAAMhB,wBAAAA,CAAyB;AAAA,IACpC,cAAA;AAAA,IACA,KAAA,EAAO;AAAA,MACLgB,cAAAA,EAAe,CAAE,MAAA,CAAO,UAAU,CAAA;AAAA,MAClCf,iBAAAA,EAAkB,CAAE,MAAA,CAAO,cAAc,CAAA;AAAA,MACzCA,iBAAAA,EAAkB,CAAE,MAAA,CAAO,KAAA,CAAM,IAAI;AAAA;AACvC,GACD,CAAA;AACH;AClBA,eAAsB,oBAAA,CACpB,KAAA,EACA,MAAA,GAAmD,EAAC,EACpB;AAChC,EAAA,MAAM,EAAE,cAAA,GAAiB,6BAAA,EAA8B,GAAI,MAAA;AAC3D,EAAA,OAAO,MAAMD,wBAAAA,CAAyB;AAAA,IACpC,cAAA;AAAA,IACA,OAAO,CAACC,iBAAAA,GAAoB,MAAA,CAAO,KAAA,CAAM,IAAI,CAAC;AAAA,GAC/C,CAAA;AACH;ACNA,eAAsB,kBAAA,CACpB,KAAA,EACA,MAAA,GAAmD,EAAC,EACpB;AAChC,EAAA,MAAM,EAAE,cAAA,GAAiB,6BAAA,EAA8B,GAAI,MAAA;AAC3D,EAAA,OAAO,MAAMD,wBAAAA,CAAyB;AAAA,IACpC,cAAA;AAAA,IACA,KAAA,EAAO;AAAA,MACLgB,cAAAA,EAAe,CAAE,MAAA,CAAO,OAAO,CAAA;AAAA,MAC/Bf,iBAAAA,EAAkB,CAAE,MAAA,CAAO,KAAA,CAAM,UAAU,CAAA;AAAA,MAC3CY,aAAAA,EAAc,CAAE,MAAA,CAAO,KAAA,CAAM,SAAS;AAAA;AACxC,GACD,CAAA;AACH;;;ACXO,SAAS,KAAK,KAAA,EAA8C;AACjE,EAAA,OAAO,UAAA,CAAW,MAAM,OAAA,CAAQ,KAAK,IAAI,UAAA,CAAW,KAAK,IAAI,KAAK,CAAA;AACpE;AAEO,SAAS,aAAa,QAAA,EAAwC;AACnE,EAAA,OAAO,UAAA,CAAW;AAAA,IAChB,iBAAiB,QAAQ,CAAA;AAAA,IACzB,oBAAA,CAAqB,SAAS,QAAQ;AAAA,GACvC,CAAA;AACH;AAWA,eAAsB,SAAS,KAAA,EAA2C;AACxE,EAAA,MAAM,QAAA,GAAW,KAAA,CAAM,QAAA,IAAY,KAAA,CAAM,KAAA;AACzC,EAAA,MAAM,UAAA,GAAa,MAAM,UAAA,IAAc,CAAA;AACvC,EAAA,MAAM,CAAC,WAAW,CAAA,GAAI,MAAM,kBAAA,CAAmB;AAAA,IAC7C,YAAY,KAAA,CAAM,UAAA;AAAA,IAClB,WAAW,KAAA,CAAM;AAAA,GAClB,CAAA;AAED,EAAA,OAAO,IAAA,CAAK;AAAA,IACVC,YAAAA,EAAa,CAAE,MAAA,CAAO,UAAU,CAAA;AAAA,IAChCb,iBAAAA,EAAkB,CAAE,MAAA,CAAO,WAAW,CAAA;AAAA,IACtCA,iBAAAA,EAAkB,CAAE,MAAA,CAAO,KAAA,CAAM,KAAK,CAAA;AAAA,IACtCA,iBAAAA,EAAkB,CAAE,MAAA,CAAO,QAAQ,CAAA;AAAA,IACnCY,aAAAA,EAAc,CAAE,MAAA,CAAO,KAAA,CAAM,SAAS,CAAA;AAAA,IACtC,YAAA,CAAa,MAAM,QAAQ;AAAA,GAC5B,CAAA;AACH;AAEO,SAAS,iBAAiB,QAAA,EAAwC;AACvE,EAAA,OAAO,IAAA,CAAK;AAAA,IACV,IAAA,CAAK,sBAAA,EAAuB,CAAE,MAAA,CAAO,QAAQ,CAAe,CAAA;AAAA,IAC5DO,aAAAA,EAAc,CAAE,MAAA,CAAO,QAAA,CAAS,oBAAoB;AAAA,GACrD,CAAA;AACH;AAEO,SAAS,qBACd,QAAA,EACY;AACZ,EAAA,OAAO,IAAA;AAAA,IACLE,gBAAgB,iBAAA,EAAkB,EAAG,EAAE,IAAA,EAAM,WAAA,EAAa,CAAA,CAAE,MAAA;AAAA,MAC1D;AAAA;AACF,GACF;AACF;;;ACnEO,SAAS,eAAA,CAAgB;AAAA,EAC9B;AACF,CAAA,EAEe;AACb,EAAA,OAAO,gBAAA,CAAiB,KAAK,QAAQ,CAAA;AACvC;AAEO,SAAS,kBAAA,CAAmB;AAAA,EACjC;AACF,CAAA,EAEe;AACb,EAAA,OAAO,oBAAA,CAAqB,IAAA,CAAK,QAAA,CAAS,QAAQ,CAAA;AACpD;;;ACkCO,IAAM,2BAAA,GAA8B,IAAI,UAAA,CAAW;AAAA,EACxD,EAAA;AAAA,EAAI,EAAA;AAAA,EAAI,EAAA;AAAA,EAAI,EAAA;AAAA,EAAI,GAAA;AAAA,EAAK,GAAA;AAAA,EAAK,GAAA;AAAA,EAAK;AACjC,CAAC;AAEM,SAAS,iCAAA,GAAoC;AAClD,EAAA,OAAOc,cAAAA,CAAeC,eAAAA,EAAgB,EAAG,CAAC,CAAA,CAAE,MAAA;AAAA,IAC1C;AAAA,GACF;AACF;AAqFO,SAAS,qCAAA,GAAkF;AAChG,EAAA,OAAOpB,gBAAAA;AAAA,IACLV,gBAAAA,CAAiB;AAAA,MACf,CAAC,eAAA,EAAiB6B,cAAAA,CAAeC,eAAAA,EAAgB,EAAG,CAAC,CAAC,CAAA;AAAA,MACtD,CAAC,UAAA,EAAY,sBAAA,EAAwB;AAAA,KACtC,CAAA;AAAA,IACD,CAAC,KAAA,MAAW,EAAE,GAAG,KAAA,EAAO,eAAe,2BAAA,EAA4B;AAAA,GACrE;AACF;AAEO,SAAS,qCAAA,GAA8E;AAC5F,EAAA,OAAO5B,gBAAAA,CAAiB;AAAA,IACtB,CAAC,eAAA,EAAiB6B,cAAAA,CAAeC,eAAAA,EAAgB,EAAG,CAAC,CAAC,CAAA;AAAA,IACtD,CAAC,UAAA,EAAY,sBAAA,EAAwB;AAAA,GACtC,CAAA;AACH;AAEO,SAAS,mCAAA,GAGd;AACA,EAAA,OAAOjC,YAAAA;AAAA,IACL,qCAAA,EAAsC;AAAA,IACtC,qCAAA;AAAsC,GACxC;AACF;AAiCA,eAAsB,+BAAA,CAgBpB,OAeA,MAAA,EAkBA;AAEA,EAAA,MAAM,cAAA,GACJ,QAAQ,cAAA,IAAkB,6BAAA;AAG5B,EAAA,MAAM,gBAAA,GAAmB;AAAA,IACvB,SAAS,EAAE,KAAA,EAAO,MAAM,OAAA,IAAW,IAAA,EAAM,YAAY,IAAA,EAAK;AAAA,IAC1D,WAAW,EAAE,KAAA,EAAO,MAAM,SAAA,IAAa,IAAA,EAAM,YAAY,IAAA,EAAK;AAAA,IAC9D,cAAc,EAAE,KAAA,EAAO,MAAM,YAAA,IAAgB,IAAA,EAAM,YAAY,IAAA,EAAK;AAAA,IACpE,MAAM,EAAE,KAAA,EAAO,MAAM,IAAA,IAAQ,IAAA,EAAM,YAAY,IAAA,EAAK;AAAA,IACpD,eAAe,EAAE,KAAA,EAAO,MAAM,aAAA,IAAiB,IAAA,EAAM,YAAY,IAAA,EAAK;AAAA,IACtE,iBAAiB,EAAE,KAAA,EAAO,MAAM,eAAA,IAAmB,IAAA,EAAM,YAAY,IAAA,EAAK;AAAA,IAC1E,eAAe,EAAE,KAAA,EAAO,MAAM,aAAA,IAAiB,IAAA,EAAM,YAAY,IAAA,EAAK;AAAA,IACtE,eAAe,EAAE,KAAA,EAAO,MAAM,aAAA,IAAiB,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IACvE,YAAY,EAAE,KAAA,EAAO,MAAM,UAAA,IAAc,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IACjE,oBAAA,EAAsB;AAAA,MACpB,KAAA,EAAO,MAAM,oBAAA,IAAwB,IAAA;AAAA,MACrC,UAAA,EAAY;AAAA,KACd;AAAA,IACA,cAAc,EAAE,KAAA,EAAO,MAAM,YAAA,IAAgB,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IACrE,sBAAA,EAAwB;AAAA,MACtB,KAAA,EAAO,MAAM,sBAAA,IAA0B,IAAA;AAAA,MACvC,UAAA,EAAY;AAAA,KACd;AAAA,IACA,YAAY,EAAE,KAAA,EAAO,MAAM,UAAA,IAAc,IAAA,EAAM,YAAY,KAAA;AAAM,GACnE;AACA,EAAA,MAAM,QAAA,GAAW,gBAAA;AAMjB,EAAA,MAAM,IAAA,GAAO,EAAE,GAAG,KAAA,EAAM;AAGxB,EAAA,IAAI,CAAC,QAAA,CAAS,YAAA,CAAa,KAAA,EAAO;AAChC,IAAA,QAAA,CAAS,aAAa,KAAA,GACpB,6CAAA;AAAA,EACJ;AACA,EAAA,IAAI,CAAC,QAAA,CAAS,YAAA,CAAa,KAAA,EAAO;AAChC,IAAA,QAAA,CAAS,YAAA,CAAa,KAAA,GAAQ,MAAM,sBAAA,CAAuB;AAAA,MACzD,IAAA,EAAM,aAAA,CAAc,QAAA,CAAS,IAAA,CAAK,KAAK,CAAA;AAAA,MACvC,YAAA,EAAc,aAAA,CAAc,QAAA,CAAS,YAAA,CAAa,KAAK,CAAA;AAAA,MACvD,KAAA,EAAO,aAAA,CAAc,QAAA,CAAS,SAAA,CAAU,KAAK;AAAA,KAC9C,CAAA;AAAA,EACH;AACA,EAAA,IAAI,CAAC,QAAA,CAAS,aAAA,CAAc,KAAA,EAAO;AACjC,IAAA,QAAA,CAAS,aAAA,CAAc,KAAA,GAAQ,MAAM,oBAAA,CAAqB;AAAA,MACxD,IAAA,EAAM,aAAA,CAAc,QAAA,CAAS,IAAA,CAAK,KAAK;AAAA,KACxC,CAAA;AAAA,EACH;AACA,EAAA,IAAI,CAAC,QAAA,CAAS,eAAA,CAAgB,KAAA,EAAO;AACnC,IAAA,QAAA,CAAS,eAAA,CAAgB,KAAA,GAAQ,MAAM,eAAA,CAAgB;AAAA,MACrD,IAAA,EAAM,aAAA,CAAc,QAAA,CAAS,IAAA,CAAK,KAAK;AAAA,KACxC,CAAA;AAAA,EACH;AACA,EAAA,IAAI,CAAC,QAAA,CAAS,aAAA,CAAc,KAAA,EAAO;AACjC,IAAA,QAAA,CAAS,aAAA,CAAc,KAAA,GAAQ,MAAM,oBAAA,CAAqB;AAAA,MACxD,IAAA,EAAM,aAAA,CAAc,QAAA,CAAS,IAAA,CAAK,KAAK;AAAA,KACxC,CAAA;AAAA,EACH;AACA,EAAA,IAAI,CAAC,QAAA,CAAS,aAAA,CAAc,KAAA,EAAO;AACjC,IAAA,QAAA,CAAS,cAAc,KAAA,GACrB,kCAAA;AAAA,EACJ;AACA,EAAA,IAAI,CAAC,QAAA,CAAS,UAAA,CAAW,KAAA,EAAO;AAC9B,IAAA,QAAA,CAAS,WAAW,KAAA,GAClB,6CAAA;AAAA,EACJ;AACA,EAAA,IAAI,CAAC,QAAA,CAAS,oBAAA,CAAqB,KAAA,EAAO;AACxC,IAAA,QAAA,CAAS,qBAAqB,KAAA,GAC5B,6CAAA;AAAA,EACJ;AACA,EAAA,IAAI,CAAC,QAAA,CAAS,sBAAA,CAAuB,KAAA,EAAO;AAC1C,IAAA,QAAA,CAAS,uBAAuB,KAAA,GAC9B,8CAAA;AAAA,EACJ;AACA,EAAA,IAAI,CAAC,QAAA,CAAS,UAAA,CAAW,KAAA,EAAO;AAC9B,IAAA,QAAA,CAAS,WAAW,KAAA,GAClB,6CAAA;AAAA,EACJ;AAEA,EAAA,MAAM,cAAA,GAAiB,qBAAA,CAAsB,cAA2B,CAAA;AACxE,EAAA,OAAO,OAAO,MAAA,CAAO;AAAA,IACnB,QAAA,EAAU;AAAA,MACR,cAAA,CAAe,SAAS,OAAO,CAAA;AAAA,MAC/B,cAAA,CAAe,SAAS,SAAS,CAAA;AAAA,MACjC,cAAA,CAAe,SAAS,YAAY,CAAA;AAAA,MACpC,cAAA,CAAe,SAAS,IAAI,CAAA;AAAA,MAC5B,cAAA,CAAe,SAAS,aAAa,CAAA;AAAA,MACrC,cAAA,CAAe,SAAS,eAAe,CAAA;AAAA,MACvC,cAAA,CAAe,SAAS,aAAa,CAAA;AAAA,MACrC,cAAA,CAAe,SAAS,aAAa,CAAA;AAAA,MACrC,cAAA,CAAe,SAAS,UAAU,CAAA;AAAA,MAClC,cAAA,CAAe,SAAS,oBAAoB,CAAA;AAAA,MAC5C,cAAA,CAAe,SAAS,YAAY,CAAA;AAAA,MACpC,cAAA,CAAe,SAAS,sBAAsB,CAAA;AAAA,MAC9C,cAAA,CAAe,SAAS,UAAU;AAAA,KACpC;AAAA,IACA,IAAA,EAAM,uCAAsC,CAAE,MAAA;AAAA,MAC5C;AAAA,KACF;AAAA,IACA;AAAA,GAgBD,CAAA;AACH;AAiCO,SAAS,0BAAA,CAgBd,OAeA,MAAA,EAgBA;AAEA,EAAA,MAAM,cAAA,GACJ,QAAQ,cAAA,IAAkB,6BAAA;AAG5B,EAAA,MAAM,gBAAA,GAAmB;AAAA,IACvB,SAAS,EAAE,KAAA,EAAO,MAAM,OAAA,IAAW,IAAA,EAAM,YAAY,IAAA,EAAK;AAAA,IAC1D,WAAW,EAAE,KAAA,EAAO,MAAM,SAAA,IAAa,IAAA,EAAM,YAAY,IAAA,EAAK;AAAA,IAC9D,cAAc,EAAE,KAAA,EAAO,MAAM,YAAA,IAAgB,IAAA,EAAM,YAAY,IAAA,EAAK;AAAA,IACpE,MAAM,EAAE,KAAA,EAAO,MAAM,IAAA,IAAQ,IAAA,EAAM,YAAY,IAAA,EAAK;AAAA,IACpD,eAAe,EAAE,KAAA,EAAO,MAAM,aAAA,IAAiB,IAAA,EAAM,YAAY,IAAA,EAAK;AAAA,IACtE,iBAAiB,EAAE,KAAA,EAAO,MAAM,eAAA,IAAmB,IAAA,EAAM,YAAY,IAAA,EAAK;AAAA,IAC1E,eAAe,EAAE,KAAA,EAAO,MAAM,aAAA,IAAiB,IAAA,EAAM,YAAY,IAAA,EAAK;AAAA,IACtE,eAAe,EAAE,KAAA,EAAO,MAAM,aAAA,IAAiB,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IACvE,YAAY,EAAE,KAAA,EAAO,MAAM,UAAA,IAAc,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IACjE,oBAAA,EAAsB;AAAA,MACpB,KAAA,EAAO,MAAM,oBAAA,IAAwB,IAAA;AAAA,MACrC,UAAA,EAAY;AAAA,KACd;AAAA,IACA,cAAc,EAAE,KAAA,EAAO,MAAM,YAAA,IAAgB,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IACrE,sBAAA,EAAwB;AAAA,MACtB,KAAA,EAAO,MAAM,sBAAA,IAA0B,IAAA;AAAA,MACvC,UAAA,EAAY;AAAA,KACd;AAAA,IACA,YAAY,EAAE,KAAA,EAAO,MAAM,UAAA,IAAc,IAAA,EAAM,YAAY,KAAA;AAAM,GACnE;AACA,EAAA,MAAM,QAAA,GAAW,gBAAA;AAMjB,EAAA,MAAM,IAAA,GAAO,EAAE,GAAG,KAAA,EAAM;AAGxB,EAAA,IAAI,CAAC,QAAA,CAAS,YAAA,CAAa,KAAA,EAAO;AAChC,IAAA,QAAA,CAAS,aAAa,KAAA,GACpB,6CAAA;AAAA,EACJ;AACA,EAAA,IAAI,CAAC,QAAA,CAAS,aAAA,CAAc,KAAA,EAAO;AACjC,IAAA,QAAA,CAAS,cAAc,KAAA,GACrB,kCAAA;AAAA,EACJ;AACA,EAAA,IAAI,CAAC,QAAA,CAAS,UAAA,CAAW,KAAA,EAAO;AAC9B,IAAA,QAAA,CAAS,WAAW,KAAA,GAClB,6CAAA;AAAA,EACJ;AACA,EAAA,IAAI,CAAC,QAAA,CAAS,oBAAA,CAAqB,KAAA,EAAO;AACxC,IAAA,QAAA,CAAS,qBAAqB,KAAA,GAC5B,6CAAA;AAAA,EACJ;AACA,EAAA,IAAI,CAAC,QAAA,CAAS,sBAAA,CAAuB,KAAA,EAAO;AAC1C,IAAA,QAAA,CAAS,uBAAuB,KAAA,GAC9B,8CAAA;AAAA,EACJ;AACA,EAAA,IAAI,CAAC,QAAA,CAAS,UAAA,CAAW,KAAA,EAAO;AAC9B,IAAA,QAAA,CAAS,WAAW,KAAA,GAClB,6CAAA;AAAA,EACJ;AAEA,EAAA,MAAM,cAAA,GAAiB,qBAAA,CAAsB,cAA2B,CAAA;AACxE,EAAA,OAAO,OAAO,MAAA,CAAO;AAAA,IACnB,QAAA,EAAU;AAAA,MACR,cAAA,CAAe,SAAS,OAAO,CAAA;AAAA,MAC/B,cAAA,CAAe,SAAS,SAAS,CAAA;AAAA,MACjC,cAAA,CAAe,SAAS,YAAY,CAAA;AAAA,MACpC,cAAA,CAAe,SAAS,IAAI,CAAA;AAAA,MAC5B,cAAA,CAAe,SAAS,aAAa,CAAA;AAAA,MACrC,cAAA,CAAe,SAAS,eAAe,CAAA;AAAA,MACvC,cAAA,CAAe,SAAS,aAAa,CAAA;AAAA,MACrC,cAAA,CAAe,SAAS,aAAa,CAAA;AAAA,MACrC,cAAA,CAAe,SAAS,UAAU,CAAA;AAAA,MAClC,cAAA,CAAe,SAAS,oBAAoB,CAAA;AAAA,MAC5C,cAAA,CAAe,SAAS,YAAY,CAAA;AAAA,MACpC,cAAA,CAAe,SAAS,sBAAsB,CAAA;AAAA,MAC9C,cAAA,CAAe,SAAS,UAAU;AAAA,KACpC;AAAA,IACA,IAAA,EAAM,uCAAsC,CAAE,MAAA;AAAA,MAC5C;AAAA,KACF;AAAA,IACA;AAAA,GAgBD,CAAA;AACH;AAyBO,SAAS,6BAId,WAAA,EAGwD;AACxD,EAAA,IAAI,WAAA,CAAY,QAAA,CAAS,MAAA,GAAS,EAAA,EAAI;AAEpC,IAAA,MAAM,IAAI,MAAM,qBAAqB,CAAA;AAAA,EACvC;AACA,EAAA,IAAI,YAAA,GAAe,CAAA;AACnB,EAAA,MAAM,iBAAiB,MAAM;AAC3B,IAAA,MAAM,WAAA,GAAe,WAAA,CAAY,QAAA,CAA2B,YAAY,CAAA;AACxE,IAAA,YAAA,IAAgB,CAAA;AAChB,IAAA,OAAO,WAAA;AAAA,EACT,CAAA;AACA,EAAA,OAAO;AAAA,IACL,gBAAgB,WAAA,CAAY,cAAA;AAAA,IAC5B,QAAA,EAAU;AAAA,MACR,SAAS,cAAA,EAAe;AAAA,MACxB,WAAW,cAAA,EAAe;AAAA,MAC1B,cAAc,cAAA,EAAe;AAAA,MAC7B,MAAM,cAAA,EAAe;AAAA,MACrB,eAAe,cAAA,EAAe;AAAA,MAC9B,iBAAiB,cAAA,EAAe;AAAA,MAChC,eAAe,cAAA,EAAe;AAAA,MAC9B,eAAe,cAAA,EAAe;AAAA,MAC9B,YAAY,cAAA,EAAe;AAAA,MAC3B,sBAAsB,cAAA,EAAe;AAAA,MACrC,cAAc,cAAA,EAAe;AAAA,MAC7B,wBAAwB,cAAA,EAAe;AAAA,MACvC,YAAY,cAAA;AAAe,KAC7B;AAAA,IACA,IAAA,EAAM,qCAAA,EAAsC,CAAE,MAAA,CAAO,YAAY,IAAI;AAAA,GACvE;AACF;ACtjBO,IAAM,sBAAA,GAAyB,IAAI,UAAA,CAAW;AAAA,EACnD,EAAA;AAAA,EAAI,GAAA;AAAA,EAAK,EAAA;AAAA,EAAI,GAAA;AAAA,EAAK,EAAA;AAAA,EAAI,EAAA;AAAA,EAAI,CAAA;AAAA,EAAG;AAC/B,CAAC;AAEM,SAAS,6BAAA,GAAgC;AAC9C,EAAA,OAAO8B,eAAeC,eAAAA,EAAgB,EAAG,CAAC,CAAA,CAAE,OAAO,sBAAsB,CAAA;AAC3E;AAqEO,SAAS,iCAAA,GAAmF;AACjG,EAAA,OAAOpB,gBAAAA;AAAA,IACLV,gBAAAA,CAAiB;AAAA,MACf,CAAC,eAAA,EAAiB6B,cAAAA,CAAeC,eAAAA,EAAgB,EAAG,CAAC,CAAC,CAAA;AAAA,MACtD,CAAC,MAAA,EAAQD,cAAAA,CAAeC,eAAAA,EAAgB,EAAG,EAAE,CAAC,CAAA;AAAA,MAC9C,CAAC,UAAA,EAAYD,cAAAA,CAAeC,eAAAA,EAAgB,EAAG,EAAE,CAAC,CAAA;AAAA,MAClD,CAAC,aAAA,EAAeD,cAAAA,CAAeC,eAAAA,EAAgB,EAAG,EAAE,CAAC,CAAA;AAAA,MACrD,CAAC,OAAA,EAASxB,aAAAA,EAAe,CAAA;AAAA,MACzB,CAAC,OAAA,EAASM,aAAAA,EAAe;AAAA,KAC1B,CAAA;AAAA,IACD,CAAC,KAAA,MAAW,EAAE,GAAG,KAAA,EAAO,eAAe,sBAAA,EAAuB;AAAA,GAChE;AACF;AAEO,SAAS,iCAAA,GAA+E;AAC7F,EAAA,OAAOV,gBAAAA,CAAiB;AAAA,IACtB,CAAC,eAAA,EAAiB6B,cAAAA,CAAeC,eAAAA,EAAgB,EAAG,CAAC,CAAC,CAAA;AAAA,IACtD,CAAC,MAAA,EAAQD,cAAAA,CAAeC,eAAAA,EAAgB,EAAG,EAAE,CAAC,CAAA;AAAA,IAC9C,CAAC,UAAA,EAAYD,cAAAA,CAAeC,eAAAA,EAAgB,EAAG,EAAE,CAAC,CAAA;AAAA,IAClD,CAAC,aAAA,EAAeD,cAAAA,CAAeC,eAAAA,EAAgB,EAAG,EAAE,CAAC,CAAA;AAAA,IACrD,CAAC,OAAA,EAASL,aAAAA,EAAe,CAAA;AAAA,IACzB,CAAC,OAAA,EAASR,aAAAA,EAAe;AAAA,GAC1B,CAAA;AACH;AAEO,SAAS,+BAAA,GAGd;AACA,EAAA,OAAOpB,YAAAA;AAAA,IACL,iCAAA,EAAkC;AAAA,IAClC,iCAAA;AAAkC,GACpC;AACF;AA4BA,eAAsB,2BAAA,CAWpB,OAUA,MAAA,EAaA;AAEA,EAAA,MAAM,cAAA,GACJ,QAAQ,cAAA,IAAkB,6BAAA;AAG5B,EAAA,MAAM,gBAAA,GAAmB;AAAA,IACvB,YAAY,EAAE,KAAA,EAAO,MAAM,UAAA,IAAc,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IACjE,WAAW,EAAE,KAAA,EAAO,MAAM,SAAA,IAAa,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IAC/D,oBAAA,EAAsB;AAAA,MACpB,KAAA,EAAO,MAAM,oBAAA,IAAwB,IAAA;AAAA,MACrC,UAAA,EAAY;AAAA,KACd;AAAA,IACA,eAAA,EAAiB;AAAA,MACf,KAAA,EAAO,MAAM,eAAA,IAAmB,IAAA;AAAA,MAChC,UAAA,EAAY;AAAA,KACd;AAAA,IACA,YAAY,EAAE,KAAA,EAAO,MAAM,UAAA,IAAc,IAAA,EAAM,YAAY,IAAA,EAAK;AAAA,IAChE,YAAY,EAAE,KAAA,EAAO,MAAM,UAAA,IAAc,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IACjE,kBAAA,EAAoB;AAAA,MAClB,KAAA,EAAO,MAAM,kBAAA,IAAsB,IAAA;AAAA,MACnC,UAAA,EAAY;AAAA,KACd;AAAA,IACA,eAAe,EAAE,KAAA,EAAO,MAAM,aAAA,IAAiB,IAAA,EAAM,YAAY,KAAA;AAAM,GACzE;AACA,EAAA,MAAM,QAAA,GAAW,gBAAA;AAMjB,EAAA,MAAM,IAAA,GAAO,EAAE,GAAG,KAAA,EAAM;AAGxB,EAAA,IAAI,CAAC,QAAA,CAAS,UAAA,CAAW,KAAA,EAAO;AAC9B,IAAA,QAAA,CAAS,UAAA,CAAW,KAAA,GAAQ,MAAM,iBAAA,CAAkB;AAAA,MAClD,UAAA,EAAY,aAAA,CAAc,QAAA,CAAS,UAAA,CAAW,KAAK;AAAA,KACpD,CAAA;AAAA,EACH;AACA,EAAA,IAAI,CAAC,QAAA,CAAS,UAAA,CAAW,KAAA,EAAO;AAC9B,IAAA,QAAA,CAAS,WAAW,KAAA,GAClB,6CAAA;AAAA,EACJ;AACA,EAAA,IAAI,CAAC,QAAA,CAAS,kBAAA,CAAmB,KAAA,EAAO;AACtC,IAAA,QAAA,CAAS,mBAAmB,KAAA,GAC1B,6CAAA;AAAA,EACJ;AACA,EAAA,IAAI,CAAC,QAAA,CAAS,aAAA,CAAc,KAAA,EAAO;AACjC,IAAA,QAAA,CAAS,cAAc,KAAA,GACrB,kCAAA;AAAA,EACJ;AAGA,EAAA,MAAM,iBAAA,GAAA,CAAoC,IAAA,CAAK,KAAA,IAAS,EAAC,EAAG,GAAA;AAAA,IAC1D,CAACkC,QAAAA,MAAa,EAAE,SAAAA,QAAAA,EAAS,IAAA,EAAMS,YAAY,QAAA,EAAS;AAAA,GACtD;AAEA,EAAA,MAAM,cAAA,GAAiB,qBAAA,CAAsB,cAA2B,CAAA;AACxE,EAAA,OAAO,OAAO,MAAA,CAAO;AAAA,IACnB,QAAA,EAAU;AAAA,MACR,cAAA,CAAe,SAAS,UAAU,CAAA;AAAA,MAClC,cAAA,CAAe,SAAS,SAAS,CAAA;AAAA,MACjC,cAAA,CAAe,SAAS,oBAAoB,CAAA;AAAA,MAC5C,cAAA,CAAe,SAAS,eAAe,CAAA;AAAA,MACvC,cAAA,CAAe,SAAS,UAAU,CAAA;AAAA,MAClC,cAAA,CAAe,SAAS,UAAU,CAAA;AAAA,MAClC,cAAA,CAAe,SAAS,kBAAkB,CAAA;AAAA,MAC1C,cAAA,CAAe,SAAS,aAAa,CAAA;AAAA,MACrC,GAAG;AAAA,KACL;AAAA,IACA,IAAA,EAAM,mCAAkC,CAAE,MAAA;AAAA,MACxC;AAAA,KACF;AAAA,IACA;AAAA,GAWD,CAAA;AACH;AA4BO,SAAS,sBAAA,CAWd,OAUA,MAAA,EAWA;AAEA,EAAA,MAAM,cAAA,GACJ,QAAQ,cAAA,IAAkB,6BAAA;AAG5B,EAAA,MAAM,gBAAA,GAAmB;AAAA,IACvB,YAAY,EAAE,KAAA,EAAO,MAAM,UAAA,IAAc,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IACjE,WAAW,EAAE,KAAA,EAAO,MAAM,SAAA,IAAa,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IAC/D,oBAAA,EAAsB;AAAA,MACpB,KAAA,EAAO,MAAM,oBAAA,IAAwB,IAAA;AAAA,MACrC,UAAA,EAAY;AAAA,KACd;AAAA,IACA,eAAA,EAAiB;AAAA,MACf,KAAA,EAAO,MAAM,eAAA,IAAmB,IAAA;AAAA,MAChC,UAAA,EAAY;AAAA,KACd;AAAA,IACA,YAAY,EAAE,KAAA,EAAO,MAAM,UAAA,IAAc,IAAA,EAAM,YAAY,IAAA,EAAK;AAAA,IAChE,YAAY,EAAE,KAAA,EAAO,MAAM,UAAA,IAAc,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IACjE,kBAAA,EAAoB;AAAA,MAClB,KAAA,EAAO,MAAM,kBAAA,IAAsB,IAAA;AAAA,MACnC,UAAA,EAAY;AAAA,KACd;AAAA,IACA,eAAe,EAAE,KAAA,EAAO,MAAM,aAAA,IAAiB,IAAA,EAAM,YAAY,KAAA;AAAM,GACzE;AACA,EAAA,MAAM,QAAA,GAAW,gBAAA;AAMjB,EAAA,MAAM,IAAA,GAAO,EAAE,GAAG,KAAA,EAAM;AAGxB,EAAA,IAAI,CAAC,QAAA,CAAS,UAAA,CAAW,KAAA,EAAO;AAC9B,IAAA,QAAA,CAAS,WAAW,KAAA,GAClB,6CAAA;AAAA,EACJ;AACA,EAAA,IAAI,CAAC,QAAA,CAAS,kBAAA,CAAmB,KAAA,EAAO;AACtC,IAAA,QAAA,CAAS,mBAAmB,KAAA,GAC1B,6CAAA;AAAA,EACJ;AACA,EAAA,IAAI,CAAC,QAAA,CAAS,aAAA,CAAc,KAAA,EAAO;AACjC,IAAA,QAAA,CAAS,cAAc,KAAA,GACrB,kCAAA;AAAA,EACJ;AAGA,EAAA,MAAM,iBAAA,GAAA,CAAoC,IAAA,CAAK,KAAA,IAAS,EAAC,EAAG,GAAA;AAAA,IAC1D,CAACT,QAAAA,MAAa,EAAE,SAAAA,QAAAA,EAAS,IAAA,EAAMS,YAAY,QAAA,EAAS;AAAA,GACtD;AAEA,EAAA,MAAM,cAAA,GAAiB,qBAAA,CAAsB,cAA2B,CAAA;AACxE,EAAA,OAAO,OAAO,MAAA,CAAO;AAAA,IACnB,QAAA,EAAU;AAAA,MACR,cAAA,CAAe,SAAS,UAAU,CAAA;AAAA,MAClC,cAAA,CAAe,SAAS,SAAS,CAAA;AAAA,MACjC,cAAA,CAAe,SAAS,oBAAoB,CAAA;AAAA,MAC5C,cAAA,CAAe,SAAS,eAAe,CAAA;AAAA,MACvC,cAAA,CAAe,SAAS,UAAU,CAAA;AAAA,MAClC,cAAA,CAAe,SAAS,UAAU,CAAA;AAAA,MAClC,cAAA,CAAe,SAAS,kBAAkB,CAAA;AAAA,MAC1C,cAAA,CAAe,SAAS,aAAa,CAAA;AAAA,MACrC,GAAG;AAAA,KACL;AAAA,IACA,IAAA,EAAM,mCAAkC,CAAE,MAAA;AAAA,MACxC;AAAA,KACF;AAAA,IACA;AAAA,GAWD,CAAA;AACH;AAoBO,SAAS,yBAId,WAAA,EAGoD;AACpD,EAAA,IAAI,WAAA,CAAY,QAAA,CAAS,MAAA,GAAS,CAAA,EAAG;AAEnC,IAAA,MAAM,IAAI,MAAM,qBAAqB,CAAA;AAAA,EACvC;AACA,EAAA,IAAI,YAAA,GAAe,CAAA;AACnB,EAAA,MAAM,iBAAiB,MAAM;AAC3B,IAAA,MAAM,WAAA,GAAe,WAAA,CAAY,QAAA,CAA2B,YAAY,CAAA;AACxE,IAAA,YAAA,IAAgB,CAAA;AAChB,IAAA,OAAO,WAAA;AAAA,EACT,CAAA;AACA,EAAA,OAAO;AAAA,IACL,gBAAgB,WAAA,CAAY,cAAA;AAAA,IAC5B,QAAA,EAAU;AAAA,MACR,YAAY,cAAA,EAAe;AAAA,MAC3B,WAAW,cAAA,EAAe;AAAA,MAC1B,sBAAsB,cAAA,EAAe;AAAA,MACrC,iBAAiB,cAAA,EAAe;AAAA,MAChC,YAAY,cAAA,EAAe;AAAA,MAC3B,YAAY,cAAA,EAAe;AAAA,MAC3B,oBAAoB,cAAA,EAAe;AAAA,MACnC,eAAe,cAAA;AAAe,KAChC;AAAA,IACA,IAAA,EAAM,iCAAA,EAAkC,CAAE,MAAA,CAAO,YAAY,IAAI;AAAA,GACnE;AACF;ACvbO,IAAM,oCAAA,GAAuC,IAAI,UAAA,CAAW;AAAA,EACjE,EAAA;AAAA,EAAI,GAAA;AAAA,EAAK,EAAA;AAAA,EAAI,GAAA;AAAA,EAAK,GAAA;AAAA,EAAK,GAAA;AAAA,EAAK,GAAA;AAAA,EAAK;AACnC,CAAC;AAEM,SAAS,wCAAA,GAA2C;AACzD,EAAA,OAAOb,cAAAA,CAAeC,eAAAA,EAAgB,EAAG,CAAC,CAAA,CAAE,MAAA;AAAA,IAC1C;AAAA,GACF;AACF;AAgFO,SAAS,4CAAA,GAAgG;AAC9G,EAAA,OAAOpB,gBAAAA;AAAA,IACLV,gBAAAA,CAAiB;AAAA,MACf,CAAC,eAAA,EAAiB6B,cAAAA,CAAeC,eAAAA,EAAgB,EAAG,CAAC,CAAC,CAAA;AAAA,MACtD,CAAC,MAAA,EAAQD,cAAAA,CAAeC,eAAAA,EAAgB,EAAG,EAAE,CAAC,CAAA;AAAA,MAC9C,CAAC,UAAA,EAAYD,cAAAA,CAAeC,eAAAA,EAAgB,EAAG,EAAE,CAAC,CAAA;AAAA,MAClD,CAAC,aAAA,EAAeD,cAAAA,CAAeC,eAAAA,EAAgB,EAAG,EAAE,CAAC,CAAA;AAAA,MACrD;AAAA,QACE,gBAAA;AAAA,QACAhB,gBAAAA,CAAiBe,cAAAA,CAAeC,eAAAA,EAAgB,EAAG,EAAE,CAAC;AAAA,OACxD;AAAA,MACA;AAAA,QACE,eAAA;AAAA,QACAhB,gBAAAA,CAAiBe,cAAAA,CAAeC,eAAAA,EAAgB,EAAG,EAAE,CAAC;AAAA,OACxD;AAAA,MACA,CAAC,OAAA,EAAShB,gBAAAA,CAAiBP,YAAAA,EAAc,CAAC,CAAA;AAAA,MAC1C,CAAC,OAAA,EAASD,aAAAA,EAAe,CAAA;AAAA,MACzB,CAAC,OAAA,EAASM,aAAAA,EAAe;AAAA,KAC1B,CAAA;AAAA,IACD,CAAC,KAAA,MAAW;AAAA,MACV,GAAG,KAAA;AAAA,MACH,aAAA,EAAe,oCAAA;AAAA,MACf,cAAA,EAAgB,KAAA,CAAM,cAAA,IAAkBa,IAAAA,EAAK;AAAA,MAC7C,aAAA,EAAe,KAAA,CAAM,aAAA,IAAiBA,IAAAA,EAAK;AAAA,MAC3C,KAAA,EAAO,KAAA,CAAM,KAAA,IAASA,IAAAA;AAAK,KAC7B;AAAA,GACF;AACF;AAEO,SAAS,4CAAA,GAA4F;AAC1G,EAAA,OAAOvB,gBAAAA,CAAiB;AAAA,IACtB,CAAC,eAAA,EAAiB6B,cAAAA,CAAeC,eAAAA,EAAgB,EAAG,CAAC,CAAC,CAAA;AAAA,IACtD,CAAC,MAAA,EAAQD,cAAAA,CAAeC,eAAAA,EAAgB,EAAG,EAAE,CAAC,CAAA;AAAA,IAC9C,CAAC,UAAA,EAAYD,cAAAA,CAAeC,eAAAA,EAAgB,EAAG,EAAE,CAAC,CAAA;AAAA,IAClD,CAAC,aAAA,EAAeD,cAAAA,CAAeC,eAAAA,EAAgB,EAAG,EAAE,CAAC,CAAA;AAAA,IACrD,CAAC,kBAAkBX,gBAAAA,CAAiBU,cAAAA,CAAeC,iBAAgB,EAAG,EAAE,CAAC,CAAC,CAAA;AAAA,IAC1E,CAAC,iBAAiBX,gBAAAA,CAAiBU,cAAAA,CAAeC,iBAAgB,EAAG,EAAE,CAAC,CAAC,CAAA;AAAA,IACzE,CAAC,OAAA,EAASX,gBAAAA,CAAiBb,YAAAA,EAAc,CAAC,CAAA;AAAA,IAC1C,CAAC,OAAA,EAASmB,aAAAA,EAAe,CAAA;AAAA,IACzB,CAAC,OAAA,EAASR,aAAAA,EAAe;AAAA,GAC1B,CAAA;AACH;AAEO,SAAS,0CAAA,GAGd;AACA,EAAA,OAAOpB,YAAAA;AAAA,IACL,4CAAA,EAA6C;AAAA,IAC7C,4CAAA;AAA6C,GAC/C;AACF;AAmCA,eAAsB,sCAAA,CAYpB,OAWA,MAAA,EAcA;AAEA,EAAA,MAAM,cAAA,GACJ,QAAQ,cAAA,IAAkB,6BAAA;AAG5B,EAAA,MAAM,gBAAA,GAAmB;AAAA,IACvB,YAAY,EAAE,KAAA,EAAO,MAAM,UAAA,IAAc,IAAA,EAAM,YAAY,IAAA,EAAK;AAAA,IAChE,OAAO,EAAE,KAAA,EAAO,MAAM,KAAA,IAAS,IAAA,EAAM,YAAY,IAAA,EAAK;AAAA,IACtD,WAAW,EAAE,KAAA,EAAO,MAAM,SAAA,IAAa,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IAC/D,oBAAA,EAAsB;AAAA,MACpB,KAAA,EAAO,MAAM,oBAAA,IAAwB,IAAA;AAAA,MACrC,UAAA,EAAY;AAAA,KACd;AAAA,IACA,eAAA,EAAiB;AAAA,MACf,KAAA,EAAO,MAAM,eAAA,IAAmB,IAAA;AAAA,MAChC,UAAA,EAAY;AAAA,KACd;AAAA,IACA,YAAY,EAAE,KAAA,EAAO,MAAM,UAAA,IAAc,IAAA,EAAM,YAAY,IAAA,EAAK;AAAA,IAChE,YAAY,EAAE,KAAA,EAAO,MAAM,UAAA,IAAc,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IACjE,kBAAA,EAAoB;AAAA,MAClB,KAAA,EAAO,MAAM,kBAAA,IAAsB,IAAA;AAAA,MACnC,UAAA,EAAY;AAAA,KACd;AAAA,IACA,eAAe,EAAE,KAAA,EAAO,MAAM,aAAA,IAAiB,IAAA,EAAM,YAAY,KAAA;AAAM,GACzE;AACA,EAAA,MAAM,QAAA,GAAW,gBAAA;AAMjB,EAAA,MAAM,IAAA,GAAO,EAAE,GAAG,KAAA,EAAM;AAGxB,EAAA,IAAI,CAAC,QAAA,CAAS,UAAA,CAAW,KAAA,EAAO;AAC9B,IAAA,QAAA,CAAS,UAAA,CAAW,KAAA,GAAQ,MAAM,iBAAA,CAAkB;AAAA,MAClD,UAAA,EAAY,aAAA,CAAc,QAAA,CAAS,UAAA,CAAW,KAAK;AAAA,KACpD,CAAA;AAAA,EACH;AACA,EAAA,IAAI,CAAC,QAAA,CAAS,UAAA,CAAW,KAAA,EAAO;AAC9B,IAAA,QAAA,CAAS,WAAW,KAAA,GAClB,6CAAA;AAAA,EACJ;AACA,EAAA,IAAI,CAAC,QAAA,CAAS,kBAAA,CAAmB,KAAA,EAAO;AACtC,IAAA,QAAA,CAAS,mBAAmB,KAAA,GAC1B,6CAAA;AAAA,EACJ;AACA,EAAA,IAAI,CAAC,QAAA,CAAS,aAAA,CAAc,KAAA,EAAO;AACjC,IAAA,QAAA,CAAS,cAAc,KAAA,GACrB,kCAAA;AAAA,EACJ;AAGA,EAAA,MAAM,iBAAA,GAAA,CAAoC,IAAA,CAAK,KAAA,IAAS,EAAC,EAAG,GAAA;AAAA,IAC1D,CAACkC,QAAAA,MAAa,EAAE,SAAAA,QAAAA,EAAS,IAAA,EAAMS,YAAY,QAAA,EAAS;AAAA,GACtD;AAEA,EAAA,MAAM,cAAA,GAAiB,qBAAA,CAAsB,cAA2B,CAAA;AACxE,EAAA,OAAO,OAAO,MAAA,CAAO;AAAA,IACnB,QAAA,EAAU;AAAA,MACR,cAAA,CAAe,SAAS,UAAU,CAAA;AAAA,MAClC,cAAA,CAAe,SAAS,KAAK,CAAA;AAAA,MAC7B,cAAA,CAAe,SAAS,SAAS,CAAA;AAAA,MACjC,cAAA,CAAe,SAAS,oBAAoB,CAAA;AAAA,MAC5C,cAAA,CAAe,SAAS,eAAe,CAAA;AAAA,MACvC,cAAA,CAAe,SAAS,UAAU,CAAA;AAAA,MAClC,cAAA,CAAe,SAAS,UAAU,CAAA;AAAA,MAClC,cAAA,CAAe,SAAS,kBAAkB,CAAA;AAAA,MAC1C,cAAA,CAAe,SAAS,aAAa,CAAA;AAAA,MACrC,GAAG;AAAA,KACL;AAAA,IACA,IAAA,EAAM,8CAA6C,CAAE,MAAA;AAAA,MACnD;AAAA,KACF;AAAA,IACA;AAAA,GAYD,CAAA;AACH;AAmCO,SAAS,iCAAA,CAYd,OAWA,MAAA,EAYA;AAEA,EAAA,MAAM,cAAA,GACJ,QAAQ,cAAA,IAAkB,6BAAA;AAG5B,EAAA,MAAM,gBAAA,GAAmB;AAAA,IACvB,YAAY,EAAE,KAAA,EAAO,MAAM,UAAA,IAAc,IAAA,EAAM,YAAY,IAAA,EAAK;AAAA,IAChE,OAAO,EAAE,KAAA,EAAO,MAAM,KAAA,IAAS,IAAA,EAAM,YAAY,IAAA,EAAK;AAAA,IACtD,WAAW,EAAE,KAAA,EAAO,MAAM,SAAA,IAAa,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IAC/D,oBAAA,EAAsB;AAAA,MACpB,KAAA,EAAO,MAAM,oBAAA,IAAwB,IAAA;AAAA,MACrC,UAAA,EAAY;AAAA,KACd;AAAA,IACA,eAAA,EAAiB;AAAA,MACf,KAAA,EAAO,MAAM,eAAA,IAAmB,IAAA;AAAA,MAChC,UAAA,EAAY;AAAA,KACd;AAAA,IACA,YAAY,EAAE,KAAA,EAAO,MAAM,UAAA,IAAc,IAAA,EAAM,YAAY,IAAA,EAAK;AAAA,IAChE,YAAY,EAAE,KAAA,EAAO,MAAM,UAAA,IAAc,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IACjE,kBAAA,EAAoB;AAAA,MAClB,KAAA,EAAO,MAAM,kBAAA,IAAsB,IAAA;AAAA,MACnC,UAAA,EAAY;AAAA,KACd;AAAA,IACA,eAAe,EAAE,KAAA,EAAO,MAAM,aAAA,IAAiB,IAAA,EAAM,YAAY,KAAA;AAAM,GACzE;AACA,EAAA,MAAM,QAAA,GAAW,gBAAA;AAMjB,EAAA,MAAM,IAAA,GAAO,EAAE,GAAG,KAAA,EAAM;AAGxB,EAAA,IAAI,CAAC,QAAA,CAAS,UAAA,CAAW,KAAA,EAAO;AAC9B,IAAA,QAAA,CAAS,WAAW,KAAA,GAClB,6CAAA;AAAA,EACJ;AACA,EAAA,IAAI,CAAC,QAAA,CAAS,kBAAA,CAAmB,KAAA,EAAO;AACtC,IAAA,QAAA,CAAS,mBAAmB,KAAA,GAC1B,6CAAA;AAAA,EACJ;AACA,EAAA,IAAI,CAAC,QAAA,CAAS,aAAA,CAAc,KAAA,EAAO;AACjC,IAAA,QAAA,CAAS,cAAc,KAAA,GACrB,kCAAA;AAAA,EACJ;AAGA,EAAA,MAAM,iBAAA,GAAA,CAAoC,IAAA,CAAK,KAAA,IAAS,EAAC,EAAG,GAAA;AAAA,IAC1D,CAACT,QAAAA,MAAa,EAAE,SAAAA,QAAAA,EAAS,IAAA,EAAMS,YAAY,QAAA,EAAS;AAAA,GACtD;AAEA,EAAA,MAAM,cAAA,GAAiB,qBAAA,CAAsB,cAA2B,CAAA;AACxE,EAAA,OAAO,OAAO,MAAA,CAAO;AAAA,IACnB,QAAA,EAAU;AAAA,MACR,cAAA,CAAe,SAAS,UAAU,CAAA;AAAA,MAClC,cAAA,CAAe,SAAS,KAAK,CAAA;AAAA,MAC7B,cAAA,CAAe,SAAS,SAAS,CAAA;AAAA,MACjC,cAAA,CAAe,SAAS,oBAAoB,CAAA;AAAA,MAC5C,cAAA,CAAe,SAAS,eAAe,CAAA;AAAA,MACvC,cAAA,CAAe,SAAS,UAAU,CAAA;AAAA,MAClC,cAAA,CAAe,SAAS,UAAU,CAAA;AAAA,MAClC,cAAA,CAAe,SAAS,kBAAkB,CAAA;AAAA,MAC1C,cAAA,CAAe,SAAS,aAAa,CAAA;AAAA,MACrC,GAAG;AAAA,KACL;AAAA,IACA,IAAA,EAAM,8CAA6C,CAAE,MAAA;AAAA,MACnD;AAAA,KACF;AAAA,IACA;AAAA,GAYD,CAAA;AACH;AAuBO,SAAS,oCAId,WAAA,EAG+D;AAC/D,EAAA,IAAI,WAAA,CAAY,QAAA,CAAS,MAAA,GAAS,CAAA,EAAG;AAEnC,IAAA,MAAM,IAAI,MAAM,qBAAqB,CAAA;AAAA,EACvC;AACA,EAAA,IAAI,YAAA,GAAe,CAAA;AACnB,EAAA,MAAM,iBAAiB,MAAM;AAC3B,IAAA,MAAM,WAAA,GAAe,WAAA,CAAY,QAAA,CAA2B,YAAY,CAAA;AACxE,IAAA,YAAA,IAAgB,CAAA;AAChB,IAAA,OAAO,WAAA;AAAA,EACT,CAAA;AACA,EAAA,MAAM,yBAAyB,MAAM;AACnC,IAAA,MAAM,cAAc,cAAA,EAAe;AACnC,IAAA,OAAO,WAAA,CAAY,OAAA,KAAY,6BAAA,GAC3B,MAAA,GACA,WAAA;AAAA,EACN,CAAA;AACA,EAAA,OAAO;AAAA,IACL,gBAAgB,WAAA,CAAY,cAAA;AAAA,IAC5B,QAAA,EAAU;AAAA,MACR,YAAY,cAAA,EAAe;AAAA,MAC3B,OAAO,cAAA,EAAe;AAAA,MACtB,WAAW,sBAAA,EAAuB;AAAA,MAClC,sBAAsB,sBAAA,EAAuB;AAAA,MAC7C,iBAAiB,cAAA,EAAe;AAAA,MAChC,YAAY,cAAA,EAAe;AAAA,MAC3B,YAAY,cAAA,EAAe;AAAA,MAC3B,oBAAoB,cAAA,EAAe;AAAA,MACnC,eAAe,cAAA;AAAe,KAChC;AAAA,IACA,IAAA,EAAM,8CAA6C,CAAE,MAAA;AAAA,MACnD,WAAA,CAAY;AAAA;AACd,GACF;AACF;ACpgBO,IAAM,yBAAA,GAA4B,IAAI,UAAA,CAAW;AAAA,EACtD,EAAA;AAAA,EAAI,EAAA;AAAA,EAAI,GAAA;AAAA,EAAK,GAAA;AAAA,EAAK,GAAA;AAAA,EAAK,GAAA;AAAA,EAAK,GAAA;AAAA,EAAK;AACnC,CAAC;AAEM,SAAS,+BAAA,GAAkC;AAChD,EAAA,OAAOb,eAAeC,eAAAA,EAAgB,EAAG,CAAC,CAAA,CAAE,OAAO,yBAAyB,CAAA;AAC9E;AAgFO,SAAS,mCAAA,GAA8E;AAC5F,EAAA,OAAOpB,gBAAAA;AAAA,IACLV,gBAAAA,CAAiB;AAAA,MACf,CAAC,eAAA,EAAiB6B,cAAAA,CAAeC,eAAAA,EAAgB,EAAG,CAAC,CAAC,CAAA;AAAA,MACtD,CAAC,MAAA,EAAQD,cAAAA,CAAeC,eAAAA,EAAgB,EAAG,EAAE,CAAC,CAAA;AAAA,MAC9C,CAAC,UAAA,EAAYD,cAAAA,CAAeC,eAAAA,EAAgB,EAAG,EAAE,CAAC,CAAA;AAAA,MAClD,CAAC,aAAA,EAAeD,cAAAA,CAAeC,eAAAA,EAAgB,EAAG,EAAE,CAAC,CAAA;AAAA,MACrD;AAAA,QACE,gBAAA;AAAA,QACAhB,gBAAAA,CAAiBe,cAAAA,CAAeC,eAAAA,EAAgB,EAAG,EAAE,CAAC;AAAA,OACxD;AAAA,MACA;AAAA,QACE,eAAA;AAAA,QACAhB,gBAAAA,CAAiBe,cAAAA,CAAeC,eAAAA,EAAgB,EAAG,EAAE,CAAC;AAAA,OACxD;AAAA,MACA,CAAC,OAAA,EAAShB,gBAAAA,CAAiBP,YAAAA,EAAc,CAAC,CAAA;AAAA,MAC1C,CAAC,OAAA,EAASD,aAAAA,EAAe,CAAA;AAAA,MACzB,CAAC,OAAA,EAASM,aAAAA,EAAe;AAAA,KAC1B,CAAA;AAAA,IACD,CAAC,KAAA,MAAW;AAAA,MACV,GAAG,KAAA;AAAA,MACH,aAAA,EAAe,yBAAA;AAAA,MACf,cAAA,EAAgB,KAAA,CAAM,cAAA,IAAkBa,IAAAA,EAAK;AAAA,MAC7C,aAAA,EAAe,KAAA,CAAM,aAAA,IAAiBA,IAAAA,EAAK;AAAA,MAC3C,KAAA,EAAO,KAAA,CAAM,KAAA,IAASA,IAAAA;AAAK,KAC7B;AAAA,GACF;AACF;AAEO,SAAS,mCAAA,GAA0E;AACxF,EAAA,OAAOvB,gBAAAA,CAAiB;AAAA,IACtB,CAAC,eAAA,EAAiB6B,cAAAA,CAAeC,eAAAA,EAAgB,EAAG,CAAC,CAAC,CAAA;AAAA,IACtD,CAAC,MAAA,EAAQD,cAAAA,CAAeC,eAAAA,EAAgB,EAAG,EAAE,CAAC,CAAA;AAAA,IAC9C,CAAC,UAAA,EAAYD,cAAAA,CAAeC,eAAAA,EAAgB,EAAG,EAAE,CAAC,CAAA;AAAA,IAClD,CAAC,aAAA,EAAeD,cAAAA,CAAeC,eAAAA,EAAgB,EAAG,EAAE,CAAC,CAAA;AAAA,IACrD,CAAC,kBAAkBX,gBAAAA,CAAiBU,cAAAA,CAAeC,iBAAgB,EAAG,EAAE,CAAC,CAAC,CAAA;AAAA,IAC1E,CAAC,iBAAiBX,gBAAAA,CAAiBU,cAAAA,CAAeC,iBAAgB,EAAG,EAAE,CAAC,CAAC,CAAA;AAAA,IACzE,CAAC,OAAA,EAASX,gBAAAA,CAAiBb,YAAAA,EAAc,CAAC,CAAA;AAAA,IAC1C,CAAC,OAAA,EAASmB,aAAAA,EAAe,CAAA;AAAA,IACzB,CAAC,OAAA,EAASR,aAAAA,EAAe;AAAA,GAC1B,CAAA;AACH;AAEO,SAAS,iCAAA,GAGd;AACA,EAAA,OAAOpB,YAAAA;AAAA,IACL,mCAAA,EAAoC;AAAA,IACpC,mCAAA;AAAoC,GACtC;AACF;AAmCA,eAAsB,6BAAA,CAYpB,OAWA,MAAA,EAcA;AAEA,EAAA,MAAM,cAAA,GACJ,QAAQ,cAAA,IAAkB,6BAAA;AAG5B,EAAA,MAAM,gBAAA,GAAmB;AAAA,IACvB,YAAY,EAAE,KAAA,EAAO,MAAM,UAAA,IAAc,IAAA,EAAM,YAAY,IAAA,EAAK;AAAA,IAChE,OAAO,EAAE,KAAA,EAAO,MAAM,KAAA,IAAS,IAAA,EAAM,YAAY,IAAA,EAAK;AAAA,IACtD,WAAW,EAAE,KAAA,EAAO,MAAM,SAAA,IAAa,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IAC/D,oBAAA,EAAsB;AAAA,MACpB,KAAA,EAAO,MAAM,oBAAA,IAAwB,IAAA;AAAA,MACrC,UAAA,EAAY;AAAA,KACd;AAAA,IACA,eAAA,EAAiB;AAAA,MACf,KAAA,EAAO,MAAM,eAAA,IAAmB,IAAA;AAAA,MAChC,UAAA,EAAY;AAAA,KACd;AAAA,IACA,YAAY,EAAE,KAAA,EAAO,MAAM,UAAA,IAAc,IAAA,EAAM,YAAY,IAAA,EAAK;AAAA,IAChE,YAAY,EAAE,KAAA,EAAO,MAAM,UAAA,IAAc,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IACjE,kBAAA,EAAoB;AAAA,MAClB,KAAA,EAAO,MAAM,kBAAA,IAAsB,IAAA;AAAA,MACnC,UAAA,EAAY;AAAA,KACd;AAAA,IACA,eAAe,EAAE,KAAA,EAAO,MAAM,aAAA,IAAiB,IAAA,EAAM,YAAY,KAAA;AAAM,GACzE;AACA,EAAA,MAAM,QAAA,GAAW,gBAAA;AAMjB,EAAA,MAAM,IAAA,GAAO,EAAE,GAAG,KAAA,EAAM;AAGxB,EAAA,IAAI,CAAC,QAAA,CAAS,UAAA,CAAW,KAAA,EAAO;AAC9B,IAAA,QAAA,CAAS,UAAA,CAAW,KAAA,GAAQ,MAAM,iBAAA,CAAkB;AAAA,MAClD,UAAA,EAAY,aAAA,CAAc,QAAA,CAAS,UAAA,CAAW,KAAK;AAAA,KACpD,CAAA;AAAA,EACH;AACA,EAAA,IAAI,CAAC,QAAA,CAAS,UAAA,CAAW,KAAA,EAAO;AAC9B,IAAA,QAAA,CAAS,WAAW,KAAA,GAClB,6CAAA;AAAA,EACJ;AACA,EAAA,IAAI,CAAC,QAAA,CAAS,kBAAA,CAAmB,KAAA,EAAO;AACtC,IAAA,QAAA,CAAS,mBAAmB,KAAA,GAC1B,6CAAA;AAAA,EACJ;AACA,EAAA,IAAI,CAAC,QAAA,CAAS,aAAA,CAAc,KAAA,EAAO;AACjC,IAAA,QAAA,CAAS,cAAc,KAAA,GACrB,kCAAA;AAAA,EACJ;AAGA,EAAA,MAAM,iBAAA,GAAA,CAAoC,IAAA,CAAK,KAAA,IAAS,EAAC,EAAG,GAAA;AAAA,IAC1D,CAACkC,QAAAA,MAAa,EAAE,SAAAA,QAAAA,EAAS,IAAA,EAAMS,YAAY,QAAA,EAAS;AAAA,GACtD;AAEA,EAAA,MAAM,cAAA,GAAiB,qBAAA,CAAsB,cAA2B,CAAA;AACxE,EAAA,OAAO,OAAO,MAAA,CAAO;AAAA,IACnB,QAAA,EAAU;AAAA,MACR,cAAA,CAAe,SAAS,UAAU,CAAA;AAAA,MAClC,cAAA,CAAe,SAAS,KAAK,CAAA;AAAA,MAC7B,cAAA,CAAe,SAAS,SAAS,CAAA;AAAA,MACjC,cAAA,CAAe,SAAS,oBAAoB,CAAA;AAAA,MAC5C,cAAA,CAAe,SAAS,eAAe,CAAA;AAAA,MACvC,cAAA,CAAe,SAAS,UAAU,CAAA;AAAA,MAClC,cAAA,CAAe,SAAS,UAAU,CAAA;AAAA,MAClC,cAAA,CAAe,SAAS,kBAAkB,CAAA;AAAA,MAC1C,cAAA,CAAe,SAAS,aAAa,CAAA;AAAA,MACrC,GAAG;AAAA,KACL;AAAA,IACA,IAAA,EAAM,qCAAoC,CAAE,MAAA;AAAA,MAC1C;AAAA,KACF;AAAA,IACA;AAAA,GAYD,CAAA;AACH;AAmCO,SAAS,wBAAA,CAYd,OAWA,MAAA,EAYA;AAEA,EAAA,MAAM,cAAA,GACJ,QAAQ,cAAA,IAAkB,6BAAA;AAG5B,EAAA,MAAM,gBAAA,GAAmB;AAAA,IACvB,YAAY,EAAE,KAAA,EAAO,MAAM,UAAA,IAAc,IAAA,EAAM,YAAY,IAAA,EAAK;AAAA,IAChE,OAAO,EAAE,KAAA,EAAO,MAAM,KAAA,IAAS,IAAA,EAAM,YAAY,IAAA,EAAK;AAAA,IACtD,WAAW,EAAE,KAAA,EAAO,MAAM,SAAA,IAAa,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IAC/D,oBAAA,EAAsB;AAAA,MACpB,KAAA,EAAO,MAAM,oBAAA,IAAwB,IAAA;AAAA,MACrC,UAAA,EAAY;AAAA,KACd;AAAA,IACA,eAAA,EAAiB;AAAA,MACf,KAAA,EAAO,MAAM,eAAA,IAAmB,IAAA;AAAA,MAChC,UAAA,EAAY;AAAA,KACd;AAAA,IACA,YAAY,EAAE,KAAA,EAAO,MAAM,UAAA,IAAc,IAAA,EAAM,YAAY,IAAA,EAAK;AAAA,IAChE,YAAY,EAAE,KAAA,EAAO,MAAM,UAAA,IAAc,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IACjE,kBAAA,EAAoB;AAAA,MAClB,KAAA,EAAO,MAAM,kBAAA,IAAsB,IAAA;AAAA,MACnC,UAAA,EAAY;AAAA,KACd;AAAA,IACA,eAAe,EAAE,KAAA,EAAO,MAAM,aAAA,IAAiB,IAAA,EAAM,YAAY,KAAA;AAAM,GACzE;AACA,EAAA,MAAM,QAAA,GAAW,gBAAA;AAMjB,EAAA,MAAM,IAAA,GAAO,EAAE,GAAG,KAAA,EAAM;AAGxB,EAAA,IAAI,CAAC,QAAA,CAAS,UAAA,CAAW,KAAA,EAAO;AAC9B,IAAA,QAAA,CAAS,WAAW,KAAA,GAClB,6CAAA;AAAA,EACJ;AACA,EAAA,IAAI,CAAC,QAAA,CAAS,kBAAA,CAAmB,KAAA,EAAO;AACtC,IAAA,QAAA,CAAS,mBAAmB,KAAA,GAC1B,6CAAA;AAAA,EACJ;AACA,EAAA,IAAI,CAAC,QAAA,CAAS,aAAA,CAAc,KAAA,EAAO;AACjC,IAAA,QAAA,CAAS,cAAc,KAAA,GACrB,kCAAA;AAAA,EACJ;AAGA,EAAA,MAAM,iBAAA,GAAA,CAAoC,IAAA,CAAK,KAAA,IAAS,EAAC,EAAG,GAAA;AAAA,IAC1D,CAACT,QAAAA,MAAa,EAAE,SAAAA,QAAAA,EAAS,IAAA,EAAMS,YAAY,QAAA,EAAS;AAAA,GACtD;AAEA,EAAA,MAAM,cAAA,GAAiB,qBAAA,CAAsB,cAA2B,CAAA;AACxE,EAAA,OAAO,OAAO,MAAA,CAAO;AAAA,IACnB,QAAA,EAAU;AAAA,MACR,cAAA,CAAe,SAAS,UAAU,CAAA;AAAA,MAClC,cAAA,CAAe,SAAS,KAAK,CAAA;AAAA,MAC7B,cAAA,CAAe,SAAS,SAAS,CAAA;AAAA,MACjC,cAAA,CAAe,SAAS,oBAAoB,CAAA;AAAA,MAC5C,cAAA,CAAe,SAAS,eAAe,CAAA;AAAA,MACvC,cAAA,CAAe,SAAS,UAAU,CAAA;AAAA,MAClC,cAAA,CAAe,SAAS,UAAU,CAAA;AAAA,MAClC,cAAA,CAAe,SAAS,kBAAkB,CAAA;AAAA,MAC1C,cAAA,CAAe,SAAS,aAAa,CAAA;AAAA,MACrC,GAAG;AAAA,KACL;AAAA,IACA,IAAA,EAAM,qCAAoC,CAAE,MAAA;AAAA,MAC1C;AAAA,KACF;AAAA,IACA;AAAA,GAYD,CAAA;AACH;AAuBO,SAAS,2BAId,WAAA,EAGsD;AACtD,EAAA,IAAI,WAAA,CAAY,QAAA,CAAS,MAAA,GAAS,CAAA,EAAG;AAEnC,IAAA,MAAM,IAAI,MAAM,qBAAqB,CAAA;AAAA,EACvC;AACA,EAAA,IAAI,YAAA,GAAe,CAAA;AACnB,EAAA,MAAM,iBAAiB,MAAM;AAC3B,IAAA,MAAM,WAAA,GAAe,WAAA,CAAY,QAAA,CAA2B,YAAY,CAAA;AACxE,IAAA,YAAA,IAAgB,CAAA;AAChB,IAAA,OAAO,WAAA;AAAA,EACT,CAAA;AACA,EAAA,MAAM,yBAAyB,MAAM;AACnC,IAAA,MAAM,cAAc,cAAA,EAAe;AACnC,IAAA,OAAO,WAAA,CAAY,OAAA,KAAY,6BAAA,GAC3B,MAAA,GACA,WAAA;AAAA,EACN,CAAA;AACA,EAAA,OAAO;AAAA,IACL,gBAAgB,WAAA,CAAY,cAAA;AAAA,IAC5B,QAAA,EAAU;AAAA,MACR,YAAY,cAAA,EAAe;AAAA,MAC3B,OAAO,cAAA,EAAe;AAAA,MACtB,WAAW,sBAAA,EAAuB;AAAA,MAClC,sBAAsB,sBAAA,EAAuB;AAAA,MAC7C,iBAAiB,cAAA,EAAe;AAAA,MAChC,YAAY,cAAA,EAAe;AAAA,MAC3B,YAAY,cAAA,EAAe;AAAA,MAC3B,oBAAoB,cAAA,EAAe;AAAA,MACnC,eAAe,cAAA;AAAe,KAChC;AAAA,IACA,IAAA,EAAM,mCAAA,EAAoC,CAAE,MAAA,CAAO,YAAY,IAAI;AAAA,GACrE;AACF;AChgBO,IAAM,uBAAA,GAA0B,IAAI,UAAA,CAAW;AAAA,EACpD,GAAA;AAAA,EAAK,GAAA;AAAA,EAAK,GAAA;AAAA,EAAK,GAAA;AAAA,EAAK,EAAA;AAAA,EAAI,GAAA;AAAA,EAAK,GAAA;AAAA,EAAK;AACpC,CAAC;AAEM,SAAS,6BAAA,GAAgC;AAC9C,EAAA,OAAOb,eAAeC,eAAAA,EAAgB,EAAG,CAAC,CAAA,CAAE,OAAO,uBAAuB,CAAA;AAC5E;AAkFO,SAAS,iCAAA,GAA0E;AACxF,EAAA,OAAOpB,gBAAAA;AAAA,IACLV,gBAAAA,CAAiB;AAAA,MACf,CAAC,eAAA,EAAiB6B,cAAAA,CAAeC,eAAAA,EAAgB,EAAG,CAAC,CAAC,CAAA;AAAA,MACtD,CAAC,MAAA,EAAQD,cAAAA,CAAeC,eAAAA,EAAgB,EAAG,EAAE,CAAC,CAAA;AAAA,MAC9C,CAAC,UAAA,EAAYD,cAAAA,CAAeC,eAAAA,EAAgB,EAAG,EAAE,CAAC,CAAA;AAAA,MAClD,CAAC,aAAA,EAAeD,cAAAA,CAAeC,eAAAA,EAAgB,EAAG,EAAE,CAAC,CAAA;AAAA,MACrD;AAAA,QACE,eAAA;AAAA,QACAhB,gBAAAA,CAAiBe,cAAAA,CAAeC,eAAAA,EAAgB,EAAG,EAAE,CAAC;AAAA,OACxD;AAAA,MACA,CAAC,OAAA,EAAShB,gBAAAA,CAAiBP,YAAAA,EAAc,CAAC,CAAA;AAAA,MAC1C,CAAC,OAAA,EAASD,aAAAA,EAAe,CAAA;AAAA,MACzB,CAAC,OAAA,EAASM,aAAAA,EAAe;AAAA,KAC1B,CAAA;AAAA,IACD,CAAC,KAAA,MAAW;AAAA,MACV,GAAG,KAAA;AAAA,MACH,aAAA,EAAe,uBAAA;AAAA,MACf,aAAA,EAAe,KAAA,CAAM,aAAA,IAAiBa,IAAAA,EAAK;AAAA,MAC3C,KAAA,EAAO,KAAA,CAAM,KAAA,IAASA,IAAAA;AAAK,KAC7B;AAAA,GACF;AACF;AAEO,SAAS,iCAAA,GAAsE;AACpF,EAAA,OAAOvB,gBAAAA,CAAiB;AAAA,IACtB,CAAC,eAAA,EAAiB6B,cAAAA,CAAeC,eAAAA,EAAgB,EAAG,CAAC,CAAC,CAAA;AAAA,IACtD,CAAC,MAAA,EAAQD,cAAAA,CAAeC,eAAAA,EAAgB,EAAG,EAAE,CAAC,CAAA;AAAA,IAC9C,CAAC,UAAA,EAAYD,cAAAA,CAAeC,eAAAA,EAAgB,EAAG,EAAE,CAAC,CAAA;AAAA,IAClD,CAAC,aAAA,EAAeD,cAAAA,CAAeC,eAAAA,EAAgB,EAAG,EAAE,CAAC,CAAA;AAAA,IACrD,CAAC,iBAAiBX,gBAAAA,CAAiBU,cAAAA,CAAeC,iBAAgB,EAAG,EAAE,CAAC,CAAC,CAAA;AAAA,IACzE,CAAC,OAAA,EAASX,gBAAAA,CAAiBb,YAAAA,EAAc,CAAC,CAAA;AAAA,IAC1C,CAAC,OAAA,EAASmB,aAAAA,EAAe,CAAA;AAAA,IACzB,CAAC,OAAA,EAASR,aAAAA,EAAe;AAAA,GAC1B,CAAA;AACH;AAEO,SAAS,+BAAA,GAGd;AACA,EAAA,OAAOpB,YAAAA;AAAA,IACL,iCAAA,EAAkC;AAAA,IAClC,iCAAA;AAAkC,GACpC;AACF;AAsCA,eAAsB,2BAAA,CAapB,OAYA,MAAA,EAeA;AAEA,EAAA,MAAM,cAAA,GACJ,QAAQ,cAAA,IAAkB,6BAAA;AAG5B,EAAA,MAAM,gBAAA,GAAmB;AAAA,IACvB,YAAY,EAAE,KAAA,EAAO,MAAM,UAAA,IAAc,IAAA,EAAM,YAAY,IAAA,EAAK;AAAA,IAChE,OAAO,EAAE,KAAA,EAAO,MAAM,KAAA,IAAS,IAAA,EAAM,YAAY,IAAA,EAAK;AAAA,IACtD,WAAW,EAAE,KAAA,EAAO,MAAM,SAAA,IAAa,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IAC/D,WAAW,EAAE,KAAA,EAAO,MAAM,SAAA,IAAa,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IAC/D,cAAc,EAAE,KAAA,EAAO,MAAM,YAAA,IAAgB,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IACrE,YAAY,EAAE,KAAA,EAAO,MAAM,UAAA,IAAc,IAAA,EAAM,YAAY,IAAA,EAAK;AAAA,IAChE,gBAAgB,EAAE,KAAA,EAAO,MAAM,cAAA,IAAkB,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IACzE,YAAY,EAAE,KAAA,EAAO,MAAM,UAAA,IAAc,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IACjE,kBAAA,EAAoB;AAAA,MAClB,KAAA,EAAO,MAAM,kBAAA,IAAsB,IAAA;AAAA,MACnC,UAAA,EAAY;AAAA,KACd;AAAA,IACA,eAAe,EAAE,KAAA,EAAO,MAAM,aAAA,IAAiB,IAAA,EAAM,YAAY,KAAA;AAAM,GACzE;AACA,EAAA,MAAM,QAAA,GAAW,gBAAA;AAMjB,EAAA,MAAM,IAAA,GAAO,EAAE,GAAG,KAAA,EAAM;AAGxB,EAAA,IAAI,CAAC,QAAA,CAAS,UAAA,CAAW,KAAA,EAAO;AAC9B,IAAA,QAAA,CAAS,UAAA,CAAW,KAAA,GAAQ,MAAM,iBAAA,CAAkB;AAAA,MAClD,UAAA,EAAY,aAAA,CAAc,QAAA,CAAS,UAAA,CAAW,KAAK;AAAA,KACpD,CAAA;AAAA,EACH;AACA,EAAA,IAAI,CAAC,QAAA,CAAS,UAAA,CAAW,KAAA,EAAO;AAC9B,IAAA,QAAA,CAAS,WAAW,KAAA,GAClB,6CAAA;AAAA,EACJ;AACA,EAAA,IAAI,CAAC,QAAA,CAAS,kBAAA,CAAmB,KAAA,EAAO;AACtC,IAAA,QAAA,CAAS,mBAAmB,KAAA,GAC1B,6CAAA;AAAA,EACJ;AACA,EAAA,IAAI,CAAC,QAAA,CAAS,aAAA,CAAc,KAAA,EAAO;AACjC,IAAA,QAAA,CAAS,cAAc,KAAA,GACrB,kCAAA;AAAA,EACJ;AAGA,EAAA,MAAM,iBAAA,GAAA,CAAoC,IAAA,CAAK,KAAA,IAAS,EAAC,EAAG,GAAA;AAAA,IAC1D,CAACkC,QAAAA,MAAa,EAAE,SAAAA,QAAAA,EAAS,IAAA,EAAMS,YAAY,QAAA,EAAS;AAAA,GACtD;AAEA,EAAA,MAAM,cAAA,GAAiB,qBAAA,CAAsB,cAA2B,CAAA;AACxE,EAAA,OAAO,OAAO,MAAA,CAAO;AAAA,IACnB,QAAA,EAAU;AAAA,MACR,cAAA,CAAe,SAAS,UAAU,CAAA;AAAA,MAClC,cAAA,CAAe,SAAS,KAAK,CAAA;AAAA,MAC7B,cAAA,CAAe,SAAS,SAAS,CAAA;AAAA,MACjC,cAAA,CAAe,SAAS,SAAS,CAAA;AAAA,MACjC,cAAA,CAAe,SAAS,YAAY,CAAA;AAAA,MACpC,cAAA,CAAe,SAAS,UAAU,CAAA;AAAA,MAClC,cAAA,CAAe,SAAS,cAAc,CAAA;AAAA,MACtC,cAAA,CAAe,SAAS,UAAU,CAAA;AAAA,MAClC,cAAA,CAAe,SAAS,kBAAkB,CAAA;AAAA,MAC1C,cAAA,CAAe,SAAS,aAAa,CAAA;AAAA,MACrC,GAAG;AAAA,KACL;AAAA,IACA,IAAA,EAAM,mCAAkC,CAAE,MAAA;AAAA,MACxC;AAAA,KACF;AAAA,IACA;AAAA,GAaD,CAAA;AACH;AAsCO,SAAS,sBAAA,CAad,OAYA,MAAA,EAaA;AAEA,EAAA,MAAM,cAAA,GACJ,QAAQ,cAAA,IAAkB,6BAAA;AAG5B,EAAA,MAAM,gBAAA,GAAmB;AAAA,IACvB,YAAY,EAAE,KAAA,EAAO,MAAM,UAAA,IAAc,IAAA,EAAM,YAAY,IAAA,EAAK;AAAA,IAChE,OAAO,EAAE,KAAA,EAAO,MAAM,KAAA,IAAS,IAAA,EAAM,YAAY,IAAA,EAAK;AAAA,IACtD,WAAW,EAAE,KAAA,EAAO,MAAM,SAAA,IAAa,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IAC/D,WAAW,EAAE,KAAA,EAAO,MAAM,SAAA,IAAa,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IAC/D,cAAc,EAAE,KAAA,EAAO,MAAM,YAAA,IAAgB,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IACrE,YAAY,EAAE,KAAA,EAAO,MAAM,UAAA,IAAc,IAAA,EAAM,YAAY,IAAA,EAAK;AAAA,IAChE,gBAAgB,EAAE,KAAA,EAAO,MAAM,cAAA,IAAkB,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IACzE,YAAY,EAAE,KAAA,EAAO,MAAM,UAAA,IAAc,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IACjE,kBAAA,EAAoB;AAAA,MAClB,KAAA,EAAO,MAAM,kBAAA,IAAsB,IAAA;AAAA,MACnC,UAAA,EAAY;AAAA,KACd;AAAA,IACA,eAAe,EAAE,KAAA,EAAO,MAAM,aAAA,IAAiB,IAAA,EAAM,YAAY,KAAA;AAAM,GACzE;AACA,EAAA,MAAM,QAAA,GAAW,gBAAA;AAMjB,EAAA,MAAM,IAAA,GAAO,EAAE,GAAG,KAAA,EAAM;AAGxB,EAAA,IAAI,CAAC,QAAA,CAAS,UAAA,CAAW,KAAA,EAAO;AAC9B,IAAA,QAAA,CAAS,WAAW,KAAA,GAClB,6CAAA;AAAA,EACJ;AACA,EAAA,IAAI,CAAC,QAAA,CAAS,kBAAA,CAAmB,KAAA,EAAO;AACtC,IAAA,QAAA,CAAS,mBAAmB,KAAA,GAC1B,6CAAA;AAAA,EACJ;AACA,EAAA,IAAI,CAAC,QAAA,CAAS,aAAA,CAAc,KAAA,EAAO;AACjC,IAAA,QAAA,CAAS,cAAc,KAAA,GACrB,kCAAA;AAAA,EACJ;AAGA,EAAA,MAAM,iBAAA,GAAA,CAAoC,IAAA,CAAK,KAAA,IAAS,EAAC,EAAG,GAAA;AAAA,IAC1D,CAACT,QAAAA,MAAa,EAAE,SAAAA,QAAAA,EAAS,IAAA,EAAMS,YAAY,QAAA,EAAS;AAAA,GACtD;AAEA,EAAA,MAAM,cAAA,GAAiB,qBAAA,CAAsB,cAA2B,CAAA;AACxE,EAAA,OAAO,OAAO,MAAA,CAAO;AAAA,IACnB,QAAA,EAAU;AAAA,MACR,cAAA,CAAe,SAAS,UAAU,CAAA;AAAA,MAClC,cAAA,CAAe,SAAS,KAAK,CAAA;AAAA,MAC7B,cAAA,CAAe,SAAS,SAAS,CAAA;AAAA,MACjC,cAAA,CAAe,SAAS,SAAS,CAAA;AAAA,MACjC,cAAA,CAAe,SAAS,YAAY,CAAA;AAAA,MACpC,cAAA,CAAe,SAAS,UAAU,CAAA;AAAA,MAClC,cAAA,CAAe,SAAS,cAAc,CAAA;AAAA,MACtC,cAAA,CAAe,SAAS,UAAU,CAAA;AAAA,MAClC,cAAA,CAAe,SAAS,kBAAkB,CAAA;AAAA,MAC1C,cAAA,CAAe,SAAS,aAAa,CAAA;AAAA,MACrC,GAAG;AAAA,KACL;AAAA,IACA,IAAA,EAAM,mCAAkC,CAAE,MAAA;AAAA,MACxC;AAAA,KACF;AAAA,IACA;AAAA,GAaD,CAAA;AACH;AA0BO,SAAS,yBAId,WAAA,EAGoD;AACpD,EAAA,IAAI,WAAA,CAAY,QAAA,CAAS,MAAA,GAAS,EAAA,EAAI;AAEpC,IAAA,MAAM,IAAI,MAAM,qBAAqB,CAAA;AAAA,EACvC;AACA,EAAA,IAAI,YAAA,GAAe,CAAA;AACnB,EAAA,MAAM,iBAAiB,MAAM;AAC3B,IAAA,MAAM,WAAA,GAAe,WAAA,CAAY,QAAA,CAA2B,YAAY,CAAA;AACxE,IAAA,YAAA,IAAgB,CAAA;AAChB,IAAA,OAAO,WAAA;AAAA,EACT,CAAA;AACA,EAAA,MAAM,yBAAyB,MAAM;AACnC,IAAA,MAAM,cAAc,cAAA,EAAe;AACnC,IAAA,OAAO,WAAA,CAAY,OAAA,KAAY,6BAAA,GAC3B,MAAA,GACA,WAAA;AAAA,EACN,CAAA;AACA,EAAA,OAAO;AAAA,IACL,gBAAgB,WAAA,CAAY,cAAA;AAAA,IAC5B,QAAA,EAAU;AAAA,MACR,YAAY,cAAA,EAAe;AAAA,MAC3B,OAAO,cAAA,EAAe;AAAA,MACtB,WAAW,sBAAA,EAAuB;AAAA,MAClC,WAAW,cAAA,EAAe;AAAA,MAC1B,cAAc,cAAA,EAAe;AAAA,MAC7B,YAAY,cAAA,EAAe;AAAA,MAC3B,gBAAgB,sBAAA,EAAuB;AAAA,MACvC,YAAY,cAAA,EAAe;AAAA,MAC3B,oBAAoB,cAAA,EAAe;AAAA,MACnC,eAAe,cAAA;AAAe,KAChC;AAAA,IACA,IAAA,EAAM,iCAAA,EAAkC,CAAE,MAAA,CAAO,YAAY,IAAI;AAAA,GACnE;AACF;AC3gBO,IAAM,mCAAA,GAAsC,IAAI,UAAA,CAAW;AAAA,EAChE,GAAA;AAAA,EAAK,EAAA;AAAA,EAAI,GAAA;AAAA,EAAK,EAAA;AAAA,EAAI,GAAA;AAAA,EAAK,GAAA;AAAA,EAAK,EAAA;AAAA,EAAI;AAClC,CAAC;AAEM,SAAS,uCAAA,GAA0C;AACxD,EAAA,OAAOb,cAAAA,CAAeC,eAAAA,EAAgB,EAAG,CAAC,CAAA,CAAE,MAAA;AAAA,IAC1C;AAAA,GACF;AACF;AAqGO,SAAS,2CAAA,GAA8F;AAC5G,EAAA,OAAOpB,gBAAAA;AAAA,IACLV,gBAAAA,CAAiB;AAAA,MACf,CAAC,eAAA,EAAiB6B,cAAAA,CAAeC,eAAAA,EAAgB,EAAG,CAAC,CAAC,CAAA;AAAA,MACtD,CAAC,UAAA,EAAY,sBAAA,EAAwB;AAAA,KACtC,CAAA;AAAA,IACD,CAAC,KAAA,MAAW;AAAA,MACV,GAAG,KAAA;AAAA,MACH,aAAA,EAAe;AAAA,KACjB;AAAA,GACF;AACF;AAEO,SAAS,2CAAA,GAA0F;AACxG,EAAA,OAAO5B,gBAAAA,CAAiB;AAAA,IACtB,CAAC,eAAA,EAAiB6B,cAAAA,CAAeC,eAAAA,EAAgB,EAAG,CAAC,CAAC,CAAA;AAAA,IACtD,CAAC,UAAA,EAAY,sBAAA,EAAwB;AAAA,GACtC,CAAA;AACH;AAEO,SAAS,yCAAA,GAGd;AACA,EAAA,OAAOjC,YAAAA;AAAA,IACL,2CAAA,EAA4C;AAAA,IAC5C,2CAAA;AAA4C,GAC9C;AACF;AA2CA,eAAsB,qCAAA,CAmBpB,OAkBA,MAAA,EAqBA;AAEA,EAAA,MAAM,cAAA,GACJ,QAAQ,cAAA,IAAkB,6BAAA;AAG5B,EAAA,MAAM,gBAAA,GAAmB;AAAA,IACvB,YAAY,EAAE,KAAA,EAAO,MAAM,UAAA,IAAc,IAAA,EAAM,YAAY,IAAA,EAAK;AAAA,IAChE,WAAW,EAAE,KAAA,EAAO,MAAM,SAAA,IAAa,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IAC/D,cAAc,EAAE,KAAA,EAAO,MAAM,YAAA,IAAgB,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IACrE,YAAY,EAAE,KAAA,EAAO,MAAM,UAAA,IAAc,IAAA,EAAM,YAAY,IAAA,EAAK;AAAA,IAChE,OAAO,EAAE,KAAA,EAAO,MAAM,KAAA,IAAS,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IACvD,qBAAA,EAAuB;AAAA,MACrB,KAAA,EAAO,MAAM,qBAAA,IAAyB,IAAA;AAAA,MACtC,UAAA,EAAY;AAAA,KACd;AAAA,IACA,mBAAA,EAAqB;AAAA,MACnB,KAAA,EAAO,MAAM,mBAAA,IAAuB,IAAA;AAAA,MACpC,UAAA,EAAY;AAAA,KACd;AAAA,IACA,4BAAA,EAA8B;AAAA,MAC5B,KAAA,EAAO,MAAM,4BAAA,IAAgC,IAAA;AAAA,MAC7C,UAAA,EAAY;AAAA,KACd;AAAA,IACA,gBAAgB,EAAE,KAAA,EAAO,MAAM,cAAA,IAAkB,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IACzE,kBAAA,EAAoB;AAAA,MAClB,KAAA,EAAO,MAAM,kBAAA,IAAsB,IAAA;AAAA,MACnC,UAAA,EAAY;AAAA,KACd;AAAA,IACA,iBAAA,EAAmB;AAAA,MACjB,KAAA,EAAO,MAAM,iBAAA,IAAqB,IAAA;AAAA,MAClC,UAAA,EAAY;AAAA,KACd;AAAA,IACA,eAAA,EAAiB;AAAA,MACf,KAAA,EAAO,MAAM,eAAA,IAAmB,IAAA;AAAA,MAChC,UAAA,EAAY;AAAA,KACd;AAAA,IACA,YAAY,EAAE,KAAA,EAAO,MAAM,UAAA,IAAc,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IACjE,kBAAA,EAAoB;AAAA,MAClB,KAAA,EAAO,MAAM,kBAAA,IAAsB,IAAA;AAAA,MACnC,UAAA,EAAY;AAAA,KACd;AAAA,IACA,oBAAA,EAAsB;AAAA,MACpB,KAAA,EAAO,MAAM,oBAAA,IAAwB,IAAA;AAAA,MACrC,UAAA,EAAY;AAAA,KACd;AAAA,IACA,eAAe,EAAE,KAAA,EAAO,MAAM,aAAA,IAAiB,IAAA,EAAM,YAAY,KAAA;AAAM,GACzE;AACA,EAAA,MAAM,QAAA,GAAW,gBAAA;AAMjB,EAAA,MAAM,IAAA,GAAO,EAAE,GAAG,KAAA,EAAM;AAGxB,EAAA,IAAI,CAAC,QAAA,CAAS,UAAA,CAAW,KAAA,EAAO;AAC9B,IAAA,QAAA,CAAS,UAAA,CAAW,KAAA,GAAQ,MAAM,iBAAA,CAAkB;AAAA,MAClD,UAAA,EAAY,aAAA,CAAc,QAAA,CAAS,UAAA,CAAW,KAAK;AAAA,KACpD,CAAA;AAAA,EACH;AACA,EAAA,IAAI,CAAC,QAAA,CAAS,YAAA,CAAa,KAAA,EAAO;AAChC,IAAA,QAAA,CAAS,YAAA,CAAa,KAAA,GAAQ,UAAA,CAAW,QAAA,CAAS,UAAU,KAAK,CAAA;AAAA,EACnE;AACA,EAAA,IAAI,CAAC,QAAA,CAAS,kBAAA,CAAmB,KAAA,EAAO;AACtC,IAAA,QAAA,CAAS,kBAAA,CAAmB,KAAA,GAAQ,MAAM,eAAA,CAAgB;AAAA,MACxD,IAAA,EAAM,aAAA,CAAc,QAAA,CAAS,cAAA,CAAe,KAAK;AAAA,KAClD,CAAA;AAAA,EACH;AACA,EAAA,IAAI,CAAC,QAAA,CAAS,iBAAA,CAAkB,KAAA,EAAO;AACrC,IAAA,QAAA,CAAS,iBAAA,CAAkB,KAAA,GAAQ,MAAM,oBAAA,CAAqB;AAAA,MAC5D,IAAA,EAAM,aAAA,CAAc,QAAA,CAAS,cAAA,CAAe,KAAK;AAAA,KAClD,CAAA;AAAA,EACH;AACA,EAAA,IAAI,CAAC,QAAA,CAAS,eAAA,CAAgB,KAAA,EAAO;AACnC,IAAA,QAAA,CAAS,gBAAgB,KAAA,GAAQ,cAAA;AACjC,IAAA,QAAA,CAAS,gBAAgB,UAAA,GAAa,KAAA;AAAA,EACxC;AACA,EAAA,IAAI,CAAC,QAAA,CAAS,UAAA,CAAW,KAAA,EAAO;AAC9B,IAAA,QAAA,CAAS,WAAW,KAAA,GAClB,6CAAA;AAAA,EACJ;AACA,EAAA,IAAI,CAAC,QAAA,CAAS,kBAAA,CAAmB,KAAA,EAAO;AACtC,IAAA,QAAA,CAAS,mBAAmB,KAAA,GAC1B,6CAAA;AAAA,EACJ;AACA,EAAA,IAAI,CAAC,QAAA,CAAS,oBAAA,CAAqB,KAAA,EAAO;AACxC,IAAA,QAAA,CAAS,qBAAqB,KAAA,GAC5B,8CAAA;AAAA,EACJ;AACA,EAAA,IAAI,CAAC,QAAA,CAAS,aAAA,CAAc,KAAA,EAAO;AACjC,IAAA,QAAA,CAAS,cAAc,KAAA,GACrB,kCAAA;AAAA,EACJ;AAEA,EAAA,MAAM,cAAA,GAAiB,qBAAA,CAAsB,cAA2B,CAAA;AACxE,EAAA,OAAO,OAAO,MAAA,CAAO;AAAA,IACnB,QAAA,EAAU;AAAA,MACR,cAAA,CAAe,SAAS,UAAU,CAAA;AAAA,MAClC,cAAA,CAAe,SAAS,SAAS,CAAA;AAAA,MACjC,cAAA,CAAe,SAAS,YAAY,CAAA;AAAA,MACpC,cAAA,CAAe,SAAS,UAAU,CAAA;AAAA,MAClC,cAAA,CAAe,SAAS,KAAK,CAAA;AAAA,MAC7B,cAAA,CAAe,SAAS,qBAAqB,CAAA;AAAA,MAC7C,cAAA,CAAe,SAAS,mBAAmB,CAAA;AAAA,MAC3C,cAAA,CAAe,SAAS,4BAA4B,CAAA;AAAA,MACpD,cAAA,CAAe,SAAS,cAAc,CAAA;AAAA,MACtC,cAAA,CAAe,SAAS,kBAAkB,CAAA;AAAA,MAC1C,cAAA,CAAe,SAAS,iBAAiB,CAAA;AAAA,MACzC,cAAA,CAAe,SAAS,eAAe,CAAA;AAAA,MACvC,cAAA,CAAe,SAAS,UAAU,CAAA;AAAA,MAClC,cAAA,CAAe,SAAS,kBAAkB,CAAA;AAAA,MAC1C,cAAA,CAAe,SAAS,oBAAoB,CAAA;AAAA,MAC5C,cAAA,CAAe,SAAS,aAAa;AAAA,KACvC;AAAA,IACA,IAAA,EAAM,6CAA4C,CAAE,MAAA;AAAA,MAClD;AAAA,KACF;AAAA,IACA;AAAA,GAmBD,CAAA;AACH;AA2CO,SAAS,gCAAA,CAmBd,OAkBA,MAAA,EAmBA;AAEA,EAAA,MAAM,cAAA,GACJ,QAAQ,cAAA,IAAkB,6BAAA;AAG5B,EAAA,MAAM,gBAAA,GAAmB;AAAA,IACvB,YAAY,EAAE,KAAA,EAAO,MAAM,UAAA,IAAc,IAAA,EAAM,YAAY,IAAA,EAAK;AAAA,IAChE,WAAW,EAAE,KAAA,EAAO,MAAM,SAAA,IAAa,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IAC/D,cAAc,EAAE,KAAA,EAAO,MAAM,YAAA,IAAgB,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IACrE,YAAY,EAAE,KAAA,EAAO,MAAM,UAAA,IAAc,IAAA,EAAM,YAAY,IAAA,EAAK;AAAA,IAChE,OAAO,EAAE,KAAA,EAAO,MAAM,KAAA,IAAS,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IACvD,qBAAA,EAAuB;AAAA,MACrB,KAAA,EAAO,MAAM,qBAAA,IAAyB,IAAA;AAAA,MACtC,UAAA,EAAY;AAAA,KACd;AAAA,IACA,mBAAA,EAAqB;AAAA,MACnB,KAAA,EAAO,MAAM,mBAAA,IAAuB,IAAA;AAAA,MACpC,UAAA,EAAY;AAAA,KACd;AAAA,IACA,4BAAA,EAA8B;AAAA,MAC5B,KAAA,EAAO,MAAM,4BAAA,IAAgC,IAAA;AAAA,MAC7C,UAAA,EAAY;AAAA,KACd;AAAA,IACA,gBAAgB,EAAE,KAAA,EAAO,MAAM,cAAA,IAAkB,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IACzE,kBAAA,EAAoB;AAAA,MAClB,KAAA,EAAO,MAAM,kBAAA,IAAsB,IAAA;AAAA,MACnC,UAAA,EAAY;AAAA,KACd;AAAA,IACA,iBAAA,EAAmB;AAAA,MACjB,KAAA,EAAO,MAAM,iBAAA,IAAqB,IAAA;AAAA,MAClC,UAAA,EAAY;AAAA,KACd;AAAA,IACA,eAAA,EAAiB;AAAA,MACf,KAAA,EAAO,MAAM,eAAA,IAAmB,IAAA;AAAA,MAChC,UAAA,EAAY;AAAA,KACd;AAAA,IACA,YAAY,EAAE,KAAA,EAAO,MAAM,UAAA,IAAc,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IACjE,kBAAA,EAAoB;AAAA,MAClB,KAAA,EAAO,MAAM,kBAAA,IAAsB,IAAA;AAAA,MACnC,UAAA,EAAY;AAAA,KACd;AAAA,IACA,oBAAA,EAAsB;AAAA,MACpB,KAAA,EAAO,MAAM,oBAAA,IAAwB,IAAA;AAAA,MACrC,UAAA,EAAY;AAAA,KACd;AAAA,IACA,eAAe,EAAE,KAAA,EAAO,MAAM,aAAA,IAAiB,IAAA,EAAM,YAAY,KAAA;AAAM,GACzE;AACA,EAAA,MAAM,QAAA,GAAW,gBAAA;AAMjB,EAAA,MAAM,IAAA,GAAO,EAAE,GAAG,KAAA,EAAM;AAGxB,EAAA,IAAI,CAAC,QAAA,CAAS,YAAA,CAAa,KAAA,EAAO;AAChC,IAAA,QAAA,CAAS,YAAA,CAAa,KAAA,GAAQ,UAAA,CAAW,QAAA,CAAS,UAAU,KAAK,CAAA;AAAA,EACnE;AACA,EAAA,IAAI,CAAC,QAAA,CAAS,eAAA,CAAgB,KAAA,EAAO;AACnC,IAAA,QAAA,CAAS,gBAAgB,KAAA,GAAQ,cAAA;AACjC,IAAA,QAAA,CAAS,gBAAgB,UAAA,GAAa,KAAA;AAAA,EACxC;AACA,EAAA,IAAI,CAAC,QAAA,CAAS,UAAA,CAAW,KAAA,EAAO;AAC9B,IAAA,QAAA,CAAS,WAAW,KAAA,GAClB,6CAAA;AAAA,EACJ;AACA,EAAA,IAAI,CAAC,QAAA,CAAS,kBAAA,CAAmB,KAAA,EAAO;AACtC,IAAA,QAAA,CAAS,mBAAmB,KAAA,GAC1B,6CAAA;AAAA,EACJ;AACA,EAAA,IAAI,CAAC,QAAA,CAAS,oBAAA,CAAqB,KAAA,EAAO;AACxC,IAAA,QAAA,CAAS,qBAAqB,KAAA,GAC5B,8CAAA;AAAA,EACJ;AACA,EAAA,IAAI,CAAC,QAAA,CAAS,aAAA,CAAc,KAAA,EAAO;AACjC,IAAA,QAAA,CAAS,cAAc,KAAA,GACrB,kCAAA;AAAA,EACJ;AAEA,EAAA,MAAM,cAAA,GAAiB,qBAAA,CAAsB,cAA2B,CAAA;AACxE,EAAA,OAAO,OAAO,MAAA,CAAO;AAAA,IACnB,QAAA,EAAU;AAAA,MACR,cAAA,CAAe,SAAS,UAAU,CAAA;AAAA,MAClC,cAAA,CAAe,SAAS,SAAS,CAAA;AAAA,MACjC,cAAA,CAAe,SAAS,YAAY,CAAA;AAAA,MACpC,cAAA,CAAe,SAAS,UAAU,CAAA;AAAA,MAClC,cAAA,CAAe,SAAS,KAAK,CAAA;AAAA,MAC7B,cAAA,CAAe,SAAS,qBAAqB,CAAA;AAAA,MAC7C,cAAA,CAAe,SAAS,mBAAmB,CAAA;AAAA,MAC3C,cAAA,CAAe,SAAS,4BAA4B,CAAA;AAAA,MACpD,cAAA,CAAe,SAAS,cAAc,CAAA;AAAA,MACtC,cAAA,CAAe,SAAS,kBAAkB,CAAA;AAAA,MAC1C,cAAA,CAAe,SAAS,iBAAiB,CAAA;AAAA,MACzC,cAAA,CAAe,SAAS,eAAe,CAAA;AAAA,MACvC,cAAA,CAAe,SAAS,UAAU,CAAA;AAAA,MAClC,cAAA,CAAe,SAAS,kBAAkB,CAAA;AAAA,MAC1C,cAAA,CAAe,SAAS,oBAAoB,CAAA;AAAA,MAC5C,cAAA,CAAe,SAAS,aAAa;AAAA,KACvC;AAAA,IACA,IAAA,EAAM,6CAA4C,CAAE,MAAA;AAAA,MAClD;AAAA,KACF;AAAA,IACA;AAAA,GAmBD,CAAA;AACH;AAgCO,SAAS,mCAId,WAAA,EAG8D;AAC9D,EAAA,IAAI,WAAA,CAAY,QAAA,CAAS,MAAA,GAAS,EAAA,EAAI;AAEpC,IAAA,MAAM,IAAI,MAAM,qBAAqB,CAAA;AAAA,EACvC;AACA,EAAA,IAAI,YAAA,GAAe,CAAA;AACnB,EAAA,MAAM,iBAAiB,MAAM;AAC3B,IAAA,MAAM,WAAA,GAAe,WAAA,CAAY,QAAA,CAA2B,YAAY,CAAA;AACxE,IAAA,YAAA,IAAgB,CAAA;AAChB,IAAA,OAAO,WAAA;AAAA,EACT,CAAA;AACA,EAAA,MAAM,yBAAyB,MAAM;AACnC,IAAA,MAAM,cAAc,cAAA,EAAe;AACnC,IAAA,OAAO,WAAA,CAAY,OAAA,KAAY,6BAAA,GAC3B,MAAA,GACA,WAAA;AAAA,EACN,CAAA;AACA,EAAA,OAAO;AAAA,IACL,gBAAgB,WAAA,CAAY,cAAA;AAAA,IAC5B,QAAA,EAAU;AAAA,MACR,YAAY,cAAA,EAAe;AAAA,MAC3B,WAAW,cAAA,EAAe;AAAA,MAC1B,cAAc,cAAA,EAAe;AAAA,MAC7B,YAAY,cAAA,EAAe;AAAA,MAC3B,OAAO,cAAA,EAAe;AAAA,MACtB,uBAAuB,cAAA,EAAe;AAAA,MACtC,qBAAqB,cAAA,EAAe;AAAA,MACpC,8BAA8B,sBAAA,EAAuB;AAAA,MACrD,gBAAgB,cAAA,EAAe;AAAA,MAC/B,oBAAoB,cAAA,EAAe;AAAA,MACnC,mBAAmB,cAAA,EAAe;AAAA,MAClC,iBAAiB,cAAA,EAAe;AAAA,MAChC,YAAY,cAAA,EAAe;AAAA,MAC3B,oBAAoB,cAAA,EAAe;AAAA,MACnC,sBAAsB,cAAA,EAAe;AAAA,MACrC,eAAe,cAAA;AAAe,KAChC;AAAA,IACA,IAAA,EAAM,6CAA4C,CAAE,MAAA;AAAA,MAClD,WAAA,CAAY;AAAA;AACd,GACF;AACF;ACzqBO,IAAM,qBAAA,GAAwB,IAAI,UAAA,CAAW;AAAA,EAClD,GAAA;AAAA,EAAK,EAAA;AAAA,EAAI,GAAA;AAAA,EAAK,GAAA;AAAA,EAAK,GAAA;AAAA,EAAK,GAAA;AAAA,EAAK,GAAA;AAAA,EAAK;AACpC,CAAC;AAEM,SAAS,2BAAA,GAA8B;AAC5C,EAAA,OAAO8B,eAAeC,eAAAA,EAAgB,EAAG,CAAC,CAAA,CAAE,OAAO,qBAAqB,CAAA;AAC1E;AAgEO,SAAS,+BAAA,GAAsE;AACpF,EAAA,OAAOpB,gBAAAA;AAAA,IACLV,gBAAAA,CAAiB;AAAA,MACf,CAAC,eAAA,EAAiB6B,cAAAA,CAAeC,eAAAA,EAAgB,EAAG,CAAC,CAAC,CAAA;AAAA,MACtD,CAAC,UAAA,EAAY,sBAAA,EAAwB;AAAA,KACtC,CAAA;AAAA,IACD,CAAC,KAAA,MAAW,EAAE,GAAG,KAAA,EAAO,eAAe,qBAAA,EAAsB;AAAA,GAC/D;AACF;AAEO,SAAS,+BAAA,GAAkE;AAChF,EAAA,OAAO5B,gBAAAA,CAAiB;AAAA,IACtB,CAAC,eAAA,EAAiB6B,cAAAA,CAAeC,eAAAA,EAAgB,EAAG,CAAC,CAAC,CAAA;AAAA,IACtD,CAAC,UAAA,EAAY,sBAAA,EAAwB;AAAA,GACtC,CAAA;AACH;AAEO,SAAS,6BAAA,GAGd;AACA,EAAA,OAAOjC,YAAAA;AAAA,IACL,+BAAA,EAAgC;AAAA,IAChC,+BAAA;AAAgC,GAClC;AACF;AAyBA,eAAsB,yBAAA,CAYpB,OAWA,MAAA,EAcA;AAEA,EAAA,MAAM,cAAA,GACJ,QAAQ,cAAA,IAAkB,6BAAA;AAG5B,EAAA,MAAM,gBAAA,GAAmB;AAAA,IACvB,YAAY,EAAE,KAAA,EAAO,MAAM,UAAA,IAAc,IAAA,EAAM,YAAY,IAAA,EAAK;AAAA,IAChE,WAAW,EAAE,KAAA,EAAO,MAAM,SAAA,IAAa,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IAC/D,cAAc,EAAE,KAAA,EAAO,MAAM,YAAA,IAAgB,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IACrE,YAAY,EAAE,KAAA,EAAO,MAAM,UAAA,IAAc,IAAA,EAAM,YAAY,IAAA,EAAK;AAAA,IAChE,OAAO,EAAE,KAAA,EAAO,MAAM,KAAA,IAAS,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IACvD,qBAAA,EAAuB;AAAA,MACrB,KAAA,EAAO,MAAM,qBAAA,IAAyB,IAAA;AAAA,MACtC,UAAA,EAAY;AAAA,KACd;AAAA,IACA,YAAY,EAAE,KAAA,EAAO,MAAM,UAAA,IAAc,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IACjE,kBAAA,EAAoB;AAAA,MAClB,KAAA,EAAO,MAAM,kBAAA,IAAsB,IAAA;AAAA,MACnC,UAAA,EAAY;AAAA,KACd;AAAA,IACA,eAAe,EAAE,KAAA,EAAO,MAAM,aAAA,IAAiB,IAAA,EAAM,YAAY,KAAA;AAAM,GACzE;AACA,EAAA,MAAM,QAAA,GAAW,gBAAA;AAMjB,EAAA,MAAM,IAAA,GAAO,EAAE,GAAG,KAAA,EAAM;AAGxB,EAAA,IAAI,CAAC,QAAA,CAAS,UAAA,CAAW,KAAA,EAAO;AAC9B,IAAA,QAAA,CAAS,UAAA,CAAW,KAAA,GAAQ,MAAM,iBAAA,CAAkB;AAAA,MAClD,UAAA,EAAY,aAAA,CAAc,QAAA,CAAS,UAAA,CAAW,KAAK;AAAA,KACpD,CAAA;AAAA,EACH;AACA,EAAA,IAAI,CAAC,QAAA,CAAS,YAAA,CAAa,KAAA,EAAO;AAChC,IAAA,QAAA,CAAS,YAAA,CAAa,KAAA,GAAQ,UAAA,CAAW,QAAA,CAAS,UAAU,KAAK,CAAA;AAAA,EACnE;AACA,EAAA,IAAI,CAAC,QAAA,CAAS,KAAA,CAAM,KAAA,EAAO;AACzB,IAAA,QAAA,CAAS,KAAA,CAAM,KAAA,GAAQ,UAAA,CAAW,QAAA,CAAS,sBAAsB,KAAK,CAAA;AAAA,EACxE;AACA,EAAA,IAAI,CAAC,QAAA,CAAS,UAAA,CAAW,KAAA,EAAO;AAC9B,IAAA,QAAA,CAAS,WAAW,KAAA,GAClB,6CAAA;AAAA,EACJ;AACA,EAAA,IAAI,CAAC,QAAA,CAAS,kBAAA,CAAmB,KAAA,EAAO;AACtC,IAAA,QAAA,CAAS,mBAAmB,KAAA,GAC1B,6CAAA;AAAA,EACJ;AACA,EAAA,IAAI,CAAC,QAAA,CAAS,aAAA,CAAc,KAAA,EAAO;AACjC,IAAA,QAAA,CAAS,cAAc,KAAA,GACrB,kCAAA;AAAA,EACJ;AAEA,EAAA,MAAM,cAAA,GAAiB,qBAAA,CAAsB,cAA2B,CAAA;AACxE,EAAA,OAAO,OAAO,MAAA,CAAO;AAAA,IACnB,QAAA,EAAU;AAAA,MACR,cAAA,CAAe,SAAS,UAAU,CAAA;AAAA,MAClC,cAAA,CAAe,SAAS,SAAS,CAAA;AAAA,MACjC,cAAA,CAAe,SAAS,YAAY,CAAA;AAAA,MACpC,cAAA,CAAe,SAAS,UAAU,CAAA;AAAA,MAClC,cAAA,CAAe,SAAS,KAAK,CAAA;AAAA,MAC7B,cAAA,CAAe,SAAS,qBAAqB,CAAA;AAAA,MAC7C,cAAA,CAAe,SAAS,UAAU,CAAA;AAAA,MAClC,cAAA,CAAe,SAAS,kBAAkB,CAAA;AAAA,MAC1C,cAAA,CAAe,SAAS,aAAa;AAAA,KACvC;AAAA,IACA,IAAA,EAAM,iCAAgC,CAAE,MAAA;AAAA,MACtC;AAAA,KACF;AAAA,IACA;AAAA,GAYD,CAAA;AACH;AAyBO,SAAS,oBAAA,CAYd,OAWA,MAAA,EAYA;AAEA,EAAA,MAAM,cAAA,GACJ,QAAQ,cAAA,IAAkB,6BAAA;AAG5B,EAAA,MAAM,gBAAA,GAAmB;AAAA,IACvB,YAAY,EAAE,KAAA,EAAO,MAAM,UAAA,IAAc,IAAA,EAAM,YAAY,IAAA,EAAK;AAAA,IAChE,WAAW,EAAE,KAAA,EAAO,MAAM,SAAA,IAAa,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IAC/D,cAAc,EAAE,KAAA,EAAO,MAAM,YAAA,IAAgB,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IACrE,YAAY,EAAE,KAAA,EAAO,MAAM,UAAA,IAAc,IAAA,EAAM,YAAY,IAAA,EAAK;AAAA,IAChE,OAAO,EAAE,KAAA,EAAO,MAAM,KAAA,IAAS,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IACvD,qBAAA,EAAuB;AAAA,MACrB,KAAA,EAAO,MAAM,qBAAA,IAAyB,IAAA;AAAA,MACtC,UAAA,EAAY;AAAA,KACd;AAAA,IACA,YAAY,EAAE,KAAA,EAAO,MAAM,UAAA,IAAc,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IACjE,kBAAA,EAAoB;AAAA,MAClB,KAAA,EAAO,MAAM,kBAAA,IAAsB,IAAA;AAAA,MACnC,UAAA,EAAY;AAAA,KACd;AAAA,IACA,eAAe,EAAE,KAAA,EAAO,MAAM,aAAA,IAAiB,IAAA,EAAM,YAAY,KAAA;AAAM,GACzE;AACA,EAAA,MAAM,QAAA,GAAW,gBAAA;AAMjB,EAAA,MAAM,IAAA,GAAO,EAAE,GAAG,KAAA,EAAM;AAGxB,EAAA,IAAI,CAAC,QAAA,CAAS,YAAA,CAAa,KAAA,EAAO;AAChC,IAAA,QAAA,CAAS,YAAA,CAAa,KAAA,GAAQ,UAAA,CAAW,QAAA,CAAS,UAAU,KAAK,CAAA;AAAA,EACnE;AACA,EAAA,IAAI,CAAC,QAAA,CAAS,KAAA,CAAM,KAAA,EAAO;AACzB,IAAA,QAAA,CAAS,KAAA,CAAM,KAAA,GAAQ,UAAA,CAAW,QAAA,CAAS,sBAAsB,KAAK,CAAA;AAAA,EACxE;AACA,EAAA,IAAI,CAAC,QAAA,CAAS,UAAA,CAAW,KAAA,EAAO;AAC9B,IAAA,QAAA,CAAS,WAAW,KAAA,GAClB,6CAAA;AAAA,EACJ;AACA,EAAA,IAAI,CAAC,QAAA,CAAS,kBAAA,CAAmB,KAAA,EAAO;AACtC,IAAA,QAAA,CAAS,mBAAmB,KAAA,GAC1B,6CAAA;AAAA,EACJ;AACA,EAAA,IAAI,CAAC,QAAA,CAAS,aAAA,CAAc,KAAA,EAAO;AACjC,IAAA,QAAA,CAAS,cAAc,KAAA,GACrB,kCAAA;AAAA,EACJ;AAEA,EAAA,MAAM,cAAA,GAAiB,qBAAA,CAAsB,cAA2B,CAAA;AACxE,EAAA,OAAO,OAAO,MAAA,CAAO;AAAA,IACnB,QAAA,EAAU;AAAA,MACR,cAAA,CAAe,SAAS,UAAU,CAAA;AAAA,MAClC,cAAA,CAAe,SAAS,SAAS,CAAA;AAAA,MACjC,cAAA,CAAe,SAAS,YAAY,CAAA;AAAA,MACpC,cAAA,CAAe,SAAS,UAAU,CAAA;AAAA,MAClC,cAAA,CAAe,SAAS,KAAK,CAAA;AAAA,MAC7B,cAAA,CAAe,SAAS,qBAAqB,CAAA;AAAA,MAC7C,cAAA,CAAe,SAAS,UAAU,CAAA;AAAA,MAClC,cAAA,CAAe,SAAS,kBAAkB,CAAA;AAAA,MAC1C,cAAA,CAAe,SAAS,aAAa;AAAA,KACvC;AAAA,IACA,IAAA,EAAM,iCAAgC,CAAE,MAAA;AAAA,MACtC;AAAA,KACF;AAAA,IACA;AAAA,GAYD,CAAA;AACH;AAqBO,SAAS,uBAId,WAAA,EAGkD;AAClD,EAAA,IAAI,WAAA,CAAY,QAAA,CAAS,MAAA,GAAS,CAAA,EAAG;AAEnC,IAAA,MAAM,IAAI,MAAM,qBAAqB,CAAA;AAAA,EACvC;AACA,EAAA,IAAI,YAAA,GAAe,CAAA;AACnB,EAAA,MAAM,iBAAiB,MAAM;AAC3B,IAAA,MAAM,WAAA,GAAe,WAAA,CAAY,QAAA,CAA2B,YAAY,CAAA;AACxE,IAAA,YAAA,IAAgB,CAAA;AAChB,IAAA,OAAO,WAAA;AAAA,EACT,CAAA;AACA,EAAA,OAAO;AAAA,IACL,gBAAgB,WAAA,CAAY,cAAA;AAAA,IAC5B,QAAA,EAAU;AAAA,MACR,YAAY,cAAA,EAAe;AAAA,MAC3B,WAAW,cAAA,EAAe;AAAA,MAC1B,cAAc,cAAA,EAAe;AAAA,MAC7B,YAAY,cAAA,EAAe;AAAA,MAC3B,OAAO,cAAA,EAAe;AAAA,MACtB,uBAAuB,cAAA,EAAe;AAAA,MACtC,YAAY,cAAA,EAAe;AAAA,MAC3B,oBAAoB,cAAA,EAAe;AAAA,MACnC,eAAe,cAAA;AAAe,KAChC;AAAA,IACA,IAAA,EAAM,+BAAA,EAAgC,CAAE,MAAA,CAAO,YAAY,IAAI;AAAA,GACjE;AACF;ACvaO,IAAM,qBAAA,GAAwB,IAAI,UAAA,CAAW;AAAA,EAClD,GAAA;AAAA,EAAK,GAAA;AAAA,EAAK,EAAA;AAAA,EAAI,GAAA;AAAA,EAAK,GAAA;AAAA,EAAK,GAAA;AAAA,EAAK,GAAA;AAAA,EAAK;AACpC,CAAC;AAEM,SAAS,2BAAA,GAA8B;AAC5C,EAAA,OAAO8B,eAAeC,eAAAA,EAAgB,EAAG,CAAC,CAAA,CAAE,OAAO,qBAAqB,CAAA;AAC1E;AAyFO,SAAS,+BAAA,GAAsE;AACpF,EAAA,OAAOpB,gBAAAA;AAAA,IACLV,gBAAAA,CAAiB;AAAA,MACf,CAAC,eAAA,EAAiB6B,cAAAA,CAAeC,eAAAA,EAAgB,EAAG,CAAC,CAAC,CAAA;AAAA,MACtD,CAAC,UAAA,EAAY,wBAAA,EAA0B,CAAA;AAAA,MACvC;AAAA,QACE,WAAA;AAAA,QACAhB,gBAAAA;AAAA,UACEH,oBAAAA,CAAqBmB,eAAAA,EAAgB,EAAGlB,aAAAA,EAAe;AAAA;AACzD,OACF;AAAA,MACA,CAAC,iBAAA,EAAmBE,gBAAAA,CAAiB,yBAAA,EAA2B,CAAC;AAAA,KAClE,CAAA;AAAA,IACD,CAAC,KAAA,MAAW;AAAA,MACV,GAAG,KAAA;AAAA,MACH,aAAA,EAAe,qBAAA;AAAA,MACf,SAAA,EAAW,KAAA,CAAM,SAAA,IAAaW,IAAAA,EAAK;AAAA,MACnC,eAAA,EAAiB,KAAA,CAAM,eAAA,IAAmBA,IAAAA;AAAK,KACjD;AAAA,GACF;AACF;AAEO,SAAS,+BAAA,GAAkE;AAChF,EAAA,OAAOvB,gBAAAA,CAAiB;AAAA,IACtB,CAAC,eAAA,EAAiB6B,cAAAA,CAAeC,eAAAA,EAAgB,EAAG,CAAC,CAAC,CAAA;AAAA,IACtD,CAAC,UAAA,EAAY,wBAAA,EAA0B,CAAA;AAAA,IACvC;AAAA,MACE,WAAA;AAAA,MACAX,gBAAAA;AAAA,QACEJ,oBAAAA,CAAqBe,eAAAA,EAAgB,EAAGb,aAAAA,EAAe;AAAA;AACzD,KACF;AAAA,IACA,CAAC,iBAAA,EAAmBE,gBAAAA,CAAiB,yBAAA,EAA2B,CAAC;AAAA,GAClE,CAAA;AACH;AAEO,SAAS,6BAAA,GAGd;AACA,EAAA,OAAOtB,YAAAA;AAAA,IACL,+BAAA,EAAgC;AAAA,IAChC,+BAAA;AAAgC,GAClC;AACF;AAqCA,eAAsB,yBAAA,CAgBpB,OAeA,MAAA,EAkBA;AAEA,EAAA,MAAM,cAAA,GACJ,QAAQ,cAAA,IAAkB,6BAAA;AAG5B,EAAA,MAAM,gBAAA,GAAmB;AAAA,IACvB,YAAY,EAAE,KAAA,EAAO,MAAM,UAAA,IAAc,IAAA,EAAM,YAAY,IAAA,EAAK;AAAA,IAChE,OAAO,EAAE,KAAA,EAAO,MAAM,KAAA,IAAS,IAAA,EAAM,YAAY,IAAA,EAAK;AAAA,IACtD,qBAAA,EAAuB;AAAA,MACrB,KAAA,EAAO,MAAM,qBAAA,IAAyB,IAAA;AAAA,MACtC,UAAA,EAAY;AAAA,KACd;AAAA,IACA,mBAAA,EAAqB;AAAA,MACnB,KAAA,EAAO,MAAM,mBAAA,IAAuB,IAAA;AAAA,MACpC,UAAA,EAAY;AAAA,KACd;AAAA,IACA,WAAW,EAAE,KAAA,EAAO,MAAM,SAAA,IAAa,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IAC/D,cAAc,EAAE,KAAA,EAAO,MAAM,YAAA,IAAgB,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IACrE,YAAY,EAAE,KAAA,EAAO,MAAM,UAAA,IAAc,IAAA,EAAM,YAAY,IAAA,EAAK;AAAA,IAChE,gBAAgB,EAAE,KAAA,EAAO,MAAM,cAAA,IAAkB,IAAA,EAAM,YAAY,IAAA,EAAK;AAAA,IACxE,gBAAA,EAAkB;AAAA,MAChB,KAAA,EAAO,MAAM,gBAAA,IAAoB,IAAA;AAAA,MACjC,UAAA,EAAY;AAAA,KACd;AAAA,IACA,YAAY,EAAE,KAAA,EAAO,MAAM,UAAA,IAAc,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IACjE,kBAAA,EAAoB;AAAA,MAClB,KAAA,EAAO,MAAM,kBAAA,IAAsB,IAAA;AAAA,MACnC,UAAA,EAAY;AAAA,KACd;AAAA,IACA,gBAAgB,EAAE,KAAA,EAAO,MAAM,cAAA,IAAkB,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IACzE,eAAe,EAAE,KAAA,EAAO,MAAM,aAAA,IAAiB,IAAA,EAAM,YAAY,KAAA;AAAM,GACzE;AACA,EAAA,MAAM,QAAA,GAAW,gBAAA;AAMjB,EAAA,MAAM,IAAA,GAAO,EAAE,GAAG,KAAA,EAAM;AAGxB,EAAA,IAAI,CAAC,QAAA,CAAS,UAAA,CAAW,KAAA,EAAO;AAC9B,IAAA,QAAA,CAAS,UAAA,CAAW,KAAA,GAAQ,MAAM,iBAAA,CAAkB;AAAA,MAClD,UAAA,EAAY,aAAA,CAAc,QAAA,CAAS,UAAA,CAAW,KAAK;AAAA,KACpD,CAAA;AAAA,EACH;AACA,EAAA,IAAI,CAAC,QAAA,CAAS,gBAAA,CAAiB,KAAA,EAAO;AACpC,IAAA,IAAI,QAAA,CAAS,eAAe,KAAA,EAAO;AACjC,MAAA,QAAA,CAAS,iBAAiB,KAAA,GACxB,8CAAA;AAAA,IACJ;AAAA,EACF;AACA,EAAA,IAAI,CAAC,QAAA,CAAS,UAAA,CAAW,KAAA,EAAO;AAC9B,IAAA,QAAA,CAAS,WAAW,KAAA,GAClB,6CAAA;AAAA,EACJ;AACA,EAAA,IAAI,CAAC,QAAA,CAAS,kBAAA,CAAmB,KAAA,EAAO;AACtC,IAAA,QAAA,CAAS,mBAAmB,KAAA,GAC1B,6CAAA;AAAA,EACJ;AACA,EAAA,IAAI,CAAC,QAAA,CAAS,cAAA,CAAe,KAAA,EAAO;AAClC,IAAA,QAAA,CAAS,eAAe,KAAA,GACtB,8CAAA;AAAA,EACJ;AACA,EAAA,IAAI,CAAC,QAAA,CAAS,aAAA,CAAc,KAAA,EAAO;AACjC,IAAA,QAAA,CAAS,cAAc,KAAA,GACrB,kCAAA;AAAA,EACJ;AAEA,EAAA,MAAM,cAAA,GAAiB,qBAAA,CAAsB,cAA2B,CAAA;AACxE,EAAA,OAAO,OAAO,MAAA,CAAO;AAAA,IACnB,QAAA,EAAU;AAAA,MACR,cAAA,CAAe,SAAS,UAAU,CAAA;AAAA,MAClC,cAAA,CAAe,SAAS,KAAK,CAAA;AAAA,MAC7B,cAAA,CAAe,SAAS,qBAAqB,CAAA;AAAA,MAC7C,cAAA,CAAe,SAAS,mBAAmB,CAAA;AAAA,MAC3C,cAAA,CAAe,SAAS,SAAS,CAAA;AAAA,MACjC,cAAA,CAAe,SAAS,YAAY,CAAA;AAAA,MACpC,cAAA,CAAe,SAAS,UAAU,CAAA;AAAA,MAClC,cAAA,CAAe,SAAS,cAAc,CAAA;AAAA,MACtC,cAAA,CAAe,SAAS,gBAAgB,CAAA;AAAA,MACxC,cAAA,CAAe,SAAS,UAAU,CAAA;AAAA,MAClC,cAAA,CAAe,SAAS,kBAAkB,CAAA;AAAA,MAC1C,cAAA,CAAe,SAAS,cAAc,CAAA;AAAA,MACtC,cAAA,CAAe,SAAS,aAAa;AAAA,KACvC;AAAA,IACA,IAAA,EAAM,iCAAgC,CAAE,MAAA;AAAA,MACtC;AAAA,KACF;AAAA,IACA;AAAA,GAgBD,CAAA;AACH;AAqCO,SAAS,oBAAA,CAgBd,OAeA,MAAA,EAgBA;AAEA,EAAA,MAAM,cAAA,GACJ,QAAQ,cAAA,IAAkB,6BAAA;AAG5B,EAAA,MAAM,gBAAA,GAAmB;AAAA,IACvB,YAAY,EAAE,KAAA,EAAO,MAAM,UAAA,IAAc,IAAA,EAAM,YAAY,IAAA,EAAK;AAAA,IAChE,OAAO,EAAE,KAAA,EAAO,MAAM,KAAA,IAAS,IAAA,EAAM,YAAY,IAAA,EAAK;AAAA,IACtD,qBAAA,EAAuB;AAAA,MACrB,KAAA,EAAO,MAAM,qBAAA,IAAyB,IAAA;AAAA,MACtC,UAAA,EAAY;AAAA,KACd;AAAA,IACA,mBAAA,EAAqB;AAAA,MACnB,KAAA,EAAO,MAAM,mBAAA,IAAuB,IAAA;AAAA,MACpC,UAAA,EAAY;AAAA,KACd;AAAA,IACA,WAAW,EAAE,KAAA,EAAO,MAAM,SAAA,IAAa,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IAC/D,cAAc,EAAE,KAAA,EAAO,MAAM,YAAA,IAAgB,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IACrE,YAAY,EAAE,KAAA,EAAO,MAAM,UAAA,IAAc,IAAA,EAAM,YAAY,IAAA,EAAK;AAAA,IAChE,gBAAgB,EAAE,KAAA,EAAO,MAAM,cAAA,IAAkB,IAAA,EAAM,YAAY,IAAA,EAAK;AAAA,IACxE,gBAAA,EAAkB;AAAA,MAChB,KAAA,EAAO,MAAM,gBAAA,IAAoB,IAAA;AAAA,MACjC,UAAA,EAAY;AAAA,KACd;AAAA,IACA,YAAY,EAAE,KAAA,EAAO,MAAM,UAAA,IAAc,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IACjE,kBAAA,EAAoB;AAAA,MAClB,KAAA,EAAO,MAAM,kBAAA,IAAsB,IAAA;AAAA,MACnC,UAAA,EAAY;AAAA,KACd;AAAA,IACA,gBAAgB,EAAE,KAAA,EAAO,MAAM,cAAA,IAAkB,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IACzE,eAAe,EAAE,KAAA,EAAO,MAAM,aAAA,IAAiB,IAAA,EAAM,YAAY,KAAA;AAAM,GACzE;AACA,EAAA,MAAM,QAAA,GAAW,gBAAA;AAMjB,EAAA,MAAM,IAAA,GAAO,EAAE,GAAG,KAAA,EAAM;AAGxB,EAAA,IAAI,CAAC,QAAA,CAAS,gBAAA,CAAiB,KAAA,EAAO;AACpC,IAAA,IAAI,QAAA,CAAS,eAAe,KAAA,EAAO;AACjC,MAAA,QAAA,CAAS,iBAAiB,KAAA,GACxB,8CAAA;AAAA,IACJ;AAAA,EACF;AACA,EAAA,IAAI,CAAC,QAAA,CAAS,UAAA,CAAW,KAAA,EAAO;AAC9B,IAAA,QAAA,CAAS,WAAW,KAAA,GAClB,6CAAA;AAAA,EACJ;AACA,EAAA,IAAI,CAAC,QAAA,CAAS,kBAAA,CAAmB,KAAA,EAAO;AACtC,IAAA,QAAA,CAAS,mBAAmB,KAAA,GAC1B,6CAAA;AAAA,EACJ;AACA,EAAA,IAAI,CAAC,QAAA,CAAS,cAAA,CAAe,KAAA,EAAO;AAClC,IAAA,QAAA,CAAS,eAAe,KAAA,GACtB,8CAAA;AAAA,EACJ;AACA,EAAA,IAAI,CAAC,QAAA,CAAS,aAAA,CAAc,KAAA,EAAO;AACjC,IAAA,QAAA,CAAS,cAAc,KAAA,GACrB,kCAAA;AAAA,EACJ;AAEA,EAAA,MAAM,cAAA,GAAiB,qBAAA,CAAsB,cAA2B,CAAA;AACxE,EAAA,OAAO,OAAO,MAAA,CAAO;AAAA,IACnB,QAAA,EAAU;AAAA,MACR,cAAA,CAAe,SAAS,UAAU,CAAA;AAAA,MAClC,cAAA,CAAe,SAAS,KAAK,CAAA;AAAA,MAC7B,cAAA,CAAe,SAAS,qBAAqB,CAAA;AAAA,MAC7C,cAAA,CAAe,SAAS,mBAAmB,CAAA;AAAA,MAC3C,cAAA,CAAe,SAAS,SAAS,CAAA;AAAA,MACjC,cAAA,CAAe,SAAS,YAAY,CAAA;AAAA,MACpC,cAAA,CAAe,SAAS,UAAU,CAAA;AAAA,MAClC,cAAA,CAAe,SAAS,cAAc,CAAA;AAAA,MACtC,cAAA,CAAe,SAAS,gBAAgB,CAAA;AAAA,MACxC,cAAA,CAAe,SAAS,UAAU,CAAA;AAAA,MAClC,cAAA,CAAe,SAAS,kBAAkB,CAAA;AAAA,MAC1C,cAAA,CAAe,SAAS,cAAc,CAAA;AAAA,MACtC,cAAA,CAAe,SAAS,aAAa;AAAA,KACvC;AAAA,IACA,IAAA,EAAM,iCAAgC,CAAE,MAAA;AAAA,MACtC;AAAA,KACF;AAAA,IACA;AAAA,GAgBD,CAAA;AACH;AA2BO,SAAS,uBAId,WAAA,EAGkD;AAClD,EAAA,IAAI,WAAA,CAAY,QAAA,CAAS,MAAA,GAAS,EAAA,EAAI;AAEpC,IAAA,MAAM,IAAI,MAAM,qBAAqB,CAAA;AAAA,EACvC;AACA,EAAA,IAAI,YAAA,GAAe,CAAA;AACnB,EAAA,MAAM,iBAAiB,MAAM;AAC3B,IAAA,MAAM,WAAA,GAAe,WAAA,CAAY,QAAA,CAA2B,YAAY,CAAA;AACxE,IAAA,YAAA,IAAgB,CAAA;AAChB,IAAA,OAAO,WAAA;AAAA,EACT,CAAA;AACA,EAAA,MAAM,yBAAyB,MAAM;AACnC,IAAA,MAAM,cAAc,cAAA,EAAe;AACnC,IAAA,OAAO,WAAA,CAAY,OAAA,KAAY,6BAAA,GAC3B,MAAA,GACA,WAAA;AAAA,EACN,CAAA;AACA,EAAA,OAAO;AAAA,IACL,gBAAgB,WAAA,CAAY,cAAA;AAAA,IAC5B,QAAA,EAAU;AAAA,MACR,YAAY,cAAA,EAAe;AAAA,MAC3B,OAAO,cAAA,EAAe;AAAA,MACtB,uBAAuB,sBAAA,EAAuB;AAAA,MAC9C,qBAAqB,sBAAA,EAAuB;AAAA,MAC5C,WAAW,cAAA,EAAe;AAAA,MAC1B,cAAc,sBAAA,EAAuB;AAAA,MACrC,YAAY,cAAA,EAAe;AAAA,MAC3B,gBAAgB,sBAAA,EAAuB;AAAA,MACvC,kBAAkB,sBAAA,EAAuB;AAAA,MACzC,YAAY,cAAA,EAAe;AAAA,MAC3B,oBAAoB,cAAA,EAAe;AAAA,MACnC,gBAAgB,cAAA,EAAe;AAAA,MAC/B,eAAe,cAAA;AAAe,KAChC;AAAA,IACA,IAAA,EAAM,+BAAA,EAAgC,CAAE,MAAA,CAAO,YAAY,IAAI;AAAA,GACjE;AACF;ACzlBO,IAAM,oBAAA,GAAuB,IAAI,UAAA,CAAW;AAAA,EACjD,GAAA;AAAA,EAAK,EAAA;AAAA,EAAI,EAAA;AAAA,EAAI,GAAA;AAAA,EAAK,EAAA;AAAA,EAAI,GAAA;AAAA,EAAK,EAAA;AAAA,EAAI;AACjC,CAAC;AAEM,SAAS,2BAAA,GAA8B;AAC5C,EAAA,OAAO8B,eAAeC,eAAAA,EAAgB,EAAG,CAAC,CAAA,CAAE,OAAO,oBAAoB,CAAA;AACzE;AAqEO,SAAS,+BAAA,GAA+E;AAC7F,EAAA,OAAOpB,gBAAAA;AAAA,IACLV,gBAAAA,CAAiB;AAAA,MACf,CAAC,eAAA,EAAiB6B,cAAAA,CAAeC,eAAAA,EAAgB,EAAG,CAAC,CAAC,CAAA;AAAA,MACtD,CAAC,MAAA,EAAQD,cAAAA,CAAeC,eAAAA,EAAgB,EAAG,EAAE,CAAC,CAAA;AAAA,MAC9C,CAAC,UAAA,EAAYD,cAAAA,CAAeC,eAAAA,EAAgB,EAAG,EAAE,CAAC,CAAA;AAAA,MAClD,CAAC,aAAA,EAAeD,cAAAA,CAAeC,eAAAA,EAAgB,EAAG,EAAE,CAAC,CAAA;AAAA,MACrD,CAAC,OAAA,EAASxB,aAAAA,EAAe,CAAA;AAAA,MACzB,CAAC,OAAA,EAASM,aAAAA,EAAe;AAAA,KAC1B,CAAA;AAAA,IACD,CAAC,KAAA,MAAW,EAAE,GAAG,KAAA,EAAO,eAAe,oBAAA,EAAqB;AAAA,GAC9D;AACF;AAEO,SAAS,+BAAA,GAA2E;AACzF,EAAA,OAAOV,gBAAAA,CAAiB;AAAA,IACtB,CAAC,eAAA,EAAiB6B,cAAAA,CAAeC,eAAAA,EAAgB,EAAG,CAAC,CAAC,CAAA;AAAA,IACtD,CAAC,MAAA,EAAQD,cAAAA,CAAeC,eAAAA,EAAgB,EAAG,EAAE,CAAC,CAAA;AAAA,IAC9C,CAAC,UAAA,EAAYD,cAAAA,CAAeC,eAAAA,EAAgB,EAAG,EAAE,CAAC,CAAA;AAAA,IAClD,CAAC,aAAA,EAAeD,cAAAA,CAAeC,eAAAA,EAAgB,EAAG,EAAE,CAAC,CAAA;AAAA,IACrD,CAAC,OAAA,EAASL,aAAAA,EAAe,CAAA;AAAA,IACzB,CAAC,OAAA,EAASR,aAAAA,EAAe;AAAA,GAC1B,CAAA;AACH;AAEO,SAAS,6BAAA,GAGd;AACA,EAAA,OAAOpB,YAAAA;AAAA,IACL,+BAAA,EAAgC;AAAA,IAChC,+BAAA;AAAgC,GAClC;AACF;AA4BA,eAAsB,yBAAA,CAWpB,OAUA,MAAA,EAaA;AAEA,EAAA,MAAM,cAAA,GACJ,QAAQ,cAAA,IAAkB,6BAAA;AAG5B,EAAA,MAAM,gBAAA,GAAmB;AAAA,IACvB,YAAY,EAAE,KAAA,EAAO,MAAM,UAAA,IAAc,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IACjE,WAAW,EAAE,KAAA,EAAO,MAAM,SAAA,IAAa,IAAA,EAAM,YAAY,IAAA,EAAK;AAAA,IAC9D,cAAc,EAAE,KAAA,EAAO,MAAM,YAAA,IAAgB,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IACrE,YAAY,EAAE,KAAA,EAAO,MAAM,UAAA,IAAc,IAAA,EAAM,YAAY,IAAA,EAAK;AAAA,IAChE,SAAS,EAAE,KAAA,EAAO,MAAM,OAAA,IAAW,IAAA,EAAM,YAAY,IAAA,EAAK;AAAA,IAC1D,YAAY,EAAE,KAAA,EAAO,MAAM,UAAA,IAAc,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IACjE,kBAAA,EAAoB;AAAA,MAClB,KAAA,EAAO,MAAM,kBAAA,IAAsB,IAAA;AAAA,MACnC,UAAA,EAAY;AAAA,KACd;AAAA,IACA,eAAe,EAAE,KAAA,EAAO,MAAM,aAAA,IAAiB,IAAA,EAAM,YAAY,KAAA;AAAM,GACzE;AACA,EAAA,MAAM,QAAA,GAAW,gBAAA;AAMjB,EAAA,MAAM,IAAA,GAAO,EAAE,GAAG,KAAA,EAAM;AAGxB,EAAA,IAAI,CAAC,QAAA,CAAS,UAAA,CAAW,KAAA,EAAO;AAC9B,IAAA,QAAA,CAAS,UAAA,CAAW,KAAA,GAAQ,MAAM,iBAAA,CAAkB;AAAA,MAClD,UAAA,EAAY,aAAA,CAAc,QAAA,CAAS,UAAA,CAAW,KAAK;AAAA,KACpD,CAAA;AAAA,EACH;AACA,EAAA,IAAI,CAAC,QAAA,CAAS,YAAA,CAAa,KAAA,EAAO;AAChC,IAAA,QAAA,CAAS,aAAa,KAAA,GAAQ,uBAAA;AAAA,MAC5B,SAAS,SAAA,CAAU;AAAA,KACrB,CAAE,OAAA;AAAA,EACJ;AACA,EAAA,IAAI,CAAC,QAAA,CAAS,OAAA,CAAQ,KAAA,EAAO;AAC3B,IAAA,QAAA,CAAS,OAAA,CAAQ,KAAA,GAAQ,MAAM,cAAA,CAAe;AAAA,MAC5C,UAAA,EAAY,aAAA,CAAc,QAAA,CAAS,UAAA,CAAW,KAAK,CAAA;AAAA,MACnD,KAAA,EAAO,UAAA,CAAW,IAAA,CAAK,KAAK;AAAA,KAC7B,CAAA;AAAA,EACH;AACA,EAAA,IAAI,CAAC,QAAA,CAAS,UAAA,CAAW,KAAA,EAAO;AAC9B,IAAA,QAAA,CAAS,WAAW,KAAA,GAClB,6CAAA;AAAA,EACJ;AACA,EAAA,IAAI,CAAC,QAAA,CAAS,kBAAA,CAAmB,KAAA,EAAO;AACtC,IAAA,QAAA,CAAS,mBAAmB,KAAA,GAC1B,6CAAA;AAAA,EACJ;AACA,EAAA,IAAI,CAAC,QAAA,CAAS,aAAA,CAAc,KAAA,EAAO;AACjC,IAAA,QAAA,CAAS,cAAc,KAAA,GACrB,kCAAA;AAAA,EACJ;AAGA,EAAA,MAAM,iBAAA,GAAA,CAAoC,IAAA,CAAK,KAAA,IAAS,EAAC,EAAG,GAAA;AAAA,IAC1D,CAACkC,QAAAA,MAAa,EAAE,SAAAA,QAAAA,EAAS,IAAA,EAAMS,YAAY,QAAA,EAAS;AAAA,GACtD;AAEA,EAAA,MAAM,cAAA,GAAiB,qBAAA,CAAsB,cAA2B,CAAA;AACxE,EAAA,OAAO,OAAO,MAAA,CAAO;AAAA,IACnB,QAAA,EAAU;AAAA,MACR,cAAA,CAAe,SAAS,UAAU,CAAA;AAAA,MAClC,cAAA,CAAe,SAAS,SAAS,CAAA;AAAA,MACjC,cAAA,CAAe,SAAS,YAAY,CAAA;AAAA,MACpC,cAAA,CAAe,SAAS,UAAU,CAAA;AAAA,MAClC,cAAA,CAAe,SAAS,OAAO,CAAA;AAAA,MAC/B,cAAA,CAAe,SAAS,UAAU,CAAA;AAAA,MAClC,cAAA,CAAe,SAAS,kBAAkB,CAAA;AAAA,MAC1C,cAAA,CAAe,SAAS,aAAa,CAAA;AAAA,MACrC,GAAG;AAAA,KACL;AAAA,IACA,IAAA,EAAM,iCAAgC,CAAE,MAAA;AAAA,MACtC;AAAA,KACF;AAAA,IACA;AAAA,GAWD,CAAA;AACH;AA4BO,SAAS,oBAAA,CAWd,OAUA,MAAA,EAWA;AAEA,EAAA,MAAM,cAAA,GACJ,QAAQ,cAAA,IAAkB,6BAAA;AAG5B,EAAA,MAAM,gBAAA,GAAmB;AAAA,IACvB,YAAY,EAAE,KAAA,EAAO,MAAM,UAAA,IAAc,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IACjE,WAAW,EAAE,KAAA,EAAO,MAAM,SAAA,IAAa,IAAA,EAAM,YAAY,IAAA,EAAK;AAAA,IAC9D,cAAc,EAAE,KAAA,EAAO,MAAM,YAAA,IAAgB,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IACrE,YAAY,EAAE,KAAA,EAAO,MAAM,UAAA,IAAc,IAAA,EAAM,YAAY,IAAA,EAAK;AAAA,IAChE,SAAS,EAAE,KAAA,EAAO,MAAM,OAAA,IAAW,IAAA,EAAM,YAAY,IAAA,EAAK;AAAA,IAC1D,YAAY,EAAE,KAAA,EAAO,MAAM,UAAA,IAAc,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IACjE,kBAAA,EAAoB;AAAA,MAClB,KAAA,EAAO,MAAM,kBAAA,IAAsB,IAAA;AAAA,MACnC,UAAA,EAAY;AAAA,KACd;AAAA,IACA,eAAe,EAAE,KAAA,EAAO,MAAM,aAAA,IAAiB,IAAA,EAAM,YAAY,KAAA;AAAM,GACzE;AACA,EAAA,MAAM,QAAA,GAAW,gBAAA;AAMjB,EAAA,MAAM,IAAA,GAAO,EAAE,GAAG,KAAA,EAAM;AAGxB,EAAA,IAAI,CAAC,QAAA,CAAS,YAAA,CAAa,KAAA,EAAO;AAChC,IAAA,QAAA,CAAS,aAAa,KAAA,GAAQ,uBAAA;AAAA,MAC5B,SAAS,SAAA,CAAU;AAAA,KACrB,CAAE,OAAA;AAAA,EACJ;AACA,EAAA,IAAI,CAAC,QAAA,CAAS,UAAA,CAAW,KAAA,EAAO;AAC9B,IAAA,QAAA,CAAS,WAAW,KAAA,GAClB,6CAAA;AAAA,EACJ;AACA,EAAA,IAAI,CAAC,QAAA,CAAS,kBAAA,CAAmB,KAAA,EAAO;AACtC,IAAA,QAAA,CAAS,mBAAmB,KAAA,GAC1B,6CAAA;AAAA,EACJ;AACA,EAAA,IAAI,CAAC,QAAA,CAAS,aAAA,CAAc,KAAA,EAAO;AACjC,IAAA,QAAA,CAAS,cAAc,KAAA,GACrB,kCAAA;AAAA,EACJ;AAGA,EAAA,MAAM,iBAAA,GAAA,CAAoC,IAAA,CAAK,KAAA,IAAS,EAAC,EAAG,GAAA;AAAA,IAC1D,CAACT,QAAAA,MAAa,EAAE,SAAAA,QAAAA,EAAS,IAAA,EAAMS,YAAY,QAAA,EAAS;AAAA,GACtD;AAEA,EAAA,MAAM,cAAA,GAAiB,qBAAA,CAAsB,cAA2B,CAAA;AACxE,EAAA,OAAO,OAAO,MAAA,CAAO;AAAA,IACnB,QAAA,EAAU;AAAA,MACR,cAAA,CAAe,SAAS,UAAU,CAAA;AAAA,MAClC,cAAA,CAAe,SAAS,SAAS,CAAA;AAAA,MACjC,cAAA,CAAe,SAAS,YAAY,CAAA;AAAA,MACpC,cAAA,CAAe,SAAS,UAAU,CAAA;AAAA,MAClC,cAAA,CAAe,SAAS,OAAO,CAAA;AAAA,MAC/B,cAAA,CAAe,SAAS,UAAU,CAAA;AAAA,MAClC,cAAA,CAAe,SAAS,kBAAkB,CAAA;AAAA,MAC1C,cAAA,CAAe,SAAS,aAAa,CAAA;AAAA,MACrC,GAAG;AAAA,KACL;AAAA,IACA,IAAA,EAAM,iCAAgC,CAAE,MAAA;AAAA,MACtC;AAAA,KACF;AAAA,IACA;AAAA,GAWD,CAAA;AACH;AAoBO,SAAS,uBAId,WAAA,EAGkD;AAClD,EAAA,IAAI,WAAA,CAAY,QAAA,CAAS,MAAA,GAAS,CAAA,EAAG;AAEnC,IAAA,MAAM,IAAI,MAAM,qBAAqB,CAAA;AAAA,EACvC;AACA,EAAA,IAAI,YAAA,GAAe,CAAA;AACnB,EAAA,MAAM,iBAAiB,MAAM;AAC3B,IAAA,MAAM,WAAA,GAAe,WAAA,CAAY,QAAA,CAA2B,YAAY,CAAA;AACxE,IAAA,YAAA,IAAgB,CAAA;AAChB,IAAA,OAAO,WAAA;AAAA,EACT,CAAA;AACA,EAAA,OAAO;AAAA,IACL,gBAAgB,WAAA,CAAY,cAAA;AAAA,IAC5B,QAAA,EAAU;AAAA,MACR,YAAY,cAAA,EAAe;AAAA,MAC3B,WAAW,cAAA,EAAe;AAAA,MAC1B,cAAc,cAAA,EAAe;AAAA,MAC7B,YAAY,cAAA,EAAe;AAAA,MAC3B,SAAS,cAAA,EAAe;AAAA,MACxB,YAAY,cAAA,EAAe;AAAA,MAC3B,oBAAoB,cAAA,EAAe;AAAA,MACnC,eAAe,cAAA;AAAe,KAChC;AAAA,IACA,IAAA,EAAM,+BAAA,EAAgC,CAAE,MAAA,CAAO,YAAY,IAAI;AAAA,GACjE;AACF;ACtbO,IAAM,uCAAA,GAA0C,IAAI,UAAA,CAAW;AAAA,EACpE,GAAA;AAAA,EAAK,GAAA;AAAA,EAAK,GAAA;AAAA,EAAK,GAAA;AAAA,EAAK,GAAA;AAAA,EAAK,GAAA;AAAA,EAAK,GAAA;AAAA,EAAK;AACrC,CAAC;AAEM,SAAS,2CAAA,GAA8C;AAC5D,EAAA,OAAOb,cAAAA,CAAeC,eAAAA,EAAgB,EAAG,CAAC,CAAA,CAAE,MAAA;AAAA,IAC1C;AAAA,GACF;AACF;AAgHO,SAAS,+CAAA,GAAsG;AACpH,EAAA,OAAOpB,gBAAAA;AAAA,IACLV,gBAAAA,CAAiB;AAAA,MACf,CAAC,eAAA,EAAiB6B,cAAAA,CAAeC,eAAAA,EAAgB,EAAG,CAAC,CAAC,CAAA;AAAA,MACtD,CAAC,MAAA,EAAQD,cAAAA,CAAeC,eAAAA,EAAgB,EAAG,EAAE,CAAC,CAAA;AAAA,MAC9C,CAAC,UAAA,EAAYD,cAAAA,CAAeC,eAAAA,EAAgB,EAAG,EAAE,CAAC,CAAA;AAAA,MAClD,CAAC,aAAA,EAAeD,cAAAA,CAAeC,eAAAA,EAAgB,EAAG,EAAE,CAAC,CAAA;AAAA,MACrD,CAAC,OAAA,EAASxB,aAAAA,EAAe,CAAA;AAAA,MACzB,CAAC,OAAA,EAASM,aAAAA,EAAe,CAAA;AAAA,MACzB,CAAC,UAAA,EAAY,sBAAA,EAAwB,CAAA;AAAA,MACrC,CAAC,YAAA,EAAclB,iBAAAA,EAAmB;AAAA,KACnC,CAAA;AAAA,IACD,CAAC,KAAA,MAAW;AAAA,MACV,GAAG,KAAA;AAAA,MACH,aAAA,EAAe;AAAA,KACjB;AAAA,GACF;AACF;AAEO,SAAS,+CAAA,GAAkG;AAChH,EAAA,OAAOQ,gBAAAA,CAAiB;AAAA,IACtB,CAAC,eAAA,EAAiB6B,cAAAA,CAAeC,eAAAA,EAAgB,EAAG,CAAC,CAAC,CAAA;AAAA,IACtD,CAAC,MAAA,EAAQD,cAAAA,CAAeC,eAAAA,EAAgB,EAAG,EAAE,CAAC,CAAA;AAAA,IAC9C,CAAC,UAAA,EAAYD,cAAAA,CAAeC,eAAAA,EAAgB,EAAG,EAAE,CAAC,CAAA;AAAA,IAClD,CAAC,aAAA,EAAeD,cAAAA,CAAeC,eAAAA,EAAgB,EAAG,EAAE,CAAC,CAAA;AAAA,IACrD,CAAC,OAAA,EAASL,aAAAA,EAAe,CAAA;AAAA,IACzB,CAAC,OAAA,EAASR,aAAAA,EAAe,CAAA;AAAA,IACzB,CAAC,UAAA,EAAY,sBAAA,EAAwB,CAAA;AAAA,IACrC,CAAC,YAAA,EAAchB,iBAAAA,EAAmB;AAAA,GACnC,CAAA;AACH;AAEO,SAAS,6CAAA,GAGd;AACA,EAAA,OAAOJ,YAAAA;AAAA,IACL,+CAAA,EAAgD;AAAA,IAChD,+CAAA;AAAgD,GAClD;AACF;AAyDA,eAAsB,yCAAA,CAmBpB,OAkBA,MAAA,EAwBA;AAEA,EAAA,MAAM,cAAA,GACJ,QAAQ,cAAA,IAAkB,6BAAA;AAG5B,EAAA,MAAM,gBAAA,GAAmB;AAAA,IACvB,YAAY,EAAE,KAAA,EAAO,MAAM,UAAA,IAAc,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IACjE,WAAW,EAAE,KAAA,EAAO,MAAM,SAAA,IAAa,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IAC/D,cAAc,EAAE,KAAA,EAAO,MAAM,YAAA,IAAgB,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IACrE,YAAY,EAAE,KAAA,EAAO,MAAM,UAAA,IAAc,IAAA,EAAM,YAAY,IAAA,EAAK;AAAA,IAChE,OAAO,EAAE,KAAA,EAAO,MAAM,KAAA,IAAS,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IACvD,qBAAA,EAAuB;AAAA,MACrB,KAAA,EAAO,MAAM,qBAAA,IAAyB,IAAA;AAAA,MACtC,UAAA,EAAY;AAAA,KACd;AAAA,IACA,mBAAA,EAAqB;AAAA,MACnB,KAAA,EAAO,MAAM,mBAAA,IAAuB,IAAA;AAAA,MACpC,UAAA,EAAY;AAAA,KACd;AAAA,IACA,4BAAA,EAA8B;AAAA,MAC5B,KAAA,EAAO,MAAM,4BAAA,IAAgC,IAAA;AAAA,MAC7C,UAAA,EAAY;AAAA,KACd;AAAA,IACA,gBAAgB,EAAE,KAAA,EAAO,MAAM,cAAA,IAAkB,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IACzE,kBAAA,EAAoB;AAAA,MAClB,KAAA,EAAO,MAAM,kBAAA,IAAsB,IAAA;AAAA,MACnC,UAAA,EAAY;AAAA,KACd;AAAA,IACA,iBAAA,EAAmB;AAAA,MACjB,KAAA,EAAO,MAAM,iBAAA,IAAqB,IAAA;AAAA,MAClC,UAAA,EAAY;AAAA,KACd;AAAA,IACA,eAAA,EAAiB;AAAA,MACf,KAAA,EAAO,MAAM,eAAA,IAAmB,IAAA;AAAA,MAChC,UAAA,EAAY;AAAA,KACd;AAAA,IACA,YAAY,EAAE,KAAA,EAAO,MAAM,UAAA,IAAc,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IACjE,kBAAA,EAAoB;AAAA,MAClB,KAAA,EAAO,MAAM,kBAAA,IAAsB,IAAA;AAAA,MACnC,UAAA,EAAY;AAAA,KACd;AAAA,IACA,oBAAA,EAAsB;AAAA,MACpB,KAAA,EAAO,MAAM,oBAAA,IAAwB,IAAA;AAAA,MACrC,UAAA,EAAY;AAAA,KACd;AAAA,IACA,eAAe,EAAE,KAAA,EAAO,MAAM,aAAA,IAAiB,IAAA,EAAM,YAAY,KAAA;AAAM,GACzE;AACA,EAAA,MAAM,QAAA,GAAW,gBAAA;AAMjB,EAAA,MAAM,IAAA,GAAO,EAAE,GAAG,KAAA,EAAM;AAGxB,EAAA,MAAM,aAAA,GAAgB,EAA4B,IAAA,EAAK;AAGvD,EAAA,IAAI,CAAC,QAAA,CAAS,UAAA,CAAW,KAAA,EAAO;AAC9B,IAAA,QAAA,CAAS,UAAA,CAAW,KAAA,GAAQ,MAAM,iBAAA,CAAkB;AAAA,MAClD,UAAA,EAAY,aAAA,CAAc,QAAA,CAAS,UAAA,CAAW,KAAK;AAAA,KACpD,CAAA;AAAA,EACH;AACA,EAAA,IAAI,CAAC,QAAA,CAAS,YAAA,CAAa,KAAA,EAAO;AAChC,IAAA,QAAA,CAAS,YAAA,CAAa,KAAA,GAAQ,UAAA,CAAW,QAAA,CAAS,UAAU,KAAK,CAAA;AAAA,EACnE;AACA,EAAA,IAAI,CAAC,QAAA,CAAS,kBAAA,CAAmB,KAAA,EAAO;AACtC,IAAA,QAAA,CAAS,kBAAA,CAAmB,KAAA,GAAQ,MAAM,eAAA,CAAgB;AAAA,MACxD,IAAA,EAAM,aAAA,CAAc,QAAA,CAAS,cAAA,CAAe,KAAK;AAAA,KAClD,CAAA;AAAA,EACH;AACA,EAAA,IAAI,CAAC,QAAA,CAAS,iBAAA,CAAkB,KAAA,EAAO;AACrC,IAAA,QAAA,CAAS,iBAAA,CAAkB,KAAA,GAAQ,MAAM,oBAAA,CAAqB;AAAA,MAC5D,IAAA,EAAM,aAAA,CAAc,QAAA,CAAS,cAAA,CAAe,KAAK;AAAA,KAClD,CAAA;AAAA,EACH;AACA,EAAA,IAAI,CAAC,QAAA,CAAS,eAAA,CAAgB,KAAA,EAAO;AACnC,IAAA,QAAA,CAAS,gBAAgB,KAAA,GAAQ,cAAA;AACjC,IAAA,QAAA,CAAS,gBAAgB,UAAA,GAAa,KAAA;AAAA,EACxC;AACA,EAAA,IAAI,CAAC,QAAA,CAAS,UAAA,CAAW,KAAA,EAAO;AAC9B,IAAA,QAAA,CAAS,WAAW,KAAA,GAClB,6CAAA;AAAA,EACJ;AACA,EAAA,IAAI,CAAC,QAAA,CAAS,kBAAA,CAAmB,KAAA,EAAO;AACtC,IAAA,QAAA,CAAS,mBAAmB,KAAA,GAC1B,6CAAA;AAAA,EACJ;AACA,EAAA,IAAI,CAAC,QAAA,CAAS,oBAAA,CAAqB,KAAA,EAAO;AACxC,IAAA,QAAA,CAAS,qBAAqB,KAAA,GAC5B,8CAAA;AAAA,EACJ;AACA,EAAA,IAAI,CAAC,QAAA,CAAS,aAAA,CAAc,KAAA,EAAO;AACjC,IAAA,QAAA,CAAS,cAAc,KAAA,GACrB,kCAAA;AAAA,EACJ;AACA,EAAA,IAAI,CAAC,KAAK,QAAA,EAAU;AAClB,IAAA,IAAA,CAAK,QAAA,GAAW,gBAAgB,aAAa,CAAA;AAAA,EAC/C;AACA,EAAA,IAAI,CAAC,KAAK,WAAA,EAAa;AACrB,IAAA,IAAA,CAAK,WAAA,GAAc,mBAAmB,aAAa,CAAA;AAAA,EACrD;AACA,EAAA,IAAI,CAAC,KAAK,UAAA,EAAY;AACpB,IAAA,IAAA,CAAK,UAAA,GAAa,aAAA,CAAc,QAAA,CAAS,cAAA,CAAe,KAAK,CAAA;AAAA,EAC/D;AAGA,EAAA,MAAM,iBAAA,GAAA,CAAoC,IAAA,CAAK,KAAA,IAAS,EAAC,EAAG,GAAA;AAAA,IAC1D,CAACkC,QAAAA,MAAa,EAAE,SAAAA,QAAAA,EAAS,IAAA,EAAMS,YAAY,QAAA,EAAS;AAAA,GACtD;AAEA,EAAA,MAAM,cAAA,GAAiB,qBAAA,CAAsB,cAA2B,CAAA;AACxE,EAAA,OAAO,OAAO,MAAA,CAAO;AAAA,IACnB,QAAA,EAAU;AAAA,MACR,cAAA,CAAe,SAAS,UAAU,CAAA;AAAA,MAClC,cAAA,CAAe,SAAS,SAAS,CAAA;AAAA,MACjC,cAAA,CAAe,SAAS,YAAY,CAAA;AAAA,MACpC,cAAA,CAAe,SAAS,UAAU,CAAA;AAAA,MAClC,cAAA,CAAe,SAAS,KAAK,CAAA;AAAA,MAC7B,cAAA,CAAe,SAAS,qBAAqB,CAAA;AAAA,MAC7C,cAAA,CAAe,SAAS,mBAAmB,CAAA;AAAA,MAC3C,cAAA,CAAe,SAAS,4BAA4B,CAAA;AAAA,MACpD,cAAA,CAAe,SAAS,cAAc,CAAA;AAAA,MACtC,cAAA,CAAe,SAAS,kBAAkB,CAAA;AAAA,MAC1C,cAAA,CAAe,SAAS,iBAAiB,CAAA;AAAA,MACzC,cAAA,CAAe,SAAS,eAAe,CAAA;AAAA,MACvC,cAAA,CAAe,SAAS,UAAU,CAAA;AAAA,MAClC,cAAA,CAAe,SAAS,kBAAkB,CAAA;AAAA,MAC1C,cAAA,CAAe,SAAS,oBAAoB,CAAA;AAAA,MAC5C,cAAA,CAAe,SAAS,aAAa,CAAA;AAAA,MACrC,GAAG;AAAA,KACL;AAAA,IACA,IAAA,EAAM,iDAAgD,CAAE,MAAA;AAAA,MACtD;AAAA,KACF;AAAA,IACA;AAAA,GAsBD,CAAA;AACH;AAyDO,SAAS,oCAAA,CAmBd,OAkBA,MAAA,EAsBA;AAEA,EAAA,MAAM,cAAA,GACJ,QAAQ,cAAA,IAAkB,6BAAA;AAG5B,EAAA,MAAM,gBAAA,GAAmB;AAAA,IACvB,YAAY,EAAE,KAAA,EAAO,MAAM,UAAA,IAAc,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IACjE,WAAW,EAAE,KAAA,EAAO,MAAM,SAAA,IAAa,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IAC/D,cAAc,EAAE,KAAA,EAAO,MAAM,YAAA,IAAgB,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IACrE,YAAY,EAAE,KAAA,EAAO,MAAM,UAAA,IAAc,IAAA,EAAM,YAAY,IAAA,EAAK;AAAA,IAChE,OAAO,EAAE,KAAA,EAAO,MAAM,KAAA,IAAS,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IACvD,qBAAA,EAAuB;AAAA,MACrB,KAAA,EAAO,MAAM,qBAAA,IAAyB,IAAA;AAAA,MACtC,UAAA,EAAY;AAAA,KACd;AAAA,IACA,mBAAA,EAAqB;AAAA,MACnB,KAAA,EAAO,MAAM,mBAAA,IAAuB,IAAA;AAAA,MACpC,UAAA,EAAY;AAAA,KACd;AAAA,IACA,4BAAA,EAA8B;AAAA,MAC5B,KAAA,EAAO,MAAM,4BAAA,IAAgC,IAAA;AAAA,MAC7C,UAAA,EAAY;AAAA,KACd;AAAA,IACA,gBAAgB,EAAE,KAAA,EAAO,MAAM,cAAA,IAAkB,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IACzE,kBAAA,EAAoB;AAAA,MAClB,KAAA,EAAO,MAAM,kBAAA,IAAsB,IAAA;AAAA,MACnC,UAAA,EAAY;AAAA,KACd;AAAA,IACA,iBAAA,EAAmB;AAAA,MACjB,KAAA,EAAO,MAAM,iBAAA,IAAqB,IAAA;AAAA,MAClC,UAAA,EAAY;AAAA,KACd;AAAA,IACA,eAAA,EAAiB;AAAA,MACf,KAAA,EAAO,MAAM,eAAA,IAAmB,IAAA;AAAA,MAChC,UAAA,EAAY;AAAA,KACd;AAAA,IACA,YAAY,EAAE,KAAA,EAAO,MAAM,UAAA,IAAc,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IACjE,kBAAA,EAAoB;AAAA,MAClB,KAAA,EAAO,MAAM,kBAAA,IAAsB,IAAA;AAAA,MACnC,UAAA,EAAY;AAAA,KACd;AAAA,IACA,oBAAA,EAAsB;AAAA,MACpB,KAAA,EAAO,MAAM,oBAAA,IAAwB,IAAA;AAAA,MACrC,UAAA,EAAY;AAAA,KACd;AAAA,IACA,eAAe,EAAE,KAAA,EAAO,MAAM,aAAA,IAAiB,IAAA,EAAM,YAAY,KAAA;AAAM,GACzE;AACA,EAAA,MAAM,QAAA,GAAW,gBAAA;AAMjB,EAAA,MAAM,IAAA,GAAO,EAAE,GAAG,KAAA,EAAM;AAGxB,EAAA,MAAM,aAAA,GAAgB,EAA4B,IAAA,EAAK;AAGvD,EAAA,IAAI,CAAC,QAAA,CAAS,YAAA,CAAa,KAAA,EAAO;AAChC,IAAA,QAAA,CAAS,YAAA,CAAa,KAAA,GAAQ,UAAA,CAAW,QAAA,CAAS,UAAU,KAAK,CAAA;AAAA,EACnE;AACA,EAAA,IAAI,CAAC,QAAA,CAAS,eAAA,CAAgB,KAAA,EAAO;AACnC,IAAA,QAAA,CAAS,gBAAgB,KAAA,GAAQ,cAAA;AACjC,IAAA,QAAA,CAAS,gBAAgB,UAAA,GAAa,KAAA;AAAA,EACxC;AACA,EAAA,IAAI,CAAC,QAAA,CAAS,UAAA,CAAW,KAAA,EAAO;AAC9B,IAAA,QAAA,CAAS,WAAW,KAAA,GAClB,6CAAA;AAAA,EACJ;AACA,EAAA,IAAI,CAAC,QAAA,CAAS,kBAAA,CAAmB,KAAA,EAAO;AACtC,IAAA,QAAA,CAAS,mBAAmB,KAAA,GAC1B,6CAAA;AAAA,EACJ;AACA,EAAA,IAAI,CAAC,QAAA,CAAS,oBAAA,CAAqB,KAAA,EAAO;AACxC,IAAA,QAAA,CAAS,qBAAqB,KAAA,GAC5B,8CAAA;AAAA,EACJ;AACA,EAAA,IAAI,CAAC,QAAA,CAAS,aAAA,CAAc,KAAA,EAAO;AACjC,IAAA,QAAA,CAAS,cAAc,KAAA,GACrB,kCAAA;AAAA,EACJ;AACA,EAAA,IAAI,CAAC,KAAK,QAAA,EAAU;AAClB,IAAA,IAAA,CAAK,QAAA,GAAW,gBAAgB,aAAa,CAAA;AAAA,EAC/C;AACA,EAAA,IAAI,CAAC,KAAK,WAAA,EAAa;AACrB,IAAA,IAAA,CAAK,WAAA,GAAc,mBAAmB,aAAa,CAAA;AAAA,EACrD;AACA,EAAA,IAAI,CAAC,KAAK,UAAA,EAAY;AACpB,IAAA,IAAA,CAAK,UAAA,GAAa,aAAA,CAAc,QAAA,CAAS,cAAA,CAAe,KAAK,CAAA;AAAA,EAC/D;AAGA,EAAA,MAAM,iBAAA,GAAA,CAAoC,IAAA,CAAK,KAAA,IAAS,EAAC,EAAG,GAAA;AAAA,IAC1D,CAACT,QAAAA,MAAa,EAAE,SAAAA,QAAAA,EAAS,IAAA,EAAMS,YAAY,QAAA,EAAS;AAAA,GACtD;AAEA,EAAA,MAAM,cAAA,GAAiB,qBAAA,CAAsB,cAA2B,CAAA;AACxE,EAAA,OAAO,OAAO,MAAA,CAAO;AAAA,IACnB,QAAA,EAAU;AAAA,MACR,cAAA,CAAe,SAAS,UAAU,CAAA;AAAA,MAClC,cAAA,CAAe,SAAS,SAAS,CAAA;AAAA,MACjC,cAAA,CAAe,SAAS,YAAY,CAAA;AAAA,MACpC,cAAA,CAAe,SAAS,UAAU,CAAA;AAAA,MAClC,cAAA,CAAe,SAAS,KAAK,CAAA;AAAA,MAC7B,cAAA,CAAe,SAAS,qBAAqB,CAAA;AAAA,MAC7C,cAAA,CAAe,SAAS,mBAAmB,CAAA;AAAA,MAC3C,cAAA,CAAe,SAAS,4BAA4B,CAAA;AAAA,MACpD,cAAA,CAAe,SAAS,cAAc,CAAA;AAAA,MACtC,cAAA,CAAe,SAAS,kBAAkB,CAAA;AAAA,MAC1C,cAAA,CAAe,SAAS,iBAAiB,CAAA;AAAA,MACzC,cAAA,CAAe,SAAS,eAAe,CAAA;AAAA,MACvC,cAAA,CAAe,SAAS,UAAU,CAAA;AAAA,MAClC,cAAA,CAAe,SAAS,kBAAkB,CAAA;AAAA,MAC1C,cAAA,CAAe,SAAS,oBAAoB,CAAA;AAAA,MAC5C,cAAA,CAAe,SAAS,aAAa,CAAA;AAAA,MACrC,GAAG;AAAA,KACL;AAAA,IACA,IAAA,EAAM,iDAAgD,CAAE,MAAA;AAAA,MACtD;AAAA,KACF;AAAA,IACA;AAAA,GAsBD,CAAA;AACH;AAqCO,SAAS,uCAId,WAAA,EAGkE;AAClE,EAAA,IAAI,WAAA,CAAY,QAAA,CAAS,MAAA,GAAS,EAAA,EAAI;AAEpC,IAAA,MAAM,IAAI,MAAM,qBAAqB,CAAA;AAAA,EACvC;AACA,EAAA,IAAI,YAAA,GAAe,CAAA;AACnB,EAAA,MAAM,iBAAiB,MAAM;AAC3B,IAAA,MAAM,WAAA,GAAe,WAAA,CAAY,QAAA,CAA2B,YAAY,CAAA;AACxE,IAAA,YAAA,IAAgB,CAAA;AAChB,IAAA,OAAO,WAAA;AAAA,EACT,CAAA;AACA,EAAA,MAAM,yBAAyB,MAAM;AACnC,IAAA,MAAM,cAAc,cAAA,EAAe;AACnC,IAAA,OAAO,WAAA,CAAY,OAAA,KAAY,6BAAA,GAC3B,MAAA,GACA,WAAA;AAAA,EACN,CAAA;AACA,EAAA,OAAO;AAAA,IACL,gBAAgB,WAAA,CAAY,cAAA;AAAA,IAC5B,QAAA,EAAU;AAAA,MACR,YAAY,cAAA,EAAe;AAAA,MAC3B,WAAW,cAAA,EAAe;AAAA,MAC1B,cAAc,cAAA,EAAe;AAAA,MAC7B,YAAY,cAAA,EAAe;AAAA,MAC3B,OAAO,cAAA,EAAe;AAAA,MACtB,uBAAuB,cAAA,EAAe;AAAA,MACtC,qBAAqB,cAAA,EAAe;AAAA,MACpC,8BAA8B,sBAAA,EAAuB;AAAA,MACrD,gBAAgB,cAAA,EAAe;AAAA,MAC/B,oBAAoB,cAAA,EAAe;AAAA,MACnC,mBAAmB,cAAA,EAAe;AAAA,MAClC,iBAAiB,cAAA,EAAe;AAAA,MAChC,YAAY,cAAA,EAAe;AAAA,MAC3B,oBAAoB,cAAA,EAAe;AAAA,MACnC,sBAAsB,cAAA,EAAe;AAAA,MACrC,eAAe,cAAA;AAAe,KAChC;AAAA,IACA,IAAA,EAAM,iDAAgD,CAAE,MAAA;AAAA,MACtD,WAAA,CAAY;AAAA;AACd,GACF;AACF;ACjxBO,IAAM,+BAAA,GAAkC,IAAI,UAAA,CAAW;AAAA,EAC5D,GAAA;AAAA,EAAK,EAAA;AAAA,EAAI,EAAA;AAAA,EAAI,EAAA;AAAA,EAAI,EAAA;AAAA,EAAI,EAAA;AAAA,EAAI,EAAA;AAAA,EAAI;AAC/B,CAAC;AAEM,SAAS,oCAAA,GAAuC;AACrD,EAAA,OAAOb,cAAAA,CAAeC,eAAAA,EAAgB,EAAG,CAAC,CAAA,CAAE,MAAA;AAAA,IAC1C;AAAA,GACF;AACF;AAqGO,SAAS,wCAAA,GAAwF;AACtG,EAAA,OAAOpB,gBAAAA;AAAA,IACLV,gBAAAA,CAAiB;AAAA,MACf,CAAC,eAAA,EAAiB6B,cAAAA,CAAeC,eAAAA,EAAgB,EAAG,CAAC,CAAC,CAAA;AAAA,MACtD,CAAC,MAAA,EAAQD,cAAAA,CAAeC,eAAAA,EAAgB,EAAG,EAAE,CAAC,CAAA;AAAA,MAC9C;AAAA,QACE,eAAA;AAAA,QACAhB,gBAAAA,CAAiBe,cAAAA,CAAeC,eAAAA,EAAgB,EAAG,EAAE,CAAC;AAAA,OACxD;AAAA,MACA,CAAC,OAAA,EAAShB,gBAAAA,CAAiBP,YAAAA,EAAc,CAAC,CAAA;AAAA,MAC1C,CAAC,OAAA,EAASD,aAAAA,EAAe,CAAA;AAAA,MACzB,CAAC,OAAA,EAASM,aAAAA,EAAe,CAAA;AAAA,MACzB,CAAC,UAAA,EAAY,wBAAA,EAA0B;AAAA,KACxC,CAAA;AAAA,IACD,CAAC,KAAA,MAAW;AAAA,MACV,GAAG,KAAA;AAAA,MACH,aAAA,EAAe,+BAAA;AAAA,MACf,aAAA,EAAe,KAAA,CAAM,aAAA,IAAiBa,IAAAA,EAAK;AAAA,MAC3C,KAAA,EAAO,KAAA,CAAM,KAAA,IAASA,IAAAA;AAAK,KAC7B;AAAA,GACF;AACF;AAEO,SAAS,wCAAA,GAAoF;AAClG,EAAA,OAAOvB,gBAAAA,CAAiB;AAAA,IACtB,CAAC,eAAA,EAAiB6B,cAAAA,CAAeC,eAAAA,EAAgB,EAAG,CAAC,CAAC,CAAA;AAAA,IACtD,CAAC,MAAA,EAAQD,cAAAA,CAAeC,eAAAA,EAAgB,EAAG,EAAE,CAAC,CAAA;AAAA,IAC9C,CAAC,iBAAiBX,gBAAAA,CAAiBU,cAAAA,CAAeC,iBAAgB,EAAG,EAAE,CAAC,CAAC,CAAA;AAAA,IACzE,CAAC,OAAA,EAASX,gBAAAA,CAAiBb,YAAAA,EAAc,CAAC,CAAA;AAAA,IAC1C,CAAC,OAAA,EAASmB,aAAAA,EAAe,CAAA;AAAA,IACzB,CAAC,OAAA,EAASR,aAAAA,EAAe,CAAA;AAAA,IACzB,CAAC,UAAA,EAAY,wBAAA,EAA0B;AAAA,GACxC,CAAA;AACH;AAEO,SAAS,sCAAA,GAGd;AACA,EAAA,OAAOpB,YAAAA;AAAA,IACL,wCAAA,EAAyC;AAAA,IACzC,wCAAA;AAAyC,GAC3C;AACF;AAmDA,eAAsB,kCAAA,CAiBpB,OAgBA,MAAA,EAmBA;AAEA,EAAA,MAAM,cAAA,GACJ,QAAQ,cAAA,IAAkB,6BAAA;AAG5B,EAAA,MAAM,gBAAA,GAAmB;AAAA,IACvB,YAAY,EAAE,KAAA,EAAO,MAAM,UAAA,IAAc,IAAA,EAAM,YAAY,IAAA,EAAK;AAAA,IAChE,OAAO,EAAE,KAAA,EAAO,MAAM,KAAA,IAAS,IAAA,EAAM,YAAY,IAAA,EAAK;AAAA,IACtD,WAAW,EAAE,KAAA,EAAO,MAAM,SAAA,IAAa,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IAC/D,sBAAA,EAAwB;AAAA,MACtB,KAAA,EAAO,MAAM,sBAAA,IAA0B,IAAA;AAAA,MACvC,UAAA,EAAY;AAAA,KACd;AAAA,IACA,WAAW,EAAE,KAAA,EAAO,MAAM,SAAA,IAAa,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IAC/D,cAAc,EAAE,KAAA,EAAO,MAAM,YAAA,IAAgB,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IACrE,YAAY,EAAE,KAAA,EAAO,MAAM,UAAA,IAAc,IAAA,EAAM,YAAY,IAAA,EAAK;AAAA,IAChE,gBAAgB,EAAE,KAAA,EAAO,MAAM,cAAA,IAAkB,IAAA,EAAM,YAAY,IAAA,EAAK;AAAA,IACxE,iBAAA,EAAmB;AAAA,MACjB,KAAA,EAAO,MAAM,iBAAA,IAAqB,IAAA;AAAA,MAClC,UAAA,EAAY;AAAA,KACd;AAAA,IACA,gBAAA,EAAkB;AAAA,MAChB,KAAA,EAAO,MAAM,gBAAA,IAAoB,IAAA;AAAA,MACjC,UAAA,EAAY;AAAA,KACd;AAAA,IACA,YAAY,EAAE,KAAA,EAAO,MAAM,UAAA,IAAc,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IACjE,kBAAA,EAAoB;AAAA,MAClB,KAAA,EAAO,MAAM,kBAAA,IAAsB,IAAA;AAAA,MACnC,UAAA,EAAY;AAAA,KACd;AAAA,IACA,gBAAgB,EAAE,KAAA,EAAO,MAAM,cAAA,IAAkB,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IACzE,eAAe,EAAE,KAAA,EAAO,MAAM,aAAA,IAAiB,IAAA,EAAM,YAAY,KAAA;AAAM,GACzE;AACA,EAAA,MAAM,QAAA,GAAW,gBAAA;AAMjB,EAAA,MAAM,IAAA,GAAO,EAAE,GAAG,KAAA,EAAM;AAGxB,EAAA,IAAI,CAAC,QAAA,CAAS,UAAA,CAAW,KAAA,EAAO;AAC9B,IAAA,QAAA,CAAS,UAAA,CAAW,KAAA,GAAQ,MAAM,iBAAA,CAAkB;AAAA,MAClD,UAAA,EAAY,aAAA,CAAc,QAAA,CAAS,UAAA,CAAW,KAAK;AAAA,KACpD,CAAA;AAAA,EACH;AACA,EAAA,IAAI,CAAC,QAAA,CAAS,gBAAA,CAAiB,KAAA,EAAO;AACpC,IAAA,QAAA,CAAS,iBAAiB,KAAA,GACxB,8CAAA;AAAA,EACJ;AACA,EAAA,IAAI,CAAC,QAAA,CAAS,UAAA,CAAW,KAAA,EAAO;AAC9B,IAAA,QAAA,CAAS,WAAW,KAAA,GAClB,6CAAA;AAAA,EACJ;AACA,EAAA,IAAI,CAAC,QAAA,CAAS,kBAAA,CAAmB,KAAA,EAAO;AACtC,IAAA,QAAA,CAAS,mBAAmB,KAAA,GAC1B,6CAAA;AAAA,EACJ;AACA,EAAA,IAAI,CAAC,QAAA,CAAS,cAAA,CAAe,KAAA,EAAO;AAClC,IAAA,QAAA,CAAS,eAAe,KAAA,GACtB,8CAAA;AAAA,EACJ;AACA,EAAA,IAAI,CAAC,QAAA,CAAS,aAAA,CAAc,KAAA,EAAO;AACjC,IAAA,QAAA,CAAS,cAAc,KAAA,GACrB,kCAAA;AAAA,EACJ;AAGA,EAAA,MAAM,iBAAA,GAAA,CAAoC,IAAA,CAAK,KAAA,IAAS,EAAC,EAAG,GAAA;AAAA,IAC1D,CAACkC,QAAAA,MAAa,EAAE,SAAAA,QAAAA,EAAS,IAAA,EAAMS,YAAY,QAAA,EAAS;AAAA,GACtD;AAEA,EAAA,MAAM,cAAA,GAAiB,qBAAA,CAAsB,cAA2B,CAAA;AACxE,EAAA,OAAO,OAAO,MAAA,CAAO;AAAA,IACnB,QAAA,EAAU;AAAA,MACR,cAAA,CAAe,SAAS,UAAU,CAAA;AAAA,MAClC,cAAA,CAAe,SAAS,KAAK,CAAA;AAAA,MAC7B,cAAA,CAAe,SAAS,SAAS,CAAA;AAAA,MACjC,cAAA,CAAe,SAAS,sBAAsB,CAAA;AAAA,MAC9C,cAAA,CAAe,SAAS,SAAS,CAAA;AAAA,MACjC,cAAA,CAAe,SAAS,YAAY,CAAA;AAAA,MACpC,cAAA,CAAe,SAAS,UAAU,CAAA;AAAA,MAClC,cAAA,CAAe,SAAS,cAAc,CAAA;AAAA,MACtC,cAAA,CAAe,SAAS,iBAAiB,CAAA;AAAA,MACzC,cAAA,CAAe,SAAS,gBAAgB,CAAA;AAAA,MACxC,cAAA,CAAe,SAAS,UAAU,CAAA;AAAA,MAClC,cAAA,CAAe,SAAS,kBAAkB,CAAA;AAAA,MAC1C,cAAA,CAAe,SAAS,cAAc,CAAA;AAAA,MACtC,cAAA,CAAe,SAAS,aAAa,CAAA;AAAA,MACrC,GAAG;AAAA,KACL;AAAA,IACA,IAAA,EAAM,0CAAyC,CAAE,MAAA;AAAA,MAC/C;AAAA,KACF;AAAA,IACA;AAAA,GAiBD,CAAA;AACH;AAmDO,SAAS,6BAAA,CAiBd,OAgBA,MAAA,EAiBA;AAEA,EAAA,MAAM,cAAA,GACJ,QAAQ,cAAA,IAAkB,6BAAA;AAG5B,EAAA,MAAM,gBAAA,GAAmB;AAAA,IACvB,YAAY,EAAE,KAAA,EAAO,MAAM,UAAA,IAAc,IAAA,EAAM,YAAY,IAAA,EAAK;AAAA,IAChE,OAAO,EAAE,KAAA,EAAO,MAAM,KAAA,IAAS,IAAA,EAAM,YAAY,IAAA,EAAK;AAAA,IACtD,WAAW,EAAE,KAAA,EAAO,MAAM,SAAA,IAAa,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IAC/D,sBAAA,EAAwB;AAAA,MACtB,KAAA,EAAO,MAAM,sBAAA,IAA0B,IAAA;AAAA,MACvC,UAAA,EAAY;AAAA,KACd;AAAA,IACA,WAAW,EAAE,KAAA,EAAO,MAAM,SAAA,IAAa,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IAC/D,cAAc,EAAE,KAAA,EAAO,MAAM,YAAA,IAAgB,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IACrE,YAAY,EAAE,KAAA,EAAO,MAAM,UAAA,IAAc,IAAA,EAAM,YAAY,IAAA,EAAK;AAAA,IAChE,gBAAgB,EAAE,KAAA,EAAO,MAAM,cAAA,IAAkB,IAAA,EAAM,YAAY,IAAA,EAAK;AAAA,IACxE,iBAAA,EAAmB;AAAA,MACjB,KAAA,EAAO,MAAM,iBAAA,IAAqB,IAAA;AAAA,MAClC,UAAA,EAAY;AAAA,KACd;AAAA,IACA,gBAAA,EAAkB;AAAA,MAChB,KAAA,EAAO,MAAM,gBAAA,IAAoB,IAAA;AAAA,MACjC,UAAA,EAAY;AAAA,KACd;AAAA,IACA,YAAY,EAAE,KAAA,EAAO,MAAM,UAAA,IAAc,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IACjE,kBAAA,EAAoB;AAAA,MAClB,KAAA,EAAO,MAAM,kBAAA,IAAsB,IAAA;AAAA,MACnC,UAAA,EAAY;AAAA,KACd;AAAA,IACA,gBAAgB,EAAE,KAAA,EAAO,MAAM,cAAA,IAAkB,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IACzE,eAAe,EAAE,KAAA,EAAO,MAAM,aAAA,IAAiB,IAAA,EAAM,YAAY,KAAA;AAAM,GACzE;AACA,EAAA,MAAM,QAAA,GAAW,gBAAA;AAMjB,EAAA,MAAM,IAAA,GAAO,EAAE,GAAG,KAAA,EAAM;AAGxB,EAAA,IAAI,CAAC,QAAA,CAAS,gBAAA,CAAiB,KAAA,EAAO;AACpC,IAAA,QAAA,CAAS,iBAAiB,KAAA,GACxB,8CAAA;AAAA,EACJ;AACA,EAAA,IAAI,CAAC,QAAA,CAAS,UAAA,CAAW,KAAA,EAAO;AAC9B,IAAA,QAAA,CAAS,WAAW,KAAA,GAClB,6CAAA;AAAA,EACJ;AACA,EAAA,IAAI,CAAC,QAAA,CAAS,kBAAA,CAAmB,KAAA,EAAO;AACtC,IAAA,QAAA,CAAS,mBAAmB,KAAA,GAC1B,6CAAA;AAAA,EACJ;AACA,EAAA,IAAI,CAAC,QAAA,CAAS,cAAA,CAAe,KAAA,EAAO;AAClC,IAAA,QAAA,CAAS,eAAe,KAAA,GACtB,8CAAA;AAAA,EACJ;AACA,EAAA,IAAI,CAAC,QAAA,CAAS,aAAA,CAAc,KAAA,EAAO;AACjC,IAAA,QAAA,CAAS,cAAc,KAAA,GACrB,kCAAA;AAAA,EACJ;AAGA,EAAA,MAAM,iBAAA,GAAA,CAAoC,IAAA,CAAK,KAAA,IAAS,EAAC,EAAG,GAAA;AAAA,IAC1D,CAACT,QAAAA,MAAa,EAAE,SAAAA,QAAAA,EAAS,IAAA,EAAMS,YAAY,QAAA,EAAS;AAAA,GACtD;AAEA,EAAA,MAAM,cAAA,GAAiB,qBAAA,CAAsB,cAA2B,CAAA;AACxE,EAAA,OAAO,OAAO,MAAA,CAAO;AAAA,IACnB,QAAA,EAAU;AAAA,MACR,cAAA,CAAe,SAAS,UAAU,CAAA;AAAA,MAClC,cAAA,CAAe,SAAS,KAAK,CAAA;AAAA,MAC7B,cAAA,CAAe,SAAS,SAAS,CAAA;AAAA,MACjC,cAAA,CAAe,SAAS,sBAAsB,CAAA;AAAA,MAC9C,cAAA,CAAe,SAAS,SAAS,CAAA;AAAA,MACjC,cAAA,CAAe,SAAS,YAAY,CAAA;AAAA,MACpC,cAAA,CAAe,SAAS,UAAU,CAAA;AAAA,MAClC,cAAA,CAAe,SAAS,cAAc,CAAA;AAAA,MACtC,cAAA,CAAe,SAAS,iBAAiB,CAAA;AAAA,MACzC,cAAA,CAAe,SAAS,gBAAgB,CAAA;AAAA,MACxC,cAAA,CAAe,SAAS,UAAU,CAAA;AAAA,MAClC,cAAA,CAAe,SAAS,kBAAkB,CAAA;AAAA,MAC1C,cAAA,CAAe,SAAS,cAAc,CAAA;AAAA,MACtC,cAAA,CAAe,SAAS,aAAa,CAAA;AAAA,MACrC,GAAG;AAAA,KACL;AAAA,IACA,IAAA,EAAM,0CAAyC,CAAE,MAAA;AAAA,MAC/C;AAAA,KACF;AAAA,IACA;AAAA,GAiBD,CAAA;AACH;AAoCO,SAAS,gCAId,WAAA,EAG2D;AAC3D,EAAA,IAAI,WAAA,CAAY,QAAA,CAAS,MAAA,GAAS,EAAA,EAAI;AAEpC,IAAA,MAAM,IAAI,MAAM,qBAAqB,CAAA;AAAA,EACvC;AACA,EAAA,IAAI,YAAA,GAAe,CAAA;AACnB,EAAA,MAAM,iBAAiB,MAAM;AAC3B,IAAA,MAAM,WAAA,GAAe,WAAA,CAAY,QAAA,CAA2B,YAAY,CAAA;AACxE,IAAA,YAAA,IAAgB,CAAA;AAChB,IAAA,OAAO,WAAA;AAAA,EACT,CAAA;AACA,EAAA,MAAM,yBAAyB,MAAM;AACnC,IAAA,MAAM,cAAc,cAAA,EAAe;AACnC,IAAA,OAAO,WAAA,CAAY,OAAA,KAAY,6BAAA,GAC3B,MAAA,GACA,WAAA;AAAA,EACN,CAAA;AACA,EAAA,OAAO;AAAA,IACL,gBAAgB,WAAA,CAAY,cAAA;AAAA,IAC5B,QAAA,EAAU;AAAA,MACR,YAAY,cAAA,EAAe;AAAA,MAC3B,OAAO,cAAA,EAAe;AAAA,MACtB,WAAW,sBAAA,EAAuB;AAAA,MAClC,wBAAwB,sBAAA,EAAuB;AAAA,MAC/C,WAAW,cAAA,EAAe;AAAA,MAC1B,cAAc,sBAAA,EAAuB;AAAA,MACrC,YAAY,cAAA,EAAe;AAAA,MAC3B,gBAAgB,sBAAA,EAAuB;AAAA,MACvC,mBAAmB,sBAAA,EAAuB;AAAA,MAC1C,kBAAkB,cAAA,EAAe;AAAA,MACjC,YAAY,cAAA,EAAe;AAAA,MAC3B,oBAAoB,cAAA,EAAe;AAAA,MACnC,gBAAgB,cAAA,EAAe;AAAA,MAC/B,eAAe,cAAA;AAAe,KAChC;AAAA,IACA,IAAA,EAAM,wCAAA,EAAyC,CAAE,MAAA,CAAO,YAAY,IAAI;AAAA,GAC1E;AACF;ACtqBO,IAAM,sCAAA,GAAyC,IAAI,UAAA,CAAW;AAAA,EACnE,EAAA;AAAA,EAAI,GAAA;AAAA,EAAK,GAAA;AAAA,EAAK,CAAA;AAAA,EAAG,GAAA;AAAA,EAAK,GAAA;AAAA,EAAK,GAAA;AAAA,EAAK;AAClC,CAAC;AAEM,SAAS,2CAAA,GAA8C;AAC5D,EAAA,OAAOb,cAAAA,CAAeC,eAAAA,EAAgB,EAAG,CAAC,CAAA,CAAE,MAAA;AAAA,IAC1C;AAAA,GACF;AACF;AA+BO,SAAS,+CAAA,GAA+G;AAC7H,EAAA,OAAOpB,gBAAAA;AAAA,IACLV,gBAAAA,CAAiB;AAAA,MACf,CAAC,eAAA,EAAiB6B,cAAAA,CAAeC,eAAAA,EAAgB,EAAG,CAAC,CAAC,CAAA;AAAA,MACtD,CAAC,qBAAA,EAAuB,6BAAA,EAA+B;AAAA,KACxD,CAAA;AAAA,IACD,CAAC,KAAA,MAAW;AAAA,MACV,GAAG,KAAA;AAAA,MACH,aAAA,EAAe;AAAA,KACjB;AAAA,GACF;AACF;AAEO,SAAS,+CAAA,GAA2G;AACzH,EAAA,OAAO5B,gBAAAA,CAAiB;AAAA,IACtB,CAAC,eAAA,EAAiB6B,cAAAA,CAAeC,eAAAA,EAAgB,EAAG,CAAC,CAAC,CAAA;AAAA,IACtD,CAAC,qBAAA,EAAuB,6BAAA,EAA+B;AAAA,GACxD,CAAA;AACH;AAEO,SAAS,6CAAA,GAGd;AACA,EAAA,OAAOjC,YAAAA;AAAA,IACL,+CAAA,EAAgD;AAAA,IAChD,+CAAA;AAAgD,GAClD;AACF;AAWO,SAAS,oCAAA,CAKd,OACA,MAAA,EAKA;AAEA,EAAA,MAAM,cAAA,GACJ,QAAQ,cAAA,IAAkB,6BAAA;AAG5B,EAAA,MAAM,gBAAA,GAAmB;AAAA,IACvB,YAAY,EAAE,KAAA,EAAO,MAAM,UAAA,IAAc,IAAA,EAAM,YAAY,IAAA,EAAK;AAAA,IAChE,aAAa,EAAE,KAAA,EAAO,MAAM,WAAA,IAAe,IAAA,EAAM,YAAY,KAAA;AAAM,GACrE;AACA,EAAA,MAAM,QAAA,GAAW,gBAAA;AAMjB,EAAA,MAAM,IAAA,GAAO,EAAE,GAAG,KAAA,EAAM;AAExB,EAAA,MAAM,cAAA,GAAiB,qBAAA,CAAsB,cAA2B,CAAA;AACxE,EAAA,OAAO,OAAO,MAAA,CAAO;AAAA,IACnB,QAAA,EAAU;AAAA,MACR,cAAA,CAAe,SAAS,UAAU,CAAA;AAAA,MAClC,cAAA,CAAe,SAAS,WAAW;AAAA,KACrC;AAAA,IACA,IAAA,EAAM,iDAAgD,CAAE,MAAA;AAAA,MACtD;AAAA,KACF;AAAA,IACA;AAAA,GAKD,CAAA;AACH;AAcO,SAAS,uCAId,WAAA,EAGkE;AAClE,EAAA,IAAI,WAAA,CAAY,QAAA,CAAS,MAAA,GAAS,CAAA,EAAG;AAEnC,IAAA,MAAM,IAAI,MAAM,qBAAqB,CAAA;AAAA,EACvC;AACA,EAAA,IAAI,YAAA,GAAe,CAAA;AACnB,EAAA,MAAM,iBAAiB,MAAM;AAC3B,IAAA,MAAM,WAAA,GAAe,WAAA,CAAY,QAAA,CAA2B,YAAY,CAAA;AACxE,IAAA,YAAA,IAAgB,CAAA;AAChB,IAAA,OAAO,WAAA;AAAA,EACT,CAAA;AACA,EAAA,OAAO;AAAA,IACL,gBAAgB,WAAA,CAAY,cAAA;AAAA,IAC5B,UAAU,EAAE,UAAA,EAAY,gBAAe,EAAG,WAAA,EAAa,gBAAe,EAAE;AAAA,IACxE,IAAA,EAAM,iDAAgD,CAAE,MAAA;AAAA,MACtD,WAAA,CAAY;AAAA;AACd,GACF;AACF;ACpJO,IAAM,qCAAA,GAAwC,IAAI,UAAA,CAAW;AAAA,EAClE,GAAA;AAAA,EAAK,GAAA;AAAA,EAAK,GAAA;AAAA,EAAK,EAAA;AAAA,EAAI,GAAA;AAAA,EAAK,GAAA;AAAA,EAAK,GAAA;AAAA,EAAK;AACpC,CAAC;AAEM,SAAS,yCAAA,GAA4C;AAC1D,EAAA,OAAO8B,cAAAA,CAAeC,eAAAA,EAAgB,EAAG,CAAC,CAAA,CAAE,MAAA;AAAA,IAC1C;AAAA,GACF;AACF;AAkFO,SAAS,6CAAA,GAAkG;AAChH,EAAA,OAAOpB,gBAAAA;AAAA,IACLV,gBAAAA,CAAiB;AAAA,MACf,CAAC,eAAA,EAAiB6B,cAAAA,CAAeC,eAAAA,EAAgB,EAAG,CAAC,CAAC,CAAA;AAAA,MACtD,CAAC,MAAA,EAAQD,cAAAA,CAAeC,eAAAA,EAAgB,EAAG,EAAE,CAAC,CAAA;AAAA,MAC9C,CAAC,UAAA,EAAYD,cAAAA,CAAeC,eAAAA,EAAgB,EAAG,EAAE,CAAC,CAAA;AAAA,MAClD,CAAC,aAAA,EAAeD,cAAAA,CAAeC,eAAAA,EAAgB,EAAG,EAAE,CAAC,CAAA;AAAA,MACrD;AAAA,QACE,eAAA;AAAA,QACAhB,gBAAAA,CAAiBe,cAAAA,CAAeC,eAAAA,EAAgB,EAAG,EAAE,CAAC;AAAA,OACxD;AAAA,MACA,CAAC,OAAA,EAAShB,gBAAAA,CAAiBP,YAAAA,EAAc,CAAC,CAAA;AAAA,MAC1C,CAAC,OAAA,EAASD,aAAAA,EAAe,CAAA;AAAA,MACzB,CAAC,OAAA,EAASM,aAAAA,EAAe;AAAA,KAC1B,CAAA;AAAA,IACD,CAAC,KAAA,MAAW;AAAA,MACV,GAAG,KAAA;AAAA,MACH,aAAA,EAAe,qCAAA;AAAA,MACf,aAAA,EAAe,KAAA,CAAM,aAAA,IAAiBa,IAAAA,EAAK;AAAA,MAC3C,KAAA,EAAO,KAAA,CAAM,KAAA,IAASA,IAAAA;AAAK,KAC7B;AAAA,GACF;AACF;AAEO,SAAS,6CAAA,GAA8F;AAC5G,EAAA,OAAOvB,gBAAAA,CAAiB;AAAA,IACtB,CAAC,eAAA,EAAiB6B,cAAAA,CAAeC,eAAAA,EAAgB,EAAG,CAAC,CAAC,CAAA;AAAA,IACtD,CAAC,MAAA,EAAQD,cAAAA,CAAeC,eAAAA,EAAgB,EAAG,EAAE,CAAC,CAAA;AAAA,IAC9C,CAAC,UAAA,EAAYD,cAAAA,CAAeC,eAAAA,EAAgB,EAAG,EAAE,CAAC,CAAA;AAAA,IAClD,CAAC,aAAA,EAAeD,cAAAA,CAAeC,eAAAA,EAAgB,EAAG,EAAE,CAAC,CAAA;AAAA,IACrD,CAAC,iBAAiBX,gBAAAA,CAAiBU,cAAAA,CAAeC,iBAAgB,EAAG,EAAE,CAAC,CAAC,CAAA;AAAA,IACzE,CAAC,OAAA,EAASX,gBAAAA,CAAiBb,YAAAA,EAAc,CAAC,CAAA;AAAA,IAC1C,CAAC,OAAA,EAASmB,aAAAA,EAAe,CAAA;AAAA,IACzB,CAAC,OAAA,EAASR,aAAAA,EAAe;AAAA,GAC1B,CAAA;AACH;AAEO,SAAS,2CAAA,GAGd;AACA,EAAA,OAAOpB,YAAAA;AAAA,IACL,6CAAA,EAA8C;AAAA,IAC9C,6CAAA;AAA8C,GAChD;AACF;AAuCA,eAAsB,uCAAA,CAapB,OAYA,MAAA,EAeA;AAEA,EAAA,MAAM,cAAA,GACJ,QAAQ,cAAA,IAAkB,6BAAA;AAG5B,EAAA,MAAM,gBAAA,GAAmB;AAAA,IACvB,YAAY,EAAE,KAAA,EAAO,MAAM,UAAA,IAAc,IAAA,EAAM,YAAY,IAAA,EAAK;AAAA,IAChE,OAAO,EAAE,KAAA,EAAO,MAAM,KAAA,IAAS,IAAA,EAAM,YAAY,IAAA,EAAK;AAAA,IACtD,WAAW,EAAE,KAAA,EAAO,MAAM,SAAA,IAAa,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IAC/D,WAAW,EAAE,KAAA,EAAO,MAAM,SAAA,IAAa,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IAC/D,cAAc,EAAE,KAAA,EAAO,MAAM,YAAA,IAAgB,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IACrE,YAAY,EAAE,KAAA,EAAO,MAAM,UAAA,IAAc,IAAA,EAAM,YAAY,IAAA,EAAK;AAAA,IAChE,gBAAgB,EAAE,KAAA,EAAO,MAAM,cAAA,IAAkB,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IACzE,YAAY,EAAE,KAAA,EAAO,MAAM,UAAA,IAAc,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IACjE,kBAAA,EAAoB;AAAA,MAClB,KAAA,EAAO,MAAM,kBAAA,IAAsB,IAAA;AAAA,MACnC,UAAA,EAAY;AAAA,KACd;AAAA,IACA,eAAe,EAAE,KAAA,EAAO,MAAM,aAAA,IAAiB,IAAA,EAAM,YAAY,KAAA;AAAM,GACzE;AACA,EAAA,MAAM,QAAA,GAAW,gBAAA;AAMjB,EAAA,MAAM,IAAA,GAAO,EAAE,GAAG,KAAA,EAAM;AAGxB,EAAA,IAAI,CAAC,QAAA,CAAS,UAAA,CAAW,KAAA,EAAO;AAC9B,IAAA,QAAA,CAAS,UAAA,CAAW,KAAA,GAAQ,MAAM,iBAAA,CAAkB;AAAA,MAClD,UAAA,EAAY,aAAA,CAAc,QAAA,CAAS,UAAA,CAAW,KAAK;AAAA,KACpD,CAAA;AAAA,EACH;AACA,EAAA,IAAI,CAAC,QAAA,CAAS,UAAA,CAAW,KAAA,EAAO;AAC9B,IAAA,QAAA,CAAS,WAAW,KAAA,GAClB,6CAAA;AAAA,EACJ;AACA,EAAA,IAAI,CAAC,QAAA,CAAS,kBAAA,CAAmB,KAAA,EAAO;AACtC,IAAA,QAAA,CAAS,mBAAmB,KAAA,GAC1B,6CAAA;AAAA,EACJ;AACA,EAAA,IAAI,CAAC,QAAA,CAAS,aAAA,CAAc,KAAA,EAAO;AACjC,IAAA,QAAA,CAAS,cAAc,KAAA,GACrB,kCAAA;AAAA,EACJ;AAGA,EAAA,MAAM,iBAAA,GAAA,CAAoC,IAAA,CAAK,KAAA,IAAS,EAAC,EAAG,GAAA;AAAA,IAC1D,CAACkC,QAAAA,MAAa,EAAE,SAAAA,QAAAA,EAAS,IAAA,EAAMS,YAAY,QAAA,EAAS;AAAA,GACtD;AAEA,EAAA,MAAM,cAAA,GAAiB,qBAAA,CAAsB,cAA2B,CAAA;AACxE,EAAA,OAAO,OAAO,MAAA,CAAO;AAAA,IACnB,QAAA,EAAU;AAAA,MACR,cAAA,CAAe,SAAS,UAAU,CAAA;AAAA,MAClC,cAAA,CAAe,SAAS,KAAK,CAAA;AAAA,MAC7B,cAAA,CAAe,SAAS,SAAS,CAAA;AAAA,MACjC,cAAA,CAAe,SAAS,SAAS,CAAA;AAAA,MACjC,cAAA,CAAe,SAAS,YAAY,CAAA;AAAA,MACpC,cAAA,CAAe,SAAS,UAAU,CAAA;AAAA,MAClC,cAAA,CAAe,SAAS,cAAc,CAAA;AAAA,MACtC,cAAA,CAAe,SAAS,UAAU,CAAA;AAAA,MAClC,cAAA,CAAe,SAAS,kBAAkB,CAAA;AAAA,MAC1C,cAAA,CAAe,SAAS,aAAa,CAAA;AAAA,MACrC,GAAG;AAAA,KACL;AAAA,IACA,IAAA,EAAM,+CAA8C,CAAE,MAAA;AAAA,MACpD;AAAA,KACF;AAAA,IACA;AAAA,GAaD,CAAA;AACH;AAuCO,SAAS,kCAAA,CAad,OAYA,MAAA,EAaA;AAEA,EAAA,MAAM,cAAA,GACJ,QAAQ,cAAA,IAAkB,6BAAA;AAG5B,EAAA,MAAM,gBAAA,GAAmB;AAAA,IACvB,YAAY,EAAE,KAAA,EAAO,MAAM,UAAA,IAAc,IAAA,EAAM,YAAY,IAAA,EAAK;AAAA,IAChE,OAAO,EAAE,KAAA,EAAO,MAAM,KAAA,IAAS,IAAA,EAAM,YAAY,IAAA,EAAK;AAAA,IACtD,WAAW,EAAE,KAAA,EAAO,MAAM,SAAA,IAAa,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IAC/D,WAAW,EAAE,KAAA,EAAO,MAAM,SAAA,IAAa,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IAC/D,cAAc,EAAE,KAAA,EAAO,MAAM,YAAA,IAAgB,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IACrE,YAAY,EAAE,KAAA,EAAO,MAAM,UAAA,IAAc,IAAA,EAAM,YAAY,IAAA,EAAK;AAAA,IAChE,gBAAgB,EAAE,KAAA,EAAO,MAAM,cAAA,IAAkB,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IACzE,YAAY,EAAE,KAAA,EAAO,MAAM,UAAA,IAAc,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IACjE,kBAAA,EAAoB;AAAA,MAClB,KAAA,EAAO,MAAM,kBAAA,IAAsB,IAAA;AAAA,MACnC,UAAA,EAAY;AAAA,KACd;AAAA,IACA,eAAe,EAAE,KAAA,EAAO,MAAM,aAAA,IAAiB,IAAA,EAAM,YAAY,KAAA;AAAM,GACzE;AACA,EAAA,MAAM,QAAA,GAAW,gBAAA;AAMjB,EAAA,MAAM,IAAA,GAAO,EAAE,GAAG,KAAA,EAAM;AAGxB,EAAA,IAAI,CAAC,QAAA,CAAS,UAAA,CAAW,KAAA,EAAO;AAC9B,IAAA,QAAA,CAAS,WAAW,KAAA,GAClB,6CAAA;AAAA,EACJ;AACA,EAAA,IAAI,CAAC,QAAA,CAAS,kBAAA,CAAmB,KAAA,EAAO;AACtC,IAAA,QAAA,CAAS,mBAAmB,KAAA,GAC1B,6CAAA;AAAA,EACJ;AACA,EAAA,IAAI,CAAC,QAAA,CAAS,aAAA,CAAc,KAAA,EAAO;AACjC,IAAA,QAAA,CAAS,cAAc,KAAA,GACrB,kCAAA;AAAA,EACJ;AAGA,EAAA,MAAM,iBAAA,GAAA,CAAoC,IAAA,CAAK,KAAA,IAAS,EAAC,EAAG,GAAA;AAAA,IAC1D,CAACT,QAAAA,MAAa,EAAE,SAAAA,QAAAA,EAAS,IAAA,EAAMS,YAAY,QAAA,EAAS;AAAA,GACtD;AAEA,EAAA,MAAM,cAAA,GAAiB,qBAAA,CAAsB,cAA2B,CAAA;AACxE,EAAA,OAAO,OAAO,MAAA,CAAO;AAAA,IACnB,QAAA,EAAU;AAAA,MACR,cAAA,CAAe,SAAS,UAAU,CAAA;AAAA,MAClC,cAAA,CAAe,SAAS,KAAK,CAAA;AAAA,MAC7B,cAAA,CAAe,SAAS,SAAS,CAAA;AAAA,MACjC,cAAA,CAAe,SAAS,SAAS,CAAA;AAAA,MACjC,cAAA,CAAe,SAAS,YAAY,CAAA;AAAA,MACpC,cAAA,CAAe,SAAS,UAAU,CAAA;AAAA,MAClC,cAAA,CAAe,SAAS,cAAc,CAAA;AAAA,MACtC,cAAA,CAAe,SAAS,UAAU,CAAA;AAAA,MAClC,cAAA,CAAe,SAAS,kBAAkB,CAAA;AAAA,MAC1C,cAAA,CAAe,SAAS,aAAa,CAAA;AAAA,MACrC,GAAG;AAAA,KACL;AAAA,IACA,IAAA,EAAM,+CAA8C,CAAE,MAAA;AAAA,MACpD;AAAA,KACF;AAAA,IACA;AAAA,GAaD,CAAA;AACH;AA2BO,SAAS,qCAId,WAAA,EAGgE;AAChE,EAAA,IAAI,WAAA,CAAY,QAAA,CAAS,MAAA,GAAS,EAAA,EAAI;AAEpC,IAAA,MAAM,IAAI,MAAM,qBAAqB,CAAA;AAAA,EACvC;AACA,EAAA,IAAI,YAAA,GAAe,CAAA;AACnB,EAAA,MAAM,iBAAiB,MAAM;AAC3B,IAAA,MAAM,WAAA,GAAe,WAAA,CAAY,QAAA,CAA2B,YAAY,CAAA;AACxE,IAAA,YAAA,IAAgB,CAAA;AAChB,IAAA,OAAO,WAAA;AAAA,EACT,CAAA;AACA,EAAA,MAAM,yBAAyB,MAAM;AACnC,IAAA,MAAM,cAAc,cAAA,EAAe;AACnC,IAAA,OAAO,WAAA,CAAY,OAAA,KAAY,6BAAA,GAC3B,MAAA,GACA,WAAA;AAAA,EACN,CAAA;AACA,EAAA,OAAO;AAAA,IACL,gBAAgB,WAAA,CAAY,cAAA;AAAA,IAC5B,QAAA,EAAU;AAAA,MACR,YAAY,cAAA,EAAe;AAAA,MAC3B,OAAO,cAAA,EAAe;AAAA,MACtB,WAAW,sBAAA,EAAuB;AAAA,MAClC,WAAW,cAAA,EAAe;AAAA,MAC1B,cAAc,sBAAA,EAAuB;AAAA,MACrC,YAAY,cAAA,EAAe;AAAA,MAC3B,gBAAgB,cAAA,EAAe;AAAA,MAC/B,YAAY,cAAA,EAAe;AAAA,MAC3B,oBAAoB,cAAA,EAAe;AAAA,MACnC,eAAe,cAAA;AAAe,KAChC;AAAA,IACA,IAAA,EAAM,+CAA8C,CAAE,MAAA;AAAA,MACpD,WAAA,CAAY;AAAA;AACd,GACF;AACF;AC1hBO,IAAM,+BAAA,GAAkC,IAAI,UAAA,CAAW;AAAA,EAC5D,GAAA;AAAA,EAAK,GAAA;AAAA,EAAK,EAAA;AAAA,EAAI,EAAA;AAAA,EAAI,GAAA;AAAA,EAAK,EAAA;AAAA,EAAI,GAAA;AAAA,EAAK;AAClC,CAAC;AAEM,SAAS,oCAAA,GAAuC;AACrD,EAAA,OAAOb,cAAAA,CAAeC,eAAAA,EAAgB,EAAG,CAAC,CAAA,CAAE,MAAA;AAAA,IAC1C;AAAA,GACF;AACF;AA0CO,SAAS,wCAAA,GAAiG;AAC/G,EAAA,OAAOpB,gBAAAA;AAAA,IACLV,gBAAAA,CAAiB,CAAC,CAAC,eAAA,EAAiB6B,cAAAA,CAAeC,iBAAgB,EAAG,CAAC,CAAC,CAAC,CAAC,CAAA;AAAA,IAC1E,CAAC,KAAA,MAAW,EAAE,GAAG,KAAA,EAAO,eAAe,+BAAA,EAAgC;AAAA,GACzE;AACF;AAEO,SAAS,wCAAA,GAA6F;AAC3G,EAAA,OAAO5B,gBAAAA,CAAiB;AAAA,IACtB,CAAC,eAAA,EAAiB6B,cAAAA,CAAeC,eAAAA,EAAgB,EAAG,CAAC,CAAC;AAAA,GACvD,CAAA;AACH;AAEO,SAAS,sCAAA,GAGd;AACA,EAAA,OAAOjC,YAAAA;AAAA,IACL,wCAAA,EAAyC;AAAA,IACzC,wCAAA;AAAyC,GAC3C;AACF;AAgBA,eAAsB,kCAAA,CAQpB,OAOA,MAAA,EAUA;AAEA,EAAA,MAAM,cAAA,GACJ,QAAQ,cAAA,IAAkB,6BAAA;AAG5B,EAAA,MAAM,gBAAA,GAAmB;AAAA,IACvB,YAAY,EAAE,KAAA,EAAO,MAAM,UAAA,IAAc,IAAA,EAAM,YAAY,IAAA,EAAK;AAAA,IAChE,aAAa,EAAE,KAAA,EAAO,MAAM,WAAA,IAAe,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IACnE,eAAA,EAAiB;AAAA,MACf,KAAA,EAAO,MAAM,eAAA,IAAmB,IAAA;AAAA,MAChC,UAAA,EAAY;AAAA,KACd;AAAA,IACA,YAAY,EAAE,KAAA,EAAO,MAAM,UAAA,IAAc,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IACjE,eAAe,EAAE,KAAA,EAAO,MAAM,aAAA,IAAiB,IAAA,EAAM,YAAY,KAAA;AAAM,GACzE;AACA,EAAA,MAAM,QAAA,GAAW,gBAAA;AAMjB,EAAA,IAAI,CAAC,QAAA,CAAS,UAAA,CAAW,KAAA,EAAO;AAC9B,IAAA,QAAA,CAAS,UAAA,CAAW,KAAA,GAAQ,MAAM,iBAAA,CAAkB;AAAA,MAClD,UAAA,EAAY,aAAA,CAAc,QAAA,CAAS,UAAA,CAAW,KAAK;AAAA,KACpD,CAAA;AAAA,EACH;AACA,EAAA,IAAI,CAAC,QAAA,CAAS,aAAA,CAAc,KAAA,EAAO;AACjC,IAAA,QAAA,CAAS,cAAc,KAAA,GACrB,kCAAA;AAAA,EACJ;AAEA,EAAA,MAAM,cAAA,GAAiB,qBAAA,CAAsB,cAA2B,CAAA;AACxE,EAAA,OAAO,OAAO,MAAA,CAAO;AAAA,IACnB,QAAA,EAAU;AAAA,MACR,cAAA,CAAe,SAAS,UAAU,CAAA;AAAA,MAClC,cAAA,CAAe,SAAS,WAAW,CAAA;AAAA,MACnC,cAAA,CAAe,SAAS,eAAe,CAAA;AAAA,MACvC,cAAA,CAAe,SAAS,UAAU,CAAA;AAAA,MAClC,cAAA,CAAe,SAAS,aAAa;AAAA,KACvC;AAAA,IACA,IAAA,EAAM,wCAAA,EAAyC,CAAE,MAAA,CAAO,EAAE,CAAA;AAAA,IAC1D;AAAA,GAQD,CAAA;AACH;AAgBO,SAAS,6BAAA,CAQd,OAOA,MAAA,EAQA;AAEA,EAAA,MAAM,cAAA,GACJ,QAAQ,cAAA,IAAkB,6BAAA;AAG5B,EAAA,MAAM,gBAAA,GAAmB;AAAA,IACvB,YAAY,EAAE,KAAA,EAAO,MAAM,UAAA,IAAc,IAAA,EAAM,YAAY,IAAA,EAAK;AAAA,IAChE,aAAa,EAAE,KAAA,EAAO,MAAM,WAAA,IAAe,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IACnE,eAAA,EAAiB;AAAA,MACf,KAAA,EAAO,MAAM,eAAA,IAAmB,IAAA;AAAA,MAChC,UAAA,EAAY;AAAA,KACd;AAAA,IACA,YAAY,EAAE,KAAA,EAAO,MAAM,UAAA,IAAc,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IACjE,eAAe,EAAE,KAAA,EAAO,MAAM,aAAA,IAAiB,IAAA,EAAM,YAAY,KAAA;AAAM,GACzE;AACA,EAAA,MAAM,QAAA,GAAW,gBAAA;AAMjB,EAAA,IAAI,CAAC,QAAA,CAAS,aAAA,CAAc,KAAA,EAAO;AACjC,IAAA,QAAA,CAAS,cAAc,KAAA,GACrB,kCAAA;AAAA,EACJ;AAEA,EAAA,MAAM,cAAA,GAAiB,qBAAA,CAAsB,cAA2B,CAAA;AACxE,EAAA,OAAO,OAAO,MAAA,CAAO;AAAA,IACnB,QAAA,EAAU;AAAA,MACR,cAAA,CAAe,SAAS,UAAU,CAAA;AAAA,MAClC,cAAA,CAAe,SAAS,WAAW,CAAA;AAAA,MACnC,cAAA,CAAe,SAAS,eAAe,CAAA;AAAA,MACvC,cAAA,CAAe,SAAS,UAAU,CAAA;AAAA,MAClC,cAAA,CAAe,SAAS,aAAa;AAAA,KACvC;AAAA,IACA,IAAA,EAAM,wCAAA,EAAyC,CAAE,MAAA,CAAO,EAAE,CAAA;AAAA,IAC1D;AAAA,GAQD,CAAA;AACH;AAiBO,SAAS,gCAId,WAAA,EAG2D;AAC3D,EAAA,IAAI,WAAA,CAAY,QAAA,CAAS,MAAA,GAAS,CAAA,EAAG;AAEnC,IAAA,MAAM,IAAI,MAAM,qBAAqB,CAAA;AAAA,EACvC;AACA,EAAA,IAAI,YAAA,GAAe,CAAA;AACnB,EAAA,MAAM,iBAAiB,MAAM;AAC3B,IAAA,MAAM,WAAA,GAAe,WAAA,CAAY,QAAA,CAA2B,YAAY,CAAA;AACxE,IAAA,YAAA,IAAgB,CAAA;AAChB,IAAA,OAAO,WAAA;AAAA,EACT,CAAA;AACA,EAAA,OAAO;AAAA,IACL,gBAAgB,WAAA,CAAY,cAAA;AAAA,IAC5B,QAAA,EAAU;AAAA,MACR,YAAY,cAAA,EAAe;AAAA,MAC3B,aAAa,cAAA,EAAe;AAAA,MAC5B,iBAAiB,cAAA,EAAe;AAAA,MAChC,YAAY,cAAA,EAAe;AAAA,MAC3B,eAAe,cAAA;AAAe,KAChC;AAAA,IACA,IAAA,EAAM,wCAAA,EAAyC,CAAE,MAAA,CAAO,YAAY,IAAI;AAAA,GAC1E;AACF;ACzRO,IAAM,gCAAA,GAAmC,IAAI,UAAA,CAAW;AAAA,EAC7D,EAAA;AAAA,EAAI,GAAA;AAAA,EAAK,GAAA;AAAA,EAAK,EAAA;AAAA,EAAI,GAAA;AAAA,EAAK,CAAA;AAAA,EAAG,EAAA;AAAA,EAAI;AAChC,CAAC;AAEM,SAAS,oCAAA,GAAuC;AACrD,EAAA,OAAO8B,cAAAA,CAAeC,eAAAA,EAAgB,EAAG,CAAC,CAAA,CAAE,MAAA;AAAA,IAC1C;AAAA,GACF;AACF;AA4EO,SAAS,wCAAA,GAAwF;AACtG,EAAA,OAAOpB,gBAAAA;AAAA,IACLV,gBAAAA,CAAiB;AAAA,MACf,CAAC,eAAA,EAAiB6B,cAAAA,CAAeC,eAAAA,EAAgB,EAAG,CAAC,CAAC,CAAA;AAAA,MACtD,CAAC,MAAA,EAAQD,cAAAA,CAAeC,eAAAA,EAAgB,EAAG,EAAE,CAAC,CAAA;AAAA,MAC9C,CAAC,UAAA,EAAYD,cAAAA,CAAeC,eAAAA,EAAgB,EAAG,EAAE,CAAC,CAAA;AAAA,MAClD,CAAC,aAAA,EAAeD,cAAAA,CAAeC,eAAAA,EAAgB,EAAG,EAAE,CAAC,CAAA;AAAA,MACrD;AAAA,QACE,gBAAA;AAAA,QACAhB,gBAAAA,CAAiBe,cAAAA,CAAeC,eAAAA,EAAgB,EAAG,EAAE,CAAC;AAAA,OACxD;AAAA,MACA;AAAA,QACE,eAAA;AAAA,QACAhB,gBAAAA,CAAiBe,cAAAA,CAAeC,eAAAA,EAAgB,EAAG,EAAE,CAAC;AAAA,OACxD;AAAA,MACA,CAAC,OAAA,EAAShB,gBAAAA,CAAiBP,YAAAA,EAAc,CAAC,CAAA;AAAA,MAC1C,CAAC,OAAA,EAASD,aAAAA,EAAe,CAAA;AAAA,MACzB,CAAC,OAAA,EAASM,aAAAA,EAAe;AAAA,KAC1B,CAAA;AAAA,IACD,CAAC,KAAA,MAAW;AAAA,MACV,GAAG,KAAA;AAAA,MACH,aAAA,EAAe,gCAAA;AAAA,MACf,cAAA,EAAgB,KAAA,CAAM,cAAA,IAAkBa,IAAAA,EAAK;AAAA,MAC7C,aAAA,EAAe,KAAA,CAAM,aAAA,IAAiBA,IAAAA,EAAK;AAAA,MAC3C,KAAA,EAAO,KAAA,CAAM,KAAA,IAASA,IAAAA;AAAK,KAC7B;AAAA,GACF;AACF;AAEO,SAAS,wCAAA,GAAoF;AAClG,EAAA,OAAOvB,gBAAAA,CAAiB;AAAA,IACtB,CAAC,eAAA,EAAiB6B,cAAAA,CAAeC,eAAAA,EAAgB,EAAG,CAAC,CAAC,CAAA;AAAA,IACtD,CAAC,MAAA,EAAQD,cAAAA,CAAeC,eAAAA,EAAgB,EAAG,EAAE,CAAC,CAAA;AAAA,IAC9C,CAAC,UAAA,EAAYD,cAAAA,CAAeC,eAAAA,EAAgB,EAAG,EAAE,CAAC,CAAA;AAAA,IAClD,CAAC,aAAA,EAAeD,cAAAA,CAAeC,eAAAA,EAAgB,EAAG,EAAE,CAAC,CAAA;AAAA,IACrD,CAAC,kBAAkBX,gBAAAA,CAAiBU,cAAAA,CAAeC,iBAAgB,EAAG,EAAE,CAAC,CAAC,CAAA;AAAA,IAC1E,CAAC,iBAAiBX,gBAAAA,CAAiBU,cAAAA,CAAeC,iBAAgB,EAAG,EAAE,CAAC,CAAC,CAAA;AAAA,IACzE,CAAC,OAAA,EAASX,gBAAAA,CAAiBb,YAAAA,EAAc,CAAC,CAAA;AAAA,IAC1C,CAAC,OAAA,EAASmB,aAAAA,EAAe,CAAA;AAAA,IACzB,CAAC,OAAA,EAASR,aAAAA,EAAe;AAAA,GAC1B,CAAA;AACH;AAEO,SAAS,sCAAA,GAGd;AACA,EAAA,OAAOpB,YAAAA;AAAA,IACL,wCAAA,EAAyC;AAAA,IACzC,wCAAA;AAAyC,GAC3C;AACF;AAgCA,eAAsB,kCAAA,CAWpB,OAUA,MAAA,EAaA;AAEA,EAAA,MAAM,cAAA,GACJ,QAAQ,cAAA,IAAkB,6BAAA;AAG5B,EAAA,MAAM,gBAAA,GAAmB;AAAA,IACvB,YAAY,EAAE,KAAA,EAAO,MAAM,UAAA,IAAc,IAAA,EAAM,YAAY,IAAA,EAAK;AAAA,IAChE,OAAO,EAAE,KAAA,EAAO,MAAM,KAAA,IAAS,IAAA,EAAM,YAAY,IAAA,EAAK;AAAA,IACtD,cAAc,EAAE,KAAA,EAAO,MAAM,YAAA,IAAgB,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IACrE,WAAW,EAAE,KAAA,EAAO,MAAM,SAAA,IAAa,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IAC/D,YAAY,EAAE,KAAA,EAAO,MAAM,UAAA,IAAc,IAAA,EAAM,YAAY,IAAA,EAAK;AAAA,IAChE,YAAY,EAAE,KAAA,EAAO,MAAM,UAAA,IAAc,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IACjE,kBAAA,EAAoB;AAAA,MAClB,KAAA,EAAO,MAAM,kBAAA,IAAsB,IAAA;AAAA,MACnC,UAAA,EAAY;AAAA,KACd;AAAA,IACA,eAAe,EAAE,KAAA,EAAO,MAAM,aAAA,IAAiB,IAAA,EAAM,YAAY,KAAA;AAAM,GACzE;AACA,EAAA,MAAM,QAAA,GAAW,gBAAA;AAMjB,EAAA,MAAM,IAAA,GAAO,EAAE,GAAG,KAAA,EAAM;AAGxB,EAAA,IAAI,CAAC,QAAA,CAAS,UAAA,CAAW,KAAA,EAAO;AAC9B,IAAA,QAAA,CAAS,UAAA,CAAW,KAAA,GAAQ,MAAM,iBAAA,CAAkB;AAAA,MAClD,UAAA,EAAY,aAAA,CAAc,QAAA,CAAS,UAAA,CAAW,KAAK;AAAA,KACpD,CAAA;AAAA,EACH;AACA,EAAA,IAAI,CAAC,QAAA,CAAS,UAAA,CAAW,KAAA,EAAO;AAC9B,IAAA,QAAA,CAAS,WAAW,KAAA,GAClB,6CAAA;AAAA,EACJ;AACA,EAAA,IAAI,CAAC,QAAA,CAAS,kBAAA,CAAmB,KAAA,EAAO;AACtC,IAAA,QAAA,CAAS,mBAAmB,KAAA,GAC1B,6CAAA;AAAA,EACJ;AACA,EAAA,IAAI,CAAC,QAAA,CAAS,aAAA,CAAc,KAAA,EAAO;AACjC,IAAA,QAAA,CAAS,cAAc,KAAA,GACrB,kCAAA;AAAA,EACJ;AAGA,EAAA,MAAM,iBAAA,GAAA,CAAoC,IAAA,CAAK,KAAA,IAAS,EAAC,EAAG,GAAA;AAAA,IAC1D,CAACkC,QAAAA,MAAa,EAAE,SAAAA,QAAAA,EAAS,IAAA,EAAMS,YAAY,QAAA,EAAS;AAAA,GACtD;AAEA,EAAA,MAAM,cAAA,GAAiB,qBAAA,CAAsB,cAA2B,CAAA;AACxE,EAAA,OAAO,OAAO,MAAA,CAAO;AAAA,IACnB,QAAA,EAAU;AAAA,MACR,cAAA,CAAe,SAAS,UAAU,CAAA;AAAA,MAClC,cAAA,CAAe,SAAS,KAAK,CAAA;AAAA,MAC7B,cAAA,CAAe,SAAS,YAAY,CAAA;AAAA,MACpC,cAAA,CAAe,SAAS,SAAS,CAAA;AAAA,MACjC,cAAA,CAAe,SAAS,UAAU,CAAA;AAAA,MAClC,cAAA,CAAe,SAAS,UAAU,CAAA;AAAA,MAClC,cAAA,CAAe,SAAS,kBAAkB,CAAA;AAAA,MAC1C,cAAA,CAAe,SAAS,aAAa,CAAA;AAAA,MACrC,GAAG;AAAA,KACL;AAAA,IACA,IAAA,EAAM,0CAAyC,CAAE,MAAA;AAAA,MAC/C;AAAA,KACF;AAAA,IACA;AAAA,GAWD,CAAA;AACH;AAgCO,SAAS,6BAAA,CAWd,OAUA,MAAA,EAWA;AAEA,EAAA,MAAM,cAAA,GACJ,QAAQ,cAAA,IAAkB,6BAAA;AAG5B,EAAA,MAAM,gBAAA,GAAmB;AAAA,IACvB,YAAY,EAAE,KAAA,EAAO,MAAM,UAAA,IAAc,IAAA,EAAM,YAAY,IAAA,EAAK;AAAA,IAChE,OAAO,EAAE,KAAA,EAAO,MAAM,KAAA,IAAS,IAAA,EAAM,YAAY,IAAA,EAAK;AAAA,IACtD,cAAc,EAAE,KAAA,EAAO,MAAM,YAAA,IAAgB,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IACrE,WAAW,EAAE,KAAA,EAAO,MAAM,SAAA,IAAa,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IAC/D,YAAY,EAAE,KAAA,EAAO,MAAM,UAAA,IAAc,IAAA,EAAM,YAAY,IAAA,EAAK;AAAA,IAChE,YAAY,EAAE,KAAA,EAAO,MAAM,UAAA,IAAc,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IACjE,kBAAA,EAAoB;AAAA,MAClB,KAAA,EAAO,MAAM,kBAAA,IAAsB,IAAA;AAAA,MACnC,UAAA,EAAY;AAAA,KACd;AAAA,IACA,eAAe,EAAE,KAAA,EAAO,MAAM,aAAA,IAAiB,IAAA,EAAM,YAAY,KAAA;AAAM,GACzE;AACA,EAAA,MAAM,QAAA,GAAW,gBAAA;AAMjB,EAAA,MAAM,IAAA,GAAO,EAAE,GAAG,KAAA,EAAM;AAGxB,EAAA,IAAI,CAAC,QAAA,CAAS,UAAA,CAAW,KAAA,EAAO;AAC9B,IAAA,QAAA,CAAS,WAAW,KAAA,GAClB,6CAAA;AAAA,EACJ;AACA,EAAA,IAAI,CAAC,QAAA,CAAS,kBAAA,CAAmB,KAAA,EAAO;AACtC,IAAA,QAAA,CAAS,mBAAmB,KAAA,GAC1B,6CAAA;AAAA,EACJ;AACA,EAAA,IAAI,CAAC,QAAA,CAAS,aAAA,CAAc,KAAA,EAAO;AACjC,IAAA,QAAA,CAAS,cAAc,KAAA,GACrB,kCAAA;AAAA,EACJ;AAGA,EAAA,MAAM,iBAAA,GAAA,CAAoC,IAAA,CAAK,KAAA,IAAS,EAAC,EAAG,GAAA;AAAA,IAC1D,CAACT,QAAAA,MAAa,EAAE,SAAAA,QAAAA,EAAS,IAAA,EAAMS,YAAY,QAAA,EAAS;AAAA,GACtD;AAEA,EAAA,MAAM,cAAA,GAAiB,qBAAA,CAAsB,cAA2B,CAAA;AACxE,EAAA,OAAO,OAAO,MAAA,CAAO;AAAA,IACnB,QAAA,EAAU;AAAA,MACR,cAAA,CAAe,SAAS,UAAU,CAAA;AAAA,MAClC,cAAA,CAAe,SAAS,KAAK,CAAA;AAAA,MAC7B,cAAA,CAAe,SAAS,YAAY,CAAA;AAAA,MACpC,cAAA,CAAe,SAAS,SAAS,CAAA;AAAA,MACjC,cAAA,CAAe,SAAS,UAAU,CAAA;AAAA,MAClC,cAAA,CAAe,SAAS,UAAU,CAAA;AAAA,MAClC,cAAA,CAAe,SAAS,kBAAkB,CAAA;AAAA,MAC1C,cAAA,CAAe,SAAS,aAAa,CAAA;AAAA,MACrC,GAAG;AAAA,KACL;AAAA,IACA,IAAA,EAAM,0CAAyC,CAAE,MAAA;AAAA,MAC/C;AAAA,KACF;AAAA,IACA;AAAA,GAWD,CAAA;AACH;AAqBO,SAAS,gCAId,WAAA,EAG2D;AAC3D,EAAA,IAAI,WAAA,CAAY,QAAA,CAAS,MAAA,GAAS,CAAA,EAAG;AAEnC,IAAA,MAAM,IAAI,MAAM,qBAAqB,CAAA;AAAA,EACvC;AACA,EAAA,IAAI,YAAA,GAAe,CAAA;AACnB,EAAA,MAAM,iBAAiB,MAAM;AAC3B,IAAA,MAAM,WAAA,GAAe,WAAA,CAAY,QAAA,CAA2B,YAAY,CAAA;AACxE,IAAA,YAAA,IAAgB,CAAA;AAChB,IAAA,OAAO,WAAA;AAAA,EACT,CAAA;AACA,EAAA,MAAM,yBAAyB,MAAM;AACnC,IAAA,MAAM,cAAc,cAAA,EAAe;AACnC,IAAA,OAAO,WAAA,CAAY,OAAA,KAAY,6BAAA,GAC3B,MAAA,GACA,WAAA;AAAA,EACN,CAAA;AACA,EAAA,OAAO;AAAA,IACL,gBAAgB,WAAA,CAAY,cAAA;AAAA,IAC5B,QAAA,EAAU;AAAA,MACR,YAAY,cAAA,EAAe;AAAA,MAC3B,OAAO,cAAA,EAAe;AAAA,MACtB,cAAc,sBAAA,EAAuB;AAAA,MACrC,WAAW,cAAA,EAAe;AAAA,MAC1B,YAAY,cAAA,EAAe;AAAA,MAC3B,YAAY,cAAA,EAAe;AAAA,MAC3B,oBAAoB,cAAA,EAAe;AAAA,MACnC,eAAe,cAAA;AAAe,KAChC;AAAA,IACA,IAAA,EAAM,wCAAA,EAAyC,CAAE,MAAA,CAAO,YAAY,IAAI;AAAA,GAC1E;AACF;AC7dO,IAAM,qBAAA,GAAwB,IAAI,UAAA,CAAW;AAAA,EAClD,EAAA;AAAA,EAAI,GAAA;AAAA,EAAK,GAAA;AAAA,EAAK,EAAA;AAAA,EAAI,EAAA;AAAA,EAAI,GAAA;AAAA,EAAK,GAAA;AAAA,EAAK;AAClC,CAAC;AAEM,SAAS,2BAAA,GAA8B;AAC5C,EAAA,OAAOb,eAAeC,eAAAA,EAAgB,EAAG,CAAC,CAAA,CAAE,OAAO,qBAAqB,CAAA;AAC1E;AAkFO,SAAS,+BAAA,GAAsE;AACpF,EAAA,OAAOpB,gBAAAA;AAAA,IACLV,gBAAAA,CAAiB;AAAA,MACf,CAAC,eAAA,EAAiB6B,cAAAA,CAAeC,eAAAA,EAAgB,EAAG,CAAC,CAAC,CAAA;AAAA,MACtD,CAAC,MAAA,EAAQD,cAAAA,CAAeC,eAAAA,EAAgB,EAAG,EAAE,CAAC,CAAA;AAAA,MAC9C,CAAC,UAAA,EAAYD,cAAAA,CAAeC,eAAAA,EAAgB,EAAG,EAAE,CAAC,CAAA;AAAA,MAClD,CAAC,aAAA,EAAeD,cAAAA,CAAeC,eAAAA,EAAgB,EAAG,EAAE,CAAC,CAAA;AAAA,MACrD;AAAA,QACE,eAAA;AAAA,QACAhB,gBAAAA,CAAiBe,cAAAA,CAAeC,eAAAA,EAAgB,EAAG,EAAE,CAAC;AAAA,OACxD;AAAA,MACA,CAAC,OAAA,EAAShB,gBAAAA,CAAiBP,YAAAA,EAAc,CAAC,CAAA;AAAA,MAC1C,CAAC,OAAA,EAASD,aAAAA,EAAe,CAAA;AAAA,MACzB,CAAC,OAAA,EAASM,aAAAA,EAAe;AAAA,KAC1B,CAAA;AAAA,IACD,CAAC,KAAA,MAAW;AAAA,MACV,GAAG,KAAA;AAAA,MACH,aAAA,EAAe,qBAAA;AAAA,MACf,aAAA,EAAe,KAAA,CAAM,aAAA,IAAiBa,IAAAA,EAAK;AAAA,MAC3C,KAAA,EAAO,KAAA,CAAM,KAAA,IAASA,IAAAA;AAAK,KAC7B;AAAA,GACF;AACF;AAEO,SAAS,+BAAA,GAAkE;AAChF,EAAA,OAAOvB,gBAAAA,CAAiB;AAAA,IACtB,CAAC,eAAA,EAAiB6B,cAAAA,CAAeC,eAAAA,EAAgB,EAAG,CAAC,CAAC,CAAA;AAAA,IACtD,CAAC,MAAA,EAAQD,cAAAA,CAAeC,eAAAA,EAAgB,EAAG,EAAE,CAAC,CAAA;AAAA,IAC9C,CAAC,UAAA,EAAYD,cAAAA,CAAeC,eAAAA,EAAgB,EAAG,EAAE,CAAC,CAAA;AAAA,IAClD,CAAC,aAAA,EAAeD,cAAAA,CAAeC,eAAAA,EAAgB,EAAG,EAAE,CAAC,CAAA;AAAA,IACrD,CAAC,iBAAiBX,gBAAAA,CAAiBU,cAAAA,CAAeC,iBAAgB,EAAG,EAAE,CAAC,CAAC,CAAA;AAAA,IACzE,CAAC,OAAA,EAASX,gBAAAA,CAAiBb,YAAAA,EAAc,CAAC,CAAA;AAAA,IAC1C,CAAC,OAAA,EAASmB,aAAAA,EAAe,CAAA;AAAA,IACzB,CAAC,OAAA,EAASR,aAAAA,EAAe;AAAA,GAC1B,CAAA;AACH;AAEO,SAAS,6BAAA,GAGd;AACA,EAAA,OAAOpB,YAAAA;AAAA,IACL,+BAAA,EAAgC;AAAA,IAChC,+BAAA;AAAgC,GAClC;AACF;AAsCA,eAAsB,yBAAA,CAapB,OAYA,MAAA,EAeA;AAEA,EAAA,MAAM,cAAA,GACJ,QAAQ,cAAA,IAAkB,6BAAA;AAG5B,EAAA,MAAM,gBAAA,GAAmB;AAAA,IACvB,YAAY,EAAE,KAAA,EAAO,MAAM,UAAA,IAAc,IAAA,EAAM,YAAY,IAAA,EAAK;AAAA,IAChE,OAAO,EAAE,KAAA,EAAO,MAAM,KAAA,IAAS,IAAA,EAAM,YAAY,IAAA,EAAK;AAAA,IACtD,WAAW,EAAE,KAAA,EAAO,MAAM,SAAA,IAAa,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IAC/D,WAAW,EAAE,KAAA,EAAO,MAAM,SAAA,IAAa,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IAC/D,cAAc,EAAE,KAAA,EAAO,MAAM,YAAA,IAAgB,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IACrE,YAAY,EAAE,KAAA,EAAO,MAAM,UAAA,IAAc,IAAA,EAAM,YAAY,IAAA,EAAK;AAAA,IAChE,gBAAgB,EAAE,KAAA,EAAO,MAAM,cAAA,IAAkB,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IACzE,YAAY,EAAE,KAAA,EAAO,MAAM,UAAA,IAAc,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IACjE,kBAAA,EAAoB;AAAA,MAClB,KAAA,EAAO,MAAM,kBAAA,IAAsB,IAAA;AAAA,MACnC,UAAA,EAAY;AAAA,KACd;AAAA,IACA,eAAe,EAAE,KAAA,EAAO,MAAM,aAAA,IAAiB,IAAA,EAAM,YAAY,KAAA;AAAM,GACzE;AACA,EAAA,MAAM,QAAA,GAAW,gBAAA;AAMjB,EAAA,MAAM,IAAA,GAAO,EAAE,GAAG,KAAA,EAAM;AAGxB,EAAA,IAAI,CAAC,QAAA,CAAS,UAAA,CAAW,KAAA,EAAO;AAC9B,IAAA,QAAA,CAAS,UAAA,CAAW,KAAA,GAAQ,MAAM,iBAAA,CAAkB;AAAA,MAClD,UAAA,EAAY,aAAA,CAAc,QAAA,CAAS,UAAA,CAAW,KAAK;AAAA,KACpD,CAAA;AAAA,EACH;AACA,EAAA,IAAI,CAAC,QAAA,CAAS,UAAA,CAAW,KAAA,EAAO;AAC9B,IAAA,QAAA,CAAS,WAAW,KAAA,GAClB,6CAAA;AAAA,EACJ;AACA,EAAA,IAAI,CAAC,QAAA,CAAS,kBAAA,CAAmB,KAAA,EAAO;AACtC,IAAA,QAAA,CAAS,mBAAmB,KAAA,GAC1B,6CAAA;AAAA,EACJ;AACA,EAAA,IAAI,CAAC,QAAA,CAAS,aAAA,CAAc,KAAA,EAAO;AACjC,IAAA,QAAA,CAAS,cAAc,KAAA,GACrB,kCAAA;AAAA,EACJ;AAGA,EAAA,MAAM,iBAAA,GAAA,CAAoC,IAAA,CAAK,KAAA,IAAS,EAAC,EAAG,GAAA;AAAA,IAC1D,CAACkC,QAAAA,MAAa,EAAE,SAAAA,QAAAA,EAAS,IAAA,EAAMS,YAAY,QAAA,EAAS;AAAA,GACtD;AAEA,EAAA,MAAM,cAAA,GAAiB,qBAAA,CAAsB,cAA2B,CAAA;AACxE,EAAA,OAAO,OAAO,MAAA,CAAO;AAAA,IACnB,QAAA,EAAU;AAAA,MACR,cAAA,CAAe,SAAS,UAAU,CAAA;AAAA,MAClC,cAAA,CAAe,SAAS,KAAK,CAAA;AAAA,MAC7B,cAAA,CAAe,SAAS,SAAS,CAAA;AAAA,MACjC,cAAA,CAAe,SAAS,SAAS,CAAA;AAAA,MACjC,cAAA,CAAe,SAAS,YAAY,CAAA;AAAA,MACpC,cAAA,CAAe,SAAS,UAAU,CAAA;AAAA,MAClC,cAAA,CAAe,SAAS,cAAc,CAAA;AAAA,MACtC,cAAA,CAAe,SAAS,UAAU,CAAA;AAAA,MAClC,cAAA,CAAe,SAAS,kBAAkB,CAAA;AAAA,MAC1C,cAAA,CAAe,SAAS,aAAa,CAAA;AAAA,MACrC,GAAG;AAAA,KACL;AAAA,IACA,IAAA,EAAM,iCAAgC,CAAE,MAAA;AAAA,MACtC;AAAA,KACF;AAAA,IACA;AAAA,GAaD,CAAA;AACH;AAsCO,SAAS,oBAAA,CAad,OAYA,MAAA,EAaA;AAEA,EAAA,MAAM,cAAA,GACJ,QAAQ,cAAA,IAAkB,6BAAA;AAG5B,EAAA,MAAM,gBAAA,GAAmB;AAAA,IACvB,YAAY,EAAE,KAAA,EAAO,MAAM,UAAA,IAAc,IAAA,EAAM,YAAY,IAAA,EAAK;AAAA,IAChE,OAAO,EAAE,KAAA,EAAO,MAAM,KAAA,IAAS,IAAA,EAAM,YAAY,IAAA,EAAK;AAAA,IACtD,WAAW,EAAE,KAAA,EAAO,MAAM,SAAA,IAAa,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IAC/D,WAAW,EAAE,KAAA,EAAO,MAAM,SAAA,IAAa,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IAC/D,cAAc,EAAE,KAAA,EAAO,MAAM,YAAA,IAAgB,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IACrE,YAAY,EAAE,KAAA,EAAO,MAAM,UAAA,IAAc,IAAA,EAAM,YAAY,IAAA,EAAK;AAAA,IAChE,gBAAgB,EAAE,KAAA,EAAO,MAAM,cAAA,IAAkB,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IACzE,YAAY,EAAE,KAAA,EAAO,MAAM,UAAA,IAAc,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IACjE,kBAAA,EAAoB;AAAA,MAClB,KAAA,EAAO,MAAM,kBAAA,IAAsB,IAAA;AAAA,MACnC,UAAA,EAAY;AAAA,KACd;AAAA,IACA,eAAe,EAAE,KAAA,EAAO,MAAM,aAAA,IAAiB,IAAA,EAAM,YAAY,KAAA;AAAM,GACzE;AACA,EAAA,MAAM,QAAA,GAAW,gBAAA;AAMjB,EAAA,MAAM,IAAA,GAAO,EAAE,GAAG,KAAA,EAAM;AAGxB,EAAA,IAAI,CAAC,QAAA,CAAS,UAAA,CAAW,KAAA,EAAO;AAC9B,IAAA,QAAA,CAAS,WAAW,KAAA,GAClB,6CAAA;AAAA,EACJ;AACA,EAAA,IAAI,CAAC,QAAA,CAAS,kBAAA,CAAmB,KAAA,EAAO;AACtC,IAAA,QAAA,CAAS,mBAAmB,KAAA,GAC1B,6CAAA;AAAA,EACJ;AACA,EAAA,IAAI,CAAC,QAAA,CAAS,aAAA,CAAc,KAAA,EAAO;AACjC,IAAA,QAAA,CAAS,cAAc,KAAA,GACrB,kCAAA;AAAA,EACJ;AAGA,EAAA,MAAM,iBAAA,GAAA,CAAoC,IAAA,CAAK,KAAA,IAAS,EAAC,EAAG,GAAA;AAAA,IAC1D,CAACT,QAAAA,MAAa,EAAE,SAAAA,QAAAA,EAAS,IAAA,EAAMS,YAAY,QAAA,EAAS;AAAA,GACtD;AAEA,EAAA,MAAM,cAAA,GAAiB,qBAAA,CAAsB,cAA2B,CAAA;AACxE,EAAA,OAAO,OAAO,MAAA,CAAO;AAAA,IACnB,QAAA,EAAU;AAAA,MACR,cAAA,CAAe,SAAS,UAAU,CAAA;AAAA,MAClC,cAAA,CAAe,SAAS,KAAK,CAAA;AAAA,MAC7B,cAAA,CAAe,SAAS,SAAS,CAAA;AAAA,MACjC,cAAA,CAAe,SAAS,SAAS,CAAA;AAAA,MACjC,cAAA,CAAe,SAAS,YAAY,CAAA;AAAA,MACpC,cAAA,CAAe,SAAS,UAAU,CAAA;AAAA,MAClC,cAAA,CAAe,SAAS,cAAc,CAAA;AAAA,MACtC,cAAA,CAAe,SAAS,UAAU,CAAA;AAAA,MAClC,cAAA,CAAe,SAAS,kBAAkB,CAAA;AAAA,MAC1C,cAAA,CAAe,SAAS,aAAa,CAAA;AAAA,MACrC,GAAG;AAAA,KACL;AAAA,IACA,IAAA,EAAM,iCAAgC,CAAE,MAAA;AAAA,MACtC;AAAA,KACF;AAAA,IACA;AAAA,GAaD,CAAA;AACH;AA0BO,SAAS,uBAId,WAAA,EAGkD;AAClD,EAAA,IAAI,WAAA,CAAY,QAAA,CAAS,MAAA,GAAS,EAAA,EAAI;AAEpC,IAAA,MAAM,IAAI,MAAM,qBAAqB,CAAA;AAAA,EACvC;AACA,EAAA,IAAI,YAAA,GAAe,CAAA;AACnB,EAAA,MAAM,iBAAiB,MAAM;AAC3B,IAAA,MAAM,WAAA,GAAe,WAAA,CAAY,QAAA,CAA2B,YAAY,CAAA;AACxE,IAAA,YAAA,IAAgB,CAAA;AAChB,IAAA,OAAO,WAAA;AAAA,EACT,CAAA;AACA,EAAA,MAAM,yBAAyB,MAAM;AACnC,IAAA,MAAM,cAAc,cAAA,EAAe;AACnC,IAAA,OAAO,WAAA,CAAY,OAAA,KAAY,6BAAA,GAC3B,MAAA,GACA,WAAA;AAAA,EACN,CAAA;AACA,EAAA,OAAO;AAAA,IACL,gBAAgB,WAAA,CAAY,cAAA;AAAA,IAC5B,QAAA,EAAU;AAAA,MACR,YAAY,cAAA,EAAe;AAAA,MAC3B,OAAO,cAAA,EAAe;AAAA,MACtB,WAAW,sBAAA,EAAuB;AAAA,MAClC,WAAW,cAAA,EAAe;AAAA,MAC1B,cAAc,cAAA,EAAe;AAAA,MAC7B,YAAY,cAAA,EAAe;AAAA,MAC3B,gBAAgB,sBAAA,EAAuB;AAAA,MACvC,YAAY,cAAA,EAAe;AAAA,MAC3B,oBAAoB,cAAA,EAAe;AAAA,MACnC,eAAe,cAAA;AAAe,KAChC;AAAA,IACA,IAAA,EAAM,+BAAA,EAAgC,CAAE,MAAA,CAAO,YAAY,IAAI;AAAA,GACjE;AACF;AC7gBO,IAAM,sBAAA,GAAyB,IAAI,UAAA,CAAW;AAAA,EACnD,GAAA;AAAA,EAAK,EAAA;AAAA,EAAI,GAAA;AAAA,EAAK,GAAA;AAAA,EAAK,GAAA;AAAA,EAAK,CAAA;AAAA,EAAG,EAAA;AAAA,EAAI;AACjC,CAAC;AAEM,SAAS,6BAAA,GAAgC;AAC9C,EAAA,OAAOb,eAAeC,eAAAA,EAAgB,EAAG,CAAC,CAAA,CAAE,OAAO,sBAAsB,CAAA;AAC3E;AAoEO,SAAS,iCAAA,GAAmF;AACjG,EAAA,OAAOpB,gBAAAA;AAAA,IACLV,gBAAAA,CAAiB;AAAA,MACf,CAAC,eAAA,EAAiB6B,cAAAA,CAAeC,eAAAA,EAAgB,EAAG,CAAC,CAAC,CAAA;AAAA,MACtD,CAAC,MAAA,EAAQD,cAAAA,CAAeC,eAAAA,EAAgB,EAAG,EAAE,CAAC,CAAA;AAAA,MAC9C,CAAC,UAAA,EAAYD,cAAAA,CAAeC,eAAAA,EAAgB,EAAG,EAAE,CAAC,CAAA;AAAA,MAClD,CAAC,aAAA,EAAeD,cAAAA,CAAeC,eAAAA,EAAgB,EAAG,EAAE,CAAC,CAAA;AAAA,MACrD,CAAC,OAAA,EAASxB,aAAAA,EAAe,CAAA;AAAA,MACzB,CAAC,OAAA,EAASM,aAAAA,EAAe;AAAA,KAC1B,CAAA;AAAA,IACD,CAAC,KAAA,MAAW,EAAE,GAAG,KAAA,EAAO,eAAe,sBAAA,EAAuB;AAAA,GAChE;AACF;AAEO,SAAS,iCAAA,GAA+E;AAC7F,EAAA,OAAOV,gBAAAA,CAAiB;AAAA,IACtB,CAAC,eAAA,EAAiB6B,cAAAA,CAAeC,eAAAA,EAAgB,EAAG,CAAC,CAAC,CAAA;AAAA,IACtD,CAAC,MAAA,EAAQD,cAAAA,CAAeC,eAAAA,EAAgB,EAAG,EAAE,CAAC,CAAA;AAAA,IAC9C,CAAC,UAAA,EAAYD,cAAAA,CAAeC,eAAAA,EAAgB,EAAG,EAAE,CAAC,CAAA;AAAA,IAClD,CAAC,aAAA,EAAeD,cAAAA,CAAeC,eAAAA,EAAgB,EAAG,EAAE,CAAC,CAAA;AAAA,IACrD,CAAC,OAAA,EAASL,aAAAA,EAAe,CAAA;AAAA,IACzB,CAAC,OAAA,EAASR,aAAAA,EAAe;AAAA,GAC1B,CAAA;AACH;AAEO,SAAS,+BAAA,GAGd;AACA,EAAA,OAAOpB,YAAAA;AAAA,IACL,iCAAA,EAAkC;AAAA,IAClC,iCAAA;AAAkC,GACpC;AACF;AA8BA,eAAsB,2BAAA,CAWpB,OAUA,MAAA,EAmBA;AAEA,EAAA,MAAM,cAAA,GACJ,QAAQ,cAAA,IAAkB,6BAAA;AAG5B,EAAA,MAAM,gBAAA,GAAmB;AAAA,IACvB,YAAY,EAAE,KAAA,EAAO,MAAM,UAAA,IAAc,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IACjE,WAAW,EAAE,KAAA,EAAO,MAAM,SAAA,IAAa,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IAC/D,cAAc,EAAE,KAAA,EAAO,MAAM,YAAA,IAAgB,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IACrE,cAAc,EAAE,KAAA,EAAO,MAAM,YAAA,IAAgB,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IACrE,YAAY,EAAE,KAAA,EAAO,MAAM,UAAA,IAAc,IAAA,EAAM,YAAY,IAAA,EAAK;AAAA,IAChE,YAAY,EAAE,KAAA,EAAO,MAAM,UAAA,IAAc,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IACjE,kBAAA,EAAoB;AAAA,MAClB,KAAA,EAAO,MAAM,kBAAA,IAAsB,IAAA;AAAA,MACnC,UAAA,EAAY;AAAA,KACd;AAAA,IACA,eAAe,EAAE,KAAA,EAAO,MAAM,aAAA,IAAiB,IAAA,EAAM,YAAY,KAAA;AAAM,GACzE;AACA,EAAA,MAAM,QAAA,GAAW,gBAAA;AAMjB,EAAA,MAAM,IAAA,GAAO,EAAE,GAAG,KAAA,EAAM;AAGxB,EAAA,IAAI,CAAC,QAAA,CAAS,UAAA,CAAW,KAAA,EAAO;AAC9B,IAAA,QAAA,CAAS,UAAA,CAAW,KAAA,GAAQ,MAAM,iBAAA,CAAkB;AAAA,MAClD,UAAA,EAAY,aAAA,CAAc,QAAA,CAAS,UAAA,CAAW,KAAK;AAAA,KACpD,CAAA;AAAA,EACH;AACA,EAAA,IAAI,CAAC,QAAA,CAAS,YAAA,CAAa,KAAA,EAAO;AAChC,IAAA,QAAA,CAAS,YAAA,CAAa,KAAA,GAAQ,UAAA,CAAW,QAAA,CAAS,UAAU,KAAK,CAAA;AAAA,EACnE;AACA,EAAA,IAAI,CAAC,QAAA,CAAS,UAAA,CAAW,KAAA,EAAO;AAC9B,IAAA,QAAA,CAAS,WAAW,KAAA,GAClB,6CAAA;AAAA,EACJ;AACA,EAAA,IAAI,CAAC,QAAA,CAAS,kBAAA,CAAmB,KAAA,EAAO;AACtC,IAAA,QAAA,CAAS,mBAAmB,KAAA,GAC1B,6CAAA;AAAA,EACJ;AACA,EAAA,IAAI,CAAC,QAAA,CAAS,aAAA,CAAc,KAAA,EAAO;AACjC,IAAA,QAAA,CAAS,cAAc,KAAA,GACrB,kCAAA;AAAA,EACJ;AAGA,EAAA,MAAM,iBAAA,GAAA,CAAoC,IAAA,CAAK,KAAA,IAAS,EAAC,EAAG,GAAA;AAAA,IAC1D,CAACkC,QAAAA,MAAa,EAAE,SAAAA,QAAAA,EAAS,IAAA,EAAMS,YAAY,QAAA,EAAS;AAAA,GACtD;AAEA,EAAA,MAAM,cAAA,GAAiB,qBAAA,CAAsB,cAA2B,CAAA;AACxE,EAAA,OAAO,OAAO,MAAA,CAAO;AAAA,IACnB,QAAA,EAAU;AAAA,MACR,cAAA,CAAe,SAAS,UAAU,CAAA;AAAA,MAClC,cAAA,CAAe,SAAS,SAAS,CAAA;AAAA,MACjC,cAAA,CAAe,SAAS,YAAY,CAAA;AAAA,MACpC,cAAA,CAAe,SAAS,YAAY,CAAA;AAAA,MACpC,cAAA,CAAe,SAAS,UAAU,CAAA;AAAA,MAClC,cAAA,CAAe,SAAS,UAAU,CAAA;AAAA,MAClC,cAAA,CAAe,SAAS,kBAAkB,CAAA;AAAA,MAC1C,cAAA,CAAe,SAAS,aAAa,CAAA;AAAA,MACrC,GAAG;AAAA,KACL;AAAA,IACA,IAAA,EAAM,mCAAkC,CAAE,MAAA;AAAA,MACxC;AAAA,KACF;AAAA,IACA;AAAA,GAiBD,CAAA;AACH;AA8BO,SAAS,sBAAA,CAWd,OAUA,MAAA,EAiBA;AAEA,EAAA,MAAM,cAAA,GACJ,QAAQ,cAAA,IAAkB,6BAAA;AAG5B,EAAA,MAAM,gBAAA,GAAmB;AAAA,IACvB,YAAY,EAAE,KAAA,EAAO,MAAM,UAAA,IAAc,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IACjE,WAAW,EAAE,KAAA,EAAO,MAAM,SAAA,IAAa,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IAC/D,cAAc,EAAE,KAAA,EAAO,MAAM,YAAA,IAAgB,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IACrE,cAAc,EAAE,KAAA,EAAO,MAAM,YAAA,IAAgB,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IACrE,YAAY,EAAE,KAAA,EAAO,MAAM,UAAA,IAAc,IAAA,EAAM,YAAY,IAAA,EAAK;AAAA,IAChE,YAAY,EAAE,KAAA,EAAO,MAAM,UAAA,IAAc,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IACjE,kBAAA,EAAoB;AAAA,MAClB,KAAA,EAAO,MAAM,kBAAA,IAAsB,IAAA;AAAA,MACnC,UAAA,EAAY;AAAA,KACd;AAAA,IACA,eAAe,EAAE,KAAA,EAAO,MAAM,aAAA,IAAiB,IAAA,EAAM,YAAY,KAAA;AAAM,GACzE;AACA,EAAA,MAAM,QAAA,GAAW,gBAAA;AAMjB,EAAA,MAAM,IAAA,GAAO,EAAE,GAAG,KAAA,EAAM;AAGxB,EAAA,IAAI,CAAC,QAAA,CAAS,YAAA,CAAa,KAAA,EAAO;AAChC,IAAA,QAAA,CAAS,YAAA,CAAa,KAAA,GAAQ,UAAA,CAAW,QAAA,CAAS,UAAU,KAAK,CAAA;AAAA,EACnE;AACA,EAAA,IAAI,CAAC,QAAA,CAAS,UAAA,CAAW,KAAA,EAAO;AAC9B,IAAA,QAAA,CAAS,WAAW,KAAA,GAClB,6CAAA;AAAA,EACJ;AACA,EAAA,IAAI,CAAC,QAAA,CAAS,kBAAA,CAAmB,KAAA,EAAO;AACtC,IAAA,QAAA,CAAS,mBAAmB,KAAA,GAC1B,6CAAA;AAAA,EACJ;AACA,EAAA,IAAI,CAAC,QAAA,CAAS,aAAA,CAAc,KAAA,EAAO;AACjC,IAAA,QAAA,CAAS,cAAc,KAAA,GACrB,kCAAA;AAAA,EACJ;AAGA,EAAA,MAAM,iBAAA,GAAA,CAAoC,IAAA,CAAK,KAAA,IAAS,EAAC,EAAG,GAAA;AAAA,IAC1D,CAACT,QAAAA,MAAa,EAAE,SAAAA,QAAAA,EAAS,IAAA,EAAMS,YAAY,QAAA,EAAS;AAAA,GACtD;AAEA,EAAA,MAAM,cAAA,GAAiB,qBAAA,CAAsB,cAA2B,CAAA;AACxE,EAAA,OAAO,OAAO,MAAA,CAAO;AAAA,IACnB,QAAA,EAAU;AAAA,MACR,cAAA,CAAe,SAAS,UAAU,CAAA;AAAA,MAClC,cAAA,CAAe,SAAS,SAAS,CAAA;AAAA,MACjC,cAAA,CAAe,SAAS,YAAY,CAAA;AAAA,MACpC,cAAA,CAAe,SAAS,YAAY,CAAA;AAAA,MACpC,cAAA,CAAe,SAAS,UAAU,CAAA;AAAA,MAClC,cAAA,CAAe,SAAS,UAAU,CAAA;AAAA,MAClC,cAAA,CAAe,SAAS,kBAAkB,CAAA;AAAA,MAC1C,cAAA,CAAe,SAAS,aAAa,CAAA;AAAA,MACrC,GAAG;AAAA,KACL;AAAA,IACA,IAAA,EAAM,mCAAkC,CAAE,MAAA;AAAA,MACxC;AAAA,KACF;AAAA,IACA;AAAA,GAiBD,CAAA;AACH;AAoBO,SAAS,yBAId,WAAA,EAGoD;AACpD,EAAA,IAAI,WAAA,CAAY,QAAA,CAAS,MAAA,GAAS,CAAA,EAAG;AAEnC,IAAA,MAAM,IAAI,MAAM,qBAAqB,CAAA;AAAA,EACvC;AACA,EAAA,IAAI,YAAA,GAAe,CAAA;AACnB,EAAA,MAAM,iBAAiB,MAAM;AAC3B,IAAA,MAAM,WAAA,GAAe,WAAA,CAAY,QAAA,CAA2B,YAAY,CAAA;AACxE,IAAA,YAAA,IAAgB,CAAA;AAChB,IAAA,OAAO,WAAA;AAAA,EACT,CAAA;AACA,EAAA,OAAO;AAAA,IACL,gBAAgB,WAAA,CAAY,cAAA;AAAA,IAC5B,QAAA,EAAU;AAAA,MACR,YAAY,cAAA,EAAe;AAAA,MAC3B,WAAW,cAAA,EAAe;AAAA,MAC1B,cAAc,cAAA,EAAe;AAAA,MAC7B,cAAc,cAAA,EAAe;AAAA,MAC7B,YAAY,cAAA,EAAe;AAAA,MAC3B,YAAY,cAAA,EAAe;AAAA,MAC3B,oBAAoB,cAAA,EAAe;AAAA,MACnC,eAAe,cAAA;AAAe,KAChC;AAAA,IACA,IAAA,EAAM,iCAAA,EAAkC,CAAE,MAAA,CAAO,YAAY,IAAI;AAAA,GACnE;AACF;AC7cO,IAAM,yBAAA,GAA4B,IAAI,UAAA,CAAW;AAAA,EACtD,GAAA;AAAA,EAAK,EAAA;AAAA,EAAI,CAAA;AAAA,EAAG,GAAA;AAAA,EAAK,GAAA;AAAA,EAAK,GAAA;AAAA,EAAK,GAAA;AAAA,EAAK;AAClC,CAAC;AAEM,SAAS,+BAAA,GAAkC;AAChD,EAAA,OAAOb,eAAeC,eAAAA,EAAgB,EAAG,CAAC,CAAA,CAAE,OAAO,yBAAyB,CAAA;AAC9E;AAsFO,SAAS,mCAAA,GAA8E;AAC5F,EAAA,OAAOpB,gBAAAA;AAAA,IACLV,gBAAAA,CAAiB;AAAA,MACf,CAAC,eAAA,EAAiB6B,cAAAA,CAAeC,eAAAA,EAAgB,EAAG,CAAC,CAAC,CAAA;AAAA,MACtD,CAAC,MAAA,EAAQD,cAAAA,CAAeC,eAAAA,EAAgB,EAAG,EAAE,CAAC,CAAA;AAAA,MAC9C,CAAC,UAAA,EAAYD,cAAAA,CAAeC,eAAAA,EAAgB,EAAG,EAAE,CAAC,CAAA;AAAA,MAClD,CAAC,aAAA,EAAeD,cAAAA,CAAeC,eAAAA,EAAgB,EAAG,EAAE,CAAC,CAAA;AAAA,MACrD;AAAA,QACE,eAAA;AAAA,QACAhB,gBAAAA,CAAiBe,cAAAA,CAAeC,eAAAA,EAAgB,EAAG,EAAE,CAAC;AAAA,OACxD;AAAA,MACA,CAAC,OAAA,EAAShB,gBAAAA,CAAiBP,YAAAA,EAAc,CAAC,CAAA;AAAA,MAC1C,CAAC,OAAA,EAASD,aAAAA,EAAe,CAAA;AAAA,MACzB,CAAC,OAAA,EAASM,aAAAA,EAAe;AAAA,KAC1B,CAAA;AAAA,IACD,CAAC,KAAA,MAAW;AAAA,MACV,GAAG,KAAA;AAAA,MACH,aAAA,EAAe,yBAAA;AAAA,MACf,aAAA,EAAe,KAAA,CAAM,aAAA,IAAiBa,IAAAA,EAAK;AAAA,MAC3C,KAAA,EAAO,KAAA,CAAM,KAAA,IAASA,IAAAA;AAAK,KAC7B;AAAA,GACF;AACF;AAEO,SAAS,mCAAA,GAA0E;AACxF,EAAA,OAAOvB,gBAAAA,CAAiB;AAAA,IACtB,CAAC,eAAA,EAAiB6B,cAAAA,CAAeC,eAAAA,EAAgB,EAAG,CAAC,CAAC,CAAA;AAAA,IACtD,CAAC,MAAA,EAAQD,cAAAA,CAAeC,eAAAA,EAAgB,EAAG,EAAE,CAAC,CAAA;AAAA,IAC9C,CAAC,UAAA,EAAYD,cAAAA,CAAeC,eAAAA,EAAgB,EAAG,EAAE,CAAC,CAAA;AAAA,IAClD,CAAC,aAAA,EAAeD,cAAAA,CAAeC,eAAAA,EAAgB,EAAG,EAAE,CAAC,CAAA;AAAA,IACrD,CAAC,iBAAiBX,gBAAAA,CAAiBU,cAAAA,CAAeC,iBAAgB,EAAG,EAAE,CAAC,CAAC,CAAA;AAAA,IACzE,CAAC,OAAA,EAASX,gBAAAA,CAAiBb,YAAAA,EAAc,CAAC,CAAA;AAAA,IAC1C,CAAC,OAAA,EAASmB,aAAAA,EAAe,CAAA;AAAA,IACzB,CAAC,OAAA,EAASR,aAAAA,EAAe;AAAA,GAC1B,CAAA;AACH;AAEO,SAAS,iCAAA,GAGd;AACA,EAAA,OAAOpB,YAAAA;AAAA,IACL,mCAAA,EAAoC;AAAA,IACpC,mCAAA;AAAoC,GACtC;AACF;AAyCA,eAAsB,6BAAA,CAcpB,OAaA,MAAA,EAgBA;AAEA,EAAA,MAAM,cAAA,GACJ,QAAQ,cAAA,IAAkB,6BAAA;AAG5B,EAAA,MAAM,gBAAA,GAAmB;AAAA,IACvB,YAAY,EAAE,KAAA,EAAO,MAAM,UAAA,IAAc,IAAA,EAAM,YAAY,IAAA,EAAK;AAAA,IAChE,OAAO,EAAE,KAAA,EAAO,MAAM,KAAA,IAAS,IAAA,EAAM,YAAY,IAAA,EAAK;AAAA,IACtD,WAAW,EAAE,KAAA,EAAO,MAAM,SAAA,IAAa,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IAC/D,WAAW,EAAE,KAAA,EAAO,MAAM,SAAA,IAAa,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IAC/D,cAAc,EAAE,KAAA,EAAO,MAAM,YAAA,IAAgB,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IACrE,cAAc,EAAE,KAAA,EAAO,MAAM,YAAA,IAAgB,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IACrE,YAAY,EAAE,KAAA,EAAO,MAAM,UAAA,IAAc,IAAA,EAAM,YAAY,IAAA,EAAK;AAAA,IAChE,gBAAgB,EAAE,KAAA,EAAO,MAAM,cAAA,IAAkB,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IACzE,YAAY,EAAE,KAAA,EAAO,MAAM,UAAA,IAAc,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IACjE,kBAAA,EAAoB;AAAA,MAClB,KAAA,EAAO,MAAM,kBAAA,IAAsB,IAAA;AAAA,MACnC,UAAA,EAAY;AAAA,KACd;AAAA,IACA,eAAe,EAAE,KAAA,EAAO,MAAM,aAAA,IAAiB,IAAA,EAAM,YAAY,KAAA;AAAM,GACzE;AACA,EAAA,MAAM,QAAA,GAAW,gBAAA;AAMjB,EAAA,MAAM,IAAA,GAAO,EAAE,GAAG,KAAA,EAAM;AAGxB,EAAA,IAAI,CAAC,QAAA,CAAS,UAAA,CAAW,KAAA,EAAO;AAC9B,IAAA,QAAA,CAAS,UAAA,CAAW,KAAA,GAAQ,MAAM,iBAAA,CAAkB;AAAA,MAClD,UAAA,EAAY,aAAA,CAAc,QAAA,CAAS,UAAA,CAAW,KAAK;AAAA,KACpD,CAAA;AAAA,EACH;AACA,EAAA,IAAI,CAAC,QAAA,CAAS,UAAA,CAAW,KAAA,EAAO;AAC9B,IAAA,QAAA,CAAS,WAAW,KAAA,GAClB,6CAAA;AAAA,EACJ;AACA,EAAA,IAAI,CAAC,QAAA,CAAS,kBAAA,CAAmB,KAAA,EAAO;AACtC,IAAA,QAAA,CAAS,mBAAmB,KAAA,GAC1B,6CAAA;AAAA,EACJ;AACA,EAAA,IAAI,CAAC,QAAA,CAAS,aAAA,CAAc,KAAA,EAAO;AACjC,IAAA,QAAA,CAAS,cAAc,KAAA,GACrB,kCAAA;AAAA,EACJ;AAGA,EAAA,MAAM,iBAAA,GAAA,CAAoC,IAAA,CAAK,KAAA,IAAS,EAAC,EAAG,GAAA;AAAA,IAC1D,CAACkC,QAAAA,MAAa,EAAE,SAAAA,QAAAA,EAAS,IAAA,EAAMS,YAAY,QAAA,EAAS;AAAA,GACtD;AAEA,EAAA,MAAM,cAAA,GAAiB,qBAAA,CAAsB,cAA2B,CAAA;AACxE,EAAA,OAAO,OAAO,MAAA,CAAO;AAAA,IACnB,QAAA,EAAU;AAAA,MACR,cAAA,CAAe,SAAS,UAAU,CAAA;AAAA,MAClC,cAAA,CAAe,SAAS,KAAK,CAAA;AAAA,MAC7B,cAAA,CAAe,SAAS,SAAS,CAAA;AAAA,MACjC,cAAA,CAAe,SAAS,SAAS,CAAA;AAAA,MACjC,cAAA,CAAe,SAAS,YAAY,CAAA;AAAA,MACpC,cAAA,CAAe,SAAS,YAAY,CAAA;AAAA,MACpC,cAAA,CAAe,SAAS,UAAU,CAAA;AAAA,MAClC,cAAA,CAAe,SAAS,cAAc,CAAA;AAAA,MACtC,cAAA,CAAe,SAAS,UAAU,CAAA;AAAA,MAClC,cAAA,CAAe,SAAS,kBAAkB,CAAA;AAAA,MAC1C,cAAA,CAAe,SAAS,aAAa,CAAA;AAAA,MACrC,GAAG;AAAA,KACL;AAAA,IACA,IAAA,EAAM,qCAAoC,CAAE,MAAA;AAAA,MAC1C;AAAA,KACF;AAAA,IACA;AAAA,GAcD,CAAA;AACH;AAyCO,SAAS,wBAAA,CAcd,OAaA,MAAA,EAcA;AAEA,EAAA,MAAM,cAAA,GACJ,QAAQ,cAAA,IAAkB,6BAAA;AAG5B,EAAA,MAAM,gBAAA,GAAmB;AAAA,IACvB,YAAY,EAAE,KAAA,EAAO,MAAM,UAAA,IAAc,IAAA,EAAM,YAAY,IAAA,EAAK;AAAA,IAChE,OAAO,EAAE,KAAA,EAAO,MAAM,KAAA,IAAS,IAAA,EAAM,YAAY,IAAA,EAAK;AAAA,IACtD,WAAW,EAAE,KAAA,EAAO,MAAM,SAAA,IAAa,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IAC/D,WAAW,EAAE,KAAA,EAAO,MAAM,SAAA,IAAa,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IAC/D,cAAc,EAAE,KAAA,EAAO,MAAM,YAAA,IAAgB,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IACrE,cAAc,EAAE,KAAA,EAAO,MAAM,YAAA,IAAgB,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IACrE,YAAY,EAAE,KAAA,EAAO,MAAM,UAAA,IAAc,IAAA,EAAM,YAAY,IAAA,EAAK;AAAA,IAChE,gBAAgB,EAAE,KAAA,EAAO,MAAM,cAAA,IAAkB,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IACzE,YAAY,EAAE,KAAA,EAAO,MAAM,UAAA,IAAc,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IACjE,kBAAA,EAAoB;AAAA,MAClB,KAAA,EAAO,MAAM,kBAAA,IAAsB,IAAA;AAAA,MACnC,UAAA,EAAY;AAAA,KACd;AAAA,IACA,eAAe,EAAE,KAAA,EAAO,MAAM,aAAA,IAAiB,IAAA,EAAM,YAAY,KAAA;AAAM,GACzE;AACA,EAAA,MAAM,QAAA,GAAW,gBAAA;AAMjB,EAAA,MAAM,IAAA,GAAO,EAAE,GAAG,KAAA,EAAM;AAGxB,EAAA,IAAI,CAAC,QAAA,CAAS,UAAA,CAAW,KAAA,EAAO;AAC9B,IAAA,QAAA,CAAS,WAAW,KAAA,GAClB,6CAAA;AAAA,EACJ;AACA,EAAA,IAAI,CAAC,QAAA,CAAS,kBAAA,CAAmB,KAAA,EAAO;AACtC,IAAA,QAAA,CAAS,mBAAmB,KAAA,GAC1B,6CAAA;AAAA,EACJ;AACA,EAAA,IAAI,CAAC,QAAA,CAAS,aAAA,CAAc,KAAA,EAAO;AACjC,IAAA,QAAA,CAAS,cAAc,KAAA,GACrB,kCAAA;AAAA,EACJ;AAGA,EAAA,MAAM,iBAAA,GAAA,CAAoC,IAAA,CAAK,KAAA,IAAS,EAAC,EAAG,GAAA;AAAA,IAC1D,CAACT,QAAAA,MAAa,EAAE,SAAAA,QAAAA,EAAS,IAAA,EAAMS,YAAY,QAAA,EAAS;AAAA,GACtD;AAEA,EAAA,MAAM,cAAA,GAAiB,qBAAA,CAAsB,cAA2B,CAAA;AACxE,EAAA,OAAO,OAAO,MAAA,CAAO;AAAA,IACnB,QAAA,EAAU;AAAA,MACR,cAAA,CAAe,SAAS,UAAU,CAAA;AAAA,MAClC,cAAA,CAAe,SAAS,KAAK,CAAA;AAAA,MAC7B,cAAA,CAAe,SAAS,SAAS,CAAA;AAAA,MACjC,cAAA,CAAe,SAAS,SAAS,CAAA;AAAA,MACjC,cAAA,CAAe,SAAS,YAAY,CAAA;AAAA,MACpC,cAAA,CAAe,SAAS,YAAY,CAAA;AAAA,MACpC,cAAA,CAAe,SAAS,UAAU,CAAA;AAAA,MAClC,cAAA,CAAe,SAAS,cAAc,CAAA;AAAA,MACtC,cAAA,CAAe,SAAS,UAAU,CAAA;AAAA,MAClC,cAAA,CAAe,SAAS,kBAAkB,CAAA;AAAA,MAC1C,cAAA,CAAe,SAAS,aAAa,CAAA;AAAA,MACrC,GAAG;AAAA,KACL;AAAA,IACA,IAAA,EAAM,qCAAoC,CAAE,MAAA;AAAA,MAC1C;AAAA,KACF;AAAA,IACA;AAAA,GAcD,CAAA;AACH;AA4BO,SAAS,2BAId,WAAA,EAGsD;AACtD,EAAA,IAAI,WAAA,CAAY,QAAA,CAAS,MAAA,GAAS,EAAA,EAAI;AAEpC,IAAA,MAAM,IAAI,MAAM,qBAAqB,CAAA;AAAA,EACvC;AACA,EAAA,IAAI,YAAA,GAAe,CAAA;AACnB,EAAA,MAAM,iBAAiB,MAAM;AAC3B,IAAA,MAAM,WAAA,GAAe,WAAA,CAAY,QAAA,CAA2B,YAAY,CAAA;AACxE,IAAA,YAAA,IAAgB,CAAA;AAChB,IAAA,OAAO,WAAA;AAAA,EACT,CAAA;AACA,EAAA,MAAM,yBAAyB,MAAM;AACnC,IAAA,MAAM,cAAc,cAAA,EAAe;AACnC,IAAA,OAAO,WAAA,CAAY,OAAA,KAAY,6BAAA,GAC3B,MAAA,GACA,WAAA;AAAA,EACN,CAAA;AACA,EAAA,OAAO;AAAA,IACL,gBAAgB,WAAA,CAAY,cAAA;AAAA,IAC5B,QAAA,EAAU;AAAA,MACR,YAAY,cAAA,EAAe;AAAA,MAC3B,OAAO,cAAA,EAAe;AAAA,MACtB,WAAW,sBAAA,EAAuB;AAAA,MAClC,WAAW,cAAA,EAAe;AAAA,MAC1B,cAAc,sBAAA,EAAuB;AAAA,MACrC,cAAc,cAAA,EAAe;AAAA,MAC7B,YAAY,cAAA,EAAe;AAAA,MAC3B,gBAAgB,sBAAA,EAAuB;AAAA,MACvC,YAAY,cAAA,EAAe;AAAA,MAC3B,oBAAoB,cAAA,EAAe;AAAA,MACnC,eAAe,cAAA;AAAe,KAChC;AAAA,IACA,IAAA,EAAM,mCAAA,EAAoC,CAAE,MAAA,CAAO,YAAY,IAAI;AAAA,GACrE;AACF;AC1hBO,IAAM,iCAAA,GAAoC,IAAI,UAAA,CAAW;AAAA,EAC9D,GAAA;AAAA,EAAK,GAAA;AAAA,EAAK,EAAA;AAAA,EAAI,GAAA;AAAA,EAAK,EAAA;AAAA,EAAI,GAAA;AAAA,EAAK,GAAA;AAAA,EAAK;AACnC,CAAC;AAEM,SAAS,uCAAA,GAA0C;AACxD,EAAA,OAAOb,cAAAA,CAAeC,eAAAA,EAAgB,EAAG,CAAC,CAAA,CAAE,MAAA;AAAA,IAC1C;AAAA,GACF;AACF;AA8GO,SAAS,2CAAA,GAA8F;AAC5G,EAAA,OAAOpB,gBAAAA;AAAA,IACLV,gBAAAA,CAAiB;AAAA,MACf,CAAC,eAAA,EAAiB6B,cAAAA,CAAeC,eAAAA,EAAgB,EAAG,CAAC,CAAC,CAAA;AAAA,MACtD,CAAC,MAAA,EAAQD,cAAAA,CAAeC,eAAAA,EAAgB,EAAG,EAAE,CAAC,CAAA;AAAA,MAC9C,CAAC,UAAA,EAAYD,cAAAA,CAAeC,eAAAA,EAAgB,EAAG,EAAE,CAAC,CAAA;AAAA,MAClD,CAAC,aAAA,EAAeD,cAAAA,CAAeC,eAAAA,EAAgB,EAAG,EAAE,CAAC,CAAA;AAAA,MACrD,CAAC,OAAA,EAASxB,aAAAA,EAAe,CAAA;AAAA,MACzB,CAAC,OAAA,EAASM,aAAAA,EAAe,CAAA;AAAA,MACzB,CAAC,UAAA,EAAY,sBAAA,EAAwB;AAAA,KACtC,CAAA;AAAA,IACD,CAAC,KAAA,MAAW,EAAE,GAAG,KAAA,EAAO,eAAe,iCAAA,EAAkC;AAAA,GAC3E;AACF;AAEO,SAAS,2CAAA,GAA0F;AACxG,EAAA,OAAOV,gBAAAA,CAAiB;AAAA,IACtB,CAAC,eAAA,EAAiB6B,cAAAA,CAAeC,eAAAA,EAAgB,EAAG,CAAC,CAAC,CAAA;AAAA,IACtD,CAAC,MAAA,EAAQD,cAAAA,CAAeC,eAAAA,EAAgB,EAAG,EAAE,CAAC,CAAA;AAAA,IAC9C,CAAC,UAAA,EAAYD,cAAAA,CAAeC,eAAAA,EAAgB,EAAG,EAAE,CAAC,CAAA;AAAA,IAClD,CAAC,aAAA,EAAeD,cAAAA,CAAeC,eAAAA,EAAgB,EAAG,EAAE,CAAC,CAAA;AAAA,IACrD,CAAC,OAAA,EAASL,aAAAA,EAAe,CAAA;AAAA,IACzB,CAAC,OAAA,EAASR,aAAAA,EAAe,CAAA;AAAA,IACzB,CAAC,UAAA,EAAY,sBAAA,EAAwB;AAAA,GACtC,CAAA;AACH;AAEO,SAAS,yCAAA,GAGd;AACA,EAAA,OAAOpB,YAAAA;AAAA,IACL,2CAAA,EAA4C;AAAA,IAC5C,2CAAA;AAA4C,GAC9C;AACF;AAsDA,eAAsB,qCAAA,CAmBpB,OAkBA,MAAA,EAqBA;AAEA,EAAA,MAAM,cAAA,GACJ,QAAQ,cAAA,IAAkB,6BAAA;AAG5B,EAAA,MAAM,gBAAA,GAAmB;AAAA,IACvB,YAAY,EAAE,KAAA,EAAO,MAAM,UAAA,IAAc,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IACjE,WAAW,EAAE,KAAA,EAAO,MAAM,SAAA,IAAa,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IAC/D,cAAc,EAAE,KAAA,EAAO,MAAM,YAAA,IAAgB,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IACrE,YAAY,EAAE,KAAA,EAAO,MAAM,UAAA,IAAc,IAAA,EAAM,YAAY,IAAA,EAAK;AAAA,IAChE,OAAO,EAAE,KAAA,EAAO,MAAM,KAAA,IAAS,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IACvD,qBAAA,EAAuB;AAAA,MACrB,KAAA,EAAO,MAAM,qBAAA,IAAyB,IAAA;AAAA,MACtC,UAAA,EAAY;AAAA,KACd;AAAA,IACA,mBAAA,EAAqB;AAAA,MACnB,KAAA,EAAO,MAAM,mBAAA,IAAuB,IAAA;AAAA,MACpC,UAAA,EAAY;AAAA,KACd;AAAA,IACA,4BAAA,EAA8B;AAAA,MAC5B,KAAA,EAAO,MAAM,4BAAA,IAAgC,IAAA;AAAA,MAC7C,UAAA,EAAY;AAAA,KACd;AAAA,IACA,gBAAgB,EAAE,KAAA,EAAO,MAAM,cAAA,IAAkB,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IACzE,kBAAA,EAAoB;AAAA,MAClB,KAAA,EAAO,MAAM,kBAAA,IAAsB,IAAA;AAAA,MACnC,UAAA,EAAY;AAAA,KACd;AAAA,IACA,iBAAA,EAAmB;AAAA,MACjB,KAAA,EAAO,MAAM,iBAAA,IAAqB,IAAA;AAAA,MAClC,UAAA,EAAY;AAAA,KACd;AAAA,IACA,eAAA,EAAiB;AAAA,MACf,KAAA,EAAO,MAAM,eAAA,IAAmB,IAAA;AAAA,MAChC,UAAA,EAAY;AAAA,KACd;AAAA,IACA,YAAY,EAAE,KAAA,EAAO,MAAM,UAAA,IAAc,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IACjE,kBAAA,EAAoB;AAAA,MAClB,KAAA,EAAO,MAAM,kBAAA,IAAsB,IAAA;AAAA,MACnC,UAAA,EAAY;AAAA,KACd;AAAA,IACA,oBAAA,EAAsB;AAAA,MACpB,KAAA,EAAO,MAAM,oBAAA,IAAwB,IAAA;AAAA,MACrC,UAAA,EAAY;AAAA,KACd;AAAA,IACA,eAAe,EAAE,KAAA,EAAO,MAAM,aAAA,IAAiB,IAAA,EAAM,YAAY,KAAA;AAAM,GACzE;AACA,EAAA,MAAM,QAAA,GAAW,gBAAA;AAMjB,EAAA,MAAM,IAAA,GAAO,EAAE,GAAG,KAAA,EAAM;AAGxB,EAAA,MAAM,aAAA,GAAgB,EAA4B,IAAA,EAAK;AAGvD,EAAA,IAAI,CAAC,QAAA,CAAS,UAAA,CAAW,KAAA,EAAO;AAC9B,IAAA,QAAA,CAAS,UAAA,CAAW,KAAA,GAAQ,MAAM,iBAAA,CAAkB;AAAA,MAClD,UAAA,EAAY,aAAA,CAAc,QAAA,CAAS,UAAA,CAAW,KAAK;AAAA,KACpD,CAAA;AAAA,EACH;AACA,EAAA,IAAI,CAAC,QAAA,CAAS,YAAA,CAAa,KAAA,EAAO;AAChC,IAAA,QAAA,CAAS,YAAA,CAAa,KAAA,GAAQ,UAAA,CAAW,QAAA,CAAS,UAAU,KAAK,CAAA;AAAA,EACnE;AACA,EAAA,IAAI,CAAC,QAAA,CAAS,kBAAA,CAAmB,KAAA,EAAO;AACtC,IAAA,QAAA,CAAS,kBAAA,CAAmB,KAAA,GAAQ,MAAM,eAAA,CAAgB;AAAA,MACxD,IAAA,EAAM,aAAA,CAAc,QAAA,CAAS,cAAA,CAAe,KAAK;AAAA,KAClD,CAAA;AAAA,EACH;AACA,EAAA,IAAI,CAAC,QAAA,CAAS,iBAAA,CAAkB,KAAA,EAAO;AACrC,IAAA,QAAA,CAAS,iBAAA,CAAkB,KAAA,GAAQ,MAAM,oBAAA,CAAqB;AAAA,MAC5D,IAAA,EAAM,aAAA,CAAc,QAAA,CAAS,cAAA,CAAe,KAAK;AAAA,KAClD,CAAA;AAAA,EACH;AACA,EAAA,IAAI,CAAC,QAAA,CAAS,eAAA,CAAgB,KAAA,EAAO;AACnC,IAAA,QAAA,CAAS,gBAAgB,KAAA,GAAQ,cAAA;AACjC,IAAA,QAAA,CAAS,gBAAgB,UAAA,GAAa,KAAA;AAAA,EACxC;AACA,EAAA,IAAI,CAAC,QAAA,CAAS,UAAA,CAAW,KAAA,EAAO;AAC9B,IAAA,QAAA,CAAS,WAAW,KAAA,GAClB,6CAAA;AAAA,EACJ;AACA,EAAA,IAAI,CAAC,QAAA,CAAS,kBAAA,CAAmB,KAAA,EAAO;AACtC,IAAA,QAAA,CAAS,mBAAmB,KAAA,GAC1B,6CAAA;AAAA,EACJ;AACA,EAAA,IAAI,CAAC,QAAA,CAAS,oBAAA,CAAqB,KAAA,EAAO;AACxC,IAAA,QAAA,CAAS,qBAAqB,KAAA,GAC5B,8CAAA;AAAA,EACJ;AACA,EAAA,IAAI,CAAC,QAAA,CAAS,aAAA,CAAc,KAAA,EAAO;AACjC,IAAA,QAAA,CAAS,cAAc,KAAA,GACrB,kCAAA;AAAA,EACJ;AACA,EAAA,IAAI,CAAC,KAAK,QAAA,EAAU;AAClB,IAAA,IAAA,CAAK,QAAA,GAAW,gBAAgB,aAAa,CAAA;AAAA,EAC/C;AACA,EAAA,IAAI,CAAC,KAAK,WAAA,EAAa;AACrB,IAAA,IAAA,CAAK,WAAA,GAAc,mBAAmB,aAAa,CAAA;AAAA,EACrD;AAGA,EAAA,MAAM,iBAAA,GAAA,CAAoC,IAAA,CAAK,KAAA,IAAS,EAAC,EAAG,GAAA;AAAA,IAC1D,CAACkC,QAAAA,MAAa,EAAE,SAAAA,QAAAA,EAAS,IAAA,EAAMS,YAAY,QAAA,EAAS;AAAA,GACtD;AAEA,EAAA,MAAM,cAAA,GAAiB,qBAAA,CAAsB,cAA2B,CAAA;AACxE,EAAA,OAAO,OAAO,MAAA,CAAO;AAAA,IACnB,QAAA,EAAU;AAAA,MACR,cAAA,CAAe,SAAS,UAAU,CAAA;AAAA,MAClC,cAAA,CAAe,SAAS,SAAS,CAAA;AAAA,MACjC,cAAA,CAAe,SAAS,YAAY,CAAA;AAAA,MACpC,cAAA,CAAe,SAAS,UAAU,CAAA;AAAA,MAClC,cAAA,CAAe,SAAS,KAAK,CAAA;AAAA,MAC7B,cAAA,CAAe,SAAS,qBAAqB,CAAA;AAAA,MAC7C,cAAA,CAAe,SAAS,mBAAmB,CAAA;AAAA,MAC3C,cAAA,CAAe,SAAS,4BAA4B,CAAA;AAAA,MACpD,cAAA,CAAe,SAAS,cAAc,CAAA;AAAA,MACtC,cAAA,CAAe,SAAS,kBAAkB,CAAA;AAAA,MAC1C,cAAA,CAAe,SAAS,iBAAiB,CAAA;AAAA,MACzC,cAAA,CAAe,SAAS,eAAe,CAAA;AAAA,MACvC,cAAA,CAAe,SAAS,UAAU,CAAA;AAAA,MAClC,cAAA,CAAe,SAAS,kBAAkB,CAAA;AAAA,MAC1C,cAAA,CAAe,SAAS,oBAAoB,CAAA;AAAA,MAC5C,cAAA,CAAe,SAAS,aAAa,CAAA;AAAA,MACrC,GAAG;AAAA,KACL;AAAA,IACA,IAAA,EAAM,6CAA4C,CAAE,MAAA;AAAA,MAClD;AAAA,KACF;AAAA,IACA;AAAA,GAmBD,CAAA;AACH;AAsDO,SAAS,gCAAA,CAmBd,OAkBA,MAAA,EAmBA;AAEA,EAAA,MAAM,cAAA,GACJ,QAAQ,cAAA,IAAkB,6BAAA;AAG5B,EAAA,MAAM,gBAAA,GAAmB;AAAA,IACvB,YAAY,EAAE,KAAA,EAAO,MAAM,UAAA,IAAc,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IACjE,WAAW,EAAE,KAAA,EAAO,MAAM,SAAA,IAAa,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IAC/D,cAAc,EAAE,KAAA,EAAO,MAAM,YAAA,IAAgB,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IACrE,YAAY,EAAE,KAAA,EAAO,MAAM,UAAA,IAAc,IAAA,EAAM,YAAY,IAAA,EAAK;AAAA,IAChE,OAAO,EAAE,KAAA,EAAO,MAAM,KAAA,IAAS,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IACvD,qBAAA,EAAuB;AAAA,MACrB,KAAA,EAAO,MAAM,qBAAA,IAAyB,IAAA;AAAA,MACtC,UAAA,EAAY;AAAA,KACd;AAAA,IACA,mBAAA,EAAqB;AAAA,MACnB,KAAA,EAAO,MAAM,mBAAA,IAAuB,IAAA;AAAA,MACpC,UAAA,EAAY;AAAA,KACd;AAAA,IACA,4BAAA,EAA8B;AAAA,MAC5B,KAAA,EAAO,MAAM,4BAAA,IAAgC,IAAA;AAAA,MAC7C,UAAA,EAAY;AAAA,KACd;AAAA,IACA,gBAAgB,EAAE,KAAA,EAAO,MAAM,cAAA,IAAkB,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IACzE,kBAAA,EAAoB;AAAA,MAClB,KAAA,EAAO,MAAM,kBAAA,IAAsB,IAAA;AAAA,MACnC,UAAA,EAAY;AAAA,KACd;AAAA,IACA,iBAAA,EAAmB;AAAA,MACjB,KAAA,EAAO,MAAM,iBAAA,IAAqB,IAAA;AAAA,MAClC,UAAA,EAAY;AAAA,KACd;AAAA,IACA,eAAA,EAAiB;AAAA,MACf,KAAA,EAAO,MAAM,eAAA,IAAmB,IAAA;AAAA,MAChC,UAAA,EAAY;AAAA,KACd;AAAA,IACA,YAAY,EAAE,KAAA,EAAO,MAAM,UAAA,IAAc,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IACjE,kBAAA,EAAoB;AAAA,MAClB,KAAA,EAAO,MAAM,kBAAA,IAAsB,IAAA;AAAA,MACnC,UAAA,EAAY;AAAA,KACd;AAAA,IACA,oBAAA,EAAsB;AAAA,MACpB,KAAA,EAAO,MAAM,oBAAA,IAAwB,IAAA;AAAA,MACrC,UAAA,EAAY;AAAA,KACd;AAAA,IACA,eAAe,EAAE,KAAA,EAAO,MAAM,aAAA,IAAiB,IAAA,EAAM,YAAY,KAAA;AAAM,GACzE;AACA,EAAA,MAAM,QAAA,GAAW,gBAAA;AAMjB,EAAA,MAAM,IAAA,GAAO,EAAE,GAAG,KAAA,EAAM;AAGxB,EAAA,MAAM,aAAA,GAAgB,EAA4B,IAAA,EAAK;AAGvD,EAAA,IAAI,CAAC,QAAA,CAAS,YAAA,CAAa,KAAA,EAAO;AAChC,IAAA,QAAA,CAAS,YAAA,CAAa,KAAA,GAAQ,UAAA,CAAW,QAAA,CAAS,UAAU,KAAK,CAAA;AAAA,EACnE;AACA,EAAA,IAAI,CAAC,QAAA,CAAS,eAAA,CAAgB,KAAA,EAAO;AACnC,IAAA,QAAA,CAAS,gBAAgB,KAAA,GAAQ,cAAA;AACjC,IAAA,QAAA,CAAS,gBAAgB,UAAA,GAAa,KAAA;AAAA,EACxC;AACA,EAAA,IAAI,CAAC,QAAA,CAAS,UAAA,CAAW,KAAA,EAAO;AAC9B,IAAA,QAAA,CAAS,WAAW,KAAA,GAClB,6CAAA;AAAA,EACJ;AACA,EAAA,IAAI,CAAC,QAAA,CAAS,kBAAA,CAAmB,KAAA,EAAO;AACtC,IAAA,QAAA,CAAS,mBAAmB,KAAA,GAC1B,6CAAA;AAAA,EACJ;AACA,EAAA,IAAI,CAAC,QAAA,CAAS,oBAAA,CAAqB,KAAA,EAAO;AACxC,IAAA,QAAA,CAAS,qBAAqB,KAAA,GAC5B,8CAAA;AAAA,EACJ;AACA,EAAA,IAAI,CAAC,QAAA,CAAS,aAAA,CAAc,KAAA,EAAO;AACjC,IAAA,QAAA,CAAS,cAAc,KAAA,GACrB,kCAAA;AAAA,EACJ;AACA,EAAA,IAAI,CAAC,KAAK,QAAA,EAAU;AAClB,IAAA,IAAA,CAAK,QAAA,GAAW,gBAAgB,aAAa,CAAA;AAAA,EAC/C;AACA,EAAA,IAAI,CAAC,KAAK,WAAA,EAAa;AACrB,IAAA,IAAA,CAAK,WAAA,GAAc,mBAAmB,aAAa,CAAA;AAAA,EACrD;AAGA,EAAA,MAAM,iBAAA,GAAA,CAAoC,IAAA,CAAK,KAAA,IAAS,EAAC,EAAG,GAAA;AAAA,IAC1D,CAACT,QAAAA,MAAa,EAAE,SAAAA,QAAAA,EAAS,IAAA,EAAMS,YAAY,QAAA,EAAS;AAAA,GACtD;AAEA,EAAA,MAAM,cAAA,GAAiB,qBAAA,CAAsB,cAA2B,CAAA;AACxE,EAAA,OAAO,OAAO,MAAA,CAAO;AAAA,IACnB,QAAA,EAAU;AAAA,MACR,cAAA,CAAe,SAAS,UAAU,CAAA;AAAA,MAClC,cAAA,CAAe,SAAS,SAAS,CAAA;AAAA,MACjC,cAAA,CAAe,SAAS,YAAY,CAAA;AAAA,MACpC,cAAA,CAAe,SAAS,UAAU,CAAA;AAAA,MAClC,cAAA,CAAe,SAAS,KAAK,CAAA;AAAA,MAC7B,cAAA,CAAe,SAAS,qBAAqB,CAAA;AAAA,MAC7C,cAAA,CAAe,SAAS,mBAAmB,CAAA;AAAA,MAC3C,cAAA,CAAe,SAAS,4BAA4B,CAAA;AAAA,MACpD,cAAA,CAAe,SAAS,cAAc,CAAA;AAAA,MACtC,cAAA,CAAe,SAAS,kBAAkB,CAAA;AAAA,MAC1C,cAAA,CAAe,SAAS,iBAAiB,CAAA;AAAA,MACzC,cAAA,CAAe,SAAS,eAAe,CAAA;AAAA,MACvC,cAAA,CAAe,SAAS,UAAU,CAAA;AAAA,MAClC,cAAA,CAAe,SAAS,kBAAkB,CAAA;AAAA,MAC1C,cAAA,CAAe,SAAS,oBAAoB,CAAA;AAAA,MAC5C,cAAA,CAAe,SAAS,aAAa,CAAA;AAAA,MACrC,GAAG;AAAA,KACL;AAAA,IACA,IAAA,EAAM,6CAA4C,CAAE,MAAA;AAAA,MAClD;AAAA,KACF;AAAA,IACA;AAAA,GAmBD,CAAA;AACH;AAqCO,SAAS,mCAId,WAAA,EAG8D;AAC9D,EAAA,IAAI,WAAA,CAAY,QAAA,CAAS,MAAA,GAAS,EAAA,EAAI;AAEpC,IAAA,MAAM,IAAI,MAAM,qBAAqB,CAAA;AAAA,EACvC;AACA,EAAA,IAAI,YAAA,GAAe,CAAA;AACnB,EAAA,MAAM,iBAAiB,MAAM;AAC3B,IAAA,MAAM,WAAA,GAAe,WAAA,CAAY,QAAA,CAA2B,YAAY,CAAA;AACxE,IAAA,YAAA,IAAgB,CAAA;AAChB,IAAA,OAAO,WAAA;AAAA,EACT,CAAA;AACA,EAAA,MAAM,yBAAyB,MAAM;AACnC,IAAA,MAAM,cAAc,cAAA,EAAe;AACnC,IAAA,OAAO,WAAA,CAAY,OAAA,KAAY,6BAAA,GAC3B,MAAA,GACA,WAAA;AAAA,EACN,CAAA;AACA,EAAA,OAAO;AAAA,IACL,gBAAgB,WAAA,CAAY,cAAA;AAAA,IAC5B,QAAA,EAAU;AAAA,MACR,YAAY,cAAA,EAAe;AAAA,MAC3B,WAAW,cAAA,EAAe;AAAA,MAC1B,cAAc,cAAA,EAAe;AAAA,MAC7B,YAAY,cAAA,EAAe;AAAA,MAC3B,OAAO,cAAA,EAAe;AAAA,MACtB,uBAAuB,cAAA,EAAe;AAAA,MACtC,qBAAqB,cAAA,EAAe;AAAA,MACpC,8BAA8B,sBAAA,EAAuB;AAAA,MACrD,gBAAgB,cAAA,EAAe;AAAA,MAC/B,oBAAoB,cAAA,EAAe;AAAA,MACnC,mBAAmB,cAAA,EAAe;AAAA,MAClC,iBAAiB,cAAA,EAAe;AAAA,MAChC,YAAY,cAAA,EAAe;AAAA,MAC3B,oBAAoB,cAAA,EAAe;AAAA,MACnC,sBAAsB,cAAA,EAAe;AAAA,MACrC,eAAe,cAAA;AAAe,KAChC;AAAA,IACA,IAAA,EAAM,6CAA4C,CAAE,MAAA;AAAA,MAClD,WAAA,CAAY;AAAA;AACd,GACF;AACF;ACtvBO,IAAM,8BAAA,GAAiC,IAAI,UAAA,CAAW;AAAA,EAC3D,GAAA;AAAA,EAAK,GAAA;AAAA,EAAK,EAAA;AAAA,EAAI,EAAA;AAAA,EAAI,GAAA;AAAA,EAAK,GAAA;AAAA,EAAK,GAAA;AAAA,EAAK;AACnC,CAAC;AAEM,SAAS,oCAAA,GAAuC;AACrD,EAAA,OAAOb,cAAAA,CAAeC,eAAAA,EAAgB,EAAG,CAAC,CAAA,CAAE,MAAA;AAAA,IAC1C;AAAA,GACF;AACF;AA4EO,SAAS,wCAAA,GAAwF;AACtG,EAAA,OAAOpB,gBAAAA;AAAA,IACLV,gBAAAA,CAAiB;AAAA,MACf,CAAC,eAAA,EAAiB6B,cAAAA,CAAeC,eAAAA,EAAgB,EAAG,CAAC,CAAC,CAAA;AAAA,MACtD,CAAC,MAAA,EAAQD,cAAAA,CAAeC,eAAAA,EAAgB,EAAG,EAAE,CAAC,CAAA;AAAA,MAC9C,CAAC,UAAA,EAAYD,cAAAA,CAAeC,eAAAA,EAAgB,EAAG,EAAE,CAAC,CAAA;AAAA,MAClD,CAAC,aAAA,EAAeD,cAAAA,CAAeC,eAAAA,EAAgB,EAAG,EAAE,CAAC,CAAA;AAAA,MACrD,CAAC,OAAA,EAASxB,aAAAA,EAAe,CAAA;AAAA,MACzB,CAAC,OAAA,EAASM,aAAAA,EAAe,CAAA;AAAA,MACzB,CAAC,UAAA,EAAY,sBAAA,EAAwB;AAAA,KACtC,CAAA;AAAA,IACD,CAAC,KAAA,MAAW,EAAE,GAAG,KAAA,EAAO,eAAe,8BAAA,EAA+B;AAAA,GACxE;AACF;AAEO,SAAS,wCAAA,GAAoF;AAClG,EAAA,OAAOV,gBAAAA,CAAiB;AAAA,IACtB,CAAC,eAAA,EAAiB6B,cAAAA,CAAeC,eAAAA,EAAgB,EAAG,CAAC,CAAC,CAAA;AAAA,IACtD,CAAC,MAAA,EAAQD,cAAAA,CAAeC,eAAAA,EAAgB,EAAG,EAAE,CAAC,CAAA;AAAA,IAC9C,CAAC,UAAA,EAAYD,cAAAA,CAAeC,eAAAA,EAAgB,EAAG,EAAE,CAAC,CAAA;AAAA,IAClD,CAAC,aAAA,EAAeD,cAAAA,CAAeC,eAAAA,EAAgB,EAAG,EAAE,CAAC,CAAA;AAAA,IACrD,CAAC,OAAA,EAASL,aAAAA,EAAe,CAAA;AAAA,IACzB,CAAC,OAAA,EAASR,aAAAA,EAAe,CAAA;AAAA,IACzB,CAAC,UAAA,EAAY,sBAAA,EAAwB;AAAA,GACtC,CAAA;AACH;AAEO,SAAS,sCAAA,GAGd;AACA,EAAA,OAAOpB,YAAAA;AAAA,IACL,wCAAA,EAAyC;AAAA,IACzC,wCAAA;AAAyC,GAC3C;AACF;AA+BA,eAAsB,kCAAA,CAYpB,OAWA,MAAA,EAcA;AAEA,EAAA,MAAM,cAAA,GACJ,QAAQ,cAAA,IAAkB,6BAAA;AAG5B,EAAA,MAAM,gBAAA,GAAmB;AAAA,IACvB,YAAY,EAAE,KAAA,EAAO,MAAM,UAAA,IAAc,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IACjE,WAAW,EAAE,KAAA,EAAO,MAAM,SAAA,IAAa,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IAC/D,cAAc,EAAE,KAAA,EAAO,MAAM,YAAA,IAAgB,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IACrE,YAAY,EAAE,KAAA,EAAO,MAAM,UAAA,IAAc,IAAA,EAAM,YAAY,IAAA,EAAK;AAAA,IAChE,OAAO,EAAE,KAAA,EAAO,MAAM,KAAA,IAAS,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IACvD,SAAS,EAAE,KAAA,EAAO,MAAM,OAAA,IAAW,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IAC3D,YAAY,EAAE,KAAA,EAAO,MAAM,UAAA,IAAc,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IACjE,kBAAA,EAAoB;AAAA,MAClB,KAAA,EAAO,MAAM,kBAAA,IAAsB,IAAA;AAAA,MACnC,UAAA,EAAY;AAAA,KACd;AAAA,IACA,eAAe,EAAE,KAAA,EAAO,MAAM,aAAA,IAAiB,IAAA,EAAM,YAAY,KAAA;AAAM,GACzE;AACA,EAAA,MAAM,QAAA,GAAW,gBAAA;AAMjB,EAAA,MAAM,IAAA,GAAO,EAAE,GAAG,KAAA,EAAM;AAGxB,EAAA,MAAM,aAAA,GAAgB,EAA4B,IAAA,EAAK;AAGvD,EAAA,IAAI,CAAC,QAAA,CAAS,UAAA,CAAW,KAAA,EAAO;AAC9B,IAAA,QAAA,CAAS,UAAA,CAAW,KAAA,GAAQ,MAAM,iBAAA,CAAkB;AAAA,MAClD,UAAA,EAAY,aAAA,CAAc,QAAA,CAAS,UAAA,CAAW,KAAK;AAAA,KACpD,CAAA;AAAA,EACH;AACA,EAAA,IAAI,CAAC,QAAA,CAAS,YAAA,CAAa,KAAA,EAAO;AAChC,IAAA,QAAA,CAAS,YAAA,CAAa,KAAA,GAAQ,UAAA,CAAW,QAAA,CAAS,UAAU,KAAK,CAAA;AAAA,EACnE;AACA,EAAA,IAAI,CAAC,QAAA,CAAS,UAAA,CAAW,KAAA,EAAO;AAC9B,IAAA,QAAA,CAAS,WAAW,KAAA,GAClB,6CAAA;AAAA,EACJ;AACA,EAAA,IAAI,CAAC,QAAA,CAAS,kBAAA,CAAmB,KAAA,EAAO;AACtC,IAAA,QAAA,CAAS,mBAAmB,KAAA,GAC1B,6CAAA;AAAA,EACJ;AACA,EAAA,IAAI,CAAC,QAAA,CAAS,aAAA,CAAc,KAAA,EAAO;AACjC,IAAA,QAAA,CAAS,cAAc,KAAA,GACrB,kCAAA;AAAA,EACJ;AACA,EAAA,IAAI,CAAC,KAAK,QAAA,EAAU;AAClB,IAAA,IAAA,CAAK,QAAA,GAAW,gBAAgB,aAAa,CAAA;AAAA,EAC/C;AACA,EAAA,IAAI,CAAC,KAAK,WAAA,EAAa;AACrB,IAAA,IAAA,CAAK,WAAA,GAAc,mBAAmB,aAAa,CAAA;AAAA,EACrD;AAGA,EAAA,MAAM,iBAAA,GAAA,CAAoC,IAAA,CAAK,KAAA,IAAS,EAAC,EAAG,GAAA;AAAA,IAC1D,CAACkC,QAAAA,MAAa,EAAE,SAAAA,QAAAA,EAAS,IAAA,EAAMS,YAAY,QAAA,EAAS;AAAA,GACtD;AAEA,EAAA,MAAM,cAAA,GAAiB,qBAAA,CAAsB,cAA2B,CAAA;AACxE,EAAA,OAAO,OAAO,MAAA,CAAO;AAAA,IACnB,QAAA,EAAU;AAAA,MACR,cAAA,CAAe,SAAS,UAAU,CAAA;AAAA,MAClC,cAAA,CAAe,SAAS,SAAS,CAAA;AAAA,MACjC,cAAA,CAAe,SAAS,YAAY,CAAA;AAAA,MACpC,cAAA,CAAe,SAAS,UAAU,CAAA;AAAA,MAClC,cAAA,CAAe,SAAS,KAAK,CAAA;AAAA,MAC7B,cAAA,CAAe,SAAS,OAAO,CAAA;AAAA,MAC/B,cAAA,CAAe,SAAS,UAAU,CAAA;AAAA,MAClC,cAAA,CAAe,SAAS,kBAAkB,CAAA;AAAA,MAC1C,cAAA,CAAe,SAAS,aAAa,CAAA;AAAA,MACrC,GAAG;AAAA,KACL;AAAA,IACA,IAAA,EAAM,0CAAyC,CAAE,MAAA;AAAA,MAC/C;AAAA,KACF;AAAA,IACA;AAAA,GAYD,CAAA;AACH;AA+BO,SAAS,6BAAA,CAYd,OAWA,MAAA,EAYA;AAEA,EAAA,MAAM,cAAA,GACJ,QAAQ,cAAA,IAAkB,6BAAA;AAG5B,EAAA,MAAM,gBAAA,GAAmB;AAAA,IACvB,YAAY,EAAE,KAAA,EAAO,MAAM,UAAA,IAAc,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IACjE,WAAW,EAAE,KAAA,EAAO,MAAM,SAAA,IAAa,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IAC/D,cAAc,EAAE,KAAA,EAAO,MAAM,YAAA,IAAgB,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IACrE,YAAY,EAAE,KAAA,EAAO,MAAM,UAAA,IAAc,IAAA,EAAM,YAAY,IAAA,EAAK;AAAA,IAChE,OAAO,EAAE,KAAA,EAAO,MAAM,KAAA,IAAS,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IACvD,SAAS,EAAE,KAAA,EAAO,MAAM,OAAA,IAAW,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IAC3D,YAAY,EAAE,KAAA,EAAO,MAAM,UAAA,IAAc,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IACjE,kBAAA,EAAoB;AAAA,MAClB,KAAA,EAAO,MAAM,kBAAA,IAAsB,IAAA;AAAA,MACnC,UAAA,EAAY;AAAA,KACd;AAAA,IACA,eAAe,EAAE,KAAA,EAAO,MAAM,aAAA,IAAiB,IAAA,EAAM,YAAY,KAAA;AAAM,GACzE;AACA,EAAA,MAAM,QAAA,GAAW,gBAAA;AAMjB,EAAA,MAAM,IAAA,GAAO,EAAE,GAAG,KAAA,EAAM;AAGxB,EAAA,MAAM,aAAA,GAAgB,EAA4B,IAAA,EAAK;AAGvD,EAAA,IAAI,CAAC,QAAA,CAAS,YAAA,CAAa,KAAA,EAAO;AAChC,IAAA,QAAA,CAAS,YAAA,CAAa,KAAA,GAAQ,UAAA,CAAW,QAAA,CAAS,UAAU,KAAK,CAAA;AAAA,EACnE;AACA,EAAA,IAAI,CAAC,QAAA,CAAS,UAAA,CAAW,KAAA,EAAO;AAC9B,IAAA,QAAA,CAAS,WAAW,KAAA,GAClB,6CAAA;AAAA,EACJ;AACA,EAAA,IAAI,CAAC,QAAA,CAAS,kBAAA,CAAmB,KAAA,EAAO;AACtC,IAAA,QAAA,CAAS,mBAAmB,KAAA,GAC1B,6CAAA;AAAA,EACJ;AACA,EAAA,IAAI,CAAC,QAAA,CAAS,aAAA,CAAc,KAAA,EAAO;AACjC,IAAA,QAAA,CAAS,cAAc,KAAA,GACrB,kCAAA;AAAA,EACJ;AACA,EAAA,IAAI,CAAC,KAAK,QAAA,EAAU;AAClB,IAAA,IAAA,CAAK,QAAA,GAAW,gBAAgB,aAAa,CAAA;AAAA,EAC/C;AACA,EAAA,IAAI,CAAC,KAAK,WAAA,EAAa;AACrB,IAAA,IAAA,CAAK,WAAA,GAAc,mBAAmB,aAAa,CAAA;AAAA,EACrD;AAGA,EAAA,MAAM,iBAAA,GAAA,CAAoC,IAAA,CAAK,KAAA,IAAS,EAAC,EAAG,GAAA;AAAA,IAC1D,CAACT,QAAAA,MAAa,EAAE,SAAAA,QAAAA,EAAS,IAAA,EAAMS,YAAY,QAAA,EAAS;AAAA,GACtD;AAEA,EAAA,MAAM,cAAA,GAAiB,qBAAA,CAAsB,cAA2B,CAAA;AACxE,EAAA,OAAO,OAAO,MAAA,CAAO;AAAA,IACnB,QAAA,EAAU;AAAA,MACR,cAAA,CAAe,SAAS,UAAU,CAAA;AAAA,MAClC,cAAA,CAAe,SAAS,SAAS,CAAA;AAAA,MACjC,cAAA,CAAe,SAAS,YAAY,CAAA;AAAA,MACpC,cAAA,CAAe,SAAS,UAAU,CAAA;AAAA,MAClC,cAAA,CAAe,SAAS,KAAK,CAAA;AAAA,MAC7B,cAAA,CAAe,SAAS,OAAO,CAAA;AAAA,MAC/B,cAAA,CAAe,SAAS,UAAU,CAAA;AAAA,MAClC,cAAA,CAAe,SAAS,kBAAkB,CAAA;AAAA,MAC1C,cAAA,CAAe,SAAS,aAAa,CAAA;AAAA,MACrC,GAAG;AAAA,KACL;AAAA,IACA,IAAA,EAAM,0CAAyC,CAAE,MAAA;AAAA,MAC/C;AAAA,KACF;AAAA,IACA;AAAA,GAYD,CAAA;AACH;AAqBO,SAAS,gCAId,WAAA,EAG2D;AAC3D,EAAA,IAAI,WAAA,CAAY,QAAA,CAAS,MAAA,GAAS,CAAA,EAAG;AAEnC,IAAA,MAAM,IAAI,MAAM,qBAAqB,CAAA;AAAA,EACvC;AACA,EAAA,IAAI,YAAA,GAAe,CAAA;AACnB,EAAA,MAAM,iBAAiB,MAAM;AAC3B,IAAA,MAAM,WAAA,GAAe,WAAA,CAAY,QAAA,CAA2B,YAAY,CAAA;AACxE,IAAA,YAAA,IAAgB,CAAA;AAChB,IAAA,OAAO,WAAA;AAAA,EACT,CAAA;AACA,EAAA,OAAO;AAAA,IACL,gBAAgB,WAAA,CAAY,cAAA;AAAA,IAC5B,QAAA,EAAU;AAAA,MACR,YAAY,cAAA,EAAe;AAAA,MAC3B,WAAW,cAAA,EAAe;AAAA,MAC1B,cAAc,cAAA,EAAe;AAAA,MAC7B,YAAY,cAAA,EAAe;AAAA,MAC3B,OAAO,cAAA,EAAe;AAAA,MACtB,SAAS,cAAA,EAAe;AAAA,MACxB,YAAY,cAAA,EAAe;AAAA,MAC3B,oBAAoB,cAAA,EAAe;AAAA,MACnC,eAAe,cAAA;AAAe,KAChC;AAAA,IACA,IAAA,EAAM,wCAAA,EAAyC,CAAE,MAAA,CAAO,YAAY,IAAI;AAAA,GAC1E;AACF;ACpeO,IAAM,iCAAA,GAAoC,IAAI,UAAA,CAAW;AAAA,EAC9D,GAAA;AAAA,EAAK,GAAA;AAAA,EAAK,EAAA;AAAA,EAAI,GAAA;AAAA,EAAK,GAAA;AAAA,EAAK,GAAA;AAAA,EAAK,GAAA;AAAA,EAAK;AACpC,CAAC;AAEM,SAAS,sCAAA,GAAyC;AACvD,EAAA,OAAOb,cAAAA,CAAeC,eAAAA,EAAgB,EAAG,CAAC,CAAA,CAAE,MAAA;AAAA,IAC1C;AAAA,GACF;AACF;AA4EO,SAAS,0CAAA,GAA4F;AAC1G,EAAA,OAAOpB,gBAAAA;AAAA,IACLV,gBAAAA,CAAiB;AAAA,MACf,CAAC,eAAA,EAAiB6B,cAAAA,CAAeC,eAAAA,EAAgB,EAAG,CAAC,CAAC,CAAA;AAAA,MACtD,CAAC,MAAA,EAAQD,cAAAA,CAAeC,eAAAA,EAAgB,EAAG,EAAE,CAAC,CAAA;AAAA,MAC9C;AAAA,QACE,eAAA;AAAA,QACAhB,gBAAAA,CAAiBe,cAAAA,CAAeC,eAAAA,EAAgB,EAAG,EAAE,CAAC;AAAA,OACxD;AAAA,MACA,CAAC,OAAA,EAAShB,gBAAAA,CAAiBP,YAAAA,EAAc,CAAC,CAAA;AAAA,MAC1C,CAAC,OAAA,EAASD,aAAAA,EAAe,CAAA;AAAA,MACzB,CAAC,OAAA,EAASM,aAAAA,EAAe,CAAA;AAAA,MACzB,CAAC,UAAA,EAAY,wBAAA,EAA0B;AAAA,KACxC,CAAA;AAAA,IACD,CAAC,KAAA,MAAW;AAAA,MACV,GAAG,KAAA;AAAA,MACH,aAAA,EAAe,iCAAA;AAAA,MACf,aAAA,EAAe,KAAA,CAAM,aAAA,IAAiBa,IAAAA,EAAK;AAAA,MAC3C,KAAA,EAAO,KAAA,CAAM,KAAA,IAASA,IAAAA;AAAK,KAC7B;AAAA,GACF;AACF;AAEO,SAAS,0CAAA,GAAwF;AACtG,EAAA,OAAOvB,gBAAAA,CAAiB;AAAA,IACtB,CAAC,eAAA,EAAiB6B,cAAAA,CAAeC,eAAAA,EAAgB,EAAG,CAAC,CAAC,CAAA;AAAA,IACtD,CAAC,MAAA,EAAQD,cAAAA,CAAeC,eAAAA,EAAgB,EAAG,EAAE,CAAC,CAAA;AAAA,IAC9C,CAAC,iBAAiBX,gBAAAA,CAAiBU,cAAAA,CAAeC,iBAAgB,EAAG,EAAE,CAAC,CAAC,CAAA;AAAA,IACzE,CAAC,OAAA,EAASX,gBAAAA,CAAiBb,YAAAA,EAAc,CAAC,CAAA;AAAA,IAC1C,CAAC,OAAA,EAASmB,aAAAA,EAAe,CAAA;AAAA,IACzB,CAAC,OAAA,EAASR,aAAAA,EAAe,CAAA;AAAA,IACzB,CAAC,UAAA,EAAY,wBAAA,EAA0B;AAAA,GACxC,CAAA;AACH;AAEO,SAAS,wCAAA,GAGd;AACA,EAAA,OAAOpB,YAAAA;AAAA,IACL,0CAAA,EAA2C;AAAA,IAC3C,0CAAA;AAA2C,GAC7C;AACF;AAiCA,eAAsB,oCAAA,CAYpB,OAWA,MAAA,EAcA;AAEA,EAAA,MAAM,cAAA,GACJ,QAAQ,cAAA,IAAkB,6BAAA;AAG5B,EAAA,MAAM,gBAAA,GAAmB;AAAA,IACvB,YAAY,EAAE,KAAA,EAAO,MAAM,UAAA,IAAc,IAAA,EAAM,YAAY,IAAA,EAAK;AAAA,IAChE,OAAO,EAAE,KAAA,EAAO,MAAM,KAAA,IAAS,IAAA,EAAM,YAAY,IAAA,EAAK;AAAA,IACtD,SAAS,EAAE,KAAA,EAAO,MAAM,OAAA,IAAW,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IAC3D,WAAW,EAAE,KAAA,EAAO,MAAM,SAAA,IAAa,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IAC/D,cAAc,EAAE,KAAA,EAAO,MAAM,YAAA,IAAgB,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IACrE,YAAY,EAAE,KAAA,EAAO,MAAM,UAAA,IAAc,IAAA,EAAM,YAAY,IAAA,EAAK;AAAA,IAChE,YAAY,EAAE,KAAA,EAAO,MAAM,UAAA,IAAc,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IACjE,kBAAA,EAAoB;AAAA,MAClB,KAAA,EAAO,MAAM,kBAAA,IAAsB,IAAA;AAAA,MACnC,UAAA,EAAY;AAAA,KACd;AAAA,IACA,eAAe,EAAE,KAAA,EAAO,MAAM,aAAA,IAAiB,IAAA,EAAM,YAAY,KAAA;AAAM,GACzE;AACA,EAAA,MAAM,QAAA,GAAW,gBAAA;AAMjB,EAAA,MAAM,IAAA,GAAO,EAAE,GAAG,KAAA,EAAM;AAGxB,EAAA,IAAI,CAAC,QAAA,CAAS,UAAA,CAAW,KAAA,EAAO;AAC9B,IAAA,QAAA,CAAS,UAAA,CAAW,KAAA,GAAQ,MAAM,iBAAA,CAAkB;AAAA,MAClD,UAAA,EAAY,aAAA,CAAc,QAAA,CAAS,UAAA,CAAW,KAAK;AAAA,KACpD,CAAA;AAAA,EACH;AACA,EAAA,IAAI,CAAC,QAAA,CAAS,UAAA,CAAW,KAAA,EAAO;AAC9B,IAAA,QAAA,CAAS,WAAW,KAAA,GAClB,6CAAA;AAAA,EACJ;AACA,EAAA,IAAI,CAAC,QAAA,CAAS,kBAAA,CAAmB,KAAA,EAAO;AACtC,IAAA,QAAA,CAAS,mBAAmB,KAAA,GAC1B,6CAAA;AAAA,EACJ;AACA,EAAA,IAAI,CAAC,QAAA,CAAS,aAAA,CAAc,KAAA,EAAO;AACjC,IAAA,QAAA,CAAS,cAAc,KAAA,GACrB,kCAAA;AAAA,EACJ;AAGA,EAAA,MAAM,iBAAA,GAAA,CAAoC,IAAA,CAAK,KAAA,IAAS,EAAC,EAAG,GAAA;AAAA,IAC1D,CAACkC,QAAAA,MAAa,EAAE,SAAAA,QAAAA,EAAS,IAAA,EAAMS,YAAY,QAAA,EAAS;AAAA,GACtD;AAEA,EAAA,MAAM,cAAA,GAAiB,qBAAA,CAAsB,cAA2B,CAAA;AACxE,EAAA,OAAO,OAAO,MAAA,CAAO;AAAA,IACnB,QAAA,EAAU;AAAA,MACR,cAAA,CAAe,SAAS,UAAU,CAAA;AAAA,MAClC,cAAA,CAAe,SAAS,KAAK,CAAA;AAAA,MAC7B,cAAA,CAAe,SAAS,OAAO,CAAA;AAAA,MAC/B,cAAA,CAAe,SAAS,SAAS,CAAA;AAAA,MACjC,cAAA,CAAe,SAAS,YAAY,CAAA;AAAA,MACpC,cAAA,CAAe,SAAS,UAAU,CAAA;AAAA,MAClC,cAAA,CAAe,SAAS,UAAU,CAAA;AAAA,MAClC,cAAA,CAAe,SAAS,kBAAkB,CAAA;AAAA,MAC1C,cAAA,CAAe,SAAS,aAAa,CAAA;AAAA,MACrC,GAAG;AAAA,KACL;AAAA,IACA,IAAA,EAAM,4CAA2C,CAAE,MAAA;AAAA,MACjD;AAAA,KACF;AAAA,IACA;AAAA,GAYD,CAAA;AACH;AAiCO,SAAS,+BAAA,CAYd,OAWA,MAAA,EAYA;AAEA,EAAA,MAAM,cAAA,GACJ,QAAQ,cAAA,IAAkB,6BAAA;AAG5B,EAAA,MAAM,gBAAA,GAAmB;AAAA,IACvB,YAAY,EAAE,KAAA,EAAO,MAAM,UAAA,IAAc,IAAA,EAAM,YAAY,IAAA,EAAK;AAAA,IAChE,OAAO,EAAE,KAAA,EAAO,MAAM,KAAA,IAAS,IAAA,EAAM,YAAY,IAAA,EAAK;AAAA,IACtD,SAAS,EAAE,KAAA,EAAO,MAAM,OAAA,IAAW,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IAC3D,WAAW,EAAE,KAAA,EAAO,MAAM,SAAA,IAAa,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IAC/D,cAAc,EAAE,KAAA,EAAO,MAAM,YAAA,IAAgB,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IACrE,YAAY,EAAE,KAAA,EAAO,MAAM,UAAA,IAAc,IAAA,EAAM,YAAY,IAAA,EAAK;AAAA,IAChE,YAAY,EAAE,KAAA,EAAO,MAAM,UAAA,IAAc,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IACjE,kBAAA,EAAoB;AAAA,MAClB,KAAA,EAAO,MAAM,kBAAA,IAAsB,IAAA;AAAA,MACnC,UAAA,EAAY;AAAA,KACd;AAAA,IACA,eAAe,EAAE,KAAA,EAAO,MAAM,aAAA,IAAiB,IAAA,EAAM,YAAY,KAAA;AAAM,GACzE;AACA,EAAA,MAAM,QAAA,GAAW,gBAAA;AAMjB,EAAA,MAAM,IAAA,GAAO,EAAE,GAAG,KAAA,EAAM;AAGxB,EAAA,IAAI,CAAC,QAAA,CAAS,UAAA,CAAW,KAAA,EAAO;AAC9B,IAAA,QAAA,CAAS,WAAW,KAAA,GAClB,6CAAA;AAAA,EACJ;AACA,EAAA,IAAI,CAAC,QAAA,CAAS,kBAAA,CAAmB,KAAA,EAAO;AACtC,IAAA,QAAA,CAAS,mBAAmB,KAAA,GAC1B,6CAAA;AAAA,EACJ;AACA,EAAA,IAAI,CAAC,QAAA,CAAS,aAAA,CAAc,KAAA,EAAO;AACjC,IAAA,QAAA,CAAS,cAAc,KAAA,GACrB,kCAAA;AAAA,EACJ;AAGA,EAAA,MAAM,iBAAA,GAAA,CAAoC,IAAA,CAAK,KAAA,IAAS,EAAC,EAAG,GAAA;AAAA,IAC1D,CAACT,QAAAA,MAAa,EAAE,SAAAA,QAAAA,EAAS,IAAA,EAAMS,YAAY,QAAA,EAAS;AAAA,GACtD;AAEA,EAAA,MAAM,cAAA,GAAiB,qBAAA,CAAsB,cAA2B,CAAA;AACxE,EAAA,OAAO,OAAO,MAAA,CAAO;AAAA,IACnB,QAAA,EAAU;AAAA,MACR,cAAA,CAAe,SAAS,UAAU,CAAA;AAAA,MAClC,cAAA,CAAe,SAAS,KAAK,CAAA;AAAA,MAC7B,cAAA,CAAe,SAAS,OAAO,CAAA;AAAA,MAC/B,cAAA,CAAe,SAAS,SAAS,CAAA;AAAA,MACjC,cAAA,CAAe,SAAS,YAAY,CAAA;AAAA,MACpC,cAAA,CAAe,SAAS,UAAU,CAAA;AAAA,MAClC,cAAA,CAAe,SAAS,UAAU,CAAA;AAAA,MAClC,cAAA,CAAe,SAAS,kBAAkB,CAAA;AAAA,MAC1C,cAAA,CAAe,SAAS,aAAa,CAAA;AAAA,MACrC,GAAG;AAAA,KACL;AAAA,IACA,IAAA,EAAM,4CAA2C,CAAE,MAAA;AAAA,MACjD;AAAA,KACF;AAAA,IACA;AAAA,GAYD,CAAA;AACH;AAuBO,SAAS,kCAId,WAAA,EAG6D;AAC7D,EAAA,IAAI,WAAA,CAAY,QAAA,CAAS,MAAA,GAAS,CAAA,EAAG;AAEnC,IAAA,MAAM,IAAI,MAAM,qBAAqB,CAAA;AAAA,EACvC;AACA,EAAA,IAAI,YAAA,GAAe,CAAA;AACnB,EAAA,MAAM,iBAAiB,MAAM;AAC3B,IAAA,MAAM,WAAA,GAAe,WAAA,CAAY,QAAA,CAA2B,YAAY,CAAA;AACxE,IAAA,YAAA,IAAgB,CAAA;AAChB,IAAA,OAAO,WAAA;AAAA,EACT,CAAA;AACA,EAAA,MAAM,yBAAyB,MAAM;AACnC,IAAA,MAAM,cAAc,cAAA,EAAe;AACnC,IAAA,OAAO,WAAA,CAAY,OAAA,KAAY,6BAAA,GAC3B,MAAA,GACA,WAAA;AAAA,EACN,CAAA;AACA,EAAA,OAAO;AAAA,IACL,gBAAgB,WAAA,CAAY,cAAA;AAAA,IAC5B,QAAA,EAAU;AAAA,MACR,YAAY,cAAA,EAAe;AAAA,MAC3B,OAAO,cAAA,EAAe;AAAA,MACtB,SAAS,sBAAA,EAAuB;AAAA,MAChC,WAAW,cAAA,EAAe;AAAA,MAC1B,cAAc,sBAAA,EAAuB;AAAA,MACrC,YAAY,cAAA,EAAe;AAAA,MAC3B,YAAY,cAAA,EAAe;AAAA,MAC3B,oBAAoB,cAAA,EAAe;AAAA,MACnC,eAAe,cAAA;AAAe,KAChC;AAAA,IACA,IAAA,EAAM,0CAAA,EAA2C,CAAE,MAAA,CAAO,YAAY,IAAI;AAAA,GAC5E;AACF;ACpeO,IAAM,kCAAA,GAAqC,IAAI,UAAA,CAAW;AAAA,EAC/D,EAAA;AAAA,EAAI,EAAA;AAAA,EAAI,GAAA;AAAA,EAAK,EAAA;AAAA,EAAI,EAAA;AAAA,EAAI,EAAA;AAAA,EAAI,EAAA;AAAA,EAAI;AAC/B,CAAC;AAEM,SAAS,sCAAA,GAAyC;AACvD,EAAA,OAAOb,cAAAA,CAAeC,eAAAA,EAAgB,EAAG,CAAC,CAAA,CAAE,MAAA;AAAA,IAC1C;AAAA,GACF;AACF;AAsFO,SAAS,0CAAA,GAA4F;AAC1G,EAAA,OAAOpB,gBAAAA;AAAA,IACLV,gBAAAA,CAAiB;AAAA,MACf,CAAC,eAAA,EAAiB6B,cAAAA,CAAeC,eAAAA,EAAgB,EAAG,CAAC,CAAC,CAAA;AAAA,MACtD,CAAC,MAAA,EAAQD,cAAAA,CAAeC,eAAAA,EAAgB,EAAG,EAAE,CAAC,CAAA;AAAA,MAC9C,CAAC,UAAA,EAAYD,cAAAA,CAAeC,eAAAA,EAAgB,EAAG,EAAE,CAAC,CAAA;AAAA,MAClD,CAAC,aAAA,EAAeD,cAAAA,CAAeC,eAAAA,EAAgB,EAAG,EAAE,CAAC,CAAA;AAAA,MACrD;AAAA,QACE,uBAAA;AAAA,QACAhB,gBAAAA,CAAiBe,cAAAA,CAAeC,eAAAA,EAAgB,EAAG,EAAE,CAAC;AAAA,OACxD;AAAA,MACA,CAAC,OAAA,EAAShB,gBAAAA,CAAiBP,YAAAA,EAAc,CAAC,CAAA;AAAA,MAC1C,CAAC,OAAA,EAASD,aAAAA,EAAe,CAAA;AAAA,MACzB,CAAC,OAAA,EAASM,aAAAA,EAAe,CAAA;AAAA,MACzB;AAAA,QACE,cAAA;AAAA,QACAE,gBAAAA;AAAA,UACEH,oBAAAA,CAAqBmB,eAAAA,EAAgB,EAAGlB,aAAAA,EAAe;AAAA;AACzD,OACF;AAAA,MACA,CAAC,oBAAA,EAAsBE,gBAAAA,CAAiB,yBAAA,EAA2B,CAAC;AAAA,KACrE,CAAA;AAAA,IACD,CAAC,KAAA,MAAW;AAAA,MACV,GAAG,KAAA;AAAA,MACH,aAAA,EAAe,kCAAA;AAAA,MACf,qBAAA,EAAuB,KAAA,CAAM,qBAAA,IAAyBW,IAAAA,EAAK;AAAA,MAC3D,KAAA,EAAO,KAAA,CAAM,KAAA,IAASA,IAAAA,EAAK;AAAA,MAC3B,YAAA,EAAc,KAAA,CAAM,YAAA,IAAgBA,IAAAA,EAAK;AAAA,MACzC,kBAAA,EAAoB,KAAA,CAAM,kBAAA,IAAsBA,IAAAA;AAAK,KACvD;AAAA,GACF;AACF;AAEO,SAAS,0CAAA,GAAwF;AACtG,EAAA,OAAOvB,gBAAAA,CAAiB;AAAA,IACtB,CAAC,eAAA,EAAiB6B,cAAAA,CAAeC,eAAAA,EAAgB,EAAG,CAAC,CAAC,CAAA;AAAA,IACtD,CAAC,MAAA,EAAQD,cAAAA,CAAeC,eAAAA,EAAgB,EAAG,EAAE,CAAC,CAAA;AAAA,IAC9C,CAAC,UAAA,EAAYD,cAAAA,CAAeC,eAAAA,EAAgB,EAAG,EAAE,CAAC,CAAA;AAAA,IAClD,CAAC,aAAA,EAAeD,cAAAA,CAAeC,eAAAA,EAAgB,EAAG,EAAE,CAAC,CAAA;AAAA,IACrD;AAAA,MACE,uBAAA;AAAA,MACAX,gBAAAA,CAAiBU,cAAAA,CAAeC,eAAAA,EAAgB,EAAG,EAAE,CAAC;AAAA,KACxD;AAAA,IACA,CAAC,OAAA,EAASX,gBAAAA,CAAiBb,YAAAA,EAAc,CAAC,CAAA;AAAA,IAC1C,CAAC,OAAA,EAASmB,aAAAA,EAAe,CAAA;AAAA,IACzB,CAAC,OAAA,EAASR,aAAAA,EAAe,CAAA;AAAA,IACzB;AAAA,MACE,cAAA;AAAA,MACAE,gBAAAA;AAAA,QACEJ,oBAAAA,CAAqBe,eAAAA,EAAgB,EAAGb,aAAAA,EAAe;AAAA;AACzD,KACF;AAAA,IACA,CAAC,oBAAA,EAAsBE,gBAAAA,CAAiB,yBAAA,EAA2B,CAAC;AAAA,GACrE,CAAA;AACH;AAEO,SAAS,wCAAA,GAGd;AACA,EAAA,OAAOtB,YAAAA;AAAA,IACL,0CAAA,EAA2C;AAAA,IAC3C,0CAAA;AAA2C,GAC7C;AACF;AAwCA,eAAsB,oCAAA,CAapB,OAYA,MAAA,EAeA;AAEA,EAAA,MAAM,cAAA,GACJ,QAAQ,cAAA,IAAkB,6BAAA;AAG5B,EAAA,MAAM,gBAAA,GAAmB;AAAA,IACvB,YAAY,EAAE,KAAA,EAAO,MAAM,UAAA,IAAc,IAAA,EAAM,YAAY,IAAA,EAAK;AAAA,IAChE,OAAO,EAAE,KAAA,EAAO,MAAM,KAAA,IAAS,IAAA,EAAM,YAAY,IAAA,EAAK;AAAA,IACtD,WAAW,EAAE,KAAA,EAAO,MAAM,SAAA,IAAa,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IAC/D,WAAW,EAAE,KAAA,EAAO,MAAM,SAAA,IAAa,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IAC/D,cAAc,EAAE,KAAA,EAAO,MAAM,YAAA,IAAgB,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IACrE,YAAY,EAAE,KAAA,EAAO,MAAM,UAAA,IAAc,IAAA,EAAM,YAAY,IAAA,EAAK;AAAA,IAChE,gBAAgB,EAAE,KAAA,EAAO,MAAM,cAAA,IAAkB,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IACzE,YAAY,EAAE,KAAA,EAAO,MAAM,UAAA,IAAc,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IACjE,kBAAA,EAAoB;AAAA,MAClB,KAAA,EAAO,MAAM,kBAAA,IAAsB,IAAA;AAAA,MACnC,UAAA,EAAY;AAAA,KACd;AAAA,IACA,eAAe,EAAE,KAAA,EAAO,MAAM,aAAA,IAAiB,IAAA,EAAM,YAAY,KAAA;AAAM,GACzE;AACA,EAAA,MAAM,QAAA,GAAW,gBAAA;AAMjB,EAAA,MAAM,IAAA,GAAO,EAAE,GAAG,KAAA,EAAM;AAGxB,EAAA,IAAI,CAAC,QAAA,CAAS,UAAA,CAAW,KAAA,EAAO;AAC9B,IAAA,QAAA,CAAS,UAAA,CAAW,KAAA,GAAQ,MAAM,iBAAA,CAAkB;AAAA,MAClD,UAAA,EAAY,aAAA,CAAc,QAAA,CAAS,UAAA,CAAW,KAAK;AAAA,KACpD,CAAA;AAAA,EACH;AACA,EAAA,IAAI,CAAC,QAAA,CAAS,UAAA,CAAW,KAAA,EAAO;AAC9B,IAAA,QAAA,CAAS,WAAW,KAAA,GAClB,6CAAA;AAAA,EACJ;AACA,EAAA,IAAI,CAAC,QAAA,CAAS,kBAAA,CAAmB,KAAA,EAAO;AACtC,IAAA,QAAA,CAAS,mBAAmB,KAAA,GAC1B,6CAAA;AAAA,EACJ;AACA,EAAA,IAAI,CAAC,QAAA,CAAS,aAAA,CAAc,KAAA,EAAO;AACjC,IAAA,QAAA,CAAS,cAAc,KAAA,GACrB,kCAAA;AAAA,EACJ;AAGA,EAAA,MAAM,iBAAA,GAAA,CAAoC,IAAA,CAAK,KAAA,IAAS,EAAC,EAAG,GAAA;AAAA,IAC1D,CAACkC,QAAAA,MAAa,EAAE,SAAAA,QAAAA,EAAS,IAAA,EAAMS,YAAY,QAAA,EAAS;AAAA,GACtD;AAEA,EAAA,MAAM,cAAA,GAAiB,qBAAA,CAAsB,cAA2B,CAAA;AACxE,EAAA,OAAO,OAAO,MAAA,CAAO;AAAA,IACnB,QAAA,EAAU;AAAA,MACR,cAAA,CAAe,SAAS,UAAU,CAAA;AAAA,MAClC,cAAA,CAAe,SAAS,KAAK,CAAA;AAAA,MAC7B,cAAA,CAAe,SAAS,SAAS,CAAA;AAAA,MACjC,cAAA,CAAe,SAAS,SAAS,CAAA;AAAA,MACjC,cAAA,CAAe,SAAS,YAAY,CAAA;AAAA,MACpC,cAAA,CAAe,SAAS,UAAU,CAAA;AAAA,MAClC,cAAA,CAAe,SAAS,cAAc,CAAA;AAAA,MACtC,cAAA,CAAe,SAAS,UAAU,CAAA;AAAA,MAClC,cAAA,CAAe,SAAS,kBAAkB,CAAA;AAAA,MAC1C,cAAA,CAAe,SAAS,aAAa,CAAA;AAAA,MACrC,GAAG;AAAA,KACL;AAAA,IACA,IAAA,EAAM,4CAA2C,CAAE,MAAA;AAAA,MACjD;AAAA,KACF;AAAA,IACA;AAAA,GAaD,CAAA;AACH;AAwCO,SAAS,+BAAA,CAad,OAYA,MAAA,EAaA;AAEA,EAAA,MAAM,cAAA,GACJ,QAAQ,cAAA,IAAkB,6BAAA;AAG5B,EAAA,MAAM,gBAAA,GAAmB;AAAA,IACvB,YAAY,EAAE,KAAA,EAAO,MAAM,UAAA,IAAc,IAAA,EAAM,YAAY,IAAA,EAAK;AAAA,IAChE,OAAO,EAAE,KAAA,EAAO,MAAM,KAAA,IAAS,IAAA,EAAM,YAAY,IAAA,EAAK;AAAA,IACtD,WAAW,EAAE,KAAA,EAAO,MAAM,SAAA,IAAa,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IAC/D,WAAW,EAAE,KAAA,EAAO,MAAM,SAAA,IAAa,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IAC/D,cAAc,EAAE,KAAA,EAAO,MAAM,YAAA,IAAgB,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IACrE,YAAY,EAAE,KAAA,EAAO,MAAM,UAAA,IAAc,IAAA,EAAM,YAAY,IAAA,EAAK;AAAA,IAChE,gBAAgB,EAAE,KAAA,EAAO,MAAM,cAAA,IAAkB,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IACzE,YAAY,EAAE,KAAA,EAAO,MAAM,UAAA,IAAc,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IACjE,kBAAA,EAAoB;AAAA,MAClB,KAAA,EAAO,MAAM,kBAAA,IAAsB,IAAA;AAAA,MACnC,UAAA,EAAY;AAAA,KACd;AAAA,IACA,eAAe,EAAE,KAAA,EAAO,MAAM,aAAA,IAAiB,IAAA,EAAM,YAAY,KAAA;AAAM,GACzE;AACA,EAAA,MAAM,QAAA,GAAW,gBAAA;AAMjB,EAAA,MAAM,IAAA,GAAO,EAAE,GAAG,KAAA,EAAM;AAGxB,EAAA,IAAI,CAAC,QAAA,CAAS,UAAA,CAAW,KAAA,EAAO;AAC9B,IAAA,QAAA,CAAS,WAAW,KAAA,GAClB,6CAAA;AAAA,EACJ;AACA,EAAA,IAAI,CAAC,QAAA,CAAS,kBAAA,CAAmB,KAAA,EAAO;AACtC,IAAA,QAAA,CAAS,mBAAmB,KAAA,GAC1B,6CAAA;AAAA,EACJ;AACA,EAAA,IAAI,CAAC,QAAA,CAAS,aAAA,CAAc,KAAA,EAAO;AACjC,IAAA,QAAA,CAAS,cAAc,KAAA,GACrB,kCAAA;AAAA,EACJ;AAGA,EAAA,MAAM,iBAAA,GAAA,CAAoC,IAAA,CAAK,KAAA,IAAS,EAAC,EAAG,GAAA;AAAA,IAC1D,CAACT,QAAAA,MAAa,EAAE,SAAAA,QAAAA,EAAS,IAAA,EAAMS,YAAY,QAAA,EAAS;AAAA,GACtD;AAEA,EAAA,MAAM,cAAA,GAAiB,qBAAA,CAAsB,cAA2B,CAAA;AACxE,EAAA,OAAO,OAAO,MAAA,CAAO;AAAA,IACnB,QAAA,EAAU;AAAA,MACR,cAAA,CAAe,SAAS,UAAU,CAAA;AAAA,MAClC,cAAA,CAAe,SAAS,KAAK,CAAA;AAAA,MAC7B,cAAA,CAAe,SAAS,SAAS,CAAA;AAAA,MACjC,cAAA,CAAe,SAAS,SAAS,CAAA;AAAA,MACjC,cAAA,CAAe,SAAS,YAAY,CAAA;AAAA,MACpC,cAAA,CAAe,SAAS,UAAU,CAAA;AAAA,MAClC,cAAA,CAAe,SAAS,cAAc,CAAA;AAAA,MACtC,cAAA,CAAe,SAAS,UAAU,CAAA;AAAA,MAClC,cAAA,CAAe,SAAS,kBAAkB,CAAA;AAAA,MAC1C,cAAA,CAAe,SAAS,aAAa,CAAA;AAAA,MACrC,GAAG;AAAA,KACL;AAAA,IACA,IAAA,EAAM,4CAA2C,CAAE,MAAA;AAAA,MACjD;AAAA,KACF;AAAA,IACA;AAAA,GAaD,CAAA;AACH;AA0BO,SAAS,kCAId,WAAA,EAG6D;AAC7D,EAAA,IAAI,WAAA,CAAY,QAAA,CAAS,MAAA,GAAS,EAAA,EAAI;AAEpC,IAAA,MAAM,IAAI,MAAM,qBAAqB,CAAA;AAAA,EACvC;AACA,EAAA,IAAI,YAAA,GAAe,CAAA;AACnB,EAAA,MAAM,iBAAiB,MAAM;AAC3B,IAAA,MAAM,WAAA,GAAe,WAAA,CAAY,QAAA,CAA2B,YAAY,CAAA;AACxE,IAAA,YAAA,IAAgB,CAAA;AAChB,IAAA,OAAO,WAAA;AAAA,EACT,CAAA;AACA,EAAA,MAAM,yBAAyB,MAAM;AACnC,IAAA,MAAM,cAAc,cAAA,EAAe;AACnC,IAAA,OAAO,WAAA,CAAY,OAAA,KAAY,6BAAA,GAC3B,MAAA,GACA,WAAA;AAAA,EACN,CAAA;AACA,EAAA,OAAO;AAAA,IACL,gBAAgB,WAAA,CAAY,cAAA;AAAA,IAC5B,QAAA,EAAU;AAAA,MACR,YAAY,cAAA,EAAe;AAAA,MAC3B,OAAO,cAAA,EAAe;AAAA,MACtB,WAAW,sBAAA,EAAuB;AAAA,MAClC,WAAW,cAAA,EAAe;AAAA,MAC1B,cAAc,sBAAA,EAAuB;AAAA,MACrC,YAAY,cAAA,EAAe;AAAA,MAC3B,gBAAgB,sBAAA,EAAuB;AAAA,MACvC,YAAY,cAAA,EAAe;AAAA,MAC3B,oBAAoB,cAAA,EAAe;AAAA,MACnC,eAAe,cAAA;AAAe,KAChC;AAAA,IACA,IAAA,EAAM,0CAAA,EAA2C,CAAE,MAAA,CAAO,YAAY,IAAI;AAAA,GAC5E;AACF;ACxiBO,IAAM,6BAAA,GAAgC,IAAI,UAAA,CAAW;AAAA,EAC1D,GAAA;AAAA,EAAK,GAAA;AAAA,EAAK,EAAA;AAAA,EAAI,GAAA;AAAA,EAAK,EAAA;AAAA,EAAI,EAAA;AAAA,EAAI,GAAA;AAAA,EAAK;AAClC,CAAC;AAEM,SAAS,mCAAA,GAAsC;AACpD,EAAA,OAAOb,cAAAA,CAAeC,eAAAA,EAAgB,EAAG,CAAC,CAAA,CAAE,MAAA;AAAA,IAC1C;AAAA,GACF;AACF;AA8FO,SAAS,uCAAA,GAAsF;AACpG,EAAA,OAAOpB,gBAAAA;AAAA,IACLV,gBAAAA,CAAiB;AAAA,MACf,CAAC,eAAA,EAAiB6B,cAAAA,CAAeC,eAAAA,EAAgB,EAAG,CAAC,CAAC,CAAA;AAAA,MACtD,CAAC,MAAA,EAAQD,cAAAA,CAAeC,eAAAA,EAAgB,EAAG,EAAE,CAAC,CAAA;AAAA,MAC9C,CAAC,OAAA,EAASxB,aAAAA,EAAe,CAAA;AAAA,MACzB,CAAC,OAAA,EAASM,aAAAA,EAAe,CAAA;AAAA,MACzB,CAAC,iBAAA,EAAmB,sBAAA,EAAwB,CAAA;AAAA,MAC5C,CAAC,YAAA,EAAc,oBAAA,EAAsB;AAAA,KACtC,CAAA;AAAA,IACD,CAAC,KAAA,MAAW,EAAE,GAAG,KAAA,EAAO,eAAe,6BAAA,EAA8B;AAAA,GACvE;AACF;AAEO,SAAS,uCAAA,GAAkF;AAChG,EAAA,OAAOV,gBAAAA,CAAiB;AAAA,IACtB,CAAC,eAAA,EAAiB6B,cAAAA,CAAeC,eAAAA,EAAgB,EAAG,CAAC,CAAC,CAAA;AAAA,IACtD,CAAC,MAAA,EAAQD,cAAAA,CAAeC,eAAAA,EAAgB,EAAG,EAAE,CAAC,CAAA;AAAA,IAC9C,CAAC,OAAA,EAASL,aAAAA,EAAe,CAAA;AAAA,IACzB,CAAC,OAAA,EAASR,aAAAA,EAAe,CAAA;AAAA,IACzB,CAAC,iBAAA,EAAmB,sBAAA,EAAwB,CAAA;AAAA,IAC5C,CAAC,YAAA,EAAc,oBAAA,EAAsB;AAAA,GACtC,CAAA;AACH;AAEO,SAAS,qCAAA,GAGd;AACA,EAAA,OAAOpB,YAAAA;AAAA,IACL,uCAAA,EAAwC;AAAA,IACxC,uCAAA;AAAwC,GAC1C;AACF;AA4CA,eAAsB,iCAAA,CAgBpB,OAeA,MAAA,EAkBA;AAEA,EAAA,MAAM,cAAA,GACJ,QAAQ,cAAA,IAAkB,6BAAA;AAG5B,EAAA,MAAM,gBAAA,GAAmB;AAAA,IACvB,YAAY,EAAE,KAAA,EAAO,MAAM,UAAA,IAAc,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IACjE,WAAW,EAAE,KAAA,EAAO,MAAM,SAAA,IAAa,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IAC/D,gBAAgB,EAAE,KAAA,EAAO,MAAM,cAAA,IAAkB,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IACzE,kBAAA,EAAoB;AAAA,MAClB,KAAA,EAAO,MAAM,kBAAA,IAAsB,IAAA;AAAA,MACnC,UAAA,EAAY;AAAA,KACd;AAAA,IACA,4BAAA,EAA8B;AAAA,MAC5B,KAAA,EAAO,MAAM,4BAAA,IAAgC,IAAA;AAAA,MAC7C,UAAA,EAAY;AAAA,KACd;AAAA,IACA,WAAW,EAAE,KAAA,EAAO,MAAM,SAAA,IAAa,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IAC/D,cAAc,EAAE,KAAA,EAAO,MAAM,YAAA,IAAgB,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IACrE,OAAO,EAAE,KAAA,EAAO,MAAM,KAAA,IAAS,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IACvD,YAAY,EAAE,KAAA,EAAO,MAAM,UAAA,IAAc,IAAA,EAAM,YAAY,IAAA,EAAK;AAAA,IAChE,YAAY,EAAE,KAAA,EAAO,MAAM,UAAA,IAAc,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IACjE,kBAAA,EAAoB;AAAA,MAClB,KAAA,EAAO,MAAM,kBAAA,IAAsB,IAAA;AAAA,MACnC,UAAA,EAAY;AAAA,KACd;AAAA,IACA,oBAAA,EAAsB;AAAA,MACpB,KAAA,EAAO,MAAM,oBAAA,IAAwB,IAAA;AAAA,MACrC,UAAA,EAAY;AAAA,KACd;AAAA,IACA,eAAe,EAAE,KAAA,EAAO,MAAM,aAAA,IAAiB,IAAA,EAAM,YAAY,KAAA;AAAM,GACzE;AACA,EAAA,MAAM,QAAA,GAAW,gBAAA;AAMjB,EAAA,MAAM,IAAA,GAAO,EAAE,GAAG,KAAA,EAAM;AAGxB,EAAA,IAAI,CAAC,QAAA,CAAS,UAAA,CAAW,KAAA,EAAO;AAC9B,IAAA,QAAA,CAAS,UAAA,CAAW,KAAA,GAAQ,MAAM,iBAAA,CAAkB;AAAA,MAClD,UAAA,EAAY,aAAA,CAAc,QAAA,CAAS,UAAA,CAAW,KAAK;AAAA,KACpD,CAAA;AAAA,EACH;AACA,EAAA,IAAI,CAAC,QAAA,CAAS,YAAA,CAAa,KAAA,EAAO;AAChC,IAAA,QAAA,CAAS,YAAA,CAAa,KAAA,GAAQ,UAAA,CAAW,QAAA,CAAS,UAAU,KAAK,CAAA;AAAA,EACnE;AACA,EAAA,IAAI,CAAC,QAAA,CAAS,UAAA,CAAW,KAAA,EAAO;AAC9B,IAAA,QAAA,CAAS,WAAW,KAAA,GAClB,6CAAA;AAAA,EACJ;AACA,EAAA,IAAI,CAAC,QAAA,CAAS,kBAAA,CAAmB,KAAA,EAAO;AACtC,IAAA,QAAA,CAAS,mBAAmB,KAAA,GAC1B,6CAAA;AAAA,EACJ;AACA,EAAA,IAAI,CAAC,QAAA,CAAS,oBAAA,CAAqB,KAAA,EAAO;AACxC,IAAA,QAAA,CAAS,qBAAqB,KAAA,GAC5B,8CAAA;AAAA,EACJ;AACA,EAAA,IAAI,CAAC,QAAA,CAAS,aAAA,CAAc,KAAA,EAAO;AACjC,IAAA,QAAA,CAAS,cAAc,KAAA,GACrB,kCAAA;AAAA,EACJ;AAGA,EAAA,MAAM,iBAAA,GAAA,CAAoC,IAAA,CAAK,KAAA,IAAS,EAAC,EAAG,GAAA;AAAA,IAC1D,CAACkC,QAAAA,MAAa,EAAE,SAAAA,QAAAA,EAAS,IAAA,EAAMS,YAAY,QAAA,EAAS;AAAA,GACtD;AAEA,EAAA,MAAM,cAAA,GAAiB,qBAAA,CAAsB,cAA2B,CAAA;AACxE,EAAA,OAAO,OAAO,MAAA,CAAO;AAAA,IACnB,QAAA,EAAU;AAAA,MACR,cAAA,CAAe,SAAS,UAAU,CAAA;AAAA,MAClC,cAAA,CAAe,SAAS,SAAS,CAAA;AAAA,MACjC,cAAA,CAAe,SAAS,cAAc,CAAA;AAAA,MACtC,cAAA,CAAe,SAAS,kBAAkB,CAAA;AAAA,MAC1C,cAAA,CAAe,SAAS,4BAA4B,CAAA;AAAA,MACpD,cAAA,CAAe,SAAS,SAAS,CAAA;AAAA,MACjC,cAAA,CAAe,SAAS,YAAY,CAAA;AAAA,MACpC,cAAA,CAAe,SAAS,KAAK,CAAA;AAAA,MAC7B,cAAA,CAAe,SAAS,UAAU,CAAA;AAAA,MAClC,cAAA,CAAe,SAAS,UAAU,CAAA;AAAA,MAClC,cAAA,CAAe,SAAS,kBAAkB,CAAA;AAAA,MAC1C,cAAA,CAAe,SAAS,oBAAoB,CAAA;AAAA,MAC5C,cAAA,CAAe,SAAS,aAAa,CAAA;AAAA,MACrC,GAAG;AAAA,KACL;AAAA,IACA,IAAA,EAAM,yCAAwC,CAAE,MAAA;AAAA,MAC9C;AAAA,KACF;AAAA,IACA;AAAA,GAgBD,CAAA;AACH;AA4CO,SAAS,4BAAA,CAgBd,OAeA,MAAA,EAgBA;AAEA,EAAA,MAAM,cAAA,GACJ,QAAQ,cAAA,IAAkB,6BAAA;AAG5B,EAAA,MAAM,gBAAA,GAAmB;AAAA,IACvB,YAAY,EAAE,KAAA,EAAO,MAAM,UAAA,IAAc,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IACjE,WAAW,EAAE,KAAA,EAAO,MAAM,SAAA,IAAa,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IAC/D,gBAAgB,EAAE,KAAA,EAAO,MAAM,cAAA,IAAkB,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IACzE,kBAAA,EAAoB;AAAA,MAClB,KAAA,EAAO,MAAM,kBAAA,IAAsB,IAAA;AAAA,MACnC,UAAA,EAAY;AAAA,KACd;AAAA,IACA,4BAAA,EAA8B;AAAA,MAC5B,KAAA,EAAO,MAAM,4BAAA,IAAgC,IAAA;AAAA,MAC7C,UAAA,EAAY;AAAA,KACd;AAAA,IACA,WAAW,EAAE,KAAA,EAAO,MAAM,SAAA,IAAa,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IAC/D,cAAc,EAAE,KAAA,EAAO,MAAM,YAAA,IAAgB,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IACrE,OAAO,EAAE,KAAA,EAAO,MAAM,KAAA,IAAS,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IACvD,YAAY,EAAE,KAAA,EAAO,MAAM,UAAA,IAAc,IAAA,EAAM,YAAY,IAAA,EAAK;AAAA,IAChE,YAAY,EAAE,KAAA,EAAO,MAAM,UAAA,IAAc,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IACjE,kBAAA,EAAoB;AAAA,MAClB,KAAA,EAAO,MAAM,kBAAA,IAAsB,IAAA;AAAA,MACnC,UAAA,EAAY;AAAA,KACd;AAAA,IACA,oBAAA,EAAsB;AAAA,MACpB,KAAA,EAAO,MAAM,oBAAA,IAAwB,IAAA;AAAA,MACrC,UAAA,EAAY;AAAA,KACd;AAAA,IACA,eAAe,EAAE,KAAA,EAAO,MAAM,aAAA,IAAiB,IAAA,EAAM,YAAY,KAAA;AAAM,GACzE;AACA,EAAA,MAAM,QAAA,GAAW,gBAAA;AAMjB,EAAA,MAAM,IAAA,GAAO,EAAE,GAAG,KAAA,EAAM;AAGxB,EAAA,IAAI,CAAC,QAAA,CAAS,YAAA,CAAa,KAAA,EAAO;AAChC,IAAA,QAAA,CAAS,YAAA,CAAa,KAAA,GAAQ,UAAA,CAAW,QAAA,CAAS,UAAU,KAAK,CAAA;AAAA,EACnE;AACA,EAAA,IAAI,CAAC,QAAA,CAAS,UAAA,CAAW,KAAA,EAAO;AAC9B,IAAA,QAAA,CAAS,WAAW,KAAA,GAClB,6CAAA;AAAA,EACJ;AACA,EAAA,IAAI,CAAC,QAAA,CAAS,kBAAA,CAAmB,KAAA,EAAO;AACtC,IAAA,QAAA,CAAS,mBAAmB,KAAA,GAC1B,6CAAA;AAAA,EACJ;AACA,EAAA,IAAI,CAAC,QAAA,CAAS,oBAAA,CAAqB,KAAA,EAAO;AACxC,IAAA,QAAA,CAAS,qBAAqB,KAAA,GAC5B,8CAAA;AAAA,EACJ;AACA,EAAA,IAAI,CAAC,QAAA,CAAS,aAAA,CAAc,KAAA,EAAO;AACjC,IAAA,QAAA,CAAS,cAAc,KAAA,GACrB,kCAAA;AAAA,EACJ;AAGA,EAAA,MAAM,iBAAA,GAAA,CAAoC,IAAA,CAAK,KAAA,IAAS,EAAC,EAAG,GAAA;AAAA,IAC1D,CAACT,QAAAA,MAAa,EAAE,SAAAA,QAAAA,EAAS,IAAA,EAAMS,YAAY,QAAA,EAAS;AAAA,GACtD;AAEA,EAAA,MAAM,cAAA,GAAiB,qBAAA,CAAsB,cAA2B,CAAA;AACxE,EAAA,OAAO,OAAO,MAAA,CAAO;AAAA,IACnB,QAAA,EAAU;AAAA,MACR,cAAA,CAAe,SAAS,UAAU,CAAA;AAAA,MAClC,cAAA,CAAe,SAAS,SAAS,CAAA;AAAA,MACjC,cAAA,CAAe,SAAS,cAAc,CAAA;AAAA,MACtC,cAAA,CAAe,SAAS,kBAAkB,CAAA;AAAA,MAC1C,cAAA,CAAe,SAAS,4BAA4B,CAAA;AAAA,MACpD,cAAA,CAAe,SAAS,SAAS,CAAA;AAAA,MACjC,cAAA,CAAe,SAAS,YAAY,CAAA;AAAA,MACpC,cAAA,CAAe,SAAS,KAAK,CAAA;AAAA,MAC7B,cAAA,CAAe,SAAS,UAAU,CAAA;AAAA,MAClC,cAAA,CAAe,SAAS,UAAU,CAAA;AAAA,MAClC,cAAA,CAAe,SAAS,kBAAkB,CAAA;AAAA,MAC1C,cAAA,CAAe,SAAS,oBAAoB,CAAA;AAAA,MAC5C,cAAA,CAAe,SAAS,aAAa,CAAA;AAAA,MACrC,GAAG;AAAA,KACL;AAAA,IACA,IAAA,EAAM,yCAAwC,CAAE,MAAA;AAAA,MAC9C;AAAA,KACF;AAAA,IACA;AAAA,GAgBD,CAAA;AACH;AA+BO,SAAS,+BAId,WAAA,EAG0D;AAC1D,EAAA,IAAI,WAAA,CAAY,QAAA,CAAS,MAAA,GAAS,EAAA,EAAI;AAEpC,IAAA,MAAM,IAAI,MAAM,qBAAqB,CAAA;AAAA,EACvC;AACA,EAAA,IAAI,YAAA,GAAe,CAAA;AACnB,EAAA,MAAM,iBAAiB,MAAM;AAC3B,IAAA,MAAM,WAAA,GAAe,WAAA,CAAY,QAAA,CAA2B,YAAY,CAAA;AACxE,IAAA,YAAA,IAAgB,CAAA;AAChB,IAAA,OAAO,WAAA;AAAA,EACT,CAAA;AACA,EAAA,MAAM,yBAAyB,MAAM;AACnC,IAAA,MAAM,cAAc,cAAA,EAAe;AACnC,IAAA,OAAO,WAAA,CAAY,OAAA,KAAY,6BAAA,GAC3B,MAAA,GACA,WAAA;AAAA,EACN,CAAA;AACA,EAAA,OAAO;AAAA,IACL,gBAAgB,WAAA,CAAY,cAAA;AAAA,IAC5B,QAAA,EAAU;AAAA,MACR,YAAY,cAAA,EAAe;AAAA,MAC3B,WAAW,cAAA,EAAe;AAAA,MAC1B,gBAAgB,sBAAA,EAAuB;AAAA,MACvC,oBAAoB,sBAAA,EAAuB;AAAA,MAC3C,8BAA8B,sBAAA,EAAuB;AAAA,MACrD,WAAW,cAAA,EAAe;AAAA,MAC1B,cAAc,cAAA,EAAe;AAAA,MAC7B,OAAO,cAAA,EAAe;AAAA,MACtB,YAAY,cAAA,EAAe;AAAA,MAC3B,YAAY,cAAA,EAAe;AAAA,MAC3B,oBAAoB,cAAA,EAAe;AAAA,MACnC,sBAAsB,cAAA,EAAe;AAAA,MACrC,eAAe,cAAA;AAAe,KAChC;AAAA,IACA,IAAA,EAAM,uCAAA,EAAwC,CAAE,MAAA,CAAO,YAAY,IAAI;AAAA,GACzE;AACF;ACzlBO,IAAM,gCAAA,GAAmC,IAAI,UAAA,CAAW;AAAA,EAC7D,EAAA;AAAA,EAAI,GAAA;AAAA,EAAK,EAAA;AAAA,EAAI,EAAA;AAAA,EAAI,GAAA;AAAA,EAAK,GAAA;AAAA,EAAK,EAAA;AAAA,EAAI;AACjC,CAAC;AAEM,SAAS,qCAAA,GAAwC;AACtD,EAAA,OAAOb,cAAAA,CAAeC,eAAAA,EAAgB,EAAG,CAAC,CAAA,CAAE,MAAA;AAAA,IAC1C;AAAA,GACF;AACF;AAkFO,SAAS,yCAAA,GAA0F;AACxG,EAAA,OAAOpB,gBAAAA;AAAA,IACLV,gBAAAA,CAAiB;AAAA,MACf,CAAC,eAAA,EAAiB6B,cAAAA,CAAeC,eAAAA,EAAgB,EAAG,CAAC,CAAC,CAAA;AAAA,MACtD,CAAC,MAAA,EAAQD,cAAAA,CAAeC,eAAAA,EAAgB,EAAG,EAAE,CAAC,CAAA;AAAA,MAC9C;AAAA,QACE,eAAA;AAAA,QACAhB,gBAAAA,CAAiBe,cAAAA,CAAeC,eAAAA,EAAgB,EAAG,EAAE,CAAC;AAAA,OACxD;AAAA,MACA,CAAC,OAAA,EAAShB,gBAAAA,CAAiBP,YAAAA,EAAc,CAAC,CAAA;AAAA,MAC1C,CAAC,OAAA,EAASD,aAAAA,EAAe,CAAA;AAAA,MACzB,CAAC,OAAA,EAASM,aAAAA,EAAe,CAAA;AAAA,MACzB,CAAC,iBAAA,EAAmB,wBAAA,EAA0B,CAAA;AAAA,MAC9C,CAAC,YAAA,EAAc,oBAAA,EAAsB;AAAA,KACtC,CAAA;AAAA,IACD,CAAC,KAAA,MAAW;AAAA,MACV,GAAG,KAAA;AAAA,MACH,aAAA,EAAe,gCAAA;AAAA,MACf,aAAA,EAAe,KAAA,CAAM,aAAA,IAAiBa,IAAAA,EAAK;AAAA,MAC3C,KAAA,EAAO,KAAA,CAAM,KAAA,IAASA,IAAAA;AAAK,KAC7B;AAAA,GACF;AACF;AAEO,SAAS,yCAAA,GAAsF;AACpG,EAAA,OAAOvB,gBAAAA,CAAiB;AAAA,IACtB,CAAC,eAAA,EAAiB6B,cAAAA,CAAeC,eAAAA,EAAgB,EAAG,CAAC,CAAC,CAAA;AAAA,IACtD,CAAC,MAAA,EAAQD,cAAAA,CAAeC,eAAAA,EAAgB,EAAG,EAAE,CAAC,CAAA;AAAA,IAC9C,CAAC,iBAAiBX,gBAAAA,CAAiBU,cAAAA,CAAeC,iBAAgB,EAAG,EAAE,CAAC,CAAC,CAAA;AAAA,IACzE,CAAC,OAAA,EAASX,gBAAAA,CAAiBb,YAAAA,EAAc,CAAC,CAAA;AAAA,IAC1C,CAAC,OAAA,EAASmB,aAAAA,EAAe,CAAA;AAAA,IACzB,CAAC,OAAA,EAASR,aAAAA,EAAe,CAAA;AAAA,IACzB,CAAC,iBAAA,EAAmB,wBAAA,EAA0B,CAAA;AAAA,IAC9C,CAAC,YAAA,EAAc,oBAAA,EAAsB;AAAA,GACtC,CAAA;AACH;AAEO,SAAS,uCAAA,GAGd;AACA,EAAA,OAAOpB,YAAAA;AAAA,IACL,yCAAA,EAA0C;AAAA,IAC1C,yCAAA;AAA0C,GAC5C;AACF;AAuCA,eAAsB,mCAAA,CAapB,OAYA,MAAA,EAeA;AAEA,EAAA,MAAM,cAAA,GACJ,QAAQ,cAAA,IAAkB,6BAAA;AAG5B,EAAA,MAAM,gBAAA,GAAmB;AAAA,IACvB,YAAY,EAAE,KAAA,EAAO,MAAM,UAAA,IAAc,IAAA,EAAM,YAAY,IAAA,EAAK;AAAA,IAChE,OAAO,EAAE,KAAA,EAAO,MAAM,KAAA,IAAS,IAAA,EAAM,YAAY,IAAA,EAAK;AAAA,IACtD,WAAW,EAAE,KAAA,EAAO,MAAM,SAAA,IAAa,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IAC/D,WAAW,EAAE,KAAA,EAAO,MAAM,SAAA,IAAa,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IAC/D,cAAc,EAAE,KAAA,EAAO,MAAM,YAAA,IAAgB,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IACrE,YAAY,EAAE,KAAA,EAAO,MAAM,UAAA,IAAc,IAAA,EAAM,YAAY,IAAA,EAAK;AAAA,IAChE,gBAAgB,EAAE,KAAA,EAAO,MAAM,cAAA,IAAkB,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IACzE,YAAY,EAAE,KAAA,EAAO,MAAM,UAAA,IAAc,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IACjE,kBAAA,EAAoB;AAAA,MAClB,KAAA,EAAO,MAAM,kBAAA,IAAsB,IAAA;AAAA,MACnC,UAAA,EAAY;AAAA,KACd;AAAA,IACA,eAAe,EAAE,KAAA,EAAO,MAAM,aAAA,IAAiB,IAAA,EAAM,YAAY,KAAA;AAAM,GACzE;AACA,EAAA,MAAM,QAAA,GAAW,gBAAA;AAMjB,EAAA,MAAM,IAAA,GAAO,EAAE,GAAG,KAAA,EAAM;AAGxB,EAAA,IAAI,CAAC,QAAA,CAAS,UAAA,CAAW,KAAA,EAAO;AAC9B,IAAA,QAAA,CAAS,UAAA,CAAW,KAAA,GAAQ,MAAM,iBAAA,CAAkB;AAAA,MAClD,UAAA,EAAY,aAAA,CAAc,QAAA,CAAS,UAAA,CAAW,KAAK;AAAA,KACpD,CAAA;AAAA,EACH;AACA,EAAA,IAAI,CAAC,QAAA,CAAS,UAAA,CAAW,KAAA,EAAO;AAC9B,IAAA,QAAA,CAAS,WAAW,KAAA,GAClB,6CAAA;AAAA,EACJ;AACA,EAAA,IAAI,CAAC,QAAA,CAAS,kBAAA,CAAmB,KAAA,EAAO;AACtC,IAAA,QAAA,CAAS,mBAAmB,KAAA,GAC1B,6CAAA;AAAA,EACJ;AACA,EAAA,IAAI,CAAC,QAAA,CAAS,aAAA,CAAc,KAAA,EAAO;AACjC,IAAA,QAAA,CAAS,cAAc,KAAA,GACrB,kCAAA;AAAA,EACJ;AAGA,EAAA,MAAM,iBAAA,GAAA,CAAoC,IAAA,CAAK,KAAA,IAAS,EAAC,EAAG,GAAA;AAAA,IAC1D,CAACkC,QAAAA,MAAa,EAAE,SAAAA,QAAAA,EAAS,IAAA,EAAMS,YAAY,QAAA,EAAS;AAAA,GACtD;AAEA,EAAA,MAAM,cAAA,GAAiB,qBAAA,CAAsB,cAA2B,CAAA;AACxE,EAAA,OAAO,OAAO,MAAA,CAAO;AAAA,IACnB,QAAA,EAAU;AAAA,MACR,cAAA,CAAe,SAAS,UAAU,CAAA;AAAA,MAClC,cAAA,CAAe,SAAS,KAAK,CAAA;AAAA,MAC7B,cAAA,CAAe,SAAS,SAAS,CAAA;AAAA,MACjC,cAAA,CAAe,SAAS,SAAS,CAAA;AAAA,MACjC,cAAA,CAAe,SAAS,YAAY,CAAA;AAAA,MACpC,cAAA,CAAe,SAAS,UAAU,CAAA;AAAA,MAClC,cAAA,CAAe,SAAS,cAAc,CAAA;AAAA,MACtC,cAAA,CAAe,SAAS,UAAU,CAAA;AAAA,MAClC,cAAA,CAAe,SAAS,kBAAkB,CAAA;AAAA,MAC1C,cAAA,CAAe,SAAS,aAAa,CAAA;AAAA,MACrC,GAAG;AAAA,KACL;AAAA,IACA,IAAA,EAAM,2CAA0C,CAAE,MAAA;AAAA,MAChD;AAAA,KACF;AAAA,IACA;AAAA,GAaD,CAAA;AACH;AAuCO,SAAS,8BAAA,CAad,OAYA,MAAA,EAaA;AAEA,EAAA,MAAM,cAAA,GACJ,QAAQ,cAAA,IAAkB,6BAAA;AAG5B,EAAA,MAAM,gBAAA,GAAmB;AAAA,IACvB,YAAY,EAAE,KAAA,EAAO,MAAM,UAAA,IAAc,IAAA,EAAM,YAAY,IAAA,EAAK;AAAA,IAChE,OAAO,EAAE,KAAA,EAAO,MAAM,KAAA,IAAS,IAAA,EAAM,YAAY,IAAA,EAAK;AAAA,IACtD,WAAW,EAAE,KAAA,EAAO,MAAM,SAAA,IAAa,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IAC/D,WAAW,EAAE,KAAA,EAAO,MAAM,SAAA,IAAa,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IAC/D,cAAc,EAAE,KAAA,EAAO,MAAM,YAAA,IAAgB,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IACrE,YAAY,EAAE,KAAA,EAAO,MAAM,UAAA,IAAc,IAAA,EAAM,YAAY,IAAA,EAAK;AAAA,IAChE,gBAAgB,EAAE,KAAA,EAAO,MAAM,cAAA,IAAkB,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IACzE,YAAY,EAAE,KAAA,EAAO,MAAM,UAAA,IAAc,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IACjE,kBAAA,EAAoB;AAAA,MAClB,KAAA,EAAO,MAAM,kBAAA,IAAsB,IAAA;AAAA,MACnC,UAAA,EAAY;AAAA,KACd;AAAA,IACA,eAAe,EAAE,KAAA,EAAO,MAAM,aAAA,IAAiB,IAAA,EAAM,YAAY,KAAA;AAAM,GACzE;AACA,EAAA,MAAM,QAAA,GAAW,gBAAA;AAMjB,EAAA,MAAM,IAAA,GAAO,EAAE,GAAG,KAAA,EAAM;AAGxB,EAAA,IAAI,CAAC,QAAA,CAAS,UAAA,CAAW,KAAA,EAAO;AAC9B,IAAA,QAAA,CAAS,WAAW,KAAA,GAClB,6CAAA;AAAA,EACJ;AACA,EAAA,IAAI,CAAC,QAAA,CAAS,kBAAA,CAAmB,KAAA,EAAO;AACtC,IAAA,QAAA,CAAS,mBAAmB,KAAA,GAC1B,6CAAA;AAAA,EACJ;AACA,EAAA,IAAI,CAAC,QAAA,CAAS,aAAA,CAAc,KAAA,EAAO;AACjC,IAAA,QAAA,CAAS,cAAc,KAAA,GACrB,kCAAA;AAAA,EACJ;AAGA,EAAA,MAAM,iBAAA,GAAA,CAAoC,IAAA,CAAK,KAAA,IAAS,EAAC,EAAG,GAAA;AAAA,IAC1D,CAACT,QAAAA,MAAa,EAAE,SAAAA,QAAAA,EAAS,IAAA,EAAMS,YAAY,QAAA,EAAS;AAAA,GACtD;AAEA,EAAA,MAAM,cAAA,GAAiB,qBAAA,CAAsB,cAA2B,CAAA;AACxE,EAAA,OAAO,OAAO,MAAA,CAAO;AAAA,IACnB,QAAA,EAAU;AAAA,MACR,cAAA,CAAe,SAAS,UAAU,CAAA;AAAA,MAClC,cAAA,CAAe,SAAS,KAAK,CAAA;AAAA,MAC7B,cAAA,CAAe,SAAS,SAAS,CAAA;AAAA,MACjC,cAAA,CAAe,SAAS,SAAS,CAAA;AAAA,MACjC,cAAA,CAAe,SAAS,YAAY,CAAA;AAAA,MACpC,cAAA,CAAe,SAAS,UAAU,CAAA;AAAA,MAClC,cAAA,CAAe,SAAS,cAAc,CAAA;AAAA,MACtC,cAAA,CAAe,SAAS,UAAU,CAAA;AAAA,MAClC,cAAA,CAAe,SAAS,kBAAkB,CAAA;AAAA,MAC1C,cAAA,CAAe,SAAS,aAAa,CAAA;AAAA,MACrC,GAAG;AAAA,KACL;AAAA,IACA,IAAA,EAAM,2CAA0C,CAAE,MAAA;AAAA,MAChD;AAAA,KACF;AAAA,IACA;AAAA,GAaD,CAAA;AACH;AA2BO,SAAS,iCAId,WAAA,EAG4D;AAC5D,EAAA,IAAI,WAAA,CAAY,QAAA,CAAS,MAAA,GAAS,EAAA,EAAI;AAEpC,IAAA,MAAM,IAAI,MAAM,qBAAqB,CAAA;AAAA,EACvC;AACA,EAAA,IAAI,YAAA,GAAe,CAAA;AACnB,EAAA,MAAM,iBAAiB,MAAM;AAC3B,IAAA,MAAM,WAAA,GAAe,WAAA,CAAY,QAAA,CAA2B,YAAY,CAAA;AACxE,IAAA,YAAA,IAAgB,CAAA;AAChB,IAAA,OAAO,WAAA;AAAA,EACT,CAAA;AACA,EAAA,MAAM,yBAAyB,MAAM;AACnC,IAAA,MAAM,cAAc,cAAA,EAAe;AACnC,IAAA,OAAO,WAAA,CAAY,OAAA,KAAY,6BAAA,GAC3B,MAAA,GACA,WAAA;AAAA,EACN,CAAA;AACA,EAAA,OAAO;AAAA,IACL,gBAAgB,WAAA,CAAY,cAAA;AAAA,IAC5B,QAAA,EAAU;AAAA,MACR,YAAY,cAAA,EAAe;AAAA,MAC3B,OAAO,cAAA,EAAe;AAAA,MACtB,WAAW,sBAAA,EAAuB;AAAA,MAClC,WAAW,cAAA,EAAe;AAAA,MAC1B,cAAc,sBAAA,EAAuB;AAAA,MACrC,YAAY,cAAA,EAAe;AAAA,MAC3B,gBAAgB,sBAAA,EAAuB;AAAA,MACvC,YAAY,cAAA,EAAe;AAAA,MAC3B,oBAAoB,cAAA,EAAe;AAAA,MACnC,eAAe,cAAA;AAAe,KAChC;AAAA,IACA,IAAA,EAAM,yCAAA,EAA0C,CAAE,MAAA,CAAO,YAAY,IAAI;AAAA,GAC3E;AACF;AChhBO,IAAM,+BAAA,GAAkC,IAAI,UAAA,CAAW;AAAA,EAC5D,EAAA;AAAA,EAAI,GAAA;AAAA,EAAK,GAAA;AAAA,EAAK,GAAA;AAAA,EAAK,EAAA;AAAA,EAAI,EAAA;AAAA,EAAI,GAAA;AAAA,EAAK;AAClC,CAAC;AAEM,SAAS,qCAAA,GAAwC;AACtD,EAAA,OAAOb,cAAAA,CAAeC,eAAAA,EAAgB,EAAG,CAAC,CAAA,CAAE,MAAA;AAAA,IAC1C;AAAA,GACF;AACF;AA8GO,SAAS,yCAAA,GAA0F;AACxG,EAAA,OAAOpB,gBAAAA;AAAA,IACLV,gBAAAA,CAAiB;AAAA,MACf,CAAC,eAAA,EAAiB6B,cAAAA,CAAeC,eAAAA,EAAgB,EAAG,CAAC,CAAC,CAAA;AAAA,MACtD,CAAC,MAAA,EAAQD,cAAAA,CAAeC,eAAAA,EAAgB,EAAG,EAAE,CAAC,CAAA;AAAA,MAC9C,CAAC,UAAA,EAAYD,cAAAA,CAAeC,eAAAA,EAAgB,EAAG,EAAE,CAAC,CAAA;AAAA,MAClD,CAAC,aAAA,EAAeD,cAAAA,CAAeC,eAAAA,EAAgB,EAAG,EAAE,CAAC,CAAA;AAAA,MACrD,CAAC,OAAA,EAASxB,aAAAA,EAAe,CAAA;AAAA,MACzB,CAAC,OAAA,EAASM,aAAAA,EAAe,CAAA;AAAA,MACzB,CAAC,UAAA,EAAY,sBAAA,EAAwB;AAAA,KACtC,CAAA;AAAA,IACD,CAAC,KAAA,MAAW,EAAE,GAAG,KAAA,EAAO,eAAe,+BAAA,EAAgC;AAAA,GACzE;AACF;AAEO,SAAS,yCAAA,GAAsF;AACpG,EAAA,OAAOV,gBAAAA,CAAiB;AAAA,IACtB,CAAC,eAAA,EAAiB6B,cAAAA,CAAeC,eAAAA,EAAgB,EAAG,CAAC,CAAC,CAAA;AAAA,IACtD,CAAC,MAAA,EAAQD,cAAAA,CAAeC,eAAAA,EAAgB,EAAG,EAAE,CAAC,CAAA;AAAA,IAC9C,CAAC,UAAA,EAAYD,cAAAA,CAAeC,eAAAA,EAAgB,EAAG,EAAE,CAAC,CAAA;AAAA,IAClD,CAAC,aAAA,EAAeD,cAAAA,CAAeC,eAAAA,EAAgB,EAAG,EAAE,CAAC,CAAA;AAAA,IACrD,CAAC,OAAA,EAASL,aAAAA,EAAe,CAAA;AAAA,IACzB,CAAC,OAAA,EAASR,aAAAA,EAAe,CAAA;AAAA,IACzB,CAAC,UAAA,EAAY,sBAAA,EAAwB;AAAA,GACtC,CAAA;AACH;AAEO,SAAS,uCAAA,GAGd;AACA,EAAA,OAAOpB,YAAAA;AAAA,IACL,yCAAA,EAA0C;AAAA,IAC1C,yCAAA;AAA0C,GAC5C;AACF;AAsDA,eAAsB,mCAAA,CAmBpB,OAkBA,MAAA,EAqBA;AAEA,EAAA,MAAM,cAAA,GACJ,QAAQ,cAAA,IAAkB,6BAAA;AAG5B,EAAA,MAAM,gBAAA,GAAmB;AAAA,IACvB,YAAY,EAAE,KAAA,EAAO,MAAM,UAAA,IAAc,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IACjE,WAAW,EAAE,KAAA,EAAO,MAAM,SAAA,IAAa,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IAC/D,cAAc,EAAE,KAAA,EAAO,MAAM,YAAA,IAAgB,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IACrE,YAAY,EAAE,KAAA,EAAO,MAAM,UAAA,IAAc,IAAA,EAAM,YAAY,IAAA,EAAK;AAAA,IAChE,OAAO,EAAE,KAAA,EAAO,MAAM,KAAA,IAAS,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IACvD,qBAAA,EAAuB;AAAA,MACrB,KAAA,EAAO,MAAM,qBAAA,IAAyB,IAAA;AAAA,MACtC,UAAA,EAAY;AAAA,KACd;AAAA,IACA,mBAAA,EAAqB;AAAA,MACnB,KAAA,EAAO,MAAM,mBAAA,IAAuB,IAAA;AAAA,MACpC,UAAA,EAAY;AAAA,KACd;AAAA,IACA,4BAAA,EAA8B;AAAA,MAC5B,KAAA,EAAO,MAAM,4BAAA,IAAgC,IAAA;AAAA,MAC7C,UAAA,EAAY;AAAA,KACd;AAAA,IACA,gBAAgB,EAAE,KAAA,EAAO,MAAM,cAAA,IAAkB,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IACzE,kBAAA,EAAoB;AAAA,MAClB,KAAA,EAAO,MAAM,kBAAA,IAAsB,IAAA;AAAA,MACnC,UAAA,EAAY;AAAA,KACd;AAAA,IACA,iBAAA,EAAmB;AAAA,MACjB,KAAA,EAAO,MAAM,iBAAA,IAAqB,IAAA;AAAA,MAClC,UAAA,EAAY;AAAA,KACd;AAAA,IACA,eAAA,EAAiB;AAAA,MACf,KAAA,EAAO,MAAM,eAAA,IAAmB,IAAA;AAAA,MAChC,UAAA,EAAY;AAAA,KACd;AAAA,IACA,YAAY,EAAE,KAAA,EAAO,MAAM,UAAA,IAAc,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IACjE,kBAAA,EAAoB;AAAA,MAClB,KAAA,EAAO,MAAM,kBAAA,IAAsB,IAAA;AAAA,MACnC,UAAA,EAAY;AAAA,KACd;AAAA,IACA,oBAAA,EAAsB;AAAA,MACpB,KAAA,EAAO,MAAM,oBAAA,IAAwB,IAAA;AAAA,MACrC,UAAA,EAAY;AAAA,KACd;AAAA,IACA,eAAe,EAAE,KAAA,EAAO,MAAM,aAAA,IAAiB,IAAA,EAAM,YAAY,KAAA;AAAM,GACzE;AACA,EAAA,MAAM,QAAA,GAAW,gBAAA;AAMjB,EAAA,MAAM,IAAA,GAAO,EAAE,GAAG,KAAA,EAAM;AAGxB,EAAA,MAAM,aAAA,GAAgB,EAA4B,IAAA,EAAK;AAGvD,EAAA,IAAI,CAAC,QAAA,CAAS,UAAA,CAAW,KAAA,EAAO;AAC9B,IAAA,QAAA,CAAS,UAAA,CAAW,KAAA,GAAQ,MAAM,iBAAA,CAAkB;AAAA,MAClD,UAAA,EAAY,aAAA,CAAc,QAAA,CAAS,UAAA,CAAW,KAAK;AAAA,KACpD,CAAA;AAAA,EACH;AACA,EAAA,IAAI,CAAC,QAAA,CAAS,YAAA,CAAa,KAAA,EAAO;AAChC,IAAA,QAAA,CAAS,YAAA,CAAa,KAAA,GAAQ,UAAA,CAAW,QAAA,CAAS,UAAU,KAAK,CAAA;AAAA,EACnE;AACA,EAAA,IAAI,CAAC,QAAA,CAAS,kBAAA,CAAmB,KAAA,EAAO;AACtC,IAAA,QAAA,CAAS,kBAAA,CAAmB,KAAA,GAAQ,MAAM,eAAA,CAAgB;AAAA,MACxD,IAAA,EAAM,aAAA,CAAc,QAAA,CAAS,cAAA,CAAe,KAAK;AAAA,KAClD,CAAA;AAAA,EACH;AACA,EAAA,IAAI,CAAC,QAAA,CAAS,iBAAA,CAAkB,KAAA,EAAO;AACrC,IAAA,QAAA,CAAS,iBAAA,CAAkB,KAAA,GAAQ,MAAM,oBAAA,CAAqB;AAAA,MAC5D,IAAA,EAAM,aAAA,CAAc,QAAA,CAAS,cAAA,CAAe,KAAK;AAAA,KAClD,CAAA;AAAA,EACH;AACA,EAAA,IAAI,CAAC,QAAA,CAAS,eAAA,CAAgB,KAAA,EAAO;AACnC,IAAA,QAAA,CAAS,gBAAgB,KAAA,GAAQ,cAAA;AACjC,IAAA,QAAA,CAAS,gBAAgB,UAAA,GAAa,KAAA;AAAA,EACxC;AACA,EAAA,IAAI,CAAC,QAAA,CAAS,UAAA,CAAW,KAAA,EAAO;AAC9B,IAAA,QAAA,CAAS,WAAW,KAAA,GAClB,6CAAA;AAAA,EACJ;AACA,EAAA,IAAI,CAAC,QAAA,CAAS,kBAAA,CAAmB,KAAA,EAAO;AACtC,IAAA,QAAA,CAAS,mBAAmB,KAAA,GAC1B,6CAAA;AAAA,EACJ;AACA,EAAA,IAAI,CAAC,QAAA,CAAS,oBAAA,CAAqB,KAAA,EAAO;AACxC,IAAA,QAAA,CAAS,qBAAqB,KAAA,GAC5B,8CAAA;AAAA,EACJ;AACA,EAAA,IAAI,CAAC,QAAA,CAAS,aAAA,CAAc,KAAA,EAAO;AACjC,IAAA,QAAA,CAAS,cAAc,KAAA,GACrB,kCAAA;AAAA,EACJ;AACA,EAAA,IAAI,CAAC,KAAK,QAAA,EAAU;AAClB,IAAA,IAAA,CAAK,QAAA,GAAW,gBAAgB,aAAa,CAAA;AAAA,EAC/C;AACA,EAAA,IAAI,CAAC,KAAK,WAAA,EAAa;AACrB,IAAA,IAAA,CAAK,WAAA,GAAc,mBAAmB,aAAa,CAAA;AAAA,EACrD;AAGA,EAAA,MAAM,iBAAA,GAAA,CAAoC,IAAA,CAAK,KAAA,IAAS,EAAC,EAAG,GAAA;AAAA,IAC1D,CAACkC,QAAAA,MAAa,EAAE,SAAAA,QAAAA,EAAS,IAAA,EAAMS,YAAY,QAAA,EAAS;AAAA,GACtD;AAEA,EAAA,MAAM,cAAA,GAAiB,qBAAA,CAAsB,cAA2B,CAAA;AACxE,EAAA,OAAO,OAAO,MAAA,CAAO;AAAA,IACnB,QAAA,EAAU;AAAA,MACR,cAAA,CAAe,SAAS,UAAU,CAAA;AAAA,MAClC,cAAA,CAAe,SAAS,SAAS,CAAA;AAAA,MACjC,cAAA,CAAe,SAAS,YAAY,CAAA;AAAA,MACpC,cAAA,CAAe,SAAS,UAAU,CAAA;AAAA,MAClC,cAAA,CAAe,SAAS,KAAK,CAAA;AAAA,MAC7B,cAAA,CAAe,SAAS,qBAAqB,CAAA;AAAA,MAC7C,cAAA,CAAe,SAAS,mBAAmB,CAAA;AAAA,MAC3C,cAAA,CAAe,SAAS,4BAA4B,CAAA;AAAA,MACpD,cAAA,CAAe,SAAS,cAAc,CAAA;AAAA,MACtC,cAAA,CAAe,SAAS,kBAAkB,CAAA;AAAA,MAC1C,cAAA,CAAe,SAAS,iBAAiB,CAAA;AAAA,MACzC,cAAA,CAAe,SAAS,eAAe,CAAA;AAAA,MACvC,cAAA,CAAe,SAAS,UAAU,CAAA;AAAA,MAClC,cAAA,CAAe,SAAS,kBAAkB,CAAA;AAAA,MAC1C,cAAA,CAAe,SAAS,oBAAoB,CAAA;AAAA,MAC5C,cAAA,CAAe,SAAS,aAAa,CAAA;AAAA,MACrC,GAAG;AAAA,KACL;AAAA,IACA,IAAA,EAAM,2CAA0C,CAAE,MAAA;AAAA,MAChD;AAAA,KACF;AAAA,IACA;AAAA,GAmBD,CAAA;AACH;AAsDO,SAAS,8BAAA,CAmBd,OAkBA,MAAA,EAmBA;AAEA,EAAA,MAAM,cAAA,GACJ,QAAQ,cAAA,IAAkB,6BAAA;AAG5B,EAAA,MAAM,gBAAA,GAAmB;AAAA,IACvB,YAAY,EAAE,KAAA,EAAO,MAAM,UAAA,IAAc,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IACjE,WAAW,EAAE,KAAA,EAAO,MAAM,SAAA,IAAa,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IAC/D,cAAc,EAAE,KAAA,EAAO,MAAM,YAAA,IAAgB,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IACrE,YAAY,EAAE,KAAA,EAAO,MAAM,UAAA,IAAc,IAAA,EAAM,YAAY,IAAA,EAAK;AAAA,IAChE,OAAO,EAAE,KAAA,EAAO,MAAM,KAAA,IAAS,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IACvD,qBAAA,EAAuB;AAAA,MACrB,KAAA,EAAO,MAAM,qBAAA,IAAyB,IAAA;AAAA,MACtC,UAAA,EAAY;AAAA,KACd;AAAA,IACA,mBAAA,EAAqB;AAAA,MACnB,KAAA,EAAO,MAAM,mBAAA,IAAuB,IAAA;AAAA,MACpC,UAAA,EAAY;AAAA,KACd;AAAA,IACA,4BAAA,EAA8B;AAAA,MAC5B,KAAA,EAAO,MAAM,4BAAA,IAAgC,IAAA;AAAA,MAC7C,UAAA,EAAY;AAAA,KACd;AAAA,IACA,gBAAgB,EAAE,KAAA,EAAO,MAAM,cAAA,IAAkB,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IACzE,kBAAA,EAAoB;AAAA,MAClB,KAAA,EAAO,MAAM,kBAAA,IAAsB,IAAA;AAAA,MACnC,UAAA,EAAY;AAAA,KACd;AAAA,IACA,iBAAA,EAAmB;AAAA,MACjB,KAAA,EAAO,MAAM,iBAAA,IAAqB,IAAA;AAAA,MAClC,UAAA,EAAY;AAAA,KACd;AAAA,IACA,eAAA,EAAiB;AAAA,MACf,KAAA,EAAO,MAAM,eAAA,IAAmB,IAAA;AAAA,MAChC,UAAA,EAAY;AAAA,KACd;AAAA,IACA,YAAY,EAAE,KAAA,EAAO,MAAM,UAAA,IAAc,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IACjE,kBAAA,EAAoB;AAAA,MAClB,KAAA,EAAO,MAAM,kBAAA,IAAsB,IAAA;AAAA,MACnC,UAAA,EAAY;AAAA,KACd;AAAA,IACA,oBAAA,EAAsB;AAAA,MACpB,KAAA,EAAO,MAAM,oBAAA,IAAwB,IAAA;AAAA,MACrC,UAAA,EAAY;AAAA,KACd;AAAA,IACA,eAAe,EAAE,KAAA,EAAO,MAAM,aAAA,IAAiB,IAAA,EAAM,YAAY,KAAA;AAAM,GACzE;AACA,EAAA,MAAM,QAAA,GAAW,gBAAA;AAMjB,EAAA,MAAM,IAAA,GAAO,EAAE,GAAG,KAAA,EAAM;AAGxB,EAAA,MAAM,aAAA,GAAgB,EAA4B,IAAA,EAAK;AAGvD,EAAA,IAAI,CAAC,QAAA,CAAS,YAAA,CAAa,KAAA,EAAO;AAChC,IAAA,QAAA,CAAS,YAAA,CAAa,KAAA,GAAQ,UAAA,CAAW,QAAA,CAAS,UAAU,KAAK,CAAA;AAAA,EACnE;AACA,EAAA,IAAI,CAAC,QAAA,CAAS,eAAA,CAAgB,KAAA,EAAO;AACnC,IAAA,QAAA,CAAS,gBAAgB,KAAA,GAAQ,cAAA;AACjC,IAAA,QAAA,CAAS,gBAAgB,UAAA,GAAa,KAAA;AAAA,EACxC;AACA,EAAA,IAAI,CAAC,QAAA,CAAS,UAAA,CAAW,KAAA,EAAO;AAC9B,IAAA,QAAA,CAAS,WAAW,KAAA,GAClB,6CAAA;AAAA,EACJ;AACA,EAAA,IAAI,CAAC,QAAA,CAAS,kBAAA,CAAmB,KAAA,EAAO;AACtC,IAAA,QAAA,CAAS,mBAAmB,KAAA,GAC1B,6CAAA;AAAA,EACJ;AACA,EAAA,IAAI,CAAC,QAAA,CAAS,oBAAA,CAAqB,KAAA,EAAO;AACxC,IAAA,QAAA,CAAS,qBAAqB,KAAA,GAC5B,8CAAA;AAAA,EACJ;AACA,EAAA,IAAI,CAAC,QAAA,CAAS,aAAA,CAAc,KAAA,EAAO;AACjC,IAAA,QAAA,CAAS,cAAc,KAAA,GACrB,kCAAA;AAAA,EACJ;AACA,EAAA,IAAI,CAAC,KAAK,QAAA,EAAU;AAClB,IAAA,IAAA,CAAK,QAAA,GAAW,gBAAgB,aAAa,CAAA;AAAA,EAC/C;AACA,EAAA,IAAI,CAAC,KAAK,WAAA,EAAa;AACrB,IAAA,IAAA,CAAK,WAAA,GAAc,mBAAmB,aAAa,CAAA;AAAA,EACrD;AAGA,EAAA,MAAM,iBAAA,GAAA,CAAoC,IAAA,CAAK,KAAA,IAAS,EAAC,EAAG,GAAA;AAAA,IAC1D,CAACT,QAAAA,MAAa,EAAE,SAAAA,QAAAA,EAAS,IAAA,EAAMS,YAAY,QAAA,EAAS;AAAA,GACtD;AAEA,EAAA,MAAM,cAAA,GAAiB,qBAAA,CAAsB,cAA2B,CAAA;AACxE,EAAA,OAAO,OAAO,MAAA,CAAO;AAAA,IACnB,QAAA,EAAU;AAAA,MACR,cAAA,CAAe,SAAS,UAAU,CAAA;AAAA,MAClC,cAAA,CAAe,SAAS,SAAS,CAAA;AAAA,MACjC,cAAA,CAAe,SAAS,YAAY,CAAA;AAAA,MACpC,cAAA,CAAe,SAAS,UAAU,CAAA;AAAA,MAClC,cAAA,CAAe,SAAS,KAAK,CAAA;AAAA,MAC7B,cAAA,CAAe,SAAS,qBAAqB,CAAA;AAAA,MAC7C,cAAA,CAAe,SAAS,mBAAmB,CAAA;AAAA,MAC3C,cAAA,CAAe,SAAS,4BAA4B,CAAA;AAAA,MACpD,cAAA,CAAe,SAAS,cAAc,CAAA;AAAA,MACtC,cAAA,CAAe,SAAS,kBAAkB,CAAA;AAAA,MAC1C,cAAA,CAAe,SAAS,iBAAiB,CAAA;AAAA,MACzC,cAAA,CAAe,SAAS,eAAe,CAAA;AAAA,MACvC,cAAA,CAAe,SAAS,UAAU,CAAA;AAAA,MAClC,cAAA,CAAe,SAAS,kBAAkB,CAAA;AAAA,MAC1C,cAAA,CAAe,SAAS,oBAAoB,CAAA;AAAA,MAC5C,cAAA,CAAe,SAAS,aAAa,CAAA;AAAA,MACrC,GAAG;AAAA,KACL;AAAA,IACA,IAAA,EAAM,2CAA0C,CAAE,MAAA;AAAA,MAChD;AAAA,KACF;AAAA,IACA;AAAA,GAmBD,CAAA;AACH;AAqCO,SAAS,iCAId,WAAA,EAG4D;AAC5D,EAAA,IAAI,WAAA,CAAY,QAAA,CAAS,MAAA,GAAS,EAAA,EAAI;AAEpC,IAAA,MAAM,IAAI,MAAM,qBAAqB,CAAA;AAAA,EACvC;AACA,EAAA,IAAI,YAAA,GAAe,CAAA;AACnB,EAAA,MAAM,iBAAiB,MAAM;AAC3B,IAAA,MAAM,WAAA,GAAe,WAAA,CAAY,QAAA,CAA2B,YAAY,CAAA;AACxE,IAAA,YAAA,IAAgB,CAAA;AAChB,IAAA,OAAO,WAAA;AAAA,EACT,CAAA;AACA,EAAA,MAAM,yBAAyB,MAAM;AACnC,IAAA,MAAM,cAAc,cAAA,EAAe;AACnC,IAAA,OAAO,WAAA,CAAY,OAAA,KAAY,6BAAA,GAC3B,MAAA,GACA,WAAA;AAAA,EACN,CAAA;AACA,EAAA,OAAO;AAAA,IACL,gBAAgB,WAAA,CAAY,cAAA;AAAA,IAC5B,QAAA,EAAU;AAAA,MACR,YAAY,cAAA,EAAe;AAAA,MAC3B,WAAW,cAAA,EAAe;AAAA,MAC1B,cAAc,cAAA,EAAe;AAAA,MAC7B,YAAY,cAAA,EAAe;AAAA,MAC3B,OAAO,cAAA,EAAe;AAAA,MACtB,uBAAuB,cAAA,EAAe;AAAA,MACtC,qBAAqB,cAAA,EAAe;AAAA,MACpC,8BAA8B,sBAAA,EAAuB;AAAA,MACrD,gBAAgB,cAAA,EAAe;AAAA,MAC/B,oBAAoB,cAAA,EAAe;AAAA,MACnC,mBAAmB,cAAA,EAAe;AAAA,MAClC,iBAAiB,cAAA,EAAe;AAAA,MAChC,YAAY,cAAA,EAAe;AAAA,MAC3B,oBAAoB,cAAA,EAAe;AAAA,MACnC,sBAAsB,cAAA,EAAe;AAAA,MACrC,eAAe,cAAA;AAAe,KAChC;AAAA,IACA,IAAA,EAAM,yCAAA,EAA0C,CAAE,MAAA,CAAO,YAAY,IAAI;AAAA,GAC3E;AACF;ACpvBO,IAAM,4BAAA,GAA+B,IAAI,UAAA,CAAW;AAAA,EACzD,EAAA;AAAA,EAAI,EAAA;AAAA,EAAI,EAAA;AAAA,EAAI,GAAA;AAAA,EAAK,EAAA;AAAA,EAAI,CAAA;AAAA,EAAG,EAAA;AAAA,EAAI;AAC9B,CAAC;AAEM,SAAS,kCAAA,GAAqC;AACnD,EAAA,OAAOb,cAAAA,CAAeC,eAAAA,EAAgB,EAAG,CAAC,CAAA,CAAE,MAAA;AAAA,IAC1C;AAAA,GACF;AACF;AA4EO,SAAS,sCAAA,GAAoF;AAClG,EAAA,OAAOpB,gBAAAA;AAAA,IACLV,gBAAAA,CAAiB;AAAA,MACf,CAAC,eAAA,EAAiB6B,cAAAA,CAAeC,eAAAA,EAAgB,EAAG,CAAC,CAAC,CAAA;AAAA,MACtD,CAAC,MAAA,EAAQD,cAAAA,CAAeC,eAAAA,EAAgB,EAAG,EAAE,CAAC,CAAA;AAAA,MAC9C,CAAC,UAAA,EAAYD,cAAAA,CAAeC,eAAAA,EAAgB,EAAG,EAAE,CAAC,CAAA;AAAA,MAClD,CAAC,aAAA,EAAeD,cAAAA,CAAeC,eAAAA,EAAgB,EAAG,EAAE,CAAC,CAAA;AAAA,MACrD,CAAC,OAAA,EAASxB,aAAAA,EAAe,CAAA;AAAA,MACzB,CAAC,OAAA,EAASM,aAAAA,EAAe,CAAA;AAAA,MACzB,CAAC,UAAA,EAAY,sBAAA,EAAwB;AAAA,KACtC,CAAA;AAAA,IACD,CAAC,KAAA,MAAW,EAAE,GAAG,KAAA,EAAO,eAAe,4BAAA,EAA6B;AAAA,GACtE;AACF;AAEO,SAAS,sCAAA,GAAgF;AAC9F,EAAA,OAAOV,gBAAAA,CAAiB;AAAA,IACtB,CAAC,eAAA,EAAiB6B,cAAAA,CAAeC,eAAAA,EAAgB,EAAG,CAAC,CAAC,CAAA;AAAA,IACtD,CAAC,MAAA,EAAQD,cAAAA,CAAeC,eAAAA,EAAgB,EAAG,EAAE,CAAC,CAAA;AAAA,IAC9C,CAAC,UAAA,EAAYD,cAAAA,CAAeC,eAAAA,EAAgB,EAAG,EAAE,CAAC,CAAA;AAAA,IAClD,CAAC,aAAA,EAAeD,cAAAA,CAAeC,eAAAA,EAAgB,EAAG,EAAE,CAAC,CAAA;AAAA,IACrD,CAAC,OAAA,EAASL,aAAAA,EAAe,CAAA;AAAA,IACzB,CAAC,OAAA,EAASR,aAAAA,EAAe,CAAA;AAAA,IACzB,CAAC,UAAA,EAAY,sBAAA,EAAwB;AAAA,GACtC,CAAA;AACH;AAEO,SAAS,oCAAA,GAGd;AACA,EAAA,OAAOpB,YAAAA;AAAA,IACL,sCAAA,EAAuC;AAAA,IACvC,sCAAA;AAAuC,GACzC;AACF;AA+BA,eAAsB,gCAAA,CAYpB,OAWA,MAAA,EAcA;AAEA,EAAA,MAAM,cAAA,GACJ,QAAQ,cAAA,IAAkB,6BAAA;AAG5B,EAAA,MAAM,gBAAA,GAAmB;AAAA,IACvB,YAAY,EAAE,KAAA,EAAO,MAAM,UAAA,IAAc,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IACjE,WAAW,EAAE,KAAA,EAAO,MAAM,SAAA,IAAa,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IAC/D,cAAc,EAAE,KAAA,EAAO,MAAM,YAAA,IAAgB,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IACrE,YAAY,EAAE,KAAA,EAAO,MAAM,UAAA,IAAc,IAAA,EAAM,YAAY,IAAA,EAAK;AAAA,IAChE,OAAO,EAAE,KAAA,EAAO,MAAM,KAAA,IAAS,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IACvD,SAAS,EAAE,KAAA,EAAO,MAAM,OAAA,IAAW,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IAC3D,YAAY,EAAE,KAAA,EAAO,MAAM,UAAA,IAAc,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IACjE,kBAAA,EAAoB;AAAA,MAClB,KAAA,EAAO,MAAM,kBAAA,IAAsB,IAAA;AAAA,MACnC,UAAA,EAAY;AAAA,KACd;AAAA,IACA,eAAe,EAAE,KAAA,EAAO,MAAM,aAAA,IAAiB,IAAA,EAAM,YAAY,KAAA;AAAM,GACzE;AACA,EAAA,MAAM,QAAA,GAAW,gBAAA;AAMjB,EAAA,MAAM,IAAA,GAAO,EAAE,GAAG,KAAA,EAAM;AAGxB,EAAA,MAAM,aAAA,GAAgB,EAA4B,IAAA,EAAK;AAGvD,EAAA,IAAI,CAAC,QAAA,CAAS,UAAA,CAAW,KAAA,EAAO;AAC9B,IAAA,QAAA,CAAS,UAAA,CAAW,KAAA,GAAQ,MAAM,iBAAA,CAAkB;AAAA,MAClD,UAAA,EAAY,aAAA,CAAc,QAAA,CAAS,UAAA,CAAW,KAAK;AAAA,KACpD,CAAA;AAAA,EACH;AACA,EAAA,IAAI,CAAC,QAAA,CAAS,YAAA,CAAa,KAAA,EAAO;AAChC,IAAA,QAAA,CAAS,YAAA,CAAa,KAAA,GAAQ,UAAA,CAAW,QAAA,CAAS,UAAU,KAAK,CAAA;AAAA,EACnE;AACA,EAAA,IAAI,CAAC,QAAA,CAAS,UAAA,CAAW,KAAA,EAAO;AAC9B,IAAA,QAAA,CAAS,WAAW,KAAA,GAClB,6CAAA;AAAA,EACJ;AACA,EAAA,IAAI,CAAC,QAAA,CAAS,kBAAA,CAAmB,KAAA,EAAO;AACtC,IAAA,QAAA,CAAS,mBAAmB,KAAA,GAC1B,6CAAA;AAAA,EACJ;AACA,EAAA,IAAI,CAAC,QAAA,CAAS,aAAA,CAAc,KAAA,EAAO;AACjC,IAAA,QAAA,CAAS,cAAc,KAAA,GACrB,kCAAA;AAAA,EACJ;AACA,EAAA,IAAI,CAAC,KAAK,QAAA,EAAU;AAClB,IAAA,IAAA,CAAK,QAAA,GAAW,gBAAgB,aAAa,CAAA;AAAA,EAC/C;AACA,EAAA,IAAI,CAAC,KAAK,WAAA,EAAa;AACrB,IAAA,IAAA,CAAK,WAAA,GAAc,mBAAmB,aAAa,CAAA;AAAA,EACrD;AAGA,EAAA,MAAM,iBAAA,GAAA,CAAoC,IAAA,CAAK,KAAA,IAAS,EAAC,EAAG,GAAA;AAAA,IAC1D,CAACkC,QAAAA,MAAa,EAAE,SAAAA,QAAAA,EAAS,IAAA,EAAMS,YAAY,QAAA,EAAS;AAAA,GACtD;AAEA,EAAA,MAAM,cAAA,GAAiB,qBAAA,CAAsB,cAA2B,CAAA;AACxE,EAAA,OAAO,OAAO,MAAA,CAAO;AAAA,IACnB,QAAA,EAAU;AAAA,MACR,cAAA,CAAe,SAAS,UAAU,CAAA;AAAA,MAClC,cAAA,CAAe,SAAS,SAAS,CAAA;AAAA,MACjC,cAAA,CAAe,SAAS,YAAY,CAAA;AAAA,MACpC,cAAA,CAAe,SAAS,UAAU,CAAA;AAAA,MAClC,cAAA,CAAe,SAAS,KAAK,CAAA;AAAA,MAC7B,cAAA,CAAe,SAAS,OAAO,CAAA;AAAA,MAC/B,cAAA,CAAe,SAAS,UAAU,CAAA;AAAA,MAClC,cAAA,CAAe,SAAS,kBAAkB,CAAA;AAAA,MAC1C,cAAA,CAAe,SAAS,aAAa,CAAA;AAAA,MACrC,GAAG;AAAA,KACL;AAAA,IACA,IAAA,EAAM,wCAAuC,CAAE,MAAA;AAAA,MAC7C;AAAA,KACF;AAAA,IACA;AAAA,GAYD,CAAA;AACH;AA+BO,SAAS,2BAAA,CAYd,OAWA,MAAA,EAYA;AAEA,EAAA,MAAM,cAAA,GACJ,QAAQ,cAAA,IAAkB,6BAAA;AAG5B,EAAA,MAAM,gBAAA,GAAmB;AAAA,IACvB,YAAY,EAAE,KAAA,EAAO,MAAM,UAAA,IAAc,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IACjE,WAAW,EAAE,KAAA,EAAO,MAAM,SAAA,IAAa,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IAC/D,cAAc,EAAE,KAAA,EAAO,MAAM,YAAA,IAAgB,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IACrE,YAAY,EAAE,KAAA,EAAO,MAAM,UAAA,IAAc,IAAA,EAAM,YAAY,IAAA,EAAK;AAAA,IAChE,OAAO,EAAE,KAAA,EAAO,MAAM,KAAA,IAAS,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IACvD,SAAS,EAAE,KAAA,EAAO,MAAM,OAAA,IAAW,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IAC3D,YAAY,EAAE,KAAA,EAAO,MAAM,UAAA,IAAc,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IACjE,kBAAA,EAAoB;AAAA,MAClB,KAAA,EAAO,MAAM,kBAAA,IAAsB,IAAA;AAAA,MACnC,UAAA,EAAY;AAAA,KACd;AAAA,IACA,eAAe,EAAE,KAAA,EAAO,MAAM,aAAA,IAAiB,IAAA,EAAM,YAAY,KAAA;AAAM,GACzE;AACA,EAAA,MAAM,QAAA,GAAW,gBAAA;AAMjB,EAAA,MAAM,IAAA,GAAO,EAAE,GAAG,KAAA,EAAM;AAGxB,EAAA,MAAM,aAAA,GAAgB,EAA4B,IAAA,EAAK;AAGvD,EAAA,IAAI,CAAC,QAAA,CAAS,YAAA,CAAa,KAAA,EAAO;AAChC,IAAA,QAAA,CAAS,YAAA,CAAa,KAAA,GAAQ,UAAA,CAAW,QAAA,CAAS,UAAU,KAAK,CAAA;AAAA,EACnE;AACA,EAAA,IAAI,CAAC,QAAA,CAAS,UAAA,CAAW,KAAA,EAAO;AAC9B,IAAA,QAAA,CAAS,WAAW,KAAA,GAClB,6CAAA;AAAA,EACJ;AACA,EAAA,IAAI,CAAC,QAAA,CAAS,kBAAA,CAAmB,KAAA,EAAO;AACtC,IAAA,QAAA,CAAS,mBAAmB,KAAA,GAC1B,6CAAA;AAAA,EACJ;AACA,EAAA,IAAI,CAAC,QAAA,CAAS,aAAA,CAAc,KAAA,EAAO;AACjC,IAAA,QAAA,CAAS,cAAc,KAAA,GACrB,kCAAA;AAAA,EACJ;AACA,EAAA,IAAI,CAAC,KAAK,QAAA,EAAU;AAClB,IAAA,IAAA,CAAK,QAAA,GAAW,gBAAgB,aAAa,CAAA;AAAA,EAC/C;AACA,EAAA,IAAI,CAAC,KAAK,WAAA,EAAa;AACrB,IAAA,IAAA,CAAK,WAAA,GAAc,mBAAmB,aAAa,CAAA;AAAA,EACrD;AAGA,EAAA,MAAM,iBAAA,GAAA,CAAoC,IAAA,CAAK,KAAA,IAAS,EAAC,EAAG,GAAA;AAAA,IAC1D,CAACT,QAAAA,MAAa,EAAE,SAAAA,QAAAA,EAAS,IAAA,EAAMS,YAAY,QAAA,EAAS;AAAA,GACtD;AAEA,EAAA,MAAM,cAAA,GAAiB,qBAAA,CAAsB,cAA2B,CAAA;AACxE,EAAA,OAAO,OAAO,MAAA,CAAO;AAAA,IACnB,QAAA,EAAU;AAAA,MACR,cAAA,CAAe,SAAS,UAAU,CAAA;AAAA,MAClC,cAAA,CAAe,SAAS,SAAS,CAAA;AAAA,MACjC,cAAA,CAAe,SAAS,YAAY,CAAA;AAAA,MACpC,cAAA,CAAe,SAAS,UAAU,CAAA;AAAA,MAClC,cAAA,CAAe,SAAS,KAAK,CAAA;AAAA,MAC7B,cAAA,CAAe,SAAS,OAAO,CAAA;AAAA,MAC/B,cAAA,CAAe,SAAS,UAAU,CAAA;AAAA,MAClC,cAAA,CAAe,SAAS,kBAAkB,CAAA;AAAA,MAC1C,cAAA,CAAe,SAAS,aAAa,CAAA;AAAA,MACrC,GAAG;AAAA,KACL;AAAA,IACA,IAAA,EAAM,wCAAuC,CAAE,MAAA;AAAA,MAC7C;AAAA,KACF;AAAA,IACA;AAAA,GAYD,CAAA;AACH;AAqBO,SAAS,8BAId,WAAA,EAGyD;AACzD,EAAA,IAAI,WAAA,CAAY,QAAA,CAAS,MAAA,GAAS,CAAA,EAAG;AAEnC,IAAA,MAAM,IAAI,MAAM,qBAAqB,CAAA;AAAA,EACvC;AACA,EAAA,IAAI,YAAA,GAAe,CAAA;AACnB,EAAA,MAAM,iBAAiB,MAAM;AAC3B,IAAA,MAAM,WAAA,GAAe,WAAA,CAAY,QAAA,CAA2B,YAAY,CAAA;AACxE,IAAA,YAAA,IAAgB,CAAA;AAChB,IAAA,OAAO,WAAA;AAAA,EACT,CAAA;AACA,EAAA,OAAO;AAAA,IACL,gBAAgB,WAAA,CAAY,cAAA;AAAA,IAC5B,QAAA,EAAU;AAAA,MACR,YAAY,cAAA,EAAe;AAAA,MAC3B,WAAW,cAAA,EAAe;AAAA,MAC1B,cAAc,cAAA,EAAe;AAAA,MAC7B,YAAY,cAAA,EAAe;AAAA,MAC3B,OAAO,cAAA,EAAe;AAAA,MACtB,SAAS,cAAA,EAAe;AAAA,MACxB,YAAY,cAAA,EAAe;AAAA,MAC3B,oBAAoB,cAAA,EAAe;AAAA,MACnC,eAAe,cAAA;AAAe,KAChC;AAAA,IACA,IAAA,EAAM,sCAAA,EAAuC,CAAE,MAAA,CAAO,YAAY,IAAI;AAAA,GACxE;AACF;ACpeO,IAAM,+BAAA,GAAkC,IAAI,UAAA,CAAW;AAAA,EAC5D,EAAA;AAAA,EAAI,GAAA;AAAA,EAAK,GAAA;AAAA,EAAK,EAAA;AAAA,EAAI,EAAA;AAAA,EAAI,GAAA;AAAA,EAAK,GAAA;AAAA,EAAK;AAClC,CAAC;AAEM,SAAS,oCAAA,GAAuC;AACrD,EAAA,OAAOb,cAAAA,CAAeC,eAAAA,EAAgB,EAAG,CAAC,CAAA,CAAE,MAAA;AAAA,IAC1C;AAAA,GACF;AACF;AA4EO,SAAS,wCAAA,GAAwF;AACtG,EAAA,OAAOpB,gBAAAA;AAAA,IACLV,gBAAAA,CAAiB;AAAA,MACf,CAAC,eAAA,EAAiB6B,cAAAA,CAAeC,eAAAA,EAAgB,EAAG,CAAC,CAAC,CAAA;AAAA,MACtD,CAAC,MAAA,EAAQD,cAAAA,CAAeC,eAAAA,EAAgB,EAAG,EAAE,CAAC,CAAA;AAAA,MAC9C;AAAA,QACE,eAAA;AAAA,QACAhB,gBAAAA,CAAiBe,cAAAA,CAAeC,eAAAA,EAAgB,EAAG,EAAE,CAAC;AAAA,OACxD;AAAA,MACA,CAAC,OAAA,EAAShB,gBAAAA,CAAiBP,YAAAA,EAAc,CAAC,CAAA;AAAA,MAC1C,CAAC,OAAA,EAASD,aAAAA,EAAe,CAAA;AAAA,MACzB,CAAC,OAAA,EAASM,aAAAA,EAAe,CAAA;AAAA,MACzB,CAAC,UAAA,EAAY,wBAAA,EAA0B;AAAA,KACxC,CAAA;AAAA,IACD,CAAC,KAAA,MAAW;AAAA,MACV,GAAG,KAAA;AAAA,MACH,aAAA,EAAe,+BAAA;AAAA,MACf,aAAA,EAAe,KAAA,CAAM,aAAA,IAAiBa,IAAAA,EAAK;AAAA,MAC3C,KAAA,EAAO,KAAA,CAAM,KAAA,IAASA,IAAAA;AAAK,KAC7B;AAAA,GACF;AACF;AAEO,SAAS,wCAAA,GAAoF;AAClG,EAAA,OAAOvB,gBAAAA,CAAiB;AAAA,IACtB,CAAC,eAAA,EAAiB6B,cAAAA,CAAeC,eAAAA,EAAgB,EAAG,CAAC,CAAC,CAAA;AAAA,IACtD,CAAC,MAAA,EAAQD,cAAAA,CAAeC,eAAAA,EAAgB,EAAG,EAAE,CAAC,CAAA;AAAA,IAC9C,CAAC,iBAAiBX,gBAAAA,CAAiBU,cAAAA,CAAeC,iBAAgB,EAAG,EAAE,CAAC,CAAC,CAAA;AAAA,IACzE,CAAC,OAAA,EAASX,gBAAAA,CAAiBb,YAAAA,EAAc,CAAC,CAAA;AAAA,IAC1C,CAAC,OAAA,EAASmB,aAAAA,EAAe,CAAA;AAAA,IACzB,CAAC,OAAA,EAASR,aAAAA,EAAe,CAAA;AAAA,IACzB,CAAC,UAAA,EAAY,wBAAA,EAA0B;AAAA,GACxC,CAAA;AACH;AAEO,SAAS,sCAAA,GAGd;AACA,EAAA,OAAOpB,YAAAA;AAAA,IACL,wCAAA,EAAyC;AAAA,IACzC,wCAAA;AAAyC,GAC3C;AACF;AAiCA,eAAsB,kCAAA,CAYpB,OAWA,MAAA,EAcA;AAEA,EAAA,MAAM,cAAA,GACJ,QAAQ,cAAA,IAAkB,6BAAA;AAG5B,EAAA,MAAM,gBAAA,GAAmB;AAAA,IACvB,YAAY,EAAE,KAAA,EAAO,MAAM,UAAA,IAAc,IAAA,EAAM,YAAY,IAAA,EAAK;AAAA,IAChE,OAAO,EAAE,KAAA,EAAO,MAAM,KAAA,IAAS,IAAA,EAAM,YAAY,IAAA,EAAK;AAAA,IACtD,SAAS,EAAE,KAAA,EAAO,MAAM,OAAA,IAAW,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IAC3D,WAAW,EAAE,KAAA,EAAO,MAAM,SAAA,IAAa,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IAC/D,cAAc,EAAE,KAAA,EAAO,MAAM,YAAA,IAAgB,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IACrE,YAAY,EAAE,KAAA,EAAO,MAAM,UAAA,IAAc,IAAA,EAAM,YAAY,IAAA,EAAK;AAAA,IAChE,YAAY,EAAE,KAAA,EAAO,MAAM,UAAA,IAAc,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IACjE,kBAAA,EAAoB;AAAA,MAClB,KAAA,EAAO,MAAM,kBAAA,IAAsB,IAAA;AAAA,MACnC,UAAA,EAAY;AAAA,KACd;AAAA,IACA,eAAe,EAAE,KAAA,EAAO,MAAM,aAAA,IAAiB,IAAA,EAAM,YAAY,KAAA;AAAM,GACzE;AACA,EAAA,MAAM,QAAA,GAAW,gBAAA;AAMjB,EAAA,MAAM,IAAA,GAAO,EAAE,GAAG,KAAA,EAAM;AAGxB,EAAA,IAAI,CAAC,QAAA,CAAS,UAAA,CAAW,KAAA,EAAO;AAC9B,IAAA,QAAA,CAAS,UAAA,CAAW,KAAA,GAAQ,MAAM,iBAAA,CAAkB;AAAA,MAClD,UAAA,EAAY,aAAA,CAAc,QAAA,CAAS,UAAA,CAAW,KAAK;AAAA,KACpD,CAAA;AAAA,EACH;AACA,EAAA,IAAI,CAAC,QAAA,CAAS,UAAA,CAAW,KAAA,EAAO;AAC9B,IAAA,QAAA,CAAS,WAAW,KAAA,GAClB,6CAAA;AAAA,EACJ;AACA,EAAA,IAAI,CAAC,QAAA,CAAS,kBAAA,CAAmB,KAAA,EAAO;AACtC,IAAA,QAAA,CAAS,mBAAmB,KAAA,GAC1B,6CAAA;AAAA,EACJ;AACA,EAAA,IAAI,CAAC,QAAA,CAAS,aAAA,CAAc,KAAA,EAAO;AACjC,IAAA,QAAA,CAAS,cAAc,KAAA,GACrB,kCAAA;AAAA,EACJ;AAGA,EAAA,MAAM,iBAAA,GAAA,CAAoC,IAAA,CAAK,KAAA,IAAS,EAAC,EAAG,GAAA;AAAA,IAC1D,CAACkC,QAAAA,MAAa,EAAE,SAAAA,QAAAA,EAAS,IAAA,EAAMS,YAAY,QAAA,EAAS;AAAA,GACtD;AAEA,EAAA,MAAM,cAAA,GAAiB,qBAAA,CAAsB,cAA2B,CAAA;AACxE,EAAA,OAAO,OAAO,MAAA,CAAO;AAAA,IACnB,QAAA,EAAU;AAAA,MACR,cAAA,CAAe,SAAS,UAAU,CAAA;AAAA,MAClC,cAAA,CAAe,SAAS,KAAK,CAAA;AAAA,MAC7B,cAAA,CAAe,SAAS,OAAO,CAAA;AAAA,MAC/B,cAAA,CAAe,SAAS,SAAS,CAAA;AAAA,MACjC,cAAA,CAAe,SAAS,YAAY,CAAA;AAAA,MACpC,cAAA,CAAe,SAAS,UAAU,CAAA;AAAA,MAClC,cAAA,CAAe,SAAS,UAAU,CAAA;AAAA,MAClC,cAAA,CAAe,SAAS,kBAAkB,CAAA;AAAA,MAC1C,cAAA,CAAe,SAAS,aAAa,CAAA;AAAA,MACrC,GAAG;AAAA,KACL;AAAA,IACA,IAAA,EAAM,0CAAyC,CAAE,MAAA;AAAA,MAC/C;AAAA,KACF;AAAA,IACA;AAAA,GAYD,CAAA;AACH;AAiCO,SAAS,6BAAA,CAYd,OAWA,MAAA,EAYA;AAEA,EAAA,MAAM,cAAA,GACJ,QAAQ,cAAA,IAAkB,6BAAA;AAG5B,EAAA,MAAM,gBAAA,GAAmB;AAAA,IACvB,YAAY,EAAE,KAAA,EAAO,MAAM,UAAA,IAAc,IAAA,EAAM,YAAY,IAAA,EAAK;AAAA,IAChE,OAAO,EAAE,KAAA,EAAO,MAAM,KAAA,IAAS,IAAA,EAAM,YAAY,IAAA,EAAK;AAAA,IACtD,SAAS,EAAE,KAAA,EAAO,MAAM,OAAA,IAAW,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IAC3D,WAAW,EAAE,KAAA,EAAO,MAAM,SAAA,IAAa,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IAC/D,cAAc,EAAE,KAAA,EAAO,MAAM,YAAA,IAAgB,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IACrE,YAAY,EAAE,KAAA,EAAO,MAAM,UAAA,IAAc,IAAA,EAAM,YAAY,IAAA,EAAK;AAAA,IAChE,YAAY,EAAE,KAAA,EAAO,MAAM,UAAA,IAAc,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,IACjE,kBAAA,EAAoB;AAAA,MAClB,KAAA,EAAO,MAAM,kBAAA,IAAsB,IAAA;AAAA,MACnC,UAAA,EAAY;AAAA,KACd;AAAA,IACA,eAAe,EAAE,KAAA,EAAO,MAAM,aAAA,IAAiB,IAAA,EAAM,YAAY,KAAA;AAAM,GACzE;AACA,EAAA,MAAM,QAAA,GAAW,gBAAA;AAMjB,EAAA,MAAM,IAAA,GAAO,EAAE,GAAG,KAAA,EAAM;AAGxB,EAAA,IAAI,CAAC,QAAA,CAAS,UAAA,CAAW,KAAA,EAAO;AAC9B,IAAA,QAAA,CAAS,WAAW,KAAA,GAClB,6CAAA;AAAA,EACJ;AACA,EAAA,IAAI,CAAC,QAAA,CAAS,kBAAA,CAAmB,KAAA,EAAO;AACtC,IAAA,QAAA,CAAS,mBAAmB,KAAA,GAC1B,6CAAA;AAAA,EACJ;AACA,EAAA,IAAI,CAAC,QAAA,CAAS,aAAA,CAAc,KAAA,EAAO;AACjC,IAAA,QAAA,CAAS,cAAc,KAAA,GACrB,kCAAA;AAAA,EACJ;AAGA,EAAA,MAAM,iBAAA,GAAA,CAAoC,IAAA,CAAK,KAAA,IAAS,EAAC,EAAG,GAAA;AAAA,IAC1D,CAACT,QAAAA,MAAa,EAAE,SAAAA,QAAAA,EAAS,IAAA,EAAMS,YAAY,QAAA,EAAS;AAAA,GACtD;AAEA,EAAA,MAAM,cAAA,GAAiB,qBAAA,CAAsB,cAA2B,CAAA;AACxE,EAAA,OAAO,OAAO,MAAA,CAAO;AAAA,IACnB,QAAA,EAAU;AAAA,MACR,cAAA,CAAe,SAAS,UAAU,CAAA;AAAA,MAClC,cAAA,CAAe,SAAS,KAAK,CAAA;AAAA,MAC7B,cAAA,CAAe,SAAS,OAAO,CAAA;AAAA,MAC/B,cAAA,CAAe,SAAS,SAAS,CAAA;AAAA,MACjC,cAAA,CAAe,SAAS,YAAY,CAAA;AAAA,MACpC,cAAA,CAAe,SAAS,UAAU,CAAA;AAAA,MAClC,cAAA,CAAe,SAAS,UAAU,CAAA;AAAA,MAClC,cAAA,CAAe,SAAS,kBAAkB,CAAA;AAAA,MAC1C,cAAA,CAAe,SAAS,aAAa,CAAA;AAAA,MACrC,GAAG;AAAA,KACL;AAAA,IACA,IAAA,EAAM,0CAAyC,CAAE,MAAA;AAAA,MAC/C;AAAA,KACF;AAAA,IACA;AAAA,GAYD,CAAA;AACH;AAuBO,SAAS,gCAId,WAAA,EAG2D;AAC3D,EAAA,IAAI,WAAA,CAAY,QAAA,CAAS,MAAA,GAAS,CAAA,EAAG;AAEnC,IAAA,MAAM,IAAI,MAAM,qBAAqB,CAAA;AAAA,EACvC;AACA,EAAA,IAAI,YAAA,GAAe,CAAA;AACnB,EAAA,MAAM,iBAAiB,MAAM;AAC3B,IAAA,MAAM,WAAA,GAAe,WAAA,CAAY,QAAA,CAA2B,YAAY,CAAA;AACxE,IAAA,YAAA,IAAgB,CAAA;AAChB,IAAA,OAAO,WAAA;AAAA,EACT,CAAA;AACA,EAAA,MAAM,yBAAyB,MAAM;AACnC,IAAA,MAAM,cAAc,cAAA,EAAe;AACnC,IAAA,OAAO,WAAA,CAAY,OAAA,KAAY,6BAAA,GAC3B,MAAA,GACA,WAAA;AAAA,EACN,CAAA;AACA,EAAA,OAAO;AAAA,IACL,gBAAgB,WAAA,CAAY,cAAA;AAAA,IAC5B,QAAA,EAAU;AAAA,MACR,YAAY,cAAA,EAAe;AAAA,MAC3B,OAAO,cAAA,EAAe;AAAA,MACtB,SAAS,sBAAA,EAAuB;AAAA,MAChC,WAAW,cAAA,EAAe;AAAA,MAC1B,cAAc,sBAAA,EAAuB;AAAA,MACrC,YAAY,cAAA,EAAe;AAAA,MAC3B,YAAY,cAAA,EAAe;AAAA,MAC3B,oBAAoB,cAAA,EAAe;AAAA,MACnC,eAAe,cAAA;AAAe,KAChC;AAAA,IACA,IAAA,EAAM,wCAAA,EAAyC,CAAE,MAAA,CAAO,YAAY,IAAI;AAAA,GAC1E;AACF;;;AC5hBO,SAAS,iCAAA,CAAkC,QAAyB,CAAA,EAAG;AAO5E,EAAA,MAAM,IAAA,GAAO;AAAA;AAAA;AAAA;AAAA,IAIX,wBAAA,EAA0B,IAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAK1B,6BAA6B,MAAA,CAAO,IAAA,CAAK,MAAM,CAAA,GAAM,GAAI,CAAC,CAAA,GAAI,KAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAQ9D,8BAAA,EAAgC,MAAA;AAAA,MAC9B,KAAK,KAAA,CAAQ,GAAA,GAAgB,GAAA,GAAO,GAAA,IAAQ,OAAO,IAAA,CAAK;AAAA;AAC1D,GACF;AAEA,EAAA,OAAA,CACI,IAAA,CAAK,2BAA2B,MAAA,CAAO,KAAK,KAC5C,IAAA,CAAK,8BAAA,GACL,KAAK,2BAAA,GACP,EAAA;AAEJ;AC5BA,eAAsB,0BACpB,KAAA,EAKwB;AACxB,EAAA,MAAM,KAAA,GACJ,MAAM,cAAA,IACN,iBAAA,CAAkB,MAAM,QAAA,EAAU,KAAA,CAAM,aAAA,EAAe,KAAA,CAAM,WAAW,CAAA;AAC1E,EAAA,MAAM,QAAA,GAAW,kCAAkC,KAAK,CAAA;AAExD,EAAA,MAAM,cAAA,GACJ,MAAM,kBAAA,IAAsB,uCAAA;AAE9B,EAAA,OAAO;AAAA,IACL,2BAAA,CAA4B;AAAA,MAC1B,KAAA,EAAO,KAAA,CAAM,KAAA,IAAS,KAAA,CAAM,WAAA;AAAA,MAC5B,YAAY,KAAA,CAAM,UAAA;AAAA,MAClB,KAAA;AAAA,MACA,QAAA;AAAA,MACA;AAAA,KACD,CAAA;AAAA,IACD,MAAM,mCAAA,CAAoC;AAAA,MACxC,GAAG,KAAA;AAAA,MACH,UAAA,EAAY,MAAM,UAAA,CAAW;AAAA,KAC9B;AAAA,GACH;AACF;;;AChCO,SAAS,yBAAyB,CAAA,EAAoC;AAC3E,EAAA,OACE,OAAO,MAAM,QAAA,IACb,MAAA,CAAO,UAAU,CAAC,CAAA,IAClB,CAAA,IAAK,CAAA,IACL,CAAA,IAAK,GAAA;AAAA,EAAA,CACJ,CAAA,GAAI,EAAC,MAAW,CAAA;AAErB;;;AC4BA,eAAsB,iBAAA,CACpB,GAAA,EACA,OAAA,EACA,OAAA,EACyB;AACzB,EAAA,MAAM,CAAC,QAAA,EAAU,aAAa,CAAA,GAAI,MAAM,QAAQ,GAAA,CAAI;AAAA,IAClD,IACG,QAAA,CAAS;AAAA,MACR,EAAA,EAAI,OAAA;AAAA,MACJ,cAAA,EAAgB,EAAE,yBAAA,EAA2B,IAAA;AAAK,KACnD,EACA,IAAA,EAAK;AAAA,IACR,IAAI,aAAA,CAAc,EAAE,IAAI,OAAA,EAAS,EAAE,IAAA;AAAK,GACzC,CAAA;AAED,EAAA,IAAI,EAAE,OAAM,GAAI,aAAA;AAChB,EAAA,IAAI,SAAS,cAAA,EAAgB;AAC3B,IAAA,MAAM,iBAAA,GAAoB,MAAM,eAAA,CAAgB,GAAA,EAAK,cAAc,OAAO,CAAA;AAC1E,IAAA,MAAM,WAAA,GAAc,KAAK,IAAA,CAAK,iBAAA,CAAkB,KAAK,MAAA,CAAO,MAAA,GAAS,CAAC,CAAA,GAAI,CAAA;AAC1E,IAAA,KAAA,GAAQ,cAAc,KAAA,CAAM,KAAA;AAAA,MAC1B,CAAA;AAAA,MACA,WAAA,KAAgB,CAAA,GAAI,MAAA,GAAY,CAAC;AAAA,KACnC;AAAA,EACF;AAEA,EAAA,MAAM,gBAAA,GAAA,CAAoB,QAAA,CAAS,QAAA,IAAY,EAAC,EAAG,IAAA;AAAA,IACjD,CAAC,KAAA,KAAU,KAAA,CAAM,SAAA,KAAc;AAAA,GACjC,EAAG,WAAA;AAEH,EAAA,MAAM,QAAA,GAAyB;AAAA,IAC7B,IAAA,EAAM,QAAA,CAAS,OAAA,EAAS,QAAA,EAAU,IAAA,IAAQ,EAAA;AAAA,IAC1C,MAAA,EAAQ,QAAA,CAAS,OAAA,EAAS,QAAA,EAAU,MAAA,IAAU,EAAA;AAAA,IAC9C,GAAA,EAAK,SAAS,OAAA,EAAS,QAAA;AAAA,IACvB,oBAAA,EAAsB,SAAS,OAAA,EAAS,YAAA;AAAA,IACxC,mBAAA,EAAqB,SAAS,OAAA,EAAS,qBAAA;AAAA,IACvC,WAAW,QAAA,CAAS,OAAA;AAAA,IACpB,YAAA,EAAc,YAAA,CAAa,QAAA,CAAS,MAAA,EAAQ,aAAa,CAAA;AAAA,IACzD,eAAe1B,IAAAA,CAAAA,CAAAA,mBAA8B;AAAA,IAC7C,UAAA,EAAY,gBAAA,GACRA,IAAAA,CAAK,EAAE,GAAA,EAAK,OAAA,CAAQ,gBAAgB,CAAA,EAAG,QAAA,EAAU,IAAA,EAAM,CAAA,GACvDS,IAAAA,EAAK;AAAA,IACT,MAAMA,IAAAA,EAAK;AAAA,IACX,mBAAA,EAAA,CAAA;AAAA,IACA,UAAU,QAAA,CAAS;AAAA,GACrB;AAEA,EAAA,MAAM,iBAAiB/B,iBAAAA,EAAkB;AAEzC,EAAA,MAAM,mBAAA,GAAsB,SAAS,WAAA,CAAY,eAAA,GAC7C,eAAe,MAAA,CAAO,QAAA,CAAS,WAAA,CAAY,eAAe,CAAA,GAC1D,MAAA;AACJ,EAAA,MAAM,kBAAA,GAAqB,SAAS,WAAA,CAAY,eAAA,GAC5C,eAAe,MAAA,CAAO,QAAA,CAAS,WAAA,CAAY,eAAe,CAAA,GAC1D,MAAA;AAEJ,EAAA,MAAM,QAAA,GAAW,SAAS,WAAA,CAAY,KAAA;AACtC,EAAA,MAAM,UAAA,GAAa,wBAAA,CAAyB,QAAQ,CAAA,GAC/C,QAAA,GACD,MAAA;AAEJ,EAAA,OAAO;AAAA,IACL,SAAA,EAAW,SAAS,SAAA,CAAU,KAAA;AAAA,IAC9B,YAAA,EAAc,SAAS,SAAA,CAAU,QAAA,GAC7B,SAAS,SAAA,CAAU,QAAA,GACnB,SAAS,SAAA,CAAU,KAAA;AAAA,IACvB,YAAY,aAAA,CAAc,OAAA;AAAA,IAC1B,IAAA,EAAM,cAAA,CAAe,MAAA,CAAO,aAAA,CAAc,IAAI,CAAA;AAAA,IAC9C,QAAA,EAAU,cAAA,CAAe,MAAA,CAAO,QAAA,CAAS,YAAY,SAAS,CAAA;AAAA,IAC9D,WAAA,EAAa,cAAA,CAAe,MAAA,CAAO,QAAA,CAAS,YAAY,YAAY,CAAA;AAAA,IACpE,eAAA,EAAiB,mBAAA;AAAA,IACjB,eAAA,EAAiB,kBAAA;AAAA,IACjB,KAAA,EAAO,UAAA;AAAA,IACP,KAAA,EAAO,SAAS,WAAA,CAAY,OAAA;AAAA,IAC5B,KAAA,EAAO,aAAA,CAAc,UAAA,GAAa,CAAA,IAAK,cAAc,KAAA,CAAM,MAAA;AAAA,IAC3D,KAAA;AAAA,IACA,QAAA;AAAA,IACA,QAAA;AAAA,IACA;AAAA,GACF;AACF;ACpHA,SAAS,aAAA,CAAc,QAAmB,QAAA,EAA8B;AACtE,EAAA,MAAM,iBAAiBA,iBAAAA,EAAkB;AACzC,EAAA,OAAO,IAAI,UAAA;AAAA,IACT;AAAA,MACE,GAAG,OAAO,GAAA,CAAI,CAAC,SAAS,cAAA,CAAe,MAAA,CAAO,IAAI,CAAC,CAAA;AAAA,MACnD,GAAG,KAAA,CAAM,CAAA,IAAK,WAAW,MAAA,CAAO,MAAM,EACnC,IAAA,CAAK,CAAC,CAAA,CACN,GAAA,CAAI,MAAM,IAAI,UAAA,CAAW,EAAE,CAAA,CAAE,IAAA,CAAK,CAAC,CAAC;AAAA,KACzC;AAAA,IACAkD;AAAA,GACF;AACF;AAQO,SAAS,cAAA,CACd,MAAA,EACA,QAAA,EACA,IAAA,EACA,KAAA,EACW;AACX,EAAA,MAAM,eAAe,eAAA,EAAgB;AAErC,EAAA,OAAO,aAAA,CAAc,QAAQ,QAAQ,CAAA,CAClC,SAAS,MAAA,CAAO,IAAA,CAAK,aAAa,MAAA,CAAO,IAAI,CAAC,CAAA,EAAG,KAAK,EACtD,GAAA,CAAI,CAAC,cAAc,YAAA,CAAa,MAAA,CAAO,SAAA,CAAU,IAAI,CAAC,CAAA;AAC3D","file":"index.mjs","sourcesContent":["import { AssetWithProof } from './getAssetWithProof';\nimport { DasApiAsset } from './rpc';\n\nfunction isAssetWithProof(\n  asset: AssetWithProof | DasApiAsset\n): asset is AssetWithProof {\n  return 'rpcAsset' in asset;\n}\n\nexport function canTransfer(asset: AssetWithProof | DasApiAsset): boolean {\n  const ownership = isAssetWithProof(asset)\n    ? asset.rpcAsset.ownership\n    : asset.ownership;\n\n  const isFrozen =\n    ownership.frozen === true || ownership.non_transferable === true;\n  return !isFrozen;\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  getAddressEncoder,\n  getProgramDerivedAddress,\n  type Address,\n  type ProgramDerivedAddress,\n} from '@solana/kit';\n\nexport type TreeConfigSeeds = {\n  merkleTree: Address;\n};\n\nexport async function findTreeConfigPda(\n  seeds: TreeConfigSeeds,\n  config: { programAddress?: Address | undefined } = {}\n): Promise<ProgramDerivedAddress> {\n  const {\n    programAddress = 'BGUMAp9Gq7iTEuizy4pqaxsTyUCBK68MDfK752saRPUY' as Address<'BGUMAp9Gq7iTEuizy4pqaxsTyUCBK68MDfK752saRPUY'>,\n  } = config;\n  return await getProgramDerivedAddress({\n    programAddress,\n    seeds: [getAddressEncoder().encode(seeds.merkleTree)],\n  });\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  getAddressEncoder,\n  getProgramDerivedAddress,\n  getU64Encoder,\n  getUtf8Encoder,\n  type Address,\n  type ProgramDerivedAddress,\n} from '@solana/kit';\n\nexport type VoucherSeeds = {\n  merkleTree: Address;\n  nonce: number | bigint;\n};\n\nexport async function findVoucherPda(\n  seeds: VoucherSeeds,\n  config: { programAddress?: Address | undefined } = {}\n): Promise<ProgramDerivedAddress> {\n  const {\n    programAddress = 'BGUMAp9Gq7iTEuizy4pqaxsTyUCBK68MDfK752saRPUY' as Address<'BGUMAp9Gq7iTEuizy4pqaxsTyUCBK68MDfK752saRPUY'>,\n  } = config;\n  return await getProgramDerivedAddress({\n    programAddress,\n    seeds: [\n      getUtf8Encoder().encode('voucher'),\n      getAddressEncoder().encode(seeds.merkleTree),\n      getU64Encoder().encode(seeds.nonce),\n    ],\n  });\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  combineCodec,\n  getEnumDecoder,\n  getEnumEncoder,\n  type FixedSizeCodec,\n  type FixedSizeDecoder,\n  type FixedSizeEncoder,\n} from '@solana/kit';\n\nexport enum AssetDataSchema {\n  Binary,\n  Json,\n  MsgPack,\n}\n\nexport type AssetDataSchemaArgs = AssetDataSchema;\n\nexport function getAssetDataSchemaEncoder(): FixedSizeEncoder<AssetDataSchemaArgs> {\n  return getEnumEncoder(AssetDataSchema);\n}\n\nexport function getAssetDataSchemaDecoder(): FixedSizeDecoder<AssetDataSchema> {\n  return getEnumDecoder(AssetDataSchema);\n}\n\nexport function getAssetDataSchemaCodec(): FixedSizeCodec<\n  AssetDataSchemaArgs,\n  AssetDataSchema\n> {\n  return combineCodec(getAssetDataSchemaEncoder(), getAssetDataSchemaDecoder());\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  combineCodec,\n  getEnumDecoder,\n  getEnumEncoder,\n  type FixedSizeCodec,\n  type FixedSizeDecoder,\n  type FixedSizeEncoder,\n} from '@solana/kit';\n\nexport enum BubblegumEventType {\n  Uninitialized,\n  LeafSchemaEvent,\n}\n\nexport type BubblegumEventTypeArgs = BubblegumEventType;\n\nexport function getBubblegumEventTypeEncoder(): FixedSizeEncoder<BubblegumEventTypeArgs> {\n  return getEnumEncoder(BubblegumEventType);\n}\n\nexport function getBubblegumEventTypeDecoder(): FixedSizeDecoder<BubblegumEventType> {\n  return getEnumDecoder(BubblegumEventType);\n}\n\nexport function getBubblegumEventTypeCodec(): FixedSizeCodec<\n  BubblegumEventTypeArgs,\n  BubblegumEventType\n> {\n  return combineCodec(\n    getBubblegumEventTypeEncoder(),\n    getBubblegumEventTypeDecoder()\n  );\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  combineCodec,\n  getAddressDecoder,\n  getAddressEncoder,\n  getBooleanDecoder,\n  getBooleanEncoder,\n  getStructDecoder,\n  getStructEncoder,\n  type Address,\n  type FixedSizeCodec,\n  type FixedSizeDecoder,\n  type FixedSizeEncoder,\n} from '@solana/kit';\n\nexport type Collection = { verified: boolean; key: Address };\n\nexport type CollectionArgs = Collection;\n\nexport function getCollectionEncoder(): FixedSizeEncoder<CollectionArgs> {\n  return getStructEncoder([\n    ['verified', getBooleanEncoder()],\n    ['key', getAddressEncoder()],\n  ]);\n}\n\nexport function getCollectionDecoder(): FixedSizeDecoder<Collection> {\n  return getStructDecoder([\n    ['verified', getBooleanDecoder()],\n    ['key', getAddressDecoder()],\n  ]);\n}\n\nexport function getCollectionCodec(): FixedSizeCodec<\n  CollectionArgs,\n  Collection\n> {\n  return combineCodec(getCollectionEncoder(), getCollectionDecoder());\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  combineCodec,\n  getAddressDecoder,\n  getAddressEncoder,\n  getBooleanDecoder,\n  getBooleanEncoder,\n  getStructDecoder,\n  getStructEncoder,\n  getU8Decoder,\n  getU8Encoder,\n  type Address,\n  type FixedSizeCodec,\n  type FixedSizeDecoder,\n  type FixedSizeEncoder,\n} from '@solana/kit';\n\nexport type Creator = {\n  address: Address;\n  verified: boolean;\n  /**\n   * The percentage share.\n   *\n   * The value is a percentage, not basis points.\n   */\n  share: number;\n};\n\nexport type CreatorArgs = Creator;\n\nexport function getCreatorEncoder(): FixedSizeEncoder<CreatorArgs> {\n  return getStructEncoder([\n    ['address', getAddressEncoder()],\n    ['verified', getBooleanEncoder()],\n    ['share', getU8Encoder()],\n  ]);\n}\n\nexport function getCreatorDecoder(): FixedSizeDecoder<Creator> {\n  return getStructDecoder([\n    ['address', getAddressDecoder()],\n    ['verified', getBooleanDecoder()],\n    ['share', getU8Decoder()],\n  ]);\n}\n\nexport function getCreatorCodec(): FixedSizeCodec<CreatorArgs, Creator> {\n  return combineCodec(getCreatorEncoder(), getCreatorDecoder());\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  combineCodec,\n  getEnumDecoder,\n  getEnumEncoder,\n  type FixedSizeCodec,\n  type FixedSizeDecoder,\n  type FixedSizeEncoder,\n} from '@solana/kit';\n\nexport enum DecompressibleState {\n  Enabled,\n  Disabled,\n}\n\nexport type DecompressibleStateArgs = DecompressibleState;\n\nexport function getDecompressibleStateEncoder(): FixedSizeEncoder<DecompressibleStateArgs> {\n  return getEnumEncoder(DecompressibleState);\n}\n\nexport function getDecompressibleStateDecoder(): FixedSizeDecoder<DecompressibleState> {\n  return getEnumDecoder(DecompressibleState);\n}\n\nexport function getDecompressibleStateCodec(): FixedSizeCodec<\n  DecompressibleStateArgs,\n  DecompressibleState\n> {\n  return combineCodec(\n    getDecompressibleStateEncoder(),\n    getDecompressibleStateDecoder()\n  );\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  combineCodec,\n  fixDecoderSize,\n  fixEncoderSize,\n  getAddressDecoder,\n  getAddressEncoder,\n  getBytesDecoder,\n  getBytesEncoder,\n  getDiscriminatedUnionDecoder,\n  getDiscriminatedUnionEncoder,\n  getStructDecoder,\n  getStructEncoder,\n  getU64Decoder,\n  getU64Encoder,\n  getU8Decoder,\n  getU8Encoder,\n  type Address,\n  type Codec,\n  type Decoder,\n  type Encoder,\n  type GetDiscriminatedUnionVariant,\n  type GetDiscriminatedUnionVariantContent,\n  type ReadonlyUint8Array,\n} from '@solana/kit';\n\nexport type LeafSchema =\n  | {\n      __kind: 'V1';\n      id: Address;\n      owner: Address;\n      delegate: Address;\n      nonce: bigint;\n      dataHash: ReadonlyUint8Array;\n      creatorHash: ReadonlyUint8Array;\n    }\n  | {\n      __kind: 'V2';\n      id: Address;\n      owner: Address;\n      delegate: Address;\n      nonce: bigint;\n      dataHash: ReadonlyUint8Array;\n      creatorHash: ReadonlyUint8Array;\n      collectionHash: ReadonlyUint8Array;\n      assetDataHash: ReadonlyUint8Array;\n      flags: number;\n    };\n\nexport type LeafSchemaArgs =\n  | {\n      __kind: 'V1';\n      id: Address;\n      owner: Address;\n      delegate: Address;\n      nonce: number | bigint;\n      dataHash: ReadonlyUint8Array;\n      creatorHash: ReadonlyUint8Array;\n    }\n  | {\n      __kind: 'V2';\n      id: Address;\n      owner: Address;\n      delegate: Address;\n      nonce: number | bigint;\n      dataHash: ReadonlyUint8Array;\n      creatorHash: ReadonlyUint8Array;\n      collectionHash: ReadonlyUint8Array;\n      assetDataHash: ReadonlyUint8Array;\n      flags: number;\n    };\n\nexport function getLeafSchemaEncoder(): Encoder<LeafSchemaArgs> {\n  return getDiscriminatedUnionEncoder([\n    [\n      'V1',\n      getStructEncoder([\n        ['id', getAddressEncoder()],\n        ['owner', getAddressEncoder()],\n        ['delegate', getAddressEncoder()],\n        ['nonce', getU64Encoder()],\n        ['dataHash', fixEncoderSize(getBytesEncoder(), 32)],\n        ['creatorHash', fixEncoderSize(getBytesEncoder(), 32)],\n      ]),\n    ],\n    [\n      'V2',\n      getStructEncoder([\n        ['id', getAddressEncoder()],\n        ['owner', getAddressEncoder()],\n        ['delegate', getAddressEncoder()],\n        ['nonce', getU64Encoder()],\n        ['dataHash', fixEncoderSize(getBytesEncoder(), 32)],\n        ['creatorHash', fixEncoderSize(getBytesEncoder(), 32)],\n        ['collectionHash', fixEncoderSize(getBytesEncoder(), 32)],\n        ['assetDataHash', fixEncoderSize(getBytesEncoder(), 32)],\n        ['flags', getU8Encoder()],\n      ]),\n    ],\n  ]);\n}\n\nexport function getLeafSchemaDecoder(): Decoder<LeafSchema> {\n  return getDiscriminatedUnionDecoder([\n    [\n      'V1',\n      getStructDecoder([\n        ['id', getAddressDecoder()],\n        ['owner', getAddressDecoder()],\n        ['delegate', getAddressDecoder()],\n        ['nonce', getU64Decoder()],\n        ['dataHash', fixDecoderSize(getBytesDecoder(), 32)],\n        ['creatorHash', fixDecoderSize(getBytesDecoder(), 32)],\n      ]),\n    ],\n    [\n      'V2',\n      getStructDecoder([\n        ['id', getAddressDecoder()],\n        ['owner', getAddressDecoder()],\n        ['delegate', getAddressDecoder()],\n        ['nonce', getU64Decoder()],\n        ['dataHash', fixDecoderSize(getBytesDecoder(), 32)],\n        ['creatorHash', fixDecoderSize(getBytesDecoder(), 32)],\n        ['collectionHash', fixDecoderSize(getBytesDecoder(), 32)],\n        ['assetDataHash', fixDecoderSize(getBytesDecoder(), 32)],\n        ['flags', getU8Decoder()],\n      ]),\n    ],\n  ]);\n}\n\nexport function getLeafSchemaCodec(): Codec<LeafSchemaArgs, LeafSchema> {\n  return combineCodec(getLeafSchemaEncoder(), getLeafSchemaDecoder());\n}\n\n// Data Enum Helpers.\nexport function leafSchema(\n  kind: 'V1',\n  data: GetDiscriminatedUnionVariantContent<LeafSchemaArgs, '__kind', 'V1'>\n): GetDiscriminatedUnionVariant<LeafSchemaArgs, '__kind', 'V1'>;\nexport function leafSchema(\n  kind: 'V2',\n  data: GetDiscriminatedUnionVariantContent<LeafSchemaArgs, '__kind', 'V2'>\n): GetDiscriminatedUnionVariant<LeafSchemaArgs, '__kind', 'V2'>;\nexport function leafSchema<K extends LeafSchemaArgs['__kind'], Data>(\n  kind: K,\n  data?: Data\n) {\n  return Array.isArray(data)\n    ? { __kind: kind, fields: data }\n    : { __kind: kind, ...(data ?? {}) };\n}\n\nexport function isLeafSchema<K extends LeafSchema['__kind']>(\n  kind: K,\n  value: LeafSchema\n): value is LeafSchema & { __kind: K } {\n  return value.__kind === kind;\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  addDecoderSizePrefix,\n  addEncoderSizePrefix,\n  combineCodec,\n  getArrayDecoder,\n  getArrayEncoder,\n  getBooleanDecoder,\n  getBooleanEncoder,\n  getOptionDecoder,\n  getOptionEncoder,\n  getStructDecoder,\n  getStructEncoder,\n  getU16Decoder,\n  getU16Encoder,\n  getU32Decoder,\n  getU32Encoder,\n  getU8Decoder,\n  getU8Encoder,\n  getUtf8Decoder,\n  getUtf8Encoder,\n  none,\n  some,\n  transformEncoder,\n  type Codec,\n  type Decoder,\n  type Encoder,\n  type Option,\n  type OptionOrNullable,\n} from '@solana/kit';\nimport {\n  getCollectionDecoder,\n  getCollectionEncoder,\n  getCreatorDecoder,\n  getCreatorEncoder,\n  getTokenProgramVersionDecoder,\n  getTokenProgramVersionEncoder,\n  getTokenStandardDecoder,\n  getTokenStandardEncoder,\n  getUsesDecoder,\n  getUsesEncoder,\n  TokenProgramVersion,\n  TokenStandard,\n  type Collection,\n  type CollectionArgs,\n  type Creator,\n  type CreatorArgs,\n  type TokenProgramVersionArgs,\n  type TokenStandardArgs,\n  type Uses,\n  type UsesArgs,\n} from '.';\n\nexport type MetadataArgs = {\n  /** The name of the asset */\n  name: string;\n  /** The symbol for the asset */\n  symbol: string;\n  /** URI pointing to JSON representing the asset */\n  uri: string;\n  /** Royalty basis points that goes to creators in secondary sales (0-10000) */\n  sellerFeeBasisPoints: number;\n  /** Immutable, once flipped, all sales of this metadata are considered secondary. */\n  primarySaleHappened: boolean;\n  /** Whether or not the data struct is mutable, default is not */\n  isMutable: boolean;\n  /** nonce for easy calculation of editions, if present */\n  editionNonce: Option<number>;\n  /** Token standard.  Currently only `NonFungible` is allowed. */\n  tokenStandard: Option<TokenStandard>;\n  /** Collection */\n  collection: Option<Collection>;\n  /** Uses */\n  uses: Option<Uses>;\n  tokenProgramVersion: TokenProgramVersion;\n  creators: Array<Creator>;\n};\n\nexport type MetadataArgsArgs = {\n  /** The name of the asset */\n  name: string;\n  /** The symbol for the asset */\n  symbol?: string;\n  /** URI pointing to JSON representing the asset */\n  uri: string;\n  /** Royalty basis points that goes to creators in secondary sales (0-10000) */\n  sellerFeeBasisPoints: number;\n  /** Immutable, once flipped, all sales of this metadata are considered secondary. */\n  primarySaleHappened?: boolean;\n  /** Whether or not the data struct is mutable, default is not */\n  isMutable?: boolean;\n  /** nonce for easy calculation of editions, if present */\n  editionNonce?: OptionOrNullable<number>;\n  /** Token standard.  Currently only `NonFungible` is allowed. */\n  tokenStandard?: OptionOrNullable<TokenStandardArgs>;\n  /** Collection */\n  collection: OptionOrNullable<CollectionArgs>;\n  /** Uses */\n  uses?: OptionOrNullable<UsesArgs>;\n  tokenProgramVersion?: TokenProgramVersionArgs;\n  creators: Array<CreatorArgs>;\n};\n\nexport function getMetadataArgsEncoder(): Encoder<MetadataArgsArgs> {\n  return transformEncoder(\n    getStructEncoder([\n      ['name', addEncoderSizePrefix(getUtf8Encoder(), getU32Encoder())],\n      ['symbol', addEncoderSizePrefix(getUtf8Encoder(), getU32Encoder())],\n      ['uri', addEncoderSizePrefix(getUtf8Encoder(), getU32Encoder())],\n      ['sellerFeeBasisPoints', getU16Encoder()],\n      ['primarySaleHappened', getBooleanEncoder()],\n      ['isMutable', getBooleanEncoder()],\n      ['editionNonce', getOptionEncoder(getU8Encoder())],\n      ['tokenStandard', getOptionEncoder(getTokenStandardEncoder())],\n      ['collection', getOptionEncoder(getCollectionEncoder())],\n      ['uses', getOptionEncoder(getUsesEncoder())],\n      ['tokenProgramVersion', getTokenProgramVersionEncoder()],\n      ['creators', getArrayEncoder(getCreatorEncoder())],\n    ]),\n    (value) => ({\n      ...value,\n      symbol: value.symbol ?? '',\n      primarySaleHappened: value.primarySaleHappened ?? false,\n      isMutable: value.isMutable ?? true,\n      editionNonce: value.editionNonce ?? none(),\n      tokenStandard: value.tokenStandard ?? some(TokenStandard.NonFungible),\n      uses: value.uses ?? none(),\n      tokenProgramVersion:\n        value.tokenProgramVersion ?? TokenProgramVersion.Original,\n    })\n  );\n}\n\nexport function getMetadataArgsDecoder(): Decoder<MetadataArgs> {\n  return getStructDecoder([\n    ['name', addDecoderSizePrefix(getUtf8Decoder(), getU32Decoder())],\n    ['symbol', addDecoderSizePrefix(getUtf8Decoder(), getU32Decoder())],\n    ['uri', addDecoderSizePrefix(getUtf8Decoder(), getU32Decoder())],\n    ['sellerFeeBasisPoints', getU16Decoder()],\n    ['primarySaleHappened', getBooleanDecoder()],\n    ['isMutable', getBooleanDecoder()],\n    ['editionNonce', getOptionDecoder(getU8Decoder())],\n    ['tokenStandard', getOptionDecoder(getTokenStandardDecoder())],\n    ['collection', getOptionDecoder(getCollectionDecoder())],\n    ['uses', getOptionDecoder(getUsesDecoder())],\n    ['tokenProgramVersion', getTokenProgramVersionDecoder()],\n    ['creators', getArrayDecoder(getCreatorDecoder())],\n  ]);\n}\n\nexport function getMetadataArgsCodec(): Codec<MetadataArgsArgs, MetadataArgs> {\n  return combineCodec(getMetadataArgsEncoder(), getMetadataArgsDecoder());\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  addDecoderSizePrefix,\n  addEncoderSizePrefix,\n  combineCodec,\n  getAddressDecoder,\n  getAddressEncoder,\n  getArrayDecoder,\n  getArrayEncoder,\n  getBooleanDecoder,\n  getBooleanEncoder,\n  getOptionDecoder,\n  getOptionEncoder,\n  getStructDecoder,\n  getStructEncoder,\n  getU16Decoder,\n  getU16Encoder,\n  getU32Decoder,\n  getU32Encoder,\n  getUtf8Decoder,\n  getUtf8Encoder,\n  some,\n  transformEncoder,\n  type Address,\n  type Codec,\n  type Decoder,\n  type Encoder,\n  type Option,\n  type OptionOrNullable,\n} from '@solana/kit';\nimport {\n  getCreatorDecoder,\n  getCreatorEncoder,\n  getTokenStandardDecoder,\n  getTokenStandardEncoder,\n  TokenStandard,\n  type Creator,\n  type CreatorArgs,\n  type TokenStandardArgs,\n} from '.';\n\nexport type MetadataArgsV2 = {\n  /** The name of the asset */\n  name: string;\n  /** The symbol for the asset */\n  symbol: string;\n  /** URI pointing to JSON representing the asset */\n  uri: string;\n  /** Royalty basis points that goes to creators in secondary sales (0-10000) */\n  sellerFeeBasisPoints: number;\n  /** Immutable, once flipped, all sales of this metadata are considered secondary. */\n  primarySaleHappened: boolean;\n  /** Whether or not the data struct is mutable, default is not */\n  isMutable: boolean;\n  /** Token standard.  Currently only `NonFungible` is allowed. */\n  tokenStandard: Option<TokenStandard>;\n  /** Creator array */\n  creators: Array<Creator>;\n  /** Collection.  Note in V2 its just a `Pubkey` and is always considered verified. */\n  collection: Option<Address>;\n};\n\nexport type MetadataArgsV2Args = {\n  /** The name of the asset */\n  name: string;\n  /** The symbol for the asset */\n  symbol?: string;\n  /** URI pointing to JSON representing the asset */\n  uri: string;\n  /** Royalty basis points that goes to creators in secondary sales (0-10000) */\n  sellerFeeBasisPoints: number;\n  /** Immutable, once flipped, all sales of this metadata are considered secondary. */\n  primarySaleHappened?: boolean;\n  /** Whether or not the data struct is mutable, default is not */\n  isMutable?: boolean;\n  /** Token standard.  Currently only `NonFungible` is allowed. */\n  tokenStandard?: OptionOrNullable<TokenStandardArgs>;\n  /** Creator array */\n  creators: Array<CreatorArgs>;\n  /** Collection.  Note in V2 its just a `Pubkey` and is always considered verified. */\n  collection: OptionOrNullable<Address>;\n};\n\nexport function getMetadataArgsV2Encoder(): Encoder<MetadataArgsV2Args> {\n  return transformEncoder(\n    getStructEncoder([\n      ['name', addEncoderSizePrefix(getUtf8Encoder(), getU32Encoder())],\n      ['symbol', addEncoderSizePrefix(getUtf8Encoder(), getU32Encoder())],\n      ['uri', addEncoderSizePrefix(getUtf8Encoder(), getU32Encoder())],\n      ['sellerFeeBasisPoints', getU16Encoder()],\n      ['primarySaleHappened', getBooleanEncoder()],\n      ['isMutable', getBooleanEncoder()],\n      ['tokenStandard', getOptionEncoder(getTokenStandardEncoder())],\n      ['creators', getArrayEncoder(getCreatorEncoder())],\n      ['collection', getOptionEncoder(getAddressEncoder())],\n    ]),\n    (value) => ({\n      ...value,\n      symbol: value.symbol ?? '',\n      primarySaleHappened: value.primarySaleHappened ?? false,\n      isMutable: value.isMutable ?? true,\n      tokenStandard: value.tokenStandard ?? some(TokenStandard.NonFungible),\n    })\n  );\n}\n\nexport function getMetadataArgsV2Decoder(): Decoder<MetadataArgsV2> {\n  return getStructDecoder([\n    ['name', addDecoderSizePrefix(getUtf8Decoder(), getU32Decoder())],\n    ['symbol', addDecoderSizePrefix(getUtf8Decoder(), getU32Decoder())],\n    ['uri', addDecoderSizePrefix(getUtf8Decoder(), getU32Decoder())],\n    ['sellerFeeBasisPoints', getU16Decoder()],\n    ['primarySaleHappened', getBooleanDecoder()],\n    ['isMutable', getBooleanDecoder()],\n    ['tokenStandard', getOptionDecoder(getTokenStandardDecoder())],\n    ['creators', getArrayDecoder(getCreatorDecoder())],\n    ['collection', getOptionDecoder(getAddressDecoder())],\n  ]);\n}\n\nexport function getMetadataArgsV2Codec(): Codec<\n  MetadataArgsV2Args,\n  MetadataArgsV2\n> {\n  return combineCodec(getMetadataArgsV2Encoder(), getMetadataArgsV2Decoder());\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  combineCodec,\n  getEnumDecoder,\n  getEnumEncoder,\n  type FixedSizeCodec,\n  type FixedSizeDecoder,\n  type FixedSizeEncoder,\n} from '@solana/kit';\n\nexport enum TokenProgramVersion {\n  Original,\n  Token2022,\n}\n\nexport type TokenProgramVersionArgs = TokenProgramVersion;\n\nexport function getTokenProgramVersionEncoder(): FixedSizeEncoder<TokenProgramVersionArgs> {\n  return getEnumEncoder(TokenProgramVersion);\n}\n\nexport function getTokenProgramVersionDecoder(): FixedSizeDecoder<TokenProgramVersion> {\n  return getEnumDecoder(TokenProgramVersion);\n}\n\nexport function getTokenProgramVersionCodec(): FixedSizeCodec<\n  TokenProgramVersionArgs,\n  TokenProgramVersion\n> {\n  return combineCodec(\n    getTokenProgramVersionEncoder(),\n    getTokenProgramVersionDecoder()\n  );\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  combineCodec,\n  getEnumDecoder,\n  getEnumEncoder,\n  type FixedSizeCodec,\n  type FixedSizeDecoder,\n  type FixedSizeEncoder,\n} from '@solana/kit';\n\nexport enum TokenStandard {\n  NonFungible,\n  FungibleAsset,\n  Fungible,\n  NonFungibleEdition,\n}\n\nexport type TokenStandardArgs = TokenStandard;\n\nexport function getTokenStandardEncoder(): FixedSizeEncoder<TokenStandardArgs> {\n  return getEnumEncoder(TokenStandard);\n}\n\nexport function getTokenStandardDecoder(): FixedSizeDecoder<TokenStandard> {\n  return getEnumDecoder(TokenStandard);\n}\n\nexport function getTokenStandardCodec(): FixedSizeCodec<\n  TokenStandardArgs,\n  TokenStandard\n> {\n  return combineCodec(getTokenStandardEncoder(), getTokenStandardDecoder());\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  addDecoderSizePrefix,\n  addEncoderSizePrefix,\n  combineCodec,\n  getArrayDecoder,\n  getArrayEncoder,\n  getBooleanDecoder,\n  getBooleanEncoder,\n  getOptionDecoder,\n  getOptionEncoder,\n  getStructDecoder,\n  getStructEncoder,\n  getU16Decoder,\n  getU16Encoder,\n  getU32Decoder,\n  getU32Encoder,\n  getUtf8Decoder,\n  getUtf8Encoder,\n  none,\n  transformEncoder,\n  type Codec,\n  type Decoder,\n  type Encoder,\n  type Option,\n  type OptionOrNullable,\n} from '@solana/kit';\nimport {\n  getCreatorDecoder,\n  getCreatorEncoder,\n  type Creator,\n  type CreatorArgs,\n} from '.';\n\nexport type UpdateArgs = {\n  name: Option<string>;\n  symbol: Option<string>;\n  uri: Option<string>;\n  creators: Option<Array<Creator>>;\n  sellerFeeBasisPoints: Option<number>;\n  primarySaleHappened: Option<boolean>;\n  isMutable: Option<boolean>;\n};\n\nexport type UpdateArgsArgs = {\n  name?: OptionOrNullable<string>;\n  symbol?: OptionOrNullable<string>;\n  uri?: OptionOrNullable<string>;\n  creators?: OptionOrNullable<Array<CreatorArgs>>;\n  sellerFeeBasisPoints?: OptionOrNullable<number>;\n  primarySaleHappened?: OptionOrNullable<boolean>;\n  isMutable?: OptionOrNullable<boolean>;\n};\n\nexport function getUpdateArgsEncoder(): Encoder<UpdateArgsArgs> {\n  return transformEncoder(\n    getStructEncoder([\n      [\n        'name',\n        getOptionEncoder(\n          addEncoderSizePrefix(getUtf8Encoder(), getU32Encoder())\n        ),\n      ],\n      [\n        'symbol',\n        getOptionEncoder(\n          addEncoderSizePrefix(getUtf8Encoder(), getU32Encoder())\n        ),\n      ],\n      [\n        'uri',\n        getOptionEncoder(\n          addEncoderSizePrefix(getUtf8Encoder(), getU32Encoder())\n        ),\n      ],\n      ['creators', getOptionEncoder(getArrayEncoder(getCreatorEncoder()))],\n      ['sellerFeeBasisPoints', getOptionEncoder(getU16Encoder())],\n      ['primarySaleHappened', getOptionEncoder(getBooleanEncoder())],\n      ['isMutable', getOptionEncoder(getBooleanEncoder())],\n    ]),\n    (value) => ({\n      ...value,\n      name: value.name ?? none(),\n      symbol: value.symbol ?? none(),\n      uri: value.uri ?? none(),\n      creators: value.creators ?? none(),\n      sellerFeeBasisPoints: value.sellerFeeBasisPoints ?? none(),\n      primarySaleHappened: value.primarySaleHappened ?? none(),\n      isMutable: value.isMutable ?? none(),\n    })\n  );\n}\n\nexport function getUpdateArgsDecoder(): Decoder<UpdateArgs> {\n  return getStructDecoder([\n    [\n      'name',\n      getOptionDecoder(addDecoderSizePrefix(getUtf8Decoder(), getU32Decoder())),\n    ],\n    [\n      'symbol',\n      getOptionDecoder(addDecoderSizePrefix(getUtf8Decoder(), getU32Decoder())),\n    ],\n    [\n      'uri',\n      getOptionDecoder(addDecoderSizePrefix(getUtf8Decoder(), getU32Decoder())),\n    ],\n    ['creators', getOptionDecoder(getArrayDecoder(getCreatorDecoder()))],\n    ['sellerFeeBasisPoints', getOptionDecoder(getU16Decoder())],\n    ['primarySaleHappened', getOptionDecoder(getBooleanDecoder())],\n    ['isMutable', getOptionDecoder(getBooleanDecoder())],\n  ]);\n}\n\nexport function getUpdateArgsCodec(): Codec<UpdateArgsArgs, UpdateArgs> {\n  return combineCodec(getUpdateArgsEncoder(), getUpdateArgsDecoder());\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  combineCodec,\n  getEnumDecoder,\n  getEnumEncoder,\n  type FixedSizeCodec,\n  type FixedSizeDecoder,\n  type FixedSizeEncoder,\n} from '@solana/kit';\n\nexport enum UseMethod {\n  Burn,\n  Multiple,\n  Single,\n}\n\nexport type UseMethodArgs = UseMethod;\n\nexport function getUseMethodEncoder(): FixedSizeEncoder<UseMethodArgs> {\n  return getEnumEncoder(UseMethod);\n}\n\nexport function getUseMethodDecoder(): FixedSizeDecoder<UseMethod> {\n  return getEnumDecoder(UseMethod);\n}\n\nexport function getUseMethodCodec(): FixedSizeCodec<UseMethodArgs, UseMethod> {\n  return combineCodec(getUseMethodEncoder(), getUseMethodDecoder());\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  combineCodec,\n  getStructDecoder,\n  getStructEncoder,\n  getU64Decoder,\n  getU64Encoder,\n  type FixedSizeCodec,\n  type FixedSizeDecoder,\n  type FixedSizeEncoder,\n} from '@solana/kit';\nimport {\n  getUseMethodDecoder,\n  getUseMethodEncoder,\n  type UseMethod,\n  type UseMethodArgs,\n} from '.';\n\nexport type Uses = { useMethod: UseMethod; remaining: bigint; total: bigint };\n\nexport type UsesArgs = {\n  useMethod: UseMethodArgs;\n  remaining: number | bigint;\n  total: number | bigint;\n};\n\nexport function getUsesEncoder(): FixedSizeEncoder<UsesArgs> {\n  return getStructEncoder([\n    ['useMethod', getUseMethodEncoder()],\n    ['remaining', getU64Encoder()],\n    ['total', getU64Encoder()],\n  ]);\n}\n\nexport function getUsesDecoder(): FixedSizeDecoder<Uses> {\n  return getStructDecoder([\n    ['useMethod', getUseMethodDecoder()],\n    ['remaining', getU64Decoder()],\n    ['total', getU64Decoder()],\n  ]);\n}\n\nexport function getUsesCodec(): FixedSizeCodec<UsesArgs, Uses> {\n  return combineCodec(getUsesEncoder(), getUsesDecoder());\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  combineCodec,\n  getEnumDecoder,\n  getEnumEncoder,\n  type FixedSizeCodec,\n  type FixedSizeDecoder,\n  type FixedSizeEncoder,\n} from '@solana/kit';\n\nexport enum Version {\n  V1,\n  V2,\n}\n\nexport type VersionArgs = Version;\n\nexport function getVersionEncoder(): FixedSizeEncoder<VersionArgs> {\n  return getEnumEncoder(Version);\n}\n\nexport function getVersionDecoder(): FixedSizeDecoder<Version> {\n  return getEnumDecoder(Version);\n}\n\nexport function getVersionCodec(): FixedSizeCodec<VersionArgs, Version> {\n  return combineCodec(getVersionEncoder(), getVersionDecoder());\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  assertAccountExists,\n  assertAccountsExist,\n  combineCodec,\n  decodeAccount,\n  fetchEncodedAccount,\n  fetchEncodedAccounts,\n  fixDecoderSize,\n  fixEncoderSize,\n  getAddressDecoder,\n  getAddressEncoder,\n  getBooleanDecoder,\n  getBooleanEncoder,\n  getBytesDecoder,\n  getBytesEncoder,\n  getStructDecoder,\n  getStructEncoder,\n  getU64Decoder,\n  getU64Encoder,\n  transformEncoder,\n  type Account,\n  type Address,\n  type EncodedAccount,\n  type FetchAccountConfig,\n  type FetchAccountsConfig,\n  type FixedSizeCodec,\n  type FixedSizeDecoder,\n  type FixedSizeEncoder,\n  type MaybeAccount,\n  type MaybeEncodedAccount,\n  type ReadonlyUint8Array,\n} from '@solana/kit';\nimport { findTreeConfigPda, TreeConfigSeeds } from '../pdas';\nimport {\n  getDecompressibleStateDecoder,\n  getDecompressibleStateEncoder,\n  getVersionDecoder,\n  getVersionEncoder,\n  type DecompressibleState,\n  type DecompressibleStateArgs,\n  type Version,\n  type VersionArgs,\n} from '../types';\n\nexport const TREE_CONFIG_DISCRIMINATOR = new Uint8Array([\n  122, 245, 175, 248, 171, 34, 0, 207,\n]);\n\nexport function getTreeConfigDiscriminatorBytes() {\n  return fixEncoderSize(getBytesEncoder(), 8).encode(TREE_CONFIG_DISCRIMINATOR);\n}\n\nexport type TreeConfig = {\n  discriminator: ReadonlyUint8Array;\n  treeCreator: Address;\n  treeDelegate: Address;\n  totalMintCapacity: bigint;\n  numMinted: bigint;\n  isPublic: boolean;\n  isDecompressible: DecompressibleState;\n  version: Version;\n};\n\nexport type TreeConfigArgs = {\n  treeCreator: Address;\n  treeDelegate: Address;\n  totalMintCapacity: number | bigint;\n  numMinted: number | bigint;\n  isPublic: boolean;\n  isDecompressible: DecompressibleStateArgs;\n  version: VersionArgs;\n};\n\nexport function getTreeConfigEncoder(): FixedSizeEncoder<TreeConfigArgs> {\n  return transformEncoder(\n    getStructEncoder([\n      ['discriminator', fixEncoderSize(getBytesEncoder(), 8)],\n      ['treeCreator', getAddressEncoder()],\n      ['treeDelegate', getAddressEncoder()],\n      ['totalMintCapacity', getU64Encoder()],\n      ['numMinted', getU64Encoder()],\n      ['isPublic', getBooleanEncoder()],\n      ['isDecompressible', getDecompressibleStateEncoder()],\n      ['version', getVersionEncoder()],\n    ]),\n    (value) => ({ ...value, discriminator: TREE_CONFIG_DISCRIMINATOR })\n  );\n}\n\nexport function getTreeConfigDecoder(): FixedSizeDecoder<TreeConfig> {\n  return getStructDecoder([\n    ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n    ['treeCreator', getAddressDecoder()],\n    ['treeDelegate', getAddressDecoder()],\n    ['totalMintCapacity', getU64Decoder()],\n    ['numMinted', getU64Decoder()],\n    ['isPublic', getBooleanDecoder()],\n    ['isDecompressible', getDecompressibleStateDecoder()],\n    ['version', getVersionDecoder()],\n  ]);\n}\n\nexport function getTreeConfigCodec(): FixedSizeCodec<\n  TreeConfigArgs,\n  TreeConfig\n> {\n  return combineCodec(getTreeConfigEncoder(), getTreeConfigDecoder());\n}\n\nexport function decodeTreeConfig<TAddress extends string = string>(\n  encodedAccount: EncodedAccount<TAddress>\n): Account<TreeConfig, TAddress>;\nexport function decodeTreeConfig<TAddress extends string = string>(\n  encodedAccount: MaybeEncodedAccount<TAddress>\n): MaybeAccount<TreeConfig, TAddress>;\nexport function decodeTreeConfig<TAddress extends string = string>(\n  encodedAccount: EncodedAccount<TAddress> | MaybeEncodedAccount<TAddress>\n): Account<TreeConfig, TAddress> | MaybeAccount<TreeConfig, TAddress> {\n  return decodeAccount(\n    encodedAccount as MaybeEncodedAccount<TAddress>,\n    getTreeConfigDecoder()\n  );\n}\n\nexport async function fetchTreeConfig<TAddress extends string = string>(\n  rpc: Parameters<typeof fetchEncodedAccount>[0],\n  address: Address<TAddress>,\n  config?: FetchAccountConfig\n): Promise<Account<TreeConfig, TAddress>> {\n  const maybeAccount = await fetchMaybeTreeConfig(rpc, address, config);\n  assertAccountExists(maybeAccount);\n  return maybeAccount;\n}\n\nexport async function fetchMaybeTreeConfig<TAddress extends string = string>(\n  rpc: Parameters<typeof fetchEncodedAccount>[0],\n  address: Address<TAddress>,\n  config?: FetchAccountConfig\n): Promise<MaybeAccount<TreeConfig, TAddress>> {\n  const maybeAccount = await fetchEncodedAccount(rpc, address, config);\n  return decodeTreeConfig(maybeAccount);\n}\n\nexport async function fetchAllTreeConfig(\n  rpc: Parameters<typeof fetchEncodedAccounts>[0],\n  addresses: Array<Address>,\n  config?: FetchAccountsConfig\n): Promise<Account<TreeConfig>[]> {\n  const maybeAccounts = await fetchAllMaybeTreeConfig(rpc, addresses, config);\n  assertAccountsExist(maybeAccounts);\n  return maybeAccounts;\n}\n\nexport async function fetchAllMaybeTreeConfig(\n  rpc: Parameters<typeof fetchEncodedAccounts>[0],\n  addresses: Array<Address>,\n  config?: FetchAccountsConfig\n): Promise<MaybeAccount<TreeConfig>[]> {\n  const maybeAccounts = await fetchEncodedAccounts(rpc, addresses, config);\n  return maybeAccounts.map((maybeAccount) => decodeTreeConfig(maybeAccount));\n}\n\nexport function getTreeConfigSize(): number {\n  return 96;\n}\n\nexport async function fetchTreeConfigFromSeeds(\n  rpc: Parameters<typeof fetchEncodedAccount>[0],\n  seeds: TreeConfigSeeds,\n  config: FetchAccountConfig & { programAddress?: Address } = {}\n): Promise<Account<TreeConfig>> {\n  const maybeAccount = await fetchMaybeTreeConfigFromSeeds(rpc, seeds, config);\n  assertAccountExists(maybeAccount);\n  return maybeAccount;\n}\n\nexport async function fetchMaybeTreeConfigFromSeeds(\n  rpc: Parameters<typeof fetchEncodedAccount>[0],\n  seeds: TreeConfigSeeds,\n  config: FetchAccountConfig & { programAddress?: Address } = {}\n): Promise<MaybeAccount<TreeConfig>> {\n  const { programAddress, ...fetchConfig } = config;\n  const [address] = await findTreeConfigPda(seeds, { programAddress });\n  return await fetchMaybeTreeConfig(rpc, address, fetchConfig);\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  assertAccountExists,\n  assertAccountsExist,\n  combineCodec,\n  decodeAccount,\n  fetchEncodedAccount,\n  fetchEncodedAccounts,\n  fixDecoderSize,\n  fixEncoderSize,\n  getAddressDecoder,\n  getAddressEncoder,\n  getBytesDecoder,\n  getBytesEncoder,\n  getStructDecoder,\n  getStructEncoder,\n  getU32Decoder,\n  getU32Encoder,\n  transformEncoder,\n  type Account,\n  type Address,\n  type Codec,\n  type Decoder,\n  type EncodedAccount,\n  type Encoder,\n  type FetchAccountConfig,\n  type FetchAccountsConfig,\n  type MaybeAccount,\n  type MaybeEncodedAccount,\n  type ReadonlyUint8Array,\n} from '@solana/kit';\nimport { findVoucherPda, VoucherSeeds } from '../pdas';\nimport {\n  getLeafSchemaDecoder,\n  getLeafSchemaEncoder,\n  type LeafSchema,\n  type LeafSchemaArgs,\n} from '../types';\n\nexport const VOUCHER_DISCRIMINATOR = new Uint8Array([\n  191, 204, 149, 234, 213, 165, 13, 65,\n]);\n\nexport function getVoucherDiscriminatorBytes() {\n  return fixEncoderSize(getBytesEncoder(), 8).encode(VOUCHER_DISCRIMINATOR);\n}\n\nexport type Voucher = {\n  discriminator: ReadonlyUint8Array;\n  leafSchema: LeafSchema;\n  index: number;\n  merkleTree: Address;\n};\n\nexport type VoucherArgs = {\n  leafSchema: LeafSchemaArgs;\n  index: number;\n  merkleTree: Address;\n};\n\nexport function getVoucherEncoder(): Encoder<VoucherArgs> {\n  return transformEncoder(\n    getStructEncoder([\n      ['discriminator', fixEncoderSize(getBytesEncoder(), 8)],\n      ['leafSchema', getLeafSchemaEncoder()],\n      ['index', getU32Encoder()],\n      ['merkleTree', getAddressEncoder()],\n    ]),\n    (value) => ({ ...value, discriminator: VOUCHER_DISCRIMINATOR })\n  );\n}\n\nexport function getVoucherDecoder(): Decoder<Voucher> {\n  return getStructDecoder([\n    ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n    ['leafSchema', getLeafSchemaDecoder()],\n    ['index', getU32Decoder()],\n    ['merkleTree', getAddressDecoder()],\n  ]);\n}\n\nexport function getVoucherCodec(): Codec<VoucherArgs, Voucher> {\n  return combineCodec(getVoucherEncoder(), getVoucherDecoder());\n}\n\nexport function decodeVoucher<TAddress extends string = string>(\n  encodedAccount: EncodedAccount<TAddress>\n): Account<Voucher, TAddress>;\nexport function decodeVoucher<TAddress extends string = string>(\n  encodedAccount: MaybeEncodedAccount<TAddress>\n): MaybeAccount<Voucher, TAddress>;\nexport function decodeVoucher<TAddress extends string = string>(\n  encodedAccount: EncodedAccount<TAddress> | MaybeEncodedAccount<TAddress>\n): Account<Voucher, TAddress> | MaybeAccount<Voucher, TAddress> {\n  return decodeAccount(\n    encodedAccount as MaybeEncodedAccount<TAddress>,\n    getVoucherDecoder()\n  );\n}\n\nexport async function fetchVoucher<TAddress extends string = string>(\n  rpc: Parameters<typeof fetchEncodedAccount>[0],\n  address: Address<TAddress>,\n  config?: FetchAccountConfig\n): Promise<Account<Voucher, TAddress>> {\n  const maybeAccount = await fetchMaybeVoucher(rpc, address, config);\n  assertAccountExists(maybeAccount);\n  return maybeAccount;\n}\n\nexport async function fetchMaybeVoucher<TAddress extends string = string>(\n  rpc: Parameters<typeof fetchEncodedAccount>[0],\n  address: Address<TAddress>,\n  config?: FetchAccountConfig\n): Promise<MaybeAccount<Voucher, TAddress>> {\n  const maybeAccount = await fetchEncodedAccount(rpc, address, config);\n  return decodeVoucher(maybeAccount);\n}\n\nexport async function fetchAllVoucher(\n  rpc: Parameters<typeof fetchEncodedAccounts>[0],\n  addresses: Array<Address>,\n  config?: FetchAccountsConfig\n): Promise<Account<Voucher>[]> {\n  const maybeAccounts = await fetchAllMaybeVoucher(rpc, addresses, config);\n  assertAccountsExist(maybeAccounts);\n  return maybeAccounts;\n}\n\nexport async function fetchAllMaybeVoucher(\n  rpc: Parameters<typeof fetchEncodedAccounts>[0],\n  addresses: Array<Address>,\n  config?: FetchAccountsConfig\n): Promise<MaybeAccount<Voucher>[]> {\n  const maybeAccounts = await fetchEncodedAccounts(rpc, addresses, config);\n  return maybeAccounts.map((maybeAccount) => decodeVoucher(maybeAccount));\n}\n\nexport async function fetchVoucherFromSeeds(\n  rpc: Parameters<typeof fetchEncodedAccount>[0],\n  seeds: VoucherSeeds,\n  config: FetchAccountConfig & { programAddress?: Address } = {}\n): Promise<Account<Voucher>> {\n  const maybeAccount = await fetchMaybeVoucherFromSeeds(rpc, seeds, config);\n  assertAccountExists(maybeAccount);\n  return maybeAccount;\n}\n\nexport async function fetchMaybeVoucherFromSeeds(\n  rpc: Parameters<typeof fetchEncodedAccount>[0],\n  seeds: VoucherSeeds,\n  config: FetchAccountConfig & { programAddress?: Address } = {}\n): Promise<MaybeAccount<Voucher>> {\n  const { programAddress, ...fetchConfig } = config;\n  const [address] = await findVoucherPda(seeds, { programAddress });\n  return await fetchMaybeVoucher(rpc, address, fetchConfig);\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  containsBytes,\n  fixEncoderSize,\n  getBytesEncoder,\n  type Address,\n  type ReadonlyUint8Array,\n} from '@solana/kit';\nimport {\n  type ParsedBurnInstruction,\n  type ParsedBurnV2Instruction,\n  type ParsedCancelRedeemInstruction,\n  type ParsedCollectV2Instruction,\n  type ParsedCreateTreeConfigInstruction,\n  type ParsedCreateTreeConfigV2Instruction,\n  type ParsedDecompressV1Instruction,\n  type ParsedDelegateAndFreezeV2Instruction,\n  type ParsedDelegateInstruction,\n  type ParsedDelegateV2Instruction,\n  type ParsedFreezeV2Instruction,\n  type ParsedMintToCollectionV1Instruction,\n  type ParsedMintV1Instruction,\n  type ParsedMintV2Instruction,\n  type ParsedRedeemInstruction,\n  type ParsedSetAndVerifyCollectionInstruction,\n  type ParsedSetCollectionV2Instruction,\n  type ParsedSetDecompressibleStateInstruction,\n  type ParsedSetNonTransferableV2Instruction,\n  type ParsedSetTreeDelegateInstruction,\n  type ParsedThawAndRevokeV2Instruction,\n  type ParsedThawV2Instruction,\n  type ParsedTransferInstruction,\n  type ParsedTransferV2Instruction,\n  type ParsedUnverifyCollectionInstruction,\n  type ParsedUnverifyCreatorInstruction,\n  type ParsedUnverifyCreatorV2Instruction,\n  type ParsedUpdateAssetDataV2Instruction,\n  type ParsedUpdateMetadataInstruction,\n  type ParsedUpdateMetadataV2Instruction,\n  type ParsedVerifyCollectionInstruction,\n  type ParsedVerifyCreatorInstruction,\n  type ParsedVerifyCreatorV2Instruction,\n} from '../instructions';\n\nexport const MPL_BUBBLEGUM_PROGRAM_ADDRESS =\n  'BGUMAp9Gq7iTEuizy4pqaxsTyUCBK68MDfK752saRPUY' as Address<'BGUMAp9Gq7iTEuizy4pqaxsTyUCBK68MDfK752saRPUY'>;\n\nexport enum MplBubblegumAccount {\n  TreeConfig,\n  Voucher,\n}\n\nexport function identifyMplBubblegumAccount(\n  account: { data: ReadonlyUint8Array } | ReadonlyUint8Array\n): MplBubblegumAccount {\n  const data = 'data' in account ? account.data : account;\n  if (\n    containsBytes(\n      data,\n      fixEncoderSize(getBytesEncoder(), 8).encode(\n        new Uint8Array([122, 245, 175, 248, 171, 34, 0, 207])\n      ),\n      0\n    )\n  ) {\n    return MplBubblegumAccount.TreeConfig;\n  }\n  if (\n    containsBytes(\n      data,\n      fixEncoderSize(getBytesEncoder(), 8).encode(\n        new Uint8Array([191, 204, 149, 234, 213, 165, 13, 65])\n      ),\n      0\n    )\n  ) {\n    return MplBubblegumAccount.Voucher;\n  }\n  throw new Error(\n    'The provided account could not be identified as a mplBubblegum account.'\n  );\n}\n\nexport enum MplBubblegumInstruction {\n  Burn,\n  BurnV2,\n  CancelRedeem,\n  CollectV2,\n  CreateTreeConfig,\n  CreateTreeConfigV2,\n  DecompressV1,\n  Delegate,\n  DelegateAndFreezeV2,\n  DelegateV2,\n  FreezeV2,\n  MintToCollectionV1,\n  MintV1,\n  MintV2,\n  Redeem,\n  SetAndVerifyCollection,\n  SetCollectionV2,\n  SetDecompressibleState,\n  SetNonTransferableV2,\n  SetTreeDelegate,\n  ThawAndRevokeV2,\n  ThawV2,\n  Transfer,\n  TransferV2,\n  UnverifyCollection,\n  UnverifyCreator,\n  UnverifyCreatorV2,\n  UpdateAssetDataV2,\n  UpdateMetadata,\n  UpdateMetadataV2,\n  VerifyCollection,\n  VerifyCreator,\n  VerifyCreatorV2,\n}\n\nexport function identifyMplBubblegumInstruction(\n  instruction: { data: ReadonlyUint8Array } | ReadonlyUint8Array\n): MplBubblegumInstruction {\n  const data = 'data' in instruction ? instruction.data : instruction;\n  if (\n    containsBytes(\n      data,\n      fixEncoderSize(getBytesEncoder(), 8).encode(\n        new Uint8Array([116, 110, 29, 56, 107, 219, 42, 93])\n      ),\n      0\n    )\n  ) {\n    return MplBubblegumInstruction.Burn;\n  }\n  if (\n    containsBytes(\n      data,\n      fixEncoderSize(getBytesEncoder(), 8).encode(\n        new Uint8Array([115, 210, 34, 240, 232, 143, 183, 16])\n      ),\n      0\n    )\n  ) {\n    return MplBubblegumInstruction.BurnV2;\n  }\n  if (\n    containsBytes(\n      data,\n      fixEncoderSize(getBytesEncoder(), 8).encode(\n        new Uint8Array([111, 76, 232, 50, 39, 175, 48, 242])\n      ),\n      0\n    )\n  ) {\n    return MplBubblegumInstruction.CancelRedeem;\n  }\n  if (\n    containsBytes(\n      data,\n      fixEncoderSize(getBytesEncoder(), 8).encode(\n        new Uint8Array([21, 11, 159, 47, 4, 195, 106, 56])\n      ),\n      0\n    )\n  ) {\n    return MplBubblegumInstruction.CollectV2;\n  }\n  if (\n    containsBytes(\n      data,\n      fixEncoderSize(getBytesEncoder(), 8).encode(\n        new Uint8Array([165, 83, 136, 142, 89, 202, 47, 220])\n      ),\n      0\n    )\n  ) {\n    return MplBubblegumInstruction.CreateTreeConfig;\n  }\n  if (\n    containsBytes(\n      data,\n      fixEncoderSize(getBytesEncoder(), 8).encode(\n        new Uint8Array([55, 99, 95, 215, 142, 203, 227, 205])\n      ),\n      0\n    )\n  ) {\n    return MplBubblegumInstruction.CreateTreeConfigV2;\n  }\n  if (\n    containsBytes(\n      data,\n      fixEncoderSize(getBytesEncoder(), 8).encode(\n        new Uint8Array([54, 85, 76, 70, 228, 250, 164, 81])\n      ),\n      0\n    )\n  ) {\n    return MplBubblegumInstruction.DecompressV1;\n  }\n  if (\n    containsBytes(\n      data,\n      fixEncoderSize(getBytesEncoder(), 8).encode(\n        new Uint8Array([90, 147, 75, 178, 85, 88, 4, 137])\n      ),\n      0\n    )\n  ) {\n    return MplBubblegumInstruction.Delegate;\n  }\n  if (\n    containsBytes(\n      data,\n      fixEncoderSize(getBytesEncoder(), 8).encode(\n        new Uint8Array([17, 229, 35, 218, 190, 241, 250, 123])\n      ),\n      0\n    )\n  ) {\n    return MplBubblegumInstruction.DelegateAndFreezeV2;\n  }\n  if (\n    containsBytes(\n      data,\n      fixEncoderSize(getBytesEncoder(), 8).encode(\n        new Uint8Array([95, 87, 125, 140, 181, 131, 128, 227])\n      ),\n      0\n    )\n  ) {\n    return MplBubblegumInstruction.DelegateV2;\n  }\n  if (\n    containsBytes(\n      data,\n      fixEncoderSize(getBytesEncoder(), 8).encode(\n        new Uint8Array([200, 151, 244, 102, 16, 195, 255, 3])\n      ),\n      0\n    )\n  ) {\n    return MplBubblegumInstruction.FreezeV2;\n  }\n  if (\n    containsBytes(\n      data,\n      fixEncoderSize(getBytesEncoder(), 8).encode(\n        new Uint8Array([153, 18, 178, 47, 197, 158, 86, 15])\n      ),\n      0\n    )\n  ) {\n    return MplBubblegumInstruction.MintToCollectionV1;\n  }\n  if (\n    containsBytes(\n      data,\n      fixEncoderSize(getBytesEncoder(), 8).encode(\n        new Uint8Array([145, 98, 192, 118, 184, 147, 118, 104])\n      ),\n      0\n    )\n  ) {\n    return MplBubblegumInstruction.MintV1;\n  }\n  if (\n    containsBytes(\n      data,\n      fixEncoderSize(getBytesEncoder(), 8).encode(\n        new Uint8Array([120, 121, 23, 146, 173, 110, 199, 205])\n      ),\n      0\n    )\n  ) {\n    return MplBubblegumInstruction.MintV2;\n  }\n  if (\n    containsBytes(\n      data,\n      fixEncoderSize(getBytesEncoder(), 8).encode(\n        new Uint8Array([184, 12, 86, 149, 70, 196, 97, 225])\n      ),\n      0\n    )\n  ) {\n    return MplBubblegumInstruction.Redeem;\n  }\n  if (\n    containsBytes(\n      data,\n      fixEncoderSize(getBytesEncoder(), 8).encode(\n        new Uint8Array([235, 242, 121, 216, 158, 234, 180, 234])\n      ),\n      0\n    )\n  ) {\n    return MplBubblegumInstruction.SetAndVerifyCollection;\n  }\n  if (\n    containsBytes(\n      data,\n      fixEncoderSize(getBytesEncoder(), 8).encode(\n        new Uint8Array([229, 35, 61, 91, 15, 14, 99, 160])\n      ),\n      0\n    )\n  ) {\n    return MplBubblegumInstruction.SetCollectionV2;\n  }\n  if (\n    containsBytes(\n      data,\n      fixEncoderSize(getBytesEncoder(), 8).encode(\n        new Uint8Array([82, 104, 152, 6, 149, 111, 100, 13])\n      ),\n      0\n    )\n  ) {\n    return MplBubblegumInstruction.SetDecompressibleState;\n  }\n  if (\n    containsBytes(\n      data,\n      fixEncoderSize(getBytesEncoder(), 8).encode(\n        new Uint8Array([181, 141, 206, 58, 242, 199, 152, 168])\n      ),\n      0\n    )\n  ) {\n    return MplBubblegumInstruction.SetNonTransferableV2;\n  }\n  if (\n    containsBytes(\n      data,\n      fixEncoderSize(getBytesEncoder(), 8).encode(\n        new Uint8Array([253, 118, 66, 37, 190, 49, 154, 102])\n      ),\n      0\n    )\n  ) {\n    return MplBubblegumInstruction.SetTreeDelegate;\n  }\n  if (\n    containsBytes(\n      data,\n      fixEncoderSize(getBytesEncoder(), 8).encode(\n        new Uint8Array([86, 214, 190, 37, 167, 4, 28, 116])\n      ),\n      0\n    )\n  ) {\n    return MplBubblegumInstruction.ThawAndRevokeV2;\n  }\n  if (\n    containsBytes(\n      data,\n      fixEncoderSize(getBytesEncoder(), 8).encode(\n        new Uint8Array([96, 133, 101, 93, 82, 220, 146, 191])\n      ),\n      0\n    )\n  ) {\n    return MplBubblegumInstruction.ThawV2;\n  }\n  if (\n    containsBytes(\n      data,\n      fixEncoderSize(getBytesEncoder(), 8).encode(\n        new Uint8Array([163, 52, 200, 231, 140, 3, 69, 186])\n      ),\n      0\n    )\n  ) {\n    return MplBubblegumInstruction.Transfer;\n  }\n  if (\n    containsBytes(\n      data,\n      fixEncoderSize(getBytesEncoder(), 8).encode(\n        new Uint8Array([119, 40, 6, 235, 234, 221, 248, 49])\n      ),\n      0\n    )\n  ) {\n    return MplBubblegumInstruction.TransferV2;\n  }\n  if (\n    containsBytes(\n      data,\n      fixEncoderSize(getBytesEncoder(), 8).encode(\n        new Uint8Array([250, 251, 42, 106, 41, 137, 186, 168])\n      ),\n      0\n    )\n  ) {\n    return MplBubblegumInstruction.UnverifyCollection;\n  }\n  if (\n    containsBytes(\n      data,\n      fixEncoderSize(getBytesEncoder(), 8).encode(\n        new Uint8Array([107, 178, 57, 39, 105, 115, 112, 152])\n      ),\n      0\n    )\n  ) {\n    return MplBubblegumInstruction.UnverifyCreator;\n  }\n  if (\n    containsBytes(\n      data,\n      fixEncoderSize(getBytesEncoder(), 8).encode(\n        new Uint8Array([174, 112, 29, 142, 230, 100, 239, 7])\n      ),\n      0\n    )\n  ) {\n    return MplBubblegumInstruction.UnverifyCreatorV2;\n  }\n  if (\n    containsBytes(\n      data,\n      fixEncoderSize(getBytesEncoder(), 8).encode(\n        new Uint8Array([59, 56, 111, 43, 95, 14, 11, 61])\n      ),\n      0\n    )\n  ) {\n    return MplBubblegumInstruction.UpdateAssetDataV2;\n  }\n  if (\n    containsBytes(\n      data,\n      fixEncoderSize(getBytesEncoder(), 8).encode(\n        new Uint8Array([170, 182, 43, 239, 97, 78, 225, 186])\n      ),\n      0\n    )\n  ) {\n    return MplBubblegumInstruction.UpdateMetadata;\n  }\n  if (\n    containsBytes(\n      data,\n      fixEncoderSize(getBytesEncoder(), 8).encode(\n        new Uint8Array([43, 103, 89, 42, 121, 242, 62, 72])\n      ),\n      0\n    )\n  ) {\n    return MplBubblegumInstruction.UpdateMetadataV2;\n  }\n  if (\n    containsBytes(\n      data,\n      fixEncoderSize(getBytesEncoder(), 8).encode(\n        new Uint8Array([56, 113, 101, 253, 79, 55, 122, 169])\n      ),\n      0\n    )\n  ) {\n    return MplBubblegumInstruction.VerifyCollection;\n  }\n  if (\n    containsBytes(\n      data,\n      fixEncoderSize(getBytesEncoder(), 8).encode(\n        new Uint8Array([52, 17, 96, 132, 71, 4, 85, 194])\n      ),\n      0\n    )\n  ) {\n    return MplBubblegumInstruction.VerifyCreator;\n  }\n  if (\n    containsBytes(\n      data,\n      fixEncoderSize(getBytesEncoder(), 8).encode(\n        new Uint8Array([85, 138, 140, 42, 22, 241, 118, 102])\n      ),\n      0\n    )\n  ) {\n    return MplBubblegumInstruction.VerifyCreatorV2;\n  }\n  throw new Error(\n    'The provided instruction could not be identified as a mplBubblegum instruction.'\n  );\n}\n\nexport type ParsedMplBubblegumInstruction<\n  TProgram extends string = 'BGUMAp9Gq7iTEuizy4pqaxsTyUCBK68MDfK752saRPUY',\n> =\n  | ({\n      instructionType: MplBubblegumInstruction.Burn;\n    } & ParsedBurnInstruction<TProgram>)\n  | ({\n      instructionType: MplBubblegumInstruction.BurnV2;\n    } & ParsedBurnV2Instruction<TProgram>)\n  | ({\n      instructionType: MplBubblegumInstruction.CancelRedeem;\n    } & ParsedCancelRedeemInstruction<TProgram>)\n  | ({\n      instructionType: MplBubblegumInstruction.CollectV2;\n    } & ParsedCollectV2Instruction<TProgram>)\n  | ({\n      instructionType: MplBubblegumInstruction.CreateTreeConfig;\n    } & ParsedCreateTreeConfigInstruction<TProgram>)\n  | ({\n      instructionType: MplBubblegumInstruction.CreateTreeConfigV2;\n    } & ParsedCreateTreeConfigV2Instruction<TProgram>)\n  | ({\n      instructionType: MplBubblegumInstruction.DecompressV1;\n    } & ParsedDecompressV1Instruction<TProgram>)\n  | ({\n      instructionType: MplBubblegumInstruction.Delegate;\n    } & ParsedDelegateInstruction<TProgram>)\n  | ({\n      instructionType: MplBubblegumInstruction.DelegateAndFreezeV2;\n    } & ParsedDelegateAndFreezeV2Instruction<TProgram>)\n  | ({\n      instructionType: MplBubblegumInstruction.DelegateV2;\n    } & ParsedDelegateV2Instruction<TProgram>)\n  | ({\n      instructionType: MplBubblegumInstruction.FreezeV2;\n    } & ParsedFreezeV2Instruction<TProgram>)\n  | ({\n      instructionType: MplBubblegumInstruction.MintToCollectionV1;\n    } & ParsedMintToCollectionV1Instruction<TProgram>)\n  | ({\n      instructionType: MplBubblegumInstruction.MintV1;\n    } & ParsedMintV1Instruction<TProgram>)\n  | ({\n      instructionType: MplBubblegumInstruction.MintV2;\n    } & ParsedMintV2Instruction<TProgram>)\n  | ({\n      instructionType: MplBubblegumInstruction.Redeem;\n    } & ParsedRedeemInstruction<TProgram>)\n  | ({\n      instructionType: MplBubblegumInstruction.SetAndVerifyCollection;\n    } & ParsedSetAndVerifyCollectionInstruction<TProgram>)\n  | ({\n      instructionType: MplBubblegumInstruction.SetCollectionV2;\n    } & ParsedSetCollectionV2Instruction<TProgram>)\n  | ({\n      instructionType: MplBubblegumInstruction.SetDecompressibleState;\n    } & ParsedSetDecompressibleStateInstruction<TProgram>)\n  | ({\n      instructionType: MplBubblegumInstruction.SetNonTransferableV2;\n    } & ParsedSetNonTransferableV2Instruction<TProgram>)\n  | ({\n      instructionType: MplBubblegumInstruction.SetTreeDelegate;\n    } & ParsedSetTreeDelegateInstruction<TProgram>)\n  | ({\n      instructionType: MplBubblegumInstruction.ThawAndRevokeV2;\n    } & ParsedThawAndRevokeV2Instruction<TProgram>)\n  | ({\n      instructionType: MplBubblegumInstruction.ThawV2;\n    } & ParsedThawV2Instruction<TProgram>)\n  | ({\n      instructionType: MplBubblegumInstruction.Transfer;\n    } & ParsedTransferInstruction<TProgram>)\n  | ({\n      instructionType: MplBubblegumInstruction.TransferV2;\n    } & ParsedTransferV2Instruction<TProgram>)\n  | ({\n      instructionType: MplBubblegumInstruction.UnverifyCollection;\n    } & ParsedUnverifyCollectionInstruction<TProgram>)\n  | ({\n      instructionType: MplBubblegumInstruction.UnverifyCreator;\n    } & ParsedUnverifyCreatorInstruction<TProgram>)\n  | ({\n      instructionType: MplBubblegumInstruction.UnverifyCreatorV2;\n    } & ParsedUnverifyCreatorV2Instruction<TProgram>)\n  | ({\n      instructionType: MplBubblegumInstruction.UpdateAssetDataV2;\n    } & ParsedUpdateAssetDataV2Instruction<TProgram>)\n  | ({\n      instructionType: MplBubblegumInstruction.UpdateMetadata;\n    } & ParsedUpdateMetadataInstruction<TProgram>)\n  | ({\n      instructionType: MplBubblegumInstruction.UpdateMetadataV2;\n    } & ParsedUpdateMetadataV2Instruction<TProgram>)\n  | ({\n      instructionType: MplBubblegumInstruction.VerifyCollection;\n    } & ParsedVerifyCollectionInstruction<TProgram>)\n  | ({\n      instructionType: MplBubblegumInstruction.VerifyCreator;\n    } & ParsedVerifyCreatorInstruction<TProgram>)\n  | ({\n      instructionType: MplBubblegumInstruction.VerifyCreatorV2;\n    } & ParsedVerifyCreatorV2Instruction<TProgram>);\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  isProgramError,\n  type Address,\n  type SOLANA_ERROR__INSTRUCTION_ERROR__CUSTOM,\n  type SolanaError,\n} from '@solana/kit';\nimport { MPL_BUBBLEGUM_PROGRAM_ADDRESS } from '../programs';\n\n/** AssetOwnerMismatch: Asset Owner Does not match */\nexport const MPL_BUBBLEGUM_ERROR__ASSET_OWNER_MISMATCH = 0x1770; // 6000\n/** PublicKeyMismatch: PublicKeyMismatch */\nexport const MPL_BUBBLEGUM_ERROR__PUBLIC_KEY_MISMATCH = 0x1771; // 6001\n/** HashingMismatch: Hashing Mismatch Within Leaf Schema */\nexport const MPL_BUBBLEGUM_ERROR__HASHING_MISMATCH = 0x1772; // 6002\n/** UnsupportedSchemaVersion: Unsupported Schema Version */\nexport const MPL_BUBBLEGUM_ERROR__UNSUPPORTED_SCHEMA_VERSION = 0x1773; // 6003\n/** CreatorShareTotalMustBe100: Creator shares must sum to 100 */\nexport const MPL_BUBBLEGUM_ERROR__CREATOR_SHARE_TOTAL_MUST_BE100 = 0x1774; // 6004\n/** DuplicateCreatorAddress: No duplicate creator addresses in metadata */\nexport const MPL_BUBBLEGUM_ERROR__DUPLICATE_CREATOR_ADDRESS = 0x1775; // 6005\n/** CreatorDidNotVerify: Creator did not verify the metadata */\nexport const MPL_BUBBLEGUM_ERROR__CREATOR_DID_NOT_VERIFY = 0x1776; // 6006\n/** CreatorNotFound: Creator not found in creator Vec */\nexport const MPL_BUBBLEGUM_ERROR__CREATOR_NOT_FOUND = 0x1777; // 6007\n/** NoCreatorsPresent: No creators in creator Vec */\nexport const MPL_BUBBLEGUM_ERROR__NO_CREATORS_PRESENT = 0x1778; // 6008\n/** CreatorHashMismatch: User-provided creator Vec must result in same user-provided creator hash */\nexport const MPL_BUBBLEGUM_ERROR__CREATOR_HASH_MISMATCH = 0x1779; // 6009\n/** DataHashMismatch: User-provided metadata must result in same user-provided data hash */\nexport const MPL_BUBBLEGUM_ERROR__DATA_HASH_MISMATCH = 0x177a; // 6010\n/** CreatorsTooLong: Creators list too long */\nexport const MPL_BUBBLEGUM_ERROR__CREATORS_TOO_LONG = 0x177b; // 6011\n/** MetadataNameTooLong: Name in metadata is too long */\nexport const MPL_BUBBLEGUM_ERROR__METADATA_NAME_TOO_LONG = 0x177c; // 6012\n/** MetadataSymbolTooLong: Symbol in metadata is too long */\nexport const MPL_BUBBLEGUM_ERROR__METADATA_SYMBOL_TOO_LONG = 0x177d; // 6013\n/** MetadataUriTooLong: Uri in metadata is too long */\nexport const MPL_BUBBLEGUM_ERROR__METADATA_URI_TOO_LONG = 0x177e; // 6014\n/** MetadataBasisPointsTooHigh: Basis points in metadata cannot exceed 10000 */\nexport const MPL_BUBBLEGUM_ERROR__METADATA_BASIS_POINTS_TOO_HIGH = 0x177f; // 6015\n/** TreeAuthorityIncorrect: Tree creator or tree delegate must sign. */\nexport const MPL_BUBBLEGUM_ERROR__TREE_AUTHORITY_INCORRECT = 0x1780; // 6016\n/** InsufficientMintCapacity: Not enough unapproved mints left */\nexport const MPL_BUBBLEGUM_ERROR__INSUFFICIENT_MINT_CAPACITY = 0x1781; // 6017\n/** NumericalOverflowError: NumericalOverflowError */\nexport const MPL_BUBBLEGUM_ERROR__NUMERICAL_OVERFLOW_ERROR = 0x1782; // 6018\n/** IncorrectOwner: Incorrect account owner */\nexport const MPL_BUBBLEGUM_ERROR__INCORRECT_OWNER = 0x1783; // 6019\n/** CollectionCannotBeVerifiedInThisInstruction: Cannot Verify Collection in this Instruction */\nexport const MPL_BUBBLEGUM_ERROR__COLLECTION_CANNOT_BE_VERIFIED_IN_THIS_INSTRUCTION = 0x1784; // 6020\n/** CollectionNotFound: Collection Not Found on Metadata */\nexport const MPL_BUBBLEGUM_ERROR__COLLECTION_NOT_FOUND = 0x1785; // 6021\n/** AlreadyVerified: Collection item is already verified. */\nexport const MPL_BUBBLEGUM_ERROR__ALREADY_VERIFIED = 0x1786; // 6022\n/** AlreadyUnverified: Collection item is already unverified. */\nexport const MPL_BUBBLEGUM_ERROR__ALREADY_UNVERIFIED = 0x1787; // 6023\n/** UpdateAuthorityIncorrect: Incorrect leaf metadata update authority. */\nexport const MPL_BUBBLEGUM_ERROR__UPDATE_AUTHORITY_INCORRECT = 0x1788; // 6024\n/** LeafAuthorityMustSign: This transaction must be signed by either the leaf owner or leaf delegate */\nexport const MPL_BUBBLEGUM_ERROR__LEAF_AUTHORITY_MUST_SIGN = 0x1789; // 6025\n/** CollectionMustBeSized: Collection Not Compatable with Compression, Must be Sized */\nexport const MPL_BUBBLEGUM_ERROR__COLLECTION_MUST_BE_SIZED = 0x178a; // 6026\n/** MetadataMintMismatch: Metadata mint does not match collection mint */\nexport const MPL_BUBBLEGUM_ERROR__METADATA_MINT_MISMATCH = 0x178b; // 6027\n/** InvalidCollectionAuthority: Invalid collection authority */\nexport const MPL_BUBBLEGUM_ERROR__INVALID_COLLECTION_AUTHORITY = 0x178c; // 6028\n/** InvalidDelegateRecord: Invalid delegate record pda derivation */\nexport const MPL_BUBBLEGUM_ERROR__INVALID_DELEGATE_RECORD = 0x178d; // 6029\n/** CollectionMasterEditionAccountInvalid: Edition account doesnt match collection */\nexport const MPL_BUBBLEGUM_ERROR__COLLECTION_MASTER_EDITION_ACCOUNT_INVALID = 0x178e; // 6030\n/** CollectionMustBeAUniqueMasterEdition: Collection Must Be a Unique Master Edition v2 */\nexport const MPL_BUBBLEGUM_ERROR__COLLECTION_MUST_BE_A_UNIQUE_MASTER_EDITION = 0x178f; // 6031\n/** UnknownExternalError: Could not convert external error to BubblegumError */\nexport const MPL_BUBBLEGUM_ERROR__UNKNOWN_EXTERNAL_ERROR = 0x1790; // 6032\n/** DecompressionDisabled: Decompression is disabled for this tree. */\nexport const MPL_BUBBLEGUM_ERROR__DECOMPRESSION_DISABLED = 0x1791; // 6033\n/** MissingCollectionMintAccount: Missing collection mint account */\nexport const MPL_BUBBLEGUM_ERROR__MISSING_COLLECTION_MINT_ACCOUNT = 0x1792; // 6034\n/** MissingCollectionMetadataAccount: Missing collection metadata account */\nexport const MPL_BUBBLEGUM_ERROR__MISSING_COLLECTION_METADATA_ACCOUNT = 0x1793; // 6035\n/** CollectionMismatch: Collection mismatch */\nexport const MPL_BUBBLEGUM_ERROR__COLLECTION_MISMATCH = 0x1794; // 6036\n/** MetadataImmutable: Metadata not mutable */\nexport const MPL_BUBBLEGUM_ERROR__METADATA_IMMUTABLE = 0x1795; // 6037\n/** PrimarySaleCanOnlyBeFlippedToTrue: Can only update primary sale to true */\nexport const MPL_BUBBLEGUM_ERROR__PRIMARY_SALE_CAN_ONLY_BE_FLIPPED_TO_TRUE = 0x1796; // 6038\n/** CreatorDidNotUnverify: Creator did not unverify the metadata */\nexport const MPL_BUBBLEGUM_ERROR__CREATOR_DID_NOT_UNVERIFY = 0x1797; // 6039\n/** InvalidTokenStandard: Only NonFungible standard is supported */\nexport const MPL_BUBBLEGUM_ERROR__INVALID_TOKEN_STANDARD = 0x1798; // 6040\n/** InvalidCanopySize: Canopy size should be set bigger for this tree */\nexport const MPL_BUBBLEGUM_ERROR__INVALID_CANOPY_SIZE = 0x1799; // 6041\n/** InvalidLogWrapper: Invalid log wrapper program */\nexport const MPL_BUBBLEGUM_ERROR__INVALID_LOG_WRAPPER = 0x179a; // 6042\n/** InvalidCompressionProgram: Invalid compression program */\nexport const MPL_BUBBLEGUM_ERROR__INVALID_COMPRESSION_PROGRAM = 0x179b; // 6043\n/** LeafMustBeDelegated: Leaf must be delegated to someone other than the leaf owner */\nexport const MPL_BUBBLEGUM_ERROR__LEAF_MUST_BE_DELEGATED = 0x179c; // 6044\n/** AssetIsFrozen: Asset is frozen */\nexport const MPL_BUBBLEGUM_ERROR__ASSET_IS_FROZEN = 0x179d; // 6045\n/** AssetIsNonTransferable: Asset is non-transferable */\nexport const MPL_BUBBLEGUM_ERROR__ASSET_IS_NON_TRANSFERABLE = 0x179e; // 6046\n/** InvalidAuthority: Invalid authority */\nexport const MPL_BUBBLEGUM_ERROR__INVALID_AUTHORITY = 0x179f; // 6047\n/** CollectionIsFrozen: Collection is frozen */\nexport const MPL_BUBBLEGUM_ERROR__COLLECTION_IS_FROZEN = 0x17a0; // 6048\n/** CollectionMustHaveBubblegumPlugin: Core collections must have the Bubblegum V2 plugin on them */\nexport const MPL_BUBBLEGUM_ERROR__COLLECTION_MUST_HAVE_BUBBLEGUM_PLUGIN = 0x17a1; // 6049\n/** NotAvailable: Feature not currently available */\nexport const MPL_BUBBLEGUM_ERROR__NOT_AVAILABLE = 0x17a2; // 6050\n/** MissingCollectionAccount: Missing collection account */\nexport const MPL_BUBBLEGUM_ERROR__MISSING_COLLECTION_ACCOUNT = 0x17a3; // 6051\n/** AssetDataLengthTooLong: Asset data length too long */\nexport const MPL_BUBBLEGUM_ERROR__ASSET_DATA_LENGTH_TOO_LONG = 0x17a4; // 6052\n/** AlreadyInCollection: Item is already in the collection */\nexport const MPL_BUBBLEGUM_ERROR__ALREADY_IN_COLLECTION = 0x17a5; // 6053\n/** AlreadyNotInCollection: Item is already not in a collection */\nexport const MPL_BUBBLEGUM_ERROR__ALREADY_NOT_IN_COLLECTION = 0x17a6; // 6054\n/** MissingMplCoreCpiSignerAccount: Missing mpl-core CPI signer account */\nexport const MPL_BUBBLEGUM_ERROR__MISSING_MPL_CORE_CPI_SIGNER_ACCOUNT = 0x17a7; // 6055\n/** AssetIsNotFrozen: Asset is not frozen */\nexport const MPL_BUBBLEGUM_ERROR__ASSET_IS_NOT_FROZEN = 0x17a8; // 6056\n\nexport type MplBubblegumError =\n  | typeof MPL_BUBBLEGUM_ERROR__ALREADY_IN_COLLECTION\n  | typeof MPL_BUBBLEGUM_ERROR__ALREADY_NOT_IN_COLLECTION\n  | typeof MPL_BUBBLEGUM_ERROR__ALREADY_UNVERIFIED\n  | typeof MPL_BUBBLEGUM_ERROR__ALREADY_VERIFIED\n  | typeof MPL_BUBBLEGUM_ERROR__ASSET_DATA_LENGTH_TOO_LONG\n  | typeof MPL_BUBBLEGUM_ERROR__ASSET_IS_FROZEN\n  | typeof MPL_BUBBLEGUM_ERROR__ASSET_IS_NON_TRANSFERABLE\n  | typeof MPL_BUBBLEGUM_ERROR__ASSET_IS_NOT_FROZEN\n  | typeof MPL_BUBBLEGUM_ERROR__ASSET_OWNER_MISMATCH\n  | typeof MPL_BUBBLEGUM_ERROR__COLLECTION_CANNOT_BE_VERIFIED_IN_THIS_INSTRUCTION\n  | typeof MPL_BUBBLEGUM_ERROR__COLLECTION_IS_FROZEN\n  | typeof MPL_BUBBLEGUM_ERROR__COLLECTION_MASTER_EDITION_ACCOUNT_INVALID\n  | typeof MPL_BUBBLEGUM_ERROR__COLLECTION_MISMATCH\n  | typeof MPL_BUBBLEGUM_ERROR__COLLECTION_MUST_BE_A_UNIQUE_MASTER_EDITION\n  | typeof MPL_BUBBLEGUM_ERROR__COLLECTION_MUST_BE_SIZED\n  | typeof MPL_BUBBLEGUM_ERROR__COLLECTION_MUST_HAVE_BUBBLEGUM_PLUGIN\n  | typeof MPL_BUBBLEGUM_ERROR__COLLECTION_NOT_FOUND\n  | typeof MPL_BUBBLEGUM_ERROR__CREATOR_DID_NOT_UNVERIFY\n  | typeof MPL_BUBBLEGUM_ERROR__CREATOR_DID_NOT_VERIFY\n  | typeof MPL_BUBBLEGUM_ERROR__CREATOR_HASH_MISMATCH\n  | typeof MPL_BUBBLEGUM_ERROR__CREATOR_NOT_FOUND\n  | typeof MPL_BUBBLEGUM_ERROR__CREATOR_SHARE_TOTAL_MUST_BE100\n  | typeof MPL_BUBBLEGUM_ERROR__CREATORS_TOO_LONG\n  | typeof MPL_BUBBLEGUM_ERROR__DATA_HASH_MISMATCH\n  | typeof MPL_BUBBLEGUM_ERROR__DECOMPRESSION_DISABLED\n  | typeof MPL_BUBBLEGUM_ERROR__DUPLICATE_CREATOR_ADDRESS\n  | typeof MPL_BUBBLEGUM_ERROR__HASHING_MISMATCH\n  | typeof MPL_BUBBLEGUM_ERROR__INCORRECT_OWNER\n  | typeof MPL_BUBBLEGUM_ERROR__INSUFFICIENT_MINT_CAPACITY\n  | typeof MPL_BUBBLEGUM_ERROR__INVALID_AUTHORITY\n  | typeof MPL_BUBBLEGUM_ERROR__INVALID_CANOPY_SIZE\n  | typeof MPL_BUBBLEGUM_ERROR__INVALID_COLLECTION_AUTHORITY\n  | typeof MPL_BUBBLEGUM_ERROR__INVALID_COMPRESSION_PROGRAM\n  | typeof MPL_BUBBLEGUM_ERROR__INVALID_DELEGATE_RECORD\n  | typeof MPL_BUBBLEGUM_ERROR__INVALID_LOG_WRAPPER\n  | typeof MPL_BUBBLEGUM_ERROR__INVALID_TOKEN_STANDARD\n  | typeof MPL_BUBBLEGUM_ERROR__LEAF_AUTHORITY_MUST_SIGN\n  | typeof MPL_BUBBLEGUM_ERROR__LEAF_MUST_BE_DELEGATED\n  | typeof MPL_BUBBLEGUM_ERROR__METADATA_BASIS_POINTS_TOO_HIGH\n  | typeof MPL_BUBBLEGUM_ERROR__METADATA_IMMUTABLE\n  | typeof MPL_BUBBLEGUM_ERROR__METADATA_MINT_MISMATCH\n  | typeof MPL_BUBBLEGUM_ERROR__METADATA_NAME_TOO_LONG\n  | typeof MPL_BUBBLEGUM_ERROR__METADATA_SYMBOL_TOO_LONG\n  | typeof MPL_BUBBLEGUM_ERROR__METADATA_URI_TOO_LONG\n  | typeof MPL_BUBBLEGUM_ERROR__MISSING_COLLECTION_ACCOUNT\n  | typeof MPL_BUBBLEGUM_ERROR__MISSING_COLLECTION_METADATA_ACCOUNT\n  | typeof MPL_BUBBLEGUM_ERROR__MISSING_COLLECTION_MINT_ACCOUNT\n  | typeof MPL_BUBBLEGUM_ERROR__MISSING_MPL_CORE_CPI_SIGNER_ACCOUNT\n  | typeof MPL_BUBBLEGUM_ERROR__NO_CREATORS_PRESENT\n  | typeof MPL_BUBBLEGUM_ERROR__NOT_AVAILABLE\n  | typeof MPL_BUBBLEGUM_ERROR__NUMERICAL_OVERFLOW_ERROR\n  | typeof MPL_BUBBLEGUM_ERROR__PRIMARY_SALE_CAN_ONLY_BE_FLIPPED_TO_TRUE\n  | typeof MPL_BUBBLEGUM_ERROR__PUBLIC_KEY_MISMATCH\n  | typeof MPL_BUBBLEGUM_ERROR__TREE_AUTHORITY_INCORRECT\n  | typeof MPL_BUBBLEGUM_ERROR__UNKNOWN_EXTERNAL_ERROR\n  | typeof MPL_BUBBLEGUM_ERROR__UNSUPPORTED_SCHEMA_VERSION\n  | typeof MPL_BUBBLEGUM_ERROR__UPDATE_AUTHORITY_INCORRECT;\n\nlet mplBubblegumErrorMessages: Record<MplBubblegumError, string> | undefined;\nif (process.env.NODE_ENV !== 'production') {\n  mplBubblegumErrorMessages = {\n    [MPL_BUBBLEGUM_ERROR__ALREADY_IN_COLLECTION]: `Item is already in the collection`,\n    [MPL_BUBBLEGUM_ERROR__ALREADY_NOT_IN_COLLECTION]: `Item is already not in a collection`,\n    [MPL_BUBBLEGUM_ERROR__ALREADY_UNVERIFIED]: `Collection item is already unverified.`,\n    [MPL_BUBBLEGUM_ERROR__ALREADY_VERIFIED]: `Collection item is already verified.`,\n    [MPL_BUBBLEGUM_ERROR__ASSET_DATA_LENGTH_TOO_LONG]: `Asset data length too long`,\n    [MPL_BUBBLEGUM_ERROR__ASSET_IS_FROZEN]: `Asset is frozen`,\n    [MPL_BUBBLEGUM_ERROR__ASSET_IS_NON_TRANSFERABLE]: `Asset is non-transferable`,\n    [MPL_BUBBLEGUM_ERROR__ASSET_IS_NOT_FROZEN]: `Asset is not frozen`,\n    [MPL_BUBBLEGUM_ERROR__ASSET_OWNER_MISMATCH]: `Asset Owner Does not match`,\n    [MPL_BUBBLEGUM_ERROR__COLLECTION_CANNOT_BE_VERIFIED_IN_THIS_INSTRUCTION]: `Cannot Verify Collection in this Instruction`,\n    [MPL_BUBBLEGUM_ERROR__COLLECTION_IS_FROZEN]: `Collection is frozen`,\n    [MPL_BUBBLEGUM_ERROR__COLLECTION_MASTER_EDITION_ACCOUNT_INVALID]: `Edition account doesnt match collection`,\n    [MPL_BUBBLEGUM_ERROR__COLLECTION_MISMATCH]: `Collection mismatch`,\n    [MPL_BUBBLEGUM_ERROR__COLLECTION_MUST_BE_A_UNIQUE_MASTER_EDITION]: `Collection Must Be a Unique Master Edition v2`,\n    [MPL_BUBBLEGUM_ERROR__COLLECTION_MUST_BE_SIZED]: `Collection Not Compatable with Compression, Must be Sized`,\n    [MPL_BUBBLEGUM_ERROR__COLLECTION_MUST_HAVE_BUBBLEGUM_PLUGIN]: `Core collections must have the Bubblegum V2 plugin on them`,\n    [MPL_BUBBLEGUM_ERROR__COLLECTION_NOT_FOUND]: `Collection Not Found on Metadata`,\n    [MPL_BUBBLEGUM_ERROR__CREATOR_DID_NOT_UNVERIFY]: `Creator did not unverify the metadata`,\n    [MPL_BUBBLEGUM_ERROR__CREATOR_DID_NOT_VERIFY]: `Creator did not verify the metadata`,\n    [MPL_BUBBLEGUM_ERROR__CREATOR_HASH_MISMATCH]: `User-provided creator Vec must result in same user-provided creator hash`,\n    [MPL_BUBBLEGUM_ERROR__CREATOR_NOT_FOUND]: `Creator not found in creator Vec`,\n    [MPL_BUBBLEGUM_ERROR__CREATOR_SHARE_TOTAL_MUST_BE100]: `Creator shares must sum to 100`,\n    [MPL_BUBBLEGUM_ERROR__CREATORS_TOO_LONG]: `Creators list too long`,\n    [MPL_BUBBLEGUM_ERROR__DATA_HASH_MISMATCH]: `User-provided metadata must result in same user-provided data hash`,\n    [MPL_BUBBLEGUM_ERROR__DECOMPRESSION_DISABLED]: `Decompression is disabled for this tree.`,\n    [MPL_BUBBLEGUM_ERROR__DUPLICATE_CREATOR_ADDRESS]: `No duplicate creator addresses in metadata`,\n    [MPL_BUBBLEGUM_ERROR__HASHING_MISMATCH]: `Hashing Mismatch Within Leaf Schema`,\n    [MPL_BUBBLEGUM_ERROR__INCORRECT_OWNER]: `Incorrect account owner`,\n    [MPL_BUBBLEGUM_ERROR__INSUFFICIENT_MINT_CAPACITY]: `Not enough unapproved mints left`,\n    [MPL_BUBBLEGUM_ERROR__INVALID_AUTHORITY]: `Invalid authority`,\n    [MPL_BUBBLEGUM_ERROR__INVALID_CANOPY_SIZE]: `Canopy size should be set bigger for this tree`,\n    [MPL_BUBBLEGUM_ERROR__INVALID_COLLECTION_AUTHORITY]: `Invalid collection authority`,\n    [MPL_BUBBLEGUM_ERROR__INVALID_COMPRESSION_PROGRAM]: `Invalid compression program`,\n    [MPL_BUBBLEGUM_ERROR__INVALID_DELEGATE_RECORD]: `Invalid delegate record pda derivation`,\n    [MPL_BUBBLEGUM_ERROR__INVALID_LOG_WRAPPER]: `Invalid log wrapper program`,\n    [MPL_BUBBLEGUM_ERROR__INVALID_TOKEN_STANDARD]: `Only NonFungible standard is supported`,\n    [MPL_BUBBLEGUM_ERROR__LEAF_AUTHORITY_MUST_SIGN]: `This transaction must be signed by either the leaf owner or leaf delegate`,\n    [MPL_BUBBLEGUM_ERROR__LEAF_MUST_BE_DELEGATED]: `Leaf must be delegated to someone other than the leaf owner`,\n    [MPL_BUBBLEGUM_ERROR__METADATA_BASIS_POINTS_TOO_HIGH]: `Basis points in metadata cannot exceed 10000`,\n    [MPL_BUBBLEGUM_ERROR__METADATA_IMMUTABLE]: `Metadata not mutable`,\n    [MPL_BUBBLEGUM_ERROR__METADATA_MINT_MISMATCH]: `Metadata mint does not match collection mint`,\n    [MPL_BUBBLEGUM_ERROR__METADATA_NAME_TOO_LONG]: `Name in metadata is too long`,\n    [MPL_BUBBLEGUM_ERROR__METADATA_SYMBOL_TOO_LONG]: `Symbol in metadata is too long`,\n    [MPL_BUBBLEGUM_ERROR__METADATA_URI_TOO_LONG]: `Uri in metadata is too long`,\n    [MPL_BUBBLEGUM_ERROR__MISSING_COLLECTION_ACCOUNT]: `Missing collection account`,\n    [MPL_BUBBLEGUM_ERROR__MISSING_COLLECTION_METADATA_ACCOUNT]: `Missing collection metadata account`,\n    [MPL_BUBBLEGUM_ERROR__MISSING_COLLECTION_MINT_ACCOUNT]: `Missing collection mint account`,\n    [MPL_BUBBLEGUM_ERROR__MISSING_MPL_CORE_CPI_SIGNER_ACCOUNT]: `Missing mpl-core CPI signer account`,\n    [MPL_BUBBLEGUM_ERROR__NO_CREATORS_PRESENT]: `No creators in creator Vec`,\n    [MPL_BUBBLEGUM_ERROR__NOT_AVAILABLE]: `Feature not currently available`,\n    [MPL_BUBBLEGUM_ERROR__NUMERICAL_OVERFLOW_ERROR]: `NumericalOverflowError`,\n    [MPL_BUBBLEGUM_ERROR__PRIMARY_SALE_CAN_ONLY_BE_FLIPPED_TO_TRUE]: `Can only update primary sale to true`,\n    [MPL_BUBBLEGUM_ERROR__PUBLIC_KEY_MISMATCH]: `PublicKeyMismatch`,\n    [MPL_BUBBLEGUM_ERROR__TREE_AUTHORITY_INCORRECT]: `Tree creator or tree delegate must sign.`,\n    [MPL_BUBBLEGUM_ERROR__UNKNOWN_EXTERNAL_ERROR]: `Could not convert external error to BubblegumError`,\n    [MPL_BUBBLEGUM_ERROR__UNSUPPORTED_SCHEMA_VERSION]: `Unsupported Schema Version`,\n    [MPL_BUBBLEGUM_ERROR__UPDATE_AUTHORITY_INCORRECT]: `Incorrect leaf metadata update authority.`,\n  };\n}\n\nexport function getMplBubblegumErrorMessage(code: MplBubblegumError): string {\n  if (process.env.NODE_ENV !== 'production') {\n    return (mplBubblegumErrorMessages as Record<MplBubblegumError, string>)[\n      code\n    ];\n  }\n\n  return 'Error message not available in production bundles.';\n}\n\nexport function isMplBubblegumError<\n  TProgramErrorCode extends MplBubblegumError,\n>(\n  error: unknown,\n  transactionMessage: {\n    instructions: Record<number, { programAddress: Address }>;\n  },\n  code?: TProgramErrorCode\n): error is SolanaError<typeof SOLANA_ERROR__INSTRUCTION_ERROR__CUSTOM> &\n  Readonly<{ context: Readonly<{ code: TProgramErrorCode }> }> {\n  return isProgramError<TProgramErrorCode>(\n    error,\n    transactionMessage,\n    MPL_BUBBLEGUM_PROGRAM_ADDRESS,\n    code\n  );\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  AccountRole,\n  isProgramDerivedAddress,\n  isTransactionSigner as kitIsTransactionSigner,\n  type AccountMeta,\n  type AccountSignerMeta,\n  type Address,\n  type ProgramDerivedAddress,\n  type TransactionSigner,\n  upgradeRoleToSigner,\n} from '@solana/kit';\n\n/**\n * Asserts that the given value is not null or undefined.\n * @internal\n */\nexport function expectSome<T>(value: T | null | undefined): T {\n  if (value === null || value === undefined) {\n    throw new Error('Expected a value but received null or undefined.');\n  }\n  return value;\n}\n\n/**\n * Asserts that the given value is a PublicKey.\n * @internal\n */\nexport function expectAddress<T extends string = string>(\n  value:\n    | Address<T>\n    | ProgramDerivedAddress<T>\n    | TransactionSigner<T>\n    | null\n    | undefined\n): Address<T> {\n  if (!value) {\n    throw new Error('Expected a Address.');\n  }\n  if (typeof value === 'object' && 'address' in value) {\n    return value.address;\n  }\n  if (Array.isArray(value)) {\n    return value[0] as Address<T>;\n  }\n  return value as Address<T>;\n}\n\n/**\n * Asserts that the given value is a PDA.\n * @internal\n */\nexport function expectProgramDerivedAddress<T extends string = string>(\n  value:\n    | Address<T>\n    | ProgramDerivedAddress<T>\n    | TransactionSigner<T>\n    | null\n    | undefined\n): ProgramDerivedAddress<T> {\n  if (!value || !Array.isArray(value) || !isProgramDerivedAddress(value)) {\n    throw new Error('Expected a ProgramDerivedAddress.');\n  }\n  return value;\n}\n\n/**\n * Asserts that the given value is a TransactionSigner.\n * @internal\n */\nexport function expectTransactionSigner<T extends string = string>(\n  value:\n    | Address<T>\n    | ProgramDerivedAddress<T>\n    | TransactionSigner<T>\n    | null\n    | undefined\n): TransactionSigner<T> {\n  if (!value || !isTransactionSigner(value)) {\n    throw new Error('Expected a TransactionSigner.');\n  }\n  return value;\n}\n\n/**\n * Defines an instruction account to resolve.\n * @internal\n */\nexport type ResolvedAccount<\n  T extends string = string,\n  U extends\n    | Address<T>\n    | ProgramDerivedAddress<T>\n    | TransactionSigner<T>\n    | null =\n    | Address<T>\n    | ProgramDerivedAddress<T>\n    | TransactionSigner<T>\n    | null,\n> = {\n  isWritable: boolean;\n  value: U;\n};\n\n/**\n * Defines an instruction that stores additional bytes on-chain.\n * @internal\n */\nexport type InstructionWithByteDelta = {\n  byteDelta: number;\n};\n\n/**\n * Get account metas and signers from resolved accounts.\n * @internal\n */\nexport function getAccountMetaFactory(\n  programAddress: Address,\n  optionalAccountStrategy: 'omitted' | 'programId'\n) {\n  return (\n    account: ResolvedAccount\n  ): AccountMeta | AccountSignerMeta | undefined => {\n    if (!account.value) {\n      if (optionalAccountStrategy === 'omitted') return;\n      return Object.freeze({\n        address: programAddress,\n        role: AccountRole.READONLY,\n      });\n    }\n\n    const writableRole = account.isWritable\n      ? AccountRole.WRITABLE\n      : AccountRole.READONLY;\n    return Object.freeze({\n      address: expectAddress(account.value),\n      role: isTransactionSigner(account.value)\n        ? upgradeRoleToSigner(writableRole)\n        : writableRole,\n      ...(isTransactionSigner(account.value) ? { signer: account.value } : {}),\n    });\n  };\n}\n\nexport function isTransactionSigner<TAddress extends string = string>(\n  value:\n    | Address<TAddress>\n    | ProgramDerivedAddress<TAddress>\n    | TransactionSigner<TAddress>\n): value is TransactionSigner<TAddress> {\n  return (\n    !!value &&\n    typeof value === 'object' &&\n    'address' in value &&\n    kitIsTransactionSigner(value)\n  );\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  AccountRole,\n  combineCodec,\n  fixDecoderSize,\n  fixEncoderSize,\n  getBytesDecoder,\n  getBytesEncoder,\n  getStructDecoder,\n  getStructEncoder,\n  getU32Decoder,\n  getU32Encoder,\n  getU64Decoder,\n  getU64Encoder,\n  transformEncoder,\n  type AccountMeta,\n  type AccountSignerMeta,\n  type Address,\n  type FixedSizeCodec,\n  type FixedSizeDecoder,\n  type FixedSizeEncoder,\n  type Instruction,\n  type InstructionWithAccounts,\n  type InstructionWithData,\n  type ReadonlyAccount,\n  type ReadonlySignerAccount,\n  type ReadonlyUint8Array,\n  type TransactionSigner,\n  type WritableAccount,\n} from '@solana/kit';\nimport { findTreeConfigPda } from '../pdas';\nimport { MPL_BUBBLEGUM_PROGRAM_ADDRESS } from '../programs';\nimport {\n  expectAddress,\n  expectSome,\n  getAccountMetaFactory,\n  type ResolvedAccount,\n} from '../shared';\n\nexport const BURN_DISCRIMINATOR = new Uint8Array([\n  116, 110, 29, 56, 107, 219, 42, 93,\n]);\n\nexport function getBurnDiscriminatorBytes() {\n  return fixEncoderSize(getBytesEncoder(), 8).encode(BURN_DISCRIMINATOR);\n}\n\nexport type BurnInstruction<\n  TProgram extends string = typeof MPL_BUBBLEGUM_PROGRAM_ADDRESS,\n  TAccountTreeConfig extends string | AccountMeta<string> = string,\n  TAccountLeafOwner extends string | AccountMeta<string> = string,\n  TAccountLeafDelegate extends string | AccountMeta<string> = string,\n  TAccountMerkleTree extends string | AccountMeta<string> = string,\n  TAccountLogWrapper extends\n    | string\n    | AccountMeta<string> = 'noopb9bkMVfRPU8AsbpTUg8AQkHtKwMYZiFUjNRtMmV',\n  TAccountCompressionProgram extends\n    | string\n    | AccountMeta<string> = 'cmtDvXumGCrqC1Age74AVPhSRVXJMd8PJS91L8KbNCK',\n  TAccountSystemProgram extends\n    | string\n    | AccountMeta<string> = '11111111111111111111111111111111',\n  TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n  InstructionWithData<ReadonlyUint8Array> &\n  InstructionWithAccounts<\n    [\n      TAccountTreeConfig extends string\n        ? ReadonlyAccount<TAccountTreeConfig>\n        : TAccountTreeConfig,\n      TAccountLeafOwner extends string\n        ? ReadonlyAccount<TAccountLeafOwner>\n        : TAccountLeafOwner,\n      TAccountLeafDelegate extends string\n        ? ReadonlyAccount<TAccountLeafDelegate>\n        : TAccountLeafDelegate,\n      TAccountMerkleTree extends string\n        ? WritableAccount<TAccountMerkleTree>\n        : TAccountMerkleTree,\n      TAccountLogWrapper extends string\n        ? ReadonlyAccount<TAccountLogWrapper>\n        : TAccountLogWrapper,\n      TAccountCompressionProgram extends string\n        ? ReadonlyAccount<TAccountCompressionProgram>\n        : TAccountCompressionProgram,\n      TAccountSystemProgram extends string\n        ? ReadonlyAccount<TAccountSystemProgram>\n        : TAccountSystemProgram,\n      ...TRemainingAccounts,\n    ]\n  >;\n\nexport type BurnInstructionData = {\n  discriminator: ReadonlyUint8Array;\n  root: ReadonlyUint8Array;\n  dataHash: ReadonlyUint8Array;\n  creatorHash: ReadonlyUint8Array;\n  nonce: bigint;\n  index: number;\n};\n\nexport type BurnInstructionDataArgs = {\n  root: ReadonlyUint8Array;\n  dataHash: ReadonlyUint8Array;\n  creatorHash: ReadonlyUint8Array;\n  nonce: number | bigint;\n  index: number;\n};\n\nexport function getBurnInstructionDataEncoder(): FixedSizeEncoder<BurnInstructionDataArgs> {\n  return transformEncoder(\n    getStructEncoder([\n      ['discriminator', fixEncoderSize(getBytesEncoder(), 8)],\n      ['root', fixEncoderSize(getBytesEncoder(), 32)],\n      ['dataHash', fixEncoderSize(getBytesEncoder(), 32)],\n      ['creatorHash', fixEncoderSize(getBytesEncoder(), 32)],\n      ['nonce', getU64Encoder()],\n      ['index', getU32Encoder()],\n    ]),\n    (value) => ({ ...value, discriminator: BURN_DISCRIMINATOR })\n  );\n}\n\nexport function getBurnInstructionDataDecoder(): FixedSizeDecoder<BurnInstructionData> {\n  return getStructDecoder([\n    ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n    ['root', fixDecoderSize(getBytesDecoder(), 32)],\n    ['dataHash', fixDecoderSize(getBytesDecoder(), 32)],\n    ['creatorHash', fixDecoderSize(getBytesDecoder(), 32)],\n    ['nonce', getU64Decoder()],\n    ['index', getU32Decoder()],\n  ]);\n}\n\nexport function getBurnInstructionDataCodec(): FixedSizeCodec<\n  BurnInstructionDataArgs,\n  BurnInstructionData\n> {\n  return combineCodec(\n    getBurnInstructionDataEncoder(),\n    getBurnInstructionDataDecoder()\n  );\n}\n\nexport type BurnAsyncInput<\n  TAccountTreeConfig extends string = string,\n  TAccountLeafOwner extends string = string,\n  TAccountLeafDelegate extends string = string,\n  TAccountMerkleTree extends string = string,\n  TAccountLogWrapper extends string = string,\n  TAccountCompressionProgram extends string = string,\n  TAccountSystemProgram extends string = string,\n> = {\n  treeConfig?: Address<TAccountTreeConfig>;\n  leafOwner: Address<TAccountLeafOwner> | TransactionSigner<TAccountLeafOwner>;\n  leafDelegate?:\n    | Address<TAccountLeafDelegate>\n    | TransactionSigner<TAccountLeafDelegate>;\n  merkleTree: Address<TAccountMerkleTree>;\n  logWrapper?: Address<TAccountLogWrapper>;\n  compressionProgram?: Address<TAccountCompressionProgram>;\n  systemProgram?: Address<TAccountSystemProgram>;\n  root: BurnInstructionDataArgs['root'];\n  dataHash: BurnInstructionDataArgs['dataHash'];\n  creatorHash: BurnInstructionDataArgs['creatorHash'];\n  nonce: BurnInstructionDataArgs['nonce'];\n  index: BurnInstructionDataArgs['index'];\n  proof?: Array<Address>;\n};\n\nexport async function getBurnInstructionAsync<\n  TAccountTreeConfig extends string,\n  TAccountLeafOwner extends string,\n  TAccountLeafDelegate extends string,\n  TAccountMerkleTree extends string,\n  TAccountLogWrapper extends string,\n  TAccountCompressionProgram extends string,\n  TAccountSystemProgram extends string,\n  TProgramAddress extends Address = typeof MPL_BUBBLEGUM_PROGRAM_ADDRESS,\n>(\n  input: BurnAsyncInput<\n    TAccountTreeConfig,\n    TAccountLeafOwner,\n    TAccountLeafDelegate,\n    TAccountMerkleTree,\n    TAccountLogWrapper,\n    TAccountCompressionProgram,\n    TAccountSystemProgram\n  >,\n  config?: { programAddress?: TProgramAddress }\n): Promise<\n  BurnInstruction<\n    TProgramAddress,\n    TAccountTreeConfig,\n    (typeof input)['leafOwner'] extends TransactionSigner<TAccountLeafOwner>\n      ? ReadonlySignerAccount<TAccountLeafOwner> &\n          AccountSignerMeta<TAccountLeafOwner>\n      : TAccountLeafOwner,\n    (typeof input)['leafDelegate'] extends TransactionSigner<TAccountLeafDelegate>\n      ? ReadonlySignerAccount<TAccountLeafDelegate> &\n          AccountSignerMeta<TAccountLeafDelegate>\n      : TAccountLeafDelegate,\n    TAccountMerkleTree,\n    TAccountLogWrapper,\n    TAccountCompressionProgram,\n    TAccountSystemProgram\n  >\n> {\n  // Program address.\n  const programAddress =\n    config?.programAddress ?? MPL_BUBBLEGUM_PROGRAM_ADDRESS;\n\n  // Original accounts.\n  const originalAccounts = {\n    treeConfig: { value: input.treeConfig ?? null, isWritable: false },\n    leafOwner: { value: input.leafOwner ?? null, isWritable: false },\n    leafDelegate: { value: input.leafDelegate ?? null, isWritable: false },\n    merkleTree: { value: input.merkleTree ?? null, isWritable: true },\n    logWrapper: { value: input.logWrapper ?? null, isWritable: false },\n    compressionProgram: {\n      value: input.compressionProgram ?? null,\n      isWritable: false,\n    },\n    systemProgram: { value: input.systemProgram ?? null, isWritable: false },\n  };\n  const accounts = originalAccounts as Record<\n    keyof typeof originalAccounts,\n    ResolvedAccount\n  >;\n\n  // Original args.\n  const args = { ...input };\n\n  // Resolve default values.\n  if (!accounts.treeConfig.value) {\n    accounts.treeConfig.value = await findTreeConfigPda({\n      merkleTree: expectAddress(accounts.merkleTree.value),\n    });\n  }\n  if (!accounts.leafDelegate.value) {\n    accounts.leafDelegate.value = expectSome(accounts.leafOwner.value);\n  }\n  if (!accounts.logWrapper.value) {\n    accounts.logWrapper.value =\n      'noopb9bkMVfRPU8AsbpTUg8AQkHtKwMYZiFUjNRtMmV' as Address<'noopb9bkMVfRPU8AsbpTUg8AQkHtKwMYZiFUjNRtMmV'>;\n  }\n  if (!accounts.compressionProgram.value) {\n    accounts.compressionProgram.value =\n      'cmtDvXumGCrqC1Age74AVPhSRVXJMd8PJS91L8KbNCK' as Address<'cmtDvXumGCrqC1Age74AVPhSRVXJMd8PJS91L8KbNCK'>;\n  }\n  if (!accounts.systemProgram.value) {\n    accounts.systemProgram.value =\n      '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>;\n  }\n\n  // Remaining accounts.\n  const remainingAccounts: AccountMeta[] = (args.proof ?? []).map(\n    (address) => ({ address, role: AccountRole.READONLY })\n  );\n\n  const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n  return Object.freeze({\n    accounts: [\n      getAccountMeta(accounts.treeConfig),\n      getAccountMeta(accounts.leafOwner),\n      getAccountMeta(accounts.leafDelegate),\n      getAccountMeta(accounts.merkleTree),\n      getAccountMeta(accounts.logWrapper),\n      getAccountMeta(accounts.compressionProgram),\n      getAccountMeta(accounts.systemProgram),\n      ...remainingAccounts,\n    ],\n    data: getBurnInstructionDataEncoder().encode(\n      args as BurnInstructionDataArgs\n    ),\n    programAddress,\n  } as BurnInstruction<\n    TProgramAddress,\n    TAccountTreeConfig,\n    (typeof input)['leafOwner'] extends TransactionSigner<TAccountLeafOwner>\n      ? ReadonlySignerAccount<TAccountLeafOwner> &\n          AccountSignerMeta<TAccountLeafOwner>\n      : TAccountLeafOwner,\n    (typeof input)['leafDelegate'] extends TransactionSigner<TAccountLeafDelegate>\n      ? ReadonlySignerAccount<TAccountLeafDelegate> &\n          AccountSignerMeta<TAccountLeafDelegate>\n      : TAccountLeafDelegate,\n    TAccountMerkleTree,\n    TAccountLogWrapper,\n    TAccountCompressionProgram,\n    TAccountSystemProgram\n  >);\n}\n\nexport type BurnInput<\n  TAccountTreeConfig extends string = string,\n  TAccountLeafOwner extends string = string,\n  TAccountLeafDelegate extends string = string,\n  TAccountMerkleTree extends string = string,\n  TAccountLogWrapper extends string = string,\n  TAccountCompressionProgram extends string = string,\n  TAccountSystemProgram extends string = string,\n> = {\n  treeConfig: Address<TAccountTreeConfig>;\n  leafOwner: Address<TAccountLeafOwner> | TransactionSigner<TAccountLeafOwner>;\n  leafDelegate?:\n    | Address<TAccountLeafDelegate>\n    | TransactionSigner<TAccountLeafDelegate>;\n  merkleTree: Address<TAccountMerkleTree>;\n  logWrapper?: Address<TAccountLogWrapper>;\n  compressionProgram?: Address<TAccountCompressionProgram>;\n  systemProgram?: Address<TAccountSystemProgram>;\n  root: BurnInstructionDataArgs['root'];\n  dataHash: BurnInstructionDataArgs['dataHash'];\n  creatorHash: BurnInstructionDataArgs['creatorHash'];\n  nonce: BurnInstructionDataArgs['nonce'];\n  index: BurnInstructionDataArgs['index'];\n  proof?: Array<Address>;\n};\n\nexport function getBurnInstruction<\n  TAccountTreeConfig extends string,\n  TAccountLeafOwner extends string,\n  TAccountLeafDelegate extends string,\n  TAccountMerkleTree extends string,\n  TAccountLogWrapper extends string,\n  TAccountCompressionProgram extends string,\n  TAccountSystemProgram extends string,\n  TProgramAddress extends Address = typeof MPL_BUBBLEGUM_PROGRAM_ADDRESS,\n>(\n  input: BurnInput<\n    TAccountTreeConfig,\n    TAccountLeafOwner,\n    TAccountLeafDelegate,\n    TAccountMerkleTree,\n    TAccountLogWrapper,\n    TAccountCompressionProgram,\n    TAccountSystemProgram\n  >,\n  config?: { programAddress?: TProgramAddress }\n): BurnInstruction<\n  TProgramAddress,\n  TAccountTreeConfig,\n  (typeof input)['leafOwner'] extends TransactionSigner<TAccountLeafOwner>\n    ? ReadonlySignerAccount<TAccountLeafOwner> &\n        AccountSignerMeta<TAccountLeafOwner>\n    : TAccountLeafOwner,\n  (typeof input)['leafDelegate'] extends TransactionSigner<TAccountLeafDelegate>\n    ? ReadonlySignerAccount<TAccountLeafDelegate> &\n        AccountSignerMeta<TAccountLeafDelegate>\n    : TAccountLeafDelegate,\n  TAccountMerkleTree,\n  TAccountLogWrapper,\n  TAccountCompressionProgram,\n  TAccountSystemProgram\n> {\n  // Program address.\n  const programAddress =\n    config?.programAddress ?? MPL_BUBBLEGUM_PROGRAM_ADDRESS;\n\n  // Original accounts.\n  const originalAccounts = {\n    treeConfig: { value: input.treeConfig ?? null, isWritable: false },\n    leafOwner: { value: input.leafOwner ?? null, isWritable: false },\n    leafDelegate: { value: input.leafDelegate ?? null, isWritable: false },\n    merkleTree: { value: input.merkleTree ?? null, isWritable: true },\n    logWrapper: { value: input.logWrapper ?? null, isWritable: false },\n    compressionProgram: {\n      value: input.compressionProgram ?? null,\n      isWritable: false,\n    },\n    systemProgram: { value: input.systemProgram ?? null, isWritable: false },\n  };\n  const accounts = originalAccounts as Record<\n    keyof typeof originalAccounts,\n    ResolvedAccount\n  >;\n\n  // Original args.\n  const args = { ...input };\n\n  // Resolve default values.\n  if (!accounts.leafDelegate.value) {\n    accounts.leafDelegate.value = expectSome(accounts.leafOwner.value);\n  }\n  if (!accounts.logWrapper.value) {\n    accounts.logWrapper.value =\n      'noopb9bkMVfRPU8AsbpTUg8AQkHtKwMYZiFUjNRtMmV' as Address<'noopb9bkMVfRPU8AsbpTUg8AQkHtKwMYZiFUjNRtMmV'>;\n  }\n  if (!accounts.compressionProgram.value) {\n    accounts.compressionProgram.value =\n      'cmtDvXumGCrqC1Age74AVPhSRVXJMd8PJS91L8KbNCK' as Address<'cmtDvXumGCrqC1Age74AVPhSRVXJMd8PJS91L8KbNCK'>;\n  }\n  if (!accounts.systemProgram.value) {\n    accounts.systemProgram.value =\n      '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>;\n  }\n\n  // Remaining accounts.\n  const remainingAccounts: AccountMeta[] = (args.proof ?? []).map(\n    (address) => ({ address, role: AccountRole.READONLY })\n  );\n\n  const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n  return Object.freeze({\n    accounts: [\n      getAccountMeta(accounts.treeConfig),\n      getAccountMeta(accounts.leafOwner),\n      getAccountMeta(accounts.leafDelegate),\n      getAccountMeta(accounts.merkleTree),\n      getAccountMeta(accounts.logWrapper),\n      getAccountMeta(accounts.compressionProgram),\n      getAccountMeta(accounts.systemProgram),\n      ...remainingAccounts,\n    ],\n    data: getBurnInstructionDataEncoder().encode(\n      args as BurnInstructionDataArgs\n    ),\n    programAddress,\n  } as BurnInstruction<\n    TProgramAddress,\n    TAccountTreeConfig,\n    (typeof input)['leafOwner'] extends TransactionSigner<TAccountLeafOwner>\n      ? ReadonlySignerAccount<TAccountLeafOwner> &\n          AccountSignerMeta<TAccountLeafOwner>\n      : TAccountLeafOwner,\n    (typeof input)['leafDelegate'] extends TransactionSigner<TAccountLeafDelegate>\n      ? ReadonlySignerAccount<TAccountLeafDelegate> &\n          AccountSignerMeta<TAccountLeafDelegate>\n      : TAccountLeafDelegate,\n    TAccountMerkleTree,\n    TAccountLogWrapper,\n    TAccountCompressionProgram,\n    TAccountSystemProgram\n  >);\n}\n\nexport type ParsedBurnInstruction<\n  TProgram extends string = typeof MPL_BUBBLEGUM_PROGRAM_ADDRESS,\n  TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n  programAddress: Address<TProgram>;\n  accounts: {\n    treeConfig: TAccountMetas[0];\n    leafOwner: TAccountMetas[1];\n    leafDelegate: TAccountMetas[2];\n    merkleTree: TAccountMetas[3];\n    logWrapper: TAccountMetas[4];\n    compressionProgram: TAccountMetas[5];\n    systemProgram: TAccountMetas[6];\n  };\n  data: BurnInstructionData;\n};\n\nexport function parseBurnInstruction<\n  TProgram extends string,\n  TAccountMetas extends readonly AccountMeta[],\n>(\n  instruction: Instruction<TProgram> &\n    InstructionWithAccounts<TAccountMetas> &\n    InstructionWithData<ReadonlyUint8Array>\n): ParsedBurnInstruction<TProgram, TAccountMetas> {\n  if (instruction.accounts.length < 7) {\n    // TODO: Coded error.\n    throw new Error('Not enough accounts');\n  }\n  let accountIndex = 0;\n  const getNextAccount = () => {\n    const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n    accountIndex += 1;\n    return accountMeta;\n  };\n  return {\n    programAddress: instruction.programAddress,\n    accounts: {\n      treeConfig: getNextAccount(),\n      leafOwner: getNextAccount(),\n      leafDelegate: getNextAccount(),\n      merkleTree: getNextAccount(),\n      logWrapper: getNextAccount(),\n      compressionProgram: getNextAccount(),\n      systemProgram: getNextAccount(),\n    },\n    data: getBurnInstructionDataDecoder().decode(instruction.data),\n  };\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  AccountRole,\n  combineCodec,\n  fixDecoderSize,\n  fixEncoderSize,\n  getBytesDecoder,\n  getBytesEncoder,\n  getOptionDecoder,\n  getOptionEncoder,\n  getStructDecoder,\n  getStructEncoder,\n  getU32Decoder,\n  getU32Encoder,\n  getU64Decoder,\n  getU64Encoder,\n  getU8Decoder,\n  getU8Encoder,\n  none,\n  transformEncoder,\n  type AccountMeta,\n  type AccountSignerMeta,\n  type Address,\n  type Codec,\n  type Decoder,\n  type Encoder,\n  type Instruction,\n  type InstructionWithAccounts,\n  type InstructionWithData,\n  type Option,\n  type OptionOrNullable,\n  type ReadonlyAccount,\n  type ReadonlySignerAccount,\n  type ReadonlyUint8Array,\n  type TransactionSigner,\n  type WritableAccount,\n  type WritableSignerAccount,\n} from '@solana/kit';\nimport { findTreeConfigPda } from '../pdas';\nimport { MPL_BUBBLEGUM_PROGRAM_ADDRESS } from '../programs';\nimport {\n  expectAddress,\n  getAccountMetaFactory,\n  type ResolvedAccount,\n} from '../shared';\n\nexport const BURN_V2_DISCRIMINATOR = new Uint8Array([\n  115, 210, 34, 240, 232, 143, 183, 16,\n]);\n\nexport function getBurnV2DiscriminatorBytes() {\n  return fixEncoderSize(getBytesEncoder(), 8).encode(BURN_V2_DISCRIMINATOR);\n}\n\nexport type BurnV2Instruction<\n  TProgram extends string = typeof MPL_BUBBLEGUM_PROGRAM_ADDRESS,\n  TAccountTreeConfig extends string | AccountMeta<string> = string,\n  TAccountPayer extends string | AccountMeta<string> = string,\n  TAccountAuthority extends string | AccountMeta<string> = string,\n  TAccountLeafOwner extends string | AccountMeta<string> = string,\n  TAccountLeafDelegate extends string | AccountMeta<string> = string,\n  TAccountMerkleTree extends string | AccountMeta<string> = string,\n  TAccountCoreCollection extends string | AccountMeta<string> = string,\n  TAccountMplCoreCpiSigner extends string | AccountMeta<string> = string,\n  TAccountLogWrapper extends\n    | string\n    | AccountMeta<string> = 'mnoopTCrg4p8ry25e4bcWA9XZjbNjMTfgYVGGEdRsf3',\n  TAccountCompressionProgram extends\n    | string\n    | AccountMeta<string> = 'mcmt6YrQEMKw8Mw43FmpRLmf7BqRnFMKmAcbxE3xkAW',\n  TAccountMplCoreProgram extends\n    | string\n    | AccountMeta<string> = 'CoREENxT6tW1HoK8ypY1SxRMZTcVPm7R94rH4PZNhX7d',\n  TAccountSystemProgram extends\n    | string\n    | AccountMeta<string> = '11111111111111111111111111111111',\n  TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n  InstructionWithData<ReadonlyUint8Array> &\n  InstructionWithAccounts<\n    [\n      TAccountTreeConfig extends string\n        ? WritableAccount<TAccountTreeConfig>\n        : TAccountTreeConfig,\n      TAccountPayer extends string\n        ? WritableSignerAccount<TAccountPayer> &\n            AccountSignerMeta<TAccountPayer>\n        : TAccountPayer,\n      TAccountAuthority extends string\n        ? ReadonlySignerAccount<TAccountAuthority> &\n            AccountSignerMeta<TAccountAuthority>\n        : TAccountAuthority,\n      TAccountLeafOwner extends string\n        ? ReadonlyAccount<TAccountLeafOwner>\n        : TAccountLeafOwner,\n      TAccountLeafDelegate extends string\n        ? ReadonlyAccount<TAccountLeafDelegate>\n        : TAccountLeafDelegate,\n      TAccountMerkleTree extends string\n        ? WritableAccount<TAccountMerkleTree>\n        : TAccountMerkleTree,\n      TAccountCoreCollection extends string\n        ? WritableAccount<TAccountCoreCollection>\n        : TAccountCoreCollection,\n      TAccountMplCoreCpiSigner extends string\n        ? ReadonlyAccount<TAccountMplCoreCpiSigner>\n        : TAccountMplCoreCpiSigner,\n      TAccountLogWrapper extends string\n        ? ReadonlyAccount<TAccountLogWrapper>\n        : TAccountLogWrapper,\n      TAccountCompressionProgram extends string\n        ? ReadonlyAccount<TAccountCompressionProgram>\n        : TAccountCompressionProgram,\n      TAccountMplCoreProgram extends string\n        ? ReadonlyAccount<TAccountMplCoreProgram>\n        : TAccountMplCoreProgram,\n      TAccountSystemProgram extends string\n        ? ReadonlyAccount<TAccountSystemProgram>\n        : TAccountSystemProgram,\n      ...TRemainingAccounts,\n    ]\n  >;\n\nexport type BurnV2InstructionData = {\n  discriminator: ReadonlyUint8Array;\n  root: ReadonlyUint8Array;\n  dataHash: ReadonlyUint8Array;\n  creatorHash: ReadonlyUint8Array;\n  assetDataHash: Option<ReadonlyUint8Array>;\n  flags: Option<number>;\n  nonce: bigint;\n  index: number;\n};\n\nexport type BurnV2InstructionDataArgs = {\n  root: ReadonlyUint8Array;\n  dataHash: ReadonlyUint8Array;\n  creatorHash: ReadonlyUint8Array;\n  assetDataHash?: OptionOrNullable<ReadonlyUint8Array>;\n  flags?: OptionOrNullable<number>;\n  nonce: number | bigint;\n  index: number;\n};\n\nexport function getBurnV2InstructionDataEncoder(): Encoder<BurnV2InstructionDataArgs> {\n  return transformEncoder(\n    getStructEncoder([\n      ['discriminator', fixEncoderSize(getBytesEncoder(), 8)],\n      ['root', fixEncoderSize(getBytesEncoder(), 32)],\n      ['dataHash', fixEncoderSize(getBytesEncoder(), 32)],\n      ['creatorHash', fixEncoderSize(getBytesEncoder(), 32)],\n      [\n        'assetDataHash',\n        getOptionEncoder(fixEncoderSize(getBytesEncoder(), 32)),\n      ],\n      ['flags', getOptionEncoder(getU8Encoder())],\n      ['nonce', getU64Encoder()],\n      ['index', getU32Encoder()],\n    ]),\n    (value) => ({\n      ...value,\n      discriminator: BURN_V2_DISCRIMINATOR,\n      assetDataHash: value.assetDataHash ?? none(),\n      flags: value.flags ?? none(),\n    })\n  );\n}\n\nexport function getBurnV2InstructionDataDecoder(): Decoder<BurnV2InstructionData> {\n  return getStructDecoder([\n    ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n    ['root', fixDecoderSize(getBytesDecoder(), 32)],\n    ['dataHash', fixDecoderSize(getBytesDecoder(), 32)],\n    ['creatorHash', fixDecoderSize(getBytesDecoder(), 32)],\n    ['assetDataHash', getOptionDecoder(fixDecoderSize(getBytesDecoder(), 32))],\n    ['flags', getOptionDecoder(getU8Decoder())],\n    ['nonce', getU64Decoder()],\n    ['index', getU32Decoder()],\n  ]);\n}\n\nexport function getBurnV2InstructionDataCodec(): Codec<\n  BurnV2InstructionDataArgs,\n  BurnV2InstructionData\n> {\n  return combineCodec(\n    getBurnV2InstructionDataEncoder(),\n    getBurnV2InstructionDataDecoder()\n  );\n}\n\nexport type BurnV2AsyncInput<\n  TAccountTreeConfig extends string = string,\n  TAccountPayer extends string = string,\n  TAccountAuthority extends string = string,\n  TAccountLeafOwner extends string = string,\n  TAccountLeafDelegate extends string = string,\n  TAccountMerkleTree extends string = string,\n  TAccountCoreCollection extends string = string,\n  TAccountMplCoreCpiSigner extends string = string,\n  TAccountLogWrapper extends string = string,\n  TAccountCompressionProgram extends string = string,\n  TAccountMplCoreProgram extends string = string,\n  TAccountSystemProgram extends string = string,\n> = {\n  treeConfig?: Address<TAccountTreeConfig>;\n  payer: TransactionSigner<TAccountPayer>;\n  /**\n   * Optional authority, defaults to `payer`.  Must be either\n   * the leaf owner or collection collection permanent burn delegate.\n   */\n  authority?: TransactionSigner<TAccountAuthority>;\n  leafOwner: Address<TAccountLeafOwner>;\n  /** Defaults to `leaf_owner` */\n  leafDelegate?: Address<TAccountLeafDelegate>;\n  merkleTree: Address<TAccountMerkleTree>;\n  coreCollection?: Address<TAccountCoreCollection>;\n  mplCoreCpiSigner?: Address<TAccountMplCoreCpiSigner>;\n  logWrapper?: Address<TAccountLogWrapper>;\n  compressionProgram?: Address<TAccountCompressionProgram>;\n  mplCoreProgram?: Address<TAccountMplCoreProgram>;\n  systemProgram?: Address<TAccountSystemProgram>;\n  root: BurnV2InstructionDataArgs['root'];\n  dataHash: BurnV2InstructionDataArgs['dataHash'];\n  creatorHash: BurnV2InstructionDataArgs['creatorHash'];\n  assetDataHash?: BurnV2InstructionDataArgs['assetDataHash'];\n  flags?: BurnV2InstructionDataArgs['flags'];\n  nonce: BurnV2InstructionDataArgs['nonce'];\n  index: BurnV2InstructionDataArgs['index'];\n  proof?: Array<Address>;\n};\n\nexport async function getBurnV2InstructionAsync<\n  TAccountTreeConfig extends string,\n  TAccountPayer extends string,\n  TAccountAuthority extends string,\n  TAccountLeafOwner extends string,\n  TAccountLeafDelegate extends string,\n  TAccountMerkleTree extends string,\n  TAccountCoreCollection extends string,\n  TAccountMplCoreCpiSigner extends string,\n  TAccountLogWrapper extends string,\n  TAccountCompressionProgram extends string,\n  TAccountMplCoreProgram extends string,\n  TAccountSystemProgram extends string,\n  TProgramAddress extends Address = typeof MPL_BUBBLEGUM_PROGRAM_ADDRESS,\n>(\n  input: BurnV2AsyncInput<\n    TAccountTreeConfig,\n    TAccountPayer,\n    TAccountAuthority,\n    TAccountLeafOwner,\n    TAccountLeafDelegate,\n    TAccountMerkleTree,\n    TAccountCoreCollection,\n    TAccountMplCoreCpiSigner,\n    TAccountLogWrapper,\n    TAccountCompressionProgram,\n    TAccountMplCoreProgram,\n    TAccountSystemProgram\n  >,\n  config?: { programAddress?: TProgramAddress }\n): Promise<\n  BurnV2Instruction<\n    TProgramAddress,\n    TAccountTreeConfig,\n    TAccountPayer,\n    TAccountAuthority,\n    TAccountLeafOwner,\n    TAccountLeafDelegate,\n    TAccountMerkleTree,\n    TAccountCoreCollection,\n    TAccountMplCoreCpiSigner,\n    TAccountLogWrapper,\n    TAccountCompressionProgram,\n    TAccountMplCoreProgram,\n    TAccountSystemProgram\n  >\n> {\n  // Program address.\n  const programAddress =\n    config?.programAddress ?? MPL_BUBBLEGUM_PROGRAM_ADDRESS;\n\n  // Original accounts.\n  const originalAccounts = {\n    treeConfig: { value: input.treeConfig ?? null, isWritable: true },\n    payer: { value: input.payer ?? null, isWritable: true },\n    authority: { value: input.authority ?? null, isWritable: false },\n    leafOwner: { value: input.leafOwner ?? null, isWritable: false },\n    leafDelegate: { value: input.leafDelegate ?? null, isWritable: false },\n    merkleTree: { value: input.merkleTree ?? null, isWritable: true },\n    coreCollection: { value: input.coreCollection ?? null, isWritable: true },\n    mplCoreCpiSigner: {\n      value: input.mplCoreCpiSigner ?? null,\n      isWritable: false,\n    },\n    logWrapper: { value: input.logWrapper ?? null, isWritable: false },\n    compressionProgram: {\n      value: input.compressionProgram ?? null,\n      isWritable: false,\n    },\n    mplCoreProgram: { value: input.mplCoreProgram ?? null, isWritable: false },\n    systemProgram: { value: input.systemProgram ?? null, isWritable: false },\n  };\n  const accounts = originalAccounts as Record<\n    keyof typeof originalAccounts,\n    ResolvedAccount\n  >;\n\n  // Original args.\n  const args = { ...input };\n\n  // Resolve default values.\n  if (!accounts.treeConfig.value) {\n    accounts.treeConfig.value = await findTreeConfigPda({\n      merkleTree: expectAddress(accounts.merkleTree.value),\n    });\n  }\n  if (!accounts.mplCoreCpiSigner.value) {\n    if (accounts.coreCollection.value) {\n      accounts.mplCoreCpiSigner.value =\n        'CbNY3JiXdXNE9tPNEk1aRZVEkWdj2v7kfJLNQwZZgpXk' as Address<'CbNY3JiXdXNE9tPNEk1aRZVEkWdj2v7kfJLNQwZZgpXk'>;\n    }\n  }\n  if (!accounts.logWrapper.value) {\n    accounts.logWrapper.value =\n      'mnoopTCrg4p8ry25e4bcWA9XZjbNjMTfgYVGGEdRsf3' as Address<'mnoopTCrg4p8ry25e4bcWA9XZjbNjMTfgYVGGEdRsf3'>;\n  }\n  if (!accounts.compressionProgram.value) {\n    accounts.compressionProgram.value =\n      'mcmt6YrQEMKw8Mw43FmpRLmf7BqRnFMKmAcbxE3xkAW' as Address<'mcmt6YrQEMKw8Mw43FmpRLmf7BqRnFMKmAcbxE3xkAW'>;\n  }\n  if (!accounts.mplCoreProgram.value) {\n    accounts.mplCoreProgram.value =\n      'CoREENxT6tW1HoK8ypY1SxRMZTcVPm7R94rH4PZNhX7d' as Address<'CoREENxT6tW1HoK8ypY1SxRMZTcVPm7R94rH4PZNhX7d'>;\n  }\n  if (!accounts.systemProgram.value) {\n    accounts.systemProgram.value =\n      '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>;\n  }\n\n  // Remaining accounts.\n  const remainingAccounts: AccountMeta[] = (args.proof ?? []).map(\n    (address) => ({ address, role: AccountRole.READONLY })\n  );\n\n  const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n  return Object.freeze({\n    accounts: [\n      getAccountMeta(accounts.treeConfig),\n      getAccountMeta(accounts.payer),\n      getAccountMeta(accounts.authority),\n      getAccountMeta(accounts.leafOwner),\n      getAccountMeta(accounts.leafDelegate),\n      getAccountMeta(accounts.merkleTree),\n      getAccountMeta(accounts.coreCollection),\n      getAccountMeta(accounts.mplCoreCpiSigner),\n      getAccountMeta(accounts.logWrapper),\n      getAccountMeta(accounts.compressionProgram),\n      getAccountMeta(accounts.mplCoreProgram),\n      getAccountMeta(accounts.systemProgram),\n      ...remainingAccounts,\n    ],\n    data: getBurnV2InstructionDataEncoder().encode(\n      args as BurnV2InstructionDataArgs\n    ),\n    programAddress,\n  } as BurnV2Instruction<\n    TProgramAddress,\n    TAccountTreeConfig,\n    TAccountPayer,\n    TAccountAuthority,\n    TAccountLeafOwner,\n    TAccountLeafDelegate,\n    TAccountMerkleTree,\n    TAccountCoreCollection,\n    TAccountMplCoreCpiSigner,\n    TAccountLogWrapper,\n    TAccountCompressionProgram,\n    TAccountMplCoreProgram,\n    TAccountSystemProgram\n  >);\n}\n\nexport type BurnV2Input<\n  TAccountTreeConfig extends string = string,\n  TAccountPayer extends string = string,\n  TAccountAuthority extends string = string,\n  TAccountLeafOwner extends string = string,\n  TAccountLeafDelegate extends string = string,\n  TAccountMerkleTree extends string = string,\n  TAccountCoreCollection extends string = string,\n  TAccountMplCoreCpiSigner extends string = string,\n  TAccountLogWrapper extends string = string,\n  TAccountCompressionProgram extends string = string,\n  TAccountMplCoreProgram extends string = string,\n  TAccountSystemProgram extends string = string,\n> = {\n  treeConfig: Address<TAccountTreeConfig>;\n  payer: TransactionSigner<TAccountPayer>;\n  /**\n   * Optional authority, defaults to `payer`.  Must be either\n   * the leaf owner or collection collection permanent burn delegate.\n   */\n  authority?: TransactionSigner<TAccountAuthority>;\n  leafOwner: Address<TAccountLeafOwner>;\n  /** Defaults to `leaf_owner` */\n  leafDelegate?: Address<TAccountLeafDelegate>;\n  merkleTree: Address<TAccountMerkleTree>;\n  coreCollection?: Address<TAccountCoreCollection>;\n  mplCoreCpiSigner?: Address<TAccountMplCoreCpiSigner>;\n  logWrapper?: Address<TAccountLogWrapper>;\n  compressionProgram?: Address<TAccountCompressionProgram>;\n  mplCoreProgram?: Address<TAccountMplCoreProgram>;\n  systemProgram?: Address<TAccountSystemProgram>;\n  root: BurnV2InstructionDataArgs['root'];\n  dataHash: BurnV2InstructionDataArgs['dataHash'];\n  creatorHash: BurnV2InstructionDataArgs['creatorHash'];\n  assetDataHash?: BurnV2InstructionDataArgs['assetDataHash'];\n  flags?: BurnV2InstructionDataArgs['flags'];\n  nonce: BurnV2InstructionDataArgs['nonce'];\n  index: BurnV2InstructionDataArgs['index'];\n  proof?: Array<Address>;\n};\n\nexport function getBurnV2Instruction<\n  TAccountTreeConfig extends string,\n  TAccountPayer extends string,\n  TAccountAuthority extends string,\n  TAccountLeafOwner extends string,\n  TAccountLeafDelegate extends string,\n  TAccountMerkleTree extends string,\n  TAccountCoreCollection extends string,\n  TAccountMplCoreCpiSigner extends string,\n  TAccountLogWrapper extends string,\n  TAccountCompressionProgram extends string,\n  TAccountMplCoreProgram extends string,\n  TAccountSystemProgram extends string,\n  TProgramAddress extends Address = typeof MPL_BUBBLEGUM_PROGRAM_ADDRESS,\n>(\n  input: BurnV2Input<\n    TAccountTreeConfig,\n    TAccountPayer,\n    TAccountAuthority,\n    TAccountLeafOwner,\n    TAccountLeafDelegate,\n    TAccountMerkleTree,\n    TAccountCoreCollection,\n    TAccountMplCoreCpiSigner,\n    TAccountLogWrapper,\n    TAccountCompressionProgram,\n    TAccountMplCoreProgram,\n    TAccountSystemProgram\n  >,\n  config?: { programAddress?: TProgramAddress }\n): BurnV2Instruction<\n  TProgramAddress,\n  TAccountTreeConfig,\n  TAccountPayer,\n  TAccountAuthority,\n  TAccountLeafOwner,\n  TAccountLeafDelegate,\n  TAccountMerkleTree,\n  TAccountCoreCollection,\n  TAccountMplCoreCpiSigner,\n  TAccountLogWrapper,\n  TAccountCompressionProgram,\n  TAccountMplCoreProgram,\n  TAccountSystemProgram\n> {\n  // Program address.\n  const programAddress =\n    config?.programAddress ?? MPL_BUBBLEGUM_PROGRAM_ADDRESS;\n\n  // Original accounts.\n  const originalAccounts = {\n    treeConfig: { value: input.treeConfig ?? null, isWritable: true },\n    payer: { value: input.payer ?? null, isWritable: true },\n    authority: { value: input.authority ?? null, isWritable: false },\n    leafOwner: { value: input.leafOwner ?? null, isWritable: false },\n    leafDelegate: { value: input.leafDelegate ?? null, isWritable: false },\n    merkleTree: { value: input.merkleTree ?? null, isWritable: true },\n    coreCollection: { value: input.coreCollection ?? null, isWritable: true },\n    mplCoreCpiSigner: {\n      value: input.mplCoreCpiSigner ?? null,\n      isWritable: false,\n    },\n    logWrapper: { value: input.logWrapper ?? null, isWritable: false },\n    compressionProgram: {\n      value: input.compressionProgram ?? null,\n      isWritable: false,\n    },\n    mplCoreProgram: { value: input.mplCoreProgram ?? null, isWritable: false },\n    systemProgram: { value: input.systemProgram ?? null, isWritable: false },\n  };\n  const accounts = originalAccounts as Record<\n    keyof typeof originalAccounts,\n    ResolvedAccount\n  >;\n\n  // Original args.\n  const args = { ...input };\n\n  // Resolve default values.\n  if (!accounts.mplCoreCpiSigner.value) {\n    if (accounts.coreCollection.value) {\n      accounts.mplCoreCpiSigner.value =\n        'CbNY3JiXdXNE9tPNEk1aRZVEkWdj2v7kfJLNQwZZgpXk' as Address<'CbNY3JiXdXNE9tPNEk1aRZVEkWdj2v7kfJLNQwZZgpXk'>;\n    }\n  }\n  if (!accounts.logWrapper.value) {\n    accounts.logWrapper.value =\n      'mnoopTCrg4p8ry25e4bcWA9XZjbNjMTfgYVGGEdRsf3' as Address<'mnoopTCrg4p8ry25e4bcWA9XZjbNjMTfgYVGGEdRsf3'>;\n  }\n  if (!accounts.compressionProgram.value) {\n    accounts.compressionProgram.value =\n      'mcmt6YrQEMKw8Mw43FmpRLmf7BqRnFMKmAcbxE3xkAW' as Address<'mcmt6YrQEMKw8Mw43FmpRLmf7BqRnFMKmAcbxE3xkAW'>;\n  }\n  if (!accounts.mplCoreProgram.value) {\n    accounts.mplCoreProgram.value =\n      'CoREENxT6tW1HoK8ypY1SxRMZTcVPm7R94rH4PZNhX7d' as Address<'CoREENxT6tW1HoK8ypY1SxRMZTcVPm7R94rH4PZNhX7d'>;\n  }\n  if (!accounts.systemProgram.value) {\n    accounts.systemProgram.value =\n      '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>;\n  }\n\n  // Remaining accounts.\n  const remainingAccounts: AccountMeta[] = (args.proof ?? []).map(\n    (address) => ({ address, role: AccountRole.READONLY })\n  );\n\n  const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n  return Object.freeze({\n    accounts: [\n      getAccountMeta(accounts.treeConfig),\n      getAccountMeta(accounts.payer),\n      getAccountMeta(accounts.authority),\n      getAccountMeta(accounts.leafOwner),\n      getAccountMeta(accounts.leafDelegate),\n      getAccountMeta(accounts.merkleTree),\n      getAccountMeta(accounts.coreCollection),\n      getAccountMeta(accounts.mplCoreCpiSigner),\n      getAccountMeta(accounts.logWrapper),\n      getAccountMeta(accounts.compressionProgram),\n      getAccountMeta(accounts.mplCoreProgram),\n      getAccountMeta(accounts.systemProgram),\n      ...remainingAccounts,\n    ],\n    data: getBurnV2InstructionDataEncoder().encode(\n      args as BurnV2InstructionDataArgs\n    ),\n    programAddress,\n  } as BurnV2Instruction<\n    TProgramAddress,\n    TAccountTreeConfig,\n    TAccountPayer,\n    TAccountAuthority,\n    TAccountLeafOwner,\n    TAccountLeafDelegate,\n    TAccountMerkleTree,\n    TAccountCoreCollection,\n    TAccountMplCoreCpiSigner,\n    TAccountLogWrapper,\n    TAccountCompressionProgram,\n    TAccountMplCoreProgram,\n    TAccountSystemProgram\n  >);\n}\n\nexport type ParsedBurnV2Instruction<\n  TProgram extends string = typeof MPL_BUBBLEGUM_PROGRAM_ADDRESS,\n  TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n  programAddress: Address<TProgram>;\n  accounts: {\n    treeConfig: TAccountMetas[0];\n    payer: TAccountMetas[1];\n    /**\n     * Optional authority, defaults to `payer`.  Must be either\n     * the leaf owner or collection collection permanent burn delegate.\n     */\n    authority?: TAccountMetas[2] | undefined;\n    leafOwner: TAccountMetas[3];\n    /** Defaults to `leaf_owner` */\n    leafDelegate?: TAccountMetas[4] | undefined;\n    merkleTree: TAccountMetas[5];\n    coreCollection?: TAccountMetas[6] | undefined;\n    mplCoreCpiSigner?: TAccountMetas[7] | undefined;\n    logWrapper: TAccountMetas[8];\n    compressionProgram: TAccountMetas[9];\n    mplCoreProgram: TAccountMetas[10];\n    systemProgram: TAccountMetas[11];\n  };\n  data: BurnV2InstructionData;\n};\n\nexport function parseBurnV2Instruction<\n  TProgram extends string,\n  TAccountMetas extends readonly AccountMeta[],\n>(\n  instruction: Instruction<TProgram> &\n    InstructionWithAccounts<TAccountMetas> &\n    InstructionWithData<ReadonlyUint8Array>\n): ParsedBurnV2Instruction<TProgram, TAccountMetas> {\n  if (instruction.accounts.length < 12) {\n    // TODO: Coded error.\n    throw new Error('Not enough accounts');\n  }\n  let accountIndex = 0;\n  const getNextAccount = () => {\n    const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n    accountIndex += 1;\n    return accountMeta;\n  };\n  const getNextOptionalAccount = () => {\n    const accountMeta = getNextAccount();\n    return accountMeta.address === MPL_BUBBLEGUM_PROGRAM_ADDRESS\n      ? undefined\n      : accountMeta;\n  };\n  return {\n    programAddress: instruction.programAddress,\n    accounts: {\n      treeConfig: getNextAccount(),\n      payer: getNextAccount(),\n      authority: getNextOptionalAccount(),\n      leafOwner: getNextAccount(),\n      leafDelegate: getNextOptionalAccount(),\n      merkleTree: getNextAccount(),\n      coreCollection: getNextOptionalAccount(),\n      mplCoreCpiSigner: getNextOptionalAccount(),\n      logWrapper: getNextAccount(),\n      compressionProgram: getNextAccount(),\n      mplCoreProgram: getNextAccount(),\n      systemProgram: getNextAccount(),\n    },\n    data: getBurnV2InstructionDataDecoder().decode(instruction.data),\n  };\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  combineCodec,\n  fixDecoderSize,\n  fixEncoderSize,\n  getBytesDecoder,\n  getBytesEncoder,\n  getStructDecoder,\n  getStructEncoder,\n  transformEncoder,\n  type AccountMeta,\n  type AccountSignerMeta,\n  type Address,\n  type FixedSizeCodec,\n  type FixedSizeDecoder,\n  type FixedSizeEncoder,\n  type Instruction,\n  type InstructionWithAccounts,\n  type InstructionWithData,\n  type ReadonlyAccount,\n  type ReadonlyUint8Array,\n  type TransactionSigner,\n  type WritableAccount,\n  type WritableSignerAccount,\n} from '@solana/kit';\nimport { findTreeConfigPda } from '../pdas';\nimport { MPL_BUBBLEGUM_PROGRAM_ADDRESS } from '../programs';\nimport {\n  expectAddress,\n  getAccountMetaFactory,\n  type ResolvedAccount,\n} from '../shared';\n\nexport const CANCEL_REDEEM_DISCRIMINATOR = new Uint8Array([\n  111, 76, 232, 50, 39, 175, 48, 242,\n]);\n\nexport function getCancelRedeemDiscriminatorBytes() {\n  return fixEncoderSize(getBytesEncoder(), 8).encode(\n    CANCEL_REDEEM_DISCRIMINATOR\n  );\n}\n\nexport type CancelRedeemInstruction<\n  TProgram extends string = typeof MPL_BUBBLEGUM_PROGRAM_ADDRESS,\n  TAccountTreeConfig extends string | AccountMeta<string> = string,\n  TAccountLeafOwner extends string | AccountMeta<string> = string,\n  TAccountMerkleTree extends string | AccountMeta<string> = string,\n  TAccountVoucher extends string | AccountMeta<string> = string,\n  TAccountLogWrapper extends\n    | string\n    | AccountMeta<string> = 'noopb9bkMVfRPU8AsbpTUg8AQkHtKwMYZiFUjNRtMmV',\n  TAccountCompressionProgram extends\n    | string\n    | AccountMeta<string> = 'cmtDvXumGCrqC1Age74AVPhSRVXJMd8PJS91L8KbNCK',\n  TAccountSystemProgram extends\n    | string\n    | AccountMeta<string> = '11111111111111111111111111111111',\n  TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n  InstructionWithData<ReadonlyUint8Array> &\n  InstructionWithAccounts<\n    [\n      TAccountTreeConfig extends string\n        ? ReadonlyAccount<TAccountTreeConfig>\n        : TAccountTreeConfig,\n      TAccountLeafOwner extends string\n        ? WritableSignerAccount<TAccountLeafOwner> &\n            AccountSignerMeta<TAccountLeafOwner>\n        : TAccountLeafOwner,\n      TAccountMerkleTree extends string\n        ? WritableAccount<TAccountMerkleTree>\n        : TAccountMerkleTree,\n      TAccountVoucher extends string\n        ? WritableAccount<TAccountVoucher>\n        : TAccountVoucher,\n      TAccountLogWrapper extends string\n        ? ReadonlyAccount<TAccountLogWrapper>\n        : TAccountLogWrapper,\n      TAccountCompressionProgram extends string\n        ? ReadonlyAccount<TAccountCompressionProgram>\n        : TAccountCompressionProgram,\n      TAccountSystemProgram extends string\n        ? ReadonlyAccount<TAccountSystemProgram>\n        : TAccountSystemProgram,\n      ...TRemainingAccounts,\n    ]\n  >;\n\nexport type CancelRedeemInstructionData = {\n  discriminator: ReadonlyUint8Array;\n  root: ReadonlyUint8Array;\n};\n\nexport type CancelRedeemInstructionDataArgs = { root: ReadonlyUint8Array };\n\nexport function getCancelRedeemInstructionDataEncoder(): FixedSizeEncoder<CancelRedeemInstructionDataArgs> {\n  return transformEncoder(\n    getStructEncoder([\n      ['discriminator', fixEncoderSize(getBytesEncoder(), 8)],\n      ['root', fixEncoderSize(getBytesEncoder(), 32)],\n    ]),\n    (value) => ({ ...value, discriminator: CANCEL_REDEEM_DISCRIMINATOR })\n  );\n}\n\nexport function getCancelRedeemInstructionDataDecoder(): FixedSizeDecoder<CancelRedeemInstructionData> {\n  return getStructDecoder([\n    ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n    ['root', fixDecoderSize(getBytesDecoder(), 32)],\n  ]);\n}\n\nexport function getCancelRedeemInstructionDataCodec(): FixedSizeCodec<\n  CancelRedeemInstructionDataArgs,\n  CancelRedeemInstructionData\n> {\n  return combineCodec(\n    getCancelRedeemInstructionDataEncoder(),\n    getCancelRedeemInstructionDataDecoder()\n  );\n}\n\nexport type CancelRedeemAsyncInput<\n  TAccountTreeConfig extends string = string,\n  TAccountLeafOwner extends string = string,\n  TAccountMerkleTree extends string = string,\n  TAccountVoucher extends string = string,\n  TAccountLogWrapper extends string = string,\n  TAccountCompressionProgram extends string = string,\n  TAccountSystemProgram extends string = string,\n> = {\n  treeConfig?: Address<TAccountTreeConfig>;\n  leafOwner: TransactionSigner<TAccountLeafOwner>;\n  merkleTree: Address<TAccountMerkleTree>;\n  voucher: Address<TAccountVoucher>;\n  logWrapper?: Address<TAccountLogWrapper>;\n  compressionProgram?: Address<TAccountCompressionProgram>;\n  systemProgram?: Address<TAccountSystemProgram>;\n  root: CancelRedeemInstructionDataArgs['root'];\n};\n\nexport async function getCancelRedeemInstructionAsync<\n  TAccountTreeConfig extends string,\n  TAccountLeafOwner extends string,\n  TAccountMerkleTree extends string,\n  TAccountVoucher extends string,\n  TAccountLogWrapper extends string,\n  TAccountCompressionProgram extends string,\n  TAccountSystemProgram extends string,\n  TProgramAddress extends Address = typeof MPL_BUBBLEGUM_PROGRAM_ADDRESS,\n>(\n  input: CancelRedeemAsyncInput<\n    TAccountTreeConfig,\n    TAccountLeafOwner,\n    TAccountMerkleTree,\n    TAccountVoucher,\n    TAccountLogWrapper,\n    TAccountCompressionProgram,\n    TAccountSystemProgram\n  >,\n  config?: { programAddress?: TProgramAddress }\n): Promise<\n  CancelRedeemInstruction<\n    TProgramAddress,\n    TAccountTreeConfig,\n    TAccountLeafOwner,\n    TAccountMerkleTree,\n    TAccountVoucher,\n    TAccountLogWrapper,\n    TAccountCompressionProgram,\n    TAccountSystemProgram\n  >\n> {\n  // Program address.\n  const programAddress =\n    config?.programAddress ?? MPL_BUBBLEGUM_PROGRAM_ADDRESS;\n\n  // Original accounts.\n  const originalAccounts = {\n    treeConfig: { value: input.treeConfig ?? null, isWritable: false },\n    leafOwner: { value: input.leafOwner ?? null, isWritable: true },\n    merkleTree: { value: input.merkleTree ?? null, isWritable: true },\n    voucher: { value: input.voucher ?? null, isWritable: true },\n    logWrapper: { value: input.logWrapper ?? null, isWritable: false },\n    compressionProgram: {\n      value: input.compressionProgram ?? null,\n      isWritable: false,\n    },\n    systemProgram: { value: input.systemProgram ?? null, isWritable: false },\n  };\n  const accounts = originalAccounts as Record<\n    keyof typeof originalAccounts,\n    ResolvedAccount\n  >;\n\n  // Original args.\n  const args = { ...input };\n\n  // Resolve default values.\n  if (!accounts.treeConfig.value) {\n    accounts.treeConfig.value = await findTreeConfigPda({\n      merkleTree: expectAddress(accounts.merkleTree.value),\n    });\n  }\n  if (!accounts.logWrapper.value) {\n    accounts.logWrapper.value =\n      'noopb9bkMVfRPU8AsbpTUg8AQkHtKwMYZiFUjNRtMmV' as Address<'noopb9bkMVfRPU8AsbpTUg8AQkHtKwMYZiFUjNRtMmV'>;\n  }\n  if (!accounts.compressionProgram.value) {\n    accounts.compressionProgram.value =\n      'cmtDvXumGCrqC1Age74AVPhSRVXJMd8PJS91L8KbNCK' as Address<'cmtDvXumGCrqC1Age74AVPhSRVXJMd8PJS91L8KbNCK'>;\n  }\n  if (!accounts.systemProgram.value) {\n    accounts.systemProgram.value =\n      '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>;\n  }\n\n  const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n  return Object.freeze({\n    accounts: [\n      getAccountMeta(accounts.treeConfig),\n      getAccountMeta(accounts.leafOwner),\n      getAccountMeta(accounts.merkleTree),\n      getAccountMeta(accounts.voucher),\n      getAccountMeta(accounts.logWrapper),\n      getAccountMeta(accounts.compressionProgram),\n      getAccountMeta(accounts.systemProgram),\n    ],\n    data: getCancelRedeemInstructionDataEncoder().encode(\n      args as CancelRedeemInstructionDataArgs\n    ),\n    programAddress,\n  } as CancelRedeemInstruction<\n    TProgramAddress,\n    TAccountTreeConfig,\n    TAccountLeafOwner,\n    TAccountMerkleTree,\n    TAccountVoucher,\n    TAccountLogWrapper,\n    TAccountCompressionProgram,\n    TAccountSystemProgram\n  >);\n}\n\nexport type CancelRedeemInput<\n  TAccountTreeConfig extends string = string,\n  TAccountLeafOwner extends string = string,\n  TAccountMerkleTree extends string = string,\n  TAccountVoucher extends string = string,\n  TAccountLogWrapper extends string = string,\n  TAccountCompressionProgram extends string = string,\n  TAccountSystemProgram extends string = string,\n> = {\n  treeConfig: Address<TAccountTreeConfig>;\n  leafOwner: TransactionSigner<TAccountLeafOwner>;\n  merkleTree: Address<TAccountMerkleTree>;\n  voucher: Address<TAccountVoucher>;\n  logWrapper?: Address<TAccountLogWrapper>;\n  compressionProgram?: Address<TAccountCompressionProgram>;\n  systemProgram?: Address<TAccountSystemProgram>;\n  root: CancelRedeemInstructionDataArgs['root'];\n};\n\nexport function getCancelRedeemInstruction<\n  TAccountTreeConfig extends string,\n  TAccountLeafOwner extends string,\n  TAccountMerkleTree extends string,\n  TAccountVoucher extends string,\n  TAccountLogWrapper extends string,\n  TAccountCompressionProgram extends string,\n  TAccountSystemProgram extends string,\n  TProgramAddress extends Address = typeof MPL_BUBBLEGUM_PROGRAM_ADDRESS,\n>(\n  input: CancelRedeemInput<\n    TAccountTreeConfig,\n    TAccountLeafOwner,\n    TAccountMerkleTree,\n    TAccountVoucher,\n    TAccountLogWrapper,\n    TAccountCompressionProgram,\n    TAccountSystemProgram\n  >,\n  config?: { programAddress?: TProgramAddress }\n): CancelRedeemInstruction<\n  TProgramAddress,\n  TAccountTreeConfig,\n  TAccountLeafOwner,\n  TAccountMerkleTree,\n  TAccountVoucher,\n  TAccountLogWrapper,\n  TAccountCompressionProgram,\n  TAccountSystemProgram\n> {\n  // Program address.\n  const programAddress =\n    config?.programAddress ?? MPL_BUBBLEGUM_PROGRAM_ADDRESS;\n\n  // Original accounts.\n  const originalAccounts = {\n    treeConfig: { value: input.treeConfig ?? null, isWritable: false },\n    leafOwner: { value: input.leafOwner ?? null, isWritable: true },\n    merkleTree: { value: input.merkleTree ?? null, isWritable: true },\n    voucher: { value: input.voucher ?? null, isWritable: true },\n    logWrapper: { value: input.logWrapper ?? null, isWritable: false },\n    compressionProgram: {\n      value: input.compressionProgram ?? null,\n      isWritable: false,\n    },\n    systemProgram: { value: input.systemProgram ?? null, isWritable: false },\n  };\n  const accounts = originalAccounts as Record<\n    keyof typeof originalAccounts,\n    ResolvedAccount\n  >;\n\n  // Original args.\n  const args = { ...input };\n\n  // Resolve default values.\n  if (!accounts.logWrapper.value) {\n    accounts.logWrapper.value =\n      'noopb9bkMVfRPU8AsbpTUg8AQkHtKwMYZiFUjNRtMmV' as Address<'noopb9bkMVfRPU8AsbpTUg8AQkHtKwMYZiFUjNRtMmV'>;\n  }\n  if (!accounts.compressionProgram.value) {\n    accounts.compressionProgram.value =\n      'cmtDvXumGCrqC1Age74AVPhSRVXJMd8PJS91L8KbNCK' as Address<'cmtDvXumGCrqC1Age74AVPhSRVXJMd8PJS91L8KbNCK'>;\n  }\n  if (!accounts.systemProgram.value) {\n    accounts.systemProgram.value =\n      '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>;\n  }\n\n  const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n  return Object.freeze({\n    accounts: [\n      getAccountMeta(accounts.treeConfig),\n      getAccountMeta(accounts.leafOwner),\n      getAccountMeta(accounts.merkleTree),\n      getAccountMeta(accounts.voucher),\n      getAccountMeta(accounts.logWrapper),\n      getAccountMeta(accounts.compressionProgram),\n      getAccountMeta(accounts.systemProgram),\n    ],\n    data: getCancelRedeemInstructionDataEncoder().encode(\n      args as CancelRedeemInstructionDataArgs\n    ),\n    programAddress,\n  } as CancelRedeemInstruction<\n    TProgramAddress,\n    TAccountTreeConfig,\n    TAccountLeafOwner,\n    TAccountMerkleTree,\n    TAccountVoucher,\n    TAccountLogWrapper,\n    TAccountCompressionProgram,\n    TAccountSystemProgram\n  >);\n}\n\nexport type ParsedCancelRedeemInstruction<\n  TProgram extends string = typeof MPL_BUBBLEGUM_PROGRAM_ADDRESS,\n  TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n  programAddress: Address<TProgram>;\n  accounts: {\n    treeConfig: TAccountMetas[0];\n    leafOwner: TAccountMetas[1];\n    merkleTree: TAccountMetas[2];\n    voucher: TAccountMetas[3];\n    logWrapper: TAccountMetas[4];\n    compressionProgram: TAccountMetas[5];\n    systemProgram: TAccountMetas[6];\n  };\n  data: CancelRedeemInstructionData;\n};\n\nexport function parseCancelRedeemInstruction<\n  TProgram extends string,\n  TAccountMetas extends readonly AccountMeta[],\n>(\n  instruction: Instruction<TProgram> &\n    InstructionWithAccounts<TAccountMetas> &\n    InstructionWithData<ReadonlyUint8Array>\n): ParsedCancelRedeemInstruction<TProgram, TAccountMetas> {\n  if (instruction.accounts.length < 7) {\n    // TODO: Coded error.\n    throw new Error('Not enough accounts');\n  }\n  let accountIndex = 0;\n  const getNextAccount = () => {\n    const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n    accountIndex += 1;\n    return accountMeta;\n  };\n  return {\n    programAddress: instruction.programAddress,\n    accounts: {\n      treeConfig: getNextAccount(),\n      leafOwner: getNextAccount(),\n      merkleTree: getNextAccount(),\n      voucher: getNextAccount(),\n      logWrapper: getNextAccount(),\n      compressionProgram: getNextAccount(),\n      systemProgram: getNextAccount(),\n    },\n    data: getCancelRedeemInstructionDataDecoder().decode(instruction.data),\n  };\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  combineCodec,\n  fixDecoderSize,\n  fixEncoderSize,\n  getBytesDecoder,\n  getBytesEncoder,\n  getStructDecoder,\n  getStructEncoder,\n  transformEncoder,\n  type AccountMeta,\n  type Address,\n  type FixedSizeCodec,\n  type FixedSizeDecoder,\n  type FixedSizeEncoder,\n  type Instruction,\n  type InstructionWithAccounts,\n  type InstructionWithData,\n  type ReadonlyUint8Array,\n  type WritableAccount,\n} from '@solana/kit';\nimport { MPL_BUBBLEGUM_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\n\nexport const COLLECT_V2_DISCRIMINATOR = new Uint8Array([\n  21, 11, 159, 47, 4, 195, 106, 56,\n]);\n\nexport function getCollectV2DiscriminatorBytes() {\n  return fixEncoderSize(getBytesEncoder(), 8).encode(COLLECT_V2_DISCRIMINATOR);\n}\n\nexport type CollectV2Instruction<\n  TProgram extends string = typeof MPL_BUBBLEGUM_PROGRAM_ADDRESS,\n  TAccountTreeConfig extends string | AccountMeta<string> = string,\n  TAccountDestination extends\n    | string\n    | AccountMeta<string> = '2dgJVPC5fjLTBTmMvKDRig9JJUGK2Fgwr3EHShFxckhv',\n  TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n  InstructionWithData<ReadonlyUint8Array> &\n  InstructionWithAccounts<\n    [\n      TAccountTreeConfig extends string\n        ? WritableAccount<TAccountTreeConfig>\n        : TAccountTreeConfig,\n      TAccountDestination extends string\n        ? WritableAccount<TAccountDestination>\n        : TAccountDestination,\n      ...TRemainingAccounts,\n    ]\n  >;\n\nexport type CollectV2InstructionData = { discriminator: ReadonlyUint8Array };\n\nexport type CollectV2InstructionDataArgs = {};\n\nexport function getCollectV2InstructionDataEncoder(): FixedSizeEncoder<CollectV2InstructionDataArgs> {\n  return transformEncoder(\n    getStructEncoder([['discriminator', fixEncoderSize(getBytesEncoder(), 8)]]),\n    (value) => ({ ...value, discriminator: COLLECT_V2_DISCRIMINATOR })\n  );\n}\n\nexport function getCollectV2InstructionDataDecoder(): FixedSizeDecoder<CollectV2InstructionData> {\n  return getStructDecoder([\n    ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n  ]);\n}\n\nexport function getCollectV2InstructionDataCodec(): FixedSizeCodec<\n  CollectV2InstructionDataArgs,\n  CollectV2InstructionData\n> {\n  return combineCodec(\n    getCollectV2InstructionDataEncoder(),\n    getCollectV2InstructionDataDecoder()\n  );\n}\n\nexport type CollectV2Input<\n  TAccountTreeConfig extends string = string,\n  TAccountDestination extends string = string,\n> = {\n  treeConfig: Address<TAccountTreeConfig>;\n  destination?: Address<TAccountDestination>;\n};\n\nexport function getCollectV2Instruction<\n  TAccountTreeConfig extends string,\n  TAccountDestination extends string,\n  TProgramAddress extends Address = typeof MPL_BUBBLEGUM_PROGRAM_ADDRESS,\n>(\n  input: CollectV2Input<TAccountTreeConfig, TAccountDestination>,\n  config?: { programAddress?: TProgramAddress }\n): CollectV2Instruction<\n  TProgramAddress,\n  TAccountTreeConfig,\n  TAccountDestination\n> {\n  // Program address.\n  const programAddress =\n    config?.programAddress ?? MPL_BUBBLEGUM_PROGRAM_ADDRESS;\n\n  // Original accounts.\n  const originalAccounts = {\n    treeConfig: { value: input.treeConfig ?? null, isWritable: true },\n    destination: { value: input.destination ?? null, isWritable: true },\n  };\n  const accounts = originalAccounts as Record<\n    keyof typeof originalAccounts,\n    ResolvedAccount\n  >;\n\n  // Resolve default values.\n  if (!accounts.destination.value) {\n    accounts.destination.value =\n      '2dgJVPC5fjLTBTmMvKDRig9JJUGK2Fgwr3EHShFxckhv' as Address<'2dgJVPC5fjLTBTmMvKDRig9JJUGK2Fgwr3EHShFxckhv'>;\n  }\n\n  const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n  return Object.freeze({\n    accounts: [\n      getAccountMeta(accounts.treeConfig),\n      getAccountMeta(accounts.destination),\n    ],\n    data: getCollectV2InstructionDataEncoder().encode({}),\n    programAddress,\n  } as CollectV2Instruction<\n    TProgramAddress,\n    TAccountTreeConfig,\n    TAccountDestination\n  >);\n}\n\nexport type ParsedCollectV2Instruction<\n  TProgram extends string = typeof MPL_BUBBLEGUM_PROGRAM_ADDRESS,\n  TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n  programAddress: Address<TProgram>;\n  accounts: {\n    treeConfig: TAccountMetas[0];\n    destination: TAccountMetas[1];\n  };\n  data: CollectV2InstructionData;\n};\n\nexport function parseCollectV2Instruction<\n  TProgram extends string,\n  TAccountMetas extends readonly AccountMeta[],\n>(\n  instruction: Instruction<TProgram> &\n    InstructionWithAccounts<TAccountMetas> &\n    InstructionWithData<ReadonlyUint8Array>\n): ParsedCollectV2Instruction<TProgram, TAccountMetas> {\n  if (instruction.accounts.length < 2) {\n    // TODO: Coded error.\n    throw new Error('Not enough accounts');\n  }\n  let accountIndex = 0;\n  const getNextAccount = () => {\n    const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n    accountIndex += 1;\n    return accountMeta;\n  };\n  return {\n    programAddress: instruction.programAddress,\n    accounts: { treeConfig: getNextAccount(), destination: getNextAccount() },\n    data: getCollectV2InstructionDataDecoder().decode(instruction.data),\n  };\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  BASE_ACCOUNT_SIZE,\n  combineCodec,\n  fixDecoderSize,\n  fixEncoderSize,\n  getBooleanDecoder,\n  getBooleanEncoder,\n  getBytesDecoder,\n  getBytesEncoder,\n  getOptionDecoder,\n  getOptionEncoder,\n  getStructDecoder,\n  getStructEncoder,\n  getU32Decoder,\n  getU32Encoder,\n  none,\n  transformEncoder,\n  type AccountMeta,\n  type AccountSignerMeta,\n  type Address,\n  type Codec,\n  type Decoder,\n  type Encoder,\n  type Instruction,\n  type InstructionWithAccounts,\n  type InstructionWithData,\n  type Option,\n  type OptionOrNullable,\n  type ReadonlyAccount,\n  type ReadonlySignerAccount,\n  type ReadonlyUint8Array,\n  type TransactionSigner,\n  type WritableAccount,\n  type WritableSignerAccount,\n} from '@solana/kit';\nimport { getTreeConfigSize } from '../accounts';\nimport { findTreeConfigPda } from '../pdas';\nimport { MPL_BUBBLEGUM_PROGRAM_ADDRESS } from '../programs';\nimport {\n  expectAddress,\n  expectSome,\n  getAccountMetaFactory,\n  type InstructionWithByteDelta,\n  type ResolvedAccount,\n} from '../shared';\n\nexport const CREATE_TREE_CONFIG_DISCRIMINATOR = new Uint8Array([\n  165, 83, 136, 142, 89, 202, 47, 220,\n]);\n\nexport function getCreateTreeConfigDiscriminatorBytes() {\n  return fixEncoderSize(getBytesEncoder(), 8).encode(\n    CREATE_TREE_CONFIG_DISCRIMINATOR\n  );\n}\n\nexport type CreateTreeConfigInstruction<\n  TProgram extends string = typeof MPL_BUBBLEGUM_PROGRAM_ADDRESS,\n  TAccountTreeConfig extends string | AccountMeta<string> = string,\n  TAccountMerkleTree extends string | AccountMeta<string> = string,\n  TAccountPayer extends string | AccountMeta<string> = string,\n  TAccountTreeCreator extends string | AccountMeta<string> = string,\n  TAccountLogWrapper extends\n    | string\n    | AccountMeta<string> = 'noopb9bkMVfRPU8AsbpTUg8AQkHtKwMYZiFUjNRtMmV',\n  TAccountCompressionProgram extends\n    | string\n    | AccountMeta<string> = 'cmtDvXumGCrqC1Age74AVPhSRVXJMd8PJS91L8KbNCK',\n  TAccountSystemProgram extends\n    | string\n    | AccountMeta<string> = '11111111111111111111111111111111',\n  TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n  InstructionWithData<ReadonlyUint8Array> &\n  InstructionWithAccounts<\n    [\n      TAccountTreeConfig extends string\n        ? WritableAccount<TAccountTreeConfig>\n        : TAccountTreeConfig,\n      TAccountMerkleTree extends string\n        ? WritableAccount<TAccountMerkleTree>\n        : TAccountMerkleTree,\n      TAccountPayer extends string\n        ? WritableSignerAccount<TAccountPayer> &\n            AccountSignerMeta<TAccountPayer>\n        : TAccountPayer,\n      TAccountTreeCreator extends string\n        ? ReadonlySignerAccount<TAccountTreeCreator> &\n            AccountSignerMeta<TAccountTreeCreator>\n        : TAccountTreeCreator,\n      TAccountLogWrapper extends string\n        ? ReadonlyAccount<TAccountLogWrapper>\n        : TAccountLogWrapper,\n      TAccountCompressionProgram extends string\n        ? ReadonlyAccount<TAccountCompressionProgram>\n        : TAccountCompressionProgram,\n      TAccountSystemProgram extends string\n        ? ReadonlyAccount<TAccountSystemProgram>\n        : TAccountSystemProgram,\n      ...TRemainingAccounts,\n    ]\n  >;\n\nexport type CreateTreeConfigInstructionData = {\n  discriminator: ReadonlyUint8Array;\n  maxDepth: number;\n  maxBufferSize: number;\n  public: Option<boolean>;\n};\n\nexport type CreateTreeConfigInstructionDataArgs = {\n  maxDepth: number;\n  maxBufferSize: number;\n  public?: OptionOrNullable<boolean>;\n};\n\nexport function getCreateTreeConfigInstructionDataEncoder(): Encoder<CreateTreeConfigInstructionDataArgs> {\n  return transformEncoder(\n    getStructEncoder([\n      ['discriminator', fixEncoderSize(getBytesEncoder(), 8)],\n      ['maxDepth', getU32Encoder()],\n      ['maxBufferSize', getU32Encoder()],\n      ['public', getOptionEncoder(getBooleanEncoder())],\n    ]),\n    (value) => ({\n      ...value,\n      discriminator: CREATE_TREE_CONFIG_DISCRIMINATOR,\n      public: value.public ?? none(),\n    })\n  );\n}\n\nexport function getCreateTreeConfigInstructionDataDecoder(): Decoder<CreateTreeConfigInstructionData> {\n  return getStructDecoder([\n    ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n    ['maxDepth', getU32Decoder()],\n    ['maxBufferSize', getU32Decoder()],\n    ['public', getOptionDecoder(getBooleanDecoder())],\n  ]);\n}\n\nexport function getCreateTreeConfigInstructionDataCodec(): Codec<\n  CreateTreeConfigInstructionDataArgs,\n  CreateTreeConfigInstructionData\n> {\n  return combineCodec(\n    getCreateTreeConfigInstructionDataEncoder(),\n    getCreateTreeConfigInstructionDataDecoder()\n  );\n}\n\nexport type CreateTreeConfigAsyncInput<\n  TAccountTreeConfig extends string = string,\n  TAccountMerkleTree extends string = string,\n  TAccountPayer extends string = string,\n  TAccountTreeCreator extends string = string,\n  TAccountLogWrapper extends string = string,\n  TAccountCompressionProgram extends string = string,\n  TAccountSystemProgram extends string = string,\n> = {\n  treeConfig?: Address<TAccountTreeConfig>;\n  merkleTree: Address<TAccountMerkleTree>;\n  payer?: TransactionSigner<TAccountPayer>;\n  treeCreator: TransactionSigner<TAccountTreeCreator>;\n  logWrapper?: Address<TAccountLogWrapper>;\n  compressionProgram?: Address<TAccountCompressionProgram>;\n  systemProgram?: Address<TAccountSystemProgram>;\n  maxDepth: CreateTreeConfigInstructionDataArgs['maxDepth'];\n  maxBufferSize: CreateTreeConfigInstructionDataArgs['maxBufferSize'];\n  public?: CreateTreeConfigInstructionDataArgs['public'];\n};\n\nexport async function getCreateTreeConfigInstructionAsync<\n  TAccountTreeConfig extends string,\n  TAccountMerkleTree extends string,\n  TAccountPayer extends string,\n  TAccountTreeCreator extends string,\n  TAccountLogWrapper extends string,\n  TAccountCompressionProgram extends string,\n  TAccountSystemProgram extends string,\n  TProgramAddress extends Address = typeof MPL_BUBBLEGUM_PROGRAM_ADDRESS,\n>(\n  input: CreateTreeConfigAsyncInput<\n    TAccountTreeConfig,\n    TAccountMerkleTree,\n    TAccountPayer,\n    TAccountTreeCreator,\n    TAccountLogWrapper,\n    TAccountCompressionProgram,\n    TAccountSystemProgram\n  >,\n  config?: { programAddress?: TProgramAddress }\n): Promise<\n  CreateTreeConfigInstruction<\n    TProgramAddress,\n    TAccountTreeConfig,\n    TAccountMerkleTree,\n    TAccountPayer,\n    TAccountTreeCreator,\n    TAccountLogWrapper,\n    TAccountCompressionProgram,\n    TAccountSystemProgram\n  > &\n    InstructionWithByteDelta\n> {\n  // Program address.\n  const programAddress =\n    config?.programAddress ?? MPL_BUBBLEGUM_PROGRAM_ADDRESS;\n\n  // Original accounts.\n  const originalAccounts = {\n    treeConfig: { value: input.treeConfig ?? null, isWritable: true },\n    merkleTree: { value: input.merkleTree ?? null, isWritable: true },\n    payer: { value: input.payer ?? null, isWritable: true },\n    treeCreator: { value: input.treeCreator ?? null, isWritable: false },\n    logWrapper: { value: input.logWrapper ?? null, isWritable: false },\n    compressionProgram: {\n      value: input.compressionProgram ?? null,\n      isWritable: false,\n    },\n    systemProgram: { value: input.systemProgram ?? null, isWritable: false },\n  };\n  const accounts = originalAccounts as Record<\n    keyof typeof originalAccounts,\n    ResolvedAccount\n  >;\n\n  // Original args.\n  const args = { ...input };\n\n  // Resolve default values.\n  if (!accounts.treeConfig.value) {\n    accounts.treeConfig.value = await findTreeConfigPda({\n      merkleTree: expectAddress(accounts.merkleTree.value),\n    });\n  }\n  if (!accounts.payer.value) {\n    accounts.payer.value = expectSome(accounts.treeCreator.value);\n  }\n  if (!accounts.logWrapper.value) {\n    accounts.logWrapper.value =\n      'noopb9bkMVfRPU8AsbpTUg8AQkHtKwMYZiFUjNRtMmV' as Address<'noopb9bkMVfRPU8AsbpTUg8AQkHtKwMYZiFUjNRtMmV'>;\n  }\n  if (!accounts.compressionProgram.value) {\n    accounts.compressionProgram.value =\n      'cmtDvXumGCrqC1Age74AVPhSRVXJMd8PJS91L8KbNCK' as Address<'cmtDvXumGCrqC1Age74AVPhSRVXJMd8PJS91L8KbNCK'>;\n  }\n  if (!accounts.systemProgram.value) {\n    accounts.systemProgram.value =\n      '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>;\n  }\n\n  // Bytes created or reallocated by the instruction.\n  const byteDelta: number = [getTreeConfigSize() + BASE_ACCOUNT_SIZE].reduce(\n    (a, b) => a + b,\n    0\n  );\n\n  const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n  return Object.freeze({\n    accounts: [\n      getAccountMeta(accounts.treeConfig),\n      getAccountMeta(accounts.merkleTree),\n      getAccountMeta(accounts.payer),\n      getAccountMeta(accounts.treeCreator),\n      getAccountMeta(accounts.logWrapper),\n      getAccountMeta(accounts.compressionProgram),\n      getAccountMeta(accounts.systemProgram),\n    ],\n    byteDelta,\n    data: getCreateTreeConfigInstructionDataEncoder().encode(\n      args as CreateTreeConfigInstructionDataArgs\n    ),\n    programAddress,\n  } as CreateTreeConfigInstruction<\n    TProgramAddress,\n    TAccountTreeConfig,\n    TAccountMerkleTree,\n    TAccountPayer,\n    TAccountTreeCreator,\n    TAccountLogWrapper,\n    TAccountCompressionProgram,\n    TAccountSystemProgram\n  > &\n    InstructionWithByteDelta);\n}\n\nexport type CreateTreeConfigInput<\n  TAccountTreeConfig extends string = string,\n  TAccountMerkleTree extends string = string,\n  TAccountPayer extends string = string,\n  TAccountTreeCreator extends string = string,\n  TAccountLogWrapper extends string = string,\n  TAccountCompressionProgram extends string = string,\n  TAccountSystemProgram extends string = string,\n> = {\n  treeConfig: Address<TAccountTreeConfig>;\n  merkleTree: Address<TAccountMerkleTree>;\n  payer?: TransactionSigner<TAccountPayer>;\n  treeCreator: TransactionSigner<TAccountTreeCreator>;\n  logWrapper?: Address<TAccountLogWrapper>;\n  compressionProgram?: Address<TAccountCompressionProgram>;\n  systemProgram?: Address<TAccountSystemProgram>;\n  maxDepth: CreateTreeConfigInstructionDataArgs['maxDepth'];\n  maxBufferSize: CreateTreeConfigInstructionDataArgs['maxBufferSize'];\n  public?: CreateTreeConfigInstructionDataArgs['public'];\n};\n\nexport function getCreateTreeConfigInstruction<\n  TAccountTreeConfig extends string,\n  TAccountMerkleTree extends string,\n  TAccountPayer extends string,\n  TAccountTreeCreator extends string,\n  TAccountLogWrapper extends string,\n  TAccountCompressionProgram extends string,\n  TAccountSystemProgram extends string,\n  TProgramAddress extends Address = typeof MPL_BUBBLEGUM_PROGRAM_ADDRESS,\n>(\n  input: CreateTreeConfigInput<\n    TAccountTreeConfig,\n    TAccountMerkleTree,\n    TAccountPayer,\n    TAccountTreeCreator,\n    TAccountLogWrapper,\n    TAccountCompressionProgram,\n    TAccountSystemProgram\n  >,\n  config?: { programAddress?: TProgramAddress }\n): CreateTreeConfigInstruction<\n  TProgramAddress,\n  TAccountTreeConfig,\n  TAccountMerkleTree,\n  TAccountPayer,\n  TAccountTreeCreator,\n  TAccountLogWrapper,\n  TAccountCompressionProgram,\n  TAccountSystemProgram\n> &\n  InstructionWithByteDelta {\n  // Program address.\n  const programAddress =\n    config?.programAddress ?? MPL_BUBBLEGUM_PROGRAM_ADDRESS;\n\n  // Original accounts.\n  const originalAccounts = {\n    treeConfig: { value: input.treeConfig ?? null, isWritable: true },\n    merkleTree: { value: input.merkleTree ?? null, isWritable: true },\n    payer: { value: input.payer ?? null, isWritable: true },\n    treeCreator: { value: input.treeCreator ?? null, isWritable: false },\n    logWrapper: { value: input.logWrapper ?? null, isWritable: false },\n    compressionProgram: {\n      value: input.compressionProgram ?? null,\n      isWritable: false,\n    },\n    systemProgram: { value: input.systemProgram ?? null, isWritable: false },\n  };\n  const accounts = originalAccounts as Record<\n    keyof typeof originalAccounts,\n    ResolvedAccount\n  >;\n\n  // Original args.\n  const args = { ...input };\n\n  // Resolve default values.\n  if (!accounts.payer.value) {\n    accounts.payer.value = expectSome(accounts.treeCreator.value);\n  }\n  if (!accounts.logWrapper.value) {\n    accounts.logWrapper.value =\n      'noopb9bkMVfRPU8AsbpTUg8AQkHtKwMYZiFUjNRtMmV' as Address<'noopb9bkMVfRPU8AsbpTUg8AQkHtKwMYZiFUjNRtMmV'>;\n  }\n  if (!accounts.compressionProgram.value) {\n    accounts.compressionProgram.value =\n      'cmtDvXumGCrqC1Age74AVPhSRVXJMd8PJS91L8KbNCK' as Address<'cmtDvXumGCrqC1Age74AVPhSRVXJMd8PJS91L8KbNCK'>;\n  }\n  if (!accounts.systemProgram.value) {\n    accounts.systemProgram.value =\n      '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>;\n  }\n\n  // Bytes created or reallocated by the instruction.\n  const byteDelta: number = [getTreeConfigSize() + BASE_ACCOUNT_SIZE].reduce(\n    (a, b) => a + b,\n    0\n  );\n\n  const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n  return Object.freeze({\n    accounts: [\n      getAccountMeta(accounts.treeConfig),\n      getAccountMeta(accounts.merkleTree),\n      getAccountMeta(accounts.payer),\n      getAccountMeta(accounts.treeCreator),\n      getAccountMeta(accounts.logWrapper),\n      getAccountMeta(accounts.compressionProgram),\n      getAccountMeta(accounts.systemProgram),\n    ],\n    byteDelta,\n    data: getCreateTreeConfigInstructionDataEncoder().encode(\n      args as CreateTreeConfigInstructionDataArgs\n    ),\n    programAddress,\n  } as CreateTreeConfigInstruction<\n    TProgramAddress,\n    TAccountTreeConfig,\n    TAccountMerkleTree,\n    TAccountPayer,\n    TAccountTreeCreator,\n    TAccountLogWrapper,\n    TAccountCompressionProgram,\n    TAccountSystemProgram\n  > &\n    InstructionWithByteDelta);\n}\n\nexport type ParsedCreateTreeConfigInstruction<\n  TProgram extends string = typeof MPL_BUBBLEGUM_PROGRAM_ADDRESS,\n  TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n  programAddress: Address<TProgram>;\n  accounts: {\n    treeConfig: TAccountMetas[0];\n    merkleTree: TAccountMetas[1];\n    payer: TAccountMetas[2];\n    treeCreator: TAccountMetas[3];\n    logWrapper: TAccountMetas[4];\n    compressionProgram: TAccountMetas[5];\n    systemProgram: TAccountMetas[6];\n  };\n  data: CreateTreeConfigInstructionData;\n};\n\nexport function parseCreateTreeConfigInstruction<\n  TProgram extends string,\n  TAccountMetas extends readonly AccountMeta[],\n>(\n  instruction: Instruction<TProgram> &\n    InstructionWithAccounts<TAccountMetas> &\n    InstructionWithData<ReadonlyUint8Array>\n): ParsedCreateTreeConfigInstruction<TProgram, TAccountMetas> {\n  if (instruction.accounts.length < 7) {\n    // TODO: Coded error.\n    throw new Error('Not enough accounts');\n  }\n  let accountIndex = 0;\n  const getNextAccount = () => {\n    const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n    accountIndex += 1;\n    return accountMeta;\n  };\n  return {\n    programAddress: instruction.programAddress,\n    accounts: {\n      treeConfig: getNextAccount(),\n      merkleTree: getNextAccount(),\n      payer: getNextAccount(),\n      treeCreator: getNextAccount(),\n      logWrapper: getNextAccount(),\n      compressionProgram: getNextAccount(),\n      systemProgram: getNextAccount(),\n    },\n    data: getCreateTreeConfigInstructionDataDecoder().decode(instruction.data),\n  };\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  BASE_ACCOUNT_SIZE,\n  combineCodec,\n  fixDecoderSize,\n  fixEncoderSize,\n  getBooleanDecoder,\n  getBooleanEncoder,\n  getBytesDecoder,\n  getBytesEncoder,\n  getOptionDecoder,\n  getOptionEncoder,\n  getStructDecoder,\n  getStructEncoder,\n  getU32Decoder,\n  getU32Encoder,\n  none,\n  transformEncoder,\n  type AccountMeta,\n  type AccountSignerMeta,\n  type Address,\n  type Codec,\n  type Decoder,\n  type Encoder,\n  type Instruction,\n  type InstructionWithAccounts,\n  type InstructionWithData,\n  type Option,\n  type OptionOrNullable,\n  type ReadonlyAccount,\n  type ReadonlySignerAccount,\n  type ReadonlyUint8Array,\n  type TransactionSigner,\n  type WritableAccount,\n  type WritableSignerAccount,\n} from '@solana/kit';\nimport { getTreeConfigSize } from '../accounts';\nimport { findTreeConfigPda } from '../pdas';\nimport { MPL_BUBBLEGUM_PROGRAM_ADDRESS } from '../programs';\nimport {\n  expectAddress,\n  getAccountMetaFactory,\n  type InstructionWithByteDelta,\n  type ResolvedAccount,\n} from '../shared';\n\nexport const CREATE_TREE_CONFIG_V2_DISCRIMINATOR = new Uint8Array([\n  55, 99, 95, 215, 142, 203, 227, 205,\n]);\n\nexport function getCreateTreeConfigV2DiscriminatorBytes() {\n  return fixEncoderSize(getBytesEncoder(), 8).encode(\n    CREATE_TREE_CONFIG_V2_DISCRIMINATOR\n  );\n}\n\nexport type CreateTreeConfigV2Instruction<\n  TProgram extends string = typeof MPL_BUBBLEGUM_PROGRAM_ADDRESS,\n  TAccountTreeConfig extends string | AccountMeta<string> = string,\n  TAccountMerkleTree extends string | AccountMeta<string> = string,\n  TAccountPayer extends string | AccountMeta<string> = string,\n  TAccountTreeCreator extends string | AccountMeta<string> = string,\n  TAccountLogWrapper extends\n    | string\n    | AccountMeta<string> = 'mnoopTCrg4p8ry25e4bcWA9XZjbNjMTfgYVGGEdRsf3',\n  TAccountCompressionProgram extends\n    | string\n    | AccountMeta<string> = 'mcmt6YrQEMKw8Mw43FmpRLmf7BqRnFMKmAcbxE3xkAW',\n  TAccountSystemProgram extends\n    | string\n    | AccountMeta<string> = '11111111111111111111111111111111',\n  TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n  InstructionWithData<ReadonlyUint8Array> &\n  InstructionWithAccounts<\n    [\n      TAccountTreeConfig extends string\n        ? WritableAccount<TAccountTreeConfig>\n        : TAccountTreeConfig,\n      TAccountMerkleTree extends string\n        ? WritableAccount<TAccountMerkleTree>\n        : TAccountMerkleTree,\n      TAccountPayer extends string\n        ? WritableSignerAccount<TAccountPayer> &\n            AccountSignerMeta<TAccountPayer>\n        : TAccountPayer,\n      TAccountTreeCreator extends string\n        ? ReadonlySignerAccount<TAccountTreeCreator> &\n            AccountSignerMeta<TAccountTreeCreator>\n        : TAccountTreeCreator,\n      TAccountLogWrapper extends string\n        ? ReadonlyAccount<TAccountLogWrapper>\n        : TAccountLogWrapper,\n      TAccountCompressionProgram extends string\n        ? ReadonlyAccount<TAccountCompressionProgram>\n        : TAccountCompressionProgram,\n      TAccountSystemProgram extends string\n        ? ReadonlyAccount<TAccountSystemProgram>\n        : TAccountSystemProgram,\n      ...TRemainingAccounts,\n    ]\n  >;\n\nexport type CreateTreeConfigV2InstructionData = {\n  discriminator: ReadonlyUint8Array;\n  maxDepth: number;\n  maxBufferSize: number;\n  public: Option<boolean>;\n};\n\nexport type CreateTreeConfigV2InstructionDataArgs = {\n  maxDepth: number;\n  maxBufferSize: number;\n  public?: OptionOrNullable<boolean>;\n};\n\nexport function getCreateTreeConfigV2InstructionDataEncoder(): Encoder<CreateTreeConfigV2InstructionDataArgs> {\n  return transformEncoder(\n    getStructEncoder([\n      ['discriminator', fixEncoderSize(getBytesEncoder(), 8)],\n      ['maxDepth', getU32Encoder()],\n      ['maxBufferSize', getU32Encoder()],\n      ['public', getOptionEncoder(getBooleanEncoder())],\n    ]),\n    (value) => ({\n      ...value,\n      discriminator: CREATE_TREE_CONFIG_V2_DISCRIMINATOR,\n      public: value.public ?? none(),\n    })\n  );\n}\n\nexport function getCreateTreeConfigV2InstructionDataDecoder(): Decoder<CreateTreeConfigV2InstructionData> {\n  return getStructDecoder([\n    ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n    ['maxDepth', getU32Decoder()],\n    ['maxBufferSize', getU32Decoder()],\n    ['public', getOptionDecoder(getBooleanDecoder())],\n  ]);\n}\n\nexport function getCreateTreeConfigV2InstructionDataCodec(): Codec<\n  CreateTreeConfigV2InstructionDataArgs,\n  CreateTreeConfigV2InstructionData\n> {\n  return combineCodec(\n    getCreateTreeConfigV2InstructionDataEncoder(),\n    getCreateTreeConfigV2InstructionDataDecoder()\n  );\n}\n\nexport type CreateTreeConfigV2AsyncInput<\n  TAccountTreeConfig extends string = string,\n  TAccountMerkleTree extends string = string,\n  TAccountPayer extends string = string,\n  TAccountTreeCreator extends string = string,\n  TAccountLogWrapper extends string = string,\n  TAccountCompressionProgram extends string = string,\n  TAccountSystemProgram extends string = string,\n> = {\n  treeConfig?: Address<TAccountTreeConfig>;\n  merkleTree: Address<TAccountMerkleTree>;\n  payer: TransactionSigner<TAccountPayer>;\n  /** Optional tree creator, defaults to `payer` */\n  treeCreator?: TransactionSigner<TAccountTreeCreator>;\n  logWrapper?: Address<TAccountLogWrapper>;\n  compressionProgram?: Address<TAccountCompressionProgram>;\n  systemProgram?: Address<TAccountSystemProgram>;\n  maxDepth: CreateTreeConfigV2InstructionDataArgs['maxDepth'];\n  maxBufferSize: CreateTreeConfigV2InstructionDataArgs['maxBufferSize'];\n  public?: CreateTreeConfigV2InstructionDataArgs['public'];\n};\n\nexport async function getCreateTreeConfigV2InstructionAsync<\n  TAccountTreeConfig extends string,\n  TAccountMerkleTree extends string,\n  TAccountPayer extends string,\n  TAccountTreeCreator extends string,\n  TAccountLogWrapper extends string,\n  TAccountCompressionProgram extends string,\n  TAccountSystemProgram extends string,\n  TProgramAddress extends Address = typeof MPL_BUBBLEGUM_PROGRAM_ADDRESS,\n>(\n  input: CreateTreeConfigV2AsyncInput<\n    TAccountTreeConfig,\n    TAccountMerkleTree,\n    TAccountPayer,\n    TAccountTreeCreator,\n    TAccountLogWrapper,\n    TAccountCompressionProgram,\n    TAccountSystemProgram\n  >,\n  config?: { programAddress?: TProgramAddress }\n): Promise<\n  CreateTreeConfigV2Instruction<\n    TProgramAddress,\n    TAccountTreeConfig,\n    TAccountMerkleTree,\n    TAccountPayer,\n    TAccountTreeCreator,\n    TAccountLogWrapper,\n    TAccountCompressionProgram,\n    TAccountSystemProgram\n  > &\n    InstructionWithByteDelta\n> {\n  // Program address.\n  const programAddress =\n    config?.programAddress ?? MPL_BUBBLEGUM_PROGRAM_ADDRESS;\n\n  // Original accounts.\n  const originalAccounts = {\n    treeConfig: { value: input.treeConfig ?? null, isWritable: true },\n    merkleTree: { value: input.merkleTree ?? null, isWritable: true },\n    payer: { value: input.payer ?? null, isWritable: true },\n    treeCreator: { value: input.treeCreator ?? null, isWritable: false },\n    logWrapper: { value: input.logWrapper ?? null, isWritable: false },\n    compressionProgram: {\n      value: input.compressionProgram ?? null,\n      isWritable: false,\n    },\n    systemProgram: { value: input.systemProgram ?? null, isWritable: false },\n  };\n  const accounts = originalAccounts as Record<\n    keyof typeof originalAccounts,\n    ResolvedAccount\n  >;\n\n  // Original args.\n  const args = { ...input };\n\n  // Resolve default values.\n  if (!accounts.treeConfig.value) {\n    accounts.treeConfig.value = await findTreeConfigPda({\n      merkleTree: expectAddress(accounts.merkleTree.value),\n    });\n  }\n  if (!accounts.logWrapper.value) {\n    accounts.logWrapper.value =\n      'mnoopTCrg4p8ry25e4bcWA9XZjbNjMTfgYVGGEdRsf3' as Address<'mnoopTCrg4p8ry25e4bcWA9XZjbNjMTfgYVGGEdRsf3'>;\n  }\n  if (!accounts.compressionProgram.value) {\n    accounts.compressionProgram.value =\n      'mcmt6YrQEMKw8Mw43FmpRLmf7BqRnFMKmAcbxE3xkAW' as Address<'mcmt6YrQEMKw8Mw43FmpRLmf7BqRnFMKmAcbxE3xkAW'>;\n  }\n  if (!accounts.systemProgram.value) {\n    accounts.systemProgram.value =\n      '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>;\n  }\n\n  // Bytes created or reallocated by the instruction.\n  const byteDelta: number = [getTreeConfigSize() + BASE_ACCOUNT_SIZE].reduce(\n    (a, b) => a + b,\n    0\n  );\n\n  const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n  return Object.freeze({\n    accounts: [\n      getAccountMeta(accounts.treeConfig),\n      getAccountMeta(accounts.merkleTree),\n      getAccountMeta(accounts.payer),\n      getAccountMeta(accounts.treeCreator),\n      getAccountMeta(accounts.logWrapper),\n      getAccountMeta(accounts.compressionProgram),\n      getAccountMeta(accounts.systemProgram),\n    ],\n    byteDelta,\n    data: getCreateTreeConfigV2InstructionDataEncoder().encode(\n      args as CreateTreeConfigV2InstructionDataArgs\n    ),\n    programAddress,\n  } as CreateTreeConfigV2Instruction<\n    TProgramAddress,\n    TAccountTreeConfig,\n    TAccountMerkleTree,\n    TAccountPayer,\n    TAccountTreeCreator,\n    TAccountLogWrapper,\n    TAccountCompressionProgram,\n    TAccountSystemProgram\n  > &\n    InstructionWithByteDelta);\n}\n\nexport type CreateTreeConfigV2Input<\n  TAccountTreeConfig extends string = string,\n  TAccountMerkleTree extends string = string,\n  TAccountPayer extends string = string,\n  TAccountTreeCreator extends string = string,\n  TAccountLogWrapper extends string = string,\n  TAccountCompressionProgram extends string = string,\n  TAccountSystemProgram extends string = string,\n> = {\n  treeConfig: Address<TAccountTreeConfig>;\n  merkleTree: Address<TAccountMerkleTree>;\n  payer: TransactionSigner<TAccountPayer>;\n  /** Optional tree creator, defaults to `payer` */\n  treeCreator?: TransactionSigner<TAccountTreeCreator>;\n  logWrapper?: Address<TAccountLogWrapper>;\n  compressionProgram?: Address<TAccountCompressionProgram>;\n  systemProgram?: Address<TAccountSystemProgram>;\n  maxDepth: CreateTreeConfigV2InstructionDataArgs['maxDepth'];\n  maxBufferSize: CreateTreeConfigV2InstructionDataArgs['maxBufferSize'];\n  public?: CreateTreeConfigV2InstructionDataArgs['public'];\n};\n\nexport function getCreateTreeConfigV2Instruction<\n  TAccountTreeConfig extends string,\n  TAccountMerkleTree extends string,\n  TAccountPayer extends string,\n  TAccountTreeCreator extends string,\n  TAccountLogWrapper extends string,\n  TAccountCompressionProgram extends string,\n  TAccountSystemProgram extends string,\n  TProgramAddress extends Address = typeof MPL_BUBBLEGUM_PROGRAM_ADDRESS,\n>(\n  input: CreateTreeConfigV2Input<\n    TAccountTreeConfig,\n    TAccountMerkleTree,\n    TAccountPayer,\n    TAccountTreeCreator,\n    TAccountLogWrapper,\n    TAccountCompressionProgram,\n    TAccountSystemProgram\n  >,\n  config?: { programAddress?: TProgramAddress }\n): CreateTreeConfigV2Instruction<\n  TProgramAddress,\n  TAccountTreeConfig,\n  TAccountMerkleTree,\n  TAccountPayer,\n  TAccountTreeCreator,\n  TAccountLogWrapper,\n  TAccountCompressionProgram,\n  TAccountSystemProgram\n> &\n  InstructionWithByteDelta {\n  // Program address.\n  const programAddress =\n    config?.programAddress ?? MPL_BUBBLEGUM_PROGRAM_ADDRESS;\n\n  // Original accounts.\n  const originalAccounts = {\n    treeConfig: { value: input.treeConfig ?? null, isWritable: true },\n    merkleTree: { value: input.merkleTree ?? null, isWritable: true },\n    payer: { value: input.payer ?? null, isWritable: true },\n    treeCreator: { value: input.treeCreator ?? null, isWritable: false },\n    logWrapper: { value: input.logWrapper ?? null, isWritable: false },\n    compressionProgram: {\n      value: input.compressionProgram ?? null,\n      isWritable: false,\n    },\n    systemProgram: { value: input.systemProgram ?? null, isWritable: false },\n  };\n  const accounts = originalAccounts as Record<\n    keyof typeof originalAccounts,\n    ResolvedAccount\n  >;\n\n  // Original args.\n  const args = { ...input };\n\n  // Resolve default values.\n  if (!accounts.logWrapper.value) {\n    accounts.logWrapper.value =\n      'mnoopTCrg4p8ry25e4bcWA9XZjbNjMTfgYVGGEdRsf3' as Address<'mnoopTCrg4p8ry25e4bcWA9XZjbNjMTfgYVGGEdRsf3'>;\n  }\n  if (!accounts.compressionProgram.value) {\n    accounts.compressionProgram.value =\n      'mcmt6YrQEMKw8Mw43FmpRLmf7BqRnFMKmAcbxE3xkAW' as Address<'mcmt6YrQEMKw8Mw43FmpRLmf7BqRnFMKmAcbxE3xkAW'>;\n  }\n  if (!accounts.systemProgram.value) {\n    accounts.systemProgram.value =\n      '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>;\n  }\n\n  // Bytes created or reallocated by the instruction.\n  const byteDelta: number = [getTreeConfigSize() + BASE_ACCOUNT_SIZE].reduce(\n    (a, b) => a + b,\n    0\n  );\n\n  const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n  return Object.freeze({\n    accounts: [\n      getAccountMeta(accounts.treeConfig),\n      getAccountMeta(accounts.merkleTree),\n      getAccountMeta(accounts.payer),\n      getAccountMeta(accounts.treeCreator),\n      getAccountMeta(accounts.logWrapper),\n      getAccountMeta(accounts.compressionProgram),\n      getAccountMeta(accounts.systemProgram),\n    ],\n    byteDelta,\n    data: getCreateTreeConfigV2InstructionDataEncoder().encode(\n      args as CreateTreeConfigV2InstructionDataArgs\n    ),\n    programAddress,\n  } as CreateTreeConfigV2Instruction<\n    TProgramAddress,\n    TAccountTreeConfig,\n    TAccountMerkleTree,\n    TAccountPayer,\n    TAccountTreeCreator,\n    TAccountLogWrapper,\n    TAccountCompressionProgram,\n    TAccountSystemProgram\n  > &\n    InstructionWithByteDelta);\n}\n\nexport type ParsedCreateTreeConfigV2Instruction<\n  TProgram extends string = typeof MPL_BUBBLEGUM_PROGRAM_ADDRESS,\n  TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n  programAddress: Address<TProgram>;\n  accounts: {\n    treeConfig: TAccountMetas[0];\n    merkleTree: TAccountMetas[1];\n    payer: TAccountMetas[2];\n    /** Optional tree creator, defaults to `payer` */\n    treeCreator?: TAccountMetas[3] | undefined;\n    logWrapper: TAccountMetas[4];\n    compressionProgram: TAccountMetas[5];\n    systemProgram: TAccountMetas[6];\n  };\n  data: CreateTreeConfigV2InstructionData;\n};\n\nexport function parseCreateTreeConfigV2Instruction<\n  TProgram extends string,\n  TAccountMetas extends readonly AccountMeta[],\n>(\n  instruction: Instruction<TProgram> &\n    InstructionWithAccounts<TAccountMetas> &\n    InstructionWithData<ReadonlyUint8Array>\n): ParsedCreateTreeConfigV2Instruction<TProgram, TAccountMetas> {\n  if (instruction.accounts.length < 7) {\n    // TODO: Coded error.\n    throw new Error('Not enough accounts');\n  }\n  let accountIndex = 0;\n  const getNextAccount = () => {\n    const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n    accountIndex += 1;\n    return accountMeta;\n  };\n  const getNextOptionalAccount = () => {\n    const accountMeta = getNextAccount();\n    return accountMeta.address === MPL_BUBBLEGUM_PROGRAM_ADDRESS\n      ? undefined\n      : accountMeta;\n  };\n  return {\n    programAddress: instruction.programAddress,\n    accounts: {\n      treeConfig: getNextAccount(),\n      merkleTree: getNextAccount(),\n      payer: getNextAccount(),\n      treeCreator: getNextOptionalAccount(),\n      logWrapper: getNextAccount(),\n      compressionProgram: getNextAccount(),\n      systemProgram: getNextAccount(),\n    },\n    data: getCreateTreeConfigV2InstructionDataDecoder().decode(\n      instruction.data\n    ),\n  };\n}\n","// Copied from https://github.com/solana-program/token/blob/cf136e7c82526a58859abfc2baaadcdbeb0f751c/clients/js/src/generated/pdas/associatedToken.ts#L25\n\nimport {\n  getAddressEncoder,\n  getProgramDerivedAddress,\n  type Address,\n  type ProgramDerivedAddress,\n} from '@solana/kit';\n\nexport type AssociatedTokenSeeds = {\n  /** The wallet address of the associated token account. */\n  owner: Address;\n  /** The address of the token program to use. */\n  tokenProgram: Address;\n  /** The mint address of the associated token account. */\n  mint: Address;\n};\n\nexport async function findAssociatedTokenPda(\n  seeds: AssociatedTokenSeeds,\n  config: { programAddress?: Address | undefined } = {}\n): Promise<ProgramDerivedAddress> {\n  const {\n    programAddress = 'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL' as Address<'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL'>,\n  } = config;\n  return await getProgramDerivedAddress({\n    programAddress,\n    seeds: [\n      getAddressEncoder().encode(seeds.owner),\n      getAddressEncoder().encode(seeds.tokenProgram),\n      getAddressEncoder().encode(seeds.mint),\n    ],\n  });\n}\n","// Copied from https://github.com/mcintyre94/mpl-token-metadata-codama/blob/d44e50e25c171031344bf06b7848ac61856345ec/client-js/src/generated/pdas/masterEdition.ts#L22\n\nimport {\n  getAddressEncoder,\n  getProgramDerivedAddress,\n  getUtf8Encoder,\n  type Address,\n  type ProgramDerivedAddress,\n} from '@solana/kit';\n\nexport type MasterEditionSeeds = {\n  /** The address of the mint account */\n  mint: Address;\n};\n\nexport async function findMasterEditionPda(\n  seeds: MasterEditionSeeds,\n  config: { programAddress?: Address | undefined } = {}\n): Promise<ProgramDerivedAddress> {\n  const {\n    programAddress = 'metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s' as Address<'metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s'>,\n  } = config;\n  return await getProgramDerivedAddress({\n    programAddress,\n    seeds: [\n      getUtf8Encoder().encode('metadata'),\n      getAddressEncoder().encode(programAddress),\n      getAddressEncoder().encode(seeds.mint),\n      getUtf8Encoder().encode('edition'),\n    ],\n  });\n}\n","// Copied from https://github.com/mcintyre94/mpl-token-metadata-codama/blob/d44e50e25c171031344bf06b7848ac61856345ec/client-js/src/generated/pdas/metadata.ts#L22\n\nimport {\n  getAddressEncoder,\n  getProgramDerivedAddress,\n  getUtf8Encoder,\n  type Address,\n  type ProgramDerivedAddress,\n} from '@solana/kit';\n\nexport type MetadataSeeds = {\n  /** The address of the mint account */\n  mint: Address;\n};\n\nexport async function findMetadataPda(\n  seeds: MetadataSeeds,\n  config: { programAddress?: Address | undefined } = {}\n): Promise<ProgramDerivedAddress> {\n  const {\n    programAddress = 'metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s' as Address<'metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s'>,\n  } = config;\n  return await getProgramDerivedAddress({\n    programAddress,\n    seeds: [\n      getUtf8Encoder().encode('metadata'),\n      getAddressEncoder().encode(programAddress),\n      getAddressEncoder().encode(seeds.mint),\n    ],\n  });\n}\n","import { MPL_BUBBLEGUM_PROGRAM_ADDRESS } from '../generated';\nimport {\n  Address,\n  getAddressEncoder,\n  getProgramDerivedAddress,\n  ProgramDerivedAddress,\n} from '@solana/kit';\n\ntype MintAuthoritySeeds = {\n  mint: Address;\n};\n\nexport async function findMintAuthorityPda(\n  seeds: MintAuthoritySeeds,\n  config: { programAddress?: Address | undefined } = {}\n): Promise<ProgramDerivedAddress> {\n  const { programAddress = MPL_BUBBLEGUM_PROGRAM_ADDRESS } = config;\n  return await getProgramDerivedAddress({\n    programAddress,\n    seeds: [getAddressEncoder().encode(seeds.mint)],\n  });\n}\n","import {\n  Address,\n  getAddressEncoder,\n  getProgramDerivedAddress,\n  getU64Encoder,\n  getUtf8Encoder,\n  ProgramDerivedAddress,\n} from '@solana/kit';\nimport { MPL_BUBBLEGUM_PROGRAM_ADDRESS } from './generated';\n\nexport type LeafAssetIdSeeds = {\n  merkleTree: Address;\n  leafIndex: number | bigint;\n};\n\nexport async function findLeafAssetIdPda(\n  seeds: LeafAssetIdSeeds,\n  config: { programAddress?: Address | undefined } = {}\n): Promise<ProgramDerivedAddress> {\n  const { programAddress = MPL_BUBBLEGUM_PROGRAM_ADDRESS } = config;\n  return await getProgramDerivedAddress({\n    programAddress,\n    seeds: [\n      getUtf8Encoder().encode('asset'),\n      getAddressEncoder().encode(seeds.merkleTree),\n      getU64Encoder().encode(seeds.leafIndex),\n    ],\n  });\n}\n","import {\n  Address,\n  getAddressEncoder,\n  getArrayEncoder,\n  getU16Encoder,\n  getU64Encoder,\n  getU8Encoder,\n  mergeBytes,\n} from '@solana/kit';\nimport {\n  getCreatorEncoder,\n  getMetadataArgsEncoder,\n  MetadataArgsArgs,\n} from './generated';\nimport { keccak_256 } from '@noble/hashes/sha3';\nimport { findLeafAssetIdPda } from './leafAssetId';\n\nexport function hash(input: Uint8Array | Uint8Array[]): Uint8Array {\n  return keccak_256(Array.isArray(input) ? mergeBytes(input) : input);\n}\n\nexport function hashMetadata(metadata: MetadataArgsArgs): Uint8Array {\n  return mergeBytes([\n    hashMetadataData(metadata),\n    hashMetadataCreators(metadata.creators),\n  ]);\n}\n\ntype HashLeafInput = {\n  merkleTree: Address;\n  owner: Address;\n  delegate?: Address;\n  leafIndex: number | bigint;\n  metadata: MetadataArgsArgs;\n  nftVersion?: number;\n};\n\nexport async function hashLeaf(input: HashLeafInput): Promise<Uint8Array> {\n  const delegate = input.delegate ?? input.owner;\n  const nftVersion = input.nftVersion ?? 1;\n  const [leafAssetId] = await findLeafAssetIdPda({\n    merkleTree: input.merkleTree,\n    leafIndex: input.leafIndex,\n  });\n\n  return hash([\n    getU8Encoder().encode(nftVersion) as Uint8Array,\n    getAddressEncoder().encode(leafAssetId) as Uint8Array,\n    getAddressEncoder().encode(input.owner) as Uint8Array,\n    getAddressEncoder().encode(delegate) as Uint8Array,\n    getU64Encoder().encode(input.leafIndex) as Uint8Array,\n    hashMetadata(input.metadata),\n  ]);\n}\n\nexport function hashMetadataData(metadata: MetadataArgsArgs): Uint8Array {\n  return hash([\n    hash(getMetadataArgsEncoder().encode(metadata) as Uint8Array),\n    getU16Encoder().encode(metadata.sellerFeeBasisPoints) as Uint8Array,\n  ]);\n}\n\nexport function hashMetadataCreators(\n  creators: MetadataArgsArgs['creators']\n): Uint8Array {\n  return hash(\n    getArrayEncoder(getCreatorEncoder(), { size: 'remainder' }).encode(\n      creators\n    ) as Uint8Array\n  );\n}\n","import { MetadataArgsArgs } from '../generated';\nimport { hashMetadataCreators, hashMetadataData } from '../hash';\n\nexport function resolveDataHash({\n  args,\n}: {\n  args: { metadata: MetadataArgsArgs };\n}): Uint8Array {\n  return hashMetadataData(args.metadata);\n}\n\nexport function resolveCreatorHash({\n  args,\n}: {\n  args: { metadata: { creators: MetadataArgsArgs['creators'] } };\n}): Uint8Array {\n  return hashMetadataCreators(args.metadata.creators);\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  combineCodec,\n  fixDecoderSize,\n  fixEncoderSize,\n  getBytesDecoder,\n  getBytesEncoder,\n  getStructDecoder,\n  getStructEncoder,\n  transformEncoder,\n  type AccountMeta,\n  type AccountSignerMeta,\n  type Address,\n  type Codec,\n  type Decoder,\n  type Encoder,\n  type Instruction,\n  type InstructionWithAccounts,\n  type InstructionWithData,\n  type ReadonlyAccount,\n  type ReadonlyUint8Array,\n  type TransactionSigner,\n  type WritableAccount,\n  type WritableSignerAccount,\n} from '@solana/kit';\nimport {\n  findAssociatedTokenPda,\n  findMasterEditionPda,\n  findMetadataPda,\n  findMintAuthorityPda,\n} from '../../hooked';\nimport { MPL_BUBBLEGUM_PROGRAM_ADDRESS } from '../programs';\nimport {\n  expectAddress,\n  getAccountMetaFactory,\n  type ResolvedAccount,\n} from '../shared';\nimport {\n  getMetadataArgsDecoder,\n  getMetadataArgsEncoder,\n  type MetadataArgs,\n  type MetadataArgsArgs,\n} from '../types';\n\nexport const DECOMPRESS_V1_DISCRIMINATOR = new Uint8Array([\n  54, 85, 76, 70, 228, 250, 164, 81,\n]);\n\nexport function getDecompressV1DiscriminatorBytes() {\n  return fixEncoderSize(getBytesEncoder(), 8).encode(\n    DECOMPRESS_V1_DISCRIMINATOR\n  );\n}\n\nexport type DecompressV1Instruction<\n  TProgram extends string = typeof MPL_BUBBLEGUM_PROGRAM_ADDRESS,\n  TAccountVoucher extends string | AccountMeta<string> = string,\n  TAccountLeafOwner extends string | AccountMeta<string> = string,\n  TAccountTokenAccount extends string | AccountMeta<string> = string,\n  TAccountMint extends string | AccountMeta<string> = string,\n  TAccountMintAuthority extends string | AccountMeta<string> = string,\n  TAccountMetadataAccount extends string | AccountMeta<string> = string,\n  TAccountMasterEdition extends string | AccountMeta<string> = string,\n  TAccountSystemProgram extends\n    | string\n    | AccountMeta<string> = '11111111111111111111111111111111',\n  TAccountSysvarRent extends\n    | string\n    | AccountMeta<string> = 'SysvarRent111111111111111111111111111111111',\n  TAccountTokenMetadataProgram extends\n    | string\n    | AccountMeta<string> = 'metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s',\n  TAccountTokenProgram extends\n    | string\n    | AccountMeta<string> = 'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA',\n  TAccountAssociatedTokenProgram extends\n    | string\n    | AccountMeta<string> = 'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL',\n  TAccountLogWrapper extends\n    | string\n    | AccountMeta<string> = 'noopb9bkMVfRPU8AsbpTUg8AQkHtKwMYZiFUjNRtMmV',\n  TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n  InstructionWithData<ReadonlyUint8Array> &\n  InstructionWithAccounts<\n    [\n      TAccountVoucher extends string\n        ? WritableAccount<TAccountVoucher>\n        : TAccountVoucher,\n      TAccountLeafOwner extends string\n        ? WritableSignerAccount<TAccountLeafOwner> &\n            AccountSignerMeta<TAccountLeafOwner>\n        : TAccountLeafOwner,\n      TAccountTokenAccount extends string\n        ? WritableAccount<TAccountTokenAccount>\n        : TAccountTokenAccount,\n      TAccountMint extends string\n        ? WritableAccount<TAccountMint>\n        : TAccountMint,\n      TAccountMintAuthority extends string\n        ? WritableAccount<TAccountMintAuthority>\n        : TAccountMintAuthority,\n      TAccountMetadataAccount extends string\n        ? WritableAccount<TAccountMetadataAccount>\n        : TAccountMetadataAccount,\n      TAccountMasterEdition extends string\n        ? WritableAccount<TAccountMasterEdition>\n        : TAccountMasterEdition,\n      TAccountSystemProgram extends string\n        ? ReadonlyAccount<TAccountSystemProgram>\n        : TAccountSystemProgram,\n      TAccountSysvarRent extends string\n        ? ReadonlyAccount<TAccountSysvarRent>\n        : TAccountSysvarRent,\n      TAccountTokenMetadataProgram extends string\n        ? ReadonlyAccount<TAccountTokenMetadataProgram>\n        : TAccountTokenMetadataProgram,\n      TAccountTokenProgram extends string\n        ? ReadonlyAccount<TAccountTokenProgram>\n        : TAccountTokenProgram,\n      TAccountAssociatedTokenProgram extends string\n        ? ReadonlyAccount<TAccountAssociatedTokenProgram>\n        : TAccountAssociatedTokenProgram,\n      TAccountLogWrapper extends string\n        ? ReadonlyAccount<TAccountLogWrapper>\n        : TAccountLogWrapper,\n      ...TRemainingAccounts,\n    ]\n  >;\n\nexport type DecompressV1InstructionData = {\n  discriminator: ReadonlyUint8Array;\n  metadata: MetadataArgs;\n};\n\nexport type DecompressV1InstructionDataArgs = { metadata: MetadataArgsArgs };\n\nexport function getDecompressV1InstructionDataEncoder(): Encoder<DecompressV1InstructionDataArgs> {\n  return transformEncoder(\n    getStructEncoder([\n      ['discriminator', fixEncoderSize(getBytesEncoder(), 8)],\n      ['metadata', getMetadataArgsEncoder()],\n    ]),\n    (value) => ({ ...value, discriminator: DECOMPRESS_V1_DISCRIMINATOR })\n  );\n}\n\nexport function getDecompressV1InstructionDataDecoder(): Decoder<DecompressV1InstructionData> {\n  return getStructDecoder([\n    ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n    ['metadata', getMetadataArgsDecoder()],\n  ]);\n}\n\nexport function getDecompressV1InstructionDataCodec(): Codec<\n  DecompressV1InstructionDataArgs,\n  DecompressV1InstructionData\n> {\n  return combineCodec(\n    getDecompressV1InstructionDataEncoder(),\n    getDecompressV1InstructionDataDecoder()\n  );\n}\n\nexport type DecompressV1AsyncInput<\n  TAccountVoucher extends string = string,\n  TAccountLeafOwner extends string = string,\n  TAccountTokenAccount extends string = string,\n  TAccountMint extends string = string,\n  TAccountMintAuthority extends string = string,\n  TAccountMetadataAccount extends string = string,\n  TAccountMasterEdition extends string = string,\n  TAccountSystemProgram extends string = string,\n  TAccountSysvarRent extends string = string,\n  TAccountTokenMetadataProgram extends string = string,\n  TAccountTokenProgram extends string = string,\n  TAccountAssociatedTokenProgram extends string = string,\n  TAccountLogWrapper extends string = string,\n> = {\n  voucher: Address<TAccountVoucher>;\n  leafOwner: TransactionSigner<TAccountLeafOwner>;\n  tokenAccount?: Address<TAccountTokenAccount>;\n  mint: Address<TAccountMint>;\n  mintAuthority?: Address<TAccountMintAuthority>;\n  metadataAccount?: Address<TAccountMetadataAccount>;\n  masterEdition?: Address<TAccountMasterEdition>;\n  systemProgram?: Address<TAccountSystemProgram>;\n  sysvarRent?: Address<TAccountSysvarRent>;\n  tokenMetadataProgram?: Address<TAccountTokenMetadataProgram>;\n  tokenProgram?: Address<TAccountTokenProgram>;\n  associatedTokenProgram?: Address<TAccountAssociatedTokenProgram>;\n  logWrapper?: Address<TAccountLogWrapper>;\n  metadata: DecompressV1InstructionDataArgs['metadata'];\n};\n\nexport async function getDecompressV1InstructionAsync<\n  TAccountVoucher extends string,\n  TAccountLeafOwner extends string,\n  TAccountTokenAccount extends string,\n  TAccountMint extends string,\n  TAccountMintAuthority extends string,\n  TAccountMetadataAccount extends string,\n  TAccountMasterEdition extends string,\n  TAccountSystemProgram extends string,\n  TAccountSysvarRent extends string,\n  TAccountTokenMetadataProgram extends string,\n  TAccountTokenProgram extends string,\n  TAccountAssociatedTokenProgram extends string,\n  TAccountLogWrapper extends string,\n  TProgramAddress extends Address = typeof MPL_BUBBLEGUM_PROGRAM_ADDRESS,\n>(\n  input: DecompressV1AsyncInput<\n    TAccountVoucher,\n    TAccountLeafOwner,\n    TAccountTokenAccount,\n    TAccountMint,\n    TAccountMintAuthority,\n    TAccountMetadataAccount,\n    TAccountMasterEdition,\n    TAccountSystemProgram,\n    TAccountSysvarRent,\n    TAccountTokenMetadataProgram,\n    TAccountTokenProgram,\n    TAccountAssociatedTokenProgram,\n    TAccountLogWrapper\n  >,\n  config?: { programAddress?: TProgramAddress }\n): Promise<\n  DecompressV1Instruction<\n    TProgramAddress,\n    TAccountVoucher,\n    TAccountLeafOwner,\n    TAccountTokenAccount,\n    TAccountMint,\n    TAccountMintAuthority,\n    TAccountMetadataAccount,\n    TAccountMasterEdition,\n    TAccountSystemProgram,\n    TAccountSysvarRent,\n    TAccountTokenMetadataProgram,\n    TAccountTokenProgram,\n    TAccountAssociatedTokenProgram,\n    TAccountLogWrapper\n  >\n> {\n  // Program address.\n  const programAddress =\n    config?.programAddress ?? MPL_BUBBLEGUM_PROGRAM_ADDRESS;\n\n  // Original accounts.\n  const originalAccounts = {\n    voucher: { value: input.voucher ?? null, isWritable: true },\n    leafOwner: { value: input.leafOwner ?? null, isWritable: true },\n    tokenAccount: { value: input.tokenAccount ?? null, isWritable: true },\n    mint: { value: input.mint ?? null, isWritable: true },\n    mintAuthority: { value: input.mintAuthority ?? null, isWritable: true },\n    metadataAccount: { value: input.metadataAccount ?? null, isWritable: true },\n    masterEdition: { value: input.masterEdition ?? null, isWritable: true },\n    systemProgram: { value: input.systemProgram ?? null, isWritable: false },\n    sysvarRent: { value: input.sysvarRent ?? null, isWritable: false },\n    tokenMetadataProgram: {\n      value: input.tokenMetadataProgram ?? null,\n      isWritable: false,\n    },\n    tokenProgram: { value: input.tokenProgram ?? null, isWritable: false },\n    associatedTokenProgram: {\n      value: input.associatedTokenProgram ?? null,\n      isWritable: false,\n    },\n    logWrapper: { value: input.logWrapper ?? null, isWritable: false },\n  };\n  const accounts = originalAccounts as Record<\n    keyof typeof originalAccounts,\n    ResolvedAccount\n  >;\n\n  // Original args.\n  const args = { ...input };\n\n  // Resolve default values.\n  if (!accounts.tokenProgram.value) {\n    accounts.tokenProgram.value =\n      'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA' as Address<'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA'>;\n  }\n  if (!accounts.tokenAccount.value) {\n    accounts.tokenAccount.value = await findAssociatedTokenPda({\n      mint: expectAddress(accounts.mint.value),\n      tokenProgram: expectAddress(accounts.tokenProgram.value),\n      owner: expectAddress(accounts.leafOwner.value),\n    });\n  }\n  if (!accounts.mintAuthority.value) {\n    accounts.mintAuthority.value = await findMintAuthorityPda({\n      mint: expectAddress(accounts.mint.value),\n    });\n  }\n  if (!accounts.metadataAccount.value) {\n    accounts.metadataAccount.value = await findMetadataPda({\n      mint: expectAddress(accounts.mint.value),\n    });\n  }\n  if (!accounts.masterEdition.value) {\n    accounts.masterEdition.value = await findMasterEditionPda({\n      mint: expectAddress(accounts.mint.value),\n    });\n  }\n  if (!accounts.systemProgram.value) {\n    accounts.systemProgram.value =\n      '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>;\n  }\n  if (!accounts.sysvarRent.value) {\n    accounts.sysvarRent.value =\n      'SysvarRent111111111111111111111111111111111' as Address<'SysvarRent111111111111111111111111111111111'>;\n  }\n  if (!accounts.tokenMetadataProgram.value) {\n    accounts.tokenMetadataProgram.value =\n      'metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s' as Address<'metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s'>;\n  }\n  if (!accounts.associatedTokenProgram.value) {\n    accounts.associatedTokenProgram.value =\n      'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL' as Address<'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL'>;\n  }\n  if (!accounts.logWrapper.value) {\n    accounts.logWrapper.value =\n      'noopb9bkMVfRPU8AsbpTUg8AQkHtKwMYZiFUjNRtMmV' as Address<'noopb9bkMVfRPU8AsbpTUg8AQkHtKwMYZiFUjNRtMmV'>;\n  }\n\n  const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n  return Object.freeze({\n    accounts: [\n      getAccountMeta(accounts.voucher),\n      getAccountMeta(accounts.leafOwner),\n      getAccountMeta(accounts.tokenAccount),\n      getAccountMeta(accounts.mint),\n      getAccountMeta(accounts.mintAuthority),\n      getAccountMeta(accounts.metadataAccount),\n      getAccountMeta(accounts.masterEdition),\n      getAccountMeta(accounts.systemProgram),\n      getAccountMeta(accounts.sysvarRent),\n      getAccountMeta(accounts.tokenMetadataProgram),\n      getAccountMeta(accounts.tokenProgram),\n      getAccountMeta(accounts.associatedTokenProgram),\n      getAccountMeta(accounts.logWrapper),\n    ],\n    data: getDecompressV1InstructionDataEncoder().encode(\n      args as DecompressV1InstructionDataArgs\n    ),\n    programAddress,\n  } as DecompressV1Instruction<\n    TProgramAddress,\n    TAccountVoucher,\n    TAccountLeafOwner,\n    TAccountTokenAccount,\n    TAccountMint,\n    TAccountMintAuthority,\n    TAccountMetadataAccount,\n    TAccountMasterEdition,\n    TAccountSystemProgram,\n    TAccountSysvarRent,\n    TAccountTokenMetadataProgram,\n    TAccountTokenProgram,\n    TAccountAssociatedTokenProgram,\n    TAccountLogWrapper\n  >);\n}\n\nexport type DecompressV1Input<\n  TAccountVoucher extends string = string,\n  TAccountLeafOwner extends string = string,\n  TAccountTokenAccount extends string = string,\n  TAccountMint extends string = string,\n  TAccountMintAuthority extends string = string,\n  TAccountMetadataAccount extends string = string,\n  TAccountMasterEdition extends string = string,\n  TAccountSystemProgram extends string = string,\n  TAccountSysvarRent extends string = string,\n  TAccountTokenMetadataProgram extends string = string,\n  TAccountTokenProgram extends string = string,\n  TAccountAssociatedTokenProgram extends string = string,\n  TAccountLogWrapper extends string = string,\n> = {\n  voucher: Address<TAccountVoucher>;\n  leafOwner: TransactionSigner<TAccountLeafOwner>;\n  tokenAccount: Address<TAccountTokenAccount>;\n  mint: Address<TAccountMint>;\n  mintAuthority: Address<TAccountMintAuthority>;\n  metadataAccount: Address<TAccountMetadataAccount>;\n  masterEdition: Address<TAccountMasterEdition>;\n  systemProgram?: Address<TAccountSystemProgram>;\n  sysvarRent?: Address<TAccountSysvarRent>;\n  tokenMetadataProgram?: Address<TAccountTokenMetadataProgram>;\n  tokenProgram?: Address<TAccountTokenProgram>;\n  associatedTokenProgram?: Address<TAccountAssociatedTokenProgram>;\n  logWrapper?: Address<TAccountLogWrapper>;\n  metadata: DecompressV1InstructionDataArgs['metadata'];\n};\n\nexport function getDecompressV1Instruction<\n  TAccountVoucher extends string,\n  TAccountLeafOwner extends string,\n  TAccountTokenAccount extends string,\n  TAccountMint extends string,\n  TAccountMintAuthority extends string,\n  TAccountMetadataAccount extends string,\n  TAccountMasterEdition extends string,\n  TAccountSystemProgram extends string,\n  TAccountSysvarRent extends string,\n  TAccountTokenMetadataProgram extends string,\n  TAccountTokenProgram extends string,\n  TAccountAssociatedTokenProgram extends string,\n  TAccountLogWrapper extends string,\n  TProgramAddress extends Address = typeof MPL_BUBBLEGUM_PROGRAM_ADDRESS,\n>(\n  input: DecompressV1Input<\n    TAccountVoucher,\n    TAccountLeafOwner,\n    TAccountTokenAccount,\n    TAccountMint,\n    TAccountMintAuthority,\n    TAccountMetadataAccount,\n    TAccountMasterEdition,\n    TAccountSystemProgram,\n    TAccountSysvarRent,\n    TAccountTokenMetadataProgram,\n    TAccountTokenProgram,\n    TAccountAssociatedTokenProgram,\n    TAccountLogWrapper\n  >,\n  config?: { programAddress?: TProgramAddress }\n): DecompressV1Instruction<\n  TProgramAddress,\n  TAccountVoucher,\n  TAccountLeafOwner,\n  TAccountTokenAccount,\n  TAccountMint,\n  TAccountMintAuthority,\n  TAccountMetadataAccount,\n  TAccountMasterEdition,\n  TAccountSystemProgram,\n  TAccountSysvarRent,\n  TAccountTokenMetadataProgram,\n  TAccountTokenProgram,\n  TAccountAssociatedTokenProgram,\n  TAccountLogWrapper\n> {\n  // Program address.\n  const programAddress =\n    config?.programAddress ?? MPL_BUBBLEGUM_PROGRAM_ADDRESS;\n\n  // Original accounts.\n  const originalAccounts = {\n    voucher: { value: input.voucher ?? null, isWritable: true },\n    leafOwner: { value: input.leafOwner ?? null, isWritable: true },\n    tokenAccount: { value: input.tokenAccount ?? null, isWritable: true },\n    mint: { value: input.mint ?? null, isWritable: true },\n    mintAuthority: { value: input.mintAuthority ?? null, isWritable: true },\n    metadataAccount: { value: input.metadataAccount ?? null, isWritable: true },\n    masterEdition: { value: input.masterEdition ?? null, isWritable: true },\n    systemProgram: { value: input.systemProgram ?? null, isWritable: false },\n    sysvarRent: { value: input.sysvarRent ?? null, isWritable: false },\n    tokenMetadataProgram: {\n      value: input.tokenMetadataProgram ?? null,\n      isWritable: false,\n    },\n    tokenProgram: { value: input.tokenProgram ?? null, isWritable: false },\n    associatedTokenProgram: {\n      value: input.associatedTokenProgram ?? null,\n      isWritable: false,\n    },\n    logWrapper: { value: input.logWrapper ?? null, isWritable: false },\n  };\n  const accounts = originalAccounts as Record<\n    keyof typeof originalAccounts,\n    ResolvedAccount\n  >;\n\n  // Original args.\n  const args = { ...input };\n\n  // Resolve default values.\n  if (!accounts.tokenProgram.value) {\n    accounts.tokenProgram.value =\n      'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA' as Address<'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA'>;\n  }\n  if (!accounts.systemProgram.value) {\n    accounts.systemProgram.value =\n      '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>;\n  }\n  if (!accounts.sysvarRent.value) {\n    accounts.sysvarRent.value =\n      'SysvarRent111111111111111111111111111111111' as Address<'SysvarRent111111111111111111111111111111111'>;\n  }\n  if (!accounts.tokenMetadataProgram.value) {\n    accounts.tokenMetadataProgram.value =\n      'metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s' as Address<'metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s'>;\n  }\n  if (!accounts.associatedTokenProgram.value) {\n    accounts.associatedTokenProgram.value =\n      'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL' as Address<'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL'>;\n  }\n  if (!accounts.logWrapper.value) {\n    accounts.logWrapper.value =\n      'noopb9bkMVfRPU8AsbpTUg8AQkHtKwMYZiFUjNRtMmV' as Address<'noopb9bkMVfRPU8AsbpTUg8AQkHtKwMYZiFUjNRtMmV'>;\n  }\n\n  const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n  return Object.freeze({\n    accounts: [\n      getAccountMeta(accounts.voucher),\n      getAccountMeta(accounts.leafOwner),\n      getAccountMeta(accounts.tokenAccount),\n      getAccountMeta(accounts.mint),\n      getAccountMeta(accounts.mintAuthority),\n      getAccountMeta(accounts.metadataAccount),\n      getAccountMeta(accounts.masterEdition),\n      getAccountMeta(accounts.systemProgram),\n      getAccountMeta(accounts.sysvarRent),\n      getAccountMeta(accounts.tokenMetadataProgram),\n      getAccountMeta(accounts.tokenProgram),\n      getAccountMeta(accounts.associatedTokenProgram),\n      getAccountMeta(accounts.logWrapper),\n    ],\n    data: getDecompressV1InstructionDataEncoder().encode(\n      args as DecompressV1InstructionDataArgs\n    ),\n    programAddress,\n  } as DecompressV1Instruction<\n    TProgramAddress,\n    TAccountVoucher,\n    TAccountLeafOwner,\n    TAccountTokenAccount,\n    TAccountMint,\n    TAccountMintAuthority,\n    TAccountMetadataAccount,\n    TAccountMasterEdition,\n    TAccountSystemProgram,\n    TAccountSysvarRent,\n    TAccountTokenMetadataProgram,\n    TAccountTokenProgram,\n    TAccountAssociatedTokenProgram,\n    TAccountLogWrapper\n  >);\n}\n\nexport type ParsedDecompressV1Instruction<\n  TProgram extends string = typeof MPL_BUBBLEGUM_PROGRAM_ADDRESS,\n  TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n  programAddress: Address<TProgram>;\n  accounts: {\n    voucher: TAccountMetas[0];\n    leafOwner: TAccountMetas[1];\n    tokenAccount: TAccountMetas[2];\n    mint: TAccountMetas[3];\n    mintAuthority: TAccountMetas[4];\n    metadataAccount: TAccountMetas[5];\n    masterEdition: TAccountMetas[6];\n    systemProgram: TAccountMetas[7];\n    sysvarRent: TAccountMetas[8];\n    tokenMetadataProgram: TAccountMetas[9];\n    tokenProgram: TAccountMetas[10];\n    associatedTokenProgram: TAccountMetas[11];\n    logWrapper: TAccountMetas[12];\n  };\n  data: DecompressV1InstructionData;\n};\n\nexport function parseDecompressV1Instruction<\n  TProgram extends string,\n  TAccountMetas extends readonly AccountMeta[],\n>(\n  instruction: Instruction<TProgram> &\n    InstructionWithAccounts<TAccountMetas> &\n    InstructionWithData<ReadonlyUint8Array>\n): ParsedDecompressV1Instruction<TProgram, TAccountMetas> {\n  if (instruction.accounts.length < 13) {\n    // TODO: Coded error.\n    throw new Error('Not enough accounts');\n  }\n  let accountIndex = 0;\n  const getNextAccount = () => {\n    const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n    accountIndex += 1;\n    return accountMeta;\n  };\n  return {\n    programAddress: instruction.programAddress,\n    accounts: {\n      voucher: getNextAccount(),\n      leafOwner: getNextAccount(),\n      tokenAccount: getNextAccount(),\n      mint: getNextAccount(),\n      mintAuthority: getNextAccount(),\n      metadataAccount: getNextAccount(),\n      masterEdition: getNextAccount(),\n      systemProgram: getNextAccount(),\n      sysvarRent: getNextAccount(),\n      tokenMetadataProgram: getNextAccount(),\n      tokenProgram: getNextAccount(),\n      associatedTokenProgram: getNextAccount(),\n      logWrapper: getNextAccount(),\n    },\n    data: getDecompressV1InstructionDataDecoder().decode(instruction.data),\n  };\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  AccountRole,\n  combineCodec,\n  fixDecoderSize,\n  fixEncoderSize,\n  getBytesDecoder,\n  getBytesEncoder,\n  getStructDecoder,\n  getStructEncoder,\n  getU32Decoder,\n  getU32Encoder,\n  getU64Decoder,\n  getU64Encoder,\n  transformEncoder,\n  type AccountMeta,\n  type AccountSignerMeta,\n  type Address,\n  type FixedSizeCodec,\n  type FixedSizeDecoder,\n  type FixedSizeEncoder,\n  type Instruction,\n  type InstructionWithAccounts,\n  type InstructionWithData,\n  type ReadonlyAccount,\n  type ReadonlySignerAccount,\n  type ReadonlyUint8Array,\n  type TransactionSigner,\n  type WritableAccount,\n} from '@solana/kit';\nimport { findTreeConfigPda } from '../pdas';\nimport { MPL_BUBBLEGUM_PROGRAM_ADDRESS } from '../programs';\nimport {\n  expectAddress,\n  getAccountMetaFactory,\n  type ResolvedAccount,\n} from '../shared';\n\nexport const DELEGATE_DISCRIMINATOR = new Uint8Array([\n  90, 147, 75, 178, 85, 88, 4, 137,\n]);\n\nexport function getDelegateDiscriminatorBytes() {\n  return fixEncoderSize(getBytesEncoder(), 8).encode(DELEGATE_DISCRIMINATOR);\n}\n\nexport type DelegateInstruction<\n  TProgram extends string = typeof MPL_BUBBLEGUM_PROGRAM_ADDRESS,\n  TAccountTreeConfig extends string | AccountMeta<string> = string,\n  TAccountLeafOwner extends string | AccountMeta<string> = string,\n  TAccountPreviousLeafDelegate extends string | AccountMeta<string> = string,\n  TAccountNewLeafDelegate extends string | AccountMeta<string> = string,\n  TAccountMerkleTree extends string | AccountMeta<string> = string,\n  TAccountLogWrapper extends\n    | string\n    | AccountMeta<string> = 'noopb9bkMVfRPU8AsbpTUg8AQkHtKwMYZiFUjNRtMmV',\n  TAccountCompressionProgram extends\n    | string\n    | AccountMeta<string> = 'cmtDvXumGCrqC1Age74AVPhSRVXJMd8PJS91L8KbNCK',\n  TAccountSystemProgram extends\n    | string\n    | AccountMeta<string> = '11111111111111111111111111111111',\n  TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n  InstructionWithData<ReadonlyUint8Array> &\n  InstructionWithAccounts<\n    [\n      TAccountTreeConfig extends string\n        ? ReadonlyAccount<TAccountTreeConfig>\n        : TAccountTreeConfig,\n      TAccountLeafOwner extends string\n        ? ReadonlySignerAccount<TAccountLeafOwner> &\n            AccountSignerMeta<TAccountLeafOwner>\n        : TAccountLeafOwner,\n      TAccountPreviousLeafDelegate extends string\n        ? ReadonlyAccount<TAccountPreviousLeafDelegate>\n        : TAccountPreviousLeafDelegate,\n      TAccountNewLeafDelegate extends string\n        ? ReadonlyAccount<TAccountNewLeafDelegate>\n        : TAccountNewLeafDelegate,\n      TAccountMerkleTree extends string\n        ? WritableAccount<TAccountMerkleTree>\n        : TAccountMerkleTree,\n      TAccountLogWrapper extends string\n        ? ReadonlyAccount<TAccountLogWrapper>\n        : TAccountLogWrapper,\n      TAccountCompressionProgram extends string\n        ? ReadonlyAccount<TAccountCompressionProgram>\n        : TAccountCompressionProgram,\n      TAccountSystemProgram extends string\n        ? ReadonlyAccount<TAccountSystemProgram>\n        : TAccountSystemProgram,\n      ...TRemainingAccounts,\n    ]\n  >;\n\nexport type DelegateInstructionData = {\n  discriminator: ReadonlyUint8Array;\n  root: ReadonlyUint8Array;\n  dataHash: ReadonlyUint8Array;\n  creatorHash: ReadonlyUint8Array;\n  nonce: bigint;\n  index: number;\n};\n\nexport type DelegateInstructionDataArgs = {\n  root: ReadonlyUint8Array;\n  dataHash: ReadonlyUint8Array;\n  creatorHash: ReadonlyUint8Array;\n  nonce: number | bigint;\n  index: number;\n};\n\nexport function getDelegateInstructionDataEncoder(): FixedSizeEncoder<DelegateInstructionDataArgs> {\n  return transformEncoder(\n    getStructEncoder([\n      ['discriminator', fixEncoderSize(getBytesEncoder(), 8)],\n      ['root', fixEncoderSize(getBytesEncoder(), 32)],\n      ['dataHash', fixEncoderSize(getBytesEncoder(), 32)],\n      ['creatorHash', fixEncoderSize(getBytesEncoder(), 32)],\n      ['nonce', getU64Encoder()],\n      ['index', getU32Encoder()],\n    ]),\n    (value) => ({ ...value, discriminator: DELEGATE_DISCRIMINATOR })\n  );\n}\n\nexport function getDelegateInstructionDataDecoder(): FixedSizeDecoder<DelegateInstructionData> {\n  return getStructDecoder([\n    ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n    ['root', fixDecoderSize(getBytesDecoder(), 32)],\n    ['dataHash', fixDecoderSize(getBytesDecoder(), 32)],\n    ['creatorHash', fixDecoderSize(getBytesDecoder(), 32)],\n    ['nonce', getU64Decoder()],\n    ['index', getU32Decoder()],\n  ]);\n}\n\nexport function getDelegateInstructionDataCodec(): FixedSizeCodec<\n  DelegateInstructionDataArgs,\n  DelegateInstructionData\n> {\n  return combineCodec(\n    getDelegateInstructionDataEncoder(),\n    getDelegateInstructionDataDecoder()\n  );\n}\n\nexport type DelegateAsyncInput<\n  TAccountTreeConfig extends string = string,\n  TAccountLeafOwner extends string = string,\n  TAccountPreviousLeafDelegate extends string = string,\n  TAccountNewLeafDelegate extends string = string,\n  TAccountMerkleTree extends string = string,\n  TAccountLogWrapper extends string = string,\n  TAccountCompressionProgram extends string = string,\n  TAccountSystemProgram extends string = string,\n> = {\n  treeConfig?: Address<TAccountTreeConfig>;\n  leafOwner: TransactionSigner<TAccountLeafOwner>;\n  previousLeafDelegate: Address<TAccountPreviousLeafDelegate>;\n  newLeafDelegate: Address<TAccountNewLeafDelegate>;\n  merkleTree: Address<TAccountMerkleTree>;\n  logWrapper?: Address<TAccountLogWrapper>;\n  compressionProgram?: Address<TAccountCompressionProgram>;\n  systemProgram?: Address<TAccountSystemProgram>;\n  root: DelegateInstructionDataArgs['root'];\n  dataHash: DelegateInstructionDataArgs['dataHash'];\n  creatorHash: DelegateInstructionDataArgs['creatorHash'];\n  nonce: DelegateInstructionDataArgs['nonce'];\n  index: DelegateInstructionDataArgs['index'];\n  proof?: Array<Address>;\n};\n\nexport async function getDelegateInstructionAsync<\n  TAccountTreeConfig extends string,\n  TAccountLeafOwner extends string,\n  TAccountPreviousLeafDelegate extends string,\n  TAccountNewLeafDelegate extends string,\n  TAccountMerkleTree extends string,\n  TAccountLogWrapper extends string,\n  TAccountCompressionProgram extends string,\n  TAccountSystemProgram extends string,\n  TProgramAddress extends Address = typeof MPL_BUBBLEGUM_PROGRAM_ADDRESS,\n>(\n  input: DelegateAsyncInput<\n    TAccountTreeConfig,\n    TAccountLeafOwner,\n    TAccountPreviousLeafDelegate,\n    TAccountNewLeafDelegate,\n    TAccountMerkleTree,\n    TAccountLogWrapper,\n    TAccountCompressionProgram,\n    TAccountSystemProgram\n  >,\n  config?: { programAddress?: TProgramAddress }\n): Promise<\n  DelegateInstruction<\n    TProgramAddress,\n    TAccountTreeConfig,\n    TAccountLeafOwner,\n    TAccountPreviousLeafDelegate,\n    TAccountNewLeafDelegate,\n    TAccountMerkleTree,\n    TAccountLogWrapper,\n    TAccountCompressionProgram,\n    TAccountSystemProgram\n  >\n> {\n  // Program address.\n  const programAddress =\n    config?.programAddress ?? MPL_BUBBLEGUM_PROGRAM_ADDRESS;\n\n  // Original accounts.\n  const originalAccounts = {\n    treeConfig: { value: input.treeConfig ?? null, isWritable: false },\n    leafOwner: { value: input.leafOwner ?? null, isWritable: false },\n    previousLeafDelegate: {\n      value: input.previousLeafDelegate ?? null,\n      isWritable: false,\n    },\n    newLeafDelegate: {\n      value: input.newLeafDelegate ?? null,\n      isWritable: false,\n    },\n    merkleTree: { value: input.merkleTree ?? null, isWritable: true },\n    logWrapper: { value: input.logWrapper ?? null, isWritable: false },\n    compressionProgram: {\n      value: input.compressionProgram ?? null,\n      isWritable: false,\n    },\n    systemProgram: { value: input.systemProgram ?? null, isWritable: false },\n  };\n  const accounts = originalAccounts as Record<\n    keyof typeof originalAccounts,\n    ResolvedAccount\n  >;\n\n  // Original args.\n  const args = { ...input };\n\n  // Resolve default values.\n  if (!accounts.treeConfig.value) {\n    accounts.treeConfig.value = await findTreeConfigPda({\n      merkleTree: expectAddress(accounts.merkleTree.value),\n    });\n  }\n  if (!accounts.logWrapper.value) {\n    accounts.logWrapper.value =\n      'noopb9bkMVfRPU8AsbpTUg8AQkHtKwMYZiFUjNRtMmV' as Address<'noopb9bkMVfRPU8AsbpTUg8AQkHtKwMYZiFUjNRtMmV'>;\n  }\n  if (!accounts.compressionProgram.value) {\n    accounts.compressionProgram.value =\n      'cmtDvXumGCrqC1Age74AVPhSRVXJMd8PJS91L8KbNCK' as Address<'cmtDvXumGCrqC1Age74AVPhSRVXJMd8PJS91L8KbNCK'>;\n  }\n  if (!accounts.systemProgram.value) {\n    accounts.systemProgram.value =\n      '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>;\n  }\n\n  // Remaining accounts.\n  const remainingAccounts: AccountMeta[] = (args.proof ?? []).map(\n    (address) => ({ address, role: AccountRole.READONLY })\n  );\n\n  const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n  return Object.freeze({\n    accounts: [\n      getAccountMeta(accounts.treeConfig),\n      getAccountMeta(accounts.leafOwner),\n      getAccountMeta(accounts.previousLeafDelegate),\n      getAccountMeta(accounts.newLeafDelegate),\n      getAccountMeta(accounts.merkleTree),\n      getAccountMeta(accounts.logWrapper),\n      getAccountMeta(accounts.compressionProgram),\n      getAccountMeta(accounts.systemProgram),\n      ...remainingAccounts,\n    ],\n    data: getDelegateInstructionDataEncoder().encode(\n      args as DelegateInstructionDataArgs\n    ),\n    programAddress,\n  } as DelegateInstruction<\n    TProgramAddress,\n    TAccountTreeConfig,\n    TAccountLeafOwner,\n    TAccountPreviousLeafDelegate,\n    TAccountNewLeafDelegate,\n    TAccountMerkleTree,\n    TAccountLogWrapper,\n    TAccountCompressionProgram,\n    TAccountSystemProgram\n  >);\n}\n\nexport type DelegateInput<\n  TAccountTreeConfig extends string = string,\n  TAccountLeafOwner extends string = string,\n  TAccountPreviousLeafDelegate extends string = string,\n  TAccountNewLeafDelegate extends string = string,\n  TAccountMerkleTree extends string = string,\n  TAccountLogWrapper extends string = string,\n  TAccountCompressionProgram extends string = string,\n  TAccountSystemProgram extends string = string,\n> = {\n  treeConfig: Address<TAccountTreeConfig>;\n  leafOwner: TransactionSigner<TAccountLeafOwner>;\n  previousLeafDelegate: Address<TAccountPreviousLeafDelegate>;\n  newLeafDelegate: Address<TAccountNewLeafDelegate>;\n  merkleTree: Address<TAccountMerkleTree>;\n  logWrapper?: Address<TAccountLogWrapper>;\n  compressionProgram?: Address<TAccountCompressionProgram>;\n  systemProgram?: Address<TAccountSystemProgram>;\n  root: DelegateInstructionDataArgs['root'];\n  dataHash: DelegateInstructionDataArgs['dataHash'];\n  creatorHash: DelegateInstructionDataArgs['creatorHash'];\n  nonce: DelegateInstructionDataArgs['nonce'];\n  index: DelegateInstructionDataArgs['index'];\n  proof?: Array<Address>;\n};\n\nexport function getDelegateInstruction<\n  TAccountTreeConfig extends string,\n  TAccountLeafOwner extends string,\n  TAccountPreviousLeafDelegate extends string,\n  TAccountNewLeafDelegate extends string,\n  TAccountMerkleTree extends string,\n  TAccountLogWrapper extends string,\n  TAccountCompressionProgram extends string,\n  TAccountSystemProgram extends string,\n  TProgramAddress extends Address = typeof MPL_BUBBLEGUM_PROGRAM_ADDRESS,\n>(\n  input: DelegateInput<\n    TAccountTreeConfig,\n    TAccountLeafOwner,\n    TAccountPreviousLeafDelegate,\n    TAccountNewLeafDelegate,\n    TAccountMerkleTree,\n    TAccountLogWrapper,\n    TAccountCompressionProgram,\n    TAccountSystemProgram\n  >,\n  config?: { programAddress?: TProgramAddress }\n): DelegateInstruction<\n  TProgramAddress,\n  TAccountTreeConfig,\n  TAccountLeafOwner,\n  TAccountPreviousLeafDelegate,\n  TAccountNewLeafDelegate,\n  TAccountMerkleTree,\n  TAccountLogWrapper,\n  TAccountCompressionProgram,\n  TAccountSystemProgram\n> {\n  // Program address.\n  const programAddress =\n    config?.programAddress ?? MPL_BUBBLEGUM_PROGRAM_ADDRESS;\n\n  // Original accounts.\n  const originalAccounts = {\n    treeConfig: { value: input.treeConfig ?? null, isWritable: false },\n    leafOwner: { value: input.leafOwner ?? null, isWritable: false },\n    previousLeafDelegate: {\n      value: input.previousLeafDelegate ?? null,\n      isWritable: false,\n    },\n    newLeafDelegate: {\n      value: input.newLeafDelegate ?? null,\n      isWritable: false,\n    },\n    merkleTree: { value: input.merkleTree ?? null, isWritable: true },\n    logWrapper: { value: input.logWrapper ?? null, isWritable: false },\n    compressionProgram: {\n      value: input.compressionProgram ?? null,\n      isWritable: false,\n    },\n    systemProgram: { value: input.systemProgram ?? null, isWritable: false },\n  };\n  const accounts = originalAccounts as Record<\n    keyof typeof originalAccounts,\n    ResolvedAccount\n  >;\n\n  // Original args.\n  const args = { ...input };\n\n  // Resolve default values.\n  if (!accounts.logWrapper.value) {\n    accounts.logWrapper.value =\n      'noopb9bkMVfRPU8AsbpTUg8AQkHtKwMYZiFUjNRtMmV' as Address<'noopb9bkMVfRPU8AsbpTUg8AQkHtKwMYZiFUjNRtMmV'>;\n  }\n  if (!accounts.compressionProgram.value) {\n    accounts.compressionProgram.value =\n      'cmtDvXumGCrqC1Age74AVPhSRVXJMd8PJS91L8KbNCK' as Address<'cmtDvXumGCrqC1Age74AVPhSRVXJMd8PJS91L8KbNCK'>;\n  }\n  if (!accounts.systemProgram.value) {\n    accounts.systemProgram.value =\n      '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>;\n  }\n\n  // Remaining accounts.\n  const remainingAccounts: AccountMeta[] = (args.proof ?? []).map(\n    (address) => ({ address, role: AccountRole.READONLY })\n  );\n\n  const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n  return Object.freeze({\n    accounts: [\n      getAccountMeta(accounts.treeConfig),\n      getAccountMeta(accounts.leafOwner),\n      getAccountMeta(accounts.previousLeafDelegate),\n      getAccountMeta(accounts.newLeafDelegate),\n      getAccountMeta(accounts.merkleTree),\n      getAccountMeta(accounts.logWrapper),\n      getAccountMeta(accounts.compressionProgram),\n      getAccountMeta(accounts.systemProgram),\n      ...remainingAccounts,\n    ],\n    data: getDelegateInstructionDataEncoder().encode(\n      args as DelegateInstructionDataArgs\n    ),\n    programAddress,\n  } as DelegateInstruction<\n    TProgramAddress,\n    TAccountTreeConfig,\n    TAccountLeafOwner,\n    TAccountPreviousLeafDelegate,\n    TAccountNewLeafDelegate,\n    TAccountMerkleTree,\n    TAccountLogWrapper,\n    TAccountCompressionProgram,\n    TAccountSystemProgram\n  >);\n}\n\nexport type ParsedDelegateInstruction<\n  TProgram extends string = typeof MPL_BUBBLEGUM_PROGRAM_ADDRESS,\n  TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n  programAddress: Address<TProgram>;\n  accounts: {\n    treeConfig: TAccountMetas[0];\n    leafOwner: TAccountMetas[1];\n    previousLeafDelegate: TAccountMetas[2];\n    newLeafDelegate: TAccountMetas[3];\n    merkleTree: TAccountMetas[4];\n    logWrapper: TAccountMetas[5];\n    compressionProgram: TAccountMetas[6];\n    systemProgram: TAccountMetas[7];\n  };\n  data: DelegateInstructionData;\n};\n\nexport function parseDelegateInstruction<\n  TProgram extends string,\n  TAccountMetas extends readonly AccountMeta[],\n>(\n  instruction: Instruction<TProgram> &\n    InstructionWithAccounts<TAccountMetas> &\n    InstructionWithData<ReadonlyUint8Array>\n): ParsedDelegateInstruction<TProgram, TAccountMetas> {\n  if (instruction.accounts.length < 8) {\n    // TODO: Coded error.\n    throw new Error('Not enough accounts');\n  }\n  let accountIndex = 0;\n  const getNextAccount = () => {\n    const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n    accountIndex += 1;\n    return accountMeta;\n  };\n  return {\n    programAddress: instruction.programAddress,\n    accounts: {\n      treeConfig: getNextAccount(),\n      leafOwner: getNextAccount(),\n      previousLeafDelegate: getNextAccount(),\n      newLeafDelegate: getNextAccount(),\n      merkleTree: getNextAccount(),\n      logWrapper: getNextAccount(),\n      compressionProgram: getNextAccount(),\n      systemProgram: getNextAccount(),\n    },\n    data: getDelegateInstructionDataDecoder().decode(instruction.data),\n  };\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  AccountRole,\n  combineCodec,\n  fixDecoderSize,\n  fixEncoderSize,\n  getBytesDecoder,\n  getBytesEncoder,\n  getOptionDecoder,\n  getOptionEncoder,\n  getStructDecoder,\n  getStructEncoder,\n  getU32Decoder,\n  getU32Encoder,\n  getU64Decoder,\n  getU64Encoder,\n  getU8Decoder,\n  getU8Encoder,\n  none,\n  transformEncoder,\n  type AccountMeta,\n  type AccountSignerMeta,\n  type Address,\n  type Codec,\n  type Decoder,\n  type Encoder,\n  type Instruction,\n  type InstructionWithAccounts,\n  type InstructionWithData,\n  type Option,\n  type OptionOrNullable,\n  type ReadonlyAccount,\n  type ReadonlySignerAccount,\n  type ReadonlyUint8Array,\n  type TransactionSigner,\n  type WritableAccount,\n  type WritableSignerAccount,\n} from '@solana/kit';\nimport { findTreeConfigPda } from '../pdas';\nimport { MPL_BUBBLEGUM_PROGRAM_ADDRESS } from '../programs';\nimport {\n  expectAddress,\n  getAccountMetaFactory,\n  type ResolvedAccount,\n} from '../shared';\n\nexport const DELEGATE_AND_FREEZE_V2_DISCRIMINATOR = new Uint8Array([\n  17, 229, 35, 218, 190, 241, 250, 123,\n]);\n\nexport function getDelegateAndFreezeV2DiscriminatorBytes() {\n  return fixEncoderSize(getBytesEncoder(), 8).encode(\n    DELEGATE_AND_FREEZE_V2_DISCRIMINATOR\n  );\n}\n\nexport type DelegateAndFreezeV2Instruction<\n  TProgram extends string = typeof MPL_BUBBLEGUM_PROGRAM_ADDRESS,\n  TAccountTreeConfig extends string | AccountMeta<string> = string,\n  TAccountPayer extends string | AccountMeta<string> = string,\n  TAccountLeafOwner extends string | AccountMeta<string> = string,\n  TAccountPreviousLeafDelegate extends string | AccountMeta<string> = string,\n  TAccountNewLeafDelegate extends string | AccountMeta<string> = string,\n  TAccountMerkleTree extends string | AccountMeta<string> = string,\n  TAccountLogWrapper extends\n    | string\n    | AccountMeta<string> = 'mnoopTCrg4p8ry25e4bcWA9XZjbNjMTfgYVGGEdRsf3',\n  TAccountCompressionProgram extends\n    | string\n    | AccountMeta<string> = 'mcmt6YrQEMKw8Mw43FmpRLmf7BqRnFMKmAcbxE3xkAW',\n  TAccountSystemProgram extends\n    | string\n    | AccountMeta<string> = '11111111111111111111111111111111',\n  TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n  InstructionWithData<ReadonlyUint8Array> &\n  InstructionWithAccounts<\n    [\n      TAccountTreeConfig extends string\n        ? WritableAccount<TAccountTreeConfig>\n        : TAccountTreeConfig,\n      TAccountPayer extends string\n        ? WritableSignerAccount<TAccountPayer> &\n            AccountSignerMeta<TAccountPayer>\n        : TAccountPayer,\n      TAccountLeafOwner extends string\n        ? ReadonlySignerAccount<TAccountLeafOwner> &\n            AccountSignerMeta<TAccountLeafOwner>\n        : TAccountLeafOwner,\n      TAccountPreviousLeafDelegate extends string\n        ? ReadonlyAccount<TAccountPreviousLeafDelegate>\n        : TAccountPreviousLeafDelegate,\n      TAccountNewLeafDelegate extends string\n        ? ReadonlyAccount<TAccountNewLeafDelegate>\n        : TAccountNewLeafDelegate,\n      TAccountMerkleTree extends string\n        ? WritableAccount<TAccountMerkleTree>\n        : TAccountMerkleTree,\n      TAccountLogWrapper extends string\n        ? ReadonlyAccount<TAccountLogWrapper>\n        : TAccountLogWrapper,\n      TAccountCompressionProgram extends string\n        ? ReadonlyAccount<TAccountCompressionProgram>\n        : TAccountCompressionProgram,\n      TAccountSystemProgram extends string\n        ? ReadonlyAccount<TAccountSystemProgram>\n        : TAccountSystemProgram,\n      ...TRemainingAccounts,\n    ]\n  >;\n\nexport type DelegateAndFreezeV2InstructionData = {\n  discriminator: ReadonlyUint8Array;\n  root: ReadonlyUint8Array;\n  dataHash: ReadonlyUint8Array;\n  creatorHash: ReadonlyUint8Array;\n  collectionHash: Option<ReadonlyUint8Array>;\n  assetDataHash: Option<ReadonlyUint8Array>;\n  flags: Option<number>;\n  nonce: bigint;\n  index: number;\n};\n\nexport type DelegateAndFreezeV2InstructionDataArgs = {\n  root: ReadonlyUint8Array;\n  dataHash: ReadonlyUint8Array;\n  creatorHash: ReadonlyUint8Array;\n  collectionHash?: OptionOrNullable<ReadonlyUint8Array>;\n  assetDataHash?: OptionOrNullable<ReadonlyUint8Array>;\n  flags?: OptionOrNullable<number>;\n  nonce: number | bigint;\n  index: number;\n};\n\nexport function getDelegateAndFreezeV2InstructionDataEncoder(): Encoder<DelegateAndFreezeV2InstructionDataArgs> {\n  return transformEncoder(\n    getStructEncoder([\n      ['discriminator', fixEncoderSize(getBytesEncoder(), 8)],\n      ['root', fixEncoderSize(getBytesEncoder(), 32)],\n      ['dataHash', fixEncoderSize(getBytesEncoder(), 32)],\n      ['creatorHash', fixEncoderSize(getBytesEncoder(), 32)],\n      [\n        'collectionHash',\n        getOptionEncoder(fixEncoderSize(getBytesEncoder(), 32)),\n      ],\n      [\n        'assetDataHash',\n        getOptionEncoder(fixEncoderSize(getBytesEncoder(), 32)),\n      ],\n      ['flags', getOptionEncoder(getU8Encoder())],\n      ['nonce', getU64Encoder()],\n      ['index', getU32Encoder()],\n    ]),\n    (value) => ({\n      ...value,\n      discriminator: DELEGATE_AND_FREEZE_V2_DISCRIMINATOR,\n      collectionHash: value.collectionHash ?? none(),\n      assetDataHash: value.assetDataHash ?? none(),\n      flags: value.flags ?? none(),\n    })\n  );\n}\n\nexport function getDelegateAndFreezeV2InstructionDataDecoder(): Decoder<DelegateAndFreezeV2InstructionData> {\n  return getStructDecoder([\n    ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n    ['root', fixDecoderSize(getBytesDecoder(), 32)],\n    ['dataHash', fixDecoderSize(getBytesDecoder(), 32)],\n    ['creatorHash', fixDecoderSize(getBytesDecoder(), 32)],\n    ['collectionHash', getOptionDecoder(fixDecoderSize(getBytesDecoder(), 32))],\n    ['assetDataHash', getOptionDecoder(fixDecoderSize(getBytesDecoder(), 32))],\n    ['flags', getOptionDecoder(getU8Decoder())],\n    ['nonce', getU64Decoder()],\n    ['index', getU32Decoder()],\n  ]);\n}\n\nexport function getDelegateAndFreezeV2InstructionDataCodec(): Codec<\n  DelegateAndFreezeV2InstructionDataArgs,\n  DelegateAndFreezeV2InstructionData\n> {\n  return combineCodec(\n    getDelegateAndFreezeV2InstructionDataEncoder(),\n    getDelegateAndFreezeV2InstructionDataDecoder()\n  );\n}\n\nexport type DelegateAndFreezeV2AsyncInput<\n  TAccountTreeConfig extends string = string,\n  TAccountPayer extends string = string,\n  TAccountLeafOwner extends string = string,\n  TAccountPreviousLeafDelegate extends string = string,\n  TAccountNewLeafDelegate extends string = string,\n  TAccountMerkleTree extends string = string,\n  TAccountLogWrapper extends string = string,\n  TAccountCompressionProgram extends string = string,\n  TAccountSystemProgram extends string = string,\n> = {\n  treeConfig?: Address<TAccountTreeConfig>;\n  payer: TransactionSigner<TAccountPayer>;\n  /** Optional leaf owner, defaults to `payer` */\n  leafOwner?: TransactionSigner<TAccountLeafOwner>;\n  /** Defaults to `leaf_owner` */\n  previousLeafDelegate?: Address<TAccountPreviousLeafDelegate>;\n  newLeafDelegate: Address<TAccountNewLeafDelegate>;\n  merkleTree: Address<TAccountMerkleTree>;\n  logWrapper?: Address<TAccountLogWrapper>;\n  compressionProgram?: Address<TAccountCompressionProgram>;\n  systemProgram?: Address<TAccountSystemProgram>;\n  root: DelegateAndFreezeV2InstructionDataArgs['root'];\n  dataHash: DelegateAndFreezeV2InstructionDataArgs['dataHash'];\n  creatorHash: DelegateAndFreezeV2InstructionDataArgs['creatorHash'];\n  collectionHash?: DelegateAndFreezeV2InstructionDataArgs['collectionHash'];\n  assetDataHash?: DelegateAndFreezeV2InstructionDataArgs['assetDataHash'];\n  flags?: DelegateAndFreezeV2InstructionDataArgs['flags'];\n  nonce: DelegateAndFreezeV2InstructionDataArgs['nonce'];\n  index: DelegateAndFreezeV2InstructionDataArgs['index'];\n  proof?: Array<Address>;\n};\n\nexport async function getDelegateAndFreezeV2InstructionAsync<\n  TAccountTreeConfig extends string,\n  TAccountPayer extends string,\n  TAccountLeafOwner extends string,\n  TAccountPreviousLeafDelegate extends string,\n  TAccountNewLeafDelegate extends string,\n  TAccountMerkleTree extends string,\n  TAccountLogWrapper extends string,\n  TAccountCompressionProgram extends string,\n  TAccountSystemProgram extends string,\n  TProgramAddress extends Address = typeof MPL_BUBBLEGUM_PROGRAM_ADDRESS,\n>(\n  input: DelegateAndFreezeV2AsyncInput<\n    TAccountTreeConfig,\n    TAccountPayer,\n    TAccountLeafOwner,\n    TAccountPreviousLeafDelegate,\n    TAccountNewLeafDelegate,\n    TAccountMerkleTree,\n    TAccountLogWrapper,\n    TAccountCompressionProgram,\n    TAccountSystemProgram\n  >,\n  config?: { programAddress?: TProgramAddress }\n): Promise<\n  DelegateAndFreezeV2Instruction<\n    TProgramAddress,\n    TAccountTreeConfig,\n    TAccountPayer,\n    TAccountLeafOwner,\n    TAccountPreviousLeafDelegate,\n    TAccountNewLeafDelegate,\n    TAccountMerkleTree,\n    TAccountLogWrapper,\n    TAccountCompressionProgram,\n    TAccountSystemProgram\n  >\n> {\n  // Program address.\n  const programAddress =\n    config?.programAddress ?? MPL_BUBBLEGUM_PROGRAM_ADDRESS;\n\n  // Original accounts.\n  const originalAccounts = {\n    treeConfig: { value: input.treeConfig ?? null, isWritable: true },\n    payer: { value: input.payer ?? null, isWritable: true },\n    leafOwner: { value: input.leafOwner ?? null, isWritable: false },\n    previousLeafDelegate: {\n      value: input.previousLeafDelegate ?? null,\n      isWritable: false,\n    },\n    newLeafDelegate: {\n      value: input.newLeafDelegate ?? null,\n      isWritable: false,\n    },\n    merkleTree: { value: input.merkleTree ?? null, isWritable: true },\n    logWrapper: { value: input.logWrapper ?? null, isWritable: false },\n    compressionProgram: {\n      value: input.compressionProgram ?? null,\n      isWritable: false,\n    },\n    systemProgram: { value: input.systemProgram ?? null, isWritable: false },\n  };\n  const accounts = originalAccounts as Record<\n    keyof typeof originalAccounts,\n    ResolvedAccount\n  >;\n\n  // Original args.\n  const args = { ...input };\n\n  // Resolve default values.\n  if (!accounts.treeConfig.value) {\n    accounts.treeConfig.value = await findTreeConfigPda({\n      merkleTree: expectAddress(accounts.merkleTree.value),\n    });\n  }\n  if (!accounts.logWrapper.value) {\n    accounts.logWrapper.value =\n      'mnoopTCrg4p8ry25e4bcWA9XZjbNjMTfgYVGGEdRsf3' as Address<'mnoopTCrg4p8ry25e4bcWA9XZjbNjMTfgYVGGEdRsf3'>;\n  }\n  if (!accounts.compressionProgram.value) {\n    accounts.compressionProgram.value =\n      'mcmt6YrQEMKw8Mw43FmpRLmf7BqRnFMKmAcbxE3xkAW' as Address<'mcmt6YrQEMKw8Mw43FmpRLmf7BqRnFMKmAcbxE3xkAW'>;\n  }\n  if (!accounts.systemProgram.value) {\n    accounts.systemProgram.value =\n      '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>;\n  }\n\n  // Remaining accounts.\n  const remainingAccounts: AccountMeta[] = (args.proof ?? []).map(\n    (address) => ({ address, role: AccountRole.READONLY })\n  );\n\n  const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n  return Object.freeze({\n    accounts: [\n      getAccountMeta(accounts.treeConfig),\n      getAccountMeta(accounts.payer),\n      getAccountMeta(accounts.leafOwner),\n      getAccountMeta(accounts.previousLeafDelegate),\n      getAccountMeta(accounts.newLeafDelegate),\n      getAccountMeta(accounts.merkleTree),\n      getAccountMeta(accounts.logWrapper),\n      getAccountMeta(accounts.compressionProgram),\n      getAccountMeta(accounts.systemProgram),\n      ...remainingAccounts,\n    ],\n    data: getDelegateAndFreezeV2InstructionDataEncoder().encode(\n      args as DelegateAndFreezeV2InstructionDataArgs\n    ),\n    programAddress,\n  } as DelegateAndFreezeV2Instruction<\n    TProgramAddress,\n    TAccountTreeConfig,\n    TAccountPayer,\n    TAccountLeafOwner,\n    TAccountPreviousLeafDelegate,\n    TAccountNewLeafDelegate,\n    TAccountMerkleTree,\n    TAccountLogWrapper,\n    TAccountCompressionProgram,\n    TAccountSystemProgram\n  >);\n}\n\nexport type DelegateAndFreezeV2Input<\n  TAccountTreeConfig extends string = string,\n  TAccountPayer extends string = string,\n  TAccountLeafOwner extends string = string,\n  TAccountPreviousLeafDelegate extends string = string,\n  TAccountNewLeafDelegate extends string = string,\n  TAccountMerkleTree extends string = string,\n  TAccountLogWrapper extends string = string,\n  TAccountCompressionProgram extends string = string,\n  TAccountSystemProgram extends string = string,\n> = {\n  treeConfig: Address<TAccountTreeConfig>;\n  payer: TransactionSigner<TAccountPayer>;\n  /** Optional leaf owner, defaults to `payer` */\n  leafOwner?: TransactionSigner<TAccountLeafOwner>;\n  /** Defaults to `leaf_owner` */\n  previousLeafDelegate?: Address<TAccountPreviousLeafDelegate>;\n  newLeafDelegate: Address<TAccountNewLeafDelegate>;\n  merkleTree: Address<TAccountMerkleTree>;\n  logWrapper?: Address<TAccountLogWrapper>;\n  compressionProgram?: Address<TAccountCompressionProgram>;\n  systemProgram?: Address<TAccountSystemProgram>;\n  root: DelegateAndFreezeV2InstructionDataArgs['root'];\n  dataHash: DelegateAndFreezeV2InstructionDataArgs['dataHash'];\n  creatorHash: DelegateAndFreezeV2InstructionDataArgs['creatorHash'];\n  collectionHash?: DelegateAndFreezeV2InstructionDataArgs['collectionHash'];\n  assetDataHash?: DelegateAndFreezeV2InstructionDataArgs['assetDataHash'];\n  flags?: DelegateAndFreezeV2InstructionDataArgs['flags'];\n  nonce: DelegateAndFreezeV2InstructionDataArgs['nonce'];\n  index: DelegateAndFreezeV2InstructionDataArgs['index'];\n  proof?: Array<Address>;\n};\n\nexport function getDelegateAndFreezeV2Instruction<\n  TAccountTreeConfig extends string,\n  TAccountPayer extends string,\n  TAccountLeafOwner extends string,\n  TAccountPreviousLeafDelegate extends string,\n  TAccountNewLeafDelegate extends string,\n  TAccountMerkleTree extends string,\n  TAccountLogWrapper extends string,\n  TAccountCompressionProgram extends string,\n  TAccountSystemProgram extends string,\n  TProgramAddress extends Address = typeof MPL_BUBBLEGUM_PROGRAM_ADDRESS,\n>(\n  input: DelegateAndFreezeV2Input<\n    TAccountTreeConfig,\n    TAccountPayer,\n    TAccountLeafOwner,\n    TAccountPreviousLeafDelegate,\n    TAccountNewLeafDelegate,\n    TAccountMerkleTree,\n    TAccountLogWrapper,\n    TAccountCompressionProgram,\n    TAccountSystemProgram\n  >,\n  config?: { programAddress?: TProgramAddress }\n): DelegateAndFreezeV2Instruction<\n  TProgramAddress,\n  TAccountTreeConfig,\n  TAccountPayer,\n  TAccountLeafOwner,\n  TAccountPreviousLeafDelegate,\n  TAccountNewLeafDelegate,\n  TAccountMerkleTree,\n  TAccountLogWrapper,\n  TAccountCompressionProgram,\n  TAccountSystemProgram\n> {\n  // Program address.\n  const programAddress =\n    config?.programAddress ?? MPL_BUBBLEGUM_PROGRAM_ADDRESS;\n\n  // Original accounts.\n  const originalAccounts = {\n    treeConfig: { value: input.treeConfig ?? null, isWritable: true },\n    payer: { value: input.payer ?? null, isWritable: true },\n    leafOwner: { value: input.leafOwner ?? null, isWritable: false },\n    previousLeafDelegate: {\n      value: input.previousLeafDelegate ?? null,\n      isWritable: false,\n    },\n    newLeafDelegate: {\n      value: input.newLeafDelegate ?? null,\n      isWritable: false,\n    },\n    merkleTree: { value: input.merkleTree ?? null, isWritable: true },\n    logWrapper: { value: input.logWrapper ?? null, isWritable: false },\n    compressionProgram: {\n      value: input.compressionProgram ?? null,\n      isWritable: false,\n    },\n    systemProgram: { value: input.systemProgram ?? null, isWritable: false },\n  };\n  const accounts = originalAccounts as Record<\n    keyof typeof originalAccounts,\n    ResolvedAccount\n  >;\n\n  // Original args.\n  const args = { ...input };\n\n  // Resolve default values.\n  if (!accounts.logWrapper.value) {\n    accounts.logWrapper.value =\n      'mnoopTCrg4p8ry25e4bcWA9XZjbNjMTfgYVGGEdRsf3' as Address<'mnoopTCrg4p8ry25e4bcWA9XZjbNjMTfgYVGGEdRsf3'>;\n  }\n  if (!accounts.compressionProgram.value) {\n    accounts.compressionProgram.value =\n      'mcmt6YrQEMKw8Mw43FmpRLmf7BqRnFMKmAcbxE3xkAW' as Address<'mcmt6YrQEMKw8Mw43FmpRLmf7BqRnFMKmAcbxE3xkAW'>;\n  }\n  if (!accounts.systemProgram.value) {\n    accounts.systemProgram.value =\n      '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>;\n  }\n\n  // Remaining accounts.\n  const remainingAccounts: AccountMeta[] = (args.proof ?? []).map(\n    (address) => ({ address, role: AccountRole.READONLY })\n  );\n\n  const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n  return Object.freeze({\n    accounts: [\n      getAccountMeta(accounts.treeConfig),\n      getAccountMeta(accounts.payer),\n      getAccountMeta(accounts.leafOwner),\n      getAccountMeta(accounts.previousLeafDelegate),\n      getAccountMeta(accounts.newLeafDelegate),\n      getAccountMeta(accounts.merkleTree),\n      getAccountMeta(accounts.logWrapper),\n      getAccountMeta(accounts.compressionProgram),\n      getAccountMeta(accounts.systemProgram),\n      ...remainingAccounts,\n    ],\n    data: getDelegateAndFreezeV2InstructionDataEncoder().encode(\n      args as DelegateAndFreezeV2InstructionDataArgs\n    ),\n    programAddress,\n  } as DelegateAndFreezeV2Instruction<\n    TProgramAddress,\n    TAccountTreeConfig,\n    TAccountPayer,\n    TAccountLeafOwner,\n    TAccountPreviousLeafDelegate,\n    TAccountNewLeafDelegate,\n    TAccountMerkleTree,\n    TAccountLogWrapper,\n    TAccountCompressionProgram,\n    TAccountSystemProgram\n  >);\n}\n\nexport type ParsedDelegateAndFreezeV2Instruction<\n  TProgram extends string = typeof MPL_BUBBLEGUM_PROGRAM_ADDRESS,\n  TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n  programAddress: Address<TProgram>;\n  accounts: {\n    treeConfig: TAccountMetas[0];\n    payer: TAccountMetas[1];\n    /** Optional leaf owner, defaults to `payer` */\n    leafOwner?: TAccountMetas[2] | undefined;\n    /** Defaults to `leaf_owner` */\n    previousLeafDelegate?: TAccountMetas[3] | undefined;\n    newLeafDelegate: TAccountMetas[4];\n    merkleTree: TAccountMetas[5];\n    logWrapper: TAccountMetas[6];\n    compressionProgram: TAccountMetas[7];\n    systemProgram: TAccountMetas[8];\n  };\n  data: DelegateAndFreezeV2InstructionData;\n};\n\nexport function parseDelegateAndFreezeV2Instruction<\n  TProgram extends string,\n  TAccountMetas extends readonly AccountMeta[],\n>(\n  instruction: Instruction<TProgram> &\n    InstructionWithAccounts<TAccountMetas> &\n    InstructionWithData<ReadonlyUint8Array>\n): ParsedDelegateAndFreezeV2Instruction<TProgram, TAccountMetas> {\n  if (instruction.accounts.length < 9) {\n    // TODO: Coded error.\n    throw new Error('Not enough accounts');\n  }\n  let accountIndex = 0;\n  const getNextAccount = () => {\n    const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n    accountIndex += 1;\n    return accountMeta;\n  };\n  const getNextOptionalAccount = () => {\n    const accountMeta = getNextAccount();\n    return accountMeta.address === MPL_BUBBLEGUM_PROGRAM_ADDRESS\n      ? undefined\n      : accountMeta;\n  };\n  return {\n    programAddress: instruction.programAddress,\n    accounts: {\n      treeConfig: getNextAccount(),\n      payer: getNextAccount(),\n      leafOwner: getNextOptionalAccount(),\n      previousLeafDelegate: getNextOptionalAccount(),\n      newLeafDelegate: getNextAccount(),\n      merkleTree: getNextAccount(),\n      logWrapper: getNextAccount(),\n      compressionProgram: getNextAccount(),\n      systemProgram: getNextAccount(),\n    },\n    data: getDelegateAndFreezeV2InstructionDataDecoder().decode(\n      instruction.data\n    ),\n  };\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  AccountRole,\n  combineCodec,\n  fixDecoderSize,\n  fixEncoderSize,\n  getBytesDecoder,\n  getBytesEncoder,\n  getOptionDecoder,\n  getOptionEncoder,\n  getStructDecoder,\n  getStructEncoder,\n  getU32Decoder,\n  getU32Encoder,\n  getU64Decoder,\n  getU64Encoder,\n  getU8Decoder,\n  getU8Encoder,\n  none,\n  transformEncoder,\n  type AccountMeta,\n  type AccountSignerMeta,\n  type Address,\n  type Codec,\n  type Decoder,\n  type Encoder,\n  type Instruction,\n  type InstructionWithAccounts,\n  type InstructionWithData,\n  type Option,\n  type OptionOrNullable,\n  type ReadonlyAccount,\n  type ReadonlySignerAccount,\n  type ReadonlyUint8Array,\n  type TransactionSigner,\n  type WritableAccount,\n  type WritableSignerAccount,\n} from '@solana/kit';\nimport { findTreeConfigPda } from '../pdas';\nimport { MPL_BUBBLEGUM_PROGRAM_ADDRESS } from '../programs';\nimport {\n  expectAddress,\n  getAccountMetaFactory,\n  type ResolvedAccount,\n} from '../shared';\n\nexport const DELEGATE_V2_DISCRIMINATOR = new Uint8Array([\n  95, 87, 125, 140, 181, 131, 128, 227,\n]);\n\nexport function getDelegateV2DiscriminatorBytes() {\n  return fixEncoderSize(getBytesEncoder(), 8).encode(DELEGATE_V2_DISCRIMINATOR);\n}\n\nexport type DelegateV2Instruction<\n  TProgram extends string = typeof MPL_BUBBLEGUM_PROGRAM_ADDRESS,\n  TAccountTreeConfig extends string | AccountMeta<string> = string,\n  TAccountPayer extends string | AccountMeta<string> = string,\n  TAccountLeafOwner extends string | AccountMeta<string> = string,\n  TAccountPreviousLeafDelegate extends string | AccountMeta<string> = string,\n  TAccountNewLeafDelegate extends string | AccountMeta<string> = string,\n  TAccountMerkleTree extends string | AccountMeta<string> = string,\n  TAccountLogWrapper extends\n    | string\n    | AccountMeta<string> = 'mnoopTCrg4p8ry25e4bcWA9XZjbNjMTfgYVGGEdRsf3',\n  TAccountCompressionProgram extends\n    | string\n    | AccountMeta<string> = 'mcmt6YrQEMKw8Mw43FmpRLmf7BqRnFMKmAcbxE3xkAW',\n  TAccountSystemProgram extends\n    | string\n    | AccountMeta<string> = '11111111111111111111111111111111',\n  TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n  InstructionWithData<ReadonlyUint8Array> &\n  InstructionWithAccounts<\n    [\n      TAccountTreeConfig extends string\n        ? WritableAccount<TAccountTreeConfig>\n        : TAccountTreeConfig,\n      TAccountPayer extends string\n        ? WritableSignerAccount<TAccountPayer> &\n            AccountSignerMeta<TAccountPayer>\n        : TAccountPayer,\n      TAccountLeafOwner extends string\n        ? ReadonlySignerAccount<TAccountLeafOwner> &\n            AccountSignerMeta<TAccountLeafOwner>\n        : TAccountLeafOwner,\n      TAccountPreviousLeafDelegate extends string\n        ? ReadonlyAccount<TAccountPreviousLeafDelegate>\n        : TAccountPreviousLeafDelegate,\n      TAccountNewLeafDelegate extends string\n        ? ReadonlyAccount<TAccountNewLeafDelegate>\n        : TAccountNewLeafDelegate,\n      TAccountMerkleTree extends string\n        ? WritableAccount<TAccountMerkleTree>\n        : TAccountMerkleTree,\n      TAccountLogWrapper extends string\n        ? ReadonlyAccount<TAccountLogWrapper>\n        : TAccountLogWrapper,\n      TAccountCompressionProgram extends string\n        ? ReadonlyAccount<TAccountCompressionProgram>\n        : TAccountCompressionProgram,\n      TAccountSystemProgram extends string\n        ? ReadonlyAccount<TAccountSystemProgram>\n        : TAccountSystemProgram,\n      ...TRemainingAccounts,\n    ]\n  >;\n\nexport type DelegateV2InstructionData = {\n  discriminator: ReadonlyUint8Array;\n  root: ReadonlyUint8Array;\n  dataHash: ReadonlyUint8Array;\n  creatorHash: ReadonlyUint8Array;\n  collectionHash: Option<ReadonlyUint8Array>;\n  assetDataHash: Option<ReadonlyUint8Array>;\n  flags: Option<number>;\n  nonce: bigint;\n  index: number;\n};\n\nexport type DelegateV2InstructionDataArgs = {\n  root: ReadonlyUint8Array;\n  dataHash: ReadonlyUint8Array;\n  creatorHash: ReadonlyUint8Array;\n  collectionHash?: OptionOrNullable<ReadonlyUint8Array>;\n  assetDataHash?: OptionOrNullable<ReadonlyUint8Array>;\n  flags?: OptionOrNullable<number>;\n  nonce: number | bigint;\n  index: number;\n};\n\nexport function getDelegateV2InstructionDataEncoder(): Encoder<DelegateV2InstructionDataArgs> {\n  return transformEncoder(\n    getStructEncoder([\n      ['discriminator', fixEncoderSize(getBytesEncoder(), 8)],\n      ['root', fixEncoderSize(getBytesEncoder(), 32)],\n      ['dataHash', fixEncoderSize(getBytesEncoder(), 32)],\n      ['creatorHash', fixEncoderSize(getBytesEncoder(), 32)],\n      [\n        'collectionHash',\n        getOptionEncoder(fixEncoderSize(getBytesEncoder(), 32)),\n      ],\n      [\n        'assetDataHash',\n        getOptionEncoder(fixEncoderSize(getBytesEncoder(), 32)),\n      ],\n      ['flags', getOptionEncoder(getU8Encoder())],\n      ['nonce', getU64Encoder()],\n      ['index', getU32Encoder()],\n    ]),\n    (value) => ({\n      ...value,\n      discriminator: DELEGATE_V2_DISCRIMINATOR,\n      collectionHash: value.collectionHash ?? none(),\n      assetDataHash: value.assetDataHash ?? none(),\n      flags: value.flags ?? none(),\n    })\n  );\n}\n\nexport function getDelegateV2InstructionDataDecoder(): Decoder<DelegateV2InstructionData> {\n  return getStructDecoder([\n    ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n    ['root', fixDecoderSize(getBytesDecoder(), 32)],\n    ['dataHash', fixDecoderSize(getBytesDecoder(), 32)],\n    ['creatorHash', fixDecoderSize(getBytesDecoder(), 32)],\n    ['collectionHash', getOptionDecoder(fixDecoderSize(getBytesDecoder(), 32))],\n    ['assetDataHash', getOptionDecoder(fixDecoderSize(getBytesDecoder(), 32))],\n    ['flags', getOptionDecoder(getU8Decoder())],\n    ['nonce', getU64Decoder()],\n    ['index', getU32Decoder()],\n  ]);\n}\n\nexport function getDelegateV2InstructionDataCodec(): Codec<\n  DelegateV2InstructionDataArgs,\n  DelegateV2InstructionData\n> {\n  return combineCodec(\n    getDelegateV2InstructionDataEncoder(),\n    getDelegateV2InstructionDataDecoder()\n  );\n}\n\nexport type DelegateV2AsyncInput<\n  TAccountTreeConfig extends string = string,\n  TAccountPayer extends string = string,\n  TAccountLeafOwner extends string = string,\n  TAccountPreviousLeafDelegate extends string = string,\n  TAccountNewLeafDelegate extends string = string,\n  TAccountMerkleTree extends string = string,\n  TAccountLogWrapper extends string = string,\n  TAccountCompressionProgram extends string = string,\n  TAccountSystemProgram extends string = string,\n> = {\n  treeConfig?: Address<TAccountTreeConfig>;\n  payer: TransactionSigner<TAccountPayer>;\n  /** Optional leaf owner, defaults to `payer` */\n  leafOwner?: TransactionSigner<TAccountLeafOwner>;\n  /** Defaults to `leaf_owner` */\n  previousLeafDelegate?: Address<TAccountPreviousLeafDelegate>;\n  newLeafDelegate: Address<TAccountNewLeafDelegate>;\n  merkleTree: Address<TAccountMerkleTree>;\n  logWrapper?: Address<TAccountLogWrapper>;\n  compressionProgram?: Address<TAccountCompressionProgram>;\n  systemProgram?: Address<TAccountSystemProgram>;\n  root: DelegateV2InstructionDataArgs['root'];\n  dataHash: DelegateV2InstructionDataArgs['dataHash'];\n  creatorHash: DelegateV2InstructionDataArgs['creatorHash'];\n  collectionHash?: DelegateV2InstructionDataArgs['collectionHash'];\n  assetDataHash?: DelegateV2InstructionDataArgs['assetDataHash'];\n  flags?: DelegateV2InstructionDataArgs['flags'];\n  nonce: DelegateV2InstructionDataArgs['nonce'];\n  index: DelegateV2InstructionDataArgs['index'];\n  proof?: Array<Address>;\n};\n\nexport async function getDelegateV2InstructionAsync<\n  TAccountTreeConfig extends string,\n  TAccountPayer extends string,\n  TAccountLeafOwner extends string,\n  TAccountPreviousLeafDelegate extends string,\n  TAccountNewLeafDelegate extends string,\n  TAccountMerkleTree extends string,\n  TAccountLogWrapper extends string,\n  TAccountCompressionProgram extends string,\n  TAccountSystemProgram extends string,\n  TProgramAddress extends Address = typeof MPL_BUBBLEGUM_PROGRAM_ADDRESS,\n>(\n  input: DelegateV2AsyncInput<\n    TAccountTreeConfig,\n    TAccountPayer,\n    TAccountLeafOwner,\n    TAccountPreviousLeafDelegate,\n    TAccountNewLeafDelegate,\n    TAccountMerkleTree,\n    TAccountLogWrapper,\n    TAccountCompressionProgram,\n    TAccountSystemProgram\n  >,\n  config?: { programAddress?: TProgramAddress }\n): Promise<\n  DelegateV2Instruction<\n    TProgramAddress,\n    TAccountTreeConfig,\n    TAccountPayer,\n    TAccountLeafOwner,\n    TAccountPreviousLeafDelegate,\n    TAccountNewLeafDelegate,\n    TAccountMerkleTree,\n    TAccountLogWrapper,\n    TAccountCompressionProgram,\n    TAccountSystemProgram\n  >\n> {\n  // Program address.\n  const programAddress =\n    config?.programAddress ?? MPL_BUBBLEGUM_PROGRAM_ADDRESS;\n\n  // Original accounts.\n  const originalAccounts = {\n    treeConfig: { value: input.treeConfig ?? null, isWritable: true },\n    payer: { value: input.payer ?? null, isWritable: true },\n    leafOwner: { value: input.leafOwner ?? null, isWritable: false },\n    previousLeafDelegate: {\n      value: input.previousLeafDelegate ?? null,\n      isWritable: false,\n    },\n    newLeafDelegate: {\n      value: input.newLeafDelegate ?? null,\n      isWritable: false,\n    },\n    merkleTree: { value: input.merkleTree ?? null, isWritable: true },\n    logWrapper: { value: input.logWrapper ?? null, isWritable: false },\n    compressionProgram: {\n      value: input.compressionProgram ?? null,\n      isWritable: false,\n    },\n    systemProgram: { value: input.systemProgram ?? null, isWritable: false },\n  };\n  const accounts = originalAccounts as Record<\n    keyof typeof originalAccounts,\n    ResolvedAccount\n  >;\n\n  // Original args.\n  const args = { ...input };\n\n  // Resolve default values.\n  if (!accounts.treeConfig.value) {\n    accounts.treeConfig.value = await findTreeConfigPda({\n      merkleTree: expectAddress(accounts.merkleTree.value),\n    });\n  }\n  if (!accounts.logWrapper.value) {\n    accounts.logWrapper.value =\n      'mnoopTCrg4p8ry25e4bcWA9XZjbNjMTfgYVGGEdRsf3' as Address<'mnoopTCrg4p8ry25e4bcWA9XZjbNjMTfgYVGGEdRsf3'>;\n  }\n  if (!accounts.compressionProgram.value) {\n    accounts.compressionProgram.value =\n      'mcmt6YrQEMKw8Mw43FmpRLmf7BqRnFMKmAcbxE3xkAW' as Address<'mcmt6YrQEMKw8Mw43FmpRLmf7BqRnFMKmAcbxE3xkAW'>;\n  }\n  if (!accounts.systemProgram.value) {\n    accounts.systemProgram.value =\n      '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>;\n  }\n\n  // Remaining accounts.\n  const remainingAccounts: AccountMeta[] = (args.proof ?? []).map(\n    (address) => ({ address, role: AccountRole.READONLY })\n  );\n\n  const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n  return Object.freeze({\n    accounts: [\n      getAccountMeta(accounts.treeConfig),\n      getAccountMeta(accounts.payer),\n      getAccountMeta(accounts.leafOwner),\n      getAccountMeta(accounts.previousLeafDelegate),\n      getAccountMeta(accounts.newLeafDelegate),\n      getAccountMeta(accounts.merkleTree),\n      getAccountMeta(accounts.logWrapper),\n      getAccountMeta(accounts.compressionProgram),\n      getAccountMeta(accounts.systemProgram),\n      ...remainingAccounts,\n    ],\n    data: getDelegateV2InstructionDataEncoder().encode(\n      args as DelegateV2InstructionDataArgs\n    ),\n    programAddress,\n  } as DelegateV2Instruction<\n    TProgramAddress,\n    TAccountTreeConfig,\n    TAccountPayer,\n    TAccountLeafOwner,\n    TAccountPreviousLeafDelegate,\n    TAccountNewLeafDelegate,\n    TAccountMerkleTree,\n    TAccountLogWrapper,\n    TAccountCompressionProgram,\n    TAccountSystemProgram\n  >);\n}\n\nexport type DelegateV2Input<\n  TAccountTreeConfig extends string = string,\n  TAccountPayer extends string = string,\n  TAccountLeafOwner extends string = string,\n  TAccountPreviousLeafDelegate extends string = string,\n  TAccountNewLeafDelegate extends string = string,\n  TAccountMerkleTree extends string = string,\n  TAccountLogWrapper extends string = string,\n  TAccountCompressionProgram extends string = string,\n  TAccountSystemProgram extends string = string,\n> = {\n  treeConfig: Address<TAccountTreeConfig>;\n  payer: TransactionSigner<TAccountPayer>;\n  /** Optional leaf owner, defaults to `payer` */\n  leafOwner?: TransactionSigner<TAccountLeafOwner>;\n  /** Defaults to `leaf_owner` */\n  previousLeafDelegate?: Address<TAccountPreviousLeafDelegate>;\n  newLeafDelegate: Address<TAccountNewLeafDelegate>;\n  merkleTree: Address<TAccountMerkleTree>;\n  logWrapper?: Address<TAccountLogWrapper>;\n  compressionProgram?: Address<TAccountCompressionProgram>;\n  systemProgram?: Address<TAccountSystemProgram>;\n  root: DelegateV2InstructionDataArgs['root'];\n  dataHash: DelegateV2InstructionDataArgs['dataHash'];\n  creatorHash: DelegateV2InstructionDataArgs['creatorHash'];\n  collectionHash?: DelegateV2InstructionDataArgs['collectionHash'];\n  assetDataHash?: DelegateV2InstructionDataArgs['assetDataHash'];\n  flags?: DelegateV2InstructionDataArgs['flags'];\n  nonce: DelegateV2InstructionDataArgs['nonce'];\n  index: DelegateV2InstructionDataArgs['index'];\n  proof?: Array<Address>;\n};\n\nexport function getDelegateV2Instruction<\n  TAccountTreeConfig extends string,\n  TAccountPayer extends string,\n  TAccountLeafOwner extends string,\n  TAccountPreviousLeafDelegate extends string,\n  TAccountNewLeafDelegate extends string,\n  TAccountMerkleTree extends string,\n  TAccountLogWrapper extends string,\n  TAccountCompressionProgram extends string,\n  TAccountSystemProgram extends string,\n  TProgramAddress extends Address = typeof MPL_BUBBLEGUM_PROGRAM_ADDRESS,\n>(\n  input: DelegateV2Input<\n    TAccountTreeConfig,\n    TAccountPayer,\n    TAccountLeafOwner,\n    TAccountPreviousLeafDelegate,\n    TAccountNewLeafDelegate,\n    TAccountMerkleTree,\n    TAccountLogWrapper,\n    TAccountCompressionProgram,\n    TAccountSystemProgram\n  >,\n  config?: { programAddress?: TProgramAddress }\n): DelegateV2Instruction<\n  TProgramAddress,\n  TAccountTreeConfig,\n  TAccountPayer,\n  TAccountLeafOwner,\n  TAccountPreviousLeafDelegate,\n  TAccountNewLeafDelegate,\n  TAccountMerkleTree,\n  TAccountLogWrapper,\n  TAccountCompressionProgram,\n  TAccountSystemProgram\n> {\n  // Program address.\n  const programAddress =\n    config?.programAddress ?? MPL_BUBBLEGUM_PROGRAM_ADDRESS;\n\n  // Original accounts.\n  const originalAccounts = {\n    treeConfig: { value: input.treeConfig ?? null, isWritable: true },\n    payer: { value: input.payer ?? null, isWritable: true },\n    leafOwner: { value: input.leafOwner ?? null, isWritable: false },\n    previousLeafDelegate: {\n      value: input.previousLeafDelegate ?? null,\n      isWritable: false,\n    },\n    newLeafDelegate: {\n      value: input.newLeafDelegate ?? null,\n      isWritable: false,\n    },\n    merkleTree: { value: input.merkleTree ?? null, isWritable: true },\n    logWrapper: { value: input.logWrapper ?? null, isWritable: false },\n    compressionProgram: {\n      value: input.compressionProgram ?? null,\n      isWritable: false,\n    },\n    systemProgram: { value: input.systemProgram ?? null, isWritable: false },\n  };\n  const accounts = originalAccounts as Record<\n    keyof typeof originalAccounts,\n    ResolvedAccount\n  >;\n\n  // Original args.\n  const args = { ...input };\n\n  // Resolve default values.\n  if (!accounts.logWrapper.value) {\n    accounts.logWrapper.value =\n      'mnoopTCrg4p8ry25e4bcWA9XZjbNjMTfgYVGGEdRsf3' as Address<'mnoopTCrg4p8ry25e4bcWA9XZjbNjMTfgYVGGEdRsf3'>;\n  }\n  if (!accounts.compressionProgram.value) {\n    accounts.compressionProgram.value =\n      'mcmt6YrQEMKw8Mw43FmpRLmf7BqRnFMKmAcbxE3xkAW' as Address<'mcmt6YrQEMKw8Mw43FmpRLmf7BqRnFMKmAcbxE3xkAW'>;\n  }\n  if (!accounts.systemProgram.value) {\n    accounts.systemProgram.value =\n      '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>;\n  }\n\n  // Remaining accounts.\n  const remainingAccounts: AccountMeta[] = (args.proof ?? []).map(\n    (address) => ({ address, role: AccountRole.READONLY })\n  );\n\n  const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n  return Object.freeze({\n    accounts: [\n      getAccountMeta(accounts.treeConfig),\n      getAccountMeta(accounts.payer),\n      getAccountMeta(accounts.leafOwner),\n      getAccountMeta(accounts.previousLeafDelegate),\n      getAccountMeta(accounts.newLeafDelegate),\n      getAccountMeta(accounts.merkleTree),\n      getAccountMeta(accounts.logWrapper),\n      getAccountMeta(accounts.compressionProgram),\n      getAccountMeta(accounts.systemProgram),\n      ...remainingAccounts,\n    ],\n    data: getDelegateV2InstructionDataEncoder().encode(\n      args as DelegateV2InstructionDataArgs\n    ),\n    programAddress,\n  } as DelegateV2Instruction<\n    TProgramAddress,\n    TAccountTreeConfig,\n    TAccountPayer,\n    TAccountLeafOwner,\n    TAccountPreviousLeafDelegate,\n    TAccountNewLeafDelegate,\n    TAccountMerkleTree,\n    TAccountLogWrapper,\n    TAccountCompressionProgram,\n    TAccountSystemProgram\n  >);\n}\n\nexport type ParsedDelegateV2Instruction<\n  TProgram extends string = typeof MPL_BUBBLEGUM_PROGRAM_ADDRESS,\n  TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n  programAddress: Address<TProgram>;\n  accounts: {\n    treeConfig: TAccountMetas[0];\n    payer: TAccountMetas[1];\n    /** Optional leaf owner, defaults to `payer` */\n    leafOwner?: TAccountMetas[2] | undefined;\n    /** Defaults to `leaf_owner` */\n    previousLeafDelegate?: TAccountMetas[3] | undefined;\n    newLeafDelegate: TAccountMetas[4];\n    merkleTree: TAccountMetas[5];\n    logWrapper: TAccountMetas[6];\n    compressionProgram: TAccountMetas[7];\n    systemProgram: TAccountMetas[8];\n  };\n  data: DelegateV2InstructionData;\n};\n\nexport function parseDelegateV2Instruction<\n  TProgram extends string,\n  TAccountMetas extends readonly AccountMeta[],\n>(\n  instruction: Instruction<TProgram> &\n    InstructionWithAccounts<TAccountMetas> &\n    InstructionWithData<ReadonlyUint8Array>\n): ParsedDelegateV2Instruction<TProgram, TAccountMetas> {\n  if (instruction.accounts.length < 9) {\n    // TODO: Coded error.\n    throw new Error('Not enough accounts');\n  }\n  let accountIndex = 0;\n  const getNextAccount = () => {\n    const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n    accountIndex += 1;\n    return accountMeta;\n  };\n  const getNextOptionalAccount = () => {\n    const accountMeta = getNextAccount();\n    return accountMeta.address === MPL_BUBBLEGUM_PROGRAM_ADDRESS\n      ? undefined\n      : accountMeta;\n  };\n  return {\n    programAddress: instruction.programAddress,\n    accounts: {\n      treeConfig: getNextAccount(),\n      payer: getNextAccount(),\n      leafOwner: getNextOptionalAccount(),\n      previousLeafDelegate: getNextOptionalAccount(),\n      newLeafDelegate: getNextAccount(),\n      merkleTree: getNextAccount(),\n      logWrapper: getNextAccount(),\n      compressionProgram: getNextAccount(),\n      systemProgram: getNextAccount(),\n    },\n    data: getDelegateV2InstructionDataDecoder().decode(instruction.data),\n  };\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  AccountRole,\n  combineCodec,\n  fixDecoderSize,\n  fixEncoderSize,\n  getBytesDecoder,\n  getBytesEncoder,\n  getOptionDecoder,\n  getOptionEncoder,\n  getStructDecoder,\n  getStructEncoder,\n  getU32Decoder,\n  getU32Encoder,\n  getU64Decoder,\n  getU64Encoder,\n  getU8Decoder,\n  getU8Encoder,\n  none,\n  transformEncoder,\n  type AccountMeta,\n  type AccountSignerMeta,\n  type Address,\n  type Codec,\n  type Decoder,\n  type Encoder,\n  type Instruction,\n  type InstructionWithAccounts,\n  type InstructionWithData,\n  type Option,\n  type OptionOrNullable,\n  type ReadonlyAccount,\n  type ReadonlySignerAccount,\n  type ReadonlyUint8Array,\n  type TransactionSigner,\n  type WritableAccount,\n  type WritableSignerAccount,\n} from '@solana/kit';\nimport { findTreeConfigPda } from '../pdas';\nimport { MPL_BUBBLEGUM_PROGRAM_ADDRESS } from '../programs';\nimport {\n  expectAddress,\n  getAccountMetaFactory,\n  type ResolvedAccount,\n} from '../shared';\n\nexport const FREEZE_V2_DISCRIMINATOR = new Uint8Array([\n  200, 151, 244, 102, 16, 195, 255, 3,\n]);\n\nexport function getFreezeV2DiscriminatorBytes() {\n  return fixEncoderSize(getBytesEncoder(), 8).encode(FREEZE_V2_DISCRIMINATOR);\n}\n\nexport type FreezeV2Instruction<\n  TProgram extends string = typeof MPL_BUBBLEGUM_PROGRAM_ADDRESS,\n  TAccountTreeConfig extends string | AccountMeta<string> = string,\n  TAccountPayer extends string | AccountMeta<string> = string,\n  TAccountAuthority extends string | AccountMeta<string> = string,\n  TAccountLeafOwner extends string | AccountMeta<string> = string,\n  TAccountLeafDelegate extends string | AccountMeta<string> = string,\n  TAccountMerkleTree extends string | AccountMeta<string> = string,\n  TAccountCoreCollection extends string | AccountMeta<string> = string,\n  TAccountLogWrapper extends\n    | string\n    | AccountMeta<string> = 'mnoopTCrg4p8ry25e4bcWA9XZjbNjMTfgYVGGEdRsf3',\n  TAccountCompressionProgram extends\n    | string\n    | AccountMeta<string> = 'mcmt6YrQEMKw8Mw43FmpRLmf7BqRnFMKmAcbxE3xkAW',\n  TAccountSystemProgram extends\n    | string\n    | AccountMeta<string> = '11111111111111111111111111111111',\n  TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n  InstructionWithData<ReadonlyUint8Array> &\n  InstructionWithAccounts<\n    [\n      TAccountTreeConfig extends string\n        ? WritableAccount<TAccountTreeConfig>\n        : TAccountTreeConfig,\n      TAccountPayer extends string\n        ? WritableSignerAccount<TAccountPayer> &\n            AccountSignerMeta<TAccountPayer>\n        : TAccountPayer,\n      TAccountAuthority extends string\n        ? ReadonlySignerAccount<TAccountAuthority> &\n            AccountSignerMeta<TAccountAuthority>\n        : TAccountAuthority,\n      TAccountLeafOwner extends string\n        ? ReadonlyAccount<TAccountLeafOwner>\n        : TAccountLeafOwner,\n      TAccountLeafDelegate extends string\n        ? ReadonlyAccount<TAccountLeafDelegate>\n        : TAccountLeafDelegate,\n      TAccountMerkleTree extends string\n        ? WritableAccount<TAccountMerkleTree>\n        : TAccountMerkleTree,\n      TAccountCoreCollection extends string\n        ? ReadonlyAccount<TAccountCoreCollection>\n        : TAccountCoreCollection,\n      TAccountLogWrapper extends string\n        ? ReadonlyAccount<TAccountLogWrapper>\n        : TAccountLogWrapper,\n      TAccountCompressionProgram extends string\n        ? ReadonlyAccount<TAccountCompressionProgram>\n        : TAccountCompressionProgram,\n      TAccountSystemProgram extends string\n        ? ReadonlyAccount<TAccountSystemProgram>\n        : TAccountSystemProgram,\n      ...TRemainingAccounts,\n    ]\n  >;\n\nexport type FreezeV2InstructionData = {\n  discriminator: ReadonlyUint8Array;\n  root: ReadonlyUint8Array;\n  dataHash: ReadonlyUint8Array;\n  creatorHash: ReadonlyUint8Array;\n  assetDataHash: Option<ReadonlyUint8Array>;\n  flags: Option<number>;\n  nonce: bigint;\n  index: number;\n};\n\nexport type FreezeV2InstructionDataArgs = {\n  root: ReadonlyUint8Array;\n  dataHash: ReadonlyUint8Array;\n  creatorHash: ReadonlyUint8Array;\n  assetDataHash?: OptionOrNullable<ReadonlyUint8Array>;\n  flags?: OptionOrNullable<number>;\n  nonce: number | bigint;\n  index: number;\n};\n\nexport function getFreezeV2InstructionDataEncoder(): Encoder<FreezeV2InstructionDataArgs> {\n  return transformEncoder(\n    getStructEncoder([\n      ['discriminator', fixEncoderSize(getBytesEncoder(), 8)],\n      ['root', fixEncoderSize(getBytesEncoder(), 32)],\n      ['dataHash', fixEncoderSize(getBytesEncoder(), 32)],\n      ['creatorHash', fixEncoderSize(getBytesEncoder(), 32)],\n      [\n        'assetDataHash',\n        getOptionEncoder(fixEncoderSize(getBytesEncoder(), 32)),\n      ],\n      ['flags', getOptionEncoder(getU8Encoder())],\n      ['nonce', getU64Encoder()],\n      ['index', getU32Encoder()],\n    ]),\n    (value) => ({\n      ...value,\n      discriminator: FREEZE_V2_DISCRIMINATOR,\n      assetDataHash: value.assetDataHash ?? none(),\n      flags: value.flags ?? none(),\n    })\n  );\n}\n\nexport function getFreezeV2InstructionDataDecoder(): Decoder<FreezeV2InstructionData> {\n  return getStructDecoder([\n    ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n    ['root', fixDecoderSize(getBytesDecoder(), 32)],\n    ['dataHash', fixDecoderSize(getBytesDecoder(), 32)],\n    ['creatorHash', fixDecoderSize(getBytesDecoder(), 32)],\n    ['assetDataHash', getOptionDecoder(fixDecoderSize(getBytesDecoder(), 32))],\n    ['flags', getOptionDecoder(getU8Decoder())],\n    ['nonce', getU64Decoder()],\n    ['index', getU32Decoder()],\n  ]);\n}\n\nexport function getFreezeV2InstructionDataCodec(): Codec<\n  FreezeV2InstructionDataArgs,\n  FreezeV2InstructionData\n> {\n  return combineCodec(\n    getFreezeV2InstructionDataEncoder(),\n    getFreezeV2InstructionDataDecoder()\n  );\n}\n\nexport type FreezeV2AsyncInput<\n  TAccountTreeConfig extends string = string,\n  TAccountPayer extends string = string,\n  TAccountAuthority extends string = string,\n  TAccountLeafOwner extends string = string,\n  TAccountLeafDelegate extends string = string,\n  TAccountMerkleTree extends string = string,\n  TAccountCoreCollection extends string = string,\n  TAccountLogWrapper extends string = string,\n  TAccountCompressionProgram extends string = string,\n  TAccountSystemProgram extends string = string,\n> = {\n  treeConfig?: Address<TAccountTreeConfig>;\n  payer: TransactionSigner<TAccountPayer>;\n  /**\n   * Optional authority, defaults to `payer`.  Must be either\n   * the leaf delegate or collection permanent freeze delegate.\n   */\n  authority?: TransactionSigner<TAccountAuthority>;\n  leafOwner: Address<TAccountLeafOwner>;\n  leafDelegate: Address<TAccountLeafDelegate>;\n  merkleTree: Address<TAccountMerkleTree>;\n  coreCollection?: Address<TAccountCoreCollection>;\n  logWrapper?: Address<TAccountLogWrapper>;\n  compressionProgram?: Address<TAccountCompressionProgram>;\n  systemProgram?: Address<TAccountSystemProgram>;\n  root: FreezeV2InstructionDataArgs['root'];\n  dataHash: FreezeV2InstructionDataArgs['dataHash'];\n  creatorHash: FreezeV2InstructionDataArgs['creatorHash'];\n  assetDataHash?: FreezeV2InstructionDataArgs['assetDataHash'];\n  flags?: FreezeV2InstructionDataArgs['flags'];\n  nonce: FreezeV2InstructionDataArgs['nonce'];\n  index: FreezeV2InstructionDataArgs['index'];\n  proof?: Array<Address>;\n};\n\nexport async function getFreezeV2InstructionAsync<\n  TAccountTreeConfig extends string,\n  TAccountPayer extends string,\n  TAccountAuthority extends string,\n  TAccountLeafOwner extends string,\n  TAccountLeafDelegate extends string,\n  TAccountMerkleTree extends string,\n  TAccountCoreCollection extends string,\n  TAccountLogWrapper extends string,\n  TAccountCompressionProgram extends string,\n  TAccountSystemProgram extends string,\n  TProgramAddress extends Address = typeof MPL_BUBBLEGUM_PROGRAM_ADDRESS,\n>(\n  input: FreezeV2AsyncInput<\n    TAccountTreeConfig,\n    TAccountPayer,\n    TAccountAuthority,\n    TAccountLeafOwner,\n    TAccountLeafDelegate,\n    TAccountMerkleTree,\n    TAccountCoreCollection,\n    TAccountLogWrapper,\n    TAccountCompressionProgram,\n    TAccountSystemProgram\n  >,\n  config?: { programAddress?: TProgramAddress }\n): Promise<\n  FreezeV2Instruction<\n    TProgramAddress,\n    TAccountTreeConfig,\n    TAccountPayer,\n    TAccountAuthority,\n    TAccountLeafOwner,\n    TAccountLeafDelegate,\n    TAccountMerkleTree,\n    TAccountCoreCollection,\n    TAccountLogWrapper,\n    TAccountCompressionProgram,\n    TAccountSystemProgram\n  >\n> {\n  // Program address.\n  const programAddress =\n    config?.programAddress ?? MPL_BUBBLEGUM_PROGRAM_ADDRESS;\n\n  // Original accounts.\n  const originalAccounts = {\n    treeConfig: { value: input.treeConfig ?? null, isWritable: true },\n    payer: { value: input.payer ?? null, isWritable: true },\n    authority: { value: input.authority ?? null, isWritable: false },\n    leafOwner: { value: input.leafOwner ?? null, isWritable: false },\n    leafDelegate: { value: input.leafDelegate ?? null, isWritable: false },\n    merkleTree: { value: input.merkleTree ?? null, isWritable: true },\n    coreCollection: { value: input.coreCollection ?? null, isWritable: false },\n    logWrapper: { value: input.logWrapper ?? null, isWritable: false },\n    compressionProgram: {\n      value: input.compressionProgram ?? null,\n      isWritable: false,\n    },\n    systemProgram: { value: input.systemProgram ?? null, isWritable: false },\n  };\n  const accounts = originalAccounts as Record<\n    keyof typeof originalAccounts,\n    ResolvedAccount\n  >;\n\n  // Original args.\n  const args = { ...input };\n\n  // Resolve default values.\n  if (!accounts.treeConfig.value) {\n    accounts.treeConfig.value = await findTreeConfigPda({\n      merkleTree: expectAddress(accounts.merkleTree.value),\n    });\n  }\n  if (!accounts.logWrapper.value) {\n    accounts.logWrapper.value =\n      'mnoopTCrg4p8ry25e4bcWA9XZjbNjMTfgYVGGEdRsf3' as Address<'mnoopTCrg4p8ry25e4bcWA9XZjbNjMTfgYVGGEdRsf3'>;\n  }\n  if (!accounts.compressionProgram.value) {\n    accounts.compressionProgram.value =\n      'mcmt6YrQEMKw8Mw43FmpRLmf7BqRnFMKmAcbxE3xkAW' as Address<'mcmt6YrQEMKw8Mw43FmpRLmf7BqRnFMKmAcbxE3xkAW'>;\n  }\n  if (!accounts.systemProgram.value) {\n    accounts.systemProgram.value =\n      '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>;\n  }\n\n  // Remaining accounts.\n  const remainingAccounts: AccountMeta[] = (args.proof ?? []).map(\n    (address) => ({ address, role: AccountRole.READONLY })\n  );\n\n  const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n  return Object.freeze({\n    accounts: [\n      getAccountMeta(accounts.treeConfig),\n      getAccountMeta(accounts.payer),\n      getAccountMeta(accounts.authority),\n      getAccountMeta(accounts.leafOwner),\n      getAccountMeta(accounts.leafDelegate),\n      getAccountMeta(accounts.merkleTree),\n      getAccountMeta(accounts.coreCollection),\n      getAccountMeta(accounts.logWrapper),\n      getAccountMeta(accounts.compressionProgram),\n      getAccountMeta(accounts.systemProgram),\n      ...remainingAccounts,\n    ],\n    data: getFreezeV2InstructionDataEncoder().encode(\n      args as FreezeV2InstructionDataArgs\n    ),\n    programAddress,\n  } as FreezeV2Instruction<\n    TProgramAddress,\n    TAccountTreeConfig,\n    TAccountPayer,\n    TAccountAuthority,\n    TAccountLeafOwner,\n    TAccountLeafDelegate,\n    TAccountMerkleTree,\n    TAccountCoreCollection,\n    TAccountLogWrapper,\n    TAccountCompressionProgram,\n    TAccountSystemProgram\n  >);\n}\n\nexport type FreezeV2Input<\n  TAccountTreeConfig extends string = string,\n  TAccountPayer extends string = string,\n  TAccountAuthority extends string = string,\n  TAccountLeafOwner extends string = string,\n  TAccountLeafDelegate extends string = string,\n  TAccountMerkleTree extends string = string,\n  TAccountCoreCollection extends string = string,\n  TAccountLogWrapper extends string = string,\n  TAccountCompressionProgram extends string = string,\n  TAccountSystemProgram extends string = string,\n> = {\n  treeConfig: Address<TAccountTreeConfig>;\n  payer: TransactionSigner<TAccountPayer>;\n  /**\n   * Optional authority, defaults to `payer`.  Must be either\n   * the leaf delegate or collection permanent freeze delegate.\n   */\n  authority?: TransactionSigner<TAccountAuthority>;\n  leafOwner: Address<TAccountLeafOwner>;\n  leafDelegate: Address<TAccountLeafDelegate>;\n  merkleTree: Address<TAccountMerkleTree>;\n  coreCollection?: Address<TAccountCoreCollection>;\n  logWrapper?: Address<TAccountLogWrapper>;\n  compressionProgram?: Address<TAccountCompressionProgram>;\n  systemProgram?: Address<TAccountSystemProgram>;\n  root: FreezeV2InstructionDataArgs['root'];\n  dataHash: FreezeV2InstructionDataArgs['dataHash'];\n  creatorHash: FreezeV2InstructionDataArgs['creatorHash'];\n  assetDataHash?: FreezeV2InstructionDataArgs['assetDataHash'];\n  flags?: FreezeV2InstructionDataArgs['flags'];\n  nonce: FreezeV2InstructionDataArgs['nonce'];\n  index: FreezeV2InstructionDataArgs['index'];\n  proof?: Array<Address>;\n};\n\nexport function getFreezeV2Instruction<\n  TAccountTreeConfig extends string,\n  TAccountPayer extends string,\n  TAccountAuthority extends string,\n  TAccountLeafOwner extends string,\n  TAccountLeafDelegate extends string,\n  TAccountMerkleTree extends string,\n  TAccountCoreCollection extends string,\n  TAccountLogWrapper extends string,\n  TAccountCompressionProgram extends string,\n  TAccountSystemProgram extends string,\n  TProgramAddress extends Address = typeof MPL_BUBBLEGUM_PROGRAM_ADDRESS,\n>(\n  input: FreezeV2Input<\n    TAccountTreeConfig,\n    TAccountPayer,\n    TAccountAuthority,\n    TAccountLeafOwner,\n    TAccountLeafDelegate,\n    TAccountMerkleTree,\n    TAccountCoreCollection,\n    TAccountLogWrapper,\n    TAccountCompressionProgram,\n    TAccountSystemProgram\n  >,\n  config?: { programAddress?: TProgramAddress }\n): FreezeV2Instruction<\n  TProgramAddress,\n  TAccountTreeConfig,\n  TAccountPayer,\n  TAccountAuthority,\n  TAccountLeafOwner,\n  TAccountLeafDelegate,\n  TAccountMerkleTree,\n  TAccountCoreCollection,\n  TAccountLogWrapper,\n  TAccountCompressionProgram,\n  TAccountSystemProgram\n> {\n  // Program address.\n  const programAddress =\n    config?.programAddress ?? MPL_BUBBLEGUM_PROGRAM_ADDRESS;\n\n  // Original accounts.\n  const originalAccounts = {\n    treeConfig: { value: input.treeConfig ?? null, isWritable: true },\n    payer: { value: input.payer ?? null, isWritable: true },\n    authority: { value: input.authority ?? null, isWritable: false },\n    leafOwner: { value: input.leafOwner ?? null, isWritable: false },\n    leafDelegate: { value: input.leafDelegate ?? null, isWritable: false },\n    merkleTree: { value: input.merkleTree ?? null, isWritable: true },\n    coreCollection: { value: input.coreCollection ?? null, isWritable: false },\n    logWrapper: { value: input.logWrapper ?? null, isWritable: false },\n    compressionProgram: {\n      value: input.compressionProgram ?? null,\n      isWritable: false,\n    },\n    systemProgram: { value: input.systemProgram ?? null, isWritable: false },\n  };\n  const accounts = originalAccounts as Record<\n    keyof typeof originalAccounts,\n    ResolvedAccount\n  >;\n\n  // Original args.\n  const args = { ...input };\n\n  // Resolve default values.\n  if (!accounts.logWrapper.value) {\n    accounts.logWrapper.value =\n      'mnoopTCrg4p8ry25e4bcWA9XZjbNjMTfgYVGGEdRsf3' as Address<'mnoopTCrg4p8ry25e4bcWA9XZjbNjMTfgYVGGEdRsf3'>;\n  }\n  if (!accounts.compressionProgram.value) {\n    accounts.compressionProgram.value =\n      'mcmt6YrQEMKw8Mw43FmpRLmf7BqRnFMKmAcbxE3xkAW' as Address<'mcmt6YrQEMKw8Mw43FmpRLmf7BqRnFMKmAcbxE3xkAW'>;\n  }\n  if (!accounts.systemProgram.value) {\n    accounts.systemProgram.value =\n      '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>;\n  }\n\n  // Remaining accounts.\n  const remainingAccounts: AccountMeta[] = (args.proof ?? []).map(\n    (address) => ({ address, role: AccountRole.READONLY })\n  );\n\n  const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n  return Object.freeze({\n    accounts: [\n      getAccountMeta(accounts.treeConfig),\n      getAccountMeta(accounts.payer),\n      getAccountMeta(accounts.authority),\n      getAccountMeta(accounts.leafOwner),\n      getAccountMeta(accounts.leafDelegate),\n      getAccountMeta(accounts.merkleTree),\n      getAccountMeta(accounts.coreCollection),\n      getAccountMeta(accounts.logWrapper),\n      getAccountMeta(accounts.compressionProgram),\n      getAccountMeta(accounts.systemProgram),\n      ...remainingAccounts,\n    ],\n    data: getFreezeV2InstructionDataEncoder().encode(\n      args as FreezeV2InstructionDataArgs\n    ),\n    programAddress,\n  } as FreezeV2Instruction<\n    TProgramAddress,\n    TAccountTreeConfig,\n    TAccountPayer,\n    TAccountAuthority,\n    TAccountLeafOwner,\n    TAccountLeafDelegate,\n    TAccountMerkleTree,\n    TAccountCoreCollection,\n    TAccountLogWrapper,\n    TAccountCompressionProgram,\n    TAccountSystemProgram\n  >);\n}\n\nexport type ParsedFreezeV2Instruction<\n  TProgram extends string = typeof MPL_BUBBLEGUM_PROGRAM_ADDRESS,\n  TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n  programAddress: Address<TProgram>;\n  accounts: {\n    treeConfig: TAccountMetas[0];\n    payer: TAccountMetas[1];\n    /**\n     * Optional authority, defaults to `payer`.  Must be either\n     * the leaf delegate or collection permanent freeze delegate.\n     */\n    authority?: TAccountMetas[2] | undefined;\n    leafOwner: TAccountMetas[3];\n    leafDelegate: TAccountMetas[4];\n    merkleTree: TAccountMetas[5];\n    coreCollection?: TAccountMetas[6] | undefined;\n    logWrapper: TAccountMetas[7];\n    compressionProgram: TAccountMetas[8];\n    systemProgram: TAccountMetas[9];\n  };\n  data: FreezeV2InstructionData;\n};\n\nexport function parseFreezeV2Instruction<\n  TProgram extends string,\n  TAccountMetas extends readonly AccountMeta[],\n>(\n  instruction: Instruction<TProgram> &\n    InstructionWithAccounts<TAccountMetas> &\n    InstructionWithData<ReadonlyUint8Array>\n): ParsedFreezeV2Instruction<TProgram, TAccountMetas> {\n  if (instruction.accounts.length < 10) {\n    // TODO: Coded error.\n    throw new Error('Not enough accounts');\n  }\n  let accountIndex = 0;\n  const getNextAccount = () => {\n    const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n    accountIndex += 1;\n    return accountMeta;\n  };\n  const getNextOptionalAccount = () => {\n    const accountMeta = getNextAccount();\n    return accountMeta.address === MPL_BUBBLEGUM_PROGRAM_ADDRESS\n      ? undefined\n      : accountMeta;\n  };\n  return {\n    programAddress: instruction.programAddress,\n    accounts: {\n      treeConfig: getNextAccount(),\n      payer: getNextAccount(),\n      authority: getNextOptionalAccount(),\n      leafOwner: getNextAccount(),\n      leafDelegate: getNextAccount(),\n      merkleTree: getNextAccount(),\n      coreCollection: getNextOptionalAccount(),\n      logWrapper: getNextAccount(),\n      compressionProgram: getNextAccount(),\n      systemProgram: getNextAccount(),\n    },\n    data: getFreezeV2InstructionDataDecoder().decode(instruction.data),\n  };\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  combineCodec,\n  fixDecoderSize,\n  fixEncoderSize,\n  getBytesDecoder,\n  getBytesEncoder,\n  getStructDecoder,\n  getStructEncoder,\n  transformEncoder,\n  type AccountMeta,\n  type AccountSignerMeta,\n  type Address,\n  type Codec,\n  type Decoder,\n  type Encoder,\n  type Instruction,\n  type InstructionWithAccounts,\n  type InstructionWithData,\n  type ReadonlyAccount,\n  type ReadonlySignerAccount,\n  type ReadonlyUint8Array,\n  type TransactionSigner,\n  type WritableAccount,\n} from '@solana/kit';\nimport { findMasterEditionPda, findMetadataPda } from '../../hooked';\nimport { findTreeConfigPda } from '../pdas';\nimport { MPL_BUBBLEGUM_PROGRAM_ADDRESS } from '../programs';\nimport {\n  expectAddress,\n  expectSome,\n  getAccountMetaFactory,\n  type ResolvedAccount,\n} from '../shared';\nimport {\n  getMetadataArgsDecoder,\n  getMetadataArgsEncoder,\n  type MetadataArgs,\n  type MetadataArgsArgs,\n} from '../types';\n\nexport const MINT_TO_COLLECTION_V1_DISCRIMINATOR = new Uint8Array([\n  153, 18, 178, 47, 197, 158, 86, 15,\n]);\n\nexport function getMintToCollectionV1DiscriminatorBytes() {\n  return fixEncoderSize(getBytesEncoder(), 8).encode(\n    MINT_TO_COLLECTION_V1_DISCRIMINATOR\n  );\n}\n\nexport type MintToCollectionV1Instruction<\n  TProgram extends string = typeof MPL_BUBBLEGUM_PROGRAM_ADDRESS,\n  TAccountTreeConfig extends string | AccountMeta<string> = string,\n  TAccountLeafOwner extends string | AccountMeta<string> = string,\n  TAccountLeafDelegate extends string | AccountMeta<string> = string,\n  TAccountMerkleTree extends string | AccountMeta<string> = string,\n  TAccountPayer extends string | AccountMeta<string> = string,\n  TAccountTreeCreatorOrDelegate extends string | AccountMeta<string> = string,\n  TAccountCollectionAuthority extends string | AccountMeta<string> = string,\n  TAccountCollectionAuthorityRecordPda extends\n    | string\n    | AccountMeta<string> = string,\n  TAccountCollectionMint extends string | AccountMeta<string> = string,\n  TAccountCollectionMetadata extends string | AccountMeta<string> = string,\n  TAccountCollectionEdition extends string | AccountMeta<string> = string,\n  TAccountBubblegumSigner extends\n    | string\n    | AccountMeta<string> = 'BGUMAp9Gq7iTEuizy4pqaxsTyUCBK68MDfK752saRPUY',\n  TAccountLogWrapper extends\n    | string\n    | AccountMeta<string> = 'noopb9bkMVfRPU8AsbpTUg8AQkHtKwMYZiFUjNRtMmV',\n  TAccountCompressionProgram extends\n    | string\n    | AccountMeta<string> = 'cmtDvXumGCrqC1Age74AVPhSRVXJMd8PJS91L8KbNCK',\n  TAccountTokenMetadataProgram extends\n    | string\n    | AccountMeta<string> = 'BGUMAp9Gq7iTEuizy4pqaxsTyUCBK68MDfK752saRPUY',\n  TAccountSystemProgram extends\n    | string\n    | AccountMeta<string> = '11111111111111111111111111111111',\n  TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n  InstructionWithData<ReadonlyUint8Array> &\n  InstructionWithAccounts<\n    [\n      TAccountTreeConfig extends string\n        ? WritableAccount<TAccountTreeConfig>\n        : TAccountTreeConfig,\n      TAccountLeafOwner extends string\n        ? ReadonlyAccount<TAccountLeafOwner>\n        : TAccountLeafOwner,\n      TAccountLeafDelegate extends string\n        ? ReadonlyAccount<TAccountLeafDelegate>\n        : TAccountLeafDelegate,\n      TAccountMerkleTree extends string\n        ? WritableAccount<TAccountMerkleTree>\n        : TAccountMerkleTree,\n      TAccountPayer extends string\n        ? ReadonlySignerAccount<TAccountPayer> &\n            AccountSignerMeta<TAccountPayer>\n        : TAccountPayer,\n      TAccountTreeCreatorOrDelegate extends string\n        ? ReadonlySignerAccount<TAccountTreeCreatorOrDelegate> &\n            AccountSignerMeta<TAccountTreeCreatorOrDelegate>\n        : TAccountTreeCreatorOrDelegate,\n      TAccountCollectionAuthority extends string\n        ? ReadonlySignerAccount<TAccountCollectionAuthority> &\n            AccountSignerMeta<TAccountCollectionAuthority>\n        : TAccountCollectionAuthority,\n      TAccountCollectionAuthorityRecordPda extends string\n        ? ReadonlyAccount<TAccountCollectionAuthorityRecordPda>\n        : TAccountCollectionAuthorityRecordPda,\n      TAccountCollectionMint extends string\n        ? ReadonlyAccount<TAccountCollectionMint>\n        : TAccountCollectionMint,\n      TAccountCollectionMetadata extends string\n        ? WritableAccount<TAccountCollectionMetadata>\n        : TAccountCollectionMetadata,\n      TAccountCollectionEdition extends string\n        ? ReadonlyAccount<TAccountCollectionEdition>\n        : TAccountCollectionEdition,\n      TAccountBubblegumSigner extends string\n        ? ReadonlyAccount<TAccountBubblegumSigner>\n        : TAccountBubblegumSigner,\n      TAccountLogWrapper extends string\n        ? ReadonlyAccount<TAccountLogWrapper>\n        : TAccountLogWrapper,\n      TAccountCompressionProgram extends string\n        ? ReadonlyAccount<TAccountCompressionProgram>\n        : TAccountCompressionProgram,\n      TAccountTokenMetadataProgram extends string\n        ? ReadonlyAccount<TAccountTokenMetadataProgram>\n        : TAccountTokenMetadataProgram,\n      TAccountSystemProgram extends string\n        ? ReadonlyAccount<TAccountSystemProgram>\n        : TAccountSystemProgram,\n      ...TRemainingAccounts,\n    ]\n  >;\n\nexport type MintToCollectionV1InstructionData = {\n  discriminator: ReadonlyUint8Array;\n  metadata: MetadataArgs;\n};\n\nexport type MintToCollectionV1InstructionDataArgs = {\n  metadata: MetadataArgsArgs;\n};\n\nexport function getMintToCollectionV1InstructionDataEncoder(): Encoder<MintToCollectionV1InstructionDataArgs> {\n  return transformEncoder(\n    getStructEncoder([\n      ['discriminator', fixEncoderSize(getBytesEncoder(), 8)],\n      ['metadata', getMetadataArgsEncoder()],\n    ]),\n    (value) => ({\n      ...value,\n      discriminator: MINT_TO_COLLECTION_V1_DISCRIMINATOR,\n    })\n  );\n}\n\nexport function getMintToCollectionV1InstructionDataDecoder(): Decoder<MintToCollectionV1InstructionData> {\n  return getStructDecoder([\n    ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n    ['metadata', getMetadataArgsDecoder()],\n  ]);\n}\n\nexport function getMintToCollectionV1InstructionDataCodec(): Codec<\n  MintToCollectionV1InstructionDataArgs,\n  MintToCollectionV1InstructionData\n> {\n  return combineCodec(\n    getMintToCollectionV1InstructionDataEncoder(),\n    getMintToCollectionV1InstructionDataDecoder()\n  );\n}\n\nexport type MintToCollectionV1AsyncInput<\n  TAccountTreeConfig extends string = string,\n  TAccountLeafOwner extends string = string,\n  TAccountLeafDelegate extends string = string,\n  TAccountMerkleTree extends string = string,\n  TAccountPayer extends string = string,\n  TAccountTreeCreatorOrDelegate extends string = string,\n  TAccountCollectionAuthority extends string = string,\n  TAccountCollectionAuthorityRecordPda extends string = string,\n  TAccountCollectionMint extends string = string,\n  TAccountCollectionMetadata extends string = string,\n  TAccountCollectionEdition extends string = string,\n  TAccountBubblegumSigner extends string = string,\n  TAccountLogWrapper extends string = string,\n  TAccountCompressionProgram extends string = string,\n  TAccountTokenMetadataProgram extends string = string,\n  TAccountSystemProgram extends string = string,\n> = {\n  treeConfig?: Address<TAccountTreeConfig>;\n  leafOwner: Address<TAccountLeafOwner>;\n  leafDelegate?: Address<TAccountLeafDelegate>;\n  merkleTree: Address<TAccountMerkleTree>;\n  payer: TransactionSigner<TAccountPayer>;\n  treeCreatorOrDelegate: TransactionSigner<TAccountTreeCreatorOrDelegate>;\n  collectionAuthority: TransactionSigner<TAccountCollectionAuthority>;\n  /**\n   * If there is no collecton authority record PDA then\n   * this must be the Bubblegum program address.\n   */\n  collectionAuthorityRecordPda?: Address<TAccountCollectionAuthorityRecordPda>;\n  collectionMint: Address<TAccountCollectionMint>;\n  collectionMetadata?: Address<TAccountCollectionMetadata>;\n  collectionEdition?: Address<TAccountCollectionEdition>;\n  bubblegumSigner?: Address<TAccountBubblegumSigner>;\n  logWrapper?: Address<TAccountLogWrapper>;\n  compressionProgram?: Address<TAccountCompressionProgram>;\n  tokenMetadataProgram?: Address<TAccountTokenMetadataProgram>;\n  systemProgram?: Address<TAccountSystemProgram>;\n  metadata: MintToCollectionV1InstructionDataArgs['metadata'];\n};\n\nexport async function getMintToCollectionV1InstructionAsync<\n  TAccountTreeConfig extends string,\n  TAccountLeafOwner extends string,\n  TAccountLeafDelegate extends string,\n  TAccountMerkleTree extends string,\n  TAccountPayer extends string,\n  TAccountTreeCreatorOrDelegate extends string,\n  TAccountCollectionAuthority extends string,\n  TAccountCollectionAuthorityRecordPda extends string,\n  TAccountCollectionMint extends string,\n  TAccountCollectionMetadata extends string,\n  TAccountCollectionEdition extends string,\n  TAccountBubblegumSigner extends string,\n  TAccountLogWrapper extends string,\n  TAccountCompressionProgram extends string,\n  TAccountTokenMetadataProgram extends string,\n  TAccountSystemProgram extends string,\n  TProgramAddress extends Address = typeof MPL_BUBBLEGUM_PROGRAM_ADDRESS,\n>(\n  input: MintToCollectionV1AsyncInput<\n    TAccountTreeConfig,\n    TAccountLeafOwner,\n    TAccountLeafDelegate,\n    TAccountMerkleTree,\n    TAccountPayer,\n    TAccountTreeCreatorOrDelegate,\n    TAccountCollectionAuthority,\n    TAccountCollectionAuthorityRecordPda,\n    TAccountCollectionMint,\n    TAccountCollectionMetadata,\n    TAccountCollectionEdition,\n    TAccountBubblegumSigner,\n    TAccountLogWrapper,\n    TAccountCompressionProgram,\n    TAccountTokenMetadataProgram,\n    TAccountSystemProgram\n  >,\n  config?: { programAddress?: TProgramAddress }\n): Promise<\n  MintToCollectionV1Instruction<\n    TProgramAddress,\n    TAccountTreeConfig,\n    TAccountLeafOwner,\n    TAccountLeafDelegate,\n    TAccountMerkleTree,\n    TAccountPayer,\n    TAccountTreeCreatorOrDelegate,\n    TAccountCollectionAuthority,\n    TAccountCollectionAuthorityRecordPda,\n    TAccountCollectionMint,\n    TAccountCollectionMetadata,\n    TAccountCollectionEdition,\n    TAccountBubblegumSigner,\n    TAccountLogWrapper,\n    TAccountCompressionProgram,\n    TAccountTokenMetadataProgram,\n    TAccountSystemProgram\n  >\n> {\n  // Program address.\n  const programAddress =\n    config?.programAddress ?? MPL_BUBBLEGUM_PROGRAM_ADDRESS;\n\n  // Original accounts.\n  const originalAccounts = {\n    treeConfig: { value: input.treeConfig ?? null, isWritable: true },\n    leafOwner: { value: input.leafOwner ?? null, isWritable: false },\n    leafDelegate: { value: input.leafDelegate ?? null, isWritable: false },\n    merkleTree: { value: input.merkleTree ?? null, isWritable: true },\n    payer: { value: input.payer ?? null, isWritable: false },\n    treeCreatorOrDelegate: {\n      value: input.treeCreatorOrDelegate ?? null,\n      isWritable: false,\n    },\n    collectionAuthority: {\n      value: input.collectionAuthority ?? null,\n      isWritable: false,\n    },\n    collectionAuthorityRecordPda: {\n      value: input.collectionAuthorityRecordPda ?? null,\n      isWritable: false,\n    },\n    collectionMint: { value: input.collectionMint ?? null, isWritable: false },\n    collectionMetadata: {\n      value: input.collectionMetadata ?? null,\n      isWritable: true,\n    },\n    collectionEdition: {\n      value: input.collectionEdition ?? null,\n      isWritable: false,\n    },\n    bubblegumSigner: {\n      value: input.bubblegumSigner ?? null,\n      isWritable: false,\n    },\n    logWrapper: { value: input.logWrapper ?? null, isWritable: false },\n    compressionProgram: {\n      value: input.compressionProgram ?? null,\n      isWritable: false,\n    },\n    tokenMetadataProgram: {\n      value: input.tokenMetadataProgram ?? null,\n      isWritable: false,\n    },\n    systemProgram: { value: input.systemProgram ?? null, isWritable: false },\n  };\n  const accounts = originalAccounts as Record<\n    keyof typeof originalAccounts,\n    ResolvedAccount\n  >;\n\n  // Original args.\n  const args = { ...input };\n\n  // Resolve default values.\n  if (!accounts.treeConfig.value) {\n    accounts.treeConfig.value = await findTreeConfigPda({\n      merkleTree: expectAddress(accounts.merkleTree.value),\n    });\n  }\n  if (!accounts.leafDelegate.value) {\n    accounts.leafDelegate.value = expectSome(accounts.leafOwner.value);\n  }\n  if (!accounts.collectionMetadata.value) {\n    accounts.collectionMetadata.value = await findMetadataPda({\n      mint: expectAddress(accounts.collectionMint.value),\n    });\n  }\n  if (!accounts.collectionEdition.value) {\n    accounts.collectionEdition.value = await findMasterEditionPda({\n      mint: expectAddress(accounts.collectionMint.value),\n    });\n  }\n  if (!accounts.bubblegumSigner.value) {\n    accounts.bubblegumSigner.value = programAddress;\n    accounts.bubblegumSigner.isWritable = false;\n  }\n  if (!accounts.logWrapper.value) {\n    accounts.logWrapper.value =\n      'noopb9bkMVfRPU8AsbpTUg8AQkHtKwMYZiFUjNRtMmV' as Address<'noopb9bkMVfRPU8AsbpTUg8AQkHtKwMYZiFUjNRtMmV'>;\n  }\n  if (!accounts.compressionProgram.value) {\n    accounts.compressionProgram.value =\n      'cmtDvXumGCrqC1Age74AVPhSRVXJMd8PJS91L8KbNCK' as Address<'cmtDvXumGCrqC1Age74AVPhSRVXJMd8PJS91L8KbNCK'>;\n  }\n  if (!accounts.tokenMetadataProgram.value) {\n    accounts.tokenMetadataProgram.value =\n      'BGUMAp9Gq7iTEuizy4pqaxsTyUCBK68MDfK752saRPUY' as Address<'BGUMAp9Gq7iTEuizy4pqaxsTyUCBK68MDfK752saRPUY'>;\n  }\n  if (!accounts.systemProgram.value) {\n    accounts.systemProgram.value =\n      '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>;\n  }\n\n  const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n  return Object.freeze({\n    accounts: [\n      getAccountMeta(accounts.treeConfig),\n      getAccountMeta(accounts.leafOwner),\n      getAccountMeta(accounts.leafDelegate),\n      getAccountMeta(accounts.merkleTree),\n      getAccountMeta(accounts.payer),\n      getAccountMeta(accounts.treeCreatorOrDelegate),\n      getAccountMeta(accounts.collectionAuthority),\n      getAccountMeta(accounts.collectionAuthorityRecordPda),\n      getAccountMeta(accounts.collectionMint),\n      getAccountMeta(accounts.collectionMetadata),\n      getAccountMeta(accounts.collectionEdition),\n      getAccountMeta(accounts.bubblegumSigner),\n      getAccountMeta(accounts.logWrapper),\n      getAccountMeta(accounts.compressionProgram),\n      getAccountMeta(accounts.tokenMetadataProgram),\n      getAccountMeta(accounts.systemProgram),\n    ],\n    data: getMintToCollectionV1InstructionDataEncoder().encode(\n      args as MintToCollectionV1InstructionDataArgs\n    ),\n    programAddress,\n  } as MintToCollectionV1Instruction<\n    TProgramAddress,\n    TAccountTreeConfig,\n    TAccountLeafOwner,\n    TAccountLeafDelegate,\n    TAccountMerkleTree,\n    TAccountPayer,\n    TAccountTreeCreatorOrDelegate,\n    TAccountCollectionAuthority,\n    TAccountCollectionAuthorityRecordPda,\n    TAccountCollectionMint,\n    TAccountCollectionMetadata,\n    TAccountCollectionEdition,\n    TAccountBubblegumSigner,\n    TAccountLogWrapper,\n    TAccountCompressionProgram,\n    TAccountTokenMetadataProgram,\n    TAccountSystemProgram\n  >);\n}\n\nexport type MintToCollectionV1Input<\n  TAccountTreeConfig extends string = string,\n  TAccountLeafOwner extends string = string,\n  TAccountLeafDelegate extends string = string,\n  TAccountMerkleTree extends string = string,\n  TAccountPayer extends string = string,\n  TAccountTreeCreatorOrDelegate extends string = string,\n  TAccountCollectionAuthority extends string = string,\n  TAccountCollectionAuthorityRecordPda extends string = string,\n  TAccountCollectionMint extends string = string,\n  TAccountCollectionMetadata extends string = string,\n  TAccountCollectionEdition extends string = string,\n  TAccountBubblegumSigner extends string = string,\n  TAccountLogWrapper extends string = string,\n  TAccountCompressionProgram extends string = string,\n  TAccountTokenMetadataProgram extends string = string,\n  TAccountSystemProgram extends string = string,\n> = {\n  treeConfig: Address<TAccountTreeConfig>;\n  leafOwner: Address<TAccountLeafOwner>;\n  leafDelegate?: Address<TAccountLeafDelegate>;\n  merkleTree: Address<TAccountMerkleTree>;\n  payer: TransactionSigner<TAccountPayer>;\n  treeCreatorOrDelegate: TransactionSigner<TAccountTreeCreatorOrDelegate>;\n  collectionAuthority: TransactionSigner<TAccountCollectionAuthority>;\n  /**\n   * If there is no collecton authority record PDA then\n   * this must be the Bubblegum program address.\n   */\n  collectionAuthorityRecordPda?: Address<TAccountCollectionAuthorityRecordPda>;\n  collectionMint: Address<TAccountCollectionMint>;\n  collectionMetadata: Address<TAccountCollectionMetadata>;\n  collectionEdition: Address<TAccountCollectionEdition>;\n  bubblegumSigner?: Address<TAccountBubblegumSigner>;\n  logWrapper?: Address<TAccountLogWrapper>;\n  compressionProgram?: Address<TAccountCompressionProgram>;\n  tokenMetadataProgram?: Address<TAccountTokenMetadataProgram>;\n  systemProgram?: Address<TAccountSystemProgram>;\n  metadata: MintToCollectionV1InstructionDataArgs['metadata'];\n};\n\nexport function getMintToCollectionV1Instruction<\n  TAccountTreeConfig extends string,\n  TAccountLeafOwner extends string,\n  TAccountLeafDelegate extends string,\n  TAccountMerkleTree extends string,\n  TAccountPayer extends string,\n  TAccountTreeCreatorOrDelegate extends string,\n  TAccountCollectionAuthority extends string,\n  TAccountCollectionAuthorityRecordPda extends string,\n  TAccountCollectionMint extends string,\n  TAccountCollectionMetadata extends string,\n  TAccountCollectionEdition extends string,\n  TAccountBubblegumSigner extends string,\n  TAccountLogWrapper extends string,\n  TAccountCompressionProgram extends string,\n  TAccountTokenMetadataProgram extends string,\n  TAccountSystemProgram extends string,\n  TProgramAddress extends Address = typeof MPL_BUBBLEGUM_PROGRAM_ADDRESS,\n>(\n  input: MintToCollectionV1Input<\n    TAccountTreeConfig,\n    TAccountLeafOwner,\n    TAccountLeafDelegate,\n    TAccountMerkleTree,\n    TAccountPayer,\n    TAccountTreeCreatorOrDelegate,\n    TAccountCollectionAuthority,\n    TAccountCollectionAuthorityRecordPda,\n    TAccountCollectionMint,\n    TAccountCollectionMetadata,\n    TAccountCollectionEdition,\n    TAccountBubblegumSigner,\n    TAccountLogWrapper,\n    TAccountCompressionProgram,\n    TAccountTokenMetadataProgram,\n    TAccountSystemProgram\n  >,\n  config?: { programAddress?: TProgramAddress }\n): MintToCollectionV1Instruction<\n  TProgramAddress,\n  TAccountTreeConfig,\n  TAccountLeafOwner,\n  TAccountLeafDelegate,\n  TAccountMerkleTree,\n  TAccountPayer,\n  TAccountTreeCreatorOrDelegate,\n  TAccountCollectionAuthority,\n  TAccountCollectionAuthorityRecordPda,\n  TAccountCollectionMint,\n  TAccountCollectionMetadata,\n  TAccountCollectionEdition,\n  TAccountBubblegumSigner,\n  TAccountLogWrapper,\n  TAccountCompressionProgram,\n  TAccountTokenMetadataProgram,\n  TAccountSystemProgram\n> {\n  // Program address.\n  const programAddress =\n    config?.programAddress ?? MPL_BUBBLEGUM_PROGRAM_ADDRESS;\n\n  // Original accounts.\n  const originalAccounts = {\n    treeConfig: { value: input.treeConfig ?? null, isWritable: true },\n    leafOwner: { value: input.leafOwner ?? null, isWritable: false },\n    leafDelegate: { value: input.leafDelegate ?? null, isWritable: false },\n    merkleTree: { value: input.merkleTree ?? null, isWritable: true },\n    payer: { value: input.payer ?? null, isWritable: false },\n    treeCreatorOrDelegate: {\n      value: input.treeCreatorOrDelegate ?? null,\n      isWritable: false,\n    },\n    collectionAuthority: {\n      value: input.collectionAuthority ?? null,\n      isWritable: false,\n    },\n    collectionAuthorityRecordPda: {\n      value: input.collectionAuthorityRecordPda ?? null,\n      isWritable: false,\n    },\n    collectionMint: { value: input.collectionMint ?? null, isWritable: false },\n    collectionMetadata: {\n      value: input.collectionMetadata ?? null,\n      isWritable: true,\n    },\n    collectionEdition: {\n      value: input.collectionEdition ?? null,\n      isWritable: false,\n    },\n    bubblegumSigner: {\n      value: input.bubblegumSigner ?? null,\n      isWritable: false,\n    },\n    logWrapper: { value: input.logWrapper ?? null, isWritable: false },\n    compressionProgram: {\n      value: input.compressionProgram ?? null,\n      isWritable: false,\n    },\n    tokenMetadataProgram: {\n      value: input.tokenMetadataProgram ?? null,\n      isWritable: false,\n    },\n    systemProgram: { value: input.systemProgram ?? null, isWritable: false },\n  };\n  const accounts = originalAccounts as Record<\n    keyof typeof originalAccounts,\n    ResolvedAccount\n  >;\n\n  // Original args.\n  const args = { ...input };\n\n  // Resolve default values.\n  if (!accounts.leafDelegate.value) {\n    accounts.leafDelegate.value = expectSome(accounts.leafOwner.value);\n  }\n  if (!accounts.bubblegumSigner.value) {\n    accounts.bubblegumSigner.value = programAddress;\n    accounts.bubblegumSigner.isWritable = false;\n  }\n  if (!accounts.logWrapper.value) {\n    accounts.logWrapper.value =\n      'noopb9bkMVfRPU8AsbpTUg8AQkHtKwMYZiFUjNRtMmV' as Address<'noopb9bkMVfRPU8AsbpTUg8AQkHtKwMYZiFUjNRtMmV'>;\n  }\n  if (!accounts.compressionProgram.value) {\n    accounts.compressionProgram.value =\n      'cmtDvXumGCrqC1Age74AVPhSRVXJMd8PJS91L8KbNCK' as Address<'cmtDvXumGCrqC1Age74AVPhSRVXJMd8PJS91L8KbNCK'>;\n  }\n  if (!accounts.tokenMetadataProgram.value) {\n    accounts.tokenMetadataProgram.value =\n      'BGUMAp9Gq7iTEuizy4pqaxsTyUCBK68MDfK752saRPUY' as Address<'BGUMAp9Gq7iTEuizy4pqaxsTyUCBK68MDfK752saRPUY'>;\n  }\n  if (!accounts.systemProgram.value) {\n    accounts.systemProgram.value =\n      '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>;\n  }\n\n  const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n  return Object.freeze({\n    accounts: [\n      getAccountMeta(accounts.treeConfig),\n      getAccountMeta(accounts.leafOwner),\n      getAccountMeta(accounts.leafDelegate),\n      getAccountMeta(accounts.merkleTree),\n      getAccountMeta(accounts.payer),\n      getAccountMeta(accounts.treeCreatorOrDelegate),\n      getAccountMeta(accounts.collectionAuthority),\n      getAccountMeta(accounts.collectionAuthorityRecordPda),\n      getAccountMeta(accounts.collectionMint),\n      getAccountMeta(accounts.collectionMetadata),\n      getAccountMeta(accounts.collectionEdition),\n      getAccountMeta(accounts.bubblegumSigner),\n      getAccountMeta(accounts.logWrapper),\n      getAccountMeta(accounts.compressionProgram),\n      getAccountMeta(accounts.tokenMetadataProgram),\n      getAccountMeta(accounts.systemProgram),\n    ],\n    data: getMintToCollectionV1InstructionDataEncoder().encode(\n      args as MintToCollectionV1InstructionDataArgs\n    ),\n    programAddress,\n  } as MintToCollectionV1Instruction<\n    TProgramAddress,\n    TAccountTreeConfig,\n    TAccountLeafOwner,\n    TAccountLeafDelegate,\n    TAccountMerkleTree,\n    TAccountPayer,\n    TAccountTreeCreatorOrDelegate,\n    TAccountCollectionAuthority,\n    TAccountCollectionAuthorityRecordPda,\n    TAccountCollectionMint,\n    TAccountCollectionMetadata,\n    TAccountCollectionEdition,\n    TAccountBubblegumSigner,\n    TAccountLogWrapper,\n    TAccountCompressionProgram,\n    TAccountTokenMetadataProgram,\n    TAccountSystemProgram\n  >);\n}\n\nexport type ParsedMintToCollectionV1Instruction<\n  TProgram extends string = typeof MPL_BUBBLEGUM_PROGRAM_ADDRESS,\n  TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n  programAddress: Address<TProgram>;\n  accounts: {\n    treeConfig: TAccountMetas[0];\n    leafOwner: TAccountMetas[1];\n    leafDelegate: TAccountMetas[2];\n    merkleTree: TAccountMetas[3];\n    payer: TAccountMetas[4];\n    treeCreatorOrDelegate: TAccountMetas[5];\n    collectionAuthority: TAccountMetas[6];\n    /**\n     * If there is no collecton authority record PDA then\n     * this must be the Bubblegum program address.\n     */\n    collectionAuthorityRecordPda?: TAccountMetas[7] | undefined;\n    collectionMint: TAccountMetas[8];\n    collectionMetadata: TAccountMetas[9];\n    collectionEdition: TAccountMetas[10];\n    bubblegumSigner: TAccountMetas[11];\n    logWrapper: TAccountMetas[12];\n    compressionProgram: TAccountMetas[13];\n    tokenMetadataProgram: TAccountMetas[14];\n    systemProgram: TAccountMetas[15];\n  };\n  data: MintToCollectionV1InstructionData;\n};\n\nexport function parseMintToCollectionV1Instruction<\n  TProgram extends string,\n  TAccountMetas extends readonly AccountMeta[],\n>(\n  instruction: Instruction<TProgram> &\n    InstructionWithAccounts<TAccountMetas> &\n    InstructionWithData<ReadonlyUint8Array>\n): ParsedMintToCollectionV1Instruction<TProgram, TAccountMetas> {\n  if (instruction.accounts.length < 16) {\n    // TODO: Coded error.\n    throw new Error('Not enough accounts');\n  }\n  let accountIndex = 0;\n  const getNextAccount = () => {\n    const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n    accountIndex += 1;\n    return accountMeta;\n  };\n  const getNextOptionalAccount = () => {\n    const accountMeta = getNextAccount();\n    return accountMeta.address === MPL_BUBBLEGUM_PROGRAM_ADDRESS\n      ? undefined\n      : accountMeta;\n  };\n  return {\n    programAddress: instruction.programAddress,\n    accounts: {\n      treeConfig: getNextAccount(),\n      leafOwner: getNextAccount(),\n      leafDelegate: getNextAccount(),\n      merkleTree: getNextAccount(),\n      payer: getNextAccount(),\n      treeCreatorOrDelegate: getNextAccount(),\n      collectionAuthority: getNextAccount(),\n      collectionAuthorityRecordPda: getNextOptionalAccount(),\n      collectionMint: getNextAccount(),\n      collectionMetadata: getNextAccount(),\n      collectionEdition: getNextAccount(),\n      bubblegumSigner: getNextAccount(),\n      logWrapper: getNextAccount(),\n      compressionProgram: getNextAccount(),\n      tokenMetadataProgram: getNextAccount(),\n      systemProgram: getNextAccount(),\n    },\n    data: getMintToCollectionV1InstructionDataDecoder().decode(\n      instruction.data\n    ),\n  };\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  combineCodec,\n  fixDecoderSize,\n  fixEncoderSize,\n  getBytesDecoder,\n  getBytesEncoder,\n  getStructDecoder,\n  getStructEncoder,\n  transformEncoder,\n  type AccountMeta,\n  type AccountSignerMeta,\n  type Address,\n  type Codec,\n  type Decoder,\n  type Encoder,\n  type Instruction,\n  type InstructionWithAccounts,\n  type InstructionWithData,\n  type ReadonlyAccount,\n  type ReadonlySignerAccount,\n  type ReadonlyUint8Array,\n  type TransactionSigner,\n  type WritableAccount,\n} from '@solana/kit';\nimport { findTreeConfigPda } from '../pdas';\nimport { MPL_BUBBLEGUM_PROGRAM_ADDRESS } from '../programs';\nimport {\n  expectAddress,\n  expectSome,\n  getAccountMetaFactory,\n  type ResolvedAccount,\n} from '../shared';\nimport {\n  getMetadataArgsDecoder,\n  getMetadataArgsEncoder,\n  type MetadataArgs,\n  type MetadataArgsArgs,\n} from '../types';\n\nexport const MINT_V1_DISCRIMINATOR = new Uint8Array([\n  145, 98, 192, 118, 184, 147, 118, 104,\n]);\n\nexport function getMintV1DiscriminatorBytes() {\n  return fixEncoderSize(getBytesEncoder(), 8).encode(MINT_V1_DISCRIMINATOR);\n}\n\nexport type MintV1Instruction<\n  TProgram extends string = typeof MPL_BUBBLEGUM_PROGRAM_ADDRESS,\n  TAccountTreeConfig extends string | AccountMeta<string> = string,\n  TAccountLeafOwner extends string | AccountMeta<string> = string,\n  TAccountLeafDelegate extends string | AccountMeta<string> = string,\n  TAccountMerkleTree extends string | AccountMeta<string> = string,\n  TAccountPayer extends string | AccountMeta<string> = string,\n  TAccountTreeCreatorOrDelegate extends string | AccountMeta<string> = string,\n  TAccountLogWrapper extends\n    | string\n    | AccountMeta<string> = 'noopb9bkMVfRPU8AsbpTUg8AQkHtKwMYZiFUjNRtMmV',\n  TAccountCompressionProgram extends\n    | string\n    | AccountMeta<string> = 'cmtDvXumGCrqC1Age74AVPhSRVXJMd8PJS91L8KbNCK',\n  TAccountSystemProgram extends\n    | string\n    | AccountMeta<string> = '11111111111111111111111111111111',\n  TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n  InstructionWithData<ReadonlyUint8Array> &\n  InstructionWithAccounts<\n    [\n      TAccountTreeConfig extends string\n        ? WritableAccount<TAccountTreeConfig>\n        : TAccountTreeConfig,\n      TAccountLeafOwner extends string\n        ? ReadonlyAccount<TAccountLeafOwner>\n        : TAccountLeafOwner,\n      TAccountLeafDelegate extends string\n        ? ReadonlyAccount<TAccountLeafDelegate>\n        : TAccountLeafDelegate,\n      TAccountMerkleTree extends string\n        ? WritableAccount<TAccountMerkleTree>\n        : TAccountMerkleTree,\n      TAccountPayer extends string\n        ? ReadonlySignerAccount<TAccountPayer> &\n            AccountSignerMeta<TAccountPayer>\n        : TAccountPayer,\n      TAccountTreeCreatorOrDelegate extends string\n        ? ReadonlySignerAccount<TAccountTreeCreatorOrDelegate> &\n            AccountSignerMeta<TAccountTreeCreatorOrDelegate>\n        : TAccountTreeCreatorOrDelegate,\n      TAccountLogWrapper extends string\n        ? ReadonlyAccount<TAccountLogWrapper>\n        : TAccountLogWrapper,\n      TAccountCompressionProgram extends string\n        ? ReadonlyAccount<TAccountCompressionProgram>\n        : TAccountCompressionProgram,\n      TAccountSystemProgram extends string\n        ? ReadonlyAccount<TAccountSystemProgram>\n        : TAccountSystemProgram,\n      ...TRemainingAccounts,\n    ]\n  >;\n\nexport type MintV1InstructionData = {\n  discriminator: ReadonlyUint8Array;\n  metadata: MetadataArgs;\n};\n\nexport type MintV1InstructionDataArgs = { metadata: MetadataArgsArgs };\n\nexport function getMintV1InstructionDataEncoder(): Encoder<MintV1InstructionDataArgs> {\n  return transformEncoder(\n    getStructEncoder([\n      ['discriminator', fixEncoderSize(getBytesEncoder(), 8)],\n      ['metadata', getMetadataArgsEncoder()],\n    ]),\n    (value) => ({ ...value, discriminator: MINT_V1_DISCRIMINATOR })\n  );\n}\n\nexport function getMintV1InstructionDataDecoder(): Decoder<MintV1InstructionData> {\n  return getStructDecoder([\n    ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n    ['metadata', getMetadataArgsDecoder()],\n  ]);\n}\n\nexport function getMintV1InstructionDataCodec(): Codec<\n  MintV1InstructionDataArgs,\n  MintV1InstructionData\n> {\n  return combineCodec(\n    getMintV1InstructionDataEncoder(),\n    getMintV1InstructionDataDecoder()\n  );\n}\n\nexport type MintV1AsyncInput<\n  TAccountTreeConfig extends string = string,\n  TAccountLeafOwner extends string = string,\n  TAccountLeafDelegate extends string = string,\n  TAccountMerkleTree extends string = string,\n  TAccountPayer extends string = string,\n  TAccountTreeCreatorOrDelegate extends string = string,\n  TAccountLogWrapper extends string = string,\n  TAccountCompressionProgram extends string = string,\n  TAccountSystemProgram extends string = string,\n> = {\n  treeConfig?: Address<TAccountTreeConfig>;\n  leafOwner: Address<TAccountLeafOwner>;\n  leafDelegate?: Address<TAccountLeafDelegate>;\n  merkleTree: Address<TAccountMerkleTree>;\n  payer?: TransactionSigner<TAccountPayer>;\n  treeCreatorOrDelegate: TransactionSigner<TAccountTreeCreatorOrDelegate>;\n  logWrapper?: Address<TAccountLogWrapper>;\n  compressionProgram?: Address<TAccountCompressionProgram>;\n  systemProgram?: Address<TAccountSystemProgram>;\n  metadata: MintV1InstructionDataArgs['metadata'];\n};\n\nexport async function getMintV1InstructionAsync<\n  TAccountTreeConfig extends string,\n  TAccountLeafOwner extends string,\n  TAccountLeafDelegate extends string,\n  TAccountMerkleTree extends string,\n  TAccountPayer extends string,\n  TAccountTreeCreatorOrDelegate extends string,\n  TAccountLogWrapper extends string,\n  TAccountCompressionProgram extends string,\n  TAccountSystemProgram extends string,\n  TProgramAddress extends Address = typeof MPL_BUBBLEGUM_PROGRAM_ADDRESS,\n>(\n  input: MintV1AsyncInput<\n    TAccountTreeConfig,\n    TAccountLeafOwner,\n    TAccountLeafDelegate,\n    TAccountMerkleTree,\n    TAccountPayer,\n    TAccountTreeCreatorOrDelegate,\n    TAccountLogWrapper,\n    TAccountCompressionProgram,\n    TAccountSystemProgram\n  >,\n  config?: { programAddress?: TProgramAddress }\n): Promise<\n  MintV1Instruction<\n    TProgramAddress,\n    TAccountTreeConfig,\n    TAccountLeafOwner,\n    TAccountLeafDelegate,\n    TAccountMerkleTree,\n    TAccountPayer,\n    TAccountTreeCreatorOrDelegate,\n    TAccountLogWrapper,\n    TAccountCompressionProgram,\n    TAccountSystemProgram\n  >\n> {\n  // Program address.\n  const programAddress =\n    config?.programAddress ?? MPL_BUBBLEGUM_PROGRAM_ADDRESS;\n\n  // Original accounts.\n  const originalAccounts = {\n    treeConfig: { value: input.treeConfig ?? null, isWritable: true },\n    leafOwner: { value: input.leafOwner ?? null, isWritable: false },\n    leafDelegate: { value: input.leafDelegate ?? null, isWritable: false },\n    merkleTree: { value: input.merkleTree ?? null, isWritable: true },\n    payer: { value: input.payer ?? null, isWritable: false },\n    treeCreatorOrDelegate: {\n      value: input.treeCreatorOrDelegate ?? null,\n      isWritable: false,\n    },\n    logWrapper: { value: input.logWrapper ?? null, isWritable: false },\n    compressionProgram: {\n      value: input.compressionProgram ?? null,\n      isWritable: false,\n    },\n    systemProgram: { value: input.systemProgram ?? null, isWritable: false },\n  };\n  const accounts = originalAccounts as Record<\n    keyof typeof originalAccounts,\n    ResolvedAccount\n  >;\n\n  // Original args.\n  const args = { ...input };\n\n  // Resolve default values.\n  if (!accounts.treeConfig.value) {\n    accounts.treeConfig.value = await findTreeConfigPda({\n      merkleTree: expectAddress(accounts.merkleTree.value),\n    });\n  }\n  if (!accounts.leafDelegate.value) {\n    accounts.leafDelegate.value = expectSome(accounts.leafOwner.value);\n  }\n  if (!accounts.payer.value) {\n    accounts.payer.value = expectSome(accounts.treeCreatorOrDelegate.value);\n  }\n  if (!accounts.logWrapper.value) {\n    accounts.logWrapper.value =\n      'noopb9bkMVfRPU8AsbpTUg8AQkHtKwMYZiFUjNRtMmV' as Address<'noopb9bkMVfRPU8AsbpTUg8AQkHtKwMYZiFUjNRtMmV'>;\n  }\n  if (!accounts.compressionProgram.value) {\n    accounts.compressionProgram.value =\n      'cmtDvXumGCrqC1Age74AVPhSRVXJMd8PJS91L8KbNCK' as Address<'cmtDvXumGCrqC1Age74AVPhSRVXJMd8PJS91L8KbNCK'>;\n  }\n  if (!accounts.systemProgram.value) {\n    accounts.systemProgram.value =\n      '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>;\n  }\n\n  const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n  return Object.freeze({\n    accounts: [\n      getAccountMeta(accounts.treeConfig),\n      getAccountMeta(accounts.leafOwner),\n      getAccountMeta(accounts.leafDelegate),\n      getAccountMeta(accounts.merkleTree),\n      getAccountMeta(accounts.payer),\n      getAccountMeta(accounts.treeCreatorOrDelegate),\n      getAccountMeta(accounts.logWrapper),\n      getAccountMeta(accounts.compressionProgram),\n      getAccountMeta(accounts.systemProgram),\n    ],\n    data: getMintV1InstructionDataEncoder().encode(\n      args as MintV1InstructionDataArgs\n    ),\n    programAddress,\n  } as MintV1Instruction<\n    TProgramAddress,\n    TAccountTreeConfig,\n    TAccountLeafOwner,\n    TAccountLeafDelegate,\n    TAccountMerkleTree,\n    TAccountPayer,\n    TAccountTreeCreatorOrDelegate,\n    TAccountLogWrapper,\n    TAccountCompressionProgram,\n    TAccountSystemProgram\n  >);\n}\n\nexport type MintV1Input<\n  TAccountTreeConfig extends string = string,\n  TAccountLeafOwner extends string = string,\n  TAccountLeafDelegate extends string = string,\n  TAccountMerkleTree extends string = string,\n  TAccountPayer extends string = string,\n  TAccountTreeCreatorOrDelegate extends string = string,\n  TAccountLogWrapper extends string = string,\n  TAccountCompressionProgram extends string = string,\n  TAccountSystemProgram extends string = string,\n> = {\n  treeConfig: Address<TAccountTreeConfig>;\n  leafOwner: Address<TAccountLeafOwner>;\n  leafDelegate?: Address<TAccountLeafDelegate>;\n  merkleTree: Address<TAccountMerkleTree>;\n  payer?: TransactionSigner<TAccountPayer>;\n  treeCreatorOrDelegate: TransactionSigner<TAccountTreeCreatorOrDelegate>;\n  logWrapper?: Address<TAccountLogWrapper>;\n  compressionProgram?: Address<TAccountCompressionProgram>;\n  systemProgram?: Address<TAccountSystemProgram>;\n  metadata: MintV1InstructionDataArgs['metadata'];\n};\n\nexport function getMintV1Instruction<\n  TAccountTreeConfig extends string,\n  TAccountLeafOwner extends string,\n  TAccountLeafDelegate extends string,\n  TAccountMerkleTree extends string,\n  TAccountPayer extends string,\n  TAccountTreeCreatorOrDelegate extends string,\n  TAccountLogWrapper extends string,\n  TAccountCompressionProgram extends string,\n  TAccountSystemProgram extends string,\n  TProgramAddress extends Address = typeof MPL_BUBBLEGUM_PROGRAM_ADDRESS,\n>(\n  input: MintV1Input<\n    TAccountTreeConfig,\n    TAccountLeafOwner,\n    TAccountLeafDelegate,\n    TAccountMerkleTree,\n    TAccountPayer,\n    TAccountTreeCreatorOrDelegate,\n    TAccountLogWrapper,\n    TAccountCompressionProgram,\n    TAccountSystemProgram\n  >,\n  config?: { programAddress?: TProgramAddress }\n): MintV1Instruction<\n  TProgramAddress,\n  TAccountTreeConfig,\n  TAccountLeafOwner,\n  TAccountLeafDelegate,\n  TAccountMerkleTree,\n  TAccountPayer,\n  TAccountTreeCreatorOrDelegate,\n  TAccountLogWrapper,\n  TAccountCompressionProgram,\n  TAccountSystemProgram\n> {\n  // Program address.\n  const programAddress =\n    config?.programAddress ?? MPL_BUBBLEGUM_PROGRAM_ADDRESS;\n\n  // Original accounts.\n  const originalAccounts = {\n    treeConfig: { value: input.treeConfig ?? null, isWritable: true },\n    leafOwner: { value: input.leafOwner ?? null, isWritable: false },\n    leafDelegate: { value: input.leafDelegate ?? null, isWritable: false },\n    merkleTree: { value: input.merkleTree ?? null, isWritable: true },\n    payer: { value: input.payer ?? null, isWritable: false },\n    treeCreatorOrDelegate: {\n      value: input.treeCreatorOrDelegate ?? null,\n      isWritable: false,\n    },\n    logWrapper: { value: input.logWrapper ?? null, isWritable: false },\n    compressionProgram: {\n      value: input.compressionProgram ?? null,\n      isWritable: false,\n    },\n    systemProgram: { value: input.systemProgram ?? null, isWritable: false },\n  };\n  const accounts = originalAccounts as Record<\n    keyof typeof originalAccounts,\n    ResolvedAccount\n  >;\n\n  // Original args.\n  const args = { ...input };\n\n  // Resolve default values.\n  if (!accounts.leafDelegate.value) {\n    accounts.leafDelegate.value = expectSome(accounts.leafOwner.value);\n  }\n  if (!accounts.payer.value) {\n    accounts.payer.value = expectSome(accounts.treeCreatorOrDelegate.value);\n  }\n  if (!accounts.logWrapper.value) {\n    accounts.logWrapper.value =\n      'noopb9bkMVfRPU8AsbpTUg8AQkHtKwMYZiFUjNRtMmV' as Address<'noopb9bkMVfRPU8AsbpTUg8AQkHtKwMYZiFUjNRtMmV'>;\n  }\n  if (!accounts.compressionProgram.value) {\n    accounts.compressionProgram.value =\n      'cmtDvXumGCrqC1Age74AVPhSRVXJMd8PJS91L8KbNCK' as Address<'cmtDvXumGCrqC1Age74AVPhSRVXJMd8PJS91L8KbNCK'>;\n  }\n  if (!accounts.systemProgram.value) {\n    accounts.systemProgram.value =\n      '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>;\n  }\n\n  const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n  return Object.freeze({\n    accounts: [\n      getAccountMeta(accounts.treeConfig),\n      getAccountMeta(accounts.leafOwner),\n      getAccountMeta(accounts.leafDelegate),\n      getAccountMeta(accounts.merkleTree),\n      getAccountMeta(accounts.payer),\n      getAccountMeta(accounts.treeCreatorOrDelegate),\n      getAccountMeta(accounts.logWrapper),\n      getAccountMeta(accounts.compressionProgram),\n      getAccountMeta(accounts.systemProgram),\n    ],\n    data: getMintV1InstructionDataEncoder().encode(\n      args as MintV1InstructionDataArgs\n    ),\n    programAddress,\n  } as MintV1Instruction<\n    TProgramAddress,\n    TAccountTreeConfig,\n    TAccountLeafOwner,\n    TAccountLeafDelegate,\n    TAccountMerkleTree,\n    TAccountPayer,\n    TAccountTreeCreatorOrDelegate,\n    TAccountLogWrapper,\n    TAccountCompressionProgram,\n    TAccountSystemProgram\n  >);\n}\n\nexport type ParsedMintV1Instruction<\n  TProgram extends string = typeof MPL_BUBBLEGUM_PROGRAM_ADDRESS,\n  TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n  programAddress: Address<TProgram>;\n  accounts: {\n    treeConfig: TAccountMetas[0];\n    leafOwner: TAccountMetas[1];\n    leafDelegate: TAccountMetas[2];\n    merkleTree: TAccountMetas[3];\n    payer: TAccountMetas[4];\n    treeCreatorOrDelegate: TAccountMetas[5];\n    logWrapper: TAccountMetas[6];\n    compressionProgram: TAccountMetas[7];\n    systemProgram: TAccountMetas[8];\n  };\n  data: MintV1InstructionData;\n};\n\nexport function parseMintV1Instruction<\n  TProgram extends string,\n  TAccountMetas extends readonly AccountMeta[],\n>(\n  instruction: Instruction<TProgram> &\n    InstructionWithAccounts<TAccountMetas> &\n    InstructionWithData<ReadonlyUint8Array>\n): ParsedMintV1Instruction<TProgram, TAccountMetas> {\n  if (instruction.accounts.length < 9) {\n    // TODO: Coded error.\n    throw new Error('Not enough accounts');\n  }\n  let accountIndex = 0;\n  const getNextAccount = () => {\n    const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n    accountIndex += 1;\n    return accountMeta;\n  };\n  return {\n    programAddress: instruction.programAddress,\n    accounts: {\n      treeConfig: getNextAccount(),\n      leafOwner: getNextAccount(),\n      leafDelegate: getNextAccount(),\n      merkleTree: getNextAccount(),\n      payer: getNextAccount(),\n      treeCreatorOrDelegate: getNextAccount(),\n      logWrapper: getNextAccount(),\n      compressionProgram: getNextAccount(),\n      systemProgram: getNextAccount(),\n    },\n    data: getMintV1InstructionDataDecoder().decode(instruction.data),\n  };\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  addDecoderSizePrefix,\n  addEncoderSizePrefix,\n  combineCodec,\n  fixDecoderSize,\n  fixEncoderSize,\n  getBytesDecoder,\n  getBytesEncoder,\n  getOptionDecoder,\n  getOptionEncoder,\n  getStructDecoder,\n  getStructEncoder,\n  getU32Decoder,\n  getU32Encoder,\n  none,\n  transformEncoder,\n  type AccountMeta,\n  type AccountSignerMeta,\n  type Address,\n  type Codec,\n  type Decoder,\n  type Encoder,\n  type Instruction,\n  type InstructionWithAccounts,\n  type InstructionWithData,\n  type Option,\n  type OptionOrNullable,\n  type ReadonlyAccount,\n  type ReadonlySignerAccount,\n  type ReadonlyUint8Array,\n  type TransactionSigner,\n  type WritableAccount,\n  type WritableSignerAccount,\n} from '@solana/kit';\nimport { findTreeConfigPda } from '../pdas';\nimport { MPL_BUBBLEGUM_PROGRAM_ADDRESS } from '../programs';\nimport {\n  expectAddress,\n  getAccountMetaFactory,\n  type ResolvedAccount,\n} from '../shared';\nimport {\n  getAssetDataSchemaDecoder,\n  getAssetDataSchemaEncoder,\n  getMetadataArgsV2Decoder,\n  getMetadataArgsV2Encoder,\n  type AssetDataSchema,\n  type AssetDataSchemaArgs,\n  type MetadataArgsV2,\n  type MetadataArgsV2Args,\n} from '../types';\n\nexport const MINT_V2_DISCRIMINATOR = new Uint8Array([\n  120, 121, 23, 146, 173, 110, 199, 205,\n]);\n\nexport function getMintV2DiscriminatorBytes() {\n  return fixEncoderSize(getBytesEncoder(), 8).encode(MINT_V2_DISCRIMINATOR);\n}\n\nexport type MintV2Instruction<\n  TProgram extends string = typeof MPL_BUBBLEGUM_PROGRAM_ADDRESS,\n  TAccountTreeConfig extends string | AccountMeta<string> = string,\n  TAccountPayer extends string | AccountMeta<string> = string,\n  TAccountTreeCreatorOrDelegate extends string | AccountMeta<string> = string,\n  TAccountCollectionAuthority extends string | AccountMeta<string> = string,\n  TAccountLeafOwner extends string | AccountMeta<string> = string,\n  TAccountLeafDelegate extends string | AccountMeta<string> = string,\n  TAccountMerkleTree extends string | AccountMeta<string> = string,\n  TAccountCoreCollection extends string | AccountMeta<string> = string,\n  TAccountMplCoreCpiSigner extends string | AccountMeta<string> = string,\n  TAccountLogWrapper extends\n    | string\n    | AccountMeta<string> = 'mnoopTCrg4p8ry25e4bcWA9XZjbNjMTfgYVGGEdRsf3',\n  TAccountCompressionProgram extends\n    | string\n    | AccountMeta<string> = 'mcmt6YrQEMKw8Mw43FmpRLmf7BqRnFMKmAcbxE3xkAW',\n  TAccountMplCoreProgram extends\n    | string\n    | AccountMeta<string> = 'CoREENxT6tW1HoK8ypY1SxRMZTcVPm7R94rH4PZNhX7d',\n  TAccountSystemProgram extends\n    | string\n    | AccountMeta<string> = '11111111111111111111111111111111',\n  TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n  InstructionWithData<ReadonlyUint8Array> &\n  InstructionWithAccounts<\n    [\n      TAccountTreeConfig extends string\n        ? WritableAccount<TAccountTreeConfig>\n        : TAccountTreeConfig,\n      TAccountPayer extends string\n        ? WritableSignerAccount<TAccountPayer> &\n            AccountSignerMeta<TAccountPayer>\n        : TAccountPayer,\n      TAccountTreeCreatorOrDelegate extends string\n        ? ReadonlySignerAccount<TAccountTreeCreatorOrDelegate> &\n            AccountSignerMeta<TAccountTreeCreatorOrDelegate>\n        : TAccountTreeCreatorOrDelegate,\n      TAccountCollectionAuthority extends string\n        ? ReadonlySignerAccount<TAccountCollectionAuthority> &\n            AccountSignerMeta<TAccountCollectionAuthority>\n        : TAccountCollectionAuthority,\n      TAccountLeafOwner extends string\n        ? ReadonlyAccount<TAccountLeafOwner>\n        : TAccountLeafOwner,\n      TAccountLeafDelegate extends string\n        ? ReadonlyAccount<TAccountLeafDelegate>\n        : TAccountLeafDelegate,\n      TAccountMerkleTree extends string\n        ? WritableAccount<TAccountMerkleTree>\n        : TAccountMerkleTree,\n      TAccountCoreCollection extends string\n        ? WritableAccount<TAccountCoreCollection>\n        : TAccountCoreCollection,\n      TAccountMplCoreCpiSigner extends string\n        ? ReadonlyAccount<TAccountMplCoreCpiSigner>\n        : TAccountMplCoreCpiSigner,\n      TAccountLogWrapper extends string\n        ? ReadonlyAccount<TAccountLogWrapper>\n        : TAccountLogWrapper,\n      TAccountCompressionProgram extends string\n        ? ReadonlyAccount<TAccountCompressionProgram>\n        : TAccountCompressionProgram,\n      TAccountMplCoreProgram extends string\n        ? ReadonlyAccount<TAccountMplCoreProgram>\n        : TAccountMplCoreProgram,\n      TAccountSystemProgram extends string\n        ? ReadonlyAccount<TAccountSystemProgram>\n        : TAccountSystemProgram,\n      ...TRemainingAccounts,\n    ]\n  >;\n\nexport type MintV2InstructionData = {\n  discriminator: ReadonlyUint8Array;\n  metadata: MetadataArgsV2;\n  assetData: Option<ReadonlyUint8Array>;\n  assetDataSchema: Option<AssetDataSchema>;\n};\n\nexport type MintV2InstructionDataArgs = {\n  metadata: MetadataArgsV2Args;\n  assetData?: OptionOrNullable<ReadonlyUint8Array>;\n  assetDataSchema?: OptionOrNullable<AssetDataSchemaArgs>;\n};\n\nexport function getMintV2InstructionDataEncoder(): Encoder<MintV2InstructionDataArgs> {\n  return transformEncoder(\n    getStructEncoder([\n      ['discriminator', fixEncoderSize(getBytesEncoder(), 8)],\n      ['metadata', getMetadataArgsV2Encoder()],\n      [\n        'assetData',\n        getOptionEncoder(\n          addEncoderSizePrefix(getBytesEncoder(), getU32Encoder())\n        ),\n      ],\n      ['assetDataSchema', getOptionEncoder(getAssetDataSchemaEncoder())],\n    ]),\n    (value) => ({\n      ...value,\n      discriminator: MINT_V2_DISCRIMINATOR,\n      assetData: value.assetData ?? none(),\n      assetDataSchema: value.assetDataSchema ?? none(),\n    })\n  );\n}\n\nexport function getMintV2InstructionDataDecoder(): Decoder<MintV2InstructionData> {\n  return getStructDecoder([\n    ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n    ['metadata', getMetadataArgsV2Decoder()],\n    [\n      'assetData',\n      getOptionDecoder(\n        addDecoderSizePrefix(getBytesDecoder(), getU32Decoder())\n      ),\n    ],\n    ['assetDataSchema', getOptionDecoder(getAssetDataSchemaDecoder())],\n  ]);\n}\n\nexport function getMintV2InstructionDataCodec(): Codec<\n  MintV2InstructionDataArgs,\n  MintV2InstructionData\n> {\n  return combineCodec(\n    getMintV2InstructionDataEncoder(),\n    getMintV2InstructionDataDecoder()\n  );\n}\n\nexport type MintV2AsyncInput<\n  TAccountTreeConfig extends string = string,\n  TAccountPayer extends string = string,\n  TAccountTreeCreatorOrDelegate extends string = string,\n  TAccountCollectionAuthority extends string = string,\n  TAccountLeafOwner extends string = string,\n  TAccountLeafDelegate extends string = string,\n  TAccountMerkleTree extends string = string,\n  TAccountCoreCollection extends string = string,\n  TAccountMplCoreCpiSigner extends string = string,\n  TAccountLogWrapper extends string = string,\n  TAccountCompressionProgram extends string = string,\n  TAccountMplCoreProgram extends string = string,\n  TAccountSystemProgram extends string = string,\n> = {\n  treeConfig?: Address<TAccountTreeConfig>;\n  payer: TransactionSigner<TAccountPayer>;\n  /** Optional tree delegate, defaults to `payer` */\n  treeCreatorOrDelegate?: TransactionSigner<TAccountTreeCreatorOrDelegate>;\n  /** Optional collection authority, defaults to `tree_delegate` */\n  collectionAuthority?: TransactionSigner<TAccountCollectionAuthority>;\n  leafOwner: Address<TAccountLeafOwner>;\n  leafDelegate?: Address<TAccountLeafDelegate>;\n  merkleTree: Address<TAccountMerkleTree>;\n  coreCollection?: Address<TAccountCoreCollection>;\n  mplCoreCpiSigner?: Address<TAccountMplCoreCpiSigner>;\n  logWrapper?: Address<TAccountLogWrapper>;\n  compressionProgram?: Address<TAccountCompressionProgram>;\n  mplCoreProgram?: Address<TAccountMplCoreProgram>;\n  systemProgram?: Address<TAccountSystemProgram>;\n  metadata: MintV2InstructionDataArgs['metadata'];\n  assetData?: MintV2InstructionDataArgs['assetData'];\n  assetDataSchema?: MintV2InstructionDataArgs['assetDataSchema'];\n};\n\nexport async function getMintV2InstructionAsync<\n  TAccountTreeConfig extends string,\n  TAccountPayer extends string,\n  TAccountTreeCreatorOrDelegate extends string,\n  TAccountCollectionAuthority extends string,\n  TAccountLeafOwner extends string,\n  TAccountLeafDelegate extends string,\n  TAccountMerkleTree extends string,\n  TAccountCoreCollection extends string,\n  TAccountMplCoreCpiSigner extends string,\n  TAccountLogWrapper extends string,\n  TAccountCompressionProgram extends string,\n  TAccountMplCoreProgram extends string,\n  TAccountSystemProgram extends string,\n  TProgramAddress extends Address = typeof MPL_BUBBLEGUM_PROGRAM_ADDRESS,\n>(\n  input: MintV2AsyncInput<\n    TAccountTreeConfig,\n    TAccountPayer,\n    TAccountTreeCreatorOrDelegate,\n    TAccountCollectionAuthority,\n    TAccountLeafOwner,\n    TAccountLeafDelegate,\n    TAccountMerkleTree,\n    TAccountCoreCollection,\n    TAccountMplCoreCpiSigner,\n    TAccountLogWrapper,\n    TAccountCompressionProgram,\n    TAccountMplCoreProgram,\n    TAccountSystemProgram\n  >,\n  config?: { programAddress?: TProgramAddress }\n): Promise<\n  MintV2Instruction<\n    TProgramAddress,\n    TAccountTreeConfig,\n    TAccountPayer,\n    TAccountTreeCreatorOrDelegate,\n    TAccountCollectionAuthority,\n    TAccountLeafOwner,\n    TAccountLeafDelegate,\n    TAccountMerkleTree,\n    TAccountCoreCollection,\n    TAccountMplCoreCpiSigner,\n    TAccountLogWrapper,\n    TAccountCompressionProgram,\n    TAccountMplCoreProgram,\n    TAccountSystemProgram\n  >\n> {\n  // Program address.\n  const programAddress =\n    config?.programAddress ?? MPL_BUBBLEGUM_PROGRAM_ADDRESS;\n\n  // Original accounts.\n  const originalAccounts = {\n    treeConfig: { value: input.treeConfig ?? null, isWritable: true },\n    payer: { value: input.payer ?? null, isWritable: true },\n    treeCreatorOrDelegate: {\n      value: input.treeCreatorOrDelegate ?? null,\n      isWritable: false,\n    },\n    collectionAuthority: {\n      value: input.collectionAuthority ?? null,\n      isWritable: false,\n    },\n    leafOwner: { value: input.leafOwner ?? null, isWritable: false },\n    leafDelegate: { value: input.leafDelegate ?? null, isWritable: false },\n    merkleTree: { value: input.merkleTree ?? null, isWritable: true },\n    coreCollection: { value: input.coreCollection ?? null, isWritable: true },\n    mplCoreCpiSigner: {\n      value: input.mplCoreCpiSigner ?? null,\n      isWritable: false,\n    },\n    logWrapper: { value: input.logWrapper ?? null, isWritable: false },\n    compressionProgram: {\n      value: input.compressionProgram ?? null,\n      isWritable: false,\n    },\n    mplCoreProgram: { value: input.mplCoreProgram ?? null, isWritable: false },\n    systemProgram: { value: input.systemProgram ?? null, isWritable: false },\n  };\n  const accounts = originalAccounts as Record<\n    keyof typeof originalAccounts,\n    ResolvedAccount\n  >;\n\n  // Original args.\n  const args = { ...input };\n\n  // Resolve default values.\n  if (!accounts.treeConfig.value) {\n    accounts.treeConfig.value = await findTreeConfigPda({\n      merkleTree: expectAddress(accounts.merkleTree.value),\n    });\n  }\n  if (!accounts.mplCoreCpiSigner.value) {\n    if (accounts.coreCollection.value) {\n      accounts.mplCoreCpiSigner.value =\n        'CbNY3JiXdXNE9tPNEk1aRZVEkWdj2v7kfJLNQwZZgpXk' as Address<'CbNY3JiXdXNE9tPNEk1aRZVEkWdj2v7kfJLNQwZZgpXk'>;\n    }\n  }\n  if (!accounts.logWrapper.value) {\n    accounts.logWrapper.value =\n      'mnoopTCrg4p8ry25e4bcWA9XZjbNjMTfgYVGGEdRsf3' as Address<'mnoopTCrg4p8ry25e4bcWA9XZjbNjMTfgYVGGEdRsf3'>;\n  }\n  if (!accounts.compressionProgram.value) {\n    accounts.compressionProgram.value =\n      'mcmt6YrQEMKw8Mw43FmpRLmf7BqRnFMKmAcbxE3xkAW' as Address<'mcmt6YrQEMKw8Mw43FmpRLmf7BqRnFMKmAcbxE3xkAW'>;\n  }\n  if (!accounts.mplCoreProgram.value) {\n    accounts.mplCoreProgram.value =\n      'CoREENxT6tW1HoK8ypY1SxRMZTcVPm7R94rH4PZNhX7d' as Address<'CoREENxT6tW1HoK8ypY1SxRMZTcVPm7R94rH4PZNhX7d'>;\n  }\n  if (!accounts.systemProgram.value) {\n    accounts.systemProgram.value =\n      '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>;\n  }\n\n  const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n  return Object.freeze({\n    accounts: [\n      getAccountMeta(accounts.treeConfig),\n      getAccountMeta(accounts.payer),\n      getAccountMeta(accounts.treeCreatorOrDelegate),\n      getAccountMeta(accounts.collectionAuthority),\n      getAccountMeta(accounts.leafOwner),\n      getAccountMeta(accounts.leafDelegate),\n      getAccountMeta(accounts.merkleTree),\n      getAccountMeta(accounts.coreCollection),\n      getAccountMeta(accounts.mplCoreCpiSigner),\n      getAccountMeta(accounts.logWrapper),\n      getAccountMeta(accounts.compressionProgram),\n      getAccountMeta(accounts.mplCoreProgram),\n      getAccountMeta(accounts.systemProgram),\n    ],\n    data: getMintV2InstructionDataEncoder().encode(\n      args as MintV2InstructionDataArgs\n    ),\n    programAddress,\n  } as MintV2Instruction<\n    TProgramAddress,\n    TAccountTreeConfig,\n    TAccountPayer,\n    TAccountTreeCreatorOrDelegate,\n    TAccountCollectionAuthority,\n    TAccountLeafOwner,\n    TAccountLeafDelegate,\n    TAccountMerkleTree,\n    TAccountCoreCollection,\n    TAccountMplCoreCpiSigner,\n    TAccountLogWrapper,\n    TAccountCompressionProgram,\n    TAccountMplCoreProgram,\n    TAccountSystemProgram\n  >);\n}\n\nexport type MintV2Input<\n  TAccountTreeConfig extends string = string,\n  TAccountPayer extends string = string,\n  TAccountTreeCreatorOrDelegate extends string = string,\n  TAccountCollectionAuthority extends string = string,\n  TAccountLeafOwner extends string = string,\n  TAccountLeafDelegate extends string = string,\n  TAccountMerkleTree extends string = string,\n  TAccountCoreCollection extends string = string,\n  TAccountMplCoreCpiSigner extends string = string,\n  TAccountLogWrapper extends string = string,\n  TAccountCompressionProgram extends string = string,\n  TAccountMplCoreProgram extends string = string,\n  TAccountSystemProgram extends string = string,\n> = {\n  treeConfig: Address<TAccountTreeConfig>;\n  payer: TransactionSigner<TAccountPayer>;\n  /** Optional tree delegate, defaults to `payer` */\n  treeCreatorOrDelegate?: TransactionSigner<TAccountTreeCreatorOrDelegate>;\n  /** Optional collection authority, defaults to `tree_delegate` */\n  collectionAuthority?: TransactionSigner<TAccountCollectionAuthority>;\n  leafOwner: Address<TAccountLeafOwner>;\n  leafDelegate?: Address<TAccountLeafDelegate>;\n  merkleTree: Address<TAccountMerkleTree>;\n  coreCollection?: Address<TAccountCoreCollection>;\n  mplCoreCpiSigner?: Address<TAccountMplCoreCpiSigner>;\n  logWrapper?: Address<TAccountLogWrapper>;\n  compressionProgram?: Address<TAccountCompressionProgram>;\n  mplCoreProgram?: Address<TAccountMplCoreProgram>;\n  systemProgram?: Address<TAccountSystemProgram>;\n  metadata: MintV2InstructionDataArgs['metadata'];\n  assetData?: MintV2InstructionDataArgs['assetData'];\n  assetDataSchema?: MintV2InstructionDataArgs['assetDataSchema'];\n};\n\nexport function getMintV2Instruction<\n  TAccountTreeConfig extends string,\n  TAccountPayer extends string,\n  TAccountTreeCreatorOrDelegate extends string,\n  TAccountCollectionAuthority extends string,\n  TAccountLeafOwner extends string,\n  TAccountLeafDelegate extends string,\n  TAccountMerkleTree extends string,\n  TAccountCoreCollection extends string,\n  TAccountMplCoreCpiSigner extends string,\n  TAccountLogWrapper extends string,\n  TAccountCompressionProgram extends string,\n  TAccountMplCoreProgram extends string,\n  TAccountSystemProgram extends string,\n  TProgramAddress extends Address = typeof MPL_BUBBLEGUM_PROGRAM_ADDRESS,\n>(\n  input: MintV2Input<\n    TAccountTreeConfig,\n    TAccountPayer,\n    TAccountTreeCreatorOrDelegate,\n    TAccountCollectionAuthority,\n    TAccountLeafOwner,\n    TAccountLeafDelegate,\n    TAccountMerkleTree,\n    TAccountCoreCollection,\n    TAccountMplCoreCpiSigner,\n    TAccountLogWrapper,\n    TAccountCompressionProgram,\n    TAccountMplCoreProgram,\n    TAccountSystemProgram\n  >,\n  config?: { programAddress?: TProgramAddress }\n): MintV2Instruction<\n  TProgramAddress,\n  TAccountTreeConfig,\n  TAccountPayer,\n  TAccountTreeCreatorOrDelegate,\n  TAccountCollectionAuthority,\n  TAccountLeafOwner,\n  TAccountLeafDelegate,\n  TAccountMerkleTree,\n  TAccountCoreCollection,\n  TAccountMplCoreCpiSigner,\n  TAccountLogWrapper,\n  TAccountCompressionProgram,\n  TAccountMplCoreProgram,\n  TAccountSystemProgram\n> {\n  // Program address.\n  const programAddress =\n    config?.programAddress ?? MPL_BUBBLEGUM_PROGRAM_ADDRESS;\n\n  // Original accounts.\n  const originalAccounts = {\n    treeConfig: { value: input.treeConfig ?? null, isWritable: true },\n    payer: { value: input.payer ?? null, isWritable: true },\n    treeCreatorOrDelegate: {\n      value: input.treeCreatorOrDelegate ?? null,\n      isWritable: false,\n    },\n    collectionAuthority: {\n      value: input.collectionAuthority ?? null,\n      isWritable: false,\n    },\n    leafOwner: { value: input.leafOwner ?? null, isWritable: false },\n    leafDelegate: { value: input.leafDelegate ?? null, isWritable: false },\n    merkleTree: { value: input.merkleTree ?? null, isWritable: true },\n    coreCollection: { value: input.coreCollection ?? null, isWritable: true },\n    mplCoreCpiSigner: {\n      value: input.mplCoreCpiSigner ?? null,\n      isWritable: false,\n    },\n    logWrapper: { value: input.logWrapper ?? null, isWritable: false },\n    compressionProgram: {\n      value: input.compressionProgram ?? null,\n      isWritable: false,\n    },\n    mplCoreProgram: { value: input.mplCoreProgram ?? null, isWritable: false },\n    systemProgram: { value: input.systemProgram ?? null, isWritable: false },\n  };\n  const accounts = originalAccounts as Record<\n    keyof typeof originalAccounts,\n    ResolvedAccount\n  >;\n\n  // Original args.\n  const args = { ...input };\n\n  // Resolve default values.\n  if (!accounts.mplCoreCpiSigner.value) {\n    if (accounts.coreCollection.value) {\n      accounts.mplCoreCpiSigner.value =\n        'CbNY3JiXdXNE9tPNEk1aRZVEkWdj2v7kfJLNQwZZgpXk' as Address<'CbNY3JiXdXNE9tPNEk1aRZVEkWdj2v7kfJLNQwZZgpXk'>;\n    }\n  }\n  if (!accounts.logWrapper.value) {\n    accounts.logWrapper.value =\n      'mnoopTCrg4p8ry25e4bcWA9XZjbNjMTfgYVGGEdRsf3' as Address<'mnoopTCrg4p8ry25e4bcWA9XZjbNjMTfgYVGGEdRsf3'>;\n  }\n  if (!accounts.compressionProgram.value) {\n    accounts.compressionProgram.value =\n      'mcmt6YrQEMKw8Mw43FmpRLmf7BqRnFMKmAcbxE3xkAW' as Address<'mcmt6YrQEMKw8Mw43FmpRLmf7BqRnFMKmAcbxE3xkAW'>;\n  }\n  if (!accounts.mplCoreProgram.value) {\n    accounts.mplCoreProgram.value =\n      'CoREENxT6tW1HoK8ypY1SxRMZTcVPm7R94rH4PZNhX7d' as Address<'CoREENxT6tW1HoK8ypY1SxRMZTcVPm7R94rH4PZNhX7d'>;\n  }\n  if (!accounts.systemProgram.value) {\n    accounts.systemProgram.value =\n      '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>;\n  }\n\n  const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n  return Object.freeze({\n    accounts: [\n      getAccountMeta(accounts.treeConfig),\n      getAccountMeta(accounts.payer),\n      getAccountMeta(accounts.treeCreatorOrDelegate),\n      getAccountMeta(accounts.collectionAuthority),\n      getAccountMeta(accounts.leafOwner),\n      getAccountMeta(accounts.leafDelegate),\n      getAccountMeta(accounts.merkleTree),\n      getAccountMeta(accounts.coreCollection),\n      getAccountMeta(accounts.mplCoreCpiSigner),\n      getAccountMeta(accounts.logWrapper),\n      getAccountMeta(accounts.compressionProgram),\n      getAccountMeta(accounts.mplCoreProgram),\n      getAccountMeta(accounts.systemProgram),\n    ],\n    data: getMintV2InstructionDataEncoder().encode(\n      args as MintV2InstructionDataArgs\n    ),\n    programAddress,\n  } as MintV2Instruction<\n    TProgramAddress,\n    TAccountTreeConfig,\n    TAccountPayer,\n    TAccountTreeCreatorOrDelegate,\n    TAccountCollectionAuthority,\n    TAccountLeafOwner,\n    TAccountLeafDelegate,\n    TAccountMerkleTree,\n    TAccountCoreCollection,\n    TAccountMplCoreCpiSigner,\n    TAccountLogWrapper,\n    TAccountCompressionProgram,\n    TAccountMplCoreProgram,\n    TAccountSystemProgram\n  >);\n}\n\nexport type ParsedMintV2Instruction<\n  TProgram extends string = typeof MPL_BUBBLEGUM_PROGRAM_ADDRESS,\n  TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n  programAddress: Address<TProgram>;\n  accounts: {\n    treeConfig: TAccountMetas[0];\n    payer: TAccountMetas[1];\n    /** Optional tree delegate, defaults to `payer` */\n    treeCreatorOrDelegate?: TAccountMetas[2] | undefined;\n    /** Optional collection authority, defaults to `tree_delegate` */\n    collectionAuthority?: TAccountMetas[3] | undefined;\n    leafOwner: TAccountMetas[4];\n    leafDelegate?: TAccountMetas[5] | undefined;\n    merkleTree: TAccountMetas[6];\n    coreCollection?: TAccountMetas[7] | undefined;\n    mplCoreCpiSigner?: TAccountMetas[8] | undefined;\n    logWrapper: TAccountMetas[9];\n    compressionProgram: TAccountMetas[10];\n    mplCoreProgram: TAccountMetas[11];\n    systemProgram: TAccountMetas[12];\n  };\n  data: MintV2InstructionData;\n};\n\nexport function parseMintV2Instruction<\n  TProgram extends string,\n  TAccountMetas extends readonly AccountMeta[],\n>(\n  instruction: Instruction<TProgram> &\n    InstructionWithAccounts<TAccountMetas> &\n    InstructionWithData<ReadonlyUint8Array>\n): ParsedMintV2Instruction<TProgram, TAccountMetas> {\n  if (instruction.accounts.length < 13) {\n    // TODO: Coded error.\n    throw new Error('Not enough accounts');\n  }\n  let accountIndex = 0;\n  const getNextAccount = () => {\n    const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n    accountIndex += 1;\n    return accountMeta;\n  };\n  const getNextOptionalAccount = () => {\n    const accountMeta = getNextAccount();\n    return accountMeta.address === MPL_BUBBLEGUM_PROGRAM_ADDRESS\n      ? undefined\n      : accountMeta;\n  };\n  return {\n    programAddress: instruction.programAddress,\n    accounts: {\n      treeConfig: getNextAccount(),\n      payer: getNextAccount(),\n      treeCreatorOrDelegate: getNextOptionalAccount(),\n      collectionAuthority: getNextOptionalAccount(),\n      leafOwner: getNextAccount(),\n      leafDelegate: getNextOptionalAccount(),\n      merkleTree: getNextAccount(),\n      coreCollection: getNextOptionalAccount(),\n      mplCoreCpiSigner: getNextOptionalAccount(),\n      logWrapper: getNextAccount(),\n      compressionProgram: getNextAccount(),\n      mplCoreProgram: getNextAccount(),\n      systemProgram: getNextAccount(),\n    },\n    data: getMintV2InstructionDataDecoder().decode(instruction.data),\n  };\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  AccountRole,\n  combineCodec,\n  fixDecoderSize,\n  fixEncoderSize,\n  getBytesDecoder,\n  getBytesEncoder,\n  getStructDecoder,\n  getStructEncoder,\n  getU32Decoder,\n  getU32Encoder,\n  getU64Decoder,\n  getU64Encoder,\n  transformEncoder,\n  type AccountMeta,\n  type AccountSignerMeta,\n  type Address,\n  type FixedSizeCodec,\n  type FixedSizeDecoder,\n  type FixedSizeEncoder,\n  type Instruction,\n  type InstructionWithAccounts,\n  type InstructionWithData,\n  type ReadonlyAccount,\n  type ReadonlyUint8Array,\n  type TransactionSigner,\n  type WritableAccount,\n  type WritableSignerAccount,\n} from '@solana/kit';\nimport { findTreeConfigPda, findVoucherPda } from '../pdas';\nimport { MPL_BUBBLEGUM_PROGRAM_ADDRESS } from '../programs';\nimport {\n  expectAddress,\n  expectSome,\n  expectTransactionSigner,\n  getAccountMetaFactory,\n  type ResolvedAccount,\n} from '../shared';\n\nexport const REDEEM_DISCRIMINATOR = new Uint8Array([\n  184, 12, 86, 149, 70, 196, 97, 225,\n]);\n\nexport function getRedeemDiscriminatorBytes() {\n  return fixEncoderSize(getBytesEncoder(), 8).encode(REDEEM_DISCRIMINATOR);\n}\n\nexport type RedeemInstruction<\n  TProgram extends string = typeof MPL_BUBBLEGUM_PROGRAM_ADDRESS,\n  TAccountTreeConfig extends string | AccountMeta<string> = string,\n  TAccountLeafOwner extends string | AccountMeta<string> = string,\n  TAccountLeafDelegate extends string | AccountMeta<string> = string,\n  TAccountMerkleTree extends string | AccountMeta<string> = string,\n  TAccountVoucher extends string | AccountMeta<string> = string,\n  TAccountLogWrapper extends\n    | string\n    | AccountMeta<string> = 'noopb9bkMVfRPU8AsbpTUg8AQkHtKwMYZiFUjNRtMmV',\n  TAccountCompressionProgram extends\n    | string\n    | AccountMeta<string> = 'cmtDvXumGCrqC1Age74AVPhSRVXJMd8PJS91L8KbNCK',\n  TAccountSystemProgram extends\n    | string\n    | AccountMeta<string> = '11111111111111111111111111111111',\n  TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n  InstructionWithData<ReadonlyUint8Array> &\n  InstructionWithAccounts<\n    [\n      TAccountTreeConfig extends string\n        ? ReadonlyAccount<TAccountTreeConfig>\n        : TAccountTreeConfig,\n      TAccountLeafOwner extends string\n        ? WritableSignerAccount<TAccountLeafOwner> &\n            AccountSignerMeta<TAccountLeafOwner>\n        : TAccountLeafOwner,\n      TAccountLeafDelegate extends string\n        ? ReadonlyAccount<TAccountLeafDelegate>\n        : TAccountLeafDelegate,\n      TAccountMerkleTree extends string\n        ? WritableAccount<TAccountMerkleTree>\n        : TAccountMerkleTree,\n      TAccountVoucher extends string\n        ? WritableAccount<TAccountVoucher>\n        : TAccountVoucher,\n      TAccountLogWrapper extends string\n        ? ReadonlyAccount<TAccountLogWrapper>\n        : TAccountLogWrapper,\n      TAccountCompressionProgram extends string\n        ? ReadonlyAccount<TAccountCompressionProgram>\n        : TAccountCompressionProgram,\n      TAccountSystemProgram extends string\n        ? ReadonlyAccount<TAccountSystemProgram>\n        : TAccountSystemProgram,\n      ...TRemainingAccounts,\n    ]\n  >;\n\nexport type RedeemInstructionData = {\n  discriminator: ReadonlyUint8Array;\n  root: ReadonlyUint8Array;\n  dataHash: ReadonlyUint8Array;\n  creatorHash: ReadonlyUint8Array;\n  nonce: bigint;\n  index: number;\n};\n\nexport type RedeemInstructionDataArgs = {\n  root: ReadonlyUint8Array;\n  dataHash: ReadonlyUint8Array;\n  creatorHash: ReadonlyUint8Array;\n  nonce: number | bigint;\n  index: number;\n};\n\nexport function getRedeemInstructionDataEncoder(): FixedSizeEncoder<RedeemInstructionDataArgs> {\n  return transformEncoder(\n    getStructEncoder([\n      ['discriminator', fixEncoderSize(getBytesEncoder(), 8)],\n      ['root', fixEncoderSize(getBytesEncoder(), 32)],\n      ['dataHash', fixEncoderSize(getBytesEncoder(), 32)],\n      ['creatorHash', fixEncoderSize(getBytesEncoder(), 32)],\n      ['nonce', getU64Encoder()],\n      ['index', getU32Encoder()],\n    ]),\n    (value) => ({ ...value, discriminator: REDEEM_DISCRIMINATOR })\n  );\n}\n\nexport function getRedeemInstructionDataDecoder(): FixedSizeDecoder<RedeemInstructionData> {\n  return getStructDecoder([\n    ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n    ['root', fixDecoderSize(getBytesDecoder(), 32)],\n    ['dataHash', fixDecoderSize(getBytesDecoder(), 32)],\n    ['creatorHash', fixDecoderSize(getBytesDecoder(), 32)],\n    ['nonce', getU64Decoder()],\n    ['index', getU32Decoder()],\n  ]);\n}\n\nexport function getRedeemInstructionDataCodec(): FixedSizeCodec<\n  RedeemInstructionDataArgs,\n  RedeemInstructionData\n> {\n  return combineCodec(\n    getRedeemInstructionDataEncoder(),\n    getRedeemInstructionDataDecoder()\n  );\n}\n\nexport type RedeemAsyncInput<\n  TAccountTreeConfig extends string = string,\n  TAccountLeafOwner extends string = string,\n  TAccountLeafDelegate extends string = string,\n  TAccountMerkleTree extends string = string,\n  TAccountVoucher extends string = string,\n  TAccountLogWrapper extends string = string,\n  TAccountCompressionProgram extends string = string,\n  TAccountSystemProgram extends string = string,\n> = {\n  treeConfig?: Address<TAccountTreeConfig>;\n  leafOwner: TransactionSigner<TAccountLeafOwner>;\n  leafDelegate?: Address<TAccountLeafDelegate>;\n  merkleTree: Address<TAccountMerkleTree>;\n  voucher?: Address<TAccountVoucher>;\n  logWrapper?: Address<TAccountLogWrapper>;\n  compressionProgram?: Address<TAccountCompressionProgram>;\n  systemProgram?: Address<TAccountSystemProgram>;\n  root: RedeemInstructionDataArgs['root'];\n  dataHash: RedeemInstructionDataArgs['dataHash'];\n  creatorHash: RedeemInstructionDataArgs['creatorHash'];\n  nonce: RedeemInstructionDataArgs['nonce'];\n  index: RedeemInstructionDataArgs['index'];\n  proof?: Array<Address>;\n};\n\nexport async function getRedeemInstructionAsync<\n  TAccountTreeConfig extends string,\n  TAccountLeafOwner extends string,\n  TAccountLeafDelegate extends string,\n  TAccountMerkleTree extends string,\n  TAccountVoucher extends string,\n  TAccountLogWrapper extends string,\n  TAccountCompressionProgram extends string,\n  TAccountSystemProgram extends string,\n  TProgramAddress extends Address = typeof MPL_BUBBLEGUM_PROGRAM_ADDRESS,\n>(\n  input: RedeemAsyncInput<\n    TAccountTreeConfig,\n    TAccountLeafOwner,\n    TAccountLeafDelegate,\n    TAccountMerkleTree,\n    TAccountVoucher,\n    TAccountLogWrapper,\n    TAccountCompressionProgram,\n    TAccountSystemProgram\n  >,\n  config?: { programAddress?: TProgramAddress }\n): Promise<\n  RedeemInstruction<\n    TProgramAddress,\n    TAccountTreeConfig,\n    TAccountLeafOwner,\n    TAccountLeafDelegate,\n    TAccountMerkleTree,\n    TAccountVoucher,\n    TAccountLogWrapper,\n    TAccountCompressionProgram,\n    TAccountSystemProgram\n  >\n> {\n  // Program address.\n  const programAddress =\n    config?.programAddress ?? MPL_BUBBLEGUM_PROGRAM_ADDRESS;\n\n  // Original accounts.\n  const originalAccounts = {\n    treeConfig: { value: input.treeConfig ?? null, isWritable: false },\n    leafOwner: { value: input.leafOwner ?? null, isWritable: true },\n    leafDelegate: { value: input.leafDelegate ?? null, isWritable: false },\n    merkleTree: { value: input.merkleTree ?? null, isWritable: true },\n    voucher: { value: input.voucher ?? null, isWritable: true },\n    logWrapper: { value: input.logWrapper ?? null, isWritable: false },\n    compressionProgram: {\n      value: input.compressionProgram ?? null,\n      isWritable: false,\n    },\n    systemProgram: { value: input.systemProgram ?? null, isWritable: false },\n  };\n  const accounts = originalAccounts as Record<\n    keyof typeof originalAccounts,\n    ResolvedAccount\n  >;\n\n  // Original args.\n  const args = { ...input };\n\n  // Resolve default values.\n  if (!accounts.treeConfig.value) {\n    accounts.treeConfig.value = await findTreeConfigPda({\n      merkleTree: expectAddress(accounts.merkleTree.value),\n    });\n  }\n  if (!accounts.leafDelegate.value) {\n    accounts.leafDelegate.value = expectTransactionSigner(\n      accounts.leafOwner.value\n    ).address;\n  }\n  if (!accounts.voucher.value) {\n    accounts.voucher.value = await findVoucherPda({\n      merkleTree: expectAddress(accounts.merkleTree.value),\n      nonce: expectSome(args.nonce),\n    });\n  }\n  if (!accounts.logWrapper.value) {\n    accounts.logWrapper.value =\n      'noopb9bkMVfRPU8AsbpTUg8AQkHtKwMYZiFUjNRtMmV' as Address<'noopb9bkMVfRPU8AsbpTUg8AQkHtKwMYZiFUjNRtMmV'>;\n  }\n  if (!accounts.compressionProgram.value) {\n    accounts.compressionProgram.value =\n      'cmtDvXumGCrqC1Age74AVPhSRVXJMd8PJS91L8KbNCK' as Address<'cmtDvXumGCrqC1Age74AVPhSRVXJMd8PJS91L8KbNCK'>;\n  }\n  if (!accounts.systemProgram.value) {\n    accounts.systemProgram.value =\n      '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>;\n  }\n\n  // Remaining accounts.\n  const remainingAccounts: AccountMeta[] = (args.proof ?? []).map(\n    (address) => ({ address, role: AccountRole.READONLY })\n  );\n\n  const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n  return Object.freeze({\n    accounts: [\n      getAccountMeta(accounts.treeConfig),\n      getAccountMeta(accounts.leafOwner),\n      getAccountMeta(accounts.leafDelegate),\n      getAccountMeta(accounts.merkleTree),\n      getAccountMeta(accounts.voucher),\n      getAccountMeta(accounts.logWrapper),\n      getAccountMeta(accounts.compressionProgram),\n      getAccountMeta(accounts.systemProgram),\n      ...remainingAccounts,\n    ],\n    data: getRedeemInstructionDataEncoder().encode(\n      args as RedeemInstructionDataArgs\n    ),\n    programAddress,\n  } as RedeemInstruction<\n    TProgramAddress,\n    TAccountTreeConfig,\n    TAccountLeafOwner,\n    TAccountLeafDelegate,\n    TAccountMerkleTree,\n    TAccountVoucher,\n    TAccountLogWrapper,\n    TAccountCompressionProgram,\n    TAccountSystemProgram\n  >);\n}\n\nexport type RedeemInput<\n  TAccountTreeConfig extends string = string,\n  TAccountLeafOwner extends string = string,\n  TAccountLeafDelegate extends string = string,\n  TAccountMerkleTree extends string = string,\n  TAccountVoucher extends string = string,\n  TAccountLogWrapper extends string = string,\n  TAccountCompressionProgram extends string = string,\n  TAccountSystemProgram extends string = string,\n> = {\n  treeConfig: Address<TAccountTreeConfig>;\n  leafOwner: TransactionSigner<TAccountLeafOwner>;\n  leafDelegate?: Address<TAccountLeafDelegate>;\n  merkleTree: Address<TAccountMerkleTree>;\n  voucher: Address<TAccountVoucher>;\n  logWrapper?: Address<TAccountLogWrapper>;\n  compressionProgram?: Address<TAccountCompressionProgram>;\n  systemProgram?: Address<TAccountSystemProgram>;\n  root: RedeemInstructionDataArgs['root'];\n  dataHash: RedeemInstructionDataArgs['dataHash'];\n  creatorHash: RedeemInstructionDataArgs['creatorHash'];\n  nonce: RedeemInstructionDataArgs['nonce'];\n  index: RedeemInstructionDataArgs['index'];\n  proof?: Array<Address>;\n};\n\nexport function getRedeemInstruction<\n  TAccountTreeConfig extends string,\n  TAccountLeafOwner extends string,\n  TAccountLeafDelegate extends string,\n  TAccountMerkleTree extends string,\n  TAccountVoucher extends string,\n  TAccountLogWrapper extends string,\n  TAccountCompressionProgram extends string,\n  TAccountSystemProgram extends string,\n  TProgramAddress extends Address = typeof MPL_BUBBLEGUM_PROGRAM_ADDRESS,\n>(\n  input: RedeemInput<\n    TAccountTreeConfig,\n    TAccountLeafOwner,\n    TAccountLeafDelegate,\n    TAccountMerkleTree,\n    TAccountVoucher,\n    TAccountLogWrapper,\n    TAccountCompressionProgram,\n    TAccountSystemProgram\n  >,\n  config?: { programAddress?: TProgramAddress }\n): RedeemInstruction<\n  TProgramAddress,\n  TAccountTreeConfig,\n  TAccountLeafOwner,\n  TAccountLeafDelegate,\n  TAccountMerkleTree,\n  TAccountVoucher,\n  TAccountLogWrapper,\n  TAccountCompressionProgram,\n  TAccountSystemProgram\n> {\n  // Program address.\n  const programAddress =\n    config?.programAddress ?? MPL_BUBBLEGUM_PROGRAM_ADDRESS;\n\n  // Original accounts.\n  const originalAccounts = {\n    treeConfig: { value: input.treeConfig ?? null, isWritable: false },\n    leafOwner: { value: input.leafOwner ?? null, isWritable: true },\n    leafDelegate: { value: input.leafDelegate ?? null, isWritable: false },\n    merkleTree: { value: input.merkleTree ?? null, isWritable: true },\n    voucher: { value: input.voucher ?? null, isWritable: true },\n    logWrapper: { value: input.logWrapper ?? null, isWritable: false },\n    compressionProgram: {\n      value: input.compressionProgram ?? null,\n      isWritable: false,\n    },\n    systemProgram: { value: input.systemProgram ?? null, isWritable: false },\n  };\n  const accounts = originalAccounts as Record<\n    keyof typeof originalAccounts,\n    ResolvedAccount\n  >;\n\n  // Original args.\n  const args = { ...input };\n\n  // Resolve default values.\n  if (!accounts.leafDelegate.value) {\n    accounts.leafDelegate.value = expectTransactionSigner(\n      accounts.leafOwner.value\n    ).address;\n  }\n  if (!accounts.logWrapper.value) {\n    accounts.logWrapper.value =\n      'noopb9bkMVfRPU8AsbpTUg8AQkHtKwMYZiFUjNRtMmV' as Address<'noopb9bkMVfRPU8AsbpTUg8AQkHtKwMYZiFUjNRtMmV'>;\n  }\n  if (!accounts.compressionProgram.value) {\n    accounts.compressionProgram.value =\n      'cmtDvXumGCrqC1Age74AVPhSRVXJMd8PJS91L8KbNCK' as Address<'cmtDvXumGCrqC1Age74AVPhSRVXJMd8PJS91L8KbNCK'>;\n  }\n  if (!accounts.systemProgram.value) {\n    accounts.systemProgram.value =\n      '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>;\n  }\n\n  // Remaining accounts.\n  const remainingAccounts: AccountMeta[] = (args.proof ?? []).map(\n    (address) => ({ address, role: AccountRole.READONLY })\n  );\n\n  const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n  return Object.freeze({\n    accounts: [\n      getAccountMeta(accounts.treeConfig),\n      getAccountMeta(accounts.leafOwner),\n      getAccountMeta(accounts.leafDelegate),\n      getAccountMeta(accounts.merkleTree),\n      getAccountMeta(accounts.voucher),\n      getAccountMeta(accounts.logWrapper),\n      getAccountMeta(accounts.compressionProgram),\n      getAccountMeta(accounts.systemProgram),\n      ...remainingAccounts,\n    ],\n    data: getRedeemInstructionDataEncoder().encode(\n      args as RedeemInstructionDataArgs\n    ),\n    programAddress,\n  } as RedeemInstruction<\n    TProgramAddress,\n    TAccountTreeConfig,\n    TAccountLeafOwner,\n    TAccountLeafDelegate,\n    TAccountMerkleTree,\n    TAccountVoucher,\n    TAccountLogWrapper,\n    TAccountCompressionProgram,\n    TAccountSystemProgram\n  >);\n}\n\nexport type ParsedRedeemInstruction<\n  TProgram extends string = typeof MPL_BUBBLEGUM_PROGRAM_ADDRESS,\n  TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n  programAddress: Address<TProgram>;\n  accounts: {\n    treeConfig: TAccountMetas[0];\n    leafOwner: TAccountMetas[1];\n    leafDelegate: TAccountMetas[2];\n    merkleTree: TAccountMetas[3];\n    voucher: TAccountMetas[4];\n    logWrapper: TAccountMetas[5];\n    compressionProgram: TAccountMetas[6];\n    systemProgram: TAccountMetas[7];\n  };\n  data: RedeemInstructionData;\n};\n\nexport function parseRedeemInstruction<\n  TProgram extends string,\n  TAccountMetas extends readonly AccountMeta[],\n>(\n  instruction: Instruction<TProgram> &\n    InstructionWithAccounts<TAccountMetas> &\n    InstructionWithData<ReadonlyUint8Array>\n): ParsedRedeemInstruction<TProgram, TAccountMetas> {\n  if (instruction.accounts.length < 8) {\n    // TODO: Coded error.\n    throw new Error('Not enough accounts');\n  }\n  let accountIndex = 0;\n  const getNextAccount = () => {\n    const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n    accountIndex += 1;\n    return accountMeta;\n  };\n  return {\n    programAddress: instruction.programAddress,\n    accounts: {\n      treeConfig: getNextAccount(),\n      leafOwner: getNextAccount(),\n      leafDelegate: getNextAccount(),\n      merkleTree: getNextAccount(),\n      voucher: getNextAccount(),\n      logWrapper: getNextAccount(),\n      compressionProgram: getNextAccount(),\n      systemProgram: getNextAccount(),\n    },\n    data: getRedeemInstructionDataDecoder().decode(instruction.data),\n  };\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  AccountRole,\n  combineCodec,\n  fixDecoderSize,\n  fixEncoderSize,\n  getAddressDecoder,\n  getAddressEncoder,\n  getBytesDecoder,\n  getBytesEncoder,\n  getStructDecoder,\n  getStructEncoder,\n  getU32Decoder,\n  getU32Encoder,\n  getU64Decoder,\n  getU64Encoder,\n  transformEncoder,\n  type AccountMeta,\n  type AccountSignerMeta,\n  type Address,\n  type Codec,\n  type Decoder,\n  type Encoder,\n  type Instruction,\n  type InstructionWithAccounts,\n  type InstructionWithData,\n  type ReadonlyAccount,\n  type ReadonlySignerAccount,\n  type ReadonlyUint8Array,\n  type TransactionSigner,\n  type WritableAccount,\n} from '@solana/kit';\nimport {\n  findMasterEditionPda,\n  findMetadataPda,\n  resolveCreatorHash,\n  resolveDataHash,\n} from '../../hooked';\nimport { findTreeConfigPda } from '../pdas';\nimport { MPL_BUBBLEGUM_PROGRAM_ADDRESS } from '../programs';\nimport {\n  expectAddress,\n  expectSome,\n  getAccountMetaFactory,\n  type ResolvedAccount,\n} from '../shared';\nimport {\n  getMetadataArgsDecoder,\n  getMetadataArgsEncoder,\n  type MetadataArgs,\n  type MetadataArgsArgs,\n} from '../types';\n\nexport const SET_AND_VERIFY_COLLECTION_DISCRIMINATOR = new Uint8Array([\n  235, 242, 121, 216, 158, 234, 180, 234,\n]);\n\nexport function getSetAndVerifyCollectionDiscriminatorBytes() {\n  return fixEncoderSize(getBytesEncoder(), 8).encode(\n    SET_AND_VERIFY_COLLECTION_DISCRIMINATOR\n  );\n}\n\nexport type SetAndVerifyCollectionInstruction<\n  TProgram extends string = typeof MPL_BUBBLEGUM_PROGRAM_ADDRESS,\n  TAccountTreeConfig extends string | AccountMeta<string> = string,\n  TAccountLeafOwner extends string | AccountMeta<string> = string,\n  TAccountLeafDelegate extends string | AccountMeta<string> = string,\n  TAccountMerkleTree extends string | AccountMeta<string> = string,\n  TAccountPayer extends string | AccountMeta<string> = string,\n  TAccountTreeCreatorOrDelegate extends string | AccountMeta<string> = string,\n  TAccountCollectionAuthority extends string | AccountMeta<string> = string,\n  TAccountCollectionAuthorityRecordPda extends\n    | string\n    | AccountMeta<string> = string,\n  TAccountCollectionMint extends string | AccountMeta<string> = string,\n  TAccountCollectionMetadata extends string | AccountMeta<string> = string,\n  TAccountCollectionEdition extends string | AccountMeta<string> = string,\n  TAccountBubblegumSigner extends\n    | string\n    | AccountMeta<string> = 'BGUMAp9Gq7iTEuizy4pqaxsTyUCBK68MDfK752saRPUY',\n  TAccountLogWrapper extends\n    | string\n    | AccountMeta<string> = 'noopb9bkMVfRPU8AsbpTUg8AQkHtKwMYZiFUjNRtMmV',\n  TAccountCompressionProgram extends\n    | string\n    | AccountMeta<string> = 'cmtDvXumGCrqC1Age74AVPhSRVXJMd8PJS91L8KbNCK',\n  TAccountTokenMetadataProgram extends\n    | string\n    | AccountMeta<string> = 'BGUMAp9Gq7iTEuizy4pqaxsTyUCBK68MDfK752saRPUY',\n  TAccountSystemProgram extends\n    | string\n    | AccountMeta<string> = '11111111111111111111111111111111',\n  TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n  InstructionWithData<ReadonlyUint8Array> &\n  InstructionWithAccounts<\n    [\n      TAccountTreeConfig extends string\n        ? ReadonlyAccount<TAccountTreeConfig>\n        : TAccountTreeConfig,\n      TAccountLeafOwner extends string\n        ? ReadonlyAccount<TAccountLeafOwner>\n        : TAccountLeafOwner,\n      TAccountLeafDelegate extends string\n        ? ReadonlyAccount<TAccountLeafDelegate>\n        : TAccountLeafDelegate,\n      TAccountMerkleTree extends string\n        ? WritableAccount<TAccountMerkleTree>\n        : TAccountMerkleTree,\n      TAccountPayer extends string\n        ? ReadonlySignerAccount<TAccountPayer> &\n            AccountSignerMeta<TAccountPayer>\n        : TAccountPayer,\n      TAccountTreeCreatorOrDelegate extends string\n        ? ReadonlyAccount<TAccountTreeCreatorOrDelegate>\n        : TAccountTreeCreatorOrDelegate,\n      TAccountCollectionAuthority extends string\n        ? ReadonlySignerAccount<TAccountCollectionAuthority> &\n            AccountSignerMeta<TAccountCollectionAuthority>\n        : TAccountCollectionAuthority,\n      TAccountCollectionAuthorityRecordPda extends string\n        ? ReadonlyAccount<TAccountCollectionAuthorityRecordPda>\n        : TAccountCollectionAuthorityRecordPda,\n      TAccountCollectionMint extends string\n        ? ReadonlyAccount<TAccountCollectionMint>\n        : TAccountCollectionMint,\n      TAccountCollectionMetadata extends string\n        ? WritableAccount<TAccountCollectionMetadata>\n        : TAccountCollectionMetadata,\n      TAccountCollectionEdition extends string\n        ? ReadonlyAccount<TAccountCollectionEdition>\n        : TAccountCollectionEdition,\n      TAccountBubblegumSigner extends string\n        ? ReadonlyAccount<TAccountBubblegumSigner>\n        : TAccountBubblegumSigner,\n      TAccountLogWrapper extends string\n        ? ReadonlyAccount<TAccountLogWrapper>\n        : TAccountLogWrapper,\n      TAccountCompressionProgram extends string\n        ? ReadonlyAccount<TAccountCompressionProgram>\n        : TAccountCompressionProgram,\n      TAccountTokenMetadataProgram extends string\n        ? ReadonlyAccount<TAccountTokenMetadataProgram>\n        : TAccountTokenMetadataProgram,\n      TAccountSystemProgram extends string\n        ? ReadonlyAccount<TAccountSystemProgram>\n        : TAccountSystemProgram,\n      ...TRemainingAccounts,\n    ]\n  >;\n\nexport type SetAndVerifyCollectionInstructionData = {\n  discriminator: ReadonlyUint8Array;\n  root: ReadonlyUint8Array;\n  dataHash: ReadonlyUint8Array;\n  creatorHash: ReadonlyUint8Array;\n  nonce: bigint;\n  index: number;\n  metadata: MetadataArgs;\n  collection: Address;\n};\n\nexport type SetAndVerifyCollectionInstructionDataArgs = {\n  root: ReadonlyUint8Array;\n  dataHash: ReadonlyUint8Array;\n  creatorHash: ReadonlyUint8Array;\n  nonce: number | bigint;\n  index: number;\n  metadata: MetadataArgsArgs;\n  collection: Address;\n};\n\nexport function getSetAndVerifyCollectionInstructionDataEncoder(): Encoder<SetAndVerifyCollectionInstructionDataArgs> {\n  return transformEncoder(\n    getStructEncoder([\n      ['discriminator', fixEncoderSize(getBytesEncoder(), 8)],\n      ['root', fixEncoderSize(getBytesEncoder(), 32)],\n      ['dataHash', fixEncoderSize(getBytesEncoder(), 32)],\n      ['creatorHash', fixEncoderSize(getBytesEncoder(), 32)],\n      ['nonce', getU64Encoder()],\n      ['index', getU32Encoder()],\n      ['metadata', getMetadataArgsEncoder()],\n      ['collection', getAddressEncoder()],\n    ]),\n    (value) => ({\n      ...value,\n      discriminator: SET_AND_VERIFY_COLLECTION_DISCRIMINATOR,\n    })\n  );\n}\n\nexport function getSetAndVerifyCollectionInstructionDataDecoder(): Decoder<SetAndVerifyCollectionInstructionData> {\n  return getStructDecoder([\n    ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n    ['root', fixDecoderSize(getBytesDecoder(), 32)],\n    ['dataHash', fixDecoderSize(getBytesDecoder(), 32)],\n    ['creatorHash', fixDecoderSize(getBytesDecoder(), 32)],\n    ['nonce', getU64Decoder()],\n    ['index', getU32Decoder()],\n    ['metadata', getMetadataArgsDecoder()],\n    ['collection', getAddressDecoder()],\n  ]);\n}\n\nexport function getSetAndVerifyCollectionInstructionDataCodec(): Codec<\n  SetAndVerifyCollectionInstructionDataArgs,\n  SetAndVerifyCollectionInstructionData\n> {\n  return combineCodec(\n    getSetAndVerifyCollectionInstructionDataEncoder(),\n    getSetAndVerifyCollectionInstructionDataDecoder()\n  );\n}\n\nexport type SetAndVerifyCollectionAsyncInput<\n  TAccountTreeConfig extends string = string,\n  TAccountLeafOwner extends string = string,\n  TAccountLeafDelegate extends string = string,\n  TAccountMerkleTree extends string = string,\n  TAccountPayer extends string = string,\n  TAccountTreeCreatorOrDelegate extends string = string,\n  TAccountCollectionAuthority extends string = string,\n  TAccountCollectionAuthorityRecordPda extends string = string,\n  TAccountCollectionMint extends string = string,\n  TAccountCollectionMetadata extends string = string,\n  TAccountCollectionEdition extends string = string,\n  TAccountBubblegumSigner extends string = string,\n  TAccountLogWrapper extends string = string,\n  TAccountCompressionProgram extends string = string,\n  TAccountTokenMetadataProgram extends string = string,\n  TAccountSystemProgram extends string = string,\n> = {\n  treeConfig?: Address<TAccountTreeConfig>;\n  leafOwner: Address<TAccountLeafOwner>;\n  leafDelegate?: Address<TAccountLeafDelegate>;\n  merkleTree: Address<TAccountMerkleTree>;\n  payer: TransactionSigner<TAccountPayer>;\n  /**\n   * This account is checked to be a signer in\n   * the case of `set_and_verify_collection` where\n   * we are actually changing the NFT metadata.\n   */\n  treeCreatorOrDelegate:\n    | Address<TAccountTreeCreatorOrDelegate>\n    | TransactionSigner<TAccountTreeCreatorOrDelegate>;\n  collectionAuthority: TransactionSigner<TAccountCollectionAuthority>;\n  /**\n   * If there is no collecton authority record PDA then\n   * this must be the Bubblegum program address.\n   */\n  collectionAuthorityRecordPda?: Address<TAccountCollectionAuthorityRecordPda>;\n  collectionMint: Address<TAccountCollectionMint>;\n  collectionMetadata?: Address<TAccountCollectionMetadata>;\n  collectionEdition?: Address<TAccountCollectionEdition>;\n  bubblegumSigner?: Address<TAccountBubblegumSigner>;\n  logWrapper?: Address<TAccountLogWrapper>;\n  compressionProgram?: Address<TAccountCompressionProgram>;\n  tokenMetadataProgram?: Address<TAccountTokenMetadataProgram>;\n  systemProgram?: Address<TAccountSystemProgram>;\n  root: SetAndVerifyCollectionInstructionDataArgs['root'];\n  dataHash?: SetAndVerifyCollectionInstructionDataArgs['dataHash'];\n  creatorHash?: SetAndVerifyCollectionInstructionDataArgs['creatorHash'];\n  nonce: SetAndVerifyCollectionInstructionDataArgs['nonce'];\n  index: SetAndVerifyCollectionInstructionDataArgs['index'];\n  metadata: SetAndVerifyCollectionInstructionDataArgs['metadata'];\n  collection?: SetAndVerifyCollectionInstructionDataArgs['collection'];\n  proof?: Array<Address>;\n};\n\nexport async function getSetAndVerifyCollectionInstructionAsync<\n  TAccountTreeConfig extends string,\n  TAccountLeafOwner extends string,\n  TAccountLeafDelegate extends string,\n  TAccountMerkleTree extends string,\n  TAccountPayer extends string,\n  TAccountTreeCreatorOrDelegate extends string,\n  TAccountCollectionAuthority extends string,\n  TAccountCollectionAuthorityRecordPda extends string,\n  TAccountCollectionMint extends string,\n  TAccountCollectionMetadata extends string,\n  TAccountCollectionEdition extends string,\n  TAccountBubblegumSigner extends string,\n  TAccountLogWrapper extends string,\n  TAccountCompressionProgram extends string,\n  TAccountTokenMetadataProgram extends string,\n  TAccountSystemProgram extends string,\n  TProgramAddress extends Address = typeof MPL_BUBBLEGUM_PROGRAM_ADDRESS,\n>(\n  input: SetAndVerifyCollectionAsyncInput<\n    TAccountTreeConfig,\n    TAccountLeafOwner,\n    TAccountLeafDelegate,\n    TAccountMerkleTree,\n    TAccountPayer,\n    TAccountTreeCreatorOrDelegate,\n    TAccountCollectionAuthority,\n    TAccountCollectionAuthorityRecordPda,\n    TAccountCollectionMint,\n    TAccountCollectionMetadata,\n    TAccountCollectionEdition,\n    TAccountBubblegumSigner,\n    TAccountLogWrapper,\n    TAccountCompressionProgram,\n    TAccountTokenMetadataProgram,\n    TAccountSystemProgram\n  >,\n  config?: { programAddress?: TProgramAddress }\n): Promise<\n  SetAndVerifyCollectionInstruction<\n    TProgramAddress,\n    TAccountTreeConfig,\n    TAccountLeafOwner,\n    TAccountLeafDelegate,\n    TAccountMerkleTree,\n    TAccountPayer,\n    (typeof input)['treeCreatorOrDelegate'] extends TransactionSigner<TAccountTreeCreatorOrDelegate>\n      ? ReadonlySignerAccount<TAccountTreeCreatorOrDelegate> &\n          AccountSignerMeta<TAccountTreeCreatorOrDelegate>\n      : TAccountTreeCreatorOrDelegate,\n    TAccountCollectionAuthority,\n    TAccountCollectionAuthorityRecordPda,\n    TAccountCollectionMint,\n    TAccountCollectionMetadata,\n    TAccountCollectionEdition,\n    TAccountBubblegumSigner,\n    TAccountLogWrapper,\n    TAccountCompressionProgram,\n    TAccountTokenMetadataProgram,\n    TAccountSystemProgram\n  >\n> {\n  // Program address.\n  const programAddress =\n    config?.programAddress ?? MPL_BUBBLEGUM_PROGRAM_ADDRESS;\n\n  // Original accounts.\n  const originalAccounts = {\n    treeConfig: { value: input.treeConfig ?? null, isWritable: false },\n    leafOwner: { value: input.leafOwner ?? null, isWritable: false },\n    leafDelegate: { value: input.leafDelegate ?? null, isWritable: false },\n    merkleTree: { value: input.merkleTree ?? null, isWritable: true },\n    payer: { value: input.payer ?? null, isWritable: false },\n    treeCreatorOrDelegate: {\n      value: input.treeCreatorOrDelegate ?? null,\n      isWritable: false,\n    },\n    collectionAuthority: {\n      value: input.collectionAuthority ?? null,\n      isWritable: false,\n    },\n    collectionAuthorityRecordPda: {\n      value: input.collectionAuthorityRecordPda ?? null,\n      isWritable: false,\n    },\n    collectionMint: { value: input.collectionMint ?? null, isWritable: false },\n    collectionMetadata: {\n      value: input.collectionMetadata ?? null,\n      isWritable: true,\n    },\n    collectionEdition: {\n      value: input.collectionEdition ?? null,\n      isWritable: false,\n    },\n    bubblegumSigner: {\n      value: input.bubblegumSigner ?? null,\n      isWritable: false,\n    },\n    logWrapper: { value: input.logWrapper ?? null, isWritable: false },\n    compressionProgram: {\n      value: input.compressionProgram ?? null,\n      isWritable: false,\n    },\n    tokenMetadataProgram: {\n      value: input.tokenMetadataProgram ?? null,\n      isWritable: false,\n    },\n    systemProgram: { value: input.systemProgram ?? null, isWritable: false },\n  };\n  const accounts = originalAccounts as Record<\n    keyof typeof originalAccounts,\n    ResolvedAccount\n  >;\n\n  // Original args.\n  const args = { ...input };\n\n  // Resolver scope.\n  const resolverScope = { programAddress, accounts, args };\n\n  // Resolve default values.\n  if (!accounts.treeConfig.value) {\n    accounts.treeConfig.value = await findTreeConfigPda({\n      merkleTree: expectAddress(accounts.merkleTree.value),\n    });\n  }\n  if (!accounts.leafDelegate.value) {\n    accounts.leafDelegate.value = expectSome(accounts.leafOwner.value);\n  }\n  if (!accounts.collectionMetadata.value) {\n    accounts.collectionMetadata.value = await findMetadataPda({\n      mint: expectAddress(accounts.collectionMint.value),\n    });\n  }\n  if (!accounts.collectionEdition.value) {\n    accounts.collectionEdition.value = await findMasterEditionPda({\n      mint: expectAddress(accounts.collectionMint.value),\n    });\n  }\n  if (!accounts.bubblegumSigner.value) {\n    accounts.bubblegumSigner.value = programAddress;\n    accounts.bubblegumSigner.isWritable = false;\n  }\n  if (!accounts.logWrapper.value) {\n    accounts.logWrapper.value =\n      'noopb9bkMVfRPU8AsbpTUg8AQkHtKwMYZiFUjNRtMmV' as Address<'noopb9bkMVfRPU8AsbpTUg8AQkHtKwMYZiFUjNRtMmV'>;\n  }\n  if (!accounts.compressionProgram.value) {\n    accounts.compressionProgram.value =\n      'cmtDvXumGCrqC1Age74AVPhSRVXJMd8PJS91L8KbNCK' as Address<'cmtDvXumGCrqC1Age74AVPhSRVXJMd8PJS91L8KbNCK'>;\n  }\n  if (!accounts.tokenMetadataProgram.value) {\n    accounts.tokenMetadataProgram.value =\n      'BGUMAp9Gq7iTEuizy4pqaxsTyUCBK68MDfK752saRPUY' as Address<'BGUMAp9Gq7iTEuizy4pqaxsTyUCBK68MDfK752saRPUY'>;\n  }\n  if (!accounts.systemProgram.value) {\n    accounts.systemProgram.value =\n      '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>;\n  }\n  if (!args.dataHash) {\n    args.dataHash = resolveDataHash(resolverScope);\n  }\n  if (!args.creatorHash) {\n    args.creatorHash = resolveCreatorHash(resolverScope);\n  }\n  if (!args.collection) {\n    args.collection = expectAddress(accounts.collectionMint.value);\n  }\n\n  // Remaining accounts.\n  const remainingAccounts: AccountMeta[] = (args.proof ?? []).map(\n    (address) => ({ address, role: AccountRole.READONLY })\n  );\n\n  const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n  return Object.freeze({\n    accounts: [\n      getAccountMeta(accounts.treeConfig),\n      getAccountMeta(accounts.leafOwner),\n      getAccountMeta(accounts.leafDelegate),\n      getAccountMeta(accounts.merkleTree),\n      getAccountMeta(accounts.payer),\n      getAccountMeta(accounts.treeCreatorOrDelegate),\n      getAccountMeta(accounts.collectionAuthority),\n      getAccountMeta(accounts.collectionAuthorityRecordPda),\n      getAccountMeta(accounts.collectionMint),\n      getAccountMeta(accounts.collectionMetadata),\n      getAccountMeta(accounts.collectionEdition),\n      getAccountMeta(accounts.bubblegumSigner),\n      getAccountMeta(accounts.logWrapper),\n      getAccountMeta(accounts.compressionProgram),\n      getAccountMeta(accounts.tokenMetadataProgram),\n      getAccountMeta(accounts.systemProgram),\n      ...remainingAccounts,\n    ],\n    data: getSetAndVerifyCollectionInstructionDataEncoder().encode(\n      args as SetAndVerifyCollectionInstructionDataArgs\n    ),\n    programAddress,\n  } as SetAndVerifyCollectionInstruction<\n    TProgramAddress,\n    TAccountTreeConfig,\n    TAccountLeafOwner,\n    TAccountLeafDelegate,\n    TAccountMerkleTree,\n    TAccountPayer,\n    (typeof input)['treeCreatorOrDelegate'] extends TransactionSigner<TAccountTreeCreatorOrDelegate>\n      ? ReadonlySignerAccount<TAccountTreeCreatorOrDelegate> &\n          AccountSignerMeta<TAccountTreeCreatorOrDelegate>\n      : TAccountTreeCreatorOrDelegate,\n    TAccountCollectionAuthority,\n    TAccountCollectionAuthorityRecordPda,\n    TAccountCollectionMint,\n    TAccountCollectionMetadata,\n    TAccountCollectionEdition,\n    TAccountBubblegumSigner,\n    TAccountLogWrapper,\n    TAccountCompressionProgram,\n    TAccountTokenMetadataProgram,\n    TAccountSystemProgram\n  >);\n}\n\nexport type SetAndVerifyCollectionInput<\n  TAccountTreeConfig extends string = string,\n  TAccountLeafOwner extends string = string,\n  TAccountLeafDelegate extends string = string,\n  TAccountMerkleTree extends string = string,\n  TAccountPayer extends string = string,\n  TAccountTreeCreatorOrDelegate extends string = string,\n  TAccountCollectionAuthority extends string = string,\n  TAccountCollectionAuthorityRecordPda extends string = string,\n  TAccountCollectionMint extends string = string,\n  TAccountCollectionMetadata extends string = string,\n  TAccountCollectionEdition extends string = string,\n  TAccountBubblegumSigner extends string = string,\n  TAccountLogWrapper extends string = string,\n  TAccountCompressionProgram extends string = string,\n  TAccountTokenMetadataProgram extends string = string,\n  TAccountSystemProgram extends string = string,\n> = {\n  treeConfig: Address<TAccountTreeConfig>;\n  leafOwner: Address<TAccountLeafOwner>;\n  leafDelegate?: Address<TAccountLeafDelegate>;\n  merkleTree: Address<TAccountMerkleTree>;\n  payer: TransactionSigner<TAccountPayer>;\n  /**\n   * This account is checked to be a signer in\n   * the case of `set_and_verify_collection` where\n   * we are actually changing the NFT metadata.\n   */\n  treeCreatorOrDelegate:\n    | Address<TAccountTreeCreatorOrDelegate>\n    | TransactionSigner<TAccountTreeCreatorOrDelegate>;\n  collectionAuthority: TransactionSigner<TAccountCollectionAuthority>;\n  /**\n   * If there is no collecton authority record PDA then\n   * this must be the Bubblegum program address.\n   */\n  collectionAuthorityRecordPda?: Address<TAccountCollectionAuthorityRecordPda>;\n  collectionMint: Address<TAccountCollectionMint>;\n  collectionMetadata: Address<TAccountCollectionMetadata>;\n  collectionEdition: Address<TAccountCollectionEdition>;\n  bubblegumSigner?: Address<TAccountBubblegumSigner>;\n  logWrapper?: Address<TAccountLogWrapper>;\n  compressionProgram?: Address<TAccountCompressionProgram>;\n  tokenMetadataProgram?: Address<TAccountTokenMetadataProgram>;\n  systemProgram?: Address<TAccountSystemProgram>;\n  root: SetAndVerifyCollectionInstructionDataArgs['root'];\n  dataHash?: SetAndVerifyCollectionInstructionDataArgs['dataHash'];\n  creatorHash?: SetAndVerifyCollectionInstructionDataArgs['creatorHash'];\n  nonce: SetAndVerifyCollectionInstructionDataArgs['nonce'];\n  index: SetAndVerifyCollectionInstructionDataArgs['index'];\n  metadata: SetAndVerifyCollectionInstructionDataArgs['metadata'];\n  collection?: SetAndVerifyCollectionInstructionDataArgs['collection'];\n  proof?: Array<Address>;\n};\n\nexport function getSetAndVerifyCollectionInstruction<\n  TAccountTreeConfig extends string,\n  TAccountLeafOwner extends string,\n  TAccountLeafDelegate extends string,\n  TAccountMerkleTree extends string,\n  TAccountPayer extends string,\n  TAccountTreeCreatorOrDelegate extends string,\n  TAccountCollectionAuthority extends string,\n  TAccountCollectionAuthorityRecordPda extends string,\n  TAccountCollectionMint extends string,\n  TAccountCollectionMetadata extends string,\n  TAccountCollectionEdition extends string,\n  TAccountBubblegumSigner extends string,\n  TAccountLogWrapper extends string,\n  TAccountCompressionProgram extends string,\n  TAccountTokenMetadataProgram extends string,\n  TAccountSystemProgram extends string,\n  TProgramAddress extends Address = typeof MPL_BUBBLEGUM_PROGRAM_ADDRESS,\n>(\n  input: SetAndVerifyCollectionInput<\n    TAccountTreeConfig,\n    TAccountLeafOwner,\n    TAccountLeafDelegate,\n    TAccountMerkleTree,\n    TAccountPayer,\n    TAccountTreeCreatorOrDelegate,\n    TAccountCollectionAuthority,\n    TAccountCollectionAuthorityRecordPda,\n    TAccountCollectionMint,\n    TAccountCollectionMetadata,\n    TAccountCollectionEdition,\n    TAccountBubblegumSigner,\n    TAccountLogWrapper,\n    TAccountCompressionProgram,\n    TAccountTokenMetadataProgram,\n    TAccountSystemProgram\n  >,\n  config?: { programAddress?: TProgramAddress }\n): SetAndVerifyCollectionInstruction<\n  TProgramAddress,\n  TAccountTreeConfig,\n  TAccountLeafOwner,\n  TAccountLeafDelegate,\n  TAccountMerkleTree,\n  TAccountPayer,\n  (typeof input)['treeCreatorOrDelegate'] extends TransactionSigner<TAccountTreeCreatorOrDelegate>\n    ? ReadonlySignerAccount<TAccountTreeCreatorOrDelegate> &\n        AccountSignerMeta<TAccountTreeCreatorOrDelegate>\n    : TAccountTreeCreatorOrDelegate,\n  TAccountCollectionAuthority,\n  TAccountCollectionAuthorityRecordPda,\n  TAccountCollectionMint,\n  TAccountCollectionMetadata,\n  TAccountCollectionEdition,\n  TAccountBubblegumSigner,\n  TAccountLogWrapper,\n  TAccountCompressionProgram,\n  TAccountTokenMetadataProgram,\n  TAccountSystemProgram\n> {\n  // Program address.\n  const programAddress =\n    config?.programAddress ?? MPL_BUBBLEGUM_PROGRAM_ADDRESS;\n\n  // Original accounts.\n  const originalAccounts = {\n    treeConfig: { value: input.treeConfig ?? null, isWritable: false },\n    leafOwner: { value: input.leafOwner ?? null, isWritable: false },\n    leafDelegate: { value: input.leafDelegate ?? null, isWritable: false },\n    merkleTree: { value: input.merkleTree ?? null, isWritable: true },\n    payer: { value: input.payer ?? null, isWritable: false },\n    treeCreatorOrDelegate: {\n      value: input.treeCreatorOrDelegate ?? null,\n      isWritable: false,\n    },\n    collectionAuthority: {\n      value: input.collectionAuthority ?? null,\n      isWritable: false,\n    },\n    collectionAuthorityRecordPda: {\n      value: input.collectionAuthorityRecordPda ?? null,\n      isWritable: false,\n    },\n    collectionMint: { value: input.collectionMint ?? null, isWritable: false },\n    collectionMetadata: {\n      value: input.collectionMetadata ?? null,\n      isWritable: true,\n    },\n    collectionEdition: {\n      value: input.collectionEdition ?? null,\n      isWritable: false,\n    },\n    bubblegumSigner: {\n      value: input.bubblegumSigner ?? null,\n      isWritable: false,\n    },\n    logWrapper: { value: input.logWrapper ?? null, isWritable: false },\n    compressionProgram: {\n      value: input.compressionProgram ?? null,\n      isWritable: false,\n    },\n    tokenMetadataProgram: {\n      value: input.tokenMetadataProgram ?? null,\n      isWritable: false,\n    },\n    systemProgram: { value: input.systemProgram ?? null, isWritable: false },\n  };\n  const accounts = originalAccounts as Record<\n    keyof typeof originalAccounts,\n    ResolvedAccount\n  >;\n\n  // Original args.\n  const args = { ...input };\n\n  // Resolver scope.\n  const resolverScope = { programAddress, accounts, args };\n\n  // Resolve default values.\n  if (!accounts.leafDelegate.value) {\n    accounts.leafDelegate.value = expectSome(accounts.leafOwner.value);\n  }\n  if (!accounts.bubblegumSigner.value) {\n    accounts.bubblegumSigner.value = programAddress;\n    accounts.bubblegumSigner.isWritable = false;\n  }\n  if (!accounts.logWrapper.value) {\n    accounts.logWrapper.value =\n      'noopb9bkMVfRPU8AsbpTUg8AQkHtKwMYZiFUjNRtMmV' as Address<'noopb9bkMVfRPU8AsbpTUg8AQkHtKwMYZiFUjNRtMmV'>;\n  }\n  if (!accounts.compressionProgram.value) {\n    accounts.compressionProgram.value =\n      'cmtDvXumGCrqC1Age74AVPhSRVXJMd8PJS91L8KbNCK' as Address<'cmtDvXumGCrqC1Age74AVPhSRVXJMd8PJS91L8KbNCK'>;\n  }\n  if (!accounts.tokenMetadataProgram.value) {\n    accounts.tokenMetadataProgram.value =\n      'BGUMAp9Gq7iTEuizy4pqaxsTyUCBK68MDfK752saRPUY' as Address<'BGUMAp9Gq7iTEuizy4pqaxsTyUCBK68MDfK752saRPUY'>;\n  }\n  if (!accounts.systemProgram.value) {\n    accounts.systemProgram.value =\n      '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>;\n  }\n  if (!args.dataHash) {\n    args.dataHash = resolveDataHash(resolverScope);\n  }\n  if (!args.creatorHash) {\n    args.creatorHash = resolveCreatorHash(resolverScope);\n  }\n  if (!args.collection) {\n    args.collection = expectAddress(accounts.collectionMint.value);\n  }\n\n  // Remaining accounts.\n  const remainingAccounts: AccountMeta[] = (args.proof ?? []).map(\n    (address) => ({ address, role: AccountRole.READONLY })\n  );\n\n  const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n  return Object.freeze({\n    accounts: [\n      getAccountMeta(accounts.treeConfig),\n      getAccountMeta(accounts.leafOwner),\n      getAccountMeta(accounts.leafDelegate),\n      getAccountMeta(accounts.merkleTree),\n      getAccountMeta(accounts.payer),\n      getAccountMeta(accounts.treeCreatorOrDelegate),\n      getAccountMeta(accounts.collectionAuthority),\n      getAccountMeta(accounts.collectionAuthorityRecordPda),\n      getAccountMeta(accounts.collectionMint),\n      getAccountMeta(accounts.collectionMetadata),\n      getAccountMeta(accounts.collectionEdition),\n      getAccountMeta(accounts.bubblegumSigner),\n      getAccountMeta(accounts.logWrapper),\n      getAccountMeta(accounts.compressionProgram),\n      getAccountMeta(accounts.tokenMetadataProgram),\n      getAccountMeta(accounts.systemProgram),\n      ...remainingAccounts,\n    ],\n    data: getSetAndVerifyCollectionInstructionDataEncoder().encode(\n      args as SetAndVerifyCollectionInstructionDataArgs\n    ),\n    programAddress,\n  } as SetAndVerifyCollectionInstruction<\n    TProgramAddress,\n    TAccountTreeConfig,\n    TAccountLeafOwner,\n    TAccountLeafDelegate,\n    TAccountMerkleTree,\n    TAccountPayer,\n    (typeof input)['treeCreatorOrDelegate'] extends TransactionSigner<TAccountTreeCreatorOrDelegate>\n      ? ReadonlySignerAccount<TAccountTreeCreatorOrDelegate> &\n          AccountSignerMeta<TAccountTreeCreatorOrDelegate>\n      : TAccountTreeCreatorOrDelegate,\n    TAccountCollectionAuthority,\n    TAccountCollectionAuthorityRecordPda,\n    TAccountCollectionMint,\n    TAccountCollectionMetadata,\n    TAccountCollectionEdition,\n    TAccountBubblegumSigner,\n    TAccountLogWrapper,\n    TAccountCompressionProgram,\n    TAccountTokenMetadataProgram,\n    TAccountSystemProgram\n  >);\n}\n\nexport type ParsedSetAndVerifyCollectionInstruction<\n  TProgram extends string = typeof MPL_BUBBLEGUM_PROGRAM_ADDRESS,\n  TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n  programAddress: Address<TProgram>;\n  accounts: {\n    treeConfig: TAccountMetas[0];\n    leafOwner: TAccountMetas[1];\n    leafDelegate: TAccountMetas[2];\n    merkleTree: TAccountMetas[3];\n    payer: TAccountMetas[4];\n    /**\n     * This account is checked to be a signer in\n     * the case of `set_and_verify_collection` where\n     * we are actually changing the NFT metadata.\n     */\n    treeCreatorOrDelegate: TAccountMetas[5];\n    collectionAuthority: TAccountMetas[6];\n    /**\n     * If there is no collecton authority record PDA then\n     * this must be the Bubblegum program address.\n     */\n    collectionAuthorityRecordPda?: TAccountMetas[7] | undefined;\n    collectionMint: TAccountMetas[8];\n    collectionMetadata: TAccountMetas[9];\n    collectionEdition: TAccountMetas[10];\n    bubblegumSigner: TAccountMetas[11];\n    logWrapper: TAccountMetas[12];\n    compressionProgram: TAccountMetas[13];\n    tokenMetadataProgram: TAccountMetas[14];\n    systemProgram: TAccountMetas[15];\n  };\n  data: SetAndVerifyCollectionInstructionData;\n};\n\nexport function parseSetAndVerifyCollectionInstruction<\n  TProgram extends string,\n  TAccountMetas extends readonly AccountMeta[],\n>(\n  instruction: Instruction<TProgram> &\n    InstructionWithAccounts<TAccountMetas> &\n    InstructionWithData<ReadonlyUint8Array>\n): ParsedSetAndVerifyCollectionInstruction<TProgram, TAccountMetas> {\n  if (instruction.accounts.length < 16) {\n    // TODO: Coded error.\n    throw new Error('Not enough accounts');\n  }\n  let accountIndex = 0;\n  const getNextAccount = () => {\n    const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n    accountIndex += 1;\n    return accountMeta;\n  };\n  const getNextOptionalAccount = () => {\n    const accountMeta = getNextAccount();\n    return accountMeta.address === MPL_BUBBLEGUM_PROGRAM_ADDRESS\n      ? undefined\n      : accountMeta;\n  };\n  return {\n    programAddress: instruction.programAddress,\n    accounts: {\n      treeConfig: getNextAccount(),\n      leafOwner: getNextAccount(),\n      leafDelegate: getNextAccount(),\n      merkleTree: getNextAccount(),\n      payer: getNextAccount(),\n      treeCreatorOrDelegate: getNextAccount(),\n      collectionAuthority: getNextAccount(),\n      collectionAuthorityRecordPda: getNextOptionalAccount(),\n      collectionMint: getNextAccount(),\n      collectionMetadata: getNextAccount(),\n      collectionEdition: getNextAccount(),\n      bubblegumSigner: getNextAccount(),\n      logWrapper: getNextAccount(),\n      compressionProgram: getNextAccount(),\n      tokenMetadataProgram: getNextAccount(),\n      systemProgram: getNextAccount(),\n    },\n    data: getSetAndVerifyCollectionInstructionDataDecoder().decode(\n      instruction.data\n    ),\n  };\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  AccountRole,\n  combineCodec,\n  fixDecoderSize,\n  fixEncoderSize,\n  getBytesDecoder,\n  getBytesEncoder,\n  getOptionDecoder,\n  getOptionEncoder,\n  getStructDecoder,\n  getStructEncoder,\n  getU32Decoder,\n  getU32Encoder,\n  getU64Decoder,\n  getU64Encoder,\n  getU8Decoder,\n  getU8Encoder,\n  none,\n  transformEncoder,\n  type AccountMeta,\n  type AccountSignerMeta,\n  type Address,\n  type Codec,\n  type Decoder,\n  type Encoder,\n  type Instruction,\n  type InstructionWithAccounts,\n  type InstructionWithData,\n  type Option,\n  type OptionOrNullable,\n  type ReadonlyAccount,\n  type ReadonlySignerAccount,\n  type ReadonlyUint8Array,\n  type TransactionSigner,\n  type WritableAccount,\n  type WritableSignerAccount,\n} from '@solana/kit';\nimport { findTreeConfigPda } from '../pdas';\nimport { MPL_BUBBLEGUM_PROGRAM_ADDRESS } from '../programs';\nimport {\n  expectAddress,\n  getAccountMetaFactory,\n  type ResolvedAccount,\n} from '../shared';\nimport {\n  getMetadataArgsV2Decoder,\n  getMetadataArgsV2Encoder,\n  type MetadataArgsV2,\n  type MetadataArgsV2Args,\n} from '../types';\n\nexport const SET_COLLECTION_V2_DISCRIMINATOR = new Uint8Array([\n  229, 35, 61, 91, 15, 14, 99, 160,\n]);\n\nexport function getSetCollectionV2DiscriminatorBytes() {\n  return fixEncoderSize(getBytesEncoder(), 8).encode(\n    SET_COLLECTION_V2_DISCRIMINATOR\n  );\n}\n\nexport type SetCollectionV2Instruction<\n  TProgram extends string = typeof MPL_BUBBLEGUM_PROGRAM_ADDRESS,\n  TAccountTreeConfig extends string | AccountMeta<string> = string,\n  TAccountPayer extends string | AccountMeta<string> = string,\n  TAccountAuthority extends string | AccountMeta<string> = string,\n  TAccountNewCollectionAuthority extends string | AccountMeta<string> = string,\n  TAccountLeafOwner extends string | AccountMeta<string> = string,\n  TAccountLeafDelegate extends string | AccountMeta<string> = string,\n  TAccountMerkleTree extends string | AccountMeta<string> = string,\n  TAccountCoreCollection extends string | AccountMeta<string> = string,\n  TAccountNewCoreCollection extends string | AccountMeta<string> = string,\n  TAccountMplCoreCpiSigner extends\n    | string\n    | AccountMeta<string> = 'CbNY3JiXdXNE9tPNEk1aRZVEkWdj2v7kfJLNQwZZgpXk',\n  TAccountLogWrapper extends\n    | string\n    | AccountMeta<string> = 'mnoopTCrg4p8ry25e4bcWA9XZjbNjMTfgYVGGEdRsf3',\n  TAccountCompressionProgram extends\n    | string\n    | AccountMeta<string> = 'mcmt6YrQEMKw8Mw43FmpRLmf7BqRnFMKmAcbxE3xkAW',\n  TAccountMplCoreProgram extends\n    | string\n    | AccountMeta<string> = 'CoREENxT6tW1HoK8ypY1SxRMZTcVPm7R94rH4PZNhX7d',\n  TAccountSystemProgram extends\n    | string\n    | AccountMeta<string> = '11111111111111111111111111111111',\n  TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n  InstructionWithData<ReadonlyUint8Array> &\n  InstructionWithAccounts<\n    [\n      TAccountTreeConfig extends string\n        ? WritableAccount<TAccountTreeConfig>\n        : TAccountTreeConfig,\n      TAccountPayer extends string\n        ? WritableSignerAccount<TAccountPayer> &\n            AccountSignerMeta<TAccountPayer>\n        : TAccountPayer,\n      TAccountAuthority extends string\n        ? ReadonlySignerAccount<TAccountAuthority> &\n            AccountSignerMeta<TAccountAuthority>\n        : TAccountAuthority,\n      TAccountNewCollectionAuthority extends string\n        ? ReadonlySignerAccount<TAccountNewCollectionAuthority> &\n            AccountSignerMeta<TAccountNewCollectionAuthority>\n        : TAccountNewCollectionAuthority,\n      TAccountLeafOwner extends string\n        ? ReadonlyAccount<TAccountLeafOwner>\n        : TAccountLeafOwner,\n      TAccountLeafDelegate extends string\n        ? ReadonlyAccount<TAccountLeafDelegate>\n        : TAccountLeafDelegate,\n      TAccountMerkleTree extends string\n        ? WritableAccount<TAccountMerkleTree>\n        : TAccountMerkleTree,\n      TAccountCoreCollection extends string\n        ? WritableAccount<TAccountCoreCollection>\n        : TAccountCoreCollection,\n      TAccountNewCoreCollection extends string\n        ? WritableAccount<TAccountNewCoreCollection>\n        : TAccountNewCoreCollection,\n      TAccountMplCoreCpiSigner extends string\n        ? ReadonlyAccount<TAccountMplCoreCpiSigner>\n        : TAccountMplCoreCpiSigner,\n      TAccountLogWrapper extends string\n        ? ReadonlyAccount<TAccountLogWrapper>\n        : TAccountLogWrapper,\n      TAccountCompressionProgram extends string\n        ? ReadonlyAccount<TAccountCompressionProgram>\n        : TAccountCompressionProgram,\n      TAccountMplCoreProgram extends string\n        ? ReadonlyAccount<TAccountMplCoreProgram>\n        : TAccountMplCoreProgram,\n      TAccountSystemProgram extends string\n        ? ReadonlyAccount<TAccountSystemProgram>\n        : TAccountSystemProgram,\n      ...TRemainingAccounts,\n    ]\n  >;\n\nexport type SetCollectionV2InstructionData = {\n  discriminator: ReadonlyUint8Array;\n  root: ReadonlyUint8Array;\n  assetDataHash: Option<ReadonlyUint8Array>;\n  flags: Option<number>;\n  nonce: bigint;\n  index: number;\n  metadata: MetadataArgsV2;\n};\n\nexport type SetCollectionV2InstructionDataArgs = {\n  root: ReadonlyUint8Array;\n  assetDataHash?: OptionOrNullable<ReadonlyUint8Array>;\n  flags?: OptionOrNullable<number>;\n  nonce: number | bigint;\n  index: number;\n  metadata: MetadataArgsV2Args;\n};\n\nexport function getSetCollectionV2InstructionDataEncoder(): Encoder<SetCollectionV2InstructionDataArgs> {\n  return transformEncoder(\n    getStructEncoder([\n      ['discriminator', fixEncoderSize(getBytesEncoder(), 8)],\n      ['root', fixEncoderSize(getBytesEncoder(), 32)],\n      [\n        'assetDataHash',\n        getOptionEncoder(fixEncoderSize(getBytesEncoder(), 32)),\n      ],\n      ['flags', getOptionEncoder(getU8Encoder())],\n      ['nonce', getU64Encoder()],\n      ['index', getU32Encoder()],\n      ['metadata', getMetadataArgsV2Encoder()],\n    ]),\n    (value) => ({\n      ...value,\n      discriminator: SET_COLLECTION_V2_DISCRIMINATOR,\n      assetDataHash: value.assetDataHash ?? none(),\n      flags: value.flags ?? none(),\n    })\n  );\n}\n\nexport function getSetCollectionV2InstructionDataDecoder(): Decoder<SetCollectionV2InstructionData> {\n  return getStructDecoder([\n    ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n    ['root', fixDecoderSize(getBytesDecoder(), 32)],\n    ['assetDataHash', getOptionDecoder(fixDecoderSize(getBytesDecoder(), 32))],\n    ['flags', getOptionDecoder(getU8Decoder())],\n    ['nonce', getU64Decoder()],\n    ['index', getU32Decoder()],\n    ['metadata', getMetadataArgsV2Decoder()],\n  ]);\n}\n\nexport function getSetCollectionV2InstructionDataCodec(): Codec<\n  SetCollectionV2InstructionDataArgs,\n  SetCollectionV2InstructionData\n> {\n  return combineCodec(\n    getSetCollectionV2InstructionDataEncoder(),\n    getSetCollectionV2InstructionDataDecoder()\n  );\n}\n\nexport type SetCollectionV2AsyncInput<\n  TAccountTreeConfig extends string = string,\n  TAccountPayer extends string = string,\n  TAccountAuthority extends string = string,\n  TAccountNewCollectionAuthority extends string = string,\n  TAccountLeafOwner extends string = string,\n  TAccountLeafDelegate extends string = string,\n  TAccountMerkleTree extends string = string,\n  TAccountCoreCollection extends string = string,\n  TAccountNewCoreCollection extends string = string,\n  TAccountMplCoreCpiSigner extends string = string,\n  TAccountLogWrapper extends string = string,\n  TAccountCompressionProgram extends string = string,\n  TAccountMplCoreProgram extends string = string,\n  TAccountSystemProgram extends string = string,\n> = {\n  treeConfig?: Address<TAccountTreeConfig>;\n  payer: TransactionSigner<TAccountPayer>;\n  /**\n   * If item is not in a collection, then authority must be tree owner/delegate.  If item is\n   * getting removed from a collection, then this must be an authority for the existing\n   * collection.  Defaults to `payer`\n   */\n  authority?: TransactionSigner<TAccountAuthority>;\n  /**\n   * If item is getting added to a new collection, then this must be the authority\n   * for the new collection.  Defaults to `authority`\n   */\n  newCollectionAuthority?: TransactionSigner<TAccountNewCollectionAuthority>;\n  leafOwner: Address<TAccountLeafOwner>;\n  /** Defaults to `leaf_owner` */\n  leafDelegate?: Address<TAccountLeafDelegate>;\n  merkleTree: Address<TAccountMerkleTree>;\n  coreCollection?: Address<TAccountCoreCollection>;\n  newCoreCollection?: Address<TAccountNewCoreCollection>;\n  mplCoreCpiSigner?: Address<TAccountMplCoreCpiSigner>;\n  logWrapper?: Address<TAccountLogWrapper>;\n  compressionProgram?: Address<TAccountCompressionProgram>;\n  mplCoreProgram?: Address<TAccountMplCoreProgram>;\n  systemProgram?: Address<TAccountSystemProgram>;\n  root: SetCollectionV2InstructionDataArgs['root'];\n  assetDataHash?: SetCollectionV2InstructionDataArgs['assetDataHash'];\n  flags?: SetCollectionV2InstructionDataArgs['flags'];\n  nonce: SetCollectionV2InstructionDataArgs['nonce'];\n  index: SetCollectionV2InstructionDataArgs['index'];\n  metadata: SetCollectionV2InstructionDataArgs['metadata'];\n  proof?: Array<Address>;\n};\n\nexport async function getSetCollectionV2InstructionAsync<\n  TAccountTreeConfig extends string,\n  TAccountPayer extends string,\n  TAccountAuthority extends string,\n  TAccountNewCollectionAuthority extends string,\n  TAccountLeafOwner extends string,\n  TAccountLeafDelegate extends string,\n  TAccountMerkleTree extends string,\n  TAccountCoreCollection extends string,\n  TAccountNewCoreCollection extends string,\n  TAccountMplCoreCpiSigner extends string,\n  TAccountLogWrapper extends string,\n  TAccountCompressionProgram extends string,\n  TAccountMplCoreProgram extends string,\n  TAccountSystemProgram extends string,\n  TProgramAddress extends Address = typeof MPL_BUBBLEGUM_PROGRAM_ADDRESS,\n>(\n  input: SetCollectionV2AsyncInput<\n    TAccountTreeConfig,\n    TAccountPayer,\n    TAccountAuthority,\n    TAccountNewCollectionAuthority,\n    TAccountLeafOwner,\n    TAccountLeafDelegate,\n    TAccountMerkleTree,\n    TAccountCoreCollection,\n    TAccountNewCoreCollection,\n    TAccountMplCoreCpiSigner,\n    TAccountLogWrapper,\n    TAccountCompressionProgram,\n    TAccountMplCoreProgram,\n    TAccountSystemProgram\n  >,\n  config?: { programAddress?: TProgramAddress }\n): Promise<\n  SetCollectionV2Instruction<\n    TProgramAddress,\n    TAccountTreeConfig,\n    TAccountPayer,\n    TAccountAuthority,\n    TAccountNewCollectionAuthority,\n    TAccountLeafOwner,\n    TAccountLeafDelegate,\n    TAccountMerkleTree,\n    TAccountCoreCollection,\n    TAccountNewCoreCollection,\n    TAccountMplCoreCpiSigner,\n    TAccountLogWrapper,\n    TAccountCompressionProgram,\n    TAccountMplCoreProgram,\n    TAccountSystemProgram\n  >\n> {\n  // Program address.\n  const programAddress =\n    config?.programAddress ?? MPL_BUBBLEGUM_PROGRAM_ADDRESS;\n\n  // Original accounts.\n  const originalAccounts = {\n    treeConfig: { value: input.treeConfig ?? null, isWritable: true },\n    payer: { value: input.payer ?? null, isWritable: true },\n    authority: { value: input.authority ?? null, isWritable: false },\n    newCollectionAuthority: {\n      value: input.newCollectionAuthority ?? null,\n      isWritable: false,\n    },\n    leafOwner: { value: input.leafOwner ?? null, isWritable: false },\n    leafDelegate: { value: input.leafDelegate ?? null, isWritable: false },\n    merkleTree: { value: input.merkleTree ?? null, isWritable: true },\n    coreCollection: { value: input.coreCollection ?? null, isWritable: true },\n    newCoreCollection: {\n      value: input.newCoreCollection ?? null,\n      isWritable: true,\n    },\n    mplCoreCpiSigner: {\n      value: input.mplCoreCpiSigner ?? null,\n      isWritable: false,\n    },\n    logWrapper: { value: input.logWrapper ?? null, isWritable: false },\n    compressionProgram: {\n      value: input.compressionProgram ?? null,\n      isWritable: false,\n    },\n    mplCoreProgram: { value: input.mplCoreProgram ?? null, isWritable: false },\n    systemProgram: { value: input.systemProgram ?? null, isWritable: false },\n  };\n  const accounts = originalAccounts as Record<\n    keyof typeof originalAccounts,\n    ResolvedAccount\n  >;\n\n  // Original args.\n  const args = { ...input };\n\n  // Resolve default values.\n  if (!accounts.treeConfig.value) {\n    accounts.treeConfig.value = await findTreeConfigPda({\n      merkleTree: expectAddress(accounts.merkleTree.value),\n    });\n  }\n  if (!accounts.mplCoreCpiSigner.value) {\n    accounts.mplCoreCpiSigner.value =\n      'CbNY3JiXdXNE9tPNEk1aRZVEkWdj2v7kfJLNQwZZgpXk' as Address<'CbNY3JiXdXNE9tPNEk1aRZVEkWdj2v7kfJLNQwZZgpXk'>;\n  }\n  if (!accounts.logWrapper.value) {\n    accounts.logWrapper.value =\n      'mnoopTCrg4p8ry25e4bcWA9XZjbNjMTfgYVGGEdRsf3' as Address<'mnoopTCrg4p8ry25e4bcWA9XZjbNjMTfgYVGGEdRsf3'>;\n  }\n  if (!accounts.compressionProgram.value) {\n    accounts.compressionProgram.value =\n      'mcmt6YrQEMKw8Mw43FmpRLmf7BqRnFMKmAcbxE3xkAW' as Address<'mcmt6YrQEMKw8Mw43FmpRLmf7BqRnFMKmAcbxE3xkAW'>;\n  }\n  if (!accounts.mplCoreProgram.value) {\n    accounts.mplCoreProgram.value =\n      'CoREENxT6tW1HoK8ypY1SxRMZTcVPm7R94rH4PZNhX7d' as Address<'CoREENxT6tW1HoK8ypY1SxRMZTcVPm7R94rH4PZNhX7d'>;\n  }\n  if (!accounts.systemProgram.value) {\n    accounts.systemProgram.value =\n      '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>;\n  }\n\n  // Remaining accounts.\n  const remainingAccounts: AccountMeta[] = (args.proof ?? []).map(\n    (address) => ({ address, role: AccountRole.READONLY })\n  );\n\n  const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n  return Object.freeze({\n    accounts: [\n      getAccountMeta(accounts.treeConfig),\n      getAccountMeta(accounts.payer),\n      getAccountMeta(accounts.authority),\n      getAccountMeta(accounts.newCollectionAuthority),\n      getAccountMeta(accounts.leafOwner),\n      getAccountMeta(accounts.leafDelegate),\n      getAccountMeta(accounts.merkleTree),\n      getAccountMeta(accounts.coreCollection),\n      getAccountMeta(accounts.newCoreCollection),\n      getAccountMeta(accounts.mplCoreCpiSigner),\n      getAccountMeta(accounts.logWrapper),\n      getAccountMeta(accounts.compressionProgram),\n      getAccountMeta(accounts.mplCoreProgram),\n      getAccountMeta(accounts.systemProgram),\n      ...remainingAccounts,\n    ],\n    data: getSetCollectionV2InstructionDataEncoder().encode(\n      args as SetCollectionV2InstructionDataArgs\n    ),\n    programAddress,\n  } as SetCollectionV2Instruction<\n    TProgramAddress,\n    TAccountTreeConfig,\n    TAccountPayer,\n    TAccountAuthority,\n    TAccountNewCollectionAuthority,\n    TAccountLeafOwner,\n    TAccountLeafDelegate,\n    TAccountMerkleTree,\n    TAccountCoreCollection,\n    TAccountNewCoreCollection,\n    TAccountMplCoreCpiSigner,\n    TAccountLogWrapper,\n    TAccountCompressionProgram,\n    TAccountMplCoreProgram,\n    TAccountSystemProgram\n  >);\n}\n\nexport type SetCollectionV2Input<\n  TAccountTreeConfig extends string = string,\n  TAccountPayer extends string = string,\n  TAccountAuthority extends string = string,\n  TAccountNewCollectionAuthority extends string = string,\n  TAccountLeafOwner extends string = string,\n  TAccountLeafDelegate extends string = string,\n  TAccountMerkleTree extends string = string,\n  TAccountCoreCollection extends string = string,\n  TAccountNewCoreCollection extends string = string,\n  TAccountMplCoreCpiSigner extends string = string,\n  TAccountLogWrapper extends string = string,\n  TAccountCompressionProgram extends string = string,\n  TAccountMplCoreProgram extends string = string,\n  TAccountSystemProgram extends string = string,\n> = {\n  treeConfig: Address<TAccountTreeConfig>;\n  payer: TransactionSigner<TAccountPayer>;\n  /**\n   * If item is not in a collection, then authority must be tree owner/delegate.  If item is\n   * getting removed from a collection, then this must be an authority for the existing\n   * collection.  Defaults to `payer`\n   */\n  authority?: TransactionSigner<TAccountAuthority>;\n  /**\n   * If item is getting added to a new collection, then this must be the authority\n   * for the new collection.  Defaults to `authority`\n   */\n  newCollectionAuthority?: TransactionSigner<TAccountNewCollectionAuthority>;\n  leafOwner: Address<TAccountLeafOwner>;\n  /** Defaults to `leaf_owner` */\n  leafDelegate?: Address<TAccountLeafDelegate>;\n  merkleTree: Address<TAccountMerkleTree>;\n  coreCollection?: Address<TAccountCoreCollection>;\n  newCoreCollection?: Address<TAccountNewCoreCollection>;\n  mplCoreCpiSigner?: Address<TAccountMplCoreCpiSigner>;\n  logWrapper?: Address<TAccountLogWrapper>;\n  compressionProgram?: Address<TAccountCompressionProgram>;\n  mplCoreProgram?: Address<TAccountMplCoreProgram>;\n  systemProgram?: Address<TAccountSystemProgram>;\n  root: SetCollectionV2InstructionDataArgs['root'];\n  assetDataHash?: SetCollectionV2InstructionDataArgs['assetDataHash'];\n  flags?: SetCollectionV2InstructionDataArgs['flags'];\n  nonce: SetCollectionV2InstructionDataArgs['nonce'];\n  index: SetCollectionV2InstructionDataArgs['index'];\n  metadata: SetCollectionV2InstructionDataArgs['metadata'];\n  proof?: Array<Address>;\n};\n\nexport function getSetCollectionV2Instruction<\n  TAccountTreeConfig extends string,\n  TAccountPayer extends string,\n  TAccountAuthority extends string,\n  TAccountNewCollectionAuthority extends string,\n  TAccountLeafOwner extends string,\n  TAccountLeafDelegate extends string,\n  TAccountMerkleTree extends string,\n  TAccountCoreCollection extends string,\n  TAccountNewCoreCollection extends string,\n  TAccountMplCoreCpiSigner extends string,\n  TAccountLogWrapper extends string,\n  TAccountCompressionProgram extends string,\n  TAccountMplCoreProgram extends string,\n  TAccountSystemProgram extends string,\n  TProgramAddress extends Address = typeof MPL_BUBBLEGUM_PROGRAM_ADDRESS,\n>(\n  input: SetCollectionV2Input<\n    TAccountTreeConfig,\n    TAccountPayer,\n    TAccountAuthority,\n    TAccountNewCollectionAuthority,\n    TAccountLeafOwner,\n    TAccountLeafDelegate,\n    TAccountMerkleTree,\n    TAccountCoreCollection,\n    TAccountNewCoreCollection,\n    TAccountMplCoreCpiSigner,\n    TAccountLogWrapper,\n    TAccountCompressionProgram,\n    TAccountMplCoreProgram,\n    TAccountSystemProgram\n  >,\n  config?: { programAddress?: TProgramAddress }\n): SetCollectionV2Instruction<\n  TProgramAddress,\n  TAccountTreeConfig,\n  TAccountPayer,\n  TAccountAuthority,\n  TAccountNewCollectionAuthority,\n  TAccountLeafOwner,\n  TAccountLeafDelegate,\n  TAccountMerkleTree,\n  TAccountCoreCollection,\n  TAccountNewCoreCollection,\n  TAccountMplCoreCpiSigner,\n  TAccountLogWrapper,\n  TAccountCompressionProgram,\n  TAccountMplCoreProgram,\n  TAccountSystemProgram\n> {\n  // Program address.\n  const programAddress =\n    config?.programAddress ?? MPL_BUBBLEGUM_PROGRAM_ADDRESS;\n\n  // Original accounts.\n  const originalAccounts = {\n    treeConfig: { value: input.treeConfig ?? null, isWritable: true },\n    payer: { value: input.payer ?? null, isWritable: true },\n    authority: { value: input.authority ?? null, isWritable: false },\n    newCollectionAuthority: {\n      value: input.newCollectionAuthority ?? null,\n      isWritable: false,\n    },\n    leafOwner: { value: input.leafOwner ?? null, isWritable: false },\n    leafDelegate: { value: input.leafDelegate ?? null, isWritable: false },\n    merkleTree: { value: input.merkleTree ?? null, isWritable: true },\n    coreCollection: { value: input.coreCollection ?? null, isWritable: true },\n    newCoreCollection: {\n      value: input.newCoreCollection ?? null,\n      isWritable: true,\n    },\n    mplCoreCpiSigner: {\n      value: input.mplCoreCpiSigner ?? null,\n      isWritable: false,\n    },\n    logWrapper: { value: input.logWrapper ?? null, isWritable: false },\n    compressionProgram: {\n      value: input.compressionProgram ?? null,\n      isWritable: false,\n    },\n    mplCoreProgram: { value: input.mplCoreProgram ?? null, isWritable: false },\n    systemProgram: { value: input.systemProgram ?? null, isWritable: false },\n  };\n  const accounts = originalAccounts as Record<\n    keyof typeof originalAccounts,\n    ResolvedAccount\n  >;\n\n  // Original args.\n  const args = { ...input };\n\n  // Resolve default values.\n  if (!accounts.mplCoreCpiSigner.value) {\n    accounts.mplCoreCpiSigner.value =\n      'CbNY3JiXdXNE9tPNEk1aRZVEkWdj2v7kfJLNQwZZgpXk' as Address<'CbNY3JiXdXNE9tPNEk1aRZVEkWdj2v7kfJLNQwZZgpXk'>;\n  }\n  if (!accounts.logWrapper.value) {\n    accounts.logWrapper.value =\n      'mnoopTCrg4p8ry25e4bcWA9XZjbNjMTfgYVGGEdRsf3' as Address<'mnoopTCrg4p8ry25e4bcWA9XZjbNjMTfgYVGGEdRsf3'>;\n  }\n  if (!accounts.compressionProgram.value) {\n    accounts.compressionProgram.value =\n      'mcmt6YrQEMKw8Mw43FmpRLmf7BqRnFMKmAcbxE3xkAW' as Address<'mcmt6YrQEMKw8Mw43FmpRLmf7BqRnFMKmAcbxE3xkAW'>;\n  }\n  if (!accounts.mplCoreProgram.value) {\n    accounts.mplCoreProgram.value =\n      'CoREENxT6tW1HoK8ypY1SxRMZTcVPm7R94rH4PZNhX7d' as Address<'CoREENxT6tW1HoK8ypY1SxRMZTcVPm7R94rH4PZNhX7d'>;\n  }\n  if (!accounts.systemProgram.value) {\n    accounts.systemProgram.value =\n      '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>;\n  }\n\n  // Remaining accounts.\n  const remainingAccounts: AccountMeta[] = (args.proof ?? []).map(\n    (address) => ({ address, role: AccountRole.READONLY })\n  );\n\n  const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n  return Object.freeze({\n    accounts: [\n      getAccountMeta(accounts.treeConfig),\n      getAccountMeta(accounts.payer),\n      getAccountMeta(accounts.authority),\n      getAccountMeta(accounts.newCollectionAuthority),\n      getAccountMeta(accounts.leafOwner),\n      getAccountMeta(accounts.leafDelegate),\n      getAccountMeta(accounts.merkleTree),\n      getAccountMeta(accounts.coreCollection),\n      getAccountMeta(accounts.newCoreCollection),\n      getAccountMeta(accounts.mplCoreCpiSigner),\n      getAccountMeta(accounts.logWrapper),\n      getAccountMeta(accounts.compressionProgram),\n      getAccountMeta(accounts.mplCoreProgram),\n      getAccountMeta(accounts.systemProgram),\n      ...remainingAccounts,\n    ],\n    data: getSetCollectionV2InstructionDataEncoder().encode(\n      args as SetCollectionV2InstructionDataArgs\n    ),\n    programAddress,\n  } as SetCollectionV2Instruction<\n    TProgramAddress,\n    TAccountTreeConfig,\n    TAccountPayer,\n    TAccountAuthority,\n    TAccountNewCollectionAuthority,\n    TAccountLeafOwner,\n    TAccountLeafDelegate,\n    TAccountMerkleTree,\n    TAccountCoreCollection,\n    TAccountNewCoreCollection,\n    TAccountMplCoreCpiSigner,\n    TAccountLogWrapper,\n    TAccountCompressionProgram,\n    TAccountMplCoreProgram,\n    TAccountSystemProgram\n  >);\n}\n\nexport type ParsedSetCollectionV2Instruction<\n  TProgram extends string = typeof MPL_BUBBLEGUM_PROGRAM_ADDRESS,\n  TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n  programAddress: Address<TProgram>;\n  accounts: {\n    treeConfig: TAccountMetas[0];\n    payer: TAccountMetas[1];\n    /**\n     * If item is not in a collection, then authority must be tree owner/delegate.  If item is\n     * getting removed from a collection, then this must be an authority for the existing\n     * collection.  Defaults to `payer`\n     */\n    authority?: TAccountMetas[2] | undefined;\n    /**\n     * If item is getting added to a new collection, then this must be the authority\n     * for the new collection.  Defaults to `authority`\n     */\n    newCollectionAuthority?: TAccountMetas[3] | undefined;\n    leafOwner: TAccountMetas[4];\n    /** Defaults to `leaf_owner` */\n    leafDelegate?: TAccountMetas[5] | undefined;\n    merkleTree: TAccountMetas[6];\n    coreCollection?: TAccountMetas[7] | undefined;\n    newCoreCollection?: TAccountMetas[8] | undefined;\n    mplCoreCpiSigner: TAccountMetas[9];\n    logWrapper: TAccountMetas[10];\n    compressionProgram: TAccountMetas[11];\n    mplCoreProgram: TAccountMetas[12];\n    systemProgram: TAccountMetas[13];\n  };\n  data: SetCollectionV2InstructionData;\n};\n\nexport function parseSetCollectionV2Instruction<\n  TProgram extends string,\n  TAccountMetas extends readonly AccountMeta[],\n>(\n  instruction: Instruction<TProgram> &\n    InstructionWithAccounts<TAccountMetas> &\n    InstructionWithData<ReadonlyUint8Array>\n): ParsedSetCollectionV2Instruction<TProgram, TAccountMetas> {\n  if (instruction.accounts.length < 14) {\n    // TODO: Coded error.\n    throw new Error('Not enough accounts');\n  }\n  let accountIndex = 0;\n  const getNextAccount = () => {\n    const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n    accountIndex += 1;\n    return accountMeta;\n  };\n  const getNextOptionalAccount = () => {\n    const accountMeta = getNextAccount();\n    return accountMeta.address === MPL_BUBBLEGUM_PROGRAM_ADDRESS\n      ? undefined\n      : accountMeta;\n  };\n  return {\n    programAddress: instruction.programAddress,\n    accounts: {\n      treeConfig: getNextAccount(),\n      payer: getNextAccount(),\n      authority: getNextOptionalAccount(),\n      newCollectionAuthority: getNextOptionalAccount(),\n      leafOwner: getNextAccount(),\n      leafDelegate: getNextOptionalAccount(),\n      merkleTree: getNextAccount(),\n      coreCollection: getNextOptionalAccount(),\n      newCoreCollection: getNextOptionalAccount(),\n      mplCoreCpiSigner: getNextAccount(),\n      logWrapper: getNextAccount(),\n      compressionProgram: getNextAccount(),\n      mplCoreProgram: getNextAccount(),\n      systemProgram: getNextAccount(),\n    },\n    data: getSetCollectionV2InstructionDataDecoder().decode(instruction.data),\n  };\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  combineCodec,\n  fixDecoderSize,\n  fixEncoderSize,\n  getBytesDecoder,\n  getBytesEncoder,\n  getStructDecoder,\n  getStructEncoder,\n  transformEncoder,\n  type AccountMeta,\n  type AccountSignerMeta,\n  type Address,\n  type FixedSizeCodec,\n  type FixedSizeDecoder,\n  type FixedSizeEncoder,\n  type Instruction,\n  type InstructionWithAccounts,\n  type InstructionWithData,\n  type ReadonlySignerAccount,\n  type ReadonlyUint8Array,\n  type TransactionSigner,\n  type WritableAccount,\n} from '@solana/kit';\nimport { MPL_BUBBLEGUM_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\nimport {\n  getDecompressibleStateDecoder,\n  getDecompressibleStateEncoder,\n  type DecompressibleState,\n  type DecompressibleStateArgs,\n} from '../types';\n\nexport const SET_DECOMPRESSIBLE_STATE_DISCRIMINATOR = new Uint8Array([\n  82, 104, 152, 6, 149, 111, 100, 13,\n]);\n\nexport function getSetDecompressibleStateDiscriminatorBytes() {\n  return fixEncoderSize(getBytesEncoder(), 8).encode(\n    SET_DECOMPRESSIBLE_STATE_DISCRIMINATOR\n  );\n}\n\nexport type SetDecompressibleStateInstruction<\n  TProgram extends string = typeof MPL_BUBBLEGUM_PROGRAM_ADDRESS,\n  TAccountTreeConfig extends string | AccountMeta<string> = string,\n  TAccountTreeCreator extends string | AccountMeta<string> = string,\n  TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n  InstructionWithData<ReadonlyUint8Array> &\n  InstructionWithAccounts<\n    [\n      TAccountTreeConfig extends string\n        ? WritableAccount<TAccountTreeConfig>\n        : TAccountTreeConfig,\n      TAccountTreeCreator extends string\n        ? ReadonlySignerAccount<TAccountTreeCreator> &\n            AccountSignerMeta<TAccountTreeCreator>\n        : TAccountTreeCreator,\n      ...TRemainingAccounts,\n    ]\n  >;\n\nexport type SetDecompressibleStateInstructionData = {\n  discriminator: ReadonlyUint8Array;\n  decompressableState: DecompressibleState;\n};\n\nexport type SetDecompressibleStateInstructionDataArgs = {\n  decompressableState: DecompressibleStateArgs;\n};\n\nexport function getSetDecompressibleStateInstructionDataEncoder(): FixedSizeEncoder<SetDecompressibleStateInstructionDataArgs> {\n  return transformEncoder(\n    getStructEncoder([\n      ['discriminator', fixEncoderSize(getBytesEncoder(), 8)],\n      ['decompressableState', getDecompressibleStateEncoder()],\n    ]),\n    (value) => ({\n      ...value,\n      discriminator: SET_DECOMPRESSIBLE_STATE_DISCRIMINATOR,\n    })\n  );\n}\n\nexport function getSetDecompressibleStateInstructionDataDecoder(): FixedSizeDecoder<SetDecompressibleStateInstructionData> {\n  return getStructDecoder([\n    ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n    ['decompressableState', getDecompressibleStateDecoder()],\n  ]);\n}\n\nexport function getSetDecompressibleStateInstructionDataCodec(): FixedSizeCodec<\n  SetDecompressibleStateInstructionDataArgs,\n  SetDecompressibleStateInstructionData\n> {\n  return combineCodec(\n    getSetDecompressibleStateInstructionDataEncoder(),\n    getSetDecompressibleStateInstructionDataDecoder()\n  );\n}\n\nexport type SetDecompressibleStateInput<\n  TAccountTreeConfig extends string = string,\n  TAccountTreeCreator extends string = string,\n> = {\n  treeConfig: Address<TAccountTreeConfig>;\n  treeCreator: TransactionSigner<TAccountTreeCreator>;\n  decompressableState: SetDecompressibleStateInstructionDataArgs['decompressableState'];\n};\n\nexport function getSetDecompressibleStateInstruction<\n  TAccountTreeConfig extends string,\n  TAccountTreeCreator extends string,\n  TProgramAddress extends Address = typeof MPL_BUBBLEGUM_PROGRAM_ADDRESS,\n>(\n  input: SetDecompressibleStateInput<TAccountTreeConfig, TAccountTreeCreator>,\n  config?: { programAddress?: TProgramAddress }\n): SetDecompressibleStateInstruction<\n  TProgramAddress,\n  TAccountTreeConfig,\n  TAccountTreeCreator\n> {\n  // Program address.\n  const programAddress =\n    config?.programAddress ?? MPL_BUBBLEGUM_PROGRAM_ADDRESS;\n\n  // Original accounts.\n  const originalAccounts = {\n    treeConfig: { value: input.treeConfig ?? null, isWritable: true },\n    treeCreator: { value: input.treeCreator ?? null, isWritable: false },\n  };\n  const accounts = originalAccounts as Record<\n    keyof typeof originalAccounts,\n    ResolvedAccount\n  >;\n\n  // Original args.\n  const args = { ...input };\n\n  const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n  return Object.freeze({\n    accounts: [\n      getAccountMeta(accounts.treeConfig),\n      getAccountMeta(accounts.treeCreator),\n    ],\n    data: getSetDecompressibleStateInstructionDataEncoder().encode(\n      args as SetDecompressibleStateInstructionDataArgs\n    ),\n    programAddress,\n  } as SetDecompressibleStateInstruction<\n    TProgramAddress,\n    TAccountTreeConfig,\n    TAccountTreeCreator\n  >);\n}\n\nexport type ParsedSetDecompressibleStateInstruction<\n  TProgram extends string = typeof MPL_BUBBLEGUM_PROGRAM_ADDRESS,\n  TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n  programAddress: Address<TProgram>;\n  accounts: {\n    treeConfig: TAccountMetas[0];\n    treeCreator: TAccountMetas[1];\n  };\n  data: SetDecompressibleStateInstructionData;\n};\n\nexport function parseSetDecompressibleStateInstruction<\n  TProgram extends string,\n  TAccountMetas extends readonly AccountMeta[],\n>(\n  instruction: Instruction<TProgram> &\n    InstructionWithAccounts<TAccountMetas> &\n    InstructionWithData<ReadonlyUint8Array>\n): ParsedSetDecompressibleStateInstruction<TProgram, TAccountMetas> {\n  if (instruction.accounts.length < 2) {\n    // TODO: Coded error.\n    throw new Error('Not enough accounts');\n  }\n  let accountIndex = 0;\n  const getNextAccount = () => {\n    const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n    accountIndex += 1;\n    return accountMeta;\n  };\n  return {\n    programAddress: instruction.programAddress,\n    accounts: { treeConfig: getNextAccount(), treeCreator: getNextAccount() },\n    data: getSetDecompressibleStateInstructionDataDecoder().decode(\n      instruction.data\n    ),\n  };\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  AccountRole,\n  combineCodec,\n  fixDecoderSize,\n  fixEncoderSize,\n  getBytesDecoder,\n  getBytesEncoder,\n  getOptionDecoder,\n  getOptionEncoder,\n  getStructDecoder,\n  getStructEncoder,\n  getU32Decoder,\n  getU32Encoder,\n  getU64Decoder,\n  getU64Encoder,\n  getU8Decoder,\n  getU8Encoder,\n  none,\n  transformEncoder,\n  type AccountMeta,\n  type AccountSignerMeta,\n  type Address,\n  type Codec,\n  type Decoder,\n  type Encoder,\n  type Instruction,\n  type InstructionWithAccounts,\n  type InstructionWithData,\n  type Option,\n  type OptionOrNullable,\n  type ReadonlyAccount,\n  type ReadonlySignerAccount,\n  type ReadonlyUint8Array,\n  type TransactionSigner,\n  type WritableAccount,\n  type WritableSignerAccount,\n} from '@solana/kit';\nimport { findTreeConfigPda } from '../pdas';\nimport { MPL_BUBBLEGUM_PROGRAM_ADDRESS } from '../programs';\nimport {\n  expectAddress,\n  getAccountMetaFactory,\n  type ResolvedAccount,\n} from '../shared';\n\nexport const SET_NON_TRANSFERABLE_V2_DISCRIMINATOR = new Uint8Array([\n  181, 141, 206, 58, 242, 199, 152, 168,\n]);\n\nexport function getSetNonTransferableV2DiscriminatorBytes() {\n  return fixEncoderSize(getBytesEncoder(), 8).encode(\n    SET_NON_TRANSFERABLE_V2_DISCRIMINATOR\n  );\n}\n\nexport type SetNonTransferableV2Instruction<\n  TProgram extends string = typeof MPL_BUBBLEGUM_PROGRAM_ADDRESS,\n  TAccountTreeConfig extends string | AccountMeta<string> = string,\n  TAccountPayer extends string | AccountMeta<string> = string,\n  TAccountAuthority extends string | AccountMeta<string> = string,\n  TAccountLeafOwner extends string | AccountMeta<string> = string,\n  TAccountLeafDelegate extends string | AccountMeta<string> = string,\n  TAccountMerkleTree extends string | AccountMeta<string> = string,\n  TAccountCoreCollection extends string | AccountMeta<string> = string,\n  TAccountLogWrapper extends\n    | string\n    | AccountMeta<string> = 'mnoopTCrg4p8ry25e4bcWA9XZjbNjMTfgYVGGEdRsf3',\n  TAccountCompressionProgram extends\n    | string\n    | AccountMeta<string> = 'mcmt6YrQEMKw8Mw43FmpRLmf7BqRnFMKmAcbxE3xkAW',\n  TAccountSystemProgram extends\n    | string\n    | AccountMeta<string> = '11111111111111111111111111111111',\n  TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n  InstructionWithData<ReadonlyUint8Array> &\n  InstructionWithAccounts<\n    [\n      TAccountTreeConfig extends string\n        ? WritableAccount<TAccountTreeConfig>\n        : TAccountTreeConfig,\n      TAccountPayer extends string\n        ? WritableSignerAccount<TAccountPayer> &\n            AccountSignerMeta<TAccountPayer>\n        : TAccountPayer,\n      TAccountAuthority extends string\n        ? ReadonlySignerAccount<TAccountAuthority> &\n            AccountSignerMeta<TAccountAuthority>\n        : TAccountAuthority,\n      TAccountLeafOwner extends string\n        ? ReadonlyAccount<TAccountLeafOwner>\n        : TAccountLeafOwner,\n      TAccountLeafDelegate extends string\n        ? ReadonlyAccount<TAccountLeafDelegate>\n        : TAccountLeafDelegate,\n      TAccountMerkleTree extends string\n        ? WritableAccount<TAccountMerkleTree>\n        : TAccountMerkleTree,\n      TAccountCoreCollection extends string\n        ? ReadonlyAccount<TAccountCoreCollection>\n        : TAccountCoreCollection,\n      TAccountLogWrapper extends string\n        ? ReadonlyAccount<TAccountLogWrapper>\n        : TAccountLogWrapper,\n      TAccountCompressionProgram extends string\n        ? ReadonlyAccount<TAccountCompressionProgram>\n        : TAccountCompressionProgram,\n      TAccountSystemProgram extends string\n        ? ReadonlyAccount<TAccountSystemProgram>\n        : TAccountSystemProgram,\n      ...TRemainingAccounts,\n    ]\n  >;\n\nexport type SetNonTransferableV2InstructionData = {\n  discriminator: ReadonlyUint8Array;\n  root: ReadonlyUint8Array;\n  dataHash: ReadonlyUint8Array;\n  creatorHash: ReadonlyUint8Array;\n  assetDataHash: Option<ReadonlyUint8Array>;\n  flags: Option<number>;\n  nonce: bigint;\n  index: number;\n};\n\nexport type SetNonTransferableV2InstructionDataArgs = {\n  root: ReadonlyUint8Array;\n  dataHash: ReadonlyUint8Array;\n  creatorHash: ReadonlyUint8Array;\n  assetDataHash?: OptionOrNullable<ReadonlyUint8Array>;\n  flags?: OptionOrNullable<number>;\n  nonce: number | bigint;\n  index: number;\n};\n\nexport function getSetNonTransferableV2InstructionDataEncoder(): Encoder<SetNonTransferableV2InstructionDataArgs> {\n  return transformEncoder(\n    getStructEncoder([\n      ['discriminator', fixEncoderSize(getBytesEncoder(), 8)],\n      ['root', fixEncoderSize(getBytesEncoder(), 32)],\n      ['dataHash', fixEncoderSize(getBytesEncoder(), 32)],\n      ['creatorHash', fixEncoderSize(getBytesEncoder(), 32)],\n      [\n        'assetDataHash',\n        getOptionEncoder(fixEncoderSize(getBytesEncoder(), 32)),\n      ],\n      ['flags', getOptionEncoder(getU8Encoder())],\n      ['nonce', getU64Encoder()],\n      ['index', getU32Encoder()],\n    ]),\n    (value) => ({\n      ...value,\n      discriminator: SET_NON_TRANSFERABLE_V2_DISCRIMINATOR,\n      assetDataHash: value.assetDataHash ?? none(),\n      flags: value.flags ?? none(),\n    })\n  );\n}\n\nexport function getSetNonTransferableV2InstructionDataDecoder(): Decoder<SetNonTransferableV2InstructionData> {\n  return getStructDecoder([\n    ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n    ['root', fixDecoderSize(getBytesDecoder(), 32)],\n    ['dataHash', fixDecoderSize(getBytesDecoder(), 32)],\n    ['creatorHash', fixDecoderSize(getBytesDecoder(), 32)],\n    ['assetDataHash', getOptionDecoder(fixDecoderSize(getBytesDecoder(), 32))],\n    ['flags', getOptionDecoder(getU8Decoder())],\n    ['nonce', getU64Decoder()],\n    ['index', getU32Decoder()],\n  ]);\n}\n\nexport function getSetNonTransferableV2InstructionDataCodec(): Codec<\n  SetNonTransferableV2InstructionDataArgs,\n  SetNonTransferableV2InstructionData\n> {\n  return combineCodec(\n    getSetNonTransferableV2InstructionDataEncoder(),\n    getSetNonTransferableV2InstructionDataDecoder()\n  );\n}\n\nexport type SetNonTransferableV2AsyncInput<\n  TAccountTreeConfig extends string = string,\n  TAccountPayer extends string = string,\n  TAccountAuthority extends string = string,\n  TAccountLeafOwner extends string = string,\n  TAccountLeafDelegate extends string = string,\n  TAccountMerkleTree extends string = string,\n  TAccountCoreCollection extends string = string,\n  TAccountLogWrapper extends string = string,\n  TAccountCompressionProgram extends string = string,\n  TAccountSystemProgram extends string = string,\n> = {\n  treeConfig?: Address<TAccountTreeConfig>;\n  payer: TransactionSigner<TAccountPayer>;\n  /**\n   * This authority must be a permanent freeze delegate on the collection\n   * Defaults to `payer`\n   */\n  authority?: TransactionSigner<TAccountAuthority>;\n  leafOwner: Address<TAccountLeafOwner>;\n  /** Defaults to `leaf_owner` */\n  leafDelegate?: Address<TAccountLeafDelegate>;\n  merkleTree: Address<TAccountMerkleTree>;\n  coreCollection: Address<TAccountCoreCollection>;\n  logWrapper?: Address<TAccountLogWrapper>;\n  compressionProgram?: Address<TAccountCompressionProgram>;\n  systemProgram?: Address<TAccountSystemProgram>;\n  root: SetNonTransferableV2InstructionDataArgs['root'];\n  dataHash: SetNonTransferableV2InstructionDataArgs['dataHash'];\n  creatorHash: SetNonTransferableV2InstructionDataArgs['creatorHash'];\n  assetDataHash?: SetNonTransferableV2InstructionDataArgs['assetDataHash'];\n  flags?: SetNonTransferableV2InstructionDataArgs['flags'];\n  nonce: SetNonTransferableV2InstructionDataArgs['nonce'];\n  index: SetNonTransferableV2InstructionDataArgs['index'];\n  proof?: Array<Address>;\n};\n\nexport async function getSetNonTransferableV2InstructionAsync<\n  TAccountTreeConfig extends string,\n  TAccountPayer extends string,\n  TAccountAuthority extends string,\n  TAccountLeafOwner extends string,\n  TAccountLeafDelegate extends string,\n  TAccountMerkleTree extends string,\n  TAccountCoreCollection extends string,\n  TAccountLogWrapper extends string,\n  TAccountCompressionProgram extends string,\n  TAccountSystemProgram extends string,\n  TProgramAddress extends Address = typeof MPL_BUBBLEGUM_PROGRAM_ADDRESS,\n>(\n  input: SetNonTransferableV2AsyncInput<\n    TAccountTreeConfig,\n    TAccountPayer,\n    TAccountAuthority,\n    TAccountLeafOwner,\n    TAccountLeafDelegate,\n    TAccountMerkleTree,\n    TAccountCoreCollection,\n    TAccountLogWrapper,\n    TAccountCompressionProgram,\n    TAccountSystemProgram\n  >,\n  config?: { programAddress?: TProgramAddress }\n): Promise<\n  SetNonTransferableV2Instruction<\n    TProgramAddress,\n    TAccountTreeConfig,\n    TAccountPayer,\n    TAccountAuthority,\n    TAccountLeafOwner,\n    TAccountLeafDelegate,\n    TAccountMerkleTree,\n    TAccountCoreCollection,\n    TAccountLogWrapper,\n    TAccountCompressionProgram,\n    TAccountSystemProgram\n  >\n> {\n  // Program address.\n  const programAddress =\n    config?.programAddress ?? MPL_BUBBLEGUM_PROGRAM_ADDRESS;\n\n  // Original accounts.\n  const originalAccounts = {\n    treeConfig: { value: input.treeConfig ?? null, isWritable: true },\n    payer: { value: input.payer ?? null, isWritable: true },\n    authority: { value: input.authority ?? null, isWritable: false },\n    leafOwner: { value: input.leafOwner ?? null, isWritable: false },\n    leafDelegate: { value: input.leafDelegate ?? null, isWritable: false },\n    merkleTree: { value: input.merkleTree ?? null, isWritable: true },\n    coreCollection: { value: input.coreCollection ?? null, isWritable: false },\n    logWrapper: { value: input.logWrapper ?? null, isWritable: false },\n    compressionProgram: {\n      value: input.compressionProgram ?? null,\n      isWritable: false,\n    },\n    systemProgram: { value: input.systemProgram ?? null, isWritable: false },\n  };\n  const accounts = originalAccounts as Record<\n    keyof typeof originalAccounts,\n    ResolvedAccount\n  >;\n\n  // Original args.\n  const args = { ...input };\n\n  // Resolve default values.\n  if (!accounts.treeConfig.value) {\n    accounts.treeConfig.value = await findTreeConfigPda({\n      merkleTree: expectAddress(accounts.merkleTree.value),\n    });\n  }\n  if (!accounts.logWrapper.value) {\n    accounts.logWrapper.value =\n      'mnoopTCrg4p8ry25e4bcWA9XZjbNjMTfgYVGGEdRsf3' as Address<'mnoopTCrg4p8ry25e4bcWA9XZjbNjMTfgYVGGEdRsf3'>;\n  }\n  if (!accounts.compressionProgram.value) {\n    accounts.compressionProgram.value =\n      'mcmt6YrQEMKw8Mw43FmpRLmf7BqRnFMKmAcbxE3xkAW' as Address<'mcmt6YrQEMKw8Mw43FmpRLmf7BqRnFMKmAcbxE3xkAW'>;\n  }\n  if (!accounts.systemProgram.value) {\n    accounts.systemProgram.value =\n      '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>;\n  }\n\n  // Remaining accounts.\n  const remainingAccounts: AccountMeta[] = (args.proof ?? []).map(\n    (address) => ({ address, role: AccountRole.READONLY })\n  );\n\n  const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n  return Object.freeze({\n    accounts: [\n      getAccountMeta(accounts.treeConfig),\n      getAccountMeta(accounts.payer),\n      getAccountMeta(accounts.authority),\n      getAccountMeta(accounts.leafOwner),\n      getAccountMeta(accounts.leafDelegate),\n      getAccountMeta(accounts.merkleTree),\n      getAccountMeta(accounts.coreCollection),\n      getAccountMeta(accounts.logWrapper),\n      getAccountMeta(accounts.compressionProgram),\n      getAccountMeta(accounts.systemProgram),\n      ...remainingAccounts,\n    ],\n    data: getSetNonTransferableV2InstructionDataEncoder().encode(\n      args as SetNonTransferableV2InstructionDataArgs\n    ),\n    programAddress,\n  } as SetNonTransferableV2Instruction<\n    TProgramAddress,\n    TAccountTreeConfig,\n    TAccountPayer,\n    TAccountAuthority,\n    TAccountLeafOwner,\n    TAccountLeafDelegate,\n    TAccountMerkleTree,\n    TAccountCoreCollection,\n    TAccountLogWrapper,\n    TAccountCompressionProgram,\n    TAccountSystemProgram\n  >);\n}\n\nexport type SetNonTransferableV2Input<\n  TAccountTreeConfig extends string = string,\n  TAccountPayer extends string = string,\n  TAccountAuthority extends string = string,\n  TAccountLeafOwner extends string = string,\n  TAccountLeafDelegate extends string = string,\n  TAccountMerkleTree extends string = string,\n  TAccountCoreCollection extends string = string,\n  TAccountLogWrapper extends string = string,\n  TAccountCompressionProgram extends string = string,\n  TAccountSystemProgram extends string = string,\n> = {\n  treeConfig: Address<TAccountTreeConfig>;\n  payer: TransactionSigner<TAccountPayer>;\n  /**\n   * This authority must be a permanent freeze delegate on the collection\n   * Defaults to `payer`\n   */\n  authority?: TransactionSigner<TAccountAuthority>;\n  leafOwner: Address<TAccountLeafOwner>;\n  /** Defaults to `leaf_owner` */\n  leafDelegate?: Address<TAccountLeafDelegate>;\n  merkleTree: Address<TAccountMerkleTree>;\n  coreCollection: Address<TAccountCoreCollection>;\n  logWrapper?: Address<TAccountLogWrapper>;\n  compressionProgram?: Address<TAccountCompressionProgram>;\n  systemProgram?: Address<TAccountSystemProgram>;\n  root: SetNonTransferableV2InstructionDataArgs['root'];\n  dataHash: SetNonTransferableV2InstructionDataArgs['dataHash'];\n  creatorHash: SetNonTransferableV2InstructionDataArgs['creatorHash'];\n  assetDataHash?: SetNonTransferableV2InstructionDataArgs['assetDataHash'];\n  flags?: SetNonTransferableV2InstructionDataArgs['flags'];\n  nonce: SetNonTransferableV2InstructionDataArgs['nonce'];\n  index: SetNonTransferableV2InstructionDataArgs['index'];\n  proof?: Array<Address>;\n};\n\nexport function getSetNonTransferableV2Instruction<\n  TAccountTreeConfig extends string,\n  TAccountPayer extends string,\n  TAccountAuthority extends string,\n  TAccountLeafOwner extends string,\n  TAccountLeafDelegate extends string,\n  TAccountMerkleTree extends string,\n  TAccountCoreCollection extends string,\n  TAccountLogWrapper extends string,\n  TAccountCompressionProgram extends string,\n  TAccountSystemProgram extends string,\n  TProgramAddress extends Address = typeof MPL_BUBBLEGUM_PROGRAM_ADDRESS,\n>(\n  input: SetNonTransferableV2Input<\n    TAccountTreeConfig,\n    TAccountPayer,\n    TAccountAuthority,\n    TAccountLeafOwner,\n    TAccountLeafDelegate,\n    TAccountMerkleTree,\n    TAccountCoreCollection,\n    TAccountLogWrapper,\n    TAccountCompressionProgram,\n    TAccountSystemProgram\n  >,\n  config?: { programAddress?: TProgramAddress }\n): SetNonTransferableV2Instruction<\n  TProgramAddress,\n  TAccountTreeConfig,\n  TAccountPayer,\n  TAccountAuthority,\n  TAccountLeafOwner,\n  TAccountLeafDelegate,\n  TAccountMerkleTree,\n  TAccountCoreCollection,\n  TAccountLogWrapper,\n  TAccountCompressionProgram,\n  TAccountSystemProgram\n> {\n  // Program address.\n  const programAddress =\n    config?.programAddress ?? MPL_BUBBLEGUM_PROGRAM_ADDRESS;\n\n  // Original accounts.\n  const originalAccounts = {\n    treeConfig: { value: input.treeConfig ?? null, isWritable: true },\n    payer: { value: input.payer ?? null, isWritable: true },\n    authority: { value: input.authority ?? null, isWritable: false },\n    leafOwner: { value: input.leafOwner ?? null, isWritable: false },\n    leafDelegate: { value: input.leafDelegate ?? null, isWritable: false },\n    merkleTree: { value: input.merkleTree ?? null, isWritable: true },\n    coreCollection: { value: input.coreCollection ?? null, isWritable: false },\n    logWrapper: { value: input.logWrapper ?? null, isWritable: false },\n    compressionProgram: {\n      value: input.compressionProgram ?? null,\n      isWritable: false,\n    },\n    systemProgram: { value: input.systemProgram ?? null, isWritable: false },\n  };\n  const accounts = originalAccounts as Record<\n    keyof typeof originalAccounts,\n    ResolvedAccount\n  >;\n\n  // Original args.\n  const args = { ...input };\n\n  // Resolve default values.\n  if (!accounts.logWrapper.value) {\n    accounts.logWrapper.value =\n      'mnoopTCrg4p8ry25e4bcWA9XZjbNjMTfgYVGGEdRsf3' as Address<'mnoopTCrg4p8ry25e4bcWA9XZjbNjMTfgYVGGEdRsf3'>;\n  }\n  if (!accounts.compressionProgram.value) {\n    accounts.compressionProgram.value =\n      'mcmt6YrQEMKw8Mw43FmpRLmf7BqRnFMKmAcbxE3xkAW' as Address<'mcmt6YrQEMKw8Mw43FmpRLmf7BqRnFMKmAcbxE3xkAW'>;\n  }\n  if (!accounts.systemProgram.value) {\n    accounts.systemProgram.value =\n      '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>;\n  }\n\n  // Remaining accounts.\n  const remainingAccounts: AccountMeta[] = (args.proof ?? []).map(\n    (address) => ({ address, role: AccountRole.READONLY })\n  );\n\n  const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n  return Object.freeze({\n    accounts: [\n      getAccountMeta(accounts.treeConfig),\n      getAccountMeta(accounts.payer),\n      getAccountMeta(accounts.authority),\n      getAccountMeta(accounts.leafOwner),\n      getAccountMeta(accounts.leafDelegate),\n      getAccountMeta(accounts.merkleTree),\n      getAccountMeta(accounts.coreCollection),\n      getAccountMeta(accounts.logWrapper),\n      getAccountMeta(accounts.compressionProgram),\n      getAccountMeta(accounts.systemProgram),\n      ...remainingAccounts,\n    ],\n    data: getSetNonTransferableV2InstructionDataEncoder().encode(\n      args as SetNonTransferableV2InstructionDataArgs\n    ),\n    programAddress,\n  } as SetNonTransferableV2Instruction<\n    TProgramAddress,\n    TAccountTreeConfig,\n    TAccountPayer,\n    TAccountAuthority,\n    TAccountLeafOwner,\n    TAccountLeafDelegate,\n    TAccountMerkleTree,\n    TAccountCoreCollection,\n    TAccountLogWrapper,\n    TAccountCompressionProgram,\n    TAccountSystemProgram\n  >);\n}\n\nexport type ParsedSetNonTransferableV2Instruction<\n  TProgram extends string = typeof MPL_BUBBLEGUM_PROGRAM_ADDRESS,\n  TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n  programAddress: Address<TProgram>;\n  accounts: {\n    treeConfig: TAccountMetas[0];\n    payer: TAccountMetas[1];\n    /**\n     * This authority must be a permanent freeze delegate on the collection\n     * Defaults to `payer`\n     */\n    authority?: TAccountMetas[2] | undefined;\n    leafOwner: TAccountMetas[3];\n    /** Defaults to `leaf_owner` */\n    leafDelegate?: TAccountMetas[4] | undefined;\n    merkleTree: TAccountMetas[5];\n    coreCollection: TAccountMetas[6];\n    logWrapper: TAccountMetas[7];\n    compressionProgram: TAccountMetas[8];\n    systemProgram: TAccountMetas[9];\n  };\n  data: SetNonTransferableV2InstructionData;\n};\n\nexport function parseSetNonTransferableV2Instruction<\n  TProgram extends string,\n  TAccountMetas extends readonly AccountMeta[],\n>(\n  instruction: Instruction<TProgram> &\n    InstructionWithAccounts<TAccountMetas> &\n    InstructionWithData<ReadonlyUint8Array>\n): ParsedSetNonTransferableV2Instruction<TProgram, TAccountMetas> {\n  if (instruction.accounts.length < 10) {\n    // TODO: Coded error.\n    throw new Error('Not enough accounts');\n  }\n  let accountIndex = 0;\n  const getNextAccount = () => {\n    const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n    accountIndex += 1;\n    return accountMeta;\n  };\n  const getNextOptionalAccount = () => {\n    const accountMeta = getNextAccount();\n    return accountMeta.address === MPL_BUBBLEGUM_PROGRAM_ADDRESS\n      ? undefined\n      : accountMeta;\n  };\n  return {\n    programAddress: instruction.programAddress,\n    accounts: {\n      treeConfig: getNextAccount(),\n      payer: getNextAccount(),\n      authority: getNextOptionalAccount(),\n      leafOwner: getNextAccount(),\n      leafDelegate: getNextOptionalAccount(),\n      merkleTree: getNextAccount(),\n      coreCollection: getNextAccount(),\n      logWrapper: getNextAccount(),\n      compressionProgram: getNextAccount(),\n      systemProgram: getNextAccount(),\n    },\n    data: getSetNonTransferableV2InstructionDataDecoder().decode(\n      instruction.data\n    ),\n  };\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  combineCodec,\n  fixDecoderSize,\n  fixEncoderSize,\n  getBytesDecoder,\n  getBytesEncoder,\n  getStructDecoder,\n  getStructEncoder,\n  transformEncoder,\n  type AccountMeta,\n  type AccountSignerMeta,\n  type Address,\n  type FixedSizeCodec,\n  type FixedSizeDecoder,\n  type FixedSizeEncoder,\n  type Instruction,\n  type InstructionWithAccounts,\n  type InstructionWithData,\n  type ReadonlyAccount,\n  type ReadonlySignerAccount,\n  type ReadonlyUint8Array,\n  type TransactionSigner,\n  type WritableAccount,\n} from '@solana/kit';\nimport { findTreeConfigPda } from '../pdas';\nimport { MPL_BUBBLEGUM_PROGRAM_ADDRESS } from '../programs';\nimport {\n  expectAddress,\n  getAccountMetaFactory,\n  type ResolvedAccount,\n} from '../shared';\n\nexport const SET_TREE_DELEGATE_DISCRIMINATOR = new Uint8Array([\n  253, 118, 66, 37, 190, 49, 154, 102,\n]);\n\nexport function getSetTreeDelegateDiscriminatorBytes() {\n  return fixEncoderSize(getBytesEncoder(), 8).encode(\n    SET_TREE_DELEGATE_DISCRIMINATOR\n  );\n}\n\nexport type SetTreeDelegateInstruction<\n  TProgram extends string = typeof MPL_BUBBLEGUM_PROGRAM_ADDRESS,\n  TAccountTreeConfig extends string | AccountMeta<string> = string,\n  TAccountTreeCreator extends string | AccountMeta<string> = string,\n  TAccountNewTreeDelegate extends string | AccountMeta<string> = string,\n  TAccountMerkleTree extends string | AccountMeta<string> = string,\n  TAccountSystemProgram extends\n    | string\n    | AccountMeta<string> = '11111111111111111111111111111111',\n  TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n  InstructionWithData<ReadonlyUint8Array> &\n  InstructionWithAccounts<\n    [\n      TAccountTreeConfig extends string\n        ? WritableAccount<TAccountTreeConfig>\n        : TAccountTreeConfig,\n      TAccountTreeCreator extends string\n        ? ReadonlySignerAccount<TAccountTreeCreator> &\n            AccountSignerMeta<TAccountTreeCreator>\n        : TAccountTreeCreator,\n      TAccountNewTreeDelegate extends string\n        ? ReadonlyAccount<TAccountNewTreeDelegate>\n        : TAccountNewTreeDelegate,\n      TAccountMerkleTree extends string\n        ? ReadonlyAccount<TAccountMerkleTree>\n        : TAccountMerkleTree,\n      TAccountSystemProgram extends string\n        ? ReadonlyAccount<TAccountSystemProgram>\n        : TAccountSystemProgram,\n      ...TRemainingAccounts,\n    ]\n  >;\n\nexport type SetTreeDelegateInstructionData = {\n  discriminator: ReadonlyUint8Array;\n};\n\nexport type SetTreeDelegateInstructionDataArgs = {};\n\nexport function getSetTreeDelegateInstructionDataEncoder(): FixedSizeEncoder<SetTreeDelegateInstructionDataArgs> {\n  return transformEncoder(\n    getStructEncoder([['discriminator', fixEncoderSize(getBytesEncoder(), 8)]]),\n    (value) => ({ ...value, discriminator: SET_TREE_DELEGATE_DISCRIMINATOR })\n  );\n}\n\nexport function getSetTreeDelegateInstructionDataDecoder(): FixedSizeDecoder<SetTreeDelegateInstructionData> {\n  return getStructDecoder([\n    ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n  ]);\n}\n\nexport function getSetTreeDelegateInstructionDataCodec(): FixedSizeCodec<\n  SetTreeDelegateInstructionDataArgs,\n  SetTreeDelegateInstructionData\n> {\n  return combineCodec(\n    getSetTreeDelegateInstructionDataEncoder(),\n    getSetTreeDelegateInstructionDataDecoder()\n  );\n}\n\nexport type SetTreeDelegateAsyncInput<\n  TAccountTreeConfig extends string = string,\n  TAccountTreeCreator extends string = string,\n  TAccountNewTreeDelegate extends string = string,\n  TAccountMerkleTree extends string = string,\n  TAccountSystemProgram extends string = string,\n> = {\n  treeConfig?: Address<TAccountTreeConfig>;\n  treeCreator: TransactionSigner<TAccountTreeCreator>;\n  newTreeDelegate: Address<TAccountNewTreeDelegate>;\n  merkleTree: Address<TAccountMerkleTree>;\n  systemProgram?: Address<TAccountSystemProgram>;\n};\n\nexport async function getSetTreeDelegateInstructionAsync<\n  TAccountTreeConfig extends string,\n  TAccountTreeCreator extends string,\n  TAccountNewTreeDelegate extends string,\n  TAccountMerkleTree extends string,\n  TAccountSystemProgram extends string,\n  TProgramAddress extends Address = typeof MPL_BUBBLEGUM_PROGRAM_ADDRESS,\n>(\n  input: SetTreeDelegateAsyncInput<\n    TAccountTreeConfig,\n    TAccountTreeCreator,\n    TAccountNewTreeDelegate,\n    TAccountMerkleTree,\n    TAccountSystemProgram\n  >,\n  config?: { programAddress?: TProgramAddress }\n): Promise<\n  SetTreeDelegateInstruction<\n    TProgramAddress,\n    TAccountTreeConfig,\n    TAccountTreeCreator,\n    TAccountNewTreeDelegate,\n    TAccountMerkleTree,\n    TAccountSystemProgram\n  >\n> {\n  // Program address.\n  const programAddress =\n    config?.programAddress ?? MPL_BUBBLEGUM_PROGRAM_ADDRESS;\n\n  // Original accounts.\n  const originalAccounts = {\n    treeConfig: { value: input.treeConfig ?? null, isWritable: true },\n    treeCreator: { value: input.treeCreator ?? null, isWritable: false },\n    newTreeDelegate: {\n      value: input.newTreeDelegate ?? null,\n      isWritable: false,\n    },\n    merkleTree: { value: input.merkleTree ?? null, isWritable: false },\n    systemProgram: { value: input.systemProgram ?? null, isWritable: false },\n  };\n  const accounts = originalAccounts as Record<\n    keyof typeof originalAccounts,\n    ResolvedAccount\n  >;\n\n  // Resolve default values.\n  if (!accounts.treeConfig.value) {\n    accounts.treeConfig.value = await findTreeConfigPda({\n      merkleTree: expectAddress(accounts.merkleTree.value),\n    });\n  }\n  if (!accounts.systemProgram.value) {\n    accounts.systemProgram.value =\n      '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>;\n  }\n\n  const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n  return Object.freeze({\n    accounts: [\n      getAccountMeta(accounts.treeConfig),\n      getAccountMeta(accounts.treeCreator),\n      getAccountMeta(accounts.newTreeDelegate),\n      getAccountMeta(accounts.merkleTree),\n      getAccountMeta(accounts.systemProgram),\n    ],\n    data: getSetTreeDelegateInstructionDataEncoder().encode({}),\n    programAddress,\n  } as SetTreeDelegateInstruction<\n    TProgramAddress,\n    TAccountTreeConfig,\n    TAccountTreeCreator,\n    TAccountNewTreeDelegate,\n    TAccountMerkleTree,\n    TAccountSystemProgram\n  >);\n}\n\nexport type SetTreeDelegateInput<\n  TAccountTreeConfig extends string = string,\n  TAccountTreeCreator extends string = string,\n  TAccountNewTreeDelegate extends string = string,\n  TAccountMerkleTree extends string = string,\n  TAccountSystemProgram extends string = string,\n> = {\n  treeConfig: Address<TAccountTreeConfig>;\n  treeCreator: TransactionSigner<TAccountTreeCreator>;\n  newTreeDelegate: Address<TAccountNewTreeDelegate>;\n  merkleTree: Address<TAccountMerkleTree>;\n  systemProgram?: Address<TAccountSystemProgram>;\n};\n\nexport function getSetTreeDelegateInstruction<\n  TAccountTreeConfig extends string,\n  TAccountTreeCreator extends string,\n  TAccountNewTreeDelegate extends string,\n  TAccountMerkleTree extends string,\n  TAccountSystemProgram extends string,\n  TProgramAddress extends Address = typeof MPL_BUBBLEGUM_PROGRAM_ADDRESS,\n>(\n  input: SetTreeDelegateInput<\n    TAccountTreeConfig,\n    TAccountTreeCreator,\n    TAccountNewTreeDelegate,\n    TAccountMerkleTree,\n    TAccountSystemProgram\n  >,\n  config?: { programAddress?: TProgramAddress }\n): SetTreeDelegateInstruction<\n  TProgramAddress,\n  TAccountTreeConfig,\n  TAccountTreeCreator,\n  TAccountNewTreeDelegate,\n  TAccountMerkleTree,\n  TAccountSystemProgram\n> {\n  // Program address.\n  const programAddress =\n    config?.programAddress ?? MPL_BUBBLEGUM_PROGRAM_ADDRESS;\n\n  // Original accounts.\n  const originalAccounts = {\n    treeConfig: { value: input.treeConfig ?? null, isWritable: true },\n    treeCreator: { value: input.treeCreator ?? null, isWritable: false },\n    newTreeDelegate: {\n      value: input.newTreeDelegate ?? null,\n      isWritable: false,\n    },\n    merkleTree: { value: input.merkleTree ?? null, isWritable: false },\n    systemProgram: { value: input.systemProgram ?? null, isWritable: false },\n  };\n  const accounts = originalAccounts as Record<\n    keyof typeof originalAccounts,\n    ResolvedAccount\n  >;\n\n  // Resolve default values.\n  if (!accounts.systemProgram.value) {\n    accounts.systemProgram.value =\n      '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>;\n  }\n\n  const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n  return Object.freeze({\n    accounts: [\n      getAccountMeta(accounts.treeConfig),\n      getAccountMeta(accounts.treeCreator),\n      getAccountMeta(accounts.newTreeDelegate),\n      getAccountMeta(accounts.merkleTree),\n      getAccountMeta(accounts.systemProgram),\n    ],\n    data: getSetTreeDelegateInstructionDataEncoder().encode({}),\n    programAddress,\n  } as SetTreeDelegateInstruction<\n    TProgramAddress,\n    TAccountTreeConfig,\n    TAccountTreeCreator,\n    TAccountNewTreeDelegate,\n    TAccountMerkleTree,\n    TAccountSystemProgram\n  >);\n}\n\nexport type ParsedSetTreeDelegateInstruction<\n  TProgram extends string = typeof MPL_BUBBLEGUM_PROGRAM_ADDRESS,\n  TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n  programAddress: Address<TProgram>;\n  accounts: {\n    treeConfig: TAccountMetas[0];\n    treeCreator: TAccountMetas[1];\n    newTreeDelegate: TAccountMetas[2];\n    merkleTree: TAccountMetas[3];\n    systemProgram: TAccountMetas[4];\n  };\n  data: SetTreeDelegateInstructionData;\n};\n\nexport function parseSetTreeDelegateInstruction<\n  TProgram extends string,\n  TAccountMetas extends readonly AccountMeta[],\n>(\n  instruction: Instruction<TProgram> &\n    InstructionWithAccounts<TAccountMetas> &\n    InstructionWithData<ReadonlyUint8Array>\n): ParsedSetTreeDelegateInstruction<TProgram, TAccountMetas> {\n  if (instruction.accounts.length < 5) {\n    // TODO: Coded error.\n    throw new Error('Not enough accounts');\n  }\n  let accountIndex = 0;\n  const getNextAccount = () => {\n    const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n    accountIndex += 1;\n    return accountMeta;\n  };\n  return {\n    programAddress: instruction.programAddress,\n    accounts: {\n      treeConfig: getNextAccount(),\n      treeCreator: getNextAccount(),\n      newTreeDelegate: getNextAccount(),\n      merkleTree: getNextAccount(),\n      systemProgram: getNextAccount(),\n    },\n    data: getSetTreeDelegateInstructionDataDecoder().decode(instruction.data),\n  };\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  AccountRole,\n  combineCodec,\n  fixDecoderSize,\n  fixEncoderSize,\n  getBytesDecoder,\n  getBytesEncoder,\n  getOptionDecoder,\n  getOptionEncoder,\n  getStructDecoder,\n  getStructEncoder,\n  getU32Decoder,\n  getU32Encoder,\n  getU64Decoder,\n  getU64Encoder,\n  getU8Decoder,\n  getU8Encoder,\n  none,\n  transformEncoder,\n  type AccountMeta,\n  type AccountSignerMeta,\n  type Address,\n  type Codec,\n  type Decoder,\n  type Encoder,\n  type Instruction,\n  type InstructionWithAccounts,\n  type InstructionWithData,\n  type Option,\n  type OptionOrNullable,\n  type ReadonlyAccount,\n  type ReadonlySignerAccount,\n  type ReadonlyUint8Array,\n  type TransactionSigner,\n  type WritableAccount,\n  type WritableSignerAccount,\n} from '@solana/kit';\nimport { findTreeConfigPda } from '../pdas';\nimport { MPL_BUBBLEGUM_PROGRAM_ADDRESS } from '../programs';\nimport {\n  expectAddress,\n  getAccountMetaFactory,\n  type ResolvedAccount,\n} from '../shared';\n\nexport const THAW_AND_REVOKE_V2_DISCRIMINATOR = new Uint8Array([\n  86, 214, 190, 37, 167, 4, 28, 116,\n]);\n\nexport function getThawAndRevokeV2DiscriminatorBytes() {\n  return fixEncoderSize(getBytesEncoder(), 8).encode(\n    THAW_AND_REVOKE_V2_DISCRIMINATOR\n  );\n}\n\nexport type ThawAndRevokeV2Instruction<\n  TProgram extends string = typeof MPL_BUBBLEGUM_PROGRAM_ADDRESS,\n  TAccountTreeConfig extends string | AccountMeta<string> = string,\n  TAccountPayer extends string | AccountMeta<string> = string,\n  TAccountLeafDelegate extends string | AccountMeta<string> = string,\n  TAccountLeafOwner extends string | AccountMeta<string> = string,\n  TAccountMerkleTree extends string | AccountMeta<string> = string,\n  TAccountLogWrapper extends\n    | string\n    | AccountMeta<string> = 'mnoopTCrg4p8ry25e4bcWA9XZjbNjMTfgYVGGEdRsf3',\n  TAccountCompressionProgram extends\n    | string\n    | AccountMeta<string> = 'mcmt6YrQEMKw8Mw43FmpRLmf7BqRnFMKmAcbxE3xkAW',\n  TAccountSystemProgram extends\n    | string\n    | AccountMeta<string> = '11111111111111111111111111111111',\n  TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n  InstructionWithData<ReadonlyUint8Array> &\n  InstructionWithAccounts<\n    [\n      TAccountTreeConfig extends string\n        ? WritableAccount<TAccountTreeConfig>\n        : TAccountTreeConfig,\n      TAccountPayer extends string\n        ? WritableSignerAccount<TAccountPayer> &\n            AccountSignerMeta<TAccountPayer>\n        : TAccountPayer,\n      TAccountLeafDelegate extends string\n        ? ReadonlySignerAccount<TAccountLeafDelegate> &\n            AccountSignerMeta<TAccountLeafDelegate>\n        : TAccountLeafDelegate,\n      TAccountLeafOwner extends string\n        ? ReadonlyAccount<TAccountLeafOwner>\n        : TAccountLeafOwner,\n      TAccountMerkleTree extends string\n        ? WritableAccount<TAccountMerkleTree>\n        : TAccountMerkleTree,\n      TAccountLogWrapper extends string\n        ? ReadonlyAccount<TAccountLogWrapper>\n        : TAccountLogWrapper,\n      TAccountCompressionProgram extends string\n        ? ReadonlyAccount<TAccountCompressionProgram>\n        : TAccountCompressionProgram,\n      TAccountSystemProgram extends string\n        ? ReadonlyAccount<TAccountSystemProgram>\n        : TAccountSystemProgram,\n      ...TRemainingAccounts,\n    ]\n  >;\n\nexport type ThawAndRevokeV2InstructionData = {\n  discriminator: ReadonlyUint8Array;\n  root: ReadonlyUint8Array;\n  dataHash: ReadonlyUint8Array;\n  creatorHash: ReadonlyUint8Array;\n  collectionHash: Option<ReadonlyUint8Array>;\n  assetDataHash: Option<ReadonlyUint8Array>;\n  flags: Option<number>;\n  nonce: bigint;\n  index: number;\n};\n\nexport type ThawAndRevokeV2InstructionDataArgs = {\n  root: ReadonlyUint8Array;\n  dataHash: ReadonlyUint8Array;\n  creatorHash: ReadonlyUint8Array;\n  collectionHash?: OptionOrNullable<ReadonlyUint8Array>;\n  assetDataHash?: OptionOrNullable<ReadonlyUint8Array>;\n  flags?: OptionOrNullable<number>;\n  nonce: number | bigint;\n  index: number;\n};\n\nexport function getThawAndRevokeV2InstructionDataEncoder(): Encoder<ThawAndRevokeV2InstructionDataArgs> {\n  return transformEncoder(\n    getStructEncoder([\n      ['discriminator', fixEncoderSize(getBytesEncoder(), 8)],\n      ['root', fixEncoderSize(getBytesEncoder(), 32)],\n      ['dataHash', fixEncoderSize(getBytesEncoder(), 32)],\n      ['creatorHash', fixEncoderSize(getBytesEncoder(), 32)],\n      [\n        'collectionHash',\n        getOptionEncoder(fixEncoderSize(getBytesEncoder(), 32)),\n      ],\n      [\n        'assetDataHash',\n        getOptionEncoder(fixEncoderSize(getBytesEncoder(), 32)),\n      ],\n      ['flags', getOptionEncoder(getU8Encoder())],\n      ['nonce', getU64Encoder()],\n      ['index', getU32Encoder()],\n    ]),\n    (value) => ({\n      ...value,\n      discriminator: THAW_AND_REVOKE_V2_DISCRIMINATOR,\n      collectionHash: value.collectionHash ?? none(),\n      assetDataHash: value.assetDataHash ?? none(),\n      flags: value.flags ?? none(),\n    })\n  );\n}\n\nexport function getThawAndRevokeV2InstructionDataDecoder(): Decoder<ThawAndRevokeV2InstructionData> {\n  return getStructDecoder([\n    ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n    ['root', fixDecoderSize(getBytesDecoder(), 32)],\n    ['dataHash', fixDecoderSize(getBytesDecoder(), 32)],\n    ['creatorHash', fixDecoderSize(getBytesDecoder(), 32)],\n    ['collectionHash', getOptionDecoder(fixDecoderSize(getBytesDecoder(), 32))],\n    ['assetDataHash', getOptionDecoder(fixDecoderSize(getBytesDecoder(), 32))],\n    ['flags', getOptionDecoder(getU8Decoder())],\n    ['nonce', getU64Decoder()],\n    ['index', getU32Decoder()],\n  ]);\n}\n\nexport function getThawAndRevokeV2InstructionDataCodec(): Codec<\n  ThawAndRevokeV2InstructionDataArgs,\n  ThawAndRevokeV2InstructionData\n> {\n  return combineCodec(\n    getThawAndRevokeV2InstructionDataEncoder(),\n    getThawAndRevokeV2InstructionDataDecoder()\n  );\n}\n\nexport type ThawAndRevokeV2AsyncInput<\n  TAccountTreeConfig extends string = string,\n  TAccountPayer extends string = string,\n  TAccountLeafDelegate extends string = string,\n  TAccountLeafOwner extends string = string,\n  TAccountMerkleTree extends string = string,\n  TAccountLogWrapper extends string = string,\n  TAccountCompressionProgram extends string = string,\n  TAccountSystemProgram extends string = string,\n> = {\n  treeConfig?: Address<TAccountTreeConfig>;\n  payer: TransactionSigner<TAccountPayer>;\n  /** Optional leaf delegate, defaults to `payer` */\n  leafDelegate?: TransactionSigner<TAccountLeafDelegate>;\n  leafOwner: Address<TAccountLeafOwner>;\n  merkleTree: Address<TAccountMerkleTree>;\n  logWrapper?: Address<TAccountLogWrapper>;\n  compressionProgram?: Address<TAccountCompressionProgram>;\n  systemProgram?: Address<TAccountSystemProgram>;\n  root: ThawAndRevokeV2InstructionDataArgs['root'];\n  dataHash: ThawAndRevokeV2InstructionDataArgs['dataHash'];\n  creatorHash: ThawAndRevokeV2InstructionDataArgs['creatorHash'];\n  collectionHash?: ThawAndRevokeV2InstructionDataArgs['collectionHash'];\n  assetDataHash?: ThawAndRevokeV2InstructionDataArgs['assetDataHash'];\n  flags?: ThawAndRevokeV2InstructionDataArgs['flags'];\n  nonce: ThawAndRevokeV2InstructionDataArgs['nonce'];\n  index: ThawAndRevokeV2InstructionDataArgs['index'];\n  proof?: Array<Address>;\n};\n\nexport async function getThawAndRevokeV2InstructionAsync<\n  TAccountTreeConfig extends string,\n  TAccountPayer extends string,\n  TAccountLeafDelegate extends string,\n  TAccountLeafOwner extends string,\n  TAccountMerkleTree extends string,\n  TAccountLogWrapper extends string,\n  TAccountCompressionProgram extends string,\n  TAccountSystemProgram extends string,\n  TProgramAddress extends Address = typeof MPL_BUBBLEGUM_PROGRAM_ADDRESS,\n>(\n  input: ThawAndRevokeV2AsyncInput<\n    TAccountTreeConfig,\n    TAccountPayer,\n    TAccountLeafDelegate,\n    TAccountLeafOwner,\n    TAccountMerkleTree,\n    TAccountLogWrapper,\n    TAccountCompressionProgram,\n    TAccountSystemProgram\n  >,\n  config?: { programAddress?: TProgramAddress }\n): Promise<\n  ThawAndRevokeV2Instruction<\n    TProgramAddress,\n    TAccountTreeConfig,\n    TAccountPayer,\n    TAccountLeafDelegate,\n    TAccountLeafOwner,\n    TAccountMerkleTree,\n    TAccountLogWrapper,\n    TAccountCompressionProgram,\n    TAccountSystemProgram\n  >\n> {\n  // Program address.\n  const programAddress =\n    config?.programAddress ?? MPL_BUBBLEGUM_PROGRAM_ADDRESS;\n\n  // Original accounts.\n  const originalAccounts = {\n    treeConfig: { value: input.treeConfig ?? null, isWritable: true },\n    payer: { value: input.payer ?? null, isWritable: true },\n    leafDelegate: { value: input.leafDelegate ?? null, isWritable: false },\n    leafOwner: { value: input.leafOwner ?? null, isWritable: false },\n    merkleTree: { value: input.merkleTree ?? null, isWritable: true },\n    logWrapper: { value: input.logWrapper ?? null, isWritable: false },\n    compressionProgram: {\n      value: input.compressionProgram ?? null,\n      isWritable: false,\n    },\n    systemProgram: { value: input.systemProgram ?? null, isWritable: false },\n  };\n  const accounts = originalAccounts as Record<\n    keyof typeof originalAccounts,\n    ResolvedAccount\n  >;\n\n  // Original args.\n  const args = { ...input };\n\n  // Resolve default values.\n  if (!accounts.treeConfig.value) {\n    accounts.treeConfig.value = await findTreeConfigPda({\n      merkleTree: expectAddress(accounts.merkleTree.value),\n    });\n  }\n  if (!accounts.logWrapper.value) {\n    accounts.logWrapper.value =\n      'mnoopTCrg4p8ry25e4bcWA9XZjbNjMTfgYVGGEdRsf3' as Address<'mnoopTCrg4p8ry25e4bcWA9XZjbNjMTfgYVGGEdRsf3'>;\n  }\n  if (!accounts.compressionProgram.value) {\n    accounts.compressionProgram.value =\n      'mcmt6YrQEMKw8Mw43FmpRLmf7BqRnFMKmAcbxE3xkAW' as Address<'mcmt6YrQEMKw8Mw43FmpRLmf7BqRnFMKmAcbxE3xkAW'>;\n  }\n  if (!accounts.systemProgram.value) {\n    accounts.systemProgram.value =\n      '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>;\n  }\n\n  // Remaining accounts.\n  const remainingAccounts: AccountMeta[] = (args.proof ?? []).map(\n    (address) => ({ address, role: AccountRole.READONLY })\n  );\n\n  const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n  return Object.freeze({\n    accounts: [\n      getAccountMeta(accounts.treeConfig),\n      getAccountMeta(accounts.payer),\n      getAccountMeta(accounts.leafDelegate),\n      getAccountMeta(accounts.leafOwner),\n      getAccountMeta(accounts.merkleTree),\n      getAccountMeta(accounts.logWrapper),\n      getAccountMeta(accounts.compressionProgram),\n      getAccountMeta(accounts.systemProgram),\n      ...remainingAccounts,\n    ],\n    data: getThawAndRevokeV2InstructionDataEncoder().encode(\n      args as ThawAndRevokeV2InstructionDataArgs\n    ),\n    programAddress,\n  } as ThawAndRevokeV2Instruction<\n    TProgramAddress,\n    TAccountTreeConfig,\n    TAccountPayer,\n    TAccountLeafDelegate,\n    TAccountLeafOwner,\n    TAccountMerkleTree,\n    TAccountLogWrapper,\n    TAccountCompressionProgram,\n    TAccountSystemProgram\n  >);\n}\n\nexport type ThawAndRevokeV2Input<\n  TAccountTreeConfig extends string = string,\n  TAccountPayer extends string = string,\n  TAccountLeafDelegate extends string = string,\n  TAccountLeafOwner extends string = string,\n  TAccountMerkleTree extends string = string,\n  TAccountLogWrapper extends string = string,\n  TAccountCompressionProgram extends string = string,\n  TAccountSystemProgram extends string = string,\n> = {\n  treeConfig: Address<TAccountTreeConfig>;\n  payer: TransactionSigner<TAccountPayer>;\n  /** Optional leaf delegate, defaults to `payer` */\n  leafDelegate?: TransactionSigner<TAccountLeafDelegate>;\n  leafOwner: Address<TAccountLeafOwner>;\n  merkleTree: Address<TAccountMerkleTree>;\n  logWrapper?: Address<TAccountLogWrapper>;\n  compressionProgram?: Address<TAccountCompressionProgram>;\n  systemProgram?: Address<TAccountSystemProgram>;\n  root: ThawAndRevokeV2InstructionDataArgs['root'];\n  dataHash: ThawAndRevokeV2InstructionDataArgs['dataHash'];\n  creatorHash: ThawAndRevokeV2InstructionDataArgs['creatorHash'];\n  collectionHash?: ThawAndRevokeV2InstructionDataArgs['collectionHash'];\n  assetDataHash?: ThawAndRevokeV2InstructionDataArgs['assetDataHash'];\n  flags?: ThawAndRevokeV2InstructionDataArgs['flags'];\n  nonce: ThawAndRevokeV2InstructionDataArgs['nonce'];\n  index: ThawAndRevokeV2InstructionDataArgs['index'];\n  proof?: Array<Address>;\n};\n\nexport function getThawAndRevokeV2Instruction<\n  TAccountTreeConfig extends string,\n  TAccountPayer extends string,\n  TAccountLeafDelegate extends string,\n  TAccountLeafOwner extends string,\n  TAccountMerkleTree extends string,\n  TAccountLogWrapper extends string,\n  TAccountCompressionProgram extends string,\n  TAccountSystemProgram extends string,\n  TProgramAddress extends Address = typeof MPL_BUBBLEGUM_PROGRAM_ADDRESS,\n>(\n  input: ThawAndRevokeV2Input<\n    TAccountTreeConfig,\n    TAccountPayer,\n    TAccountLeafDelegate,\n    TAccountLeafOwner,\n    TAccountMerkleTree,\n    TAccountLogWrapper,\n    TAccountCompressionProgram,\n    TAccountSystemProgram\n  >,\n  config?: { programAddress?: TProgramAddress }\n): ThawAndRevokeV2Instruction<\n  TProgramAddress,\n  TAccountTreeConfig,\n  TAccountPayer,\n  TAccountLeafDelegate,\n  TAccountLeafOwner,\n  TAccountMerkleTree,\n  TAccountLogWrapper,\n  TAccountCompressionProgram,\n  TAccountSystemProgram\n> {\n  // Program address.\n  const programAddress =\n    config?.programAddress ?? MPL_BUBBLEGUM_PROGRAM_ADDRESS;\n\n  // Original accounts.\n  const originalAccounts = {\n    treeConfig: { value: input.treeConfig ?? null, isWritable: true },\n    payer: { value: input.payer ?? null, isWritable: true },\n    leafDelegate: { value: input.leafDelegate ?? null, isWritable: false },\n    leafOwner: { value: input.leafOwner ?? null, isWritable: false },\n    merkleTree: { value: input.merkleTree ?? null, isWritable: true },\n    logWrapper: { value: input.logWrapper ?? null, isWritable: false },\n    compressionProgram: {\n      value: input.compressionProgram ?? null,\n      isWritable: false,\n    },\n    systemProgram: { value: input.systemProgram ?? null, isWritable: false },\n  };\n  const accounts = originalAccounts as Record<\n    keyof typeof originalAccounts,\n    ResolvedAccount\n  >;\n\n  // Original args.\n  const args = { ...input };\n\n  // Resolve default values.\n  if (!accounts.logWrapper.value) {\n    accounts.logWrapper.value =\n      'mnoopTCrg4p8ry25e4bcWA9XZjbNjMTfgYVGGEdRsf3' as Address<'mnoopTCrg4p8ry25e4bcWA9XZjbNjMTfgYVGGEdRsf3'>;\n  }\n  if (!accounts.compressionProgram.value) {\n    accounts.compressionProgram.value =\n      'mcmt6YrQEMKw8Mw43FmpRLmf7BqRnFMKmAcbxE3xkAW' as Address<'mcmt6YrQEMKw8Mw43FmpRLmf7BqRnFMKmAcbxE3xkAW'>;\n  }\n  if (!accounts.systemProgram.value) {\n    accounts.systemProgram.value =\n      '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>;\n  }\n\n  // Remaining accounts.\n  const remainingAccounts: AccountMeta[] = (args.proof ?? []).map(\n    (address) => ({ address, role: AccountRole.READONLY })\n  );\n\n  const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n  return Object.freeze({\n    accounts: [\n      getAccountMeta(accounts.treeConfig),\n      getAccountMeta(accounts.payer),\n      getAccountMeta(accounts.leafDelegate),\n      getAccountMeta(accounts.leafOwner),\n      getAccountMeta(accounts.merkleTree),\n      getAccountMeta(accounts.logWrapper),\n      getAccountMeta(accounts.compressionProgram),\n      getAccountMeta(accounts.systemProgram),\n      ...remainingAccounts,\n    ],\n    data: getThawAndRevokeV2InstructionDataEncoder().encode(\n      args as ThawAndRevokeV2InstructionDataArgs\n    ),\n    programAddress,\n  } as ThawAndRevokeV2Instruction<\n    TProgramAddress,\n    TAccountTreeConfig,\n    TAccountPayer,\n    TAccountLeafDelegate,\n    TAccountLeafOwner,\n    TAccountMerkleTree,\n    TAccountLogWrapper,\n    TAccountCompressionProgram,\n    TAccountSystemProgram\n  >);\n}\n\nexport type ParsedThawAndRevokeV2Instruction<\n  TProgram extends string = typeof MPL_BUBBLEGUM_PROGRAM_ADDRESS,\n  TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n  programAddress: Address<TProgram>;\n  accounts: {\n    treeConfig: TAccountMetas[0];\n    payer: TAccountMetas[1];\n    /** Optional leaf delegate, defaults to `payer` */\n    leafDelegate?: TAccountMetas[2] | undefined;\n    leafOwner: TAccountMetas[3];\n    merkleTree: TAccountMetas[4];\n    logWrapper: TAccountMetas[5];\n    compressionProgram: TAccountMetas[6];\n    systemProgram: TAccountMetas[7];\n  };\n  data: ThawAndRevokeV2InstructionData;\n};\n\nexport function parseThawAndRevokeV2Instruction<\n  TProgram extends string,\n  TAccountMetas extends readonly AccountMeta[],\n>(\n  instruction: Instruction<TProgram> &\n    InstructionWithAccounts<TAccountMetas> &\n    InstructionWithData<ReadonlyUint8Array>\n): ParsedThawAndRevokeV2Instruction<TProgram, TAccountMetas> {\n  if (instruction.accounts.length < 8) {\n    // TODO: Coded error.\n    throw new Error('Not enough accounts');\n  }\n  let accountIndex = 0;\n  const getNextAccount = () => {\n    const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n    accountIndex += 1;\n    return accountMeta;\n  };\n  const getNextOptionalAccount = () => {\n    const accountMeta = getNextAccount();\n    return accountMeta.address === MPL_BUBBLEGUM_PROGRAM_ADDRESS\n      ? undefined\n      : accountMeta;\n  };\n  return {\n    programAddress: instruction.programAddress,\n    accounts: {\n      treeConfig: getNextAccount(),\n      payer: getNextAccount(),\n      leafDelegate: getNextOptionalAccount(),\n      leafOwner: getNextAccount(),\n      merkleTree: getNextAccount(),\n      logWrapper: getNextAccount(),\n      compressionProgram: getNextAccount(),\n      systemProgram: getNextAccount(),\n    },\n    data: getThawAndRevokeV2InstructionDataDecoder().decode(instruction.data),\n  };\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  AccountRole,\n  combineCodec,\n  fixDecoderSize,\n  fixEncoderSize,\n  getBytesDecoder,\n  getBytesEncoder,\n  getOptionDecoder,\n  getOptionEncoder,\n  getStructDecoder,\n  getStructEncoder,\n  getU32Decoder,\n  getU32Encoder,\n  getU64Decoder,\n  getU64Encoder,\n  getU8Decoder,\n  getU8Encoder,\n  none,\n  transformEncoder,\n  type AccountMeta,\n  type AccountSignerMeta,\n  type Address,\n  type Codec,\n  type Decoder,\n  type Encoder,\n  type Instruction,\n  type InstructionWithAccounts,\n  type InstructionWithData,\n  type Option,\n  type OptionOrNullable,\n  type ReadonlyAccount,\n  type ReadonlySignerAccount,\n  type ReadonlyUint8Array,\n  type TransactionSigner,\n  type WritableAccount,\n  type WritableSignerAccount,\n} from '@solana/kit';\nimport { findTreeConfigPda } from '../pdas';\nimport { MPL_BUBBLEGUM_PROGRAM_ADDRESS } from '../programs';\nimport {\n  expectAddress,\n  getAccountMetaFactory,\n  type ResolvedAccount,\n} from '../shared';\n\nexport const THAW_V2_DISCRIMINATOR = new Uint8Array([\n  96, 133, 101, 93, 82, 220, 146, 191,\n]);\n\nexport function getThawV2DiscriminatorBytes() {\n  return fixEncoderSize(getBytesEncoder(), 8).encode(THAW_V2_DISCRIMINATOR);\n}\n\nexport type ThawV2Instruction<\n  TProgram extends string = typeof MPL_BUBBLEGUM_PROGRAM_ADDRESS,\n  TAccountTreeConfig extends string | AccountMeta<string> = string,\n  TAccountPayer extends string | AccountMeta<string> = string,\n  TAccountAuthority extends string | AccountMeta<string> = string,\n  TAccountLeafOwner extends string | AccountMeta<string> = string,\n  TAccountLeafDelegate extends string | AccountMeta<string> = string,\n  TAccountMerkleTree extends string | AccountMeta<string> = string,\n  TAccountCoreCollection extends string | AccountMeta<string> = string,\n  TAccountLogWrapper extends\n    | string\n    | AccountMeta<string> = 'mnoopTCrg4p8ry25e4bcWA9XZjbNjMTfgYVGGEdRsf3',\n  TAccountCompressionProgram extends\n    | string\n    | AccountMeta<string> = 'mcmt6YrQEMKw8Mw43FmpRLmf7BqRnFMKmAcbxE3xkAW',\n  TAccountSystemProgram extends\n    | string\n    | AccountMeta<string> = '11111111111111111111111111111111',\n  TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n  InstructionWithData<ReadonlyUint8Array> &\n  InstructionWithAccounts<\n    [\n      TAccountTreeConfig extends string\n        ? WritableAccount<TAccountTreeConfig>\n        : TAccountTreeConfig,\n      TAccountPayer extends string\n        ? WritableSignerAccount<TAccountPayer> &\n            AccountSignerMeta<TAccountPayer>\n        : TAccountPayer,\n      TAccountAuthority extends string\n        ? ReadonlySignerAccount<TAccountAuthority> &\n            AccountSignerMeta<TAccountAuthority>\n        : TAccountAuthority,\n      TAccountLeafOwner extends string\n        ? ReadonlyAccount<TAccountLeafOwner>\n        : TAccountLeafOwner,\n      TAccountLeafDelegate extends string\n        ? ReadonlyAccount<TAccountLeafDelegate>\n        : TAccountLeafDelegate,\n      TAccountMerkleTree extends string\n        ? WritableAccount<TAccountMerkleTree>\n        : TAccountMerkleTree,\n      TAccountCoreCollection extends string\n        ? ReadonlyAccount<TAccountCoreCollection>\n        : TAccountCoreCollection,\n      TAccountLogWrapper extends string\n        ? ReadonlyAccount<TAccountLogWrapper>\n        : TAccountLogWrapper,\n      TAccountCompressionProgram extends string\n        ? ReadonlyAccount<TAccountCompressionProgram>\n        : TAccountCompressionProgram,\n      TAccountSystemProgram extends string\n        ? ReadonlyAccount<TAccountSystemProgram>\n        : TAccountSystemProgram,\n      ...TRemainingAccounts,\n    ]\n  >;\n\nexport type ThawV2InstructionData = {\n  discriminator: ReadonlyUint8Array;\n  root: ReadonlyUint8Array;\n  dataHash: ReadonlyUint8Array;\n  creatorHash: ReadonlyUint8Array;\n  assetDataHash: Option<ReadonlyUint8Array>;\n  flags: Option<number>;\n  nonce: bigint;\n  index: number;\n};\n\nexport type ThawV2InstructionDataArgs = {\n  root: ReadonlyUint8Array;\n  dataHash: ReadonlyUint8Array;\n  creatorHash: ReadonlyUint8Array;\n  assetDataHash?: OptionOrNullable<ReadonlyUint8Array>;\n  flags?: OptionOrNullable<number>;\n  nonce: number | bigint;\n  index: number;\n};\n\nexport function getThawV2InstructionDataEncoder(): Encoder<ThawV2InstructionDataArgs> {\n  return transformEncoder(\n    getStructEncoder([\n      ['discriminator', fixEncoderSize(getBytesEncoder(), 8)],\n      ['root', fixEncoderSize(getBytesEncoder(), 32)],\n      ['dataHash', fixEncoderSize(getBytesEncoder(), 32)],\n      ['creatorHash', fixEncoderSize(getBytesEncoder(), 32)],\n      [\n        'assetDataHash',\n        getOptionEncoder(fixEncoderSize(getBytesEncoder(), 32)),\n      ],\n      ['flags', getOptionEncoder(getU8Encoder())],\n      ['nonce', getU64Encoder()],\n      ['index', getU32Encoder()],\n    ]),\n    (value) => ({\n      ...value,\n      discriminator: THAW_V2_DISCRIMINATOR,\n      assetDataHash: value.assetDataHash ?? none(),\n      flags: value.flags ?? none(),\n    })\n  );\n}\n\nexport function getThawV2InstructionDataDecoder(): Decoder<ThawV2InstructionData> {\n  return getStructDecoder([\n    ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n    ['root', fixDecoderSize(getBytesDecoder(), 32)],\n    ['dataHash', fixDecoderSize(getBytesDecoder(), 32)],\n    ['creatorHash', fixDecoderSize(getBytesDecoder(), 32)],\n    ['assetDataHash', getOptionDecoder(fixDecoderSize(getBytesDecoder(), 32))],\n    ['flags', getOptionDecoder(getU8Decoder())],\n    ['nonce', getU64Decoder()],\n    ['index', getU32Decoder()],\n  ]);\n}\n\nexport function getThawV2InstructionDataCodec(): Codec<\n  ThawV2InstructionDataArgs,\n  ThawV2InstructionData\n> {\n  return combineCodec(\n    getThawV2InstructionDataEncoder(),\n    getThawV2InstructionDataDecoder()\n  );\n}\n\nexport type ThawV2AsyncInput<\n  TAccountTreeConfig extends string = string,\n  TAccountPayer extends string = string,\n  TAccountAuthority extends string = string,\n  TAccountLeafOwner extends string = string,\n  TAccountLeafDelegate extends string = string,\n  TAccountMerkleTree extends string = string,\n  TAccountCoreCollection extends string = string,\n  TAccountLogWrapper extends string = string,\n  TAccountCompressionProgram extends string = string,\n  TAccountSystemProgram extends string = string,\n> = {\n  treeConfig?: Address<TAccountTreeConfig>;\n  payer: TransactionSigner<TAccountPayer>;\n  /**\n   * Optional authority, defaults to `payer`.  Must be either\n   * the leaf delegate or collection permanent freeze delegate.\n   */\n  authority?: TransactionSigner<TAccountAuthority>;\n  leafOwner: Address<TAccountLeafOwner>;\n  leafDelegate: Address<TAccountLeafDelegate>;\n  merkleTree: Address<TAccountMerkleTree>;\n  coreCollection?: Address<TAccountCoreCollection>;\n  logWrapper?: Address<TAccountLogWrapper>;\n  compressionProgram?: Address<TAccountCompressionProgram>;\n  systemProgram?: Address<TAccountSystemProgram>;\n  root: ThawV2InstructionDataArgs['root'];\n  dataHash: ThawV2InstructionDataArgs['dataHash'];\n  creatorHash: ThawV2InstructionDataArgs['creatorHash'];\n  assetDataHash?: ThawV2InstructionDataArgs['assetDataHash'];\n  flags?: ThawV2InstructionDataArgs['flags'];\n  nonce: ThawV2InstructionDataArgs['nonce'];\n  index: ThawV2InstructionDataArgs['index'];\n  proof?: Array<Address>;\n};\n\nexport async function getThawV2InstructionAsync<\n  TAccountTreeConfig extends string,\n  TAccountPayer extends string,\n  TAccountAuthority extends string,\n  TAccountLeafOwner extends string,\n  TAccountLeafDelegate extends string,\n  TAccountMerkleTree extends string,\n  TAccountCoreCollection extends string,\n  TAccountLogWrapper extends string,\n  TAccountCompressionProgram extends string,\n  TAccountSystemProgram extends string,\n  TProgramAddress extends Address = typeof MPL_BUBBLEGUM_PROGRAM_ADDRESS,\n>(\n  input: ThawV2AsyncInput<\n    TAccountTreeConfig,\n    TAccountPayer,\n    TAccountAuthority,\n    TAccountLeafOwner,\n    TAccountLeafDelegate,\n    TAccountMerkleTree,\n    TAccountCoreCollection,\n    TAccountLogWrapper,\n    TAccountCompressionProgram,\n    TAccountSystemProgram\n  >,\n  config?: { programAddress?: TProgramAddress }\n): Promise<\n  ThawV2Instruction<\n    TProgramAddress,\n    TAccountTreeConfig,\n    TAccountPayer,\n    TAccountAuthority,\n    TAccountLeafOwner,\n    TAccountLeafDelegate,\n    TAccountMerkleTree,\n    TAccountCoreCollection,\n    TAccountLogWrapper,\n    TAccountCompressionProgram,\n    TAccountSystemProgram\n  >\n> {\n  // Program address.\n  const programAddress =\n    config?.programAddress ?? MPL_BUBBLEGUM_PROGRAM_ADDRESS;\n\n  // Original accounts.\n  const originalAccounts = {\n    treeConfig: { value: input.treeConfig ?? null, isWritable: true },\n    payer: { value: input.payer ?? null, isWritable: true },\n    authority: { value: input.authority ?? null, isWritable: false },\n    leafOwner: { value: input.leafOwner ?? null, isWritable: false },\n    leafDelegate: { value: input.leafDelegate ?? null, isWritable: false },\n    merkleTree: { value: input.merkleTree ?? null, isWritable: true },\n    coreCollection: { value: input.coreCollection ?? null, isWritable: false },\n    logWrapper: { value: input.logWrapper ?? null, isWritable: false },\n    compressionProgram: {\n      value: input.compressionProgram ?? null,\n      isWritable: false,\n    },\n    systemProgram: { value: input.systemProgram ?? null, isWritable: false },\n  };\n  const accounts = originalAccounts as Record<\n    keyof typeof originalAccounts,\n    ResolvedAccount\n  >;\n\n  // Original args.\n  const args = { ...input };\n\n  // Resolve default values.\n  if (!accounts.treeConfig.value) {\n    accounts.treeConfig.value = await findTreeConfigPda({\n      merkleTree: expectAddress(accounts.merkleTree.value),\n    });\n  }\n  if (!accounts.logWrapper.value) {\n    accounts.logWrapper.value =\n      'mnoopTCrg4p8ry25e4bcWA9XZjbNjMTfgYVGGEdRsf3' as Address<'mnoopTCrg4p8ry25e4bcWA9XZjbNjMTfgYVGGEdRsf3'>;\n  }\n  if (!accounts.compressionProgram.value) {\n    accounts.compressionProgram.value =\n      'mcmt6YrQEMKw8Mw43FmpRLmf7BqRnFMKmAcbxE3xkAW' as Address<'mcmt6YrQEMKw8Mw43FmpRLmf7BqRnFMKmAcbxE3xkAW'>;\n  }\n  if (!accounts.systemProgram.value) {\n    accounts.systemProgram.value =\n      '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>;\n  }\n\n  // Remaining accounts.\n  const remainingAccounts: AccountMeta[] = (args.proof ?? []).map(\n    (address) => ({ address, role: AccountRole.READONLY })\n  );\n\n  const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n  return Object.freeze({\n    accounts: [\n      getAccountMeta(accounts.treeConfig),\n      getAccountMeta(accounts.payer),\n      getAccountMeta(accounts.authority),\n      getAccountMeta(accounts.leafOwner),\n      getAccountMeta(accounts.leafDelegate),\n      getAccountMeta(accounts.merkleTree),\n      getAccountMeta(accounts.coreCollection),\n      getAccountMeta(accounts.logWrapper),\n      getAccountMeta(accounts.compressionProgram),\n      getAccountMeta(accounts.systemProgram),\n      ...remainingAccounts,\n    ],\n    data: getThawV2InstructionDataEncoder().encode(\n      args as ThawV2InstructionDataArgs\n    ),\n    programAddress,\n  } as ThawV2Instruction<\n    TProgramAddress,\n    TAccountTreeConfig,\n    TAccountPayer,\n    TAccountAuthority,\n    TAccountLeafOwner,\n    TAccountLeafDelegate,\n    TAccountMerkleTree,\n    TAccountCoreCollection,\n    TAccountLogWrapper,\n    TAccountCompressionProgram,\n    TAccountSystemProgram\n  >);\n}\n\nexport type ThawV2Input<\n  TAccountTreeConfig extends string = string,\n  TAccountPayer extends string = string,\n  TAccountAuthority extends string = string,\n  TAccountLeafOwner extends string = string,\n  TAccountLeafDelegate extends string = string,\n  TAccountMerkleTree extends string = string,\n  TAccountCoreCollection extends string = string,\n  TAccountLogWrapper extends string = string,\n  TAccountCompressionProgram extends string = string,\n  TAccountSystemProgram extends string = string,\n> = {\n  treeConfig: Address<TAccountTreeConfig>;\n  payer: TransactionSigner<TAccountPayer>;\n  /**\n   * Optional authority, defaults to `payer`.  Must be either\n   * the leaf delegate or collection permanent freeze delegate.\n   */\n  authority?: TransactionSigner<TAccountAuthority>;\n  leafOwner: Address<TAccountLeafOwner>;\n  leafDelegate: Address<TAccountLeafDelegate>;\n  merkleTree: Address<TAccountMerkleTree>;\n  coreCollection?: Address<TAccountCoreCollection>;\n  logWrapper?: Address<TAccountLogWrapper>;\n  compressionProgram?: Address<TAccountCompressionProgram>;\n  systemProgram?: Address<TAccountSystemProgram>;\n  root: ThawV2InstructionDataArgs['root'];\n  dataHash: ThawV2InstructionDataArgs['dataHash'];\n  creatorHash: ThawV2InstructionDataArgs['creatorHash'];\n  assetDataHash?: ThawV2InstructionDataArgs['assetDataHash'];\n  flags?: ThawV2InstructionDataArgs['flags'];\n  nonce: ThawV2InstructionDataArgs['nonce'];\n  index: ThawV2InstructionDataArgs['index'];\n  proof?: Array<Address>;\n};\n\nexport function getThawV2Instruction<\n  TAccountTreeConfig extends string,\n  TAccountPayer extends string,\n  TAccountAuthority extends string,\n  TAccountLeafOwner extends string,\n  TAccountLeafDelegate extends string,\n  TAccountMerkleTree extends string,\n  TAccountCoreCollection extends string,\n  TAccountLogWrapper extends string,\n  TAccountCompressionProgram extends string,\n  TAccountSystemProgram extends string,\n  TProgramAddress extends Address = typeof MPL_BUBBLEGUM_PROGRAM_ADDRESS,\n>(\n  input: ThawV2Input<\n    TAccountTreeConfig,\n    TAccountPayer,\n    TAccountAuthority,\n    TAccountLeafOwner,\n    TAccountLeafDelegate,\n    TAccountMerkleTree,\n    TAccountCoreCollection,\n    TAccountLogWrapper,\n    TAccountCompressionProgram,\n    TAccountSystemProgram\n  >,\n  config?: { programAddress?: TProgramAddress }\n): ThawV2Instruction<\n  TProgramAddress,\n  TAccountTreeConfig,\n  TAccountPayer,\n  TAccountAuthority,\n  TAccountLeafOwner,\n  TAccountLeafDelegate,\n  TAccountMerkleTree,\n  TAccountCoreCollection,\n  TAccountLogWrapper,\n  TAccountCompressionProgram,\n  TAccountSystemProgram\n> {\n  // Program address.\n  const programAddress =\n    config?.programAddress ?? MPL_BUBBLEGUM_PROGRAM_ADDRESS;\n\n  // Original accounts.\n  const originalAccounts = {\n    treeConfig: { value: input.treeConfig ?? null, isWritable: true },\n    payer: { value: input.payer ?? null, isWritable: true },\n    authority: { value: input.authority ?? null, isWritable: false },\n    leafOwner: { value: input.leafOwner ?? null, isWritable: false },\n    leafDelegate: { value: input.leafDelegate ?? null, isWritable: false },\n    merkleTree: { value: input.merkleTree ?? null, isWritable: true },\n    coreCollection: { value: input.coreCollection ?? null, isWritable: false },\n    logWrapper: { value: input.logWrapper ?? null, isWritable: false },\n    compressionProgram: {\n      value: input.compressionProgram ?? null,\n      isWritable: false,\n    },\n    systemProgram: { value: input.systemProgram ?? null, isWritable: false },\n  };\n  const accounts = originalAccounts as Record<\n    keyof typeof originalAccounts,\n    ResolvedAccount\n  >;\n\n  // Original args.\n  const args = { ...input };\n\n  // Resolve default values.\n  if (!accounts.logWrapper.value) {\n    accounts.logWrapper.value =\n      'mnoopTCrg4p8ry25e4bcWA9XZjbNjMTfgYVGGEdRsf3' as Address<'mnoopTCrg4p8ry25e4bcWA9XZjbNjMTfgYVGGEdRsf3'>;\n  }\n  if (!accounts.compressionProgram.value) {\n    accounts.compressionProgram.value =\n      'mcmt6YrQEMKw8Mw43FmpRLmf7BqRnFMKmAcbxE3xkAW' as Address<'mcmt6YrQEMKw8Mw43FmpRLmf7BqRnFMKmAcbxE3xkAW'>;\n  }\n  if (!accounts.systemProgram.value) {\n    accounts.systemProgram.value =\n      '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>;\n  }\n\n  // Remaining accounts.\n  const remainingAccounts: AccountMeta[] = (args.proof ?? []).map(\n    (address) => ({ address, role: AccountRole.READONLY })\n  );\n\n  const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n  return Object.freeze({\n    accounts: [\n      getAccountMeta(accounts.treeConfig),\n      getAccountMeta(accounts.payer),\n      getAccountMeta(accounts.authority),\n      getAccountMeta(accounts.leafOwner),\n      getAccountMeta(accounts.leafDelegate),\n      getAccountMeta(accounts.merkleTree),\n      getAccountMeta(accounts.coreCollection),\n      getAccountMeta(accounts.logWrapper),\n      getAccountMeta(accounts.compressionProgram),\n      getAccountMeta(accounts.systemProgram),\n      ...remainingAccounts,\n    ],\n    data: getThawV2InstructionDataEncoder().encode(\n      args as ThawV2InstructionDataArgs\n    ),\n    programAddress,\n  } as ThawV2Instruction<\n    TProgramAddress,\n    TAccountTreeConfig,\n    TAccountPayer,\n    TAccountAuthority,\n    TAccountLeafOwner,\n    TAccountLeafDelegate,\n    TAccountMerkleTree,\n    TAccountCoreCollection,\n    TAccountLogWrapper,\n    TAccountCompressionProgram,\n    TAccountSystemProgram\n  >);\n}\n\nexport type ParsedThawV2Instruction<\n  TProgram extends string = typeof MPL_BUBBLEGUM_PROGRAM_ADDRESS,\n  TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n  programAddress: Address<TProgram>;\n  accounts: {\n    treeConfig: TAccountMetas[0];\n    payer: TAccountMetas[1];\n    /**\n     * Optional authority, defaults to `payer`.  Must be either\n     * the leaf delegate or collection permanent freeze delegate.\n     */\n    authority?: TAccountMetas[2] | undefined;\n    leafOwner: TAccountMetas[3];\n    leafDelegate: TAccountMetas[4];\n    merkleTree: TAccountMetas[5];\n    coreCollection?: TAccountMetas[6] | undefined;\n    logWrapper: TAccountMetas[7];\n    compressionProgram: TAccountMetas[8];\n    systemProgram: TAccountMetas[9];\n  };\n  data: ThawV2InstructionData;\n};\n\nexport function parseThawV2Instruction<\n  TProgram extends string,\n  TAccountMetas extends readonly AccountMeta[],\n>(\n  instruction: Instruction<TProgram> &\n    InstructionWithAccounts<TAccountMetas> &\n    InstructionWithData<ReadonlyUint8Array>\n): ParsedThawV2Instruction<TProgram, TAccountMetas> {\n  if (instruction.accounts.length < 10) {\n    // TODO: Coded error.\n    throw new Error('Not enough accounts');\n  }\n  let accountIndex = 0;\n  const getNextAccount = () => {\n    const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n    accountIndex += 1;\n    return accountMeta;\n  };\n  const getNextOptionalAccount = () => {\n    const accountMeta = getNextAccount();\n    return accountMeta.address === MPL_BUBBLEGUM_PROGRAM_ADDRESS\n      ? undefined\n      : accountMeta;\n  };\n  return {\n    programAddress: instruction.programAddress,\n    accounts: {\n      treeConfig: getNextAccount(),\n      payer: getNextAccount(),\n      authority: getNextOptionalAccount(),\n      leafOwner: getNextAccount(),\n      leafDelegate: getNextAccount(),\n      merkleTree: getNextAccount(),\n      coreCollection: getNextOptionalAccount(),\n      logWrapper: getNextAccount(),\n      compressionProgram: getNextAccount(),\n      systemProgram: getNextAccount(),\n    },\n    data: getThawV2InstructionDataDecoder().decode(instruction.data),\n  };\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  AccountRole,\n  combineCodec,\n  fixDecoderSize,\n  fixEncoderSize,\n  getBytesDecoder,\n  getBytesEncoder,\n  getStructDecoder,\n  getStructEncoder,\n  getU32Decoder,\n  getU32Encoder,\n  getU64Decoder,\n  getU64Encoder,\n  transformEncoder,\n  type AccountMeta,\n  type AccountSignerMeta,\n  type Address,\n  type FixedSizeCodec,\n  type FixedSizeDecoder,\n  type FixedSizeEncoder,\n  type Instruction,\n  type InstructionWithAccounts,\n  type InstructionWithData,\n  type ReadonlyAccount,\n  type ReadonlySignerAccount,\n  type ReadonlyUint8Array,\n  type TransactionSigner,\n  type WritableAccount,\n} from '@solana/kit';\nimport { findTreeConfigPda } from '../pdas';\nimport { MPL_BUBBLEGUM_PROGRAM_ADDRESS } from '../programs';\nimport {\n  expectAddress,\n  expectSome,\n  getAccountMetaFactory,\n  type ResolvedAccount,\n} from '../shared';\n\nexport const TRANSFER_DISCRIMINATOR = new Uint8Array([\n  163, 52, 200, 231, 140, 3, 69, 186,\n]);\n\nexport function getTransferDiscriminatorBytes() {\n  return fixEncoderSize(getBytesEncoder(), 8).encode(TRANSFER_DISCRIMINATOR);\n}\n\nexport type TransferInstruction<\n  TProgram extends string = typeof MPL_BUBBLEGUM_PROGRAM_ADDRESS,\n  TAccountTreeConfig extends string | AccountMeta<string> = string,\n  TAccountLeafOwner extends string | AccountMeta<string> = string,\n  TAccountLeafDelegate extends string | AccountMeta<string> = string,\n  TAccountNewLeafOwner extends string | AccountMeta<string> = string,\n  TAccountMerkleTree extends string | AccountMeta<string> = string,\n  TAccountLogWrapper extends\n    | string\n    | AccountMeta<string> = 'noopb9bkMVfRPU8AsbpTUg8AQkHtKwMYZiFUjNRtMmV',\n  TAccountCompressionProgram extends\n    | string\n    | AccountMeta<string> = 'cmtDvXumGCrqC1Age74AVPhSRVXJMd8PJS91L8KbNCK',\n  TAccountSystemProgram extends\n    | string\n    | AccountMeta<string> = '11111111111111111111111111111111',\n  TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n  InstructionWithData<ReadonlyUint8Array> &\n  InstructionWithAccounts<\n    [\n      TAccountTreeConfig extends string\n        ? ReadonlyAccount<TAccountTreeConfig>\n        : TAccountTreeConfig,\n      TAccountLeafOwner extends string\n        ? ReadonlyAccount<TAccountLeafOwner>\n        : TAccountLeafOwner,\n      TAccountLeafDelegate extends string\n        ? ReadonlyAccount<TAccountLeafDelegate>\n        : TAccountLeafDelegate,\n      TAccountNewLeafOwner extends string\n        ? ReadonlyAccount<TAccountNewLeafOwner>\n        : TAccountNewLeafOwner,\n      TAccountMerkleTree extends string\n        ? WritableAccount<TAccountMerkleTree>\n        : TAccountMerkleTree,\n      TAccountLogWrapper extends string\n        ? ReadonlyAccount<TAccountLogWrapper>\n        : TAccountLogWrapper,\n      TAccountCompressionProgram extends string\n        ? ReadonlyAccount<TAccountCompressionProgram>\n        : TAccountCompressionProgram,\n      TAccountSystemProgram extends string\n        ? ReadonlyAccount<TAccountSystemProgram>\n        : TAccountSystemProgram,\n      ...TRemainingAccounts,\n    ]\n  >;\n\nexport type TransferInstructionData = {\n  discriminator: ReadonlyUint8Array;\n  root: ReadonlyUint8Array;\n  dataHash: ReadonlyUint8Array;\n  creatorHash: ReadonlyUint8Array;\n  nonce: bigint;\n  index: number;\n};\n\nexport type TransferInstructionDataArgs = {\n  root: ReadonlyUint8Array;\n  dataHash: ReadonlyUint8Array;\n  creatorHash: ReadonlyUint8Array;\n  nonce: number | bigint;\n  index: number;\n};\n\nexport function getTransferInstructionDataEncoder(): FixedSizeEncoder<TransferInstructionDataArgs> {\n  return transformEncoder(\n    getStructEncoder([\n      ['discriminator', fixEncoderSize(getBytesEncoder(), 8)],\n      ['root', fixEncoderSize(getBytesEncoder(), 32)],\n      ['dataHash', fixEncoderSize(getBytesEncoder(), 32)],\n      ['creatorHash', fixEncoderSize(getBytesEncoder(), 32)],\n      ['nonce', getU64Encoder()],\n      ['index', getU32Encoder()],\n    ]),\n    (value) => ({ ...value, discriminator: TRANSFER_DISCRIMINATOR })\n  );\n}\n\nexport function getTransferInstructionDataDecoder(): FixedSizeDecoder<TransferInstructionData> {\n  return getStructDecoder([\n    ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n    ['root', fixDecoderSize(getBytesDecoder(), 32)],\n    ['dataHash', fixDecoderSize(getBytesDecoder(), 32)],\n    ['creatorHash', fixDecoderSize(getBytesDecoder(), 32)],\n    ['nonce', getU64Decoder()],\n    ['index', getU32Decoder()],\n  ]);\n}\n\nexport function getTransferInstructionDataCodec(): FixedSizeCodec<\n  TransferInstructionDataArgs,\n  TransferInstructionData\n> {\n  return combineCodec(\n    getTransferInstructionDataEncoder(),\n    getTransferInstructionDataDecoder()\n  );\n}\n\nexport type TransferAsyncInput<\n  TAccountTreeConfig extends string = string,\n  TAccountLeafOwner extends string = string,\n  TAccountLeafDelegate extends string = string,\n  TAccountNewLeafOwner extends string = string,\n  TAccountMerkleTree extends string = string,\n  TAccountLogWrapper extends string = string,\n  TAccountCompressionProgram extends string = string,\n  TAccountSystemProgram extends string = string,\n> = {\n  treeConfig?: Address<TAccountTreeConfig>;\n  leafOwner: Address<TAccountLeafOwner> | TransactionSigner<TAccountLeafOwner>;\n  leafDelegate?:\n    | Address<TAccountLeafDelegate>\n    | TransactionSigner<TAccountLeafDelegate>;\n  newLeafOwner: Address<TAccountNewLeafOwner>;\n  merkleTree: Address<TAccountMerkleTree>;\n  logWrapper?: Address<TAccountLogWrapper>;\n  compressionProgram?: Address<TAccountCompressionProgram>;\n  systemProgram?: Address<TAccountSystemProgram>;\n  root: TransferInstructionDataArgs['root'];\n  dataHash: TransferInstructionDataArgs['dataHash'];\n  creatorHash: TransferInstructionDataArgs['creatorHash'];\n  nonce: TransferInstructionDataArgs['nonce'];\n  index: TransferInstructionDataArgs['index'];\n  proof?: Array<Address>;\n};\n\nexport async function getTransferInstructionAsync<\n  TAccountTreeConfig extends string,\n  TAccountLeafOwner extends string,\n  TAccountLeafDelegate extends string,\n  TAccountNewLeafOwner extends string,\n  TAccountMerkleTree extends string,\n  TAccountLogWrapper extends string,\n  TAccountCompressionProgram extends string,\n  TAccountSystemProgram extends string,\n  TProgramAddress extends Address = typeof MPL_BUBBLEGUM_PROGRAM_ADDRESS,\n>(\n  input: TransferAsyncInput<\n    TAccountTreeConfig,\n    TAccountLeafOwner,\n    TAccountLeafDelegate,\n    TAccountNewLeafOwner,\n    TAccountMerkleTree,\n    TAccountLogWrapper,\n    TAccountCompressionProgram,\n    TAccountSystemProgram\n  >,\n  config?: { programAddress?: TProgramAddress }\n): Promise<\n  TransferInstruction<\n    TProgramAddress,\n    TAccountTreeConfig,\n    (typeof input)['leafOwner'] extends TransactionSigner<TAccountLeafOwner>\n      ? ReadonlySignerAccount<TAccountLeafOwner> &\n          AccountSignerMeta<TAccountLeafOwner>\n      : TAccountLeafOwner,\n    (typeof input)['leafDelegate'] extends TransactionSigner<TAccountLeafDelegate>\n      ? ReadonlySignerAccount<TAccountLeafDelegate> &\n          AccountSignerMeta<TAccountLeafDelegate>\n      : TAccountLeafDelegate,\n    TAccountNewLeafOwner,\n    TAccountMerkleTree,\n    TAccountLogWrapper,\n    TAccountCompressionProgram,\n    TAccountSystemProgram\n  >\n> {\n  // Program address.\n  const programAddress =\n    config?.programAddress ?? MPL_BUBBLEGUM_PROGRAM_ADDRESS;\n\n  // Original accounts.\n  const originalAccounts = {\n    treeConfig: { value: input.treeConfig ?? null, isWritable: false },\n    leafOwner: { value: input.leafOwner ?? null, isWritable: false },\n    leafDelegate: { value: input.leafDelegate ?? null, isWritable: false },\n    newLeafOwner: { value: input.newLeafOwner ?? null, isWritable: false },\n    merkleTree: { value: input.merkleTree ?? null, isWritable: true },\n    logWrapper: { value: input.logWrapper ?? null, isWritable: false },\n    compressionProgram: {\n      value: input.compressionProgram ?? null,\n      isWritable: false,\n    },\n    systemProgram: { value: input.systemProgram ?? null, isWritable: false },\n  };\n  const accounts = originalAccounts as Record<\n    keyof typeof originalAccounts,\n    ResolvedAccount\n  >;\n\n  // Original args.\n  const args = { ...input };\n\n  // Resolve default values.\n  if (!accounts.treeConfig.value) {\n    accounts.treeConfig.value = await findTreeConfigPda({\n      merkleTree: expectAddress(accounts.merkleTree.value),\n    });\n  }\n  if (!accounts.leafDelegate.value) {\n    accounts.leafDelegate.value = expectSome(accounts.leafOwner.value);\n  }\n  if (!accounts.logWrapper.value) {\n    accounts.logWrapper.value =\n      'noopb9bkMVfRPU8AsbpTUg8AQkHtKwMYZiFUjNRtMmV' as Address<'noopb9bkMVfRPU8AsbpTUg8AQkHtKwMYZiFUjNRtMmV'>;\n  }\n  if (!accounts.compressionProgram.value) {\n    accounts.compressionProgram.value =\n      'cmtDvXumGCrqC1Age74AVPhSRVXJMd8PJS91L8KbNCK' as Address<'cmtDvXumGCrqC1Age74AVPhSRVXJMd8PJS91L8KbNCK'>;\n  }\n  if (!accounts.systemProgram.value) {\n    accounts.systemProgram.value =\n      '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>;\n  }\n\n  // Remaining accounts.\n  const remainingAccounts: AccountMeta[] = (args.proof ?? []).map(\n    (address) => ({ address, role: AccountRole.READONLY })\n  );\n\n  const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n  return Object.freeze({\n    accounts: [\n      getAccountMeta(accounts.treeConfig),\n      getAccountMeta(accounts.leafOwner),\n      getAccountMeta(accounts.leafDelegate),\n      getAccountMeta(accounts.newLeafOwner),\n      getAccountMeta(accounts.merkleTree),\n      getAccountMeta(accounts.logWrapper),\n      getAccountMeta(accounts.compressionProgram),\n      getAccountMeta(accounts.systemProgram),\n      ...remainingAccounts,\n    ],\n    data: getTransferInstructionDataEncoder().encode(\n      args as TransferInstructionDataArgs\n    ),\n    programAddress,\n  } as TransferInstruction<\n    TProgramAddress,\n    TAccountTreeConfig,\n    (typeof input)['leafOwner'] extends TransactionSigner<TAccountLeafOwner>\n      ? ReadonlySignerAccount<TAccountLeafOwner> &\n          AccountSignerMeta<TAccountLeafOwner>\n      : TAccountLeafOwner,\n    (typeof input)['leafDelegate'] extends TransactionSigner<TAccountLeafDelegate>\n      ? ReadonlySignerAccount<TAccountLeafDelegate> &\n          AccountSignerMeta<TAccountLeafDelegate>\n      : TAccountLeafDelegate,\n    TAccountNewLeafOwner,\n    TAccountMerkleTree,\n    TAccountLogWrapper,\n    TAccountCompressionProgram,\n    TAccountSystemProgram\n  >);\n}\n\nexport type TransferInput<\n  TAccountTreeConfig extends string = string,\n  TAccountLeafOwner extends string = string,\n  TAccountLeafDelegate extends string = string,\n  TAccountNewLeafOwner extends string = string,\n  TAccountMerkleTree extends string = string,\n  TAccountLogWrapper extends string = string,\n  TAccountCompressionProgram extends string = string,\n  TAccountSystemProgram extends string = string,\n> = {\n  treeConfig: Address<TAccountTreeConfig>;\n  leafOwner: Address<TAccountLeafOwner> | TransactionSigner<TAccountLeafOwner>;\n  leafDelegate?:\n    | Address<TAccountLeafDelegate>\n    | TransactionSigner<TAccountLeafDelegate>;\n  newLeafOwner: Address<TAccountNewLeafOwner>;\n  merkleTree: Address<TAccountMerkleTree>;\n  logWrapper?: Address<TAccountLogWrapper>;\n  compressionProgram?: Address<TAccountCompressionProgram>;\n  systemProgram?: Address<TAccountSystemProgram>;\n  root: TransferInstructionDataArgs['root'];\n  dataHash: TransferInstructionDataArgs['dataHash'];\n  creatorHash: TransferInstructionDataArgs['creatorHash'];\n  nonce: TransferInstructionDataArgs['nonce'];\n  index: TransferInstructionDataArgs['index'];\n  proof?: Array<Address>;\n};\n\nexport function getTransferInstruction<\n  TAccountTreeConfig extends string,\n  TAccountLeafOwner extends string,\n  TAccountLeafDelegate extends string,\n  TAccountNewLeafOwner extends string,\n  TAccountMerkleTree extends string,\n  TAccountLogWrapper extends string,\n  TAccountCompressionProgram extends string,\n  TAccountSystemProgram extends string,\n  TProgramAddress extends Address = typeof MPL_BUBBLEGUM_PROGRAM_ADDRESS,\n>(\n  input: TransferInput<\n    TAccountTreeConfig,\n    TAccountLeafOwner,\n    TAccountLeafDelegate,\n    TAccountNewLeafOwner,\n    TAccountMerkleTree,\n    TAccountLogWrapper,\n    TAccountCompressionProgram,\n    TAccountSystemProgram\n  >,\n  config?: { programAddress?: TProgramAddress }\n): TransferInstruction<\n  TProgramAddress,\n  TAccountTreeConfig,\n  (typeof input)['leafOwner'] extends TransactionSigner<TAccountLeafOwner>\n    ? ReadonlySignerAccount<TAccountLeafOwner> &\n        AccountSignerMeta<TAccountLeafOwner>\n    : TAccountLeafOwner,\n  (typeof input)['leafDelegate'] extends TransactionSigner<TAccountLeafDelegate>\n    ? ReadonlySignerAccount<TAccountLeafDelegate> &\n        AccountSignerMeta<TAccountLeafDelegate>\n    : TAccountLeafDelegate,\n  TAccountNewLeafOwner,\n  TAccountMerkleTree,\n  TAccountLogWrapper,\n  TAccountCompressionProgram,\n  TAccountSystemProgram\n> {\n  // Program address.\n  const programAddress =\n    config?.programAddress ?? MPL_BUBBLEGUM_PROGRAM_ADDRESS;\n\n  // Original accounts.\n  const originalAccounts = {\n    treeConfig: { value: input.treeConfig ?? null, isWritable: false },\n    leafOwner: { value: input.leafOwner ?? null, isWritable: false },\n    leafDelegate: { value: input.leafDelegate ?? null, isWritable: false },\n    newLeafOwner: { value: input.newLeafOwner ?? null, isWritable: false },\n    merkleTree: { value: input.merkleTree ?? null, isWritable: true },\n    logWrapper: { value: input.logWrapper ?? null, isWritable: false },\n    compressionProgram: {\n      value: input.compressionProgram ?? null,\n      isWritable: false,\n    },\n    systemProgram: { value: input.systemProgram ?? null, isWritable: false },\n  };\n  const accounts = originalAccounts as Record<\n    keyof typeof originalAccounts,\n    ResolvedAccount\n  >;\n\n  // Original args.\n  const args = { ...input };\n\n  // Resolve default values.\n  if (!accounts.leafDelegate.value) {\n    accounts.leafDelegate.value = expectSome(accounts.leafOwner.value);\n  }\n  if (!accounts.logWrapper.value) {\n    accounts.logWrapper.value =\n      'noopb9bkMVfRPU8AsbpTUg8AQkHtKwMYZiFUjNRtMmV' as Address<'noopb9bkMVfRPU8AsbpTUg8AQkHtKwMYZiFUjNRtMmV'>;\n  }\n  if (!accounts.compressionProgram.value) {\n    accounts.compressionProgram.value =\n      'cmtDvXumGCrqC1Age74AVPhSRVXJMd8PJS91L8KbNCK' as Address<'cmtDvXumGCrqC1Age74AVPhSRVXJMd8PJS91L8KbNCK'>;\n  }\n  if (!accounts.systemProgram.value) {\n    accounts.systemProgram.value =\n      '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>;\n  }\n\n  // Remaining accounts.\n  const remainingAccounts: AccountMeta[] = (args.proof ?? []).map(\n    (address) => ({ address, role: AccountRole.READONLY })\n  );\n\n  const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n  return Object.freeze({\n    accounts: [\n      getAccountMeta(accounts.treeConfig),\n      getAccountMeta(accounts.leafOwner),\n      getAccountMeta(accounts.leafDelegate),\n      getAccountMeta(accounts.newLeafOwner),\n      getAccountMeta(accounts.merkleTree),\n      getAccountMeta(accounts.logWrapper),\n      getAccountMeta(accounts.compressionProgram),\n      getAccountMeta(accounts.systemProgram),\n      ...remainingAccounts,\n    ],\n    data: getTransferInstructionDataEncoder().encode(\n      args as TransferInstructionDataArgs\n    ),\n    programAddress,\n  } as TransferInstruction<\n    TProgramAddress,\n    TAccountTreeConfig,\n    (typeof input)['leafOwner'] extends TransactionSigner<TAccountLeafOwner>\n      ? ReadonlySignerAccount<TAccountLeafOwner> &\n          AccountSignerMeta<TAccountLeafOwner>\n      : TAccountLeafOwner,\n    (typeof input)['leafDelegate'] extends TransactionSigner<TAccountLeafDelegate>\n      ? ReadonlySignerAccount<TAccountLeafDelegate> &\n          AccountSignerMeta<TAccountLeafDelegate>\n      : TAccountLeafDelegate,\n    TAccountNewLeafOwner,\n    TAccountMerkleTree,\n    TAccountLogWrapper,\n    TAccountCompressionProgram,\n    TAccountSystemProgram\n  >);\n}\n\nexport type ParsedTransferInstruction<\n  TProgram extends string = typeof MPL_BUBBLEGUM_PROGRAM_ADDRESS,\n  TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n  programAddress: Address<TProgram>;\n  accounts: {\n    treeConfig: TAccountMetas[0];\n    leafOwner: TAccountMetas[1];\n    leafDelegate: TAccountMetas[2];\n    newLeafOwner: TAccountMetas[3];\n    merkleTree: TAccountMetas[4];\n    logWrapper: TAccountMetas[5];\n    compressionProgram: TAccountMetas[6];\n    systemProgram: TAccountMetas[7];\n  };\n  data: TransferInstructionData;\n};\n\nexport function parseTransferInstruction<\n  TProgram extends string,\n  TAccountMetas extends readonly AccountMeta[],\n>(\n  instruction: Instruction<TProgram> &\n    InstructionWithAccounts<TAccountMetas> &\n    InstructionWithData<ReadonlyUint8Array>\n): ParsedTransferInstruction<TProgram, TAccountMetas> {\n  if (instruction.accounts.length < 8) {\n    // TODO: Coded error.\n    throw new Error('Not enough accounts');\n  }\n  let accountIndex = 0;\n  const getNextAccount = () => {\n    const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n    accountIndex += 1;\n    return accountMeta;\n  };\n  return {\n    programAddress: instruction.programAddress,\n    accounts: {\n      treeConfig: getNextAccount(),\n      leafOwner: getNextAccount(),\n      leafDelegate: getNextAccount(),\n      newLeafOwner: getNextAccount(),\n      merkleTree: getNextAccount(),\n      logWrapper: getNextAccount(),\n      compressionProgram: getNextAccount(),\n      systemProgram: getNextAccount(),\n    },\n    data: getTransferInstructionDataDecoder().decode(instruction.data),\n  };\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  AccountRole,\n  combineCodec,\n  fixDecoderSize,\n  fixEncoderSize,\n  getBytesDecoder,\n  getBytesEncoder,\n  getOptionDecoder,\n  getOptionEncoder,\n  getStructDecoder,\n  getStructEncoder,\n  getU32Decoder,\n  getU32Encoder,\n  getU64Decoder,\n  getU64Encoder,\n  getU8Decoder,\n  getU8Encoder,\n  none,\n  transformEncoder,\n  type AccountMeta,\n  type AccountSignerMeta,\n  type Address,\n  type Codec,\n  type Decoder,\n  type Encoder,\n  type Instruction,\n  type InstructionWithAccounts,\n  type InstructionWithData,\n  type Option,\n  type OptionOrNullable,\n  type ReadonlyAccount,\n  type ReadonlySignerAccount,\n  type ReadonlyUint8Array,\n  type TransactionSigner,\n  type WritableAccount,\n  type WritableSignerAccount,\n} from '@solana/kit';\nimport { findTreeConfigPda } from '../pdas';\nimport { MPL_BUBBLEGUM_PROGRAM_ADDRESS } from '../programs';\nimport {\n  expectAddress,\n  getAccountMetaFactory,\n  type ResolvedAccount,\n} from '../shared';\n\nexport const TRANSFER_V2_DISCRIMINATOR = new Uint8Array([\n  119, 40, 6, 235, 234, 221, 248, 49,\n]);\n\nexport function getTransferV2DiscriminatorBytes() {\n  return fixEncoderSize(getBytesEncoder(), 8).encode(TRANSFER_V2_DISCRIMINATOR);\n}\n\nexport type TransferV2Instruction<\n  TProgram extends string = typeof MPL_BUBBLEGUM_PROGRAM_ADDRESS,\n  TAccountTreeConfig extends string | AccountMeta<string> = string,\n  TAccountPayer extends string | AccountMeta<string> = string,\n  TAccountAuthority extends string | AccountMeta<string> = string,\n  TAccountLeafOwner extends string | AccountMeta<string> = string,\n  TAccountLeafDelegate extends string | AccountMeta<string> = string,\n  TAccountNewLeafOwner extends string | AccountMeta<string> = string,\n  TAccountMerkleTree extends string | AccountMeta<string> = string,\n  TAccountCoreCollection extends string | AccountMeta<string> = string,\n  TAccountLogWrapper extends\n    | string\n    | AccountMeta<string> = 'mnoopTCrg4p8ry25e4bcWA9XZjbNjMTfgYVGGEdRsf3',\n  TAccountCompressionProgram extends\n    | string\n    | AccountMeta<string> = 'mcmt6YrQEMKw8Mw43FmpRLmf7BqRnFMKmAcbxE3xkAW',\n  TAccountSystemProgram extends\n    | string\n    | AccountMeta<string> = '11111111111111111111111111111111',\n  TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n  InstructionWithData<ReadonlyUint8Array> &\n  InstructionWithAccounts<\n    [\n      TAccountTreeConfig extends string\n        ? WritableAccount<TAccountTreeConfig>\n        : TAccountTreeConfig,\n      TAccountPayer extends string\n        ? WritableSignerAccount<TAccountPayer> &\n            AccountSignerMeta<TAccountPayer>\n        : TAccountPayer,\n      TAccountAuthority extends string\n        ? ReadonlySignerAccount<TAccountAuthority> &\n            AccountSignerMeta<TAccountAuthority>\n        : TAccountAuthority,\n      TAccountLeafOwner extends string\n        ? ReadonlyAccount<TAccountLeafOwner>\n        : TAccountLeafOwner,\n      TAccountLeafDelegate extends string\n        ? ReadonlyAccount<TAccountLeafDelegate>\n        : TAccountLeafDelegate,\n      TAccountNewLeafOwner extends string\n        ? ReadonlyAccount<TAccountNewLeafOwner>\n        : TAccountNewLeafOwner,\n      TAccountMerkleTree extends string\n        ? WritableAccount<TAccountMerkleTree>\n        : TAccountMerkleTree,\n      TAccountCoreCollection extends string\n        ? ReadonlyAccount<TAccountCoreCollection>\n        : TAccountCoreCollection,\n      TAccountLogWrapper extends string\n        ? ReadonlyAccount<TAccountLogWrapper>\n        : TAccountLogWrapper,\n      TAccountCompressionProgram extends string\n        ? ReadonlyAccount<TAccountCompressionProgram>\n        : TAccountCompressionProgram,\n      TAccountSystemProgram extends string\n        ? ReadonlyAccount<TAccountSystemProgram>\n        : TAccountSystemProgram,\n      ...TRemainingAccounts,\n    ]\n  >;\n\nexport type TransferV2InstructionData = {\n  discriminator: ReadonlyUint8Array;\n  root: ReadonlyUint8Array;\n  dataHash: ReadonlyUint8Array;\n  creatorHash: ReadonlyUint8Array;\n  assetDataHash: Option<ReadonlyUint8Array>;\n  flags: Option<number>;\n  nonce: bigint;\n  index: number;\n};\n\nexport type TransferV2InstructionDataArgs = {\n  root: ReadonlyUint8Array;\n  dataHash: ReadonlyUint8Array;\n  creatorHash: ReadonlyUint8Array;\n  assetDataHash?: OptionOrNullable<ReadonlyUint8Array>;\n  flags?: OptionOrNullable<number>;\n  nonce: number | bigint;\n  index: number;\n};\n\nexport function getTransferV2InstructionDataEncoder(): Encoder<TransferV2InstructionDataArgs> {\n  return transformEncoder(\n    getStructEncoder([\n      ['discriminator', fixEncoderSize(getBytesEncoder(), 8)],\n      ['root', fixEncoderSize(getBytesEncoder(), 32)],\n      ['dataHash', fixEncoderSize(getBytesEncoder(), 32)],\n      ['creatorHash', fixEncoderSize(getBytesEncoder(), 32)],\n      [\n        'assetDataHash',\n        getOptionEncoder(fixEncoderSize(getBytesEncoder(), 32)),\n      ],\n      ['flags', getOptionEncoder(getU8Encoder())],\n      ['nonce', getU64Encoder()],\n      ['index', getU32Encoder()],\n    ]),\n    (value) => ({\n      ...value,\n      discriminator: TRANSFER_V2_DISCRIMINATOR,\n      assetDataHash: value.assetDataHash ?? none(),\n      flags: value.flags ?? none(),\n    })\n  );\n}\n\nexport function getTransferV2InstructionDataDecoder(): Decoder<TransferV2InstructionData> {\n  return getStructDecoder([\n    ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n    ['root', fixDecoderSize(getBytesDecoder(), 32)],\n    ['dataHash', fixDecoderSize(getBytesDecoder(), 32)],\n    ['creatorHash', fixDecoderSize(getBytesDecoder(), 32)],\n    ['assetDataHash', getOptionDecoder(fixDecoderSize(getBytesDecoder(), 32))],\n    ['flags', getOptionDecoder(getU8Decoder())],\n    ['nonce', getU64Decoder()],\n    ['index', getU32Decoder()],\n  ]);\n}\n\nexport function getTransferV2InstructionDataCodec(): Codec<\n  TransferV2InstructionDataArgs,\n  TransferV2InstructionData\n> {\n  return combineCodec(\n    getTransferV2InstructionDataEncoder(),\n    getTransferV2InstructionDataDecoder()\n  );\n}\n\nexport type TransferV2AsyncInput<\n  TAccountTreeConfig extends string = string,\n  TAccountPayer extends string = string,\n  TAccountAuthority extends string = string,\n  TAccountLeafOwner extends string = string,\n  TAccountLeafDelegate extends string = string,\n  TAccountNewLeafOwner extends string = string,\n  TAccountMerkleTree extends string = string,\n  TAccountCoreCollection extends string = string,\n  TAccountLogWrapper extends string = string,\n  TAccountCompressionProgram extends string = string,\n  TAccountSystemProgram extends string = string,\n> = {\n  treeConfig?: Address<TAccountTreeConfig>;\n  payer: TransactionSigner<TAccountPayer>;\n  /**\n   * Optional authority, defaults to `payer`.  Must be either\n   * the leaf owner or collection permanent transfer delegate.\n   */\n  authority?: TransactionSigner<TAccountAuthority>;\n  leafOwner: Address<TAccountLeafOwner>;\n  /** Defaults to `leaf_owner` */\n  leafDelegate?: Address<TAccountLeafDelegate>;\n  newLeafOwner: Address<TAccountNewLeafOwner>;\n  merkleTree: Address<TAccountMerkleTree>;\n  coreCollection?: Address<TAccountCoreCollection>;\n  logWrapper?: Address<TAccountLogWrapper>;\n  compressionProgram?: Address<TAccountCompressionProgram>;\n  systemProgram?: Address<TAccountSystemProgram>;\n  root: TransferV2InstructionDataArgs['root'];\n  dataHash: TransferV2InstructionDataArgs['dataHash'];\n  creatorHash: TransferV2InstructionDataArgs['creatorHash'];\n  assetDataHash?: TransferV2InstructionDataArgs['assetDataHash'];\n  flags?: TransferV2InstructionDataArgs['flags'];\n  nonce: TransferV2InstructionDataArgs['nonce'];\n  index: TransferV2InstructionDataArgs['index'];\n  proof?: Array<Address>;\n};\n\nexport async function getTransferV2InstructionAsync<\n  TAccountTreeConfig extends string,\n  TAccountPayer extends string,\n  TAccountAuthority extends string,\n  TAccountLeafOwner extends string,\n  TAccountLeafDelegate extends string,\n  TAccountNewLeafOwner extends string,\n  TAccountMerkleTree extends string,\n  TAccountCoreCollection extends string,\n  TAccountLogWrapper extends string,\n  TAccountCompressionProgram extends string,\n  TAccountSystemProgram extends string,\n  TProgramAddress extends Address = typeof MPL_BUBBLEGUM_PROGRAM_ADDRESS,\n>(\n  input: TransferV2AsyncInput<\n    TAccountTreeConfig,\n    TAccountPayer,\n    TAccountAuthority,\n    TAccountLeafOwner,\n    TAccountLeafDelegate,\n    TAccountNewLeafOwner,\n    TAccountMerkleTree,\n    TAccountCoreCollection,\n    TAccountLogWrapper,\n    TAccountCompressionProgram,\n    TAccountSystemProgram\n  >,\n  config?: { programAddress?: TProgramAddress }\n): Promise<\n  TransferV2Instruction<\n    TProgramAddress,\n    TAccountTreeConfig,\n    TAccountPayer,\n    TAccountAuthority,\n    TAccountLeafOwner,\n    TAccountLeafDelegate,\n    TAccountNewLeafOwner,\n    TAccountMerkleTree,\n    TAccountCoreCollection,\n    TAccountLogWrapper,\n    TAccountCompressionProgram,\n    TAccountSystemProgram\n  >\n> {\n  // Program address.\n  const programAddress =\n    config?.programAddress ?? MPL_BUBBLEGUM_PROGRAM_ADDRESS;\n\n  // Original accounts.\n  const originalAccounts = {\n    treeConfig: { value: input.treeConfig ?? null, isWritable: true },\n    payer: { value: input.payer ?? null, isWritable: true },\n    authority: { value: input.authority ?? null, isWritable: false },\n    leafOwner: { value: input.leafOwner ?? null, isWritable: false },\n    leafDelegate: { value: input.leafDelegate ?? null, isWritable: false },\n    newLeafOwner: { value: input.newLeafOwner ?? null, isWritable: false },\n    merkleTree: { value: input.merkleTree ?? null, isWritable: true },\n    coreCollection: { value: input.coreCollection ?? null, isWritable: false },\n    logWrapper: { value: input.logWrapper ?? null, isWritable: false },\n    compressionProgram: {\n      value: input.compressionProgram ?? null,\n      isWritable: false,\n    },\n    systemProgram: { value: input.systemProgram ?? null, isWritable: false },\n  };\n  const accounts = originalAccounts as Record<\n    keyof typeof originalAccounts,\n    ResolvedAccount\n  >;\n\n  // Original args.\n  const args = { ...input };\n\n  // Resolve default values.\n  if (!accounts.treeConfig.value) {\n    accounts.treeConfig.value = await findTreeConfigPda({\n      merkleTree: expectAddress(accounts.merkleTree.value),\n    });\n  }\n  if (!accounts.logWrapper.value) {\n    accounts.logWrapper.value =\n      'mnoopTCrg4p8ry25e4bcWA9XZjbNjMTfgYVGGEdRsf3' as Address<'mnoopTCrg4p8ry25e4bcWA9XZjbNjMTfgYVGGEdRsf3'>;\n  }\n  if (!accounts.compressionProgram.value) {\n    accounts.compressionProgram.value =\n      'mcmt6YrQEMKw8Mw43FmpRLmf7BqRnFMKmAcbxE3xkAW' as Address<'mcmt6YrQEMKw8Mw43FmpRLmf7BqRnFMKmAcbxE3xkAW'>;\n  }\n  if (!accounts.systemProgram.value) {\n    accounts.systemProgram.value =\n      '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>;\n  }\n\n  // Remaining accounts.\n  const remainingAccounts: AccountMeta[] = (args.proof ?? []).map(\n    (address) => ({ address, role: AccountRole.READONLY })\n  );\n\n  const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n  return Object.freeze({\n    accounts: [\n      getAccountMeta(accounts.treeConfig),\n      getAccountMeta(accounts.payer),\n      getAccountMeta(accounts.authority),\n      getAccountMeta(accounts.leafOwner),\n      getAccountMeta(accounts.leafDelegate),\n      getAccountMeta(accounts.newLeafOwner),\n      getAccountMeta(accounts.merkleTree),\n      getAccountMeta(accounts.coreCollection),\n      getAccountMeta(accounts.logWrapper),\n      getAccountMeta(accounts.compressionProgram),\n      getAccountMeta(accounts.systemProgram),\n      ...remainingAccounts,\n    ],\n    data: getTransferV2InstructionDataEncoder().encode(\n      args as TransferV2InstructionDataArgs\n    ),\n    programAddress,\n  } as TransferV2Instruction<\n    TProgramAddress,\n    TAccountTreeConfig,\n    TAccountPayer,\n    TAccountAuthority,\n    TAccountLeafOwner,\n    TAccountLeafDelegate,\n    TAccountNewLeafOwner,\n    TAccountMerkleTree,\n    TAccountCoreCollection,\n    TAccountLogWrapper,\n    TAccountCompressionProgram,\n    TAccountSystemProgram\n  >);\n}\n\nexport type TransferV2Input<\n  TAccountTreeConfig extends string = string,\n  TAccountPayer extends string = string,\n  TAccountAuthority extends string = string,\n  TAccountLeafOwner extends string = string,\n  TAccountLeafDelegate extends string = string,\n  TAccountNewLeafOwner extends string = string,\n  TAccountMerkleTree extends string = string,\n  TAccountCoreCollection extends string = string,\n  TAccountLogWrapper extends string = string,\n  TAccountCompressionProgram extends string = string,\n  TAccountSystemProgram extends string = string,\n> = {\n  treeConfig: Address<TAccountTreeConfig>;\n  payer: TransactionSigner<TAccountPayer>;\n  /**\n   * Optional authority, defaults to `payer`.  Must be either\n   * the leaf owner or collection permanent transfer delegate.\n   */\n  authority?: TransactionSigner<TAccountAuthority>;\n  leafOwner: Address<TAccountLeafOwner>;\n  /** Defaults to `leaf_owner` */\n  leafDelegate?: Address<TAccountLeafDelegate>;\n  newLeafOwner: Address<TAccountNewLeafOwner>;\n  merkleTree: Address<TAccountMerkleTree>;\n  coreCollection?: Address<TAccountCoreCollection>;\n  logWrapper?: Address<TAccountLogWrapper>;\n  compressionProgram?: Address<TAccountCompressionProgram>;\n  systemProgram?: Address<TAccountSystemProgram>;\n  root: TransferV2InstructionDataArgs['root'];\n  dataHash: TransferV2InstructionDataArgs['dataHash'];\n  creatorHash: TransferV2InstructionDataArgs['creatorHash'];\n  assetDataHash?: TransferV2InstructionDataArgs['assetDataHash'];\n  flags?: TransferV2InstructionDataArgs['flags'];\n  nonce: TransferV2InstructionDataArgs['nonce'];\n  index: TransferV2InstructionDataArgs['index'];\n  proof?: Array<Address>;\n};\n\nexport function getTransferV2Instruction<\n  TAccountTreeConfig extends string,\n  TAccountPayer extends string,\n  TAccountAuthority extends string,\n  TAccountLeafOwner extends string,\n  TAccountLeafDelegate extends string,\n  TAccountNewLeafOwner extends string,\n  TAccountMerkleTree extends string,\n  TAccountCoreCollection extends string,\n  TAccountLogWrapper extends string,\n  TAccountCompressionProgram extends string,\n  TAccountSystemProgram extends string,\n  TProgramAddress extends Address = typeof MPL_BUBBLEGUM_PROGRAM_ADDRESS,\n>(\n  input: TransferV2Input<\n    TAccountTreeConfig,\n    TAccountPayer,\n    TAccountAuthority,\n    TAccountLeafOwner,\n    TAccountLeafDelegate,\n    TAccountNewLeafOwner,\n    TAccountMerkleTree,\n    TAccountCoreCollection,\n    TAccountLogWrapper,\n    TAccountCompressionProgram,\n    TAccountSystemProgram\n  >,\n  config?: { programAddress?: TProgramAddress }\n): TransferV2Instruction<\n  TProgramAddress,\n  TAccountTreeConfig,\n  TAccountPayer,\n  TAccountAuthority,\n  TAccountLeafOwner,\n  TAccountLeafDelegate,\n  TAccountNewLeafOwner,\n  TAccountMerkleTree,\n  TAccountCoreCollection,\n  TAccountLogWrapper,\n  TAccountCompressionProgram,\n  TAccountSystemProgram\n> {\n  // Program address.\n  const programAddress =\n    config?.programAddress ?? MPL_BUBBLEGUM_PROGRAM_ADDRESS;\n\n  // Original accounts.\n  const originalAccounts = {\n    treeConfig: { value: input.treeConfig ?? null, isWritable: true },\n    payer: { value: input.payer ?? null, isWritable: true },\n    authority: { value: input.authority ?? null, isWritable: false },\n    leafOwner: { value: input.leafOwner ?? null, isWritable: false },\n    leafDelegate: { value: input.leafDelegate ?? null, isWritable: false },\n    newLeafOwner: { value: input.newLeafOwner ?? null, isWritable: false },\n    merkleTree: { value: input.merkleTree ?? null, isWritable: true },\n    coreCollection: { value: input.coreCollection ?? null, isWritable: false },\n    logWrapper: { value: input.logWrapper ?? null, isWritable: false },\n    compressionProgram: {\n      value: input.compressionProgram ?? null,\n      isWritable: false,\n    },\n    systemProgram: { value: input.systemProgram ?? null, isWritable: false },\n  };\n  const accounts = originalAccounts as Record<\n    keyof typeof originalAccounts,\n    ResolvedAccount\n  >;\n\n  // Original args.\n  const args = { ...input };\n\n  // Resolve default values.\n  if (!accounts.logWrapper.value) {\n    accounts.logWrapper.value =\n      'mnoopTCrg4p8ry25e4bcWA9XZjbNjMTfgYVGGEdRsf3' as Address<'mnoopTCrg4p8ry25e4bcWA9XZjbNjMTfgYVGGEdRsf3'>;\n  }\n  if (!accounts.compressionProgram.value) {\n    accounts.compressionProgram.value =\n      'mcmt6YrQEMKw8Mw43FmpRLmf7BqRnFMKmAcbxE3xkAW' as Address<'mcmt6YrQEMKw8Mw43FmpRLmf7BqRnFMKmAcbxE3xkAW'>;\n  }\n  if (!accounts.systemProgram.value) {\n    accounts.systemProgram.value =\n      '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>;\n  }\n\n  // Remaining accounts.\n  const remainingAccounts: AccountMeta[] = (args.proof ?? []).map(\n    (address) => ({ address, role: AccountRole.READONLY })\n  );\n\n  const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n  return Object.freeze({\n    accounts: [\n      getAccountMeta(accounts.treeConfig),\n      getAccountMeta(accounts.payer),\n      getAccountMeta(accounts.authority),\n      getAccountMeta(accounts.leafOwner),\n      getAccountMeta(accounts.leafDelegate),\n      getAccountMeta(accounts.newLeafOwner),\n      getAccountMeta(accounts.merkleTree),\n      getAccountMeta(accounts.coreCollection),\n      getAccountMeta(accounts.logWrapper),\n      getAccountMeta(accounts.compressionProgram),\n      getAccountMeta(accounts.systemProgram),\n      ...remainingAccounts,\n    ],\n    data: getTransferV2InstructionDataEncoder().encode(\n      args as TransferV2InstructionDataArgs\n    ),\n    programAddress,\n  } as TransferV2Instruction<\n    TProgramAddress,\n    TAccountTreeConfig,\n    TAccountPayer,\n    TAccountAuthority,\n    TAccountLeafOwner,\n    TAccountLeafDelegate,\n    TAccountNewLeafOwner,\n    TAccountMerkleTree,\n    TAccountCoreCollection,\n    TAccountLogWrapper,\n    TAccountCompressionProgram,\n    TAccountSystemProgram\n  >);\n}\n\nexport type ParsedTransferV2Instruction<\n  TProgram extends string = typeof MPL_BUBBLEGUM_PROGRAM_ADDRESS,\n  TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n  programAddress: Address<TProgram>;\n  accounts: {\n    treeConfig: TAccountMetas[0];\n    payer: TAccountMetas[1];\n    /**\n     * Optional authority, defaults to `payer`.  Must be either\n     * the leaf owner or collection permanent transfer delegate.\n     */\n    authority?: TAccountMetas[2] | undefined;\n    leafOwner: TAccountMetas[3];\n    /** Defaults to `leaf_owner` */\n    leafDelegate?: TAccountMetas[4] | undefined;\n    newLeafOwner: TAccountMetas[5];\n    merkleTree: TAccountMetas[6];\n    coreCollection?: TAccountMetas[7] | undefined;\n    logWrapper: TAccountMetas[8];\n    compressionProgram: TAccountMetas[9];\n    systemProgram: TAccountMetas[10];\n  };\n  data: TransferV2InstructionData;\n};\n\nexport function parseTransferV2Instruction<\n  TProgram extends string,\n  TAccountMetas extends readonly AccountMeta[],\n>(\n  instruction: Instruction<TProgram> &\n    InstructionWithAccounts<TAccountMetas> &\n    InstructionWithData<ReadonlyUint8Array>\n): ParsedTransferV2Instruction<TProgram, TAccountMetas> {\n  if (instruction.accounts.length < 11) {\n    // TODO: Coded error.\n    throw new Error('Not enough accounts');\n  }\n  let accountIndex = 0;\n  const getNextAccount = () => {\n    const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n    accountIndex += 1;\n    return accountMeta;\n  };\n  const getNextOptionalAccount = () => {\n    const accountMeta = getNextAccount();\n    return accountMeta.address === MPL_BUBBLEGUM_PROGRAM_ADDRESS\n      ? undefined\n      : accountMeta;\n  };\n  return {\n    programAddress: instruction.programAddress,\n    accounts: {\n      treeConfig: getNextAccount(),\n      payer: getNextAccount(),\n      authority: getNextOptionalAccount(),\n      leafOwner: getNextAccount(),\n      leafDelegate: getNextOptionalAccount(),\n      newLeafOwner: getNextAccount(),\n      merkleTree: getNextAccount(),\n      coreCollection: getNextOptionalAccount(),\n      logWrapper: getNextAccount(),\n      compressionProgram: getNextAccount(),\n      systemProgram: getNextAccount(),\n    },\n    data: getTransferV2InstructionDataDecoder().decode(instruction.data),\n  };\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  AccountRole,\n  combineCodec,\n  fixDecoderSize,\n  fixEncoderSize,\n  getBytesDecoder,\n  getBytesEncoder,\n  getStructDecoder,\n  getStructEncoder,\n  getU32Decoder,\n  getU32Encoder,\n  getU64Decoder,\n  getU64Encoder,\n  transformEncoder,\n  type AccountMeta,\n  type AccountSignerMeta,\n  type Address,\n  type Codec,\n  type Decoder,\n  type Encoder,\n  type Instruction,\n  type InstructionWithAccounts,\n  type InstructionWithData,\n  type ReadonlyAccount,\n  type ReadonlySignerAccount,\n  type ReadonlyUint8Array,\n  type TransactionSigner,\n  type WritableAccount,\n} from '@solana/kit';\nimport {\n  findMasterEditionPda,\n  findMetadataPda,\n  resolveCreatorHash,\n  resolveDataHash,\n} from '../../hooked';\nimport { findTreeConfigPda } from '../pdas';\nimport { MPL_BUBBLEGUM_PROGRAM_ADDRESS } from '../programs';\nimport {\n  expectAddress,\n  expectSome,\n  getAccountMetaFactory,\n  type ResolvedAccount,\n} from '../shared';\nimport {\n  getMetadataArgsDecoder,\n  getMetadataArgsEncoder,\n  type MetadataArgs,\n  type MetadataArgsArgs,\n} from '../types';\n\nexport const UNVERIFY_COLLECTION_DISCRIMINATOR = new Uint8Array([\n  250, 251, 42, 106, 41, 137, 186, 168,\n]);\n\nexport function getUnverifyCollectionDiscriminatorBytes() {\n  return fixEncoderSize(getBytesEncoder(), 8).encode(\n    UNVERIFY_COLLECTION_DISCRIMINATOR\n  );\n}\n\nexport type UnverifyCollectionInstruction<\n  TProgram extends string = typeof MPL_BUBBLEGUM_PROGRAM_ADDRESS,\n  TAccountTreeConfig extends string | AccountMeta<string> = string,\n  TAccountLeafOwner extends string | AccountMeta<string> = string,\n  TAccountLeafDelegate extends string | AccountMeta<string> = string,\n  TAccountMerkleTree extends string | AccountMeta<string> = string,\n  TAccountPayer extends string | AccountMeta<string> = string,\n  TAccountTreeCreatorOrDelegate extends string | AccountMeta<string> = string,\n  TAccountCollectionAuthority extends string | AccountMeta<string> = string,\n  TAccountCollectionAuthorityRecordPda extends\n    | string\n    | AccountMeta<string> = string,\n  TAccountCollectionMint extends string | AccountMeta<string> = string,\n  TAccountCollectionMetadata extends string | AccountMeta<string> = string,\n  TAccountCollectionEdition extends string | AccountMeta<string> = string,\n  TAccountBubblegumSigner extends\n    | string\n    | AccountMeta<string> = 'BGUMAp9Gq7iTEuizy4pqaxsTyUCBK68MDfK752saRPUY',\n  TAccountLogWrapper extends\n    | string\n    | AccountMeta<string> = 'noopb9bkMVfRPU8AsbpTUg8AQkHtKwMYZiFUjNRtMmV',\n  TAccountCompressionProgram extends\n    | string\n    | AccountMeta<string> = 'cmtDvXumGCrqC1Age74AVPhSRVXJMd8PJS91L8KbNCK',\n  TAccountTokenMetadataProgram extends\n    | string\n    | AccountMeta<string> = 'BGUMAp9Gq7iTEuizy4pqaxsTyUCBK68MDfK752saRPUY',\n  TAccountSystemProgram extends\n    | string\n    | AccountMeta<string> = '11111111111111111111111111111111',\n  TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n  InstructionWithData<ReadonlyUint8Array> &\n  InstructionWithAccounts<\n    [\n      TAccountTreeConfig extends string\n        ? ReadonlyAccount<TAccountTreeConfig>\n        : TAccountTreeConfig,\n      TAccountLeafOwner extends string\n        ? ReadonlyAccount<TAccountLeafOwner>\n        : TAccountLeafOwner,\n      TAccountLeafDelegate extends string\n        ? ReadonlyAccount<TAccountLeafDelegate>\n        : TAccountLeafDelegate,\n      TAccountMerkleTree extends string\n        ? WritableAccount<TAccountMerkleTree>\n        : TAccountMerkleTree,\n      TAccountPayer extends string\n        ? ReadonlySignerAccount<TAccountPayer> &\n            AccountSignerMeta<TAccountPayer>\n        : TAccountPayer,\n      TAccountTreeCreatorOrDelegate extends string\n        ? ReadonlyAccount<TAccountTreeCreatorOrDelegate>\n        : TAccountTreeCreatorOrDelegate,\n      TAccountCollectionAuthority extends string\n        ? ReadonlySignerAccount<TAccountCollectionAuthority> &\n            AccountSignerMeta<TAccountCollectionAuthority>\n        : TAccountCollectionAuthority,\n      TAccountCollectionAuthorityRecordPda extends string\n        ? ReadonlyAccount<TAccountCollectionAuthorityRecordPda>\n        : TAccountCollectionAuthorityRecordPda,\n      TAccountCollectionMint extends string\n        ? ReadonlyAccount<TAccountCollectionMint>\n        : TAccountCollectionMint,\n      TAccountCollectionMetadata extends string\n        ? WritableAccount<TAccountCollectionMetadata>\n        : TAccountCollectionMetadata,\n      TAccountCollectionEdition extends string\n        ? ReadonlyAccount<TAccountCollectionEdition>\n        : TAccountCollectionEdition,\n      TAccountBubblegumSigner extends string\n        ? ReadonlyAccount<TAccountBubblegumSigner>\n        : TAccountBubblegumSigner,\n      TAccountLogWrapper extends string\n        ? ReadonlyAccount<TAccountLogWrapper>\n        : TAccountLogWrapper,\n      TAccountCompressionProgram extends string\n        ? ReadonlyAccount<TAccountCompressionProgram>\n        : TAccountCompressionProgram,\n      TAccountTokenMetadataProgram extends string\n        ? ReadonlyAccount<TAccountTokenMetadataProgram>\n        : TAccountTokenMetadataProgram,\n      TAccountSystemProgram extends string\n        ? ReadonlyAccount<TAccountSystemProgram>\n        : TAccountSystemProgram,\n      ...TRemainingAccounts,\n    ]\n  >;\n\nexport type UnverifyCollectionInstructionData = {\n  discriminator: ReadonlyUint8Array;\n  root: ReadonlyUint8Array;\n  dataHash: ReadonlyUint8Array;\n  creatorHash: ReadonlyUint8Array;\n  nonce: bigint;\n  index: number;\n  metadata: MetadataArgs;\n};\n\nexport type UnverifyCollectionInstructionDataArgs = {\n  root: ReadonlyUint8Array;\n  dataHash: ReadonlyUint8Array;\n  creatorHash: ReadonlyUint8Array;\n  nonce: number | bigint;\n  index: number;\n  metadata: MetadataArgsArgs;\n};\n\nexport function getUnverifyCollectionInstructionDataEncoder(): Encoder<UnverifyCollectionInstructionDataArgs> {\n  return transformEncoder(\n    getStructEncoder([\n      ['discriminator', fixEncoderSize(getBytesEncoder(), 8)],\n      ['root', fixEncoderSize(getBytesEncoder(), 32)],\n      ['dataHash', fixEncoderSize(getBytesEncoder(), 32)],\n      ['creatorHash', fixEncoderSize(getBytesEncoder(), 32)],\n      ['nonce', getU64Encoder()],\n      ['index', getU32Encoder()],\n      ['metadata', getMetadataArgsEncoder()],\n    ]),\n    (value) => ({ ...value, discriminator: UNVERIFY_COLLECTION_DISCRIMINATOR })\n  );\n}\n\nexport function getUnverifyCollectionInstructionDataDecoder(): Decoder<UnverifyCollectionInstructionData> {\n  return getStructDecoder([\n    ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n    ['root', fixDecoderSize(getBytesDecoder(), 32)],\n    ['dataHash', fixDecoderSize(getBytesDecoder(), 32)],\n    ['creatorHash', fixDecoderSize(getBytesDecoder(), 32)],\n    ['nonce', getU64Decoder()],\n    ['index', getU32Decoder()],\n    ['metadata', getMetadataArgsDecoder()],\n  ]);\n}\n\nexport function getUnverifyCollectionInstructionDataCodec(): Codec<\n  UnverifyCollectionInstructionDataArgs,\n  UnverifyCollectionInstructionData\n> {\n  return combineCodec(\n    getUnverifyCollectionInstructionDataEncoder(),\n    getUnverifyCollectionInstructionDataDecoder()\n  );\n}\n\nexport type UnverifyCollectionAsyncInput<\n  TAccountTreeConfig extends string = string,\n  TAccountLeafOwner extends string = string,\n  TAccountLeafDelegate extends string = string,\n  TAccountMerkleTree extends string = string,\n  TAccountPayer extends string = string,\n  TAccountTreeCreatorOrDelegate extends string = string,\n  TAccountCollectionAuthority extends string = string,\n  TAccountCollectionAuthorityRecordPda extends string = string,\n  TAccountCollectionMint extends string = string,\n  TAccountCollectionMetadata extends string = string,\n  TAccountCollectionEdition extends string = string,\n  TAccountBubblegumSigner extends string = string,\n  TAccountLogWrapper extends string = string,\n  TAccountCompressionProgram extends string = string,\n  TAccountTokenMetadataProgram extends string = string,\n  TAccountSystemProgram extends string = string,\n> = {\n  treeConfig?: Address<TAccountTreeConfig>;\n  leafOwner: Address<TAccountLeafOwner>;\n  leafDelegate?: Address<TAccountLeafDelegate>;\n  merkleTree: Address<TAccountMerkleTree>;\n  payer: TransactionSigner<TAccountPayer>;\n  /**\n   * This account is checked to be a signer in\n   * the case of `set_and_verify_collection` where\n   * we are actually changing the NFT metadata.\n   */\n  treeCreatorOrDelegate: Address<TAccountTreeCreatorOrDelegate>;\n  collectionAuthority: TransactionSigner<TAccountCollectionAuthority>;\n  /**\n   * If there is no collecton authority record PDA then\n   * this must be the Bubblegum program address.\n   */\n  collectionAuthorityRecordPda?: Address<TAccountCollectionAuthorityRecordPda>;\n  collectionMint: Address<TAccountCollectionMint>;\n  collectionMetadata?: Address<TAccountCollectionMetadata>;\n  collectionEdition?: Address<TAccountCollectionEdition>;\n  bubblegumSigner?: Address<TAccountBubblegumSigner>;\n  logWrapper?: Address<TAccountLogWrapper>;\n  compressionProgram?: Address<TAccountCompressionProgram>;\n  tokenMetadataProgram?: Address<TAccountTokenMetadataProgram>;\n  systemProgram?: Address<TAccountSystemProgram>;\n  root: UnverifyCollectionInstructionDataArgs['root'];\n  dataHash?: UnverifyCollectionInstructionDataArgs['dataHash'];\n  creatorHash?: UnverifyCollectionInstructionDataArgs['creatorHash'];\n  nonce: UnverifyCollectionInstructionDataArgs['nonce'];\n  index: UnverifyCollectionInstructionDataArgs['index'];\n  metadata: UnverifyCollectionInstructionDataArgs['metadata'];\n  proof?: Array<Address>;\n};\n\nexport async function getUnverifyCollectionInstructionAsync<\n  TAccountTreeConfig extends string,\n  TAccountLeafOwner extends string,\n  TAccountLeafDelegate extends string,\n  TAccountMerkleTree extends string,\n  TAccountPayer extends string,\n  TAccountTreeCreatorOrDelegate extends string,\n  TAccountCollectionAuthority extends string,\n  TAccountCollectionAuthorityRecordPda extends string,\n  TAccountCollectionMint extends string,\n  TAccountCollectionMetadata extends string,\n  TAccountCollectionEdition extends string,\n  TAccountBubblegumSigner extends string,\n  TAccountLogWrapper extends string,\n  TAccountCompressionProgram extends string,\n  TAccountTokenMetadataProgram extends string,\n  TAccountSystemProgram extends string,\n  TProgramAddress extends Address = typeof MPL_BUBBLEGUM_PROGRAM_ADDRESS,\n>(\n  input: UnverifyCollectionAsyncInput<\n    TAccountTreeConfig,\n    TAccountLeafOwner,\n    TAccountLeafDelegate,\n    TAccountMerkleTree,\n    TAccountPayer,\n    TAccountTreeCreatorOrDelegate,\n    TAccountCollectionAuthority,\n    TAccountCollectionAuthorityRecordPda,\n    TAccountCollectionMint,\n    TAccountCollectionMetadata,\n    TAccountCollectionEdition,\n    TAccountBubblegumSigner,\n    TAccountLogWrapper,\n    TAccountCompressionProgram,\n    TAccountTokenMetadataProgram,\n    TAccountSystemProgram\n  >,\n  config?: { programAddress?: TProgramAddress }\n): Promise<\n  UnverifyCollectionInstruction<\n    TProgramAddress,\n    TAccountTreeConfig,\n    TAccountLeafOwner,\n    TAccountLeafDelegate,\n    TAccountMerkleTree,\n    TAccountPayer,\n    TAccountTreeCreatorOrDelegate,\n    TAccountCollectionAuthority,\n    TAccountCollectionAuthorityRecordPda,\n    TAccountCollectionMint,\n    TAccountCollectionMetadata,\n    TAccountCollectionEdition,\n    TAccountBubblegumSigner,\n    TAccountLogWrapper,\n    TAccountCompressionProgram,\n    TAccountTokenMetadataProgram,\n    TAccountSystemProgram\n  >\n> {\n  // Program address.\n  const programAddress =\n    config?.programAddress ?? MPL_BUBBLEGUM_PROGRAM_ADDRESS;\n\n  // Original accounts.\n  const originalAccounts = {\n    treeConfig: { value: input.treeConfig ?? null, isWritable: false },\n    leafOwner: { value: input.leafOwner ?? null, isWritable: false },\n    leafDelegate: { value: input.leafDelegate ?? null, isWritable: false },\n    merkleTree: { value: input.merkleTree ?? null, isWritable: true },\n    payer: { value: input.payer ?? null, isWritable: false },\n    treeCreatorOrDelegate: {\n      value: input.treeCreatorOrDelegate ?? null,\n      isWritable: false,\n    },\n    collectionAuthority: {\n      value: input.collectionAuthority ?? null,\n      isWritable: false,\n    },\n    collectionAuthorityRecordPda: {\n      value: input.collectionAuthorityRecordPda ?? null,\n      isWritable: false,\n    },\n    collectionMint: { value: input.collectionMint ?? null, isWritable: false },\n    collectionMetadata: {\n      value: input.collectionMetadata ?? null,\n      isWritable: true,\n    },\n    collectionEdition: {\n      value: input.collectionEdition ?? null,\n      isWritable: false,\n    },\n    bubblegumSigner: {\n      value: input.bubblegumSigner ?? null,\n      isWritable: false,\n    },\n    logWrapper: { value: input.logWrapper ?? null, isWritable: false },\n    compressionProgram: {\n      value: input.compressionProgram ?? null,\n      isWritable: false,\n    },\n    tokenMetadataProgram: {\n      value: input.tokenMetadataProgram ?? null,\n      isWritable: false,\n    },\n    systemProgram: { value: input.systemProgram ?? null, isWritable: false },\n  };\n  const accounts = originalAccounts as Record<\n    keyof typeof originalAccounts,\n    ResolvedAccount\n  >;\n\n  // Original args.\n  const args = { ...input };\n\n  // Resolver scope.\n  const resolverScope = { programAddress, accounts, args };\n\n  // Resolve default values.\n  if (!accounts.treeConfig.value) {\n    accounts.treeConfig.value = await findTreeConfigPda({\n      merkleTree: expectAddress(accounts.merkleTree.value),\n    });\n  }\n  if (!accounts.leafDelegate.value) {\n    accounts.leafDelegate.value = expectSome(accounts.leafOwner.value);\n  }\n  if (!accounts.collectionMetadata.value) {\n    accounts.collectionMetadata.value = await findMetadataPda({\n      mint: expectAddress(accounts.collectionMint.value),\n    });\n  }\n  if (!accounts.collectionEdition.value) {\n    accounts.collectionEdition.value = await findMasterEditionPda({\n      mint: expectAddress(accounts.collectionMint.value),\n    });\n  }\n  if (!accounts.bubblegumSigner.value) {\n    accounts.bubblegumSigner.value = programAddress;\n    accounts.bubblegumSigner.isWritable = false;\n  }\n  if (!accounts.logWrapper.value) {\n    accounts.logWrapper.value =\n      'noopb9bkMVfRPU8AsbpTUg8AQkHtKwMYZiFUjNRtMmV' as Address<'noopb9bkMVfRPU8AsbpTUg8AQkHtKwMYZiFUjNRtMmV'>;\n  }\n  if (!accounts.compressionProgram.value) {\n    accounts.compressionProgram.value =\n      'cmtDvXumGCrqC1Age74AVPhSRVXJMd8PJS91L8KbNCK' as Address<'cmtDvXumGCrqC1Age74AVPhSRVXJMd8PJS91L8KbNCK'>;\n  }\n  if (!accounts.tokenMetadataProgram.value) {\n    accounts.tokenMetadataProgram.value =\n      'BGUMAp9Gq7iTEuizy4pqaxsTyUCBK68MDfK752saRPUY' as Address<'BGUMAp9Gq7iTEuizy4pqaxsTyUCBK68MDfK752saRPUY'>;\n  }\n  if (!accounts.systemProgram.value) {\n    accounts.systemProgram.value =\n      '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>;\n  }\n  if (!args.dataHash) {\n    args.dataHash = resolveDataHash(resolverScope);\n  }\n  if (!args.creatorHash) {\n    args.creatorHash = resolveCreatorHash(resolverScope);\n  }\n\n  // Remaining accounts.\n  const remainingAccounts: AccountMeta[] = (args.proof ?? []).map(\n    (address) => ({ address, role: AccountRole.READONLY })\n  );\n\n  const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n  return Object.freeze({\n    accounts: [\n      getAccountMeta(accounts.treeConfig),\n      getAccountMeta(accounts.leafOwner),\n      getAccountMeta(accounts.leafDelegate),\n      getAccountMeta(accounts.merkleTree),\n      getAccountMeta(accounts.payer),\n      getAccountMeta(accounts.treeCreatorOrDelegate),\n      getAccountMeta(accounts.collectionAuthority),\n      getAccountMeta(accounts.collectionAuthorityRecordPda),\n      getAccountMeta(accounts.collectionMint),\n      getAccountMeta(accounts.collectionMetadata),\n      getAccountMeta(accounts.collectionEdition),\n      getAccountMeta(accounts.bubblegumSigner),\n      getAccountMeta(accounts.logWrapper),\n      getAccountMeta(accounts.compressionProgram),\n      getAccountMeta(accounts.tokenMetadataProgram),\n      getAccountMeta(accounts.systemProgram),\n      ...remainingAccounts,\n    ],\n    data: getUnverifyCollectionInstructionDataEncoder().encode(\n      args as UnverifyCollectionInstructionDataArgs\n    ),\n    programAddress,\n  } as UnverifyCollectionInstruction<\n    TProgramAddress,\n    TAccountTreeConfig,\n    TAccountLeafOwner,\n    TAccountLeafDelegate,\n    TAccountMerkleTree,\n    TAccountPayer,\n    TAccountTreeCreatorOrDelegate,\n    TAccountCollectionAuthority,\n    TAccountCollectionAuthorityRecordPda,\n    TAccountCollectionMint,\n    TAccountCollectionMetadata,\n    TAccountCollectionEdition,\n    TAccountBubblegumSigner,\n    TAccountLogWrapper,\n    TAccountCompressionProgram,\n    TAccountTokenMetadataProgram,\n    TAccountSystemProgram\n  >);\n}\n\nexport type UnverifyCollectionInput<\n  TAccountTreeConfig extends string = string,\n  TAccountLeafOwner extends string = string,\n  TAccountLeafDelegate extends string = string,\n  TAccountMerkleTree extends string = string,\n  TAccountPayer extends string = string,\n  TAccountTreeCreatorOrDelegate extends string = string,\n  TAccountCollectionAuthority extends string = string,\n  TAccountCollectionAuthorityRecordPda extends string = string,\n  TAccountCollectionMint extends string = string,\n  TAccountCollectionMetadata extends string = string,\n  TAccountCollectionEdition extends string = string,\n  TAccountBubblegumSigner extends string = string,\n  TAccountLogWrapper extends string = string,\n  TAccountCompressionProgram extends string = string,\n  TAccountTokenMetadataProgram extends string = string,\n  TAccountSystemProgram extends string = string,\n> = {\n  treeConfig: Address<TAccountTreeConfig>;\n  leafOwner: Address<TAccountLeafOwner>;\n  leafDelegate?: Address<TAccountLeafDelegate>;\n  merkleTree: Address<TAccountMerkleTree>;\n  payer: TransactionSigner<TAccountPayer>;\n  /**\n   * This account is checked to be a signer in\n   * the case of `set_and_verify_collection` where\n   * we are actually changing the NFT metadata.\n   */\n  treeCreatorOrDelegate: Address<TAccountTreeCreatorOrDelegate>;\n  collectionAuthority: TransactionSigner<TAccountCollectionAuthority>;\n  /**\n   * If there is no collecton authority record PDA then\n   * this must be the Bubblegum program address.\n   */\n  collectionAuthorityRecordPda?: Address<TAccountCollectionAuthorityRecordPda>;\n  collectionMint: Address<TAccountCollectionMint>;\n  collectionMetadata: Address<TAccountCollectionMetadata>;\n  collectionEdition: Address<TAccountCollectionEdition>;\n  bubblegumSigner?: Address<TAccountBubblegumSigner>;\n  logWrapper?: Address<TAccountLogWrapper>;\n  compressionProgram?: Address<TAccountCompressionProgram>;\n  tokenMetadataProgram?: Address<TAccountTokenMetadataProgram>;\n  systemProgram?: Address<TAccountSystemProgram>;\n  root: UnverifyCollectionInstructionDataArgs['root'];\n  dataHash?: UnverifyCollectionInstructionDataArgs['dataHash'];\n  creatorHash?: UnverifyCollectionInstructionDataArgs['creatorHash'];\n  nonce: UnverifyCollectionInstructionDataArgs['nonce'];\n  index: UnverifyCollectionInstructionDataArgs['index'];\n  metadata: UnverifyCollectionInstructionDataArgs['metadata'];\n  proof?: Array<Address>;\n};\n\nexport function getUnverifyCollectionInstruction<\n  TAccountTreeConfig extends string,\n  TAccountLeafOwner extends string,\n  TAccountLeafDelegate extends string,\n  TAccountMerkleTree extends string,\n  TAccountPayer extends string,\n  TAccountTreeCreatorOrDelegate extends string,\n  TAccountCollectionAuthority extends string,\n  TAccountCollectionAuthorityRecordPda extends string,\n  TAccountCollectionMint extends string,\n  TAccountCollectionMetadata extends string,\n  TAccountCollectionEdition extends string,\n  TAccountBubblegumSigner extends string,\n  TAccountLogWrapper extends string,\n  TAccountCompressionProgram extends string,\n  TAccountTokenMetadataProgram extends string,\n  TAccountSystemProgram extends string,\n  TProgramAddress extends Address = typeof MPL_BUBBLEGUM_PROGRAM_ADDRESS,\n>(\n  input: UnverifyCollectionInput<\n    TAccountTreeConfig,\n    TAccountLeafOwner,\n    TAccountLeafDelegate,\n    TAccountMerkleTree,\n    TAccountPayer,\n    TAccountTreeCreatorOrDelegate,\n    TAccountCollectionAuthority,\n    TAccountCollectionAuthorityRecordPda,\n    TAccountCollectionMint,\n    TAccountCollectionMetadata,\n    TAccountCollectionEdition,\n    TAccountBubblegumSigner,\n    TAccountLogWrapper,\n    TAccountCompressionProgram,\n    TAccountTokenMetadataProgram,\n    TAccountSystemProgram\n  >,\n  config?: { programAddress?: TProgramAddress }\n): UnverifyCollectionInstruction<\n  TProgramAddress,\n  TAccountTreeConfig,\n  TAccountLeafOwner,\n  TAccountLeafDelegate,\n  TAccountMerkleTree,\n  TAccountPayer,\n  TAccountTreeCreatorOrDelegate,\n  TAccountCollectionAuthority,\n  TAccountCollectionAuthorityRecordPda,\n  TAccountCollectionMint,\n  TAccountCollectionMetadata,\n  TAccountCollectionEdition,\n  TAccountBubblegumSigner,\n  TAccountLogWrapper,\n  TAccountCompressionProgram,\n  TAccountTokenMetadataProgram,\n  TAccountSystemProgram\n> {\n  // Program address.\n  const programAddress =\n    config?.programAddress ?? MPL_BUBBLEGUM_PROGRAM_ADDRESS;\n\n  // Original accounts.\n  const originalAccounts = {\n    treeConfig: { value: input.treeConfig ?? null, isWritable: false },\n    leafOwner: { value: input.leafOwner ?? null, isWritable: false },\n    leafDelegate: { value: input.leafDelegate ?? null, isWritable: false },\n    merkleTree: { value: input.merkleTree ?? null, isWritable: true },\n    payer: { value: input.payer ?? null, isWritable: false },\n    treeCreatorOrDelegate: {\n      value: input.treeCreatorOrDelegate ?? null,\n      isWritable: false,\n    },\n    collectionAuthority: {\n      value: input.collectionAuthority ?? null,\n      isWritable: false,\n    },\n    collectionAuthorityRecordPda: {\n      value: input.collectionAuthorityRecordPda ?? null,\n      isWritable: false,\n    },\n    collectionMint: { value: input.collectionMint ?? null, isWritable: false },\n    collectionMetadata: {\n      value: input.collectionMetadata ?? null,\n      isWritable: true,\n    },\n    collectionEdition: {\n      value: input.collectionEdition ?? null,\n      isWritable: false,\n    },\n    bubblegumSigner: {\n      value: input.bubblegumSigner ?? null,\n      isWritable: false,\n    },\n    logWrapper: { value: input.logWrapper ?? null, isWritable: false },\n    compressionProgram: {\n      value: input.compressionProgram ?? null,\n      isWritable: false,\n    },\n    tokenMetadataProgram: {\n      value: input.tokenMetadataProgram ?? null,\n      isWritable: false,\n    },\n    systemProgram: { value: input.systemProgram ?? null, isWritable: false },\n  };\n  const accounts = originalAccounts as Record<\n    keyof typeof originalAccounts,\n    ResolvedAccount\n  >;\n\n  // Original args.\n  const args = { ...input };\n\n  // Resolver scope.\n  const resolverScope = { programAddress, accounts, args };\n\n  // Resolve default values.\n  if (!accounts.leafDelegate.value) {\n    accounts.leafDelegate.value = expectSome(accounts.leafOwner.value);\n  }\n  if (!accounts.bubblegumSigner.value) {\n    accounts.bubblegumSigner.value = programAddress;\n    accounts.bubblegumSigner.isWritable = false;\n  }\n  if (!accounts.logWrapper.value) {\n    accounts.logWrapper.value =\n      'noopb9bkMVfRPU8AsbpTUg8AQkHtKwMYZiFUjNRtMmV' as Address<'noopb9bkMVfRPU8AsbpTUg8AQkHtKwMYZiFUjNRtMmV'>;\n  }\n  if (!accounts.compressionProgram.value) {\n    accounts.compressionProgram.value =\n      'cmtDvXumGCrqC1Age74AVPhSRVXJMd8PJS91L8KbNCK' as Address<'cmtDvXumGCrqC1Age74AVPhSRVXJMd8PJS91L8KbNCK'>;\n  }\n  if (!accounts.tokenMetadataProgram.value) {\n    accounts.tokenMetadataProgram.value =\n      'BGUMAp9Gq7iTEuizy4pqaxsTyUCBK68MDfK752saRPUY' as Address<'BGUMAp9Gq7iTEuizy4pqaxsTyUCBK68MDfK752saRPUY'>;\n  }\n  if (!accounts.systemProgram.value) {\n    accounts.systemProgram.value =\n      '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>;\n  }\n  if (!args.dataHash) {\n    args.dataHash = resolveDataHash(resolverScope);\n  }\n  if (!args.creatorHash) {\n    args.creatorHash = resolveCreatorHash(resolverScope);\n  }\n\n  // Remaining accounts.\n  const remainingAccounts: AccountMeta[] = (args.proof ?? []).map(\n    (address) => ({ address, role: AccountRole.READONLY })\n  );\n\n  const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n  return Object.freeze({\n    accounts: [\n      getAccountMeta(accounts.treeConfig),\n      getAccountMeta(accounts.leafOwner),\n      getAccountMeta(accounts.leafDelegate),\n      getAccountMeta(accounts.merkleTree),\n      getAccountMeta(accounts.payer),\n      getAccountMeta(accounts.treeCreatorOrDelegate),\n      getAccountMeta(accounts.collectionAuthority),\n      getAccountMeta(accounts.collectionAuthorityRecordPda),\n      getAccountMeta(accounts.collectionMint),\n      getAccountMeta(accounts.collectionMetadata),\n      getAccountMeta(accounts.collectionEdition),\n      getAccountMeta(accounts.bubblegumSigner),\n      getAccountMeta(accounts.logWrapper),\n      getAccountMeta(accounts.compressionProgram),\n      getAccountMeta(accounts.tokenMetadataProgram),\n      getAccountMeta(accounts.systemProgram),\n      ...remainingAccounts,\n    ],\n    data: getUnverifyCollectionInstructionDataEncoder().encode(\n      args as UnverifyCollectionInstructionDataArgs\n    ),\n    programAddress,\n  } as UnverifyCollectionInstruction<\n    TProgramAddress,\n    TAccountTreeConfig,\n    TAccountLeafOwner,\n    TAccountLeafDelegate,\n    TAccountMerkleTree,\n    TAccountPayer,\n    TAccountTreeCreatorOrDelegate,\n    TAccountCollectionAuthority,\n    TAccountCollectionAuthorityRecordPda,\n    TAccountCollectionMint,\n    TAccountCollectionMetadata,\n    TAccountCollectionEdition,\n    TAccountBubblegumSigner,\n    TAccountLogWrapper,\n    TAccountCompressionProgram,\n    TAccountTokenMetadataProgram,\n    TAccountSystemProgram\n  >);\n}\n\nexport type ParsedUnverifyCollectionInstruction<\n  TProgram extends string = typeof MPL_BUBBLEGUM_PROGRAM_ADDRESS,\n  TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n  programAddress: Address<TProgram>;\n  accounts: {\n    treeConfig: TAccountMetas[0];\n    leafOwner: TAccountMetas[1];\n    leafDelegate: TAccountMetas[2];\n    merkleTree: TAccountMetas[3];\n    payer: TAccountMetas[4];\n    /**\n     * This account is checked to be a signer in\n     * the case of `set_and_verify_collection` where\n     * we are actually changing the NFT metadata.\n     */\n    treeCreatorOrDelegate: TAccountMetas[5];\n    collectionAuthority: TAccountMetas[6];\n    /**\n     * If there is no collecton authority record PDA then\n     * this must be the Bubblegum program address.\n     */\n    collectionAuthorityRecordPda?: TAccountMetas[7] | undefined;\n    collectionMint: TAccountMetas[8];\n    collectionMetadata: TAccountMetas[9];\n    collectionEdition: TAccountMetas[10];\n    bubblegumSigner: TAccountMetas[11];\n    logWrapper: TAccountMetas[12];\n    compressionProgram: TAccountMetas[13];\n    tokenMetadataProgram: TAccountMetas[14];\n    systemProgram: TAccountMetas[15];\n  };\n  data: UnverifyCollectionInstructionData;\n};\n\nexport function parseUnverifyCollectionInstruction<\n  TProgram extends string,\n  TAccountMetas extends readonly AccountMeta[],\n>(\n  instruction: Instruction<TProgram> &\n    InstructionWithAccounts<TAccountMetas> &\n    InstructionWithData<ReadonlyUint8Array>\n): ParsedUnverifyCollectionInstruction<TProgram, TAccountMetas> {\n  if (instruction.accounts.length < 16) {\n    // TODO: Coded error.\n    throw new Error('Not enough accounts');\n  }\n  let accountIndex = 0;\n  const getNextAccount = () => {\n    const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n    accountIndex += 1;\n    return accountMeta;\n  };\n  const getNextOptionalAccount = () => {\n    const accountMeta = getNextAccount();\n    return accountMeta.address === MPL_BUBBLEGUM_PROGRAM_ADDRESS\n      ? undefined\n      : accountMeta;\n  };\n  return {\n    programAddress: instruction.programAddress,\n    accounts: {\n      treeConfig: getNextAccount(),\n      leafOwner: getNextAccount(),\n      leafDelegate: getNextAccount(),\n      merkleTree: getNextAccount(),\n      payer: getNextAccount(),\n      treeCreatorOrDelegate: getNextAccount(),\n      collectionAuthority: getNextAccount(),\n      collectionAuthorityRecordPda: getNextOptionalAccount(),\n      collectionMint: getNextAccount(),\n      collectionMetadata: getNextAccount(),\n      collectionEdition: getNextAccount(),\n      bubblegumSigner: getNextAccount(),\n      logWrapper: getNextAccount(),\n      compressionProgram: getNextAccount(),\n      tokenMetadataProgram: getNextAccount(),\n      systemProgram: getNextAccount(),\n    },\n    data: getUnverifyCollectionInstructionDataDecoder().decode(\n      instruction.data\n    ),\n  };\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  AccountRole,\n  combineCodec,\n  fixDecoderSize,\n  fixEncoderSize,\n  getBytesDecoder,\n  getBytesEncoder,\n  getStructDecoder,\n  getStructEncoder,\n  getU32Decoder,\n  getU32Encoder,\n  getU64Decoder,\n  getU64Encoder,\n  transformEncoder,\n  type AccountMeta,\n  type AccountSignerMeta,\n  type Address,\n  type Codec,\n  type Decoder,\n  type Encoder,\n  type Instruction,\n  type InstructionWithAccounts,\n  type InstructionWithData,\n  type ReadonlyAccount,\n  type ReadonlySignerAccount,\n  type ReadonlyUint8Array,\n  type TransactionSigner,\n  type WritableAccount,\n} from '@solana/kit';\nimport { resolveCreatorHash, resolveDataHash } from '../../hooked';\nimport { findTreeConfigPda } from '../pdas';\nimport { MPL_BUBBLEGUM_PROGRAM_ADDRESS } from '../programs';\nimport {\n  expectAddress,\n  expectSome,\n  getAccountMetaFactory,\n  type ResolvedAccount,\n} from '../shared';\nimport {\n  getMetadataArgsDecoder,\n  getMetadataArgsEncoder,\n  type MetadataArgs,\n  type MetadataArgsArgs,\n} from '../types';\n\nexport const UNVERIFY_CREATOR_DISCRIMINATOR = new Uint8Array([\n  107, 178, 57, 39, 105, 115, 112, 152,\n]);\n\nexport function getUnverifyCreatorDiscriminatorBytes() {\n  return fixEncoderSize(getBytesEncoder(), 8).encode(\n    UNVERIFY_CREATOR_DISCRIMINATOR\n  );\n}\n\nexport type UnverifyCreatorInstruction<\n  TProgram extends string = typeof MPL_BUBBLEGUM_PROGRAM_ADDRESS,\n  TAccountTreeConfig extends string | AccountMeta<string> = string,\n  TAccountLeafOwner extends string | AccountMeta<string> = string,\n  TAccountLeafDelegate extends string | AccountMeta<string> = string,\n  TAccountMerkleTree extends string | AccountMeta<string> = string,\n  TAccountPayer extends string | AccountMeta<string> = string,\n  TAccountCreator extends string | AccountMeta<string> = string,\n  TAccountLogWrapper extends\n    | string\n    | AccountMeta<string> = 'noopb9bkMVfRPU8AsbpTUg8AQkHtKwMYZiFUjNRtMmV',\n  TAccountCompressionProgram extends\n    | string\n    | AccountMeta<string> = 'cmtDvXumGCrqC1Age74AVPhSRVXJMd8PJS91L8KbNCK',\n  TAccountSystemProgram extends\n    | string\n    | AccountMeta<string> = '11111111111111111111111111111111',\n  TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n  InstructionWithData<ReadonlyUint8Array> &\n  InstructionWithAccounts<\n    [\n      TAccountTreeConfig extends string\n        ? ReadonlyAccount<TAccountTreeConfig>\n        : TAccountTreeConfig,\n      TAccountLeafOwner extends string\n        ? ReadonlyAccount<TAccountLeafOwner>\n        : TAccountLeafOwner,\n      TAccountLeafDelegate extends string\n        ? ReadonlyAccount<TAccountLeafDelegate>\n        : TAccountLeafDelegate,\n      TAccountMerkleTree extends string\n        ? WritableAccount<TAccountMerkleTree>\n        : TAccountMerkleTree,\n      TAccountPayer extends string\n        ? ReadonlySignerAccount<TAccountPayer> &\n            AccountSignerMeta<TAccountPayer>\n        : TAccountPayer,\n      TAccountCreator extends string\n        ? ReadonlySignerAccount<TAccountCreator> &\n            AccountSignerMeta<TAccountCreator>\n        : TAccountCreator,\n      TAccountLogWrapper extends string\n        ? ReadonlyAccount<TAccountLogWrapper>\n        : TAccountLogWrapper,\n      TAccountCompressionProgram extends string\n        ? ReadonlyAccount<TAccountCompressionProgram>\n        : TAccountCompressionProgram,\n      TAccountSystemProgram extends string\n        ? ReadonlyAccount<TAccountSystemProgram>\n        : TAccountSystemProgram,\n      ...TRemainingAccounts,\n    ]\n  >;\n\nexport type UnverifyCreatorInstructionData = {\n  discriminator: ReadonlyUint8Array;\n  root: ReadonlyUint8Array;\n  dataHash: ReadonlyUint8Array;\n  creatorHash: ReadonlyUint8Array;\n  nonce: bigint;\n  index: number;\n  metadata: MetadataArgs;\n};\n\nexport type UnverifyCreatorInstructionDataArgs = {\n  root: ReadonlyUint8Array;\n  dataHash: ReadonlyUint8Array;\n  creatorHash: ReadonlyUint8Array;\n  nonce: number | bigint;\n  index: number;\n  metadata: MetadataArgsArgs;\n};\n\nexport function getUnverifyCreatorInstructionDataEncoder(): Encoder<UnverifyCreatorInstructionDataArgs> {\n  return transformEncoder(\n    getStructEncoder([\n      ['discriminator', fixEncoderSize(getBytesEncoder(), 8)],\n      ['root', fixEncoderSize(getBytesEncoder(), 32)],\n      ['dataHash', fixEncoderSize(getBytesEncoder(), 32)],\n      ['creatorHash', fixEncoderSize(getBytesEncoder(), 32)],\n      ['nonce', getU64Encoder()],\n      ['index', getU32Encoder()],\n      ['metadata', getMetadataArgsEncoder()],\n    ]),\n    (value) => ({ ...value, discriminator: UNVERIFY_CREATOR_DISCRIMINATOR })\n  );\n}\n\nexport function getUnverifyCreatorInstructionDataDecoder(): Decoder<UnverifyCreatorInstructionData> {\n  return getStructDecoder([\n    ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n    ['root', fixDecoderSize(getBytesDecoder(), 32)],\n    ['dataHash', fixDecoderSize(getBytesDecoder(), 32)],\n    ['creatorHash', fixDecoderSize(getBytesDecoder(), 32)],\n    ['nonce', getU64Decoder()],\n    ['index', getU32Decoder()],\n    ['metadata', getMetadataArgsDecoder()],\n  ]);\n}\n\nexport function getUnverifyCreatorInstructionDataCodec(): Codec<\n  UnverifyCreatorInstructionDataArgs,\n  UnverifyCreatorInstructionData\n> {\n  return combineCodec(\n    getUnverifyCreatorInstructionDataEncoder(),\n    getUnverifyCreatorInstructionDataDecoder()\n  );\n}\n\nexport type UnverifyCreatorAsyncInput<\n  TAccountTreeConfig extends string = string,\n  TAccountLeafOwner extends string = string,\n  TAccountLeafDelegate extends string = string,\n  TAccountMerkleTree extends string = string,\n  TAccountPayer extends string = string,\n  TAccountCreator extends string = string,\n  TAccountLogWrapper extends string = string,\n  TAccountCompressionProgram extends string = string,\n  TAccountSystemProgram extends string = string,\n> = {\n  treeConfig?: Address<TAccountTreeConfig>;\n  leafOwner: Address<TAccountLeafOwner>;\n  leafDelegate?: Address<TAccountLeafDelegate>;\n  merkleTree: Address<TAccountMerkleTree>;\n  payer: TransactionSigner<TAccountPayer>;\n  creator: TransactionSigner<TAccountCreator>;\n  logWrapper?: Address<TAccountLogWrapper>;\n  compressionProgram?: Address<TAccountCompressionProgram>;\n  systemProgram?: Address<TAccountSystemProgram>;\n  root: UnverifyCreatorInstructionDataArgs['root'];\n  dataHash?: UnverifyCreatorInstructionDataArgs['dataHash'];\n  creatorHash?: UnverifyCreatorInstructionDataArgs['creatorHash'];\n  nonce: UnverifyCreatorInstructionDataArgs['nonce'];\n  index: UnverifyCreatorInstructionDataArgs['index'];\n  metadata: UnverifyCreatorInstructionDataArgs['metadata'];\n  proof?: Array<Address>;\n};\n\nexport async function getUnverifyCreatorInstructionAsync<\n  TAccountTreeConfig extends string,\n  TAccountLeafOwner extends string,\n  TAccountLeafDelegate extends string,\n  TAccountMerkleTree extends string,\n  TAccountPayer extends string,\n  TAccountCreator extends string,\n  TAccountLogWrapper extends string,\n  TAccountCompressionProgram extends string,\n  TAccountSystemProgram extends string,\n  TProgramAddress extends Address = typeof MPL_BUBBLEGUM_PROGRAM_ADDRESS,\n>(\n  input: UnverifyCreatorAsyncInput<\n    TAccountTreeConfig,\n    TAccountLeafOwner,\n    TAccountLeafDelegate,\n    TAccountMerkleTree,\n    TAccountPayer,\n    TAccountCreator,\n    TAccountLogWrapper,\n    TAccountCompressionProgram,\n    TAccountSystemProgram\n  >,\n  config?: { programAddress?: TProgramAddress }\n): Promise<\n  UnverifyCreatorInstruction<\n    TProgramAddress,\n    TAccountTreeConfig,\n    TAccountLeafOwner,\n    TAccountLeafDelegate,\n    TAccountMerkleTree,\n    TAccountPayer,\n    TAccountCreator,\n    TAccountLogWrapper,\n    TAccountCompressionProgram,\n    TAccountSystemProgram\n  >\n> {\n  // Program address.\n  const programAddress =\n    config?.programAddress ?? MPL_BUBBLEGUM_PROGRAM_ADDRESS;\n\n  // Original accounts.\n  const originalAccounts = {\n    treeConfig: { value: input.treeConfig ?? null, isWritable: false },\n    leafOwner: { value: input.leafOwner ?? null, isWritable: false },\n    leafDelegate: { value: input.leafDelegate ?? null, isWritable: false },\n    merkleTree: { value: input.merkleTree ?? null, isWritable: true },\n    payer: { value: input.payer ?? null, isWritable: false },\n    creator: { value: input.creator ?? null, isWritable: false },\n    logWrapper: { value: input.logWrapper ?? null, isWritable: false },\n    compressionProgram: {\n      value: input.compressionProgram ?? null,\n      isWritable: false,\n    },\n    systemProgram: { value: input.systemProgram ?? null, isWritable: false },\n  };\n  const accounts = originalAccounts as Record<\n    keyof typeof originalAccounts,\n    ResolvedAccount\n  >;\n\n  // Original args.\n  const args = { ...input };\n\n  // Resolver scope.\n  const resolverScope = { programAddress, accounts, args };\n\n  // Resolve default values.\n  if (!accounts.treeConfig.value) {\n    accounts.treeConfig.value = await findTreeConfigPda({\n      merkleTree: expectAddress(accounts.merkleTree.value),\n    });\n  }\n  if (!accounts.leafDelegate.value) {\n    accounts.leafDelegate.value = expectSome(accounts.leafOwner.value);\n  }\n  if (!accounts.logWrapper.value) {\n    accounts.logWrapper.value =\n      'noopb9bkMVfRPU8AsbpTUg8AQkHtKwMYZiFUjNRtMmV' as Address<'noopb9bkMVfRPU8AsbpTUg8AQkHtKwMYZiFUjNRtMmV'>;\n  }\n  if (!accounts.compressionProgram.value) {\n    accounts.compressionProgram.value =\n      'cmtDvXumGCrqC1Age74AVPhSRVXJMd8PJS91L8KbNCK' as Address<'cmtDvXumGCrqC1Age74AVPhSRVXJMd8PJS91L8KbNCK'>;\n  }\n  if (!accounts.systemProgram.value) {\n    accounts.systemProgram.value =\n      '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>;\n  }\n  if (!args.dataHash) {\n    args.dataHash = resolveDataHash(resolverScope);\n  }\n  if (!args.creatorHash) {\n    args.creatorHash = resolveCreatorHash(resolverScope);\n  }\n\n  // Remaining accounts.\n  const remainingAccounts: AccountMeta[] = (args.proof ?? []).map(\n    (address) => ({ address, role: AccountRole.READONLY })\n  );\n\n  const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n  return Object.freeze({\n    accounts: [\n      getAccountMeta(accounts.treeConfig),\n      getAccountMeta(accounts.leafOwner),\n      getAccountMeta(accounts.leafDelegate),\n      getAccountMeta(accounts.merkleTree),\n      getAccountMeta(accounts.payer),\n      getAccountMeta(accounts.creator),\n      getAccountMeta(accounts.logWrapper),\n      getAccountMeta(accounts.compressionProgram),\n      getAccountMeta(accounts.systemProgram),\n      ...remainingAccounts,\n    ],\n    data: getUnverifyCreatorInstructionDataEncoder().encode(\n      args as UnverifyCreatorInstructionDataArgs\n    ),\n    programAddress,\n  } as UnverifyCreatorInstruction<\n    TProgramAddress,\n    TAccountTreeConfig,\n    TAccountLeafOwner,\n    TAccountLeafDelegate,\n    TAccountMerkleTree,\n    TAccountPayer,\n    TAccountCreator,\n    TAccountLogWrapper,\n    TAccountCompressionProgram,\n    TAccountSystemProgram\n  >);\n}\n\nexport type UnverifyCreatorInput<\n  TAccountTreeConfig extends string = string,\n  TAccountLeafOwner extends string = string,\n  TAccountLeafDelegate extends string = string,\n  TAccountMerkleTree extends string = string,\n  TAccountPayer extends string = string,\n  TAccountCreator extends string = string,\n  TAccountLogWrapper extends string = string,\n  TAccountCompressionProgram extends string = string,\n  TAccountSystemProgram extends string = string,\n> = {\n  treeConfig: Address<TAccountTreeConfig>;\n  leafOwner: Address<TAccountLeafOwner>;\n  leafDelegate?: Address<TAccountLeafDelegate>;\n  merkleTree: Address<TAccountMerkleTree>;\n  payer: TransactionSigner<TAccountPayer>;\n  creator: TransactionSigner<TAccountCreator>;\n  logWrapper?: Address<TAccountLogWrapper>;\n  compressionProgram?: Address<TAccountCompressionProgram>;\n  systemProgram?: Address<TAccountSystemProgram>;\n  root: UnverifyCreatorInstructionDataArgs['root'];\n  dataHash?: UnverifyCreatorInstructionDataArgs['dataHash'];\n  creatorHash?: UnverifyCreatorInstructionDataArgs['creatorHash'];\n  nonce: UnverifyCreatorInstructionDataArgs['nonce'];\n  index: UnverifyCreatorInstructionDataArgs['index'];\n  metadata: UnverifyCreatorInstructionDataArgs['metadata'];\n  proof?: Array<Address>;\n};\n\nexport function getUnverifyCreatorInstruction<\n  TAccountTreeConfig extends string,\n  TAccountLeafOwner extends string,\n  TAccountLeafDelegate extends string,\n  TAccountMerkleTree extends string,\n  TAccountPayer extends string,\n  TAccountCreator extends string,\n  TAccountLogWrapper extends string,\n  TAccountCompressionProgram extends string,\n  TAccountSystemProgram extends string,\n  TProgramAddress extends Address = typeof MPL_BUBBLEGUM_PROGRAM_ADDRESS,\n>(\n  input: UnverifyCreatorInput<\n    TAccountTreeConfig,\n    TAccountLeafOwner,\n    TAccountLeafDelegate,\n    TAccountMerkleTree,\n    TAccountPayer,\n    TAccountCreator,\n    TAccountLogWrapper,\n    TAccountCompressionProgram,\n    TAccountSystemProgram\n  >,\n  config?: { programAddress?: TProgramAddress }\n): UnverifyCreatorInstruction<\n  TProgramAddress,\n  TAccountTreeConfig,\n  TAccountLeafOwner,\n  TAccountLeafDelegate,\n  TAccountMerkleTree,\n  TAccountPayer,\n  TAccountCreator,\n  TAccountLogWrapper,\n  TAccountCompressionProgram,\n  TAccountSystemProgram\n> {\n  // Program address.\n  const programAddress =\n    config?.programAddress ?? MPL_BUBBLEGUM_PROGRAM_ADDRESS;\n\n  // Original accounts.\n  const originalAccounts = {\n    treeConfig: { value: input.treeConfig ?? null, isWritable: false },\n    leafOwner: { value: input.leafOwner ?? null, isWritable: false },\n    leafDelegate: { value: input.leafDelegate ?? null, isWritable: false },\n    merkleTree: { value: input.merkleTree ?? null, isWritable: true },\n    payer: { value: input.payer ?? null, isWritable: false },\n    creator: { value: input.creator ?? null, isWritable: false },\n    logWrapper: { value: input.logWrapper ?? null, isWritable: false },\n    compressionProgram: {\n      value: input.compressionProgram ?? null,\n      isWritable: false,\n    },\n    systemProgram: { value: input.systemProgram ?? null, isWritable: false },\n  };\n  const accounts = originalAccounts as Record<\n    keyof typeof originalAccounts,\n    ResolvedAccount\n  >;\n\n  // Original args.\n  const args = { ...input };\n\n  // Resolver scope.\n  const resolverScope = { programAddress, accounts, args };\n\n  // Resolve default values.\n  if (!accounts.leafDelegate.value) {\n    accounts.leafDelegate.value = expectSome(accounts.leafOwner.value);\n  }\n  if (!accounts.logWrapper.value) {\n    accounts.logWrapper.value =\n      'noopb9bkMVfRPU8AsbpTUg8AQkHtKwMYZiFUjNRtMmV' as Address<'noopb9bkMVfRPU8AsbpTUg8AQkHtKwMYZiFUjNRtMmV'>;\n  }\n  if (!accounts.compressionProgram.value) {\n    accounts.compressionProgram.value =\n      'cmtDvXumGCrqC1Age74AVPhSRVXJMd8PJS91L8KbNCK' as Address<'cmtDvXumGCrqC1Age74AVPhSRVXJMd8PJS91L8KbNCK'>;\n  }\n  if (!accounts.systemProgram.value) {\n    accounts.systemProgram.value =\n      '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>;\n  }\n  if (!args.dataHash) {\n    args.dataHash = resolveDataHash(resolverScope);\n  }\n  if (!args.creatorHash) {\n    args.creatorHash = resolveCreatorHash(resolverScope);\n  }\n\n  // Remaining accounts.\n  const remainingAccounts: AccountMeta[] = (args.proof ?? []).map(\n    (address) => ({ address, role: AccountRole.READONLY })\n  );\n\n  const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n  return Object.freeze({\n    accounts: [\n      getAccountMeta(accounts.treeConfig),\n      getAccountMeta(accounts.leafOwner),\n      getAccountMeta(accounts.leafDelegate),\n      getAccountMeta(accounts.merkleTree),\n      getAccountMeta(accounts.payer),\n      getAccountMeta(accounts.creator),\n      getAccountMeta(accounts.logWrapper),\n      getAccountMeta(accounts.compressionProgram),\n      getAccountMeta(accounts.systemProgram),\n      ...remainingAccounts,\n    ],\n    data: getUnverifyCreatorInstructionDataEncoder().encode(\n      args as UnverifyCreatorInstructionDataArgs\n    ),\n    programAddress,\n  } as UnverifyCreatorInstruction<\n    TProgramAddress,\n    TAccountTreeConfig,\n    TAccountLeafOwner,\n    TAccountLeafDelegate,\n    TAccountMerkleTree,\n    TAccountPayer,\n    TAccountCreator,\n    TAccountLogWrapper,\n    TAccountCompressionProgram,\n    TAccountSystemProgram\n  >);\n}\n\nexport type ParsedUnverifyCreatorInstruction<\n  TProgram extends string = typeof MPL_BUBBLEGUM_PROGRAM_ADDRESS,\n  TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n  programAddress: Address<TProgram>;\n  accounts: {\n    treeConfig: TAccountMetas[0];\n    leafOwner: TAccountMetas[1];\n    leafDelegate: TAccountMetas[2];\n    merkleTree: TAccountMetas[3];\n    payer: TAccountMetas[4];\n    creator: TAccountMetas[5];\n    logWrapper: TAccountMetas[6];\n    compressionProgram: TAccountMetas[7];\n    systemProgram: TAccountMetas[8];\n  };\n  data: UnverifyCreatorInstructionData;\n};\n\nexport function parseUnverifyCreatorInstruction<\n  TProgram extends string,\n  TAccountMetas extends readonly AccountMeta[],\n>(\n  instruction: Instruction<TProgram> &\n    InstructionWithAccounts<TAccountMetas> &\n    InstructionWithData<ReadonlyUint8Array>\n): ParsedUnverifyCreatorInstruction<TProgram, TAccountMetas> {\n  if (instruction.accounts.length < 9) {\n    // TODO: Coded error.\n    throw new Error('Not enough accounts');\n  }\n  let accountIndex = 0;\n  const getNextAccount = () => {\n    const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n    accountIndex += 1;\n    return accountMeta;\n  };\n  return {\n    programAddress: instruction.programAddress,\n    accounts: {\n      treeConfig: getNextAccount(),\n      leafOwner: getNextAccount(),\n      leafDelegate: getNextAccount(),\n      merkleTree: getNextAccount(),\n      payer: getNextAccount(),\n      creator: getNextAccount(),\n      logWrapper: getNextAccount(),\n      compressionProgram: getNextAccount(),\n      systemProgram: getNextAccount(),\n    },\n    data: getUnverifyCreatorInstructionDataDecoder().decode(instruction.data),\n  };\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  AccountRole,\n  combineCodec,\n  fixDecoderSize,\n  fixEncoderSize,\n  getBytesDecoder,\n  getBytesEncoder,\n  getOptionDecoder,\n  getOptionEncoder,\n  getStructDecoder,\n  getStructEncoder,\n  getU32Decoder,\n  getU32Encoder,\n  getU64Decoder,\n  getU64Encoder,\n  getU8Decoder,\n  getU8Encoder,\n  none,\n  transformEncoder,\n  type AccountMeta,\n  type AccountSignerMeta,\n  type Address,\n  type Codec,\n  type Decoder,\n  type Encoder,\n  type Instruction,\n  type InstructionWithAccounts,\n  type InstructionWithData,\n  type Option,\n  type OptionOrNullable,\n  type ReadonlyAccount,\n  type ReadonlySignerAccount,\n  type ReadonlyUint8Array,\n  type TransactionSigner,\n  type WritableAccount,\n  type WritableSignerAccount,\n} from '@solana/kit';\nimport { findTreeConfigPda } from '../pdas';\nimport { MPL_BUBBLEGUM_PROGRAM_ADDRESS } from '../programs';\nimport {\n  expectAddress,\n  getAccountMetaFactory,\n  type ResolvedAccount,\n} from '../shared';\nimport {\n  getMetadataArgsV2Decoder,\n  getMetadataArgsV2Encoder,\n  type MetadataArgsV2,\n  type MetadataArgsV2Args,\n} from '../types';\n\nexport const UNVERIFY_CREATOR_V2_DISCRIMINATOR = new Uint8Array([\n  174, 112, 29, 142, 230, 100, 239, 7,\n]);\n\nexport function getUnverifyCreatorV2DiscriminatorBytes() {\n  return fixEncoderSize(getBytesEncoder(), 8).encode(\n    UNVERIFY_CREATOR_V2_DISCRIMINATOR\n  );\n}\n\nexport type UnverifyCreatorV2Instruction<\n  TProgram extends string = typeof MPL_BUBBLEGUM_PROGRAM_ADDRESS,\n  TAccountTreeConfig extends string | AccountMeta<string> = string,\n  TAccountPayer extends string | AccountMeta<string> = string,\n  TAccountCreator extends string | AccountMeta<string> = string,\n  TAccountLeafOwner extends string | AccountMeta<string> = string,\n  TAccountLeafDelegate extends string | AccountMeta<string> = string,\n  TAccountMerkleTree extends string | AccountMeta<string> = string,\n  TAccountLogWrapper extends\n    | string\n    | AccountMeta<string> = 'mnoopTCrg4p8ry25e4bcWA9XZjbNjMTfgYVGGEdRsf3',\n  TAccountCompressionProgram extends\n    | string\n    | AccountMeta<string> = 'mcmt6YrQEMKw8Mw43FmpRLmf7BqRnFMKmAcbxE3xkAW',\n  TAccountSystemProgram extends\n    | string\n    | AccountMeta<string> = '11111111111111111111111111111111',\n  TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n  InstructionWithData<ReadonlyUint8Array> &\n  InstructionWithAccounts<\n    [\n      TAccountTreeConfig extends string\n        ? WritableAccount<TAccountTreeConfig>\n        : TAccountTreeConfig,\n      TAccountPayer extends string\n        ? WritableSignerAccount<TAccountPayer> &\n            AccountSignerMeta<TAccountPayer>\n        : TAccountPayer,\n      TAccountCreator extends string\n        ? ReadonlySignerAccount<TAccountCreator> &\n            AccountSignerMeta<TAccountCreator>\n        : TAccountCreator,\n      TAccountLeafOwner extends string\n        ? ReadonlyAccount<TAccountLeafOwner>\n        : TAccountLeafOwner,\n      TAccountLeafDelegate extends string\n        ? ReadonlyAccount<TAccountLeafDelegate>\n        : TAccountLeafDelegate,\n      TAccountMerkleTree extends string\n        ? WritableAccount<TAccountMerkleTree>\n        : TAccountMerkleTree,\n      TAccountLogWrapper extends string\n        ? ReadonlyAccount<TAccountLogWrapper>\n        : TAccountLogWrapper,\n      TAccountCompressionProgram extends string\n        ? ReadonlyAccount<TAccountCompressionProgram>\n        : TAccountCompressionProgram,\n      TAccountSystemProgram extends string\n        ? ReadonlyAccount<TAccountSystemProgram>\n        : TAccountSystemProgram,\n      ...TRemainingAccounts,\n    ]\n  >;\n\nexport type UnverifyCreatorV2InstructionData = {\n  discriminator: ReadonlyUint8Array;\n  root: ReadonlyUint8Array;\n  assetDataHash: Option<ReadonlyUint8Array>;\n  flags: Option<number>;\n  nonce: bigint;\n  index: number;\n  metadata: MetadataArgsV2;\n};\n\nexport type UnverifyCreatorV2InstructionDataArgs = {\n  root: ReadonlyUint8Array;\n  assetDataHash?: OptionOrNullable<ReadonlyUint8Array>;\n  flags?: OptionOrNullable<number>;\n  nonce: number | bigint;\n  index: number;\n  metadata: MetadataArgsV2Args;\n};\n\nexport function getUnverifyCreatorV2InstructionDataEncoder(): Encoder<UnverifyCreatorV2InstructionDataArgs> {\n  return transformEncoder(\n    getStructEncoder([\n      ['discriminator', fixEncoderSize(getBytesEncoder(), 8)],\n      ['root', fixEncoderSize(getBytesEncoder(), 32)],\n      [\n        'assetDataHash',\n        getOptionEncoder(fixEncoderSize(getBytesEncoder(), 32)),\n      ],\n      ['flags', getOptionEncoder(getU8Encoder())],\n      ['nonce', getU64Encoder()],\n      ['index', getU32Encoder()],\n      ['metadata', getMetadataArgsV2Encoder()],\n    ]),\n    (value) => ({\n      ...value,\n      discriminator: UNVERIFY_CREATOR_V2_DISCRIMINATOR,\n      assetDataHash: value.assetDataHash ?? none(),\n      flags: value.flags ?? none(),\n    })\n  );\n}\n\nexport function getUnverifyCreatorV2InstructionDataDecoder(): Decoder<UnverifyCreatorV2InstructionData> {\n  return getStructDecoder([\n    ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n    ['root', fixDecoderSize(getBytesDecoder(), 32)],\n    ['assetDataHash', getOptionDecoder(fixDecoderSize(getBytesDecoder(), 32))],\n    ['flags', getOptionDecoder(getU8Decoder())],\n    ['nonce', getU64Decoder()],\n    ['index', getU32Decoder()],\n    ['metadata', getMetadataArgsV2Decoder()],\n  ]);\n}\n\nexport function getUnverifyCreatorV2InstructionDataCodec(): Codec<\n  UnverifyCreatorV2InstructionDataArgs,\n  UnverifyCreatorV2InstructionData\n> {\n  return combineCodec(\n    getUnverifyCreatorV2InstructionDataEncoder(),\n    getUnverifyCreatorV2InstructionDataDecoder()\n  );\n}\n\nexport type UnverifyCreatorV2AsyncInput<\n  TAccountTreeConfig extends string = string,\n  TAccountPayer extends string = string,\n  TAccountCreator extends string = string,\n  TAccountLeafOwner extends string = string,\n  TAccountLeafDelegate extends string = string,\n  TAccountMerkleTree extends string = string,\n  TAccountLogWrapper extends string = string,\n  TAccountCompressionProgram extends string = string,\n  TAccountSystemProgram extends string = string,\n> = {\n  treeConfig?: Address<TAccountTreeConfig>;\n  payer: TransactionSigner<TAccountPayer>;\n  /** Optional creator, defaults to `payer` */\n  creator?: TransactionSigner<TAccountCreator>;\n  leafOwner: Address<TAccountLeafOwner>;\n  /** Defaults to `leaf_owner` */\n  leafDelegate?: Address<TAccountLeafDelegate>;\n  merkleTree: Address<TAccountMerkleTree>;\n  logWrapper?: Address<TAccountLogWrapper>;\n  compressionProgram?: Address<TAccountCompressionProgram>;\n  systemProgram?: Address<TAccountSystemProgram>;\n  root: UnverifyCreatorV2InstructionDataArgs['root'];\n  assetDataHash?: UnverifyCreatorV2InstructionDataArgs['assetDataHash'];\n  flags?: UnverifyCreatorV2InstructionDataArgs['flags'];\n  nonce: UnverifyCreatorV2InstructionDataArgs['nonce'];\n  index: UnverifyCreatorV2InstructionDataArgs['index'];\n  metadata: UnverifyCreatorV2InstructionDataArgs['metadata'];\n  proof?: Array<Address>;\n};\n\nexport async function getUnverifyCreatorV2InstructionAsync<\n  TAccountTreeConfig extends string,\n  TAccountPayer extends string,\n  TAccountCreator extends string,\n  TAccountLeafOwner extends string,\n  TAccountLeafDelegate extends string,\n  TAccountMerkleTree extends string,\n  TAccountLogWrapper extends string,\n  TAccountCompressionProgram extends string,\n  TAccountSystemProgram extends string,\n  TProgramAddress extends Address = typeof MPL_BUBBLEGUM_PROGRAM_ADDRESS,\n>(\n  input: UnverifyCreatorV2AsyncInput<\n    TAccountTreeConfig,\n    TAccountPayer,\n    TAccountCreator,\n    TAccountLeafOwner,\n    TAccountLeafDelegate,\n    TAccountMerkleTree,\n    TAccountLogWrapper,\n    TAccountCompressionProgram,\n    TAccountSystemProgram\n  >,\n  config?: { programAddress?: TProgramAddress }\n): Promise<\n  UnverifyCreatorV2Instruction<\n    TProgramAddress,\n    TAccountTreeConfig,\n    TAccountPayer,\n    TAccountCreator,\n    TAccountLeafOwner,\n    TAccountLeafDelegate,\n    TAccountMerkleTree,\n    TAccountLogWrapper,\n    TAccountCompressionProgram,\n    TAccountSystemProgram\n  >\n> {\n  // Program address.\n  const programAddress =\n    config?.programAddress ?? MPL_BUBBLEGUM_PROGRAM_ADDRESS;\n\n  // Original accounts.\n  const originalAccounts = {\n    treeConfig: { value: input.treeConfig ?? null, isWritable: true },\n    payer: { value: input.payer ?? null, isWritable: true },\n    creator: { value: input.creator ?? null, isWritable: false },\n    leafOwner: { value: input.leafOwner ?? null, isWritable: false },\n    leafDelegate: { value: input.leafDelegate ?? null, isWritable: false },\n    merkleTree: { value: input.merkleTree ?? null, isWritable: true },\n    logWrapper: { value: input.logWrapper ?? null, isWritable: false },\n    compressionProgram: {\n      value: input.compressionProgram ?? null,\n      isWritable: false,\n    },\n    systemProgram: { value: input.systemProgram ?? null, isWritable: false },\n  };\n  const accounts = originalAccounts as Record<\n    keyof typeof originalAccounts,\n    ResolvedAccount\n  >;\n\n  // Original args.\n  const args = { ...input };\n\n  // Resolve default values.\n  if (!accounts.treeConfig.value) {\n    accounts.treeConfig.value = await findTreeConfigPda({\n      merkleTree: expectAddress(accounts.merkleTree.value),\n    });\n  }\n  if (!accounts.logWrapper.value) {\n    accounts.logWrapper.value =\n      'mnoopTCrg4p8ry25e4bcWA9XZjbNjMTfgYVGGEdRsf3' as Address<'mnoopTCrg4p8ry25e4bcWA9XZjbNjMTfgYVGGEdRsf3'>;\n  }\n  if (!accounts.compressionProgram.value) {\n    accounts.compressionProgram.value =\n      'mcmt6YrQEMKw8Mw43FmpRLmf7BqRnFMKmAcbxE3xkAW' as Address<'mcmt6YrQEMKw8Mw43FmpRLmf7BqRnFMKmAcbxE3xkAW'>;\n  }\n  if (!accounts.systemProgram.value) {\n    accounts.systemProgram.value =\n      '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>;\n  }\n\n  // Remaining accounts.\n  const remainingAccounts: AccountMeta[] = (args.proof ?? []).map(\n    (address) => ({ address, role: AccountRole.READONLY })\n  );\n\n  const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n  return Object.freeze({\n    accounts: [\n      getAccountMeta(accounts.treeConfig),\n      getAccountMeta(accounts.payer),\n      getAccountMeta(accounts.creator),\n      getAccountMeta(accounts.leafOwner),\n      getAccountMeta(accounts.leafDelegate),\n      getAccountMeta(accounts.merkleTree),\n      getAccountMeta(accounts.logWrapper),\n      getAccountMeta(accounts.compressionProgram),\n      getAccountMeta(accounts.systemProgram),\n      ...remainingAccounts,\n    ],\n    data: getUnverifyCreatorV2InstructionDataEncoder().encode(\n      args as UnverifyCreatorV2InstructionDataArgs\n    ),\n    programAddress,\n  } as UnverifyCreatorV2Instruction<\n    TProgramAddress,\n    TAccountTreeConfig,\n    TAccountPayer,\n    TAccountCreator,\n    TAccountLeafOwner,\n    TAccountLeafDelegate,\n    TAccountMerkleTree,\n    TAccountLogWrapper,\n    TAccountCompressionProgram,\n    TAccountSystemProgram\n  >);\n}\n\nexport type UnverifyCreatorV2Input<\n  TAccountTreeConfig extends string = string,\n  TAccountPayer extends string = string,\n  TAccountCreator extends string = string,\n  TAccountLeafOwner extends string = string,\n  TAccountLeafDelegate extends string = string,\n  TAccountMerkleTree extends string = string,\n  TAccountLogWrapper extends string = string,\n  TAccountCompressionProgram extends string = string,\n  TAccountSystemProgram extends string = string,\n> = {\n  treeConfig: Address<TAccountTreeConfig>;\n  payer: TransactionSigner<TAccountPayer>;\n  /** Optional creator, defaults to `payer` */\n  creator?: TransactionSigner<TAccountCreator>;\n  leafOwner: Address<TAccountLeafOwner>;\n  /** Defaults to `leaf_owner` */\n  leafDelegate?: Address<TAccountLeafDelegate>;\n  merkleTree: Address<TAccountMerkleTree>;\n  logWrapper?: Address<TAccountLogWrapper>;\n  compressionProgram?: Address<TAccountCompressionProgram>;\n  systemProgram?: Address<TAccountSystemProgram>;\n  root: UnverifyCreatorV2InstructionDataArgs['root'];\n  assetDataHash?: UnverifyCreatorV2InstructionDataArgs['assetDataHash'];\n  flags?: UnverifyCreatorV2InstructionDataArgs['flags'];\n  nonce: UnverifyCreatorV2InstructionDataArgs['nonce'];\n  index: UnverifyCreatorV2InstructionDataArgs['index'];\n  metadata: UnverifyCreatorV2InstructionDataArgs['metadata'];\n  proof?: Array<Address>;\n};\n\nexport function getUnverifyCreatorV2Instruction<\n  TAccountTreeConfig extends string,\n  TAccountPayer extends string,\n  TAccountCreator extends string,\n  TAccountLeafOwner extends string,\n  TAccountLeafDelegate extends string,\n  TAccountMerkleTree extends string,\n  TAccountLogWrapper extends string,\n  TAccountCompressionProgram extends string,\n  TAccountSystemProgram extends string,\n  TProgramAddress extends Address = typeof MPL_BUBBLEGUM_PROGRAM_ADDRESS,\n>(\n  input: UnverifyCreatorV2Input<\n    TAccountTreeConfig,\n    TAccountPayer,\n    TAccountCreator,\n    TAccountLeafOwner,\n    TAccountLeafDelegate,\n    TAccountMerkleTree,\n    TAccountLogWrapper,\n    TAccountCompressionProgram,\n    TAccountSystemProgram\n  >,\n  config?: { programAddress?: TProgramAddress }\n): UnverifyCreatorV2Instruction<\n  TProgramAddress,\n  TAccountTreeConfig,\n  TAccountPayer,\n  TAccountCreator,\n  TAccountLeafOwner,\n  TAccountLeafDelegate,\n  TAccountMerkleTree,\n  TAccountLogWrapper,\n  TAccountCompressionProgram,\n  TAccountSystemProgram\n> {\n  // Program address.\n  const programAddress =\n    config?.programAddress ?? MPL_BUBBLEGUM_PROGRAM_ADDRESS;\n\n  // Original accounts.\n  const originalAccounts = {\n    treeConfig: { value: input.treeConfig ?? null, isWritable: true },\n    payer: { value: input.payer ?? null, isWritable: true },\n    creator: { value: input.creator ?? null, isWritable: false },\n    leafOwner: { value: input.leafOwner ?? null, isWritable: false },\n    leafDelegate: { value: input.leafDelegate ?? null, isWritable: false },\n    merkleTree: { value: input.merkleTree ?? null, isWritable: true },\n    logWrapper: { value: input.logWrapper ?? null, isWritable: false },\n    compressionProgram: {\n      value: input.compressionProgram ?? null,\n      isWritable: false,\n    },\n    systemProgram: { value: input.systemProgram ?? null, isWritable: false },\n  };\n  const accounts = originalAccounts as Record<\n    keyof typeof originalAccounts,\n    ResolvedAccount\n  >;\n\n  // Original args.\n  const args = { ...input };\n\n  // Resolve default values.\n  if (!accounts.logWrapper.value) {\n    accounts.logWrapper.value =\n      'mnoopTCrg4p8ry25e4bcWA9XZjbNjMTfgYVGGEdRsf3' as Address<'mnoopTCrg4p8ry25e4bcWA9XZjbNjMTfgYVGGEdRsf3'>;\n  }\n  if (!accounts.compressionProgram.value) {\n    accounts.compressionProgram.value =\n      'mcmt6YrQEMKw8Mw43FmpRLmf7BqRnFMKmAcbxE3xkAW' as Address<'mcmt6YrQEMKw8Mw43FmpRLmf7BqRnFMKmAcbxE3xkAW'>;\n  }\n  if (!accounts.systemProgram.value) {\n    accounts.systemProgram.value =\n      '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>;\n  }\n\n  // Remaining accounts.\n  const remainingAccounts: AccountMeta[] = (args.proof ?? []).map(\n    (address) => ({ address, role: AccountRole.READONLY })\n  );\n\n  const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n  return Object.freeze({\n    accounts: [\n      getAccountMeta(accounts.treeConfig),\n      getAccountMeta(accounts.payer),\n      getAccountMeta(accounts.creator),\n      getAccountMeta(accounts.leafOwner),\n      getAccountMeta(accounts.leafDelegate),\n      getAccountMeta(accounts.merkleTree),\n      getAccountMeta(accounts.logWrapper),\n      getAccountMeta(accounts.compressionProgram),\n      getAccountMeta(accounts.systemProgram),\n      ...remainingAccounts,\n    ],\n    data: getUnverifyCreatorV2InstructionDataEncoder().encode(\n      args as UnverifyCreatorV2InstructionDataArgs\n    ),\n    programAddress,\n  } as UnverifyCreatorV2Instruction<\n    TProgramAddress,\n    TAccountTreeConfig,\n    TAccountPayer,\n    TAccountCreator,\n    TAccountLeafOwner,\n    TAccountLeafDelegate,\n    TAccountMerkleTree,\n    TAccountLogWrapper,\n    TAccountCompressionProgram,\n    TAccountSystemProgram\n  >);\n}\n\nexport type ParsedUnverifyCreatorV2Instruction<\n  TProgram extends string = typeof MPL_BUBBLEGUM_PROGRAM_ADDRESS,\n  TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n  programAddress: Address<TProgram>;\n  accounts: {\n    treeConfig: TAccountMetas[0];\n    payer: TAccountMetas[1];\n    /** Optional creator, defaults to `payer` */\n    creator?: TAccountMetas[2] | undefined;\n    leafOwner: TAccountMetas[3];\n    /** Defaults to `leaf_owner` */\n    leafDelegate?: TAccountMetas[4] | undefined;\n    merkleTree: TAccountMetas[5];\n    logWrapper: TAccountMetas[6];\n    compressionProgram: TAccountMetas[7];\n    systemProgram: TAccountMetas[8];\n  };\n  data: UnverifyCreatorV2InstructionData;\n};\n\nexport function parseUnverifyCreatorV2Instruction<\n  TProgram extends string,\n  TAccountMetas extends readonly AccountMeta[],\n>(\n  instruction: Instruction<TProgram> &\n    InstructionWithAccounts<TAccountMetas> &\n    InstructionWithData<ReadonlyUint8Array>\n): ParsedUnverifyCreatorV2Instruction<TProgram, TAccountMetas> {\n  if (instruction.accounts.length < 9) {\n    // TODO: Coded error.\n    throw new Error('Not enough accounts');\n  }\n  let accountIndex = 0;\n  const getNextAccount = () => {\n    const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n    accountIndex += 1;\n    return accountMeta;\n  };\n  const getNextOptionalAccount = () => {\n    const accountMeta = getNextAccount();\n    return accountMeta.address === MPL_BUBBLEGUM_PROGRAM_ADDRESS\n      ? undefined\n      : accountMeta;\n  };\n  return {\n    programAddress: instruction.programAddress,\n    accounts: {\n      treeConfig: getNextAccount(),\n      payer: getNextAccount(),\n      creator: getNextOptionalAccount(),\n      leafOwner: getNextAccount(),\n      leafDelegate: getNextOptionalAccount(),\n      merkleTree: getNextAccount(),\n      logWrapper: getNextAccount(),\n      compressionProgram: getNextAccount(),\n      systemProgram: getNextAccount(),\n    },\n    data: getUnverifyCreatorV2InstructionDataDecoder().decode(instruction.data),\n  };\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  AccountRole,\n  addDecoderSizePrefix,\n  addEncoderSizePrefix,\n  combineCodec,\n  fixDecoderSize,\n  fixEncoderSize,\n  getBytesDecoder,\n  getBytesEncoder,\n  getOptionDecoder,\n  getOptionEncoder,\n  getStructDecoder,\n  getStructEncoder,\n  getU32Decoder,\n  getU32Encoder,\n  getU64Decoder,\n  getU64Encoder,\n  getU8Decoder,\n  getU8Encoder,\n  none,\n  transformEncoder,\n  type AccountMeta,\n  type AccountSignerMeta,\n  type Address,\n  type Codec,\n  type Decoder,\n  type Encoder,\n  type Instruction,\n  type InstructionWithAccounts,\n  type InstructionWithData,\n  type Option,\n  type OptionOrNullable,\n  type ReadonlyAccount,\n  type ReadonlySignerAccount,\n  type ReadonlyUint8Array,\n  type TransactionSigner,\n  type WritableAccount,\n  type WritableSignerAccount,\n} from '@solana/kit';\nimport { findTreeConfigPda } from '../pdas';\nimport { MPL_BUBBLEGUM_PROGRAM_ADDRESS } from '../programs';\nimport {\n  expectAddress,\n  getAccountMetaFactory,\n  type ResolvedAccount,\n} from '../shared';\nimport {\n  getAssetDataSchemaDecoder,\n  getAssetDataSchemaEncoder,\n  type AssetDataSchema,\n  type AssetDataSchemaArgs,\n} from '../types';\n\nexport const UPDATE_ASSET_DATA_V2_DISCRIMINATOR = new Uint8Array([\n  59, 56, 111, 43, 95, 14, 11, 61,\n]);\n\nexport function getUpdateAssetDataV2DiscriminatorBytes() {\n  return fixEncoderSize(getBytesEncoder(), 8).encode(\n    UPDATE_ASSET_DATA_V2_DISCRIMINATOR\n  );\n}\n\nexport type UpdateAssetDataV2Instruction<\n  TProgram extends string = typeof MPL_BUBBLEGUM_PROGRAM_ADDRESS,\n  TAccountTreeConfig extends string | AccountMeta<string> = string,\n  TAccountPayer extends string | AccountMeta<string> = string,\n  TAccountAuthority extends string | AccountMeta<string> = string,\n  TAccountLeafOwner extends string | AccountMeta<string> = string,\n  TAccountLeafDelegate extends string | AccountMeta<string> = string,\n  TAccountMerkleTree extends string | AccountMeta<string> = string,\n  TAccountCoreCollection extends string | AccountMeta<string> = string,\n  TAccountLogWrapper extends\n    | string\n    | AccountMeta<string> = 'mnoopTCrg4p8ry25e4bcWA9XZjbNjMTfgYVGGEdRsf3',\n  TAccountCompressionProgram extends\n    | string\n    | AccountMeta<string> = 'mcmt6YrQEMKw8Mw43FmpRLmf7BqRnFMKmAcbxE3xkAW',\n  TAccountSystemProgram extends\n    | string\n    | AccountMeta<string> = '11111111111111111111111111111111',\n  TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n  InstructionWithData<ReadonlyUint8Array> &\n  InstructionWithAccounts<\n    [\n      TAccountTreeConfig extends string\n        ? WritableAccount<TAccountTreeConfig>\n        : TAccountTreeConfig,\n      TAccountPayer extends string\n        ? WritableSignerAccount<TAccountPayer> &\n            AccountSignerMeta<TAccountPayer>\n        : TAccountPayer,\n      TAccountAuthority extends string\n        ? ReadonlySignerAccount<TAccountAuthority> &\n            AccountSignerMeta<TAccountAuthority>\n        : TAccountAuthority,\n      TAccountLeafOwner extends string\n        ? ReadonlyAccount<TAccountLeafOwner>\n        : TAccountLeafOwner,\n      TAccountLeafDelegate extends string\n        ? ReadonlyAccount<TAccountLeafDelegate>\n        : TAccountLeafDelegate,\n      TAccountMerkleTree extends string\n        ? WritableAccount<TAccountMerkleTree>\n        : TAccountMerkleTree,\n      TAccountCoreCollection extends string\n        ? ReadonlyAccount<TAccountCoreCollection>\n        : TAccountCoreCollection,\n      TAccountLogWrapper extends string\n        ? ReadonlyAccount<TAccountLogWrapper>\n        : TAccountLogWrapper,\n      TAccountCompressionProgram extends string\n        ? ReadonlyAccount<TAccountCompressionProgram>\n        : TAccountCompressionProgram,\n      TAccountSystemProgram extends string\n        ? ReadonlyAccount<TAccountSystemProgram>\n        : TAccountSystemProgram,\n      ...TRemainingAccounts,\n    ]\n  >;\n\nexport type UpdateAssetDataV2InstructionData = {\n  discriminator: ReadonlyUint8Array;\n  root: ReadonlyUint8Array;\n  dataHash: ReadonlyUint8Array;\n  creatorHash: ReadonlyUint8Array;\n  previousAssetDataHash: Option<ReadonlyUint8Array>;\n  flags: Option<number>;\n  nonce: bigint;\n  index: number;\n  newAssetData: Option<ReadonlyUint8Array>;\n  newAssetDataSchema: Option<AssetDataSchema>;\n};\n\nexport type UpdateAssetDataV2InstructionDataArgs = {\n  root: ReadonlyUint8Array;\n  dataHash: ReadonlyUint8Array;\n  creatorHash: ReadonlyUint8Array;\n  previousAssetDataHash?: OptionOrNullable<ReadonlyUint8Array>;\n  flags?: OptionOrNullable<number>;\n  nonce: number | bigint;\n  index: number;\n  newAssetData?: OptionOrNullable<ReadonlyUint8Array>;\n  newAssetDataSchema?: OptionOrNullable<AssetDataSchemaArgs>;\n};\n\nexport function getUpdateAssetDataV2InstructionDataEncoder(): Encoder<UpdateAssetDataV2InstructionDataArgs> {\n  return transformEncoder(\n    getStructEncoder([\n      ['discriminator', fixEncoderSize(getBytesEncoder(), 8)],\n      ['root', fixEncoderSize(getBytesEncoder(), 32)],\n      ['dataHash', fixEncoderSize(getBytesEncoder(), 32)],\n      ['creatorHash', fixEncoderSize(getBytesEncoder(), 32)],\n      [\n        'previousAssetDataHash',\n        getOptionEncoder(fixEncoderSize(getBytesEncoder(), 32)),\n      ],\n      ['flags', getOptionEncoder(getU8Encoder())],\n      ['nonce', getU64Encoder()],\n      ['index', getU32Encoder()],\n      [\n        'newAssetData',\n        getOptionEncoder(\n          addEncoderSizePrefix(getBytesEncoder(), getU32Encoder())\n        ),\n      ],\n      ['newAssetDataSchema', getOptionEncoder(getAssetDataSchemaEncoder())],\n    ]),\n    (value) => ({\n      ...value,\n      discriminator: UPDATE_ASSET_DATA_V2_DISCRIMINATOR,\n      previousAssetDataHash: value.previousAssetDataHash ?? none(),\n      flags: value.flags ?? none(),\n      newAssetData: value.newAssetData ?? none(),\n      newAssetDataSchema: value.newAssetDataSchema ?? none(),\n    })\n  );\n}\n\nexport function getUpdateAssetDataV2InstructionDataDecoder(): Decoder<UpdateAssetDataV2InstructionData> {\n  return getStructDecoder([\n    ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n    ['root', fixDecoderSize(getBytesDecoder(), 32)],\n    ['dataHash', fixDecoderSize(getBytesDecoder(), 32)],\n    ['creatorHash', fixDecoderSize(getBytesDecoder(), 32)],\n    [\n      'previousAssetDataHash',\n      getOptionDecoder(fixDecoderSize(getBytesDecoder(), 32)),\n    ],\n    ['flags', getOptionDecoder(getU8Decoder())],\n    ['nonce', getU64Decoder()],\n    ['index', getU32Decoder()],\n    [\n      'newAssetData',\n      getOptionDecoder(\n        addDecoderSizePrefix(getBytesDecoder(), getU32Decoder())\n      ),\n    ],\n    ['newAssetDataSchema', getOptionDecoder(getAssetDataSchemaDecoder())],\n  ]);\n}\n\nexport function getUpdateAssetDataV2InstructionDataCodec(): Codec<\n  UpdateAssetDataV2InstructionDataArgs,\n  UpdateAssetDataV2InstructionData\n> {\n  return combineCodec(\n    getUpdateAssetDataV2InstructionDataEncoder(),\n    getUpdateAssetDataV2InstructionDataDecoder()\n  );\n}\n\nexport type UpdateAssetDataV2AsyncInput<\n  TAccountTreeConfig extends string = string,\n  TAccountPayer extends string = string,\n  TAccountAuthority extends string = string,\n  TAccountLeafOwner extends string = string,\n  TAccountLeafDelegate extends string = string,\n  TAccountMerkleTree extends string = string,\n  TAccountCoreCollection extends string = string,\n  TAccountLogWrapper extends string = string,\n  TAccountCompressionProgram extends string = string,\n  TAccountSystemProgram extends string = string,\n> = {\n  treeConfig?: Address<TAccountTreeConfig>;\n  payer: TransactionSigner<TAccountPayer>;\n  /**\n   * Either collection authority or tree owner/delegate, depending on\n   * whether the item is in a verified collection.  Defaults to `payer`\n   */\n  authority?: TransactionSigner<TAccountAuthority>;\n  leafOwner: Address<TAccountLeafOwner>;\n  leafDelegate?: Address<TAccountLeafDelegate>;\n  merkleTree: Address<TAccountMerkleTree>;\n  coreCollection?: Address<TAccountCoreCollection>;\n  logWrapper?: Address<TAccountLogWrapper>;\n  compressionProgram?: Address<TAccountCompressionProgram>;\n  systemProgram?: Address<TAccountSystemProgram>;\n  root: UpdateAssetDataV2InstructionDataArgs['root'];\n  dataHash: UpdateAssetDataV2InstructionDataArgs['dataHash'];\n  creatorHash: UpdateAssetDataV2InstructionDataArgs['creatorHash'];\n  previousAssetDataHash?: UpdateAssetDataV2InstructionDataArgs['previousAssetDataHash'];\n  flags?: UpdateAssetDataV2InstructionDataArgs['flags'];\n  nonce: UpdateAssetDataV2InstructionDataArgs['nonce'];\n  index: UpdateAssetDataV2InstructionDataArgs['index'];\n  newAssetData?: UpdateAssetDataV2InstructionDataArgs['newAssetData'];\n  newAssetDataSchema?: UpdateAssetDataV2InstructionDataArgs['newAssetDataSchema'];\n  proof?: Array<Address>;\n};\n\nexport async function getUpdateAssetDataV2InstructionAsync<\n  TAccountTreeConfig extends string,\n  TAccountPayer extends string,\n  TAccountAuthority extends string,\n  TAccountLeafOwner extends string,\n  TAccountLeafDelegate extends string,\n  TAccountMerkleTree extends string,\n  TAccountCoreCollection extends string,\n  TAccountLogWrapper extends string,\n  TAccountCompressionProgram extends string,\n  TAccountSystemProgram extends string,\n  TProgramAddress extends Address = typeof MPL_BUBBLEGUM_PROGRAM_ADDRESS,\n>(\n  input: UpdateAssetDataV2AsyncInput<\n    TAccountTreeConfig,\n    TAccountPayer,\n    TAccountAuthority,\n    TAccountLeafOwner,\n    TAccountLeafDelegate,\n    TAccountMerkleTree,\n    TAccountCoreCollection,\n    TAccountLogWrapper,\n    TAccountCompressionProgram,\n    TAccountSystemProgram\n  >,\n  config?: { programAddress?: TProgramAddress }\n): Promise<\n  UpdateAssetDataV2Instruction<\n    TProgramAddress,\n    TAccountTreeConfig,\n    TAccountPayer,\n    TAccountAuthority,\n    TAccountLeafOwner,\n    TAccountLeafDelegate,\n    TAccountMerkleTree,\n    TAccountCoreCollection,\n    TAccountLogWrapper,\n    TAccountCompressionProgram,\n    TAccountSystemProgram\n  >\n> {\n  // Program address.\n  const programAddress =\n    config?.programAddress ?? MPL_BUBBLEGUM_PROGRAM_ADDRESS;\n\n  // Original accounts.\n  const originalAccounts = {\n    treeConfig: { value: input.treeConfig ?? null, isWritable: true },\n    payer: { value: input.payer ?? null, isWritable: true },\n    authority: { value: input.authority ?? null, isWritable: false },\n    leafOwner: { value: input.leafOwner ?? null, isWritable: false },\n    leafDelegate: { value: input.leafDelegate ?? null, isWritable: false },\n    merkleTree: { value: input.merkleTree ?? null, isWritable: true },\n    coreCollection: { value: input.coreCollection ?? null, isWritable: false },\n    logWrapper: { value: input.logWrapper ?? null, isWritable: false },\n    compressionProgram: {\n      value: input.compressionProgram ?? null,\n      isWritable: false,\n    },\n    systemProgram: { value: input.systemProgram ?? null, isWritable: false },\n  };\n  const accounts = originalAccounts as Record<\n    keyof typeof originalAccounts,\n    ResolvedAccount\n  >;\n\n  // Original args.\n  const args = { ...input };\n\n  // Resolve default values.\n  if (!accounts.treeConfig.value) {\n    accounts.treeConfig.value = await findTreeConfigPda({\n      merkleTree: expectAddress(accounts.merkleTree.value),\n    });\n  }\n  if (!accounts.logWrapper.value) {\n    accounts.logWrapper.value =\n      'mnoopTCrg4p8ry25e4bcWA9XZjbNjMTfgYVGGEdRsf3' as Address<'mnoopTCrg4p8ry25e4bcWA9XZjbNjMTfgYVGGEdRsf3'>;\n  }\n  if (!accounts.compressionProgram.value) {\n    accounts.compressionProgram.value =\n      'mcmt6YrQEMKw8Mw43FmpRLmf7BqRnFMKmAcbxE3xkAW' as Address<'mcmt6YrQEMKw8Mw43FmpRLmf7BqRnFMKmAcbxE3xkAW'>;\n  }\n  if (!accounts.systemProgram.value) {\n    accounts.systemProgram.value =\n      '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>;\n  }\n\n  // Remaining accounts.\n  const remainingAccounts: AccountMeta[] = (args.proof ?? []).map(\n    (address) => ({ address, role: AccountRole.READONLY })\n  );\n\n  const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n  return Object.freeze({\n    accounts: [\n      getAccountMeta(accounts.treeConfig),\n      getAccountMeta(accounts.payer),\n      getAccountMeta(accounts.authority),\n      getAccountMeta(accounts.leafOwner),\n      getAccountMeta(accounts.leafDelegate),\n      getAccountMeta(accounts.merkleTree),\n      getAccountMeta(accounts.coreCollection),\n      getAccountMeta(accounts.logWrapper),\n      getAccountMeta(accounts.compressionProgram),\n      getAccountMeta(accounts.systemProgram),\n      ...remainingAccounts,\n    ],\n    data: getUpdateAssetDataV2InstructionDataEncoder().encode(\n      args as UpdateAssetDataV2InstructionDataArgs\n    ),\n    programAddress,\n  } as UpdateAssetDataV2Instruction<\n    TProgramAddress,\n    TAccountTreeConfig,\n    TAccountPayer,\n    TAccountAuthority,\n    TAccountLeafOwner,\n    TAccountLeafDelegate,\n    TAccountMerkleTree,\n    TAccountCoreCollection,\n    TAccountLogWrapper,\n    TAccountCompressionProgram,\n    TAccountSystemProgram\n  >);\n}\n\nexport type UpdateAssetDataV2Input<\n  TAccountTreeConfig extends string = string,\n  TAccountPayer extends string = string,\n  TAccountAuthority extends string = string,\n  TAccountLeafOwner extends string = string,\n  TAccountLeafDelegate extends string = string,\n  TAccountMerkleTree extends string = string,\n  TAccountCoreCollection extends string = string,\n  TAccountLogWrapper extends string = string,\n  TAccountCompressionProgram extends string = string,\n  TAccountSystemProgram extends string = string,\n> = {\n  treeConfig: Address<TAccountTreeConfig>;\n  payer: TransactionSigner<TAccountPayer>;\n  /**\n   * Either collection authority or tree owner/delegate, depending on\n   * whether the item is in a verified collection.  Defaults to `payer`\n   */\n  authority?: TransactionSigner<TAccountAuthority>;\n  leafOwner: Address<TAccountLeafOwner>;\n  leafDelegate?: Address<TAccountLeafDelegate>;\n  merkleTree: Address<TAccountMerkleTree>;\n  coreCollection?: Address<TAccountCoreCollection>;\n  logWrapper?: Address<TAccountLogWrapper>;\n  compressionProgram?: Address<TAccountCompressionProgram>;\n  systemProgram?: Address<TAccountSystemProgram>;\n  root: UpdateAssetDataV2InstructionDataArgs['root'];\n  dataHash: UpdateAssetDataV2InstructionDataArgs['dataHash'];\n  creatorHash: UpdateAssetDataV2InstructionDataArgs['creatorHash'];\n  previousAssetDataHash?: UpdateAssetDataV2InstructionDataArgs['previousAssetDataHash'];\n  flags?: UpdateAssetDataV2InstructionDataArgs['flags'];\n  nonce: UpdateAssetDataV2InstructionDataArgs['nonce'];\n  index: UpdateAssetDataV2InstructionDataArgs['index'];\n  newAssetData?: UpdateAssetDataV2InstructionDataArgs['newAssetData'];\n  newAssetDataSchema?: UpdateAssetDataV2InstructionDataArgs['newAssetDataSchema'];\n  proof?: Array<Address>;\n};\n\nexport function getUpdateAssetDataV2Instruction<\n  TAccountTreeConfig extends string,\n  TAccountPayer extends string,\n  TAccountAuthority extends string,\n  TAccountLeafOwner extends string,\n  TAccountLeafDelegate extends string,\n  TAccountMerkleTree extends string,\n  TAccountCoreCollection extends string,\n  TAccountLogWrapper extends string,\n  TAccountCompressionProgram extends string,\n  TAccountSystemProgram extends string,\n  TProgramAddress extends Address = typeof MPL_BUBBLEGUM_PROGRAM_ADDRESS,\n>(\n  input: UpdateAssetDataV2Input<\n    TAccountTreeConfig,\n    TAccountPayer,\n    TAccountAuthority,\n    TAccountLeafOwner,\n    TAccountLeafDelegate,\n    TAccountMerkleTree,\n    TAccountCoreCollection,\n    TAccountLogWrapper,\n    TAccountCompressionProgram,\n    TAccountSystemProgram\n  >,\n  config?: { programAddress?: TProgramAddress }\n): UpdateAssetDataV2Instruction<\n  TProgramAddress,\n  TAccountTreeConfig,\n  TAccountPayer,\n  TAccountAuthority,\n  TAccountLeafOwner,\n  TAccountLeafDelegate,\n  TAccountMerkleTree,\n  TAccountCoreCollection,\n  TAccountLogWrapper,\n  TAccountCompressionProgram,\n  TAccountSystemProgram\n> {\n  // Program address.\n  const programAddress =\n    config?.programAddress ?? MPL_BUBBLEGUM_PROGRAM_ADDRESS;\n\n  // Original accounts.\n  const originalAccounts = {\n    treeConfig: { value: input.treeConfig ?? null, isWritable: true },\n    payer: { value: input.payer ?? null, isWritable: true },\n    authority: { value: input.authority ?? null, isWritable: false },\n    leafOwner: { value: input.leafOwner ?? null, isWritable: false },\n    leafDelegate: { value: input.leafDelegate ?? null, isWritable: false },\n    merkleTree: { value: input.merkleTree ?? null, isWritable: true },\n    coreCollection: { value: input.coreCollection ?? null, isWritable: false },\n    logWrapper: { value: input.logWrapper ?? null, isWritable: false },\n    compressionProgram: {\n      value: input.compressionProgram ?? null,\n      isWritable: false,\n    },\n    systemProgram: { value: input.systemProgram ?? null, isWritable: false },\n  };\n  const accounts = originalAccounts as Record<\n    keyof typeof originalAccounts,\n    ResolvedAccount\n  >;\n\n  // Original args.\n  const args = { ...input };\n\n  // Resolve default values.\n  if (!accounts.logWrapper.value) {\n    accounts.logWrapper.value =\n      'mnoopTCrg4p8ry25e4bcWA9XZjbNjMTfgYVGGEdRsf3' as Address<'mnoopTCrg4p8ry25e4bcWA9XZjbNjMTfgYVGGEdRsf3'>;\n  }\n  if (!accounts.compressionProgram.value) {\n    accounts.compressionProgram.value =\n      'mcmt6YrQEMKw8Mw43FmpRLmf7BqRnFMKmAcbxE3xkAW' as Address<'mcmt6YrQEMKw8Mw43FmpRLmf7BqRnFMKmAcbxE3xkAW'>;\n  }\n  if (!accounts.systemProgram.value) {\n    accounts.systemProgram.value =\n      '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>;\n  }\n\n  // Remaining accounts.\n  const remainingAccounts: AccountMeta[] = (args.proof ?? []).map(\n    (address) => ({ address, role: AccountRole.READONLY })\n  );\n\n  const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n  return Object.freeze({\n    accounts: [\n      getAccountMeta(accounts.treeConfig),\n      getAccountMeta(accounts.payer),\n      getAccountMeta(accounts.authority),\n      getAccountMeta(accounts.leafOwner),\n      getAccountMeta(accounts.leafDelegate),\n      getAccountMeta(accounts.merkleTree),\n      getAccountMeta(accounts.coreCollection),\n      getAccountMeta(accounts.logWrapper),\n      getAccountMeta(accounts.compressionProgram),\n      getAccountMeta(accounts.systemProgram),\n      ...remainingAccounts,\n    ],\n    data: getUpdateAssetDataV2InstructionDataEncoder().encode(\n      args as UpdateAssetDataV2InstructionDataArgs\n    ),\n    programAddress,\n  } as UpdateAssetDataV2Instruction<\n    TProgramAddress,\n    TAccountTreeConfig,\n    TAccountPayer,\n    TAccountAuthority,\n    TAccountLeafOwner,\n    TAccountLeafDelegate,\n    TAccountMerkleTree,\n    TAccountCoreCollection,\n    TAccountLogWrapper,\n    TAccountCompressionProgram,\n    TAccountSystemProgram\n  >);\n}\n\nexport type ParsedUpdateAssetDataV2Instruction<\n  TProgram extends string = typeof MPL_BUBBLEGUM_PROGRAM_ADDRESS,\n  TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n  programAddress: Address<TProgram>;\n  accounts: {\n    treeConfig: TAccountMetas[0];\n    payer: TAccountMetas[1];\n    /**\n     * Either collection authority or tree owner/delegate, depending on\n     * whether the item is in a verified collection.  Defaults to `payer`\n     */\n    authority?: TAccountMetas[2] | undefined;\n    leafOwner: TAccountMetas[3];\n    leafDelegate?: TAccountMetas[4] | undefined;\n    merkleTree: TAccountMetas[5];\n    coreCollection?: TAccountMetas[6] | undefined;\n    logWrapper: TAccountMetas[7];\n    compressionProgram: TAccountMetas[8];\n    systemProgram: TAccountMetas[9];\n  };\n  data: UpdateAssetDataV2InstructionData;\n};\n\nexport function parseUpdateAssetDataV2Instruction<\n  TProgram extends string,\n  TAccountMetas extends readonly AccountMeta[],\n>(\n  instruction: Instruction<TProgram> &\n    InstructionWithAccounts<TAccountMetas> &\n    InstructionWithData<ReadonlyUint8Array>\n): ParsedUpdateAssetDataV2Instruction<TProgram, TAccountMetas> {\n  if (instruction.accounts.length < 10) {\n    // TODO: Coded error.\n    throw new Error('Not enough accounts');\n  }\n  let accountIndex = 0;\n  const getNextAccount = () => {\n    const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n    accountIndex += 1;\n    return accountMeta;\n  };\n  const getNextOptionalAccount = () => {\n    const accountMeta = getNextAccount();\n    return accountMeta.address === MPL_BUBBLEGUM_PROGRAM_ADDRESS\n      ? undefined\n      : accountMeta;\n  };\n  return {\n    programAddress: instruction.programAddress,\n    accounts: {\n      treeConfig: getNextAccount(),\n      payer: getNextAccount(),\n      authority: getNextOptionalAccount(),\n      leafOwner: getNextAccount(),\n      leafDelegate: getNextOptionalAccount(),\n      merkleTree: getNextAccount(),\n      coreCollection: getNextOptionalAccount(),\n      logWrapper: getNextAccount(),\n      compressionProgram: getNextAccount(),\n      systemProgram: getNextAccount(),\n    },\n    data: getUpdateAssetDataV2InstructionDataDecoder().decode(instruction.data),\n  };\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  AccountRole,\n  combineCodec,\n  fixDecoderSize,\n  fixEncoderSize,\n  getBytesDecoder,\n  getBytesEncoder,\n  getStructDecoder,\n  getStructEncoder,\n  getU32Decoder,\n  getU32Encoder,\n  getU64Decoder,\n  getU64Encoder,\n  transformEncoder,\n  type AccountMeta,\n  type AccountSignerMeta,\n  type Address,\n  type Codec,\n  type Decoder,\n  type Encoder,\n  type Instruction,\n  type InstructionWithAccounts,\n  type InstructionWithData,\n  type ReadonlyAccount,\n  type ReadonlySignerAccount,\n  type ReadonlyUint8Array,\n  type TransactionSigner,\n  type WritableAccount,\n} from '@solana/kit';\nimport { findTreeConfigPda } from '../pdas';\nimport { MPL_BUBBLEGUM_PROGRAM_ADDRESS } from '../programs';\nimport {\n  expectAddress,\n  expectSome,\n  getAccountMetaFactory,\n  type ResolvedAccount,\n} from '../shared';\nimport {\n  getMetadataArgsDecoder,\n  getMetadataArgsEncoder,\n  getUpdateArgsDecoder,\n  getUpdateArgsEncoder,\n  type MetadataArgs,\n  type MetadataArgsArgs,\n  type UpdateArgs,\n  type UpdateArgsArgs,\n} from '../types';\n\nexport const UPDATE_METADATA_DISCRIMINATOR = new Uint8Array([\n  170, 182, 43, 239, 97, 78, 225, 186,\n]);\n\nexport function getUpdateMetadataDiscriminatorBytes() {\n  return fixEncoderSize(getBytesEncoder(), 8).encode(\n    UPDATE_METADATA_DISCRIMINATOR\n  );\n}\n\nexport type UpdateMetadataInstruction<\n  TProgram extends string = typeof MPL_BUBBLEGUM_PROGRAM_ADDRESS,\n  TAccountTreeConfig extends string | AccountMeta<string> = string,\n  TAccountAuthority extends string | AccountMeta<string> = string,\n  TAccountCollectionMint extends string | AccountMeta<string> = string,\n  TAccountCollectionMetadata extends string | AccountMeta<string> = string,\n  TAccountCollectionAuthorityRecordPda extends\n    | string\n    | AccountMeta<string> = string,\n  TAccountLeafOwner extends string | AccountMeta<string> = string,\n  TAccountLeafDelegate extends string | AccountMeta<string> = string,\n  TAccountPayer extends string | AccountMeta<string> = string,\n  TAccountMerkleTree extends string | AccountMeta<string> = string,\n  TAccountLogWrapper extends\n    | string\n    | AccountMeta<string> = 'noopb9bkMVfRPU8AsbpTUg8AQkHtKwMYZiFUjNRtMmV',\n  TAccountCompressionProgram extends\n    | string\n    | AccountMeta<string> = 'cmtDvXumGCrqC1Age74AVPhSRVXJMd8PJS91L8KbNCK',\n  TAccountTokenMetadataProgram extends\n    | string\n    | AccountMeta<string> = 'BGUMAp9Gq7iTEuizy4pqaxsTyUCBK68MDfK752saRPUY',\n  TAccountSystemProgram extends\n    | string\n    | AccountMeta<string> = '11111111111111111111111111111111',\n  TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n  InstructionWithData<ReadonlyUint8Array> &\n  InstructionWithAccounts<\n    [\n      TAccountTreeConfig extends string\n        ? ReadonlyAccount<TAccountTreeConfig>\n        : TAccountTreeConfig,\n      TAccountAuthority extends string\n        ? ReadonlySignerAccount<TAccountAuthority> &\n            AccountSignerMeta<TAccountAuthority>\n        : TAccountAuthority,\n      TAccountCollectionMint extends string\n        ? ReadonlyAccount<TAccountCollectionMint>\n        : TAccountCollectionMint,\n      TAccountCollectionMetadata extends string\n        ? ReadonlyAccount<TAccountCollectionMetadata>\n        : TAccountCollectionMetadata,\n      TAccountCollectionAuthorityRecordPda extends string\n        ? ReadonlyAccount<TAccountCollectionAuthorityRecordPda>\n        : TAccountCollectionAuthorityRecordPda,\n      TAccountLeafOwner extends string\n        ? ReadonlyAccount<TAccountLeafOwner>\n        : TAccountLeafOwner,\n      TAccountLeafDelegate extends string\n        ? ReadonlyAccount<TAccountLeafDelegate>\n        : TAccountLeafDelegate,\n      TAccountPayer extends string\n        ? ReadonlySignerAccount<TAccountPayer> &\n            AccountSignerMeta<TAccountPayer>\n        : TAccountPayer,\n      TAccountMerkleTree extends string\n        ? WritableAccount<TAccountMerkleTree>\n        : TAccountMerkleTree,\n      TAccountLogWrapper extends string\n        ? ReadonlyAccount<TAccountLogWrapper>\n        : TAccountLogWrapper,\n      TAccountCompressionProgram extends string\n        ? ReadonlyAccount<TAccountCompressionProgram>\n        : TAccountCompressionProgram,\n      TAccountTokenMetadataProgram extends string\n        ? ReadonlyAccount<TAccountTokenMetadataProgram>\n        : TAccountTokenMetadataProgram,\n      TAccountSystemProgram extends string\n        ? ReadonlyAccount<TAccountSystemProgram>\n        : TAccountSystemProgram,\n      ...TRemainingAccounts,\n    ]\n  >;\n\nexport type UpdateMetadataInstructionData = {\n  discriminator: ReadonlyUint8Array;\n  root: ReadonlyUint8Array;\n  nonce: bigint;\n  index: number;\n  currentMetadata: MetadataArgs;\n  updateArgs: UpdateArgs;\n};\n\nexport type UpdateMetadataInstructionDataArgs = {\n  root: ReadonlyUint8Array;\n  nonce: number | bigint;\n  index: number;\n  currentMetadata: MetadataArgsArgs;\n  updateArgs: UpdateArgsArgs;\n};\n\nexport function getUpdateMetadataInstructionDataEncoder(): Encoder<UpdateMetadataInstructionDataArgs> {\n  return transformEncoder(\n    getStructEncoder([\n      ['discriminator', fixEncoderSize(getBytesEncoder(), 8)],\n      ['root', fixEncoderSize(getBytesEncoder(), 32)],\n      ['nonce', getU64Encoder()],\n      ['index', getU32Encoder()],\n      ['currentMetadata', getMetadataArgsEncoder()],\n      ['updateArgs', getUpdateArgsEncoder()],\n    ]),\n    (value) => ({ ...value, discriminator: UPDATE_METADATA_DISCRIMINATOR })\n  );\n}\n\nexport function getUpdateMetadataInstructionDataDecoder(): Decoder<UpdateMetadataInstructionData> {\n  return getStructDecoder([\n    ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n    ['root', fixDecoderSize(getBytesDecoder(), 32)],\n    ['nonce', getU64Decoder()],\n    ['index', getU32Decoder()],\n    ['currentMetadata', getMetadataArgsDecoder()],\n    ['updateArgs', getUpdateArgsDecoder()],\n  ]);\n}\n\nexport function getUpdateMetadataInstructionDataCodec(): Codec<\n  UpdateMetadataInstructionDataArgs,\n  UpdateMetadataInstructionData\n> {\n  return combineCodec(\n    getUpdateMetadataInstructionDataEncoder(),\n    getUpdateMetadataInstructionDataDecoder()\n  );\n}\n\nexport type UpdateMetadataAsyncInput<\n  TAccountTreeConfig extends string = string,\n  TAccountAuthority extends string = string,\n  TAccountCollectionMint extends string = string,\n  TAccountCollectionMetadata extends string = string,\n  TAccountCollectionAuthorityRecordPda extends string = string,\n  TAccountLeafOwner extends string = string,\n  TAccountLeafDelegate extends string = string,\n  TAccountPayer extends string = string,\n  TAccountMerkleTree extends string = string,\n  TAccountLogWrapper extends string = string,\n  TAccountCompressionProgram extends string = string,\n  TAccountTokenMetadataProgram extends string = string,\n  TAccountSystemProgram extends string = string,\n> = {\n  treeConfig?: Address<TAccountTreeConfig>;\n  /**\n   * Either collection authority or tree owner/delegate, depending\n   * on whether the item is in a verified collection\n   */\n  authority: TransactionSigner<TAccountAuthority>;\n  /** Used when item is in a verified collection */\n  collectionMint?: Address<TAccountCollectionMint>;\n  /** Used when item is in a verified collection */\n  collectionMetadata?: Address<TAccountCollectionMetadata>;\n  collectionAuthorityRecordPda?: Address<TAccountCollectionAuthorityRecordPda>;\n  leafOwner: Address<TAccountLeafOwner>;\n  leafDelegate?: Address<TAccountLeafDelegate>;\n  payer: TransactionSigner<TAccountPayer>;\n  merkleTree: Address<TAccountMerkleTree>;\n  logWrapper?: Address<TAccountLogWrapper>;\n  compressionProgram?: Address<TAccountCompressionProgram>;\n  tokenMetadataProgram?: Address<TAccountTokenMetadataProgram>;\n  systemProgram?: Address<TAccountSystemProgram>;\n  root: UpdateMetadataInstructionDataArgs['root'];\n  nonce: UpdateMetadataInstructionDataArgs['nonce'];\n  index: UpdateMetadataInstructionDataArgs['index'];\n  currentMetadata: UpdateMetadataInstructionDataArgs['currentMetadata'];\n  updateArgs: UpdateMetadataInstructionDataArgs['updateArgs'];\n  proof?: Array<Address>;\n};\n\nexport async function getUpdateMetadataInstructionAsync<\n  TAccountTreeConfig extends string,\n  TAccountAuthority extends string,\n  TAccountCollectionMint extends string,\n  TAccountCollectionMetadata extends string,\n  TAccountCollectionAuthorityRecordPda extends string,\n  TAccountLeafOwner extends string,\n  TAccountLeafDelegate extends string,\n  TAccountPayer extends string,\n  TAccountMerkleTree extends string,\n  TAccountLogWrapper extends string,\n  TAccountCompressionProgram extends string,\n  TAccountTokenMetadataProgram extends string,\n  TAccountSystemProgram extends string,\n  TProgramAddress extends Address = typeof MPL_BUBBLEGUM_PROGRAM_ADDRESS,\n>(\n  input: UpdateMetadataAsyncInput<\n    TAccountTreeConfig,\n    TAccountAuthority,\n    TAccountCollectionMint,\n    TAccountCollectionMetadata,\n    TAccountCollectionAuthorityRecordPda,\n    TAccountLeafOwner,\n    TAccountLeafDelegate,\n    TAccountPayer,\n    TAccountMerkleTree,\n    TAccountLogWrapper,\n    TAccountCompressionProgram,\n    TAccountTokenMetadataProgram,\n    TAccountSystemProgram\n  >,\n  config?: { programAddress?: TProgramAddress }\n): Promise<\n  UpdateMetadataInstruction<\n    TProgramAddress,\n    TAccountTreeConfig,\n    TAccountAuthority,\n    TAccountCollectionMint,\n    TAccountCollectionMetadata,\n    TAccountCollectionAuthorityRecordPda,\n    TAccountLeafOwner,\n    TAccountLeafDelegate,\n    TAccountPayer,\n    TAccountMerkleTree,\n    TAccountLogWrapper,\n    TAccountCompressionProgram,\n    TAccountTokenMetadataProgram,\n    TAccountSystemProgram\n  >\n> {\n  // Program address.\n  const programAddress =\n    config?.programAddress ?? MPL_BUBBLEGUM_PROGRAM_ADDRESS;\n\n  // Original accounts.\n  const originalAccounts = {\n    treeConfig: { value: input.treeConfig ?? null, isWritable: false },\n    authority: { value: input.authority ?? null, isWritable: false },\n    collectionMint: { value: input.collectionMint ?? null, isWritable: false },\n    collectionMetadata: {\n      value: input.collectionMetadata ?? null,\n      isWritable: false,\n    },\n    collectionAuthorityRecordPda: {\n      value: input.collectionAuthorityRecordPda ?? null,\n      isWritable: false,\n    },\n    leafOwner: { value: input.leafOwner ?? null, isWritable: false },\n    leafDelegate: { value: input.leafDelegate ?? null, isWritable: false },\n    payer: { value: input.payer ?? null, isWritable: false },\n    merkleTree: { value: input.merkleTree ?? null, isWritable: true },\n    logWrapper: { value: input.logWrapper ?? null, isWritable: false },\n    compressionProgram: {\n      value: input.compressionProgram ?? null,\n      isWritable: false,\n    },\n    tokenMetadataProgram: {\n      value: input.tokenMetadataProgram ?? null,\n      isWritable: false,\n    },\n    systemProgram: { value: input.systemProgram ?? null, isWritable: false },\n  };\n  const accounts = originalAccounts as Record<\n    keyof typeof originalAccounts,\n    ResolvedAccount\n  >;\n\n  // Original args.\n  const args = { ...input };\n\n  // Resolve default values.\n  if (!accounts.treeConfig.value) {\n    accounts.treeConfig.value = await findTreeConfigPda({\n      merkleTree: expectAddress(accounts.merkleTree.value),\n    });\n  }\n  if (!accounts.leafDelegate.value) {\n    accounts.leafDelegate.value = expectSome(accounts.leafOwner.value);\n  }\n  if (!accounts.logWrapper.value) {\n    accounts.logWrapper.value =\n      'noopb9bkMVfRPU8AsbpTUg8AQkHtKwMYZiFUjNRtMmV' as Address<'noopb9bkMVfRPU8AsbpTUg8AQkHtKwMYZiFUjNRtMmV'>;\n  }\n  if (!accounts.compressionProgram.value) {\n    accounts.compressionProgram.value =\n      'cmtDvXumGCrqC1Age74AVPhSRVXJMd8PJS91L8KbNCK' as Address<'cmtDvXumGCrqC1Age74AVPhSRVXJMd8PJS91L8KbNCK'>;\n  }\n  if (!accounts.tokenMetadataProgram.value) {\n    accounts.tokenMetadataProgram.value =\n      'BGUMAp9Gq7iTEuizy4pqaxsTyUCBK68MDfK752saRPUY' as Address<'BGUMAp9Gq7iTEuizy4pqaxsTyUCBK68MDfK752saRPUY'>;\n  }\n  if (!accounts.systemProgram.value) {\n    accounts.systemProgram.value =\n      '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>;\n  }\n\n  // Remaining accounts.\n  const remainingAccounts: AccountMeta[] = (args.proof ?? []).map(\n    (address) => ({ address, role: AccountRole.READONLY })\n  );\n\n  const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n  return Object.freeze({\n    accounts: [\n      getAccountMeta(accounts.treeConfig),\n      getAccountMeta(accounts.authority),\n      getAccountMeta(accounts.collectionMint),\n      getAccountMeta(accounts.collectionMetadata),\n      getAccountMeta(accounts.collectionAuthorityRecordPda),\n      getAccountMeta(accounts.leafOwner),\n      getAccountMeta(accounts.leafDelegate),\n      getAccountMeta(accounts.payer),\n      getAccountMeta(accounts.merkleTree),\n      getAccountMeta(accounts.logWrapper),\n      getAccountMeta(accounts.compressionProgram),\n      getAccountMeta(accounts.tokenMetadataProgram),\n      getAccountMeta(accounts.systemProgram),\n      ...remainingAccounts,\n    ],\n    data: getUpdateMetadataInstructionDataEncoder().encode(\n      args as UpdateMetadataInstructionDataArgs\n    ),\n    programAddress,\n  } as UpdateMetadataInstruction<\n    TProgramAddress,\n    TAccountTreeConfig,\n    TAccountAuthority,\n    TAccountCollectionMint,\n    TAccountCollectionMetadata,\n    TAccountCollectionAuthorityRecordPda,\n    TAccountLeafOwner,\n    TAccountLeafDelegate,\n    TAccountPayer,\n    TAccountMerkleTree,\n    TAccountLogWrapper,\n    TAccountCompressionProgram,\n    TAccountTokenMetadataProgram,\n    TAccountSystemProgram\n  >);\n}\n\nexport type UpdateMetadataInput<\n  TAccountTreeConfig extends string = string,\n  TAccountAuthority extends string = string,\n  TAccountCollectionMint extends string = string,\n  TAccountCollectionMetadata extends string = string,\n  TAccountCollectionAuthorityRecordPda extends string = string,\n  TAccountLeafOwner extends string = string,\n  TAccountLeafDelegate extends string = string,\n  TAccountPayer extends string = string,\n  TAccountMerkleTree extends string = string,\n  TAccountLogWrapper extends string = string,\n  TAccountCompressionProgram extends string = string,\n  TAccountTokenMetadataProgram extends string = string,\n  TAccountSystemProgram extends string = string,\n> = {\n  treeConfig: Address<TAccountTreeConfig>;\n  /**\n   * Either collection authority or tree owner/delegate, depending\n   * on whether the item is in a verified collection\n   */\n  authority: TransactionSigner<TAccountAuthority>;\n  /** Used when item is in a verified collection */\n  collectionMint?: Address<TAccountCollectionMint>;\n  /** Used when item is in a verified collection */\n  collectionMetadata?: Address<TAccountCollectionMetadata>;\n  collectionAuthorityRecordPda?: Address<TAccountCollectionAuthorityRecordPda>;\n  leafOwner: Address<TAccountLeafOwner>;\n  leafDelegate?: Address<TAccountLeafDelegate>;\n  payer: TransactionSigner<TAccountPayer>;\n  merkleTree: Address<TAccountMerkleTree>;\n  logWrapper?: Address<TAccountLogWrapper>;\n  compressionProgram?: Address<TAccountCompressionProgram>;\n  tokenMetadataProgram?: Address<TAccountTokenMetadataProgram>;\n  systemProgram?: Address<TAccountSystemProgram>;\n  root: UpdateMetadataInstructionDataArgs['root'];\n  nonce: UpdateMetadataInstructionDataArgs['nonce'];\n  index: UpdateMetadataInstructionDataArgs['index'];\n  currentMetadata: UpdateMetadataInstructionDataArgs['currentMetadata'];\n  updateArgs: UpdateMetadataInstructionDataArgs['updateArgs'];\n  proof?: Array<Address>;\n};\n\nexport function getUpdateMetadataInstruction<\n  TAccountTreeConfig extends string,\n  TAccountAuthority extends string,\n  TAccountCollectionMint extends string,\n  TAccountCollectionMetadata extends string,\n  TAccountCollectionAuthorityRecordPda extends string,\n  TAccountLeafOwner extends string,\n  TAccountLeafDelegate extends string,\n  TAccountPayer extends string,\n  TAccountMerkleTree extends string,\n  TAccountLogWrapper extends string,\n  TAccountCompressionProgram extends string,\n  TAccountTokenMetadataProgram extends string,\n  TAccountSystemProgram extends string,\n  TProgramAddress extends Address = typeof MPL_BUBBLEGUM_PROGRAM_ADDRESS,\n>(\n  input: UpdateMetadataInput<\n    TAccountTreeConfig,\n    TAccountAuthority,\n    TAccountCollectionMint,\n    TAccountCollectionMetadata,\n    TAccountCollectionAuthorityRecordPda,\n    TAccountLeafOwner,\n    TAccountLeafDelegate,\n    TAccountPayer,\n    TAccountMerkleTree,\n    TAccountLogWrapper,\n    TAccountCompressionProgram,\n    TAccountTokenMetadataProgram,\n    TAccountSystemProgram\n  >,\n  config?: { programAddress?: TProgramAddress }\n): UpdateMetadataInstruction<\n  TProgramAddress,\n  TAccountTreeConfig,\n  TAccountAuthority,\n  TAccountCollectionMint,\n  TAccountCollectionMetadata,\n  TAccountCollectionAuthorityRecordPda,\n  TAccountLeafOwner,\n  TAccountLeafDelegate,\n  TAccountPayer,\n  TAccountMerkleTree,\n  TAccountLogWrapper,\n  TAccountCompressionProgram,\n  TAccountTokenMetadataProgram,\n  TAccountSystemProgram\n> {\n  // Program address.\n  const programAddress =\n    config?.programAddress ?? MPL_BUBBLEGUM_PROGRAM_ADDRESS;\n\n  // Original accounts.\n  const originalAccounts = {\n    treeConfig: { value: input.treeConfig ?? null, isWritable: false },\n    authority: { value: input.authority ?? null, isWritable: false },\n    collectionMint: { value: input.collectionMint ?? null, isWritable: false },\n    collectionMetadata: {\n      value: input.collectionMetadata ?? null,\n      isWritable: false,\n    },\n    collectionAuthorityRecordPda: {\n      value: input.collectionAuthorityRecordPda ?? null,\n      isWritable: false,\n    },\n    leafOwner: { value: input.leafOwner ?? null, isWritable: false },\n    leafDelegate: { value: input.leafDelegate ?? null, isWritable: false },\n    payer: { value: input.payer ?? null, isWritable: false },\n    merkleTree: { value: input.merkleTree ?? null, isWritable: true },\n    logWrapper: { value: input.logWrapper ?? null, isWritable: false },\n    compressionProgram: {\n      value: input.compressionProgram ?? null,\n      isWritable: false,\n    },\n    tokenMetadataProgram: {\n      value: input.tokenMetadataProgram ?? null,\n      isWritable: false,\n    },\n    systemProgram: { value: input.systemProgram ?? null, isWritable: false },\n  };\n  const accounts = originalAccounts as Record<\n    keyof typeof originalAccounts,\n    ResolvedAccount\n  >;\n\n  // Original args.\n  const args = { ...input };\n\n  // Resolve default values.\n  if (!accounts.leafDelegate.value) {\n    accounts.leafDelegate.value = expectSome(accounts.leafOwner.value);\n  }\n  if (!accounts.logWrapper.value) {\n    accounts.logWrapper.value =\n      'noopb9bkMVfRPU8AsbpTUg8AQkHtKwMYZiFUjNRtMmV' as Address<'noopb9bkMVfRPU8AsbpTUg8AQkHtKwMYZiFUjNRtMmV'>;\n  }\n  if (!accounts.compressionProgram.value) {\n    accounts.compressionProgram.value =\n      'cmtDvXumGCrqC1Age74AVPhSRVXJMd8PJS91L8KbNCK' as Address<'cmtDvXumGCrqC1Age74AVPhSRVXJMd8PJS91L8KbNCK'>;\n  }\n  if (!accounts.tokenMetadataProgram.value) {\n    accounts.tokenMetadataProgram.value =\n      'BGUMAp9Gq7iTEuizy4pqaxsTyUCBK68MDfK752saRPUY' as Address<'BGUMAp9Gq7iTEuizy4pqaxsTyUCBK68MDfK752saRPUY'>;\n  }\n  if (!accounts.systemProgram.value) {\n    accounts.systemProgram.value =\n      '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>;\n  }\n\n  // Remaining accounts.\n  const remainingAccounts: AccountMeta[] = (args.proof ?? []).map(\n    (address) => ({ address, role: AccountRole.READONLY })\n  );\n\n  const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n  return Object.freeze({\n    accounts: [\n      getAccountMeta(accounts.treeConfig),\n      getAccountMeta(accounts.authority),\n      getAccountMeta(accounts.collectionMint),\n      getAccountMeta(accounts.collectionMetadata),\n      getAccountMeta(accounts.collectionAuthorityRecordPda),\n      getAccountMeta(accounts.leafOwner),\n      getAccountMeta(accounts.leafDelegate),\n      getAccountMeta(accounts.payer),\n      getAccountMeta(accounts.merkleTree),\n      getAccountMeta(accounts.logWrapper),\n      getAccountMeta(accounts.compressionProgram),\n      getAccountMeta(accounts.tokenMetadataProgram),\n      getAccountMeta(accounts.systemProgram),\n      ...remainingAccounts,\n    ],\n    data: getUpdateMetadataInstructionDataEncoder().encode(\n      args as UpdateMetadataInstructionDataArgs\n    ),\n    programAddress,\n  } as UpdateMetadataInstruction<\n    TProgramAddress,\n    TAccountTreeConfig,\n    TAccountAuthority,\n    TAccountCollectionMint,\n    TAccountCollectionMetadata,\n    TAccountCollectionAuthorityRecordPda,\n    TAccountLeafOwner,\n    TAccountLeafDelegate,\n    TAccountPayer,\n    TAccountMerkleTree,\n    TAccountLogWrapper,\n    TAccountCompressionProgram,\n    TAccountTokenMetadataProgram,\n    TAccountSystemProgram\n  >);\n}\n\nexport type ParsedUpdateMetadataInstruction<\n  TProgram extends string = typeof MPL_BUBBLEGUM_PROGRAM_ADDRESS,\n  TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n  programAddress: Address<TProgram>;\n  accounts: {\n    treeConfig: TAccountMetas[0];\n    /**\n     * Either collection authority or tree owner/delegate, depending\n     * on whether the item is in a verified collection\n     */\n    authority: TAccountMetas[1];\n    /** Used when item is in a verified collection */\n    collectionMint?: TAccountMetas[2] | undefined;\n    /** Used when item is in a verified collection */\n    collectionMetadata?: TAccountMetas[3] | undefined;\n    collectionAuthorityRecordPda?: TAccountMetas[4] | undefined;\n    leafOwner: TAccountMetas[5];\n    leafDelegate: TAccountMetas[6];\n    payer: TAccountMetas[7];\n    merkleTree: TAccountMetas[8];\n    logWrapper: TAccountMetas[9];\n    compressionProgram: TAccountMetas[10];\n    tokenMetadataProgram: TAccountMetas[11];\n    systemProgram: TAccountMetas[12];\n  };\n  data: UpdateMetadataInstructionData;\n};\n\nexport function parseUpdateMetadataInstruction<\n  TProgram extends string,\n  TAccountMetas extends readonly AccountMeta[],\n>(\n  instruction: Instruction<TProgram> &\n    InstructionWithAccounts<TAccountMetas> &\n    InstructionWithData<ReadonlyUint8Array>\n): ParsedUpdateMetadataInstruction<TProgram, TAccountMetas> {\n  if (instruction.accounts.length < 13) {\n    // TODO: Coded error.\n    throw new Error('Not enough accounts');\n  }\n  let accountIndex = 0;\n  const getNextAccount = () => {\n    const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n    accountIndex += 1;\n    return accountMeta;\n  };\n  const getNextOptionalAccount = () => {\n    const accountMeta = getNextAccount();\n    return accountMeta.address === MPL_BUBBLEGUM_PROGRAM_ADDRESS\n      ? undefined\n      : accountMeta;\n  };\n  return {\n    programAddress: instruction.programAddress,\n    accounts: {\n      treeConfig: getNextAccount(),\n      authority: getNextAccount(),\n      collectionMint: getNextOptionalAccount(),\n      collectionMetadata: getNextOptionalAccount(),\n      collectionAuthorityRecordPda: getNextOptionalAccount(),\n      leafOwner: getNextAccount(),\n      leafDelegate: getNextAccount(),\n      payer: getNextAccount(),\n      merkleTree: getNextAccount(),\n      logWrapper: getNextAccount(),\n      compressionProgram: getNextAccount(),\n      tokenMetadataProgram: getNextAccount(),\n      systemProgram: getNextAccount(),\n    },\n    data: getUpdateMetadataInstructionDataDecoder().decode(instruction.data),\n  };\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  AccountRole,\n  combineCodec,\n  fixDecoderSize,\n  fixEncoderSize,\n  getBytesDecoder,\n  getBytesEncoder,\n  getOptionDecoder,\n  getOptionEncoder,\n  getStructDecoder,\n  getStructEncoder,\n  getU32Decoder,\n  getU32Encoder,\n  getU64Decoder,\n  getU64Encoder,\n  getU8Decoder,\n  getU8Encoder,\n  none,\n  transformEncoder,\n  type AccountMeta,\n  type AccountSignerMeta,\n  type Address,\n  type Codec,\n  type Decoder,\n  type Encoder,\n  type Instruction,\n  type InstructionWithAccounts,\n  type InstructionWithData,\n  type Option,\n  type OptionOrNullable,\n  type ReadonlyAccount,\n  type ReadonlySignerAccount,\n  type ReadonlyUint8Array,\n  type TransactionSigner,\n  type WritableAccount,\n  type WritableSignerAccount,\n} from '@solana/kit';\nimport { findTreeConfigPda } from '../pdas';\nimport { MPL_BUBBLEGUM_PROGRAM_ADDRESS } from '../programs';\nimport {\n  expectAddress,\n  getAccountMetaFactory,\n  type ResolvedAccount,\n} from '../shared';\nimport {\n  getMetadataArgsV2Decoder,\n  getMetadataArgsV2Encoder,\n  getUpdateArgsDecoder,\n  getUpdateArgsEncoder,\n  type MetadataArgsV2,\n  type MetadataArgsV2Args,\n  type UpdateArgs,\n  type UpdateArgsArgs,\n} from '../types';\n\nexport const UPDATE_METADATA_V2_DISCRIMINATOR = new Uint8Array([\n  43, 103, 89, 42, 121, 242, 62, 72,\n]);\n\nexport function getUpdateMetadataV2DiscriminatorBytes() {\n  return fixEncoderSize(getBytesEncoder(), 8).encode(\n    UPDATE_METADATA_V2_DISCRIMINATOR\n  );\n}\n\nexport type UpdateMetadataV2Instruction<\n  TProgram extends string = typeof MPL_BUBBLEGUM_PROGRAM_ADDRESS,\n  TAccountTreeConfig extends string | AccountMeta<string> = string,\n  TAccountPayer extends string | AccountMeta<string> = string,\n  TAccountAuthority extends string | AccountMeta<string> = string,\n  TAccountLeafOwner extends string | AccountMeta<string> = string,\n  TAccountLeafDelegate extends string | AccountMeta<string> = string,\n  TAccountMerkleTree extends string | AccountMeta<string> = string,\n  TAccountCoreCollection extends string | AccountMeta<string> = string,\n  TAccountLogWrapper extends\n    | string\n    | AccountMeta<string> = 'mnoopTCrg4p8ry25e4bcWA9XZjbNjMTfgYVGGEdRsf3',\n  TAccountCompressionProgram extends\n    | string\n    | AccountMeta<string> = 'mcmt6YrQEMKw8Mw43FmpRLmf7BqRnFMKmAcbxE3xkAW',\n  TAccountSystemProgram extends\n    | string\n    | AccountMeta<string> = '11111111111111111111111111111111',\n  TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n  InstructionWithData<ReadonlyUint8Array> &\n  InstructionWithAccounts<\n    [\n      TAccountTreeConfig extends string\n        ? WritableAccount<TAccountTreeConfig>\n        : TAccountTreeConfig,\n      TAccountPayer extends string\n        ? WritableSignerAccount<TAccountPayer> &\n            AccountSignerMeta<TAccountPayer>\n        : TAccountPayer,\n      TAccountAuthority extends string\n        ? ReadonlySignerAccount<TAccountAuthority> &\n            AccountSignerMeta<TAccountAuthority>\n        : TAccountAuthority,\n      TAccountLeafOwner extends string\n        ? ReadonlyAccount<TAccountLeafOwner>\n        : TAccountLeafOwner,\n      TAccountLeafDelegate extends string\n        ? ReadonlyAccount<TAccountLeafDelegate>\n        : TAccountLeafDelegate,\n      TAccountMerkleTree extends string\n        ? WritableAccount<TAccountMerkleTree>\n        : TAccountMerkleTree,\n      TAccountCoreCollection extends string\n        ? ReadonlyAccount<TAccountCoreCollection>\n        : TAccountCoreCollection,\n      TAccountLogWrapper extends string\n        ? ReadonlyAccount<TAccountLogWrapper>\n        : TAccountLogWrapper,\n      TAccountCompressionProgram extends string\n        ? ReadonlyAccount<TAccountCompressionProgram>\n        : TAccountCompressionProgram,\n      TAccountSystemProgram extends string\n        ? ReadonlyAccount<TAccountSystemProgram>\n        : TAccountSystemProgram,\n      ...TRemainingAccounts,\n    ]\n  >;\n\nexport type UpdateMetadataV2InstructionData = {\n  discriminator: ReadonlyUint8Array;\n  root: ReadonlyUint8Array;\n  assetDataHash: Option<ReadonlyUint8Array>;\n  flags: Option<number>;\n  nonce: bigint;\n  index: number;\n  currentMetadata: MetadataArgsV2;\n  updateArgs: UpdateArgs;\n};\n\nexport type UpdateMetadataV2InstructionDataArgs = {\n  root: ReadonlyUint8Array;\n  assetDataHash?: OptionOrNullable<ReadonlyUint8Array>;\n  flags?: OptionOrNullable<number>;\n  nonce: number | bigint;\n  index: number;\n  currentMetadata: MetadataArgsV2Args;\n  updateArgs: UpdateArgsArgs;\n};\n\nexport function getUpdateMetadataV2InstructionDataEncoder(): Encoder<UpdateMetadataV2InstructionDataArgs> {\n  return transformEncoder(\n    getStructEncoder([\n      ['discriminator', fixEncoderSize(getBytesEncoder(), 8)],\n      ['root', fixEncoderSize(getBytesEncoder(), 32)],\n      [\n        'assetDataHash',\n        getOptionEncoder(fixEncoderSize(getBytesEncoder(), 32)),\n      ],\n      ['flags', getOptionEncoder(getU8Encoder())],\n      ['nonce', getU64Encoder()],\n      ['index', getU32Encoder()],\n      ['currentMetadata', getMetadataArgsV2Encoder()],\n      ['updateArgs', getUpdateArgsEncoder()],\n    ]),\n    (value) => ({\n      ...value,\n      discriminator: UPDATE_METADATA_V2_DISCRIMINATOR,\n      assetDataHash: value.assetDataHash ?? none(),\n      flags: value.flags ?? none(),\n    })\n  );\n}\n\nexport function getUpdateMetadataV2InstructionDataDecoder(): Decoder<UpdateMetadataV2InstructionData> {\n  return getStructDecoder([\n    ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n    ['root', fixDecoderSize(getBytesDecoder(), 32)],\n    ['assetDataHash', getOptionDecoder(fixDecoderSize(getBytesDecoder(), 32))],\n    ['flags', getOptionDecoder(getU8Decoder())],\n    ['nonce', getU64Decoder()],\n    ['index', getU32Decoder()],\n    ['currentMetadata', getMetadataArgsV2Decoder()],\n    ['updateArgs', getUpdateArgsDecoder()],\n  ]);\n}\n\nexport function getUpdateMetadataV2InstructionDataCodec(): Codec<\n  UpdateMetadataV2InstructionDataArgs,\n  UpdateMetadataV2InstructionData\n> {\n  return combineCodec(\n    getUpdateMetadataV2InstructionDataEncoder(),\n    getUpdateMetadataV2InstructionDataDecoder()\n  );\n}\n\nexport type UpdateMetadataV2AsyncInput<\n  TAccountTreeConfig extends string = string,\n  TAccountPayer extends string = string,\n  TAccountAuthority extends string = string,\n  TAccountLeafOwner extends string = string,\n  TAccountLeafDelegate extends string = string,\n  TAccountMerkleTree extends string = string,\n  TAccountCoreCollection extends string = string,\n  TAccountLogWrapper extends string = string,\n  TAccountCompressionProgram extends string = string,\n  TAccountSystemProgram extends string = string,\n> = {\n  treeConfig?: Address<TAccountTreeConfig>;\n  payer: TransactionSigner<TAccountPayer>;\n  /**\n   * Either collection authority or tree owner/delegate, depending\n   * on whether the item is in a verified collection.  Defaults to `payer`\n   */\n  authority?: TransactionSigner<TAccountAuthority>;\n  leafOwner: Address<TAccountLeafOwner>;\n  /** Defaults to `leaf_owner` */\n  leafDelegate?: Address<TAccountLeafDelegate>;\n  merkleTree: Address<TAccountMerkleTree>;\n  coreCollection?: Address<TAccountCoreCollection>;\n  logWrapper?: Address<TAccountLogWrapper>;\n  compressionProgram?: Address<TAccountCompressionProgram>;\n  systemProgram?: Address<TAccountSystemProgram>;\n  root: UpdateMetadataV2InstructionDataArgs['root'];\n  assetDataHash?: UpdateMetadataV2InstructionDataArgs['assetDataHash'];\n  flags?: UpdateMetadataV2InstructionDataArgs['flags'];\n  nonce: UpdateMetadataV2InstructionDataArgs['nonce'];\n  index: UpdateMetadataV2InstructionDataArgs['index'];\n  currentMetadata: UpdateMetadataV2InstructionDataArgs['currentMetadata'];\n  updateArgs: UpdateMetadataV2InstructionDataArgs['updateArgs'];\n  proof?: Array<Address>;\n};\n\nexport async function getUpdateMetadataV2InstructionAsync<\n  TAccountTreeConfig extends string,\n  TAccountPayer extends string,\n  TAccountAuthority extends string,\n  TAccountLeafOwner extends string,\n  TAccountLeafDelegate extends string,\n  TAccountMerkleTree extends string,\n  TAccountCoreCollection extends string,\n  TAccountLogWrapper extends string,\n  TAccountCompressionProgram extends string,\n  TAccountSystemProgram extends string,\n  TProgramAddress extends Address = typeof MPL_BUBBLEGUM_PROGRAM_ADDRESS,\n>(\n  input: UpdateMetadataV2AsyncInput<\n    TAccountTreeConfig,\n    TAccountPayer,\n    TAccountAuthority,\n    TAccountLeafOwner,\n    TAccountLeafDelegate,\n    TAccountMerkleTree,\n    TAccountCoreCollection,\n    TAccountLogWrapper,\n    TAccountCompressionProgram,\n    TAccountSystemProgram\n  >,\n  config?: { programAddress?: TProgramAddress }\n): Promise<\n  UpdateMetadataV2Instruction<\n    TProgramAddress,\n    TAccountTreeConfig,\n    TAccountPayer,\n    TAccountAuthority,\n    TAccountLeafOwner,\n    TAccountLeafDelegate,\n    TAccountMerkleTree,\n    TAccountCoreCollection,\n    TAccountLogWrapper,\n    TAccountCompressionProgram,\n    TAccountSystemProgram\n  >\n> {\n  // Program address.\n  const programAddress =\n    config?.programAddress ?? MPL_BUBBLEGUM_PROGRAM_ADDRESS;\n\n  // Original accounts.\n  const originalAccounts = {\n    treeConfig: { value: input.treeConfig ?? null, isWritable: true },\n    payer: { value: input.payer ?? null, isWritable: true },\n    authority: { value: input.authority ?? null, isWritable: false },\n    leafOwner: { value: input.leafOwner ?? null, isWritable: false },\n    leafDelegate: { value: input.leafDelegate ?? null, isWritable: false },\n    merkleTree: { value: input.merkleTree ?? null, isWritable: true },\n    coreCollection: { value: input.coreCollection ?? null, isWritable: false },\n    logWrapper: { value: input.logWrapper ?? null, isWritable: false },\n    compressionProgram: {\n      value: input.compressionProgram ?? null,\n      isWritable: false,\n    },\n    systemProgram: { value: input.systemProgram ?? null, isWritable: false },\n  };\n  const accounts = originalAccounts as Record<\n    keyof typeof originalAccounts,\n    ResolvedAccount\n  >;\n\n  // Original args.\n  const args = { ...input };\n\n  // Resolve default values.\n  if (!accounts.treeConfig.value) {\n    accounts.treeConfig.value = await findTreeConfigPda({\n      merkleTree: expectAddress(accounts.merkleTree.value),\n    });\n  }\n  if (!accounts.logWrapper.value) {\n    accounts.logWrapper.value =\n      'mnoopTCrg4p8ry25e4bcWA9XZjbNjMTfgYVGGEdRsf3' as Address<'mnoopTCrg4p8ry25e4bcWA9XZjbNjMTfgYVGGEdRsf3'>;\n  }\n  if (!accounts.compressionProgram.value) {\n    accounts.compressionProgram.value =\n      'mcmt6YrQEMKw8Mw43FmpRLmf7BqRnFMKmAcbxE3xkAW' as Address<'mcmt6YrQEMKw8Mw43FmpRLmf7BqRnFMKmAcbxE3xkAW'>;\n  }\n  if (!accounts.systemProgram.value) {\n    accounts.systemProgram.value =\n      '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>;\n  }\n\n  // Remaining accounts.\n  const remainingAccounts: AccountMeta[] = (args.proof ?? []).map(\n    (address) => ({ address, role: AccountRole.READONLY })\n  );\n\n  const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n  return Object.freeze({\n    accounts: [\n      getAccountMeta(accounts.treeConfig),\n      getAccountMeta(accounts.payer),\n      getAccountMeta(accounts.authority),\n      getAccountMeta(accounts.leafOwner),\n      getAccountMeta(accounts.leafDelegate),\n      getAccountMeta(accounts.merkleTree),\n      getAccountMeta(accounts.coreCollection),\n      getAccountMeta(accounts.logWrapper),\n      getAccountMeta(accounts.compressionProgram),\n      getAccountMeta(accounts.systemProgram),\n      ...remainingAccounts,\n    ],\n    data: getUpdateMetadataV2InstructionDataEncoder().encode(\n      args as UpdateMetadataV2InstructionDataArgs\n    ),\n    programAddress,\n  } as UpdateMetadataV2Instruction<\n    TProgramAddress,\n    TAccountTreeConfig,\n    TAccountPayer,\n    TAccountAuthority,\n    TAccountLeafOwner,\n    TAccountLeafDelegate,\n    TAccountMerkleTree,\n    TAccountCoreCollection,\n    TAccountLogWrapper,\n    TAccountCompressionProgram,\n    TAccountSystemProgram\n  >);\n}\n\nexport type UpdateMetadataV2Input<\n  TAccountTreeConfig extends string = string,\n  TAccountPayer extends string = string,\n  TAccountAuthority extends string = string,\n  TAccountLeafOwner extends string = string,\n  TAccountLeafDelegate extends string = string,\n  TAccountMerkleTree extends string = string,\n  TAccountCoreCollection extends string = string,\n  TAccountLogWrapper extends string = string,\n  TAccountCompressionProgram extends string = string,\n  TAccountSystemProgram extends string = string,\n> = {\n  treeConfig: Address<TAccountTreeConfig>;\n  payer: TransactionSigner<TAccountPayer>;\n  /**\n   * Either collection authority or tree owner/delegate, depending\n   * on whether the item is in a verified collection.  Defaults to `payer`\n   */\n  authority?: TransactionSigner<TAccountAuthority>;\n  leafOwner: Address<TAccountLeafOwner>;\n  /** Defaults to `leaf_owner` */\n  leafDelegate?: Address<TAccountLeafDelegate>;\n  merkleTree: Address<TAccountMerkleTree>;\n  coreCollection?: Address<TAccountCoreCollection>;\n  logWrapper?: Address<TAccountLogWrapper>;\n  compressionProgram?: Address<TAccountCompressionProgram>;\n  systemProgram?: Address<TAccountSystemProgram>;\n  root: UpdateMetadataV2InstructionDataArgs['root'];\n  assetDataHash?: UpdateMetadataV2InstructionDataArgs['assetDataHash'];\n  flags?: UpdateMetadataV2InstructionDataArgs['flags'];\n  nonce: UpdateMetadataV2InstructionDataArgs['nonce'];\n  index: UpdateMetadataV2InstructionDataArgs['index'];\n  currentMetadata: UpdateMetadataV2InstructionDataArgs['currentMetadata'];\n  updateArgs: UpdateMetadataV2InstructionDataArgs['updateArgs'];\n  proof?: Array<Address>;\n};\n\nexport function getUpdateMetadataV2Instruction<\n  TAccountTreeConfig extends string,\n  TAccountPayer extends string,\n  TAccountAuthority extends string,\n  TAccountLeafOwner extends string,\n  TAccountLeafDelegate extends string,\n  TAccountMerkleTree extends string,\n  TAccountCoreCollection extends string,\n  TAccountLogWrapper extends string,\n  TAccountCompressionProgram extends string,\n  TAccountSystemProgram extends string,\n  TProgramAddress extends Address = typeof MPL_BUBBLEGUM_PROGRAM_ADDRESS,\n>(\n  input: UpdateMetadataV2Input<\n    TAccountTreeConfig,\n    TAccountPayer,\n    TAccountAuthority,\n    TAccountLeafOwner,\n    TAccountLeafDelegate,\n    TAccountMerkleTree,\n    TAccountCoreCollection,\n    TAccountLogWrapper,\n    TAccountCompressionProgram,\n    TAccountSystemProgram\n  >,\n  config?: { programAddress?: TProgramAddress }\n): UpdateMetadataV2Instruction<\n  TProgramAddress,\n  TAccountTreeConfig,\n  TAccountPayer,\n  TAccountAuthority,\n  TAccountLeafOwner,\n  TAccountLeafDelegate,\n  TAccountMerkleTree,\n  TAccountCoreCollection,\n  TAccountLogWrapper,\n  TAccountCompressionProgram,\n  TAccountSystemProgram\n> {\n  // Program address.\n  const programAddress =\n    config?.programAddress ?? MPL_BUBBLEGUM_PROGRAM_ADDRESS;\n\n  // Original accounts.\n  const originalAccounts = {\n    treeConfig: { value: input.treeConfig ?? null, isWritable: true },\n    payer: { value: input.payer ?? null, isWritable: true },\n    authority: { value: input.authority ?? null, isWritable: false },\n    leafOwner: { value: input.leafOwner ?? null, isWritable: false },\n    leafDelegate: { value: input.leafDelegate ?? null, isWritable: false },\n    merkleTree: { value: input.merkleTree ?? null, isWritable: true },\n    coreCollection: { value: input.coreCollection ?? null, isWritable: false },\n    logWrapper: { value: input.logWrapper ?? null, isWritable: false },\n    compressionProgram: {\n      value: input.compressionProgram ?? null,\n      isWritable: false,\n    },\n    systemProgram: { value: input.systemProgram ?? null, isWritable: false },\n  };\n  const accounts = originalAccounts as Record<\n    keyof typeof originalAccounts,\n    ResolvedAccount\n  >;\n\n  // Original args.\n  const args = { ...input };\n\n  // Resolve default values.\n  if (!accounts.logWrapper.value) {\n    accounts.logWrapper.value =\n      'mnoopTCrg4p8ry25e4bcWA9XZjbNjMTfgYVGGEdRsf3' as Address<'mnoopTCrg4p8ry25e4bcWA9XZjbNjMTfgYVGGEdRsf3'>;\n  }\n  if (!accounts.compressionProgram.value) {\n    accounts.compressionProgram.value =\n      'mcmt6YrQEMKw8Mw43FmpRLmf7BqRnFMKmAcbxE3xkAW' as Address<'mcmt6YrQEMKw8Mw43FmpRLmf7BqRnFMKmAcbxE3xkAW'>;\n  }\n  if (!accounts.systemProgram.value) {\n    accounts.systemProgram.value =\n      '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>;\n  }\n\n  // Remaining accounts.\n  const remainingAccounts: AccountMeta[] = (args.proof ?? []).map(\n    (address) => ({ address, role: AccountRole.READONLY })\n  );\n\n  const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n  return Object.freeze({\n    accounts: [\n      getAccountMeta(accounts.treeConfig),\n      getAccountMeta(accounts.payer),\n      getAccountMeta(accounts.authority),\n      getAccountMeta(accounts.leafOwner),\n      getAccountMeta(accounts.leafDelegate),\n      getAccountMeta(accounts.merkleTree),\n      getAccountMeta(accounts.coreCollection),\n      getAccountMeta(accounts.logWrapper),\n      getAccountMeta(accounts.compressionProgram),\n      getAccountMeta(accounts.systemProgram),\n      ...remainingAccounts,\n    ],\n    data: getUpdateMetadataV2InstructionDataEncoder().encode(\n      args as UpdateMetadataV2InstructionDataArgs\n    ),\n    programAddress,\n  } as UpdateMetadataV2Instruction<\n    TProgramAddress,\n    TAccountTreeConfig,\n    TAccountPayer,\n    TAccountAuthority,\n    TAccountLeafOwner,\n    TAccountLeafDelegate,\n    TAccountMerkleTree,\n    TAccountCoreCollection,\n    TAccountLogWrapper,\n    TAccountCompressionProgram,\n    TAccountSystemProgram\n  >);\n}\n\nexport type ParsedUpdateMetadataV2Instruction<\n  TProgram extends string = typeof MPL_BUBBLEGUM_PROGRAM_ADDRESS,\n  TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n  programAddress: Address<TProgram>;\n  accounts: {\n    treeConfig: TAccountMetas[0];\n    payer: TAccountMetas[1];\n    /**\n     * Either collection authority or tree owner/delegate, depending\n     * on whether the item is in a verified collection.  Defaults to `payer`\n     */\n    authority?: TAccountMetas[2] | undefined;\n    leafOwner: TAccountMetas[3];\n    /** Defaults to `leaf_owner` */\n    leafDelegate?: TAccountMetas[4] | undefined;\n    merkleTree: TAccountMetas[5];\n    coreCollection?: TAccountMetas[6] | undefined;\n    logWrapper: TAccountMetas[7];\n    compressionProgram: TAccountMetas[8];\n    systemProgram: TAccountMetas[9];\n  };\n  data: UpdateMetadataV2InstructionData;\n};\n\nexport function parseUpdateMetadataV2Instruction<\n  TProgram extends string,\n  TAccountMetas extends readonly AccountMeta[],\n>(\n  instruction: Instruction<TProgram> &\n    InstructionWithAccounts<TAccountMetas> &\n    InstructionWithData<ReadonlyUint8Array>\n): ParsedUpdateMetadataV2Instruction<TProgram, TAccountMetas> {\n  if (instruction.accounts.length < 10) {\n    // TODO: Coded error.\n    throw new Error('Not enough accounts');\n  }\n  let accountIndex = 0;\n  const getNextAccount = () => {\n    const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n    accountIndex += 1;\n    return accountMeta;\n  };\n  const getNextOptionalAccount = () => {\n    const accountMeta = getNextAccount();\n    return accountMeta.address === MPL_BUBBLEGUM_PROGRAM_ADDRESS\n      ? undefined\n      : accountMeta;\n  };\n  return {\n    programAddress: instruction.programAddress,\n    accounts: {\n      treeConfig: getNextAccount(),\n      payer: getNextAccount(),\n      authority: getNextOptionalAccount(),\n      leafOwner: getNextAccount(),\n      leafDelegate: getNextOptionalAccount(),\n      merkleTree: getNextAccount(),\n      coreCollection: getNextOptionalAccount(),\n      logWrapper: getNextAccount(),\n      compressionProgram: getNextAccount(),\n      systemProgram: getNextAccount(),\n    },\n    data: getUpdateMetadataV2InstructionDataDecoder().decode(instruction.data),\n  };\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  AccountRole,\n  combineCodec,\n  fixDecoderSize,\n  fixEncoderSize,\n  getBytesDecoder,\n  getBytesEncoder,\n  getStructDecoder,\n  getStructEncoder,\n  getU32Decoder,\n  getU32Encoder,\n  getU64Decoder,\n  getU64Encoder,\n  transformEncoder,\n  type AccountMeta,\n  type AccountSignerMeta,\n  type Address,\n  type Codec,\n  type Decoder,\n  type Encoder,\n  type Instruction,\n  type InstructionWithAccounts,\n  type InstructionWithData,\n  type ReadonlyAccount,\n  type ReadonlySignerAccount,\n  type ReadonlyUint8Array,\n  type TransactionSigner,\n  type WritableAccount,\n} from '@solana/kit';\nimport {\n  findMasterEditionPda,\n  findMetadataPda,\n  resolveCreatorHash,\n  resolveDataHash,\n} from '../../hooked';\nimport { findTreeConfigPda } from '../pdas';\nimport { MPL_BUBBLEGUM_PROGRAM_ADDRESS } from '../programs';\nimport {\n  expectAddress,\n  expectSome,\n  getAccountMetaFactory,\n  type ResolvedAccount,\n} from '../shared';\nimport {\n  getMetadataArgsDecoder,\n  getMetadataArgsEncoder,\n  type MetadataArgs,\n  type MetadataArgsArgs,\n} from '../types';\n\nexport const VERIFY_COLLECTION_DISCRIMINATOR = new Uint8Array([\n  56, 113, 101, 253, 79, 55, 122, 169,\n]);\n\nexport function getVerifyCollectionDiscriminatorBytes() {\n  return fixEncoderSize(getBytesEncoder(), 8).encode(\n    VERIFY_COLLECTION_DISCRIMINATOR\n  );\n}\n\nexport type VerifyCollectionInstruction<\n  TProgram extends string = typeof MPL_BUBBLEGUM_PROGRAM_ADDRESS,\n  TAccountTreeConfig extends string | AccountMeta<string> = string,\n  TAccountLeafOwner extends string | AccountMeta<string> = string,\n  TAccountLeafDelegate extends string | AccountMeta<string> = string,\n  TAccountMerkleTree extends string | AccountMeta<string> = string,\n  TAccountPayer extends string | AccountMeta<string> = string,\n  TAccountTreeCreatorOrDelegate extends string | AccountMeta<string> = string,\n  TAccountCollectionAuthority extends string | AccountMeta<string> = string,\n  TAccountCollectionAuthorityRecordPda extends\n    | string\n    | AccountMeta<string> = string,\n  TAccountCollectionMint extends string | AccountMeta<string> = string,\n  TAccountCollectionMetadata extends string | AccountMeta<string> = string,\n  TAccountCollectionEdition extends string | AccountMeta<string> = string,\n  TAccountBubblegumSigner extends\n    | string\n    | AccountMeta<string> = 'BGUMAp9Gq7iTEuizy4pqaxsTyUCBK68MDfK752saRPUY',\n  TAccountLogWrapper extends\n    | string\n    | AccountMeta<string> = 'noopb9bkMVfRPU8AsbpTUg8AQkHtKwMYZiFUjNRtMmV',\n  TAccountCompressionProgram extends\n    | string\n    | AccountMeta<string> = 'cmtDvXumGCrqC1Age74AVPhSRVXJMd8PJS91L8KbNCK',\n  TAccountTokenMetadataProgram extends\n    | string\n    | AccountMeta<string> = 'BGUMAp9Gq7iTEuizy4pqaxsTyUCBK68MDfK752saRPUY',\n  TAccountSystemProgram extends\n    | string\n    | AccountMeta<string> = '11111111111111111111111111111111',\n  TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n  InstructionWithData<ReadonlyUint8Array> &\n  InstructionWithAccounts<\n    [\n      TAccountTreeConfig extends string\n        ? ReadonlyAccount<TAccountTreeConfig>\n        : TAccountTreeConfig,\n      TAccountLeafOwner extends string\n        ? ReadonlyAccount<TAccountLeafOwner>\n        : TAccountLeafOwner,\n      TAccountLeafDelegate extends string\n        ? ReadonlyAccount<TAccountLeafDelegate>\n        : TAccountLeafDelegate,\n      TAccountMerkleTree extends string\n        ? WritableAccount<TAccountMerkleTree>\n        : TAccountMerkleTree,\n      TAccountPayer extends string\n        ? ReadonlySignerAccount<TAccountPayer> &\n            AccountSignerMeta<TAccountPayer>\n        : TAccountPayer,\n      TAccountTreeCreatorOrDelegate extends string\n        ? ReadonlyAccount<TAccountTreeCreatorOrDelegate>\n        : TAccountTreeCreatorOrDelegate,\n      TAccountCollectionAuthority extends string\n        ? ReadonlySignerAccount<TAccountCollectionAuthority> &\n            AccountSignerMeta<TAccountCollectionAuthority>\n        : TAccountCollectionAuthority,\n      TAccountCollectionAuthorityRecordPda extends string\n        ? ReadonlyAccount<TAccountCollectionAuthorityRecordPda>\n        : TAccountCollectionAuthorityRecordPda,\n      TAccountCollectionMint extends string\n        ? ReadonlyAccount<TAccountCollectionMint>\n        : TAccountCollectionMint,\n      TAccountCollectionMetadata extends string\n        ? WritableAccount<TAccountCollectionMetadata>\n        : TAccountCollectionMetadata,\n      TAccountCollectionEdition extends string\n        ? ReadonlyAccount<TAccountCollectionEdition>\n        : TAccountCollectionEdition,\n      TAccountBubblegumSigner extends string\n        ? ReadonlyAccount<TAccountBubblegumSigner>\n        : TAccountBubblegumSigner,\n      TAccountLogWrapper extends string\n        ? ReadonlyAccount<TAccountLogWrapper>\n        : TAccountLogWrapper,\n      TAccountCompressionProgram extends string\n        ? ReadonlyAccount<TAccountCompressionProgram>\n        : TAccountCompressionProgram,\n      TAccountTokenMetadataProgram extends string\n        ? ReadonlyAccount<TAccountTokenMetadataProgram>\n        : TAccountTokenMetadataProgram,\n      TAccountSystemProgram extends string\n        ? ReadonlyAccount<TAccountSystemProgram>\n        : TAccountSystemProgram,\n      ...TRemainingAccounts,\n    ]\n  >;\n\nexport type VerifyCollectionInstructionData = {\n  discriminator: ReadonlyUint8Array;\n  root: ReadonlyUint8Array;\n  dataHash: ReadonlyUint8Array;\n  creatorHash: ReadonlyUint8Array;\n  nonce: bigint;\n  index: number;\n  metadata: MetadataArgs;\n};\n\nexport type VerifyCollectionInstructionDataArgs = {\n  root: ReadonlyUint8Array;\n  dataHash: ReadonlyUint8Array;\n  creatorHash: ReadonlyUint8Array;\n  nonce: number | bigint;\n  index: number;\n  metadata: MetadataArgsArgs;\n};\n\nexport function getVerifyCollectionInstructionDataEncoder(): Encoder<VerifyCollectionInstructionDataArgs> {\n  return transformEncoder(\n    getStructEncoder([\n      ['discriminator', fixEncoderSize(getBytesEncoder(), 8)],\n      ['root', fixEncoderSize(getBytesEncoder(), 32)],\n      ['dataHash', fixEncoderSize(getBytesEncoder(), 32)],\n      ['creatorHash', fixEncoderSize(getBytesEncoder(), 32)],\n      ['nonce', getU64Encoder()],\n      ['index', getU32Encoder()],\n      ['metadata', getMetadataArgsEncoder()],\n    ]),\n    (value) => ({ ...value, discriminator: VERIFY_COLLECTION_DISCRIMINATOR })\n  );\n}\n\nexport function getVerifyCollectionInstructionDataDecoder(): Decoder<VerifyCollectionInstructionData> {\n  return getStructDecoder([\n    ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n    ['root', fixDecoderSize(getBytesDecoder(), 32)],\n    ['dataHash', fixDecoderSize(getBytesDecoder(), 32)],\n    ['creatorHash', fixDecoderSize(getBytesDecoder(), 32)],\n    ['nonce', getU64Decoder()],\n    ['index', getU32Decoder()],\n    ['metadata', getMetadataArgsDecoder()],\n  ]);\n}\n\nexport function getVerifyCollectionInstructionDataCodec(): Codec<\n  VerifyCollectionInstructionDataArgs,\n  VerifyCollectionInstructionData\n> {\n  return combineCodec(\n    getVerifyCollectionInstructionDataEncoder(),\n    getVerifyCollectionInstructionDataDecoder()\n  );\n}\n\nexport type VerifyCollectionAsyncInput<\n  TAccountTreeConfig extends string = string,\n  TAccountLeafOwner extends string = string,\n  TAccountLeafDelegate extends string = string,\n  TAccountMerkleTree extends string = string,\n  TAccountPayer extends string = string,\n  TAccountTreeCreatorOrDelegate extends string = string,\n  TAccountCollectionAuthority extends string = string,\n  TAccountCollectionAuthorityRecordPda extends string = string,\n  TAccountCollectionMint extends string = string,\n  TAccountCollectionMetadata extends string = string,\n  TAccountCollectionEdition extends string = string,\n  TAccountBubblegumSigner extends string = string,\n  TAccountLogWrapper extends string = string,\n  TAccountCompressionProgram extends string = string,\n  TAccountTokenMetadataProgram extends string = string,\n  TAccountSystemProgram extends string = string,\n> = {\n  treeConfig?: Address<TAccountTreeConfig>;\n  leafOwner: Address<TAccountLeafOwner>;\n  leafDelegate?: Address<TAccountLeafDelegate>;\n  merkleTree: Address<TAccountMerkleTree>;\n  payer: TransactionSigner<TAccountPayer>;\n  /**\n   * This account is checked to be a signer in\n   * the case of `set_and_verify_collection` where\n   * we are actually changing the NFT metadata.\n   */\n  treeCreatorOrDelegate: Address<TAccountTreeCreatorOrDelegate>;\n  collectionAuthority: TransactionSigner<TAccountCollectionAuthority>;\n  /**\n   * If there is no collecton authority record PDA then\n   * this must be the Bubblegum program address.\n   */\n  collectionAuthorityRecordPda?: Address<TAccountCollectionAuthorityRecordPda>;\n  collectionMint: Address<TAccountCollectionMint>;\n  collectionMetadata?: Address<TAccountCollectionMetadata>;\n  collectionEdition?: Address<TAccountCollectionEdition>;\n  bubblegumSigner?: Address<TAccountBubblegumSigner>;\n  logWrapper?: Address<TAccountLogWrapper>;\n  compressionProgram?: Address<TAccountCompressionProgram>;\n  tokenMetadataProgram?: Address<TAccountTokenMetadataProgram>;\n  systemProgram?: Address<TAccountSystemProgram>;\n  root: VerifyCollectionInstructionDataArgs['root'];\n  dataHash?: VerifyCollectionInstructionDataArgs['dataHash'];\n  creatorHash?: VerifyCollectionInstructionDataArgs['creatorHash'];\n  nonce: VerifyCollectionInstructionDataArgs['nonce'];\n  index: VerifyCollectionInstructionDataArgs['index'];\n  metadata: VerifyCollectionInstructionDataArgs['metadata'];\n  proof?: Array<Address>;\n};\n\nexport async function getVerifyCollectionInstructionAsync<\n  TAccountTreeConfig extends string,\n  TAccountLeafOwner extends string,\n  TAccountLeafDelegate extends string,\n  TAccountMerkleTree extends string,\n  TAccountPayer extends string,\n  TAccountTreeCreatorOrDelegate extends string,\n  TAccountCollectionAuthority extends string,\n  TAccountCollectionAuthorityRecordPda extends string,\n  TAccountCollectionMint extends string,\n  TAccountCollectionMetadata extends string,\n  TAccountCollectionEdition extends string,\n  TAccountBubblegumSigner extends string,\n  TAccountLogWrapper extends string,\n  TAccountCompressionProgram extends string,\n  TAccountTokenMetadataProgram extends string,\n  TAccountSystemProgram extends string,\n  TProgramAddress extends Address = typeof MPL_BUBBLEGUM_PROGRAM_ADDRESS,\n>(\n  input: VerifyCollectionAsyncInput<\n    TAccountTreeConfig,\n    TAccountLeafOwner,\n    TAccountLeafDelegate,\n    TAccountMerkleTree,\n    TAccountPayer,\n    TAccountTreeCreatorOrDelegate,\n    TAccountCollectionAuthority,\n    TAccountCollectionAuthorityRecordPda,\n    TAccountCollectionMint,\n    TAccountCollectionMetadata,\n    TAccountCollectionEdition,\n    TAccountBubblegumSigner,\n    TAccountLogWrapper,\n    TAccountCompressionProgram,\n    TAccountTokenMetadataProgram,\n    TAccountSystemProgram\n  >,\n  config?: { programAddress?: TProgramAddress }\n): Promise<\n  VerifyCollectionInstruction<\n    TProgramAddress,\n    TAccountTreeConfig,\n    TAccountLeafOwner,\n    TAccountLeafDelegate,\n    TAccountMerkleTree,\n    TAccountPayer,\n    TAccountTreeCreatorOrDelegate,\n    TAccountCollectionAuthority,\n    TAccountCollectionAuthorityRecordPda,\n    TAccountCollectionMint,\n    TAccountCollectionMetadata,\n    TAccountCollectionEdition,\n    TAccountBubblegumSigner,\n    TAccountLogWrapper,\n    TAccountCompressionProgram,\n    TAccountTokenMetadataProgram,\n    TAccountSystemProgram\n  >\n> {\n  // Program address.\n  const programAddress =\n    config?.programAddress ?? MPL_BUBBLEGUM_PROGRAM_ADDRESS;\n\n  // Original accounts.\n  const originalAccounts = {\n    treeConfig: { value: input.treeConfig ?? null, isWritable: false },\n    leafOwner: { value: input.leafOwner ?? null, isWritable: false },\n    leafDelegate: { value: input.leafDelegate ?? null, isWritable: false },\n    merkleTree: { value: input.merkleTree ?? null, isWritable: true },\n    payer: { value: input.payer ?? null, isWritable: false },\n    treeCreatorOrDelegate: {\n      value: input.treeCreatorOrDelegate ?? null,\n      isWritable: false,\n    },\n    collectionAuthority: {\n      value: input.collectionAuthority ?? null,\n      isWritable: false,\n    },\n    collectionAuthorityRecordPda: {\n      value: input.collectionAuthorityRecordPda ?? null,\n      isWritable: false,\n    },\n    collectionMint: { value: input.collectionMint ?? null, isWritable: false },\n    collectionMetadata: {\n      value: input.collectionMetadata ?? null,\n      isWritable: true,\n    },\n    collectionEdition: {\n      value: input.collectionEdition ?? null,\n      isWritable: false,\n    },\n    bubblegumSigner: {\n      value: input.bubblegumSigner ?? null,\n      isWritable: false,\n    },\n    logWrapper: { value: input.logWrapper ?? null, isWritable: false },\n    compressionProgram: {\n      value: input.compressionProgram ?? null,\n      isWritable: false,\n    },\n    tokenMetadataProgram: {\n      value: input.tokenMetadataProgram ?? null,\n      isWritable: false,\n    },\n    systemProgram: { value: input.systemProgram ?? null, isWritable: false },\n  };\n  const accounts = originalAccounts as Record<\n    keyof typeof originalAccounts,\n    ResolvedAccount\n  >;\n\n  // Original args.\n  const args = { ...input };\n\n  // Resolver scope.\n  const resolverScope = { programAddress, accounts, args };\n\n  // Resolve default values.\n  if (!accounts.treeConfig.value) {\n    accounts.treeConfig.value = await findTreeConfigPda({\n      merkleTree: expectAddress(accounts.merkleTree.value),\n    });\n  }\n  if (!accounts.leafDelegate.value) {\n    accounts.leafDelegate.value = expectSome(accounts.leafOwner.value);\n  }\n  if (!accounts.collectionMetadata.value) {\n    accounts.collectionMetadata.value = await findMetadataPda({\n      mint: expectAddress(accounts.collectionMint.value),\n    });\n  }\n  if (!accounts.collectionEdition.value) {\n    accounts.collectionEdition.value = await findMasterEditionPda({\n      mint: expectAddress(accounts.collectionMint.value),\n    });\n  }\n  if (!accounts.bubblegumSigner.value) {\n    accounts.bubblegumSigner.value = programAddress;\n    accounts.bubblegumSigner.isWritable = false;\n  }\n  if (!accounts.logWrapper.value) {\n    accounts.logWrapper.value =\n      'noopb9bkMVfRPU8AsbpTUg8AQkHtKwMYZiFUjNRtMmV' as Address<'noopb9bkMVfRPU8AsbpTUg8AQkHtKwMYZiFUjNRtMmV'>;\n  }\n  if (!accounts.compressionProgram.value) {\n    accounts.compressionProgram.value =\n      'cmtDvXumGCrqC1Age74AVPhSRVXJMd8PJS91L8KbNCK' as Address<'cmtDvXumGCrqC1Age74AVPhSRVXJMd8PJS91L8KbNCK'>;\n  }\n  if (!accounts.tokenMetadataProgram.value) {\n    accounts.tokenMetadataProgram.value =\n      'BGUMAp9Gq7iTEuizy4pqaxsTyUCBK68MDfK752saRPUY' as Address<'BGUMAp9Gq7iTEuizy4pqaxsTyUCBK68MDfK752saRPUY'>;\n  }\n  if (!accounts.systemProgram.value) {\n    accounts.systemProgram.value =\n      '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>;\n  }\n  if (!args.dataHash) {\n    args.dataHash = resolveDataHash(resolverScope);\n  }\n  if (!args.creatorHash) {\n    args.creatorHash = resolveCreatorHash(resolverScope);\n  }\n\n  // Remaining accounts.\n  const remainingAccounts: AccountMeta[] = (args.proof ?? []).map(\n    (address) => ({ address, role: AccountRole.READONLY })\n  );\n\n  const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n  return Object.freeze({\n    accounts: [\n      getAccountMeta(accounts.treeConfig),\n      getAccountMeta(accounts.leafOwner),\n      getAccountMeta(accounts.leafDelegate),\n      getAccountMeta(accounts.merkleTree),\n      getAccountMeta(accounts.payer),\n      getAccountMeta(accounts.treeCreatorOrDelegate),\n      getAccountMeta(accounts.collectionAuthority),\n      getAccountMeta(accounts.collectionAuthorityRecordPda),\n      getAccountMeta(accounts.collectionMint),\n      getAccountMeta(accounts.collectionMetadata),\n      getAccountMeta(accounts.collectionEdition),\n      getAccountMeta(accounts.bubblegumSigner),\n      getAccountMeta(accounts.logWrapper),\n      getAccountMeta(accounts.compressionProgram),\n      getAccountMeta(accounts.tokenMetadataProgram),\n      getAccountMeta(accounts.systemProgram),\n      ...remainingAccounts,\n    ],\n    data: getVerifyCollectionInstructionDataEncoder().encode(\n      args as VerifyCollectionInstructionDataArgs\n    ),\n    programAddress,\n  } as VerifyCollectionInstruction<\n    TProgramAddress,\n    TAccountTreeConfig,\n    TAccountLeafOwner,\n    TAccountLeafDelegate,\n    TAccountMerkleTree,\n    TAccountPayer,\n    TAccountTreeCreatorOrDelegate,\n    TAccountCollectionAuthority,\n    TAccountCollectionAuthorityRecordPda,\n    TAccountCollectionMint,\n    TAccountCollectionMetadata,\n    TAccountCollectionEdition,\n    TAccountBubblegumSigner,\n    TAccountLogWrapper,\n    TAccountCompressionProgram,\n    TAccountTokenMetadataProgram,\n    TAccountSystemProgram\n  >);\n}\n\nexport type VerifyCollectionInput<\n  TAccountTreeConfig extends string = string,\n  TAccountLeafOwner extends string = string,\n  TAccountLeafDelegate extends string = string,\n  TAccountMerkleTree extends string = string,\n  TAccountPayer extends string = string,\n  TAccountTreeCreatorOrDelegate extends string = string,\n  TAccountCollectionAuthority extends string = string,\n  TAccountCollectionAuthorityRecordPda extends string = string,\n  TAccountCollectionMint extends string = string,\n  TAccountCollectionMetadata extends string = string,\n  TAccountCollectionEdition extends string = string,\n  TAccountBubblegumSigner extends string = string,\n  TAccountLogWrapper extends string = string,\n  TAccountCompressionProgram extends string = string,\n  TAccountTokenMetadataProgram extends string = string,\n  TAccountSystemProgram extends string = string,\n> = {\n  treeConfig: Address<TAccountTreeConfig>;\n  leafOwner: Address<TAccountLeafOwner>;\n  leafDelegate?: Address<TAccountLeafDelegate>;\n  merkleTree: Address<TAccountMerkleTree>;\n  payer: TransactionSigner<TAccountPayer>;\n  /**\n   * This account is checked to be a signer in\n   * the case of `set_and_verify_collection` where\n   * we are actually changing the NFT metadata.\n   */\n  treeCreatorOrDelegate: Address<TAccountTreeCreatorOrDelegate>;\n  collectionAuthority: TransactionSigner<TAccountCollectionAuthority>;\n  /**\n   * If there is no collecton authority record PDA then\n   * this must be the Bubblegum program address.\n   */\n  collectionAuthorityRecordPda?: Address<TAccountCollectionAuthorityRecordPda>;\n  collectionMint: Address<TAccountCollectionMint>;\n  collectionMetadata: Address<TAccountCollectionMetadata>;\n  collectionEdition: Address<TAccountCollectionEdition>;\n  bubblegumSigner?: Address<TAccountBubblegumSigner>;\n  logWrapper?: Address<TAccountLogWrapper>;\n  compressionProgram?: Address<TAccountCompressionProgram>;\n  tokenMetadataProgram?: Address<TAccountTokenMetadataProgram>;\n  systemProgram?: Address<TAccountSystemProgram>;\n  root: VerifyCollectionInstructionDataArgs['root'];\n  dataHash?: VerifyCollectionInstructionDataArgs['dataHash'];\n  creatorHash?: VerifyCollectionInstructionDataArgs['creatorHash'];\n  nonce: VerifyCollectionInstructionDataArgs['nonce'];\n  index: VerifyCollectionInstructionDataArgs['index'];\n  metadata: VerifyCollectionInstructionDataArgs['metadata'];\n  proof?: Array<Address>;\n};\n\nexport function getVerifyCollectionInstruction<\n  TAccountTreeConfig extends string,\n  TAccountLeafOwner extends string,\n  TAccountLeafDelegate extends string,\n  TAccountMerkleTree extends string,\n  TAccountPayer extends string,\n  TAccountTreeCreatorOrDelegate extends string,\n  TAccountCollectionAuthority extends string,\n  TAccountCollectionAuthorityRecordPda extends string,\n  TAccountCollectionMint extends string,\n  TAccountCollectionMetadata extends string,\n  TAccountCollectionEdition extends string,\n  TAccountBubblegumSigner extends string,\n  TAccountLogWrapper extends string,\n  TAccountCompressionProgram extends string,\n  TAccountTokenMetadataProgram extends string,\n  TAccountSystemProgram extends string,\n  TProgramAddress extends Address = typeof MPL_BUBBLEGUM_PROGRAM_ADDRESS,\n>(\n  input: VerifyCollectionInput<\n    TAccountTreeConfig,\n    TAccountLeafOwner,\n    TAccountLeafDelegate,\n    TAccountMerkleTree,\n    TAccountPayer,\n    TAccountTreeCreatorOrDelegate,\n    TAccountCollectionAuthority,\n    TAccountCollectionAuthorityRecordPda,\n    TAccountCollectionMint,\n    TAccountCollectionMetadata,\n    TAccountCollectionEdition,\n    TAccountBubblegumSigner,\n    TAccountLogWrapper,\n    TAccountCompressionProgram,\n    TAccountTokenMetadataProgram,\n    TAccountSystemProgram\n  >,\n  config?: { programAddress?: TProgramAddress }\n): VerifyCollectionInstruction<\n  TProgramAddress,\n  TAccountTreeConfig,\n  TAccountLeafOwner,\n  TAccountLeafDelegate,\n  TAccountMerkleTree,\n  TAccountPayer,\n  TAccountTreeCreatorOrDelegate,\n  TAccountCollectionAuthority,\n  TAccountCollectionAuthorityRecordPda,\n  TAccountCollectionMint,\n  TAccountCollectionMetadata,\n  TAccountCollectionEdition,\n  TAccountBubblegumSigner,\n  TAccountLogWrapper,\n  TAccountCompressionProgram,\n  TAccountTokenMetadataProgram,\n  TAccountSystemProgram\n> {\n  // Program address.\n  const programAddress =\n    config?.programAddress ?? MPL_BUBBLEGUM_PROGRAM_ADDRESS;\n\n  // Original accounts.\n  const originalAccounts = {\n    treeConfig: { value: input.treeConfig ?? null, isWritable: false },\n    leafOwner: { value: input.leafOwner ?? null, isWritable: false },\n    leafDelegate: { value: input.leafDelegate ?? null, isWritable: false },\n    merkleTree: { value: input.merkleTree ?? null, isWritable: true },\n    payer: { value: input.payer ?? null, isWritable: false },\n    treeCreatorOrDelegate: {\n      value: input.treeCreatorOrDelegate ?? null,\n      isWritable: false,\n    },\n    collectionAuthority: {\n      value: input.collectionAuthority ?? null,\n      isWritable: false,\n    },\n    collectionAuthorityRecordPda: {\n      value: input.collectionAuthorityRecordPda ?? null,\n      isWritable: false,\n    },\n    collectionMint: { value: input.collectionMint ?? null, isWritable: false },\n    collectionMetadata: {\n      value: input.collectionMetadata ?? null,\n      isWritable: true,\n    },\n    collectionEdition: {\n      value: input.collectionEdition ?? null,\n      isWritable: false,\n    },\n    bubblegumSigner: {\n      value: input.bubblegumSigner ?? null,\n      isWritable: false,\n    },\n    logWrapper: { value: input.logWrapper ?? null, isWritable: false },\n    compressionProgram: {\n      value: input.compressionProgram ?? null,\n      isWritable: false,\n    },\n    tokenMetadataProgram: {\n      value: input.tokenMetadataProgram ?? null,\n      isWritable: false,\n    },\n    systemProgram: { value: input.systemProgram ?? null, isWritable: false },\n  };\n  const accounts = originalAccounts as Record<\n    keyof typeof originalAccounts,\n    ResolvedAccount\n  >;\n\n  // Original args.\n  const args = { ...input };\n\n  // Resolver scope.\n  const resolverScope = { programAddress, accounts, args };\n\n  // Resolve default values.\n  if (!accounts.leafDelegate.value) {\n    accounts.leafDelegate.value = expectSome(accounts.leafOwner.value);\n  }\n  if (!accounts.bubblegumSigner.value) {\n    accounts.bubblegumSigner.value = programAddress;\n    accounts.bubblegumSigner.isWritable = false;\n  }\n  if (!accounts.logWrapper.value) {\n    accounts.logWrapper.value =\n      'noopb9bkMVfRPU8AsbpTUg8AQkHtKwMYZiFUjNRtMmV' as Address<'noopb9bkMVfRPU8AsbpTUg8AQkHtKwMYZiFUjNRtMmV'>;\n  }\n  if (!accounts.compressionProgram.value) {\n    accounts.compressionProgram.value =\n      'cmtDvXumGCrqC1Age74AVPhSRVXJMd8PJS91L8KbNCK' as Address<'cmtDvXumGCrqC1Age74AVPhSRVXJMd8PJS91L8KbNCK'>;\n  }\n  if (!accounts.tokenMetadataProgram.value) {\n    accounts.tokenMetadataProgram.value =\n      'BGUMAp9Gq7iTEuizy4pqaxsTyUCBK68MDfK752saRPUY' as Address<'BGUMAp9Gq7iTEuizy4pqaxsTyUCBK68MDfK752saRPUY'>;\n  }\n  if (!accounts.systemProgram.value) {\n    accounts.systemProgram.value =\n      '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>;\n  }\n  if (!args.dataHash) {\n    args.dataHash = resolveDataHash(resolverScope);\n  }\n  if (!args.creatorHash) {\n    args.creatorHash = resolveCreatorHash(resolverScope);\n  }\n\n  // Remaining accounts.\n  const remainingAccounts: AccountMeta[] = (args.proof ?? []).map(\n    (address) => ({ address, role: AccountRole.READONLY })\n  );\n\n  const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n  return Object.freeze({\n    accounts: [\n      getAccountMeta(accounts.treeConfig),\n      getAccountMeta(accounts.leafOwner),\n      getAccountMeta(accounts.leafDelegate),\n      getAccountMeta(accounts.merkleTree),\n      getAccountMeta(accounts.payer),\n      getAccountMeta(accounts.treeCreatorOrDelegate),\n      getAccountMeta(accounts.collectionAuthority),\n      getAccountMeta(accounts.collectionAuthorityRecordPda),\n      getAccountMeta(accounts.collectionMint),\n      getAccountMeta(accounts.collectionMetadata),\n      getAccountMeta(accounts.collectionEdition),\n      getAccountMeta(accounts.bubblegumSigner),\n      getAccountMeta(accounts.logWrapper),\n      getAccountMeta(accounts.compressionProgram),\n      getAccountMeta(accounts.tokenMetadataProgram),\n      getAccountMeta(accounts.systemProgram),\n      ...remainingAccounts,\n    ],\n    data: getVerifyCollectionInstructionDataEncoder().encode(\n      args as VerifyCollectionInstructionDataArgs\n    ),\n    programAddress,\n  } as VerifyCollectionInstruction<\n    TProgramAddress,\n    TAccountTreeConfig,\n    TAccountLeafOwner,\n    TAccountLeafDelegate,\n    TAccountMerkleTree,\n    TAccountPayer,\n    TAccountTreeCreatorOrDelegate,\n    TAccountCollectionAuthority,\n    TAccountCollectionAuthorityRecordPda,\n    TAccountCollectionMint,\n    TAccountCollectionMetadata,\n    TAccountCollectionEdition,\n    TAccountBubblegumSigner,\n    TAccountLogWrapper,\n    TAccountCompressionProgram,\n    TAccountTokenMetadataProgram,\n    TAccountSystemProgram\n  >);\n}\n\nexport type ParsedVerifyCollectionInstruction<\n  TProgram extends string = typeof MPL_BUBBLEGUM_PROGRAM_ADDRESS,\n  TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n  programAddress: Address<TProgram>;\n  accounts: {\n    treeConfig: TAccountMetas[0];\n    leafOwner: TAccountMetas[1];\n    leafDelegate: TAccountMetas[2];\n    merkleTree: TAccountMetas[3];\n    payer: TAccountMetas[4];\n    /**\n     * This account is checked to be a signer in\n     * the case of `set_and_verify_collection` where\n     * we are actually changing the NFT metadata.\n     */\n    treeCreatorOrDelegate: TAccountMetas[5];\n    collectionAuthority: TAccountMetas[6];\n    /**\n     * If there is no collecton authority record PDA then\n     * this must be the Bubblegum program address.\n     */\n    collectionAuthorityRecordPda?: TAccountMetas[7] | undefined;\n    collectionMint: TAccountMetas[8];\n    collectionMetadata: TAccountMetas[9];\n    collectionEdition: TAccountMetas[10];\n    bubblegumSigner: TAccountMetas[11];\n    logWrapper: TAccountMetas[12];\n    compressionProgram: TAccountMetas[13];\n    tokenMetadataProgram: TAccountMetas[14];\n    systemProgram: TAccountMetas[15];\n  };\n  data: VerifyCollectionInstructionData;\n};\n\nexport function parseVerifyCollectionInstruction<\n  TProgram extends string,\n  TAccountMetas extends readonly AccountMeta[],\n>(\n  instruction: Instruction<TProgram> &\n    InstructionWithAccounts<TAccountMetas> &\n    InstructionWithData<ReadonlyUint8Array>\n): ParsedVerifyCollectionInstruction<TProgram, TAccountMetas> {\n  if (instruction.accounts.length < 16) {\n    // TODO: Coded error.\n    throw new Error('Not enough accounts');\n  }\n  let accountIndex = 0;\n  const getNextAccount = () => {\n    const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n    accountIndex += 1;\n    return accountMeta;\n  };\n  const getNextOptionalAccount = () => {\n    const accountMeta = getNextAccount();\n    return accountMeta.address === MPL_BUBBLEGUM_PROGRAM_ADDRESS\n      ? undefined\n      : accountMeta;\n  };\n  return {\n    programAddress: instruction.programAddress,\n    accounts: {\n      treeConfig: getNextAccount(),\n      leafOwner: getNextAccount(),\n      leafDelegate: getNextAccount(),\n      merkleTree: getNextAccount(),\n      payer: getNextAccount(),\n      treeCreatorOrDelegate: getNextAccount(),\n      collectionAuthority: getNextAccount(),\n      collectionAuthorityRecordPda: getNextOptionalAccount(),\n      collectionMint: getNextAccount(),\n      collectionMetadata: getNextAccount(),\n      collectionEdition: getNextAccount(),\n      bubblegumSigner: getNextAccount(),\n      logWrapper: getNextAccount(),\n      compressionProgram: getNextAccount(),\n      tokenMetadataProgram: getNextAccount(),\n      systemProgram: getNextAccount(),\n    },\n    data: getVerifyCollectionInstructionDataDecoder().decode(instruction.data),\n  };\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  AccountRole,\n  combineCodec,\n  fixDecoderSize,\n  fixEncoderSize,\n  getBytesDecoder,\n  getBytesEncoder,\n  getStructDecoder,\n  getStructEncoder,\n  getU32Decoder,\n  getU32Encoder,\n  getU64Decoder,\n  getU64Encoder,\n  transformEncoder,\n  type AccountMeta,\n  type AccountSignerMeta,\n  type Address,\n  type Codec,\n  type Decoder,\n  type Encoder,\n  type Instruction,\n  type InstructionWithAccounts,\n  type InstructionWithData,\n  type ReadonlyAccount,\n  type ReadonlySignerAccount,\n  type ReadonlyUint8Array,\n  type TransactionSigner,\n  type WritableAccount,\n} from '@solana/kit';\nimport { resolveCreatorHash, resolveDataHash } from '../../hooked';\nimport { findTreeConfigPda } from '../pdas';\nimport { MPL_BUBBLEGUM_PROGRAM_ADDRESS } from '../programs';\nimport {\n  expectAddress,\n  expectSome,\n  getAccountMetaFactory,\n  type ResolvedAccount,\n} from '../shared';\nimport {\n  getMetadataArgsDecoder,\n  getMetadataArgsEncoder,\n  type MetadataArgs,\n  type MetadataArgsArgs,\n} from '../types';\n\nexport const VERIFY_CREATOR_DISCRIMINATOR = new Uint8Array([\n  52, 17, 96, 132, 71, 4, 85, 194,\n]);\n\nexport function getVerifyCreatorDiscriminatorBytes() {\n  return fixEncoderSize(getBytesEncoder(), 8).encode(\n    VERIFY_CREATOR_DISCRIMINATOR\n  );\n}\n\nexport type VerifyCreatorInstruction<\n  TProgram extends string = typeof MPL_BUBBLEGUM_PROGRAM_ADDRESS,\n  TAccountTreeConfig extends string | AccountMeta<string> = string,\n  TAccountLeafOwner extends string | AccountMeta<string> = string,\n  TAccountLeafDelegate extends string | AccountMeta<string> = string,\n  TAccountMerkleTree extends string | AccountMeta<string> = string,\n  TAccountPayer extends string | AccountMeta<string> = string,\n  TAccountCreator extends string | AccountMeta<string> = string,\n  TAccountLogWrapper extends\n    | string\n    | AccountMeta<string> = 'noopb9bkMVfRPU8AsbpTUg8AQkHtKwMYZiFUjNRtMmV',\n  TAccountCompressionProgram extends\n    | string\n    | AccountMeta<string> = 'cmtDvXumGCrqC1Age74AVPhSRVXJMd8PJS91L8KbNCK',\n  TAccountSystemProgram extends\n    | string\n    | AccountMeta<string> = '11111111111111111111111111111111',\n  TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n  InstructionWithData<ReadonlyUint8Array> &\n  InstructionWithAccounts<\n    [\n      TAccountTreeConfig extends string\n        ? ReadonlyAccount<TAccountTreeConfig>\n        : TAccountTreeConfig,\n      TAccountLeafOwner extends string\n        ? ReadonlyAccount<TAccountLeafOwner>\n        : TAccountLeafOwner,\n      TAccountLeafDelegate extends string\n        ? ReadonlyAccount<TAccountLeafDelegate>\n        : TAccountLeafDelegate,\n      TAccountMerkleTree extends string\n        ? WritableAccount<TAccountMerkleTree>\n        : TAccountMerkleTree,\n      TAccountPayer extends string\n        ? ReadonlySignerAccount<TAccountPayer> &\n            AccountSignerMeta<TAccountPayer>\n        : TAccountPayer,\n      TAccountCreator extends string\n        ? ReadonlySignerAccount<TAccountCreator> &\n            AccountSignerMeta<TAccountCreator>\n        : TAccountCreator,\n      TAccountLogWrapper extends string\n        ? ReadonlyAccount<TAccountLogWrapper>\n        : TAccountLogWrapper,\n      TAccountCompressionProgram extends string\n        ? ReadonlyAccount<TAccountCompressionProgram>\n        : TAccountCompressionProgram,\n      TAccountSystemProgram extends string\n        ? ReadonlyAccount<TAccountSystemProgram>\n        : TAccountSystemProgram,\n      ...TRemainingAccounts,\n    ]\n  >;\n\nexport type VerifyCreatorInstructionData = {\n  discriminator: ReadonlyUint8Array;\n  root: ReadonlyUint8Array;\n  dataHash: ReadonlyUint8Array;\n  creatorHash: ReadonlyUint8Array;\n  nonce: bigint;\n  index: number;\n  metadata: MetadataArgs;\n};\n\nexport type VerifyCreatorInstructionDataArgs = {\n  root: ReadonlyUint8Array;\n  dataHash: ReadonlyUint8Array;\n  creatorHash: ReadonlyUint8Array;\n  nonce: number | bigint;\n  index: number;\n  metadata: MetadataArgsArgs;\n};\n\nexport function getVerifyCreatorInstructionDataEncoder(): Encoder<VerifyCreatorInstructionDataArgs> {\n  return transformEncoder(\n    getStructEncoder([\n      ['discriminator', fixEncoderSize(getBytesEncoder(), 8)],\n      ['root', fixEncoderSize(getBytesEncoder(), 32)],\n      ['dataHash', fixEncoderSize(getBytesEncoder(), 32)],\n      ['creatorHash', fixEncoderSize(getBytesEncoder(), 32)],\n      ['nonce', getU64Encoder()],\n      ['index', getU32Encoder()],\n      ['metadata', getMetadataArgsEncoder()],\n    ]),\n    (value) => ({ ...value, discriminator: VERIFY_CREATOR_DISCRIMINATOR })\n  );\n}\n\nexport function getVerifyCreatorInstructionDataDecoder(): Decoder<VerifyCreatorInstructionData> {\n  return getStructDecoder([\n    ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n    ['root', fixDecoderSize(getBytesDecoder(), 32)],\n    ['dataHash', fixDecoderSize(getBytesDecoder(), 32)],\n    ['creatorHash', fixDecoderSize(getBytesDecoder(), 32)],\n    ['nonce', getU64Decoder()],\n    ['index', getU32Decoder()],\n    ['metadata', getMetadataArgsDecoder()],\n  ]);\n}\n\nexport function getVerifyCreatorInstructionDataCodec(): Codec<\n  VerifyCreatorInstructionDataArgs,\n  VerifyCreatorInstructionData\n> {\n  return combineCodec(\n    getVerifyCreatorInstructionDataEncoder(),\n    getVerifyCreatorInstructionDataDecoder()\n  );\n}\n\nexport type VerifyCreatorAsyncInput<\n  TAccountTreeConfig extends string = string,\n  TAccountLeafOwner extends string = string,\n  TAccountLeafDelegate extends string = string,\n  TAccountMerkleTree extends string = string,\n  TAccountPayer extends string = string,\n  TAccountCreator extends string = string,\n  TAccountLogWrapper extends string = string,\n  TAccountCompressionProgram extends string = string,\n  TAccountSystemProgram extends string = string,\n> = {\n  treeConfig?: Address<TAccountTreeConfig>;\n  leafOwner: Address<TAccountLeafOwner>;\n  leafDelegate?: Address<TAccountLeafDelegate>;\n  merkleTree: Address<TAccountMerkleTree>;\n  payer: TransactionSigner<TAccountPayer>;\n  creator: TransactionSigner<TAccountCreator>;\n  logWrapper?: Address<TAccountLogWrapper>;\n  compressionProgram?: Address<TAccountCompressionProgram>;\n  systemProgram?: Address<TAccountSystemProgram>;\n  root: VerifyCreatorInstructionDataArgs['root'];\n  dataHash?: VerifyCreatorInstructionDataArgs['dataHash'];\n  creatorHash?: VerifyCreatorInstructionDataArgs['creatorHash'];\n  nonce: VerifyCreatorInstructionDataArgs['nonce'];\n  index: VerifyCreatorInstructionDataArgs['index'];\n  metadata: VerifyCreatorInstructionDataArgs['metadata'];\n  proof?: Array<Address>;\n};\n\nexport async function getVerifyCreatorInstructionAsync<\n  TAccountTreeConfig extends string,\n  TAccountLeafOwner extends string,\n  TAccountLeafDelegate extends string,\n  TAccountMerkleTree extends string,\n  TAccountPayer extends string,\n  TAccountCreator extends string,\n  TAccountLogWrapper extends string,\n  TAccountCompressionProgram extends string,\n  TAccountSystemProgram extends string,\n  TProgramAddress extends Address = typeof MPL_BUBBLEGUM_PROGRAM_ADDRESS,\n>(\n  input: VerifyCreatorAsyncInput<\n    TAccountTreeConfig,\n    TAccountLeafOwner,\n    TAccountLeafDelegate,\n    TAccountMerkleTree,\n    TAccountPayer,\n    TAccountCreator,\n    TAccountLogWrapper,\n    TAccountCompressionProgram,\n    TAccountSystemProgram\n  >,\n  config?: { programAddress?: TProgramAddress }\n): Promise<\n  VerifyCreatorInstruction<\n    TProgramAddress,\n    TAccountTreeConfig,\n    TAccountLeafOwner,\n    TAccountLeafDelegate,\n    TAccountMerkleTree,\n    TAccountPayer,\n    TAccountCreator,\n    TAccountLogWrapper,\n    TAccountCompressionProgram,\n    TAccountSystemProgram\n  >\n> {\n  // Program address.\n  const programAddress =\n    config?.programAddress ?? MPL_BUBBLEGUM_PROGRAM_ADDRESS;\n\n  // Original accounts.\n  const originalAccounts = {\n    treeConfig: { value: input.treeConfig ?? null, isWritable: false },\n    leafOwner: { value: input.leafOwner ?? null, isWritable: false },\n    leafDelegate: { value: input.leafDelegate ?? null, isWritable: false },\n    merkleTree: { value: input.merkleTree ?? null, isWritable: true },\n    payer: { value: input.payer ?? null, isWritable: false },\n    creator: { value: input.creator ?? null, isWritable: false },\n    logWrapper: { value: input.logWrapper ?? null, isWritable: false },\n    compressionProgram: {\n      value: input.compressionProgram ?? null,\n      isWritable: false,\n    },\n    systemProgram: { value: input.systemProgram ?? null, isWritable: false },\n  };\n  const accounts = originalAccounts as Record<\n    keyof typeof originalAccounts,\n    ResolvedAccount\n  >;\n\n  // Original args.\n  const args = { ...input };\n\n  // Resolver scope.\n  const resolverScope = { programAddress, accounts, args };\n\n  // Resolve default values.\n  if (!accounts.treeConfig.value) {\n    accounts.treeConfig.value = await findTreeConfigPda({\n      merkleTree: expectAddress(accounts.merkleTree.value),\n    });\n  }\n  if (!accounts.leafDelegate.value) {\n    accounts.leafDelegate.value = expectSome(accounts.leafOwner.value);\n  }\n  if (!accounts.logWrapper.value) {\n    accounts.logWrapper.value =\n      'noopb9bkMVfRPU8AsbpTUg8AQkHtKwMYZiFUjNRtMmV' as Address<'noopb9bkMVfRPU8AsbpTUg8AQkHtKwMYZiFUjNRtMmV'>;\n  }\n  if (!accounts.compressionProgram.value) {\n    accounts.compressionProgram.value =\n      'cmtDvXumGCrqC1Age74AVPhSRVXJMd8PJS91L8KbNCK' as Address<'cmtDvXumGCrqC1Age74AVPhSRVXJMd8PJS91L8KbNCK'>;\n  }\n  if (!accounts.systemProgram.value) {\n    accounts.systemProgram.value =\n      '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>;\n  }\n  if (!args.dataHash) {\n    args.dataHash = resolveDataHash(resolverScope);\n  }\n  if (!args.creatorHash) {\n    args.creatorHash = resolveCreatorHash(resolverScope);\n  }\n\n  // Remaining accounts.\n  const remainingAccounts: AccountMeta[] = (args.proof ?? []).map(\n    (address) => ({ address, role: AccountRole.READONLY })\n  );\n\n  const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n  return Object.freeze({\n    accounts: [\n      getAccountMeta(accounts.treeConfig),\n      getAccountMeta(accounts.leafOwner),\n      getAccountMeta(accounts.leafDelegate),\n      getAccountMeta(accounts.merkleTree),\n      getAccountMeta(accounts.payer),\n      getAccountMeta(accounts.creator),\n      getAccountMeta(accounts.logWrapper),\n      getAccountMeta(accounts.compressionProgram),\n      getAccountMeta(accounts.systemProgram),\n      ...remainingAccounts,\n    ],\n    data: getVerifyCreatorInstructionDataEncoder().encode(\n      args as VerifyCreatorInstructionDataArgs\n    ),\n    programAddress,\n  } as VerifyCreatorInstruction<\n    TProgramAddress,\n    TAccountTreeConfig,\n    TAccountLeafOwner,\n    TAccountLeafDelegate,\n    TAccountMerkleTree,\n    TAccountPayer,\n    TAccountCreator,\n    TAccountLogWrapper,\n    TAccountCompressionProgram,\n    TAccountSystemProgram\n  >);\n}\n\nexport type VerifyCreatorInput<\n  TAccountTreeConfig extends string = string,\n  TAccountLeafOwner extends string = string,\n  TAccountLeafDelegate extends string = string,\n  TAccountMerkleTree extends string = string,\n  TAccountPayer extends string = string,\n  TAccountCreator extends string = string,\n  TAccountLogWrapper extends string = string,\n  TAccountCompressionProgram extends string = string,\n  TAccountSystemProgram extends string = string,\n> = {\n  treeConfig: Address<TAccountTreeConfig>;\n  leafOwner: Address<TAccountLeafOwner>;\n  leafDelegate?: Address<TAccountLeafDelegate>;\n  merkleTree: Address<TAccountMerkleTree>;\n  payer: TransactionSigner<TAccountPayer>;\n  creator: TransactionSigner<TAccountCreator>;\n  logWrapper?: Address<TAccountLogWrapper>;\n  compressionProgram?: Address<TAccountCompressionProgram>;\n  systemProgram?: Address<TAccountSystemProgram>;\n  root: VerifyCreatorInstructionDataArgs['root'];\n  dataHash?: VerifyCreatorInstructionDataArgs['dataHash'];\n  creatorHash?: VerifyCreatorInstructionDataArgs['creatorHash'];\n  nonce: VerifyCreatorInstructionDataArgs['nonce'];\n  index: VerifyCreatorInstructionDataArgs['index'];\n  metadata: VerifyCreatorInstructionDataArgs['metadata'];\n  proof?: Array<Address>;\n};\n\nexport function getVerifyCreatorInstruction<\n  TAccountTreeConfig extends string,\n  TAccountLeafOwner extends string,\n  TAccountLeafDelegate extends string,\n  TAccountMerkleTree extends string,\n  TAccountPayer extends string,\n  TAccountCreator extends string,\n  TAccountLogWrapper extends string,\n  TAccountCompressionProgram extends string,\n  TAccountSystemProgram extends string,\n  TProgramAddress extends Address = typeof MPL_BUBBLEGUM_PROGRAM_ADDRESS,\n>(\n  input: VerifyCreatorInput<\n    TAccountTreeConfig,\n    TAccountLeafOwner,\n    TAccountLeafDelegate,\n    TAccountMerkleTree,\n    TAccountPayer,\n    TAccountCreator,\n    TAccountLogWrapper,\n    TAccountCompressionProgram,\n    TAccountSystemProgram\n  >,\n  config?: { programAddress?: TProgramAddress }\n): VerifyCreatorInstruction<\n  TProgramAddress,\n  TAccountTreeConfig,\n  TAccountLeafOwner,\n  TAccountLeafDelegate,\n  TAccountMerkleTree,\n  TAccountPayer,\n  TAccountCreator,\n  TAccountLogWrapper,\n  TAccountCompressionProgram,\n  TAccountSystemProgram\n> {\n  // Program address.\n  const programAddress =\n    config?.programAddress ?? MPL_BUBBLEGUM_PROGRAM_ADDRESS;\n\n  // Original accounts.\n  const originalAccounts = {\n    treeConfig: { value: input.treeConfig ?? null, isWritable: false },\n    leafOwner: { value: input.leafOwner ?? null, isWritable: false },\n    leafDelegate: { value: input.leafDelegate ?? null, isWritable: false },\n    merkleTree: { value: input.merkleTree ?? null, isWritable: true },\n    payer: { value: input.payer ?? null, isWritable: false },\n    creator: { value: input.creator ?? null, isWritable: false },\n    logWrapper: { value: input.logWrapper ?? null, isWritable: false },\n    compressionProgram: {\n      value: input.compressionProgram ?? null,\n      isWritable: false,\n    },\n    systemProgram: { value: input.systemProgram ?? null, isWritable: false },\n  };\n  const accounts = originalAccounts as Record<\n    keyof typeof originalAccounts,\n    ResolvedAccount\n  >;\n\n  // Original args.\n  const args = { ...input };\n\n  // Resolver scope.\n  const resolverScope = { programAddress, accounts, args };\n\n  // Resolve default values.\n  if (!accounts.leafDelegate.value) {\n    accounts.leafDelegate.value = expectSome(accounts.leafOwner.value);\n  }\n  if (!accounts.logWrapper.value) {\n    accounts.logWrapper.value =\n      'noopb9bkMVfRPU8AsbpTUg8AQkHtKwMYZiFUjNRtMmV' as Address<'noopb9bkMVfRPU8AsbpTUg8AQkHtKwMYZiFUjNRtMmV'>;\n  }\n  if (!accounts.compressionProgram.value) {\n    accounts.compressionProgram.value =\n      'cmtDvXumGCrqC1Age74AVPhSRVXJMd8PJS91L8KbNCK' as Address<'cmtDvXumGCrqC1Age74AVPhSRVXJMd8PJS91L8KbNCK'>;\n  }\n  if (!accounts.systemProgram.value) {\n    accounts.systemProgram.value =\n      '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>;\n  }\n  if (!args.dataHash) {\n    args.dataHash = resolveDataHash(resolverScope);\n  }\n  if (!args.creatorHash) {\n    args.creatorHash = resolveCreatorHash(resolverScope);\n  }\n\n  // Remaining accounts.\n  const remainingAccounts: AccountMeta[] = (args.proof ?? []).map(\n    (address) => ({ address, role: AccountRole.READONLY })\n  );\n\n  const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n  return Object.freeze({\n    accounts: [\n      getAccountMeta(accounts.treeConfig),\n      getAccountMeta(accounts.leafOwner),\n      getAccountMeta(accounts.leafDelegate),\n      getAccountMeta(accounts.merkleTree),\n      getAccountMeta(accounts.payer),\n      getAccountMeta(accounts.creator),\n      getAccountMeta(accounts.logWrapper),\n      getAccountMeta(accounts.compressionProgram),\n      getAccountMeta(accounts.systemProgram),\n      ...remainingAccounts,\n    ],\n    data: getVerifyCreatorInstructionDataEncoder().encode(\n      args as VerifyCreatorInstructionDataArgs\n    ),\n    programAddress,\n  } as VerifyCreatorInstruction<\n    TProgramAddress,\n    TAccountTreeConfig,\n    TAccountLeafOwner,\n    TAccountLeafDelegate,\n    TAccountMerkleTree,\n    TAccountPayer,\n    TAccountCreator,\n    TAccountLogWrapper,\n    TAccountCompressionProgram,\n    TAccountSystemProgram\n  >);\n}\n\nexport type ParsedVerifyCreatorInstruction<\n  TProgram extends string = typeof MPL_BUBBLEGUM_PROGRAM_ADDRESS,\n  TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n  programAddress: Address<TProgram>;\n  accounts: {\n    treeConfig: TAccountMetas[0];\n    leafOwner: TAccountMetas[1];\n    leafDelegate: TAccountMetas[2];\n    merkleTree: TAccountMetas[3];\n    payer: TAccountMetas[4];\n    creator: TAccountMetas[5];\n    logWrapper: TAccountMetas[6];\n    compressionProgram: TAccountMetas[7];\n    systemProgram: TAccountMetas[8];\n  };\n  data: VerifyCreatorInstructionData;\n};\n\nexport function parseVerifyCreatorInstruction<\n  TProgram extends string,\n  TAccountMetas extends readonly AccountMeta[],\n>(\n  instruction: Instruction<TProgram> &\n    InstructionWithAccounts<TAccountMetas> &\n    InstructionWithData<ReadonlyUint8Array>\n): ParsedVerifyCreatorInstruction<TProgram, TAccountMetas> {\n  if (instruction.accounts.length < 9) {\n    // TODO: Coded error.\n    throw new Error('Not enough accounts');\n  }\n  let accountIndex = 0;\n  const getNextAccount = () => {\n    const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n    accountIndex += 1;\n    return accountMeta;\n  };\n  return {\n    programAddress: instruction.programAddress,\n    accounts: {\n      treeConfig: getNextAccount(),\n      leafOwner: getNextAccount(),\n      leafDelegate: getNextAccount(),\n      merkleTree: getNextAccount(),\n      payer: getNextAccount(),\n      creator: getNextAccount(),\n      logWrapper: getNextAccount(),\n      compressionProgram: getNextAccount(),\n      systemProgram: getNextAccount(),\n    },\n    data: getVerifyCreatorInstructionDataDecoder().decode(instruction.data),\n  };\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  AccountRole,\n  combineCodec,\n  fixDecoderSize,\n  fixEncoderSize,\n  getBytesDecoder,\n  getBytesEncoder,\n  getOptionDecoder,\n  getOptionEncoder,\n  getStructDecoder,\n  getStructEncoder,\n  getU32Decoder,\n  getU32Encoder,\n  getU64Decoder,\n  getU64Encoder,\n  getU8Decoder,\n  getU8Encoder,\n  none,\n  transformEncoder,\n  type AccountMeta,\n  type AccountSignerMeta,\n  type Address,\n  type Codec,\n  type Decoder,\n  type Encoder,\n  type Instruction,\n  type InstructionWithAccounts,\n  type InstructionWithData,\n  type Option,\n  type OptionOrNullable,\n  type ReadonlyAccount,\n  type ReadonlySignerAccount,\n  type ReadonlyUint8Array,\n  type TransactionSigner,\n  type WritableAccount,\n  type WritableSignerAccount,\n} from '@solana/kit';\nimport { findTreeConfigPda } from '../pdas';\nimport { MPL_BUBBLEGUM_PROGRAM_ADDRESS } from '../programs';\nimport {\n  expectAddress,\n  getAccountMetaFactory,\n  type ResolvedAccount,\n} from '../shared';\nimport {\n  getMetadataArgsV2Decoder,\n  getMetadataArgsV2Encoder,\n  type MetadataArgsV2,\n  type MetadataArgsV2Args,\n} from '../types';\n\nexport const VERIFY_CREATOR_V2_DISCRIMINATOR = new Uint8Array([\n  85, 138, 140, 42, 22, 241, 118, 102,\n]);\n\nexport function getVerifyCreatorV2DiscriminatorBytes() {\n  return fixEncoderSize(getBytesEncoder(), 8).encode(\n    VERIFY_CREATOR_V2_DISCRIMINATOR\n  );\n}\n\nexport type VerifyCreatorV2Instruction<\n  TProgram extends string = typeof MPL_BUBBLEGUM_PROGRAM_ADDRESS,\n  TAccountTreeConfig extends string | AccountMeta<string> = string,\n  TAccountPayer extends string | AccountMeta<string> = string,\n  TAccountCreator extends string | AccountMeta<string> = string,\n  TAccountLeafOwner extends string | AccountMeta<string> = string,\n  TAccountLeafDelegate extends string | AccountMeta<string> = string,\n  TAccountMerkleTree extends string | AccountMeta<string> = string,\n  TAccountLogWrapper extends\n    | string\n    | AccountMeta<string> = 'mnoopTCrg4p8ry25e4bcWA9XZjbNjMTfgYVGGEdRsf3',\n  TAccountCompressionProgram extends\n    | string\n    | AccountMeta<string> = 'mcmt6YrQEMKw8Mw43FmpRLmf7BqRnFMKmAcbxE3xkAW',\n  TAccountSystemProgram extends\n    | string\n    | AccountMeta<string> = '11111111111111111111111111111111',\n  TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n  InstructionWithData<ReadonlyUint8Array> &\n  InstructionWithAccounts<\n    [\n      TAccountTreeConfig extends string\n        ? WritableAccount<TAccountTreeConfig>\n        : TAccountTreeConfig,\n      TAccountPayer extends string\n        ? WritableSignerAccount<TAccountPayer> &\n            AccountSignerMeta<TAccountPayer>\n        : TAccountPayer,\n      TAccountCreator extends string\n        ? ReadonlySignerAccount<TAccountCreator> &\n            AccountSignerMeta<TAccountCreator>\n        : TAccountCreator,\n      TAccountLeafOwner extends string\n        ? ReadonlyAccount<TAccountLeafOwner>\n        : TAccountLeafOwner,\n      TAccountLeafDelegate extends string\n        ? ReadonlyAccount<TAccountLeafDelegate>\n        : TAccountLeafDelegate,\n      TAccountMerkleTree extends string\n        ? WritableAccount<TAccountMerkleTree>\n        : TAccountMerkleTree,\n      TAccountLogWrapper extends string\n        ? ReadonlyAccount<TAccountLogWrapper>\n        : TAccountLogWrapper,\n      TAccountCompressionProgram extends string\n        ? ReadonlyAccount<TAccountCompressionProgram>\n        : TAccountCompressionProgram,\n      TAccountSystemProgram extends string\n        ? ReadonlyAccount<TAccountSystemProgram>\n        : TAccountSystemProgram,\n      ...TRemainingAccounts,\n    ]\n  >;\n\nexport type VerifyCreatorV2InstructionData = {\n  discriminator: ReadonlyUint8Array;\n  root: ReadonlyUint8Array;\n  assetDataHash: Option<ReadonlyUint8Array>;\n  flags: Option<number>;\n  nonce: bigint;\n  index: number;\n  metadata: MetadataArgsV2;\n};\n\nexport type VerifyCreatorV2InstructionDataArgs = {\n  root: ReadonlyUint8Array;\n  assetDataHash?: OptionOrNullable<ReadonlyUint8Array>;\n  flags?: OptionOrNullable<number>;\n  nonce: number | bigint;\n  index: number;\n  metadata: MetadataArgsV2Args;\n};\n\nexport function getVerifyCreatorV2InstructionDataEncoder(): Encoder<VerifyCreatorV2InstructionDataArgs> {\n  return transformEncoder(\n    getStructEncoder([\n      ['discriminator', fixEncoderSize(getBytesEncoder(), 8)],\n      ['root', fixEncoderSize(getBytesEncoder(), 32)],\n      [\n        'assetDataHash',\n        getOptionEncoder(fixEncoderSize(getBytesEncoder(), 32)),\n      ],\n      ['flags', getOptionEncoder(getU8Encoder())],\n      ['nonce', getU64Encoder()],\n      ['index', getU32Encoder()],\n      ['metadata', getMetadataArgsV2Encoder()],\n    ]),\n    (value) => ({\n      ...value,\n      discriminator: VERIFY_CREATOR_V2_DISCRIMINATOR,\n      assetDataHash: value.assetDataHash ?? none(),\n      flags: value.flags ?? none(),\n    })\n  );\n}\n\nexport function getVerifyCreatorV2InstructionDataDecoder(): Decoder<VerifyCreatorV2InstructionData> {\n  return getStructDecoder([\n    ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n    ['root', fixDecoderSize(getBytesDecoder(), 32)],\n    ['assetDataHash', getOptionDecoder(fixDecoderSize(getBytesDecoder(), 32))],\n    ['flags', getOptionDecoder(getU8Decoder())],\n    ['nonce', getU64Decoder()],\n    ['index', getU32Decoder()],\n    ['metadata', getMetadataArgsV2Decoder()],\n  ]);\n}\n\nexport function getVerifyCreatorV2InstructionDataCodec(): Codec<\n  VerifyCreatorV2InstructionDataArgs,\n  VerifyCreatorV2InstructionData\n> {\n  return combineCodec(\n    getVerifyCreatorV2InstructionDataEncoder(),\n    getVerifyCreatorV2InstructionDataDecoder()\n  );\n}\n\nexport type VerifyCreatorV2AsyncInput<\n  TAccountTreeConfig extends string = string,\n  TAccountPayer extends string = string,\n  TAccountCreator extends string = string,\n  TAccountLeafOwner extends string = string,\n  TAccountLeafDelegate extends string = string,\n  TAccountMerkleTree extends string = string,\n  TAccountLogWrapper extends string = string,\n  TAccountCompressionProgram extends string = string,\n  TAccountSystemProgram extends string = string,\n> = {\n  treeConfig?: Address<TAccountTreeConfig>;\n  payer: TransactionSigner<TAccountPayer>;\n  /** Optional creator, defaults to `payer` */\n  creator?: TransactionSigner<TAccountCreator>;\n  leafOwner: Address<TAccountLeafOwner>;\n  /** Defaults to `leaf_owner` */\n  leafDelegate?: Address<TAccountLeafDelegate>;\n  merkleTree: Address<TAccountMerkleTree>;\n  logWrapper?: Address<TAccountLogWrapper>;\n  compressionProgram?: Address<TAccountCompressionProgram>;\n  systemProgram?: Address<TAccountSystemProgram>;\n  root: VerifyCreatorV2InstructionDataArgs['root'];\n  assetDataHash?: VerifyCreatorV2InstructionDataArgs['assetDataHash'];\n  flags?: VerifyCreatorV2InstructionDataArgs['flags'];\n  nonce: VerifyCreatorV2InstructionDataArgs['nonce'];\n  index: VerifyCreatorV2InstructionDataArgs['index'];\n  metadata: VerifyCreatorV2InstructionDataArgs['metadata'];\n  proof?: Array<Address>;\n};\n\nexport async function getVerifyCreatorV2InstructionAsync<\n  TAccountTreeConfig extends string,\n  TAccountPayer extends string,\n  TAccountCreator extends string,\n  TAccountLeafOwner extends string,\n  TAccountLeafDelegate extends string,\n  TAccountMerkleTree extends string,\n  TAccountLogWrapper extends string,\n  TAccountCompressionProgram extends string,\n  TAccountSystemProgram extends string,\n  TProgramAddress extends Address = typeof MPL_BUBBLEGUM_PROGRAM_ADDRESS,\n>(\n  input: VerifyCreatorV2AsyncInput<\n    TAccountTreeConfig,\n    TAccountPayer,\n    TAccountCreator,\n    TAccountLeafOwner,\n    TAccountLeafDelegate,\n    TAccountMerkleTree,\n    TAccountLogWrapper,\n    TAccountCompressionProgram,\n    TAccountSystemProgram\n  >,\n  config?: { programAddress?: TProgramAddress }\n): Promise<\n  VerifyCreatorV2Instruction<\n    TProgramAddress,\n    TAccountTreeConfig,\n    TAccountPayer,\n    TAccountCreator,\n    TAccountLeafOwner,\n    TAccountLeafDelegate,\n    TAccountMerkleTree,\n    TAccountLogWrapper,\n    TAccountCompressionProgram,\n    TAccountSystemProgram\n  >\n> {\n  // Program address.\n  const programAddress =\n    config?.programAddress ?? MPL_BUBBLEGUM_PROGRAM_ADDRESS;\n\n  // Original accounts.\n  const originalAccounts = {\n    treeConfig: { value: input.treeConfig ?? null, isWritable: true },\n    payer: { value: input.payer ?? null, isWritable: true },\n    creator: { value: input.creator ?? null, isWritable: false },\n    leafOwner: { value: input.leafOwner ?? null, isWritable: false },\n    leafDelegate: { value: input.leafDelegate ?? null, isWritable: false },\n    merkleTree: { value: input.merkleTree ?? null, isWritable: true },\n    logWrapper: { value: input.logWrapper ?? null, isWritable: false },\n    compressionProgram: {\n      value: input.compressionProgram ?? null,\n      isWritable: false,\n    },\n    systemProgram: { value: input.systemProgram ?? null, isWritable: false },\n  };\n  const accounts = originalAccounts as Record<\n    keyof typeof originalAccounts,\n    ResolvedAccount\n  >;\n\n  // Original args.\n  const args = { ...input };\n\n  // Resolve default values.\n  if (!accounts.treeConfig.value) {\n    accounts.treeConfig.value = await findTreeConfigPda({\n      merkleTree: expectAddress(accounts.merkleTree.value),\n    });\n  }\n  if (!accounts.logWrapper.value) {\n    accounts.logWrapper.value =\n      'mnoopTCrg4p8ry25e4bcWA9XZjbNjMTfgYVGGEdRsf3' as Address<'mnoopTCrg4p8ry25e4bcWA9XZjbNjMTfgYVGGEdRsf3'>;\n  }\n  if (!accounts.compressionProgram.value) {\n    accounts.compressionProgram.value =\n      'mcmt6YrQEMKw8Mw43FmpRLmf7BqRnFMKmAcbxE3xkAW' as Address<'mcmt6YrQEMKw8Mw43FmpRLmf7BqRnFMKmAcbxE3xkAW'>;\n  }\n  if (!accounts.systemProgram.value) {\n    accounts.systemProgram.value =\n      '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>;\n  }\n\n  // Remaining accounts.\n  const remainingAccounts: AccountMeta[] = (args.proof ?? []).map(\n    (address) => ({ address, role: AccountRole.READONLY })\n  );\n\n  const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n  return Object.freeze({\n    accounts: [\n      getAccountMeta(accounts.treeConfig),\n      getAccountMeta(accounts.payer),\n      getAccountMeta(accounts.creator),\n      getAccountMeta(accounts.leafOwner),\n      getAccountMeta(accounts.leafDelegate),\n      getAccountMeta(accounts.merkleTree),\n      getAccountMeta(accounts.logWrapper),\n      getAccountMeta(accounts.compressionProgram),\n      getAccountMeta(accounts.systemProgram),\n      ...remainingAccounts,\n    ],\n    data: getVerifyCreatorV2InstructionDataEncoder().encode(\n      args as VerifyCreatorV2InstructionDataArgs\n    ),\n    programAddress,\n  } as VerifyCreatorV2Instruction<\n    TProgramAddress,\n    TAccountTreeConfig,\n    TAccountPayer,\n    TAccountCreator,\n    TAccountLeafOwner,\n    TAccountLeafDelegate,\n    TAccountMerkleTree,\n    TAccountLogWrapper,\n    TAccountCompressionProgram,\n    TAccountSystemProgram\n  >);\n}\n\nexport type VerifyCreatorV2Input<\n  TAccountTreeConfig extends string = string,\n  TAccountPayer extends string = string,\n  TAccountCreator extends string = string,\n  TAccountLeafOwner extends string = string,\n  TAccountLeafDelegate extends string = string,\n  TAccountMerkleTree extends string = string,\n  TAccountLogWrapper extends string = string,\n  TAccountCompressionProgram extends string = string,\n  TAccountSystemProgram extends string = string,\n> = {\n  treeConfig: Address<TAccountTreeConfig>;\n  payer: TransactionSigner<TAccountPayer>;\n  /** Optional creator, defaults to `payer` */\n  creator?: TransactionSigner<TAccountCreator>;\n  leafOwner: Address<TAccountLeafOwner>;\n  /** Defaults to `leaf_owner` */\n  leafDelegate?: Address<TAccountLeafDelegate>;\n  merkleTree: Address<TAccountMerkleTree>;\n  logWrapper?: Address<TAccountLogWrapper>;\n  compressionProgram?: Address<TAccountCompressionProgram>;\n  systemProgram?: Address<TAccountSystemProgram>;\n  root: VerifyCreatorV2InstructionDataArgs['root'];\n  assetDataHash?: VerifyCreatorV2InstructionDataArgs['assetDataHash'];\n  flags?: VerifyCreatorV2InstructionDataArgs['flags'];\n  nonce: VerifyCreatorV2InstructionDataArgs['nonce'];\n  index: VerifyCreatorV2InstructionDataArgs['index'];\n  metadata: VerifyCreatorV2InstructionDataArgs['metadata'];\n  proof?: Array<Address>;\n};\n\nexport function getVerifyCreatorV2Instruction<\n  TAccountTreeConfig extends string,\n  TAccountPayer extends string,\n  TAccountCreator extends string,\n  TAccountLeafOwner extends string,\n  TAccountLeafDelegate extends string,\n  TAccountMerkleTree extends string,\n  TAccountLogWrapper extends string,\n  TAccountCompressionProgram extends string,\n  TAccountSystemProgram extends string,\n  TProgramAddress extends Address = typeof MPL_BUBBLEGUM_PROGRAM_ADDRESS,\n>(\n  input: VerifyCreatorV2Input<\n    TAccountTreeConfig,\n    TAccountPayer,\n    TAccountCreator,\n    TAccountLeafOwner,\n    TAccountLeafDelegate,\n    TAccountMerkleTree,\n    TAccountLogWrapper,\n    TAccountCompressionProgram,\n    TAccountSystemProgram\n  >,\n  config?: { programAddress?: TProgramAddress }\n): VerifyCreatorV2Instruction<\n  TProgramAddress,\n  TAccountTreeConfig,\n  TAccountPayer,\n  TAccountCreator,\n  TAccountLeafOwner,\n  TAccountLeafDelegate,\n  TAccountMerkleTree,\n  TAccountLogWrapper,\n  TAccountCompressionProgram,\n  TAccountSystemProgram\n> {\n  // Program address.\n  const programAddress =\n    config?.programAddress ?? MPL_BUBBLEGUM_PROGRAM_ADDRESS;\n\n  // Original accounts.\n  const originalAccounts = {\n    treeConfig: { value: input.treeConfig ?? null, isWritable: true },\n    payer: { value: input.payer ?? null, isWritable: true },\n    creator: { value: input.creator ?? null, isWritable: false },\n    leafOwner: { value: input.leafOwner ?? null, isWritable: false },\n    leafDelegate: { value: input.leafDelegate ?? null, isWritable: false },\n    merkleTree: { value: input.merkleTree ?? null, isWritable: true },\n    logWrapper: { value: input.logWrapper ?? null, isWritable: false },\n    compressionProgram: {\n      value: input.compressionProgram ?? null,\n      isWritable: false,\n    },\n    systemProgram: { value: input.systemProgram ?? null, isWritable: false },\n  };\n  const accounts = originalAccounts as Record<\n    keyof typeof originalAccounts,\n    ResolvedAccount\n  >;\n\n  // Original args.\n  const args = { ...input };\n\n  // Resolve default values.\n  if (!accounts.logWrapper.value) {\n    accounts.logWrapper.value =\n      'mnoopTCrg4p8ry25e4bcWA9XZjbNjMTfgYVGGEdRsf3' as Address<'mnoopTCrg4p8ry25e4bcWA9XZjbNjMTfgYVGGEdRsf3'>;\n  }\n  if (!accounts.compressionProgram.value) {\n    accounts.compressionProgram.value =\n      'mcmt6YrQEMKw8Mw43FmpRLmf7BqRnFMKmAcbxE3xkAW' as Address<'mcmt6YrQEMKw8Mw43FmpRLmf7BqRnFMKmAcbxE3xkAW'>;\n  }\n  if (!accounts.systemProgram.value) {\n    accounts.systemProgram.value =\n      '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>;\n  }\n\n  // Remaining accounts.\n  const remainingAccounts: AccountMeta[] = (args.proof ?? []).map(\n    (address) => ({ address, role: AccountRole.READONLY })\n  );\n\n  const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n  return Object.freeze({\n    accounts: [\n      getAccountMeta(accounts.treeConfig),\n      getAccountMeta(accounts.payer),\n      getAccountMeta(accounts.creator),\n      getAccountMeta(accounts.leafOwner),\n      getAccountMeta(accounts.leafDelegate),\n      getAccountMeta(accounts.merkleTree),\n      getAccountMeta(accounts.logWrapper),\n      getAccountMeta(accounts.compressionProgram),\n      getAccountMeta(accounts.systemProgram),\n      ...remainingAccounts,\n    ],\n    data: getVerifyCreatorV2InstructionDataEncoder().encode(\n      args as VerifyCreatorV2InstructionDataArgs\n    ),\n    programAddress,\n  } as VerifyCreatorV2Instruction<\n    TProgramAddress,\n    TAccountTreeConfig,\n    TAccountPayer,\n    TAccountCreator,\n    TAccountLeafOwner,\n    TAccountLeafDelegate,\n    TAccountMerkleTree,\n    TAccountLogWrapper,\n    TAccountCompressionProgram,\n    TAccountSystemProgram\n  >);\n}\n\nexport type ParsedVerifyCreatorV2Instruction<\n  TProgram extends string = typeof MPL_BUBBLEGUM_PROGRAM_ADDRESS,\n  TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n  programAddress: Address<TProgram>;\n  accounts: {\n    treeConfig: TAccountMetas[0];\n    payer: TAccountMetas[1];\n    /** Optional creator, defaults to `payer` */\n    creator?: TAccountMetas[2] | undefined;\n    leafOwner: TAccountMetas[3];\n    /** Defaults to `leaf_owner` */\n    leafDelegate?: TAccountMetas[4] | undefined;\n    merkleTree: TAccountMetas[5];\n    logWrapper: TAccountMetas[6];\n    compressionProgram: TAccountMetas[7];\n    systemProgram: TAccountMetas[8];\n  };\n  data: VerifyCreatorV2InstructionData;\n};\n\nexport function parseVerifyCreatorV2Instruction<\n  TProgram extends string,\n  TAccountMetas extends readonly AccountMeta[],\n>(\n  instruction: Instruction<TProgram> &\n    InstructionWithAccounts<TAccountMetas> &\n    InstructionWithData<ReadonlyUint8Array>\n): ParsedVerifyCreatorV2Instruction<TProgram, TAccountMetas> {\n  if (instruction.accounts.length < 9) {\n    // TODO: Coded error.\n    throw new Error('Not enough accounts');\n  }\n  let accountIndex = 0;\n  const getNextAccount = () => {\n    const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n    accountIndex += 1;\n    return accountMeta;\n  };\n  const getNextOptionalAccount = () => {\n    const accountMeta = getNextAccount();\n    return accountMeta.address === MPL_BUBBLEGUM_PROGRAM_ADDRESS\n      ? undefined\n      : accountMeta;\n  };\n  return {\n    programAddress: instruction.programAddress,\n    accounts: {\n      treeConfig: getNextAccount(),\n      payer: getNextAccount(),\n      creator: getNextOptionalAccount(),\n      leafOwner: getNextAccount(),\n      leafDelegate: getNextOptionalAccount(),\n      merkleTree: getNextAccount(),\n      logWrapper: getNextAccount(),\n      compressionProgram: getNextAccount(),\n      systemProgram: getNextAccount(),\n    },\n    data: getVerifyCreatorV2InstructionDataDecoder().decode(instruction.data),\n  };\n}\n","// Copied from https://github.com/DecalLabs/gill/blob/9d30e69d5faaf34e773def8cde17a444ad6fd7f1/packages/gill/src/core/accounts.ts#L1\n\n/**\n * Calculate the total rent needed for to create an account, with or without extra data stored in it\n */\nexport function getMinimumBalanceForRentExemption(space: bigint | number = 0) {\n  /**\n   * Default values for Rent calculations\n   *\n   * Values taken from: https://github.com/anza-xyz/solana-sdk/blob/c07f692e41d757057c8700211a9300cdcd6d33b1/rent/src/lib.rs#L93-L97\n   *\n   */\n  const RENT = {\n    /**\n     * Account storage overhead for calculation of base rent. (aka the number of bytes required to store an account with no data.\n     */\n    ACCOUNT_STORAGE_OVERHEAD: 128n,\n    /**\n     * Amount of time (in years) a balance must include rent for the account to\n     * be rent exempt.\n     */\n    DEFAULT_EXEMPTION_THRESHOLD: BigInt(Math.floor(2.0 * 1000)) / 1000n,\n    /**\n     * Default rental rate in lamports/byte-year. This calculation is based on:\n     * - 10^9 lamports per SOL\n     * - $1 per SOL\n     * - $0.01 per megabyte day\n     * - $3.65 per megabyte year\n     */\n    DEFAULT_LAMPORTS_PER_BYTE_YEAR: BigInt(\n      Math.floor(((1_000_000_000 / 100) * 365) / (1024 * 1024))\n    ),\n  };\n\n  return (\n    ((RENT.ACCOUNT_STORAGE_OVERHEAD + BigInt(space)) *\n      RENT.DEFAULT_LAMPORTS_PER_BYTE_YEAR *\n      RENT.DEFAULT_EXEMPTION_THRESHOLD) /\n    1n\n  );\n}\n","import { Instruction, TransactionSigner } from '@solana/kit';\nimport {\n  CreateTreeConfigAsyncInput,\n  getCreateTreeConfigInstructionAsync,\n} from './generated';\nimport {\n  getMerkleTreeSize,\n  SPL_ACCOUNT_COMPRESSION_PROGRAM_ADDRESS,\n} from '@mcintyre94/spl-account-compression';\nimport { getMinimumBalanceForRentExemption } from './getMinimumBalanceForRentExemption';\nimport { getCreateAccountInstruction } from '@solana-program/system';\n\nexport async function getCreateTreeInstructions(\n  input: Omit<CreateTreeConfigAsyncInput, 'merkleTree'> & {\n    merkleTree: TransactionSigner;\n    merkleTreeSize?: number;\n    canopyDepth?: number;\n  }\n): Promise<Instruction[]> {\n  const space =\n    input.merkleTreeSize ??\n    getMerkleTreeSize(input.maxDepth, input.maxBufferSize, input.canopyDepth);\n  const lamports = getMinimumBalanceForRentExemption(space);\n\n  const programAddress =\n    input.compressionProgram ?? SPL_ACCOUNT_COMPRESSION_PROGRAM_ADDRESS;\n\n  return [\n    getCreateAccountInstruction({\n      payer: input.payer ?? input.treeCreator,\n      newAccount: input.merkleTree,\n      space,\n      lamports,\n      programAddress,\n    }),\n    await getCreateTreeConfigInstructionAsync({\n      ...input,\n      merkleTree: input.merkleTree.address,\n    }),\n  ];\n}\n","export enum LeafSchemaV2Flags {\n  None = 0,\n  FrozenByOwner = 1 << 0,\n  FrozenByPermDelegate = 1 << 1,\n  NonTransferable = 1 << 2,\n}\n\n// Checks whether a number is a valid LeafSchemaV2Flags bitmask.\nexport function isValidLeafSchemaV2Flags(n: unknown): n is LeafSchemaV2Flags {\n  return (\n    typeof n === 'number' &&\n    Number.isInteger(n) &&\n    n >= 0 &&\n    n <= 0xff && // fits in u8\n    (n & ~0b111) === 0 // only known bits (bits 0–2)\n  );\n}\n","import {\n  address,\n  Address,\n  GetAccountInfoApi,\n  getAddressEncoder,\n  none,\n  ReadonlyUint8Array,\n  Rpc,\n  some,\n  wrapNullable,\n} from '@solana/kit';\nimport { MetadataArgs, TokenProgramVersion, TokenStandard } from './generated';\nimport {\n  DasApiAsset,\n  GetAssetApi,\n  GetAssetProofApi,\n  GetAssetProofRpcResponse,\n} from './rpc';\nimport { fetchMerkleTree } from '@mcintyre94/spl-account-compression';\nimport { isValidLeafSchemaV2Flags, LeafSchemaV2Flags } from './flags';\n\nexport type AssetWithProof = {\n  leafOwner: Address;\n  leafDelegate: Address;\n  merkleTree: Address;\n  root: ReadonlyUint8Array;\n  dataHash: ReadonlyUint8Array;\n  creatorHash: ReadonlyUint8Array;\n  collection_hash?: ReadonlyUint8Array;\n  asset_data_hash?: ReadonlyUint8Array;\n  flags?: number;\n  nonce: number;\n  index: number;\n  proof: Address[];\n  metadata: MetadataArgs;\n  rpcAsset: DasApiAsset;\n  rpcAssetProof: GetAssetProofRpcResponse;\n};\n\ntype GetAssetWithProofOptions = {\n  /* Define the options properties here */\n  truncateCanopy?: boolean;\n};\n\nexport async function getAssetWithProof(\n  rpc: Rpc<GetAccountInfoApi & GetAssetApi & GetAssetProofApi>,\n  assetId: Address,\n  options?: GetAssetWithProofOptions\n): Promise<AssetWithProof> {\n  const [rpcAsset, rpcAssetProof] = await Promise.all([\n    rpc\n      .getAsset({\n        id: assetId,\n        displayOptions: { showUnverifiedCollections: true },\n      })\n      .send(),\n    rpc.getAssetProof({ id: assetId }).send(),\n  ]);\n\n  let { proof } = rpcAssetProof;\n  if (options?.truncateCanopy) {\n    const merkleTreeAccount = await fetchMerkleTree(rpc, rpcAssetProof.tree_id);\n    const canopyDepth = Math.log2(merkleTreeAccount.data.canopy.length + 2) - 1;\n    proof = rpcAssetProof.proof.slice(\n      0,\n      canopyDepth === 0 ? undefined : -canopyDepth\n    );\n  }\n\n  const collectionString = (rpcAsset.grouping ?? []).find(\n    (group) => group.group_key === 'collection'\n  )?.group_value;\n\n  const metadata: MetadataArgs = {\n    name: rpcAsset.content?.metadata?.name ?? '',\n    symbol: rpcAsset.content?.metadata?.symbol ?? '',\n    uri: rpcAsset.content?.json_uri,\n    sellerFeeBasisPoints: rpcAsset.royalty?.basis_points,\n    primarySaleHappened: rpcAsset.royalty?.primary_sale_happened,\n    isMutable: rpcAsset.mutable,\n    editionNonce: wrapNullable(rpcAsset.supply?.edition_nonce),\n    tokenStandard: some(TokenStandard.NonFungible),\n    collection: collectionString\n      ? some({ key: address(collectionString), verified: true })\n      : none(),\n    uses: none(),\n    tokenProgramVersion: TokenProgramVersion.Original,\n    creators: rpcAsset.creators,\n  };\n\n  const addressEncoder = getAddressEncoder();\n\n  const collectionHashBytes = rpcAsset.compression.collection_hash\n    ? addressEncoder.encode(rpcAsset.compression.collection_hash)\n    : undefined;\n  const assetDataHashBytes = rpcAsset.compression.asset_data_hash\n    ? addressEncoder.encode(rpcAsset.compression.asset_data_hash)\n    : undefined;\n\n  const rawFlags = rpcAsset.compression.flags;\n  const flagsValue = isValidLeafSchemaV2Flags(rawFlags)\n    ? (rawFlags as LeafSchemaV2Flags)\n    : undefined;\n\n  return {\n    leafOwner: rpcAsset.ownership.owner,\n    leafDelegate: rpcAsset.ownership.delegate\n      ? rpcAsset.ownership.delegate\n      : rpcAsset.ownership.owner,\n    merkleTree: rpcAssetProof.tree_id,\n    root: addressEncoder.encode(rpcAssetProof.root),\n    dataHash: addressEncoder.encode(rpcAsset.compression.data_hash),\n    creatorHash: addressEncoder.encode(rpcAsset.compression.creator_hash),\n    collection_hash: collectionHashBytes,\n    asset_data_hash: assetDataHashBytes,\n    flags: flagsValue,\n    nonce: rpcAsset.compression.leaf_id,\n    index: rpcAssetProof.node_index - 2 ** rpcAssetProof.proof.length,\n    proof,\n    metadata,\n    rpcAsset,\n    rpcAssetProof,\n  };\n}\n","import { Address, getAddressCodec, getAddressEncoder } from '@solana/kit';\nimport { keccak_256 } from '@noble/hashes/sha3';\nimport { MerkleTree } from 'merkletreejs';\n\n/**\n * Creates a Merkle Tree from the provided data.\n */\nfunction getMerkleTree(leaves: Address[], maxDepth: number): MerkleTree {\n  const addressEncoder = getAddressEncoder();\n  return new MerkleTree(\n    [\n      ...leaves.map((leaf) => addressEncoder.encode(leaf)),\n      ...Array(2 ** maxDepth - leaves.length)\n        .fill(0)\n        .map(() => new Uint8Array(32).fill(0)),\n    ],\n    keccak_256\n  );\n}\n\n/**\n * Creates a Merkle Proof for a given data item.\n *\n * This proof can be used to verify that the given\n * data item is part of the original data set.\n */\nexport function getMerkleProof(\n  leaves: Address[],\n  maxDepth: number,\n  leaf: Address,\n  index?: number\n): Address[] {\n  const addressCodec = getAddressCodec();\n\n  return getMerkleTree(leaves, maxDepth)\n    .getProof(Buffer.from(addressCodec.encode(leaf)), index)\n    .map((proofItem) => addressCodec.decode(proofItem.data));\n}\n"]}