@layerzerolabs/lz-v2-stellar-sdk 0.2.52 → 0.2.54
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.turbo/turbo-test.log +337 -285
- package/dist/generated/dvn.d.ts +11 -25
- package/dist/generated/dvn.js +8 -9
- package/dist/generated/executor.d.ts +5 -7
- package/dist/generated/executor.js +5 -5
- package/dist/generated/executor_helper.d.ts +3 -17
- package/dist/generated/executor_helper.js +4 -6
- package/package.json +6 -6
- package/src/generated/dvn.ts +15 -32
- package/src/generated/executor.ts +7 -8
- package/src/generated/executor_helper.ts +4 -12
- package/test/counter-sml.test.ts +31 -5
- package/test/counter-uln.test.ts +40 -14
- package/test/suites/globalSetup.ts +1 -2
- package/test/utils.ts +14 -81
|
@@ -28,15 +28,15 @@ export * as rpc from '@stellar/stellar-sdk/rpc'
|
|
|
28
28
|
|
|
29
29
|
/**
|
|
30
30
|
* Embedded WASM bytecode (base64-encoded)
|
|
31
|
-
* Size:
|
|
31
|
+
* Size: 25110 bytes (24.52 KB)
|
|
32
32
|
*/
|
|
33
|
-
export const WASM_BASE64 = "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IAAgBDcDCCAAIAVCIIg+AhhCACEECyAAIAQ3AwAgAkEwaiSAgICAAAvZAQMBfwF+AX8jgICAgABBMGsiBCSAgICAACABEJeAgIAAQYyCwIAAQQwQmICAgAAQgICAgAAQmYCAgAAhBSAEIAIgAxCagICAADcDECAEIAE3AwggBCAANwMAQQAhBgNAAkAgBkEYRw0AQQAhBgJAA0AgBkEYRg0BIARBGGogBmogBCAGaikDADcDACAGQQhqIQYMAAsLIAVCju7qlb623vMAIARBGGpBAxCbgICAABCcgICAACAEQTBqJICAgIAADwsgBEEYaiAGakICNwMAIAZBCGohBgwACwsaACAAQo7ys5fdzs7VABCAgICAABCZgICAAAtFAgF/AX4jgICAgABBEGsiAiSAgICAACACIAAgARCpgICAAAJAIAIoAgBBAUcNAAALIAIpAwghAyACQRBqJICAgIAAIAMLJgACQCAAIAEgAhCKgICAACICQv8Bg0LNAFENABCogICAAAALIAILRQACQCAAQoCAgICAgIDAAHxC//////////8AVg0AIAAgAIUgASAAQj+HhYRCAFINACAAQgiGQguEDwsgASAAEImAgIAACxoAIACtQiCGQgSEIAGtQiCGQgSEEIyAgIAACyEAAkAgACABIAIQioCAgABC/wGDQgJRDQAQqICAgAAACwuhAQEBfyOAgICAAEHQAWsiAySAgICAAAJAIABC/wGDQs0AUg0AIANB4ABqIAEQlICAgAAgAygCYEEBcQ0AIAMgA0HwAGpB4AAQq4CAgAAhAyACQv8Bg0LNAFINABCegICAACAAEIGAgIAAGgJAIAMpAwAgAykDCIRQDQAgAhCBgICAABoLIAAgAyACEJ+AgIAAIANB0AFqJICAgIAAQgIPCwAL9AEEAX8BfgF/AX4jgICAgABBEGsiACSAgICAACAAQdCCwIAAQQgQqYCAgAACQCAAKAIAQQFGDQAgACAAKQMINwMAAkAgAEEBEJuAgIAAIgFCAhCNgICAAEIBUg0AIAFCAhCOgICAACEBQQAhAgJAA0AgAkEQRg0BIAAgAmpCAjcDACACQQhqIQIMAAsLIAFC/wGDQswAUg0BIAFBwILAgABBAiAAQQIQkYCAgAAgACkDACIBQv8Bg0IEUg0BIAApAwgiA0L/AYNCBFINASADQoSAgIBwgyABQoSAgIBwgxCPgICAABoLIABBEGokgICAgAAPCwALoAICAX8HfiOAgICAAEHgAGsiAySAgICAAAJAIAEpAwAiBCABKQMIIgWEQgBRDQAgAiAAIAQgBRCWgICAAAsgASkDICECIAEpA0AhBiABKQNIIQcgASkDUCEIQZiCwIAAQQoQmICAgAAhCSABQShqEKGAgIAAIQogAyAEIAUQmoCAgAA3AyggAyAINwMgIAMgBzcDGCADIAY3AxAgAyAKNwMIIAMgADcDAEEAIQEDQAJAIAFBMEcNAEEAIQECQANAIAFBMEYNASADQTBqIAFqIAMgAWopAwA3AwAgAUEIaiEBDAALCyACIAkgA0EwakEGEJuAgIAAEJyAgIAAIANB4ABqJICAgIAADwsgA0EwaiABakICNwMAIAFBCGohAQwACwuqAwICfwp+I4CAgIAAQaACayIDJICAgIAAAkAgAEL/AYNCzQBSDQAgA0HgAGogARCUgICAACADKAJgQQFxDQAgAyADQeAAakEQakHgABCrgICAACEEIAJC/wGDQsgAUg0AEJ6AgIAAIAAQl4CAgAAhASAEKQMgIQUgBCkDQCEGIAQpA0ghByAEKQNQIQggBCkDCCEJIAQpAwAhCiAEKQMYIQsgBCkDECEMQbiBwIAAQRAQmICAgAAhDSAEQShqEKGAgIAAIQ4gDCALEJqAgIAAIQsgCiAJEJqAgIAAIQkgBCACNwOYAiAEIAg3A5ACIAQgBzcDiAIgBCAJNwOAAiAEIAs3A/gBIAQgBjcD8AEgBCAFNwPoASAEIA43A+ABIAQgADcD2AFBACEDA0ACQCADQcgARw0AQQAhAwJAA0AgA0HIAEYNASAEQeAAaiADaiAEQdgBaiADaikDADcDACADQQhqIQMMAAsLIAEgDSAEQeAAakEJEJuAgIAAEJyAgIAAIARBoAJqJICAgIAAQgIPCyAEQeAAaiADakICNwMAIANBCGohAwwACwsAC5wBAgF/AX4jgICAgABBIGsiASSAgICAAAJAAkAgACkDCCICQv//////////AFYNACACQgiGQgaEIQIMAQsgAhCCgICAACECCyABIAI3AwggASAAKQMANwMQIAEgADUCEEIghkIEhDcDGEH0gcCAAK1CIIZCBIQgAUEIaq1CIIZCBIRChICAgDAQg4CAgAAhAiAB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QXBwAAAAB2V4ZWN1dGUAAAAAAwAAAAAAAAAIZXhlY3V0b3IAAAATAAAAAAAAAAZwYXJhbXMAAAAAB9AAAAAPRXhlY3V0aW9uUGFyYW1zAAAAAAAAAAALdmFsdWVfcGF5ZXIAAAAAEwAAAAAAAAAAAAAAQVJlY29yZHMgYSBmYWlsZWQgYGx6X3JlY2VpdmVgIGV4ZWN1dGlvbiBmb3Igb2ZmLWNoYWluIHByb2Nlc3NpbmcuAAAAAAAAEGx6X3JlY2VpdmVfYWxlcnQAAAADAAAAAAAAAAhleGVjdXRvcgAAABMAAAAAAAAABnBhcmFtcwAAAAAH0AAAAA9FeGVjdXRpb25QYXJhbXMAAAAAAAAAAAZyZWFzb24AAAAAAA4AAAAAAAAAAAAAACxFeGVjdXRlcyBgbHpfY29tcG9zZWAgb24gdGhlIHRhcmdldCBjb21wb3NlcgAAAAdjb21wb3NlAAAAAAMAAAAAAAAACGV4ZWN1dG9yAAAAEwAAAAAAAAAGcGFyYW1zAAAAAAfQAAAADUNvbXBvc2VQYXJhbXMAAAAAAAAAAAAAC3ZhbHVlX3BheWVyAAAAABMAAAAAAAAAAAAAAEFSZWNvcmRzIGEgZmFpbGVkIGBsel9jb21wb3NlYCBleGVjdXRpb24gZm9yIG9mZi1jaGFpbiBwcm9jZXNzaW5nLgAAAAAAABBsel9jb21wb3NlX2FsZXJ0AAAAAwAAAAAAAAAIZXhlY3V0b3IAAAATAAAAAAAAAAZwYXJhbXMAAAAAB9AAAAANQ29tcG9zZVBhcmFtcwAAAAAAAAAAAAAGcmVhc29uAAAAAAAOAAAAAAAAAAAAAAAxRGVsZWdhdGVzIGBuYXRpdmVfZHJvcGAgdG8gdGhlIGV4ZWN1dG9yIGNvbnRyYWN0LgAAAAAAAAtuYXRpdmVfZHJvcAAAAAAGAAAAAAAAAAhleGVjdXRvcgAAABMAAAAAAAAABWFkbWluAAAAAAAAEwAAAAAAAAAGb3JpZ2luAAAAAAfQAAAABk9yaWdpbgAAAAAAAAAAAAdkc3RfZWlkAAAAAAQAAAAAAAAABG9hcHAAAAATAAAAAAAAAAZwYXJhbXMAAAAAA+oAAAfQAAAAEE5hdGl2ZURyb3BQYXJhbXMAAAAAAAAAAAAAADBFeGVjdXRlcyBgbmF0aXZlX2Ryb3BgIGZv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bHQgcmVjZWl2ZSBsaWJyYXJ5IGlzIG5vdCBzZXQgZm9yIHRoZSBzb3VyY2UgZW5kcG9pbnQAAAAAABxEZWZhdWx0UmVjZWl2ZUxpYlVuYXZhaWxhYmxlAAAABAAAADxEZWZhdWx0IHNlbmQgbGlicmFyeSBpcyBub3Qgc2V0IGZvciB0aGUgZGVzdGluYXRpb24gZW5kcG9pbnQAAAAZRGVmYXVsdFNlbmRMaWJVbmF2YWlsYWJsZQAAAAAAAAUAAAAvU3VwcGxpZWQgbmF0aXZlIHRva2VuIGZlZSBpcyBsZXNzIHRoYW4gcmVxdWlyZWQAAAAAFUluc3VmZmljaWVudE5hdGl2ZUZlZQAAAAAAAAYAAAAsU3VwcGxpZWQgWlJPIHRva2VuIGZlZSBpcyBsZXNzIHRoYW4gcmVxdWlyZWQAAAASSW5zdWZmaWNpZW50WnJvRmVlAAAAAAAHAAAAK1RpbWVvdXQgZXhwaXJ5IGlzIGludmFsaWQgKGFscmVhZHkgZXhwaXJlZCkAAAAADUludmFsaWRFeHBpcnkAAAAAAAAIAAAAHEFtb3VudCBpcyBpbnZhbGlkIChuZWdhdGl2ZSkAAAANSW52YWxpZEFtb3VudAAAAAAAAAkAAAArQ29tcG9zZSBpbmRleCBleGNlZWRzIG1heGltdW0gYWxsb3dlZCB2YWx1ZQAAAAAMSW52YWxpZEluZGV4AAAACgAAACxOb25jZSBpcyBpbnZhbGlkIGZvciB0aGUgcmVxdWVzdGVkIG9wZXJhdGlvbgAAAAxJbnZhbGlkTm9uY2UAAAALAAAAMFBheWxvYWQgaGFzaCBpcyBpbnZhbGlkIChlbXB0eSBoYXNoIG5vdCBhbGxvd2VkKQAAABJJbnZhbGlkUGF5bG9hZEhhc2gAAAAAAAwAAABBUmVjZWl2ZSBsaWJyYXJ5IGlzIG5vdCB2YWxpZCBmb3IgdGhlIHJlY2VpdmVyIGFuZCBzb3VyY2UgZW5kcG9pbnQAAAAAAAAVSW52YWxpZFJlY2VpdmVMaWJyYXJ5AAAAAAAADQAAADFPcGVyYXRpb24gcmVxdWlyZXMgYSBub24tZGVmYXVsdCAoY3VzdG9tKSBsaWJyYXJ5AAAAAAAAEU9ubHlOb25EZWZhdWx0TGliAAAAAAAADgAAACdMaWJyYXJ5IG11c3Qgc3VwcG9ydCByZWNlaXZpbmcgbWVzc2FnZXMAAAAADk9ubHlSZWNlaXZlTGliAAAAAAAPAAAALExpYnJhcnkgbXVzdCBiZSByZWdpc3RlcmVkIHdpdGggdGhlIGVuZHBvaW50AAAAEU9ubHlSZWdpc3RlcmVkTGliAAAAAAAAEAAAACVMaWJyYXJ5IG11c3Qgc3VwcG9ydCBzZW5kaW5nIG1lc3NhZ2VzAAAAAAAAC09ubHlTZW5kTGliAAAAABEAAAA5TWVzc2FnaW5nIHBhdGggY2Fubm90IGJlIGluaXRpYWxpemVkIGZvciB0aGUgZ2l2ZW4gb3JpZ2luAAAAAAAAFFBhdGhOb3RJbml0aWFsaXphYmxlAAAAEgAAAC9NZXNzYWdlIGNhbm5vdCBiZSB2ZXJpZmllZCBmb3IgdGhlIGdpdmVuIG9yaWdpbgAAAAARUGF0aE5vdFZlcmlmaWFibGUAAAAAAAATAAAAK1BheWxvYWQgaGFzaCBkb2VzIG5vdCBtYXRjaCB0aGUgc3RvcmVkIGhhc2gAAAAAE1BheWxvYWRIYXNoTm90Rm91bmQAAAAAFAAAACdOZXcgdmFsdWUgaXMgdGhlIHNhbWUgYXMgZXhpc3RpbmcgdmFsdWUAAAAACVNhbWVWYWx1ZQAAAAAAABUAAAAvQ2FsbGVyIGlzIG5vdCBhdXRob3JpemVkIChub3QgT0FwcCBvciBkZWxlZ2F0ZSkAAAAADFVuYXV0aG9yaXplZAAAABYAAAArRW5kcG9pbnQgSUQgaXMgbm90IHN1cHBvcnRlZCBieSB0aGUgbGlicmFyeQAAAAAOVW5zdXBwb3J0ZWRFaWQAAAAAABcAAAA5WlJPIGZlZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiB6ZXJvIHdoZW4gcGF5X2luX3pybyBpcyB0cnVlAAAAAAAAClplcm9acm9GZWUAAAAAABgAAAAcWlJPIHRva2VuIGFkZHJlc3MgaXMgbm90IHNldAAAAA5acm9VbmF2YWlsYWJsZQAAAAAAGQAAAAEAAAAtUGFyYW1ldGVycyBmb3Igc2VuZGluZyBhIGNyb3NzLWNoYWluIG1lc3NhZ2UuAAAAAAAAAAAAAA9NZXNzYWdpbmdQYXJhbXMAAAAABQAAACtEZXN0aW5hdGlvbiBlbmRwb2ludCBJRCAoY2hhaW4gaWRlbnRpZmllcikuAAAAAAdkc3RfZWlkAAAAAAQAAAAcVGhlIG1lc3NhZ2UgcGF5bG9hZCB0byBzZW5kLgAAAAdtZXNzYWdlAAAAAA4AAAAhRW5jb2RlZCBleGVjdXRvciBhbmQgRFZOIG9wdGlvbnMuAAAAAAAAB29wdGlvbnMAAAAADgAAADlXaGV0aGVyIHRvIHBheSBmZWVzIGluIFpSTyB0b2tlbiBpbnN0ZWFkIG9mIG5hdGl2ZSB0b2tlbi4AAAAAAAAKcGF5X2luX3pybwAAAAAAAQAAADVSZWNlaXZlciBhZGRyZXNzIG9uIHRoZSBkZXN0aW5hdGlvbiBjaGFpbiAoMzIgYnl0ZXMpLgAAAAAAAAhyZWNlaXZlcgAAA+4AAAAgAAAAAQAAAE1Tb3VyY2UgbWVzc2FnZSBpbmZvcm1hdGlvbiBpZGVudGlmeWluZyB3aGVyZSBhIGNyb3NzLWNoYWluIG1lc3NhZ2UgY2FtZSBmcm9tLgAAAAAAAAAAAAAGT3JpZ2luAAAAAAADAAAAF05vbmNlIGZvciB0aGlzIHBhdGh3YXkuAAAAAAVub25jZQAAAAAAAAYAAAAuU2VuZGVyIGFkZHJlc3Mgb24gdGhlIHNvdXJjZSBjaGFpbiAoMzIgYnl0ZXMpLgAAAAAABnNlbmRlcgAAAAAD7gAAACAAAAAmU291cmNlIGVuZHBvaW50IElEIChjaGFpbiBpZGVudGlmaWVyKS4AAAAAAAdzcmNfZWlkAAAAAAQAAAABAAAAKEZlZSBzdHJ1Y3R1cmUgZm9yIGNyb3NzLWNoYWluIG1lc3NhZ2luZy4AAAAAAAAADE1lc3NhZ2luZ0ZlZQAAAAIAAAAfRmVlIHBhaWQgaW4gbmF0aXZlIHRva2VuIChYTE0pLgAAAAAKbmF0aXZlX2ZlZQAAAAAACwAAAChGZWUgcGFpZCBpbiBaUk8gdG9rZW4gKExheWVyWmVybyB0b2tlbikuAAAAB3pyb19mZWUAAAAACwAAAAEAAABCUmVjZWlwdCByZXR1cm5lZCBhZnRlciBzdWNjZXNzZnVsbHkgc2VuZGluZyBhIGNyb3NzLWNoYWluIG1lc3NhZ2UuAAAAAAAAAAAAEE1lc3NhZ2luZ1JlY2VpcHQAAAADAAAAKVRoZSBmZWVzIGNoYXJnZWQgZm9yIHNlbmRpbmcgdGhlIG1lc3NhZ2UuAAAAAAAAA2ZlZQAAAAfQAAAADE1lc3NhZ2luZ0ZlZQAAACtHbG9iYWxseSB1bmlxdWUgaWRlbnRpZmllciBmb3IgdGhlIG1lc3NhZ2UuAAAAAARndWlkAAAD7gAAACAAAAAkVGhlIG91dGJvdW5kIG5vbmNlIGZvciB0aGlzIHBhdGh3YXkuAAAABW5vbmNlAAAAAAAABgAAAAIAAAA4VHlwZSBvZiBtZXNzYWdlIGxpYnJhcnkgaW5kaWNhdGluZyBzdXBwb3J0ZWQgb3BlcmF0aW9ucy4AAAAAAAAADk1lc3NhZ2VMaWJUeXBlAAAAAAADAAAAAAAAAB9TdXBwb3J0cyBvbmx5IHNlbmRpbmcgbWVzc2FnZXMuAAAAAARTZW5kAAAAAAAAACFTdXBwb3J0cyBvbmx5IHJlY2VpdmluZyBtZXNzYWdlcy4AAAAAAAAHUmVjZWl2ZQAAAAAAAAAALVN1cHBvcnRzIGJvdGggc2VuZGluZyBhbmQgcmVjZWl2aW5nIG1lc3NhZ2VzLgAAAAAAAA5TZW5kQW5kUmVjZWl2ZQAAAAAAAQAAALdWZXJzaW9uIGluZm9ybWF0aW9uIGZvciBhIG1lc3NhZ2UgbGlicmFyeS4KCk5vdGU6IGBtaW5vcmAgYW5kIGBlbmRwb2ludF92ZXJzaW9uYCB1c2UgYHUzMmAgaW5zdGVhZCBvZiBgdThgIGJlY2F1c2UgU3RlbGxhciBkb2VzIG5vdApzdXBwb3J0IGB1OGAgdHlwZXMgaW4gY29udHJhY3QgaW50ZXJmYWNlIGZ1bmN0aW9ucy4AAAAAAAAAABFNZXNzYWdlTGliVmVyc2lvbgAAAAAAAAMAAAAzRW5kcG9pbnQgdmVyc2lvbiAoc2hvdWxkIG5vdCBleGNlZWQgdTg6Ok1BWCA9IDI1NSkuAAAAABBlbmRwb2ludF92ZXJzaW9uAAAABAAAABVNYWpvciB2ZXJzaW9uIG51bWJlci4AAAAAAAAFbWFqb3IAAAAAAAAGAAAAN01pbm9yIHZlcnNpb24gbnVtYmVyIChzaG91bGQgbm90IGV4Y2VlZCB1ODo6TUFYID0gMjU1KS4AAAAABW1pbm9yAAAAAAAABAAAAAEAAAA2VGltZW91dCBjb25maWd1cmF0aW9uIGZvciByZWNlaXZlIGxpYnJhcnkgdHJhbnNpdGlvbnMuAAAAAAAAAAAAB1RpbWVvdXQAAAAAAgAAADNVbml4IHRpbWVzdGFtcCBpbiBzZWNvbmRzIHdoZW4gdGhlIHRpbWVvdXQgZXhwaXJlcy4AAAAABmV4cGlyeQAAAAAABgAAAENUaGUgb2xkIGxpYnJhcnkgYWRkcmVzcyB0aGF0IHJlbWFpbnMgdmFsaWQgZHVyaW5nIHRoZSBncmFjZSBwZXJpb2QuAAAAAANsaWIAAAAAEwAAAAEAAAA1UGFyYW1ldGVycyBmb3Igc2V0dGluZyBtZXNzYWdlIGxpYnJhcnkgY29uZmlndXJhdGlvbi4AAAAAAAAAAAAADlNldENvbmZpZ1BhcmFtAAAAAAADAAAAH1hEUi1lbmNvZGVkIGNvbmZpZ3VyYXRpb24gZGF0YS4AAAAABmNvbmZpZwAAAAAADgAAADBUaGUgdHlwZSBvZiBjb25maWd1cmF0aW9uIChlLmcuLCBleGVjdXRvciwgVUxOKS4AAAALY29uZmlnX3R5cGUAAAAABAAAACdUaGUgZW5kcG9pbnQgSUQgdGhpcyBjb25maWcgYXBwbGllcyB0by4AAAAAA2VpZAAAAAAEAAAAAQAAADFSZXNvbHZlZCBsaWJyYXJ5IGluZm9ybWF0aW9uIHdpdGggZGVmYXVsdCBzdGF0dXMuAAAAAAAAAAAAAA9SZXNvbHZlZExpYnJhcnkAAAAAAgAAAERXaGV0aGVyIHRoaXMgaXMgdGhlIGRlZmF1bHQgbGlicmFyeSAodHJ1ZSkgb3IgT0FwcC1zcGVjaWZpYyAoZmFsc2UpLgAAAAppc19kZWZhdWx0AAAAAAABAAAAHVRoZSByZXNvbHZlZCBsaWJyYXJ5IGFkZHJlc3MuAAAAAAAAA2xpYgAAAAATAAAAAQAAAEhPdXRib3VuZCBwYWNrZXQgY29udGFpbmluZyBhbGwgaW5mb3JtYXRpb24gZm9yIGNyb3NzLWNoYWluIHRyYW5zbWlzc2lvbi4AAAAAAAAADk91dGJvdW5kUGFja2V0AAAAAAAHAAAAGERlc3RpbmF0aW9uIGVuZHBvaW50IElELgAAAAdkc3RfZWlkAAAAAAQAAAAsR2xvYmFsbHkgdW5pcXVlIGlkZW50aWZpZXIgZm9yIHRoaXMgbWVzc2FnZS4AAAAEZ3VpZAAAA+4AAAAgAAAAFFRoZSBtZXNzYWdlIHBheWxvYWQuAAAAB21lc3NhZ2UAAAAADgAAACBPdXRib3VuZCBub25jZSBmb3IgdGhpcyBwYXRod2F5LgAAAAVub25jZQAAAAAAAAYAAAAxUmVjZWl2ZXIgYWRkcmVzcyBvbiBkZXN0aW5hdGlvbiBjaGFpbiAoMzIgYnl0ZXMpLgAAAAAAAAhyZWNlaXZlcgAAA+4AAAAgAAAAH1NlbmRlciBhZGRyZXNzIG9uIHNvdXJjZSBjaGFpbi4AAAAABnNlbmRlcgAAAAAAEwAAABNTb3VyY2UgZW5kcG9pbnQgSUQuAAAAAAdzcmNfZWlkAAAAAAQAAAABAAAAK0EgZmVlIHJlY2lwaWVudCB3aXRoIHRoZSBhbW91bnQgdG8gYmUgcGFpZC4AAAAAAAAAAAxGZWVSZWNpcGllbnQAAAACAAAAFUFtb3VudCBvZiBmZWUgdG8gcGF5LgAAAAAAAAZhbW91bnQAAAAAAAsAAAAfVGhlIGFkZHJlc3MgdG8gc2VuZCB0aGUgZmVlIHRvLgAAAAACdG8AAAAAABMAAAABAAAAPFJlc3VsdCBvZiBzZW5kIG9wZXJhdGlvbiBjb250YWluaW5nIGZlZXMgYW5kIGVuY29kZWQgcGFja2V0LgAAAAAAAAANRmVlc0FuZFBhY2tldAAAAAAAAAMAAAAqVGhlIGVuY29kZWQgcGFja2V0IHJlYWR5IGZvciB0cmFuc21pc3Npb24uAAAAAAAOZW5jb2RlZF9wYWNrZXQAAAAAAA4AAAA/TGlzdCBvZiBuYXRpdmUgdG9rZW4gZmVlIHJlY2lwaWVudHMgKGV4ZWN1dG9yLCBEVk5zLCB0cmVhc3VyeSkuAAAAABVuYXRpdmVfZmVlX3JlY2lwaWVudHMAAAAAAAPqAAAH0AAAAAxGZWVSZWNpcGllbnQAAAAsTGlzdCBvZiBaUk8gdG9rZW4gZmVlIHJlY2lwaWVudHMgKHRyZWFzdXJ5KS4AAAASenJvX2ZlZV9yZWNpcGllbnRzAAAAAAPqAAAH0AAAAAxGZWVSZWNpcGllbnQAAAAFAAAAAAAAAAAAAAAMRHN0Q29uZmlnU2V0AAAAAQAAAA5kc3RfY29uZmlnX3NldAAAAAAAAQAAAAAAAAAGcGFyYW1zAAAAAAPqAAAH0AAAABFTZXREc3RDb25maWdQYXJhbQAAAAAAAAAAAAACAAAABQAAAAAAAAAAAAAAEU5hdGl2ZURyb3BBcHBsaWVkAAAAAAAAAQAAABNuYXRpdmVfZHJvcF9hcHBsaWVkAAAAAAUAAAAAAAAABm9yaWdpbgAAAAAH0AAAAAZPcmlnaW4AAAAAAAAAAAAAAAAAB2RzdF9laWQAAAAABAAAAAAAAAAAAAAABG9hcHAAAAATAAAAAAAAAAAAAAASbmF0aXZlX2Ryb3BfcGFyYW1zAAAAAAPqAAAH0AAAABBOYXRpdmVEcm9wUGFyYW1zAAAAAAAAAAAAAAAHc3VjY2VzcwAAAAPqAAAAAQAAAAAAAAACAAAABAAAAAAAAAAAAAAADUV4ZWN1dG9yRXJyb3IAAAAAAAADAAAAAAAAAA9FaWROb3RTdXBwb3J0ZWQAAAAAAQAAAAAAAAAMVW5hdXRob3JpemVkAAAAAgAAAAAAAAATVW5hdXRob3JpemVkQ29udGV4dAAAAAADAAAAAQAAANtEZXN0aW5hdGlvbiBjaGFpbiBjb25maWd1cmF0aW9uIGZvciBleGVjdXRvciBmZWUgY2FsY3VsYXRpb24uCgpDb250YWlucyBnYXMgY29zdHMgYW5kIGZlZSBwYXJhbWV0ZXJzIHNwZWNpZmljIHRvIGVhY2ggZGVzdGluYXRpb24gY2hhaW4uClRoZXNlIHBhcmFtZXRlcnMgYXJlIHVzZWQgYnkgdGhlIGZlZSBsaWJyYXJ5IHRvIGNhbGN1bGF0ZSBhY2N1cmF0ZSBleGVjdXRpb24gZmVlcy4AAAAAAAAAAAlEc3RDb25maWcAAAAAAAAFAAAAO01pbmltdW0gZmVlIG1hcmdpbiBpbiBVU0QgKHNjYWxlZCkgdG8gZW5zdXJlIHByb2ZpdGFiaWxpdHkuAAAAABBmbG9vcl9tYXJnaW5fdXNkAAAACgAAADpCYXNlIGdhcyBjb3N0IHBlciBsekNvbXBvc2UgY2FsbCBvbiB0aGUgZGVzdGluYXRpb24gY2hhaW4uAAAAAAATbHpfY29tcG9zZV9iYXNlX2dhcwAAAAAGAAAAP0Jhc2UgZ2FzIGNvc3QgZm9yIGx6UmVjZWl2ZSBleGVjdXRpb24gb24gdGhlIGRlc3RpbmF0aW9uIGNoYWluLgAAAAATbHpfcmVjZWl2ZV9iYXNlX2dhcwAAAAAGAAAAUUZlZSBtdWx0aXBsaWVyIGluIGJhc2lzIHBvaW50cyBmb3IgdGhpcyBkZXN0aW5hdGlvbiAoMCA9IHVzZSBkZWZhdWx0IG11bHRpcGxpZXIpLgAAAAAAAA5tdWx0aXBsaWVyX2JwcwAAAAAABAAAAEZNYXhpbXVtIG5hdGl2ZSB0b2tlbiB2YWx1ZSB0aGF0IGNhbiBiZSB0cmFuc2ZlcnJlZCB0byB0aGUgZGVzdGluYXRpb24uAAAAAAAKbmF0aXZlX2NhcAAAAAAACgAAAAEAAAB8UGFyYW1ldGVycyBmb3Igc2V0dGluZyBkZXN0aW5hdGlvbiBjb25maWd1cmF0aW9uLgoKVXNlZCB3aGVuIGNvbmZpZ3VyaW5nIGV4ZWN1dG9yIHNldHRpbmdzIGZvciBhIHNwZWNpZmljIGRlc3RpbmF0aW9uIGNoYWluLgAAAAAAAAARU2V0RHN0Q29uZmlnUGFyYW0AAAAAAAACAAAAKENvbmZpZ3VyYXRpb24gZm9yIHRoZSBkZXN0aW5hdGlvbiBjaGFpbi4AAAAKZHN0X2NvbmZpZwAAAAAH0AAAAAlEc3RDb25maWcAAAAAAAArRGVzdGluYXRpb24gZW5kcG9pbnQgSUQgKGNoYWluIGlkZW50aWZpZXIpLgAAAAAHZHN0X2VpZAAAAAAEAAAAAQAAAGhQYXJhbWV0ZXJzIGZvciBhIG5hdGl2ZSB0b2tlbiBkcm9wLgoKVXNlZCB0byBzcGVjaWZ5IG5hdGl2ZSB0b2tlbiB0cmFuc2ZlcnMgYXMgcGFydCBvZiBleGVjdXRvciBvcHRpb25zLgAAAAAAAAAQTmF0aXZlRHJvcFBhcmFtcwAAAAIAAAAkQW1vdW50IG9mIG5hdGl2ZSB0b2tlbnMgdG8gdHJhbnNmZXIuAAAABmFtb3VudAAAAAAACwAAAC9SZWNlaXZlciBhZGRyZXNzIGZvciB0aGUgbmF0aXZlIHRva2VuIHRyYW5zZmVyLgAAAAAIcmVjZWl2ZXIAAAATAAAABAAAAB1QYWNrZXRDb2RlY1YxRXJyb3I6IDExMDAtMTEwOQAAAAAAAAAAAAASUGFja2V0Q29kZWNWMUVycm9yAAAAAAACAAAAAAAAABNJbnZhbGlkUGFja2V0SGVhZGVyAAAABEwAAAAAAAAAFEludmFsaWRQYWNrZXRWZXJzaW9uAAAETQAAAAQAAAAdV29ya2VyT3B0aW9uc0Vycm9yOiAxMTEwLTExMTkAAAAAAAAAAAAAEldvcmtlck9wdGlvbnNFcnJvcgAAAAAACQAAAAAAAAASSW52YWxpZEJ5dGVzTGVuZ3RoAAAAAARWAAAAAAAAABlJbnZhbGlkTGVnYWN5T3B0aW9uc1R5cGUxAAAAAAAEVwAAAAAAAAAZSW52YWxpZExlZ2FjeU9wdGlvbnNUeXBlMgAAAAAABFgAAAAAAAAAEUludmFsaWRPcHRpb25UeXBlAAAAAAAEWQAAAAAAAAAOSW52YWxpZE9wdGlvbnMAAAAABFoAAAAAAAAAD0ludmFsaWRXb3JrZXJJZAAAAARbAAAAAAAAAB1MZWdhY3lPcHRpb25zVHlwZTFHYXNPdmVyZmxvdwAAAAAABFwAAAAAAAAAIExlZ2FjeU9wdGlvbnNUeXBlMkFtb3VudE92ZXJmbG93AAAEXQAAAAAAAAAdTGVnYWN5T3B0aW9uc1R5cGUyR2FzT3ZlcmZsb3cAAAAAAAReAAAABAAAABxCdWZmZXJSZWFkZXJFcnJvcjogMTAwMC0xMDA5AAAAAAAAABFCdWZmZXJSZWFkZXJFcnJvcgAAAAAAAAIAAAAAAAAADUludmFsaWRMZW5ndGgAAAAAAAPoAAAAAAAAABVJbnZhbGlkQWRkcmVzc1BheWxvYWQAAAAAAAPpAAAABAAAABxCdWZmZXJXcml0ZXJFcnJvcjogMTAxMC0xMDE5AAAAAAAAABFCdWZmZXJXcml0ZXJFcnJvcgAAAAAAAAEAAAAAAAAAFUludmFsaWRBZGRyZXNzUGF5bG9hZAAAAAAAA/IAAAAEAAAAH1R0bENvbmZpZ3VyYWJsZUVycm9yOiAxMDIwLTEwMjkAAAAAAAAAABRUdGxDb25maWd1cmFibGVFcnJvcgAAAAMAAAAAAAAAEEludmFsaWRUdGxDb25maWcAAAP8AAAAAAAAAA9UdGxDb25maWdGcm96ZW4AAAAD/QAAAAAAAAAWVHRsQ29uZmlnQWxyZWFkeUZyb3plbgAAAAAD/gAAAAQAAAAXT3duYWJsZUVycm9yOiAxMDMwLTEwMzkAAAAAAAAAAAxPd25hYmxlRXJyb3IAAAAHAAAAAAAAABFJbnZhbGlkQXV0aG9yaXplcgAAAAAABAYAAAAAAAAAE0ludmFsaWRQZW5kaW5nT3duZXIAAAAEBwAAAAAAAAAKSW52YWxpZFR0bAAAAAAECAAAAAAAAAARTm9QZW5kaW5nVHJhbnNmZXIAAAAAAAQJAAAAAAAAAA9Pd25lckFscmVhZHlTZXQAAAAECgAAAAAAAAALT3duZXJOb3RTZXQAAAAECwAAAAAAAAASVHJhbnNmZXJJblByb2dyZXNzAAAAAAQMAAAABAAAABhCeXRlc0V4dEVycm9yOiAxMDQwLTEwNDkAAAAAAAAADUJ5dGVzRXh0RXJyb3IAAAAAAAABAAAAAAAAAA5MZW5ndGhNaXNtYXRjaAAAAAAEEAAAAAQAAAAbVXBncmFkZWFibGVFcnJvcjogMTA1MC0xMDU5AAAAAAAAAAAQVXBncmFkZWFibGVFcnJvcgAAAAIAAAAAAAAAFEludmFsaWRNaWdyYXRpb25EYXRhAAAEGgAAAAAAAAATTWlncmF0aW9uTm90QWxsb3dlZAAAAAQbAAAABAAAABhNdWx0aVNpZ0Vycm9yOiAxMDYwLTEwNjkAAAAAAAAADU11bHRpU2lnRXJyb3IAAAAAAAAJAAAAAAAAABJBbHJlYWR5SW5pdGlhbGl6ZWQAAAAABCQAAAAAAAAAEUludmFsaWRBdXRob3JpemVyAAAAAAAEJQAAAAAAAAANSW52YWxpZFNpZ25lcgAAAAAABCYAAAAAAAAADlNpZ25hdHVyZUVycm9yAAAAAAQnAAAAAAAAABNTaWduZXJBbHJlYWR5RXhpc3RzAAAABCgAAAAAAAAADlNpZ25lck5vdEZvdW5kAAAAAAQpAAAAAAAAAB1Ub3RhbFNpZ25lcnNMZXNzVGhhblRocmVzaG9sZAAAAAAABCoAAAAAAAAAD1Vuc29ydGVkU2lnbmVycwAAAAQrAAAAAAAAAA1aZXJvVGhyZXNob2xkAAAAAAAELAAAAAQAAAAUQXV0aEVycm9yOiAxMDcwLTEwNzkAAAAAAAAACUF1dGhFcnJvcgAAAAAAAAEAAAAAAAAAEkF1dGhvcml6ZXJOb3RGb3VuZAAAAAAELgAAAAQAAAAUUmJhY0Vycm9yOiAxMDgwLTEwODkAAAAAAAAACVJiYWNFcnJvcgAAAAAAAAcAAAAAAAAAEUFkbWluUm9sZU5vdEZvdW5kAAAAAAAEOAAAAAAAAAAQSW5kZXhPdXRPZkJvdW5kcwAABDkAAAAAAAAAEE1heFJvbGVzRXhjZWVkZWQAAAQ6AAAAAAAAAAtSb2xlSXNFbXB0eQAAAAQ7AAAAAAAAAAxSb2xlTm90Rm91bmQAAAQ8AAAAAAAAAAtSb2xlTm90SGVsZAAAAAQ9AAAAAAAAAAxVbmF1dGhvcml6ZWQAAAQ+AAAABQAAADBFdmVudCBlbWl0dGVkIHdoZW4gYSBzaWduZXIgaXMgYWRkZWQgb3IgcmVtb3ZlZC4AAAAAAAAACVNpZ25lclNldAAAAAAAAAEAAAAKc2lnbmVyX3NldAAAAAAAAgAAAAAAAAAGc2lnbmVyAAAAAAPuAAAAFAAAAAEAAAAAAAAABmFjdGl2ZQAAAAAAAQAAAAAAAAACAAAABQAAADZFdmVudCBlbWl0dGVkIHdoZW4gdGhlIHNpZ25hdHVyZSB0aHJlc2hvbGQgaXMgY2hhbmdlZC4AAAAAAAAAAAAMVGhyZXNob2xkU2V0AAAAAQAAAA10aHJlc2hvbGRfc2V0AAAAAAAAAQAAAAAAAAAJdGhyZXNob2xkAAAAAAAABAAAAAAAAAACAAAAAgAAAAAAAAAAAAAAD011bHRpU2lnU3RvcmFnZQAAAAACAAAAAAAAAAAAAAAHU2lnbmVycwAAAAAAAAAAAAAAAAlUaHJlc2hvbGQAAAAAAAAFAAAAV0V2ZW50IGVtaXR0ZWQgd2hlbiBvd25lcnNoaXAgaXMgdHJhbnNmZXJyZWQgKGJvdGggc2luZ2xlLXN0ZXAgYW5kIHR3by1zdGVwIGNvbXBsZXRpb24pLgAAAAAAAAAAFE93bmVyc2hpcFRyYW5zZmVycmVkAAAAAQAAABVvd25lcnNoaXBfdHJhbnNmZXJyZWQAAAAAAAACAAAAAAAAAAlvbGRfb3duZXIAAAAAAAATAAAAAAAAAAAAAAAJbmV3X293bmVyAAAAAAAAEwAAAAAAAAACAAAABQAAADtFdmVudCBlbWl0dGVkIHdoZW4gYSAyLXN0ZXAgb3duZXJzaGlwIHRyYW5zZmVyIGlzIHByb3Bvc2VkLgAAAAAAAAAAFU93bmVyc2hpcFRyYW5zZmVycmluZwAAAAAAAAEAAAAWb3duZXJzaGlwX3RyYW5zZmVycmluZwAAAAAAAwAAAAAAAAAJb2xkX293bmVyAAAAAAAAEwAAAAAAAAAAAAAACW5ld19vd25lcgAAAAAAABMAAAAAAAAAAAAAAAN0dGwAAAAABAAAAAAAAAACAAAABQAAADxFdmVudCBlbWl0dGVkIHdoZW4gYSAyLXN0ZXAgb3duZXJzaGlwIHRyYW5zZmVyIGlzIGNhbmNlbGxlZC4AAAAAAAAAGk93bmVyc2hpcFRyYW5zZmVyQ2FuY2VsbGVkAAAAAAABAAAAHG93bmVyc2hpcF90cmFuc2Zlcl9jYW5jZWxsZWQAAAACAAAAAAAAAAVvd25lcgAAAAAAABMAAAAAAAAAAAAAABdjYW5jZWxsZWRfcGVuZGluZ19vd25lcgAAAAATAAAAAAAAAAIAAAAFAAAAKkV2ZW50IGVtaXR0ZWQgd2hlbiBvd25lcnNoaXAgaXMgcmVub3VuY2VkLgAAAAAAAAAAABJPd25lcnNoaXBSZW5vdW5jZWQAAAAAAAEAAAATb3duZXJzaGlwX3Jlbm91bmNlZAAAAAABAAAAAAAAAAlvbGRfb3duZXIAAAAAAAATAAAAAAAAAAIAAAACAAAAAAAAAAAAAAAOT3duYWJsZVN0b3JhZ2UAAAAAAAIAAAAAAAAAAAAAAAVPd25lcgAAAAAAAAAAAAAAAAAADFBlbmRpbmdPd25lcgAAAAUAAAAlRXZlbnQgZW1pdHRlZCB3aGVuIGEgcm9sZSBpcyBncmFudGVkLgAAAAAAAAAAAAALUm9sZUdyYW50ZWQAAAAAAQAAAAxyb2xlX2dyYW50ZWQAAAADAAAAAAAAAARyb2xlAAAAEQAAAAEAAAAAAAAAB2FjY291bnQAAAAAEwAAAAEAAAAAAAAABmNhbGxlcgAAAAAAEwAAAAAAAAACAAAABQAAACVFdmVudCBlbWl0dGVkIHdoZW4gYSByb2xlIGlzIHJldm9rZWQuAAAAAAAAAAAAAAtSb2xlUmV2b2tlZAAAAAABAAAADHJvbGVfcmV2b2tlZAAAAAMAAAAAAAAABHJvbGUAAAARAAAAAQAAAAAAAAAHYWNjb3VudAAAAAATAAAAAQAAAAAAAAAGY2FsbGVyAAAAAAATAAAAAAAAAAIAAAAFAAAAK0V2ZW50IGVtaXR0ZWQgd2hlbiBhIHJvbGUgYWRtaW4gaXMgY2hhbmdlZC4AAAAAAAAAABBSb2xlQWRtaW5DaGFuZ2VkAAAAAQAAABJyb2xlX2FkbWluX2NoYW5nZWQAAAAAAAMAAAAAAAAABHJvbGUAAAARAAAAAQAAAAAAAAATcHJldmlvdXNfYWRtaW5fcm9sZQAAAAPoAAAAEQAAAAAAAAAAAAAADm5ld19hZG1pbl9yb2xlAAAAAAPoAAAAEQAAAAAAAAACAAAAAgAAAAAAAAAAAAAAC1JiYWNTdG9yYWdlAAAAAAUAAAAAAAAAAAAAAA1FeGlzdGluZ1JvbGVzAAAAAAAAAQAAAAAAAAASUm9sZUluZGV4VG9BY2NvdW50AAAAAAACAAAAEQAAAAQAAAABAAAAAAAAABJSb2xlQWNjb3VudFRvSW5kZXgAAAAAAAIAAAARAAAAEwAAAAEAAAAAAAAAEVJvbGVBY2NvdW50c0NvdW50AAAAAAAAAQAAABEAAAABAAAAAAAAAAlSb2xlQWRtaW4AAAAAAAABAAAAEQAAAAEAAABJVFRMIGNvbmZpZ3VyYXRpb246IHRocmVzaG9sZCAod2hlbiB0byBleHRlbmQpIGFuZCBleHRlbmRfdG8gKHRhcmdldCBUVEwpLgAAAAAAAAAAAAAJVHRsQ29uZmlnAAAAAAAAAgAAAChUYXJnZXQgVFRMIGFmdGVyIGV4dGVuc2lvbiAoaW4gbGVkZ2VycykuAAAACWV4dGVuZF90bwAAAAAAAAQAAAAzVFRMIHRocmVzaG9sZCB0aGF0IHRyaWdnZXJzIGV4dGVuc2lvbiAoaW4gbGVkZ2VycykuAAAAAAl0aHJlc2hvbGQAAAAAAAAEAAAABQAAACdFdmVudCBlbWl0dGVkIHdoZW4gVFRMIGNvbmZpZ3MgYXJlIHNldC4AAAAAAAAAAA1UdGxDb25maWdzU2V0AAAAAAAAAQAAAA90dGxfY29uZmlnc19zZXQAAAAAAgAAAAAAAAAIaW5zdGFuY2UAAAPoAAAH0AAAAAlUdGxDb25maWcAAAAAAAAAAAAAAAAAAApwZXJzaXN0ZW50AAAAAAPoAAAH0AAAAAlUdGxDb25maWcAAAAAAAAAAAAAAgAAAAUAAAAqRXZlbnQgZW1pdHRlZCB3aGVuIFRUTCBjb25maWdzIGFyZSBmcm96ZW4uAAAAAAAAAAAAEFR0bENvbmZpZ3NGcm96ZW4AAAABAAAAEnR0bF9jb25maWdzX2Zyb3plbgAAAAAAAAAAAAIAAAACAAAAAAAAAAAAAAAQVHRsQ29uZmlnU3RvcmFnZQAAAAMAAAAAAAAAAAAAAAZGcm96ZW4AAAAAAAAAAAAAAAAACEluc3RhbmNlAAAAAAAAAAAAAAAKUGVyc2lzdGVudAAAAAAAAgAAAAAAAAAAAAAAElVwZ3JhZGVhYmxlU3RvcmFnZQAAAAAAAQAAAAAAAAAAAAAACU1pZ3JhdGluZwAAAAAAAAUAAAAAAAAAAAAAAAhTZXRBZG1pbgAAAAEAAAAJc2V0X2FkbWluAAAAAAAAAgAAAAAAAAAFYWRtaW4AAAAAAAATAAAAAAAAAAAAAAAGYWN0aXZlAAAAAAABAAAAAAAAAAIAAAAFAAAAAAAAAAAAAAAWU2V0U3VwcG9ydGVkTWVzc2FnZUxpYgAAAAAAAQAAABlzZXRfc3VwcG9ydGVkX21lc3NhZ2VfbGliAAAAAAAAAgAAAAAAAAALbWVzc2FnZV9saWIAAAAAEwAAAAAAAAAAAAAACXN1cHBvcnRlZAAAAAAAAAEAAAAAAAAAAgAAAAUAAAAAAAAAAAAAAAxTZXRBbGxvd2xpc3QAAAABAAAADXNldF9hbGxvd2xpc3QAAAAAAAACAAAAAAAAAARvYXBwAAAAEwAAAAAAAAAAAAAAB2FsbG93ZWQAAAAAAQAAAAAAAAACAAAABQAAAAAAAAAAAAAAC1NldERlbnlsaXN0AAAAAAEAAAAMc2V0X2RlbnlsaXN0AAAAAgAAAAAAAAAEb2FwcAAAABMAAAAAAAAAAAAAAAZkZW5pZWQAAAAAAAEAAAAAAAAAAgAAAAUAAAAAAAAAAAAAAAZQYXVzZWQAAAAAAAEAAAAGcGF1c2VkAAAAAAABAAAAAAAAAAZwYXVzZXIAAAAAABMAAAAAAAAAAgAAAAUAAAAAAAAAAAAAAAhVbnBhdXNlZAAAAAEAAAAIdW5wYXVzZWQAAAABAAAAAAAAAAh1bnBhdXNlcgAAABMAAAAAAAAAAgAAAAUAAAAAAAAAAAAAABdTZXREZWZhdWx0TXVsdGlwbGllckJwcwAAAAABAAAAGnNldF9kZWZhdWx0X211bHRpcGxpZXJfYnBzAAAAAAABAAAAAAAAAA5tdWx0aXBsaWVyX2JwcwAAAAAABAAAAAAAAAACAAAABQAAAAAAAAAAAAAAEVNldERlcG9zaXRBZGRyZXNzAAAAAAAAAQAAABNzZXRfZGVwb3NpdF9hZGRyZXNzAAAAAAEAAAAAAAAAD2RlcG9zaXRfYWRkcmVzcwAAAAATAAAAAAAAAAIAAAAFAAAAAAAAAAAAAAAMU2V0UHJpY2VGZWVkAAAAAQAAAA5zZXRfcHJpY2VfZmVlZAAAAAAAAQAAAAAAAAAKcHJpY2VfZmVlZAAAAAAAEwAAAAAAAAACAAAABQAAAAAAAAAAAAAAF1NldFN1cHBvcnRlZE9wdGlvblR5cGVzAAAAAAEAAAAac2V0X3N1cHBvcnRlZF9vcHRpb25fdHlwZXMAAAAAAAIAAAAAAAAAB2RzdF9laWQAAAAABAAAAAAAAAAAAAAADG9wdGlvbl90eXBlcwAAAA4AAAAAAAAAAgAAAAUAAAAAAAAAAAAAAA9TZXRXb3JrZXJGZWVMaWIAAAAAAQAAABJzZXRfd29ya2VyX2ZlZV9saWIAAAAAAAEAAAAAAAAAB2ZlZV9saWIAAAAAEwAAAAAAAAACAAAAAgAAAAAAAAAAAAAADVdvcmtlclN0b3JhZ2UAAAAAAAALAAAAAAAAAAAAAAAGUGF1c2VkAAAAAAAAAAAAAAAAAAZBZG1pbnMAAAAAAAAAAAAAAAAAC01lc3NhZ2VMaWJzAAAAAAEAAAAAAAAACUFsbG93bGlzdAAAAAAAAAEAAAATAAAAAAAAAAAAAAANQWxsb3dsaXN0U2l6ZQAAAAAAAAEAAAAAAAAACERlbnlsaXN0AAAAAQAAABMAAAAAAAAAAAAAABREZWZhdWx0TXVsdGlwbGllckJwcwAAAAAAAAAAAAAADkRlcG9zaXRBZGRyZXNzAAAAAAABAAAAAAAAABRTdXBwb3J0ZWRPcHRpb25UeXBlcwAAAAEAAAAEAAAAAAAAAAAAAAAMV29ya2VyRmVlTGliAAAAAAAAAAAAAAAJUHJpY2VGZWVkAAAAAAAABAAAABZXb3JrZXJFcnJvcjogMTIwMC0xMjk5AAAAAAAAAAAAC1dvcmtlckVycm9yAAAAABAAAAAAAAAAEkFkbWluQWxyZWFkeUV4aXN0cwAAAAAEsAAAAAAAAAANQWRtaW5Ob3RGb3VuZAAAAAAABLEAAAAAAAAAEkFscmVhZHlPbkFsbG93bGlzdAAAAAAEsgAAAAAAAAARQWxyZWFkeU9uRGVueWxpc3QAAAAAAASzAAAAAAAAABREZXBvc2l0QWRkcmVzc05vdFNldAAABLQAAAAAAAAAGk1lc3NhZ2VMaWJBbHJlYWR5U3VwcG9ydGVkAAAAAAS1AAAAAAAAABZNZXNzYWdlTGliTm90U3VwcG9ydGVkAAAAAAS2AAAAAAAAAApOb3RBbGxvd2VkAAAAAAS3AAAAAAAAAA5Ob3RPbkFsbG93bGlzdAAAAAAEuAAAAAAAAAANTm90T25EZW55bGlzdAAAAAAABLkAAAAAAAAAFFBhdXNlU3RhdHVzVW5jaGFuZ2VkAAAEugAAAAAAAAAPUHJpY2VGZWVkTm90U2V0AAAABLsAAAAAAAAADFVuYXV0aG9yaXplZAAABLwAAAAAAAAAFVVuc3VwcG9ydGVkTWVzc2FnZUxpYgAAAAAABL0AAAAAAAAAEldvcmtlckZlZUxpYk5vdFNldAAAAAAEvgAAAAAAAAAOV29ya2VySXNQYXVzZWQAAAAABL8AHhFjb250cmFjdGVudm1ldGF2MAAAAAAAAAAZAAAAAABvDmNvbnRyYWN0bWV0YXYwAAAAAAAAAAVyc3ZlcgAAAAAAAAYxLjkwLjAAAAAAAAAAAAAIcnNzZGt2ZXIAAAAvMjUuMS4xIzk0YzJhM2IzYTVkZWQ2YjljZjljZWYwYzIwN2JmODgwNGYzZWIyOTQAAFMOY29udHJhY3RtZXRhdjAAAAAAAAAABmNsaXZlcgAAAAAALzI1LjEuMCNhMDQ4YTU3YTc1NzYyNDU4YjQ4NzA1MmUwMDIxZWE3MDRhOTI2YmVlAA==";
|
|
33
|
+
export const WASM_BASE64 = "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ZXhpc3RzIGZvciB0aGlzIEdVSUQgYW5kIGluZGV4AAAAAAANQ29tcG9zZUV4aXN0cwAAAAAAAAIAAAA2Q29tcG9zZSBtZXNzYWdlIG5vdCBmb3VuZCBmb3IgdGhlIGdpdmVuIEdVSUQgYW5kIGluZGV4AAAAAAAPQ29tcG9zZU5vdEZvdW5kAAAAAAMAAAA6RGVmYXVsdCByZWNlaXZlIGxpYnJhcnkgaXMgbm90IHNldCBmb3IgdGhlIHNvdXJjZSBlbmRwb2ludAAAAAAAHERlZmF1bHRSZWNlaXZlTGliVW5hdmFpbGFibGUAAAAEAAAAPERlZmF1bHQgc2VuZCBsaWJyYXJ5IGlzIG5vdCBzZXQgZm9yIHRoZSBkZXN0aW5hdGlvbiBlbmRwb2ludAAAABlEZWZhdWx0U2VuZExpYlVuYXZhaWxhYmxlAAAAAAAABQAAAC9TdXBwbGllZCBuYXRpdmUgdG9rZW4gZmVlIGlzIGxlc3MgdGhhbiByZXF1aXJlZAAAAAAVSW5zdWZmaWNpZW50TmF0aXZlRmVlAAAAAAAABgAAACxTdXBwbGllZCBaUk8gdG9rZW4gZmVlIGlzIGxlc3MgdGhhbiByZXF1aXJlZAAAABJJbnN1ZmZpY2llbnRacm9GZWUAAAAAAAcAAAArVGltZW91dCBleHBpcnkgaXMgaW52YWxpZCAoYWxyZWFkeSBleHBpcmVkKQAAAAANSW52YWxpZEV4cGlyeQAAAAAAAAgAAAAcQW1vdW50IGlzIGludmFsaWQgKG5lZ2F0aXZlKQAAAA1JbnZhbGlkQW1vdW50AAAAAAAACQAAACtDb21wb3NlIGluZGV4IGV4Y2VlZHMgbWF4aW11bSBhbGxvd2VkIHZhbHVlAAAAAAxJbnZhbGlkSW5kZXgAAAAKAAAALE5vbmNlIGlzIGludmFsaWQgZm9yIHRoZSByZXF1ZXN0ZWQgb3BlcmF0aW9uAAAADEludmFsaWROb25jZQAAAAsAAAAwUGF5bG9hZCBoYXNoIGlzIGludmFsaWQgKGVtcHR5IGhhc2ggbm90IGFsbG93ZWQpAAAAEkludmFsaWRQYXlsb2FkSGFzaAAAAAAADAAAAEFSZWNlaXZlIGxpYnJhcnkgaXMgbm90IHZhbGlkIGZvciB0aGUgcmVjZWl2ZXIgYW5kIHNvdXJjZSBlbmRwb2ludAAAAAAAABVJbnZhbGlkUmVjZWl2ZUxpYnJhcnkAAAAAAAANAAAAMU9wZXJhdGlvbiByZXF1aXJlcyBhIG5vbi1kZWZhdWx0IChjdXN0b20pIGxpYnJhcnkAAAAAAAART25seU5vbkRlZmF1bHRMaWIAAAAAAAAOAAAAJ0xpYnJhcnkgbXVzdCBzdXBwb3J0IHJlY2VpdmluZyBtZXNzYWdlcwAAAAAOT25seVJlY2VpdmVMaWIAAAAAAA8AAAAsTGlicmFyeSBtdXN0IGJlIHJlZ2lzdGVyZWQgd2l0aCB0aGUgZW5kcG9pbnQAAAART25seVJlZ2lzdGVyZWRMaWIAAAAAAAAQAAAAJUxpYnJhcnkgbXVzdCBzdXBwb3J0IHNlbmRpbmcgbWVzc2FnZXMAAAAAAAALT25seVNlbmRMaWIAAAAAEQAAADlNZXNzYWdpbmcgcGF0aCBjYW5ub3QgYmUgaW5pdGlhbGl6ZWQgZm9yIHRoZSBnaXZlbiBvcmlnaW4AAAAAAAAUUGF0aE5vdEluaXRpYWxpemFibGUAAAASAAAAL01lc3NhZ2UgY2Fubm90IGJlIHZlcmlmaWVkIGZvciB0aGUgZ2l2ZW4gb3JpZ2luAAAAABFQYXRoTm90VmVyaWZpYWJsZQAAAAAAABMAAAArUGF5bG9hZCBoYXNoIGRvZXMgbm90IG1hdGNoIHRoZSBzdG9yZWQgaGFzaAAAAAATUGF5bG9hZEhhc2hOb3RGb3VuZAAAAAAUAAAAJ05ldyB2YWx1ZSBpcyB0aGUgc2FtZSBhcyBleGlzdGluZyB2YWx1ZQAAAAAJU2FtZVZhbHVlAAAAAAAAFQAAAC9DYWxsZXIgaXMgbm90IGF1dGhvcml6ZWQgKG5vdCBPQXBwIG9yIGRlbGVnYXRlKQAAAAAMVW5hdXRob3JpemVkAAAAFgAAACtFbmRwb2ludCBJRCBpcyBub3Qgc3VwcG9ydGVkIGJ5IHRoZSBsaWJyYXJ5AAAAAA5VbnN1cHBvcnRlZEVpZAAAAAAAFwAAADlaUk8gZmVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIHplcm8gd2hlbiBwYXlfaW5fenJvIGlzIHRydWUAAAAAAAAKWmVyb1pyb0ZlZQAAAAAAGAAAABxaUk8gdG9rZW4gYWRkcmVzcyBpcyBub3Qgc2V0AAAADlpyb1VuYXZhaWxhYmxlAAAAAAAZAAAAAQAAAC1QYXJhbWV0ZXJzIGZvciBzZW5kaW5nIGEgY3Jvc3MtY2hhaW4gbWVzc2FnZS4AAAAAAAAAAAAAD01lc3NhZ2luZ1BhcmFtcwAAAAAFAAAAK0Rlc3RpbmF0aW9uIGVuZHBvaW50IElEIChjaGFpbiBpZGVudGlmaWVyKS4AAAAAB2RzdF9laWQAAAAABAAAABxUaGUgbWVzc2FnZSBwYXlsb2FkIHRvIHNlbmQuAAAAB21lc3NhZ2UAAAAADgAAACFFbmNvZGVkIGV4ZWN1dG9yIGFuZCBEVk4gb3B0aW9ucy4AAAAAAAAHb3B0aW9ucwAAAAAOAAAAOVdoZXRoZXIgdG8gcGF5IGZlZXMgaW4gWlJPIHRva2VuIGluc3RlYWQgb2YgbmF0aXZlIHRva2VuLgAAAAAAAApwYXlfaW5fenJvAAAAAAABAAAANVJlY2VpdmVyIGFkZHJlc3Mgb24gdGhlIGRlc3RpbmF0aW9uIGNoYWluICgzMiBieXRlcykuAAAAAAAACHJlY2VpdmVyAAAD7gAAACAAAAABAAAATVNvdXJjZSBtZXNzYWdlIGluZm9ybWF0aW9uIGlkZW50aWZ5aW5nIHdoZXJlIGEgY3Jvc3MtY2hhaW4gbWVzc2FnZSBjYW1lIGZyb20uAAAAAAAAAAAAAAZPcmlnaW4AAAAAAAMAAAAXTm9uY2UgZm9yIHRoaXMgcGF0aHdheS4AAAAABW5vbmNlAAAAAAAABgAAAC5TZW5kZXIgYWRkcmVzcyBvbiB0aGUgc291cmNlIGNoYWluICgzMiBieXRlcykuAAAAAAAGc2VuZGVyAAAAAAPuAAAAIAAAACZTb3VyY2UgZW5kcG9pbnQgSUQgKGNoYWluIGlkZW50aWZpZXIpLgAAAAAAB3NyY19laWQAAAAABAAAAAEAAAAoRmVlIHN0cnVjdHVyZSBmb3IgY3Jvc3MtY2hhaW4gbWVzc2FnaW5nLgAAAAAAAAAMTWVzc2FnaW5nRmVlAAAAAgAAAB9GZWUgcGFpZCBpbiBuYXRpdmUgdG9rZW4gKFhMTSkuAAAAAApuYXRpdmVfZmVlAAAAAAALAAAAKEZlZSBwYWlkIGluIFpSTyB0b2tlbiAoTGF5ZXJaZXJvIHRva2VuKS4AAAAHenJvX2ZlZQAAAAALAAAAAQAAAEJSZWNlaXB0IHJldHVybmVkIGFmdGVyIHN1Y2Nlc3NmdWxseSBzZW5kaW5nIGEgY3Jvc3MtY2hhaW4gbWVzc2FnZS4AAAAAAAAAAAAQTWVzc2FnaW5nUmVjZWlwdAAAAAMAAAApVGhlIGZlZXMgY2hhcmdlZCBmb3Igc2VuZGluZyB0aGUgbWVzc2FnZS4AAAAAAAADZmVlAAAAB9AAAAAMTWVzc2FnaW5nRmVlAAAAK0dsb2JhbGx5IHVuaXF1ZSBpZGVudGlmaWVyIGZvciB0aGUgbWVzc2FnZS4AAAAABGd1aWQAAAPuAAAAIAAAACRUaGUgb3V0Ym91bmQgbm9uY2UgZm9yIHRoaXMgcGF0aHdheS4AAAAFbm9uY2UAAAAAAAAGAAAAAgAAADhUeXBlIG9mIG1lc3NhZ2UgbGlicmFyeSBpbmRpY2F0aW5nIHN1cHBvcnRlZCBvcGVyYXRpb25zLgAAAAAAAAAOTWVzc2FnZUxpYlR5cGUAAAAAAAMAAAAAAAAAH1N1cHBvcnRzIG9ubHkgc2VuZGluZyBtZXNzYWdlcy4AAAAABFNlbmQAAAAAAAAAIVN1cHBvcnRzIG9ubHkgcmVjZWl2aW5nIG1lc3NhZ2VzLgAAAAAAAAdSZWNlaXZlAAAAAAAAAAAtU3VwcG9ydHMgYm90aCBzZW5kaW5nIGFuZCByZWNlaXZpbmcgbWVzc2FnZXMuAAAAAAAADlNlbmRBbmRSZWNlaXZlAAAAAAABAAAAt1ZlcnNpb24gaW5mb3JtYXRpb24gZm9yIGEgbWVzc2FnZSBsaWJyYXJ5LgoKTm90ZTogYG1pbm9yYCBhbmQgYGVuZHBvaW50X3ZlcnNpb25gIHVzZSBgdTMyYCBpbnN0ZWFkIG9mIGB1OGAgYmVjYXVzZSBTdGVsbGFyIGRvZXMgbm90CnN1cHBvcnQgYHU4YCB0eXBlcyBpbiBjb250cmFjdCBpbnRlcmZhY2UgZnVuY3Rpb25zLgAAAAAAAAAAEU1lc3NhZ2VMaWJWZXJzaW9uAAAAAAAAAwAAADNFbmRwb2ludCB2ZXJzaW9uIChzaG91bGQgbm90IGV4Y2VlZCB1ODo6TUFYID0gMjU1KS4AAAAAEGVuZHBvaW50X3ZlcnNpb24AAAAEAAAAFU1ham9yIHZlcnNpb24gbnVtYmVyLgAAAAAAAAVtYWpvcgAAAAAAAAYAAAA3TWlub3IgdmVyc2lvbiBudW1iZXIgKHNob3VsZCBub3QgZXhjZWVkIHU4OjpNQVggPSAyNTUpLgAAAAAFbWlub3IAAAAAAAAEAAAAAQAAADZUaW1lb3V0IGNvbmZpZ3VyYXRpb24gZm9yIHJlY2VpdmUgbGlicmFyeSB0cmFuc2l0aW9ucy4AAAAAAAAAAAAHVGltZW91dAAAAAACAAAAM1VuaXggdGltZXN0YW1wIGluIHNlY29uZHMgd2hlbiB0aGUgdGltZW91dCBleHBpcmVzLgAAAAAGZXhwaXJ5AAAAAAAGAAAAQ1RoZSBvbGQgbGlicmFyeSBhZGRyZXNzIHRoYXQgcmVtYWlucyB2YWxpZCBkdXJpbmcgdGhlIGdyYWNlIHBlcmlvZC4AAAAAA2xpYgAAAAATAAAAAQAAADVQYXJhbWV0ZXJzIGZvciBzZXR0aW5nIG1lc3NhZ2UgbGlicmFyeSBjb25maWd1cmF0aW9uLgAAAAAAAAAAAAAOU2V0Q29uZmlnUGFyYW0AAAAAAAMAAAAfWERSLWVuY29kZWQgY29uZmlndXJhdGlvbiBkYXRhLgAAAAAGY29uZmlnAAAAAAAOAAAAMFRoZSB0eXBlIG9mIGNvbmZpZ3VyYXRpb24gKGUuZy4sIGV4ZWN1dG9yLCBVTE4pLgAAAAtjb25maWdfdHlwZQAAAAAEAAAAJ1RoZSBlbmRwb2ludCBJRCB0aGlzIGNvbmZpZyBhcHBsaWVzIHRvLgAAAAADZWlkAAAAAAQAAAABAAAAMVJlc29sdmVkIGxpYnJhcnkgaW5mb3JtYXRpb24gd2l0aCBkZWZhdWx0IHN0YXR1cy4AAAAAAAAAAAAAD1Jlc29sdmVkTGlicmFyeQAAAAACAAAARFdoZXRoZXIgdGhpcyBpcyB0aGUgZGVmYXVsdCBsaWJyYXJ5ICh0cnVlKSBvciBPQXBwLXNwZWNpZmljIChmYWxzZSkuAAAACmlzX2RlZmF1bHQAAAAAAAEAAAAdVGhlIHJlc29sdmVkIGxpYnJhcnkgYWRkcmVzcy4AAAAAAAADbGliAAAAABMAAAABAAAASE91dGJvdW5kIHBhY2tldCBjb250YWluaW5nIGFsbCBpbmZvcm1hdGlvbiBmb3IgY3Jvc3MtY2hhaW4gdHJhbnNtaXNzaW9uLgAAAAAAAAAOT3V0Ym91bmRQYWNrZXQAAAAAAAcAAAAYRGVzdGluYXRpb24gZW5kcG9pbnQgSUQuAAAAB2RzdF9laWQAAAAABAAAACxHbG9iYWxseSB1bmlxdWUgaWRlbnRpZmllciBmb3IgdGhpcyBtZXNzYWdlLgAAAARndWlkAAAD7gAAACAAAAAUVGhlIG1lc3NhZ2UgcGF5bG9hZC4AAAAHbWVzc2FnZQAAAAAOAAAAIE91dGJvdW5kIG5vbmNlIGZvciB0aGlzIHBhdGh3YXkuAAAABW5vbmNlAAAAAAAABgAAADFSZWNlaXZlciBhZGRyZXNzIG9uIGRlc3RpbmF0aW9uIGNoYWluICgzMiBieXRlcykuAAAAAAAACHJlY2VpdmVyAAAD7gAAACAAAAAfU2VuZGVyIGFkZHJlc3Mgb24gc291cmNlIGNoYWluLgAAAAAGc2VuZGVyAAAAAAATAAAAE1NvdXJjZSBlbmRwb2ludCBJRC4AAAAAB3NyY19laWQAAAAABAAAAAEAAAArQSBmZWUgcmVjaXBpZW50IHdpdGggdGhlIGFtb3VudCB0byBiZSBwYWlkLgAAAAAAAAAADEZlZVJlY2lwaWVudAAAAAIAAAAVQW1vdW50IG9mIGZlZSB0byBwYXkuAAAAAAAABmFtb3VudAAAAAAACwAAAB9UaGUgYWRkcmVzcyB0byBzZW5kIHRoZSBmZWUgdG8uAAAAAAJ0bwAAAAAAEwAAAAEAAAA8UmVzdWx0IG9mIHNlbmQgb3BlcmF0aW9uIGNvbnRhaW5pbmcgZmVlcyBhbmQgZW5jb2RlZCBwYWNrZXQuAAAAAAAAAA1GZWVzQW5kUGFja2V0AAAAAAAAAwAAACpUaGUgZW5jb2RlZCBwYWNrZXQgcmVhZHkgZm9yIHRyYW5zbWlzc2lvbi4AAAAAAA5lbmNvZGVkX3BhY2tldAAAAAAADgAAAD9MaXN0IG9mIG5hdGl2ZSB0b2tlbiBmZWUgcmVjaXBpZW50cyAoZXhlY3V0b3IsIERWTnMsIHRyZWFzdXJ5KS4AAAAAFW5hdGl2ZV9mZWVfcmVjaXBpZW50cwAAAAAAA+oAAAfQAAAADEZlZVJlY2lwaWVudAAAACxMaXN0IG9mIFpSTyB0b2tlbiBmZWUgcmVjaXBpZW50cyAodHJlYXN1cnkpLgAAABJ6cm9fZmVlX3JlY2lwaWVudHMAAAAAA+oAAAfQAAAADEZlZVJlY2lwaWVudAAAAAUAAAAAAAAAAAAAAAxEc3RDb25maWdTZXQAAAABAAAADmRzdF9jb25maWdfc2V0AAAAAAABAAAAAAAAAAZwYXJhbXMAAAAAA+oAAAfQAAAAEVNldERzdENvbmZpZ1BhcmFtAAAAAAAAAAAAAAIAAAAFAAAAAAAAAAAAAAARTmF0aXZlRHJvcEFwcGxpZWQAAAAAAAABAAAAE25hdGl2ZV9kcm9wX2FwcGxpZWQAAAAABQAAAAAAAAAGb3JpZ2luAAAAAAfQAAAABk9yaWdpbgAAAAAAAAAAAAAAAAAHZHN0X2VpZAAAAAAEAAAAAAAAAAAAAAAEb2FwcAAAABMAAAAAAAAAAAAAABJuYXRpdmVfZHJvcF9wYXJhbXMAAAAAA+oAAAfQAAAAEE5hdGl2ZURyb3BQYXJhbXMAAAAAAAAAAAAAAAdzdWNjZXNzAAAAA+oAAAABAAAAAAAAAAIAAAAEAAAAAAAAAAAAAAANRXhlY3V0b3JFcnJvcgAAAAAAAAMAAAAAAAAAD0VpZE5vdFN1cHBvcnRlZAAAAAABAAAAAAAAAAxVbmF1dGhvcml6ZWQAAAACAAAAAAAAABNVbmF1dGhvcml6ZWRDb250ZXh0AAAAAAMAAAABAAAA20Rlc3RpbmF0aW9uIGNoYWluIGNvbmZpZ3VyYXRpb24gZm9yIGV4ZWN1dG9yIGZlZSBjYWxjdWxhdGlvbi4KCkNvbnRhaW5zIGdhcyBjb3N0cyBhbmQgZmVlIHBhcmFtZXRlcnMgc3BlY2lmaWMgdG8gZWFjaCBkZXN0aW5hdGlvbiBjaGFpbi4KVGhlc2UgcGFyYW1ldGVycyBhcmUgdXNlZCBieSB0aGUgZmVlIGxpYnJhcnkgdG8gY2FsY3VsYXRlIGFjY3VyYXRlIGV4ZWN1dGlvbiBmZWVzLgAAAAAAAAAACURzdENvbmZpZwAAAAAAAAUAAAA7TWluaW11bSBmZWUgbWFyZ2luIGluIFVTRCAoc2NhbGVkKSB0byBlbnN1cmUgcHJvZml0YWJpbGl0eS4AAAAAEGZsb29yX21hcmdpbl91c2QAAAAKAAAAOkJhc2UgZ2FzIGNvc3QgcGVyIGx6Q29tcG9zZSBjYWxsIG9uIHRoZSBkZXN0aW5hdGlvbiBjaGFpbi4AAAAAABNsel9jb21wb3NlX2Jhc2VfZ2FzAAAAAAYAAAA/QmFzZSBnYXMgY29zdCBmb3IgbHpSZWNlaXZlIGV4ZWN1dGlvbiBvbiB0aGUgZGVzdGluYXRpb24gY2hhaW4uAAAAABNsel9yZWNlaXZlX2Jhc2VfZ2FzAAAAAAYAAABRRmVlIG11bHRpcGxpZXIgaW4gYmFzaXMgcG9pbnRzIGZvciB0aGlzIGRlc3RpbmF0aW9uICgwID0gdXNlIGRlZmF1bHQgbXVsdGlwbGllcikuAAAAAAAADm11bHRpcGxpZXJfYnBzAAAAAAAEAAAARk1heGltdW0gbmF0aXZlIHRva2VuIHZhbHVlIHRoYXQgY2FuIGJlIHRyYW5zZmVycmVkIHRvIHRoZSBkZXN0aW5hdGlvbi4AAAAAAApuYXRpdmVfY2FwAAAAAAAKAAAAAQAAAHxQYXJhbWV0ZXJzIGZvciBzZXR0aW5nIGRlc3RpbmF0aW9uIGNvbmZpZ3VyYXRpb24uCgpVc2VkIHdoZW4gY29uZmlndXJpbmcgZXhlY3V0b3Igc2V0dGluZ3MgZm9yIGEgc3BlY2lmaWMgZGVzdGluYXRpb24gY2hhaW4uAAAAAAAAABFTZXREc3RDb25maWdQYXJhbQAAAAAAAAIAAAAoQ29uZmlndXJhdGlvbiBmb3IgdGhlIGRlc3RpbmF0aW9uIGNoYWluLgAAAApkc3RfY29uZmlnAAAAAAfQAAAACURzdENvbmZpZwAAAAAAACtEZXN0aW5hdGlvbiBlbmRwb2ludCBJRCAoY2hhaW4gaWRlbnRpZmllcikuAAAAAAdkc3RfZWlkAAAAAAQAAAABAAAAaFBhcmFtZXRlcnMgZm9yIGEgbmF0aXZlIHRva2VuIGRyb3AuCgpVc2VkIHRvIHNwZWNpZnkgbmF0aXZlIHRva2VuIHRyYW5zZmVycyBhcyBwYXJ0IG9mIGV4ZWN1dG9yIG9wdGlvbnMuAAAAAAAAABBOYXRpdmVEcm9wUGFyYW1zAAAAAgAAACRBbW91bnQgb2YgbmF0aXZlIHRva2VucyB0byB0cmFuc2Zlci4AAAAGYW1vdW50AAAAAAALAAAAL1JlY2VpdmVyIGFkZHJlc3MgZm9yIHRoZSBuYXRpdmUgdG9rZW4gdHJhbnNmZXIuAAAAAAhyZWNlaXZlcgAAABMAAAAEAAAAHVBhY2tldENvZGVjVjFFcnJvcjogMTEwMC0xMTA5AAAAAAAAAAAAABJQYWNrZXRDb2RlY1YxRXJyb3IAAAAAAAIAAAAAAAAAE0ludmFsaWRQYWNrZXRIZWFkZXIAAAAETAAAAAAAAAAUSW52YWxpZFBhY2tldFZlcnNpb24AAARNAAAABAAAAB1Xb3JrZXJPcHRpb25zRXJyb3I6IDExMTAtMTExOQAAAAAAAAAAAAASV29ya2VyT3B0aW9uc0Vycm9yAAAAAAAJAAAAAAAAABJJbnZhbGlkQnl0ZXNMZW5ndGgAAAAABFYAAAAAAAAAGUludmFsaWRMZWdhY3lPcHRpb25zVHlwZTEAAAAAAARXAAAAAAAAABlJbnZhbGlkTGVnYWN5T3B0aW9uc1R5cGUyAAAAAAAEWAAAAAAAAAARSW52YWxpZE9wdGlvblR5cGUAAAAAAARZAAAAAAAAAA5JbnZhbGlkT3B0aW9ucwAAAAAEWgAAAAAAAAAPSW52YWxpZFdvcmtlcklkAAAABFsAAAAAAAAAHUxlZ2FjeU9wdGlvbnNUeXBlMUdhc092ZXJmbG93AAAAAAAEXAAAAAAAAAAgTGVnYWN5T3B0aW9uc1R5cGUyQW1vdW50T3ZlcmZsb3cAAARdAAAAAAAAAB1MZWdhY3lPcHRpb25zVHlwZTJHYXNPdmVyZmxvdwAAAAAABF4AAAAEAAAAHEJ1ZmZlclJlYWRlckVycm9yOiAxMDAwLTEwMDkAAAAAAAAAEUJ1ZmZlclJlYWRlckVycm9yAAAAAAAAAgAAAAAAAAANSW52YWxpZExlbmd0aAAAAAAAA+gAAAAAAAAAFUludmFsaWRBZGRyZXNzUGF5bG9hZAAAAAAAA+kAAAAEAAAAHEJ1ZmZlcldyaXRlckVycm9yOiAxMDEwLTEwMTkAAAAAAAAAEUJ1ZmZlcldyaXRlckVycm9yAAAAAAAAAQAAAAAAAAAVSW52YWxpZEFkZHJlc3NQYXlsb2FkAAAAAAAD8gAAAAQAAAAfVHRsQ29uZmlndXJhYmxlRXJyb3I6IDEwMjAtMTAyOQAAAAAAAAAAFFR0bENvbmZpZ3VyYWJsZUVycm9yAAAAAwAAAAAAAAAQSW52YWxpZFR0bENvbmZpZwAAA/wAAAAAAAAAD1R0bENvbmZpZ0Zyb3plbgAAAAP9AAAAAAAAABZUdGxDb25maWdBbHJlYWR5RnJvemVuAAAAAAP+AAAABAAAABdPd25hYmxlRXJyb3I6IDEwMzAtMTAzOQAAAAAAAAAADE93bmFibGVFcnJvcgAAAAcAAAAAAAAAEUludmFsaWRBdXRob3JpemVyAAAAAAAEBgAAAAAAAAATSW52YWxpZFBlbmRpbmdPd25lcgAAAAQHAAAAAAAAAApJbnZhbGlkVHRsAAAAAAQIAAAAAAAAABFOb1BlbmRpbmdUcmFuc2ZlcgAAAAAABAkAAAAAAAAAD093bmVyQWxyZWFkeVNldAAAAAQKAAAAAAAAAAtPd25lck5vdFNldAAAAAQLAAAAAAAAABJUcmFuc2ZlckluUHJvZ3Jlc3MAAAAABAwAAAAEAAAAGEJ5dGVzRXh0RXJyb3I6IDEwNDAtMTA0OQAAAAAAAAANQnl0ZXNFeHRFcnJvcgAAAAAAAAEAAAAAAAAADkxlbmd0aE1pc21hdGNoAAAAAAQQAAAABAAAABtVcGdyYWRlYWJsZUVycm9yOiAxMDUwLTEwNTkAAAAAAAAAABBVcGdyYWRlYWJsZUVycm9yAAAAAgAAAAAAAAAUSW52YWxpZE1pZ3JhdGlvbkRhdGEAAAQaAAAAAAAAABNNaWdyYXRpb25Ob3RBbGxvd2VkAAAABBsAAAAEAAAAGE11bHRpU2lnRXJyb3I6IDEwNjAtMTA2OQAAAAAAAAANTXVsdGlTaWdFcnJvcgAAAAAAAAkAAAAAAAAAEkFscmVhZHlJbml0aWFsaXplZAAAAAAEJAAAAAAAAAARSW52YWxpZEF1dGhvcml6ZXIAAAAAAAQlAAAAAAAAAA1JbnZhbGlkU2lnbmVyAAAAAAAEJgAAAAAAAAAOU2lnbmF0dXJlRXJyb3IAAAAABCcAAAAAAAAAE1NpZ25lckFscmVhZHlFeGlzdHMAAAAEKAAAAAAAAAAOU2lnbmVyTm90Rm91bmQAAAAABCkAAAAAAAAAHVRvdGFsU2lnbmVyc0xlc3NUaGFuVGhyZXNob2xkAAAAAAAEKgAAAAAAAAAPVW5zb3J0ZWRTaWduZXJzAAAABCsAAAAAAAAADVplcm9UaHJlc2hvbGQAAAAAAAQsAAAABAAAABRBdXRoRXJyb3I6IDEwNzAtMTA3OQAAAAAAAAAJQXV0aEVycm9yAAAAAAAAAQAAAAAAAAASQXV0aG9yaXplck5vdEZvdW5kAAAAAAQuAAAABAAAABRSYmFjRXJyb3I6IDEwODAtMTA4OQAAAAAAAAAJUmJhY0Vycm9yAAAAAAAABwAAAAAAAAARQWRtaW5Sb2xlTm90Rm91bmQAAAAAAAQ4AAAAAAAAABBJbmRleE91dE9mQm91bmRzAAAEOQAAAAAAAAAQTWF4Um9sZXNFeGNlZWRlZAAABDoAAAAAAAAAC1JvbGVJc0VtcHR5AAAABDsAAAAAAAAADFJvbGVOb3RGb3VuZAAABDwAAAAAAAAAC1JvbGVOb3RIZWxkAAAABD0AAAAAAAAADFVuYXV0aG9yaXplZAAABD4AAAAFAAAAMEV2ZW50IGVtaXR0ZWQgd2hlbiBhIHNpZ25lciBpcyBhZGRlZCBvciByZW1vdmVkLgAAAAAAAAAJU2lnbmVyU2V0AAAAAAAAAQAAAApzaWduZXJfc2V0AAAAAAACAAAAAAAAAAZzaWduZXIAAAAAA+4AAAAUAAAAAQAAAAAAAAAGYWN0aXZlAAAAAAABAAAAAAAAAAIAAAAFAAAANkV2ZW50IGVtaXR0ZWQgd2hlbiB0aGUgc2lnbmF0dXJlIHRocmVzaG9sZCBpcyBjaGFuZ2VkLgAAAAAAAAAAAAxUaHJlc2hvbGRTZXQAAAABAAAADXRocmVzaG9sZF9zZXQAAAAAAAABAAAAAAAAAAl0aHJlc2hvbGQAAAAAAAAEAAAAAAAAAAIAAAACAAAAAAAAAAAAAAAPTXVsdGlTaWdTdG9yYWdlAAAAAAIAAAAAAAAAAAAAAAdTaWduZXJzAAAAAAAAAAAAAAAACVRocmVzaG9sZAAAAAAAAAUAAABXRXZlbnQgZW1pdHRlZCB3aGVuIG93bmVyc2hpcCBpcyB0cmFuc2ZlcnJlZCAoYm90aCBzaW5nbGUtc3RlcCBhbmQgdHdvLXN0ZXAgY29tcGxldGlvbikuAAAAAAAAAAAUT3duZXJzaGlwVHJhbnNmZXJyZWQAAAABAAAAFW93bmVyc2hpcF90cmFuc2ZlcnJlZAAAAAAAAAIAAAAAAAAACW9sZF9vd25l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ZXJGZWVMaWIAAAAAAAAAAAAAAAlQcmljZUZlZWQAAAAAAAAEAAAAFldvcmtlckVycm9yOiAxMjAwLTEyOTkAAAAAAAAAAAALV29ya2VyRXJyb3IAAAAAEAAAAAAAAAASQWRtaW5BbHJlYWR5RXhpc3RzAAAAAASwAAAAAAAAAA1BZG1pbk5vdEZvdW5kAAAAAAAEsQAAAAAAAAASQWxyZWFkeU9uQWxsb3dsaXN0AAAAAASyAAAAAAAAABFBbHJlYWR5T25EZW55bGlzdAAAAAAABLMAAAAAAAAAFERlcG9zaXRBZGRyZXNzTm90U2V0AAAEtAAAAAAAAAAaTWVzc2FnZUxpYkFscmVhZHlTdXBwb3J0ZWQAAAAABLUAAAAAAAAAFk1lc3NhZ2VMaWJOb3RTdXBwb3J0ZWQAAAAABLYAAAAAAAAACk5vdEFsbG93ZWQAAAAABLcAAAAAAAAADk5vdE9uQWxsb3dsaXN0AAAAAAS4AAAAAAAAAA1Ob3RPbkRlbnlsaXN0AAAAAAAEuQAAAAAAAAAUUGF1c2VTdGF0dXNVbmNoYW5nZWQAAAS6AAAAAAAAAA9QcmljZUZlZWROb3RTZXQAAAAEuwAAAAAAAAAMVW5hdXRob3JpemVkAAAEvAAAAAAAAAAVVW5zdXBwb3J0ZWRNZXNzYWdlTGliAAAAAAAEvQAAAAAAAAASV29ya2VyRmVlTGliTm90U2V0AAAAAAS+AAAAAAAAAA5Xb3JrZXJJc1BhdXNlZAAAAAAEvwAeEWNvbnRyYWN0ZW52bWV0YXYwAAAAAAAAABkAAAAAAG8OY29udHJhY3RtZXRhdjAAAAAAAAAABXJzdmVyAAAAAAAABjEuOTAuMAAAAAAAAAAAAAhyc3Nka3ZlcgAAAC8yNS4xLjEjOTRjMmEzYjNhNWRlZDZiOWNmOWNlZjBjMjA3YmY4ODA0ZjNlYjI5NAAAUw5jb250cmFjdG1ldGF2MAAAAAAAAAAGY2xpdmVyAAAAAAAvMjUuMS4wI2EwNDhhNTdhNzU3NjI0NThiNDg3MDUyZTAwMjFlYTcwNGE5MjZiZWUA";
|
|
34
34
|
|
|
35
35
|
/**
|
|
36
36
|
* Pre-computed WASM hash (SHA-256)
|
|
37
37
|
* Use this when the WASM is already uploaded on-chain
|
|
38
38
|
*/
|
|
39
|
-
export const WASM_HASH = "
|
|
39
|
+
export const WASM_HASH = "1c0928af078a4a9beff5e04647240b9fecca7a805b751c803f96ff92f75b9a08";
|
|
40
40
|
|
|
41
41
|
/**
|
|
42
42
|
* Get the WASM bytecode as a Buffer
|
|
@@ -706,12 +706,6 @@ export interface Client {
|
|
|
706
706
|
*/
|
|
707
707
|
native_drop: ({executor, admin, origin, dst_eid, oapp, params}: {executor: string, admin: string, origin: Origin, dst_eid: u32, oapp: string, params: Array<NativeDropParams>}, txnOptions?: MethodOptions) => Promise<AssembledTransaction<null>>
|
|
708
708
|
|
|
709
|
-
/**
|
|
710
|
-
* Construct and simulate a native_drop_and_execute transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
|
|
711
|
-
* Executes `native_drop` followed by `lz_receive`.
|
|
712
|
-
*/
|
|
713
|
-
native_drop_and_execute: ({executor, admin, origin, dst_eid, oapp, native_drop_params, execute_params}: {executor: string, admin: string, origin: Origin, dst_eid: u32, oapp: string, native_drop_params: Array<NativeDropParams>, execute_params: ExecutionParams}, txnOptions?: MethodOptions) => Promise<AssembledTransaction<null>>
|
|
714
|
-
|
|
715
709
|
}
|
|
716
710
|
export class Client extends ContractClient {
|
|
717
711
|
static async deploy<T = Client>(
|
|
@@ -737,7 +731,6 @@ export class Client extends ContractClient {
|
|
|
737
731
|
"AAAAAAAAACxFeGVjdXRlcyBgbHpfY29tcG9zZWAgb24gdGhlIHRhcmdldCBjb21wb3NlcgAAAAdjb21wb3NlAAAAAAMAAAAAAAAACGV4ZWN1dG9yAAAAEwAAAAAAAAAGcGFyYW1zAAAAAAfQAAAADUNvbXBvc2VQYXJhbXMAAAAAAAAAAAAAC3ZhbHVlX3BheWVyAAAAABMAAAAA",
|
|
738
732
|
"AAAAAAAAAEFSZWNvcmRzIGEgZmFpbGVkIGBsel9jb21wb3NlYCBleGVjdXRpb24gZm9yIG9mZi1jaGFpbiBwcm9jZXNzaW5nLgAAAAAAABBsel9jb21wb3NlX2FsZXJ0AAAAAwAAAAAAAAAIZXhlY3V0b3IAAAATAAAAAAAAAAZwYXJhbXMAAAAAB9AAAAANQ29tcG9zZVBhcmFtcwAAAAAAAAAAAAAGcmVhc29uAAAAAAAOAAAAAA==",
|
|
739
733
|
"AAAAAAAAADFEZWxlZ2F0ZXMgYG5hdGl2ZV9kcm9wYCB0byB0aGUgZXhlY3V0b3IgY29udHJhY3QuAAAAAAAAC25hdGl2ZV9kcm9wAAAAAAYAAAAAAAAACGV4ZWN1dG9yAAAAEwAAAAAAAAAFYWRtaW4AAAAAAAATAAAAAAAAAAZvcmlnaW4AAAAAB9AAAAAGT3JpZ2luAAAAAAAAAAAAB2RzdF9laWQAAAAABAAAAAAAAAAEb2FwcAAAABMAAAAAAAAABnBhcmFtcwAAAAAD6gAAB9AAAAAQTmF0aXZlRHJvcFBhcmFtcwAAAAA=",
|
|
740
|
-
"AAAAAAAAADBFeGVjdXRlcyBgbmF0aXZlX2Ryb3BgIGZvbGxvd2VkIGJ5IGBsel9yZWNlaXZlYC4AAAAXbmF0aXZlX2Ryb3BfYW5kX2V4ZWN1dGUAAAAABwAAAAAAAAAIZXhlY3V0b3IAAAATAAAAAAAAAAVhZG1pbgAAAAAAABMAAAAAAAAABm9yaWdpbgAAAAAH0AAAAAZPcmlnaW4AAAAAAAAAAAAHZHN0X2VpZAAAAAAEAAAAAAAAAARvYXBwAAAAEwAAAAAAAAASbmF0aXZlX2Ryb3BfcGFyYW1zAAAAAAPqAAAH0AAAABBOYXRpdmVEcm9wUGFyYW1zAAAAAAAAAA5leGVjdXRlX3BhcmFtcwAAAAAH0AAAAA9FeGVjdXRpb25QYXJhbXMAAAAAAA==",
|
|
741
734
|
"AAAABQAAAAAAAAAAAAAAClBhY2tldFNlbnQAAAAAAAEAAAALcGFja2V0X3NlbnQAAAAAAwAAAAAAAAAOZW5jb2RlZF9wYWNrZXQAAAAAAA4AAAAAAAAAAAAAAAdvcHRpb25zAAAAAA4AAAAAAAAAAAAAAAxzZW5kX2xpYnJhcnkAAAATAAAAAAAAAAI=",
|
|
742
735
|
"AAAABQAAAAAAAAAAAAAADlBhY2tldFZlcmlmaWVkAAAAAAABAAAAD3BhY2tldF92ZXJpZmllZAAAAAADAAAAAAAAAAZvcmlnaW4AAAAAB9AAAAAGT3JpZ2luAAAAAAABAAAAAAAAAAhyZWNlaXZlcgAAABMAAAABAAAAAAAAAAxwYXlsb2FkX2hhc2gAAAPuAAAAIAAAAAAAAAAC",
|
|
743
736
|
"AAAABQAAAAAAAAAAAAAAD1BhY2tldERlbGl2ZXJlZAAAAAABAAAAEHBhY2tldF9kZWxpdmVyZWQAAAACAAAAAAAAAAZvcmlnaW4AAAAAB9AAAAAGT3JpZ2luAAAAAAABAAAAAAAAAAhyZWNlaXZlcgAAABMAAAABAAAAAg==",
|
|
@@ -825,7 +818,6 @@ export class Client extends ContractClient {
|
|
|
825
818
|
lz_receive_alert: this.txFromJSON<null>,
|
|
826
819
|
compose: this.txFromJSON<null>,
|
|
827
820
|
lz_compose_alert: this.txFromJSON<null>,
|
|
828
|
-
native_drop: this.txFromJSON<null
|
|
829
|
-
native_drop_and_execute: this.txFromJSON<null>
|
|
821
|
+
native_drop: this.txFromJSON<null>
|
|
830
822
|
}
|
|
831
823
|
}
|
package/test/counter-sml.test.ts
CHANGED
|
@@ -311,28 +311,53 @@ describe('Counter Cross-Chain Testing (SML)', async () => {
|
|
|
311
311
|
console.log('✅ ABA request packet validated on Chain B');
|
|
312
312
|
});
|
|
313
313
|
|
|
314
|
-
it('
|
|
314
|
+
it('Execute native_drop on Chain B', async () => {
|
|
315
315
|
const origin = {
|
|
316
316
|
nonce: 1n,
|
|
317
317
|
sender: Buffer.from(StrKey.decodeContract(counterAAddress)),
|
|
318
318
|
src_eid: EID_A,
|
|
319
319
|
};
|
|
320
320
|
|
|
321
|
-
|
|
322
|
-
const assembledTx = await executorHelperClientB.native_drop_and_execute(
|
|
321
|
+
const assembledTx = await executorHelperClientB.native_drop(
|
|
323
322
|
{
|
|
324
323
|
executor: chainB.executor,
|
|
325
324
|
admin: EXECUTOR_ADMIN.publicKey(),
|
|
326
325
|
origin,
|
|
327
326
|
dst_eid: EID_B,
|
|
328
327
|
oapp: counterBAddress,
|
|
329
|
-
|
|
328
|
+
params: [
|
|
330
329
|
{
|
|
331
330
|
receiver: counterBAddress,
|
|
332
331
|
amount: 100n,
|
|
333
332
|
},
|
|
334
333
|
],
|
|
335
|
-
|
|
334
|
+
},
|
|
335
|
+
{
|
|
336
|
+
simulate: false,
|
|
337
|
+
},
|
|
338
|
+
);
|
|
339
|
+
|
|
340
|
+
const txResult = await signAndSendWithExecutorAuth(
|
|
341
|
+
chainB.executor,
|
|
342
|
+
EXECUTOR_ADMIN,
|
|
343
|
+
assembledTx,
|
|
344
|
+
NETWORK_PASSPHRASE,
|
|
345
|
+
);
|
|
346
|
+
|
|
347
|
+
assertTransactionSucceeded(txResult, 'native_drop on Chain B');
|
|
348
|
+
});
|
|
349
|
+
|
|
350
|
+
it('Receive Counter Message on Chain B (ABA - triggers response to A)', async () => {
|
|
351
|
+
const origin = {
|
|
352
|
+
nonce: 1n,
|
|
353
|
+
sender: Buffer.from(StrKey.decodeContract(counterAAddress)),
|
|
354
|
+
src_eid: EID_A,
|
|
355
|
+
};
|
|
356
|
+
|
|
357
|
+
const assembledTx = await executorHelperClientB.execute(
|
|
358
|
+
{
|
|
359
|
+
executor: chainB.executor,
|
|
360
|
+
params: {
|
|
336
361
|
extra_data: Buffer.from([]),
|
|
337
362
|
gas_limit: 0n,
|
|
338
363
|
guid,
|
|
@@ -341,6 +366,7 @@ describe('Counter Cross-Chain Testing (SML)', async () => {
|
|
|
341
366
|
receiver: counterBAddress,
|
|
342
367
|
value: abaReturnFee,
|
|
343
368
|
},
|
|
369
|
+
value_payer: EXECUTOR_ADMIN.publicKey(),
|
|
344
370
|
},
|
|
345
371
|
{
|
|
346
372
|
simulate: false,
|
package/test/counter-uln.test.ts
CHANGED
|
@@ -297,7 +297,7 @@ describe('Counter Cross-Chain Testing (ULN302)', async () => {
|
|
|
297
297
|
console.log('✅ Verification committed to endpoint on Chain B');
|
|
298
298
|
});
|
|
299
299
|
|
|
300
|
-
it('Execute
|
|
300
|
+
it('Execute native_drop on Chain B', async () => {
|
|
301
301
|
const origin = {
|
|
302
302
|
nonce: 1n,
|
|
303
303
|
sender: Buffer.from(StrKey.decodeContract(counterAAddress)),
|
|
@@ -308,21 +308,53 @@ describe('Counter Cross-Chain Testing (ULN302)', async () => {
|
|
|
308
308
|
const balanceBefore = await getNativeBalance(DEFAULT_DEPLOYER.publicKey());
|
|
309
309
|
console.log('💰 Balance before native drop:', balanceBefore);
|
|
310
310
|
|
|
311
|
-
|
|
312
|
-
const assembledTx = await executorHelperClientB.native_drop_and_execute(
|
|
311
|
+
const assembledTx = await executorHelperClientB.native_drop(
|
|
313
312
|
{
|
|
314
313
|
executor: chainB.executor,
|
|
315
314
|
admin: EXECUTOR_ADMIN.publicKey(),
|
|
316
315
|
origin,
|
|
317
316
|
dst_eid: EID_B,
|
|
318
317
|
oapp: counterBAddress,
|
|
319
|
-
|
|
318
|
+
params: [
|
|
320
319
|
{
|
|
321
320
|
receiver: DEFAULT_DEPLOYER.publicKey(),
|
|
322
321
|
amount: NATIVE_DROP_AMOUNT,
|
|
323
322
|
},
|
|
324
323
|
],
|
|
325
|
-
|
|
324
|
+
},
|
|
325
|
+
{
|
|
326
|
+
simulate: false,
|
|
327
|
+
},
|
|
328
|
+
);
|
|
329
|
+
|
|
330
|
+
const txResult = await signAndSendWithExecutorAuth(
|
|
331
|
+
chainB.executor,
|
|
332
|
+
EXECUTOR_ADMIN,
|
|
333
|
+
assembledTx,
|
|
334
|
+
NETWORK_PASSPHRASE,
|
|
335
|
+
);
|
|
336
|
+
|
|
337
|
+
assertTransactionSucceeded(txResult, 'native_drop on Chain B');
|
|
338
|
+
|
|
339
|
+
// Verify native drop was received
|
|
340
|
+
const balanceAfter = await getNativeBalance(DEFAULT_DEPLOYER.publicKey());
|
|
341
|
+
console.log('💰 Balance after native drop:', balanceAfter);
|
|
342
|
+
const balanceIncrease = balanceAfter - balanceBefore;
|
|
343
|
+
expect(balanceIncrease).toBe(NATIVE_DROP_AMOUNT);
|
|
344
|
+
console.log('✅ Native drop received:', NATIVE_DROP_AMOUNT, 'stroops');
|
|
345
|
+
});
|
|
346
|
+
|
|
347
|
+
it('Execute lz_receive on Chain B', async () => {
|
|
348
|
+
const origin = {
|
|
349
|
+
nonce: 1n,
|
|
350
|
+
sender: Buffer.from(StrKey.decodeContract(counterAAddress)),
|
|
351
|
+
src_eid: EID_A,
|
|
352
|
+
};
|
|
353
|
+
|
|
354
|
+
const assembledTx = await executorHelperClientB.execute(
|
|
355
|
+
{
|
|
356
|
+
executor: chainB.executor,
|
|
357
|
+
params: {
|
|
326
358
|
extra_data: Buffer.from([]),
|
|
327
359
|
gas_limit: 0n,
|
|
328
360
|
guid,
|
|
@@ -331,6 +363,7 @@ describe('Counter Cross-Chain Testing (ULN302)', async () => {
|
|
|
331
363
|
receiver: counterBAddress,
|
|
332
364
|
value: 0n,
|
|
333
365
|
},
|
|
366
|
+
value_payer: EXECUTOR_ADMIN.publicKey(),
|
|
334
367
|
},
|
|
335
368
|
{
|
|
336
369
|
simulate: false,
|
|
@@ -344,14 +377,7 @@ describe('Counter Cross-Chain Testing (ULN302)', async () => {
|
|
|
344
377
|
NETWORK_PASSPHRASE,
|
|
345
378
|
);
|
|
346
379
|
|
|
347
|
-
assertTransactionSucceeded(txResult, '
|
|
348
|
-
|
|
349
|
-
// Verify native drop was received
|
|
350
|
-
const balanceAfter = await getNativeBalance(DEFAULT_DEPLOYER.publicKey());
|
|
351
|
-
console.log('💰 Balance after native drop:', balanceAfter);
|
|
352
|
-
const balanceIncrease = balanceAfter - balanceBefore;
|
|
353
|
-
expect(balanceIncrease).toBe(NATIVE_DROP_AMOUNT);
|
|
354
|
-
console.log('✅ Native drop received:', NATIVE_DROP_AMOUNT, 'stroops');
|
|
380
|
+
assertTransactionSucceeded(txResult, 'lz_receive on Chain B');
|
|
355
381
|
|
|
356
382
|
// Verify Counter B received the message
|
|
357
383
|
const { result: inboundCount } = await counterClientB.inbound_count({
|
|
@@ -531,7 +557,7 @@ describe('Counter Cross-Chain Testing (ULN302)', async () => {
|
|
|
531
557
|
'\n🎉 Counter Cross-Chain Composed ABA with Native Drop - Full Round Trip!',
|
|
532
558
|
);
|
|
533
559
|
console.log(' Chain A → Chain B: ComposedABA with native_drop');
|
|
534
|
-
console.log(' DVN B verifies → Commit →
|
|
560
|
+
console.log(' DVN B verifies → Commit → native_drop → lz_receive → lz_compose');
|
|
535
561
|
console.log(' Chain B → Chain A: Response (Vanilla)');
|
|
536
562
|
console.log(' DVN A verifies → Commit → lz_receive');
|
|
537
563
|
});
|
|
@@ -317,9 +317,8 @@ async function initChainClients(
|
|
|
317
317
|
const executorClient = createClient(ExecutorClient, addresses.executor);
|
|
318
318
|
await (
|
|
319
319
|
await executorClient.set_executor_helper({
|
|
320
|
-
admin: DEFAULT_DEPLOYER.publicKey(),
|
|
321
320
|
helper: addresses.executorHelper,
|
|
322
|
-
allowed_functions: ['execute', 'compose'
|
|
321
|
+
allowed_functions: ['execute', 'compose'],
|
|
323
322
|
})
|
|
324
323
|
).signAndSend();
|
|
325
324
|
console.log(`✅ [${chainLabel}] Executor Helper registered`);
|
package/test/utils.ts
CHANGED
|
@@ -167,6 +167,7 @@ import { Secp256k1KeyPair } from './secp256k1';
|
|
|
167
167
|
* - expiration: u64 - Ledger timestamp for when auth expires
|
|
168
168
|
* - signatures: Vec<BytesN<65>> - Secp256k1 signatures from multisig signers
|
|
169
169
|
* - sender: Sender - Either None or Admin(public_key, ed25519_signature)
|
|
170
|
+
* - preimage: Bytes - XDR-encoded HashIdPreimage::SorobanAuthorization (invocation is sliced from byte 48)
|
|
170
171
|
*/
|
|
171
172
|
export async function signDvnAuthEntries<T>(
|
|
172
173
|
dvnAddress: string,
|
|
@@ -233,13 +234,11 @@ export async function signDvnAuthEntries<T>(
|
|
|
233
234
|
adminSignature.toString('hex').slice(0, 32) + '...',
|
|
234
235
|
);
|
|
235
236
|
|
|
236
|
-
// 3.
|
|
237
|
-
//
|
|
238
|
-
// We use validUntilLedgerSeq * 5 as a rough approximation (5 seconds per ledger)
|
|
237
|
+
// 3. Compute the multisig hash from raw invocation XDR
|
|
238
|
+
// hash = keccak256(vid || expiration || invocation_xdr)
|
|
239
239
|
const expiration = BigInt(validUntilLedgerSeq) * 5n + BigInt(Math.floor(Date.now() / 1000));
|
|
240
|
-
const
|
|
241
|
-
const
|
|
242
|
-
const callHash = computeCallHash(vid, expiration, callsXdr);
|
|
240
|
+
const invocationXdr = Buffer.from(rootInvocation.toXDR());
|
|
241
|
+
const callHash = computeCallHash(vid, expiration, invocationXdr);
|
|
243
242
|
console.log('📝 Call hash for multisig:', Buffer.from(callHash).toString('hex'));
|
|
244
243
|
|
|
245
244
|
// 4. Sign the call hash with multisig signers
|
|
@@ -262,16 +261,19 @@ export async function signDvnAuthEntries<T>(
|
|
|
262
261
|
const sortedSignatures = signaturesWithAddresses.map((s) => s.sig);
|
|
263
262
|
|
|
264
263
|
// 6. Build TransactionAuthData as ScVal
|
|
265
|
-
// struct TransactionAuthData { vid
|
|
266
|
-
|
|
264
|
+
// struct TransactionAuthData { vid, expiration, signatures, sender, preimage }
|
|
265
|
+
const preimageXdr = Buffer.from(preimage.toXDR());
|
|
267
266
|
const transactionAuthDataScVal = xdr.ScVal.scvMap([
|
|
268
267
|
new xdr.ScMapEntry({
|
|
269
268
|
key: xdr.ScVal.scvSymbol('expiration'),
|
|
270
269
|
val: xdr.ScVal.scvU64(new xdr.Uint64(expiration)),
|
|
271
270
|
}),
|
|
271
|
+
new xdr.ScMapEntry({
|
|
272
|
+
key: xdr.ScVal.scvSymbol('preimage'),
|
|
273
|
+
val: xdr.ScVal.scvBytes(preimageXdr),
|
|
274
|
+
}),
|
|
272
275
|
new xdr.ScMapEntry({
|
|
273
276
|
key: xdr.ScVal.scvSymbol('sender'),
|
|
274
|
-
// Sender::Admin(public_key, signature)
|
|
275
277
|
val: xdr.ScVal.scvVec([
|
|
276
278
|
xdr.ScVal.scvSymbol('Admin'),
|
|
277
279
|
xdr.ScVal.scvBytes(adminKeypair.rawPublicKey()),
|
|
@@ -323,79 +325,11 @@ export async function signDvnAuthEntries<T>(
|
|
|
323
325
|
console.log('✅ Final simulation complete');
|
|
324
326
|
}
|
|
325
327
|
|
|
326
|
-
/**
|
|
327
|
-
* Represents a contract call for multisig authorization.
|
|
328
|
-
*/
|
|
329
|
-
interface Call {
|
|
330
|
-
to: string; // Contract address
|
|
331
|
-
func: string; // Function name
|
|
332
|
-
args: xdr.ScVal[]; // Function arguments
|
|
333
|
-
}
|
|
334
|
-
|
|
335
|
-
/**
|
|
336
|
-
* Collects all contract calls from an invocation tree.
|
|
337
|
-
*/
|
|
338
|
-
function collectCallsFromInvocation(invocation: xdr.SorobanAuthorizedInvocation): Call[] {
|
|
339
|
-
const calls: Call[] = [];
|
|
340
|
-
collectCallsRecursive(invocation, calls);
|
|
341
|
-
return calls;
|
|
342
|
-
}
|
|
343
|
-
|
|
344
|
-
function collectCallsRecursive(invocation: xdr.SorobanAuthorizedInvocation, calls: Call[]): void {
|
|
345
|
-
const fn = invocation.function();
|
|
346
|
-
|
|
347
|
-
if (
|
|
348
|
-
fn.switch() === xdr.SorobanAuthorizedFunctionType.sorobanAuthorizedFunctionTypeContractFn()
|
|
349
|
-
) {
|
|
350
|
-
const contractFn = fn.contractFn();
|
|
351
|
-
const contractAddr = Address.fromScAddress(contractFn.contractAddress());
|
|
352
|
-
|
|
353
|
-
calls.push({
|
|
354
|
-
to: contractAddr.toString(),
|
|
355
|
-
func: contractFn.functionName().toString(),
|
|
356
|
-
args: contractFn.args(),
|
|
357
|
-
});
|
|
358
|
-
}
|
|
359
|
-
|
|
360
|
-
// Process sub-invocations
|
|
361
|
-
for (const sub of invocation.subInvocations()) {
|
|
362
|
-
collectCallsRecursive(sub, calls);
|
|
363
|
-
}
|
|
364
|
-
}
|
|
365
|
-
|
|
366
|
-
/**
|
|
367
|
-
* Serializes calls to XDR format matching Soroban's Vec<Call> serialization.
|
|
368
|
-
*
|
|
369
|
-
* Call struct: { args: Vec<Val>, func: Symbol, to: Address }
|
|
370
|
-
* Serialized as ScMap with keys in alphabetical order.
|
|
371
|
-
*/
|
|
372
|
-
function serializeCallsToXdr(calls: Call[]): Buffer {
|
|
373
|
-
const callScVals = calls.map((call) =>
|
|
374
|
-
xdr.ScVal.scvMap([
|
|
375
|
-
new xdr.ScMapEntry({
|
|
376
|
-
key: xdr.ScVal.scvSymbol('args'),
|
|
377
|
-
val: xdr.ScVal.scvVec(call.args),
|
|
378
|
-
}),
|
|
379
|
-
new xdr.ScMapEntry({
|
|
380
|
-
key: xdr.ScVal.scvSymbol('func'),
|
|
381
|
-
val: xdr.ScVal.scvSymbol(call.func),
|
|
382
|
-
}),
|
|
383
|
-
new xdr.ScMapEntry({
|
|
384
|
-
key: xdr.ScVal.scvSymbol('to'),
|
|
385
|
-
val: Address.fromString(call.to).toScVal(),
|
|
386
|
-
}),
|
|
387
|
-
]),
|
|
388
|
-
);
|
|
389
|
-
|
|
390
|
-
const vecScVal = xdr.ScVal.scvVec(callScVals);
|
|
391
|
-
return Buffer.from(vecScVal.toXDR());
|
|
392
|
-
}
|
|
393
|
-
|
|
394
328
|
/**
|
|
395
329
|
* Computes the call hash for multisig signing.
|
|
396
|
-
* hash = keccak256(vid.to_be_bytes(4) || expiration.to_be_bytes(8) ||
|
|
330
|
+
* hash = keccak256(vid.to_be_bytes(4) || expiration.to_be_bytes(8) || invocation_xdr)
|
|
397
331
|
*/
|
|
398
|
-
function computeCallHash(vid: number, expiration: bigint,
|
|
332
|
+
function computeCallHash(vid: number, expiration: bigint, invocationXdr: Buffer): Uint8Array {
|
|
399
333
|
// vid as 4-byte big-endian
|
|
400
334
|
const vidBytes = Buffer.alloc(4);
|
|
401
335
|
vidBytes.writeUInt32BE(vid, 0);
|
|
@@ -404,8 +338,7 @@ function computeCallHash(vid: number, expiration: bigint, callsXdr: Buffer): Uin
|
|
|
404
338
|
const expirationBytes = Buffer.alloc(8);
|
|
405
339
|
expirationBytes.writeBigUInt64BE(expiration, 0);
|
|
406
340
|
|
|
407
|
-
|
|
408
|
-
const data = Buffer.concat([vidBytes, expirationBytes, callsXdr]);
|
|
341
|
+
const data = Buffer.concat([vidBytes, expirationBytes, invocationXdr]);
|
|
409
342
|
return keccak_256(data);
|
|
410
343
|
}
|
|
411
344
|
|