From dd7e48bf28e1efe124615c766e70f3355c8a3edd Mon Sep 17 00:00:00 2001 From: PhilippeR26 Date: Tue, 27 Feb 2024 15:30:02 +0100 Subject: [PATCH 01/37] test: eth signer --- __mocks__/cairo/ethSigner/dummy1ForEth.casm | 724 + .../cairo/ethSigner/dummy1ForEth.sierra.json | 401 + __mocks__/cairo/ethSigner/dummy2ForEth.casm | 724 + .../cairo/ethSigner/dummy2ForEth.sierra.json | 401 + .../ethSigner/openzeppelin_EthAccount090.casm | 11683 ++++++++++++++++ .../openzeppelin_EthAccount090.sierra.json | 6365 +++++++++ __mocks__/cairo/ethSigner/testEthPubKey.cairo | 71 + __mocks__/cairo/ethSigner/testEthPubKey.casm | 2639 ++++ .../cairo/ethSigner/testEthPubKey.sierra.json | 1491 ++ __tests__/config/fixtures.ts | 10 + __tests__/utils/ethSigner.test.ts | 351 +- src/signer/ethSigner.ts | 61 +- src/types/calldata.ts | 1 + src/utils/calldata/cairo.ts | 2 + src/utils/calldata/index.ts | 1 - src/utils/calldata/propertyOrder.ts | 4 + src/utils/calldata/requestParser.ts | 18 +- src/utils/calldata/responseParser.ts | 9 + src/utils/calldata/validate.ts | 17 +- www/docs/guides/connect_account.md | 6 +- www/docs/guides/create_account.md | 37 + www/docs/guides/define_call_message.md | 56 +- www/docs/guides/signature.md | 13 + 23 files changed, 24969 insertions(+), 116 deletions(-) create mode 100644 __mocks__/cairo/ethSigner/dummy1ForEth.casm create mode 100644 __mocks__/cairo/ethSigner/dummy1ForEth.sierra.json create mode 100644 __mocks__/cairo/ethSigner/dummy2ForEth.casm create mode 100644 __mocks__/cairo/ethSigner/dummy2ForEth.sierra.json create mode 100644 __mocks__/cairo/ethSigner/openzeppelin_EthAccount090.casm create mode 100644 __mocks__/cairo/ethSigner/openzeppelin_EthAccount090.sierra.json create mode 100644 __mocks__/cairo/ethSigner/testEthPubKey.cairo create mode 100644 __mocks__/cairo/ethSigner/testEthPubKey.casm create mode 100644 __mocks__/cairo/ethSigner/testEthPubKey.sierra.json diff --git a/__mocks__/cairo/ethSigner/dummy1ForEth.casm b/__mocks__/cairo/ethSigner/dummy1ForEth.casm new file mode 100644 index 000000000..4d1490e54 --- /dev/null +++ b/__mocks__/cairo/ethSigner/dummy1ForEth.casm @@ -0,0 +1,724 @@ +{ + "prime": "0x800000000000011000000000000000000000000000000000000000000000001", + "compiler_version": "2.5.3", + "bytecode": [ + "0xa0680017fff8000", + "0x7", + "0x482680017ffa8000", + "0x100000000000000000000000000000000", + "0x400280007ff97fff", + "0x10780017fff7fff", + "0x69", + "0x4825800180007ffa", + "0x0", + "0x400280007ff97fff", + "0x480a7ffc7fff8000", + "0x480a7ffd7fff8000", + "0x1104800180018000", + "0xde", + "0x482680017ff98000", + "0x1", + "0x20680017fff7ffd", + "0x50", + "0x48307ffb80007ffc", + "0x20680017fff7fff", + "0x4", + "0x10780017fff7fff", + "0x10", + "0x40780017fff7fff", + "0x1", + "0x480680017fff8000", + "0x496e70757420746f6f206c6f6e6720666f7220617267756d656e7473", + "0x400080007ffe7fff", + "0x48127ffc7fff8000", + "0x48127feb7fff8000", + "0x480a7ffb7fff8000", + "0x480680017fff8000", + "0x1", + "0x48127ffa7fff8000", + "0x482480017ff98000", + "0x1", + "0x208b7fff7fff7ffe", + "0x1104800180018000", + "0x19b", + "0x482480017fff8000", + "0x19a", + "0x480080007fff8000", + "0xa0680017fff8000", + "0x9", + "0x4824800180007fe9", + "0x247c", + "0x482480017fff8000", + "0x100000000000000000000000000000000", + "0x400080007ff77fff", + "0x10780017fff7fff", + "0x20", + "0x4824800180007fe9", + "0x247c", + "0x400080007ff87fff", + "0x48127fff7fff8000", + "0x480a7ffb7fff8000", + "0x48127ff57fff8000", + "0x1104800180018000", + "0xd5", + "0x482480017fd38000", + "0x1", + "0x20680017fff7ffc", + "0xc", + "0x40780017fff7fff", + "0x1", + "0x48127ffe7fff8000", + "0x48127ff87fff8000", + "0x48127ff87fff8000", + "0x480680017fff8000", + "0x0", + "0x48127ffb7fff8000", + "0x48127ffa7fff8000", + "0x208b7fff7fff7ffe", + "0x48127fff7fff8000", + "0x48127ff97fff8000", + "0x48127ff97fff8000", + "0x480680017fff8000", + "0x1", + "0x48127ff97fff8000", + "0x48127ff97fff8000", + "0x208b7fff7fff7ffe", + "0x40780017fff7fff", + "0x1", + "0x480680017fff8000", + "0x4f7574206f6620676173", + "0x400080007ffe7fff", + "0x482480017ff58000", + "0x1", + "0x48127fe47fff8000", + "0x480a7ffb7fff8000", + "0x480680017fff8000", + "0x1", + "0x48127ffa7fff8000", + "0x482480017ff98000", + "0x1", + "0x208b7fff7fff7ffe", + "0x40780017fff7fff", + "0x1", + "0x480680017fff8000", + "0x4661696c656420746f20646573657269616c697a6520706172616d202331", + "0x400080007ffe7fff", + "0x48127ffd7fff8000", + "0x48127fec7fff8000", + "0x480a7ffb7fff8000", + "0x480680017fff8000", + "0x1", + "0x48127ffa7fff8000", + "0x482480017ff98000", + "0x1", + "0x208b7fff7fff7ffe", + "0x40780017fff7fff", + "0x1", + "0x480680017fff8000", + "0x4f7574206f6620676173", + "0x400080007ffe7fff", + "0x482680017ff98000", + "0x1", + "0x480a7ffa7fff8000", + "0x480a7ffb7fff8000", + "0x480680017fff8000", + "0x1", + "0x48127ffa7fff8000", + "0x482480017ff98000", + "0x1", + "0x208b7fff7fff7ffe", + "0xa0680017fff8000", + "0x7", + "0x482680017ffa8000", + "0x100000000000000000000000000000000", + "0x400280007ff97fff", + "0x10780017fff7fff", + "0x59", + "0x4825800180007ffa", + "0x0", + "0x400280007ff97fff", + "0x482680017ff98000", + "0x1", + "0x48297ffc80007ffd", + "0x20680017fff7fff", + "0x4", + "0x10780017fff7fff", + "0x10", + "0x40780017fff7fff", + "0x1", + "0x480680017fff8000", + "0x496e70757420746f6f206c6f6e6720666f7220617267756d656e7473", + "0x400080007ffe7fff", + "0x48127ffc7fff8000", + "0x48127ffa7fff8000", + "0x480a7ffb7fff8000", + "0x480680017fff8000", + "0x1", + "0x48127ffa7fff8000", + "0x482480017ff98000", + "0x1", + "0x208b7fff7fff7ffe", + "0x1104800180018000", + "0x124", + "0x482480017fff8000", + "0x123", + "0x480080007fff8000", + "0xa0680017fff8000", + "0x9", + "0x4824800180007ff8", + "0x19f0", + "0x482480017fff8000", + "0x100000000000000000000000000000000", + "0x400080007ff77fff", + "0x10780017fff7fff", + "0x24", + "0x4824800180007ff8", + "0x19f0", + "0x400080007ff87fff", + "0x48127fff7fff8000", + "0x480a7ffb7fff8000", + "0x1104800180018000", + "0x92", + "0x482480017fdd8000", + "0x1", + "0x20680017fff7ffc", + "0x11", + "0x40780017fff7fff", + "0x1", + "0x48127ffd7fff8000", + "0x48127ffe7fff8000", + "0x48127ffd7fff8000", + "0x1104800180018000", + "0x8c", + "0x48127ff77fff8000", + "0x48127ff17fff8000", + "0x48127ff17fff8000", + "0x480680017fff8000", + "0x0", + "0x48127ffa7fff8000", + "0x48127ffa7fff8000", + "0x208b7fff7fff7ffe", + "0x48127fff7fff8000", + "0x48127ff97fff8000", + "0x48127ff97fff8000", + "0x480680017fff8000", + "0x1", + "0x48127ff97fff8000", + "0x48127ff97fff8000", + "0x208b7fff7fff7ffe", + "0x40780017fff7fff", + "0x1", + "0x480680017fff8000", + "0x4f7574206f6620676173", + "0x400080007ffe7fff", + "0x482480017ff58000", + "0x1", + "0x48127ff37fff8000", + "0x480a7ffb7fff8000", + "0x480680017fff8000", + "0x1", + "0x48127ffa7fff8000", + "0x482480017ff98000", + "0x1", + "0x208b7fff7fff7ffe", + "0x40780017fff7fff", + "0x1", + "0x480680017fff8000", + "0x4f7574206f6620676173", + "0x400080007ffe7fff", + "0x482680017ff98000", + "0x1", + "0x480a7ffa7fff8000", + "0x480a7ffb7fff8000", + "0x480680017fff8000", + "0x1", + "0x48127ffa7fff8000", + "0x482480017ff98000", + "0x1", + "0x208b7fff7fff7ffe", + "0x48297ffc80007ffd", + "0x20680017fff7fff", + "0x4", + "0x10780017fff7fff", + "0xa", + "0x482680017ffc8000", + "0x1", + "0x480a7ffd7fff8000", + "0x480680017fff8000", + "0x0", + "0x480a7ffc7fff8000", + "0x10780017fff7fff", + "0x8", + "0x480a7ffc7fff8000", + "0x480a7ffd7fff8000", + "0x480680017fff8000", + "0x1", + "0x480680017fff8000", + "0x0", + "0x48127ffc7fff8000", + "0x48127ffc7fff8000", + "0x20680017fff7ffc", + "0x8", + "0x48127ffe7fff8000", + "0x48127ffe7fff8000", + "0x480680017fff8000", + "0x0", + "0x480080007ffa8000", + "0x208b7fff7fff7ffe", + "0x48127ffe7fff8000", + "0x48127ffe7fff8000", + "0x480680017fff8000", + "0x1", + "0x480680017fff8000", + "0x0", + "0x208b7fff7fff7ffe", + "0x20780017fff7ffd", + "0x6", + "0x480680017fff8000", + "0x1", + "0x10780017fff7fff", + "0x4", + "0x480680017fff8000", + "0x0", + "0x480680017fff8000", + "0x1", + "0x48307ffe80007fff", + "0x20680017fff7fff", + "0x11", + "0x40780017fff7fff", + "0x16", + "0x40780017fff7fff", + "0x1", + "0x480680017fff8000", + "0x456e7465722061206e616d65", + "0x400080007ffe7fff", + "0x480a7ffb7fff8000", + "0x480a7ffc7fff8000", + "0x480680017fff8000", + "0x1", + "0x48127ffb7fff8000", + "0x482480017ffa8000", + "0x1", + "0x208b7fff7fff7ffe", + "0x480a7ffb7fff8000", + "0x480a7ffc7fff8000", + "0x480a7ffd7fff8000", + "0x1104800180018000", + "0x1e", + "0x20680017fff7ffd", + "0xb", + "0x48127ffb7fff8000", + "0x48127ffb7fff8000", + "0x480680017fff8000", + "0x0", + "0x480680017fff8000", + "0x0", + "0x480680017fff8000", + "0x0", + "0x208b7fff7fff7ffe", + "0x48127ffb7fff8000", + "0x48127ffb7fff8000", + "0x480680017fff8000", + "0x1", + "0x48127ffb7fff8000", + "0x48127ffb7fff8000", + "0x208b7fff7fff7ffe", + "0x480a7ffc7fff8000", + "0x480a7ffd7fff8000", + "0x1104800180018000", + "0x3c", + "0x208b7fff7fff7ffe", + "0x400380007ffd7ffb", + "0x480a7ffc7fff8000", + "0x482680017ffd8000", + "0x1", + "0x208b7fff7fff7ffe", + "0x480680017fff8000", + "0x0", + "0x480680017fff8000", + "0x361458367e696363fbcc70777d07ebbd2394e89fd0adcaf147faccd1d294d60", + "0x480680017fff8000", + "0x53746f726167655772697465", + "0x400280007ffc7fff", + "0x400380017ffc7ffb", + "0x400280027ffc7ffd", + "0x400280037ffc7ffe", + "0x400380047ffc7ffd", + "0x480280067ffc8000", + "0x20680017fff7fff", + "0xd", + "0x480280057ffc8000", + "0x482680017ffc8000", + "0x7", + "0x480680017fff8000", + "0x0", + "0x480680017fff8000", + "0x0", + "0x480680017fff8000", + "0x0", + "0x10780017fff7fff", + "0x9", + "0x480280057ffc8000", + "0x482680017ffc8000", + "0x9", + "0x480680017fff8000", + "0x1", + "0x480280077ffc8000", + "0x480280087ffc8000", + "0x1104800180018000", + "0x3a", + "0x20680017fff7ffd", + "0xb", + "0x48127ff67fff8000", + "0x48127ff67fff8000", + "0x480680017fff8000", + "0x0", + "0x480680017fff8000", + "0x0", + "0x480680017fff8000", + "0x0", + "0x208b7fff7fff7ffe", + "0x48127ff67fff8000", + "0x48127ff67fff8000", + "0x480680017fff8000", + "0x1", + "0x48127ffb7fff8000", + "0x48127ffb7fff8000", + "0x208b7fff7fff7ffe", + "0x480680017fff8000", + "0x0", + "0x480680017fff8000", + "0x361458367e696363fbcc70777d07ebbd2394e89fd0adcaf147faccd1d294d60", + "0x480680017fff8000", + "0x53746f7261676552656164", + "0x400280007ffd7fff", + "0x400380017ffd7ffc", + "0x400280027ffd7ffd", + "0x400280037ffd7ffe", + "0x480280057ffd8000", + "0x20680017fff7fff", + "0xc", + "0x480280047ffd8000", + "0x482680017ffd8000", + "0x7", + "0x480680017fff8000", + "0x0", + "0x480680017fff8000", + "0x0", + "0x480280067ffd8000", + "0x10780017fff7fff", + "0x9", + "0x480280047ffd8000", + "0x482680017ffd8000", + "0x8", + "0x480680017fff8000", + "0x1", + "0x480280067ffd8000", + "0x480280077ffd8000", + "0x1104800180018000", + "0x16", + "0x48127ff67fff8000", + "0x48127ff67fff8000", + "0x48127ffb7fff8000", + "0x48127ffb7fff8000", + "0x48127ffb7fff8000", + "0x208b7fff7fff7ffe", + "0x20780017fff7ffb", + "0x9", + "0x480680017fff8000", + "0x0", + "0x480680017fff8000", + "0x0", + "0x480680017fff8000", + "0x0", + "0x208b7fff7fff7ffe", + "0x480680017fff8000", + "0x1", + "0x480a7ffc7fff8000", + "0x480a7ffd7fff8000", + "0x208b7fff7fff7ffe", + "0x20780017fff7ffb", + "0x8", + "0x480680017fff8000", + "0x0", + "0x480680017fff8000", + "0x0", + "0x480a7ffd7fff8000", + "0x208b7fff7fff7ffe", + "0x480680017fff8000", + "0x1", + "0x480a7ffc7fff8000", + "0x480a7ffd7fff8000", + "0x208b7fff7fff7ffe" + ], + "hints": [ + [ + 0, + [ + { + "TestLessThanOrEqual": { + "lhs": { + "Immediate": "0x0" + }, + "rhs": { + "Deref": { + "register": "FP", + "offset": -6 + } + }, + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 23, + [ + { + "AllocSegment": { + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 42, + [ + { + "TestLessThanOrEqual": { + "lhs": { + "Immediate": "0x247c" + }, + "rhs": { + "Deref": { + "register": "AP", + "offset": -22 + } + }, + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 63, + [ + { + "AllocSegment": { + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 81, + [ + { + "AllocSegment": { + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 96, + [ + { + "AllocSegment": { + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 110, + [ + { + "AllocSegment": { + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 125, + [ + { + "TestLessThanOrEqual": { + "lhs": { + "Immediate": "0x0" + }, + "rhs": { + "Deref": { + "register": "FP", + "offset": -6 + } + }, + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 142, + [ + { + "AllocSegment": { + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 161, + [ + { + "TestLessThanOrEqual": { + "lhs": { + "Immediate": "0x19f0" + }, + "rhs": { + "Deref": { + "register": "AP", + "offset": -7 + } + }, + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 181, + [ + { + "AllocSegment": { + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 204, + [ + { + "AllocSegment": { + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 219, + [ + { + "AllocSegment": { + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 285, + [ + { + "AllocSegment": { + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 342, + [ + { + "SystemCall": { + "system": { + "Deref": { + "register": "FP", + "offset": -4 + } + } + } + } + ] + ], + [ + 393, + [ + { + "SystemCall": { + "system": { + "Deref": { + "register": "FP", + "offset": -3 + } + } + } + } + ] + ] + ], + "entry_points_by_type": { + "EXTERNAL": [ + { + "selector": "0xf61980aeb34c9c7f823d576c10d00648fdab6c03a59b539ed0824be31da466", + "offset": 0, + "builtins": [ + "range_check" + ] + }, + { + "selector": "0x31341177714d81ad9ccd0c903211bc056a60e8af988d0fd918cc43874549653", + "offset": 125, + "builtins": [ + "range_check" + ] + } + ], + "L1_HANDLER": [], + "CONSTRUCTOR": [] + } +} \ No newline at end of file diff --git a/__mocks__/cairo/ethSigner/dummy1ForEth.sierra.json b/__mocks__/cairo/ethSigner/dummy1ForEth.sierra.json new file mode 100644 index 000000000..704423706 --- /dev/null +++ b/__mocks__/cairo/ethSigner/dummy1ForEth.sierra.json @@ -0,0 +1,401 @@ +{ + "sierra_program": [ + "0x1", + "0x4", + "0x0", + "0x2", + "0x5", + "0x3", + "0xd2", + "0x2e", + "0x21", + "0x52616e6765436865636b", + "0x800000000000000100000000000000000000000000000000", + "0x66656c74323532", + "0x800000000000000700000000000000000000000000000000", + "0x4172726179", + "0x800000000000000300000000000000000000000000000001", + "0x1", + "0x456e756d", + "0x800000000000000300000000000000000000000000000003", + "0x0", + "0x90d0203c41ad646d024845257a6eceb2f8b59b29ce7420dd518053d2edeedc", + "0x2", + "0x537472756374", + "0x800000000000000f00000000000000000000000000000001", + "0x2ee1e2b1b89f8c495f200e4956278a4d47395fe262f27b52e5865c9524c08c3", + "0x800000000000000f00000000000000000000000000000002", + "0x4", + "0x16a4c8d7c05909052238a862d8cc3e7975bf05a07b3a69c6b28951083a6d672", + "0x6", + "0xcc5e86243f861d2d64b08c35db21013e773ac5cf10097946fe0011304886d5", + "0x5", + "0x7", + "0x101dc0399934cc08fa0d6f6f2daead4e4a38cabeea1c743e1fc28d2d6e58e99", + "0x753332", + "0x53746f7261676541646472657373", + "0x53746f726167654261736541646472657373", + "0x1de0f5d2d7ee3262c9db63a2dea1f31a9e09278da3cd3b722b140a1914cde67", + "0x800000000000000f00000000000000000000000000000003", + "0xd", + "0x26df226cc1a83370087596501c3dc970358a553eb14103cd561dffbb403629c", + "0xe", + "0x800000000000000700000000000000000000000000000003", + "0x3288d594b9a45d15bb2fcb7903f06cdb06b27f0ba88186ec4cfaa98307cb972", + "0x4e6f6e5a65726f", + "0x800000000000000700000000000000000000000000000001", + "0x426f78", + "0x29d7d57c04a880978e7b3689f6218e507f3be17588744b58dc17762447ad0e7", + "0x12", + "0x800000000000000700000000000000000000000000000002", + "0x10203be321c62a7bd4c060d69539c1fbe065baa9e253c74d2cc48be163e259", + "0x14", + "0x536e617073686f74", + "0x1baeba72e79e9db2587cf44fedb2f3700b2075a5e8e39a562584862c4b71f62", + "0x16", + "0x17", + "0x26c73abcf0ccff6eaa666b3daf213cb2d03b12a097438d9bf9cf4a945a35303", + "0x19", + "0x2689a5b5546eba08617652a64ee5b9e7be805d639760f2d6476528a4643b725", + "0x1a", + "0x4275696c74696e436f737473", + "0x53797374656d", + "0x9931c641b913035ae674b400b61a51476d506bbe8bba2ff8a6272790aba9e6", + "0x18", + "0x11c6d8087e00642489f92d2821ad6ebd6532ad1a3b6d12833da6d6810391511", + "0x4761734275696c74696e", + "0x6d", + "0x7265766f6b655f61705f747261636b696e67", + "0x77697468647261775f676173", + "0x6272616e63685f616c69676e", + "0x73746f72655f74656d70", + "0x66756e6374696f6e5f63616c6c", + "0x3", + "0x656e756d5f6d61746368", + "0x1f", + "0x7374727563745f6465636f6e737472756374", + "0x61727261795f736e617073686f745f706f705f66726f6e74", + "0x64726f70", + "0x61727261795f6e6577", + "0x66656c743235325f636f6e7374", + "0x496e70757420746f6f206c6f6e6720666f7220617267756d656e7473", + "0x61727261795f617070656e64", + "0x7374727563745f636f6e737472756374", + "0x656e756d5f696e6974", + "0x1e", + "0x20", + "0x1d", + "0x6765745f6275696c74696e5f636f737473", + "0x1c", + "0x77697468647261775f6761735f616c6c", + "0x1b", + "0x736e617073686f745f74616b65", + "0x4f7574206f6620676173", + "0x4661696c656420746f20646573657269616c697a6520706172616d202331", + "0x15", + "0x13", + "0x6a756d70", + "0x756e626f78", + "0x72656e616d65", + "0x647570", + "0x66656c743235325f69735f7a65726f", + "0x10", + "0x11", + "0x626f6f6c5f6e6f745f696d706c", + "0x456e7465722061206e616d65", + "0xf", + "0x73746f726167655f626173655f616464726573735f636f6e7374", + "0x361458367e696363fbcc70777d07ebbd2394e89fd0adcaf147faccd1d294d60", + "0x73746f726167655f616464726573735f66726f6d5f62617365", + "0x7533325f636f6e7374", + "0xa", + "0xb", + "0x73746f726167655f77726974655f73797363616c6c", + "0x9", + "0x8", + "0x73746f726167655f726561645f73797363616c6c", + "0x170", + "0xffffffffffffffff", + "0x59", + "0x4a", + "0xc", + "0x3c", + "0x35", + "0x22", + "0x23", + "0x24", + "0x25", + "0x26", + "0x27", + "0x28", + "0x29", + "0x2a", + "0x2b", + "0x2c", + "0x2d", + "0x2e", + "0x2f", + "0x30", + "0x31", + "0x32", + "0x33", + "0x34", + "0x36", + "0x37", + "0x38", + "0x39", + "0x3a", + "0xb2", + "0x7c", + "0xa5", + "0x9e", + "0xc7", + "0xcc", + "0xd6", + "0x3b", + "0xe4", + "0x3d", + "0x3e", + "0xe9", + "0x3f", + "0x40", + "0x41", + "0x42", + "0xfb", + "0x43", + "0x44", + "0x45", + "0x46", + "0x47", + "0x48", + "0x10e", + "0x49", + "0x4b", + "0x4c", + "0x4d", + "0x4e", + "0x4f", + "0x50", + "0x51", + "0x52", + "0x12b", + "0x53", + "0x54", + "0x130", + "0x55", + "0x56", + "0x57", + "0x13a", + "0x58", + "0x5a", + "0x5b", + "0x5c", + "0x5d", + "0x5e", + "0x14e", + "0x5f", + "0x60", + "0x153", + "0x61", + "0x62", + "0x63", + "0x64", + "0x15e", + "0x65", + "0x66", + "0x67", + "0x68", + "0x69", + "0x16a", + "0x6a", + "0x6b", + "0x6c", + "0xc0", + "0xdd", + "0x114", + "0x119", + "0x11e", + "0x141", + "0x158", + "0x164", + "0xe08", + "0x120a0e0d11070f0a100d0f0a0e0d0c0707070b0a0908070706050403020100", + "0xd041a041904180c071107170a090816071507140a09080c0713070f0a090d", + "0x707232211071107210a200816071f071e0a090811071d070f0a1c0d1b0a0e", + "0xd0c07232a16072907280a090807070f0a270d11072607250a200807072324", + "0x3107300a090811072f070f0a1c0d1d072e0a100d2d070f0a270d2c072b0a27", + "0xa3b0a3a0a3938023711070707360a200816073507340a0908023304321607", + "0x707432c070743070707422d0707414007073f0a07073c0c3e073d2d07073c", + "0xc491607074813070748070707470707073c460c0745070707440707074326", + "0x707481d0707480a4f4e07073c0a4d4a07073c4c07073c4b07073c070c4a07", + "0xc49350707482d0707480c0707430c070751310707435007073f3e3e073d2f", + "0x3e073d2f0707432f070751530c07452d07074311070743520c07450a0c4a07", + "0x2c07073c0a0c55070c49153e073d0c07073c07070751290707415407073f11", + "0x70c4907070758070707575507073f070c55070c49110707480a565507073c", + "0x7435b07073c070c5b070c490a5a07070759070c40070c494007073c0a0c40", + "0x707415007073c070c50070c495e0c07455b07073f0a5d0a0c5b070c495c07", + "0x610c0760163e073d0a0c50070c49310707481f0707415f07073f133e073d2f", + "0xc67070c496707073c0a0c67070c490a666507073c6407073c0a0c07630a62", + "0x1d0707435f07073c0a0c5f070c491f070748150707416807073f683e073d07", + "0x7073c673e073d070c3e070c493e07073c0a0c3e070c490a69070c5f070c49", + "0x7483e07073f070c68070c496807073c0a0c68070c49150707486707073f54", + "0x15110c6b0c070a0c070a0a6b070a0a0a6a070c54070c490a0c54070c492907", + "0x1107150a67680c6b073e07110a3e076b073e073e0a0a6b070a0c0a16130c6c", + "0x680a6e076b076807160a0a6b070a0c0a65076d64076b0c6707130a11076b07", + "0xa0a6b071f07640a0a6b071d07670a0a6b070a0c0a5f07311f1d0c6b0c6e07", + "0xc5f0a5c076b075c071f0a5c076b070a1d0a5b076b070a6e0a0a6b07640765", + "0xa54076b072907260a29076b0726550c5c0a55076b070a5b0a26076b075c5b", + "0x54076b075407540a0c076b070c07290a15076b071507550a11076b07110715", + "0x72c072d0a2c076b070a2c0a0a6b075f07670a0a6b070a0c0a540c15111107", + "0x50076b070a2f0a0a6b070a0c0a312f0c6f352d0c6b0c2c15113e350a2c076b", + "0x76b0764071f0a0c076b070c07290a35076b073507550a4e076b075007310a", + "0x704b076b0c40074e0a2d076b072d07150a404a4c3e6b07644e0c3511500a64", + "0x73720c6b0771074a0a71076b070a6e0a0a6b074b074c0a0a6b070a0c0a0007", + "0x76076b077507710a75076b077407000a74076b0773074b0a0a6b077207400a", + "0x76b077607540a4a076b074a07290a4c076b074c07550a2d076b072d07150a", + "0x550a2d076b072d07150a77076b070007260a0a6b070a0c0a764a4c2d110776", + "0xa0c0a774a4c2d110777076b077707540a4a076b074a07290a4c076b074c07", + "0x76b0779071f0a79076b070a720a78076b070a6e0a0a6b076407650a0a6b07", + "0x77c07260a7c076b077a7b0c5c0a7b076b070a5b0a7a076b0779780c5f0a79", + "0x7d07540a0c076b070c07290a31076b073107550a2f076b072f07150a7d076b", + "0xa0a6b076807740a0a6b076507730a0a6b070a0c0a7d0c312f11077d076b07", + "0xa80076b077f7e0c5f0a7f076b077f071f0a7f076b070a750a7e076b070a6e", + "0x11076b071107150a83076b078207260a82076b0780810c5c0a81076b070a5b", + "0xa830c1511110783076b078307540a0c076b070c07290a15076b071507550a", + "0x784071f0a84076b070a720a70076b070a6e0a0a6b073e07740a0a6b070a0c", + "0x7260a87076b0785860c5c0a86076b070a5b0a85076b0784700c5f0a84076b", + "0x540a0c076b070c07290a16076b071607550a13076b071307150a88076b0787", + "0x130c8915110c6b0c070a0c070a0a6b070a0a0a880c1613110788076b078807", + "0x670c6b0c6807680a11076b071107150a68076b073e07160a0a6b070a0c0a16", + "0x6e076b070a6e0a0a6b076407640a0a6b076707670a0a6b070a0c0a65078a64", + "0x5f076b070a5b0a1f076b071d6e0c5f0a1d076b071d071f0a1d076b070a1d0a", + "0x6b071507550a11076b071107150a5c076b075b07260a5b076b071f5f0c5c0a", + "0xa0a6b070a0c0a5c0c151111075c076b075c07540a0c076b070c07290a1507", + "0x550c6b0c2615113e350a26076b0726072d0a26076b070a2c0a0a6b07650767", + "0x73507760a35076b072d07310a2d076b070a2f0a0a6b070a0c0a2c540c8b29", + "0x293e780a0c076b070c07290a29076b072907550a0a6b072f07770a312f0c6b", + "0x70a0c0a40078c4a076b0c4c07790a55076b075507150a4c4e503e6b07310c", + "0x77107650a72710c6b0700077b0a00076b074a077a0a4b076b070a6e0a0a6b", + "0x7730a74730c6b074b720c7d0a4b076b074b077c0a72076b0772071f0a0a6b", + "0x7000a77076b0776074b0a0a6b077507400a76750c6b0773074a0a0a6b0774", + "0x290a50076b075007550a55076b075507150a79076b077807710a78076b0777", + "0x74007260a0a6b070a0c0a794e5055110779076b077907540a4e076b074e07", + "0x7a07540a4e076b074e07290a50076b075007550a55076b075507150a7a076b", + "0xa7c076b070a720a7b076b070a6e0a0a6b070a0c0a7a4e505511077a076b07", + "0x76b077d7e0c5c0a7e076b070a5b0a7d076b077c7b0c5f0a7c076b077c071f", + "0x6b070c07290a2c076b072c07550a54076b075407150a80076b077f07260a7f", + "0x6e0a0a6b073e07740a0a6b070a0c0a800c2c54110780076b078007540a0c07", + "0x5b0a83076b0782810c5f0a82076b0782071f0a82076b070a720a81076b070a", + "0xa13076b071307150a85076b078407260a84076b0783700c5c0a70076b070a", + "0x160a850c1613110785076b078507540a0c076b070c07290a16076b07160755", + "0x76b073e077e0a0a6b070a0c0a11078d3e0c0c6b0c0707680a07076b070a07", + "0x820a0a6b070a0c0a0a8e070a810a16076b071507800a13076b070c077f0a15", + "0x4b0a16076b076707800a13076b0711077f0a67076b076807830a68076b070a", + "0xa6b070a0c0a6e078f65076b0c1607700a64076b0764073e0a64076b071307", + "0x76b0764073e0a5f076b071f07860a1f076b071d07850a1d076b076507840a", + "0x6b070a820a0a6b076e07730a0a6b070a0c0a5f640c075f076b075f07870a64", + "0xa5c640c075c076b075c07870a64076b0764073e0a5c076b075b07880a5b07", + "0x13076b070a820a0a6b070a0c0a1507910a6b0c11076f0a113e0c6b073e0790", + "0x7950a0a6b070a0c0a0a94070a810a68076b071607930a16076b071307920a", + "0x6807970a68076b076407930a64076b076707960a67076b070a820a0a6b0715", + "0x730a0a6b070a0c0a1d07996e076b0c6507980a65076b076507930a65076b07", + "0x6b070a9a0a1f076b070a6e0a0a6b070c07770a0a6b073e07650a0a6b076e07", + "0x5b5c0c5c0a5c076b070a5b0a5b076b075f1f0c5f0a5f076b075f071f0a5f07", + "0x79c0a07076b070707290a0a076b070a07550a55076b0726079b0a26076b07", + "0x29076b070c079d0a0a6b071d07730a0a6b070a0c0a55070a3e0755076b0755", + "0x3e29070a119e0a3e076b073e071f0a07076b070707290a0a076b070a07550a", + "0x310c6b073507a10a0a6b070a0c0a2f07a035076b0c2d079f0a2d2c543e6b07", + "0x76b074e4c0c6d0a4c076b073107310a4e076b070a820a0a6b075007730a50", + "0x6b0740079c0a2c076b072c07290a54076b075407550a40076b074a07a20a4a", + "0x290a54076b075407550a4b076b072f079b0a0a6b070a0c0a402c543e074007", + "0xa07550a3e076b070c079d0a4b2c543e074b076b074b079c0a2c076b072c07", + "0x850a1315113e071315113e6b073e070a3ea30a07076b070707290a0a076b07", + "0x73e076b073e077c0a11076b070a820a3e076b070c070c5f0a0c076b070a07", + "0x6b071307a70a13076b070aa60a15076b071107a50a11076b070aa40a113e0c", + "0xa0c0a6564673eaa68160c6b0c3e1513070a15a90a15076b071507a80a1307", + "0x76807290a1f076b071607550a1d076b076e07ab0a6e076b070a820a0a6b07", + "0x5c076b076507ae0a0a6b070a0c0a0aad070a810a5b076b071d07ac0a5f076b", + "0x76b075b07af0a5b076b075c07ac0a5f076b076407290a1f076b076707550a", + "0x540c0c6c0a54076b075507b20a0a6b070a0c0a2907b155076b0c2607b00a26", + "0x7b40a5f076b075f07290a1f076b071f07550a2d076b072c07b30a2c076b07", + "0x35076b072907b60a0a6b070c07b50a0a6b070a0c0a2d5f1f3e072d076b072d", + "0xb50a355f1f3e0735076b073507b40a5f076b075f07290a1f076b071f07550a", + "0x1507a70a15076b070aa60a11076b073e07a50a3e076b070aa40a0a6b070c07", + "0xa6564673eb86816133e6b0c1115070a11b70a11076b071107a80a15076b07", + "0xba0a1f076b071607290a1d076b071307550a6e076b076807b90a0a6b070a0c", + "0x76707550a5b076b076507bc0a0a6b070a0c0a0abb070a810a5f076b076e07", + "0x1d07550a5c076b075f07bd0a5f076b075b07ba0a1f076b076407290a1d076b", + "0x6b0c0a07bf0a5c1f1d3e075c076b075c07be0a1f076b071f07290a1d076b07", + "0x1107c30a11076b073e07c20a3e076b070707c10a0a6b070a0c0a0c07c00707", + "0xc40a13076b070c150c5c0a15076b070a5b0a0a6b070a0c0a11070711076b07", + "0xa0c0a0c07c607076b0c0a07c50a16070716076b071607c30a16076b071307", + "0xa11070711076b071107be0a11076b073e07c80a3e076b070707c70a0a6b07", + "0xbe0a16076b071307c90a13076b070c150c5c0a15076b070a5b0a0a6b070a0c", + "0x112d4c4b0a110a3e0c070a4a4c4b0a112d4c4b0a116416070716076b071607", + "0x3ecb3e0c070a504c4b3e072f4c4b11ca0a402d0c2d07c33e0c070a4a4c4b0a", + "0x70a5f4c4b3e071d4c4b11cd070a110c0c0c070ccc0c070a544c4b3e2f4c4b", + "0xd10a54073e07d00a68076707cf0c070a544c4b3e1d4c4b3ece3e0c" + ], + "sierra_program_debug_info": { + "type_names": [], + "libfunc_names": [], + "user_func_names": [] + }, + "contract_class_version": "0.1.0", + "entry_points_by_type": { + "EXTERNAL": [ + { + "selector": "0xf61980aeb34c9c7f823d576c10d00648fdab6c03a59b539ed0824be31da466", + "function_idx": 0 + }, + { + "selector": "0x31341177714d81ad9ccd0c903211bc056a60e8af988d0fd918cc43874549653", + "function_idx": 1 + } + ], + "L1_HANDLER": [], + "CONSTRUCTOR": [] + }, + "abi": [ + { + "type": "impl", + "name": "HelloStarknetImpl", + "interface_name": "hello::hello::IHelloStarknet" + }, + { + "type": "interface", + "name": "hello::hello::IHelloStarknet", + "items": [ + { + "type": "function", + "name": "set_name", + "inputs": [ + { + "name": "name0", + "type": "core::felt252" + } + ], + "outputs": [], + "state_mutability": "external" + }, + { + "type": "function", + "name": "get_name", + "inputs": [], + "outputs": [ + { + "type": "core::felt252" + } + ], + "state_mutability": "view" + } + ] + }, + { + "type": "event", + "name": "hello::hello::HelloStarknet::Event", + "kind": "enum", + "variants": [] + } + ] +} diff --git a/__mocks__/cairo/ethSigner/dummy2ForEth.casm b/__mocks__/cairo/ethSigner/dummy2ForEth.casm new file mode 100644 index 000000000..4d1490e54 --- /dev/null +++ b/__mocks__/cairo/ethSigner/dummy2ForEth.casm @@ -0,0 +1,724 @@ +{ + "prime": "0x800000000000011000000000000000000000000000000000000000000000001", + "compiler_version": "2.5.3", + "bytecode": [ + "0xa0680017fff8000", + "0x7", + "0x482680017ffa8000", + "0x100000000000000000000000000000000", + "0x400280007ff97fff", + "0x10780017fff7fff", + "0x69", + "0x4825800180007ffa", + "0x0", + "0x400280007ff97fff", + "0x480a7ffc7fff8000", + "0x480a7ffd7fff8000", + "0x1104800180018000", + "0xde", + "0x482680017ff98000", + "0x1", + "0x20680017fff7ffd", + "0x50", + "0x48307ffb80007ffc", + "0x20680017fff7fff", + "0x4", + "0x10780017fff7fff", + "0x10", + "0x40780017fff7fff", + "0x1", + "0x480680017fff8000", + "0x496e70757420746f6f206c6f6e6720666f7220617267756d656e7473", + "0x400080007ffe7fff", + "0x48127ffc7fff8000", + "0x48127feb7fff8000", + "0x480a7ffb7fff8000", + "0x480680017fff8000", + "0x1", + "0x48127ffa7fff8000", + "0x482480017ff98000", + "0x1", + "0x208b7fff7fff7ffe", + "0x1104800180018000", + "0x19b", + "0x482480017fff8000", + "0x19a", + "0x480080007fff8000", + "0xa0680017fff8000", + "0x9", + "0x4824800180007fe9", + "0x247c", + "0x482480017fff8000", + "0x100000000000000000000000000000000", + "0x400080007ff77fff", + "0x10780017fff7fff", + "0x20", + "0x4824800180007fe9", + "0x247c", + "0x400080007ff87fff", + "0x48127fff7fff8000", + "0x480a7ffb7fff8000", + "0x48127ff57fff8000", + "0x1104800180018000", + "0xd5", + "0x482480017fd38000", + "0x1", + "0x20680017fff7ffc", + "0xc", + "0x40780017fff7fff", + "0x1", + "0x48127ffe7fff8000", + "0x48127ff87fff8000", + "0x48127ff87fff8000", + "0x480680017fff8000", + "0x0", + "0x48127ffb7fff8000", + "0x48127ffa7fff8000", + "0x208b7fff7fff7ffe", + "0x48127fff7fff8000", + "0x48127ff97fff8000", + "0x48127ff97fff8000", + "0x480680017fff8000", + "0x1", + "0x48127ff97fff8000", + "0x48127ff97fff8000", + "0x208b7fff7fff7ffe", + "0x40780017fff7fff", + "0x1", + "0x480680017fff8000", + "0x4f7574206f6620676173", + "0x400080007ffe7fff", + "0x482480017ff58000", + "0x1", + "0x48127fe47fff8000", + "0x480a7ffb7fff8000", + "0x480680017fff8000", + "0x1", + "0x48127ffa7fff8000", + "0x482480017ff98000", + "0x1", + "0x208b7fff7fff7ffe", + "0x40780017fff7fff", + "0x1", + "0x480680017fff8000", + "0x4661696c656420746f20646573657269616c697a6520706172616d202331", + "0x400080007ffe7fff", + "0x48127ffd7fff8000", + "0x48127fec7fff8000", + "0x480a7ffb7fff8000", + "0x480680017fff8000", + "0x1", + "0x48127ffa7fff8000", + "0x482480017ff98000", + "0x1", + "0x208b7fff7fff7ffe", + "0x40780017fff7fff", + "0x1", + "0x480680017fff8000", + "0x4f7574206f6620676173", + "0x400080007ffe7fff", + "0x482680017ff98000", + "0x1", + "0x480a7ffa7fff8000", + "0x480a7ffb7fff8000", + "0x480680017fff8000", + "0x1", + "0x48127ffa7fff8000", + "0x482480017ff98000", + "0x1", + "0x208b7fff7fff7ffe", + "0xa0680017fff8000", + "0x7", + "0x482680017ffa8000", + "0x100000000000000000000000000000000", + "0x400280007ff97fff", + "0x10780017fff7fff", + "0x59", + "0x4825800180007ffa", + "0x0", + "0x400280007ff97fff", + "0x482680017ff98000", + "0x1", + "0x48297ffc80007ffd", + "0x20680017fff7fff", + "0x4", + "0x10780017fff7fff", + "0x10", + "0x40780017fff7fff", + "0x1", + "0x480680017fff8000", + "0x496e70757420746f6f206c6f6e6720666f7220617267756d656e7473", + "0x400080007ffe7fff", + "0x48127ffc7fff8000", + "0x48127ffa7fff8000", + "0x480a7ffb7fff8000", + "0x480680017fff8000", + "0x1", + "0x48127ffa7fff8000", + "0x482480017ff98000", + "0x1", + "0x208b7fff7fff7ffe", + "0x1104800180018000", + "0x124", + "0x482480017fff8000", + "0x123", + "0x480080007fff8000", + "0xa0680017fff8000", + "0x9", + "0x4824800180007ff8", + "0x19f0", + "0x482480017fff8000", + "0x100000000000000000000000000000000", + "0x400080007ff77fff", + "0x10780017fff7fff", + "0x24", + "0x4824800180007ff8", + "0x19f0", + "0x400080007ff87fff", + "0x48127fff7fff8000", + "0x480a7ffb7fff8000", + "0x1104800180018000", + "0x92", + "0x482480017fdd8000", + "0x1", + "0x20680017fff7ffc", + "0x11", + "0x40780017fff7fff", + "0x1", + "0x48127ffd7fff8000", + "0x48127ffe7fff8000", + "0x48127ffd7fff8000", + "0x1104800180018000", + "0x8c", + "0x48127ff77fff8000", + "0x48127ff17fff8000", + "0x48127ff17fff8000", + "0x480680017fff8000", + "0x0", + "0x48127ffa7fff8000", + "0x48127ffa7fff8000", + "0x208b7fff7fff7ffe", + "0x48127fff7fff8000", + "0x48127ff97fff8000", + "0x48127ff97fff8000", + "0x480680017fff8000", + "0x1", + "0x48127ff97fff8000", + "0x48127ff97fff8000", + "0x208b7fff7fff7ffe", + "0x40780017fff7fff", + "0x1", + "0x480680017fff8000", + "0x4f7574206f6620676173", + "0x400080007ffe7fff", + "0x482480017ff58000", + "0x1", + "0x48127ff37fff8000", + "0x480a7ffb7fff8000", + "0x480680017fff8000", + "0x1", + "0x48127ffa7fff8000", + "0x482480017ff98000", + "0x1", + "0x208b7fff7fff7ffe", + "0x40780017fff7fff", + "0x1", + "0x480680017fff8000", + "0x4f7574206f6620676173", + "0x400080007ffe7fff", + "0x482680017ff98000", + "0x1", + "0x480a7ffa7fff8000", + "0x480a7ffb7fff8000", + "0x480680017fff8000", + "0x1", + "0x48127ffa7fff8000", + "0x482480017ff98000", + "0x1", + "0x208b7fff7fff7ffe", + "0x48297ffc80007ffd", + "0x20680017fff7fff", + "0x4", + "0x10780017fff7fff", + "0xa", + "0x482680017ffc8000", + "0x1", + "0x480a7ffd7fff8000", + "0x480680017fff8000", + "0x0", + "0x480a7ffc7fff8000", + "0x10780017fff7fff", + "0x8", + "0x480a7ffc7fff8000", + "0x480a7ffd7fff8000", + "0x480680017fff8000", + "0x1", + "0x480680017fff8000", + "0x0", + "0x48127ffc7fff8000", + "0x48127ffc7fff8000", + "0x20680017fff7ffc", + "0x8", + "0x48127ffe7fff8000", + "0x48127ffe7fff8000", + "0x480680017fff8000", + "0x0", + "0x480080007ffa8000", + "0x208b7fff7fff7ffe", + "0x48127ffe7fff8000", + "0x48127ffe7fff8000", + "0x480680017fff8000", + "0x1", + "0x480680017fff8000", + "0x0", + "0x208b7fff7fff7ffe", + "0x20780017fff7ffd", + "0x6", + "0x480680017fff8000", + "0x1", + "0x10780017fff7fff", + "0x4", + "0x480680017fff8000", + "0x0", + "0x480680017fff8000", + "0x1", + "0x48307ffe80007fff", + "0x20680017fff7fff", + "0x11", + "0x40780017fff7fff", + "0x16", + "0x40780017fff7fff", + "0x1", + "0x480680017fff8000", + "0x456e7465722061206e616d65", + "0x400080007ffe7fff", + "0x480a7ffb7fff8000", + "0x480a7ffc7fff8000", + "0x480680017fff8000", + "0x1", + "0x48127ffb7fff8000", + "0x482480017ffa8000", + "0x1", + "0x208b7fff7fff7ffe", + "0x480a7ffb7fff8000", + "0x480a7ffc7fff8000", + "0x480a7ffd7fff8000", + "0x1104800180018000", + "0x1e", + "0x20680017fff7ffd", + "0xb", + "0x48127ffb7fff8000", + "0x48127ffb7fff8000", + "0x480680017fff8000", + "0x0", + "0x480680017fff8000", + "0x0", + "0x480680017fff8000", + "0x0", + "0x208b7fff7fff7ffe", + "0x48127ffb7fff8000", + "0x48127ffb7fff8000", + "0x480680017fff8000", + "0x1", + "0x48127ffb7fff8000", + "0x48127ffb7fff8000", + "0x208b7fff7fff7ffe", + "0x480a7ffc7fff8000", + "0x480a7ffd7fff8000", + "0x1104800180018000", + "0x3c", + "0x208b7fff7fff7ffe", + "0x400380007ffd7ffb", + "0x480a7ffc7fff8000", + "0x482680017ffd8000", + "0x1", + "0x208b7fff7fff7ffe", + "0x480680017fff8000", + "0x0", + "0x480680017fff8000", + "0x361458367e696363fbcc70777d07ebbd2394e89fd0adcaf147faccd1d294d60", + "0x480680017fff8000", + "0x53746f726167655772697465", + "0x400280007ffc7fff", + "0x400380017ffc7ffb", + "0x400280027ffc7ffd", + "0x400280037ffc7ffe", + "0x400380047ffc7ffd", + "0x480280067ffc8000", + "0x20680017fff7fff", + "0xd", + "0x480280057ffc8000", + "0x482680017ffc8000", + "0x7", + "0x480680017fff8000", + "0x0", + "0x480680017fff8000", + "0x0", + "0x480680017fff8000", + "0x0", + "0x10780017fff7fff", + "0x9", + "0x480280057ffc8000", + "0x482680017ffc8000", + "0x9", + "0x480680017fff8000", + "0x1", + "0x480280077ffc8000", + "0x480280087ffc8000", + "0x1104800180018000", + "0x3a", + "0x20680017fff7ffd", + "0xb", + "0x48127ff67fff8000", + "0x48127ff67fff8000", + "0x480680017fff8000", + "0x0", + "0x480680017fff8000", + "0x0", + "0x480680017fff8000", + "0x0", + "0x208b7fff7fff7ffe", + "0x48127ff67fff8000", + "0x48127ff67fff8000", + "0x480680017fff8000", + "0x1", + "0x48127ffb7fff8000", + "0x48127ffb7fff8000", + "0x208b7fff7fff7ffe", + "0x480680017fff8000", + "0x0", + "0x480680017fff8000", + "0x361458367e696363fbcc70777d07ebbd2394e89fd0adcaf147faccd1d294d60", + "0x480680017fff8000", + "0x53746f7261676552656164", + "0x400280007ffd7fff", + "0x400380017ffd7ffc", + "0x400280027ffd7ffd", + "0x400280037ffd7ffe", + "0x480280057ffd8000", + "0x20680017fff7fff", + "0xc", + "0x480280047ffd8000", + "0x482680017ffd8000", + "0x7", + "0x480680017fff8000", + "0x0", + "0x480680017fff8000", + "0x0", + "0x480280067ffd8000", + "0x10780017fff7fff", + "0x9", + "0x480280047ffd8000", + "0x482680017ffd8000", + "0x8", + "0x480680017fff8000", + "0x1", + "0x480280067ffd8000", + "0x480280077ffd8000", + "0x1104800180018000", + "0x16", + "0x48127ff67fff8000", + "0x48127ff67fff8000", + "0x48127ffb7fff8000", + "0x48127ffb7fff8000", + "0x48127ffb7fff8000", + "0x208b7fff7fff7ffe", + "0x20780017fff7ffb", + "0x9", + "0x480680017fff8000", + "0x0", + "0x480680017fff8000", + "0x0", + "0x480680017fff8000", + "0x0", + "0x208b7fff7fff7ffe", + "0x480680017fff8000", + "0x1", + "0x480a7ffc7fff8000", + "0x480a7ffd7fff8000", + "0x208b7fff7fff7ffe", + "0x20780017fff7ffb", + "0x8", + "0x480680017fff8000", + "0x0", + "0x480680017fff8000", + "0x0", + "0x480a7ffd7fff8000", + "0x208b7fff7fff7ffe", + "0x480680017fff8000", + "0x1", + "0x480a7ffc7fff8000", + "0x480a7ffd7fff8000", + "0x208b7fff7fff7ffe" + ], + "hints": [ + [ + 0, + [ + { + "TestLessThanOrEqual": { + "lhs": { + "Immediate": "0x0" + }, + "rhs": { + "Deref": { + "register": "FP", + "offset": -6 + } + }, + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 23, + [ + { + "AllocSegment": { + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 42, + [ + { + "TestLessThanOrEqual": { + "lhs": { + "Immediate": "0x247c" + }, + "rhs": { + "Deref": { + "register": "AP", + "offset": -22 + } + }, + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 63, + [ + { + "AllocSegment": { + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 81, + [ + { + "AllocSegment": { + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 96, + [ + { + "AllocSegment": { + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 110, + [ + { + "AllocSegment": { + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 125, + [ + { + "TestLessThanOrEqual": { + "lhs": { + "Immediate": "0x0" + }, + "rhs": { + "Deref": { + "register": "FP", + "offset": -6 + } + }, + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 142, + [ + { + "AllocSegment": { + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 161, + [ + { + "TestLessThanOrEqual": { + "lhs": { + "Immediate": "0x19f0" + }, + "rhs": { + "Deref": { + "register": "AP", + "offset": -7 + } + }, + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 181, + [ + { + "AllocSegment": { + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 204, + [ + { + "AllocSegment": { + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 219, + [ + { + "AllocSegment": { + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 285, + [ + { + "AllocSegment": { + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 342, + [ + { + "SystemCall": { + "system": { + "Deref": { + "register": "FP", + "offset": -4 + } + } + } + } + ] + ], + [ + 393, + [ + { + "SystemCall": { + "system": { + "Deref": { + "register": "FP", + "offset": -3 + } + } + } + } + ] + ] + ], + "entry_points_by_type": { + "EXTERNAL": [ + { + "selector": "0xf61980aeb34c9c7f823d576c10d00648fdab6c03a59b539ed0824be31da466", + "offset": 0, + "builtins": [ + "range_check" + ] + }, + { + "selector": "0x31341177714d81ad9ccd0c903211bc056a60e8af988d0fd918cc43874549653", + "offset": 125, + "builtins": [ + "range_check" + ] + } + ], + "L1_HANDLER": [], + "CONSTRUCTOR": [] + } +} \ No newline at end of file diff --git a/__mocks__/cairo/ethSigner/dummy2ForEth.sierra.json b/__mocks__/cairo/ethSigner/dummy2ForEth.sierra.json new file mode 100644 index 000000000..636c14296 --- /dev/null +++ b/__mocks__/cairo/ethSigner/dummy2ForEth.sierra.json @@ -0,0 +1,401 @@ +{ + "sierra_program": [ + "0x1", + "0x4", + "0x0", + "0x2", + "0x5", + "0x3", + "0xd2", + "0x2e", + "0x21", + "0x52616e6765436865636b", + "0x800000000000000100000000000000000000000000000000", + "0x66656c74323532", + "0x800000000000000700000000000000000000000000000000", + "0x4172726179", + "0x800000000000000300000000000000000000000000000001", + "0x1", + "0x456e756d", + "0x800000000000000300000000000000000000000000000003", + "0x0", + "0x90d0203c41ad646d024845257a6eceb2f8b59b29ce7420dd518053d2edeedc", + "0x2", + "0x537472756374", + "0x800000000000000f00000000000000000000000000000001", + "0x2ee1e2b1b89f8c495f200e4956278a4d47395fe262f27b52e5865c9524c08c3", + "0x800000000000000f00000000000000000000000000000002", + "0x4", + "0x16a4c8d7c05909052238a862d8cc3e7975bf05a07b3a69c6b28951083a6d672", + "0x6", + "0xcc5e86243f861d2d64b08c35db21013e773ac5cf10097946fe0011304886d5", + "0x5", + "0x7", + "0x101dc0399934cc08fa0d6f6f2daead4e4a38cabeea1c743e1fc28d2d6e58e99", + "0x753332", + "0x53746f7261676541646472657373", + "0x53746f726167654261736541646472657373", + "0x1de0f5d2d7ee3262c9db63a2dea1f31a9e09278da3cd3b722b140a1914cde67", + "0x800000000000000f00000000000000000000000000000003", + "0xd", + "0x26df226cc1a83370087596501c3dc970358a553eb14103cd561dffbb403629c", + "0xe", + "0x800000000000000700000000000000000000000000000003", + "0x3288d594b9a45d15bb2fcb7903f06cdb06b27f0ba88186ec4cfaa98307cb972", + "0x4e6f6e5a65726f", + "0x800000000000000700000000000000000000000000000001", + "0x426f78", + "0x29d7d57c04a880978e7b3689f6218e507f3be17588744b58dc17762447ad0e7", + "0x12", + "0x800000000000000700000000000000000000000000000002", + "0x10203be321c62a7bd4c060d69539c1fbe065baa9e253c74d2cc48be163e259", + "0x14", + "0x536e617073686f74", + "0x1baeba72e79e9db2587cf44fedb2f3700b2075a5e8e39a562584862c4b71f62", + "0x16", + "0x17", + "0x26c73abcf0ccff6eaa666b3daf213cb2d03b12a097438d9bf9cf4a945a35303", + "0x19", + "0x2689a5b5546eba08617652a64ee5b9e7be805d639760f2d6476528a4643b725", + "0x1a", + "0x4275696c74696e436f737473", + "0x53797374656d", + "0x9931c641b913035ae674b400b61a51476d506bbe8bba2ff8a6272790aba9e6", + "0x18", + "0x11c6d8087e00642489f92d2821ad6ebd6532ad1a3b6d12833da6d6810391511", + "0x4761734275696c74696e", + "0x6d", + "0x7265766f6b655f61705f747261636b696e67", + "0x77697468647261775f676173", + "0x6272616e63685f616c69676e", + "0x73746f72655f74656d70", + "0x66756e6374696f6e5f63616c6c", + "0x3", + "0x656e756d5f6d61746368", + "0x1f", + "0x7374727563745f6465636f6e737472756374", + "0x61727261795f736e617073686f745f706f705f66726f6e74", + "0x64726f70", + "0x61727261795f6e6577", + "0x66656c743235325f636f6e7374", + "0x496e70757420746f6f206c6f6e6720666f7220617267756d656e7473", + "0x61727261795f617070656e64", + "0x7374727563745f636f6e737472756374", + "0x656e756d5f696e6974", + "0x1e", + "0x20", + "0x1d", + "0x6765745f6275696c74696e5f636f737473", + "0x1c", + "0x77697468647261775f6761735f616c6c", + "0x1b", + "0x736e617073686f745f74616b65", + "0x4f7574206f6620676173", + "0x4661696c656420746f20646573657269616c697a6520706172616d202331", + "0x15", + "0x13", + "0x6a756d70", + "0x756e626f78", + "0x72656e616d65", + "0x647570", + "0x66656c743235325f69735f7a65726f", + "0x10", + "0x11", + "0x626f6f6c5f6e6f745f696d706c", + "0x456e7465722061206e616d65", + "0xf", + "0x73746f726167655f626173655f616464726573735f636f6e7374", + "0x361458367e696363fbcc70777d07ebbd2394e89fd0adcaf147faccd1d294d60", + "0x73746f726167655f616464726573735f66726f6d5f62617365", + "0x7533325f636f6e7374", + "0xa", + "0xb", + "0x73746f726167655f77726974655f73797363616c6c", + "0x9", + "0x8", + "0x73746f726167655f726561645f73797363616c6c", + "0x170", + "0xffffffffffffffff", + "0x59", + "0x4a", + "0xc", + "0x3c", + "0x35", + "0x22", + "0x23", + "0x24", + "0x25", + "0x26", + "0x27", + "0x28", + "0x29", + "0x2a", + "0x2b", + "0x2c", + "0x2d", + "0x2e", + "0x2f", + "0x30", + "0x31", + "0x32", + "0x33", + "0x34", + "0x36", + "0x37", + "0x38", + "0x39", + "0x3a", + "0xb2", + "0x7c", + "0xa5", + "0x9e", + "0xc7", + "0xcc", + "0xd6", + "0x3b", + "0xe4", + "0x3d", + "0x3e", + "0xe9", + "0x3f", + "0x40", + "0x41", + "0x42", + "0xfb", + "0x43", + "0x44", + "0x45", + "0x46", + "0x47", + "0x48", + "0x10e", + "0x49", + "0x4b", + "0x4c", + "0x4d", + "0x4e", + "0x4f", + "0x50", + "0x51", + "0x52", + "0x12b", + "0x53", + "0x54", + "0x130", + "0x55", + "0x56", + "0x57", + "0x13a", + "0x58", + "0x5a", + "0x5b", + "0x5c", + "0x5d", + "0x5e", + "0x14e", + "0x5f", + "0x60", + "0x153", + "0x61", + "0x62", + "0x63", + "0x64", + "0x15e", + "0x65", + "0x66", + "0x67", + "0x68", + "0x69", + "0x16a", + "0x6a", + "0x6b", + "0x6c", + "0xc0", + "0xdd", + "0x114", + "0x119", + "0x11e", + "0x141", + "0x158", + "0x164", + "0xe08", + "0x120a0e0d11070f0a100d0f0a0e0d0c0707070b0a0908070706050403020100", + "0xd041a041904180c071107170a090816071507140a09080c0713070f0a090d", + "0x707232211071107210a200816071f071e0a090811071d070f0a1c0d1b0a0e", + "0xd0c07232a16072907280a090807070f0a270d11072607250a200807072324", + "0x3107300a090811072f070f0a1c0d1d072e0a100d2d070f0a270d2c072b0a27", + "0xa3b0a3a0a3938023711070707360a200816073507340a0908023304321607", + "0x707432c070743070707422d0707414007073f0a07073c0c3e073d2d07073c", + "0xc491607074813070748070707470707073c460c0745070707440707074326", + "0x707481d0707480a4f4e07073c0a4d4a07073c4c07073c4b07073c070c4a07", + "0xc49350707482d0707480c0707430c070751310707435007073f3e3e073d2f", + "0x3e073d2f0707432f070751530c07452d07074311070743520c07450a0c4a07", + "0x2c07073c0a0c55070c49153e073d0c07073c07070751290707415407073f11", + "0x70c4907070758070707575507073f070c55070c49110707480a565507073c", + "0x7435b07073c070c5b070c490a5a07070759070c40070c494007073c0a0c40", + "0x707415007073c070c50070c495e0c07455b07073f0a5d0a0c5b070c495c07", + "0x610c0760163e073d0a0c50070c49310707481f0707415f07073f133e073d2f", + "0xc67070c496707073c0a0c67070c490a666507073c6407073c0a0c07630a62", + "0x1d0707435f07073c0a0c5f070c491f070748150707416807073f683e073d07", + "0x7073c673e073d070c3e070c493e07073c0a0c3e070c490a69070c5f070c49", + "0x7483e07073f070c68070c496807073c0a0c68070c49150707486707073f54", + "0x15110c6b0c070a0c070a0a6b070a0a0a6a070c54070c490a0c54070c492907", + "0x1107150a67680c6b073e07110a3e076b073e073e0a0a6b070a0c0a16130c6c", + "0x680a6e076b076807160a0a6b070a0c0a65076d64076b0c6707130a11076b07", + "0xa0a6b071f07640a0a6b071d07670a0a6b070a0c0a5f07311f1d0c6b0c6e07", + "0xc5f0a5c076b075c071f0a5c076b070a1d0a5b076b070a6e0a0a6b07640765", + "0xa54076b072907260a29076b0726550c5c0a55076b070a5b0a26076b075c5b", + "0x54076b075407540a0c076b070c07290a15076b071507550a11076b07110715", + "0x72c072d0a2c076b070a2c0a0a6b075f07670a0a6b070a0c0a540c15111107", + "0x50076b070a2f0a0a6b070a0c0a312f0c6f352d0c6b0c2c15113e350a2c076b", + "0x76b0764071f0a0c076b070c07290a35076b073507550a4e076b075007310a", + "0x704b076b0c40074e0a2d076b072d07150a404a4c3e6b07644e0c3511500a64", + "0x73720c6b0771074a0a71076b070a6e0a0a6b074b074c0a0a6b070a0c0a0007", + "0x76076b077507710a75076b077407000a74076b0773074b0a0a6b077207400a", + "0x76b077607540a4a076b074a07290a4c076b074c07550a2d076b072d07150a", + "0x550a2d076b072d07150a77076b070007260a0a6b070a0c0a764a4c2d110776", + "0xa0c0a774a4c2d110777076b077707540a4a076b074a07290a4c076b074c07", + "0x76b0779071f0a79076b070a720a78076b070a6e0a0a6b076407650a0a6b07", + "0x77c07260a7c076b077a7b0c5c0a7b076b070a5b0a7a076b0779780c5f0a79", + "0x7d07540a0c076b070c07290a31076b073107550a2f076b072f07150a7d076b", + "0xa0a6b076807740a0a6b076507730a0a6b070a0c0a7d0c312f11077d076b07", + "0xa80076b077f7e0c5f0a7f076b077f071f0a7f076b070a750a7e076b070a6e", + "0x11076b071107150a83076b078207260a82076b0780810c5c0a81076b070a5b", + "0xa830c1511110783076b078307540a0c076b070c07290a15076b071507550a", + "0x784071f0a84076b070a720a70076b070a6e0a0a6b073e07740a0a6b070a0c", + "0x7260a87076b0785860c5c0a86076b070a5b0a85076b0784700c5f0a84076b", + "0x540a0c076b070c07290a16076b071607550a13076b071307150a88076b0787", + "0x130c8915110c6b0c070a0c070a0a6b070a0a0a880c1613110788076b078807", + "0x670c6b0c6807680a11076b071107150a68076b073e07160a0a6b070a0c0a16", + "0x6e076b070a6e0a0a6b076407640a0a6b076707670a0a6b070a0c0a65078a64", + "0x5f076b070a5b0a1f076b071d6e0c5f0a1d076b071d071f0a1d076b070a1d0a", + "0x6b071507550a11076b071107150a5c076b075b07260a5b076b071f5f0c5c0a", + "0xa0a6b070a0c0a5c0c151111075c076b075c07540a0c076b070c07290a1507", + "0x550c6b0c2615113e350a26076b0726072d0a26076b070a2c0a0a6b07650767", + "0x73507760a35076b072d07310a2d076b070a2f0a0a6b070a0c0a2c540c8b29", + "0x293e780a0c076b070c07290a29076b072907550a0a6b072f07770a312f0c6b", + "0x70a0c0a40078c4a076b0c4c07790a55076b075507150a4c4e503e6b07310c", + "0x77107650a72710c6b0700077b0a00076b074a077a0a4b076b070a6e0a0a6b", + "0x7730a74730c6b074b720c7d0a4b076b074b077c0a72076b0772071f0a0a6b", + "0x7000a77076b0776074b0a0a6b077507400a76750c6b0773074a0a0a6b0774", + "0x290a50076b075007550a55076b075507150a79076b077807710a78076b0777", + "0x74007260a0a6b070a0c0a794e5055110779076b077907540a4e076b074e07", + "0x7a07540a4e076b074e07290a50076b075007550a55076b075507150a7a076b", + "0xa7c076b070a720a7b076b070a6e0a0a6b070a0c0a7a4e505511077a076b07", + "0x76b077d7e0c5c0a7e076b070a5b0a7d076b077c7b0c5f0a7c076b077c071f", + "0x6b070c07290a2c076b072c07550a54076b075407150a80076b077f07260a7f", + "0x6e0a0a6b073e07740a0a6b070a0c0a800c2c54110780076b078007540a0c07", + "0x5b0a83076b0782810c5f0a82076b0782071f0a82076b070a720a81076b070a", + "0xa13076b071307150a85076b078407260a84076b0783700c5c0a70076b070a", + "0x160a850c1613110785076b078507540a0c076b070c07290a16076b07160755", + "0x76b073e077e0a0a6b070a0c0a11078d3e0c0c6b0c0707680a07076b070a07", + "0x820a0a6b070a0c0a0a8e070a810a16076b071507800a13076b070c077f0a15", + "0x4b0a16076b076707800a13076b0711077f0a67076b076807830a68076b070a", + "0xa6b070a0c0a6e078f65076b0c1607700a64076b0764073e0a64076b071307", + "0x76b0764073e0a5f076b071f07860a1f076b071d07850a1d076b076507840a", + "0x6b070a820a0a6b076e07730a0a6b070a0c0a5f640c075f076b075f07870a64", + "0xa5c640c075c076b075c07870a64076b0764073e0a5c076b075b07880a5b07", + "0x13076b070a820a0a6b070a0c0a1507910a6b0c11076f0a113e0c6b073e0790", + "0x7950a0a6b070a0c0a0a94070a810a68076b071607930a16076b071307920a", + "0x6807970a68076b076407930a64076b076707960a67076b070a820a0a6b0715", + "0x730a0a6b070a0c0a1d07996e076b0c6507980a65076b076507930a65076b07", + "0x6b070a9a0a1f076b070a6e0a0a6b070c07770a0a6b073e07650a0a6b076e07", + "0x5b5c0c5c0a5c076b070a5b0a5b076b075f1f0c5f0a5f076b075f071f0a5f07", + "0x79c0a07076b070707290a0a076b070a07550a55076b0726079b0a26076b07", + "0x29076b070c079d0a0a6b071d07730a0a6b070a0c0a55070a3e0755076b0755", + "0x3e29070a119e0a3e076b073e071f0a07076b070707290a0a076b070a07550a", + "0x310c6b073507a10a0a6b070a0c0a2f07a035076b0c2d079f0a2d2c543e6b07", + "0x76b074e4c0c6d0a4c076b073107310a4e076b070a820a0a6b075007730a50", + "0x6b0740079c0a2c076b072c07290a54076b075407550a40076b074a07a20a4a", + "0x290a54076b075407550a4b076b072f079b0a0a6b070a0c0a402c543e074007", + "0xa07550a3e076b070c079d0a4b2c543e074b076b074b079c0a2c076b072c07", + "0x850a1315113e071315113e6b073e070a3ea30a07076b070707290a0a076b07", + "0x73e076b073e077c0a11076b070a820a3e076b070c070c5f0a0c076b070a07", + "0x6b071307a70a13076b070aa60a15076b071107a50a11076b070aa40a113e0c", + "0xa0c0a6564673eaa68160c6b0c3e1513070a15a90a15076b071507a80a1307", + "0x76807290a1f076b071607550a1d076b076e07ab0a6e076b070a820a0a6b07", + "0x5c076b076507ae0a0a6b070a0c0a0aad070a810a5b076b071d07ac0a5f076b", + "0x76b075b07af0a5b076b075c07ac0a5f076b076407290a1f076b076707550a", + "0x540c0c6c0a54076b075507b20a0a6b070a0c0a2907b155076b0c2607b00a26", + "0x7b40a5f076b075f07290a1f076b071f07550a2d076b072c07b30a2c076b07", + "0x35076b072907b60a0a6b070c07b50a0a6b070a0c0a2d5f1f3e072d076b072d", + "0xb50a355f1f3e0735076b073507b40a5f076b075f07290a1f076b071f07550a", + "0x1507a70a15076b070aa60a11076b073e07a50a3e076b070aa40a0a6b070c07", + "0xa6564673eb86816133e6b0c1115070a11b70a11076b071107a80a15076b07", + "0xba0a1f076b071607290a1d076b071307550a6e076b076807b90a0a6b070a0c", + "0x76707550a5b076b076507bc0a0a6b070a0c0a0abb070a810a5f076b076e07", + "0x1d07550a5c076b075f07bd0a5f076b075b07ba0a1f076b076407290a1d076b", + "0x6b0c0a07bf0a5c1f1d3e075c076b075c07be0a1f076b071f07290a1d076b07", + "0x1107c30a11076b073e07c20a3e076b070707c10a0a6b070a0c0a0c07c00707", + "0xc40a13076b070c150c5c0a15076b070a5b0a0a6b070a0c0a11070711076b07", + "0xa0c0a0c07c607076b0c0a07c50a16070716076b071607c30a16076b071307", + "0xa11070711076b071107be0a11076b073e07c80a3e076b070707c70a0a6b07", + "0xbe0a16076b071307c90a13076b070c150c5c0a15076b070a5b0a0a6b070a0c", + "0x112d4c4b0a110a3e0c070a4a4c4b0a112d4c4b0a116416070716076b071607", + "0x3ecb3e0c070a504c4b3e072f4c4b11ca0a402d0c2d07c33e0c070a4a4c4b0a", + "0x70a5f4c4b3e071d4c4b11cd070a110c0c0c070ccc0c070a544c4b3e2f4c4b", + "0xd10a54073e07d00a68076707cf0c070a544c4b3e1d4c4b3ece3e0c" + ], + "sierra_program_debug_info": { + "type_names": [], + "libfunc_names": [], + "user_func_names": [] + }, + "contract_class_version": "0.1.0", + "entry_points_by_type": { + "EXTERNAL": [ + { + "selector": "0xf61980aeb34c9c7f823d576c10d00648fdab6c03a59b539ed0824be31da466", + "function_idx": 0 + }, + { + "selector": "0x31341177714d81ad9ccd0c903211bc056a60e8af988d0fd918cc43874549653", + "function_idx": 1 + } + ], + "L1_HANDLER": [], + "CONSTRUCTOR": [] + }, + "abi": [ + { + "type": "impl", + "name": "HelloStarknetImpl", + "interface_name": "hello::hello::IHelloStarknet" + }, + { + "type": "interface", + "name": "hello::hello::IHelloStarknet", + "items": [ + { + "type": "function", + "name": "set_name", + "inputs": [ + { + "name": "name1", + "type": "core::felt252" + } + ], + "outputs": [], + "state_mutability": "external" + }, + { + "type": "function", + "name": "get_name", + "inputs": [], + "outputs": [ + { + "type": "core::felt252" + } + ], + "state_mutability": "view" + } + ] + }, + { + "type": "event", + "name": "hello::hello::HelloStarknet::Event", + "kind": "enum", + "variants": [] + } + ] +} diff --git a/__mocks__/cairo/ethSigner/openzeppelin_EthAccount090.casm b/__mocks__/cairo/ethSigner/openzeppelin_EthAccount090.casm new file mode 100644 index 000000000..5a6694404 --- /dev/null +++ b/__mocks__/cairo/ethSigner/openzeppelin_EthAccount090.casm @@ -0,0 +1,11683 @@ +{ + "prime": "0x800000000000011000000000000000000000000000000000000000000000001", + "compiler_version": "2.5.3", + "bytecode": [ + "0xa0680017fff8000", + "0x7", + "0x482680017ffa8000", + "0x100000000000000000000000000000000", + "0x400280007ff97fff", + "0x10780017fff7fff", + "0x69", + "0x4825800180007ffa", + "0x0", + "0x400280007ff97fff", + "0x482680017ff98000", + "0x1", + "0x480a7ffc7fff8000", + "0x480a7ffd7fff8000", + "0x1104800180018000", + "0x75c", + "0x20680017fff7ffe", + "0x50", + "0x48307ffc80007ffd", + "0x20680017fff7fff", + "0x4", + "0x10780017fff7fff", + "0x10", + "0x40780017fff7fff", + "0x1", + "0x480680017fff8000", + "0x496e70757420746f6f206c6f6e6720666f7220617267756d656e7473", + "0x400080007ffe7fff", + "0x48127ff87fff8000", + "0x48127fdc7fff8000", + "0x480a7ffb7fff8000", + "0x480680017fff8000", + "0x1", + "0x48127ffa7fff8000", + "0x482480017ff98000", + "0x1", + "0x208b7fff7fff7ffe", + "0x1104800180018000", + "0x1cf8", + "0x482480017fff8000", + "0x1cf7", + "0x480080007fff8000", + "0xa0680017fff8000", + "0x9", + "0x4824800180007fda", + "0xeede", + "0x482480017fff8000", + "0x100000000000000000000000000000000", + "0x400080007ff37fff", + "0x10780017fff7fff", + "0x20", + "0x4824800180007fda", + "0xeede", + "0x400080007ff47fff", + "0x48127fff7fff8000", + "0x480a7ffb7fff8000", + "0x48127ff67fff8000", + "0x1104800180018000", + "0x76a", + "0x482480017f298000", + "0x1", + "0x20680017fff7ffc", + "0xc", + "0x40780017fff7fff", + "0x1", + "0x48127ffe7fff8000", + "0x48127ff87fff8000", + "0x48127ff87fff8000", + "0x480680017fff8000", + "0x0", + "0x48127ffb7fff8000", + "0x48127ffa7fff8000", + "0x208b7fff7fff7ffe", + "0x48127fff7fff8000", + "0x48127ff97fff8000", + "0x48127ff97fff8000", + "0x480680017fff8000", + "0x1", + "0x48127ff97fff8000", + "0x48127ff97fff8000", + "0x208b7fff7fff7ffe", + "0x40780017fff7fff", + "0x1", + "0x480680017fff8000", + "0x4f7574206f6620676173", + "0x400080007ffe7fff", + "0x482480017ff18000", + "0x1", + "0x48127fd57fff8000", + "0x480a7ffb7fff8000", + "0x480680017fff8000", + "0x1", + "0x48127ffa7fff8000", + "0x482480017ff98000", + "0x1", + "0x208b7fff7fff7ffe", + "0x40780017fff7fff", + "0x1", + "0x480680017fff8000", + "0x4661696c656420746f20646573657269616c697a6520706172616d202331", + "0x400080007ffe7fff", + "0x48127ff97fff8000", + "0x48127fdd7fff8000", + "0x480a7ffb7fff8000", + "0x480680017fff8000", + "0x1", + "0x48127ffa7fff8000", + "0x482480017ff98000", + "0x1", + "0x208b7fff7fff7ffe", + "0x40780017fff7fff", + "0x1", + "0x480680017fff8000", + "0x4f7574206f6620676173", + "0x400080007ffe7fff", + "0x482680017ff98000", + "0x1", + "0x480a7ffa7fff8000", + "0x480a7ffb7fff8000", + "0x480680017fff8000", + "0x1", + "0x48127ffa7fff8000", + "0x482480017ff98000", + "0x1", + "0x208b7fff7fff7ffe", + "0x40780017fff7fff", + "0x1", + "0xa0680017fff8000", + "0x7", + "0x482680017ffa8000", + "0x100000000000000000000000000000000", + "0x400280007ff97fff", + "0x10780017fff7fff", + "0x88", + "0x4825800180007ffa", + "0x0", + "0x400280007ff97fff", + "0x482680017ff98000", + "0x1", + "0x48127ffe7fff8000", + "0x480a7ffc7fff8000", + "0x480a7ffd7fff8000", + "0x1104800180018000", + "0x73b", + "0x20680017fff7ffa", + "0x74", + "0x20680017fff7ffd", + "0x64", + "0x48307ffb80007ffc", + "0x20680017fff7fff", + "0x4", + "0x10780017fff7fff", + "0x10", + "0x40780017fff7fff", + "0x1", + "0x480680017fff8000", + "0x496e70757420746f6f206c6f6e6720666f7220617267756d656e7473", + "0x400080007ffe7fff", + "0x48127ff57fff8000", + "0x48127ff57fff8000", + "0x480a7ffb7fff8000", + "0x480680017fff8000", + "0x1", + "0x48127ffa7fff8000", + "0x482480017ff98000", + "0x1", + "0x208b7fff7fff7ffe", + "0x1104800180018000", + "0x1c76", + "0x482480017fff8000", + "0x1c75", + "0x480080007fff8000", + "0xa0680017fff8000", + "0x9", + "0x4824800180007ff3", + "0xb978", + "0x482480017fff8000", + "0x100000000000000000000000000000000", + "0x400080007ff07fff", + "0x10780017fff7fff", + "0x34", + "0x4824800180007ff3", + "0xb978", + "0x400080007ff17fff", + "0x482480017ff18000", + "0x1", + "0x48127ffe7fff8000", + "0x480a7ffb7fff8000", + "0x48127ff47fff8000", + "0x48127ff47fff8000", + "0x1104800180018000", + "0x73b", + "0x40137ffc7fff8000", + "0x20680017fff7ffd", + "0x1e", + "0x40780017fff7fff", + "0x1", + "0x48127ff97fff8000", + "0x48127ff97fff8000", + "0x48127ffb7fff8000", + "0x48127ffb7fff8000", + "0x48127ffb7fff8000", + "0x48127ffa7fff8000", + "0x1104800180018000", + "0x738", + "0x20680017fff7ffd", + "0xa", + "0x48127ffb7fff8000", + "0x48127ffb7fff8000", + "0x480a80007fff8000", + "0x480680017fff8000", + "0x0", + "0x48127ffa7fff8000", + "0x48127ffa7fff8000", + "0x208b7fff7fff7ffe", + "0x48127ffb7fff8000", + "0x48127ffb7fff8000", + "0x480a80007fff8000", + "0x480680017fff8000", + "0x1", + "0x48127ffa7fff8000", + "0x48127ffa7fff8000", + "0x208b7fff7fff7ffe", + "0x48127ffa7fff8000", + "0x48127ffa7fff8000", + "0x480a80007fff8000", + "0x480680017fff8000", + "0x1", + "0x48127ffa7fff8000", + "0x48127ffa7fff8000", + "0x208b7fff7fff7ffe", + "0x40780017fff7fff", + "0x1", + "0x480680017fff8000", + "0x4f7574206f6620676173", + "0x400080007ffe7fff", + "0x482480017fee8000", + "0x1", + "0x48127fee7fff8000", + "0x480a7ffb7fff8000", + "0x480680017fff8000", + "0x1", + "0x48127ffa7fff8000", + "0x482480017ff98000", + "0x1", + "0x208b7fff7fff7ffe", + "0x40780017fff7fff", + "0x1", + "0x480680017fff8000", + "0x4661696c656420746f20646573657269616c697a6520706172616d202331", + "0x400080007ffe7fff", + "0x48127ff67fff8000", + "0x48127ff67fff8000", + "0x480a7ffb7fff8000", + "0x480680017fff8000", + "0x1", + "0x48127ffa7fff8000", + "0x482480017ff98000", + "0x1", + "0x208b7fff7fff7ffe", + "0x48127ff87fff8000", + "0x48127ff87fff8000", + "0x480a7ffb7fff8000", + "0x480680017fff8000", + "0x1", + "0x48127ffa7fff8000", + "0x48127ffa7fff8000", + "0x208b7fff7fff7ffe", + "0x40780017fff7fff", + "0x1", + "0x480680017fff8000", + "0x4f7574206f6620676173", + "0x400080007ffe7fff", + "0x482680017ff98000", + "0x1", + "0x480a7ffa7fff8000", + "0x480a7ffb7fff8000", + "0x480680017fff8000", + "0x1", + "0x48127ffa7fff8000", + "0x482480017ff98000", + "0x1", + "0x208b7fff7fff7ffe", + "0xa0680017fff8000", + "0x7", + "0x482680017ffa8000", + "0x100000000000000000000000000000000", + "0x400280007ff97fff", + "0x10780017fff7fff", + "0x7a", + "0x4825800180007ffa", + "0x0", + "0x400280007ff97fff", + "0x482680017ff98000", + "0x1", + "0x48127ffe7fff8000", + "0x480a7ffc7fff8000", + "0x480a7ffd7fff8000", + "0x1104800180018000", + "0x69f", + "0x20680017fff7ffa", + "0x66", + "0x20680017fff7ffd", + "0x56", + "0x48307ffb80007ffc", + "0x20680017fff7fff", + "0x4", + "0x10780017fff7fff", + "0x10", + "0x40780017fff7fff", + "0x1", + "0x480680017fff8000", + "0x496e70757420746f6f206c6f6e6720666f7220617267756d656e7473", + "0x400080007ffe7fff", + "0x48127ff57fff8000", + "0x48127ff57fff8000", + "0x480a7ffb7fff8000", + "0x480680017fff8000", + "0x1", + "0x48127ffa7fff8000", + "0x482480017ff98000", + "0x1", + "0x208b7fff7fff7ffe", + "0x1104800180018000", + "0x1bda", + "0x482480017fff8000", + "0x1bd9", + "0x480080007fff8000", + "0xa0680017fff8000", + "0x9", + "0x4824800180007ff3", + "0x58d9a", + "0x482480017fff8000", + "0x100000000000000000000000000000000", + "0x400080007ff07fff", + "0x10780017fff7fff", + "0x26", + "0x4824800180007ff3", + "0x58d9a", + "0x400080007ff17fff", + "0x482480017ff18000", + "0x1", + "0x48127ffe7fff8000", + "0x480a7ffb7fff8000", + "0x48127ff47fff8000", + "0x48127ff47fff8000", + "0x1104800180018000", + "0x6b7", + "0x20680017fff7ffd", + "0x11", + "0x40780017fff7fff", + "0x1", + "0x48127ffe7fff8000", + "0x48127ffe7fff8000", + "0x48127ffd7fff8000", + "0x1104800180018000", + "0x6b6", + "0x48127ff27fff8000", + "0x48127ff27fff8000", + "0x48127ff27fff8000", + "0x480680017fff8000", + "0x0", + "0x48127ffa7fff8000", + "0x48127ffa7fff8000", + "0x208b7fff7fff7ffe", + "0x48127ffa7fff8000", + "0x48127ffa7fff8000", + "0x48127ffa7fff8000", + "0x480680017fff8000", + "0x1", + "0x48127ffa7fff8000", + "0x48127ffa7fff8000", + "0x208b7fff7fff7ffe", + "0x40780017fff7fff", + "0x1", + "0x480680017fff8000", + "0x4f7574206f6620676173", + "0x400080007ffe7fff", + "0x482480017fee8000", + "0x1", + "0x48127fee7fff8000", + "0x480a7ffb7fff8000", + "0x480680017fff8000", + "0x1", + "0x48127ffa7fff8000", + "0x482480017ff98000", + "0x1", + "0x208b7fff7fff7ffe", + "0x40780017fff7fff", + "0x1", + "0x480680017fff8000", + "0x4661696c656420746f20646573657269616c697a6520706172616d202331", + "0x400080007ffe7fff", + "0x48127ff67fff8000", + "0x48127ff67fff8000", + "0x480a7ffb7fff8000", + "0x480680017fff8000", + "0x1", + "0x48127ffa7fff8000", + "0x482480017ff98000", + "0x1", + "0x208b7fff7fff7ffe", + "0x48127ff87fff8000", + "0x48127ff87fff8000", + "0x480a7ffb7fff8000", + "0x480680017fff8000", + "0x1", + "0x48127ffa7fff8000", + "0x48127ffa7fff8000", + "0x208b7fff7fff7ffe", + "0x40780017fff7fff", + "0x1", + "0x480680017fff8000", + "0x4f7574206f6620676173", + "0x400080007ffe7fff", + "0x482680017ff98000", + "0x1", + "0x480a7ffa7fff8000", + "0x480a7ffb7fff8000", + "0x480680017fff8000", + "0x1", + "0x48127ffa7fff8000", + "0x482480017ff98000", + "0x1", + "0x208b7fff7fff7ffe", + "0x40780017fff7fff", + "0x1", + "0xa0680017fff8000", + "0x7", + "0x482680017ffa8000", + "0x100000000000000000000000000000000", + "0x400280007ff97fff", + "0x10780017fff7fff", + "0x91", + "0x4825800180007ffa", + "0x0", + "0x400280007ff97fff", + "0x480a7ffc7fff8000", + "0x480a7ffd7fff8000", + "0x1104800180018000", + "0x667", + "0x482680017ff98000", + "0x1", + "0x20680017fff7ffd", + "0x78", + "0x48127fff7fff8000", + "0x48127fee7fff8000", + "0x48127ff97fff8000", + "0x48127ff97fff8000", + "0x40137ffa7fff8000", + "0x1104800180018000", + "0x680", + "0x20680017fff7ffa", + "0x67", + "0x20680017fff7ffd", + "0x57", + "0x48307ffb80007ffc", + "0x20680017fff7fff", + "0x4", + "0x10780017fff7fff", + "0x10", + "0x40780017fff7fff", + "0x1", + "0x480680017fff8000", + "0x496e70757420746f6f206c6f6e6720666f7220617267756d656e7473", + "0x400080007ffe7fff", + "0x48127ff57fff8000", + "0x48127ff57fff8000", + "0x480a7ffb7fff8000", + "0x480680017fff8000", + "0x1", + "0x48127ffa7fff8000", + "0x482480017ff98000", + "0x1", + "0x208b7fff7fff7ffe", + "0x1104800180018000", + "0x1b42", + "0x482480017fff8000", + "0x1b41", + "0x480080007fff8000", + "0xa0680017fff8000", + "0x9", + "0x4824800180007ff3", + "0x561da", + "0x482480017fff8000", + "0x100000000000000000000000000000000", + "0x400080007ff07fff", + "0x10780017fff7fff", + "0x27", + "0x4824800180007ff3", + "0x561da", + "0x400080007ff17fff", + "0x482480017ff18000", + "0x1", + "0x48127ffe7fff8000", + "0x480a7ffb7fff8000", + "0x480a80007fff8000", + "0x48127ff37fff8000", + "0x48127ff37fff8000", + "0x1104800180018000", + "0x67f", + "0x20680017fff7ffd", + "0x11", + "0x40780017fff7fff", + "0x1", + "0x48127ffe7fff8000", + "0x48127ffe7fff8000", + "0x48127ffd7fff8000", + "0x1104800180018000", + "0x61d", + "0x48127ff27fff8000", + "0x48127ff27fff8000", + "0x48127ff27fff8000", + "0x480680017fff8000", + "0x0", + "0x48127ffa7fff8000", + "0x48127ffa7fff8000", + "0x208b7fff7fff7ffe", + "0x48127ffa7fff8000", + "0x48127ffa7fff8000", + "0x48127ffa7fff8000", + "0x480680017fff8000", + "0x1", + "0x48127ffa7fff8000", + "0x48127ffa7fff8000", + "0x208b7fff7fff7ffe", + "0x40780017fff7fff", + "0x1", + "0x480680017fff8000", + "0x4f7574206f6620676173", + "0x400080007ffe7fff", + "0x482480017fee8000", + "0x1", + "0x48127fee7fff8000", + "0x480a7ffb7fff8000", + "0x480680017fff8000", + "0x1", + "0x48127ffa7fff8000", + "0x482480017ff98000", + "0x1", + "0x208b7fff7fff7ffe", + "0x40780017fff7fff", + "0x1", + "0x480680017fff8000", + "0x4661696c656420746f20646573657269616c697a6520706172616d202332", + "0x400080007ffe7fff", + "0x48127ff67fff8000", + "0x48127ff67fff8000", + "0x480a7ffb7fff8000", + "0x480680017fff8000", + "0x1", + "0x48127ffa7fff8000", + "0x482480017ff98000", + "0x1", + "0x208b7fff7fff7ffe", + "0x48127ff87fff8000", + "0x48127ff87fff8000", + "0x480a7ffb7fff8000", + "0x480680017fff8000", + "0x1", + "0x48127ffa7fff8000", + "0x48127ffa7fff8000", + "0x208b7fff7fff7ffe", + "0x40780017fff7fff", + "0x1", + "0x480680017fff8000", + "0x4661696c656420746f20646573657269616c697a6520706172616d202331", + "0x400080007ffe7fff", + "0x48127ffd7fff8000", + "0x48127fec7fff8000", + "0x480a7ffb7fff8000", + "0x480680017fff8000", + "0x1", + "0x48127ffa7fff8000", + "0x482480017ff98000", + "0x1", + "0x208b7fff7fff7ffe", + "0x40780017fff7fff", + "0x1", + "0x480680017fff8000", + "0x4f7574206f6620676173", + "0x400080007ffe7fff", + "0x482680017ff98000", + "0x1", + "0x480a7ffa7fff8000", + "0x480a7ffb7fff8000", + "0x480680017fff8000", + "0x1", + "0x48127ffa7fff8000", + "0x482480017ff98000", + "0x1", + "0x208b7fff7fff7ffe", + "0x40780017fff7fff", + "0x1", + "0xa0680017fff8000", + "0x7", + "0x482680017ffa8000", + "0x100000000000000000000000000000000", + "0x400280007ff97fff", + "0x10780017fff7fff", + "0x91", + "0x4825800180007ffa", + "0x0", + "0x400280007ff97fff", + "0x480a7ffc7fff8000", + "0x480a7ffd7fff8000", + "0x1104800180018000", + "0x5c0", + "0x482680017ff98000", + "0x1", + "0x20680017fff7ffd", + "0x78", + "0x48127fff7fff8000", + "0x48127fee7fff8000", + "0x48127ff97fff8000", + "0x48127ff97fff8000", + "0x40137ffa7fff8000", + "0x1104800180018000", + "0x5d9", + "0x20680017fff7ffa", + "0x67", + "0x20680017fff7ffd", + "0x57", + "0x48307ffb80007ffc", + "0x20680017fff7fff", + "0x4", + "0x10780017fff7fff", + "0x10", + "0x40780017fff7fff", + "0x1", + "0x480680017fff8000", + "0x496e70757420746f6f206c6f6e6720666f7220617267756d656e7473", + "0x400080007ffe7fff", + "0x48127ff57fff8000", + "0x48127ff57fff8000", + "0x480a7ffb7fff8000", + "0x480680017fff8000", + "0x1", + "0x48127ffa7fff8000", + "0x482480017ff98000", + "0x1", + "0x208b7fff7fff7ffe", + "0x1104800180018000", + "0x1a9b", + "0x482480017fff8000", + "0x1a9a", + "0x480080007fff8000", + "0xa0680017fff8000", + "0x9", + "0x4824800180007ff3", + "0x561da", + "0x482480017fff8000", + "0x100000000000000000000000000000000", + "0x400080007ff07fff", + "0x10780017fff7fff", + "0x27", + "0x4824800180007ff3", + "0x561da", + "0x400080007ff17fff", + "0x482480017ff18000", + "0x1", + "0x48127ffe7fff8000", + "0x480a7ffb7fff8000", + "0x480a80007fff8000", + "0x48127ff37fff8000", + "0x48127ff37fff8000", + "0x1104800180018000", + "0x5e3", + "0x20680017fff7ffd", + "0x11", + "0x40780017fff7fff", + "0x1", + "0x48127ffe7fff8000", + "0x48127ffe7fff8000", + "0x48127ffd7fff8000", + "0x1104800180018000", + "0x576", + "0x48127ff27fff8000", + "0x48127ff27fff8000", + "0x48127ff27fff8000", + "0x480680017fff8000", + "0x0", + "0x48127ffa7fff8000", + "0x48127ffa7fff8000", + "0x208b7fff7fff7ffe", + "0x48127ffa7fff8000", + "0x48127ffa7fff8000", + "0x48127ffa7fff8000", + "0x480680017fff8000", + "0x1", + "0x48127ffa7fff8000", + "0x48127ffa7fff8000", + "0x208b7fff7fff7ffe", + "0x40780017fff7fff", + "0x1", + "0x480680017fff8000", + "0x4f7574206f6620676173", + "0x400080007ffe7fff", + "0x482480017fee8000", + "0x1", + "0x48127fee7fff8000", + "0x480a7ffb7fff8000", + "0x480680017fff8000", + "0x1", + "0x48127ffa7fff8000", + "0x482480017ff98000", + "0x1", + "0x208b7fff7fff7ffe", + "0x40780017fff7fff", + "0x1", + "0x480680017fff8000", + "0x4661696c656420746f20646573657269616c697a6520706172616d202332", + "0x400080007ffe7fff", + "0x48127ff67fff8000", + "0x48127ff67fff8000", + "0x480a7ffb7fff8000", + "0x480680017fff8000", + "0x1", + "0x48127ffa7fff8000", + "0x482480017ff98000", + "0x1", + "0x208b7fff7fff7ffe", + "0x48127ff87fff8000", + "0x48127ff87fff8000", + "0x480a7ffb7fff8000", + "0x480680017fff8000", + "0x1", + "0x48127ffa7fff8000", + "0x48127ffa7fff8000", + "0x208b7fff7fff7ffe", + "0x40780017fff7fff", + "0x1", + "0x480680017fff8000", + "0x4661696c656420746f20646573657269616c697a6520706172616d202331", + "0x400080007ffe7fff", + "0x48127ffd7fff8000", + "0x48127fec7fff8000", + "0x480a7ffb7fff8000", + "0x480680017fff8000", + "0x1", + "0x48127ffa7fff8000", + "0x482480017ff98000", + "0x1", + "0x208b7fff7fff7ffe", + "0x40780017fff7fff", + "0x1", + "0x480680017fff8000", + "0x4f7574206f6620676173", + "0x400080007ffe7fff", + "0x482680017ff98000", + "0x1", + "0x480a7ffa7fff8000", + "0x480a7ffb7fff8000", + "0x480680017fff8000", + "0x1", + "0x48127ffa7fff8000", + "0x482480017ff98000", + "0x1", + "0x208b7fff7fff7ffe", + "0xa0680017fff8000", + "0x7", + "0x482680017ffa8000", + "0x100000000000000000000000000000000", + "0x400280007ff97fff", + "0x10780017fff7fff", + "0x65", + "0x4825800180007ffa", + "0x0", + "0x400280007ff97fff", + "0x482680017ff98000", + "0x1", + "0x48297ffc80007ffd", + "0x20680017fff7fff", + "0x4", + "0x10780017fff7fff", + "0x10", + "0x40780017fff7fff", + "0x1", + "0x480680017fff8000", + "0x496e70757420746f6f206c6f6e6720666f7220617267756d656e7473", + "0x400080007ffe7fff", + "0x48127ffc7fff8000", + "0x48127ffa7fff8000", + "0x480a7ffb7fff8000", + "0x480680017fff8000", + "0x1", + "0x48127ffa7fff8000", + "0x482480017ff98000", + "0x1", + "0x208b7fff7fff7ffe", + "0x1104800180018000", + "0x1a07", + "0x482480017fff8000", + "0x1a06", + "0x480080007fff8000", + "0xa0680017fff8000", + "0x9", + "0x4824800180007ff8", + "0x12534", + "0x482480017fff8000", + "0x100000000000000000000000000000000", + "0x400080007ff77fff", + "0x10780017fff7fff", + "0x30", + "0x4824800180007ff8", + "0x12534", + "0x400080007ff87fff", + "0x482480017ff88000", + "0x1", + "0x48127ffe7fff8000", + "0x480a7ffb7fff8000", + "0x1104800180018000", + "0x55d", + "0x20680017fff7ffd", + "0x1d", + "0x40780017fff7fff", + "0x1", + "0x48127ffa7fff8000", + "0x48127ffa7fff8000", + "0x48127ffc7fff8000", + "0x48127ffc7fff8000", + "0x48127ffb7fff8000", + "0x1104800180018000", + "0x55a", + "0x20680017fff7ffd", + "0xa", + "0x48127fb77fff8000", + "0x48127ffa7fff8000", + "0x48127ffa7fff8000", + "0x480680017fff8000", + "0x0", + "0x48127ffa7fff8000", + "0x48127ffa7fff8000", + "0x208b7fff7fff7ffe", + "0x48127fb77fff8000", + "0x48127ffa7fff8000", + "0x48127ffa7fff8000", + "0x480680017fff8000", + "0x1", + "0x48127ffa7fff8000", + "0x48127ffa7fff8000", + "0x208b7fff7fff7ffe", + "0x48127ffa7fff8000", + "0x48127ffa7fff8000", + "0x48127ffa7fff8000", + "0x480680017fff8000", + "0x1", + "0x48127ffa7fff8000", + "0x48127ffa7fff8000", + "0x208b7fff7fff7ffe", + "0x40780017fff7fff", + "0x1", + "0x480680017fff8000", + "0x4f7574206f6620676173", + "0x400080007ffe7fff", + "0x482480017ff58000", + "0x1", + "0x48127ff37fff8000", + "0x480a7ffb7fff8000", + "0x480680017fff8000", + "0x1", + "0x48127ffa7fff8000", + "0x482480017ff98000", + "0x1", + "0x208b7fff7fff7ffe", + "0x40780017fff7fff", + "0x1", + "0x480680017fff8000", + "0x4f7574206f6620676173", + "0x400080007ffe7fff", + "0x482680017ff98000", + "0x1", + "0x480a7ffa7fff8000", + "0x480a7ffb7fff8000", + "0x480680017fff8000", + "0x1", + "0x48127ffa7fff8000", + "0x482480017ff98000", + "0x1", + "0x208b7fff7fff7ffe", + "0xa0680017fff8000", + "0x7", + "0x482680017ffa8000", + "0xffffffffffffffffffffffffffffa63c", + "0x400280007ff87fff", + "0x10780017fff7fff", + "0x7c", + "0x4825800180007ffa", + "0x59c4", + "0x400280007ff87fff", + "0x482680017ff88000", + "0x1", + "0x48127ffe7fff8000", + "0x480a7ffb7fff8000", + "0x480a7ffc7fff8000", + "0x480a7ffd7fff8000", + "0x1104800180018000", + "0x531", + "0x20680017fff7ffb", + "0x66", + "0x20680017fff7ffe", + "0x55", + "0x48307ffc80007ffd", + "0x20680017fff7fff", + "0x4", + "0x10780017fff7fff", + "0x11", + "0x40780017fff7fff", + "0x1", + "0x480680017fff8000", + "0x496e70757420746f6f206c6f6e6720666f7220617267756d656e7473", + "0x400080007ffe7fff", + "0x48127ff57fff8000", + "0x480a7ff97fff8000", + "0x48127ff47fff8000", + "0x48127ff47fff8000", + "0x480680017fff8000", + "0x1", + "0x48127ff97fff8000", + "0x482480017ff88000", + "0x1", + "0x208b7fff7fff7ffe", + "0x1104800180018000", + "0x1983", + "0x482480017fff8000", + "0x1982", + "0x480080007fff8000", + "0xa0680017fff8000", + "0x9", + "0x4824800180007ff3", + "0x385e0", + "0x482480017fff8000", + "0x100000000000000000000000000000000", + "0x400080007ff07fff", + "0x10780017fff7fff", + "0x23", + "0x4824800180007ff3", + "0x385e0", + "0x400080007ff17fff", + "0x482480017ff18000", + "0x1", + "0x48127ffe7fff8000", + "0x480a7ff97fff8000", + "0x48127ff07fff8000", + "0x48127ff47fff8000", + "0x1104800180018000", + "0x54a", + "0x20680017fff7ffd", + "0xd", + "0x40780017fff7fff", + "0x1", + "0x48127ff87fff8000", + "0x48127ff97fff8000", + "0x48127ff77fff8000", + "0x48127ff87fff8000", + "0x480680017fff8000", + "0x0", + "0x48127ffa7fff8000", + "0x48127ff97fff8000", + "0x208b7fff7fff7ffe", + "0x48127ff97fff8000", + "0x48127ffa7fff8000", + "0x48127ff87fff8000", + "0x48127ff97fff8000", + "0x480680017fff8000", + "0x1", + "0x48127ff97fff8000", + "0x48127ff97fff8000", + "0x208b7fff7fff7ffe", + "0x40780017fff7fff", + "0x1", + "0x480680017fff8000", + "0x4f7574206f6620676173", + "0x400080007ffe7fff", + "0x482480017fee8000", + "0x1", + "0x480a7ff97fff8000", + "0x48127fed7fff8000", + "0x48127fed7fff8000", + "0x480680017fff8000", + "0x1", + "0x48127ff97fff8000", + "0x482480017ff88000", + "0x1", + "0x208b7fff7fff7ffe", + "0x40780017fff7fff", + "0x1", + "0x480680017fff8000", + "0x4661696c656420746f20646573657269616c697a6520706172616d202331", + "0x400080007ffe7fff", + "0x48127ff67fff8000", + "0x480a7ff97fff8000", + "0x48127ff57fff8000", + "0x48127ff57fff8000", + "0x480680017fff8000", + "0x1", + "0x48127ff97fff8000", + "0x482480017ff88000", + "0x1", + "0x208b7fff7fff7ffe", + "0x48127ff87fff8000", + "0x480a7ff97fff8000", + "0x48127ff77fff8000", + "0x48127ff77fff8000", + "0x480680017fff8000", + "0x1", + "0x48127ff97fff8000", + "0x48127ff97fff8000", + "0x208b7fff7fff7ffe", + "0x40780017fff7fff", + "0x1", + "0x480680017fff8000", + "0x4f7574206f6620676173", + "0x400080007ffe7fff", + "0x482680017ff88000", + "0x1", + "0x480a7ff97fff8000", + "0x480a7ffa7fff8000", + "0x480a7ffb7fff8000", + "0x480680017fff8000", + "0x1", + "0x48127ff97fff8000", + "0x482480017ff88000", + "0x1", + "0x208b7fff7fff7ffe", + "0xa0680017fff8000", + "0x7", + "0x482680017ffa8000", + "0x100000000000000000000000000000000", + "0x400280007ff97fff", + "0x10780017fff7fff", + "0x65", + "0x4825800180007ffa", + "0x0", + "0x400280007ff97fff", + "0x482680017ff98000", + "0x1", + "0x48297ffc80007ffd", + "0x20680017fff7fff", + "0x4", + "0x10780017fff7fff", + "0x10", + "0x40780017fff7fff", + "0x1", + "0x480680017fff8000", + "0x496e70757420746f6f206c6f6e6720666f7220617267756d656e7473", + "0x400080007ffe7fff", + "0x48127ffc7fff8000", + "0x48127ffa7fff8000", + "0x480a7ffb7fff8000", + "0x480680017fff8000", + "0x1", + "0x48127ffa7fff8000", + "0x482480017ff98000", + "0x1", + "0x208b7fff7fff7ffe", + "0x1104800180018000", + "0x18fd", + "0x482480017fff8000", + "0x18fc", + "0x480080007fff8000", + "0xa0680017fff8000", + "0x9", + "0x4824800180007ff8", + "0x12534", + "0x482480017fff8000", + "0x100000000000000000000000000000000", + "0x400080007ff77fff", + "0x10780017fff7fff", + "0x30", + "0x4824800180007ff8", + "0x12534", + "0x400080007ff87fff", + "0x482480017ff88000", + "0x1", + "0x48127ffe7fff8000", + "0x480a7ffb7fff8000", + "0x1104800180018000", + "0x4e3", + "0x20680017fff7ffd", + "0x1d", + "0x40780017fff7fff", + "0x1", + "0x48127ffa7fff8000", + "0x48127ffa7fff8000", + "0x48127ffc7fff8000", + "0x48127ffc7fff8000", + "0x48127ffb7fff8000", + "0x1104800180018000", + "0x450", + "0x20680017fff7ffd", + "0xa", + "0x48127fb77fff8000", + "0x48127ffa7fff8000", + "0x48127ffa7fff8000", + "0x480680017fff8000", + "0x0", + "0x48127ffa7fff8000", + "0x48127ffa7fff8000", + "0x208b7fff7fff7ffe", + "0x48127fb77fff8000", + "0x48127ffa7fff8000", + "0x48127ffa7fff8000", + "0x480680017fff8000", + "0x1", + "0x48127ffa7fff8000", + "0x48127ffa7fff8000", + "0x208b7fff7fff7ffe", + "0x48127ffa7fff8000", + "0x48127ffa7fff8000", + "0x48127ffa7fff8000", + "0x480680017fff8000", + "0x1", + "0x48127ffa7fff8000", + "0x48127ffa7fff8000", + "0x208b7fff7fff7ffe", + "0x40780017fff7fff", + "0x1", + "0x480680017fff8000", + "0x4f7574206f6620676173", + "0x400080007ffe7fff", + "0x482480017ff58000", + "0x1", + "0x48127ff37fff8000", + "0x480a7ffb7fff8000", + "0x480680017fff8000", + "0x1", + "0x48127ffa7fff8000", + "0x482480017ff98000", + "0x1", + "0x208b7fff7fff7ffe", + "0x40780017fff7fff", + "0x1", + "0x480680017fff8000", + "0x4f7574206f6620676173", + "0x400080007ffe7fff", + "0x482680017ff98000", + "0x1", + "0x480a7ffa7fff8000", + "0x480a7ffb7fff8000", + "0x480680017fff8000", + "0x1", + "0x48127ffa7fff8000", + "0x482480017ff98000", + "0x1", + "0x208b7fff7fff7ffe", + "0xa0680017fff8000", + "0x7", + "0x482680017ffa8000", + "0xffffffffffffffffffffffffffffa63c", + "0x400280007ff87fff", + "0x10780017fff7fff", + "0x7c", + "0x4825800180007ffa", + "0x59c4", + "0x400280007ff87fff", + "0x482680017ff88000", + "0x1", + "0x48127ffe7fff8000", + "0x480a7ffb7fff8000", + "0x480a7ffc7fff8000", + "0x480a7ffd7fff8000", + "0x1104800180018000", + "0x427", + "0x20680017fff7ffb", + "0x66", + "0x20680017fff7ffe", + "0x55", + "0x48307ffc80007ffd", + "0x20680017fff7fff", + "0x4", + "0x10780017fff7fff", + "0x11", + "0x40780017fff7fff", + "0x1", + "0x480680017fff8000", + "0x496e70757420746f6f206c6f6e6720666f7220617267756d656e7473", + "0x400080007ffe7fff", + "0x48127ff57fff8000", + "0x480a7ff97fff8000", + "0x48127ff47fff8000", + "0x48127ff47fff8000", + "0x480680017fff8000", + "0x1", + "0x48127ff97fff8000", + "0x482480017ff88000", + "0x1", + "0x208b7fff7fff7ffe", + "0x1104800180018000", + "0x1879", + "0x482480017fff8000", + "0x1878", + "0x480080007fff8000", + "0xa0680017fff8000", + "0x9", + "0x4824800180007ff3", + "0x3889c", + "0x482480017fff8000", + "0x100000000000000000000000000000000", + "0x400080007ff07fff", + "0x10780017fff7fff", + "0x23", + "0x4824800180007ff3", + "0x3889c", + "0x400080007ff17fff", + "0x482480017ff18000", + "0x1", + "0x48127ffe7fff8000", + "0x480a7ff97fff8000", + "0x48127ff07fff8000", + "0x48127ff47fff8000", + "0x1104800180018000", + "0x465", + "0x20680017fff7ffd", + "0xd", + "0x40780017fff7fff", + "0x1", + "0x48127ff87fff8000", + "0x48127ff97fff8000", + "0x48127ff77fff8000", + "0x48127ff87fff8000", + "0x480680017fff8000", + "0x0", + "0x48127ffa7fff8000", + "0x48127ff97fff8000", + "0x208b7fff7fff7ffe", + "0x48127ff97fff8000", + "0x48127ffa7fff8000", + "0x48127ff87fff8000", + "0x48127ff97fff8000", + "0x480680017fff8000", + "0x1", + "0x48127ff97fff8000", + "0x48127ff97fff8000", + "0x208b7fff7fff7ffe", + "0x40780017fff7fff", + "0x1", + "0x480680017fff8000", + "0x4f7574206f6620676173", + "0x400080007ffe7fff", + "0x482480017fee8000", + "0x1", + "0x480a7ff97fff8000", + "0x48127fed7fff8000", + "0x48127fed7fff8000", + "0x480680017fff8000", + "0x1", + "0x48127ff97fff8000", + "0x482480017ff88000", + "0x1", + "0x208b7fff7fff7ffe", + "0x40780017fff7fff", + "0x1", + "0x480680017fff8000", + "0x4661696c656420746f20646573657269616c697a6520706172616d202331", + "0x400080007ffe7fff", + "0x48127ff67fff8000", + "0x480a7ff97fff8000", + "0x48127ff57fff8000", + "0x48127ff57fff8000", + "0x480680017fff8000", + "0x1", + "0x48127ff97fff8000", + "0x482480017ff88000", + "0x1", + "0x208b7fff7fff7ffe", + "0x48127ff87fff8000", + "0x480a7ff97fff8000", + "0x48127ff77fff8000", + "0x48127ff77fff8000", + "0x480680017fff8000", + "0x1", + "0x48127ff97fff8000", + "0x48127ff97fff8000", + "0x208b7fff7fff7ffe", + "0x40780017fff7fff", + "0x1", + "0x480680017fff8000", + "0x4f7574206f6620676173", + "0x400080007ffe7fff", + "0x482680017ff88000", + "0x1", + "0x480a7ff97fff8000", + "0x480a7ffa7fff8000", + "0x480a7ffb7fff8000", + "0x480680017fff8000", + "0x1", + "0x48127ff97fff8000", + "0x482480017ff88000", + "0x1", + "0x208b7fff7fff7ffe", + "0xa0680017fff8000", + "0x7", + "0x482680017ffa8000", + "0x100000000000000000000000000000000", + "0x400280007ff97fff", + "0x10780017fff7fff", + "0x6e", + "0x4825800180007ffa", + "0x0", + "0x400280007ff97fff", + "0x480a7ffc7fff8000", + "0x480a7ffd7fff8000", + "0x1104800180018000", + "0x307", + "0x482680017ff98000", + "0x1", + "0x20680017fff7ffd", + "0x55", + "0x48307ffb80007ffc", + "0x20680017fff7fff", + "0x4", + "0x10780017fff7fff", + "0x10", + "0x40780017fff7fff", + "0x1", + "0x480680017fff8000", + "0x496e70757420746f6f206c6f6e6720666f7220617267756d656e7473", + "0x400080007ffe7fff", + "0x48127ffc7fff8000", + "0x48127feb7fff8000", + "0x480a7ffb7fff8000", + "0x480680017fff8000", + "0x1", + "0x48127ffa7fff8000", + "0x482480017ff98000", + "0x1", + "0x208b7fff7fff7ffe", + "0x1104800180018000", + "0x17ed", + "0x482480017fff8000", + "0x17ec", + "0x480080007fff8000", + "0xa0680017fff8000", + "0x9", + "0x4824800180007fe9", + "0x58200", + "0x482480017fff8000", + "0x100000000000000000000000000000000", + "0x400080007ff77fff", + "0x10780017fff7fff", + "0x25", + "0x4824800180007fe9", + "0x58200", + "0x400080007ff87fff", + "0x482480017ff88000", + "0x1", + "0x48127ffe7fff8000", + "0x480a7ffb7fff8000", + "0x48127ff47fff8000", + "0x1104800180018000", + "0x3f7", + "0x20680017fff7ffd", + "0x11", + "0x40780017fff7fff", + "0x1", + "0x48127ffe7fff8000", + "0x48127ffe7fff8000", + "0x48127ffd7fff8000", + "0x1104800180018000", + "0x2ca", + "0x48127ff27fff8000", + "0x48127ff27fff8000", + "0x48127ff27fff8000", + "0x480680017fff8000", + "0x0", + "0x48127ffa7fff8000", + "0x48127ffa7fff8000", + "0x208b7fff7fff7ffe", + "0x48127ffa7fff8000", + "0x48127ffa7fff8000", + "0x48127ffa7fff8000", + "0x480680017fff8000", + "0x1", + "0x48127ffa7fff8000", + "0x48127ffa7fff8000", + "0x208b7fff7fff7ffe", + "0x40780017fff7fff", + "0x1", + "0x480680017fff8000", + "0x4f7574206f6620676173", + "0x400080007ffe7fff", + "0x482480017ff58000", + "0x1", + "0x48127fe47fff8000", + "0x480a7ffb7fff8000", + "0x480680017fff8000", + "0x1", + "0x48127ffa7fff8000", + "0x482480017ff98000", + "0x1", + "0x208b7fff7fff7ffe", + "0x40780017fff7fff", + "0x1", + "0x480680017fff8000", + "0x4661696c656420746f20646573657269616c697a6520706172616d202331", + "0x400080007ffe7fff", + "0x48127ffd7fff8000", + "0x48127fec7fff8000", + "0x480a7ffb7fff8000", + "0x480680017fff8000", + "0x1", + "0x48127ffa7fff8000", + "0x482480017ff98000", + "0x1", + "0x208b7fff7fff7ffe", + "0x40780017fff7fff", + "0x1", + "0x480680017fff8000", + "0x4f7574206f6620676173", + "0x400080007ffe7fff", + "0x482680017ff98000", + "0x1", + "0x480a7ffa7fff8000", + "0x480a7ffb7fff8000", + "0x480680017fff8000", + "0x1", + "0x48127ffa7fff8000", + "0x482480017ff98000", + "0x1", + "0x208b7fff7fff7ffe", + "0xa0680017fff8000", + "0x7", + "0x482680017ffa8000", + "0xffffffffffffffffffffffffffff9764", + "0x400280007ff97fff", + "0x10780017fff7fff", + "0xa5", + "0x4825800180007ffa", + "0x689c", + "0x400280007ff97fff", + "0x480a7ffc7fff8000", + "0x480a7ffd7fff8000", + "0x1104800180018000", + "0x285", + "0x482680017ff98000", + "0x1", + "0x20680017fff7ffd", + "0x8c", + "0x48127ffb7fff8000", + "0x48127ffb7fff8000", + "0x1104800180018000", + "0x27d", + "0x20680017fff7ffe", + "0x78", + "0x48127ff07fff8000", + "0x48127fdf7fff8000", + "0x480a7ffb7fff8000", + "0x48127ff97fff8000", + "0x48127ff97fff8000", + "0x1104800180018000", + "0x307", + "0x20680017fff7ffb", + "0x67", + "0x20680017fff7ffe", + "0x57", + "0x48307ffc80007ffd", + "0x20680017fff7fff", + "0x4", + "0x10780017fff7fff", + "0x10", + "0x40780017fff7fff", + "0x1", + "0x480680017fff8000", + "0x496e70757420746f6f206c6f6e6720666f7220617267756d656e7473", + "0x400080007ffe7fff", + "0x48127ff57fff8000", + "0x48127ff57fff8000", + "0x48127ff57fff8000", + "0x480680017fff8000", + "0x1", + "0x48127ffa7fff8000", + "0x482480017ff98000", + "0x1", + "0x208b7fff7fff7ffe", + "0x1104800180018000", + "0x175a", + "0x482480017fff8000", + "0x1759", + "0x480080007fff8000", + "0xa0680017fff8000", + "0x9", + "0x4824800180007ff3", + "0x5981c", + "0x482480017fff8000", + "0x100000000000000000000000000000000", + "0x400080007ff07fff", + "0x10780017fff7fff", + "0x27", + "0x4824800180007ff3", + "0x5981c", + "0x400080007ff17fff", + "0x482480017ff18000", + "0x1", + "0x48127ffe7fff8000", + "0x48127ff17fff8000", + "0x48127f577fff8000", + "0x48127f667fff8000", + "0x48127ff37fff8000", + "0x1104800180018000", + "0x36a", + "0x20680017fff7ffd", + "0x11", + "0x40780017fff7fff", + "0x1", + "0x48127ffe7fff8000", + "0x48127ffe7fff8000", + "0x48127ffd7fff8000", + "0x1104800180018000", + "0x235", + "0x48127ff27fff8000", + "0x48127ff27fff8000", + "0x48127ff27fff8000", + "0x480680017fff8000", + "0x0", + "0x48127ffa7fff8000", + "0x48127ffa7fff8000", + "0x208b7fff7fff7ffe", + "0x48127ffa7fff8000", + "0x48127ffa7fff8000", + "0x48127ffa7fff8000", + "0x480680017fff8000", + "0x1", + "0x48127ffa7fff8000", + "0x48127ffa7fff8000", + "0x208b7fff7fff7ffe", + "0x40780017fff7fff", + "0x1", + "0x480680017fff8000", + "0x4f7574206f6620676173", + "0x400080007ffe7fff", + "0x482480017fee8000", + "0x1", + "0x48127fee7fff8000", + "0x48127fee7fff8000", + "0x480680017fff8000", + "0x1", + "0x48127ffa7fff8000", + "0x482480017ff98000", + "0x1", + "0x208b7fff7fff7ffe", + "0x40780017fff7fff", + "0x1", + "0x480680017fff8000", + "0x4661696c656420746f20646573657269616c697a6520706172616d202333", + "0x400080007ffe7fff", + "0x48127ff67fff8000", + "0x48127ff67fff8000", + "0x48127ff67fff8000", + "0x480680017fff8000", + "0x1", + "0x48127ffa7fff8000", + "0x482480017ff98000", + "0x1", + "0x208b7fff7fff7ffe", + "0x48127ff87fff8000", + "0x48127ff87fff8000", + "0x48127ff87fff8000", + "0x480680017fff8000", + "0x1", + "0x48127ffa7fff8000", + "0x48127ffa7fff8000", + "0x208b7fff7fff7ffe", + "0x40780017fff7fff", + "0x1", + "0x480680017fff8000", + "0x4661696c656420746f20646573657269616c697a6520706172616d202332", + "0x400080007ffe7fff", + "0x48127fee7fff8000", + "0x48127fdd7fff8000", + "0x480a7ffb7fff8000", + "0x480680017fff8000", + "0x1", + "0x48127ffa7fff8000", + "0x482480017ff98000", + "0x1", + "0x208b7fff7fff7ffe", + "0x40780017fff7fff", + "0x1", + "0x480680017fff8000", + "0x4661696c656420746f20646573657269616c697a6520706172616d202331", + "0x400080007ffe7fff", + "0x48127ffd7fff8000", + "0x48127fec7fff8000", + "0x480a7ffb7fff8000", + "0x480680017fff8000", + "0x1", + "0x48127ffa7fff8000", + "0x482480017ff98000", + "0x1", + "0x208b7fff7fff7ffe", + "0x40780017fff7fff", + "0x1", + "0x480680017fff8000", + "0x4f7574206f6620676173", + "0x400080007ffe7fff", + "0x482680017ff98000", + "0x1", + "0x480a7ffa7fff8000", + "0x480a7ffb7fff8000", + "0x480680017fff8000", + "0x1", + "0x48127ffa7fff8000", + "0x482480017ff98000", + "0x1", + "0x208b7fff7fff7ffe", + "0xa0680017fff8000", + "0x7", + "0x482680017ffa8000", + "0x100000000000000000000000000000000", + "0x400280007ff97fff", + "0x10780017fff7fff", + "0x75", + "0x4825800180007ffa", + "0x0", + "0x400280007ff97fff", + "0x480a7ffc7fff8000", + "0x480a7ffd7fff8000", + "0x1104800180018000", + "0x1cc", + "0x482680017ff98000", + "0x1", + "0x20680017fff7ffd", + "0x5b", + "0x48307ffb80007ffc", + "0x20680017fff7fff", + "0x4", + "0x10780017fff7fff", + "0x11", + "0x40780017fff7fff", + "0x1", + "0x480680017fff8000", + "0x496e70757420746f6f206c6f6e6720666f7220617267756d656e7473", + "0x400080007ffe7fff", + "0x480a7ff87fff8000", + "0x48127ffb7fff8000", + "0x48127fea7fff8000", + "0x480a7ffb7fff8000", + "0x480680017fff8000", + "0x1", + "0x48127ff97fff8000", + "0x482480017ff88000", + "0x1", + "0x208b7fff7fff7ffe", + "0x1104800180018000", + "0x16b1", + "0x482480017fff8000", + "0x16b0", + "0x480080007fff8000", + "0x480080007fff8000", + "0x482480017fff8000", + "0x380e", + "0xa0680017fff8000", + "0x8", + "0x48307ffe80007fe7", + "0x482480017fff8000", + "0x100000000000000000000000000000000", + "0x400080007ff57fff", + "0x10780017fff7fff", + "0x27", + "0x48307ffe80007fe7", + "0x400080007ff67fff", + "0x482480017ff68000", + "0x1", + "0x48127ffe7fff8000", + "0x480a7ff87fff8000", + "0x480a7ffb7fff8000", + "0x48127ff17fff8000", + "0x1104800180018000", + "0x2c9", + "0x20680017fff7ffd", + "0x12", + "0x40780017fff7fff", + "0x1", + "0x48127ffe7fff8000", + "0x48127ffe7fff8000", + "0x48127ffd7fff8000", + "0x1104800180018000", + "0x2ca", + "0x48127fee7fff8000", + "0x48127feb7fff8000", + "0x48127feb7fff8000", + "0x48127fec7fff8000", + "0x480680017fff8000", + "0x0", + "0x48127ff97fff8000", + "0x48127ff97fff8000", + "0x208b7fff7fff7ffe", + "0x48127ffb7fff8000", + "0x48127ff87fff8000", + "0x48127ff87fff8000", + "0x48127ff97fff8000", + "0x480680017fff8000", + "0x1", + "0x48127ff97fff8000", + "0x48127ff97fff8000", + "0x208b7fff7fff7ffe", + "0x40780017fff7fff", + "0x1", + "0x480680017fff8000", + "0x4f7574206f6620676173", + "0x400080007ffe7fff", + "0x480a7ff87fff8000", + "0x482480017ff28000", + "0x1", + "0x48127fe17fff8000", + "0x480a7ffb7fff8000", + "0x480680017fff8000", + "0x1", + "0x48127ff97fff8000", + "0x482480017ff88000", + "0x1", + "0x208b7fff7fff7ffe", + "0x40780017fff7fff", + "0x1", + "0x480680017fff8000", + "0x4661696c656420746f20646573657269616c697a6520706172616d202331", + "0x400080007ffe7fff", + "0x480a7ff87fff8000", + "0x48127ffc7fff8000", + "0x48127feb7fff8000", + "0x480a7ffb7fff8000", + "0x480680017fff8000", + "0x1", + "0x48127ff97fff8000", + "0x482480017ff88000", + "0x1", + "0x208b7fff7fff7ffe", + "0x40780017fff7fff", + "0x1", + "0x480680017fff8000", + "0x4f7574206f6620676173", + "0x400080007ffe7fff", + "0x480a7ff87fff8000", + "0x482680017ff98000", + "0x1", + "0x480a7ffa7fff8000", + "0x480a7ffb7fff8000", + "0x480680017fff8000", + "0x1", + "0x48127ff97fff8000", + "0x482480017ff88000", + "0x1", + "0x208b7fff7fff7ffe", + "0xa0680017fff8000", + "0x7", + "0x482680017ffa8000", + "0xffffffffffffffffffffffffffffa510", + "0x400280007ff87fff", + "0x10780017fff7fff", + "0x84", + "0x4825800180007ffa", + "0x5af0", + "0x400280007ff87fff", + "0x482680017ff88000", + "0x1", + "0x48127ffe7fff8000", + "0x480a7ffb7fff8000", + "0x480a7ffc7fff8000", + "0x480a7ffd7fff8000", + "0x1104800180018000", + "0x1d1", + "0x20680017fff7ffb", + "0x6d", + "0x20680017fff7ffe", + "0x5b", + "0x48307ffc80007ffd", + "0x20680017fff7fff", + "0x4", + "0x10780017fff7fff", + "0x12", + "0x40780017fff7fff", + "0x1", + "0x480680017fff8000", + "0x496e70757420746f6f206c6f6e6720666f7220617267756d656e7473", + "0x400080007ffe7fff", + "0x480a7ff77fff8000", + "0x48127ff47fff8000", + "0x480a7ff97fff8000", + "0x48127ff37fff8000", + "0x48127ff37fff8000", + "0x480680017fff8000", + "0x1", + "0x48127ff87fff8000", + "0x482480017ff78000", + "0x1", + "0x208b7fff7fff7ffe", + "0x1104800180018000", + "0x1622", + "0x482480017fff8000", + "0x1621", + "0x480080007fff8000", + "0x480080007fff8000", + "0x482480017fff8000", + "0x1c264", + "0xa0680017fff8000", + "0x8", + "0x48307ffe80007ff1", + "0x482480017fff8000", + "0x100000000000000000000000000000000", + "0x400080007fee7fff", + "0x10780017fff7fff", + "0x25", + "0x48307ffe80007ff1", + "0x400080007fef7fff", + "0x482480017fef8000", + "0x1", + "0x48127ffe7fff8000", + "0x480a7ff77fff8000", + "0x480a7ff97fff8000", + "0x48127fed7fff8000", + "0x48127ff17fff8000", + "0x1104800180018000", + "0x250", + "0x20680017fff7ffd", + "0xe", + "0x40780017fff7fff", + "0x1", + "0x48127ff97fff8000", + "0x48127ff67fff8000", + "0x48127ff87fff8000", + "0x48127ff57fff8000", + "0x48127ff77fff8000", + "0x480680017fff8000", + "0x0", + "0x48127ff97fff8000", + "0x48127ff87fff8000", + "0x208b7fff7fff7ffe", + "0x48127ffa7fff8000", + "0x48127ff77fff8000", + "0x48127ff97fff8000", + "0x48127ff67fff8000", + "0x48127ff87fff8000", + "0x480680017fff8000", + "0x1", + "0x48127ff87fff8000", + "0x48127ff87fff8000", + "0x208b7fff7fff7ffe", + "0x40780017fff7fff", + "0x1", + "0x480680017fff8000", + "0x4f7574206f6620676173", + "0x400080007ffe7fff", + "0x480a7ff77fff8000", + "0x482480017feb8000", + "0x1", + "0x480a7ff97fff8000", + "0x48127fea7fff8000", + "0x48127fea7fff8000", + "0x480680017fff8000", + "0x1", + "0x48127ff87fff8000", + "0x482480017ff78000", + "0x1", + "0x208b7fff7fff7ffe", + "0x40780017fff7fff", + "0x1", + "0x480680017fff8000", + "0x4661696c656420746f20646573657269616c697a6520706172616d202331", + "0x400080007ffe7fff", + "0x480a7ff77fff8000", + "0x48127ff57fff8000", + "0x480a7ff97fff8000", + "0x48127ff47fff8000", + "0x48127ff47fff8000", + "0x480680017fff8000", + "0x1", + "0x48127ff87fff8000", + "0x482480017ff78000", + "0x1", + "0x208b7fff7fff7ffe", + "0x480a7ff77fff8000", + "0x48127ff77fff8000", + "0x480a7ff97fff8000", + "0x48127ff67fff8000", + "0x48127ff67fff8000", + "0x480680017fff8000", + "0x1", + "0x48127ff87fff8000", + "0x48127ff87fff8000", + "0x208b7fff7fff7ffe", + "0x40780017fff7fff", + "0x1", + "0x480680017fff8000", + "0x4f7574206f6620676173", + "0x400080007ffe7fff", + "0x480a7ff77fff8000", + "0x482680017ff88000", + "0x1", + "0x480a7ff97fff8000", + "0x480a7ffa7fff8000", + "0x480a7ffb7fff8000", + "0x480680017fff8000", + "0x1", + "0x48127ff87fff8000", + "0x482480017ff78000", + "0x1", + "0x208b7fff7fff7ffe", + "0x480a7ffc7fff8000", + "0x480a7ffd7fff8000", + "0x1104800180018000", + "0xb2", + "0x20680017fff7ffe", + "0x2b", + "0xa0680017fff8004", + "0xe", + "0x4824800180047ffe", + "0x800000000000000000000000000000000000000000000000000000000000000", + "0x484480017ffe8000", + "0x110000000000000000", + "0x48307ffe7fff8002", + "0x480280007ffb7ffc", + "0x480280017ffb7ffc", + "0x402480017ffb7ffd", + "0xffffffffffffffeeffffffffffffffff", + "0x400280027ffb7ffd", + "0x10780017fff7fff", + "0x14", + "0x484480017fff8001", + "0x8000000000000000000000000000000", + "0x48307fff80007ffd", + "0x480280007ffb7ffd", + "0x480280017ffb7ffd", + "0x402480017ffc7ffe", + "0xf8000000000000000000000000000000", + "0x400280027ffb7ffe", + "0x40780017fff7fff", + "0x1", + "0x482680017ffb8000", + "0x3", + "0x48127ff57fff8000", + "0x48127ff57fff8000", + "0x480680017fff8000", + "0x0", + "0x48127ff57fff8000", + "0x208b7fff7fff7ffe", + "0x482680017ffb8000", + "0x3", + "0x48127ff57fff8000", + "0x48127ff57fff8000", + "0x480680017fff8000", + "0x1", + "0x480680017fff8000", + "0x0", + "0x208b7fff7fff7ffe", + "0x40780017fff7fff", + "0x6", + "0x480a7ffb7fff8000", + "0x48127ff57fff8000", + "0x48127ff57fff8000", + "0x480680017fff8000", + "0x1", + "0x480680017fff8000", + "0x0", + "0x208b7fff7fff7ffe", + "0x480a7ffb7fff8000", + "0x480a7ffc7fff8000", + "0x1104800180018000", + "0x1df", + "0x20680017fff7ffd", + "0x19", + "0x48127ffb7fff8000", + "0x48127ffb7fff8000", + "0x480a7ffd7fff8000", + "0x1104800180018000", + "0x211", + "0x20680017fff7ffd", + "0xb", + "0x48127ffb7fff8000", + "0x48127ffb7fff8000", + "0x480680017fff8000", + "0x0", + "0x480680017fff8000", + "0x0", + "0x480680017fff8000", + "0x0", + "0x208b7fff7fff7ffe", + "0x48127ffb7fff8000", + "0x48127ffb7fff8000", + "0x480680017fff8000", + "0x1", + "0x48127ffb7fff8000", + "0x48127ffb7fff8000", + "0x208b7fff7fff7ffe", + "0x40780017fff7fff", + "0x79", + "0x48127f827fff8000", + "0x48127f827fff8000", + "0x480680017fff8000", + "0x1", + "0x48127f827fff8000", + "0x48127f827fff8000", + "0x208b7fff7fff7ffe", + "0x48297ffc80007ffd", + "0x20680017fff7fff", + "0x4", + "0x10780017fff7fff", + "0xa", + "0x482680017ffc8000", + "0x1", + "0x480a7ffd7fff8000", + "0x480680017fff8000", + "0x0", + "0x480a7ffc7fff8000", + "0x10780017fff7fff", + "0x8", + "0x480a7ffc7fff8000", + "0x480a7ffd7fff8000", + "0x480680017fff8000", + "0x1", + "0x480680017fff8000", + "0x0", + "0x48127ffc7fff8000", + "0x48127ffc7fff8000", + "0x20680017fff7ffc", + "0xe", + "0x40780017fff7fff", + "0x1", + "0x480a7ffa7fff8000", + "0x480a7ffb7fff8000", + "0x48127ffb7fff8000", + "0x48127ffb7fff8000", + "0x48127ffb7fff8000", + "0x48127ffa7fff8000", + "0x480080007ff68000", + "0x1104800180018000", + "0x21d", + "0x208b7fff7fff7ffe", + "0x480a7ffa7fff8000", + "0x480a7ffb7fff8000", + "0x480680017fff8000", + "0x0", + "0x48127ffb7fff8000", + "0x48127ffb7fff8000", + "0x480680017fff8000", + "0x1", + "0x480680017fff8000", + "0x0", + "0x480680017fff8000", + "0x0", + "0x208b7fff7fff7ffe", + "0x1104800180018000", + "0x274", + "0x480a7ff97fff8000", + "0x480a7ffa7fff8000", + "0x480a7ffb7fff8000", + "0x480a7ffc7fff8000", + "0x480a7ffd7fff8000", + "0x1104800180018000", + "0x26e", + "0x208b7fff7fff7ffe", + "0x48297ffa80007ffb", + "0x4844800180007fff", + "0x2", + "0x400280007ffd7fff", + "0x480a7ff87fff8000", + "0x480a7ff97fff8000", + "0x480a7ffa7fff8000", + "0x480a7ffb7fff8000", + "0x480a7ffc7fff8000", + "0x482680017ffd8000", + "0x1", + "0x1104800180018000", + "0x2f0", + "0x208b7fff7fff7ffe", + "0x1104800180018000", + "0x25c", + "0x480a7ff97fff8000", + "0x480a7ffa7fff8000", + "0x480a7ffb7fff8000", + "0x1104800180018000", + "0x343", + "0x208b7fff7fff7ffe", + "0x400380007ffd7ffb", + "0x480a7ffc7fff8000", + "0x482680017ffd8000", + "0x1", + "0x208b7fff7fff7ffe", + "0x48297ffc80007ffd", + "0x20680017fff7fff", + "0x4", + "0x10780017fff7fff", + "0xa", + "0x482680017ffc8000", + "0x1", + "0x480a7ffd7fff8000", + "0x480680017fff8000", + "0x0", + "0x480a7ffc7fff8000", + "0x10780017fff7fff", + "0x8", + "0x480a7ffc7fff8000", + "0x480a7ffd7fff8000", + "0x480680017fff8000", + "0x1", + "0x480680017fff8000", + "0x0", + "0x48127ffc7fff8000", + "0x48127ffc7fff8000", + "0x20680017fff7ffc", + "0x8", + "0x48127ffe7fff8000", + "0x48127ffe7fff8000", + "0x480680017fff8000", + "0x0", + "0x480080007ffa8000", + "0x208b7fff7fff7ffe", + "0x48127ffe7fff8000", + "0x48127ffe7fff8000", + "0x480680017fff8000", + "0x1", + "0x480680017fff8000", + "0x0", + "0x208b7fff7fff7ffe", + "0x48297ffc80007ffd", + "0x20680017fff7fff", + "0x4", + "0x10780017fff7fff", + "0xa", + "0x482680017ffc8000", + "0x1", + "0x480a7ffd7fff8000", + "0x480680017fff8000", + "0x0", + "0x480a7ffc7fff8000", + "0x10780017fff7fff", + "0x8", + "0x480a7ffc7fff8000", + "0x480a7ffd7fff8000", + "0x480680017fff8000", + "0x1", + "0x480680017fff8000", + "0x0", + "0x48127ffc7fff8000", + "0x48127ffc7fff8000", + "0x20680017fff7ffc", + "0xe", + "0x40780017fff7fff", + "0x1", + "0x480a7ffa7fff8000", + "0x480a7ffb7fff8000", + "0x48127ffb7fff8000", + "0x48127ffb7fff8000", + "0x48127ffb7fff8000", + "0x48127ffa7fff8000", + "0x480080007ff68000", + "0x1104800180018000", + "0x337", + "0x208b7fff7fff7ffe", + "0x480a7ffa7fff8000", + "0x480a7ffb7fff8000", + "0x480680017fff8000", + "0x0", + "0x48127ffb7fff8000", + "0x48127ffb7fff8000", + "0x480680017fff8000", + "0x1", + "0x480680017fff8000", + "0x0", + "0x480680017fff8000", + "0x0", + "0x208b7fff7fff7ffe", + "0x1104800180018000", + "0x1fb", + "0x480a7ff87fff8000", + "0x480a7ff97fff8000", + "0x480a7ffa7fff8000", + "0x480a7ffb7fff8000", + "0x480a7ffc7fff8000", + "0x480a7ffd7fff8000", + "0x1104800180018000", + "0x373", + "0x208b7fff7fff7ffe", + "0x1104800180018000", + "0x1f0", + "0x480a7ff87fff8000", + "0x480a7ff97fff8000", + "0x480a7ffa7fff8000", + "0x480a7ffb7fff8000", + "0x480a7ffc7fff8000", + "0x480a7ffd7fff8000", + "0x1104800180018000", + "0x368", + "0x208b7fff7fff7ffe", + "0x1104800180018000", + "0x1e5", + "0x480a7ffb7fff8000", + "0x480a7ffc7fff8000", + "0x480a7ffd7fff8000", + "0x1104800180018000", + "0x385", + "0x208b7fff7fff7ffe", + "0x480a7ff97fff8000", + "0x480a7ffa7fff8000", + "0x480a7ffb7fff8000", + "0x1104800180018000", + "0x385", + "0x1104800180018000", + "0x3a1", + "0x20680017fff7ffb", + "0x11", + "0x48127ffc7fff8000", + "0x48127ffc7fff8000", + "0x48127ffc7fff8000", + "0x48127ffc7fff8000", + "0x480a7ffc7fff8000", + "0x480a7ffd7fff8000", + "0x1104800180018000", + "0x3a1", + "0x48127fd17fff8000", + "0x48127fd17fff8000", + "0x480680017fff8000", + "0x0", + "0x48127ffb7fff8000", + "0x48127ffb7fff8000", + "0x208b7fff7fff7ffe", + "0x40780017fff7fff", + "0x18", + "0x48127fd17fff8000", + "0x48127fd17fff8000", + "0x480680017fff8000", + "0x1", + "0x48127fe37fff8000", + "0x48127fe37fff8000", + "0x208b7fff7fff7ffe", + "0x480a7ff97fff8000", + "0x480a7ffc7fff8000", + "0x480a7ffd7fff8000", + "0x1104800180018000", + "0x399", + "0x20680017fff7ffb", + "0x37", + "0x480680017fff8000", + "0x536563703235366b314e6577", + "0x400280007ffb7fff", + "0x400380017ffb7ffa", + "0x400280027ffb7ffb", + "0x400280037ffb7ffc", + "0x400280047ffb7ffd", + "0x400280057ffb7ffe", + "0x480280077ffb8000", + "0x20680017fff7fff", + "0xb", + "0x480280067ffb8000", + "0x482680017ffb8000", + "0xa", + "0x480680017fff8000", + "0x0", + "0x480280087ffb8000", + "0x480280097ffb8000", + "0x10780017fff7fff", + "0x9", + "0x480280067ffb8000", + "0x482680017ffb8000", + "0xa", + "0x480680017fff8000", + "0x1", + "0x480280087ffb8000", + "0x480280097ffb8000", + "0x1104800180018000", + "0x3b0", + "0x20680017fff7ffd", + "0xc", + "0x48127fec7fff8000", + "0x48127ff57fff8000", + "0x48127ff57fff8000", + "0x480680017fff8000", + "0x0", + "0x48127fe97fff8000", + "0x48127fe97fff8000", + "0x48127ff87fff8000", + "0x48127ff87fff8000", + "0x208b7fff7fff7ffe", + "0x48127fec7fff8000", + "0x48127ff57fff8000", + "0x48127ff57fff8000", + "0x480680017fff8000", + "0x1", + "0x480680017fff8000", + "0x0", + "0x480680017fff8000", + "0x0", + "0x48127ff87fff8000", + "0x48127ff87fff8000", + "0x208b7fff7fff7ffe", + "0x40780017fff7fff", + "0xc", + "0x48127fec7fff8000", + "0x480a7ffa7fff8000", + "0x480a7ffb7fff8000", + "0x480680017fff8000", + "0x0", + "0x48127fe97fff8000", + "0x48127fe97fff8000", + "0x480680017fff8000", + "0x1", + "0x480680017fff8000", + "0x0", + "0x208b7fff7fff7ffe", + "0x480a7ff97fff8000", + "0x480a7ffa7fff8000", + "0x480a7ffb7fff8000", + "0x480a7ffc7fff8000", + "0x480a7ffd7fff8000", + "0x1104800180018000", + "0x38f", + "0x20680017fff7ffd", + "0xd", + "0x48127ff97fff8000", + "0x48127ff97fff8000", + "0x48127ff97fff8000", + "0x48127ff97fff8000", + "0x480680017fff8000", + "0x0", + "0x480680017fff8000", + "0x0", + "0x480680017fff8000", + "0x0", + "0x208b7fff7fff7ffe", + "0x48127ff97fff8000", + "0x48127ff97fff8000", + "0x48127ff97fff8000", + "0x48127ff97fff8000", + "0x480680017fff8000", + "0x1", + "0x48127ff97fff8000", + "0x48127ff97fff8000", + "0x208b7fff7fff7ffe", + "0x1104800180018000", + "0x155", + "0x480a7ffb7fff8000", + "0x480a7ffc7fff8000", + "0x480a7ffd7fff8000", + "0x1104800180018000", + "0x3bb", + "0x208b7fff7fff7ffe", + "0x480a7ff97fff8000", + "0x480a7ffa7fff8000", + "0x480a7ffb7fff8000", + "0x480a7ffc7fff8000", + "0x480a7ffd7fff8000", + "0x1104800180018000", + "0x3b9", + "0x20680017fff7ffd", + "0xd", + "0x48127ff97fff8000", + "0x48127ff97fff8000", + "0x48127ff97fff8000", + "0x48127ff97fff8000", + "0x480680017fff8000", + "0x0", + "0x480680017fff8000", + "0x0", + "0x480680017fff8000", + "0x0", + "0x208b7fff7fff7ffe", + "0x48127ff97fff8000", + "0x48127ff97fff8000", + "0x48127ff97fff8000", + "0x48127ff97fff8000", + "0x480680017fff8000", + "0x1", + "0x48127ff97fff8000", + "0x48127ff97fff8000", + "0x208b7fff7fff7ffe", + "0x1104800180018000", + "0x130", + "0x480a7ffa7fff8000", + "0x480a7ffb7fff8000", + "0x480a7ffc7fff8000", + "0x1104800180018000", + "0x217", + "0x208b7fff7fff7ffe", + "0x1104800180018000", + "0x128", + "0x480a7ff87fff8000", + "0x480a7ff97fff8000", + "0x480a7ffa7fff8000", + "0x1104800180018000", + "0x20f", + "0x208b7fff7fff7ffe", + "0x1104800180018000", + "0x399", + "0x480a7ff97fff8000", + "0x480a7ffa7fff8000", + "0x480a7ffb7fff8000", + "0x480a7ffc7fff8000", + "0x480a7ffd7fff8000", + "0x1104800180018000", + "0x393", + "0x208b7fff7fff7ffe", + "0x20780017fff7ffb", + "0x6", + "0x480680017fff8000", + "0x0", + "0x10780017fff7fff", + "0x4", + "0x480680017fff8000", + "0x1", + "0x480a7ffc7fff8000", + "0x480a7ffd7fff8000", + "0x1104800180018000", + "0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffeb9", + "0x208b7fff7fff7ffe", + "0x480a7ff87fff8000", + "0x480a7ff97fff8000", + "0x480a7ffa7fff8000", + "0x480a7ffb7fff8000", + "0x480a7ffc7fff8000", + "0x480a7ffd7fff8000", + "0x1104800180018000", + "0x396", + "0x20680017fff7ffd", + "0xe", + "0x48127ff87fff8000", + "0x48127ff87fff8000", + "0x48127ff87fff8000", + "0x48127ff87fff8000", + "0x48127ff87fff8000", + "0x480680017fff8000", + "0x0", + "0x480680017fff8000", + "0x0", + "0x480680017fff8000", + "0x0", + "0x208b7fff7fff7ffe", + "0x48127ff87fff8000", + "0x48127ff87fff8000", + "0x48127ff87fff8000", + "0x48127ff87fff8000", + "0x48127ff87fff8000", + "0x480680017fff8000", + "0x1", + "0x48127ff87fff8000", + "0x48127ff87fff8000", + "0x208b7fff7fff7ffe", + "0x480a7ffc7fff8000", + "0x480a7ffd7fff8000", + "0x1104800180018000", + "0x3a1", + "0x20680017fff7ffd", + "0x2c", + "0x48127ffb7fff8000", + "0x48127ffb7fff8000", + "0x1104800180018000", + "0x3b0", + "0x20680017fff7ffd", + "0x1d", + "0x48307fe180007fff", + "0x20680017fff7fff", + "0xd", + "0x40780017fff7fff", + "0x2", + "0x48127ff87fff8000", + "0x48127ff87fff8000", + "0x480680017fff8000", + "0x0", + "0x480680017fff8000", + "0x0", + "0x480680017fff8000", + "0x0", + "0x208b7fff7fff7ffe", + "0x40780017fff7fff", + "0x1", + "0x480680017fff8000", + "0x4574684163636f756e743a20756e617574686f72697a6564", + "0x400080007ffe7fff", + "0x48127ff87fff8000", + "0x48127ff87fff8000", + "0x480680017fff8000", + "0x1", + "0x48127ffb7fff8000", + "0x482480017ffa8000", + "0x1", + "0x208b7fff7fff7ffe", + "0x40780017fff7fff", + "0x3", + "0x48127ff87fff8000", + "0x48127ff87fff8000", + "0x480680017fff8000", + "0x1", + "0x48127ff87fff8000", + "0x48127ff87fff8000", + "0x208b7fff7fff7ffe", + "0x40780017fff7fff", + "0x21", + "0x48127fda7fff8000", + "0x48127fda7fff8000", + "0x480680017fff8000", + "0x1", + "0x48127fda7fff8000", + "0x48127fda7fff8000", + "0x208b7fff7fff7ffe", + "0x20780017fff7ffd", + "0x6", + "0x480680017fff8000", + "0x1", + "0x10780017fff7fff", + "0x4", + "0x480680017fff8000", + "0x0", + "0x480680017fff8000", + "0x1", + "0x48307ffe80007fff", + "0x20680017fff7fff", + "0x11", + "0x40780017fff7fff", + "0x6a", + "0x40780017fff7fff", + "0x1", + "0x480680017fff8000", + "0x436c61737320686173682063616e6e6f74206265207a65726f", + "0x400080007ffe7fff", + "0x480a7ffb7fff8000", + "0x480a7ffc7fff8000", + "0x480680017fff8000", + "0x1", + "0x48127ffb7fff8000", + "0x482480017ffa8000", + "0x1", + "0x208b7fff7fff7ffe", + "0x480680017fff8000", + "0x5265706c616365436c617373", + "0x400280007ffc7fff", + "0x400380017ffc7ffb", + "0x400380027ffc7ffd", + "0x480280047ffc8000", + "0x20680017fff7fff", + "0xd", + "0x480280037ffc8000", + "0x482680017ffc8000", + "0x5", + "0x480680017fff8000", + "0x0", + "0x480680017fff8000", + "0x0", + "0x480680017fff8000", + "0x0", + "0x10780017fff7fff", + "0x9", + "0x480280037ffc8000", + "0x482680017ffc8000", + "0x7", + "0x480680017fff8000", + "0x1", + "0x480280057ffc8000", + "0x480280067ffc8000", + "0x1104800180018000", + "0x35e", + "0x20680017fff7ffd", + "0x8", + "0x48127fef7fff8000", + "0x48127fef7fff8000", + "0x480a7ffd7fff8000", + "0x1104800180018000", + "0x35f", + "0x208b7fff7fff7ffe", + "0x40780017fff7fff", + "0x59", + "0x48127f967fff8000", + "0x48127f967fff8000", + "0x480680017fff8000", + "0x1", + "0x48127fa27fff8000", + "0x48127fa27fff8000", + "0x208b7fff7fff7ffe", + "0x1104800180018000", + "0x1317", + "0x482480017fff8000", + "0x1316", + "0x480080007fff8000", + "0xa0680017fff8000", + "0x9", + "0x4825800180007ff8", + "0x4a42", + "0x482480017fff8000", + "0x100000000000000000000000000000000", + "0x400280007ff77fff", + "0x10780017fff7fff", + "0x47", + "0x4825800180007ff8", + "0x4a42", + "0x400280007ff77fff", + "0x482680017ff78000", + "0x1", + "0x20780017fff7ffd", + "0xd", + "0x48127fff7fff8000", + "0x48127ffd7fff8000", + "0x480680017fff8000", + "0x0", + "0x480a7ff97fff8000", + "0x480a7ffa7fff8000", + "0x480680017fff8000", + "0x0", + "0x480a7ffb7fff8000", + "0x480a7ffc7fff8000", + "0x208b7fff7fff7ffe", + "0x48127fff7fff8000", + "0x480a7ff97fff8000", + "0x480a7ffa7fff8000", + "0x1104800180018000", + "0x34d", + "0x20680017fff7ff8", + "0x21", + "0x20680017fff7ffb", + "0x12", + "0x400280007ffc7ffc", + "0x400280017ffc7ffd", + "0x400280027ffc7ffe", + "0x400280037ffc7fff", + "0x48127ff77fff8000", + "0x48127f7c7fff8000", + "0x48127ff77fff8000", + "0x48127ff77fff8000", + "0x480a7ffb7fff8000", + "0x482680017ffc8000", + "0x4", + "0x4825800180007ffd", + "0x1", + "0x1104800180018000", + "0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffffcb", + "0x208b7fff7fff7ffe", + "0x48127ff77fff8000", + "0x48127f7c7fff8000", + "0x480680017fff8000", + "0x0", + "0x48127ff67fff8000", + "0x48127ff67fff8000", + "0x480680017fff8000", + "0x1", + "0x480680017fff8000", + "0x0", + "0x480680017fff8000", + "0x0", + "0x208b7fff7fff7ffe", + "0x48127ff77fff8000", + "0x48127f7c7fff8000", + "0x480680017fff8000", + "0x1", + "0x480680017fff8000", + "0x0", + "0x480680017fff8000", + "0x0", + "0x480680017fff8000", + "0x0", + "0x48127ff87fff8000", + "0x48127ff87fff8000", + "0x208b7fff7fff7ffe", + "0x40780017fff7fff", + "0x1", + "0x480680017fff8000", + "0x4f7574206f6620676173", + "0x400080007ffe7fff", + "0x482680017ff78000", + "0x1", + "0x480a7ff87fff8000", + "0x480680017fff8000", + "0x1", + "0x480680017fff8000", + "0x0", + "0x480680017fff8000", + "0x0", + "0x480680017fff8000", + "0x0", + "0x48127ff87fff8000", + "0x482480017ff78000", + "0x1", + "0x208b7fff7fff7ffe", + "0x208b7fff7fff7ffe", + "0x480a7ffa7fff8000", + "0x480a7ffb7fff8000", + "0x1104800180018000", + "0x2b7", + "0x20680017fff7ffd", + "0x84", + "0x20680017fff7fff", + "0x74", + "0x48127ffb7fff8000", + "0x48127ffb7fff8000", + "0x1104800180018000", + "0x364", + "0x20680017fff7ffd", + "0x66", + "0x480a7ff97fff8000", + "0x480080007ffe8000", + "0x1104800180018000", + "0x373", + "0x480680017fff8000", + "0x0", + "0x480680017fff8000", + "0x1", + "0x1104800180018000", + "0x391", + "0x20680017fff7fff", + "0x34", + "0x48127ffe7fff8000", + "0x480680017fff8000", + "0x0", + "0x480680017fff8000", + "0x1", + "0x480680017fff8000", + "0x1", + "0x480680017fff8000", + "0x0", + "0x1104800180018000", + "0x3b6", + "0x20680017fff7ffd", + "0x1f", + "0x48127ffc7fff8000", + "0x48127fc07fff8000", + "0x48127fc07fff8000", + "0x48127ffb7fff8000", + "0x48127ffb7fff8000", + "0x1104800180018000", + "0x37b", + "0x480680017fff8000", + "0x1", + "0x48307ffe80007fff", + "0x20680017fff7fff", + "0x10", + "0x40780017fff7fff", + "0x1", + "0x480680017fff8000", + "0x4574684163636f756e743a20696e76616c69642074782076657273696f6e", + "0x400080007ffe7fff", + "0x48127ffa7fff8000", + "0x48127f9c7fff8000", + "0x48127f9c7fff8000", + "0x480680017fff8000", + "0x1", + "0x48127ffa7fff8000", + "0x482480017ff98000", + "0x1", + "0x208b7fff7fff7ffe", + "0x48127ffc7fff8000", + "0x10780017fff7fff", + "0x29", + "0x48127ffc7fff8000", + "0x48127fb07fff8000", + "0x48127fb07fff8000", + "0x480680017fff8000", + "0x1", + "0x48127ffa7fff8000", + "0x48127ffa7fff8000", + "0x208b7fff7fff7ffe", + "0x48127ffe7fff8000", + "0x48127ff07fff8000", + "0x48127ff07fff8000", + "0x480680017fff8000", + "0x1", + "0x480680017fff8000", + "0x0", + "0x1104800180018000", + "0x354", + "0x480680017fff8000", + "0x1", + "0x48307ffe80007fff", + "0x20680017fff7fff", + "0x10", + "0x40780017fff7fff", + "0x1", + "0x480680017fff8000", + "0x4574684163636f756e743a20696e76616c69642074782076657273696f6e", + "0x400080007ffe7fff", + "0x48127ffa7fff8000", + "0x48127fcc7fff8000", + "0x48127fcc7fff8000", + "0x480680017fff8000", + "0x1", + "0x48127ffa7fff8000", + "0x482480017ff98000", + "0x1", + "0x208b7fff7fff7ffe", + "0x40780017fff7fff", + "0x30", + "0x48127fcc7fff8000", + "0x48127f9e7fff8000", + "0x48127f9e7fff8000", + "0x480a7ffc7fff8000", + "0x480a7ffd7fff8000", + "0x1104800180018000", + "0x387", + "0x208b7fff7fff7ffe", + "0x480a7ff97fff8000", + "0x48127ffa7fff8000", + "0x48127ffa7fff8000", + "0x480680017fff8000", + "0x1", + "0x48127ffa7fff8000", + "0x48127ffa7fff8000", + "0x208b7fff7fff7ffe", + "0x40780017fff7fff", + "0x1", + "0x480680017fff8000", + "0x4574684163636f756e743a20696e76616c69642063616c6c6572", + "0x400080007ffe7fff", + "0x480a7ff97fff8000", + "0x48127ff87fff8000", + "0x48127ff87fff8000", + "0x480680017fff8000", + "0x1", + "0x48127ffa7fff8000", + "0x482480017ff98000", + "0x1", + "0x208b7fff7fff7ffe", + "0x480a7ff97fff8000", + "0x48127ffa7fff8000", + "0x48127ffa7fff8000", + "0x480680017fff8000", + "0x1", + "0x48127ffa7fff8000", + "0x48127ffa7fff8000", + "0x208b7fff7fff7ffe", + "0x40780017fff7fff", + "0x2", + "0x1104800180018000", + "0x121d", + "0x482480017fff8000", + "0x121c", + "0x480080007fff8000", + "0xa0680017fff8000", + "0x9", + "0x4825800180007ff9", + "0x1928", + "0x482480017fff8000", + "0x100000000000000000000000000000000", + "0x400280007ff87fff", + "0x10780017fff7fff", + "0x3f", + "0x4825800180007ff9", + "0x1928", + "0x400280007ff87fff", + "0x482680017ff88000", + "0x1", + "0x48297ffa80007ffb", + "0x20680017fff7fff", + "0x4", + "0x10780017fff7fff", + "0xa", + "0x482680017ffa8000", + "0x2", + "0x480a7ffb7fff8000", + "0x480680017fff8000", + "0x0", + "0x480a7ffa7fff8000", + "0x10780017fff7fff", + "0x8", + "0x480a7ffa7fff8000", + "0x480a7ffb7fff8000", + "0x480680017fff8000", + "0x1", + "0x480680017fff8000", + "0x0", + "0x40137ffc7fff8000", + "0x40137ffd7fff8001", + "0x20680017fff7ffe", + "0x1c", + "0x48127ffa7fff8000", + "0x48127ff87fff8000", + "0x480080007ffd8000", + "0x480080017ffc8000", + "0x480a7ffc7fff8000", + "0x480a7ffd7fff8000", + "0x1104800180018000", + "0x351", + "0x20680017fff7ffd", + "0xb", + "0x48127ffb7fff8000", + "0x48127ffb7fff8000", + "0x480a80007fff8000", + "0x480a80017fff8000", + "0x48127ffa7fff8000", + "0x48127ffa7fff8000", + "0x1104800180018000", + "0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffffc5", + "0x208b7fff7fff7ffe", + "0x48127ffb7fff8000", + "0x48127ffb7fff8000", + "0x480680017fff8000", + "0x1", + "0x48127ffb7fff8000", + "0x48127ffb7fff8000", + "0x208b7fff7fff7ffe", + "0x48127ffa7fff8000", + "0x48127ff87fff8000", + "0x480680017fff8000", + "0x0", + "0x480a7ffc7fff8000", + "0x480a7ffd7fff8000", + "0x208b7fff7fff7ffe", + "0x40780017fff7fff", + "0x1", + "0x480680017fff8000", + "0x4f7574206f6620676173", + "0x400080007ffe7fff", + "0x482680017ff88000", + "0x1", + "0x480a7ff97fff8000", + "0x480680017fff8000", + "0x1", + "0x48127ffb7fff8000", + "0x482480017ffa8000", + "0x1", + "0x208b7fff7fff7ffe", + "0x480a7ffc7fff8000", + "0x480a7ffd7fff8000", + "0x1104800180018000", + "0x281", + "0x20680017fff7ffd", + "0x32", + "0x480a7ffb7fff8000", + "0x48127ffa7fff8000", + "0x48127ffa7fff8000", + "0x480080057ffc8000", + "0x480080037ffb8000", + "0x480080047ffa8000", + "0x1104800180018000", + "0x328", + "0x20680017fff7ffd", + "0x1e", + "0x20680017fff7fff", + "0x10", + "0x40780017fff7fff", + "0x1", + "0x480680017fff8000", + "0x4574684163636f756e743a20696e76616c6964207369676e6174757265", + "0x400080007ffe7fff", + "0x48127ff87fff8000", + "0x48127ff87fff8000", + "0x48127ff87fff8000", + "0x480680017fff8000", + "0x1", + "0x48127ffa7fff8000", + "0x482480017ff98000", + "0x1", + "0x208b7fff7fff7ffe", + "0x40780017fff7fff", + "0x2", + "0x48127ff87fff8000", + "0x48127ff87fff8000", + "0x48127ff87fff8000", + "0x480680017fff8000", + "0x0", + "0x480680017fff8000", + "0x0", + "0x480680017fff8000", + "0x56414c4944", + "0x208b7fff7fff7ffe", + "0x40780017fff7fff", + "0x2", + "0x48127ff87fff8000", + "0x48127ff87fff8000", + "0x48127ff87fff8000", + "0x480680017fff8000", + "0x1", + "0x48127ff87fff8000", + "0x48127ff87fff8000", + "0x208b7fff7fff7ffe", + "0x40780017fff7fff", + "0x6f0", + "0x480a7ffb7fff8000", + "0x4812790a7fff8000", + "0x4812790a7fff8000", + "0x480680017fff8000", + "0x1", + "0x4812790a7fff8000", + "0x4812790a7fff8000", + "0x208b7fff7fff7ffe", + "0x1104800180018000", + "0x1184", + "0x482480017fff8000", + "0x1183", + "0x480080007fff8000", + "0xa0680017fff8000", + "0x9", + "0x4825800180007ff8", + "0xf1e", + "0x482480017fff8000", + "0x100000000000000000000000000000000", + "0x400280007ff77fff", + "0x10780017fff7fff", + "0x34", + "0x4825800180007ff8", + "0xf1e", + "0x400280007ff77fff", + "0x482680017ff78000", + "0x1", + "0x20780017fff7ffd", + "0xd", + "0x48127fff7fff8000", + "0x48127ffd7fff8000", + "0x480680017fff8000", + "0x0", + "0x480a7ff97fff8000", + "0x480a7ffa7fff8000", + "0x480680017fff8000", + "0x0", + "0x480a7ffb7fff8000", + "0x480a7ffc7fff8000", + "0x208b7fff7fff7ffe", + "0x480a7ff97fff8000", + "0x480a7ffa7fff8000", + "0x1104800180018000", + "0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffc64", + "0x20680017fff7ffe", + "0xf", + "0x400280007ffc7fff", + "0x48127ff07fff8000", + "0x48127fee7fff8000", + "0x48127ffa7fff8000", + "0x48127ffa7fff8000", + "0x480a7ffb7fff8000", + "0x482680017ffc8000", + "0x1", + "0x4825800180007ffd", + "0x1", + "0x1104800180018000", + "0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffffd1", + "0x208b7fff7fff7ffe", + "0x48127ff07fff8000", + "0x48127fee7fff8000", + "0x480680017fff8000", + "0x0", + "0x48127ff97fff8000", + "0x48127ff97fff8000", + "0x480680017fff8000", + "0x1", + "0x480680017fff8000", + "0x0", + "0x480680017fff8000", + "0x0", + "0x208b7fff7fff7ffe", + "0x40780017fff7fff", + "0x1", + "0x480680017fff8000", + "0x4f7574206f6620676173", + "0x400080007ffe7fff", + "0x482680017ff78000", + "0x1", + "0x480a7ff87fff8000", + "0x480680017fff8000", + "0x1", + "0x480680017fff8000", + "0x0", + "0x480680017fff8000", + "0x0", + "0x480680017fff8000", + "0x0", + "0x48127ff87fff8000", + "0x482480017ff78000", + "0x1", + "0x208b7fff7fff7ffe", + "0x480a7ff87fff8000", + "0x480a7ff97fff8000", + "0x480a7ffa7fff8000", + "0x480a7ffb7fff8000", + "0x480a7ffc7fff8000", + "0x480a7ffd7fff8000", + "0x1104800180018000", + "0x29a", + "0x20680017fff7ffd", + "0x13", + "0x20680017fff7fff", + "0x6", + "0x480680017fff8000", + "0x0", + "0x10780017fff7fff", + "0x4", + "0x480680017fff8000", + "0x56414c4944", + "0x48127ff97fff8000", + "0x48127ff97fff8000", + "0x48127ff97fff8000", + "0x480680017fff8000", + "0x0", + "0x480680017fff8000", + "0x0", + "0x48127ffa7fff8000", + "0x208b7fff7fff7ffe", + "0x40780017fff7fff", + "0x1", + "0x48127ff97fff8000", + "0x48127ff97fff8000", + "0x48127ff97fff8000", + "0x480680017fff8000", + "0x1", + "0x48127ff97fff8000", + "0x48127ff97fff8000", + "0x208b7fff7fff7ffe", + "0x480a7ffb7fff8000", + "0x480a7ffc7fff8000", + "0x480a7ffd7fff8000", + "0x1104800180018000", + "0x293", + "0x208b7fff7fff7ffe", + "0x480680017fff8000", + "0x536563703235366b314765745879", + "0x400280007ffc7fff", + "0x400380017ffc7ffb", + "0x400380027ffc7ffd", + "0x480280047ffc8000", + "0x20680017fff7fff", + "0xc", + "0x480280037ffc8000", + "0x482680017ffc8000", + "0x9", + "0x480680017fff8000", + "0x0", + "0x480280057ffc8000", + "0x480280067ffc8000", + "0x480280077ffc8000", + "0x480280087ffc8000", + "0x208b7fff7fff7ffe", + "0x480280037ffc8000", + "0x482680017ffc8000", + "0x7", + "0x480680017fff8000", + "0x1", + "0x480680017fff8000", + "0x0", + "0x480680017fff8000", + "0x0", + "0x480280057ffc8000", + "0x480280067ffc8000", + "0x208b7fff7fff7ffe", + "0x480a7ff97fff8000", + "0x480a7ffa7fff8000", + "0x480a7ffb7fff8000", + "0x480a7ffc7fff8000", + "0x480a7ffd7fff8000", + "0x480680017fff8000", + "0x526573756c743a3a756e77726170206661696c65642e", + "0x1104800180018000", + "0x2c7", + "0x208b7fff7fff7ffe", + "0x480a7ff87fff8000", + "0x480a7ff97fff8000", + "0x480a7ffc7fff8000", + "0x480a7ffd7fff8000", + "0x1104800180018000", + "0x2d8", + "0x480a7ffa7fff8000", + "0x480a7ffb7fff8000", + "0x48127ffc7fff8000", + "0x48127ffc7fff8000", + "0x1104800180018000", + "0x2d2", + "0x208b7fff7fff7ffe", + "0x480a7ffb7fff8000", + "0x480a7ffc7fff8000", + "0x480a7ffd7fff8000", + "0x1104800180018000", + "0x2d2", + "0x20680017fff7ffd", + "0x21", + "0x48127ffa7fff8000", + "0x48127ffa7fff8000", + "0x48127ffa7fff8000", + "0x1104800180018000", + "0x2cb", + "0x20680017fff7ffd", + "0xc", + "0x48127ffa7fff8000", + "0x48127ffa7fff8000", + "0x48127ffa7fff8000", + "0x480680017fff8000", + "0x0", + "0x48127fc77fff8000", + "0x48127fc77fff8000", + "0x48127ff87fff8000", + "0x48127ff87fff8000", + "0x208b7fff7fff7ffe", + "0x48127ffa7fff8000", + "0x48127ffa7fff8000", + "0x48127ffa7fff8000", + "0x480680017fff8000", + "0x1", + "0x480680017fff8000", + "0x0", + "0x480680017fff8000", + "0x0", + "0x480680017fff8000", + "0x0", + "0x480680017fff8000", + "0x0", + "0x208b7fff7fff7ffe", + "0x40780017fff7fff", + "0x33", + "0x48127fc77fff8000", + "0x48127fc77fff8000", + "0x48127fc77fff8000", + "0x480680017fff8000", + "0x1", + "0x480680017fff8000", + "0x0", + "0x480680017fff8000", + "0x0", + "0x480680017fff8000", + "0x0", + "0x480680017fff8000", + "0x0", + "0x208b7fff7fff7ffe", + "0x20780017fff7ffb", + "0x7", + "0x480680017fff8000", + "0x0", + "0x480a7ffc7fff8000", + "0x480a7ffd7fff8000", + "0x208b7fff7fff7ffe", + "0x480680017fff8000", + "0x1", + "0x480a7ffc7fff8000", + "0x480a7ffd7fff8000", + "0x208b7fff7fff7ffe", + "0x480a7ffa7fff8000", + "0x480a7ffc7fff8000", + "0x1104800180018000", + "0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffcf4", + "0x20680017fff7ffd", + "0x3c", + "0x480a7ff97fff8000", + "0x48127ffa7fff8000", + "0x48127ffa7fff8000", + "0x1104800180018000", + "0x210", + "0x20680017fff7ffd", + "0x2c", + "0x48127ffa7fff8000", + "0x48127ffa7fff8000", + "0x480a7ffb7fff8000", + "0x48127ff97fff8000", + "0x48127ffb7fff8000", + "0x1104800180018000", + "0x2e3", + "0x20680017fff7ffd", + "0x1a", + "0x48127ffa7fff8000", + "0x48127ffb7fff8000", + "0x48127ffd7fff8000", + "0x1104800180018000", + "0x307", + "0x20680017fff7ffd", + "0xa", + "0x48127f9b7fff8000", + "0x48127ffa7fff8000", + "0x48127f9b7fff8000", + "0x48127ff97fff8000", + "0x480a7ffd7fff8000", + "0x1104800180018000", + "0x31b", + "0x208b7fff7fff7ffe", + "0x48127f9b7fff8000", + "0x48127ffa7fff8000", + "0x48127f9b7fff8000", + "0x48127ff97fff8000", + "0x480680017fff8000", + "0x1", + "0x48127ff97fff8000", + "0x48127ff97fff8000", + "0x208b7fff7fff7ffe", + "0x48127ff97fff8000", + "0x48127ff97fff8000", + "0x48127ff97fff8000", + "0x48127ff97fff8000", + "0x480680017fff8000", + "0x1", + "0x48127ff97fff8000", + "0x48127ff97fff8000", + "0x208b7fff7fff7ffe", + "0x48127ffa7fff8000", + "0x48127ffa7fff8000", + "0x480a7ffb7fff8000", + "0x48127ff97fff8000", + "0x480680017fff8000", + "0x1", + "0x48127ff97fff8000", + "0x48127ff97fff8000", + "0x208b7fff7fff7ffe", + "0x480a7ff97fff8000", + "0x48127ffa7fff8000", + "0x480a7ffb7fff8000", + "0x48127ff97fff8000", + "0x480680017fff8000", + "0x1", + "0x48127ff97fff8000", + "0x48127ff97fff8000", + "0x208b7fff7fff7ffe", + "0x480a7ffb7fff8000", + "0x480a7ffc7fff8000", + "0x480a7ffd7fff8000", + "0x1104800180018000", + "0x1cd", + "0x208b7fff7fff7ffe", + "0x480a7ff97fff8000", + "0x480a7ffa7fff8000", + "0x480a7ffb7fff8000", + "0x480a7ffc7fff8000", + "0x480a7ffd7fff8000", + "0x1104800180018000", + "0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffffad", + "0x208b7fff7fff7ffe", + "0x208b7fff7fff7ffe", + "0x4825800180007ffd", + "0x3f918d17e5ee77373b56385708f855659a07f75997f365cf87748628532a055", + "0x20680017fff7fff", + "0xf", + "0x40780017fff7fff", + "0x2a", + "0x480a7ff97fff8000", + "0x480a7ffa7fff8000", + "0x480a7ffb7fff8000", + "0x480a7ffc7fff8000", + "0x480680017fff8000", + "0x0", + "0x480680017fff8000", + "0x0", + "0x480680017fff8000", + "0x1", + "0x208b7fff7fff7ffe", + "0x480a7ff97fff8000", + "0x480a7ffa7fff8000", + "0x480a7ffb7fff8000", + "0x480a7ffc7fff8000", + "0x480a7ffd7fff8000", + "0x1104800180018000", + "0x2ff", + "0x208b7fff7fff7ffe", + "0x40780017fff7fff", + "0x1", + "0x480a7ff87fff8000", + "0x480a7ff97fff8000", + "0x480a7ffa7fff8000", + "0x480a7ffc7fff8000", + "0x480680017fff8000", + "0x2ceccef7f994940b3962a6c67e0ba4fcd37df7d131417c604f91e03caecc1cd", + "0x1104800180018000", + "0x32e", + "0x40137ffb7fff8000", + "0x20680017fff7ffd", + "0x12", + "0x48127ff97fff8000", + "0x48127ff97fff8000", + "0x480a7ffb7fff8000", + "0x48127ff97fff8000", + "0x480a7ffd7fff8000", + "0x1104800180018000", + "0x2ba", + "0x48127ff97fff8000", + "0x48127ff97fff8000", + "0x480a80007fff8000", + "0x48127ff87fff8000", + "0x48127ff87fff8000", + "0x48127ff87fff8000", + "0x48127ff87fff8000", + "0x48127ff87fff8000", + "0x208b7fff7fff7ffe", + "0x48127ff97fff8000", + "0x48127ff97fff8000", + "0x480a80007fff8000", + "0x480a7ffb7fff8000", + "0x48127ff87fff8000", + "0x480680017fff8000", + "0x1", + "0x48127ff87fff8000", + "0x48127ff87fff8000", + "0x208b7fff7fff7ffe", + "0x480a7ffc7fff8000", + "0x480a7ffd7fff8000", + "0x1104800180018000", + "0x32c", + "0x20680017fff7ffd", + "0xa", + "0x48127ffb7fff8000", + "0x48127ffb7fff8000", + "0x480680017fff8000", + "0x0", + "0x480680017fff8000", + "0x0", + "0x480080027ffb8000", + "0x208b7fff7fff7ffe", + "0x48127ffb7fff8000", + "0x48127ffb7fff8000", + "0x480680017fff8000", + "0x1", + "0x48127ffb7fff8000", + "0x48127ffb7fff8000", + "0x208b7fff7fff7ffe", + "0x480a7ffc7fff8000", + "0x480a7ffd7fff8000", + "0x1104800180018000", + "0x317", + "0x20680017fff7ffd", + "0xa", + "0x48127ffb7fff8000", + "0x48127ffb7fff8000", + "0x480680017fff8000", + "0x0", + "0x480680017fff8000", + "0x0", + "0x480080037ffb8000", + "0x208b7fff7fff7ffe", + "0x48127ffb7fff8000", + "0x48127ffb7fff8000", + "0x480680017fff8000", + "0x1", + "0x48127ffb7fff8000", + "0x48127ffb7fff8000", + "0x208b7fff7fff7ffe", + "0x480a7ffb7fff8000", + "0x480a7ffc7fff8000", + "0x480a7ffd7fff8000", + "0x480680017fff8000", + "0x526573756c743a3a756e77726170206661696c65642e", + "0x1104800180018000", + "0x31f", + "0x208b7fff7fff7ffe", + "0x480a7ffd7fff8000", + "0x1104800180018000", + "0x32f", + "0x480a7ffb7fff8000", + "0x480a7ffc7fff8000", + "0x480680017fff8000", + "0x1", + "0x48127ffb7fff8000", + "0x48127ffb7fff8000", + "0x1104800180018000", + "0x32b", + "0x20680017fff7ffd", + "0xb", + "0x48127ffb7fff8000", + "0x48127ffb7fff8000", + "0x480680017fff8000", + "0x0", + "0x480680017fff8000", + "0x0", + "0x480680017fff8000", + "0x0", + "0x208b7fff7fff7ffe", + "0x48127ffb7fff8000", + "0x48127ffb7fff8000", + "0x480680017fff8000", + "0x1", + "0x48127ffb7fff8000", + "0x48127ffb7fff8000", + "0x208b7fff7fff7ffe", + "0x480a7ffb7fff8000", + "0x480a7ffc7fff8000", + "0x480a7ffd7fff8000", + "0x1104800180018000", + "0x35b", + "0x20680017fff7ffe", + "0x4f", + "0x48127ffc7fff8000", + "0x48127ffc7fff8000", + "0x1104800180018000", + "0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffaa0", + "0x20680017fff7ffe", + "0x37", + "0x48127fec7fff8000", + "0x48127ffb7fff8000", + "0x48127ffb7fff8000", + "0x1104800180018000", + "0x387", + "0x20680017fff7ffa", + "0x20", + "0x20680017fff7ffd", + "0xe", + "0x48127ff97fff8000", + "0x480680017fff8000", + "0x0", + "0x48127ff97fff8000", + "0x48127ff97fff8000", + "0x480680017fff8000", + "0x0", + "0x48127fa67fff8000", + "0x48127fb47fff8000", + "0x48127ff77fff8000", + "0x48127ff77fff8000", + "0x208b7fff7fff7ffe", + "0x48127ff97fff8000", + "0x480680017fff8000", + "0x0", + "0x48127ff97fff8000", + "0x48127ff97fff8000", + "0x480680017fff8000", + "0x1", + "0x480680017fff8000", + "0x0", + "0x480680017fff8000", + "0x0", + "0x480680017fff8000", + "0x0", + "0x480680017fff8000", + "0x0", + "0x208b7fff7fff7ffe", + "0x48127ff97fff8000", + "0x480680017fff8000", + "0x1", + "0x480680017fff8000", + "0x0", + "0x480680017fff8000", + "0x0", + "0x480680017fff8000", + "0x0", + "0x480680017fff8000", + "0x0", + "0x480680017fff8000", + "0x0", + "0x48127ff77fff8000", + "0x48127ff77fff8000", + "0x208b7fff7fff7ffe", + "0x40780017fff7fff", + "0x45", + "0x48127fa77fff8000", + "0x480680017fff8000", + "0x0", + "0x48127fb57fff8000", + "0x48127fb57fff8000", + "0x480680017fff8000", + "0x1", + "0x480680017fff8000", + "0x0", + "0x480680017fff8000", + "0x0", + "0x480680017fff8000", + "0x0", + "0x480680017fff8000", + "0x0", + "0x208b7fff7fff7ffe", + "0x40780017fff7fff", + "0x54", + "0x48127fa77fff8000", + "0x480680017fff8000", + "0x0", + "0x48127fa67fff8000", + "0x48127fa67fff8000", + "0x480680017fff8000", + "0x1", + "0x480680017fff8000", + "0x0", + "0x480680017fff8000", + "0x0", + "0x480680017fff8000", + "0x0", + "0x480680017fff8000", + "0x0", + "0x208b7fff7fff7ffe", + "0x480a7ffc7fff8000", + "0x480a7ffd7fff8000", + "0x1104800180018000", + "0x277", + "0x20680017fff7ffd", + "0xa", + "0x48127ffb7fff8000", + "0x48127ffb7fff8000", + "0x480680017fff8000", + "0x0", + "0x480680017fff8000", + "0x0", + "0x480080017ffb8000", + "0x208b7fff7fff7ffe", + "0x48127ffb7fff8000", + "0x48127ffb7fff8000", + "0x480680017fff8000", + "0x1", + "0x48127ffb7fff8000", + "0x48127ffb7fff8000", + "0x208b7fff7fff7ffe", + "0xa0680017fff8000", + "0x16", + "0x480280007ffc8003", + "0x480280017ffc8003", + "0x4844800180017ffe", + "0x100000000000000000000000000000000", + "0x483180017ffd7ffd", + "0x482480017fff7ffd", + "0x800000000000010fffffffffffffffff7ffffffffffffef0000000000000001", + "0x20680017fff7ffc", + "0x6", + "0x402480017fff7ffd", + "0xffffffffffffffffffffffffffffffff", + "0x10780017fff7fff", + "0x4", + "0x402480017ffe7ffd", + "0xf7ffffffffffffef0000000000000000", + "0x400280027ffc7ffd", + "0x20680017fff7ffe", + "0xd", + "0x402780017fff7fff", + "0x1", + "0x400380007ffc7ffd", + "0x40780017fff7fff", + "0x5", + "0x482680017ffc8000", + "0x1", + "0x480a7ffd7fff8000", + "0x480680017fff8000", + "0x0", + "0x208b7fff7fff7ffe", + "0x482680017ffc8000", + "0x3", + "0x48127ffe7fff8000", + "0x48127ffc7fff8000", + "0x208b7fff7fff7ffe", + "0x48297ffd80017ffb", + "0xa0680017fff7fff", + "0x7", + "0x482480017fff8000", + "0x100000000000000000000000000000000", + "0x400280007ff97fff", + "0x10780017fff7fff", + "0x25", + "0x400280007ff97fff", + "0x482680017ff98000", + "0x1", + "0x48297ffd80007ffb", + "0x20680017fff7fff", + "0x4", + "0x10780017fff7fff", + "0x8", + "0x40780017fff7fff", + "0x3", + "0x48127ffb7fff8000", + "0x480680017fff8000", + "0x0", + "0x208b7fff7fff7ffe", + "0x48297ffc80017ffa", + "0xa0680017fff7fff", + "0x7", + "0x482480017fff8000", + "0x100000000000000000000000000000000", + "0x400080007ffb7fff", + "0x10780017fff7fff", + "0xa", + "0x400080007ffc7fff", + "0x40780017fff7fff", + "0x1", + "0x482480017ffb8000", + "0x1", + "0x480680017fff8000", + "0x0", + "0x208b7fff7fff7ffe", + "0x482480017ffb8000", + "0x1", + "0x480680017fff8000", + "0x1", + "0x208b7fff7fff7ffe", + "0x40780017fff7fff", + "0x4", + "0x482680017ff98000", + "0x1", + "0x480680017fff8000", + "0x1", + "0x208b7fff7fff7ffe", + "0x480a7ff97fff8000", + "0x480a7ffa7fff8000", + "0x480a7ffb7fff8000", + "0x480a7ffc7fff8000", + "0x480a7ffd7fff8000", + "0x1104800180018000", + "0x361", + "0x20680017fff7ffd", + "0xa", + "0x40780017fff7fff", + "0x2", + "0x48127ffa7fff8000", + "0x480680017fff8000", + "0x0", + "0x48127ffa7fff8000", + "0x48127ffa7fff8000", + "0x208b7fff7fff7ffe", + "0x40780017fff7fff", + "0x1", + "0x480680017fff8000", + "0x753235365f616464204f766572666c6f77", + "0x400080007ffe7fff", + "0x48127ffa7fff8000", + "0x480680017fff8000", + "0x1", + "0x48127ffc7fff8000", + "0x482480017ffb8000", + "0x1", + "0x208b7fff7fff7ffe", + "0x40780017fff7fff", + "0x1", + "0x480a7ff97fff8000", + "0x480a7ffa7fff8000", + "0x480a7ffb7fff8000", + "0x480a7ffc7fff8000", + "0x480a7ffd7fff8000", + "0x48127ffa7fff8000", + "0x48127ff97fff8000", + "0x1104800180018000", + "0x357", + "0x20680017fff7ffb", + "0xa", + "0x48127ff87fff8000", + "0x48127ff87fff8000", + "0x48127ff87fff8000", + "0x480680017fff8000", + "0x0", + "0x48127ffa7fff8000", + "0x48127ffa7fff8000", + "0x208b7fff7fff7ffe", + "0x48127ff87fff8000", + "0x48127ff87fff8000", + "0x48127ff87fff8000", + "0x480680017fff8000", + "0x1", + "0x48127ffa7fff8000", + "0x48127ffa7fff8000", + "0x208b7fff7fff7ffe", + "0x48297ffa80007ffb", + "0x400280007ffd7fff", + "0x480a7ff87fff8000", + "0x480a7ff97fff8000", + "0x480a7ffa7fff8000", + "0x480a7ffb7fff8000", + "0x480a7ffc7fff8000", + "0x482680017ffd8000", + "0x1", + "0x1104800180018000", + "0x3ab", + "0x208b7fff7fff7ffe", + "0x480a7ff87fff8000", + "0x480a7ff97fff8000", + "0x480a7ffa7fff8000", + "0x1104800180018000", + "0x18", + "0x20680017fff7ffd", + "0xc", + "0x48127ffa7fff8000", + "0x48127ffa7fff8000", + "0x48127ffa7fff8000", + "0x480a7ffb7fff8000", + "0x48127ffb7fff8000", + "0x480a7ffc7fff8000", + "0x480a7ffd7fff8000", + "0x1104800180018000", + "0x3e5", + "0x208b7fff7fff7ffe", + "0x40780017fff7fff", + "0x5f9", + "0x48127a017fff8000", + "0x48127a017fff8000", + "0x48127a017fff8000", + "0x480680017fff8000", + "0x1", + "0x48127a017fff8000", + "0x48127a017fff8000", + "0x208b7fff7fff7ffe", + "0x480680017fff8000", + "0x0", + "0x480680017fff8000", + "0x1cb7a9aaff41c0b6b725a32ac09f77cc95eea3ec2756a048c2e2e55d26fbbd0", + "0x480680017fff8000", + "0x53746f7261676552656164", + "0x400280007ffd7fff", + "0x400380017ffd7ffc", + "0x400280027ffd7ffd", + "0x400280037ffd7ffe", + "0x480280057ffd8000", + "0x20680017fff7fff", + "0x3a", + "0x480680017fff8000", + "0x1cb7a9aaff41c0b6b725a32ac09f77cc95eea3ec2756a048c2e2e55d26fbbd0", + "0x480280047ffd8000", + "0x480680017fff8000", + "0x0", + "0x482480017ffd8000", + "0x1", + "0x480280067ffd8000", + "0x480680017fff8000", + "0x53746f7261676552656164", + "0x400280077ffd7fff", + "0x400280087ffd7ffb", + "0x400280097ffd7ffc", + "0x4002800a7ffd7ffd", + "0x4802800c7ffd8000", + "0x20680017fff7fff", + "0x20", + "0x480a7ffb7fff8000", + "0x4802800b7ffd8000", + "0x482680017ffd8000", + "0xe", + "0x48127ffa7fff8000", + "0x4802800d7ffd8000", + "0x1104800180018000", + "0x445", + "0x20680017fff7ffd", + "0xc", + "0x48127ffa7fff8000", + "0x48127ffa7fff8000", + "0x48127ffa7fff8000", + "0x480680017fff8000", + "0x0", + "0x480680017fff8000", + "0x0", + "0x48127ffa7fff8000", + "0x10780017fff7fff", + "0x23", + "0x40780017fff7fff", + "0xb", + "0x48127fef7fff8000", + "0x48127fef7fff8000", + "0x48127fef7fff8000", + "0x480680017fff8000", + "0x1", + "0x48127fef7fff8000", + "0x48127fef7fff8000", + "0x208b7fff7fff7ffe", + "0x40780017fff7fff", + "0xc2", + "0x4802800b7ffd8000", + "0x482680017ffd8000", + "0xf", + "0x4802800d7ffd8000", + "0x4802800e7ffd8000", + "0x10780017fff7fff", + "0x9", + "0x40780017fff7fff", + "0xc9", + "0x480280047ffd8000", + "0x482680017ffd8000", + "0x8", + "0x480280067ffd8000", + "0x480280077ffd8000", + "0x480a7ffb7fff8000", + "0x48127ffb7fff8000", + "0x48127ffb7fff8000", + "0x480680017fff8000", + "0x1", + "0x48127ffa7fff8000", + "0x48127ffa7fff8000", + "0x1104800180018000", + "0x4bd", + "0x48127ff57fff8000", + "0x48127ff57fff8000", + "0x48127ff57fff8000", + "0x48127ffa7fff8000", + "0x48127ffa7fff8000", + "0x48127ffa7fff8000", + "0x208b7fff7fff7ffe", + "0x20780017fff7ff8", + "0xb", + "0x40780017fff7fff", + "0x1", + "0x480680017fff8000", + "0x0", + "0x480a7ff97fff8000", + "0x480a7ffa7fff8000", + "0x480a7ffb7fff8000", + "0x480a7ffc7fff8000", + "0x208b7fff7fff7ffe", + "0x40780017fff7fff", + "0x1", + "0x400180007fff7ffd", + "0x480680017fff8000", + "0x1", + "0x480680017fff8000", + "0x0", + "0x480680017fff8000", + "0x0", + "0x48127ffc7fff8000", + "0x482480017ffb8000", + "0x1", + "0x208b7fff7fff7ffe", + "0x400380007ffd7ffa", + "0x400380017ffd7ffb", + "0x480a7ffc7fff8000", + "0x482680017ffd8000", + "0x2", + "0x208b7fff7fff7ffe", + "0x48297ffc80007ffd", + "0x20680017fff7fff", + "0x4", + "0x10780017fff7fff", + "0xa", + "0x482680017ffc8000", + "0x1", + "0x480a7ffd7fff8000", + "0x480680017fff8000", + "0x0", + "0x480a7ffc7fff8000", + "0x10780017fff7fff", + "0x8", + "0x480a7ffc7fff8000", + "0x480a7ffd7fff8000", + "0x480680017fff8000", + "0x1", + "0x480680017fff8000", + "0x0", + "0x48127ffc7fff8000", + "0x48127ffc7fff8000", + "0x20680017fff7ffc", + "0x41", + "0x480a7ffb7fff8000", + "0x480080007ffc8000", + "0x1104800180018000", + "0x48a", + "0x20680017fff7ffe", + "0x36", + "0x48307fed80007fee", + "0x20680017fff7fff", + "0x4", + "0x10780017fff7fff", + "0xa", + "0x482480017fec8000", + "0x1", + "0x48127fec7fff8000", + "0x480680017fff8000", + "0x0", + "0x48127fe97fff8000", + "0x10780017fff7fff", + "0x8", + "0x48127fec7fff8000", + "0x48127fec7fff8000", + "0x480680017fff8000", + "0x1", + "0x480680017fff8000", + "0x0", + "0x48127ffc7fff8000", + "0x48127ffc7fff8000", + "0x20680017fff7ffc", + "0x13", + "0x48127ff67fff8000", + "0x480080007ffc8000", + "0x1104800180018000", + "0x46d", + "0x20680017fff7ffe", + "0xa", + "0x48127ffd7fff8000", + "0x48127ff07fff8000", + "0x48127ff07fff8000", + "0x480680017fff8000", + "0x0", + "0x48127fe77fff8000", + "0x48127ffa7fff8000", + "0x208b7fff7fff7ffe", + "0x48127ffd7fff8000", + "0x10780017fff7fff", + "0x5", + "0x40780017fff7fff", + "0xd", + "0x48127fe97fff8000", + "0x48127ff07fff8000", + "0x48127ff07fff8000", + "0x480680017fff8000", + "0x1", + "0x480680017fff8000", + "0x0", + "0x480680017fff8000", + "0x0", + "0x208b7fff7fff7ffe", + "0x40780017fff7fff", + "0x14", + "0x48127fe97fff8000", + "0x10780017fff7fff", + "0x5", + "0x40780017fff7fff", + "0x21", + "0x480a7ffb7fff8000", + "0x48127fdc7fff8000", + "0x48127fdc7fff8000", + "0x480680017fff8000", + "0x1", + "0x480680017fff8000", + "0x0", + "0x480680017fff8000", + "0x0", + "0x208b7fff7fff7ffe", + "0x40780017fff7fff", + "0x1", + "0x480a7ffa7fff8000", + "0x480a7ffc7fff8000", + "0x480a7ffd7fff8000", + "0x1104800180018000", + "0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffc90", + "0x1104800180018000", + "0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffcac", + "0x40137fea7fff8000", + "0x20680017fff7ffb", + "0x18", + "0x40780017fff7fff", + "0x1", + "0x400080007fff7ffb", + "0x400080017fff7ffc", + "0x400080027fff7ffd", + "0x400080037fff7ffe", + "0x480a7ff97fff8000", + "0x48127fe77fff8000", + "0x480a7ffb7fff8000", + "0x48127ffc7fff8000", + "0x482480017ffb8000", + "0x4", + "0x1104800180018000", + "0x44f", + "0x48127ffa7fff8000", + "0x48127ffa7fff8000", + "0x48127ffa7fff8000", + "0x480a80007fff8000", + "0x48127ff97fff8000", + "0x48127ff97fff8000", + "0x48127ff97fff8000", + "0x208b7fff7fff7ffe", + "0x480a7ff97fff8000", + "0x48127fe87fff8000", + "0x480a7ffb7fff8000", + "0x480a80007fff8000", + "0x480680017fff8000", + "0x1", + "0x48127ff97fff8000", + "0x48127ff97fff8000", + "0x208b7fff7fff7ffe", + "0x480a7ffd7fff8000", + "0x1104800180018000", + "0x460", + "0x480a7ffb7fff8000", + "0x480a7ffc7fff8000", + "0x480680017fff8000", + "0x5", + "0x48127ffb7fff8000", + "0x48127ffb7fff8000", + "0x1104800180018000", + "0xd5", + "0x20680017fff7ffd", + "0xb", + "0x48127ffb7fff8000", + "0x48127ffb7fff8000", + "0x480680017fff8000", + "0x0", + "0x480680017fff8000", + "0x0", + "0x480680017fff8000", + "0x0", + "0x208b7fff7fff7ffe", + "0x48127ffb7fff8000", + "0x48127ffb7fff8000", + "0x480680017fff8000", + "0x1", + "0x48127ffb7fff8000", + "0x48127ffb7fff8000", + "0x208b7fff7fff7ffe", + "0x480a7ff97fff8000", + "0x480a7ffa7fff8000", + "0x480a7ffc7fff8000", + "0x480a7ffd7fff8000", + "0x1104800180018000", + "0x444", + "0x20680017fff7ffd", + "0x21", + "0x48127ffa7fff8000", + "0x48127ffa7fff8000", + "0x480a7ffb7fff8000", + "0x48127ff97fff8000", + "0x480a7ffd7fff8000", + "0x1104800180018000", + "0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffffac", + "0x20680017fff7ffd", + "0xf", + "0x48127ffa7fff8000", + "0x48127ffb7fff8000", + "0x48127ffd7fff8000", + "0x1104800180018000", + "0x498", + "0x48127f9b7fff8000", + "0x48127ffa7fff8000", + "0x48127f9b7fff8000", + "0x48127ff97fff8000", + "0x48127ff97fff8000", + "0x48127ff97fff8000", + "0x48127ff97fff8000", + "0x208b7fff7fff7ffe", + "0x48127ff97fff8000", + "0x48127ff97fff8000", + "0x48127ff97fff8000", + "0x48127ff97fff8000", + "0x480680017fff8000", + "0x1", + "0x48127ff97fff8000", + "0x48127ff97fff8000", + "0x208b7fff7fff7ffe", + "0x48127ffa7fff8000", + "0x48127ffa7fff8000", + "0x480a7ffb7fff8000", + "0x48127ff97fff8000", + "0x480680017fff8000", + "0x1", + "0x48127ff97fff8000", + "0x48127ff97fff8000", + "0x208b7fff7fff7ffe", + "0x480a7ff97fff8000", + "0x480a7ffb7fff8000", + "0x480a7ffd7fff8000", + "0x1104800180018000", + "0x496", + "0x480680017fff8000", + "0x0", + "0x480680017fff8000", + "0x53746f7261676552656164", + "0x400280007ffc7fff", + "0x400380017ffc7ffa", + "0x400280027ffc7ffe", + "0x400280037ffc7ffd", + "0x480280057ffc8000", + "0x20680017fff7fff", + "0x19", + "0x480280067ffc8000", + "0x480280047ffc8000", + "0x482680017ffc8000", + "0x7", + "0x20680017fff7ffd", + "0x6", + "0x480680017fff8000", + "0x1", + "0x10780017fff7fff", + "0x4", + "0x480680017fff8000", + "0x0", + "0x480680017fff8000", + "0x1", + "0x48127ffc7fff8000", + "0x48127ffc7fff8000", + "0x480680017fff8000", + "0x0", + "0x480680017fff8000", + "0x0", + "0x48307ffa80007ffb", + "0x10780017fff7fff", + "0xb", + "0x40780017fff7fff", + "0x5", + "0x480280047ffc8000", + "0x482680017ffc8000", + "0x8", + "0x480680017fff8000", + "0x1", + "0x480280067ffc8000", + "0x480280077ffc8000", + "0x1104800180018000", + "0x491", + "0x48127feb7fff8000", + "0x48127ff57fff8000", + "0x48127fea7fff8000", + "0x48127ff47fff8000", + "0x48127ff97fff8000", + "0x48127ff97fff8000", + "0x48127ff97fff8000", + "0x208b7fff7fff7ffe", + "0x480a7ff97fff8000", + "0x480a7ffa7fff8000", + "0x480a7ffb7fff8000", + "0x480a7ffc7fff8000", + "0x480a7ffd7fff8000", + "0x480680017fff8000", + "0x1", + "0x1104800180018000", + "0x48d", + "0x20680017fff7ffd", + "0xd", + "0x48127ff97fff8000", + "0x48127ff97fff8000", + "0x48127ff97fff8000", + "0x48127ff97fff8000", + "0x480680017fff8000", + "0x0", + "0x480680017fff8000", + "0x0", + "0x480680017fff8000", + "0x0", + "0x208b7fff7fff7ffe", + "0x48127ff97fff8000", + "0x48127ff97fff8000", + "0x48127ff97fff8000", + "0x48127ff97fff8000", + "0x480680017fff8000", + "0x1", + "0x48127ff97fff8000", + "0x48127ff97fff8000", + "0x208b7fff7fff7ffe", + "0x480680017fff8000", + "0x476574457865637574696f6e496e666f", + "0x400280007ffd7fff", + "0x400380017ffd7ffc", + "0x480280037ffd8000", + "0x20680017fff7fff", + "0xc", + "0x480280027ffd8000", + "0x482680017ffd8000", + "0x5", + "0x480680017fff8000", + "0x0", + "0x480680017fff8000", + "0x0", + "0x480280047ffd8000", + "0x10780017fff7fff", + "0x9", + "0x480280027ffd8000", + "0x482680017ffd8000", + "0x6", + "0x480680017fff8000", + "0x1", + "0x480280047ffd8000", + "0x480280057ffd8000", + "0x1104800180018000", + "0x498", + "0x48127ff67fff8000", + "0x48127ff67fff8000", + "0x48127ffb7fff8000", + "0x48127ffb7fff8000", + "0x48127ffb7fff8000", + "0x208b7fff7fff7ffe", + "0x20780017fff7ffa", + "0xb", + "0x40780017fff7fff", + "0x1", + "0x480680017fff8000", + "0x0", + "0x480680017fff8000", + "0x0", + "0x480680017fff8000", + "0x0", + "0x208b7fff7fff7ffe", + "0x40780017fff7fff", + "0x1", + "0x400180007fff7ffd", + "0x480680017fff8000", + "0x1", + "0x48127ffe7fff8000", + "0x482480017ffd8000", + "0x1", + "0x208b7fff7fff7ffe", + "0x480680017fff8000", + "0x0", + "0x480a7ffd7fff8000", + "0x208b7fff7fff7ffe", + "0x480a7ffb7fff8000", + "0x480a7ffc7fff8000", + "0x480a7ffd7fff8000", + "0x1104800180018000", + "0x482", + "0x40780017fff7fff", + "0x1", + "0x40780017fff7fff", + "0x1", + "0x48127ffb7fff8000", + "0x48127ffb7fff8000", + "0x48127ffb7fff8000", + "0x48127ffb7fff8000", + "0x48127ffa7fff8000", + "0x48127ffa7fff8000", + "0x48127ff97fff8000", + "0x1104800180018000", + "0x479", + "0x48127ffc7fff8000", + "0x48127ffc7fff8000", + "0x48127ffc7fff8000", + "0x48127ffc7fff8000", + "0x480680017fff8000", + "0x456d69744576656e74", + "0x400280007ffa7fff", + "0x400380017ffa7ff9", + "0x400280027ffa7ffb", + "0x400280037ffa7ffc", + "0x400280047ffa7ffd", + "0x400280057ffa7ffe", + "0x480280077ffa8000", + "0x20680017fff7fff", + "0xd", + "0x480280067ffa8000", + "0x482680017ffa8000", + "0x8", + "0x480680017fff8000", + "0x0", + "0x480680017fff8000", + "0x0", + "0x480680017fff8000", + "0x0", + "0x10780017fff7fff", + "0x9", + "0x480280067ffa8000", + "0x482680017ffa8000", + "0xa", + "0x480680017fff8000", + "0x1", + "0x480280087ffa8000", + "0x480280097ffa8000", + "0x1104800180018000", + "0x47b", + "0x20680017fff7ffd", + "0xb", + "0x48127ff67fff8000", + "0x48127ff67fff8000", + "0x480680017fff8000", + "0x0", + "0x480680017fff8000", + "0x0", + "0x480680017fff8000", + "0x0", + "0x208b7fff7fff7ffe", + "0x48127ff67fff8000", + "0x48127ff67fff8000", + "0x480680017fff8000", + "0x1", + "0x48127ffb7fff8000", + "0x48127ffb7fff8000", + "0x208b7fff7fff7ffe", + "0x480a7ffc7fff8000", + "0x480a7ffd7fff8000", + "0x1104800180018000", + "0x800000000000010fffffffffffffffffffffffffffffffffffffffffffff749", + "0x20680017fff7ffe", + "0x2b", + "0xa0680017fff8004", + "0xe", + "0x4824800180047ffe", + "0x800000000000000000000000000000000000000000000000000000000000000", + "0x484480017ffe8000", + "0x110000000000000000", + "0x48307ffe7fff8002", + "0x480280007ffb7ffc", + "0x480280017ffb7ffc", + "0x402480017ffb7ffd", + "0xffffffffffffffeeffffffffffffffff", + "0x400280027ffb7ffd", + "0x10780017fff7fff", + "0x14", + "0x484480017fff8001", + "0x8000000000000000000000000000000", + "0x48307fff80007ffd", + "0x480280007ffb7ffd", + "0x480280017ffb7ffd", + "0x402480017ffc7ffe", + "0xf8000000000000000000000000000000", + "0x400280027ffb7ffe", + "0x40780017fff7fff", + "0x1", + "0x482680017ffb8000", + "0x3", + "0x48127ff57fff8000", + "0x48127ff57fff8000", + "0x480680017fff8000", + "0x0", + "0x48127ff57fff8000", + "0x208b7fff7fff7ffe", + "0x482680017ffb8000", + "0x3", + "0x48127ff57fff8000", + "0x48127ff57fff8000", + "0x480680017fff8000", + "0x1", + "0x480680017fff8000", + "0x0", + "0x208b7fff7fff7ffe", + "0x40780017fff7fff", + "0x6", + "0x480a7ffb7fff8000", + "0x48127ff57fff8000", + "0x48127ff57fff8000", + "0x480680017fff8000", + "0x1", + "0x480680017fff8000", + "0x0", + "0x208b7fff7fff7ffe", + "0x48297ffc80007ffd", + "0x20680017fff7fff", + "0x4", + "0x10780017fff7fff", + "0xa", + "0x482680017ffc8000", + "0x1", + "0x480a7ffd7fff8000", + "0x480680017fff8000", + "0x0", + "0x480a7ffc7fff8000", + "0x10780017fff7fff", + "0x8", + "0x480a7ffc7fff8000", + "0x480a7ffd7fff8000", + "0x480680017fff8000", + "0x1", + "0x480680017fff8000", + "0x0", + "0x48127ffc7fff8000", + "0x48127ffc7fff8000", + "0x20680017fff7ffc", + "0x7d", + "0x480a7ffb7fff8000", + "0x480080007ffc8000", + "0x1104800180018000", + "0x423", + "0x20680017fff7ffe", + "0x69", + "0x480680017fff8000", + "0x0", + "0x48307feb80007fec", + "0x48307ffd7ffe8000", + "0xa0680017fff8000", + "0x8", + "0x482480017ffd8000", + "0x1", + "0x48307fff80007ffd", + "0x400080007ff77fff", + "0x10780017fff7fff", + "0x48", + "0x48307ffe80007ffd", + "0x400080007ff87fff", + "0x482480017ff88000", + "0x1", + "0x48307fe680007fe7", + "0x48127ff87fff8000", + "0x1104800180018000", + "0x432", + "0x48307fe57fd18000", + "0x48307fe67fd08000", + "0x20680017fff7ffb", + "0x2e", + "0x48307fcf80007fd0", + "0x48307ffc7fe18000", + "0xa0680017fff8000", + "0x8", + "0x482480017ffd8000", + "0x1", + "0x48307fff80007ffd", + "0x400080007ff57fff", + "0x10780017fff7fff", + "0x11", + "0x48307ffe80007ffd", + "0x400080007ff67fff", + "0x40780017fff7fff", + "0x3", + "0x482480017ff38000", + "0x1", + "0x480680017fff8000", + "0x0", + "0x48307fd97fc68000", + "0x48307ff77fc58000", + "0x480680017fff8000", + "0x0", + "0x48127ff27fff8000", + "0x48127ff27fff8000", + "0x208b7fff7fff7ffe", + "0x40780017fff7fff", + "0x1", + "0x480680017fff8000", + "0x496e646578206f7574206f6620626f756e6473", + "0x400080007ffe7fff", + "0x482480017ff38000", + "0x1", + "0x480680017fff8000", + "0x1", + "0x480680017fff8000", + "0x0", + "0x480680017fff8000", + "0x0", + "0x480680017fff8000", + "0x0", + "0x48127ff97fff8000", + "0x482480017ff88000", + "0x1", + "0x208b7fff7fff7ffe", + "0x40780017fff7fff", + "0x7", + "0x48127ff37fff8000", + "0x480680017fff8000", + "0x1", + "0x480680017fff8000", + "0x0", + "0x480680017fff8000", + "0x0", + "0x480680017fff8000", + "0x0", + "0x48127ff07fff8000", + "0x48127ff07fff8000", + "0x208b7fff7fff7ffe", + "0x40780017fff7fff", + "0x1c", + "0x40780017fff7fff", + "0x1", + "0x480680017fff8000", + "0x496e646578206f7574206f6620626f756e6473", + "0x400080007ffe7fff", + "0x482480017fd98000", + "0x1", + "0x480680017fff8000", + "0x1", + "0x480680017fff8000", + "0x0", + "0x480680017fff8000", + "0x0", + "0x480680017fff8000", + "0x0", + "0x48127ff97fff8000", + "0x482480017ff88000", + "0x1", + "0x208b7fff7fff7ffe", + "0x40780017fff7fff", + "0x24", + "0x48127fd97fff8000", + "0x480680017fff8000", + "0x0", + "0x48127fca7fff8000", + "0x48127fca7fff8000", + "0x480680017fff8000", + "0x1", + "0x480680017fff8000", + "0x0", + "0x480680017fff8000", + "0x0", + "0x208b7fff7fff7ffe", + "0x40780017fff7fff", + "0x32", + "0x480a7ffb7fff8000", + "0x480680017fff8000", + "0x0", + "0x48127fca7fff8000", + "0x48127fca7fff8000", + "0x480680017fff8000", + "0x1", + "0x480680017fff8000", + "0x0", + "0x480680017fff8000", + "0x0", + "0x208b7fff7fff7ffe", + "0x480a7ff97fff8000", + "0x480a7ffa7fff8000", + "0x480a7ffb7fff8000", + "0x480a7ffc7fff8000", + "0x480a7ffd7fff8000", + "0x1104800180018000", + "0x3dd", + "0x20680017fff7fff", + "0x8", + "0x48127ffc7fff8000", + "0x480680017fff8000", + "0x0", + "0x48127ffb7fff8000", + "0x48127ffb7fff8000", + "0x208b7fff7fff7ffe", + "0x48127ffc7fff8000", + "0x480680017fff8000", + "0x1", + "0x480680017fff8000", + "0x0", + "0x480680017fff8000", + "0x0", + "0x208b7fff7fff7ffe", + "0x1104800180018000", + "0xb59", + "0x482480017fff8000", + "0xb58", + "0x480080007fff8000", + "0xa0680017fff8000", + "0x9", + "0x4825800180007ff8", + "0x40ba", + "0x482480017fff8000", + "0x100000000000000000000000000000000", + "0x400280007ff77fff", + "0x10780017fff7fff", + "0x52", + "0x4825800180007ff8", + "0x40ba", + "0x400280007ff77fff", + "0x482680017ff78000", + "0x1", + "0x48297ffa80007ffb", + "0x20680017fff7fff", + "0x4", + "0x10780017fff7fff", + "0xd", + "0x482680017ffa8000", + "0x4", + "0x480a7ffb7fff8000", + "0x480680017fff8000", + "0x0", + "0x480280007ffa8000", + "0x480280017ffa8000", + "0x480280027ffa8000", + "0x480280037ffa8000", + "0x10780017fff7fff", + "0xe", + "0x480a7ffa7fff8000", + "0x480a7ffb7fff8000", + "0x480680017fff8000", + "0x1", + "0x480680017fff8000", + "0x0", + "0x480680017fff8000", + "0x0", + "0x480680017fff8000", + "0x0", + "0x480680017fff8000", + "0x0", + "0x20680017fff7ffb", + "0x25", + "0x48127ff67fff8000", + "0x480a7ff97fff8000", + "0x48127ffa7fff8000", + "0x48127ffa7fff8000", + "0x48127ffa7fff8000", + "0x48127ffa7fff8000", + "0x1104800180018000", + "0x3d6", + "0x20680017fff7ffd", + "0xf", + "0x400280007ffd7ffe", + "0x400280017ffd7fff", + "0x48127fde7fff8000", + "0x48127ffa7fff8000", + "0x48127ffa7fff8000", + "0x48127fdd7fff8000", + "0x48127fdd7fff8000", + "0x480a7ffc7fff8000", + "0x482680017ffd8000", + "0x2", + "0x1104800180018000", + "0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffffbc", + "0x208b7fff7fff7ffe", + "0x48127fde7fff8000", + "0x48127ffa7fff8000", + "0x48127ffa7fff8000", + "0x480680017fff8000", + "0x1", + "0x480680017fff8000", + "0x0", + "0x480680017fff8000", + "0x0", + "0x48127ff87fff8000", + "0x48127ff87fff8000", + "0x208b7fff7fff7ffe", + "0x48127ff77fff8000", + "0x48127ff57fff8000", + "0x480a7ff97fff8000", + "0x480680017fff8000", + "0x0", + "0x48127ff57fff8000", + "0x48127ff57fff8000", + "0x480a7ffc7fff8000", + "0x480a7ffd7fff8000", + "0x208b7fff7fff7ffe", + "0x40780017fff7fff", + "0x1", + "0x480680017fff8000", + "0x4f7574206f6620676173", + "0x400080007ffe7fff", + "0x482680017ff78000", + "0x1", + "0x480a7ff87fff8000", + "0x480a7ff97fff8000", + "0x480680017fff8000", + "0x1", + "0x480680017fff8000", + "0x0", + "0x480680017fff8000", + "0x0", + "0x48127ff87fff8000", + "0x482480017ff78000", + "0x1", + "0x208b7fff7fff7ffe", + "0x1104800180018000", + "0xae8", + "0x482480017fff8000", + "0xae7", + "0x480080007fff8000", + "0xa0680017fff8000", + "0x9", + "0x4825800180007ff9", + "0xcc6", + "0x482480017fff8000", + "0x100000000000000000000000000000000", + "0x400280007ff87fff", + "0x10780017fff7fff", + "0x31", + "0x4825800180007ff9", + "0xcc6", + "0x400280007ff87fff", + "0x482680017ff88000", + "0x1", + "0x48297ffa80007ffb", + "0x20680017fff7fff", + "0x4", + "0x10780017fff7fff", + "0xa", + "0x482680017ffa8000", + "0x1", + "0x480a7ffb7fff8000", + "0x480680017fff8000", + "0x0", + "0x480a7ffa7fff8000", + "0x10780017fff7fff", + "0x8", + "0x480a7ffa7fff8000", + "0x480a7ffb7fff8000", + "0x480680017fff8000", + "0x1", + "0x480680017fff8000", + "0x0", + "0x20680017fff7ffe", + "0x10", + "0x480080007fff8000", + "0x480a7ffc7fff8000", + "0x480a7ffd7fff8000", + "0x1104800180018000", + "0x800000000000010fffffffffffffffffffffffffffffffffffffffffffff5ba", + "0x48127ff37fff8000", + "0x48127ff17fff8000", + "0x48127ff37fff8000", + "0x48127ff37fff8000", + "0x48127ffa7fff8000", + "0x48127ffa7fff8000", + "0x1104800180018000", + "0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffffce", + "0x208b7fff7fff7ffe", + "0x48127ffa7fff8000", + "0x48127ff87fff8000", + "0x480680017fff8000", + "0x0", + "0x480a7ffc7fff8000", + "0x480a7ffd7fff8000", + "0x208b7fff7fff7ffe", + "0x40780017fff7fff", + "0x1", + "0x480680017fff8000", + "0x4f7574206f6620676173", + "0x400080007ffe7fff", + "0x482680017ff88000", + "0x1", + "0x480a7ff97fff8000", + "0x480680017fff8000", + "0x1", + "0x48127ffb7fff8000", + "0x482480017ffa8000", + "0x1", + "0x208b7fff7fff7ffe", + "0x480a7ff77fff8000", + "0x480a7ffc7fff8000", + "0x480a7ffd7fff8000", + "0x1104800180018000", + "0x371", + "0x20680017fff7ffa", + "0x7c", + "0x48127ff77fff8000", + "0x48127ffa7fff8000", + "0x48127ffa7fff8000", + "0x1104800180018000", + "0x3bd", + "0x20680017fff7fff", + "0xe", + "0x40780017fff7fff", + "0x539", + "0x48127ac57fff8000", + "0x480a7ff87fff8000", + "0x480a7ff97fff8000", + "0x480680017fff8000", + "0x0", + "0x480680017fff8000", + "0x0", + "0x480680017fff8000", + "0x0", + "0x208b7fff7fff7ffe", + "0x48127ffe7fff8000", + "0x48127fcb7fff8000", + "0x48127fcb7fff8000", + "0x1104800180018000", + "0x3aa", + "0x20680017fff7fff", + "0xe", + "0x40780017fff7fff", + "0x508", + "0x48127af67fff8000", + "0x480a7ff87fff8000", + "0x480a7ff97fff8000", + "0x480680017fff8000", + "0x0", + "0x480680017fff8000", + "0x0", + "0x480680017fff8000", + "0x0", + "0x208b7fff7fff7ffe", + "0x48127ffe7fff8000", + "0x480a7ffa7fff8000", + "0x1104800180018000", + "0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffb43", + "0x48127ffd7fff8000", + "0x480a7ff87fff8000", + "0x480a7ff97fff8000", + "0x48127ffb7fff8000", + "0x48127ffb7fff8000", + "0x48127f877fff8000", + "0x48127f877fff8000", + "0x48127f877fff8000", + "0x48127f877fff8000", + "0x48127f877fff8000", + "0x1104800180018000", + "0x3a6", + "0x20680017fff7ffd", + "0x3a", + "0x20680017fff7ffe", + "0x28", + "0x48127ffb7fff8000", + "0x48127ffb7fff8000", + "0x48127ffd7fff8000", + "0x480a7ffb7fff8000", + "0x1104800180018000", + "0x515", + "0x20680017fff7ffd", + "0x18", + "0x20680017fff7fff", + "0xc", + "0x48127f837fff8000", + "0x48127ffa7fff8000", + "0x48127ffa7fff8000", + "0x480680017fff8000", + "0x0", + "0x480680017fff8000", + "0x0", + "0x480680017fff8000", + "0x0", + "0x208b7fff7fff7ffe", + "0x48127f837fff8000", + "0x48127ffa7fff8000", + "0x48127ffa7fff8000", + "0x480680017fff8000", + "0x0", + "0x480680017fff8000", + "0x0", + "0x480680017fff8000", + "0x1", + "0x208b7fff7fff7ffe", + "0x48127f837fff8000", + "0x48127ffa7fff8000", + "0x48127ffa7fff8000", + "0x480680017fff8000", + "0x1", + "0x48127ffa7fff8000", + "0x48127ffa7fff8000", + "0x208b7fff7fff7ffe", + "0x40780017fff7fff", + "0x75", + "0x40780017fff7fff", + "0x1", + "0x480680017fff8000", + "0x4f7074696f6e3a3a756e77726170206661696c65642e", + "0x400080007ffe7fff", + "0x48127f837fff8000", + "0x48127f837fff8000", + "0x48127f837fff8000", + "0x480680017fff8000", + "0x1", + "0x48127ffa7fff8000", + "0x482480017ff98000", + "0x1", + "0x208b7fff7fff7ffe", + "0x40780017fff7fff", + "0x77", + "0x48127f837fff8000", + "0x48127f837fff8000", + "0x48127f837fff8000", + "0x480680017fff8000", + "0x1", + "0x48127f837fff8000", + "0x48127f837fff8000", + "0x208b7fff7fff7ffe", + "0x40780017fff7fff", + "0x568", + "0x40780017fff7fff", + "0x1", + "0x480680017fff8000", + "0x5369676e61747572653a20496e76616c696420666f726d61742e", + "0x400080007ffe7fff", + "0x48127a8d7fff8000", + "0x480a7ff87fff8000", + "0x480a7ff97fff8000", + "0x480680017fff8000", + "0x1", + "0x48127ffa7fff8000", + "0x482480017ff98000", + "0x1", + "0x208b7fff7fff7ffe", + "0x480a7ff97fff8000", + "0x480a7ffd7fff8000", + "0x1104800180018000", + "0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffadf", + "0x48127ffd7fff8000", + "0x480a7ffc7fff8000", + "0x1104800180018000", + "0xae", + "0x20680017fff7ffe", + "0x8f", + "0x48127ffd7fff8000", + "0x48127ff07fff8000", + "0x48127ff07fff8000", + "0x480680017fff8000", + "0x2", + "0x480680017fff8000", + "0x0", + "0x1104800180018000", + "0x4f8", + "0x20680017fff7ffd", + "0x7a", + "0x48127ffe7fff8000", + "0x48127ffe7fff8000", + "0x1104800180018000", + "0x545", + "0x20680017fff7ffe", + "0x64", + "0x48127ff57fff8000", + "0x48127fae7fff8000", + "0x48127fae7fff8000", + "0x480680017fff8000", + "0x2", + "0x480680017fff8000", + "0x0", + "0x1104800180018000", + "0x549", + "0x20680017fff7ffd", + "0x4f", + "0x48127ffe7fff8000", + "0x48127ffe7fff8000", + "0x480680017fff8000", + "0x1", + "0x480680017fff8000", + "0x0", + "0x1104800180018000", + "0x592", + "0x48127f707fff8000", + "0x48127fb17fff8000", + "0x480680017fff8000", + "0x536563703235366b31476574506f696e7446726f6d58", + "0x400280007ffb7fff", + "0x400380017ffb7ffa", + "0x400280027ffb7ffd", + "0x400280037ffb7ffe", + "0x400280047ffb7ffc", + "0x480280067ffb8000", + "0x20680017fff7fff", + "0xb", + "0x480280057ffb8000", + "0x482680017ffb8000", + "0x9", + "0x480680017fff8000", + "0x0", + "0x480280077ffb8000", + "0x480280087ffb8000", + "0x10780017fff7fff", + "0x9", + "0x480280057ffb8000", + "0x482680017ffb8000", + "0x9", + "0x480680017fff8000", + "0x1", + "0x480280077ffb8000", + "0x480280087ffb8000", + "0x1104800180018000", + "0x800000000000010fffffffffffffffffffffffffffffffffffffffffffff929", + "0x20680017fff7ffd", + "0x1d", + "0x20680017fff7ffe", + "0xd", + "0x40780017fff7fff", + "0x2", + "0x48127fda7fff8000", + "0x48127ff37fff8000", + "0x48127ff37fff8000", + "0x480680017fff8000", + "0x0", + "0x480680017fff8000", + "0x0", + "0x48127ff87fff8000", + "0x208b7fff7fff7ffe", + "0x40780017fff7fff", + "0x1", + "0x480680017fff8000", + "0x536563703235366b31506f696e743a20496e76616c696420706f696e742e", + "0x400080007ffe7fff", + "0x48127fda7fff8000", + "0x48127ff37fff8000", + "0x48127ff37fff8000", + "0x480680017fff8000", + "0x1", + "0x48127ffa7fff8000", + "0x482480017ff98000", + "0x1", + "0x208b7fff7fff7ffe", + "0x40780017fff7fff", + "0x2", + "0x48127fda7fff8000", + "0x48127ff37fff8000", + "0x48127ff37fff8000", + "0x480680017fff8000", + "0x1", + "0x48127ff87fff8000", + "0x48127ff87fff8000", + "0x208b7fff7fff7ffe", + "0x40780017fff7fff", + "0x22", + "0x48127fda7fff8000", + "0x480a7ffa7fff8000", + "0x480a7ffb7fff8000", + "0x480680017fff8000", + "0x1", + "0x48127fd87fff8000", + "0x48127fd87fff8000", + "0x208b7fff7fff7ffe", + "0x40780017fff7fff", + "0x5b", + "0x40780017fff7fff", + "0x1", + "0x480680017fff8000", + "0x4f7074696f6e3a3a756e77726170206661696c65642e", + "0x400080007ffe7fff", + "0x48127f987fff8000", + "0x480a7ffa7fff8000", + "0x480a7ffb7fff8000", + "0x480680017fff8000", + "0x1", + "0x48127ffa7fff8000", + "0x482480017ff98000", + "0x1", + "0x208b7fff7fff7ffe", + "0x40780017fff7fff", + "0x64", + "0x48127f987fff8000", + "0x480a7ffa7fff8000", + "0x480a7ffb7fff8000", + "0x480680017fff8000", + "0x1", + "0x48127f967fff8000", + "0x48127f967fff8000", + "0x208b7fff7fff7ffe", + "0x40780017fff7fff", + "0x9d", + "0x40780017fff7fff", + "0x1", + "0x480680017fff8000", + "0x4f7074696f6e3a3a756e77726170206661696c65642e", + "0x400080007ffe7fff", + "0x48127f5e7fff8000", + "0x480a7ffa7fff8000", + "0x480a7ffb7fff8000", + "0x480680017fff8000", + "0x1", + "0x48127ffa7fff8000", + "0x482480017ff98000", + "0x1", + "0x208b7fff7fff7ffe", + "0x20780017fff7ffb", + "0x8", + "0x480680017fff8000", + "0x0", + "0x480680017fff8000", + "0x0", + "0x480a7ffd7fff8000", + "0x208b7fff7fff7ffe", + "0x480680017fff8000", + "0x1", + "0x480a7ffc7fff8000", + "0x480a7ffd7fff8000", + "0x208b7fff7fff7ffe", + "0xa0680017fff8000", + "0x16", + "0x480280007ffc8003", + "0x480280017ffc8003", + "0x4844800180017ffe", + "0x100000000000000000000000000000000", + "0x483180017ffd7ffd", + "0x482480017fff7ffd", + "0x800000000000010fffffffffffffffff7ffffffffffffef0000000000000001", + "0x20680017fff7ffc", + "0x6", + "0x402480017fff7ffd", + "0xffffffffffffffffffffffffffffffff", + "0x10780017fff7fff", + "0x4", + "0x402480017ffe7ffd", + "0xf7ffffffffffffef0000000000000000", + "0x400280027ffc7ffd", + "0x20680017fff7ffe", + "0xd", + "0x402780017fff7fff", + "0x1", + "0x400380007ffc7ffd", + "0x40780017fff7fff", + "0x5", + "0x482680017ffc8000", + "0x1", + "0x480680017fff8000", + "0x0", + "0x480a7ffd7fff8000", + "0x208b7fff7fff7ffe", + "0x482680017ffc8000", + "0x3", + "0x480680017fff8000", + "0x1", + "0x480680017fff8000", + "0x0", + "0x208b7fff7fff7ffe", + "0x1104800180018000", + "0x932", + "0x482480017fff8000", + "0x931", + "0x480a7ff97fff8000", + "0x480a7ffa7fff8000", + "0x480a7ffb7fff8000", + "0x480080007ffc8000", + "0x480680017fff8000", + "0x0", + "0x480680017fff8000", + "0x0", + "0x480680017fff8000", + "0x0", + "0x480a7ffc7fff8000", + "0x480a7ffd7fff8000", + "0x1104800180018000", + "0x4e4", + "0x20680017fff7ffc", + "0xb", + "0x48127ff97fff8000", + "0x48127ff97fff8000", + "0x48127ff97fff8000", + "0x480680017fff8000", + "0x0", + "0x480680017fff8000", + "0x0", + "0x48127ffa7fff8000", + "0x208b7fff7fff7ffe", + "0x48127ff97fff8000", + "0x48127ff97fff8000", + "0x48127ff97fff8000", + "0x480680017fff8000", + "0x1", + "0x48127ffa7fff8000", + "0x48127ffa7fff8000", + "0x208b7fff7fff7ffe", + "0x480680017fff8000", + "0x1", + "0x480a7ffd7fff8000", + "0x208b7fff7fff7ffe", + "0x480a7ffa7fff8000", + "0x480a7ffb7fff8000", + "0x480a7ffc7fff8000", + "0x480a7ffd7fff8000", + "0x1104800180018000", + "0x58f", + "0x20680017fff7ffd", + "0x54", + "0x480680017fff8000", + "0x0", + "0x480680017fff8000", + "0x1cb7a9aaff41c0b6b725a32ac09f77cc95eea3ec2756a048c2e2e55d26fbbd0", + "0x480680017fff8000", + "0x53746f726167655772697465", + "0x400080007ff97fff", + "0x400080017ff97ff8", + "0x400080027ff97ffd", + "0x400080037ff97ffe", + "0x400080047ff97ffb", + "0x480080067ff98000", + "0x20680017fff7fff", + "0x27", + "0x480680017fff8000", + "0x1cb7a9aaff41c0b6b725a32ac09f77cc95eea3ec2756a048c2e2e55d26fbbd0", + "0x480080057ff78000", + "0x480680017fff8000", + "0x0", + "0x482480017ffd8000", + "0x1", + "0x480680017fff8000", + "0x53746f726167655772697465", + "0x400080077ff37fff", + "0x400080087ff37ffc", + "0x400080097ff37ffd", + "0x4000800a7ff37ffe", + "0x4000800b7ff37ff6", + "0x4800800d7ff38000", + "0x20680017fff7fff", + "0xd", + "0x4800800c7ff28000", + "0x482480017ff18000", + "0xe", + "0x480680017fff8000", + "0x0", + "0x480680017fff8000", + "0x0", + "0x480680017fff8000", + "0x0", + "0x10780017fff7fff", + "0x9", + "0x4800800c7ff28000", + "0x482480017ff18000", + "0x10", + "0x480680017fff8000", + "0x1", + "0x4800800e7fef8000", + "0x4800800f7fee8000", + "0x10780017fff7fff", + "0xb", + "0x40780017fff7fff", + "0x6", + "0x480080057ff28000", + "0x482480017ff18000", + "0x9", + "0x480680017fff8000", + "0x1", + "0x480080077fef8000", + "0x480080087fee8000", + "0x1104800180018000", + "0xe3", + "0x20680017fff7ffd", + "0xc", + "0x48127fe67fff8000", + "0x48127ff57fff8000", + "0x48127ff57fff8000", + "0x480680017fff8000", + "0x0", + "0x480680017fff8000", + "0x0", + "0x480680017fff8000", + "0x0", + "0x208b7fff7fff7ffe", + "0x48127fe67fff8000", + "0x48127ff57fff8000", + "0x48127ff57fff8000", + "0x480680017fff8000", + "0x1", + "0x48127ffa7fff8000", + "0x48127ffa7fff8000", + "0x208b7fff7fff7ffe", + "0x40780017fff7fff", + "0x14", + "0x48127fe67fff8000", + "0x48127fe67fff8000", + "0x48127fe67fff8000", + "0x480680017fff8000", + "0x1", + "0x48127fe67fff8000", + "0x48127fe67fff8000", + "0x208b7fff7fff7ffe", + "0x480a7ffd7fff8000", + "0x1104800180018000", + "0x576", + "0x480a7ffb7fff8000", + "0x480a7ffc7fff8000", + "0x480680017fff8000", + "0x5", + "0x48127ffb7fff8000", + "0x48127ffb7fff8000", + "0x1104800180018000", + "0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffc0d", + "0x20680017fff7ffd", + "0xb", + "0x48127ffb7fff8000", + "0x48127ffb7fff8000", + "0x480680017fff8000", + "0x0", + "0x480680017fff8000", + "0x0", + "0x480680017fff8000", + "0x0", + "0x208b7fff7fff7ffe", + "0x48127ffb7fff8000", + "0x48127ffb7fff8000", + "0x480680017fff8000", + "0x1", + "0x48127ffb7fff8000", + "0x48127ffb7fff8000", + "0x208b7fff7fff7ffe", + "0x480680017fff8000", + "0x10e5fcd68658d0cf6ed280e34d0d0da9a510b7a6779230c9912806a2c939b9", + "0x400280007ffc7fff", + "0x400380017ffc7ffd", + "0x480280027ffc8000", + "0xa0680017fff8005", + "0xe", + "0x4824800180057ffe", + "0x7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00", + "0x484480017ffe8000", + "0x110000000000000000", + "0x48307ffe7fff8003", + "0x480280007ffb7ffc", + "0x480280017ffb7ffc", + "0x482480017ffb7ffd", + "0xffffffffffffffeefffffffffffffeff", + "0x400280027ffb7ffc", + "0x10780017fff7fff", + "0x11", + "0x48127ffe7fff8005", + "0x484480017ffe8000", + "0x8000000000000000000000000000000", + "0x48307ffe7fff8003", + "0x480280007ffb7ffd", + "0x482480017ffc7ffe", + "0xf0000000000000000000000000000100", + "0x480280017ffb7ffd", + "0x400280027ffb7ff9", + "0x402480017ffd7ff9", + "0xffffffffffffffffffffffffffffffff", + "0x20680017fff7ffd", + "0x4", + "0x402780017fff7fff", + "0x1", + "0x482680017ffb8000", + "0x3", + "0x482680017ffc8000", + "0x3", + "0x48127ffd7fff8000", + "0x208b7fff7fff7ffe", + "0x20780017fff7ffb", + "0x8", + "0x480680017fff8000", + "0x0", + "0x480680017fff8000", + "0x0", + "0x480a7ffd7fff8000", + "0x208b7fff7fff7ffe", + "0x480680017fff8000", + "0x1", + "0x480a7ffc7fff8000", + "0x480a7ffd7fff8000", + "0x208b7fff7fff7ffe", + "0x480a7ff87fff8000", + "0x480a7ffa7fff8000", + "0x480a7ffc7fff8000", + "0x1104800180018000", + "0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffffc9", + "0x480680017fff8000", + "0x0", + "0x480680017fff8000", + "0x53746f726167655772697465", + "0x400280007ffb7fff", + "0x400380017ffb7ff9", + "0x400280027ffb7ffe", + "0x400280037ffb7ffd", + "0x400380047ffb7ffd", + "0x480280067ffb8000", + "0x20680017fff7fff", + "0xd", + "0x480280057ffb8000", + "0x482680017ffb8000", + "0x7", + "0x480680017fff8000", + "0x0", + "0x480680017fff8000", + "0x0", + "0x480680017fff8000", + "0x0", + "0x10780017fff7fff", + "0x9", + "0x480280057ffb8000", + "0x482680017ffb8000", + "0x9", + "0x480680017fff8000", + "0x1", + "0x480280077ffb8000", + "0x480280087ffb8000", + "0x1104800180018000", + "0x4e", + "0x20680017fff7ffd", + "0xd", + "0x48127ff07fff8000", + "0x48127ff57fff8000", + "0x48127fef7fff8000", + "0x48127ff47fff8000", + "0x480680017fff8000", + "0x0", + "0x480680017fff8000", + "0x0", + "0x480680017fff8000", + "0x0", + "0x208b7fff7fff7ffe", + "0x48127ff07fff8000", + "0x48127ff57fff8000", + "0x48127fef7fff8000", + "0x48127ff47fff8000", + "0x480680017fff8000", + "0x1", + "0x48127ff97fff8000", + "0x48127ff97fff8000", + "0x208b7fff7fff7ffe", + "0x20780017fff7ffb", + "0x8", + "0x480680017fff8000", + "0x0", + "0x480680017fff8000", + "0x0", + "0x480a7ffd7fff8000", + "0x208b7fff7fff7ffe", + "0x480680017fff8000", + "0x1", + "0x480a7ffc7fff8000", + "0x480a7ffd7fff8000", + "0x208b7fff7fff7ffe", + "0x480a7ffb7fff8000", + "0x480a7ffc7fff8000", + "0x480a7ffd7fff8000", + "0x208b7fff7fff7ffe", + "0x10b7ff77fff7fff", + "0x10780017fff7fff", + "0x1b", + "0x10780017fff7fff", + "0xe", + "0x40780017fff7fff", + "0x7", + "0x480a7ff87fff8000", + "0x480a7ff97fff8000", + "0x480a7ffa7fff8000", + "0x480a7ffb7fff8000", + "0x480a7ffc7fff8000", + "0x480a7ffd7fff8000", + "0x1104800180018000", + "0x4d0", + "0x10780017fff7fff", + "0x15", + "0x40780017fff7fff", + "0x19", + "0x480a7ff97fff8000", + "0x480a7ffa7fff8000", + "0x480a7ffb7fff8000", + "0x480a7ffc7fff8000", + "0x480a7ffd7fff8000", + "0x1104800180018000", + "0x4e0", + "0x10780017fff7fff", + "0xa", + "0x480a7ff87fff8000", + "0x480a7ff97fff8000", + "0x480a7ffa7fff8000", + "0x480a7ffb7fff8000", + "0x480a7ffc7fff8000", + "0x480a7ffd7fff8000", + "0x1104800180018000", + "0x4d6", + "0x208b7fff7fff7ffe", + "0x20780017fff7ffb", + "0x9", + "0x480680017fff8000", + "0x0", + "0x480680017fff8000", + "0x0", + "0x480680017fff8000", + "0x0", + "0x208b7fff7fff7ffe", + "0x480680017fff8000", + "0x1", + "0x480a7ffc7fff8000", + "0x480a7ffd7fff8000", + "0x208b7fff7fff7ffe", + "0xa0680017fff8000", + "0x12", + "0x4825800180007ffd", + "0x100000000", + "0x4844800180008002", + "0x8000000000000110000000000000000", + "0x4830800080017ffe", + "0x480280007ffc7fff", + "0x482480017ffe8000", + "0xefffffffffffffde00000000ffffffff", + "0x480280017ffc7fff", + "0x400280027ffc7ffb", + "0x402480017fff7ffb", + "0xffffffffffffffffffffffffffffffff", + "0x20680017fff7fff", + "0x10", + "0x402780017fff7fff", + "0x1", + "0x400380007ffc7ffd", + "0x482680017ffd8000", + "0xffffffffffffffffffffffff00000000", + "0x400280017ffc7fff", + "0x40780017fff7fff", + "0x5", + "0x482680017ffc8000", + "0x2", + "0x480680017fff8000", + "0x0", + "0x480a7ffd7fff8000", + "0x208b7fff7fff7ffe", + "0x482680017ffc8000", + "0x3", + "0x480680017fff8000", + "0x1", + "0x480680017fff8000", + "0x0", + "0x208b7fff7fff7ffe", + "0x48297ffd80017ffc", + "0xa0680017fff7fff", + "0x7", + "0x482480017fff8000", + "0x100000000000000000000000000000000", + "0x400280007ffb7fff", + "0x10780017fff7fff", + "0xc", + "0x400280007ffb7fff", + "0x40780017fff7fff", + "0x1", + "0x482680017ffb8000", + "0x1", + "0x480680017fff8000", + "0x0", + "0x48127ffc7fff8000", + "0x10780017fff7fff", + "0x8", + "0x482680017ffb8000", + "0x1", + "0x480680017fff8000", + "0x1", + "0x482480017ffc8000", + "0x100000000", + "0x480680017fff8000", + "0x7533325f737562204f766572666c6f77", + "0x1104800180018000", + "0x492", + "0x48127ff67fff8000", + "0x48127ffc7fff8000", + "0x48127ffc7fff8000", + "0x48127ffc7fff8000", + "0x208b7fff7fff7ffe", + "0x482a7ffd7ffb8001", + "0xa0680017fff7fff", + "0x7", + "0x4824800180007fff", + "0x100000000000000000000000000000000", + "0x400280007ff97fff", + "0x10780017fff7fff", + "0xc", + "0x400280007ff97fff", + "0x40780017fff7fff", + "0x1", + "0x482680017ff98000", + "0x1", + "0x48127ffd7fff8000", + "0x480680017fff8000", + "0x0", + "0x10780017fff7fff", + "0x7", + "0x482680017ff98000", + "0x1", + "0x48127ffe7fff8000", + "0x480680017fff8000", + "0x1", + "0x482a7ffc7ffa8001", + "0xa0680017fff7fff", + "0x7", + "0x4824800180007fff", + "0x100000000000000000000000000000000", + "0x400080007ffa7fff", + "0x10780017fff7fff", + "0xb", + "0x400080007ffb7fff", + "0x40780017fff7fff", + "0x5", + "0x482480017ff68000", + "0x1", + "0x48127ff97fff8000", + "0x48127ff57fff8000", + "0x48127ff57fff8000", + "0x208b7fff7fff7ffe", + "0x480680017fff8000", + "0x1", + "0x48307fff7ffa8001", + "0xa0680017fff7fff", + "0x7", + "0x4824800180007fff", + "0x100000000000000000000000000000000", + "0x400080017ff67fff", + "0x10780017fff7fff", + "0xb", + "0x400080017ff77fff", + "0x40780017fff7fff", + "0x1", + "0x482480017ff68000", + "0x2", + "0x48127ffa7fff8000", + "0x48127ffc7fff8000", + "0x48127ff57fff8000", + "0x208b7fff7fff7ffe", + "0x482480017ff68000", + "0x2", + "0x48127ffa7fff8000", + "0x48127ffd7fff8000", + "0x480680017fff8000", + "0x1", + "0x208b7fff7fff7ffe", + "0x480680017fff8000", + "0x43616c6c436f6e7472616374", + "0x400280007ff97fff", + "0x400380017ff97ff8", + "0x400380027ff97ffa", + "0x400380037ff97ffb", + "0x400380047ff97ffc", + "0x400380057ff97ffd", + "0x480280077ff98000", + "0x20680017fff7fff", + "0xb", + "0x480280067ff98000", + "0x482680017ff98000", + "0xa", + "0x480680017fff8000", + "0x0", + "0x480280087ff98000", + "0x480280097ff98000", + "0x10780017fff7fff", + "0x9", + "0x480280067ff98000", + "0x482680017ff98000", + "0xa", + "0x480680017fff8000", + "0x1", + "0x480280087ff98000", + "0x480280097ff98000", + "0x1104800180018000", + "0x441", + "0x48127ff67fff8000", + "0x48127ff67fff8000", + "0x48127ffb7fff8000", + "0x48127ffb7fff8000", + "0x48127ffb7fff8000", + "0x208b7fff7fff7ffe", + "0x480a7ffb7fff8000", + "0x480a7ffc7fff8000", + "0x480a7ffd7fff8000", + "0x1104800180018000", + "0x800000000000010fffffffffffffffffffffffffffffffffffffffffffff92c", + "0x20680017fff7ffd", + "0x3c", + "0x48127ffa7fff8000", + "0x48127ffa7fff8000", + "0x48127ffa7fff8000", + "0x1104800180018000", + "0x800000000000010fffffffffffffffffffffffffffffffffffffffffffff925", + "0x20680017fff7ffd", + "0x23", + "0x48127ffb7fff8000", + "0x48127ffb7fff8000", + "0x1104800180018000", + "0x435", + "0x20680017fff7ffe", + "0xd", + "0x48127fe87fff8000", + "0x48127ffb7fff8000", + "0x48127ffb7fff8000", + "0x480680017fff8000", + "0x0", + "0x48127fb57fff8000", + "0x48127fb57fff8000", + "0x48127fe67fff8000", + "0x48127fe67fff8000", + "0x48127ff77fff8000", + "0x208b7fff7fff7ffe", + "0x48127fe87fff8000", + "0x48127ffb7fff8000", + "0x48127ffb7fff8000", + "0x480680017fff8000", + "0x1", + "0x480680017fff8000", + "0x0", + "0x480680017fff8000", + "0x0", + "0x480680017fff8000", + "0x0", + "0x480680017fff8000", + "0x0", + "0x480680017fff8000", + "0x0", + "0x208b7fff7fff7ffe", + "0x40780017fff7fff", + "0x12", + "0x48127fe87fff8000", + "0x48127fe87fff8000", + "0x48127fe87fff8000", + "0x480680017fff8000", + "0x1", + "0x480680017fff8000", + "0x0", + "0x480680017fff8000", + "0x0", + "0x480680017fff8000", + "0x0", + "0x480680017fff8000", + "0x0", + "0x480680017fff8000", + "0x0", + "0x208b7fff7fff7ffe", + "0x40780017fff7fff", + "0x45", + "0x48127fb57fff8000", + "0x48127fb57fff8000", + "0x48127fb57fff8000", + "0x480680017fff8000", + "0x1", + "0x480680017fff8000", + "0x0", + "0x480680017fff8000", + "0x0", + "0x480680017fff8000", + "0x0", + "0x480680017fff8000", + "0x0", + "0x480680017fff8000", + "0x0", + "0x208b7fff7fff7ffe", + "0x480a7ffc7fff8000", + "0x480a7ffd7fff8000", + "0x480680017fff8000", + "0x0", + "0x480680017fff8000", + "0x0", + "0x1104800180018000", + "0x41d", + "0x20680017fff7fff", + "0xc", + "0x1104800180018000", + "0x420", + "0x480a7ffb7fff8000", + "0x480a7ffc7fff8000", + "0x480a7ffd7fff8000", + "0x48127ffb7fff8000", + "0x48127ffb7fff8000", + "0x1104800180018000", + "0x800000000000010fffffffffffffffffffffffffffffffffffffffffffff7be", + "0x208b7fff7fff7ffe", + "0x40780017fff7fff", + "0x12", + "0x480a7ffb7fff8000", + "0x480680017fff8000", + "0x0", + "0x208b7fff7fff7ffe", + "0x480a7ff57fff8000", + "0x480a7ff67fff8000", + "0x480a7ff97fff8000", + "0x480a7ffa7fff8000", + "0x480a7ffd7fff8000", + "0x1104800180018000", + "0x410", + "0x1104800180018000", + "0x800000000000010fffffffffffffffffffffffffffffffffffffffffffff61c", + "0x20680017fff7ffd", + "0x166", + "0x20680017fff7ffe", + "0x158", + "0x48127ff67fff8000", + "0x48127ff67fff8000", + "0x1104800180018000", + "0x420", + "0x20680017fff7ffd", + "0x148", + "0x1104800180018000", + "0x3fd", + "0x1104800180018000", + "0x463", + "0x20680017fff7ffd", + "0x132", + "0x480a7ff97fff8000", + "0x480a7ffa7fff8000", + "0x1104800180018000", + "0x46d", + "0x20680017fff7ffd", + "0x11c", + "0xa0680017fff8000", + "0x37", + "0x480280007ff48001", + "0x480280017ff48001", + "0x480280027ff48001", + "0x480280037ff48001", + "0x48307ffe80017fed", + "0x40780017fff7fff", + "0x12", + "0x20680017fff7fee", + "0x8", + "0x40307fea7fef7fd9", + "0x402480017ff07fef", + "0x1", + "0x400280047ff47ff0", + "0x10780017fff7fff", + "0x3", + "0x400280047ff47fee", + "0x482480017ff98001", + "0x1", + "0x48307ff080018000", + "0x4844800180018000", + "0x100000000000000000000000000000000", + "0x4850800080008000", + "0x48307fff7ff68000", + "0x48307ff67fff8000", + "0x48307ff77fff8000", + "0x48307feb80007fff", + "0x48307feb80007fff", + "0x48307fec80007fff", + "0x4844800180007fff", + "0x100000000000000000000000000000000", + "0x4824800180007fff", + "0x800000000000010ffffffffffffffffffffffffffffffffffffffffffff8001", + "0x400280057ff47fff", + "0x482480017ffe8000", + "0xffffffffffffffffffffffffffff8000", + "0x400280067ff47fff", + "0x48307ffd7fef8000", + "0x48307ff07fff8000", + "0x48307ff07fff8000", + "0x48307fe680007fff", + "0x48307fe380007fff", + "0x48307fe580007fff", + "0x4844800180007fff", + "0x100000000000000000000000000000000", + "0x4824800180007fff", + "0x800000000000010ffffffffffffffffffffffffffffffffffffffffffff8001", + "0x400280077ff47fff", + "0x482480017ffe8000", + "0xffffffffffffffffffffffffffff8000", + "0x400280087ff47fff", + "0x40307ffd7fea7fe2", + "0x10780017fff7fff", + "0x31", + "0x480280007ff47fff", + "0x480280017ff47fff", + "0x480280027ff47fff", + "0x480280037ff47fff", + "0x480280047ff47fff", + "0x400280057ff47fff", + "0xa0680017fff7ffb", + "0xa", + "0x402480017fff7ff9", + "0x1", + "0x20680017fff7fff", + "0x6", + "0x400680017fff7feb", + "0x0", + "0x400680017fff7fea", + "0x1", + "0xa0680017fff7ffa", + "0xc", + "0x48507ff87ffb8001", + "0x48507ff77ffc8001", + "0xa0680017fff8002", + "0x5", + "0x48307ffa7ff88000", + "0x90780017fff7fff", + "0x11", + "0x48127ff57fff8000", + "0x90780017fff7fff", + "0xe", + "0x48507ff97ffa8001", + "0x48507ff87ffb8001", + "0x480680017fff7ff9", + "0x0", + "0x480680017fff7ffa", + "0x0", + "0xa0680017fff8000", + "0x5", + "0x40307ff77ff57ffe", + "0x10780017fff7fff", + "0x3", + "0x40127ff47fff7ffe", + "0x482480017ffe8000", + "0xfffffffffffffffe0000000000000000", + "0x400280067ff47fff", + "0x40307ff97ffb7ff1", + "0x40307ffa7ffc7fe4", + "0x10780017fff7fff", + "0x98", + "0x482680017ff48000", + "0x9", + "0x48127fc37fff8000", + "0x48127fd57fff8000", + "0x48127fe77fff8000", + "0x48127fe57fff8000", + "0x1104800180018000", + "0x406", + "0x48127fad7fff8000", + "0x48127fbe7fff8000", + "0x48127fcf7fff8000", + "0x48127fcd7fff8000", + "0x1104800180018000", + "0x400", + "0x48127f967fff8000", + "0x48127fa97fff8000", + "0x48127fb77fff8000", + "0x48127fb57fff8000", + "0x1104800180018000", + "0x3fa", + "0x48127f807fff8000", + "0x48127f927fff8000", + "0x48127f9f7fff8000", + "0x48127f9d7fff8000", + "0x1104800180018000", + "0x3f4", + "0x48127f7c7fff8000", + "0x48127f777fff8000", + "0x48127f877fff8000", + "0x48127f857fff8000", + "0x1104800180018000", + "0x3ee", + "0x48127f667fff8000", + "0x48127f607fff8000", + "0x48127f6f7fff8000", + "0x48127f6d7fff8000", + "0x1104800180018000", + "0x3e8", + "0x48127f4f7fff8000", + "0x48127f4b7fff8000", + "0x48127f577fff8000", + "0x48127f557fff8000", + "0x1104800180018000", + "0x3e2", + "0x48127f397fff8000", + "0x48127f347fff8000", + "0x48127f3f7fff8000", + "0x48127f3d7fff8000", + "0x1104800180018000", + "0x3dc", + "0x480a7ff77fff8000", + "0x480a7ff87fff8000", + "0x48127f217fff8000", + "0x48127f217fff8000", + "0x48127f0e7fff8000", + "0x48127f0e7fff8000", + "0x1104800180018000", + "0x3f5", + "0x1104800180018000", + "0x467", + "0x20680017fff7ffd", + "0x50", + "0x48127ffc7fff8000", + "0x480a7ffb7fff8000", + "0x480a7ffc7fff8000", + "0x48127d7a7fff8000", + "0x48127d7a7fff8000", + "0x48127d677fff8000", + "0x48127d677fff8000", + "0x1104800180018000", + "0x3e8", + "0x48127bef7fff8000", + "0x48127bef7fff8000", + "0x48127bf17fff8000", + "0x48127e8a7fff8000", + "0x48127e8a7fff8000", + "0x1104800180018000", + "0x45f", + "0x1104800180018000", + "0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffc85", + "0x20680017fff7ffd", + "0x32", + "0x48127ff67fff8000", + "0x48127ff67fff8000", + "0x48127bc37fff8000", + "0x48127fe87fff8000", + "0x48127fe87fff8000", + "0x1104800180018000", + "0x454", + "0x1104800180018000", + "0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffc7a", + "0x20680017fff7ffd", + "0x1d", + "0x48127ff67fff8000", + "0x48127ff67fff8000", + "0x48127fea7fff8000", + "0x48127ffc7fff8000", + "0x1104800180018000", + "0x465", + "0x1104800180018000", + "0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffc70", + "0x20680017fff7ffd", + "0xb", + "0x48127fc57fff8000", + "0x48127ff57fff8000", + "0x48127ff57fff8000", + "0x480680017fff8000", + "0x0", + "0x480680017fff8000", + "0x0", + "0x48127ffa7fff8000", + "0x208b7fff7fff7ffe", + "0x48127fc57fff8000", + "0x48127ff57fff8000", + "0x48127ff57fff8000", + "0x480680017fff8000", + "0x1", + "0x48127ffa7fff8000", + "0x48127ffa7fff8000", + "0x208b7fff7fff7ffe", + "0x40780017fff7fff", + "0x12", + "0x48127fc57fff8000", + "0x48127fe37fff8000", + "0x48127fe37fff8000", + "0x480680017fff8000", + "0x1", + "0x48127fe87fff8000", + "0x48127fe87fff8000", + "0x208b7fff7fff7ffe", + "0x40780017fff7fff", + "0x25", + "0x48127fc57fff8000", + "0x48127fd07fff8000", + "0x48127fd07fff8000", + "0x480680017fff8000", + "0x1", + "0x48127fd57fff8000", + "0x48127fd57fff8000", + "0x208b7fff7fff7ffe", + "0x40780017fff7fff", + "0x1a9", + "0x48127e537fff8000", + "0x48127bb67fff8000", + "0x48127bb67fff8000", + "0x480680017fff8000", + "0x1", + "0x48127e517fff8000", + "0x48127e517fff8000", + "0x208b7fff7fff7ffe", + "0x40780017fff7fff", + "0x3f1", + "0x482680017ff48000", + "0x7", + "0x48127c007fff8000", + "0x48127c037fff8000", + "0x48127c067fff8000", + "0x48127bee7fff8000", + "0x1104800180018000", + "0x36e", + "0x48127bea7fff8000", + "0x48127beb7fff8000", + "0x48127bef7fff8000", + "0x48127be57fff8000", + "0x1104800180018000", + "0x368", + "0x40780017fff7fff", + "0x1", + "0x480680017fff8000", + "0x4f7074696f6e3a3a756e77726170206661696c65642e", + "0x400080007ffe7fff", + "0x48127ffd7fff8000", + "0x48127bb67fff8000", + "0x48127bb67fff8000", + "0x480680017fff8000", + "0x1", + "0x48127ffa7fff8000", + "0x482480017ff98000", + "0x1", + "0x208b7fff7fff7ffe", + "0x40780017fff7fff", + "0x42c", + "0x40780017fff7fff", + "0x1", + "0x480680017fff8000", + "0x4f7074696f6e3a3a756e77726170206661696c65642e", + "0x400080007ffe7fff", + "0x480a7ff47fff8000", + "0x48127bb67fff8000", + "0x48127bb67fff8000", + "0x480680017fff8000", + "0x1", + "0x48127ffa7fff8000", + "0x482480017ff98000", + "0x1", + "0x208b7fff7fff7ffe", + "0x40780017fff7fff", + "0x439", + "0x40780017fff7fff", + "0x1", + "0x480680017fff8000", + "0x4f7074696f6e3a3a756e77726170206661696c65642e", + "0x400080007ffe7fff", + "0x480a7ff47fff8000", + "0x48127bb67fff8000", + "0x48127bb67fff8000", + "0x480680017fff8000", + "0x1", + "0x48127ffa7fff8000", + "0x482480017ff98000", + "0x1", + "0x208b7fff7fff7ffe", + "0x40780017fff7fff", + "0x444", + "0x480a7ff47fff8000", + "0x48127bb67fff8000", + "0x48127bb67fff8000", + "0x480680017fff8000", + "0x1", + "0x48127bb67fff8000", + "0x48127bb67fff8000", + "0x208b7fff7fff7ffe", + "0x40780017fff7fff", + "0x45f", + "0x480a7ff47fff8000", + "0x48127b967fff8000", + "0x48127b967fff8000", + "0x480680017fff8000", + "0x0", + "0x480680017fff8000", + "0x1", + "0x480680017fff8000", + "0x0", + "0x208b7fff7fff7ffe", + "0x40780017fff7fff", + "0x45f", + "0x480a7ff47fff8000", + "0x48127b967fff8000", + "0x48127b967fff8000", + "0x480680017fff8000", + "0x1", + "0x48127b9b7fff8000", + "0x48127b9b7fff8000", + "0x208b7fff7fff7ffe", + "0x480a7ffa7fff8000", + "0x480a7ffb7fff8000", + "0x480a7ffc7fff8000", + "0x1104800180018000", + "0x800000000000010fffffffffffffffffffffffffffffffffffffffffffff43c", + "0x1104800180018000", + "0x800000000000010fffffffffffffffffffffffffffffffffffffffffffff458", + "0x20680017fff7ffb", + "0x30", + "0x48127fe97fff8000", + "0x48127fe97fff8000", + "0x480a7ffd7fff8000", + "0x1104800180018000", + "0x800000000000010fffffffffffffffffffffffffffffffffffffffffffff433", + "0x1104800180018000", + "0x800000000000010fffffffffffffffffffffffffffffffffffffffffffff44f", + "0x20680017fff7ffb", + "0x1e", + "0x48127fde7fff8000", + "0x48127fde7fff8000", + "0x48127ffa7fff8000", + "0x48127ffa7fff8000", + "0x1104800180018000", + "0x27a", + "0x20680017fff7fff", + "0x8", + "0x40780017fff7fff", + "0x17", + "0x480680017fff8000", + "0x0", + "0x10780017fff7fff", + "0x8", + "0x48127fc87fff8000", + "0x48127fc87fff8000", + "0x48127fe47fff8000", + "0x48127fe47fff8000", + "0x1104800180018000", + "0x26c", + "0x48127fb97fff8000", + "0x48127fb97fff8000", + "0x480680017fff8000", + "0x0", + "0x480680017fff8000", + "0x0", + "0x48127ffb7fff8000", + "0x208b7fff7fff7ffe", + "0x40780017fff7fff", + "0x30", + "0x48127fb97fff8000", + "0x48127fb97fff8000", + "0x480680017fff8000", + "0x1", + "0x48127fcb7fff8000", + "0x48127fcb7fff8000", + "0x208b7fff7fff7ffe", + "0x40780017fff7fff", + "0x4e", + "0x48127f9b7fff8000", + "0x48127f9b7fff8000", + "0x480680017fff8000", + "0x1", + "0x48127fad7fff8000", + "0x48127fad7fff8000", + "0x208b7fff7fff7ffe", + "0x480a7ffc7fff8000", + "0x480a7ffd7fff8000", + "0x1104800180018000", + "0x2bd", + "0x20680017fff7ffd", + "0x41", + "0x480280007ff98000", + "0x480280017ff98000", + "0x480280027ff98000", + "0x480280037ff98000", + "0x48307fff80007ffb", + "0xa0680017fff7fff", + "0x8", + "0x48307ffc7fff7ff8", + "0x402480017fff7ffe", + "0x1", + "0x400280047ff97fff", + "0x10780017fff7fff", + "0x5", + "0x40780017fff7fff", + "0x1", + "0x400280047ff97ffd", + "0x48307ffb80008002", + "0x48287ffa80028001", + "0x4844800180028001", + "0x100000000000000000000000000000000", + "0x4850800180018001", + "0xa0680017fff7ff6", + "0xc", + "0xa0680017fff8002", + "0x6", + "0x48127ff27fff7fff", + "0x48127ff27fff7fff", + "0x10780017fff7fff", + "0x10", + "0x48127ff37fff7fff", + "0x48127ff17fff7fff", + "0x10780017fff7fff", + "0xc", + "0x480680017fff7ff3", + "0x0", + "0xa0680017fff8001", + "0x6", + "0x48127ff07fff7ffe", + "0x40127ff27fff7ffe", + "0x10780017fff7fff", + "0x4", + "0x48127ff37fff7ffe", + "0x40127fef7fff7ffe", + "0x482480017ffd8000", + "0xffffffffffffffff0000000000000000", + "0x400280057ff97fff", + "0x48507ffd7ffc8000", + "0x48307ff77ffa8000", + "0x48307ff17fff8000", + "0x40317ffd7fff7ffb", + "0x482680017ff98000", + "0x6", + "0x48127fec7fff8000", + "0x48127fe97fff8000", + "0x48127ff27fff8000", + "0x48127ff07fff8000", + "0x1104800180018000", + "0x29a", + "0x480680017fff8000", + "0x0", + "0x48127fd57fff8000", + "0x48127fd57fff8000", + "0x208b7fff7fff7ffe", + "0x40780017fff7fff", + "0x27", + "0x40780017fff7fff", + "0x1", + "0x480680017fff8000", + "0x4469766973696f6e2062792030", + "0x400080007ffe7fff", + "0x480a7ff97fff8000", + "0x480680017fff8000", + "0x1", + "0x48127ffc7fff8000", + "0x482480017ffb8000", + "0x1", + "0x208b7fff7fff7ffe", + "0x4825800180007ffd", + "0x0", + "0x20680017fff7fff", + "0x4", + "0x10780017fff7fff", + "0x7", + "0x480680017fff8000", + "0x1", + "0x480680017fff8000", + "0x0", + "0x208b7fff7fff7ffe", + "0x480680017fff8000", + "0x0", + "0x480a7ffc7fff8000", + "0x208b7fff7fff7ffe", + "0x480a7ffc7fff8000", + "0x480a7ffd7fff8000", + "0x1104800180018000", + "0x25b", + "0x20680017fff7ffd", + "0x41", + "0x480280007ff98000", + "0x480280017ff98000", + "0x480280027ff98000", + "0x480280037ff98000", + "0x48307fff80007ffb", + "0xa0680017fff7fff", + "0x8", + "0x48307ffc7fff7ff8", + "0x402480017fff7ffe", + "0x1", + "0x400280047ff97fff", + "0x10780017fff7fff", + "0x5", + "0x40780017fff7fff", + "0x1", + "0x400280047ff97ffd", + "0x48307ffb80008002", + "0x48287ffa80028001", + "0x4844800180028001", + "0x100000000000000000000000000000000", + "0x4850800180018001", + "0xa0680017fff7ff6", + "0xc", + "0xa0680017fff8002", + "0x6", + "0x48127ff27fff7fff", + "0x48127ff27fff7fff", + "0x10780017fff7fff", + "0x10", + "0x48127ff37fff7fff", + "0x48127ff17fff7fff", + "0x10780017fff7fff", + "0xc", + "0x480680017fff7ff3", + "0x0", + "0xa0680017fff8001", + "0x6", + "0x48127ff07fff7ffe", + "0x40127ff27fff7ffe", + "0x10780017fff7fff", + "0x4", + "0x48127ff37fff7ffe", + "0x40127fef7fff7ffe", + "0x482480017ffd8000", + "0xffffffffffffffff0000000000000000", + "0x400280057ff97fff", + "0x48507ffd7ffc8000", + "0x48307ff77ffa8000", + "0x48307ff17fff8000", + "0x40317ffd7fff7ffb", + "0x482680017ff98000", + "0x6", + "0x48127fec7fff8000", + "0x48127fe97fff8000", + "0x48127ff27fff8000", + "0x48127ff07fff8000", + "0x1104800180018000", + "0x238", + "0x480680017fff8000", + "0x0", + "0x48127fd77fff8000", + "0x48127fd77fff8000", + "0x208b7fff7fff7ffe", + "0x40780017fff7fff", + "0x27", + "0x40780017fff7fff", + "0x1", + "0x480680017fff8000", + "0x4469766973696f6e2062792030", + "0x400080007ffe7fff", + "0x480a7ff97fff8000", + "0x480680017fff8000", + "0x1", + "0x48127ffc7fff8000", + "0x482480017ffb8000", + "0x1", + "0x208b7fff7fff7ffe", + "0x480a7ffa7fff8000", + "0x480a7ffc7fff8000", + "0x1104800180018000", + "0x2f5", + "0x20680017fff7fff", + "0x7", + "0x40780017fff7fff", + "0x5", + "0x480680017fff8000", + "0x0", + "0x208b7fff7fff7ffe", + "0x480a7ffb7fff8000", + "0x480a7ffd7fff8000", + "0x1104800180018000", + "0x2ea", + "0x208b7fff7fff7ffe", + "0x1104800180018000", + "0x43e", + "0x482480017fff8000", + "0x43d", + "0x480080007fff8000", + "0x480080037fff8000", + "0x482480017fff8000", + "0xd2a", + "0xa0680017fff8000", + "0x8", + "0x48317ffe80007ff6", + "0x482480017fff8000", + "0x100000000000000000000000000000000", + "0x400280007ff57fff", + "0x10780017fff7fff", + "0xa9", + "0x48317ffe80007ff6", + "0x400280007ff57fff", + "0x482680017ff58000", + "0x1", + "0x48297ffc80007ffd", + "0x20680017fff7fff", + "0x4", + "0x10780017fff7fff", + "0xa", + "0x482680017ffc8000", + "0x1", + "0x480a7ffd7fff8000", + "0x480680017fff8000", + "0x0", + "0x480a7ffc7fff8000", + "0x10780017fff7fff", + "0x8", + "0x480a7ffc7fff8000", + "0x480a7ffd7fff8000", + "0x480680017fff8000", + "0x1", + "0x480680017fff8000", + "0x0", + "0x20680017fff7ffe", + "0x6f", + "0x480080007fff8000", + "0x48307ffb80007ffc", + "0x20680017fff7fff", + "0x4", + "0x10780017fff7fff", + "0xa", + "0x482480017ffa8000", + "0x1", + "0x48127ffa7fff8000", + "0x480680017fff8000", + "0x0", + "0x48127ff77fff8000", + "0x10780017fff7fff", + "0x8", + "0x48127ffa7fff8000", + "0x48127ffa7fff8000", + "0x480680017fff8000", + "0x1", + "0x480680017fff8000", + "0x0", + "0x48127ffc7fff8000", + "0x48127ffc7fff8000", + "0x20680017fff7ffc", + "0x37", + "0x480080007ffd8000", + "0x48327ff77ff98000", + "0x48327ffe7ffa8000", + "0x400280007ff77ffe", + "0x400280017ff77fff", + "0x400380027ff77ffb", + "0x482680017ff78000", + "0x6", + "0x480280037ff78000", + "0x480280047ff78000", + "0x480280057ff78000", + "0xa0680017fff8000", + "0x9", + "0x4824800180007fe9", + "0x816", + "0x482480017fff8000", + "0x100000000000000000000000000000000", + "0x400080007fe87fff", + "0x10780017fff7fff", + "0x12", + "0x4824800180007fe9", + "0x816", + "0x400080007fe97fff", + "0x482480017fe98000", + "0x1", + "0x48127ffe7fff8000", + "0x48127ff87fff8000", + "0x480a7ff87fff8000", + "0x48127ff77fff8000", + "0x48127ff77fff8000", + "0x48127ff77fff8000", + "0x48127fee7fff8000", + "0x48127fee7fff8000", + "0x1104800180018000", + "0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffff9f", + "0x208b7fff7fff7ffe", + "0x40780017fff7fff", + "0x1", + "0x480680017fff8000", + "0x4f7574206f6620676173", + "0x400080007ffe7fff", + "0x482480017fe68000", + "0x1", + "0x48127fe47fff8000", + "0x48127ff57fff8000", + "0x480680017fff8000", + "0x1", + "0x480680017fff8000", + "0x0", + "0x48127ff97fff8000", + "0x482480017ff88000", + "0x1", + "0x208b7fff7fff7ffe", + "0x480680017fff8000", + "0x1", + "0x48327ff77ff98000", + "0x20680017fff7ffe", + "0xc", + "0x482480017fff8000", + "0x1", + "0x400280007ff77fff", + "0x400380017ff77ffa", + "0x400380027ff77ffb", + "0x482680017ff78000", + "0x6", + "0x480280037ff78000", + "0x10780017fff7fff", + "0xa", + "0x482680017ffa8000", + "0x1", + "0x400280007ff77ffe", + "0x400280017ff77fff", + "0x400380027ff77ffb", + "0x482680017ff78000", + "0x6", + "0x480280037ff78000", + "0x48127fed7fff8000", + "0x48127feb7fff8000", + "0x48127ffc7fff8000", + "0x480680017fff8000", + "0x0", + "0x48127ff57fff8000", + "0x48127ff57fff8000", + "0x48127ff97fff8000", + "0x208b7fff7fff7ffe", + "0x480680017fff8000", + "0x0", + "0x48127ffb7fff8000", + "0x48127ffb7fff8000", + "0x20680017fff7ffd", + "0xc", + "0x482680017ff98000", + "0x1", + "0x400280007ff77fff", + "0x400380017ff77ffa", + "0x400380027ff77ffb", + "0x482680017ff78000", + "0x6", + "0x480280037ff78000", + "0x10780017fff7fff", + "0xa", + "0x482680017ffa8000", + "0x1", + "0x400380007ff77ff9", + "0x400280017ff77fff", + "0x400380027ff77ffb", + "0x482680017ff78000", + "0x6", + "0x480280037ff78000", + "0x48127ff47fff8000", + "0x48127ff27fff8000", + "0x48127ffc7fff8000", + "0x480680017fff8000", + "0x0", + "0x48127ff77fff8000", + "0x48127ff77fff8000", + "0x48127ff97fff8000", + "0x208b7fff7fff7ffe", + "0x40780017fff7fff", + "0x1", + "0x480680017fff8000", + "0x4f7574206f6620676173", + "0x400080007ffe7fff", + "0x482680017ff58000", + "0x1", + "0x480a7ff67fff8000", + "0x480a7ff77fff8000", + "0x480680017fff8000", + "0x1", + "0x480680017fff8000", + "0x0", + "0x48127ff97fff8000", + "0x482480017ff88000", + "0x1", + "0x208b7fff7fff7ffe", + "0x480a7ffb7fff8000", + "0x480a7ffc7fff8000", + "0x480a7ffd7fff8000", + "0x1104800180018000", + "0x800000000000010fffffffffffffffffffffffffffffffffffffffffffff26f", + "0x1104800180018000", + "0x800000000000010fffffffffffffffffffffffffffffffffffffffffffff28b", + "0x20680017fff7ffb", + "0x37", + "0x480a7ffa7fff8000", + "0x48127ffd7fff8000", + "0x48127ffd7fff8000", + "0x480680017fff8000", + "0x2", + "0x480680017fff8000", + "0x0", + "0x1104800180018000", + "0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffec6", + "0x20680017fff7ffd", + "0x22", + "0x48127ffc7fff8000", + "0x48127ffd7fff8000", + "0x48127ffd7fff8000", + "0x1104800180018000", + "0x213", + "0x20680017fff7ffe", + "0xd", + "0x480680017fff8000", + "0x2", + "0x48507fb27fff8000", + "0x48127ffb7fff8000", + "0x48127f9c7fff8000", + "0x48127f9c7fff8000", + "0x480680017fff8000", + "0x0", + "0x48127fac7fff8000", + "0x48307ff87ffa8000", + "0x208b7fff7fff7ffe", + "0x40780017fff7fff", + "0x1", + "0x480680017fff8000", + "0x4f7074696f6e3a3a756e77726170206661696c65642e", + "0x400080007ffe7fff", + "0x48127ffb7fff8000", + "0x48127f9c7fff8000", + "0x48127f9c7fff8000", + "0x480680017fff8000", + "0x1", + "0x48127ffa7fff8000", + "0x482480017ff98000", + "0x1", + "0x208b7fff7fff7ffe", + "0x40780017fff7fff", + "0x11", + "0x48127feb7fff8000", + "0x48127f9c7fff8000", + "0x48127f9c7fff8000", + "0x480680017fff8000", + "0x1", + "0x48127fe97fff8000", + "0x48127fe97fff8000", + "0x208b7fff7fff7ffe", + "0x40780017fff7fff", + "0x4c", + "0x480a7ffa7fff8000", + "0x48127f9c7fff8000", + "0x48127f9c7fff8000", + "0x480680017fff8000", + "0x1", + "0x48127fae7fff8000", + "0x48127fae7fff8000", + "0x208b7fff7fff7ffe", + "0x480680017fff8000", + "0x0", + "0x480a7ffd7fff8000", + "0x208b7fff7fff7ffe", + "0x20780017fff7ff8", + "0xf", + "0x480680017fff8000", + "0x38f6a5b87c23cee6e7294bcc3302e95019f70f81586ff3cac38581f5ca96381", + "0x400280007ffb7fff", + "0x480a7ff97fff8000", + "0x480a7ffa7fff8000", + "0x482680017ffb8000", + "0x1", + "0x480a7ffc7fff8000", + "0x480a7ffd7fff8000", + "0x1104800180018000", + "0x208", + "0x10780017fff7fff", + "0xd", + "0x480680017fff8000", + "0xca58956845fecb30a8cb3efe23582630dbe8b80cc1fb8fd5d5e866b1356ad", + "0x400280007ffb7fff", + "0x480a7ff97fff8000", + "0x480a7ffa7fff8000", + "0x482680017ffb8000", + "0x1", + "0x480a7ffc7fff8000", + "0x480a7ffd7fff8000", + "0x1104800180018000", + "0x203", + "0x208b7fff7fff7ffe", + "0x480680017fff8000", + "0x2db340e6c609371026731f47050d3976552c89b4fbb012941663841c59d1af3", + "0x400280007ffb7fff", + "0x480a7ff97fff8000", + "0x480a7ffa7fff8000", + "0x482680017ffb8000", + "0x1", + "0x480a7ffc7fff8000", + "0x480a7ffd7fff8000", + "0x1104800180018000", + "0x1ff", + "0x208b7fff7fff7ffe", + "0x20780017fff7ffb", + "0xa", + "0x40780017fff7fff", + "0x1", + "0x480680017fff8000", + "0x0", + "0x480680017fff8000", + "0x0", + "0x480a7ffc7fff8000", + "0x208b7fff7fff7ffe", + "0x40780017fff7fff", + "0x1", + "0x400180007fff7ffd", + "0x480680017fff8000", + "0x1", + "0x48127ffe7fff8000", + "0x482480017ffd8000", + "0x1", + "0x208b7fff7fff7ffe", + "0x20780017fff7ffb", + "0x7", + "0x480680017fff8000", + "0x0", + "0x480a7ffc7fff8000", + "0x480a7ffd7fff8000", + "0x208b7fff7fff7ffe", + "0x480680017fff8000", + "0x1", + "0x480a7ffc7fff8000", + "0x480a7ffd7fff8000", + "0x208b7fff7fff7ffe", + "0x48297ffc80007ffd", + "0x20680017fff7fff", + "0x4", + "0x10780017fff7fff", + "0xa", + "0x482680017ffc8000", + "0x1", + "0x480a7ffd7fff8000", + "0x480680017fff8000", + "0x0", + "0x480a7ffc7fff8000", + "0x10780017fff7fff", + "0x8", + "0x480a7ffc7fff8000", + "0x480a7ffd7fff8000", + "0x480680017fff8000", + "0x1", + "0x480680017fff8000", + "0x0", + "0x48127ffc7fff8000", + "0x48127ffc7fff8000", + "0x20680017fff7ffc", + "0x13", + "0x480080007ffd8000", + "0x20680017fff7fff", + "0x6", + "0x480680017fff8000", + "0x1", + "0x10780017fff7fff", + "0x4", + "0x480680017fff8000", + "0x0", + "0x480680017fff8000", + "0x1", + "0x48127ffb7fff8000", + "0x48127ffb7fff8000", + "0x480680017fff8000", + "0x0", + "0x48307ffb80007ffc", + "0x208b7fff7fff7ffe", + "0x40780017fff7fff", + "0x3", + "0x48127ffb7fff8000", + "0x48127ffb7fff8000", + "0x480680017fff8000", + "0x1", + "0x480680017fff8000", + "0x0", + "0x208b7fff7fff7ffe", + "0x480a7ffa7fff8000", + "0x480a7ffb7fff8000", + "0x480a7ffc7fff8000", + "0x480a7ffd7fff8000", + "0x1104800180018000", + "0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffe62", + "0x208b7fff7fff7ffe", + "0x480680017fff8000", + "0xbaaedce6af48a03bbfd25e8cd0364141", + "0x480680017fff8000", + "0xfffffffffffffffffffffffffffffffe", + "0x208b7fff7fff7ffe", + "0x480680017fff8000", + "0x536563703235366b31476574506f696e7446726f6d58", + "0x400280007ffa7fff", + "0x400380017ffa7ff9", + "0x400380027ffa7ffb", + "0x400380037ffa7ffc", + "0x400380047ffa7ffd", + "0x480280067ffa8000", + "0x20680017fff7fff", + "0xa", + "0x480280057ffa8000", + "0x482680017ffa8000", + "0x9", + "0x480680017fff8000", + "0x0", + "0x480280077ffa8000", + "0x480280087ffa8000", + "0x208b7fff7fff7ffe", + "0x480280057ffa8000", + "0x482680017ffa8000", + "0x9", + "0x480680017fff8000", + "0x1", + "0x480280077ffa8000", + "0x480280087ffa8000", + "0x208b7fff7fff7ffe", + "0x480680017fff8000", + "0x29bfcdb2dce28d959f2815b16f81798", + "0x480680017fff8000", + "0x79be667ef9dcbbac55a06295ce870b07", + "0x480680017fff8000", + "0xfd17b448a68554199c47d08ffb10d4b8", + "0x480680017fff8000", + "0x483ada7726a3c4655da4fbfc0e1108a8", + "0x480680017fff8000", + "0x536563703235366b314e6577", + "0x400280007ffd7fff", + "0x400380017ffd7ffc", + "0x400280027ffd7ffb", + "0x400280037ffd7ffc", + "0x400280047ffd7ffd", + "0x400280057ffd7ffe", + "0x480280077ffd8000", + "0x20680017fff7fff", + "0xb", + "0x480280067ffd8000", + "0x482680017ffd8000", + "0xa", + "0x480680017fff8000", + "0x0", + "0x480280087ffd8000", + "0x480280097ffd8000", + "0x10780017fff7fff", + "0x9", + "0x480280067ffd8000", + "0x482680017ffd8000", + "0xa", + "0x480680017fff8000", + "0x1", + "0x480280087ffd8000", + "0x480280097ffd8000", + "0x1104800180018000", + "0x800000000000010fffffffffffffffffffffffffffffffffffffffffffff1d1", + "0x20680017fff7ffd", + "0x1b", + "0x20680017fff7ffe", + "0xc", + "0x40780017fff7fff", + "0x2", + "0x48127ff47fff8000", + "0x48127ff47fff8000", + "0x480680017fff8000", + "0x0", + "0x480680017fff8000", + "0x0", + "0x48127ff97fff8000", + "0x208b7fff7fff7ffe", + "0x40780017fff7fff", + "0x1", + "0x480680017fff8000", + "0x4f7074696f6e3a3a756e77726170206661696c65642e", + "0x400080007ffe7fff", + "0x48127ff47fff8000", + "0x48127ff47fff8000", + "0x480680017fff8000", + "0x1", + "0x48127ffb7fff8000", + "0x482480017ffa8000", + "0x1", + "0x208b7fff7fff7ffe", + "0x40780017fff7fff", + "0x2", + "0x48127ff47fff8000", + "0x48127ff47fff8000", + "0x480680017fff8000", + "0x1", + "0x48127ff97fff8000", + "0x48127ff97fff8000", + "0x208b7fff7fff7ffe", + "0x20780017fff7ffc", + "0xb", + "0x20780017fff7ffd", + "0x9", + "0x480680017fff8000", + "0x1", + "0x480680017fff8000", + "0x0", + "0x480680017fff8000", + "0x0", + "0x208b7fff7fff7ffe", + "0x480680017fff8000", + "0x0", + "0x480a7ffc7fff8000", + "0x480a7ffd7fff8000", + "0x208b7fff7fff7ffe", + "0x480a7ffc7fff8000", + "0x480a7ffd7fff8000", + "0x1104800180018000", + "0x135", + "0x480680017fff8000", + "0x0", + "0x48127ffd7fff8000", + "0x48127ffd7fff8000", + "0x208b7fff7fff7ffe", + "0x4824800180008002", + "0xffffffffffffffff0000000000000000", + "0x480280007ff98001", + "0x480280017ff97ffe", + "0x400280027ff97ffe", + "0x484480017ffe8000", + "0x10000000000000000", + "0x40317ffc7fff7ffa", + "0x48487ffb7ffc8000", + "0x48487ffb7ffc8000", + "0x4824800180018002", + "0xffffffffffffffff0000000000000000", + "0x480280037ff98001", + "0x480280047ff97fff", + "0x400280057ff97ffd", + "0x484480017ffd8000", + "0x10000000000000000", + "0x40307ffd7fff7ffb", + "0x484480017ffd8000", + "0x10000000000000000", + "0x48307fff7ff98003", + "0x482480017fff8000", + "0xfffffffffffffffe0000000000000000", + "0x480280067ff97fff", + "0x480280077ff97ffd", + "0x400380087ff97ffd", + "0x404480017ffc7ffe", + "0x100000000000000000000000000000000", + "0x40287ffd7ffe7fff", + "0x40317ffc7ff77ffc", + "0x482680017ff98000", + "0x9", + "0x208b7fff7fff7ffe", + "0x480a7ff77fff8000", + "0x480a7ff87fff8000", + "0x480a7ff97fff8000", + "0x480a7ffa7fff8000", + "0x480a7ffb7fff8000", + "0x1104800180018000", + "0x10b", + "0x480080007ffb8000", + "0x480080017ffa8000", + "0x480080027ff98000", + "0x480080037ff88000", + "0x480080047ff78000", + "0x480080057ff68000", + "0x48317fff80007ffd", + "0x40780017fff7fff", + "0xc", + "0x20680017fff7ff3", + "0x8", + "0x40317ff17ff47ffc", + "0x402480017ff57ff4", + "0x1", + "0x400080067fe87ff5", + "0x10780017fff7fff", + "0x3", + "0x400080067fe87ff3", + "0x48307ff17ff68000", + "0x48307fe880007fff", + "0x4844800180007fff", + "0x100000000000000000000000000000000", + "0x40507fff7fff7fff", + "0x48307ff47fff8000", + "0x48307ff47fff8000", + "0x48307ff57fff8000", + "0x48307fec7fff8000", + "0x48307fe380007fff", + "0x4844800180007fff", + "0x100000000000000000000000000000000", + "0x400080077fdf7fff", + "0x482480017fff8000", + "0xfffffffffffffffffffffffffffffffc", + "0x400080087fde7fff", + "0x48307fef7ffe8000", + "0x48307ff07fff8000", + "0x48307ff07fff8000", + "0x48307ff17fff8000", + "0x48307fdd80007fff", + "0x4844800180007fff", + "0x100000000000000000000000000000000", + "0x400080097fd87fff", + "0x482480017fff8000", + "0xfffffffffffffffffffffffffffffffc", + "0x4000800a7fd77fff", + "0xa0680017fff7fdf", + "0xc", + "0xa0680017fff8001", + "0x6", + "0x480a7ffd7fff7ffe", + "0x40127fdb7fff7ffe", + "0x10780017fff7fff", + "0x10", + "0x48127fdc7fff7ffe", + "0x400a7ffd7fff7ffe", + "0x10780017fff7fff", + "0xc", + "0x480780017fff7ffd", + "0x0", + "0xa0680017fff8000", + "0x6", + "0x400a7ffc7fff7ffd", + "0x40127fdc7fff7ffe", + "0x10780017fff7fff", + "0x4", + "0x40127fdc7fff7ffd", + "0x400a7ffc7fff7ffe", + "0x482480017ffd8000", + "0xffffffffffffffff0000000000000000", + "0x4000800b7fd37fff", + "0x48507ffd7ffc8000", + "0x48307fe97ff98000", + "0x48307fe67fff8000", + "0x40307ffd7fff7fd4", + "0x482480017fd08000", + "0xc", + "0x48127fd67fff8000", + "0x480a7ffc7fff8000", + "0x48127fe47fff8000", + "0x48127fe27fff8000", + "0x1104800180018000", + "0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffff89", + "0x48127fbf7fff8000", + "0x480a7ffd7fff8000", + "0x48127fcc7fff8000", + "0x48127fca7fff8000", + "0x1104800180018000", + "0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffff83", + "0x48127fa97fff8000", + "0x480a7ffc7fff8000", + "0x48127fb27fff8000", + "0x48127fb07fff8000", + "0x1104800180018000", + "0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffff7d", + "0x48127f927fff8000", + "0x480a7ffd7fff8000", + "0x48127f9e7fff8000", + "0x48127f9c7fff8000", + "0x1104800180018000", + "0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffff77", + "0x48127f7c7fff8000", + "0x480a7ffc7fff8000", + "0x48127f847fff8000", + "0x48127f827fff8000", + "0x1104800180018000", + "0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffff71", + "0x48127f6a7fff8000", + "0x48127f6a7fff8000", + "0x208b7fff7fff7ffe", + "0x1104800180018000", + "0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffeeb", + "0x480a7ffb7fff8000", + "0x48127ffd7fff8000", + "0x48127ffd7fff8000", + "0x480a7ffc7fff8000", + "0x480a7ffd7fff8000", + "0x1104800180018000", + "0xe9", + "0x208b7fff7fff7ffe", + "0x480680017fff8000", + "0x536563703235366b314d756c", + "0x400280007ffa7fff", + "0x400380017ffa7ff9", + "0x400380027ffa7ffb", + "0x400380037ffa7ffc", + "0x400380047ffa7ffd", + "0x480280067ffa8000", + "0x20680017fff7fff", + "0xb", + "0x480280057ffa8000", + "0x482680017ffa8000", + "0x8", + "0x480680017fff8000", + "0x0", + "0x480680017fff8000", + "0x0", + "0x480280077ffa8000", + "0x208b7fff7fff7ffe", + "0x480280057ffa8000", + "0x482680017ffa8000", + "0x9", + "0x480680017fff8000", + "0x1", + "0x480280077ffa8000", + "0x480280087ffa8000", + "0x208b7fff7fff7ffe", + "0x480680017fff8000", + "0x536563703235366b31416464", + "0x400280007ffb7fff", + "0x400380017ffb7ffa", + "0x400380027ffb7ffc", + "0x400380037ffb7ffd", + "0x480280057ffb8000", + "0x20680017fff7fff", + "0xb", + "0x480280047ffb8000", + "0x482680017ffb8000", + "0x7", + "0x480680017fff8000", + "0x0", + "0x480680017fff8000", + "0x0", + "0x480280067ffb8000", + "0x208b7fff7fff7ffe", + "0x480280047ffb8000", + "0x482680017ffb8000", + "0x8", + "0x480680017fff8000", + "0x1", + "0x480280067ffb8000", + "0x480280077ffb8000", + "0x208b7fff7fff7ffe", + "0x48297ffd80007ffc", + "0x20680017fff7fff", + "0x4", + "0x10780017fff7fff", + "0x5", + "0x480680017fff8000", + "0x0", + "0x208b7fff7fff7ffe", + "0x480680017fff8000", + "0x1", + "0x208b7fff7fff7ffe", + "0x480680017fff8000", + "0x8000000000000110000000000000000", + "0x48287ffd80017fff", + "0xa0680017fff7fff", + "0x7", + "0x482480017fff8000", + "0x100000000000000000000000000000000", + "0x400280007ffb7fff", + "0x10780017fff7fff", + "0x24", + "0x400280007ffb7fff", + "0x482680017ffb8000", + "0x1", + "0x4825800180007ffd", + "0x8000000000000110000000000000000", + "0x20680017fff7fff", + "0x4", + "0x10780017fff7fff", + "0x6", + "0x40780017fff7fff", + "0x1", + "0x10780017fff7fff", + "0x10", + "0x4825800180007ffc", + "0x0", + "0x20680017fff7fff", + "0x4", + "0x10780017fff7fff", + "0xa", + "0x40780017fff7fff", + "0x1", + "0x48127ffc7fff8000", + "0x480680017fff8000", + "0x1", + "0x480680017fff8000", + "0x0", + "0x208b7fff7fff7ffe", + "0x484680017ffd8000", + "0x100000000000000000000000000000000", + "0x48127ffc7fff8000", + "0x480680017fff8000", + "0x0", + "0x48287ffc7ffd8000", + "0x208b7fff7fff7ffe", + "0x40780017fff7fff", + "0x3", + "0x482680017ffb8000", + "0x1", + "0x480680017fff8000", + "0x1", + "0x480680017fff8000", + "0x0", + "0x208b7fff7fff7ffe", + "0x480a7ff97fff8000", + "0x480a7ffa7fff8000", + "0x480a7ffb7fff8000", + "0x1104800180018000", + "0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffec11", + "0x480a7ffc7fff8000", + "0x480a7ffd7fff8000", + "0x208b7fff7fff7ffe", + "0x480a7ff97fff8000", + "0x480a7ffa7fff8000", + "0x480a7ffb7fff8000", + "0x1104800180018000", + "0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffec09", + "0x480a7ffc7fff8000", + "0x480a7ffd7fff8000", + "0x208b7fff7fff7ffe", + "0x480a7ff97fff8000", + "0x480a7ffc7fff8000", + "0x480a7ffd7fff8000", + "0x1104800180018000", + "0x7b", + "0x480a7ffa7fff8000", + "0x480a7ffb7fff8000", + "0x48127ffc7fff8000", + "0x48127ffc7fff8000", + "0x208b7fff7fff7ffe", + "0x480a7ffc7fff8000", + "0x480a7ffd7fff8000", + "0x208b7fff7fff7ffe", + "0x40780017fff7fff", + "0x2", + "0x480a7ff97fff8000", + "0x480a7ffa7fff8000", + "0x480a7ffc7fff8000", + "0x48127ffb7fff8000", + "0x48127ffb7fff8000", + "0x1104800180018000", + "0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffec9", + "0x40780017fff7fff", + "0x2", + "0x48127ffd7fff8000", + "0x480a7ffa7fff8000", + "0x480a7ffd7fff8000", + "0x48127ffb7fff8000", + "0x48127ffb7fff8000", + "0x1104800180018000", + "0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffec0", + "0x48127fce7fff8000", + "0x48127fe77fff8000", + "0x1104800180018000", + "0x63", + "0x40780017fff7fff", + "0x2", + "0x48127ffb7fff8000", + "0x480a7ffb7fff8000", + "0x480a7ffc7fff8000", + "0x48127ffb7fff8000", + "0x48127ffb7fff8000", + "0x1104800180018000", + "0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffeb3", + "0x48127fe57fff8000", + "0x48127fe77fff8000", + "0x1104800180018000", + "0x56", + "0x48127ffd7fff8000", + "0x48127fb97fff8000", + "0x48127fdb7fff8000", + "0x1104800180018000", + "0x51", + "0x40780017fff7fff", + "0x2", + "0x48127ffb7fff8000", + "0x480a7ffb7fff8000", + "0x480a7ffd7fff8000", + "0x48127ffb7fff8000", + "0x48127ffb7fff8000", + "0x1104800180018000", + "0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffea1", + "0x48127fe77fff8000", + "0x48127fe57fff8000", + "0x1104800180018000", + "0x5b", + "0x48127ffe7fff8000", + "0x48127fdb7fff8000", + "0x48127fdd7fff8000", + "0x1104800180018000", + "0x3f", + "0x48127ffd7fff8000", + "0x48127ff37fff8000", + "0x48127ffd7fff8000", + "0x1104800180018000", + "0x51", + "0x48127ffe7fff8000", + "0x48127f997fff8000", + "0x48127fbb7fff8000", + "0x1104800180018000", + "0x4c", + "0x48127ffe7fff8000", + "0x48127fe97fff8000", + "0x48127ffd7fff8000", + "0x1104800180018000", + "0x30", + "0x48127ffd7fff8000", + "0x48127fe97fff8000", + "0x48127ffd7fff8000", + "0x1104800180018000", + "0x42", + "0x48127ffe7fff8000", + "0x48127f407fff8000", + "0x48127f9b7fff8000", + "0x48127ff17fff8000", + "0x48127ffb7fff8000", + "0x208b7fff7fff7ffe", + "0x480a7ff97fff8000", + "0x480a7ffa7fff8000", + "0x480a7ffb7fff8000", + "0x480a7ffc7fff8000", + "0x480a7ffd7fff8000", + "0x1104800180018000", + "0x48", + "0x20680017fff7ffd", + "0xa", + "0x40780017fff7fff", + "0x2", + "0x48127ffa7fff8000", + "0x480680017fff8000", + "0x0", + "0x48127ffa7fff8000", + "0x48127ffa7fff8000", + "0x208b7fff7fff7ffe", + "0x40780017fff7fff", + "0x1", + "0x480680017fff8000", + "0x753235365f737562204f766572666c6f77", + "0x400080007ffe7fff", + "0x48127ffa7fff8000", + "0x480680017fff8000", + "0x1", + "0x48127ffc7fff8000", + "0x482480017ffb8000", + "0x1", + "0x208b7fff7fff7ffe", + "0x480a7ffb7fff8000", + "0x480a7ffc7fff8000", + "0x480a7ffd7fff8000", + "0x1104800180018000", + "0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffeb83", + "0x208b7fff7fff7ffe", + "0x482a7ffd7ffc8001", + "0xa0680017fff7fff", + "0x7", + "0x4824800180007fff", + "0x100000000000000000000000000000000", + "0x400280007ffb7fff", + "0x10780017fff7fff", + "0xb", + "0x400280007ffb7fff", + "0x40780017fff7fff", + "0x1", + "0x482680017ffb8000", + "0x1", + "0x48127ffd7fff8000", + "0x480680017fff8000", + "0x0", + "0x208b7fff7fff7ffe", + "0x482680017ffb8000", + "0x1", + "0x48127ffe7fff8000", + "0x480680017fff8000", + "0x1", + "0x208b7fff7fff7ffe", + "0x482a7ffd7ffc8001", + "0xa0680017fff7fff", + "0x7", + "0x4824800180007fff", + "0x100000000000000000000000000000000", + "0x400280007ffb7fff", + "0x10780017fff7fff", + "0x9", + "0x400280007ffb7fff", + "0x40780017fff7fff", + "0x1", + "0x482680017ffb8000", + "0x1", + "0x48127ffd7fff8000", + "0x208b7fff7fff7ffe", + "0x482680017ffb8000", + "0x1", + "0x48127ffe7fff8000", + "0x208b7fff7fff7ffe", + "0x480a7ff97fff8000", + "0x480a7ffa7fff8000", + "0x480a7ffb7fff8000", + "0x480a7ffc7fff8000", + "0x480a7ffd7fff8000", + "0x1104800180018000", + "0x12", + "0x20680017fff7fff", + "0x8", + "0x48127ffc7fff8000", + "0x480680017fff8000", + "0x0", + "0x48127ffb7fff8000", + "0x48127ffb7fff8000", + "0x208b7fff7fff7ffe", + "0x48127ffc7fff8000", + "0x480680017fff8000", + "0x1", + "0x480680017fff8000", + "0x0", + "0x480680017fff8000", + "0x0", + "0x208b7fff7fff7ffe", + "0x48297ffd80017ffb", + "0xa0680017fff7fff", + "0x7", + "0x482480017fff8000", + "0x100000000000000000000000000000000", + "0x400280007ff97fff", + "0x10780017fff7fff", + "0xc", + "0x400280007ff97fff", + "0x40780017fff7fff", + "0x1", + "0x482680017ff98000", + "0x1", + "0x48127ffd7fff8000", + "0x480680017fff8000", + "0x0", + "0x10780017fff7fff", + "0x7", + "0x482680017ff98000", + "0x1", + "0x48127ffe7fff8000", + "0x480680017fff8000", + "0x1", + "0x48297ffc80017ffa", + "0xa0680017fff7fff", + "0x7", + "0x482480017fff8000", + "0x100000000000000000000000000000000", + "0x400080007ffa7fff", + "0x10780017fff7fff", + "0xb", + "0x400080007ffb7fff", + "0x40780017fff7fff", + "0x5", + "0x482480017ff68000", + "0x1", + "0x48127ff97fff8000", + "0x48127ff57fff8000", + "0x48127ff57fff8000", + "0x208b7fff7fff7ffe", + "0x480680017fff8000", + "0x1", + "0x48307fff80017ffa", + "0xa0680017fff7fff", + "0x7", + "0x482480017fff8000", + "0x100000000000000000000000000000000", + "0x400080017ff67fff", + "0x10780017fff7fff", + "0xb", + "0x400080017ff77fff", + "0x40780017fff7fff", + "0x1", + "0x482480017ff68000", + "0x2", + "0x48127ffa7fff8000", + "0x48127ffc7fff8000", + "0x48127ff57fff8000", + "0x208b7fff7fff7ffe", + "0x482480017ff68000", + "0x2", + "0x48127ffa7fff8000", + "0x48127ffd7fff8000", + "0x480680017fff8000", + "0x1", + "0x208b7fff7fff7ffe" + ], + "hints": [ + [ + 0, + [ + { + "TestLessThanOrEqual": { + "lhs": { + "Immediate": "0x0" + }, + "rhs": { + "Deref": { + "register": "FP", + "offset": -6 + } + }, + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 23, + [ + { + "AllocSegment": { + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 42, + [ + { + "TestLessThanOrEqual": { + "lhs": { + "Immediate": "0xeede" + }, + "rhs": { + "Deref": { + "register": "AP", + "offset": -37 + } + }, + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 63, + [ + { + "AllocSegment": { + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 81, + [ + { + "AllocSegment": { + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 96, + [ + { + "AllocSegment": { + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 110, + [ + { + "AllocSegment": { + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 127, + [ + { + "TestLessThanOrEqual": { + "lhs": { + "Immediate": "0x0" + }, + "rhs": { + "Deref": { + "register": "FP", + "offset": -6 + } + }, + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 153, + [ + { + "AllocSegment": { + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 172, + [ + { + "TestLessThanOrEqual": { + "lhs": { + "Immediate": "0xb978" + }, + "rhs": { + "Deref": { + "register": "AP", + "offset": -12 + } + }, + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 195, + [ + { + "AllocSegment": { + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 231, + [ + { + "AllocSegment": { + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 246, + [ + { + "AllocSegment": { + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 268, + [ + { + "AllocSegment": { + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 283, + [ + { + "TestLessThanOrEqual": { + "lhs": { + "Immediate": "0x0" + }, + "rhs": { + "Deref": { + "register": "FP", + "offset": -6 + } + }, + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 309, + [ + { + "AllocSegment": { + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 328, + [ + { + "TestLessThanOrEqual": { + "lhs": { + "Immediate": "0x58d9a" + }, + "rhs": { + "Deref": { + "register": "AP", + "offset": -12 + } + }, + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 350, + [ + { + "AllocSegment": { + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 373, + [ + { + "AllocSegment": { + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 388, + [ + { + "AllocSegment": { + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 410, + [ + { + "AllocSegment": { + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 427, + [ + { + "TestLessThanOrEqual": { + "lhs": { + "Immediate": "0x0" + }, + "rhs": { + "Deref": { + "register": "FP", + "offset": -6 + } + }, + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 461, + [ + { + "AllocSegment": { + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 480, + [ + { + "TestLessThanOrEqual": { + "lhs": { + "Immediate": "0x561da" + }, + "rhs": { + "Deref": { + "register": "AP", + "offset": -12 + } + }, + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 503, + [ + { + "AllocSegment": { + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 526, + [ + { + "AllocSegment": { + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 541, + [ + { + "AllocSegment": { + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 563, + [ + { + "AllocSegment": { + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 577, + [ + { + "AllocSegment": { + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 594, + [ + { + "TestLessThanOrEqual": { + "lhs": { + "Immediate": "0x0" + }, + "rhs": { + "Deref": { + "register": "FP", + "offset": -6 + } + }, + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 628, + [ + { + "AllocSegment": { + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 647, + [ + { + "TestLessThanOrEqual": { + "lhs": { + "Immediate": "0x561da" + }, + "rhs": { + "Deref": { + "register": "AP", + "offset": -12 + } + }, + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 670, + [ + { + "AllocSegment": { + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 693, + [ + { + "AllocSegment": { + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 708, + [ + { + "AllocSegment": { + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 730, + [ + { + "AllocSegment": { + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 744, + [ + { + "AllocSegment": { + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 759, + [ + { + "TestLessThanOrEqual": { + "lhs": { + "Immediate": "0x0" + }, + "rhs": { + "Deref": { + "register": "FP", + "offset": -6 + } + }, + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 776, + [ + { + "AllocSegment": { + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 795, + [ + { + "TestLessThanOrEqual": { + "lhs": { + "Immediate": "0x12534" + }, + "rhs": { + "Deref": { + "register": "AP", + "offset": -7 + } + }, + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 815, + [ + { + "AllocSegment": { + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 850, + [ + { + "AllocSegment": { + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 865, + [ + { + "AllocSegment": { + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 880, + [ + { + "TestLessThanOrEqual": { + "lhs": { + "Immediate": "0x59c4" + }, + "rhs": { + "Deref": { + "register": "FP", + "offset": -6 + } + }, + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 907, + [ + { + "AllocSegment": { + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 927, + [ + { + "TestLessThanOrEqual": { + "lhs": { + "Immediate": "0x385e0" + }, + "rhs": { + "Deref": { + "register": "AP", + "offset": -12 + } + }, + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 949, + [ + { + "AllocSegment": { + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 969, + [ + { + "AllocSegment": { + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 985, + [ + { + "AllocSegment": { + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 1009, + [ + { + "AllocSegment": { + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 1025, + [ + { + "TestLessThanOrEqual": { + "lhs": { + "Immediate": "0x0" + }, + "rhs": { + "Deref": { + "register": "FP", + "offset": -6 + } + }, + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 1042, + [ + { + "AllocSegment": { + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 1061, + [ + { + "TestLessThanOrEqual": { + "lhs": { + "Immediate": "0x12534" + }, + "rhs": { + "Deref": { + "register": "AP", + "offset": -7 + } + }, + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 1081, + [ + { + "AllocSegment": { + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 1116, + [ + { + "AllocSegment": { + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 1131, + [ + { + "AllocSegment": { + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 1146, + [ + { + "TestLessThanOrEqual": { + "lhs": { + "Immediate": "0x59c4" + }, + "rhs": { + "Deref": { + "register": "FP", + "offset": -6 + } + }, + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 1173, + [ + { + "AllocSegment": { + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 1193, + [ + { + "TestLessThanOrEqual": { + "lhs": { + "Immediate": "0x3889c" + }, + "rhs": { + "Deref": { + "register": "AP", + "offset": -12 + } + }, + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 1215, + [ + { + "AllocSegment": { + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 1235, + [ + { + "AllocSegment": { + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 1251, + [ + { + "AllocSegment": { + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 1275, + [ + { + "AllocSegment": { + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 1291, + [ + { + "TestLessThanOrEqual": { + "lhs": { + "Immediate": "0x0" + }, + "rhs": { + "Deref": { + "register": "FP", + "offset": -6 + } + }, + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 1314, + [ + { + "AllocSegment": { + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 1333, + [ + { + "TestLessThanOrEqual": { + "lhs": { + "Immediate": "0x58200" + }, + "rhs": { + "Deref": { + "register": "AP", + "offset": -22 + } + }, + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 1354, + [ + { + "AllocSegment": { + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 1377, + [ + { + "AllocSegment": { + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 1392, + [ + { + "AllocSegment": { + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 1406, + [ + { + "AllocSegment": { + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 1421, + [ + { + "TestLessThanOrEqual": { + "lhs": { + "Immediate": "0x689c" + }, + "rhs": { + "Deref": { + "register": "FP", + "offset": -6 + } + }, + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 1461, + [ + { + "AllocSegment": { + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 1480, + [ + { + "TestLessThanOrEqual": { + "lhs": { + "Immediate": "0x5981c" + }, + "rhs": { + "Deref": { + "register": "AP", + "offset": -12 + } + }, + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 1503, + [ + { + "AllocSegment": { + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 1526, + [ + { + "AllocSegment": { + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 1541, + [ + { + "AllocSegment": { + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 1563, + [ + { + "AllocSegment": { + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 1577, + [ + { + "AllocSegment": { + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 1591, + [ + { + "AllocSegment": { + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 1606, + [ + { + "TestLessThanOrEqual": { + "lhs": { + "Immediate": "0x0" + }, + "rhs": { + "Deref": { + "register": "FP", + "offset": -6 + } + }, + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 1629, + [ + { + "AllocSegment": { + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 1652, + [ + { + "TestLessThanOrEqual": { + "lhs": { + "Deref": { + "register": "AP", + "offset": -1 + } + }, + "rhs": { + "Deref": { + "register": "AP", + "offset": -24 + } + }, + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 1672, + [ + { + "AllocSegment": { + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 1697, + [ + { + "AllocSegment": { + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 1713, + [ + { + "AllocSegment": { + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 1728, + [ + { + "AllocSegment": { + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 1744, + [ + { + "TestLessThanOrEqual": { + "lhs": { + "Immediate": "0x5af0" + }, + "rhs": { + "Deref": { + "register": "FP", + "offset": -6 + } + }, + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 1771, + [ + { + "AllocSegment": { + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 1795, + [ + { + "TestLessThanOrEqual": { + "lhs": { + "Deref": { + "register": "AP", + "offset": -1 + } + }, + "rhs": { + "Deref": { + "register": "AP", + "offset": -14 + } + }, + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 1816, + [ + { + "AllocSegment": { + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 1838, + [ + { + "AllocSegment": { + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 1855, + [ + { + "AllocSegment": { + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 1881, + [ + { + "AllocSegment": { + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 1904, + [ + { + "TestLessThan": { + "lhs": { + "Deref": { + "register": "AP", + "offset": -1 + } + }, + "rhs": { + "Immediate": "0x800000000000000000000000000000000000000000000000000000000000000" + }, + "dst": { + "register": "AP", + "offset": 4 + } + } + } + ] + ], + [ + 1908, + [ + { + "LinearSplit": { + "value": { + "Deref": { + "register": "AP", + "offset": 3 + } + }, + "scalar": { + "Immediate": "0x110000000000000000" + }, + "max_x": { + "Immediate": "0xffffffffffffffffffffffffffffffff" + }, + "x": { + "register": "AP", + "offset": -2 + }, + "y": { + "register": "AP", + "offset": -1 + } + } + } + ] + ], + [ + 1918, + [ + { + "LinearSplit": { + "value": { + "Deref": { + "register": "AP", + "offset": -2 + } + }, + "scalar": { + "Immediate": "0x8000000000000000000000000000000" + }, + "max_x": { + "Immediate": "0xffffffffffffffffffffffffffffffff" + }, + "x": { + "register": "AP", + "offset": -1 + }, + "y": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 2016, + [ + { + "AllocSegment": { + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 2137, + [ + { + "AllocSegment": { + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 2240, + [ + { + "SystemCall": { + "system": { + "Deref": { + "register": "FP", + "offset": -5 + } + } + } + } + ] + ], + [ + 2462, + [ + { + "AllocSegment": { + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 2508, + [ + { + "AllocSegment": { + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 2526, + [ + { + "SystemCall": { + "system": { + "Deref": { + "register": "FP", + "offset": -4 + } + } + } + } + ] + ], + [ + 2571, + [ + { + "TestLessThanOrEqual": { + "lhs": { + "Immediate": "0x4a42" + }, + "rhs": { + "Deref": { + "register": "FP", + "offset": -8 + } + }, + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 2649, + [ + { + "AllocSegment": { + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 2721, + [ + { + "AllocSegment": { + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 2760, + [ + { + "AllocSegment": { + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 2792, + [ + { + "AllocSegment": { + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 2821, + [ + { + "TestLessThanOrEqual": { + "lhs": { + "Immediate": "0x1928" + }, + "rhs": { + "Deref": { + "register": "FP", + "offset": -7 + } + }, + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 2891, + [ + { + "AllocSegment": { + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 2923, + [ + { + "AllocSegment": { + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 2974, + [ + { + "TestLessThanOrEqual": { + "lhs": { + "Immediate": "0xf1e" + }, + "rhs": { + "Deref": { + "register": "FP", + "offset": -8 + } + }, + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 3033, + [ + { + "AllocSegment": { + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 3101, + [ + { + "SystemCall": { + "system": { + "Deref": { + "register": "FP", + "offset": -4 + } + } + } + } + ] + ], + [ + 3569, + [ + { + "TestLessThan": { + "lhs": { + "Deref": { + "register": "FP", + "offset": -3 + } + }, + "rhs": { + "Immediate": "0x100000000000000000000000000000000" + }, + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 3571, + [ + { + "DivMod": { + "lhs": { + "Deref": { + "register": "FP", + "offset": -3 + } + }, + "rhs": { + "Immediate": "0x100000000000000000000000000000000" + }, + "quotient": { + "register": "AP", + "offset": 3 + }, + "remainder": { + "register": "AP", + "offset": 4 + } + } + } + ] + ], + [ + 3606, + [ + { + "TestLessThan": { + "lhs": { + "Deref": { + "register": "AP", + "offset": 0 + } + }, + "rhs": { + "Immediate": "0x100000000000000000000000000000000" + }, + "dst": { + "register": "AP", + "offset": -1 + } + } + } + ] + ], + [ + 3628, + [ + { + "TestLessThan": { + "lhs": { + "Deref": { + "register": "AP", + "offset": 0 + } + }, + "rhs": { + "Immediate": "0x100000000000000000000000000000000" + }, + "dst": { + "register": "AP", + "offset": -1 + } + } + } + ] + ], + [ + 3672, + [ + { + "AllocSegment": { + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 3684, + [ + { + "AllocSegment": { + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 3762, + [ + { + "SystemCall": { + "system": { + "Deref": { + "register": "FP", + "offset": -3 + } + } + } + } + ] + ], + [ + 3779, + [ + { + "SystemCall": { + "system": { + "BinOp": { + "op": "Add", + "a": { + "register": "FP", + "offset": -3 + }, + "b": { + "Immediate": "0x7" + } + } + } + } + } + ] + ], + [ + 3855, + [ + { + "AllocSegment": { + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 3984, + [ + { + "AllocSegment": { + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 4105, + [ + { + "SystemCall": { + "system": { + "Deref": { + "register": "FP", + "offset": -4 + } + } + } + } + ] + ], + [ + 4185, + [ + { + "SystemCall": { + "system": { + "Deref": { + "register": "FP", + "offset": -3 + } + } + } + } + ] + ], + [ + 4224, + [ + { + "AllocSegment": { + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 4242, + [ + { + "AllocSegment": { + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 4244, + [ + { + "AllocSegment": { + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 4267, + [ + { + "SystemCall": { + "system": { + "Deref": { + "register": "FP", + "offset": -6 + } + } + } + } + ] + ], + [ + 4314, + [ + { + "TestLessThan": { + "lhs": { + "Deref": { + "register": "AP", + "offset": -1 + } + }, + "rhs": { + "Immediate": "0x800000000000000000000000000000000000000000000000000000000000000" + }, + "dst": { + "register": "AP", + "offset": 4 + } + } + } + ] + ], + [ + 4318, + [ + { + "LinearSplit": { + "value": { + "Deref": { + "register": "AP", + "offset": 3 + } + }, + "scalar": { + "Immediate": "0x110000000000000000" + }, + "max_x": { + "Immediate": "0xffffffffffffffffffffffffffffffff" + }, + "x": { + "register": "AP", + "offset": -2 + }, + "y": { + "register": "AP", + "offset": -1 + } + } + } + ] + ], + [ + 4328, + [ + { + "LinearSplit": { + "value": { + "Deref": { + "register": "AP", + "offset": -2 + } + }, + "scalar": { + "Immediate": "0x8000000000000000000000000000000" + }, + "max_x": { + "Immediate": "0xffffffffffffffffffffffffffffffff" + }, + "x": { + "register": "AP", + "offset": -1 + }, + "y": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 4398, + [ + { + "TestLessThanOrEqual": { + "lhs": { + "Deref": { + "register": "AP", + "offset": -1 + } + }, + "rhs": { + "Deref": { + "register": "AP", + "offset": -2 + } + }, + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 4420, + [ + { + "TestLessThanOrEqual": { + "lhs": { + "Deref": { + "register": "AP", + "offset": -1 + } + }, + "rhs": { + "Deref": { + "register": "AP", + "offset": -2 + } + }, + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 4443, + [ + { + "AllocSegment": { + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 4478, + [ + { + "AllocSegment": { + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 4553, + [ + { + "TestLessThanOrEqual": { + "lhs": { + "Immediate": "0x40ba" + }, + "rhs": { + "Deref": { + "register": "FP", + "offset": -8 + } + }, + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 4642, + [ + { + "AllocSegment": { + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 4666, + [ + { + "TestLessThanOrEqual": { + "lhs": { + "Immediate": "0xcc6" + }, + "rhs": { + "Deref": { + "register": "FP", + "offset": -7 + } + }, + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 4722, + [ + { + "AllocSegment": { + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 4841, + [ + { + "AllocSegment": { + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 4867, + [ + { + "AllocSegment": { + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 4936, + [ + { + "SystemCall": { + "system": { + "Deref": { + "register": "FP", + "offset": -5 + } + } + } + } + ] + ], + [ + 4972, + [ + { + "AllocSegment": { + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 5008, + [ + { + "AllocSegment": { + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 5034, + [ + { + "AllocSegment": { + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 5061, + [ + { + "TestLessThan": { + "lhs": { + "Deref": { + "register": "FP", + "offset": -3 + } + }, + "rhs": { + "Immediate": "0x100000000000000000000000000000000" + }, + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 5063, + [ + { + "DivMod": { + "lhs": { + "Deref": { + "register": "FP", + "offset": -3 + } + }, + "rhs": { + "Immediate": "0x100000000000000000000000000000000" + }, + "quotient": { + "register": "AP", + "offset": 3 + }, + "remainder": { + "register": "AP", + "offset": 4 + } + } + } + ] + ], + [ + 5159, + [ + { + "SystemCall": { + "system": { + "Deref": { + "register": "AP", + "offset": -7 + } + } + } + } + ] + ], + [ + 5176, + [ + { + "SystemCall": { + "system": { + "BinOp": { + "op": "Add", + "a": { + "register": "AP", + "offset": -13 + }, + "b": { + "Immediate": "0x7" + } + } + } + } + } + ] + ], + [ + 5274, + [ + { + "TestLessThan": { + "lhs": { + "Deref": { + "register": "AP", + "offset": -1 + } + }, + "rhs": { + "Immediate": "0x7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00" + }, + "dst": { + "register": "AP", + "offset": 5 + } + } + } + ] + ], + [ + 5278, + [ + { + "LinearSplit": { + "value": { + "Deref": { + "register": "AP", + "offset": 4 + } + }, + "scalar": { + "Immediate": "0x110000000000000000" + }, + "max_x": { + "Immediate": "0xffffffffffffffffffffffffffffffff" + }, + "x": { + "register": "AP", + "offset": -2 + }, + "y": { + "register": "AP", + "offset": -1 + } + } + } + ] + ], + [ + 5289, + [ + { + "LinearSplit": { + "value": { + "Deref": { + "register": "AP", + "offset": 4 + } + }, + "scalar": { + "Immediate": "0x8000000000000000000000000000000" + }, + "max_x": { + "Immediate": "0xfffffffffffffffffffffffffffffffe" + }, + "x": { + "register": "AP", + "offset": -2 + }, + "y": { + "register": "AP", + "offset": -1 + } + } + } + ] + ], + [ + 5336, + [ + { + "SystemCall": { + "system": { + "Deref": { + "register": "FP", + "offset": -5 + } + } + } + } + ] + ], + [ + 5449, + [ + { + "TestLessThan": { + "lhs": { + "BinOp": { + "op": "Add", + "a": { + "register": "FP", + "offset": -3 + }, + "b": { + "Immediate": "0x0" + } + } + }, + "rhs": { + "Immediate": "0x100000000" + }, + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 5453, + [ + { + "LinearSplit": { + "value": { + "Deref": { + "register": "AP", + "offset": -1 + } + }, + "scalar": { + "Immediate": "0x8000000000000110000000000000000" + }, + "max_x": { + "Immediate": "0xfffffffffffffffffffffffffffffffe" + }, + "x": { + "register": "AP", + "offset": 0 + }, + "y": { + "register": "AP", + "offset": 1 + } + } + } + ] + ], + [ + 5487, + [ + { + "TestLessThan": { + "lhs": { + "Deref": { + "register": "AP", + "offset": 0 + } + }, + "rhs": { + "Immediate": "0x100000000" + }, + "dst": { + "register": "AP", + "offset": -1 + } + } + } + ] + ], + [ + 5520, + [ + { + "TestLessThan": { + "lhs": { + "Deref": { + "register": "AP", + "offset": 0 + } + }, + "rhs": { + "Immediate": "0x100000000000000000000000000000000" + }, + "dst": { + "register": "AP", + "offset": -1 + } + } + } + ] + ], + [ + 5543, + [ + { + "TestLessThan": { + "lhs": { + "Deref": { + "register": "AP", + "offset": 0 + } + }, + "rhs": { + "Immediate": "0x100000000000000000000000000000000" + }, + "dst": { + "register": "AP", + "offset": -1 + } + } + } + ] + ], + [ + 5562, + [ + { + "TestLessThan": { + "lhs": { + "Deref": { + "register": "AP", + "offset": 0 + } + }, + "rhs": { + "Immediate": "0x100000000000000000000000000000000" + }, + "dst": { + "register": "AP", + "offset": -1 + } + } + } + ] + ], + [ + 5593, + [ + { + "SystemCall": { + "system": { + "Deref": { + "register": "FP", + "offset": -7 + } + } + } + } + ] + ], + [ + 5760, + [ + { + "U256InvModN": { + "b0": { + "Deref": { + "register": "AP", + "offset": -2 + } + }, + "b1": { + "Deref": { + "register": "AP", + "offset": -1 + } + }, + "n0": { + "Deref": { + "register": "AP", + "offset": -15 + } + }, + "n1": { + "Deref": { + "register": "AP", + "offset": -14 + } + }, + "g0_or_no_inv": { + "register": "AP", + "offset": 0 + }, + "g1_option": { + "register": "AP", + "offset": 1 + }, + "s_or_r0": { + "register": "AP", + "offset": 2 + }, + "s_or_r1": { + "register": "AP", + "offset": 3 + }, + "t_or_k0": { + "register": "AP", + "offset": 4 + }, + "t_or_k1": { + "register": "AP", + "offset": 5 + } + } + } + ] + ], + [ + 5778, + [ + { + "WideMul128": { + "lhs": { + "Deref": { + "register": "AP", + "offset": -22 + } + }, + "rhs": { + "Deref": { + "register": "AP", + "offset": -26 + } + }, + "high": { + "register": "AP", + "offset": -14 + }, + "low": { + "register": "AP", + "offset": -15 + } + } + }, + { + "WideMul128": { + "lhs": { + "Deref": { + "register": "AP", + "offset": -22 + } + }, + "rhs": { + "Deref": { + "register": "AP", + "offset": -25 + } + }, + "high": { + "register": "AP", + "offset": -12 + }, + "low": { + "register": "AP", + "offset": -13 + } + } + }, + { + "WideMul128": { + "lhs": { + "Deref": { + "register": "AP", + "offset": -21 + } + }, + "rhs": { + "Deref": { + "register": "AP", + "offset": -26 + } + }, + "high": { + "register": "AP", + "offset": -10 + }, + "low": { + "register": "AP", + "offset": -11 + } + } + }, + { + "WideMul128": { + "lhs": { + "Deref": { + "register": "AP", + "offset": -21 + } + }, + "rhs": { + "Deref": { + "register": "AP", + "offset": -25 + } + }, + "high": { + "register": "AP", + "offset": -8 + }, + "low": { + "register": "AP", + "offset": -9 + } + } + }, + { + "WideMul128": { + "lhs": { + "Deref": { + "register": "AP", + "offset": -39 + } + }, + "rhs": { + "Deref": { + "register": "AP", + "offset": -20 + } + }, + "high": { + "register": "AP", + "offset": -6 + }, + "low": { + "register": "AP", + "offset": -7 + } + } + }, + { + "WideMul128": { + "lhs": { + "Deref": { + "register": "AP", + "offset": -39 + } + }, + "rhs": { + "Deref": { + "register": "AP", + "offset": -19 + } + }, + "high": { + "register": "AP", + "offset": -4 + }, + "low": { + "register": "AP", + "offset": -5 + } + } + }, + { + "WideMul128": { + "lhs": { + "Deref": { + "register": "AP", + "offset": -38 + } + }, + "rhs": { + "Deref": { + "register": "AP", + "offset": -20 + } + }, + "high": { + "register": "AP", + "offset": -2 + }, + "low": { + "register": "AP", + "offset": -3 + } + } + }, + { + "WideMul128": { + "lhs": { + "Deref": { + "register": "AP", + "offset": -38 + } + }, + "rhs": { + "Deref": { + "register": "AP", + "offset": -19 + } + }, + "high": { + "register": "AP", + "offset": 0 + }, + "low": { + "register": "AP", + "offset": -1 + } + } + } + ] + ], + [ + 5831, + [ + { + "WideMul128": { + "lhs": { + "Deref": { + "register": "AP", + "offset": -7 + } + }, + "rhs": { + "Deref": { + "register": "AP", + "offset": -5 + } + }, + "high": { + "register": "AP", + "offset": 0 + }, + "low": { + "register": "AP", + "offset": -9 + } + } + }, + { + "WideMul128": { + "lhs": { + "Deref": { + "register": "AP", + "offset": -7 + } + }, + "rhs": { + "Deref": { + "register": "AP", + "offset": -3 + } + }, + "high": { + "register": "AP", + "offset": 1 + }, + "low": { + "register": "AP", + "offset": -22 + } + } + } + ] + ], + [ + 5835, + [ + { + "TestLessThan": { + "lhs": { + "Deref": { + "register": "AP", + "offset": -10 + } + }, + "rhs": { + "Immediate": "0x10000000000000000" + }, + "dst": { + "register": "AP", + "offset": 2 + } + } + } + ] + ], + [ + 5849, + [ + { + "TestLessThan": { + "lhs": { + "Deref": { + "register": "AP", + "offset": -11 + } + }, + "rhs": { + "Immediate": "0x10000000000000000" + }, + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 6028, + [ + { + "AllocSegment": { + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 6044, + [ + { + "AllocSegment": { + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 6060, + [ + { + "AllocSegment": { + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 6176, + [ + { + "Uint256DivMod": { + "dividend0": { + "Deref": { + "register": "FP", + "offset": -6 + } + }, + "dividend1": { + "Deref": { + "register": "FP", + "offset": -5 + } + }, + "divisor0": { + "Deref": { + "register": "AP", + "offset": -2 + } + }, + "divisor1": { + "Deref": { + "register": "AP", + "offset": -1 + } + }, + "quotient0": { + "register": "AP", + "offset": 0 + }, + "quotient1": { + "register": "AP", + "offset": 1 + }, + "remainder0": { + "register": "AP", + "offset": 2 + }, + "remainder1": { + "register": "AP", + "offset": 3 + } + } + } + ] + ], + [ + 6192, + [ + { + "WideMul128": { + "lhs": { + "Deref": { + "register": "AP", + "offset": -7 + } + }, + "rhs": { + "Deref": { + "register": "AP", + "offset": -9 + } + }, + "high": { + "register": "AP", + "offset": 1 + }, + "low": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 6199, + [ + { + "TestLessThan": { + "lhs": { + "Deref": { + "register": "AP", + "offset": -12 + } + }, + "rhs": { + "Deref": { + "register": "AP", + "offset": -13 + } + }, + "dst": { + "register": "AP", + "offset": 2 + } + } + } + ] + ], + [ + 6211, + [ + { + "TestLessThan": { + "lhs": { + "Deref": { + "register": "AP", + "offset": -12 + } + }, + "rhs": { + "Deref": { + "register": "AP", + "offset": -15 + } + }, + "dst": { + "register": "AP", + "offset": 1 + } + } + } + ] + ], + [ + 6241, + [ + { + "AllocSegment": { + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 6274, + [ + { + "Uint256DivMod": { + "dividend0": { + "Deref": { + "register": "FP", + "offset": -6 + } + }, + "dividend1": { + "Deref": { + "register": "FP", + "offset": -5 + } + }, + "divisor0": { + "Deref": { + "register": "AP", + "offset": -2 + } + }, + "divisor1": { + "Deref": { + "register": "AP", + "offset": -1 + } + }, + "quotient0": { + "register": "AP", + "offset": 0 + }, + "quotient1": { + "register": "AP", + "offset": 1 + }, + "remainder0": { + "register": "AP", + "offset": 2 + }, + "remainder1": { + "register": "AP", + "offset": 3 + } + } + } + ] + ], + [ + 6290, + [ + { + "WideMul128": { + "lhs": { + "Deref": { + "register": "AP", + "offset": -7 + } + }, + "rhs": { + "Deref": { + "register": "AP", + "offset": -9 + } + }, + "high": { + "register": "AP", + "offset": 1 + }, + "low": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 6297, + [ + { + "TestLessThan": { + "lhs": { + "Deref": { + "register": "AP", + "offset": -12 + } + }, + "rhs": { + "Deref": { + "register": "AP", + "offset": -13 + } + }, + "dst": { + "register": "AP", + "offset": 2 + } + } + } + ] + ], + [ + 6309, + [ + { + "TestLessThan": { + "lhs": { + "Deref": { + "register": "AP", + "offset": -12 + } + }, + "rhs": { + "Deref": { + "register": "AP", + "offset": -15 + } + }, + "dst": { + "register": "AP", + "offset": 1 + } + } + } + ] + ], + [ + 6339, + [ + { + "AllocSegment": { + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 6375, + [ + { + "TestLessThanOrEqual": { + "lhs": { + "Deref": { + "register": "AP", + "offset": -1 + } + }, + "rhs": { + "Deref": { + "register": "FP", + "offset": -10 + } + }, + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 6443, + [ + { + "TestLessThanOrEqual": { + "lhs": { + "Immediate": "0x816" + }, + "rhs": { + "Deref": { + "register": "AP", + "offset": -22 + } + }, + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 6468, + [ + { + "AllocSegment": { + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 6550, + [ + { + "AllocSegment": { + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 6605, + [ + { + "AllocSegment": { + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 6692, + [ + { + "AllocSegment": { + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 6781, + [ + { + "SystemCall": { + "system": { + "Deref": { + "register": "FP", + "offset": -6 + } + } + } + } + ] + ], + [ + 6816, + [ + { + "SystemCall": { + "system": { + "Deref": { + "register": "FP", + "offset": -3 + } + } + } + } + ] + ], + [ + 6851, + [ + { + "AllocSegment": { + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 6898, + [ + { + "DivMod": { + "lhs": { + "Deref": { + "register": "FP", + "offset": -6 + } + }, + "rhs": { + "Immediate": "0x10000000000000000" + }, + "quotient": { + "register": "AP", + "offset": 1 + }, + "remainder": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 6908, + [ + { + "DivMod": { + "lhs": { + "Deref": { + "register": "AP", + "offset": -1 + } + }, + "rhs": { + "Immediate": "0x10000000000000000" + }, + "quotient": { + "register": "AP", + "offset": 0 + }, + "remainder": { + "register": "AP", + "offset": 1 + } + } + } + ] + ], + [ + 6919, + [ + { + "DivMod": { + "lhs": { + "Deref": { + "register": "AP", + "offset": 2 + } + }, + "rhs": { + "Immediate": "0x100000000000000000000000000000000" + }, + "quotient": { + "register": "AP", + "offset": -1 + }, + "remainder": { + "register": "FP", + "offset": -3 + } + } + } + ] + ], + [ + 6938, + [ + { + "Uint512DivModByUint256": { + "dividend0": { + "Deref": { + "register": "AP", + "offset": -4 + } + }, + "dividend1": { + "Deref": { + "register": "AP", + "offset": -3 + } + }, + "dividend2": { + "Deref": { + "register": "AP", + "offset": -2 + } + }, + "dividend3": { + "Deref": { + "register": "AP", + "offset": -1 + } + }, + "divisor0": { + "Deref": { + "register": "FP", + "offset": -4 + } + }, + "divisor1": { + "Deref": { + "register": "FP", + "offset": -3 + } + }, + "quotient0": { + "register": "AP", + "offset": 0 + }, + "quotient1": { + "register": "AP", + "offset": 1 + }, + "quotient2": { + "register": "AP", + "offset": 2 + }, + "quotient3": { + "register": "AP", + "offset": 3 + }, + "remainder0": { + "register": "AP", + "offset": 4 + }, + "remainder1": { + "register": "AP", + "offset": 5 + } + } + } + ] + ], + [ + 6956, + [ + { + "WideMul128": { + "lhs": { + "Deref": { + "register": "AP", + "offset": -19 + } + }, + "rhs": { + "Deref": { + "register": "FP", + "offset": -4 + } + }, + "high": { + "register": "AP", + "offset": -9 + }, + "low": { + "register": "AP", + "offset": -10 + } + } + }, + { + "WideMul128": { + "lhs": { + "Deref": { + "register": "AP", + "offset": -18 + } + }, + "rhs": { + "Deref": { + "register": "FP", + "offset": -4 + } + }, + "high": { + "register": "AP", + "offset": -7 + }, + "low": { + "register": "AP", + "offset": -8 + } + } + }, + { + "WideMul128": { + "lhs": { + "Deref": { + "register": "AP", + "offset": -19 + } + }, + "rhs": { + "Deref": { + "register": "FP", + "offset": -3 + } + }, + "high": { + "register": "AP", + "offset": -5 + }, + "low": { + "register": "AP", + "offset": -6 + } + } + }, + { + "WideMul128": { + "lhs": { + "Deref": { + "register": "AP", + "offset": -18 + } + }, + "rhs": { + "Deref": { + "register": "FP", + "offset": -3 + } + }, + "high": { + "register": "AP", + "offset": -3 + }, + "low": { + "register": "AP", + "offset": -4 + } + } + }, + { + "WideMul128": { + "lhs": { + "Deref": { + "register": "AP", + "offset": -17 + } + }, + "rhs": { + "Deref": { + "register": "FP", + "offset": -4 + } + }, + "high": { + "register": "AP", + "offset": -1 + }, + "low": { + "register": "AP", + "offset": -2 + } + } + } + ] + ], + [ + 6985, + [ + { + "TestLessThan": { + "lhs": { + "Deref": { + "register": "AP", + "offset": -35 + } + }, + "rhs": { + "Deref": { + "register": "FP", + "offset": -3 + } + }, + "dst": { + "register": "AP", + "offset": 1 + } + } + } + ] + ], + [ + 6997, + [ + { + "TestLessThan": { + "lhs": { + "Deref": { + "register": "AP", + "offset": -35 + } + }, + "rhs": { + "Deref": { + "register": "FP", + "offset": -4 + } + }, + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 7064, + [ + { + "SystemCall": { + "system": { + "Deref": { + "register": "FP", + "offset": -6 + } + } + } + } + ] + ], + [ + 7090, + [ + { + "SystemCall": { + "system": { + "Deref": { + "register": "FP", + "offset": -5 + } + } + } + } + ] + ], + [ + 7124, + [ + { + "TestLessThan": { + "lhs": { + "Deref": { + "register": "AP", + "offset": 0 + } + }, + "rhs": { + "Immediate": "0x100000000000000000000000000000000" + }, + "dst": { + "register": "AP", + "offset": -1 + } + } + } + ] + ], + [ + 7203, + [ + { + "WideMul128": { + "lhs": { + "Deref": { + "register": "FP", + "offset": -6 + } + }, + "rhs": { + "Deref": { + "register": "FP", + "offset": -4 + } + }, + "high": { + "register": "AP", + "offset": 0 + }, + "low": { + "register": "AP", + "offset": 1 + } + } + } + ] + ], + [ + 7212, + [ + { + "WideMul128": { + "lhs": { + "Deref": { + "register": "FP", + "offset": -6 + } + }, + "rhs": { + "Deref": { + "register": "FP", + "offset": -3 + } + }, + "high": { + "register": "AP", + "offset": 0 + }, + "low": { + "register": "AP", + "offset": 1 + } + } + } + ] + ], + [ + 7225, + [ + { + "WideMul128": { + "lhs": { + "Deref": { + "register": "FP", + "offset": -5 + } + }, + "rhs": { + "Deref": { + "register": "FP", + "offset": -4 + } + }, + "high": { + "register": "AP", + "offset": 0 + }, + "low": { + "register": "AP", + "offset": 1 + } + } + } + ] + ], + [ + 7243, + [ + { + "WideMul128": { + "lhs": { + "Deref": { + "register": "FP", + "offset": -5 + } + }, + "rhs": { + "Deref": { + "register": "FP", + "offset": -3 + } + }, + "high": { + "register": "AP", + "offset": 0 + }, + "low": { + "register": "AP", + "offset": 1 + } + } + } + ] + ], + [ + 7304, + [ + { + "AllocSegment": { + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 7323, + [ + { + "TestLessThan": { + "lhs": { + "Deref": { + "register": "AP", + "offset": 0 + } + }, + "rhs": { + "Immediate": "0x100000000000000000000000000000000" + }, + "dst": { + "register": "AP", + "offset": -1 + } + } + } + ] + ], + [ + 7346, + [ + { + "TestLessThan": { + "lhs": { + "Deref": { + "register": "AP", + "offset": 0 + } + }, + "rhs": { + "Immediate": "0x100000000000000000000000000000000" + }, + "dst": { + "register": "AP", + "offset": -1 + } + } + } + ] + ], + [ + 7388, + [ + { + "TestLessThan": { + "lhs": { + "Deref": { + "register": "AP", + "offset": 0 + } + }, + "rhs": { + "Immediate": "0x100000000000000000000000000000000" + }, + "dst": { + "register": "AP", + "offset": -1 + } + } + } + ] + ], + [ + 7411, + [ + { + "TestLessThan": { + "lhs": { + "Deref": { + "register": "AP", + "offset": 0 + } + }, + "rhs": { + "Immediate": "0x100000000000000000000000000000000" + }, + "dst": { + "register": "AP", + "offset": -1 + } + } + } + ] + ], + [ + 7430, + [ + { + "TestLessThan": { + "lhs": { + "Deref": { + "register": "AP", + "offset": 0 + } + }, + "rhs": { + "Immediate": "0x100000000000000000000000000000000" + }, + "dst": { + "register": "AP", + "offset": -1 + } + } + } + ] + ] + ], + "entry_points_by_type": { + "EXTERNAL": [ + { + "selector": "0xbc0eb87884ab91e330445c3584a50d7ddf4b568f02fbeb456a6242cce3f5d9", + "offset": 1146, + "builtins": [ + "range_check", + "poseidon" + ] + }, + { + "selector": "0xf2f7c15cbe06c8d94597cd91fd7f3369eae842359235712def5584f8d270cd", + "offset": 0, + "builtins": [ + "range_check" + ] + }, + { + "selector": "0xfe80f537b66d12a00b6d3c072b44afbb716e78dde5c3f0ef116ee93d3e3283", + "offset": 1606, + "builtins": [ + "pedersen", + "range_check" + ] + }, + { + "selector": "0x15d40a3d6ca2ac30f4031e42be28da9b056fef9bb7357ac5e85627ee876e5ad", + "offset": 125, + "builtins": [ + "range_check" + ] + }, + { + "selector": "0x162da33a4585851fe8d3af3c2a9c60b557814e221e0d4f30ff0b2189d9c7775", + "offset": 283, + "builtins": [ + "range_check" + ] + }, + { + "selector": "0x1a35984e05126dbecb7c3bb9929e7dd9106d460c59b1633739a5c733a5fb13b", + "offset": 759, + "builtins": [ + "range_check" + ] + }, + { + "selector": "0x1a6c6a0bdec86cc645c91997d8eea83e87148659e3e61122f72361fd5e94079", + "offset": 1025, + "builtins": [ + "range_check" + ] + }, + { + "selector": "0x213dfe25e2ca309c4d615a09cfc95fdb2fc7dc73fbcad12c450fe93b1f2ff9e", + "offset": 592, + "builtins": [ + "range_check" + ] + }, + { + "selector": "0x28420862938116cb3bbdbedee07451ccc54d4e9412dbef71142ad1980a30941", + "offset": 425, + "builtins": [ + "range_check" + ] + }, + { + "selector": "0x289da278a8dc833409cabfdad1581e8e7d40e42dcaed693fa4008dcdb4963b3", + "offset": 1291, + "builtins": [ + "range_check" + ] + }, + { + "selector": "0x2e3e21ff5952b2531241e37999d9c4c8b3034cccc89a202a6bf019bdf5294f9", + "offset": 880, + "builtins": [ + "range_check", + "poseidon" + ] + }, + { + "selector": "0x36fcbf06cd96843058359e1a75928beacfac10727dab22a3972f0af8aa92895", + "offset": 1421, + "builtins": [ + "range_check" + ] + } + ], + "L1_HANDLER": [], + "CONSTRUCTOR": [ + { + "selector": "0x28ffe4ff0f226a9107253e17a904099aa4f63a02a5621de0576e5aa71bc5194", + "offset": 1744, + "builtins": [ + "pedersen", + "range_check", + "poseidon" + ] + } + ] + } +} \ No newline at end of file diff --git a/__mocks__/cairo/ethSigner/openzeppelin_EthAccount090.sierra.json b/__mocks__/cairo/ethSigner/openzeppelin_EthAccount090.sierra.json new file mode 100644 index 000000000..270500748 --- /dev/null +++ b/__mocks__/cairo/ethSigner/openzeppelin_EthAccount090.sierra.json @@ -0,0 +1,6365 @@ +{ + "sierra_program": [ + "0x1", + "0x4", + "0x0", + "0x2", + "0x5", + "0x3", + "0x54a", + "0x2b6", + "0x97", + "0x52616e6765436865636b", + "0x800000000000000100000000000000000000000000000000", + "0x75313238", + "0x800000000000000700000000000000000000000000000000", + "0x537472756374", + "0x800000000000000700000000000000000000000000000003", + "0x0", + "0x2ee1e2b1b89f8c495f200e4956278a4d47395fe262f27b52e5865c9524c08c3", + "0x1", + "0x800000000000000700000000000000000000000000000005", + "0x2907a9767b8e0b68c23345eea8650b1366373b598791523a07fddaa450ba526", + "0x553132384d756c47756172616e746565", + "0x25e2ca4b84968c2d8b83ef476ca8549410346b00836ce79beaf538155990bb2", + "0x4e6f6e5a65726f", + "0x800000000000000700000000000000000000000000000001", + "0x5", + "0x800000000000000f00000000000000000000000000000001", + "0x456e756d", + "0x28edf843b90fd4464a9cf1779d01f8e7ce719fb66247954f300bf315f31bb23", + "0x6", + "0x7", + "0x3288d594b9a45d15bb2fcb7903f06cdb06b27f0ba88186ec4cfaa98307cb972", + "0x2d7b9ba5597ffc180f5bbd030da76b84ecf1e4f1311043a0a15295f29ccc1b0", + "0x9", + "0x4172726179", + "0x800000000000000300000000000000000000000000000001", + "0x13", + "0x536e617073686f74", + "0xb", + "0x800000000000000700000000000000000000000000000002", + "0x1baeba72e79e9db2587cf44fedb2f3700b2075a5e8e39a562584862c4b71f62", + "0xc", + "0x800000000000000300000000000000000000000000000003", + "0x161ee0e6962e56453b5d68e09d1cabe5633858c1ba3a7e73fee8c70867eced0", + "0xd", + "0x753332", + "0x39a088813bcc109470bd475058810a7465bd632650a449e0ab3aee56f2e4e69", + "0x10", + "0x4abc19acf2110f55bbd81ec736d91bfa4d6bab076c94cfdf3127449061193d", + "0x66656c74323532", + "0x14", + "0x16a4c8d7c05909052238a862d8cc3e7975bf05a07b3a69c6b28951083a6d672", + "0x16", + "0x26e57b11a41813f0069bfb9b709d4b0ba1684594ca17e215da3a9052e1f5964", + "0x15", + "0x17", + "0x2a594b95e3522276fe0ac7ac7a7e4ad8c47eaa6223bc0fd6991aa683b7ee495", + "0x19", + "0x800000000000000700000000000000000000000000000004", + "0x107a3e65b6e33d1b25fa00c80dfe693f414350005bc697782c25eaac141fedd", + "0x15c8f6405cdeb9eaae2ed24a3495b29405ab2908ba280b6359f0ecb1500a893", + "0x1c", + "0x426f78", + "0x5c", + "0x3ab802bcce3a9ca953b0e1f31a5b29eb27a9b727c891e24300e1b5cc57387ba", + "0x20", + "0x19b9ae4ba181a54f9e7af894a81b44a60aea4c9803939708d6cc212759ee94c", + "0x44", + "0xfeece2ea7edbbbebeeb5f270b77f64c680a68a089b794478dd9eca75e0196a", + "0x23", + "0x1eceb721bb58fb27710dc06650f2b96005444dc5f22e95b2d45c703901bf100", + "0x800000000000000f00000000000000000000000000000003", + "0x25", + "0xbe5d33f5de96b5b5d113876cd824e3abcfe68616c2f67ebd2730fbb3ceb7f3", + "0x26", + "0x248e8fae2f16a35027771ffd74d6a6f3c379424b55843563a18f566bba3d905", + "0x14d6215605fd3ceb0bfb05c703ba641ea57ea2157624e24384da2bbc85393a2", + "0xa7b7ffb9653d05de581d4f98d682d4ff4d493fce47eb6ef589104c7fd09323", + "0x2a", + "0x23718e8347198750e5a865353d4cb273d56ce1df93f90493016c69c6c945172", + "0x2b", + "0x1f87ea28bee945290e9d5de79c037b28d4e045a59626abc1a7fa0691649773d", + "0x1669931b2628b21112ec1668b4693a92a6e51ce5d8711da07b07bc8cb7c99f2", + "0x29", + "0x2d", + "0x1909a2057b9c1373b889e003e050a09f431d8108e0659d03444ced99a6eea68", + "0x536563703235366b31506f696e74", + "0xf2f93ea641ecf70f0206ffef23fc8e88bb7b4d26cdf081ca3f0ee2bca78f1", + "0x30", + "0x7538", + "0x53746f7261676541646472657373", + "0x53746f726167654261736541646472657373", + "0x800000000000000300000000000000000000000000000004", + "0x35", + "0x36", + "0x32cb17bdb0d0d053909169ec443a25462b7e27237007511f772a7d957ce924c", + "0x37", + "0x1d49f7a4b277bf7b55a2664ce8cef5d6922b5ffb806b89644b9e0cdbbcac378", + "0x39", + "0x13fdd7105045794a99550ae1c4ac13faa62610dfab62c16422bfcf5803baa6e", + "0x3a", + "0x436f6e747261637441646472657373", + "0x3d37ad6eafb32512d2dd95a2917f6bf14858de22c27a1114392429f2e5c15d7", + "0x3c", + "0x436c61737348617368", + "0xc2c767022ebe56053ec449f9aabdfc801b9eafc42eb9143442cb78544d05fa", + "0x3e", + "0x2b3f7ecaa1421c4d7fc3b1350be970992a4b9bc79d89ae0375c30afcac8b100", + "0x3f", + "0x1a7535ee1474f4db5b6c6322be6f1877025fe84688b140eace629689cf5acf5", + "0x2e", + "0x12", + "0x40", + "0x46", + "0x59", + "0x800000000000000700000000000000000000000000000006", + "0x7d4d99e9ed8d285b5c61b493cedb63976bc3d9da867933d829f49ce838b5e7", + "0x42", + "0x43", + "0x753634", + "0x3808c701a5d13e100ab11b6c02f91f752ecae7e420d21b56c90ec0a475cc7e5", + "0x45", + "0x2ca39cde64b91db1514d78c135ee79d71b3b57fffee52f1a3ef96618a34d8c8", + "0x47", + "0x800000000000000f00000000000000000000000000000002", + "0x859ad14a8ec0f10e09d3ebdb7e416fa6ed7d539c7278db36ebd80ef93f5004", + "0x49", + "0xea9b4bcc44b92514aefe8ef325c8b908d41743fd95b0bde39ec90fe0d53de5", + "0x4a", + "0x506564657273656e", + "0x556e696e697469616c697a6564", + "0x800000000000000200000000000000000000000000000001", + "0x4c", + "0x12867ecd09c884a5cf1f6d9eb0193b4695ce3bb3b2d796a8367d0c371f59cb2", + "0x1f5d91ca543c7f9a0585a1c8beffc7a207d4af73ee640223a154b1da196a40d", + "0x4f", + "0x51", + "0x2ce4352eafa6073ab4ecf9445ae96214f99c2c33a29c01fcae68ba501d10e2c", + "0x53", + "0x58", + "0x55", + "0x1597b831feeb60c71f259624b79cf66995ea4f7e383403583674ab9c33b9cec", + "0x56", + "0x3342418ef16b3e2799b906b1e4e89dbb9b111332dd44f72458ce44f9895b508", + "0x80000000000000070000000000000000000000000000000e", + "0x348a62b7a38c0673e61e888d83a3ac1bf334ee7361a8514593d3d9532ed8b39", + "0x57", + "0xa36a0a15af8cf1727a3a4fd9137671f23256b1f42299af56605a6910c522ce", + "0x5a", + "0x3693aea200ee3080885d21614d01b9532a8670f69e658a94addaadd72e9aca", + "0x18508a22cd4cf1437b721f596cd2277fc0a5e4dcd247b107ef2ef5fd2752cf7", + "0x5d", + "0x8416421239ce8805ed9d27e6ddae62a97ab5d01883bb8f5246b4742a44b429", + "0x5e", + "0x101dc0399934cc08fa0d6f6f2daead4e4a38cabeea1c743e1fc28d2d6e58e99", + "0x3e1934b18d91949ab9afdbdd1866a30ccca06c2b1e6581582c6b27f8b4f6555", + "0x62", + "0x15a63c70cfda552ff8f1fd58ed185279ee7b5af92b68011b6c3abb950cd7c7e", + "0x64", + "0x387e597e83fd805e4022dd48dccde2eeea46a134871f81f2ce16746c2768090", + "0x65", + "0x3179e7829d19e62b12c79010203ceee40c98166e97eb104c25ad1adb6b9675a", + "0x67", + "0x3c7b5436891664778e6019991e6bd154eeab5d43a552b1f19485dec008095d3", + "0x68", + "0x384831629f0478ca842f1c8490fa564add746018a49a72c5687903b63c85d1", + "0x2e3a3c72bbaf02844ea026427da1ee68471ff2dfd44997bdebc7282b287f343", + "0x6b", + "0x711eca2dc7cf53e8e0da11f141a9da005593d48920e6fd53de0fd37f971093", + "0x6d", + "0x26c8d945f359c989bacf756c0af7420e82485e77afbae13489ebbd73795658d", + "0x28f8d296e28032baef1f420f78ea9d933102ba47a50b1c5f80fc8a3a1041da", + "0x29d7d57c04a880978e7b3689f6218e507f3be17588744b58dc17762447ad0e7", + "0x71", + "0x69b71023309d2813123f5c11fe33e52db6c7f41f3006d1f89e1f02043d695", + "0x73", + "0x16f3a8ae6e322c9eda02a546ef39cbecc5ea8ea1e3c1f77087da91701ff588f", + "0x74", + "0xcc5e86243f861d2d64b08c35db21013e773ac5cf10097946fe0011304886d5", + "0x76", + "0xa853c166304d20fb0711becf2cbdf482dee3cac4e9717d040b7a7ab1df7eec", + "0x78", + "0x506f736569646f6e", + "0x8b8a77e98230b81e603eadb16de7aca7916d1b9c3aecaecc38f37b2349fb9f", + "0x7b", + "0x20d8eb988385ce50c4fa191d9eded0703a5200adae8a329e53089238ab97570", + "0x7d", + "0x17b6ecc31946835b0d9d92c2dd7a9c14f29af0371571ae74a1b228828b2242", + "0x7f", + "0x34f9bd7c6cb2dd4263175964ad75f1ff1461ddc332fbfb274e0fb2a5d7ab968", + "0x80", + "0x11c6d8087e00642489f92d2821ad6ebd6532ad1a3b6d12833da6d6810391511", + "0x10203be321c62a7bd4c060d69539c1fbe065baa9e253c74d2cc48be163e259", + "0x84", + "0x74584e9f10ffb1a40aa5a3582e203f6758defc4a497d1a2d5a89f274a320e9", + "0x86", + "0x800000000000000300000000000000000000000000000002", + "0x25abf8fd76a01c7e2544d26b0a2e29212b05a36781e0330b46d878e43b307d1", + "0x88", + "0x28f184fd9e4406cc4475e4faaa80e83b54a57026386ee7d5fc4fa8f347e327d", + "0x8a", + "0xc1f0cb41289e2f6a79051e9af1ead07112b46ff17a492a90b3944dc53a51c8", + "0x8b", + "0x53797374656d", + "0x8d", + "0x800000000000000f00000000000000000000000000000004", + "0xe01633999a7e59897d370fe0a31dc8383b4ed1da192abb5cbb73c740516ef8", + "0x90", + "0x60d27e517d83e99e30369cd8b33aec4a2157fa40b7524f7bf026a2fea80e8", + "0x91", + "0x4275696c74696e436f737473", + "0x9931c641b913035ae674b400b61a51476d506bbe8bba2ff8a6272790aba9e6", + "0x8f", + "0x11771f2d3e7dc3ed5afe7eae405dfd127619490dec57ceaa021ac8bc2b9b315", + "0x4761734275696c74696e", + "0x2b3", + "0x7265766f6b655f61705f747261636b696e67", + "0x77697468647261775f676173", + "0x6272616e63685f616c69676e", + "0x73746f72655f74656d70", + "0x66756e6374696f6e5f63616c6c", + "0x3", + "0x656e756d5f6d61746368", + "0x95", + "0x7374727563745f6465636f6e737472756374", + "0x61727261795f736e617073686f745f706f705f66726f6e74", + "0x64726f70", + "0x61727261795f6e6577", + "0x66656c743235325f636f6e7374", + "0x2", + "0x496e70757420746f6f206c6f6e6720666f7220617267756d656e7473", + "0x61727261795f617070656e64", + "0x7374727563745f636f6e737472756374", + "0x656e756d5f696e6974", + "0x94", + "0x96", + "0x6765745f6275696c74696e5f636f737473", + "0x93", + "0x77697468647261775f6761735f616c6c", + "0xe", + "0x92", + "0x736e617073686f745f74616b65", + "0x4f7574206f6620676173", + "0x4661696c656420746f20646573657269616c697a6520706172616d202331", + "0x616c6c6f635f6c6f63616c", + "0x66696e616c697a655f6c6f63616c73", + "0xf", + "0x8c", + "0x8e", + "0x73746f72655f6c6f63616c", + "0x89", + "0x11", + "0x87", + "0x85", + "0x82", + "0x81", + "0x4661696c656420746f20646573657269616c697a6520706172616d202332", + "0x83", + "0x18", + "0x7e", + "0x1a", + "0x7c", + "0x7a", + "0x1b", + "0x1d", + "0x1e", + "0x1f", + "0x4661696c656420746f20646573657269616c697a6520706172616d202333", + "0x79", + "0x21", + "0x22", + "0x636c6173735f686173685f7472795f66726f6d5f66656c74323532", + "0x77", + "0x24", + "0x75", + "0x64697361626c655f61705f747261636b696e67", + "0x72", + "0x6a756d70", + "0x756e626f78", + "0x72656e616d65", + "0x27", + "0x647570", + "0x61727261795f6c656e", + "0x7533325f746f5f66656c74323532", + "0x70", + "0x28", + "0x2c", + "0x6e", + "0x2f", + "0x6c", + "0x736563703235366b315f6e65775f73797363616c6c", + "0x6a", + "0x31", + "0x69", + "0x32", + "0x66", + "0x33", + "0x34", + "0x38", + "0x63", + "0x636f6e74726163745f616464726573735f746f5f66656c74323532", + "0x66656c743235325f737562", + "0x66656c743235325f69735f7a65726f", + "0x61", + "0x4574684163636f756e743a20756e617574686f72697a6564", + "0x636c6173735f686173685f746f5f66656c74323532", + "0x626f6f6c5f6e6f745f696d706c", + "0x436c61737320686173682063616e6e6f74206265207a65726f", + "0x7265706c6163655f636c6173735f73797363616c6c", + "0x60", + "0x3b", + "0x5f", + "0x3d", + "0x5b", + "0x753132385f636f6e7374", + "0x656e61626c655f61705f747261636b696e67", + "0x54", + "0x4574684163636f756e743a20696e76616c69642074782076657273696f6e", + "0x41", + "0x4574684163636f756e743a20696e76616c69642063616c6c6572", + "0x50", + "0x52", + "0x4574684163636f756e743a20696e76616c6964207369676e6174757265", + "0x56414c4944", + "0x736563703235366b315f6765745f78795f73797363616c6c", + "0x6f", + "0x526573756c743a3a756e77726170206661696c65642e", + "0x4e", + "0x48", + "0x3f918d17e5ee77373b56385708f855659a07f75997f365cf87748628532a055", + "0x4b", + "0x2ceccef7f994940b3962a6c67e0ba4fcd37df7d131417c604f91e03caecc1cd", + "0x4d", + "0x75313238735f66726f6d5f66656c74323532", + "0x753132385f6f766572666c6f77696e675f737562", + "0x753132385f6571", + "0x753235365f616464204f766572666c6f77", + "0x73746f726167655f626173655f616464726573735f636f6e7374", + "0x1cb7a9aaff41c0b6b725a32ac09f77cc95eea3ec2756a048c2e2e55d26fbbd0", + "0x73746f726167655f616464726573735f66726f6d5f62617365", + "0x7533325f636f6e7374", + "0x73746f726167655f726561645f73797363616c6c", + "0x75385f636f6e7374", + "0x2679d68052ccd03a53755ca9169677965fbd93e489df62f5f40d4f03c24f7a4", + "0x753132385f746f5f66656c74323532", + "0x6765745f657865637574696f6e5f696e666f5f76325f73797363616c6c", + "0x656d69745f6576656e745f73797363616c6c", + "0x21adb5788e32c84f69a1863d85ef9394b7bf761a0ce1190f826984e5075c371", + "0x61727261795f736c696365", + "0x496e646578206f7574206f6620626f756e6473", + "0x61727261795f706f705f66726f6e74", + "0x4f7074696f6e3a3a756e77726170206661696c65642e", + "0x5369676e61747572653a20496e76616c696420666f726d61742e", + "0x393d13543d6033e70e218aad8050e8de40a1dfbac0e80459811df56e3716ce6", + "0x536563703235366b31506f696e743a20496e76616c696420706f696e742e", + "0x73746f726167655f77726974655f73797363616c6c", + "0x10e5fcd68658d0cf6ed280e34d0d0da9a510b7a6779230c9912806a2c939b9", + "0x706564657273656e", + "0xad292db4ff05a993c318438c1b6c8a8303266af2da151aa28ccece6726f1f1", + "0x626f6f6c5f746f5f66656c74323532", + "0x7533325f7472795f66726f6d5f66656c74323532", + "0x7533325f6f766572666c6f77696e675f737562", + "0x7533325f737562204f766572666c6f77", + "0x753132385f6f766572666c6f77696e675f616464", + "0x63616c6c5f636f6e74726163745f73797363616c6c", + "0xa", + "0x8", + "0x753235365f67756172616e7465655f696e765f6d6f645f6e", + "0x4", + "0x756e777261705f6e6f6e5f7a65726f", + "0x753235365f736166655f6469766d6f64", + "0x4469766973696f6e2062792030", + "0x66656c743235325f616464", + "0x68616465735f7065726d75746174696f6e", + "0x66656c743235325f6d756c", + "0x38f6a5b87c23cee6e7294bcc3302e95019f70f81586ff3cac38581f5ca96381", + "0xca58956845fecb30a8cb3efe23582630dbe8b80cc1fb8fd5d5e866b1356ad", + "0x2db340e6c609371026731f47050d3976552c89b4fbb012941663841c59d1af3", + "0xbaaedce6af48a03bbfd25e8cd0364141", + "0xfffffffffffffffffffffffffffffffe", + "0x29bfcdb2dce28d959f2815b16f81798", + "0x79be667ef9dcbbac55a06295ce870b07", + "0xfd17b448a68554199c47d08ffb10d4b8", + "0x483ada7726a3c4655da4fbfc0e1108a8", + "0x753235365f69735f7a65726f", + "0x753132385f6d756c5f67756172616e7465655f766572696679", + "0x753531325f736166655f6469766d6f645f62795f75323536", + "0x736563703235366b315f6d756c5f73797363616c6c", + "0x736563703235366b315f6164645f73797363616c6c", + "0x8000000000000110000000000000000", + "0x100000000000000000000000000000000", + "0x753132385f67756172616e7465655f6d756c", + "0x753235365f737562204f766572666c6f77", + "0x1749", + "0xffffffffffffffff", + "0xee", + "0xe6", + "0xd6", + "0xc7", + "0xc0", + "0xb9", + "0x16d", + "0x166", + "0x157", + "0x11b", + "0x149", + "0x142", + "0x208", + "0x1f8", + "0x1f0", + "0x1e0", + "0x1a2", + "0x1d1", + "0x1ca", + "0x2a4", + "0x294", + "0x28c", + "0x27c", + "0x23e", + "0x26d", + "0x266", + "0x30e", + "0x2c8", + "0x301", + "0x2fa", + "0x2f3", + "0x38c", + "0x384", + "0x374", + "0x33c", + "0x365", + "0x35d", + "0x3f6", + "0x3b0", + "0x3e9", + "0x3e2", + "0x3db", + "0x474", + "0x46c", + "0x45c", + "0x424", + "0x44d", + "0x445", + "0x4e8", + "0x4d9", + "0x49d", + "0x4cb", + "0x4c4", + "0x599", + "0x58a", + "0x57a", + "0x571", + "0x560", + "0x520", + "0x550", + "0x549", + "0x612", + "0x602", + "0x5c2", + "0x5f3", + "0x5eb", + "0x698", + "0x68f", + "0x67e", + "0x642", + "0x66e", + "0x665", + "0x6ba", + "0x6b3", + "0x6e0", + "0x6d8", + "0x6f2", + "0x6f7", + "0x705", + "0x98", + "0x99", + "0x9a", + "0x737", + "0x73c", + "0x746", + "0x9b", + "0x9c", + "0x9d", + "0x755", + "0x75a", + "0x768", + "0x9e", + "0x9f", + "0xa0", + "0xa1", + "0xa2", + "0xa3", + "0xa4", + "0xa5", + "0xa6", + "0xa7", + "0xa8", + "0x79c", + "0xa9", + "0xaa", + "0xab", + "0xac", + "0xad", + "0xae", + "0xaf", + "0xb0", + "0xb1", + "0xb2", + "0xb3", + "0x7c8", + "0xb4", + "0xb5", + "0x7b0", + "0xb6", + "0xb7", + "0x7b5", + "0xb8", + "0xba", + "0x7c0", + "0xbb", + "0xbc", + "0xbd", + "0xbe", + "0xbf", + "0xc1", + "0xc2", + "0x7e6", + "0xc3", + "0xc4", + "0xc5", + "0x80a", + "0xc6", + "0xc8", + "0xc9", + "0x832", + "0xca", + "0x836", + "0xcb", + "0xcc", + "0x855", + "0xcd", + "0xce", + "0x88e", + "0xcf", + "0x887", + "0xd0", + "0xd1", + "0xd2", + "0xd3", + "0x87a", + "0xd4", + "0xd5", + "0xd7", + "0xd8", + "0xd9", + "0xda", + "0xdb", + "0xdc", + "0x89c", + "0xdd", + "0x8a1", + "0xde", + "0xdf", + "0x8b3", + "0xe0", + "0xe1", + "0xe2", + "0xe3", + "0x8be", + "0xe4", + "0xe5", + "0x8c3", + "0xe7", + "0x8cd", + "0xe8", + "0xe9", + "0xea", + "0x90c", + "0xeb", + "0x8e6", + "0xec", + "0xed", + "0x904", + "0xef", + "0xf0", + "0x8fa", + "0xf1", + "0xf2", + "0x9b9", + "0x9aa", + "0xf3", + "0xf4", + "0x9a2", + "0xf5", + "0xf6", + "0xf7", + "0xf8", + "0xf9", + "0xfa", + "0xfb", + "0xfc", + "0xfd", + "0xfe", + "0xff", + "0x100", + "0x101", + "0x102", + "0x103", + "0x97d", + "0x104", + "0x105", + "0x973", + "0x106", + "0x96f", + "0x107", + "0x108", + "0x109", + "0x99c", + "0x10a", + "0x999", + "0x10b", + "0x10c", + "0x10d", + "0x9fd", + "0x10e", + "0x10f", + "0x9d1", + "0x110", + "0x111", + "0x9d6", + "0x112", + "0x113", + "0x114", + "0x9f2", + "0x115", + "0x116", + "0x9eb", + "0x117", + "0x118", + "0x119", + "0xa48", + "0x11a", + "0xa41", + "0xa37", + "0x11c", + "0x11d", + "0x11e", + "0x11f", + "0x120", + "0xa7b", + "0xa61", + "0x121", + "0xa71", + "0x122", + "0xaa7", + "0xa9c", + "0xaa0", + "0x123", + "0x124", + "0x125", + "0xabc", + "0x126", + "0x127", + "0x128", + "0x129", + "0x12a", + "0x12b", + "0x12c", + "0x12d", + "0x12e", + "0xae7", + "0xae0", + "0x12f", + "0x130", + "0x131", + "0x132", + "0xaf3", + "0x133", + "0x134", + "0x135", + "0x136", + "0xb41", + "0x137", + "0xb37", + "0x138", + "0xb2d", + "0x139", + "0x13a", + "0x13b", + "0xb24", + "0x13c", + "0x13d", + "0x13e", + "0x13f", + "0x140", + "0xb6f", + "0x141", + "0x143", + "0x144", + "0x145", + "0x146", + "0x147", + "0x148", + "0x14a", + "0xb96", + "0x14b", + "0x14c", + "0x14d", + "0xbb3", + "0x14e", + "0x14f", + "0x150", + "0x151", + "0x152", + "0x153", + "0x154", + "0x155", + "0x156", + "0xbcb", + "0x158", + "0x159", + "0x15a", + "0x15b", + "0xbed", + "0x15c", + "0x15d", + "0x15e", + "0x15f", + "0xc24", + "0xc1c", + "0x160", + "0x161", + "0xc15", + "0x162", + "0x163", + "0xc0c", + "0x164", + "0x165", + "0x167", + "0x168", + "0x169", + "0x16a", + "0xc3d", + "0x16b", + "0x16c", + "0x16e", + "0x16f", + "0xc4a", + "0x170", + "0x171", + "0x172", + "0xc70", + "0x173", + "0xc60", + "0xc69", + "0x174", + "0xc86", + "0x175", + "0x176", + "0x177", + "0x178", + "0x179", + "0x17a", + "0x17b", + "0x17c", + "0x17d", + "0xca6", + "0x17e", + "0x17f", + "0x180", + "0x181", + "0x182", + "0x183", + "0x184", + "0xccc", + "0x185", + "0x186", + "0x187", + "0x188", + "0x189", + "0x18a", + "0x18b", + "0x18c", + "0x18d", + "0x18e", + "0xd04", + "0x18f", + "0x190", + "0x191", + "0xcfe", + "0x192", + "0x193", + "0x194", + "0xcf7", + "0x195", + "0x196", + "0xd0f", + "0x197", + "0x198", + "0xd0a", + "0x199", + "0x19a", + "0x19b", + "0x19c", + "0xd1c", + "0x19d", + "0x19e", + "0x19f", + "0x1a0", + "0x1a1", + "0xd3a", + "0xd3f", + "0x1a3", + "0xd7c", + "0x1a4", + "0x1a5", + "0xd77", + "0xd52", + "0xd57", + "0xd6d", + "0xd68", + "0x1a6", + "0x1a7", + "0x1a8", + "0xd73", + "0x1a9", + "0xd82", + "0xdac", + "0x1aa", + "0x1ab", + "0x1ac", + "0xdcb", + "0x1ad", + "0x1ae", + "0x1af", + "0x1b0", + "0x1b1", + "0xdfc", + "0xdf3", + "0x1b2", + "0x1b3", + "0x1b4", + "0x1b5", + "0x1b6", + "0x1b7", + "0xe22", + "0xe17", + "0xe1c", + "0x1b8", + "0x1b9", + "0xe27", + "0x1ba", + "0x1bb", + "0x1bc", + "0x1bd", + "0xe46", + "0x1be", + "0x1bf", + "0x1c0", + "0x1c1", + "0x1c2", + "0x1c3", + "0xe55", + "0x1c4", + "0x1c5", + "0xe5a", + "0x1c6", + "0x1c7", + "0x1c8", + "0x1c9", + "0xe66", + "0x1cb", + "0x1cc", + "0x1cd", + "0x1ce", + "0x1cf", + "0x1d0", + "0xe8d", + "0xe92", + "0xe9c", + "0x1d2", + "0xeb5", + "0x1d3", + "0xeae", + "0x1d4", + "0x1d5", + "0x1d6", + "0xec2", + "0xec7", + "0xf18", + "0x1d7", + "0x1d8", + "0xf10", + "0x1d9", + "0xf03", + "0x1da", + "0x1db", + "0xefb", + "0x1dc", + "0xeef", + "0x1dd", + "0x1de", + "0x1df", + "0x1e1", + "0x1e2", + "0x1e3", + "0x1e4", + "0x1e5", + "0xf2e", + "0xf70", + "0x1e6", + "0xf44", + "0x1e7", + "0x1e8", + "0xf49", + "0xf65", + "0x1e9", + "0x1ea", + "0x1eb", + "0xf5b", + "0x1ec", + "0x1ed", + "0x1ee", + "0x1ef", + "0x1f1", + "0xfac", + "0xf8d", + "0xf92", + "0xfa1", + "0x1f2", + "0x1f3", + "0x103f", + "0x1f4", + "0x1f5", + "0x1f6", + "0xfd6", + "0x1f7", + "0xfea", + "0x1f9", + "0x1037", + "0x1028", + "0x1fa", + "0x1021", + "0x1016", + "0x1fb", + "0x1fc", + "0x1fd", + "0x10cd", + "0x1fe", + "0x1ff", + "0x10c4", + "0x200", + "0x10b4", + "0x201", + "0x10ab", + "0x202", + "0x203", + "0x204", + "0x1084", + "0x1089", + "0x10a4", + "0x1096", + "0x205", + "0x206", + "0x207", + "0x10e2", + "0x10ee", + "0x209", + "0x20a", + "0x20b", + "0x20c", + "0x20d", + "0x20e", + "0x20f", + "0x110e", + "0x210", + "0x211", + "0x212", + "0x213", + "0x214", + "0x115c", + "0x215", + "0x216", + "0x1141", + "0x1138", + "0x113d", + "0x217", + "0x218", + "0x219", + "0x1149", + "0x1154", + "0x21a", + "0x21b", + "0x21c", + "0x21d", + "0x21e", + "0x117c", + "0x21f", + "0x220", + "0x221", + "0x222", + "0x223", + "0x1193", + "0x224", + "0x225", + "0x11aa", + "0x11af", + "0x11bb", + "0x226", + "0x227", + "0x228", + "0x229", + "0x22a", + "0x11ca", + "0x22b", + "0x22c", + "0x22d", + "0x22e", + "0x11dc", + "0x11e5", + "0x22f", + "0x230", + "0x11ed", + "0x231", + "0x232", + "0x233", + "0x11f5", + "0x234", + "0x1201", + "0x235", + "0x236", + "0x237", + "0x238", + "0x120d", + "0x239", + "0x23a", + "0x1211", + "0x23b", + "0x23c", + "0x23d", + "0x23f", + "0x1221", + "0x240", + "0x241", + "0x1227", + "0x242", + "0x122f", + "0x243", + "0x244", + "0x245", + "0x1239", + "0x246", + "0x247", + "0x124a", + "0x248", + "0x249", + "0x124f", + "0x24a", + "0x24b", + "0x1277", + "0x1270", + "0x24c", + "0x24d", + "0x1268", + "0x24e", + "0x24f", + "0x250", + "0x251", + "0x252", + "0x1293", + "0x253", + "0x254", + "0x137f", + "0x1373", + "0x255", + "0x1368", + "0x256", + "0x257", + "0x1355", + "0x258", + "0x1342", + "0x259", + "0x25a", + "0x1329", + "0x25b", + "0x25c", + "0x25d", + "0x25e", + "0x25f", + "0x260", + "0x131d", + "0x261", + "0x1314", + "0x130c", + "0x262", + "0x1305", + "0x263", + "0x264", + "0x265", + "0x13ca", + "0x13c3", + "0x13b3", + "0x13bd", + "0x13df", + "0x267", + "0x268", + "0x13f5", + "0x1407", + "0x269", + "0x26a", + "0x142a", + "0x14d8", + "0x26b", + "0x1447", + "0x144c", + "0x14b2", + "0x1457", + "0x145c", + "0x148c", + "0x26c", + "0x26e", + "0x1479", + "0x26f", + "0x270", + "0x271", + "0x14a0", + "0x14aa", + "0x272", + "0x273", + "0x14c6", + "0x14d0", + "0x274", + "0x1528", + "0x1520", + "0x275", + "0x1510", + "0x276", + "0x277", + "0x278", + "0x279", + "0x27a", + "0x27b", + "0x27d", + "0x153f", + "0x27e", + "0x27f", + "0x154a", + "0x280", + "0x281", + "0x282", + "0x283", + "0x284", + "0x285", + "0x286", + "0x1562", + "0x287", + "0x288", + "0x289", + "0x28a", + "0x1571", + "0x157e", + "0x1583", + "0x159a", + "0x1590", + "0x1595", + "0x28b", + "0x28d", + "0x28e", + "0x28f", + "0x290", + "0x15b3", + "0x291", + "0x292", + "0x293", + "0x15c8", + "0x15cd", + "0x15e6", + "0x15d9", + "0x295", + "0x15f2", + "0x296", + "0x297", + "0x298", + "0x299", + "0x29a", + "0x29b", + "0x29c", + "0x29d", + "0x29e", + "0x29f", + "0x1624", + "0x2a0", + "0x1631", + "0x1641", + "0x2a1", + "0x166a", + "0x1653", + "0x1660", + "0x165f", + "0x2a2", + "0x2a3", + "0x2a5", + "0x2a6", + "0x2a7", + "0x2a8", + "0x2a9", + "0x2aa", + "0x2ab", + "0x2ac", + "0x2ad", + "0x16de", + "0x2ae", + "0x2af", + "0x16fb", + "0x2b0", + "0x2b1", + "0x1706", + "0x2b2", + "0x1716", + "0x1728", + "0x172e", + "0x1736", + "0x1740", + "0x31c", + "0x39b", + "0x404", + "0x483", + "0x4f6", + "0x5a7", + "0x621", + "0x6a8", + "0x6c0", + "0x6ea", + "0x70f", + "0x717", + "0x724", + "0x72b", + "0x730", + "0x74d", + "0x772", + "0x77a", + "0x782", + "0x788", + "0x7a3", + "0x7d1", + "0x7ef", + "0x7f5", + "0x813", + "0x81a", + "0x823", + "0x82b", + "0x83d", + "0x860", + "0x894", + "0x8d5", + "0x91b", + "0x91f", + "0x9c1", + "0xa0c", + "0xa50", + "0xa8a", + "0xaae", + "0xab4", + "0xac2", + "0xac7", + "0xad0", + "0xaed", + "0xaf9", + "0xb4b", + "0xb51", + "0xb59", + "0xb5d", + "0xb79", + "0xba1", + "0xbb9", + "0xbd1", + "0xbd6", + "0xbf4", + "0xc2b", + "0xc43", + "0xc4f", + "0xc7b", + "0xc92", + "0xcad", + "0xcbc", + "0xcd5", + "0xd15", + "0xd25", + "0xd33", + "0xd86", + "0xdb4", + "0xdd2", + "0xe05", + "0xe2e", + "0xe4e", + "0xe5f", + "0xe6f", + "0xe72", + "0xea3", + "0xebb", + "0xf22", + "0xf36", + "0xf7f", + "0xfba", + "0x104f", + "0x10dc", + "0x10e8", + "0x10f6", + "0x1115", + "0x1118", + "0x1165", + "0x1183", + "0x118d", + "0x1199", + "0x11c4", + "0x11d0", + "0x11d2", + "0x11ef", + "0x11fb", + "0x1207", + "0x1217", + "0x1242", + "0x1254", + "0x127d", + "0x129b", + "0x1389", + "0x13d1", + "0x13ec", + "0x13f9", + "0x1414", + "0x1438", + "0x14e8", + "0x152f", + "0x1532", + "0x154c", + "0x154f", + "0x155b", + "0x156b", + "0x1577", + "0x15a1", + "0x15a7", + "0x15ac", + "0x15b9", + "0x15ec", + "0x15f6", + "0x15fb", + "0x15ff", + "0x1617", + "0x161d", + "0x162a", + "0x1637", + "0x1646", + "0x1674", + "0x167c", + "0x1684", + "0x168d", + "0x168f", + "0x16d3", + "0x16ea", + "0x16f4", + "0x1701", + "0x170a", + "0x171e", + "0xcd98", + "0x48090120240480b00e028028090120240480800e0180280400600800800", + "0x900800e0440281001203c070090120240480d00e0180280201802404809", + "0x481801205c0380602405404815012058038060240540481401204c03806", + "0x4823012088038210240800481f00e0780281d01203c0e01b0120680c815", + "0x380f0240980482601209403806024010120180120240480800e0180281d", + "0x282a00e044028290120200381e00a06c0481b0120200380600a01014027", + "0x48230120200380600a0b80482d0120b0038210240740482b01202003821", + "0x383100a06c0481b01206c0480800e0c40282e0120c00482f00e0840901b", + "0x380600a0d80480f06a054048340120cc038060240600481001204004832", + "0x38060240b8048380120dc038210240980480800e0780281801204004808", + "0x283d00e0440281d0120f00483b00e0840903a01203c1a81501209804839", + "0x4818012108038210240b804841012100038210240540483f0120200383e", + "0x3821024054048450120200383e00a1100381100a06c0484300e0780281d", + "0x380602412c0484a0121240380602406c0484800e0780282e01211c04846", + "0xc8040a4010288040a00740484f01213803821024010268150120240484c", + "0x485600e08409015012154048540120200385300a08c0481a0320d80481a", + "0x3821024164048230120200380600a05404823012160038060240b804857", + "0x486000e078028040be0540485e012174038060240102e02e01216c0485a", + "0x1a86801203c1a867012198048650121900383102418c0486200e07809061", + "0x383100a0103701b0121780485e0121b40486c0121ac0386a00a1a40480f", + "0x282e0121c80487100e0840903c0120200381e00a178048700121c00486f", + "0x3c02e0121dc0487600e084090150121d40480800e0f80283f0121d003873", + "0x487d00e0180902301203c1a8150120400487c00e0180907b0121e83c802", + "0x488000e084090100120200381e00a1fc0487a0f21540480f0380540487e", + "0x488600e0c4028850122100381e00a20c0480f0382080481a0320b804881", + "0x481b01206c048230120240485e01206c0488800e21c028090121c00481b", + "0x38210241b40480800e078028230120980482601208c048090122240481b", + "0x48360122340380602408c0481b0121780488c00e0c40282e01222c0488a", + "0x489100e0840902e0122400488f00e0840908e01208c0480800e01802815", + "0x282e01224c0489200e0840905e0120200381e00a06c0480f01c07404815", + "0x902e01225c0489600e084090150122540480800e0f80284501225003873", + "0x902e01226c0489a00e084090990120200381e00a0540484f01226003806", + "0x489e01227403806024040048100120200380600a0740489901227003821", + "0x489e012284038210240b8048a001227c038210242780480800e07802815", + "0x381100a054048a401228c0380602406c0480f06a1fc048a200e0780281d", + "0x480800e1cc0282e0122a0048a700e084090150122980480800e0f8028a5", + "0x48ac0122ac038210240600480800e0780282e0122a8048a900e08409015", + "0x381e00a0b8048af0122b803821024264048230120200380600a0085682e", + "0x382100a0540481d0122c8038210240b8048b10122c00382102413c04808", + "0x3c81501206c048b600e0180902e0122d4048b400e084090b301208c04808", + "0x480800e0840282e0122e0048b700e0840901b0120200381e00a06c0487a", + "0x48bc00e08409055012020038bb00a0b8048ba0122e4038210240540481d", + "0x38210242fc048230120200382100a054048540122f8038210240b8048bd", + "0x48c500e310028230120200381e00a30c0487a0f20086102e012304048c0", + "0x6482e012320048c700e084090150123180480800e0f8028a60121d404895", + "0x38cf19c00866815012184048cc00e0180902e01232c048ca00e08409004", + "0x48d71ac024048d5046350048d3046024048d200e024048d200e344038d0", + "0xd8090123683080901236452009012364100090123640d80901236011809", + "0x6e0e005c024048df056024048df036024048de036024048d21ba370048db", + "0x72009012348038e31c2024048d2186024048d21c4024048d201237070809", + "0x5300901237c3a80901237c1f80901237c4a80901237c2280901237c038e5", + "0x48e8190024048d91ce024048d51cc350048d30c2024048d218c024048df", + "0x48db00e370708091b83806580901237c1180901237c0e8090123640e809", + "0x48d300e3b0618090123ac750dc01236c118090123640a809012364748dc", + "0x2a009012364778090123645f8090123546080901235c77009012354768d4", + "0x48d5186024048f004c350048d30a8024048d218c024048d918c024048e8", + "0xe8090123483f8090123482a8090123642a8090123a05e80901235c78809", + "0x48d71e8024048d50cc350048d3174024048d71e6024048d51e4350048d3", + "0x148d401234c0d8090123ac0d8d401234c0d8090123640d8090123a05c009", + "0x48d516a024048d71ec024048d505a350048d3036024048f01ea024048d5", + "0x7c8d401234c170d401234c7c0090123647b8dc01236c158d401234c59809", + "0x48d309e024048d209e024048d909e024048e8162024048d71f4024048d5", + "0x7e8090123484c8090123545780901235c7e0090123547d8d401234c180d4", + "0x48db202350048d3200350048d31fe350048d3068350048d31fc350048d3", + "0xc0090123a05600901235c818090123541c0d401234c3d809012348810dc", + "0x6b0091b83800390620a350048d3208350048d3030024048d2030024048d9", + "0x48e818c024048d70123706b0091b83800a80901237c6b009012348038dc", + "0x84809012354840d401234c55009012364838090123541e0d401234c4a809", + "0x4a80901236473809012348038dc1ce0246e0e0190024048df150024048d7", + "0x38dc2160246e0e000e42853009012364048dc1ce0246e0e00ea024048d9", + "0x490d216024048d5012370858091b83800390c216024048d2040024048d2", + "0x48df0123705f8091b83801f8d401234c0d8090124381b0090123680d809", + "0x491021e350048d3082350048d31dc024048d200e370770091b838060809", + "0x48d3228350048d3226024048d2226024048df00e448118090124443f809", + "0x228d401234c048dc1ea0246e0e01ea024048d200e3707a8091b8380250d4", + "0x48d31ec024048d200e3707b0091b83805a80901237c048dc1660246e0e0", + "0x8b009012354328d401234c258d401234c278090124388a8d401234c238d4", + "0x48df22e350048d313c024048d213c024048d913c024048e8140024048d7", + "0x278d401234c048dc1e60246e0e01e6024048d200e370798091b83805d009", + "0x6e0e0234024048d200e3708d0091b83800391913c024048d7230024048d5", + "0x6e0e015e024048df136024048d7238024048d5236350048d30123708d009", + "0x48d30123704c8091b8380048dc1f80246e0e01f8024048d200e3707e009", + "0x2a0d401234c900d401234c8f8d401234c4b80901235c8f0090123548e8d4", + "0x48d3012370048db00e370048db030024048d50300240490e0aa350048d3", + "0x392400e48c4980901235c2c8d401234c91009012354908d401234c2b8d4", + "0x48db24c024048d920e024048d200e370838091b83805500901237c03925", + "0xc0091b8380039280c202404910126024048d9012370838091b8380938dc", + "0x48d2012370848091b8380950dc01236c0392900e3700c0091b8380048dc", + "0x48d3012370960091b838096009012348038dc2580246e0e000e4ac84809", + "0x5f8091b83800d809012440968d401234c318090123483180901237c2d8d4", + "0x1b009012378470090123544800901235c970090123542f0d401234c038dc", + "0x348090124344580901235c98009012354978d401234c048dc1dc0246e0e0", + "0x48d304c024048d9112024048d9012024048d90bc024048d90d2024048d7", + "0x8009012348080090124400800901237c048dc0124c4038dc0124c4308d4", + "0x9a0dc01236c4080901235c99809012354338d401234c039320c6350048d3", + "0x9b0dc01236c9a8d401234c0800901236478809012348048dc1e20246e0e0", + "0x9b809012348038dc26e0246e0e0046024048d8226024048d70fe024048eb", + "0x360d401234c118090124349b8090123543f8090123c0048dc26e0246e0e0", + "0x6e0e0272370048db0da350048d3226024048d9270024048d90fe024048d9", + "0x38dc1e80246e0e0170024048df274370048db1e8024048d20123707a009", + "0x393b074350048d312a024048d70123707b0091b8380038dc1660246e0e0", + "0x48db0123709e0091b83809e009012348038dc2780246e0e013c024048df", + "0x8c0091b83809f009012354390d401234c340d401234c380d401234c9e8dc", + "0x6e0e0136024048df234024048d50123708c0091b83808c009012348038dc", + "0x9f8d401234c228090123a0048dc2380246e0e0238024048d200e3708e009", + "0x48dc23c0246e0e00ee350048d30ea350048d3096024048d2096024048df", + "0x38dc2060246e0e0158024048df280370048db08a024048d923c024048d2", + "0x48d3284370048db0f6024048eb282350048d30ea024048d7206024048d2", + "0x9f809012354a18d401234c3b809012364a08090123543d8090123c03d8d4", + "0x48df0da024048d90d8024048d9074024048d70740240490d0e4024048d7", + "0x9f0d401234c048dc2440246e0e0244024048d200e370910091b838049809", + "0x5400901237c9b8d401234c9a8090123486e0dc26a0246e0e00fc350048d3", + "0x968090123549c0d401234c978090123543f8d401234c038dc2120246e0e0", + "0x4800901237c038dc11c0246e0e006c024048df0b2024048d50b6024048d7", + "0x48dc25c0246e0e0012370470091b838097009012348038dc25c0246e0e0", + "0x3944012370980091b838098009012348038dc2600246e0e0116024048df", + "0x6e0e0102024048df102350048d300e5180394501202404910020024048d7", + "0x11809012368048dc2660246e0e028e370048db266024048d200e37099809", + "0x6e0e017a024048df0ae024048d7242024048d5266350048d30aa024048d2", + "0x48d3106350048d3036024049110460240490e0460240491000e37078809", + "0x38dc01252c0394a2400240491029237004948012370818091b8380428d4", + "0x90009012348048dc0125340394c23e024048d204c024048d204c02404910", + "0x48d200e3708d8091b8380448d401234c148090123481480901237c0394e", + "0x48dc2360246e0e0240024048d91f4024048d20123707d0091b83808d809", + "0x8b009012348038dc22c0246e0e0140024048df278024048d5104350048d3", + "0x48d50d2350048d30400240491000e53c04809012438048dc22c0246e0e0", + "0x48dc27c0246e0e002a0240490e27c024048d200e3709f0091b83808b809", + "0x8f0091b83804b80901237c038dc26a0246e0e0260350048d3116350048d3", + "0x2500901237c2380901235c8a8090123541b0d401234c27809012440038dc", + "0x38dc2280246e0e0120350048d308e024048d911c350048d3094024048d2", + "0x87809012354960d401234c970d401234c048dc2280246e0e0228024048d2", + "0xa08091b8380a0809012348038dc2820246e0e00ee024048df082024048d7", + "0x48d3012370840091b838084009012348038dc2100246e0e000e540048dc", + "0x48d30ce024048d200e370338091b8380960090123549f809012348930d4", + "0x48d712a350048d300e544910d401234c9a8090123649a8090123a0498d4", + "0x48d3012370978091b838097809012348038dc25e0246e0e000e54855009", + "0x1c00901235c820090123548f0d401234c0d80901254c828090123544b8d4", + "0x48db25a024048d200e370968091b83802d80901237c038dc0b20246e0e0", + "0x8080901235c4c8d401234c048dc0b20246e0e0012370968091b8380aa0dc", + "0x48d5136350048d306c024048d211c024048d206c0240490d06c02404955", + "0x48df242024048d2012370908091b8380118090123786580901235c70809", + "0x48d7068024049101fe024048d5238350048d300e370908091b83802b809", + "0x8c0d401234c4f0d401234c1a0090123481a0090123648d0d401234c1a009", + "0x48d3140350048d31b837004931052024048d72ae370048db2ac370048db", + "0x6e0e0162024048df00e560898d401234c080090123a09e0d401234c8b0d4", + "0x8b809012348038dc22e0246e0e0236024048d52b2370048db00e3707d009", + "0x7d809012354520d401234c7f0090123487f00901237c048dc22e0246e0e0", + "0x7c809012354858d401234c32809012348048dc0ca0246e0e0060024048d7", + "0x2380901237c9600901243861809012438710090124380395a05a024048d7", + "0x48d914c350048d30123708a8091b83808a809012348038dc22a0246e0e0", + "0x48df00e5781f8090123a08a0090123540395d00e570ad8dc01236c1f809", + "0x84009012354048dc21e0246e0e021e024048d200e370878091b838020809", + "0x48d326a024048d50123709f8091b8380038dc27e0246e0e00e4024048df", + "0x6e0e000e57c550d401234c848d401234c330090123480e809012438540d4", + "0x38dc1e40246e0e000e580048dc20a0246e0e020a024048d200e37082809", + "0x82009012348838d401234cb08dc01236c048dc1e40246e0e01e4024048d2", + "0x808090123488080901237c7680901235c768090123487680901237c03962", + "0x6e0e01cc024048d200e370730091b83800396306c024048d7012024048d2", + "0x6e0e0068024048df2c8024048d5206350048d3158350048d301237073009", + "0x578d401234c7e8d401234c048dc1fe0246e0e01fe024048d200e3707f809", + "0x4910166350048d32ca024048d51f4350048d3162350048d31f8350048d3", + "0x48d3028024048d20200240496816a350048d32ce024048d200e5980a009", + "0x48d900e3704c8091b83805c0d401234c7c0d401234c7a8d401234c7b0d4", + "0x48d3012024048e82d4370048db00e5a4500090123640a00901236458809", + "0x7d8091b838072009012364720090124400396c00e5ac7f00901235c7a0d4", + "0x48d31fc024048d900e3707d8091b83801800901237c7d809012348048dc", + "0x7c809012348038dc1f20246e0e005a024048df00e5b46e0dc01236c5d0d4", + "0x48d32dc370048db0ca024048d500e370328091b8380048dc1f20246e0e0", + "0xb80dc01236c33809012354330090123545e8d401234cb78dc01236c798d4", + "0x820091b8380038dc2080246e0e0070024048df1e4024048d51e2350048d3", + "0x48dc2c80246e0e02c8024048d200e370b20091b838073009012354048dc", + "0x49312e8370049312e6370049312e4370049312e2370049310200240490e", + "0xb28091b8380b2809012348048dc2ca0246e0e000e5dcbb0dc0124c4ba8dc", + "0x770d401234c6a00901236403979182350048d300e5e05f8d401234c038dc", + "0x48d7096024048d7094024048d72fa370048db2f83700493100e5ec0397a", + "0x48df196350048d31b8024048d71de350048d300e5f8618d401234c31809", + "0x6e00901237c30809012438bf8dc01236c630d401234c6a0090123486a009", + "0xc08dc01201c6e00900e01cc080900e01c03980190350048d31b8024048d2", + "0x39670126040496701235003807302024038dc00e0540a0dc11c040b38dc", + "0xb200902801cb20182ca350c08091a859c6e01000e3500498101235004967", + "0x38230126040481801205403807302024038dc00e0800493e03a024c08dc", + "0x48e601206003807302024038dc00e098048fb1da3986e1811b808c04965", + "0x498101201c1000700e6040481d01207403807302024768092c801c03981", + "0x48661e4370768070cc024c08090cc024730070cc024c080900e08c038f2", + "0x486600e0b40498101206c148dc1e401c148093020240382600e06c04981", + "0x38100126040481001206c03965012604049650123500382b0126040482d", + "0x382b1b8040b29670120ac049810120ac0482d00e3700498101237004829", + "0x482e00e0b80498101201c1580700e6040482601206003807302024038dc", + "0x6e0071fc3ec6e0670603e46e1811b80b8081651a83e40382e0126040482e", + "0x38fe00e3fc049810120d0048fb00e0d00498101201c1800700e60404807", + "0x6a10000e0e00498101201c7f807202024c08092000241a007200024c0809", + "0x49810123700482900e0c0049810120c00481b00e410049810120e0808ff", + "0x8403c20a350c080903a4106e0302ce0e00381d0126040481d012404038dc", + "0x38dc00e1040485907e024c08dc210024820071f2024c08091f20246a007", + "0x490f0120f00390f0126040480704001c039810120fc0490500e01cc0809", + "0x484100e114049810121280483f00e01cc0809228024840070944506e181", + "0x38f9012604048f9012350039150126040484701243c0384701260404845", + "0x49810124540482d00e0f0049810120f00482900e414049810124140481b", + "0x384b0126040484101219803807302024038dc00e4541e1051f259c04915", + "0x49810120f00482900e414049810124140481b00e3e4049810123e4048d4", + "0x3807302024038dc00e12c1e1051f259c0484b0126040484b0120b40383c", + "0x7300722e024c080900e450038650126040480704001c039810120740481d", + "0x8d8093020240382600e13c0498101245c328dc1da01c8b8093020248b809", + "0x48fb0123500391f0126040491d0121980391d0126040484f23637079007", + "0x482d00e370049810123700482900e3f8049810123f80481b00e3ec04981", + "0x482001212803807302024038dc00e47c6e0fe1f659c0491f0126040491f", + "0x498101201c23807240024c080900e080038073020240c00908a01c03981", + "0x480704c01c2a8093020242a1201b83b4038540126040485401239803854", + "0x6a0070b2024c080924202433007242024c08090aa15c6e0f200e15c04981", + "0x6e0093020246e00905201c080093020240800903601cb2809302024b2809", + "0x2280700e604048071b801c2c8dc020594b38090b2024c08090b202416807", + "0x48e600e4b40498101201c8a0070b6024c080900e080038073020246a009", + "0x392f0126040480704c01c2f0093020249685b1b83b40392d0126040492d", + "0xc08090280246a0070c6024c08090c2024330070c2024c08090bc4bc6e0f2", + "0x3180905a01c6e0093020246e00905201c0a8093020240a80903601c0a009", + "0xc080900e12c038100126040480722a01c318dc02a050b38090c6024c0809", + "0x38182ca370c1015028370c08dc01201c6e00900e01cc080900e01c03807", + "0x38150126040481501206c038140126040481401235003807302024038dc", + "0x491700e0800e9641a8604048d402a0506a06500e3500498101235004967", + "0x768dc3020241180909e01c0398101201c6e0071cc024c18230126046e020", + "0x7680902a01c0398101201c6e0070cc024c20f20126046e02601246c03826", + "0x398101201c6e0070560247702d052370c08dc036024b2807036024c0809", + "0x38073020240800923a01c039810120b40496400e01cc08090520240c007", + "0x730071f2024c080900e08c0382e0126040480704001c039810123c80491f", + "0x7d8093020240382600e0c0049810123e4170dc1da01c7c8093020247c809", + "0x496401235003834012604048fe012198038fe012604048301f637079007", + "0x482d00e370049810123700482900e074049810120740481b00e59004981", + "0x482b01206003807302024038dc00e0d06e01d2c859c0483401260404834", + "0xe9641a83e4038ff012604048ff0120b8038ff0126040480705601c03981", + "0x498101201c1800700e604048071b801c820381b8614809001b86046e0ff", + "0xc08092100241a007210024c080900e3f80383c012604049050123ec03905", + "0x492000e43c049810121041f83c1a840003841012604048071fe01c1f809", + "0x390001260404900012350038073020248a0090a801c251141b86040490f", + "0x49810123c80485500e370049810123700482900e404049810124040481b", + "0x49670203709080722a59c238452ce604048f20943708090002015c038f2", + "0x1000700e604048071b801c3280930c12c049811b84540485900e59c04981", + "0x8e91b1b86040484f0124b40384f0126040484b01216c0391701260404807", + "0x498101211c0481b00e11404981012114048d400e01cc08092360242f007", + "0x238452ce18c03917012604049170121840391d0126040491d0124bc03847", + "0x38dc00e15c049870aa024c08dc0a8024338070a84808f8d43020248b91d", + "0x483c00e01cc08090b2024250070b24846e1810121540493500e01cc0809", + "0x385e0126040492d0120fc038073020242d80921001c9685b1b860404921", + "0x498101247c048d400e184049810124bc0490f00e4bc0498101217804841", + "0x48610120b403967012604049670120a4039200126040492001206c0391f", + "0x498101215c0486600e01cc080900e370038612ce4808f96701218404981", + "0x49670120a4039200126040492001206c0391f0126040491f01235003863", + "0xc080900e370038632ce4808f96701218c0498101218c0482d00e59c04981", + "0x484701206c0384501260404845012350038670126040486501219803807", + "0x2296701219c0498101219c0482d00e59c0498101259c0482900e11c04981", + "0xc08091e40248f80700e6040481001247403807302024038dc00e19cb3847", + "0x49810121b0048e600e1b00498101201c8a00726a024c080900e08003807", + "0x3683a1b83c80383a0126040480704c01c36809302024361351b83b40386c", + "0xd807070024c08090700246a0070d0024c08090e0024330070e0024c0809", + "0x340093020243400905a01c6e0093020246e00905201c8200930202482009", + "0x491d00e01cc08090cc0242500700e604048071b801c340dc2080e0b3809", + "0x480708e01c390093020240382000e01cc08091da0242280700e60404810", + "0x130070ea024c080927e1c86e0ed00e4fc049810124fc048e600e4fc04981", + "0x3d809302024a08090cc01ca08093020243a8771b83c80387701260404807", + "0xc08091b80241480703a024c080903a0240d8072c8024c08092c80246a007", + "0x398101201c6e0070f63700e9642ce0243d8093020243d80905a01c6e009", + "0x4981012590048d400e50c049810123980486600e01cc08090200248e807", + "0x49430120b4038dc012604048dc0120a40381d0126040481d01206c03964", + "0x39810120400491d00e01cc080900e370039431b8074b216701250c04981", + "0x387e0126040480722801c9f0093020240382000e01cc08091a802422807", + "0x498101201c1300726e024c08090fc4f86e0ed00e1f8049810121f8048e6", + "0xb28091a801c408093020249c0090cc01c9c0093020249b87f1b83c80387f", + "0x168071b8024c08091b802414807030024c08090300240d8072ca024c0809", + "0x38dc01201c0398101201c038071023700c1652ce0244080930202440809", + "0xc08092ce0246a00700e604048071b801c0a8141b8620081671b86046e009", + "0xb38d40ca01c6a0093020246a0092ce01c080093020240800903601cb3809", + "0x38dc00e0800498903a024c08dc2c80248b8072c8060b28d43020246a010", + "0x498a1da024c08dc1cc0248d8071cc08c6e1810120740484f00e01cc0809", + "0x6e1811b83c80496500e3c80498101208c0481500e01cc080900e37003826", + "0xd8092c801c039810121980481800e01cc080900e3700382901262c0d866", + "0xc080900e08c0382d0126040480704001c039810123b40491f00e01cc0809", + "0x382600e0b8049810120ac168dc1da01c15809302024158091cc01c15809", + "0x38fb01260404830012198038300126040482e1f2370790071f2024c0809", + "0x49810123700482900e060049810120600481b00e59404981012594048d4", + "0x3807302024038dc00e3ec6e0182ca59c048fb012604048fb0120b4038dc", + "0x38fe012604048fe0120b8038fe0126040480705601c039810120a404818", + "0x1800700e604048071b801c809001b86307f8341b86046e0fe0305946a0f9", + "0x1a00720a024c080900e3f803904012604048380123ec0383801260404807", + "0x49810124201e1041a840003908012604048071fe01c1e00930202482809", + "0x483401235003807302024208090a801c878411b86040483f0124800383f", + "0x485500e370049810123700482900e3fc049810123fc0481b00e0d004981", + "0x3680708e114251142ce604048ed21e3707f8340201b0038ed012604048ed", + "0x328093020240382000e01cc080900e3700384b0126348a80930237023809", + "0x484f0121a00391b09e370c080922e0243800722e024c080922a0241d007", + "0x8d8dc0e401c32809302024328090c201c8d8093020248d8091cc01c03981", + "0x2a1201b86040491d0120f0038073020248f80909401c8f91d1b860404865", + "0x49810121540484100e154049810121500483f00e01cc080924002484007", + "0x484a01206c0391401260404914012350039210126040485701243c03857", + "0x8a167012484049810124840482d00e114049810121140482900e12804981", + "0x4914012350038590126040484b01219803807302024038dc00e4842284a", + "0x482d00e114049810121140482900e128049810121280481b00e45004981", + "0x48ed01247c03807302024038dc00e1642284a22859c0485901260404859", + "0xc080925a0247300725a024c080900e4500385b0126040480704001c03981", + "0x978dc1e401c978093020240382600e178049810124b42d8dc1da01c96809", + "0x3900012604049000123500386301260404861012198038610126040485e", + "0x498101218c0482d00e370049810123700482900e404049810124040481b", + "0x2280700e6040482601212803807302024038dc00e18c6e10120059c04863", + "0x48e600e4d40498101201c238070ce024c080900e0800380730202411809", + "0x386d0126040480704c01c360093020249a8671b83b40393501260404935", + "0xc08092ca0246a0070e0024c080907402433007074024c08090d81b46e0f2", + "0x3800905a01c6e0093020246e00905201c0c0093020240c00903601cb2809", + "0xc08090400243300700e604048071b801c380dc030594b38090e0024c0809", + "0x6e00905201c0c0093020240c00903601cb2809302024b28091a801c34009", + "0x48071b801c340dc030594b38090d0024c08090d0024168071b8024c0809", + "0x498101201c8a0070e4024c080900e080038073020246a00908a01c03981", + "0x480704c01c3a8093020249f8721b83b40393f0126040493f0123980393f", + "0x6a0070f6024c080928202433007282024c08090ea1dc6e0f200e1dc04981", + "0x6e0093020246e00905201c0a8093020240a80903601c0a0093020240a009", + "0x38100126040480727e01c3d8dc02a050b38090f6024c08090f602416807", + "0xc7015028370c08dc01201c6e00900e01cc080900e01c038073020240384b", + "0x48d40121d4038d4012604048d401259c03807302024038dc00e060b28dc", + "0x498f2ce024c08dc03a0243b807028024c08090280246a00703a5906e181", + "0x49810120540481b00e05004981012050048d400e01cc080900e37003820", + "0xa0d40f601cb3809302024b38101b8504039640126040496401259c03815", + "0x38dc00e3c80499004c024c08dc1da024a18071da398118d4302024b2015", + "0x4991052024c08dc0360243f0070361986e1810120980493e00e01cc0809", + "0x6e1811b80ac0496500e0ac049810121980481500e01cc080900e3700382d", + "0x7c8092c801c039810120b80481800e01cc080900e370038300126487c82e", + "0xc080900e08003807302024b38090d001c039810120a40490800e01cc0809", + "0x7f0fb1b83b4038fe012604048fe012398038fe0126040480704601c7d809", + "0x33007200024c08090683fc6e0f200e3fc0498101201c13007068024c0809", + "0x730093020247300903601c11809302024118091a801c8080930202480009", + "0x808dc1cc08cb3809202024c0809202024168071b8024c08091b802414807", + "0x17007070024c080900e0ac038073020241800903001c0398101201c6e007", + "0x3908078370c9905208370c08dc070398118d41f201c1c0093020241c009", + "0x7f007082024c080907e0247d80707e024c080900e0c003807302024038dc", + "0x80007094024c080900e3fc039140126040490f0120d00390f01260404807", + "0x48470121500391508e370c080908a0249000708a024c0809094450208d4", + "0x6e00905201c828093020248280903601c82009302024820091a801c03981", + "0x9b807052024c0809052024308072ce024c08092ce024730071b8024c0809", + "0x8d809302370278090da01c279170ca12cb39810120a4b39151b841482014", + "0xc08092360241d00723e024c080900e08003807302024038dc00e47404994", + "0x2a8091cc01c039810121500486800e1542a0dc302024900090e001c90009", + "0x908571b86040491f0aa3703900723e024c080923e024308070aa024c0809", + "0xc08090b2024840070b61646e18101215c0483c00e01cc080924202425007", + "0x485e01243c0385e0126040492d0121040392d0126040485b0120fc03807", + "0x482900e194049810121940481b00e12c0498101212c048d400e4bc04981", + "0x38dc00e4bc8b86509659c0492f0126040492f0120b40391701260404917", + "0x481b00e12c0498101212c048d400e184049810124740486600e01cc0809", + "0x4861012604048610120b403917012604049170120a40386501260404865", + "0xb38090d001c039810120a40490800e01cc080900e3700386122e19425967", + "0x4867012398038670126040480722801c318093020240382000e01cc0809", + "0x6e0f200e1b00498101201c1300726a024c08090ce18c6e0ed00e19c04981", + "0x1e0093020241e0091a801c1d009302024368090cc01c368093020249a86c", + "0xc0809074024168071b8024c08091b802414807210024c08092100240d807", + "0x38073020241680909401c0398101201c6e0070743708403c2ce0241d009", + "0x3f8070e0024c080900e08003807302024b38090d001c0398101219804845", + "0x39009302024340701b83b403868012604048680123980386801260404807", + "0xc08090ea024330070ea024c08090e44fc6e0f200e4fc0498101201c13007", + "0x6e00905201c730093020247300903601c11809302024118091a801c3b809", + "0x48071b801c3b8dc1cc08cb38090ee024c08090ee024168071b8024c0809", + "0x482301235003941012604048f201219803807302024b38090d001c03981", + "0x482d00e370049810123700482900e398049810123980481b00e08c04981", + "0x482001212803807302024038dc00e5046e0e604659c0494101260404941", + "0x498101201c1000700e604048100124e003807302024b200908a01c03981", + "0x49430f637076807286024c080928602473007286024c080900e11c0387b", + "0x486600e4dc049810124f83f0dc1e401c3f0093020240382600e4f804981", + "0x38150126040481501206c03814012604048140123500387f01260404937", + "0x387f1b80540a1670121fc049810121fc0482d00e3700498101237004829", + "0x382000e01cc08090200249c00700e604048d401211403807302024038dc", + "0x6e0ed00e20404981012204048e600e2040498101201c8a007270024c0809", + "0x42809302024998831b83c8038830126040480704c01c9980930202440938", + "0xc08090300240d8072ca024c08092ca0246a007112024c080910a02433007", + "0xc1652ce024448093020244480905a01c6e0093020246e00905201c0c009", + "0x38073020240380700e01cc080900e12c038100126040480727e01c448dc", + "0x496700e01cc080900e370038182ca370ca815028370c08dc01201c6e009", + "0xa0093020240a0091a801c0e9641b8604048d40121d4038d4012604048d4", + "0x481401235003807302024038dc00e080049962ce024c08dc03a0243b807", + "0x6e14100e590049810125900496700e054049810120540481b00e05004981", + "0x7680928601c768e6046350c08092c80540a0d40f601cb3809302024b3810", + "0xd8661b8604048260124f803807302024038dc00e3c80499704c024c08dc", + "0x486601205403807302024038dc00e0b404998052024c08dc0360243f007", + "0x3807302024038dc00e0c0049991f20b86e1811b80ac0496500e0ac04981", + "0x3400700e60404829012420038073020247c8092c801c039810120b804818", + "0x48e600e3f80498101201c118071f6024c080900e08003807302024b3809", + "0x38ff0126040480704c01c1a0093020247f0fb1b83b4038fe012604048fe", + "0xc08090460246a007202024c080920002433007200024c08090683fc6e0f2", + "0x8080905a01c6e0093020246e00905201c730093020247300903601c11809", + "0xc08090600240c00700e604048071b801c808dc1cc08cb3809202024c0809", + "0x1c0e60463507c807070024c080907002417007070024c080900e0ac03807", + "0x1f8093020240383000e01cc080900e37003908078370cd105208370c08dc", + "0x498101243c0483400e43c0498101201c7f007082024c080907e0247d807", + "0x2280924001c228093020242511408235080007094024c080900e3fc03914", + "0xd807208024c08092080246a00700e604048470121500391508e370c0809", + "0xb3809302024b38091cc01c6e0093020246e00905201c8280930202482809", + "0x3284b2ce604048292ce4546e10520805040807052024c080905202430807", + "0x382000e01cc080900e3700391d01266c8d809302370278090da01c27917", + "0x38550a8370c080924002438007240024c08092360241d00723e024c0809", + "0x8f8093020248f8090c201c2a8093020242a8091cc01c0398101215004868", + "0x48570120f0038073020249080909401c908571b86040491f0aa37039007", + "0x484100e4b40498101216c0483f00e01cc08090b2024840070b61646e181", + "0x384b0126040484b0123500392f0126040485e01243c0385e0126040492d", + "0x49810124bc0482d00e45c0498101245c0482900e194049810121940481b", + "0x38610126040491d01219803807302024038dc00e4bc8b86509659c0492f", + "0x498101245c0482900e194049810121940481b00e12c0498101212c048d4", + "0x3807302024038dc00e1848b86509659c04861012604048610120b403917", + "0x8a0070c6024c080900e08003807302024b38090d001c039810120a404908", + "0x9a809302024338631b83b403867012604048670123980386701260404807", + "0xc08090da024330070da024c080926a1b06e0f200e1b00498101201c13007", + "0x6e00905201c840093020248400903601c1e0093020241e0091a801c1d009", + "0x48071b801c1d0dc2100f0b3809074024c0809074024168071b8024c0809", + "0xc08092ce0243400700e60404866012114038073020241680909401c03981", + "0x49810121a0048e600e1a00498101201c3f8070e0024c080900e08003807", + "0x3913f1b83c80393f0126040480704c01c39009302024340701b83b403868", + "0xd807046024c08090460246a0070ee024c08090ea024330070ea024c0809", + "0x3b8093020243b80905a01c6e0093020246e00905201c7300930202473009", + "0x486600e01cc08092ce0243400700e604048071b801c3b8dc1cc08cb3809", + "0x38e6012604048e601206c038230126040482301235003941012604048f2", + "0x39411b839811967012504049810125040482d00e3700498101237004829", + "0x493800e01cc08092c80242280700e6040482001212803807302024038dc", + "0xa18091cc01ca18093020240384700e1ec0498101201c1000700e60404810", + "0x790070fc024c080900e0980393e012604049430f637076807286024c0809", + "0x4981012050048d400e1fc049810124dc0486600e4dc049810124f83f0dc", + "0x487f0120b4038dc012604048dc0120a4038150126040481501206c03814", + "0x39810123500484500e01cc080900e3700387f1b80540a1670121fc04981", + "0x38810126040480722801c9c0093020240382000e01cc08090200249c007", + "0x498101201c13007266024c08091024e06e0ed00e20404981012204048e6", + "0xb28091a801c44809302024428090cc01c42809302024998831b83c803883", + "0x168071b8024c08091b802414807030024c08090300240d8072ca024c0809", + "0x38dc01201c0398101201c038071123700c1652ce0244480930202444809", + "0xc08091a80240a80700e604048071b801c0a8141b8670081671b86046e009", + "0xe80933a5900c0dc302370b28092ca01cb3809302024b38091a801cb2809", + "0x1000700e60404964012590038073020240c00903001c0398101201c6e007", + "0x76807046024c080904602473007046024c080900e08c0382001260404807", + "0x4981012398768dc1e401c768093020240382600e3980498101208c100dc", + "0x481001206c0396701260404967012350038f20126040482601219803826", + "0xb39670123c8049810123c80482d00e370049810123700482900e04004981", + "0x498101201c1580700e6040481d01206003807302024038dc00e3c86e010", + "0x6e19e05206c6e1811b8198081671a83e403866012604048660120b803866", + "0x49810120b8048fb00e0b80498101201c1800700e604048071b801c1582d", + "0x498101201c7f8071f6024c08090600241a007060024c080900e3f8038f9", + "0x2a0072003fc6e1810120d00492000e0d0049810123f87d8f91a8400038fe", + "0x38290126040482901206c0381b0126040481b012350038073020247f809", + "0x39052080e080967302024800dc05206cb393300e3700498101237004829", + "0x498101201c1000700e604048071b801c8400933e0f0049811b841404883", + "0x8780910401c8a10f1b860404841012224038410126040483c0122140383f", + "0x486900e410049810124100482900e0e0049810120e00481b00e01cc0809", + "0xc080907e450820382ce22c0383f0126040483f0121840391401260404914", + "0x3807302024038dc00e12c049a022a024c08dc08e0243380708e114250d4", + "0x6e1810121940483c00e01cc080922e0242500722e1946e18101245404935", + "0x491d0121040391d0126040491b0120fc038073020242780921001c8d84f", + "0x481b00e40404981012404048d400e4800498101247c0490f00e47c04981", + "0x4920012604049200120b403845012604048450120a40384a0126040484a", + "0x48d400e1500498101212c0486600e01cc080900e3700392008a12880967", + "0x3845012604048450120a40384a0126040484a01206c0390101260404901", + "0x486600e01cc080900e3700385408a12880967012150049810121500482d", + "0x38380126040483801206c03901012604049010123500385501260404908", + "0x38552080e080967012154049810121540482d00e4100498101241004829", + "0x48e600e4840498101201c8a0070ae024c080900e08003807302024038dc", + "0x385b0126040480704c01c2c809302024908571b83b40392101260404921", + "0xc080905a0246a0070bc024c080925a0243300725a024c08090b216c6e0f2", + "0x2f00905a01c6e0093020246e00905201c158093020241580903601c16809", + "0xc08091a80242280700e604048071b801c2f0dc0560b4b38090bc024c0809", + "0x4981012184048e600e1840498101201c8a00725e024c080900e08003807", + "0x318671b83c8038670126040480704c01c318093020243092f1b83b403861", + "0xd807028024c08090280246a0070d8024c080926a0243300726a024c0809", + "0x360093020243600905a01c6e0093020246e00905201c0a8093020240a809", + "0xa0101b86046e0dc00e3700480700e6040480700e01c360dc02a050b3809", + "0xa00903601c08009302024080091a801c0398101201c6e0072ca0546e1a1", + "0x980072ce024c08092ce024b38071a8024c08091a802414807028024c0809", + "0x49a2046024c08dc0400241b007040074b20182ce604049671a805008167", + "0xc08dc04c0244800704c3b46e18101208c0488e00e01cc080900e370038e6", + "0x496500e06c049810123b40481500e01cc080900e3700386601268c79009", + "0x39810120a40481800e01cc080900e3700382b012690168291b86046e01b", + "0x382e0126040480704001c039810123c80488200e01cc080905a024b2007", + "0x49810123e4170dc1da01c7c8093020247c8091cc01c7c80930202403823", + "0x48fe012198038fe012604048301f6370790071f6024c080900e09803830", + "0x481b00e024049810120240492e00e06004981012060048d400e0d004981", + "0x4834012604048340120b40381d0126040481d0120a40396401260404964", + "0x382b00e01cc08090560240c00700e604048071b801c1a01d2c80240c010", + "0x800dc3023707f9640303507c8071fe024c08091fe024170071fe024c0809", + "0x828091f601c828093020240383000e01cc080900e37003904070370d2901", + "0x38ff00e0fc049810124200483400e4200498101201c7f007078024c0809", + "0x80009302024800091a801c878093020242083f07835080007082024c0809", + "0xc080903a02414807012024c080901202497007202024c08092020240d807", + "0x81810123c88781d0124048001425801c79009302024790090d201c0e809", + "0x398101201c6e0070ca024d304b0126046e1150124100391508e11425114", + "0x278dc3020248b80907801c8b8093020240382000e01cc080909602482807", + "0xc080923a0242080723a024c08092360241f80700e6040484f0124200391b", + "0x2280925c01c8a0093020248a0091a801c900093020248f80921e01c8f809", + "0x1680708e024c080908e02414807094024c08090940240d80708a024c0809", + "0x486600e01cc080900e3700392008e128229140200249000930202490009", + "0x3845012604048450124b803914012604049140123500385401260404865", + "0x49810121500482d00e11c0498101211c0482900e128049810121280481b", + "0x38073020247900910401c0398101201c6e0070a811c2504522804004854", + "0x385701260404857012398038570126040480722801c2a80930202403820", + "0xc08092421646e0f200e1640498101201c13007242024c08090ae1546e0ed", + "0x480925c01c1c0093020241c0091a801c968093020242d8090cc01c2d809", + "0x1680703a024c080903a02414807208024c08092080240d807012024c0809", + "0x484a00e01cc080900e3700392d03a410048380200249680930202496809", + "0x480708e01c2f0093020240382000e01cc08091da0242280700e60404866", + "0x130070c2024c080925e1786e0ed00e4bc049810124bc048e600e4bc04981", + "0x9a809302024338090cc01c33809302024308631b83c80386301260404807", + "0xc08092c80240d807012024c080901202497007030024c08090300246a007", + "0x48180200249a8093020249a80905a01c0e8093020240e80905201cb2009", + "0x48180123500386c012604048e601219803807302024038dc00e4d40e964", + "0x482900e590049810125900481b00e024049810120240492e00e06004981", + "0x6e0070d8074b20090300400486c0126040486c0120b40381d0126040481d", + "0x480722801c368093020240382000e01cc08092ce0242280700e60404807", + "0x130070e0024c08090741b46e0ed00e0e8049810120e8048e600e0e804981", + "0x9f809302024390090cc01c39009302024380681b83c80386801260404807", + "0xc08092ca0240d807012024c08090120249700702a024c080902a0246a007", + "0x48150200249f8093020249f80905a01c6a0093020246a00905201cb2809", + "0xa0dc34e040b38dc302370048071b8024038073020240380700e4fc6a165", + "0x498101259c048d400e594049810123500481500e01cc080900e37003815", + "0x481800e01cc080900e3700381d0126a0b20181b86046e16501259403967", + "0x480704601c100093020240382000e01cc08092c8024b200700e60404818", + "0x130071cc024c08090460806e0ed00e08c0498101208c048e600e08c04981", + "0x79009302024130090cc01c13009302024730ed1b83c8038ed01260404807", + "0xc08091b802414807020024c08090200240d8072ce024c08092ce0246a007", + "0x398101201c6e0071e4370081672ce024790093020247900905a01c6e009", + "0x330093020243300905c01c330093020240382b00e01cc080903a0240c007", + "0x3807302024038dc00e0ac168dc3520a40d8dc302370330102ce3507c807", + "0x3830012604048071fc01c7c809302024170091f601c1700930202403830", + "0xc08091fc3ec7c8d420001c7f009302024038ff00e3ec049810120c004834", + "0xd8091a801c039810123fc0485400e4007f8dc3020241a00924001c1a009", + "0x930071b8024c08091b802414807052024c08090520240d807036024c0809", + "0x49aa078024c08dc20a0244180720a4101c1012ce604049001b80a40d967", + "0x208093020241e00910a01c1f8093020240382000e01cc080900e37003908", + "0xc08090700240d80700e6040490f0122080391421e370c080908202444807", + "0x1f8090c201c8a0093020248a0090d201c820093020248200905201c1c009", + "0x6e04701219c0384708a1286a1810120fc8a10407059c4580707e024c0809", + "0x39170ca370c080922a0249a80700e604048071b801c2580935645404981", + "0x398101213c0490800e46c278dc3020243280907801c0398101245c0484a", + "0xc080923e0248780723e024c080923a0242080723a024c08092360241f807", + "0x2280905201c250093020242500903601c80809302024808091a801c90009", + "0x48071b801c90045094404b3809240024c08092400241680708a024c0809", + "0x2500903601c80809302024808091a801c2a009302024258090cc01c03981", + "0xb38090a8024c08090a80241680708a024c080908a02414807094024c0809", + "0x808091a801c2a809302024840090cc01c0398101201c6e0070a811425101", + "0x16807208024c080920802414807070024c08090700240d807202024c0809", + "0x480704001c0398101201c6e0070aa4101c1012ce0242a8093020242a809", + "0x2b8dc1da01c90809302024908091cc01c908093020240391400e15c04981", + "0x392d012604048590b6370790070b6024c080900e0980385901260404921", + "0x49810120ac0481b00e0b4049810120b4048d400e178049810124b404866", + "0x6e02b05a59c0485e0126040485e0120b4038dc012604048dc0120a40382b", + "0x392f0126040480704001c039810123500484500e01cc080900e3700385e", + "0x4981012184978dc1da01c30809302024308091cc01c3080930202403914", + "0x493501219803935012604048630ce370790070ce024c080900e09803863", + "0x482900e054049810120540481b00e05004981012050048d400e1b004981", + "0x380700e1b06e01502859c0486c0126040486c0120b4038dc012604048dc", + "0xc080900e3700396502a370d6014020370c08dc1b801c6e00900e01cc0809", + "0x48d40120a4038140126040481401206c038100126040481001235003807", + "0xc167302024b38d4028040b393000e59c0498101259c0496700e35004981", + "0x4700700e604048071b801c7300935a08c049811b80800483600e0800e964", + "0x48071b801c3300935c3c8049811b80980489000e098768dc30202411809", + "0x1580935e0b4148dc3023700d8092ca01c0d8093020247680902a01c03981", + "0x4100700e6040482d012590038073020241480903001c0398101201c6e007", + "0x48e600e3e40498101201c1180705c024c080900e0800380730202479009", + "0x38fb0126040480704c01c180093020247c82e1b83b4038f9012604048f9", + "0xc08090300246a007068024c08091fc024330071fc024c08090603ec6e0f2", + "0xe80905201cb2009302024b200903601c048093020240480925c01c0c009", + "0x38dc00e0d00e96401206008009068024c08090680241680703a024c0809", + "0x48ff0120b8038ff0126040480705601c039810120ac0481800e01cc0809", + "0x48071b801c820381b86c0809001b86046e0ff2c80606a0f900e3fc04981", + "0xc080900e3f80383c012604049050123ec039050126040480706001c03981", + "0x1f83c1a840003841012604048071fe01c1f8093020248400906801c84009", + "0x39010126040490101206c03900012604049000123500390f01260404841", + "0x49810123c80486900e074049810120740482900e024049810120240492e", + "0x8a80920801c8a84708a1288a0103020247910f03a0248090002824c038f2", + "0x1000700e6040484b01241403807302024038dc00e194049b1096024c08dc", + "0x38073020242780921001c8d84f1b8604049170120f00391701260404807", + "0x498101247c0490f00e47c049810124740484100e4740498101246c0483f", + "0x484a01206c03845012604048450124b8039140126040491401235003920", + "0x8a010012480049810124800482d00e11c0498101211c0482900e12804981", + "0x8a0091a801c2a009302024328090cc01c0398101201c6e00724011c25045", + "0x14807094024c08090940240d80708a024c080908a02497007228024c0809", + "0x385408e128229140200242a0093020242a00905a01c2380930202423809", + "0x391400e1540498101201c1000700e604048f201220803807302024038dc", + "0x3921012604048570aa370768070ae024c08090ae024730070ae024c0809", + "0x498101216c0486600e16c049810124842c8dc1e401c2c80930202403826", + "0x490401206c03809012604048090124b803838012604048380123500392d", + "0x1c0100124b4049810124b40482d00e074049810120740482900e41004981", + "0x48ed012114038073020243300909401c0398101201c6e00725a07482009", + "0xc080925e0247300725e024c080900e11c0385e0126040480704001c03981", + "0x318dc1e401c318093020240382600e184049810124bc2f0dc1da01c97809", + "0x38180126040481801235003935012604048670121980386701260404861", + "0x49810120740482900e590049810125900481b00e024049810120240492e", + "0x398101201c6e00726a074b200903004004935012604049350120b40381d", + "0xc080901202497007030024c08090300246a0070d8024c08091cc02433007", + "0x3600905a01c0e8093020240e80905201cb2009302024b200903601c04809", + "0x496701211403807302024038dc00e1b00e964012060080090d8024c0809", + "0xc080907402473007074024c080900e4500386d0126040480704001c03981", + "0x340dc1e401c340093020240382600e1c0049810120e8368dc1da01c1d009", + "0x3815012604048150123500393f012604048720121980387201260404870", + "0x49810123500482900e594049810125940481b00e024049810120240492e", + "0x398101201c0380727e350b280902a0400493f0126040493f0120b4038d4", + "0xb380700e604048071b801c0a8141b86c8081671b86046e00900e37004807", + "0x498101259c048d400e060b28dc3020246a0090ea01c6a0093020246a009", + "0xb280902a01c0398101201c6e00703a024d99640126046e0180121dc03967", + "0x398101201c6e0071da024da0e6046370c08dc040024b2807040024c0809", + "0x3807302024b20090d001c039810123980496400e01cc08090460240c007", + "0x38f2012604048f2012398038f20126040480704601c1300930202403820", + "0xc08090cc06c6e0f200e06c0498101201c130070cc024c08091e40986e0ed", + "0x800903601cb3809302024b38091a801c16809302024148090cc01c14809", + "0xb380905a024c080905a024168071b8024c08091b802414807020024c0809", + "0xc080900e0ac038073020247680903001c0398101201c6e00705a37008167", + "0xda8f905c370c08dc056040b38d41f201c158093020241580905c01c15809", + "0xc08091fc0247d8071fc024c080900e0c003807302024038dc00e3ec180dc", + "0xc080900e3fc03900012604048ff0120d0038ff012604048071fc01c1a009", + "0x3905208370c080907002490007070024c08092024001a0d420001c80809", + "0x7c8093020247c80903601c17009302024170091a801c0398101241004854", + "0x6e0f905c040910072c8024c08092c8024730071b8024c08091b802414807", + "0x6e007228024db10f0126046e0410121b40384107e4201e167302024b2105", + "0x487000e1140498101243c0483a00e1280498101201c1000700e60404807", + "0x39150126040491501239803807302024238090d001c8a8471b860404845", + "0x486501212803865096370c08090944546e07200e1280498101212804861", + "0x2780907e01c0398101245c0490800e13c8b8dc3020242580907801c03981", + "0x6a00723e024c080923a0248780723a024c080923602420807236024c0809", + "0x1f8093020241f80905201c840093020248400903601c1e0093020241e009", + "0x3300700e604048071b801c8f83f2100f0b380923e024c080923e02416807", + "0x840093020248400903601c1e0093020241e0091a801c900093020248a009", + "0x9003f2100f0b3809240024c08092400241680707e024c080907e02414807", + "0x8a0070a8024c080900e08003807302024b20090d001c0398101201c6e007", + "0x2b8093020242a8541b83b403855012604048550123980385501260404807", + "0xc08090b2024330070b2024c08090ae4846e0f200e4840498101201c13007", + "0x6e00905201c7d8093020247d80903601c18009302024180091a801c2d809", + "0x48071b801c2d8dc1f60c0b38090b6024c08090b6024168071b8024c0809", + "0x498101201c1000700e60404965012114038073020240e80909401c03981", + "0x485e25a370768070bc024c08090bc024730070bc024c080900e11c0392d", + "0x486600e18c049810124bc308dc1e401c308093020240382600e4bc04981", + "0x38100126040481001206c03967012604049670123500386701260404863", + "0x38671b8040b396701219c0498101219c0482d00e3700498101237004829", + "0x391400e4d40498101201c1000700e604048d401211403807302024038dc", + "0x386d0126040486c26a370768070d8024c08090d8024730070d8024c0809", + "0x49810121c00486600e1c0049810121b41d0dc1e401c1d00930202403826", + "0x48dc0120a4038150126040481501206c038140126040481401235003868", + "0xc080900e01c038681b80540a1670121a0049810121a00482d00e37004981", + "0x3807302024038dc00e0540a0dc36e040b38dc302370048071b802403807", + "0xc08092ce0246a0070305946e1810123500487500e3500498101235004967", + "0x496700e01cc080900e3700381d0126e0b20093023700c0090ee01cb3809", + "0x73009302370118090ee01c118201b8604049650121d40396501260404965", + "0x481001206c039670126040496701235003807302024038dc00e3b4049b9", + "0xb393000e080049810120800496700e370049810123700482900e04004981", + "0x168093740a4049811b806c0483600e06c330f204c59cc080904037008167", + "0x49811b80b80489000e0b8158dc3020241480911c01c0398101201c6e007", + "0x7d8092ca01c7d8093020241580902a01c0398101201c6e007060024dd8f9", + "0x38073020247f00903001c0398101201c6e0071fe024de0341fc370c08dc", + "0x3400700e604048e60121a0038073020247c80910401c039810120d004964", + "0x48e600e4040498101201c11807200024c080900e08003807302024b2009", + "0x39040126040480704c01c1c009302024809001b83b40390101260404901", + "0xc080904c0246a007078024c080920a0243300720a024c08090704106e0f2", + "0x1e00905a01c330093020243300905201c790093020247900903601c13009", + "0xc08091fe0240c00700e604048071b801c1e0661e4098b3809078024c0809", + "0x840f204c3507c807210024c080921002417007210024c080900e0ac03807", + "0x250093020240383000e01cc080900e3700391421e370de84107e370c08dc", + "0x498101211c0483400e11c0498101201c7f00708a024c08090940247d807", + "0x3280924001c328093020242591508a35080007096024c080900e3fc03915", + "0xd80707e024c080907e0246a00700e604049170121500384f22e370c0809", + "0xb2009302024b20091cc01c330093020243300905201c2080930202420809", + "0x3304107e0544a8071f2024c08091f2024348071cc024c08091cc02473007", + "0x2a80937c150049811b84800486d00e4808f91d23659cc08091f2398b204f", + "0x3921012604048540120e8038570126040480704001c0398101201c6e007", + "0x498101216c048e600e01cc08090b2024340070b61646e18101248404870", + "0x484a00e178968dc3020242b85b1b81c803857012604048570121840385b", + "0x1f80700e6040492f0124200386125e370c080925a0241e00700e6040485e", + "0x9a8093020243380921e01c338093020243180908201c3180930202430809", + "0xc080923e0241480723a024c080923a0240d807236024c08092360246a007", + "0x398101201c6e00726a47c8e91b2ce0249a8093020249a80905a01c8f809", + "0xc080923a0240d807236024c08092360246a0070d8024c08090aa02433007", + "0x8e91b2ce024360093020243600905a01c8f8093020248f80905201c8e809", + "0x39810123980486800e01cc08091f20244100700e604048071b801c3611f", + "0x383a0126040480722801c368093020240382000e01cc08092c802434007", + "0x498101201c130070e0024c08090741b46e0ed00e0e8049810120e8048e6", + "0x878091a801c9f809302024390090cc01c39009302024380681b83c803868", + "0x168070cc024c08090cc02414807228024c08092280240d80721e024c0809", + "0x1800909401c0398101201c6e00727e1988a10f2ce0249f8093020249f809", + "0x49640121a003807302024730090d001c039810120ac0484500e01cc0809", + "0xc08090ee024730070ee024c080900e25c038750126040480704001c03981", + "0x3d8dc1e401c3d8093020240382600e504049810121dc3a8dc1da01c3b809", + "0x3826012604048260123500393e012604049430121980394301260404941", + "0x49810124f80482d00e198049810121980482900e3c8049810123c80481b", + "0x3400700e604049640121a003807302024038dc00e4f8330f204c59c0493e", + "0x3826012604048260123500387e0126040482d0121980380730202473009", + "0x49810121f80482d00e198049810121980482900e3c8049810123c80481b", + "0x3400700e604048ed01212803807302024038dc00e1f8330f204c59c0487e", + "0x387f00e4dc0498101201c1000700e6040482001211403807302024b2009", + "0x39380126040487f26e370768070fe024c08090fe024730070fe024c0809", + "0x49810124cc0486600e4cc049810124e0408dc1e401c4080930202403826", + "0x48dc0120a4038100126040481001206c039670126040496701235003883", + "0xc080900e370038831b8040b396701220c0498101220c0482d00e37004981", + "0x428093020240382000e01cc08092ca0242280700e6040481d01212803807", + "0xc08091122146e0ed00e22404981012224048e600e2240498101201c23807", + "0x458090cc01c45809302024410691b83c8038690126040480704c01c41009", + "0x14807020024c08090200240d8072ce024c08092ce0246a007260024c0809", + "0x6e007260370081672ce024980093020249800905a01c6e0093020246e009", + "0x480722801c1b0093020240382000e01cc08091a80242280700e60404807", + "0x13007120024c080911c0d86e0ed00e23804981012238048e600e23804981", + "0x93009302024960090cc01c960093020244812e1b83c80392e01260404807", + "0xc08091b80241480702a024c080902a0240d807028024c08090280246a007", + "0x398101201c0380724c3700a8142ce024930093020249300905a01c6e009", + "0xb380700e604048071b801cb28151b86fc0a0101b86046e0dc01237004807", + "0x4981012040048d400e5900c0dc302024b38090ea01cb3809302024b3809", + "0xc00902a01c0398101201c6e007040024e001d0126046e1640121dc03810", + "0x398101201c6e00704c024e08ed1cc370c08dc046024b2807046024c0809", + "0x38073020240e8090d001c039810123b40496400e01cc08091cc0240c007", + "0x386601260404866012398038660126040480704601c7900930202403820", + "0xc08090360a46e0f200e0a40498101201c13007036024c08090cc3c86e0ed", + "0x80091a801c038093020240380923c01c15809302024168090cc01c16809", + "0x168071a8024c08091a802414807028024c08090280240d807020024c0809", + "0x481800e01cc080900e3700382b1a8050080070200241580930202415809", + "0x6a0f900e0b8049810120b80482e00e0b80498101201c1580700e60404826", + "0x480706001c0398101201c6e0071fc3ec6e1c20603e46e1811b80b80a010", + "0x8000906801c80009302024038fe00e3fc049810120d0048fb00e0d004981", + "0x3904012604048382023fc6a10000e0e00498101201c7f807202024c0809", + "0x49810123e4048d400e01cc080920a0242a0070784146e18101241004920", + "0x48d40120a40380701260404807012478038300126040483001206c038f9", + "0xc080903a0f06a0070603e40a09900e07404981012074048e600e35004981", + "0xc080900e3700384501270c250093023708a00913601c8a10f0820fc84010", + "0xc080922a0248d00722a024c08090940248e00708e024c080900e08003807", + "0x238090c201c328093020243280923001c0398101212c0489e00e194258dc", + "0x38073020242780909401c279171b8604048470ca3705000708e024c0809", + "0x49810124740483f00e01cc08092360248400723a46c6e18101245c0483c", + "0x4841012478038540126040492001243c039200126040491f0121040391f", + "0x482900e0fc049810120fc0481b00e42004981012420048d400e10404981", + "0x6e0070a843c1f90808204004854012604048540120b40390f0126040490f", + "0x6a007082024c08090820248f0070aa024c080908a0243300700e60404807", + "0x878093020248780905201c1f8093020241f80903601c8400930202484009", + "0x3807302024038dc00e1548783f210104080090aa024c08090aa02416807", + "0x73007242024c080900e450038570126040480704001c0398101207404868", + "0x2d8093020240382600e164049810124842b8dc1da01c9080930202490809", + "0x48070124780385e0126040492d0121980392d012604048590b637079007", + "0x482900e3f8049810123f80481b00e3ec049810123ec048d400e01c04981", + "0x6e0070bc3507f0fb00e0400485e0126040485e0120b4038d4012604048d4", + "0x480704001c039810120600484500e01cc08090400242500700e60404807", + "0x978dc1da01c30809302024308091cc01c308093020240384700e4bc04981", + "0x3935012604048630ce370790070ce024c080900e0980386301260404861", + "0x4981012040048d400e01c0498101201c0491e00e1b0049810124d404866", + "0x486c0120b4038d4012604048d40120a4038140126040481401206c03810", + "0xc08092ce0242280700e604048071b801c360d4028040038100121b004981", + "0x49810120e8048e600e0e80498101201c8a0070da024c080900e08003807", + "0x380681b83c8038680126040480704c01c380093020241d06d1b83b40383a", + "0x6a00700e024c080900e0248f00727e024c08090e4024330070e4024c0809", + "0x6a0093020246a00905201cb2809302024b280903601c0a8093020240a809", + "0x38073020240380700e4fc6a16502a01c0800927e024c080927e02416807", + "0x48d400e01cc080900e370038182ca370e2015028370c08dc1a80246e009", + "0x3967012604049670120a4038150126040481501206c0381401260404814", + "0x3823040074b21673020240816702a050b393000e0400498101204004967", + "0xc08091cc0244700700e604048071b801c7680938a398049811b808c04836", + "0xa80700e604048071b801c0d80938c198049811b83c80489000e3c8130dc", + "0x48071b801c1700938e0ac168dc302370148092ca01c1480930202413009", + "0xc08090cc0244100700e6040482b012590038073020241680903001c03981", + "0x49810120c0048e600e0c00498101201c118071f2024c080900e08003807", + "0x7d8fe1b83c8038fe0126040480704c01c7d809302024180f91b83b403830", + "0x6a00700e024c080900e0248f0071fe024c080906802433007068024c0809", + "0xe8093020240e80903601c6e0093020246e00925c01cb2009302024b2009", + "0xe8dc2c801c0a0091fe024c08091fe02416807040024c080904002414807", + "0x800093020240382b00e01cc080905c0240c00700e604048071b801c7f820", + "0x820dc3900e0808dc3023708001d2c83507c807200024c080920002417007", + "0x840093020241e0091f601c1e0093020240383000e01cc080900e37003905", + "0x87809302024038ff00e104049810120fc0483400e0fc0498101201c7f007", + "0x1c00903601c80809302024808091a801c8a0093020248784121035080007", + "0x148071b8024c08091b80249700700e024c080900e0248f007070024c0809", + "0x100dc00e0e08081522c01c33009302024330090d201c1000930202410009", + "0x2780939245c049811b81940490400e1942591508e1142501430202433114", + "0x1e007236024c080900e080038073020248b80920a01c0398101201c6e007", + "0x900093020248f80907e01c039810124740490800e47c8e8dc3020248d809", + "0xc080908e0248f0070aa024c08090a8024878070a8024c080924002420807", + "0x2280903601c8a8093020248a80925c01c25009302024250091a801c23809", + "0xa0090aa024c08090aa02416807096024c08090960241480708a024c0809", + "0x8f0070ae024c080909e0243300700e604048071b801c2a84b08a45425047", + "0x8a8093020248a80925c01c25009302024250091a801c2380930202423809", + "0xc08090ae02416807096024c08090960241480708a024c080908a0240d807", + "0xc08090cc0244100700e604048071b801c2b84b08a454250470280242b809", + "0x4981012164048e600e1640498101201c8a007242024c080900e08003807", + "0x2d92d1b83c80392d0126040480704c01c2d8093020242c9211b83b403859", + "0x6a00700e024c080900e0248f00725e024c08090bc024330070bc024c0809", + "0x828093020248280903601c6e0093020246e00925c01c8200930202482009", + "0x828dc20801c0a00925e024c080925e02416807040024c080904002414807", + "0x39810120980484500e01cc08090360242500700e604048071b801c97820", + "0x31809302024318091cc01c318093020240384700e1840498101201c10007", + "0x486726a3707900726a024c080900e09803867012604048630c237076807", + "0x48d400e01c0498101201c0491e00e1b4049810121b00486600e1b004981", + "0x381d0126040481d01206c038dc012604048dc0124b80396401260404964", + "0x1001d1b8590038140121b4049810121b40482d00e0800498101208004829", + "0x498101201c0491e00e0e8049810123b40486600e01cc080900e3700386d", + "0x481d01206c038dc012604048dc0124b8039640126040496401235003807", + "0x38140120e8049810120e80482d00e080049810120800482900e07404981", + "0x480704001c039810120400484500e01cc080900e3700383a0400746e164", + "0x380dc1da01c34009302024340091cc01c340093020240391400e1c004981", + "0x38750126040487227e3707900727e024c080900e0980387201260404868", + "0x4981012594048d400e01c0498101201c0491e00e1dc049810121d404866", + "0x49670120a4038180126040481801206c038dc012604048dc0124b803965", + "0x496700e1dcb38181b8594038140121dc049810121dc0482d00e59c04981", + "0xb38093023706a0090ee01c6a0dc1b8604048090121d40380901260404809", + "0xb28093960540a0dc302370b38071b84f003807302024038dc00e040049ca", + "0xa0093020240a0091a801c0c0093020240a80922601c0398101201c6e007", + "0x38181b80506a009030024c0809030024520071b8024c08091b8024b3807", + "0x6a00703a024c08092c8024530072c8024c080900e42c03807302024038dc", + "0xe8093020240e80914801c6e0093020246e0092ce01cb2809302024b2809", + "0x48d400e08004981012040048a600e01cc080900e3700381d1b85946a009", + "0x482001260404820012290038dc012604048dc01259c0380701260404807", + "0xa8dc302024b380921201c0a0102ce350c08091b802454007040370038d4", + "0x48071a82a803809012604048090120a4038070126040480701206c03965", + "0x48071b801c11809398080049811b80740490700e074b20181a860404965", + "0x49640120a4038180126040481801206c038073020241000915801c03981", + "0x730d43020246a0142c8060b390300e350049810123500490100e59004981", + "0x48af00e01cc080900e3700386601273479009302370130091fa01c130ed", + "0x8000705a024c080900e42c038073020241480909401c1481b1b8604048f2", + "0x482e0122c40382e0126040482d0563707e007056024c08090360400a8d4", + "0x48fa00e3b4049810123b40482900e398049810123980481b00e3e404981", + "0xc080902a0245980700e604048071b801c7c8ed1cc350048f9012604048f9", + "0xc08091cc0240d807060024c08090cc0247b00700e604048100122d403807", + "0x768e61a802418009302024180091f401c768093020247680905201c73009", + "0x38073020240800916a01c03981012054048b300e01cc080900e37003830", + "0x38fb012604048230123d8038073020240a0091ea01c039810123500481d", + "0x49810123ec048fa00e590049810125900482900e060049810120600481b", + "0xb28071a8024c08091b80240a80700e604048071f001c7d964030350048fb", + "0xc08090200245c00700e604048071b801c0a00939c040b38dc3023706a009", + "0x48071e601c0c0093020240a80917401cb2809302024b38091e801c0a809", + "0x4981012590048bd00e5900498101201c8580700e604048071b801c039cf", + "0x49650120fc038180126040481d0122e803965012604048140123d00381d", + "0x730093a008c049811b8060048f100e080049810120800496700e08004981", + "0x38260126040480718201c768093020241180917e01c0398101201c6e007", + "0x49810120240481b00e01c0498101201c048d400e3c8049810123b4048ee", + "0x48f20123980382601260404826012154038200126040482001259c03809", + "0x1481b0cc350048290361986a1810123c81302001201c080c300e3c804981", + "0x7780705a024c080900e42c038073020247300909401c0398101201c6e007", + "0x49810120b8048c600e0b8049810120ac100dc19601c1580930202416809", + "0x48f9012320038090126040480901206c0380701260404807012350038f9", + "0x80093020246a0091ce01c0398101201c7c0071f2024038d40123e404981", + "0xc08091b802414807012024c08090120240d80700e024c080900e0246a007", + "0xa167302024b38101b8024038101c801cb3809302024b38090aa01c6e009", + "0x6e181012370048e100e01cc080900e3e0038182ca0540a167012060b2815", + "0xa0091cc01c0a009302024080091c401c08009302024b38091ac01cb38dc", + "0x3965012604048dc01200003815012604048141a837076807028024c0809", + "0x4981012594049d100e024049810120240481b00e01c0498101201c048d4", + "0xe964030350c080902a594048072ce748038150126040481501218403965", + "0x6a007020024c08091a80247380700e6040496701247c0381d2c80606a009", + "0x6e0093020246e00905201c048093020240480903601c0380930202403809", + "0x770070305940a8142ce0240c16502a050b39810120406e00900e59ce9807", + "0xb38093020240390b00e35004981012370048dc1da01c6e00930202403809", + "0xb2807012024c080900e0240a8072ce3506e0091a8024c08091a802430807", + "0xc08091a80245c00700e604048071b801cb38093a83506e0dc30237004809", + "0x48071e601c0a8093020240800917401c0a0093020246e0091e801c08009", + "0x4981012594048bd00e5940498101201c8580700e604048071b801c039d5", + "0x48140120fc03815012604048180122e803814012604049670123d003818", + "0x100093ac074049811b8054048f100e590049810125900496700e59004981", + "0x73009302024118091dc01c118093020240e80917e01c0398101201c6e007", + "0xc08091da024ec0072c8024c08092c8024b38071da024c08091cc024eb807", + "0x390b00e01cc08090400242500700e604048071b801c769641b802476809", + "0xec0072c8024c08092c8024b38071e4024c080904c024ec80704c024c0809", + "0xc08091b80240a80700e604048071f001c791641b80247900930202479009", + "0x5c00700e604048071b801c0a0093b4040b38dc3023706a0092ca01c6a009", + "0xc0093020240a80917401cb2809302024b38091e801c0a80930202408009", + "0x48bd00e5900498101201c8580700e604048071b801c039db01201c79807", + "0x38180126040481d0122e803965012604048140123d00381d01260404964", + "0x49811b8060048f100e080049810120800496700e080049810125940483f", + "0x480704001c768093020241180917e01c0398101201c6e0071cc024ee023", + "0x481b00e01c0498101201c048d400e3c8049810123b4048ee00e09804981", + "0x382601260404826012184038200126040482001259c0380901260404809", + "0x48290361986a1810123c81302001201c081dd00e3c8049810123c8048e6", + "0xc080900e42c038073020247300909401c0398101201c6e00705206c330d4", + "0x49e000e0b8049810120ac100dc3be01c15809302024168093bc01c16809", + "0x38090126040480901206c0380701260404807012350038f90126040482e", + "0x6a007028024c08091a8024738071f2024038d40123e4049810123e4049e1", + "0x6e0093020246e00905201c048093020240480903601c0380930202403809", + "0x6e00900e050f1007020024c0809020024308072ce024c08092ce02473007", + "0xc08091a8024738072c8060b28152ce024b20182ca054b3981012040b3814", + "0x6e00905201c048093020240480903601c03809302024038091a801c0a009", + "0xf1007020024c0809020024308072ce024c08092ce024730071b8024c0809", + "0x738072c8060b28152ce024b20182ca054b3981012040b38141b802403814", + "0x48093020240480903601c03809302024038091a801cb38093020246a009", + "0xb2815028040b398101259c6e00900e59cf18071b8024c08091b802414807", + "0x38093020240380903601cb38093020246e0093c801cb2815028040b3809", + "0xb380900e350f28072ce024c08092ce02434807012024c080901202414807", + "0xc009302370b28093ce01cb28093020240a8093cc01c0a814020350c0809", + "0x481d0127a80381d012604048180127a403807302024038dc00e590049e8", + "0x486100e08c0498101208c049ec00e01cc0809040024f58070460806e181", + "0xc08091da3986e1ee00e3b4730dc3020246a0231b87b4038d4012604048d4", + "0xa00905201c080093020240800903601c79009302024130093de01c13009", + "0xc080900e370038f20280406a0091e4024c08091e4024f8007028024c0809", + "0xc08090200240d8070cc024c08092c8024f880700e604048d401242003807", + "0xa0101a802433009302024330093e001c0a0093020240a00905201c08009", + "0x6a0071b87c8038d4012604048d401259c038070126040480701235003866", + "0xc080900e370039650127d00a8093023700a0093e601c0a0102ce350c0809", + "0x1001d1a86046e164030370049673ec01cb20181b8604048150127d403807", + "0xd8071e4024c0809046024fc00700e604048071b801c130ed1cc350fb823", + "0x14809302024790093f201c0d8093020241000905201c330093020240e809", + "0xd80705a024c080904c024fd80700e604048071b801c039fa01201c79807", + "0x14809302024168093f201c0d8093020247680905201c3300930202473009", + "0x38dc00e3e4049fd05c024c08dc056024fe007056024c0809052024c3807", + "0x1000071f6024c08090600406e1ff00e0c0049810120b8049fe00e01cc0809", + "0x330093020243300903601cb3809302024b38091a801c7f0093020247d809", + "0x7f01b0cc59cb38091fc024c08091fc02500807036024c080903602414807", + "0x3834012604048f9012808038073020240800908a01c0398101201c6e007", + "0x498101206c0482900e198049810121980481b00e59c0498101259c048d4", + "0x3807302024038dc00e0d00d8662ce59c04834012604048340128040381b", + "0xc080920002500007200024c08091fe0406e1ff00e3fc0498101259404986", + "0x6e00905201c048093020240480903601cb3809302024b38091a801c80809", + "0x48071f001c808dc01259cb3809202024c0809202025008071b8024c0809", + "0x480701235003815012604048140123ec038140126040480706001c03981", + "0x482900e370049810123700492e00e024049810120240481b00e01c04981", + "0x80151a83700480702880c03810012604048100121a4038d4012604048d4", + "0x38dc00e39804a05046024c08dc04002502007040074b20182ca040c0809", + "0x6e0fc00e01cc08091da0245980704c3b46e18101208c04a0600e01cc0809", + "0xb2809302024b28091a801c330093020247900916201c7900930202413167", + "0xc080903a024148072c8024c08092c802497007030024c08090300240d807", + "0xc080900e3700386603a5900c16502002433009302024330091f401c0e809", + "0xc08092ca0246a007036024c08091cc0247b00700e6040496701215003807", + "0xe80905201cb2009302024b200925c01c0c0093020240c00903601cb2809", + "0x48e700e06c0e96403059408009036024c08090360247d00703a024c0809", + "0x38090126040480901206c038070126040480701235003967012604048d4", + "0x496502a05008167302024b38dc01201cb3a0700e3700498101237004829", + "0xa0091f601c0a0093020240383000e01cc080900e3e00396502a05008167", + "0x97007012024c08090120240d80700e024c080900e0246a00702a024c0809", + "0x8009302024080090d201c6a0093020246a00905201c6e0093020246e009", + "0x6e0200128100382003a5900c1650206040481002a3506e00900e05104007", + "0x38261da370c08090460250300700e604048071b801c7300941208c04981", + "0x49810123c8048b100e3c804981012098b38dc1f801c039810123b4048b3", + "0x49640124b8038180126040481801206c039650126040496501235003866", + "0xb281001219804981012198048fa00e074049810120740482900e59004981", + "0x48e60123d803807302024b38090a801c0398101201c6e0070cc074b2018", + "0x492e00e060049810120600481b00e59404981012594048d400e06c04981", + "0x481b0126040481b0123e80381d0126040481d0120a40396401260404964", + "0x3810012604048d401239c03807302024b38090d001c0d81d2c8060b2810", + "0x49810123700482900e024049810120240481b00e01c0498101201c048d4", + "0x38182ca0540a167012060b281502859cc0809020370048072ce74c038dc", + "0x7380700e6040481401220803807302024080090d001c0398101259c04868", + "0x48093020240480903601c03809302024038091a801c0a8093020246a009", + "0xe964030594b39810120546e00900e59ce98071b8024c08091b802414807", + "0x3809302024038091a801c0a009302024b380941401c0e964030594b3809", + "0xc08091a8024148071b8024c08091b80248f007012024c08090120240d807", + "0x81810120400a0d41b80240381430a01c08009302024080091cc01c6a009", + "0x1060071b8024c080900e0250580703a5900c16502a0400481d2c8060b2815", + "0x39810123500484a00e01cc080900e370039670128346a0093023706e009", + "0x380741e024038f300e05004981012040048e600e0400498101201d07007", + "0x48e600e0540498101201d0800700e6040496701212803807302024038dc", + "0x3807302024b28090d001c0c1651b8604048140121c00381401260404815", + "0x481d0121280381d2c8370c08090120606e07200e0240498101202404861", + "0x48a800e01cc080900e3e0038202c8370048200126040480721601c03981", + "0x49810120240481b00e01c0498101201c048d400e060b28151a860404810", + "0x49670120a4038d4012604048d40124b8038dc012604048dc01247803809", + "0x481402a59c6a0dc01201c0aa1100e050049810120500486900e59c04981", + "0x38dc00e3c804a1204c024c08dc1da025020071da3981182003a5900a181", + "0x390b00e01cc0809036024250070361986e18101209804a0600e01cc0809", + "0x49810120a4168dc1f801c168093020240c1650cc35080007052024c0809", + "0x481d01206c03964012604049640123500382e0126040482b0122c40382b", + "0x482900e08c0498101208c0492e00e080049810120800491e00e07404981", + "0x382e1cc08c1001d2c80500482e0126040482e0123e8038e6012604048e6", + "0x48f600e01cc08090300247a80700e604049650122d403807302024038dc", + "0x381d0126040481d01206c0396401260404964012350038f9012604048f2", + "0x49810123980482900e08c0498101208c0492e00e080049810120800491e", + "0x48dc0122cc038f91cc08c1001d2c8050048f9012604048f90123e8038e6", + "0x38dc42601c048093020240480905201c038093020240380903601c03981", + "0x48071b801c0a80942a050049811b804004a1400e040b38d41a860404809", + "0x6a0dc42c01cb3809302024b380905201c6a0093020246a00903601c03981", + "0x48071b801c1000942e074049811b859004a1400e5900c1651a860404967", + "0xa00943001c730093020241180943201c118093020240e80943001c03981", + "0x38f2012604048261cc3710d00704c024c08091da0250c8071da024c0809", + "0xc080900e37003866012870039811b83c804a1b00e3c8049810123c8048e6", + "0xc08090520250f007052024c08090360250e807036024c080900e42c03807", + "0x1680930801c0c0093020240c00905201cb2809302024b280903601c16809", + "0x398101219804a1f00e01cc080900e3700382d0305946a00905a024c0809", + "0x17009302024170091cc01c1700930202403a2000e0ac0498101201c10007", + "0x48f906037079007060024c080900e098038f90126040482e05637076807", + "0x482900e594049810125940481b00e3f8049810123ec04a2100e3ec04981", + "0x48071b801c7f0182ca350048fe012604048fe0126100381801260404818", + "0x496501206c0383401260404820012884038073020240a00944401c03981", + "0xb28d40120d0049810120d00498400e060049810120600482900e59404981", + "0xc08091a80240d8071fe024c080902a0251080700e604048071b801c1a018", + "0xb38d41a80247f8093020247f80930801cb3809302024b380905201c6a009", + "0x800943601c08009302024b380944801cb38d41b8604048d401288c038ff", + "0x4a2600e0540498101201c8580700e604048071b801c0a00944a01cc08dc", + "0x38dc00e01d1380900e3cc03818012604049650124600396501260404815", + "0x49640128a0039640126040480721601c0398101205004a1f00e01cc0809", + "0x491800e0800498101206004a2900e060049810120740491800e07404981", + "0x398101201c6e0071cc025150230126046e0200128300382001260404820", + "0x38073020246e0091ea01c039810123500481d00e01cc080904602425007", + "0x382601260404826012398038260126040480745601c7680930202403820", + "0xc08091e41986e0f200e1980498101201c130071e4024c080904c3b46e0ed", + "0x480905201c038093020240380903601c148093020240d80945801c0d809", + "0xc080900e3700382901201c6a009052024c080905202516807012024c0809", + "0x48071a88b80382d1a8370c08091a80251180700e604048e601212803807", + "0xc080900e42c03807302024038dc00e3ec180f91a88bc1702b1b86046e02d", + "0x1700905201c7f8093020241580903601c1a0093020247f00946001c7f009", + "0x48071b801c03a3201201c79807202024c080906802518807200024c0809", + "0x1800905201c7f8093020247c80903601c1c0093020247d80930601c03981", + "0x83807208024c080920202519807202024c080907002518807200024c0809", + "0x3981012414048ac00e01cc080900e3700383c0128d08280930237082009", + "0xc0809200024148071fe024c08091fe0240d807210024c08091a80251a807", + "0x2083f1a8604049081b84007f96746e01c840093020248400946c01c80009", + "0x481d00e01cc08091b80247a80700e604048071b801c8784107e3500490f", + "0x148071fe024c08091fe0240d807228024c08090780251600700e604048d4", + "0x38f800e450800ff1a80248a0093020248a00945a01c8000930202480009", + "0x38d41f201c080093020240800905c01c080093020240382b00e01cc0809", + "0x49670128e403807302024038dc00e060b28dc4700540a0dc30237008009", + "0xe80947401cc08dc2c80250d807028024c08090280246a0072c859c6e181", + "0x3820012604048d40128ec03807302024b38090d001c0398101201c6e007", + "0xc08090280246a0071cc024c080904602463007046024c08090403706e0cb", + "0xa8141a8024730093020247300919001c0a8093020240a80903601c0a009", + "0xa0093020240a0091a801c0398101207404a1f00e01cc080900e370038e6", + "0x1300930401c130ed1b8604048dc0283711e0071b8024c08091b8024b3807", + "0x1481b1b8604048f20128f803807302024038dc00e19804a3d1e4024c08dc", + "0x168d41b890403807302024038dc00e0ac04a4005a024c08dc0520251f807", + "0x6a007060024c08091f259c6e21a00e3e40498101201d0800705c024c0809", + "0xd8093020240d8092ce01c0a8093020240a80903601c7680930202476809", + "0xd8151da04061807060024c08090600247300705c024c080905c0242a807", + "0x486800e01cc080900e370038341fc3ec6a0090683f87d8d43020241802e", + "0x6e0cb00e3fc049810120ac048ef00e01cc08091a80248f80700e60404967", + "0x76809302024768091a801c808093020248000918c01c800093020247f81b", + "0x390102a3b46a009202024c08092020246400702a024c080902a0240d807", + "0x4a4200e01cc08091a80248f80700e604049670121a003807302024038dc", + "0x38150126040481501206c038ed012604048ed0123500383801260404866", + "0xb38090d001c0398101201c6e007070054768d40120e0049810120e0048c8", + "0xc080900e080038073020246e00908a01c039810123500491f00e01cc0809", + "0x829041b83b40390501260404905012398039050126040480722801c82009", + "0x12100707e024c08090784206e0f200e4200498101201c13007078024c0809", + "0xc0093020240c00903601cb2809302024b28091a801c208093020241f809", + "0x6e0091a8604048070122a0038410305946a009082024c080908202464007", + "0x48071f001c0480901201cc08091a80247a80700e604048dc0122d4038d4", + "0x48dc0120a4038090126040480901206c038073020246a00916601c03981", + "0xb28093023700a80942801c0a814020350c08091b80246e21300e37004981", + "0x4964012864039640126040496501286003807302024038dc00e06004a43", + "0x481b00e01cc080900e37003820012910039811b807404a1b00e07404981", + "0x118d43020240a0101b891403814012604048140120a40381001260404810", + "0x4a4800e01cc080900e370038f201291c130093023707680948c01c768e6", + "0x168290466040481b0129280381b012604048660129240386601260404826", + "0x1580949801c039810120b404a4b00e0e0809001fe0d07f0fb0603e41702b", + "0x48300121a0038073020247c8090d001c039810120b80484500e01cc0809", + "0xc08090680252600700e604048fe012934038073020247d8090d001c03981", + "0x398101240404a4e00e01cc08092000252700700e604048ff01211403807", + "0x49810120a4048e600e01c0498101201c048d400e01cc080907002422807", + "0x48074a201c1e00930202403a5000e414820dc302024148071b893c03829", + "0x384120a370c080920a0252980707e024c08092100f06e25200e42004981", + "0x48074ac01c8a10f1b86040483f0824106a25500e0fc049810120fc04a54", + "0x484a00e01cc080900e3700384501295c250093023708a00941801c03981", + "0x238dc4a401c8a80930202403a5100e11c0498101201d2800700e6040484a", + "0x6e25200e45c0498101201d280070ca024c080900e9440384b01260404915", + "0x25809302024258094a801c87809302024878091a801c278093020248b865", + "0x4a5900e4748d8dc3020242784b21e3512c00709e024c080909e0252a007", + "0x2a0093020248f8094b601c0398101201c6e0072400252d11f0126046e11d", + "0xc08090a80252a00720a024c080920a0252a007236024c08092360246a007", + "0x3921012604048570128a4038570aa370c08090a84148d8d44aa01c2a009", + "0x48071b801c2d8094b8164049811b848404a0c00e4840498101248404918", + "0x398101259c0491f00e01cc08090b20242500700e604048071f001c03981", + "0x2f0093020242f0091cc01c2f00930202403a5d00e4b40498101201c10007", + "0x492f0c2370790070c2024c080900e0980392f0126040485e25a37076807", + "0x481b00e15404981012154048d400e19c0498101218c04a5e00e18c04981", + "0x48670126040486701297c038e6012604048e60120a40382301260404823", + "0x2a8091a801c0398101216c0484a00e01cc080900e370038671cc08c2a967", + "0x398101201c7c00700e604048071b801c03a6001201c7980726a024c0809", + "0x36009302024900094bc01c0398101241404a6100e01cc08092ce0248f807", + "0xc08091cc02414807046024c08090460240d807236024c08092360246a007", + "0x398101201c6e0070d83981191b2ce02436009302024360094be01c73009", + "0x383a012604048074a001c3680930202403a5100e01cc080908a02425007", + "0xc080920a0252a00721e024c080921e0246a0070e0024c08090741b46e252", + "0x38720d0370c08090e0414878d44aa01c38009302024380094a801c82809", + "0x49811b84fc04a0c00e4fc049810124fc0491800e4fc049810121c804a29", + "0xc08090ea0242500700e604048071f001c0398101201c6e0070ee02531075", + "0x3d80930202403a5d00e5040498101201c1000700e6040496701247c03807", + "0xc080900e098039430126040487b282370768070f6024c08090f602473007", + "0x48d400e4dc049810121f804a5e00e1f80498101250c9f0dc1e401c9f009", + "0x38e6012604048e60120a4038230126040482301206c0386801260404868", + "0x484a00e01cc080900e370039371cc08c341670124dc049810124dc04a5f", + "0x1180903601c0398101201c7c00726a024c08090d00246a00700e60404877", + "0x1318072ce024c08092ce0242a8071cc024c08091cc02414807046024c0809", + "0x48071b801c998812701fcb38092662049c07f2ce604049671cc08c9a967", + "0x480701235003883012604048f201297803807302024b380923e01c03981", + "0x4a5f00e398049810123980482900e08c0498101208c0481b00e01c04981", + "0x482001287c03807302024038dc00e20c7302300e59c0488301260404883", + "0x498101201d3200710a024c080900e08003807302024b380923e01c03981", + "0x480704c01c41009302024448851b83b4038890126040488901239803889", + "0x6a007260024c08091160252f007116024c08091041a46e0f200e1a404981", + "0xa0093020240a00905201c080093020240800903601c0380930202403809", + "0x8f80700e604048071b801c9801402001cb3809260024c08092600252f807", + "0x380701260404807012350038360126040481801297803807302024b3809", + "0x49810120d804a5f00e050049810120500482900e040049810120400481b", + "0x7c00700e6040480709601c0800930202403a6500e0d80a01000e59c04836", + "0x6a0f900e050049810120500482e00e0500498101201c1580700e60404807", + "0x6e0094ce01c0398101201c6e0072c80606e2662ca0546e1811b805004807", + "0xe8094d001c0a8093020240a8091a801c0398101201d2b00703a024c0809", + "0x76809302024118094d401c0398101201c6e0071cc02534823040370c08dc", + "0x3a6c01201c7980704c024c08091da025358072ce024c080904002497807", + "0x3866012604048f20129b4038f20126040480721601c0398101201c6e007", + "0xc08092ce0406e26e00e0980498101219804a6b00e59c049810123980492f", + "0x38f800e01cc080900e370038290129c00d809302370130094de01cb3809", + "0x481b00e05404981012054048d400e0b40498101206c04a7100e01cc0809", + "0x38d4012604048d40121840382d0126040482d01259c0396501260404965", + "0x4a73060024c08dc1f2024338071f20b8158d43020246a02d2ca054b3a72", + "0x6e1810120c00493500e3f80498101259c0480000e01cc080900e370038fb", + "0x482e01206c0382b0126040482b012350038073020247f80909401c7f834", + "0xb39d200e0d0049810120d00486100e3f8049810123f8049d100e0b804981", + "0x3807302024038dc00e0e0809001a80241c101200350c08090683f81702b", + "0x15809302024158091a801c820093020247d8093e201c0398101259c04a74", + "0x390405c0ac6a009208024c0809208024f800705c024c080905c0240d807", + "0xb38094e801c039810120a40484a00e01cc080900e3e003807302024038dc", + "0x49ef00e0f0049810124146a0dc3dc01c828093020240390b00e01cc0809", + "0x39650126040496501206c0381501260404815012350039080126040483c", + "0x80094ea01c0398101201c6e0072105940a8d401242004981012420049f0", + "0xc080900e080038073020246e0094ec01c039810123500490800e01cc0809", + "0x2083f1b83b40384101260404841012398038410126040480722801c1f809", + "0xf8807094024c080921e4506e0f200e4500498101201c1300721e024c0809", + "0xb2009302024b200903601c0c0093020240c0091a801c2280930202425009", + "0x38090126040480901206c038452c80606a00908a024c080908a024f8007", + "0xa00948c01c0a0102ce350c08091b80246e24500e3700498101237004829", + "0x38180126040481501292003807302024038dc00e59404a7702a024c08dc", + "0x330f204c3b4730230400741198101259004a4a00e5900498101206004a49", + "0x4a4c00e01cc08090400252580700e6040481d0121a00382e0560b41481b", + "0x3300949a01c039810123c80486800e01cc080904c0243400700e60404823", + "0x482d012938038073020241480908a01c0398101206c04a4c00e01cc0809", + "0xc080900e0246a00700e6040482e012114038073020241580949c01c03981", + "0x768091cc01c080093020240800905201cb3809302024b380903601c03809", + "0x48e61da3500816700e0513c0071cc024c08091cc024b38071da024c0809", + "0xc080900e370038ff0129e41a0093023707f00913601c7f0fb0603e4b3981", + "0x6e0070700253d1010126046e100012830039000126040483401247003807", + "0x480731601c820093020240382000e01cc08092020242500700e60404807", + "0x13007078024c080920a4106e0ed00e41404981012414048e600e41404981", + "0x208093020241f8094f601c1f8093020241e1081b83c80390801260404807", + "0xc08091f602414807060024c08090600240d8071f2024c08091f20246a007", + "0x398101201c6e0070823ec180f92ce02420809302024208094f801c7d809", + "0x8a009302024878094fc01c8780930202403a7d00e01cc080907002425007", + "0xc08090600240d8071f2024c08091f20246a007094024c08092280253f807", + "0x180f92ce02425009302024250094f801c7d8093020247d80905201c18009", + "0xc08091f20246a00708a024c08091fe0253d80700e604048071b801c250fb", + "0x228094f801c7d8093020247d80905201c180093020241800903601c7c809", + "0xc08091a80245980700e604048071b801c228fb0603e4b380908a024c0809", + "0x496701206c038070126040480701235003847012604049650129ec03807", + "0x396701211c0498101211c04a7c00e040049810120400482900e59c04981", + "0xc080902002417007020024c080900e0ac03807302024038f800e11c08167", + "0xc080900e370038182ca37140015028370c08dc020024038d41f201c08009", + "0xb200943601c0a0093020240a0091a801cb21671b8604049670128e403807", + "0x4a8200e01cc08092ce0243400700e604048071b801c0e80950201cc08dc", + "0x73009302024118093c001c11809302024100dc1b877c03820012604048d4", + "0xc08091cc024f080702a024c080902a0240d807028024c08090280246a007", + "0xb380700e6040481d01287c03807302024038dc00e3980a8141a802473009", + "0x49811b80980487700e098768dc3020246e0090ea01c6e0093020246e009", + "0x3a1000e06c049810123c86a0dc1da01c0398101201c6e0070cc025418f2", + "0x3814012604048140123500382d012604048292ce3710d007052024c0809", + "0x498101206c0486100e3b4049810123b40496700e054049810120540481b", + "0x1702b1a86040482d0363b40a8140207740382d0126040482d0123980381b", + "0x490800e01cc08092ce0243400700e604048071b801c7c82e056350048f9", + "0x38fb012604048301da370ef807060024c08090cc024ef00700e604048d4", + "0x49810120540481b00e05004981012050048d400e3f8049810123ec049e0", + "0x3400700e604048071b801c7f015028350048fe012604048fe01278403815", + "0x382000e01cc08091b80242280700e604048d401242003807302024b3809", + "0x6e0ed00e3fc049810123fc048e600e3fc0498101201c8a007068024c0809", + "0x1c009302024801011b83c8039010126040480704c01c800093020247f834", + "0xc08090300240d8072ca024c08092ca0246a007208024c080907002542007", + "0x6e1810120400483c00e4100c1651a802482009302024820093c201c0c009", + "0x480701235003965012604048150120fc038073020240a00921001c0a814", + "0x48e600e370049810123700482900e024049810120240481b00e01c04981", + "0xb29671a8370048070289e0039650126040496501259c0396701260404967", + "0x48071b801c7300950a08c049811b80800489b00e0800e96403059cc0809", + "0x38f2012a18130093023707680941801c768093020241180923801c03981", + "0x48e600e1980498101201d0700700e6040482601212803807302024038dc", + "0x48f201212803807302024038dc00e01d4380900e3cc0381b01260404866", + "0x481b0129f80381b0126040482901239803829012604048074fa01c03981", + "0x481b00e06004981012060048d400e0ac049810120b404a7f00e0b404981", + "0x482b0126040482b0129f00381d0126040481d0120a40396401260404964", + "0x48d400e0b80498101239804a7b00e01cc080900e3700382b03a5900c167", + "0x381d0126040481d0120a4039640126040496401206c0381801260404818", + "0x3967012604048d4012a200382e03a5900c1670120b8049810120b804a7c", + "0x49810123700482900e024049810120240481b00e01c0498101201c048d4", + "0x396502a050081670125940a81402059cc08092ce370048072cea24038dc", + "0xc080900e370038182ca0546a28b028040b38d42ce6046e0dc01201c6a28a", + "0x6a00903601c0e809302024b200951a01cb20093020240a0101b8a3003807", + "0x6a00903a024c080903a025470072ce024c08092ce024148071a8024c0809", + "0x481501206c0382001260404818012a3c03807302024038dc00e074b38d4", + "0xa8d40120800498101208004a8e00e594049810125940482900e05404981", + "0x48090123980380701260404807012a38038090126040480752001c10165", + "0x6e18101201c049f500e370048091b8024c080901201c6e29100e02404981", + "0x6e0dc52401c04809302024048090c201c6e0093020246e0094a801c6a0dc", + "0x38d4012604048d4012950038073020240800909401c081671b860404809", + "0x381502837004815028370c08092ce3506e29200e59c0498101259c04861", + "0xc080901201c6e29300e024049810120240496700e01c0498101201c048d4", + "0x3807302024038dc00e05004a95020024c08dc2ce0254a0072ce3506e0d4", + "0xc08091a83706e29300e350049810123500496700e37004981012370048d4", + "0x3807302024038dc00e07404a962c8024c08dc0300254a0070305940a8d4", + "0xc080902a0246a007046024c08090400254b807040024c08092c80406e28c", + "0xb28151a8024118093020241180953001cb2809302024b28092ce01c0a809", + "0x730093020240e80953201c0398101204004a6100e01cc080900e37003823", + "0xc08091cc0254c0072ca024c08092ca024b380702a024c080902a0246a007", + "0x38ed01260404814012a6403807302024038dc00e398b28151a802473009", + "0x49810123b404a9800e350049810123500496700e37004981012370048d4", + "0xc080900e370038dc012a6c048093023700380953401c768d41b8350048ed", + "0x4967012a7803967012604048d4012a74038d401260404809012a7003807", + "0x6e0f200e0400498101201c1300700e604048071b801cb380901259c04981", + "0xa8093020240a80953c01c0a8093020240a00953e01c0a0093020246e010", + "0x480903601c0a8141b86040496701242403807302024038f800e05404809", + "0xb28d43020240a8d4012350550071a8024c08091a802414807012024c0809", + "0x48ac00e01cc080900e37003820012a800e809302370b200920e01cb2018", + "0x38ed1cc370c080904602550807046024c08090280254400700e6040481d", + "0x49810120600482900e594049810125940481b00e01c0498101201c048d4", + "0x49811b806c0488300e06c330f204c59cc08091da060b28072cea2403818", + "0x130091a801c158093020241480910a01c0398101201c6e00705a02551029", + "0x148071b8024c08091b8024970071e4024c08091e40240d80704c024c0809", + "0x158661b83c81301054601c15809302024158090d201c3300930202433009", + "0x38dc00e3fc04aa4068024c08dc1fc024368071fc3ec180f905c040c0809", + "0x48fb00e4040498101240004aa500e400049810120d00483a00e01cc0809", + "0x38fb012604048fb0120a4038f9012604048f901206c03838012604048e6", + "0x102007078414820d4302024808381f63e4b3aa700e4040498101240404aa6", + "0x6e18101242004a0600e01cc080900e3700383f012aa0840093023701e009", + "0x490401206c0382e0126040482e012350038073020248780909401c87841", + "0x486900e414049810124140482900e0c0049810120c00492e00e41004981", + "0x8a84708a1288a0103020240804120a0c08202e028aa40381001260404810", + "0x15500700e6040481001220803807302024038dc00e4542384509445008009", + "0x820093020248200903601c17009302024170091a801c258093020241f809", + "0xc08090960255580720a024c080920a02414807060024c080906002497007", + "0x39810120400488200e01cc080900e3700384b20a0c08202e02002425809", + "0x49810120b8048d400e194049810123fc04aaa00e01cc08091cc02556007", + "0x48fb0120a403830012604048300124b8038f9012604048f901206c0382e", + "0x48071b801c328fb0603e4170100121940498101219404aab00e3ec04981", + "0xc080905a0255500700e604048e6012ab0038073020240800910401c03981", + "0x6e00925c01c790093020247900903601c13009302024130091a801c8b809", + "0x800922e024c080922e025558070cc024c08090cc024148071b8024c0809", + "0xa00916601c039810120400488200e01cc080900e370039170cc37079026", + "0x481b00e01c0498101201c048d400e13c0498101208004aaa00e01cc0809", + "0x3818012604048180120a4038dc012604048dc0124b80396501260404965", + "0xb38093020246a00951001c278181b85940381001213c0498101213c04aab", + "0xc08091b802414807012024c08090120240d80700e024c080900e0246a007", + "0xb2815028040b38092ca0540a0102ce604049671b80240396751201c6e009", + "0x48093020240480903601c03809302024038091a801c0398101201c7c007", + "0xc0809020024348071a8024c08091a8024148071b8024c08091b802497007", + "0xa0100125900c16502a05008181012040b38d41b80240381440601c08009", + "0x38073020240480916601c6a0dc012350c080900e024540072c8060b2815", + "0xc08090200251c807028024c080900eab4038dc01202403981012350048f5", + "0x10d8072ca024c08092ca024730072ca024c08090280546e21a00e054080dc", + "0x3807302024080090d001c0398101201c6e00703002557007302370b2809", + "0x381d01260404964012898039640126040480721601c0398101259c048b5", + "0x498101201c048d400e08c049810120800498d00e0800498101207404aaf", + "0x48d40120a4038dc012604048dc012478038090126040480901206c03807", + "0x48071b801c118d41b80240381001208c0498101208c04ab000e35004981", + "0x4807012350038e601260404967012ac4038073020240c00943e01c03981", + "0x482900e370049810123700491e00e024049810120240481b00e01c04981", + "0x80e61a837004807028ac80381001260404810012398038d4012604048d4", + "0xb280930202403ab300e06c330f204c3b408009036198790261da040c0809", + "0x483400e0600498101201c7f00700e604048071f001c0398101201c25807", + "0xd80700e024c080900e0246a00703a024c080900ead00396401260404818", + "0xb3809302024b380905201c6e0093020246e00923c01c0480930202404809", + "0x118200206040481d2c859c6e00900e0515a80703a024c080903a02473007", + "0x4ab704c024c08dc1da0255b00702a024c080902a5946e18c00e3b473015", + "0x10009302024100091a801c0398101209804ab800e01cc080900e370038f2", + "0xc08091cc024148071a8024c08091a802497007046024c08090460240d807", + "0x8181012050080e61a808c1001455201c0a0093020240a0090d201c73009", + "0x381b0126040481b01206c03866012604048660123500382b05a0a40d866", + "0x49810120b40482900e0a4049810120a40492e00e054049810120540491e", + "0xc080900e3700382b05a0a40a81b0cc0500482b0126040482b012aac0382d", + "0x49810123c804aaa00e01cc08090200245980700e6040481401220803807", + "0x4815012478038230126040482301206c03820012604048200123500382e", + "0x4aab00e398049810123980482900e350049810123500492e00e05404981", + "0x38070126040480701206c0382e1cc3500a8230400500482e0126040482e", + "0xb380957401cb38d41b8350c080901201c6e2b900e0240498101202404829", + "0x381501260404810012af003807302024038dc00e05004abb020024c08dc", + "0x4abf00e08c1001d2c80600818101259404abe00e5940498101205404abd", + "0x118090d001c0398101208004a4b00e01cc08092c80256000700e60404818", + "0x481b00e3b40498101239804ac200e3980498101207404ac100e01cc0809", + "0x48ed012604048ed012b0c038d4012604048d40120a4038dc012604048dc", + "0x6e00903601c130093020240a00958801c0398101201c6e0071da3506e0d4", + "0x6a00904c024c080904c025618071a8024c08091a8024148071b8024c0809", + "0x6e2b900e024049810120240482900e01c0498101201c0481b00e0986a0dc", + "0x38dc00e05004ac5020024c08dc2ce0255d0072ce3506e0d430202404807", + "0x4abe00e5940498101205404abd00e0540498101204004abc00e01cc0809", + "0xc08092c80256000700e60404818012afc03823040074b201802060404965", + "0x498101208004ac100e01cc08090460243400700e6040481d01292c03807", + "0x48d40120a4038dc012604048dc01206c038ed012604048e6012b08038e6", + "0x398101201c6e0071da3506e0d40123b4049810123b404ac300e35004981", + "0xc08091a8024148071b8024c08091b80240d80704c024c080902802562007", + "0x480930202403a9000e0986a0dc1a8024130093020241300958601c6a009", + "0x480900e370c5007012024c08090120247300700e024c080900e02518807", + "0xb38093020246a00958c01c6a0093020246a00946c01c6e00901237004981", + "0xa809302024038fe00e05004981012040048fb00e0400498101201c18007", + "0x48182ca0506a10000e0600498101201c7f8072ca024c080902a0241a007", + "0x482900e01c0498101201c0481b00e0740498101259c04ac700e59004981", + "0xc080903a590048072ceb240381d0126040481d012b200380901260404809", + "0x3807302024038dc00e09804aca1da024c08dc1cc024820071cc08c100d4", + "0x33009302024790dc1b8b2c038f20126040480721601c039810123b404905", + "0xc080904602414807040024c08090400240d807036024c08090cc02566007", + "0x3807302024038dc00e06c118201a80240d8093020240d80945a01c11809", + "0x100093020241000903601c148093020241300945801c03981012370048f5", + "0x38290460806a009052024c080905202516807046024c080904602414807", + "0xc080901201c6e2cd00e024049810120240496700e01c0498101201c048d4", + "0x3807302024038dc00e05004acf020024c08dc2ce025670072ce3506e0d4", + "0xc08dc2ca0243b8072ca0546e1810123500487500e3500498101235004967", + "0x496700e37004981012370048d400e01cc080900e37003964012b400c009", + "0x49811b808004ad200e0800e8dc3020240a8dc1b8b440381501260404815", + "0x4ad500e098768dc302024118095a801c0398101201c6e0071cc02569823", + "0xc08091e4060080d45ae01c0398101201c6e0070cc0256b0f20126046e026", + "0x4ad900e0b4049810120a4768dc31201c148093020240d8095b001c0d809", + "0x482b0126040482b012b680381d0126040481d0123500382b0126040482d", + "0xc08090300243400700e6040481001292c03807302024038dc00e0ac0e8dc", + "0x7c8095b201c7c809302024170ed1b86240382e01260404866012b6c03807", + "0x6e009060024c08090600256d00703a024c080903a0246a007060024c0809", + "0x398101204004a4b00e01cc08090300243400700e604048071b801c1801d", + "0xc08091f60256d00703a024c080903a0246a0071f6024c08091cc0256e007", + "0x4adb00e01cc08090200252580700e604048071b801c7d81d1b80247d809", + "0x7f8093020241a0095b201c1a0093020247f0151b8624038fe01260404964", + "0x6e0071fe3706e0091fe024c08091fe0256d0071b8024c08091b80246a007", + "0x3901012604049001a8370c4807200024c08090280256d80700e60404807", + "0x49810120e004ada00e37004981012370048d400e0e00498101240404ad9", + "0x3809012604048090120a4038070126040480701206c038381b837004838", + "0x3814012b7408009302370b380957401cb38d41b8350c080901201c6e2b9", + "0x396501260404815012af40381501260404810012af003807302024038dc", + "0xe80949601c0398101206004abf00e08c1001d2c80600818101259404abe", + "0x4964012b7803807302024118090d001c0398101208004a4b00e01cc0809", + "0x482900e370049810123700481b00e3b40498101239804adf00e39804981", + "0x48071b801c768d41b8350048ed012604048ed012620038d4012604048d4", + "0x6a00905201c6e0093020246e00903601c130093020240a0095c001c03981", + "0x48071b8b84038261a83706a00904c024c080904c024c40071a8024c0809", + "0x498101201d2800700e604048071b801c0a0102ce351710d41b8370c08dc", + "0xb28094a801c6e0093020246e0091a801cb28093020240a8d41b894803815", + "0x49810120400a0dc4a401c0398101201c6e0072ca3706e0092ca024c0809", + "0x38182ce3700481801260404818012950039670126040496701235003818", + "0x4967012b9003814020370c08091b8025718072ce3506e18101202404ae3", + "0x6e1811b85940a8071a8b9403965028370c08090280257200702a59c6e181", + "0x48d400e01cc08092c80252600700e604048071b801c1001d1b8b98b2018", + "0x3807302024038dc00e01d740073023700a1671b8b9c0381801260404818", + "0x114007046024c080900e42c038073020246a00949801c0398101204004a4c", + "0x730093020247300923001c0c0093020240c0091a801c7300930202411809", + "0x1748261da370c08dc0203500c0d45ca01c0398101201c6e0071cc0606e009", + "0x498101201c8580700e6040482601293003807302024038dc00e198790dc", + "0x4829012460038ed012604048ed012350038290126040481b0128a00381b", + "0x8580700e6040486601293003807302024038dc00e0a4768dc0120a404981", + "0x38f2012604048f20123500382b0126040482d0128980382d01260404807", + "0x482001293003807302024038dc00e0ac790dc0120ac049810120ac04918", + "0xc08091a80252600700e6040481001293003807302024b380949801c03981", + "0x49810120b804a2600e0b80498101201c8580700e6040481401293003807", + "0x38f903a370048f9012604048f90124600381d0126040481d012350038f9", + "0x498101237004a5400e0240498101202404a5400e01c0498101201c048d4", + "0x4aeb020024c08dc2ce0254a0072ce3506e181012370048071a8ba8038dc", + "0x498101205404aed00e0540498101204004aec00e01cc080900e37003814", + "0x39651a83700496501260404965012bb8038d4012604048d401235003965", + "0x3aef00e0600498101201c1000700e6040481401212803807302024038dc", + "0x381d01260404964030370768072c8024c08092c8024730072c8024c0809", + "0x498101208c04af000e08c04981012074100dc1e401c1000930202403826", + "0x38e61a8370048e6012604048e6012bb8038d4012604048d4012350038e6", + "0xd80700e024c080900e0246a0072ce024c080900ebc403807302024038f8", + "0x6a0093020246a0090aa01c6e0093020246e00905201c0480930202404809", + "0xa81402059cc08092ce3506e00900e041798072ce024c08092ce02579007", + "0xc0095ec01c0398101201c6e0072c80257a8180126046e165012bd003965", + "0x17b80700e60404823012128038073020240e80923e01c1182003a350c0809", + "0x8009302024080091a801c76809302024730095f001c7300930202410009", + "0xc08091da0252f80702a024c080902a02414807028024c08090280240d807", + "0x13009302024b20094bc01c0398101201c6e0071da0540a0102ce02476809", + "0xc080902a02414807028024c08090280240d807020024c08090200246a007", + "0x398101201c7c00704c0540a0102ce02413009302024130094be01c0a809", + "0x48100120540381001260404967012be8039671b8370c08091b80257c807", + "0x48e600e59404981012054048e200e0540498101205004afb00e05004981", + "0xb20093020246e0095f401c0c009302024b28d41b83b40396501260404965", + "0xc08092c8024b3807012024c08090120240d80700e024c080900e0246a007", + "0x1001d1a8604048182c8024039675f801c0c0093020240c0090c201cb2009", + "0x3809302024038091a801c0a0093020246a00951001c1182003a35004823", + "0x6e00900e59d448071b8024c08091b802414807012024c08090120240d807", + "0x38dc00e08004afd03a024c08dc2c8024418072c8060b28152ce60404814", + "0x481b00e05404981012054048d400e08c049810120740488500e01cc0809", + "0x39670126040496701239803818012604048180120a40396501260404965", + "0xb38182ca0540a2fe00e040049810120400496700e08c0498101208c04869", + "0x3807302024038dc00e3c8130ed1cc59c048f204c3b47316730202408023", + "0x386601260404820012bfc03807302024b38090d001c0398101204004845", + "0x49810120600482900e594049810125940481b00e05404981012054048d4", + "0x398101235004aac00e1980c16502a59c0486601260404866012ac003818", + "0xc08090200258100702059c6e18101259c04b0100e59c0498101201d80007", + "0xb280960a01cb28151b860404815012c10038150126040480760601c0a009", + "0x6a1811b8050b28dc01259d83807028024c0809028025830072ca024c0809", + "0x38ed0126040480761201c0398101201c6e0071cc08c100d4610074b2018", + "0xc08090300240d80704c024c08091da59c6e30b00e59c0498101259c04b0a", + "0xe8091cc01c130093020241300960c01c0a8093020240a80960a01c0c009", + "0x1582d0523518601b0cc3c86a1811b80980a96403059d8380703a024c0809", + "0x498101201c048d400e0b80498101206c0e8dc61a01c0398101201c6e007", + "0x482e012c3803866012604048660120a4038f2012604048f201206c03807", + "0x6e0fe01220c038fe1f60c07c967302024170661e401cb3b0f00e0b804981", + "0x188807200024c08090680244280700e604048071b801c7f8096200d004981", + "0x820093020241800903601c1c0093020247c8091a801c8080930202480009", + "0x3b1301201c79807078024c08092020258900720a024c08091f602414807", + "0x7c8093020247c8091a801c840093020247f80962801c0398101201c6e007", + "0xc08092100258a8071f6024c08091f602414807060024c08090600240d807", + "0x38073020240e8090d001c0398101201c6e0072103ec180f92ce02484009", + "0x49810120ac0486100e104049810120b40482900e0fc049810120a40481b", + "0x18b80700e6040481501293803807302024038dc00e01d8b00900e3cc0390f", + "0x3841012604048230120a40383f0126040482001206c03807302024b3809", + "0x498101201c048d400e4500498101243c04b1800e43c0498101239804861", + "0x4914012c4803905012604048410120a4039040126040483f01206c03838", + "0x481b00e0e0049810120e0048d400e128049810120f004b1900e0f004981", + "0x484a0126040484a012c5403905012604049050120a40390401260404904", + "0x398101201c6e0071a80258d8dc0126046e007012c680384a20a4101c167", + "0x498101259c04b1d00e59c0498101237004b1c00e01cc080901202434007", + "0x6a00921001c0398101201c6e0070200240481001260404810012c7803810", + "0x382600e054049810120240a0dc1da01c0a0093020240382000e01cc0809", + "0x396401260404818012c7c03818012604048152ca370790072ca024c0809", + "0x4ae300e370038dc302024038094a601cb20090125900498101259004b1e", + "0x3810012604048d4012c8003807302024b380949801cb38d41b8604048dc", + "0xc080900e0257180702a024c08090280246e0ed00e0500498101204004992", + "0xb200932401cb20093020240c00964001c0398101259404a4c00e060b28dc", + "0x30807046024c080900e42c038200126040481d02a3707680703a024c0809", + "0x6e0092ca01c6e0093020240480902a01c118201b80241000930202410009", + "0xa009302024b380917001c0398101201c6e007020025909671a8370c08dc", + "0x3b2201201c798072ca024c08090280245d00702a024c08091a80247a007", + "0x3964012604048180122f4038180126040480721601c0398101201c6e007", + "0x6e18101205404b2300e59404981012590048ba00e05404981012040048f4", + "0xb28091e201c10009302024100092ce01c100093020240e80907e01c0e815", + "0x38ed012604048230122fc03807302024038dc00e39804b24046024c08dc", + "0x4981012098048e600e01c0498101201c048d400e098049810123b4048ee", + "0x1480964e06c049811b819804b2600e198790dc302024130071b8c9403826", + "0x1582d1b86046e015012594038073020241000908a01c0398101201c6e007", + "0x482d0123d0038f90126040482b0122e003807302024038dc00e0b804b28", + "0xc080900e37003807652024038f300e3ec049810123e4048ba00e0c004981", + "0xc080905c0247a007068024c08091fc0245e8071fc024c080900e42c03807", + "0x7f8092ce01c7f8093020241800907e01c7d8093020241a00917401c18009", + "0x3807302024038dc00e40404b2a200024c08dc1f6024788071fe024c0809", + "0x49810123c8048d400e410049810120e0048ee00e0e004981012400048bf", + "0x4b2600e0f0828dc302024820f21b8c940390401260404904012398038f2", + "0x49810124200d8dc4a401c0398101201c6e00707e025959080126046e03c", + "0x48ff01259c03905012604049050123500390f01260404841012cb003841", + "0x398101201c6e00721e3fc828d401243c0498101243c04b2d00e3fc04981", + "0x49810120fc04b2e00e45004981012414048d400e01cc080903602526007", + "0x12600700e6040490101212803807302024038dc00e01d9780900e3cc0384a", + "0x197007228024c08091e40246a00708a024c080900e42c038073020240d809", + "0x7f8093020247f8092ce01c238093020242500966001c2500930202422809", + "0x481800e01cc080900e370038471fe4506a00908e024c080908e02596807", + "0x79807096024c08090520259700722a024c08091e40246a00700e60404815", + "0x4815012060038073020247300909401c0398101201c6e00700ecc404807", + "0x4865012cb80391501260404807012350038650126040480721601c03981", + "0x4b2d00e080049810120800496700e45c0498101212c04b3000e12c04981", + "0xc080900e12c038140126040480722a01c8b82022a3500491701260404917", + "0x49810123500482900e024049810120240481b00e01cc080900e3e003807", + "0x39650200546a18101259c6a0091a879403967012604049670121a4038d4", + "0xc08dc030024f3807020024c08090200506e12100e06004981012594049e6", + "0x49f500e08004981012590049e900e01cc080900e3700381d012cc8b2009", + "0x790261b860404823012b8c038ed0126040480704001c730231b860404820", + "0x48f20126480381b012604048661da370768070cc024c080904c024c9007", + "0x382e056370c08091cc0257180705a024c080905206c6e0ed00e0a404981", + "0xc080905c024c9007060024c08091f20b46e0ed00e3e4049810120ac04992", + "0x840071fe0d06e1810123f80483c00e3f8049810123ec180dc1da01c7d809", + "0x38070126040480701235003900012604048ff0120fc038073020241a009", + "0x49810124000496700e370049810123700492e00e054049810120540481b", + "0x4981012404048d400e4148203820259cc08092003700a8072ceccc03900", + "0x48100120a403904012604049040124b8038380126040483801206c03901", + "0x48071b801c828102080e0808100124140498101241404a7c00e04004981", + "0xa80903601c03809302024038091a801c1e0093020240e8094f601c03981", + "0x13e007020024c0809020024148071b8024c08091b80249700702a024c0809", + "0x38d4012604048d4012a980383c0203700a8070200241e0093020241e009", + "0xa009302024080091f601c080093020240383000e59c0498101235004b34", + "0xc009302024038ff00e594049810120540483400e0540498101201c7f007", + "0x380903601c0e809302024b380966a01cb20093020240c16502835080007", + "0x16480703a024c080903a02564007012024c08090120241480700e024c0809", + "0x1300966c3b4049811b83980490400e398118201a86040481d2c802403967", + "0x19b8071e4024c080900e42c038073020247680920a01c0398101201c6e007", + "0x49810120800481b00e06c0498101219804b3800e198049810123c86e0dc", + "0xd8230403500481b0126040481b012aac03823012604048230120a403820", + "0x382901260404826012aa8038073020246e00916601c0398101201c6e007", + "0x49810120a404aab00e08c0498101208c0482900e080049810120800481b", + "0x6a007028024c08092ce0254400700e604048071f001c1482304035004829", + "0x6a0093020246a00905201c048093020240480903601c0380930202403809", + "0x4807020ce803815012604048150121a403815020370c08090200259c807", + "0x3823012cf0100093023700e80967601c0e964030594b39810120540a0d4", + "0x38180126040481801206c039650126040496501235003807302024038dc", + "0x49810120400486900e590049810125900482900e370049810123700492e", + "0x6e0660121b4038661e4098768e6020604048102c83700c165020a8c03810", + "0x382b05a370c08090400259f00700e604048071b801c1480967a06c04981", + "0x7c8093020241700967e01c170093020240d80907401c039810120ac0484a", + "0xc08091e4024148071da024c08091da0240d807060024c080905a0247d807", + "0x7f0fb1a8604048f90603c87696768201c7c8093020247c80968001c79009", + "0x48260124b8038fb012604048fb01206c038e6012604048e601235003834", + "0x730100120d0049810120d004aab00e3f8049810123f80482900e09804981", + "0x4829012aa8038073020241000968401c0398101201c6e0070683f8130fb", + "0x492e00e3b4049810123b40481b00e39804981012398048d400e3fc04981", + "0x48ff012604048ff012aac038f2012604048f20120a40382601260404826", + "0x4aaa00e01cc08090200244100700e604048071b801c7f8f204c3b473010", + "0x38180126040481801206c03965012604049650123500390001260404823", + "0x498101240004aab00e590049810125900482900e370049810123700492e", + "0xc08091b80248f00700e024c080900e0246a0072005906e0182ca04004900", + "0xa8141a8604048102ce3700396768601c08009302024080091cc01c6e009", + "0xc08092c8025828072c8024c080900ec0c0381801260404965012c0803965", + "0x6e00704c3b4730d468808c1001d1a86046e0182c83500496760e01cb2009", + "0x1480703a024c080903a0240d807046024c08090460247300700e60404807", + "0x398101201c6e0071e4025a28073023701180943601c1000930202410009", + "0x498101206c0491800e06c0498101219804a2600e1980498101201c85807", + "0x8580700e604048f201287c03807302024038dc00e01da300900e3cc03829", + "0x38290126040482b0124600382b0126040482d0128a00382d01260404807", + "0x49810120740481b00e3e4049810120b804b4700e0b8049810120a404a29", + "0x1a480900e3cc038fe012604048f9012d20038fb012604048200120a403830", + "0x49810123980481b00e0d00498101209804b4a00e01cc080900e37003807", + "0x48fe012d2c038fe01260404834012d20038fb012604048ed0120a403830", + "0x491e00e0c0049810120c00481b00e05004981012050048d400e3fc04981", + "0x48ff012604048ff012ac0038fb012604048fb0120a40381501260404815", + "0x381501260404814012898038140126040480721601c7f8fb02a0c00a010", + "0x49810120240481b00e01c0498101201c048d400e5940498101259c04ab1", + "0x4810012398038d4012604048d40120a4038dc012604048dc01247803809", + "0x48150205946a0dc01201c0ab4c00e054049810120540491800e04004981", + "0x48071b801c7680969c398049811b808c04b4d00e08c1001d2c806008181", + "0x480721601c039810123c80484a00e3c8130dc3020247300969e01c03981", + "0x1a8807052024c08090cc06c6e35000e06c049810120980483400e19804981", + "0xb2009302024b200903601c0c0093020240c0091a801c1680930202414809", + "0xc080905a025a9007040024c08090400241480703a024c080903a0248f007", + "0x49810123b404b5300e01cc080900e3700382d040074b201802002416809", + "0x481d012478039640126040496401206c03818012604048180123500382b", + "0xc0100120ac049810120ac04b5200e080049810120800482900e07404981", + "0x6e00702a050080d46aa59c6a0dc1a86046e00900e371aa0070560800e964", + "0x14807030024c08091b80240d8072ca024c08092ce025ab00700e60404807", + "0x6e00700ed60048071e601c0e809302024b28096ae01cb20093020246a009", + "0x14807030024c08090200240d807040024c080902a025ac80700e60404807", + "0x118093020240e8096b401c0e809302024100096ae01cb20093020240a009", + "0xc0809046025ad8072c8024c08092c802414807030024c08090300240d807", + "0x48071b801c6a0096ba370049811b801c04b5c00e08cb20181a802411809", + "0x496701287803967012604048dc01287403807302024048090d001c03981", + "0x8400700e604048071b801c08009012040049810120400498400e04004981", + "0x38150126040480902837076807028024c080900e080038073020246a009", + "0x498101206004a2100e06004981012054b28dc1e401cb280930202403826", + "0x1af007012024c080900e024ca0072c8024049640126040496401261003964", + "0x48d4012d7c038d4012604048d4012b20038090120240480930202404809", + "0x4967012d80038140126040480704001c080093020240382000e59c04981", + "0x486100e5940498101259404ac800e01cc080902a025b08072ca0546e181", + "0x6a181012050081651a8d8803814012604048140121840381001260404810", + "0x490800e08c100dc3020240c00907801c039810120740484a00e074b2018", + "0x38261da370c08092c80241e0071cc024c08090460241f80700e60404820", + "0x73009302024730092ce01c790093020241300907e01c039810123b404908", + "0x6a3640361986e1811b83c87300900e59db18071e4024c08091e4024b3807", + "0xc080905c0251800705c024c080900e42c03807302024038dc00e0ac16829", + "0x7c80946201c7d8093020240d80905201c180093020243300903601c7c809", + "0xc0809056024c180700e604048071b801c03b6501201c798071fc024c0809", + "0x1a00946201c7d8093020241680905201c180093020241480903601c1a009", + "0x4b66200024c08dc1fe024838071fe024c08091fc024c98071fc024c0809", + "0xc08090703706e0fc00e0e00498101240004b6700e01cc080900e37003901", + "0x7d80905201c180093020241800903601c828093020248200916201c82009", + "0xc080900e370039051f60c06a00920a024c080920a0247d0071f6024c0809", + "0xc08090600240d807078024c08092020247b00700e604048dc01215003807", + "0x7d8301a80241e0093020241e0091f401c7d8093020247d80905201c18009", + "0x6a0090ee01c6a0dc1b8604048090121d4038090126040480901259c0383c", + "0xa0dc302370b38071b8da403807302024038dc00e04004b682ce024c08dc", + "0xa0091a801c0c0093020240a8096d601c0398101201c6e0072ca025b5015", + "0x6a009030024c0809030025b60071b8024c08091b8024b3807028024c0809", + "0xc08092c8025b68072c8024c080900e42c03807302024038dc00e0606e014", + "0xe8096d801c6e0093020246e0092ce01cb2809302024b28091a801c0e809", + "0x498101204004b6d00e01cc080900e3700381d1b85946a00903a024c0809", + "0x4820012db0038dc012604048dc01259c038070126040480701235003820", + "0xc08dc1b8024b28071b8024c08090120240a807040370038d401208004981", + "0x7a007028024c08092ce0245c00700e604048071b801c080096dc59c6a0dc", + "0x6e00700edbc048071e601cb28093020240a00917401c0a8093020246a009", + "0x48f400e59004981012060048bd00e0600498101201c8580700e60404807", + "0xe8151b860404815012c8c03965012604049640122e80381501260404810", + "0xc08dc2ca02478807040024c0809040024b3807040024c080903a0241f807", + "0x48ee00e3b40498101208c048bf00e01cc080900e370038e6012dc011809", + "0x382601260404826012398038070126040480701235003826012604048ed", + "0x6e007052025b981b0126046e066012dc8038661e4370c080904c01c6e371", + "0xa80964601c1680930202403b0300e01cc08090400242280700e60404807", + "0x168093020241680960a01c1701b1b86040481b012c100382b02a370c0809", + "0x3807302024038dc00e3ec04b750603e46e1811b80b81682b1e459dba007", + "0xc08091f20246a007068024c08091fc0257d8071fc0546e18101205404b23", + "0x4b0500e3fc0d8dc3020240d80960801c1a0093020241a00960a01c7c809", + "0xc08090600247a0072024006e1810123fc1a0f91a8dd8038ff012604048ff", + "0x4b7900e01cc080900e37003904012de01c009302370808096ee01c18009", + "0x6e00707e025bd108078370c08dc20a06c0a9002cedd00390501260404838", + "0x1bd80721e024c08092100241f807082024c08090600241f80700e60404807", + "0x498101212804b7d00e12804981012450878dc6f801c8a00930202420809", + "0x384507837004845012604048450126440383c0126040483c01235003845", + "0x3b7e00e11c0498101201c1000700e6040483001206003807302024038dc", + "0x384b0126040491508e3707680722a024c080922a0247300722a024c0809", + "0x498101245c04b7f00e45c0498101212c328dc1e401c3280930202403826", + "0x384f07e3700484f0126040484f0126440383f0126040483f0123500384f", + "0x481800e01cc08090360252700700e6040483001206003807302024038dc", + "0xc8807200024c08092000246a007236024c0809208025bf80700e60404815", + "0xc08090360252700700e604048071b801c8d9001b80248d8093020248d809", + "0x8f80930202403b7e00e4740498101201c1000700e6040481501206003807", + "0xc080900e098039200126040491f23a3707680723e024c080923e02473007", + "0x48d400e15c0498101215404b7f00e154049810124802a0dc1e401c2a009", + "0xc080900e370038571f63700485701260404857012644038fb012604048fb", + "0x4921040371be007242024c0809052025c000700e6040481501206003807", + "0x499100e3c8049810123c8048d400e16c0498101216404b7d00e16404981", + "0x39810123980484a00e01cc080900e3700385b1e43700485b0126040485b", + "0x2f0093020249680970001c968093020240390b00e01cc080902a0240c007", + "0x4807012350038610126040492f012df40392f0126040485e040371be007", + "0x498101201c048d400e184038dc012184049810121840499100e01c04981", + "0x48071a8e04038dc012604048dc012950038090126040480901295003807", + "0x49811b805004a0c00e050080dc302024b380970401cb38d41b8604048dc", + "0x4810012cb0038073020240a80909401c0398101201c6e0072ca025c1815", + "0x6a0dc0120600498101206004b2d00e35004981012350048d400e06004981", + "0x3807302024080094c201c039810125940484a00e01cc080900e37003818", + "0x6a0093020246a0091a801c0e809302024b200966001cb20093020240390b", + "0x480705601c0398101201c7c00703a3506e00903a024c080903a02596807", + "0xa8141b86046e01001201c6a0f900e040049810120400482e00e04004981", + "0xc08090280246a00700e604048074ac01c0398101201c6e0070305946e384", + "0x1c380700e604048071b801c1000970c074b20dc3023706a00970a01c0a009", + "0x76809302024b20090aa01c73009302024118095b001c118093020240e809", + "0x8580700e604048071b801c03b8901201c7980704c024c08091cc025c4007", + "0x38ed0126040482001215403866012604048f2012b6c038f201260404807", + "0x48071b801c1480971406c049811b809804a3f00e0980498101219804b88", + "0xd80971601c6e0093020246e00905201c0a8093020240a80903601c03981", + "0xc08dc05c025c680705c0ac168d43020240d8dc02a351c6007036024c0809", + "0x48f9012e3c03807302024038f800e01cc080900e37003830012e387c809", + "0xd807028024c08090280246a0071fc024c08091f659c6e39000e3ec04981", + "0x76809302024768090aa01c158093020241580905201c1680930202416809", + "0x800ff06859cc08091fc3b41582d028041798071fc024c08091fc02579007", + "0x491f00e01cc080900e3e003807302024038dc00e404800ff06859c04901", + "0x48d400e0e0049810120c004b9100e01cc08092ce0242f00700e604048ed", + "0x382b0126040482b0120a40382d0126040482d01206c0381401260404814", + "0x38f800e01cc080900e370038380560b40a1670120e0049810120e004b92", + "0xb38ed1a8640039040126040480721601c039810120a40484a00e01cc0809", + "0x3814012604048140123500383c01260404905012e4c0390501260404904", + "0x49810120f004b9200e370049810123700482900e054049810120540481b", + "0x2f00700e604048d401247c03807302024038dc00e0f06e01502859c0483c", + "0x48e600e0fc0498101201c8a007210024c080900e08003807302024b3809", + "0x390f0126040480704c01c208093020241f9081b83b40383f0126040483f", + "0xc08092ca0246a007094024c0809228025c8807228024c080908243c6e0f2", + "0x2500972401c6e0093020246e00905201c0c0093020240c00903601cb2809", + "0x498101201c1580700e604048071f001c250dc030594b3809094024c0809", + "0x6e3940280406e1811b859c048071a83e403967012604049670120b803967", + "0x398101201d2b007030024c08091b80240a80700e604048071b801cb2815", + "0x6e007040025ca81d2c8370c08dc030024b2807020024c08090200246a007", + "0x5d0071cc024c08092c80247a007046024c080903a0245c00700e60404807", + "0x480721601c0398101201c6e00700ee58048071e601c7680930202411809", + "0x48ba00e39804981012080048f400e3c804981012098048bd00e09804981", + "0x398101201c6e007036025cb8660126046e0ed0123c4038ed012604048f2", + "0x14809302024148091cc01c148093020243300917e01c0398101201c7c007", + "0x1580909401c1582d1b8604048d4052370390071a8024c08091a802430807", + "0x481b00e04004981012040048d400e0b8049810123980483f00e01cc0809", + "0x382d0126040482d0121840382e0126040482e01259c0381401260404814", + "0xc080900e370038fb0603e46a0091f60c07c8d43020241682e028040b3afc", + "0x38073020247300903001c0398101206c0484a00e01cc080900e3e003807", + "0x49810120d0049ef00e0d0049810123f86a0dc3dc01c7f0093020240390b", + "0x48ff0127c0038140126040481401206c0381001260404810012350038ff", + "0x38073020246a00921001c0398101201c6e0071fe050080d40123fc04981", + "0x73007202024c080900e450039000126040480704001c0398101237004845", + "0x820093020240382600e0e004981012404800dc1da01c8080930202480809", + "0x48150123500383c012604049050127c4039050126040483820837079007", + "0xa8d40120f0049810120f0049f000e594049810125940481b00e05404981", + "0x38dc73001c08009302024080092ce01c03809302024038091a801c1e165", + "0xc009302370b280973201c039810120540484500e5940a8141a860404810", + "0xe80973801c0e8181b860404818012e6c03807302024038dc00e59004b9a", + "0x381401260404814012350038073020247300913c01c73023040350c0809", + "0x6e026012830038261da370c08090400506e39d00e0800498101208004a54", + "0x486800e01cc08091e40242500700e604048071b801c3300973c3c804981", + "0x118094c201c0398101206004b9f00e01cc08092ce0244100700e604048d4", + "0x1480955e01c148093020240d80945001c0d8093020240390b00e01cc0809", + "0xd8071da024c08091da0246a007056024c080905a024c680705a024c0809", + "0x158093020241580956001c6e0093020246e00905201c0480930202404809", + "0x48d400e01cc08090cc0242500700e604048071b801c158dc0123b4b3809", + "0x170dc302024118ed1b8e740382301260404823012950038ed012604048ed", + "0x1800909401c0398101201c6e0071f6025d00300126046e0f9012830038f9", + "0x48d40121a0038073020240c00973e01c0398101259c0488200e01cc0809", + "0x4834012abc03834012604048fe0128a0038fe0126040480721601c03981", + "0x481b00e0b8049810120b8048d400e400049810123fc0498d00e3fc04981", + "0x490001260404900012ac0038dc012604048dc0120a40380901260404809", + "0x170091a801c039810123ec0484a00e01cc080900e370039001b802417167", + "0x1c1011b8604048d405c371278071a8024c08091a80247300705c024c0809", + "0xc08091b802414807012024c08090120240d807202024c08092020246a007", + "0x8081074201c0c0093020240c00931e01c1c0093020241c0094a801c6e009", + "0x208097440fc049811b8420049fc00e4201e10520859cc08090300e06e009", + "0x8a0093023708780912001c878093020241f8093fc01c0398101201c6e007", + "0x2280910401c238451b86040491401222403807302024038dc00e12804ba3", + "0x488900e01cc080922a024410070964546e18101259c0488900e01cc0809", + "0x8d84f1b86040484b012224038073020243280910401c8b8651b860404847", + "0x49810120f00482900e414049810124140481b00e01cc080909e02441007", + "0x1e1052cee900391b0126040491b0121a403917012604049170121a40383c", + "0x38dc00e15404ba50a8024c08dc2400244d80724047c8e8d43020248d917", + "0x2c80974c484049811b815c04a0c00e15c049810121500491c00e01cc0809", + "0x1140070b6024c080900e42c038073020249080909401c0398101201c6e007", + "0x978093020242f00931a01c2f0093020249680955e01c968093020242d809", + "0xc080923e0241480723a024c080923a0240d807208024c08092080246a007", + "0x398101201c6e00725e47c8e9042ce024978093020249780956001c8f809", + "0x318093020243080944c01c308093020240390b00e01cc08090b202425007", + "0xc08092080246a00726a024c08090ce024c68070ce024c08090c602557807", + "0x9a80956001c8f8093020248f80905201c8e8093020248e80903601c82009", + "0xc08090aa0257f80700e604048071b801c9a91f23a410b380926a024c0809", + "0x8f80905201c8e8093020248e80903601c82009302024820091a801c36009", + "0x48071b801c3611f23a410b38090d8024c08090d80255800723e024c0809", + "0x498101201c1000700e60404967012208038073020242500909401c03981", + "0x483a0da37076807074024c080907402473007074024c080900ee9c0386d", + "0x4aff00e1c8049810121c0340dc1e401c340093020240382600e1c004981", + "0x39050126040490501206c03904012604049040123500393f01260404872", + "0x393f078414821670124fc049810124fc04ab000e0f0049810120f004829", + "0x6a0070ea024c08090820257f80700e6040496701220803807302024038dc", + "0x1e0093020241e00905201c828093020248280903601c8200930202482009", + "0x2500700e604048071b801c3a83c20a410b38090ea024c08090ea02558007", + "0x382000e01cc08092ce0244100700e604048d40121a003807302024b2009", + "0x6e0ed00e50404981012504048e600e5040498101201dd40070ee024c0809", + "0x9f0093020243d9431b83c8039430126040480704c01c3d809302024a0877", + "0xc08090120240d807028024c08090280246a0070fc024c080927c0257f807", + "0x48142ce0243f0093020243f00956001c6e0093020246e00905201c04809", + "0x48e600e01c0498101201c048d400e040b38dc3020246a00975201c3f0dc", + "0x4981012050048d400e0540a0dc302024080071b893c0381001260404810", + "0x4b2600e060b28dc302024b38141b8c94039670126040496701239803814", + "0x38200126040480775601c0398101201c6e00703a025d51640126046e018", + "0x4981012594048d400e3980498101208c100dc4a401c1180930202403a50", + "0x730094a801c76809302024768094a801c768151b86040481501294c03965", + "0x49811b83c804a5900e3c8130dc302024730ed2ca351d60071cc024c0809", + "0x148094a801c14809302024330094b601c0398101201c6e007036025d6866", + "0x4baf056024c08dc05a0259300705a024c0809052025d7007052024c0809", + "0x3830012604048074a001c7c80930202403bab00e01cc080900e3700382e", + "0xc080902a0252a00704c024c080904c0246a0071f6024c08090603e46e252", + "0x38341fc370c08091f6054130d476001c7d8093020247d8094a801c0a809", + "0xc08091fe0252d80700e604048071b801c800097623fc049811b80d004a59", + "0x48074a201c039810120e004a6100e4101c0dc3020248080976401c80809", + "0x4bb200e420049810120f0828dc4a401c1e00930202403a5000e41404981", + "0x390401260404904012950038073020241f8094c201c2083f1b860404908", + "0x482b2c83712900721e024c08090824106e3b300e1040498101210404a54", + "0x250d4302370879141b8024b3bb400e4500498101245004a5400e45004981", + "0x3917012604048470127e003807302024038dc00e194259151a8ed423845", + "0x498101245c049f900e46c049810121140482900e13c049810121280481b", + "0x391f012604048650127ec03807302024038dc00e01ddb00900e3cc0391d", + "0x498101247c049f900e46c0498101212c0482900e13c049810124540481b", + "0x6e0070aa025db8540126046e1200127f0039200126040491d01261c0391d", + "0x4bb8242024c08dc0ae024480070ae024c08090a8024ff00700e60404807", + "0x498101216c04bba00e16c0498101248404bb900e01cc080900e37003859", + "0x491b0120a40384f0126040484f01206c038fe012604048fe0123500392d", + "0xc080900e3700392d23613c7f1670124b4049810124b404b1500e46c04981", + "0x9780930202403bbb00e1780498101201c1000700e6040485901212803807", + "0xc080900e098038610126040492f0bc3707680725e024c080925e02473007", + "0x48d400e4d40498101219c04b1400e19c04981012184318dc1e401c31809", + "0x391b0126040491b0120a40384f0126040484f01206c038fe012604048fe", + "0x4b1400e01cc080900e3700393523613c7f1670124d4049810124d404b15", + "0x384f0126040484f01206c038fe012604048fe0123500386c01260404855", + "0x386c23613c7f1670121b0049810121b004b1500e46c0498101246c04829", + "0x4b1400e01cc08090560252600700e6040496401293003807302024038dc", + "0x38090126040480901206c038fe012604048fe0123500386d01260404900", + "0x386d1b80247f1670121b4049810121b404b1500e3700498101237004829", + "0x4a4c00e01cc080902a0253080700e6040482e01212803807302024038dc", + "0x380091cc01c3800930202403ba700e0e80498101201c1000700e60404964", + "0x790070e4024c080900e0980386801260404870074370768070e0024c0809", + "0x4981012098048d400e1d4049810124fc04b1400e4fc049810121a0390dc", + "0x4875012c54038dc012604048dc0120a4038090126040480901206c03826", + "0x398101205404a6100e01cc080900e370038751b8024131670121d404981", + "0x4981012098048d400e1dc0498101206c04b1400e01cc08092c802526007", + "0x4877012c54038dc012604048dc0120a4038090126040480901206c03826", + "0x39810120740484a00e01cc080900e370038771b8024131670121dc04981", + "0x387b0126040480774e01ca08093020240382000e01cc080902a02530807", + "0x498101201c13007286024c08090f65046e0ed00e1ec049810121ec048e6", + "0xb28091a801c9b8093020243f00962801c3f009302024a193e1b83c80393e", + "0x18a8071b8024c08091b802414807012024c08090120240d8072ca024c0809", + "0x4bbc012024c08dc00e024c700726e370049652ce0249b8093020249b809", + "0x498101235004bba00e3500498101202404bb900e01cc080900e370038dc", + "0x480704c01c0398101201c6e0072ce0240496701260404967012c5403967", + "0x18a80702a024c08090280258a007028024c08091b80406e0f200e04004981", + "0xb38d477a3506e0dc302370048071b8b84038150120240a8093020240a809", + "0xc08091b80246a00702a024c08091a8025df00700e604048071b801c0a010", + "0x12600700e604048071b801c0a8dc1b80240a8093020240a80977e01c6e009", + "0x4bc000e5940498101201c8580700e604048140129300380730202408009", + "0x481801260404818012efc03967012604049670123500381801260404965", + "0x498101201d070072ce024c080900e0ac03807302024038f800e060b38dc", + "0x48150280406a3c100e0540498101201d07007028024c080900e83803810", + "0x492e00e024049810120240481b00e01c0498101201c048d400e59404981", + "0x396501260404965012f0803967012604049670120b8038dc012604048dc", + "0xe96403059cc08091a8594b38dc01201c0a3c300e3500498101235004967", + "0x1180978c01c0398101201c6e0071cc025e28230126046e020012f1003820", + "0x13f8071e4024c080904c0253f00700e604048ed012114038261da370c0809", + "0xb2009302024b200903601c0c0093020240c0091a801c3300930202479009", + "0x3301d2c8060b38090cc024c08090cc0253e00703a024c080903a02497007", + "0xc0093020240c0091a801c0d809302024730094f601c0398101201c6e007", + "0xc08090360253e00703a024c080903a024970072c8024c08092c80240d807", + "0xc0809012025e4007012024c080900e025e3807036074b20182ce0240d809", + "0xd80700e024c080900e0246a007020024c080900ec000380901202404809", + "0xb3809302024b38090d201c6e0093020246e00905201c0480930202404809", + "0xb20093023700c00979401c0c16502a050b398101259c6e00900e59de4807", + "0x1000960401c100101b860404810012c0403807302024038dc00e07404bcb", + "0x38261da370c08091cc025d48071cc024c08092c8025e6007046024c0809", + "0x498101219804b0500e198790dc3020247900960801c7900930202403b03", + "0x1481b1b86046e0ed046198b2815020f340382301260404823012c1803866", + "0x800961401c7c80930202403b0900e01cc080900e3700382e0560b46a3ce", + "0x381b0126040481b01206c03830012604048f902037185807020024c0809", + "0x180f205206c083cd00e0c0049810120c004b0600e3c8049810123c804b05", + "0xc080900e42c03807302024038dc00e4007f8341a8f3c7f0fb1b86046e026", + "0x7f00905201c820093020247d80903601c1c0093020248080946001c80809", + "0x48071b801c03bd001201c79807078024c08090700251880720a024c0809", + "0x7f80905201c820093020241a00903601c840093020248000930601c03981", + "0x1e900707e024c0809208025e8807078024c08092100251880720a024c0809", + "0x6e00700ef50048071e601c878093020241e0097a601c2080930202482809", + "0x7900949c01c0398101204004b1700e01cc080904c0243400700e60404807", + "0x482900e0fc049810120b40481b00e450049810120b80498300e01cc0809", + "0x384a0126040490f01264c0390f012604049140128c4038410126040482b", + "0xc080908a025b380700e604048071b801c238097aa114049811b812804907", + "0x48d400e1940498101212c04bd700e12c049810124546a0dc7ac01c8a809", + "0x3841012604048410120a40383f0126040483f01206c0381401260404814", + "0x4aac00e01cc080900e370038650820fc0a1670121940498101219404bd8", + "0xd807028024c08090280246a00722e024c080908e025ec80700e604048d4", + "0x8b8093020248b8097b001c208093020242080905201c1f8093020241f809", + "0x4b1700e01cc08091a80255600700e604048071b801c8b84107e050b3809", + "0xd807028024c08090280246a00709e024c080903a025ec80700e60404810", + "0x27809302024278097b001cb2809302024b280905201c0a8093020240a809", + "0xb38093020246a0097b401c6a0093020246a00968001c2796502a050b3809", + "0xa809302024038fe00e05004981012040048fb00e0400498101201c18007", + "0x48182ca0506a10000e0600498101201c7f8072ca024c080902a0241a007", + "0x482900e01c0498101201c0481b00e0740498101259c04b3500e59004981", + "0xc080903a590048072ceb240381d0126040481d012b200380901260404809", + "0x3807302024038dc00e09804bdb1da024c08dc1cc024820071cc08c100d4", + "0x33009302024790dc1b8cdc038f20126040480721601c039810123b404905", + "0xc080904602414807040024c08090400240d807036024c08090cc0259c007", + "0x3807302024038dc00e06c118201a80240d8093020240d80955601c11809", + "0x100093020241000903601c148093020241300955401c03981012370048b3", + "0x38290460806a009052024c080905202555807046024c080904602414807", + "0x39670126040496701239803967012604048077ba01c0398101237004bdc", + "0x38dc7be01c0a0093020240a0091cc01c0a0101b8604048d42ce0246a3de", + "0x80093020240800923c01c0a8093020240a8091a801cb28151b860404814", + "0x1f08090126046e007012f80039650200546a0092ca024c08092ca02585007", + "0xc08091a8024c68071a8024c08090120255780700e604048071b801c6e009", + "0x382600e01cc080900e37003967012024b3809302024b380956001cb3809", + "0x381501260404814012bfc03814012604048dc02037079007020024c0809", + "0x48d400e5940a8dc302024b38097c401c0a8090120540498101205404ab0", + "0x381001260404810012398038dc012604048dc0124780380701260404807", + "0x181007040024c0809028025f180703a5900c0d4302024081651b801cb3b43", + "0x38e6012604048e6012c14038e60126040480760601c118093020240e809", + "0xc080900e3700381b0cc3c86a3e404c3b46e1811b8080118e61a8024083cd", + "0xc08091da0240d80705a024c080905202518007052024c080900e42c03807", + "0x48071e601c7c8093020241680946201c170093020241300905201c15809", + "0xc08091e40240d807060024c0809036024c180700e604048071b801c03be5", + "0x7c80932601c7c8093020241800946201c170093020243300905201c15809", + "0x3807302024038dc00e0d004be61fc024c08dc1f6024838071f6024c0809", + "0xc0809200025f4007200024c08091fe0546e3e700e3fc049810123f804b67", + "0xb200923c01c158093020241580903601c0c0093020240c0091a801c80809", + "0x8009202024c0809202025f480705c024c080905c024148072c8024c0809", + "0x1a0097d401c0398101205404bdc00e01cc080900e3700390105c59015818", + "0x8f007056024c08090560240d807030024c08090300246a007070024c0809", + "0x1c0093020241c0097d201c170093020241700905201cb2009302024b2009", + "0x48071b801c6e0097d8024049811b801c04beb00e0e01716405606008009", + "0xb38096b601cb38093020246a0097dc01c6a009302024048097da01c03981", + "0x79007020024c080900e09803807302024038dc00e59c048092ce024c0809", + "0x498101205404b5b00e0540498101205004bef00e05004981012370080dc", + "0x49811a801c04bf000e01c0480900e024c080900e0256400702a02404815", + "0x38d4012604048d4012f2003807302024038dc00e04004bf22ce025f88d4", + "0x48dc0123506a3f300e370049810123700486100e0240498101202404861", + "0x1fa007030024c0809028025fa00700e604049650121280396502a0506a181", + "0xb38097ec01c0398101201c6e00700efd4048071e601cb20093020240a809", + "0x1fb8071b8024c08091b802430807012024c0809012024308072ce024c0809", + "0x481d012fd0038073020241180909401c1182003a350c08091b8024b38d4", + "0xc080900e370038077ea024038f300e5900498101208004bf400e06004981", + "0x48dc01218403809012604048090121840381001260404810012d7803807", + "0x39810120980484a00e098768e61a8604048dc0120406a3f800e37004981", + "0x498101201c858072c8024c08091da025fa007030024c08091cc025fa007", + "0xc080900e370038dc012fe404809302370038096b801c79164030350048f2", + "0x496701261003967012604048d4012878038d40126040480901287403807", + "0x6e0f200e0400498101201c1300700e604048071b801cb380901259c04981", + "0xa8093020240a80930801c0a8093020240a00944201c0a0093020246e010", + "0x398101201c6e0072ce025fd8d41b8370c08dc01201c6e3fa00e05404809", + "0xc0809020025fe8071b8024c08091b80246a007020024c08091a8025fe007", + "0x4bfe00e0500498101201c8580700e604048071b801c080dc1b802408009", + "0x481501260404815012ff403967012604049670123500381501260404814", + "0x48071b801c0a0101b9000b38d41b86046e0dc01201c6a3ff00e054b38dc", + "0xa80980401cb28093020246a0091a801c0a809302024b380980201c03981", + "0xc08090280260200700e604048071b801c03c0301201c79807030024c0809", + "0x480780a01c0c009302024b200980401cb2809302024080091a801cb2009", + "0x6a007040024c080903a0606e40600e07404981012074048e600e07404981", + "0x48095c601c101651b8024100093020241000933201cb2809302024b2809", + "0xc08dc02859c038d480e01c0a0101b8604048dc012b8c039671a8370c0809", + "0x11400703a024c080900e42c03807302024038dc00e5900c0dc8105940a8dc", + "0x4981012054048d400e08c04981012080b28dc81201c100093020240e809", + "0x3807302024038dc00e01e0580900e3cc038ed01260404823013028038e6", + "0x49810123c8b20dc81201c790093020241300944c01c130093020240390b", + "0x48ed013030038ed01260404866013028038e60126040481801235003866", + "0x38dc00e3e4170dc81a0ac168dc302370080d41cc3520380705206c6e181", + "0x38fb0126040482906037207007060024c08090360ac6e25200e01cc0809", + "0x38dc00e3ec168dc0123ec049810123ec04c0f00e0b4049810120b4048d4", + "0x170d480e01c7f0093020247f00982001c7f00930202403a5100e01cc0809", + "0x7f8f91b894803807302024038dc00e404800dc8223fc1a0dc3023707f01b", + "0x383401260404834012350039040126040482907037207007070024c0809", + "0x482901227803807302024038dc00e4101a0dc0124100498101241004c0f", + "0x1e00944c01c1e0093020240390b00e414049810124047c8dc4a401c03981", + "0x3900012604049000123500383f0126040490820a37207007210024c0809", + "0x38102ce3506a18101237004c1200e0fc800dc0120fc049810120fc04c0f", + "0x48071b801c0e9640303520a16502a0506a1811b8040b38d401201c08413", + "0xa80905201c118093020240a00903601c10009302024b280982a01c03981", + "0x48071b801c03c1701201c798071da024c08090400260b0071cc024c0809", + "0xb200905201c118093020240c00903601c130093020240e80983001c03981", + "0xd8071e4024c08091da0260c8071da024c080904c0260b0071cc024c0809", + "0x790093020247900905a01c730093020247300905201c1180930202411809", + "0x38090126040480901259c0380701260404807012350038f21cc08c6a009", + "0x381401306808009302370b380952801cb38d41b8350c080901201c6e293", + "0x38d4012604048d401259c038dc012604048dc01235003807302024038dc", + "0x381d01306cb20093023700c00952801c0c16502a350c08091a83706e293", + "0x118201b860404965013070039650126040496501259c03807302024038dc", + "0xb20101a907c03807302024038dc00e3b404c1e1cc024c08dc0460260e807", + "0x381501260404815012350038f20126040482601308003826012604048e6", + "0x6e0071e40800a8d40123c8049810123c804c2100e0800498101208004967", + "0x7680984401c0398101259004a6100e01cc08090200253080700e60404807", + "0x210807040024c0809040024b380702a024c080902a0246a0070cc024c0809", + "0x481001298403807302024038dc00e198100151a80243300930202433009", + "0xb28092ce01c0a8093020240a8091a801c0d8093020240e80984401c03981", + "0xc080900e3700381b2ca0546a009036024c0809036026108072ca024c0809", + "0x48d401259c038dc012604048dc012350038290126040481401308803807", + "0xc0809012025d90070523506e0d40120a4049810120a404c2100e35004981", + "0x81671b894803810012604048074a001cb380930202403a5000e3506e0dc", + "0x1d900700e604048150129840396502a370c0809028025d9007028024c0809", + "0xe8dc302024b280976401c0398101206004a6100e5900c0dc3020246a009", + "0xc08090400252a0072c8024c08092c80252a00700e6040481d01298403820", + "0x76809848398049811b808c04a0c00e08c04981012080b20dc84601c10009", + "0x6a00704c024c080900f094038073020247300909401c0398101201c6e007", + "0x13009302024130094a801c6e0093020246e0094a801c0380930202403809", + "0x3807302024038dc00e198790dc012198790dc302024130dc00e3512a807", + "0x114007036024c080900e42c038073020246e0094c201c039810123b40484a", + "0x148093020241480923001c03809302024038091a801c148093020240d809", + "0x48093020240480903601c0a814020350c08092ce025ce00705201c6e009", + "0x496501295003965020370c0809020025298071b8024c08091b802414807", + "0xc0d43020240a9651b8024b3c2600e054049810120540491800e59404981", + "0x38e601309c11809302370100093f801c100093020240e80930e01c0e964", + "0x2140260126046e0ed012240038ed012604048230127f803807302024038dc", + "0xc08092c802414807030024c08090300240d80700e604048071b801c79009", + "0x21502d0126046e02901220c038290361986a1810125900c0dc85201cb2009", + "0x49810120b804c2b00e0b80498101201e1280700e604048071b801c15809", + "0x80094a801c0398101201c6e0071f6026168300126046e0f90130b0038f9", + "0x4c2f068024c08dc1fc0254a0071fc024c080902002617007020024c0809", + "0x8003400e352188072000c06e1810120c004c3000e01cc080900e370038ff", + "0x48071b801c238450943521911421e1041f90807841482038202590c08dc", + "0x808dc86801c8a0093020248a00986601c80809302024808091a801c03981", + "0x390f0126040490f0130cc038073020242580909401c259151b860404914", + "0xc08090820261980700e60404917012128039170ca370c080921e4546e434", + "0x4c3300e01cc08092360242500723613c6e181012104328dc86801c20809", + "0x398101247c0484a00e47c8e8dc3020241f84f1b90d00383f0126040483f", + "0x2a00909401c2a1201b86040490823a3721a007210024c080921002619807", + "0x38570aa370c08090784806e43400e0f0049810120f004c3300e01cc0809", + "0x6e1810124142a8dc86801c828093020248280986601c0398101215c0484a", + "0x821211b90d003904012604049040130cc038073020242c80909401c2c921", + "0x12a0070bc024c08090700261a80700e6040492d0121280392d0b6370c0809", + "0x49810124bc04a5400e4bc2f0dc3020242f0094a601c6a0093020246a009", + "0x2d96786e01c308093020243080986c01c308301b8604048300130c00392f", + "0x360094b201c361351b8604048670c63721c0070ce18c6e181012184978d4", + "0x39350126040493501235003807302024038dc00e0e804c390da024c08dc", + "0x49810120c004c3600e1780498101217804a5400e0500498101205004a54", + "0x38720126040482d012214038680e0370c08090601780a1352cf0dc03830", + "0x498101206c0482900e198049810121980481b00e4fc049810121b404a5b", + "0xd8662cf0e80393f0126040493f01295003872012604048720121a40381b", + "0xc08dc0f6024418070f6024c08092820258c8072821dc3a8d43020249f872", + "0x482900e1d4049810121d40481b00e01cc080900e3700393e0130eca1809", + "0x38680126040486801295003826012604048260121a40387701260404877", + "0x41807270024c08090fe0258c8070fe4dc3f0d4302024340260ee1d4b3c3a", + "0x498101250c0488500e01cc080900e370039330130f0408093023709c009", + "0x49370120a40387e0126040487e01206c038850126040488101221403883", + "0xb3c3d00e214049810122140486900e20c0498101220c0486900e4dc04981", + "0x4580910601c458093020243480963201c34882112350c080910a20c9b87e", + "0x388e0126040493001221403807302024038dc00e0d804c3e260024c08dc", + "0x49810124b804a9d00e4b80498101224004a9c00e2400498101223804c3f", + "0x48820120a4038890126040488901206c03870012604048700123500392c", + "0xc080900e3700392c104224381670124b0049810124b004a9e00e20804981", + "0x488901206c03870012604048700123500392601260404836012a7c03807", + "0x381670124980498101249804a9e00e208049810122080482900e22404981", + "0xc08092660254f80700e6040494301310003807302024038dc00e49841089", + "0x9b80905201c3f0093020243f00903601c38009302024380091a801c49809", + "0x48071b801c499370fc1c0b3809126024c08091260254f00726e024c0809", + "0xc080927c0254f80700e6040482601220803807302024340094c201c03981", + "0x3b80905201c3a8093020243a80903601c38009302024380091a801c91009", + "0x48071b801c910770ea1c0b3809244024c08092440254f0070ee024c0809", + "0xc08090600262080700e60404826012208038073020241680988001c03981", + "0x49810120e804a9f00e01cc08090280253080700e6040485e01298403807", + "0x481b0120a4038660126040486601206c039350126040493501235003895", + "0xc080900e370038950361989a9670122540498101225404a9e00e06c04981", + "0x398101205004a6100e01cc080904c0244100700e6040482d01310003807", + "0x25009302024250091a801c0398101235004a6100e01cc080906002620807", + "0x8f00909401c8f0971b8604048470943721a00708e024c080908e02619807", + "0x389b132370c080908a25c6e43400e1140498101211404c3300e01cc0809", + "0x73007234024c080900ee9c0391c0126040480704001c0398101226c0484a", + "0x8c0093020240382600e278049810124688e0dc1da01c8d0093020248d009", + "0x489901235003916012604048a0012a7c038a00126040489e23037079007", + "0x4a9e00e06c0498101206c0482900e198049810121980481b00e26404981", + "0x48ff01212803807302024038dc00e4580d86613259c0491601260404916", + "0xc08090280253080700e60404826012208038073020241680988001c03981", + "0x9e0093020240382000e01cc08091a80253080700e6040483001310403807", + "0xc08092264f06e0ed00e44c0498101244c048e600e44c0498101201dd3807", + "0x5300953e01c530093020245210b1b83c80390b0126040480704c01c52009", + "0x148070cc024c08090cc0240d80700e024c080900e0246a007150024c0809", + "0x6e00715006c330072ce024540093020245400953c01c0d8093020240d809", + "0x1300910401c039810120b404c4000e01cc08091f60242500700e60404807", + "0x48d401298403807302024080094c201c0398101205004a6100e01cc0809", + "0xc080915402473007154024c080900ee9c039090126040480704001c03981", + "0x560dc1e401c560093020240382600e41c049810122a8848dc1da01c55009", + "0x380701260404807012350038fd01260404903012a7c0390301260404907", + "0x49810123f404a9e00e06c0498101206c0482900e198049810121980481b", + "0x13080700e6040482601220803807302024038dc00e3f40d86600e59c048fd", + "0x4a9f00e01cc08091a80253080700e60404810012984038073020240a009", + "0x38660126040486601206c0380701260404807012350038af0126040482b", + "0x38af036198039670122bc049810122bc04a9e00e06c0498101206c04829", + "0x4a6100e01cc08090200253080700e604048d401298403807302024038dc", + "0x14e807162024c08091f80254e0071f8024c08091e4024c300700e60404814", + "0xc0093020240c00903601c03809302024038091a801c7d00930202458809", + "0x7d16403001cb38091f4024c08091f40254f0072c8024c08092c802414807", + "0x13080700e60404810012984038073020246a0094c201c0398101201c6e007", + "0x380701260404807012350038b3012604048e6012a7c038073020240a009", + "0x49810122cc04a9e00e590049810125900482900e060049810120600481b", + "0x498101259c049e400e59c04981012370049e400e2ccb201800e59c048b3", + "0x48100121a403809012604048090120a4038070126040480701206c03810", + "0x4981012594049e600e5940a8141a86040481001201c6a1e500e04004981", + "0x6a0093c801c0398101201c6e00703a026211640126046e01801279c03818", + "0x14807028024c08090280240d807046024c0809040024f2007040024c0809", + "0xc08090460540a0d43ca01c11809302024118090d201c0a8093020240a809", + "0x4c430cc024c08dc1e4024f38071e4024c080904c024f300704c3b4730d4", + "0x6e1810120a4049ea00e0a404981012590049e900e01cc080900e3700381b", + "0x330093d201c7c82e1b86040482b0127d403807302024168093d601c1582d", + "0xfa80700e604048fb0127ac038fe1f6370c0809060024f5007060024c0809", + "0xc0809200025308072024006e1810120b804bb200e3fc1a0dc3020247f009", + "0x4901012950038073020241c0094c201c820381b860404834012ec803807", + "0x10600720a024c08092084046e42300e4100498101241004a5400e40404981", + "0x39810120f00484a00e01cc080900e370039080131101e00930237082809", + "0x383f0126040480721601c039810123e404a6100e01cc08091fe02530807", + "0x380788a024038f300e43c049810121040491800e104049810120fc04a28", + "0x384a228370c08091f2025d900700e6040490801212803807302024038dc", + "0x398101211404a6100e11c228dc3020247f80976401c0398101245004a61", + "0x48470943721180708e024c080908e0252a007094024c08090940252a007", + "0x498d00e12c0498101243c04aaf00e43c0498101245404a0b00e45404981", + "0x38ed012604048ed0120a4038e6012604048e601206c038650126040484b", + "0xb200933601c0398101201c6e0070ca3b4730d40121940498101219404ab0", + "0x482900e398049810123980481b00e45c0498101206c04aff00e01cc0809", + "0x48071b801c8b8ed1cc3500491701260404917012ac0038ed012604048ed", + "0x481401206c0384f0126040481d012bfc038073020246a00910401c03981", + "0xa0d401213c0498101213c04ab000e054049810120540482900e05004981", + "0x6a00985801c6a0093020246e00985601c6e0093020246e0094a801c27815", + "0xb398101259c048071a911c03807302024038dc00e04004c462ce024c08dc", + "0x4c3300e05004981012050048d400e01cc08092ca025308070305940a814", + "0x39810120740484a00e074b20dc3020240c0141b90d00381801260404818", + "0xc080904602577007046024c080904002576807040024c080902a02576007", + "0x4a6100e01cc08090200242500700e604048071b801c119641b802411809", + "0x768091cc01c7680930202403c4800e3980498101201c1000700e60404809", + "0x790071e4024c080900e09803826012604048ed1cc370768071da024c0809", + "0x498101201c048d400e06c0498101219804af000e19804981012098790dc", + "0x6e0091b860404807012b8c0381b00e3700481b0126040481b012bb803807", + "0xc080900e3700380789201cc08dc1a83706e2e700e3500498101201d28007", + "0x498101259c04bc000e59c0498101201c8580700e6040480901293003807", + "0x480977c01c0398101201c6e0070200240481001260404810012efc03810", + "0x498101237004a5400e05004809028024c0809028025df807028024c0809", + "0x6e007020026251670126046e0d40130b0038d4012604048dc0130ac038dc", + "0x4815012984038182ca0540a167302024b380900e3522380700e60404807", + "0xa0dc86801c0c0093020240c00986601c0a0093020240a0091a801c03981", + "0x382001260404965012bb0038073020240e80909401c0e9641b860404818", + "0x38dc00e08cb20dc01208c0498101208c04aee00e08c0498101208004aed", + "0xc080900e08003807302024048094c201c039810120400484a00e01cc0809", + "0x768e61b83b4038ed012604048ed012398038ed0126040480789001c73009", + "0x1780070cc024c080904c3c86e0f200e3c80498101201c1300704c024c0809", + "0xd8093020240d8095dc01c03809302024038091a801c0d80930202433009", + "0xb38d41b8604048dc012b8c038dc00e370c080900e0252980703601c6e009", + "0xc0809020025260070280406e18101235004c4b00e01cc08092ce02526007", + "0x4a4c00e060b28dc3020240a8095c601c0a8091b86040480901294c03807", + "0x20800700e604049640129300381d2c8370c08092ca0262580700e60404818", + "0x49810120740a0dc89801c0e8093020240e80982001c0a0093020240a009", + "0x1180909401c0398101201c6e0071cc026268230126046e02001283003820", + "0xc080900e42c03807302024038094c201c0398101202404a6100e01cc0809", + "0x3826012024130093020241300923001c130093020247680945001c76809", + "0x38661e4370c080900e0257180700e604048e601212803807302024038dc", + "0x398101206c04a4c00e0a40d8dc3020243300989601c039810123c804a4c", + "0xc08090560262580700e6040482d0129300382b05a370c080901202571807", + "0x7c80982001c148093020241480982001c039810120b804a4c00e3e4170dc", + "0x398101201c7c00706002404830012604048f9052372260071f2024c0809", + "0x6e01401201c6a0f900e050049810120500482e00e0500498101201c15807", + "0xe8d4302024b380989e01c0398101201c6e0072c80606e44e2ca0546e181", + "0xc080902a0246a00700e604048074ac01c730093020240800902a01c11820", + "0x5c00700e604048071b801c790098a0098768dc302370730092ca01c0a809", + "0x148093020243300917401c0d809302024768091e801c3300930202413009", + "0x48bd00e0b40498101201c8580700e604048071b801c03c5101201c79807", + "0x38290126040482b0122e80381b012604048f20123d00382b0126040482d", + "0xc080905c0245f80700e604048071b801c7c8098a40b8049811b80a4048f1", + "0xd8092ca01c7d8093020247d8091cc01c7d809302024180091dc01c18009", + "0x800093020241a00917001c0398101201c6e0071fe026298341fc370c08dc", + "0x3c5401201c79807070024c08092000245d007202024c08091fc0247a007", + "0x3905012604049040122f4039040126040480721601c0398101201c6e007", + "0x49810124040483f00e0e004981012414048ba00e404049810123fc048f4", + "0x6e00707e0262a9080126046e0380123c40383c0126040483c01259c0383c", + "0x22b00721e024c080908202477007082024c08092100245f80700e60404807", + "0xc080921e0806e45600e43c0498101243c048e600e450049810123ec0e8dc", + "0x6e16733401c25009302024250091cc01c8a0093020248a0091cc01c25009", + "0x492e00e1946a0dc3020246a0098ae01c2591508e114b398101208c25114", + "0x39150126040491501239803847012604048470123980384501260404845", + "0x8e91b1b9160279171b86046e0652ca0546a0f900e12c0498101212c048e6", + "0x8f8093020242591508e351e080700e604048071f001c0398101201c6e007", + "0xc080908a0249700709e024c080909e0240d80722e024c080922e0246a007", + "0x1e0092ce01c8f8093020248f80978401c6a0093020246a00905c01c22809", + "0xb38090ae1542a1202ce6040483c23e3502284f22e051e1807078024c0809", + "0xc08090780242280700e604048071f001c0398101201c6e0070ae1542a120", + "0x39810124540486800e01cc08091a80262c80700e604048470121a003807", + "0x38590126040480722801c908093020240382000e01cc080909602434007", + "0x498101201c130070b6024c08090b24846e0ed00e16404981012164048e6", + "0x8d8091a801c978093020242f0098b401c2f0093020242d92d1b83c80392d", + "0x22d80708a024c080908a0249700723a024c080923a0240d807236024c0809", + "0x1f80909401c0398101201c6e00725e1148e91b2ce0249780930202497809", + "0x390b00e184049810123ec0e8dc8ac01c0398101235004c5900e01cc0809", + "0x730070ce024c08090ce0248c0070ce024c08090c6025130070c6024c0809", + "0xc080900e3700386c0131709a8093023703380941801c3080930202430809", + "0xc08090da1846e45600e1b40498101201d0800700e6040493501212803807", + "0x340702ce604048230400e86e16733401c1d0093020241d0091cc01c1d009", + "0xc08090e00249700700e6040493f0121a003807302024390090d001c9f872", + "0x398101201c6e00700f174048071e601c3b809302024340091cc01c3a809", + "0x4981012504100dc8ac01ca080930202403a1000e01cc08090d802425007", + "0x3f13e28659cc08090461ec308dc2ce6680387b0126040487b0123980387b", + "0x498101250c0492e00e01cc080926e0243400700e6040487e0121a003937", + "0xc08090ee0f06e45e00e01cc080900e3e0038770126040493e01239803875", + "0xb280903601c0a8093020240a8091a801c9c0093020243f8098be01c3f809", + "0xb3809270024c08092700262d8070ea024c08090ea024970072ca024c0809", + "0x48d4013164038073020247c80909401c0398101201c6e0072701d4b2815", + "0x49330128a0039330126040480721601c408093020240d80907e01c03981", + "0x4a0c00e204049810122040496700e20c0498101220c0491800e20c04981", + "0x38073020244280909401c0398101201c6e007112026300850126046e083", + "0x49810121a4048e600e1a4049810122080e8dc8ac01c4100930202403a10", + "0x39810120d80486800e2381b13011659cc0809046080348dc2ce66803869", + "0x49810124c0048e600e2400498101222c0492e00e01cc080911c02434007", + "0x10800700e6040488901212803807302024038dc00e01e3080900e3cc0392e", + "0x93009302024930091cc01c93009302024960201b91580392c01260404807", + "0x38073020244a8090d001c4b89524424cb398101208c9301d1b859ccd007", + "0x97009302024910091cc01c480093020244980925c01c0398101225c04868", + "0x498101247804c5f00e478049810124b8408dc8bc01c0398101201c7c007", + "0x48900124b8039650126040496501206c038150126040481501235003899", + "0xc080900e370038991205940a9670122640498101226404c5b00e24004981", + "0x398101259c04c6200e01cc08091a80262c80700e6040481001211403807", + "0x8e0093020248e0091cc01c8e0093020240391400e26c0498101201c10007", + "0x491a13c3707900713c024c080900e0980391a0126040491c13637076807", + "0x481b00e06004981012060048d400e2800498101246004c5a00e46004981", + "0x48a0012604048a001316c038dc012604048dc0124b80396401260404964", + "0x38dc012604048dc0120a4038090126040480901206c038a01b85900c167", + "0x49e600e050081671a8604048d41b80246a1e500e3500498101235004869", + "0x398101201c6e007030026319650126046e01501279c0381501260404814", + "0xc080900eeac0382003a370c08092c8024fa8072c8024c08092ca024f4807", + "0x38091a801c76809302024730231b8948038e6012604048074a001c11809", + "0x1d80071da024c08091da0252a007040024c08090400252a00700e024c0809", + "0x6e007036026320660126046e0f2012964038f204c370c08091da080038d4", + "0x382b0126040482d0126480382d052370c080903a0257180700e60404807", + "0x49810120b804a5400e09804981012098048d400e0b80498101219804a5b", + "0x7f0098cc3ec049811b80c00487700e0c07c8dc302024170261b91940382e", + "0x38ff012604048078ce01c1a0093020241480932401c0398101201c6e007", + "0xc080920002473007200024c08090563fc6e46800e3fc049810123fc048e6", + "0x234807070024c08092020d06e30d00e404049810123ec800dc8ac01c80009", + "0x7c8093020247c8091a801c82809302024820098d401c820093020241c009", + "0xc080920a02635807020024c0809020024148072ce024c08092ce0240d807", + "0x38073020247f00909401c0398101201c6e00720a040b38f92ce02482809", + "0x1d3807078024c080900e080038073020241480949801c039810120ac04868", + "0x1f8093020248403c1b83b403908012604049080123980390801260404807", + "0xc080921e0263600721e024c080907e1046e0f200e1040498101201c13007", + "0x800905201cb3809302024b380903601c7c8093020247c8091a801c8a009", + "0x48071b801c8a0102ce3e4b3809228024c080922802635807020024c0809", + "0x48260123500384a0126040481b0131b0038073020240e8094c201c03981", + "0x4c6b00e040049810120400482900e59c0498101259c0481b00e09804981", + "0x48180131b003807302024038dc00e1280816704c59c0484a0126040484a", + "0x482900e59c0498101259c0481b00e01c0498101201c048d400e11404981", + "0x499800e1140816700e59c04845012604048450131ac0381001260404810", + "0xc08dc00e026368070120240480901260404809012f200380901260404807", + "0x80091cc01c0800930202403c6f00e01cc080900e370039670131b86a009", + "0x38d4012604048d4012d00038140126040481001237076807020024c0809", + "0x48dc0283506a47000e370049810123700486100e0500498101205004861", + "0x1fa0072c8024c080902a025fa00700e60404818012128038182ca0546a181", + "0x48078e401c0398101201c6e00700f1c4048071e601c0e809302024b2809", + "0x153007046024c08090400246e0ed00e08004981012080048e600e08004981", + "0x6e0093020246e0090c201c11809302024118090c201cb3809302024b3809", + "0x4bf400e01cc080904c0242500704c3b4730d43020246e0232ce35239807", + "0x6a0091e4024c080900e42c0381d012604048ed012fd003964012604048e6", + "0x38070131d0038073020246e00921001c039810120240490800e3c80e964", + "0x3967012604048078ec01c0398101201c6e0071a8024c080900e0263a807", + "0xc08091a80251b007020024c08092ce0246e0ed00e59c0498101259c048e6", + "0x6a0d48ee01c6e0093020246e0090c201c08009302024080090c201c6a009", + "0xc0093020240390b00e01cc08092ca024250072ca0540a0d43020246e010", + "0x398101201c6e0071a80263c8dc0126046e0070131e00381802a0506a009", + "0x498101259c04c7b00e59c0498101237004c7a00e01cc080901202434007", + "0x6a00949c01c0398101201c6e007020024048100126040481001266403810", + "0x382600e054049810120240a0dc1da01c0a0093020240382000e01cc0809", + "0x3964012604048180131f003818012604048152ca370790072ca024c0809", + "0x38dc0131f804809302370038098fa01cb20090125900498101259004999", + "0x3967012604048d401243c038d40126040480901210403807302024038dc", + "0x498101201c1300700e604048071b801cb380901259c0498101259c0482d", + "0xa80905a01c0a8093020240a0090cc01c0a0093020246e0101b83c803810", + "0x6e1811b80240496500e0240498101201c0481500e0540480902a024c0809", + "0x48f400e04004981012350048b800e01cc080900e370039670131fc6a0dc", + "0x38dc00e01e4000900e3cc03815012604048100122e803814012604048dc", + "0xb38091e801c0c009302024b280917a01cb28093020240390b00e01cc0809", + "0xb38072c8024c08090280241f80702a024c08090300245d007028024c0809", + "0xc080900e370038200132040e8093023700a8091e201cb2009302024b2009", + "0x48e6012398038e6012604048230123b8038230126040481d0122fc03807", + "0x390b00e01cc080900e370038ed013208039811b839804a1b00e39804981", + "0x798070cc024c08091e40248c0071e4024c080904c0251300704c024c0809", + "0xc080900e42c038073020247680943e01c0398101201c6e00700f20c04807", + "0x3300945201c330093020241480923001c148093020240d80945001c0d809", + "0xcb8072c8024c08092c8024b3807056024c080905a0264200705a024c0809", + "0xc08090400242500700e604048071b801c159641b80241580930202415809", + "0xc08092c8024b38071f2024c080905c0264280705c024c080900e42c03807", + "0x6e0093020240380990c01c7c9641b80247c8093020247c80932e01cb2009", + "0xc08091a80252a0071b8024c08091b80252a0071a8024c080901202643007", + "0x38070126040480790e01cb380901259c049810123506e0dc76601c6a009", + "0x498101237004a5400e37004981012024038dc4a401c0480930202403c88", + "0xc16502a3524481402059c6a1811b83506e00900e59dda0071b8024048dc", + "0xb3809302024b380903601cb20093020240a0093f001c0398101201c6e007", + "0x396402059c6a0092c8024c08092c8024fc807020024c080902002414807", + "0x38150126040481501206c0381d012604048180127ec03807302024038dc", + "0x24500703a5940a8d401207404981012074049f900e5940498101259404829", + "0x3967012604048d41b8371290071a8024c080900f22c038dc01260404807", + "0xa8093020240a0101b8948038140126040480732c01c0800930202403c8c", + "0xb380900e59cfb00702a024c080902a0252a0072ce024c08092ce0252a007", + "0xb20093f001c0398101201c6e0070460800e8d491a5900c1651a86046e015", + "0xfc80704c024c0809030024148071da024c08092ca0240d8071cc024c0809", + "0x118093f601c0398101201c6e00700f238048071e601c7900930202473009", + "0xfc80704c024c0809040024148071da024c080903a0240d8070cc024c0809", + "0x148093023700d8093f801c0d8093020247900930e01c7900930202433009", + "0x6e02b0122400382b012604048290127f803807302024038dc00e0b404c8f", + "0x1dd007060024c080905c025dc80700e604048071b801c7c8099200b804981", + "0x130093020241300905201c768093020247680903601c7d80930202418009", + "0x484a00e01cc080900e370038fb04c3b46a0091f6024c08091f60258a807", + "0x1a0091cc01c1a00930202403ba700e3f80498101201c1000700e604048f9", + "0x79007200024c080900e098038ff012604048341fc37076807068024c0809", + "0x49810123b40481b00e0e00498101240404b1400e404049810123fc800dc", + "0x1c0261da3500483801260404838012c5403826012604048260120a4038ed", + "0x768093020247680903601c820093020241680962801c0398101201c6e007", + "0x390404c3b46a009208024c08092080258a80704c024c080904c02414807", + "0x6e0093020240390b00e01cc080900e37003809013248039811b801c04c91", + "0x38dc00e350048091a8024c08091a80264a0071a8024c08091b802649807", + "0xb380901259c0498101259c04c9400e59c0498101202404c9500e01cc0809", + "0xc080901202596007012024c080900e0264b00700e024c080900e0252a007", + "0x6e009302024048071b925c038dc0120246e0093020246e00965a01c6e009", + "0x48d400e3506e0dc01237004981012370048d400e3500498101201c85807", + "0x38dc012604048dc01295003809012604048090129500380701260404807", + "0xb2815028594c08091a8040b38d493201c081671b8604048dc01201c6a498", + "0x219807028024c08090280246a00700e6040481501326803823040074b2018", + "0xc08091da024250071da3986e18101208c0a0dc86801c1180930202411809", + "0x484a00e3c8130dc302024100e61b90d003820012604048200130cc03807", + "0xd8661b86040481d04c3721a00703a024c080903a0261980700e604048f2", + "0xc08092c81986e43400e5900498101259004c3300e01cc080903602425007", + "0x148dc86801c0c0093020240c00986601c039810120b40484a00e0b4148dc", + "0x496501260404965012950038073020241700909401c1702b1b860404818", + "0x6e0094a801c03809302024038091a801c6e00930202403c2500e594158dc", + "0x6a0dc302024048dc00e3524d807012024c08090120252a0071b8024c0809", + "0xb28151a92740a0102ce350c08dc1a8370048072cf270039671a837004967", + "0x498101259c0481b00e5900498101205004b1100e01cc080900e37003818", + "0xb20102ce3500496401260404964012c4803810012604048100120a403967", + "0xa8093020240a80903601c0e8093020240c00963001c0398101201c6e007", + "0x381d2ca0546a00903a024c080903a025890072ca024c08092ca02414807", + "0xc080900e370038182ca0546a49f028040b38d43023706a0dc01201cb3c9e", + "0x48100120a4039670126040496701206c0396401260404814012c4403807", + "0x398101201c6e0072c8040b38d40125900498101259004b1200e04004981", + "0xc08092ca0241480702a024c080902a0240d80703a024c08090300258c007", + "0x498101201c04b2000e074b28151a80240e8093020240e80962401cb2809", + "0x48d4012c8003967012604048dc012c80038d401260404809012c80038dc", + "0x390b00e01cc080900e3700380794001cc08dc02059c6e2e700e04004981", + "0x480902a024c080902a0248c00702a024c080902802514007028024c0809", + "0xc009302024b280944c01cb28093020240390b00e01cc080900e37003815", + "0x2508071a83706e18101202404ae300e06004809030024c08090300248c007", + "0x6a0dc3020246a0095c801c081671b860404967012b900396701260404807", + "0x6e4a22ca0546e1811b8050080071a8b94038100126040481001304003814", + "0x6e18101235004ae400e01cc08092ca0252600700e604048071b801cb2018", + "0x6e00700f28c039811b859c0e8dc5ce01c0a8093020240a8091a801c0e8d4", + "0x498101201d2800700e604048071b801c03ca401201c7980700e60404807", + "0x6e00700f294039811b8080118dc5ce01c118dc1b8604048dc012b9003820", + "0x480721601c0398101235004a4c00e01cc08091b80252600700e60404807", + "0x49d800e05404981012054048d400e3b404981012398049d900e39804981", + "0x49810123500499200e01cc080900e370038ed02a370048ed012604048ed", + "0x486604c372340070cc024c080900f298038f2012604048dc01264803826", + "0xeb807052024c08091e406c6e45600e06c0498101206c048e600e06c04981", + "0x16809302024168093b001c0a8093020240a8091a801c1680930202414809", + "0x496701293003807302024b200949801c0398101201c6e00705a0546e009", + "0x498101201c8580700e604048d4012930038073020246e00949801c03981", + "0x482e01276003818012604048180123500382e0126040482b0127640382b", + "0x4981012350048e600e3500498101201c04ca700e0b80c0dc0120b804981", + "0x484a00e040b38dc302024048d41b81c80380901260404809012184038d4", + "0xb38d4012370049810123700486100e0500498101201c8580700e60404810", + "0x48090c201c6a0093020246a0091cc01c6a0093020240380932a01c0a0dc", + "0x38073020240800909401c081671b8604048091a837039007012024c0809", + "0x4ca800e0506e1671a80246e0093020246e0090c201c0a0093020240390b", + "0x38dc012604048dc012184038d4012604048d4012404038d401260404807", + "0x498101201c8580700e60404810012128038102ce370c08091b83506e4a9", + "0xa1670123500496701260404967012184038090126040480901218403814", + "0x1718072ce3506e18101202404ae300e01c0480900e024c080900e0252a007", + "0xc08090200257200702a3506e18101235004ae400e050080dc3020246e009", + "0x3809302024038091a801c0e964030350c08092ca0546e4aa00e594080dc", + "0x1180909401c118201b86040481d00e3721a00703a024c080903a02619807", + "0x130ed1a8604048e61a8372550071cc0506e18101205004ae400e01cc0809", + "0x790201b90d0038f2012604048f20130cc0382001260404820012350038f2", + "0x208007030024c08090300260800700e6040481b0121280381b0cc370c0809", + "0x482d0132b00382d052370c080904c060330d495601c1300930202413009", + "0x180d4302024080f91b92a8038f92ce370c08092ce0257200705c0ac6e181", + "0x148dc86801c7f0093020247f00986601c14809302024148091a801c7f0fb", + "0x382b0126040482b013040038073020247f80909401c7f8341b8604048fe", + "0x800091a801c809001b8604048fb0560d06a4ab00e3ec049810123ec04c10", + "0x255807060024c0809060026080071da024c08091da02608007200024c0809", + "0x6a0072100f0828d43020240a1671b92a803904070370c08090603b4800d4", + "0x6e1810124201c0dc86801c840093020248400986601c1c0093020241c009", + "0x8280982001c8a10f1b8604049040132b0038073020242080909401c2083f", + "0x250dc3020248a10507e35256807228024c08092280260800720a024c0809", + "0x483c0130400390f0126040490f0130400384a0126040484a01235003845", + "0x258dc3020248a80995801c8a8471b86040483c21e1286a4ab00e0f004981", + "0x48650130400384501260404845013040038470126040484701235003865", + "0x8d8dc3020248080995801c279171b86040486508a11c6a4ad00e19404981", + "0x491d0130400382e0126040482e01304003917012604049170123500391d", + "0x8f8093020248f8091a801c9011f1b86040491d05c45c6a4ad00e47404981", + "0x9004b23e35255807240024c080924002608007096024c080909602608007", + "0x2a0093020242a0091a801c908571b8604048550132b0038550a8370c0809", + "0x9084f0a835256807242024c08092420260800709e024c080909e02608007", + "0xc08090b20246a00725a024c08090b615c8d9642cf2b80385b0b2370c0809", + "0x3809302024038091a801c968591b8024968093020249680995e01c2c809", + "0x6e00900e352580071b8024c08091b80252a007012024c08090120252a007", + "0x398101201c6e007028026588100126046e167012a50039671a8370c0809", + "0xc08091a80246a0072ca024c080902a0257680702a024c080902002576007", + "0x2500700e604048071b801cb28d41b8024b2809302024b28095dc01c6a009", + "0x48e600e5900498101201e59007030024c080900e080038073020240a009", + "0x38200126040480704c01c0e809302024b20181b83b40396401260404964", + "0xc08091a80246a0071cc024c080904602578007046024c080903a0806e0f2", + "0x6e0093020240380996601c730d41b802473009302024730095dc01c6a009", + "0x49670121a0038102ce370c08091a8024380071a8024c08091b802512007", + "0x80dc0e401c04809302024048090c201c08009302024080091cc01c03981", + "0x6e0092ca024c080900e42c038073020240a80909401c0a8141b860404809", + "0xc080900e370038140203725a1671a8370c08dc1b8024038d480e01cb2814", + "0x48d401235003965012604048152ce3725a80702a024c080900e94003807", + "0x3807302024038dc00e5946a0dc0125940498101259404cb600e35004981", + "0x4981012040048d400e590049810120600a0dc96a01c0c00930202403a51", + "0x6e1811b8370048071a901c0396402037004964012604049640132d803810", + "0x2080071a8024c08091a80246a00700e604048071b801c0a0101b92dcb38d4", + "0xc08090200246a00700e604048071b801cb38d41b8024b3809302024b3809", + "0x3809302024038091a801c0a0101b80240a0093020240a00982001c08009", + "0x6e00900e3525c0071b8024c08091b80252a007012024c08090120252a007", + "0xa8093023700a00941801c0a0101b860404967012e08039671a8370c0809", + "0xc08090200259600700e6040481501212803807302024038dc00e59404cb9", + "0xc0d41b80240c0093020240c00965a01c6a0093020246a0091a801c0c009", + "0x8580700e6040481001298403807302024b280909401c0398101201c6e007", + "0x38d4012604048d40123500381d01260404964012cc00396401260404807", + "0x1718072ce3506e18101202404ae300e0746a0dc0120740498101207404b2d", + "0xb20181b92e8b28151b86046e0142ce01c6a2e500e050080dc3020246e009", + "0x38200126040481d0128a00381d0126040480721601c0398101201c6e007", + "0xc0809046026050071cc024c080902a0246a007046024c08090405946e409", + "0x38260126040480721601c0398101201c6e00700f2ec048071e601c76809", + "0xc08090300246a0070cc024c08091e45906e40900e3c80498101209804a26", + "0x6a2e500e0a40d8dc3020247680981801c768093020243300981401c73009", + "0x158dc4a401c0398101201c6e0071f20b86e4bc0560b46e1811b80406a0e6", + "0x16809302024168091a801c7d809302024148301b9038038300126040481b", + "0x48074a201c0398101201c6e0071f60b46e0091f6024c08091f602607807", + "0x7f8341b86046e0fe0360b86a2e500e3f8049810123f804c1000e3f804981", + "0x6e40e00e0e0049810123fc7c8dc4a401c0398101201c6e0072024006e4bd", + "0x820093020248200981e01c1a0093020241a0091a801c8200930202414838", + "0x808f91b8948038073020241480913c01c0398101201c6e0072080d06e009", + "0x6e40e00e420049810120f004a2600e0f00498101201c8580720a024c0809", + "0x1f8093020241f80981e01c80009302024800091a801c1f80930202484105", + "0x396700e3506e00900e384618e200e59c118c31c401cb38e707e4006e009", + "0x618e200e59c118c31c401cb389e1a8370048071c230c710072ce08c618e2", + "0xb3af21a8370048071c230c710072ce08c618e200e59d280d41b8024038e1", + "0x710072ce08c618e200e59de88d41b8024038e11863880396704630c71007", + "0x6e00900e384618e21fa01c080231863887e8070203386a0dc01201c708c3", + "0x710fd00e0425f8d41b8024038e11863880396704630c710072cf2f8b38d4", + "0x710072ce08c618e200e59e601671a8370048071c230c710fd00e040118c3", + "0x2610d41b8024038e11863880396704630c710072cf3046a0dc01201c708c3", + "0x7e8070f6052619671a8370048071c230c710070f6040118c31c401c3d810", + "0x38d404601c6e4c402059c6a0dc01201c708c31c43f40387b02808c618e2", + "0x710071a93186a0dc01201c738c31c4350308c6186388b3cc501201c6b023", + "0x48071e230c710072ce150630c31c401c084c71b8024038ee1c401c6a023", + "0x618e200e042648d41b8024038f31c401c6a01d0fe3880396799059c6a0dc", + "0x26580900e0540e8dc03a06c6e4ca2ce3506e00900e3d0618e200e59c2a0c6", + "0x710070293346e00900e3d8710071a808c710071a9330038f504637011809", + "0xd8c61863880381499c040b38d41b8024038f41863880396703a06c630c3", + "0x618e200e59c630c31c401cb3ccf02059c6a0dc01201c7a0c31c401cb381d", + "0x39679a23506e00900e3cc618e21a8074278c31c459e680d41b8024038fa", + "0x381009e318618fd1c401c0a4d21a8370048071f830c710072ce08c618e2", + "0x38fa1863880396718c30c710072cf34c081671a8370048071ce30c7e8e2", + "0xb38d41b8024038e71863f47100702013c630c31fa388038149a83506e009", + "0x7100702b358b38d41b8024038f418638803967036318618e200e0426a810", + "0x3d8e200e0526b81402059c6a0dc01201c7a0c31c401cb384f03606c630c3", + "0xa81d1b80740c0dc9b0040b38d41b8024039031861ec7100702006c630c3", + "0x6a0dc01201c738c31fa1ec7100702813c630c31fa1ec7100702b36404807", + "0x6a06114c30c711679b63700480720e30c710d412a30c710d49b405008167", + "0x6a0dc01201c770e200e3500d854046388038109b83506e00900e424618e2", + "0x6e00900e3c4618e200e59c2a095186388038109bc01c4a80918c0266e967", + "0x4a8c31c401cb3ce01a8370048071e6388038d403a44c710072cf37cb38d4", + "0x48071ec388038d4036074118e200e042708d41b8024038f418638803967", + "0x81671a8370048071e830c710072ce0740d895186388038149c459c6a0dc", + "0x710d409e30c710d49c83506e00900e3e8618e200e59c4a8c31c401cb3ce3", + "0x6e4e701201c0a81d1b80744f0dc9cc01c8b009278026728dc01201c9e0c3", + "0x278951863f4710070293a40391c01246804ce801201c8c02300e35011807", + "0x618e200e59c4a8c31c401cb3cea02059c6a0dc01201c8f0c31fa38803810", + "0x6e00900e478618fd1c401c0804f12a30c7e8e200e052758d41b8024038fa", + "0x6187b1c401c0801b0ea30c3d8e200e052768070ea024630099d8040b38d4", + "0x618fd0f63880381409e254618fd0f6388038159dc040b38d41b802403903", + "0x618e21b93c00480724430c710d41863886e4ef028040b38d41b80240391e", + "0x848c31c4350318a6186388b3cf200e41c0492c0133c40480724430c710d4", + "0x39301863886a0c31c43727a00900e4b8038dc04601c6e4f31a837004807", + "0x27b8dc01201c0c0071b8040080071a93d80480702001c6e01b00e3727a809", + "0x38f1186388039670a830c710072cf3e06e00900e4cc038dc020040038d4", + "0x618e200e0527d0d41b8024038f31c401c6a01d046388039679f23506e009", + "0x396708a30c710072cf3ec081671a83700480720630c710072ce08c0d895", + "0xa81d1b8074080dc9fa0240391601206c9e0dc9f83506e00900e3e8618e2", + "0x7100702013c618fd1c401c084ff01201c9f02300e350118071b93f804807", + "0x6a0dc01201c8f0c31c435025895186388b3d002ce3506e00900e3d0618fd", + "0xa50202059c6a0dc01201c8f0c31fa3880381009e254618fd1c401c0a501", + "0x7100702940c081671a83700480720630c3d8e200e0400d83f1861ec71007", + "0x710d41863886e50402059c6a0dc01201ca08c30f6388038100361d46187b", + "0x618e22cf41c0386701218c04d0601201c838090364b06e50501201c9f8c3", + "0x6e50901201c9782300e350118071b94206a0dc01201c738c31c43509a8c6", + "0x7100702142c6e00900e4f8038dc020040038d4a140240392d00e37011807", + "0x710071a8074118e200e59e861671a83700480724230c710072ce1542a0c3", + "0x6a0dc01201c818c31c401cb382309e06c618e200e052868d41b8024038f3", + "0x7d009236026878d41b8024038fa1863880396705230c710072cf43808167", + "0x38f41fa388039670463f4710072cf4440480722e01c6e01b00e37288007", + "0x39151863880396709e114618e200e042898070ca02425809a243506e009", + "0x3d8072cf4546a0dc01201c8f0c31c435025095186388b3d142ce3506e009", + "0x6187b1c401c0ad1700e40c049140134586a0dc01201c9007b00e3500d83f", + "0x393f01242004d18028040b38d41b80240390f1861ec710070200600d83f", + "0x492c01346c6e00900e0540e81d1a80740e9351a9468039350124d404d19", + "0x6e00900e410038dc04c098038d4a3a0240390500e3700d8071b947003907", + "0x48071c230c710d406c30c710d4a3e3700480720201c6e01002001c6a51e", + "0x852201201c0c0071b8040038dca42024038ff04601c6a02300e372900dc", + "0x6a04f09e30c71167a4659c6a0dc01201c8e0c31c401cb383402030c71007", + "0x48100134946e00900e4cc038dc020040038d4a483506e00900e40c618e2", + "0x29400900e06004810020372938dc01201c998071b8040080071a949803917", + "0x710072cf4a4081671a8370048071f63f4710072ce08c7f0e41fa38803814", + "0xe81d0ca352958070ca02425009a543506e00900e3e4618e200e59c278c3", + "0x338d4a5a3700480702a0740e8d403a074330d4a583700480702a0740e8d4", + "0x708091cc0269780900e4100481b1e4372970dc01201c0a81d03a3500e81d", + "0xb3d3302002403d3201201c0c0090200406e53100e590118dc04602698007", + "0x48071f430c710d41863886e5341a83700480723430c710d4030040618e2", + "0x29c00900e054038dc2ce01c6e53700e4f8048100134d80396501204004d35", + "0x29d00900e4cc038dc02001c6e5391a83700480702001c6e01402004003967", + "0x618e21a813c278c31c459e9d8d41b80240391b1863886a01009e30c71167", + "0x48071ea01c6e01000e3729e80900e060048090123729e0d41b80240391b", + "0x381503a0746a01d03a12c6a53f1b80240381503a0746a01d03a1286a53e", + "0x6a54200e040048100135046e00900e0540e81d1a80740e8631a95006e009", + "0x6e5441b80240393300e3700801000e352a18dc01201c6a0071b804008007", + "0x48071a95186e00900e370038dc012024038d4a8a0240381503a3700e861", + "0x80071a95206e00900e4f8038dc020040038d4a8e3700480701201c6e009", + "0xa923700480720201c6e010" + ], + "sierra_program_debug_info": { + "type_names": [ + [0, "RangeCheck"], + [1, "u128"], + [2, "Tuple"], + [3, "core::integer::u512"], + [4, "U128MulGuarantee"], + [5, "core::integer::u256"], + [6, "NonZero"], + [7, "Unit"], + [8, "core::option::Option::>"], + [9, "core::bool"], + [10, "core::option::Option::"], + [11, "Array"], + [12, "Snapshot>"], + [13, "core::array::Span::"], + [ + 14, + "core::result::Result::, core::array::Array::>" + ], + [15, "Tuple"], + [16, "u32"], + [17, "core::result::Result::"], + [18, "openzeppelin::introspection::src5::SRC5Component::Event"], + [19, "felt252"], + [20, "Tuple"], + [21, "Tuple>"], + [22, "core::panics::Panic"], + [23, "Tuple>"], + [24, "core::panics::PanicResult::<((core::felt252, core::felt252),)>"], + [25, "Tuple, felt252>"], + [26, "core::panics::PanicResult::<(core::array::Span::, core::felt252)>"], + [27, "Tuple"], + [28, "core::starknet::secp256_trait::Signature"], + [29, "core::option::Option::"], + [30, "Box"], + [31, "Tuple"], + [32, "Tuple"], + [33, "core::panics::PanicResult::<(core::integer::u32,)>"], + [34, "core::option::Option::"], + [35, "Box"], + [ + 36, + "core::result::Result::, core::array::Array::>" + ], + [ + 37, + "openzeppelin::introspection::src5::SRC5Component::__member_module_SRC5_supported_interfaces::ComponentMemberState" + ], + [ + 38, + "Tuple" + ], + [ + 39, + "core::panics::PanicResult::<(openzeppelin::introspection::src5::SRC5Component::__member_module_SRC5_supported_interfaces::ComponentMemberState, ())>" + ], + [40, "core::result::Result::>"], + [41, "openzeppelin::account::eth_account::EthAccountComponent::OwnerAdded"], + [ + 42, + "openzeppelin::account::eth_account::EthAccountComponent::__member_module_EthAccount_public_key::ComponentMemberState" + ], + [ + 43, + "Tuple" + ], + [ + 44, + "core::panics::PanicResult::<(openzeppelin::account::eth_account::EthAccountComponent::__member_module_EthAccount_public_key::ComponentMemberState, ())>" + ], + [45, "openzeppelin::account::eth_account::EthAccountComponent::OwnerRemoved"], + [46, "openzeppelin::account::eth_account::EthAccountComponent::Event"], + [47, "core::option::Option::"], + [48, "Secp256k1Point"], + [ + 49, + "core::result::Result::>" + ], + [50, "u8"], + [51, "StorageAddress"], + [52, "StorageBaseAddress"], + [53, "Array"], + [54, "Array>"], + [ + 55, + "Tuple, Array>, Unit>" + ], + [ + 56, + "core::panics::PanicResult::<(core::array::Array::, core::array::Array::>, ())>" + ], + [57, "core::option::Option::>"], + [ + 58, + "Tuple, core::option::Option::>>" + ], + [ + 59, + "core::panics::PanicResult::<(core::array::Span::, core::option::Option::>)>" + ], + [60, "ContractAddress"], + [61, "core::option::Option::"], + [62, "ClassHash"], + [63, "openzeppelin::upgrades::upgradeable::UpgradeableComponent::Upgraded"], + [64, "openzeppelin::upgrades::upgradeable::UpgradeableComponent::Event"], + [65, "openzeppelin::presets::eth_account::EthAccountUpgradeable::Event"], + [66, "Box"], + [67, "Box"], + [68, "core::starknet::info::v2::ExecutionInfo"], + [69, "u64"], + [70, "core::starknet::info::BlockInfo"], + [71, "Tuple>"], + [ + 72, + "core::panics::PanicResult::<(core::box::Box::,)>" + ], + [ + 73, + "openzeppelin::introspection::src5::SRC5Component::ComponentState::" + ], + [ + 74, + "Tuple, Unit>" + ], + [ + 75, + "core::panics::PanicResult::<(openzeppelin::introspection::src5::SRC5Component::ComponentState::, ())>" + ], + [76, "Pedersen"], + [77, "Uninitialized"], + [78, "core::option::Option::"], + [79, "Box>"], + [80, "core::option::Option::>>"], + [81, "Snapshot>>"], + [82, "Uninitialized>>>"], + [83, "Tuple"], + [84, "core::panics::PanicResult::<(core::integer::u256,)>"], + [85, "Array"], + [86, "Snapshot>"], + [87, "core::array::Span::"], + [88, "core::starknet::info::v2::ResourceBounds"], + [89, "core::starknet::info::v2::TxInfo"], + [90, "Tuple>"], + [91, "core::panics::PanicResult::<(core::box::Box::,)>"], + [92, "core::starknet::account::Call"], + [93, "core::option::Option::"], + [ + 94, + "Tuple, core::option::Option::>" + ], + [ + 95, + "core::panics::PanicResult::<(core::array::Span::, core::option::Option::)>" + ], + [96, "core::result::Result::<(), core::array::Array::>"], + [97, "NonZero"], + [98, "Tuple"], + [99, "core::panics::PanicResult::<(core::starknet::contract_address::ContractAddress,)>"], + [ + 100, + "openzeppelin::account::eth_account::EthAccountComponent::ComponentState::" + ], + [ + 101, + "Tuple, Unit>" + ], + [ + 102, + "core::panics::PanicResult::<(openzeppelin::account::eth_account::EthAccountComponent::ComponentState::, ())>" + ], + [103, "core::option::Option::"], + [104, "Tuple>"], + [ + 105, + "core::panics::PanicResult::<(core::option::Option::,)>" + ], + [ + 106, + "core::result::Result::, core::array::Array::>" + ], + [107, "Tuple"], + [108, "core::option::Option::<(core::integer::u256, core::integer::u256)>"], + [109, "Tuple>"], + [110, "core::panics::PanicResult::<((core::integer::u256, core::integer::u256),)>"], + [ + 111, + "core::result::Result::<(core::integer::u256, core::integer::u256), core::array::Array::>" + ], + [112, "core::array::Span::>"], + [113, "Box"], + [114, "core::option::Option::>"], + [ + 115, + "openzeppelin::upgrades::upgradeable::UpgradeableComponent::ComponentState::" + ], + [ + 116, + "Tuple, Unit>" + ], + [ + 117, + "core::panics::PanicResult::<(openzeppelin::upgrades::upgradeable::UpgradeableComponent::ComponentState::, ())>" + ], + [118, "Tuple"], + [119, "core::panics::PanicResult::<((),)>"], + [120, "Tuple"], + [121, "core::panics::PanicResult::<(core::bool,)>"], + [122, "Poseidon"], + [ + 123, + "Tuple, core::option::Option::>" + ], + [ + 124, + "core::panics::PanicResult::<(core::array::Span::, core::option::Option::)>" + ], + [125, "Tuple"], + [126, "core::panics::PanicResult::<(core::starknet::secp256k1::Secp256k1Point,)>"], + [127, "core::option::Option::>"], + [ + 128, + "Tuple, core::option::Option::>>" + ], + [ + 129, + "core::panics::PanicResult::<(core::array::Span::, core::option::Option::>)>" + ], + [130, "core::option::Option::"], + [131, "Uninitialized"], + [132, "Tuple"], + [133, "core::panics::PanicResult::<(core::felt252,)>"], + [134, "Tuple, Unit>"], + [135, "core::panics::PanicResult::<(core::array::Array::, ())>"], + [136, "Tuple>>"], + [ + 137, + "core::panics::PanicResult::<(core::array::Array::>,)>" + ], + [138, "core::option::Option::>"], + [ + 139, + "Tuple, core::option::Option::>>" + ], + [ + 140, + "core::panics::PanicResult::<(core::array::Span::, core::option::Option::>)>" + ], + [141, "System"], + [142, "Uninitialized"], + [143, "Tuple>"], + [144, "openzeppelin::presets::eth_account::EthAccountUpgradeable::ContractState"], + [ + 145, + "Tuple" + ], + [ + 146, + "core::panics::PanicResult::<(openzeppelin::presets::eth_account::EthAccountUpgradeable::ContractState, ())>" + ], + [147, "BuiltinCosts"], + [148, "core::panics::PanicResult::<(core::array::Span::,)>"], + [149, "core::option::Option::"], + [150, "GasBuiltin"] + ], + "libfunc_names": [ + [0, "revoke_ap_tracking"], + [1, "withdraw_gas"], + [2, "branch_align"], + [3, "store_temp"], + [4, "store_temp>"], + [5, "function_call"], + [6, "enum_match>"], + [7, "struct_deconstruct>"], + [8, "array_snapshot_pop_front"], + [9, "drop>>"], + [10, "drop>"], + [11, "drop"], + [12, "array_new"], + [13, "felt252_const<7733229381460288120802334208475838166080759535023995805565484692595>"], + [14, "store_temp"], + [15, "array_append"], + [16, "struct_construct"], + [17, "struct_construct>>"], + [18, "enum_init,)>, 1>"], + [19, "store_temp"], + [20, "store_temp"], + [21, "store_temp,)>>"], + [22, "get_builtin_costs"], + [23, "store_temp"], + [24, "withdraw_gas_all"], + [ + 25, + "struct_construct" + ], + [ + 26, + "struct_construct>" + ], + [ + 27, + "struct_construct" + ], + [ + 28, + "struct_construct>" + ], + [ + 29, + "struct_construct>" + ], + [ + 30, + "struct_construct" + ], + [31, "store_temp"], + [ + 32, + "function_call" + ], + [ + 33, + "enum_match>" + ], + [ + 34, + "drop>" + ], + [35, "snapshot_take>"], + [36, "drop>"], + [37, "struct_construct>"], + [38, "struct_construct>>"], + [39, "enum_init,)>, 0>"], + [40, "felt252_const<375233589013918064796019>"], + [41, "drop"], + [42, "drop>"], + [ + 43, + "felt252_const<485748461484230571791265682659113160264223489397539653310998840191492913>" + ], + [44, "alloc_local"], + [45, "finalize_locals"], + [ + 46, + "function_call::deserialize>" + ], + [ + 47, + "enum_match, core::option::Option::>)>>" + ], + [ + 48, + "struct_deconstruct, core::option::Option::>>>" + ], + [ + 49, + "enum_match>>" + ], + [50, "drop>"], + [51, "drop>"], + [ + 52, + "snapshot_take" + ], + [53, "drop"], + [54, "store_temp>"], + [ + 55, + "function_call::__execute__>" + ], + [56, "store_local"], + [ + 57, + "enum_match>,)>>" + ], + [58, "struct_deconstruct>>>"], + [59, "snapshot_take>>"], + [60, "drop>>"], + [61, "store_temp>>>"], + [62, "store_temp>"], + [ + 63, + "function_call, core::array::SpanFelt252Serde, core::array::SpanDrop::>::serialize>" + ], + [64, "enum_match, ())>>"], + [65, "struct_deconstruct, Unit>>"], + [ + 66, + "function_call::__validate__>" + ], + [67, "enum_match>"], + [68, "struct_deconstruct>"], + [69, "snapshot_take"], + [70, "drop"], + [71, "function_call"], + [72, "alloc_local"], + [73, "function_call"], + [74, "enum_match>"], + [75, "store_local"], + [ + 76, + "function_call::deserialize>" + ], + [ + 77, + "enum_match, core::option::Option::>)>>" + ], + [ + 78, + "struct_deconstruct, core::option::Option::>>>" + ], + [79, "enum_match>>"], + [ + 80, + "function_call::is_valid_signature>" + ], + [ + 81, + "felt252_const<485748461484230571791265682659113160264223489397539653310998840191492914>" + ], + [82, "drop>"], + [ + 83, + "function_call::isValidSignature>" + ], + [ + 84, + "function_call::get_public_key>" + ], + [85, "enum_match>"], + [86, "struct_deconstruct>"], + [87, "snapshot_take"], + [88, "drop"], + [89, "store_temp"], + [ + 90, + "function_call" + ], + [ + 91, + "function_call" + ], + [ + 92, + "enum_match, core::option::Option::)>>" + ], + [ + 93, + "struct_deconstruct, core::option::Option::>>" + ], + [94, "enum_match>"], + [95, "store_temp"], + [ + 96, + "function_call::set_public_key>" + ], + [ + 97, + "function_call::getPublicKey>" + ], + [ + 98, + "function_call::setPublicKey>" + ], + [ + 99, + "function_call::__validate_declare__>" + ], + [ + 100, + "function_call::__validate_deploy__>" + ], + [ + 101, + "felt252_const<485748461484230571791265682659113160264223489397539653310998840191492915>" + ], + [102, "store_temp"], + [ + 103, + "function_call::supports_interface>" + ], + [104, "enum_match>"], + [105, "struct_deconstruct>"], + [106, "snapshot_take"], + [107, "drop"], + [108, "store_temp"], + [109, "function_call"], + [ + 110, + "function_call" + ], + [111, "class_hash_try_from_felt252"], + [112, "enum_init, 0>"], + [113, "store_temp>"], + [114, "struct_construct"], + [115, "enum_init, 1>"], + [ + 116, + "struct_deconstruct" + ], + [ + 117, + "snapshot_take>" + ], + [ + 118, + "function_call::assert_only_self>" + ], + [119, "enum_match>"], + [120, "drop>"], + [ + 121, + "function_call::_upgrade>" + ], + [ + 122, + "enum_match, ())>>" + ], + [ + 123, + "struct_deconstruct, Unit>>" + ], + [ + 124, + "struct_construct>" + ], + [ + 125, + "enum_init, 0>" + ], + [ + 126, + "store_temp>" + ], + [ + 127, + "drop>" + ], + [ + 128, + "drop>" + ], + [ + 129, + "enum_init, 1>" + ], + [ + 130, + "drop>" + ], + [131, "disable_ap_tracking"], + [132, "enum_init>, 0>"], + [133, "store_temp>>"], + [134, "store_temp>>"], + [135, "jump"], + [136, "enum_init>, 1>"], + [137, "enum_match>>"], + [138, "unbox"], + [139, "array_new"], + [140, "rename"], + [ + 141, + "function_call>" + ], + [ + 142, + "enum_init>, 1>" + ], + [ + 143, + "struct_construct, core::option::Option::>>>" + ], + [ + 144, + "enum_init, core::option::Option::>)>, 0>" + ], + [ + 145, + "store_temp, core::option::Option::>)>>" + ], + [ + 146, + "function_call" + ], + [ + 147, + "function_call::__execute__>" + ], + [148, "dup>>>"], + [149, "array_len>"], + [150, "u32_to_felt252"], + [151, "struct_construct>>"], + [152, "store_temp>>"], + [ + 153, + "function_call, core::array::SpanFelt252Serde, core::array::SpanDrop::>>" + ], + [ + 154, + "function_call::validate_transaction>" + ], + [155, "enum_init, 0>"], + [156, "store_temp>"], + [157, "enum_init, 1>"], + [ + 158, + "function_call>" + ], + [159, "enum_init>, 1>"], + [ + 160, + "struct_construct, core::option::Option::>>>" + ], + [ + 161, + "enum_init, core::option::Option::>)>, 0>" + ], + [ + 162, + "store_temp, core::option::Option::>)>>" + ], + [ + 163, + "function_call::is_valid_signature>" + ], + [ + 164, + "function_call::get_public_key>" + ], + [165, "rename"], + [166, "function_call"], + [ + 167, + "function_call>::unwrap::>>" + ], + [ + 168, + "enum_match>" + ], + [169, "struct_deconstruct>>"], + [170, "snapshot_take>"], + [171, "drop>"], + [172, "store_temp>"], + [ + 173, + "function_call::serialize>" + ], + [174, "struct_construct, Unit>>"], + [175, "enum_init, ())>, 0>"], + [176, "store_temp, ())>>"], + [177, "enum_init, ())>, 1>"], + [ + 178, + "function_call::deserialize>" + ], + [179, "enum_match>"], + [180, "struct_deconstruct>"], + [181, "secp256k1_new_syscall"], + [ + 182, + "enum_init, core::array::Array::>, 0>" + ], + [ + 183, + "store_temp, core::array::Array::>>" + ], + [ + 184, + "enum_init, core::array::Array::>, 1>" + ], + [ + 185, + "function_call>::unwrap_syscall>" + ], + [ + 186, + "enum_match,)>>" + ], + [ + 187, + "struct_deconstruct>>" + ], + [ + 188, + "struct_construct, core::option::Option::>>" + ], + [ + 189, + "enum_init, core::option::Option::)>, 0>" + ], + [ + 190, + "store_temp, core::option::Option::)>>" + ], + [ + 191, + "enum_init, core::option::Option::)>, 1>" + ], + [192, "enum_init, 1>"], + [ + 193, + "function_call::set_public_key>" + ], + [ + 194, + "enum_match, ())>>" + ], + [ + 195, + "struct_deconstruct, Unit>>" + ], + [ + 196, + "function_call::getPublicKey>" + ], + [ + 197, + "function_call::setPublicKey>" + ], + [ + 198, + "function_call" + ], + [ + 199, + "function_call::supports_interface>" + ], + [200, "rename"], + [201, "enum_match"], + [202, "felt252_const<0>"], + [203, "felt252_const<1>"], + [ + 204, + "function_call::initializer>" + ], + [205, "function_call"], + [ + 206, + "enum_match>" + ], + [207, "function_call"], + [208, "struct_deconstruct>"], + [209, "contract_address_to_felt252"], + [210, "felt252_sub"], + [211, "felt252_is_zero"], + [212, "struct_construct>"], + [213, "enum_init, 0>"], + [214, "store_temp>"], + [215, "drop>"], + [216, "felt252_const<1703024676371825287828505636715884912155634219360997500260>"], + [217, "enum_init, 1>"], + [218, "drop>"], + [219, "dup"], + [220, "class_hash_to_felt252"], + [221, "enum_init"], + [222, "enum_init"], + [223, "bool_not_impl"], + [224, "felt252_const<423223302514606273361610285513559705916828015570713607238255>"], + [ + 225, + "enum_init, ())>, 1>" + ], + [ + 226, + "store_temp, ())>>" + ], + [227, "replace_class_syscall"], + [228, "enum_init>, 0>"], + [229, "store_temp>>"], + [230, "enum_init>, 1>"], + [ + 231, + "function_call>::unwrap::>>" + ], + [ + 232, + "struct_construct" + ], + [233, "store_temp"], + [ + 234, + "function_call>" + ], + [235, "dup"], + [ + 236, + "enum_init>, 0>" + ], + [237, "function_call"], + [ + 238, + "enum_match, core::option::Option::)>>" + ], + [ + 239, + "struct_deconstruct, core::option::Option::>>" + ], + [240, "enum_match>"], + [241, "array_append"], + [ + 242, + "enum_init, core::option::Option::>)>, 1>" + ], + [243, "function_call"], + [ + 244, + "enum_match,)>>" + ], + [245, "struct_deconstruct>>"], + [246, "unbox"], + [247, "struct_deconstruct"], + [248, "drop"], + [249, "drop"], + [250, "drop>"], + [251, "drop"], + [252, "function_call"], + [253, "u128_const<0>"], + [254, "u128_const<1>"], + [255, "struct_construct"], + [256, "dup"], + [257, "store_temp"], + [258, "function_call"], + [259, "enable_ap_tracking"], + [260, "function_call"], + [261, "enum_match>"], + [262, "struct_deconstruct>"], + [ + 263, + "felt252_const<479358831119431994379417587956477606612331826092985369960038669776154478>" + ], + [ + 264, + "enum_init>,)>, 1>" + ], + [ + 265, + "store_temp>,)>>" + ], + [266, "drop"], + [267, "function_call"], + [268, "felt252_const<111609425190703942063128945407568851162756752710068754602288498>"], + [269, "alloc_local>>>"], + [270, "struct_deconstruct>>"], + [271, "array_snapshot_pop_front>"], + [ + 272, + "enum_init>>, 0>" + ], + [ + 273, + "store_temp>>>" + ], + [ + 274, + "enum_init>>, 1>" + ], + [275, "store_local>>>"], + [ + 276, + "enum_match>>>" + ], + [277, "unbox>"], + [278, "function_call"], + [279, "drop>>>"], + [280, "drop>>>>"], + [281, "drop>>"], + [ + 282, + "function_call::_is_valid_signature>" + ], + [ + 283, + "felt252_const<1872495434060281228044599952954990650829421195675704593774326882595429>" + ], + [284, "enum_init, 1>"], + [285, "store_temp>"], + [286, "felt252_const<370462705988>"], + [287, "struct_construct>"], + [288, "enum_init, 0>"], + [289, "enum_init>, 0>"], + [ + 290, + "enum_init, core::option::Option::>)>, 1>" + ], + [ + 291, + "struct_deconstruct>" + ], + [ + 292, + "function_call>, openzeppelin::account::eth_account::EthAccountComponent::__member_module_EthAccount_public_key::ComponentMemberStateDrop>::read>" + ], + [293, "secp256k1_get_xy_syscall"], + [294, "struct_construct>"], + [ + 295, + "enum_init>, 0>" + ], + [ + 296, + "store_temp>>" + ], + [ + 297, + "enum_init>, 1>" + ], + [298, "felt252_const<30828113188794245257250221355944970489240709081949230>"], + [ + 299, + "function_call>::expect::>>" + ], + [300, "function_call"], + [301, "function_call"], + [302, "enum_match>"], + [303, "enum_init, 0>"], + [304, "store_temp>"], + [305, "enum_init, 1>"], + [ + 306, + "enum_match, core::array::Array::>>" + ], + [ + 307, + "struct_construct>>" + ], + [ + 308, + "enum_init,)>, 0>" + ], + [ + 309, + "store_temp,)>>" + ], + [ + 310, + "enum_init,)>, 1>" + ], + [ + 311, + "snapshot_take" + ], + [ + 312, + "function_call" + ], + [ + 313, + "struct_construct" + ], + [314, "store_temp"], + [ + 315, + "function_call>" + ], + [ + 316, + "function_call::_set_public_key>" + ], + [ + 317, + "enum_init, ())>, 1>" + ], + [ + 318, + "store_temp, ())>>" + ], + [ + 319, + "drop" + ], + [ + 320, + "felt252_const<1797054754729183305928171726271749999318198861813713898581160688510183841877>" + ], + [321, "struct_construct>"], + [322, "enum_init, 0>"], + [323, "store_temp>"], + [ + 324, + "struct_deconstruct>" + ], + [ + 325, + "function_call, openzeppelin::introspection::src5::SRC5Component::__member_module_SRC5_supported_interfaces::ComponentMemberStateDrop, core::traits::PanicDestructForDestruct::>>::read>" + ], + [326, "alloc_local"], + [ + 327, + "felt252_const<1270010605630597976495846281167968799381097569185364931397797212080166453709>" + ], + [ + 328, + "function_call::register_interface>" + ], + [329, "store_local"], + [ + 330, + "enum_match, ())>>" + ], + [ + 331, + "drop, Unit>>" + ], + [332, "function_call"], + [ + 333, + "enum_match,)>>" + ], + [334, "struct_deconstruct>>"], + [335, "unbox"], + [336, "struct_deconstruct"], + [337, "drop>"], + [338, "drop>"], + [339, "struct_construct>"], + [ + 340, + "enum_init, 0>" + ], + [ + 341, + "store_temp>" + ], + [ + 342, + "enum_init, 1>" + ], + [ + 343, + "function_call>::expect::>>" + ], + [ + 344, + "function_call" + ], + [345, "enum_init"], + [346, "store_temp"], + [ + 347, + "function_call>>" + ], + [ + 348, + "struct_construct, Unit>>" + ], + [ + 349, + "enum_init, ())>, 0>" + ], + [ + 350, + "function_call" + ], + [ + 351, + "enum_match>" + ], + [352, "function_call"], + [ + 353, + "enum_match, core::option::Option::>)>>" + ], + [ + 354, + "struct_deconstruct, core::option::Option::>>>" + ], + [355, "enum_match>>"], + [356, "struct_construct"], + [357, "enum_init, 0>"], + [ + 358, + "struct_construct, core::option::Option::>>" + ], + [ + 359, + "enum_init, core::option::Option::)>, 0>" + ], + [ + 360, + "store_temp, core::option::Option::)>>" + ], + [361, "enum_init, 1>"], + [ + 362, + "enum_init, core::option::Option::)>, 1>" + ], + [363, "struct_construct>>"], + [ + 364, + "enum_init,)>, 0>" + ], + [ + 365, + "store_temp,)>>" + ], + [ + 366, + "enum_init,)>, 1>" + ], + [367, "u128s_from_felt252"], + [368, "struct_deconstruct"], + [369, "dup"], + [370, "u128_overflowing_sub"], + [371, "u128_eq"], + [372, "function_call"], + [373, "struct_construct>"], + [374, "enum_init, 0>"], + [375, "store_temp>"], + [376, "felt252_const<39879774624079483812136948410799859986295>"], + [377, "enum_init, 1>"], + [378, "array_new>"], + [379, "store_temp>>"], + [380, "function_call"], + [ + 381, + "enum_match, core::array::Array::>, ())>>" + ], + [ + 382, + "struct_deconstruct, Array>, Unit>>" + ], + [383, "struct_construct>>>"], + [ + 384, + "enum_init>,)>, 0>" + ], + [385, "dup>"], + [386, "rename>"], + [387, "array_len"], + [ + 388, + "function_call>" + ], + [389, "function_call"], + [390, "enum_init, 1>"], + [ + 391, + "storage_base_address_const<811828986149445483201373697210878171463199255528418921672997795486516624336>" + ], + [392, "dup"], + [393, "storage_address_from_base"], + [394, "u32_const<0>"], + [395, "dup"], + [396, "store_temp"], + [397, "store_temp"], + [398, "storage_read_syscall"], + [399, "u8_const<1>"], + [400, "store_temp"], + [401, "storage_address_from_base_and_offset"], + [402, "struct_construct>"], + [403, "store_temp>"], + [ + 404, + "function_call" + ], + [ + 405, + "enum_init>, 0>" + ], + [ + 406, + "store_temp>>" + ], + [ + 407, + "enum_init, 1>" + ], + [ + 408, + "store_temp>" + ], + [409, "drop"], + [ + 410, + "enum_init>, 1>" + ], + [ + 411, + "function_call::unwrap_syscall>" + ], + [ + 412, + "enum_match>>" + ], + [413, "struct_construct>>"], + [ + 414, + "enum_init, 0>" + ], + [ + 415, + "store_temp>" + ], + [ + 416, + "enum_init, 1>" + ], + [417, "rename"], + [418, "u128_to_felt252"], + [419, "dup>>"], + [420, "function_call"], + [421, "enum_match>"], + [422, "enum_init, 0>"], + [423, "store_temp>"], + [424, "rename"], + [425, "enum_init, 1>"], + [426, "function_call"], + [ + 427, + "function_call" + ], + [428, "enum_init"], + [ + 429, + "struct_construct, Unit>>" + ], + [ + 430, + "enum_init, ())>, 0>" + ], + [431, "dup"], + [ + 432, + "function_call>, openzeppelin::account::eth_account::EthAccountComponent::__member_module_EthAccount_public_key::ComponentMemberStateDrop>::write>" + ], + [ + 433, + "enum_match>" + ], + [ + 434, + "struct_deconstruct>" + ], + [ + 435, + "struct_construct" + ], + [436, "store_temp"], + [ + 437, + "function_call>" + ], + [ + 438, + "drop>" + ], + [ + 439, + "function_call" + ], + [ + 440, + "enum_init>, 0>" + ], + [441, "store_temp>>"], + [ + 442, + "enum_init>, 1>" + ], + [ + 443, + "function_call::unwrap_syscall>" + ], + [ + 444, + "function_call, openzeppelin::introspection::src5::SRC5Component::__member_module_SRC5_supported_interfaces::ComponentMemberStateDrop, core::traits::PanicDestructForDestruct::>>::write>" + ], + [ + 445, + "enum_match>" + ], + [ + 446, + "struct_deconstruct>" + ], + [ + 447, + "struct_construct, Unit>>" + ], + [ + 448, + "enum_init, ())>, 0>" + ], + [ + 449, + "store_temp, ())>>" + ], + [ + 450, + "enum_init, ())>, 1>" + ], + [451, "get_execution_info_v2_syscall"], + [ + 452, + "enum_init, core::array::Array::>, 0>" + ], + [ + 453, + "store_temp, core::array::Array::>>" + ], + [ + 454, + "enum_init, core::array::Array::>, 1>" + ], + [ + 455, + "function_call>::unwrap_syscall>" + ], + [ + 456, + "store_temp,)>>" + ], + [457, "enum_match>>"], + [458, "enum_init"], + [459, "store_temp"], + [ + 460, + "function_call::into>" + ], + [461, "snapshot_take"], + [462, "drop"], + [ + 463, + "function_call" + ], + [464, "emit_event_syscall"], + [465, "function_call::unwrap_syscall>"], + [466, "struct_deconstruct>"], + [467, "contract_address_try_from_felt252"], + [ + 468, + "enum_init, 0>" + ], + [ + 469, + "store_temp>" + ], + [ + 470, + "enum_init, 1>" + ], + [471, "function_call"], + [472, "enum_match>"], + [473, "array_slice"], + [474, "function_call"], + [475, "enum_match>"], + [476, "struct_deconstruct>"], + [477, "enum_init>, 0>"], + [ + 478, + "struct_construct, core::option::Option::>>>" + ], + [ + 479, + "enum_init, core::option::Option::>)>, 0>" + ], + [ + 480, + "store_temp, core::option::Option::>)>>" + ], + [481, "felt252_const<1637570914057682275393755530660268060279989363>"], + [ + 482, + "enum_init, core::option::Option::>)>, 1>" + ], + [483, "enum_init>, 1>"], + [484, "function_call"], + [485, "struct_deconstruct>"], + [486, "array_pop_front"], + [487, "unbox"], + [488, "store_temp>"], + [489, "store_temp"], + [490, "function_call"], + [491, "enum_match,)>>"], + [492, "struct_deconstruct>>"], + [493, "array_append>"], + [ + 494, + "enum_init, core::array::Array::>, ())>, 1>" + ], + [ + 495, + "store_temp, core::array::Array::>, ())>>" + ], + [ + 496, + "struct_construct, Array>, Unit>>" + ], + [ + 497, + "enum_init, core::array::Array::>, ())>, 0>" + ], + [498, "function_call"], + [499, "enum_match>"], + [500, "dup"], + [501, "struct_deconstruct"], + [ + 502, + "function_call>" + ], + [503, "drop"], + [504, "store_temp"], + [ + 505, + "function_call>" + ], + [ + 506, + "function_call::eq>" + ], + [507, "felt252_const<29721761890975875353235833581453094220424382983267374>"], + [508, "felt252_const<134037489480732198139164712521313938233681494085204129660105774>"], + [509, "struct_deconstruct>"], + [510, "u128_const<2>"], + [511, "function_call"], + [512, "function_call"], + [513, "function_call"], + [514, "snapshot_take"], + [515, "function_call"], + [516, "secp256k1_get_point_from_x_syscall"], + [517, "struct_construct>"], + [ + 518, + "enum_init, 0>" + ], + [ + 519, + "felt252_const<575578373468682724079685257561687680771087460484367228690116535514985518>" + ], + [ + 520, + "enum_match>>" + ], + [521, "enum_init, 0>"], + [522, "store_temp>"], + [523, "enum_init, 1>"], + [524, "struct_construct>"], + [525, "store_temp>"], + [526, "function_call"], + [ + 527, + "enum_match, core::felt252)>>" + ], + [528, "struct_deconstruct, felt252>>"], + [529, "enum_init"], + [530, "store_temp"], + [ + 531, + "function_call" + ], + [532, "enum_match>"], + [533, "struct_deconstruct>>"], + [534, "storage_write_syscall"], + [535, "rename"], + [536, "rename"], + [537, "rename>>"], + [ + 538, + "struct_construct>" + ], + [ + 539, + "enum_init, 0>" + ], + [ + 540, + "store_temp>" + ], + [ + 541, + "enum_init, 1>" + ], + [ + 542, + "function_call" + ], + [ + 543, + "drop" + ], + [ + 544, + "felt252_const<29856869448526851354677579421814598404948672607251612773571742675033995705>" + ], + [545, "pedersen"], + [546, "storage_base_address_from_felt252"], + [547, "enum_match>>"], + [ + 548, + "snapshot_take" + ], + [549, "bool_to_felt252"], + [ + 550, + "struct_construct>" + ], + [ + 551, + "enum_init, 0>" + ], + [ + 552, + "store_temp>" + ], + [ + 553, + "enum_init, 1>" + ], + [ + 554, + "enum_match, core::array::Array::>>" + ], + [555, "struct_construct>>"], + [ + 556, + "enum_init,)>, 0>" + ], + [ + 557, + "enum_init,)>, 1>" + ], + [558, "enum_match"], + [ + 559, + "function_call" + ], + [560, "rename>"], + [561, "store_temp"], + [ + 562, + "function_call" + ], + [ + 563, + "function_call" + ], + [564, "u32_try_from_felt252"], + [565, "enum_init, 0>"], + [566, "store_temp>"], + [567, "enum_init, 1>"], + [568, "u32_overflowing_sub"], + [569, "enum_init, 0>"], + [570, "store_temp>"], + [571, "enum_init, 1>"], + [572, "felt252_const<155785504329508738615720351733824384887>"], + [ + 573, + "function_call::expect::>" + ], + [574, "store_temp>"], + [575, "u128_overflowing_add"], + [576, "struct_construct>"], + [577, "store_temp>"], + [578, "struct_deconstruct>"], + [579, "struct_construct>"], + [580, "store_temp>"], + [581, "store_temp"], + [582, "struct_deconstruct"], + [583, "call_contract_syscall"], + [ + 584, + "enum_init, core::array::Array::>, 0>" + ], + [ + 585, + "store_temp, core::array::Array::>>" + ], + [ + 586, + "enum_init, core::array::Array::>, 1>" + ], + [ + 587, + "function_call>::unwrap_syscall>" + ], + [588, "function_call"], + [589, "enum_match>"], + [590, "struct_construct"], + [591, "enum_init, 0>"], + [592, "store_temp>"], + [593, "enum_init, 1>"], + [ + 594, + "function_call::eq>" + ], + [595, "function_call"], + [ + 596, + "function_call" + ], + [597, "function_call"], + [598, "function_call"], + [599, "enum_match>>"], + [ + 600, + "function_call>::try_into>" + ], + [601, "dup>"], + [602, "u256_guarantee_inv_mod_n"], + [603, "store_temp"], + [604, "function_call"], + [605, "unwrap_non_zero"], + [606, "store_temp>"], + [607, "function_call"], + [ + 608, + "function_call>" + ], + [609, "function_call"], + [610, "function_call"], + [611, "enum_init, 0>"], + [612, "drop>"], + [613, "drop>"], + [614, "drop>>"], + [615, "u256_safe_divmod"], + [616, "felt252_const<5420154128225384396790819266608>"], + [617, "snapshot_take"], + [ + 618, + "function_call::eq>" + ], + [619, "struct_deconstruct>"], + [620, "felt252_add"], + [621, "hades_permutation"], + [622, "dup"], + [623, "drop"], + [ + 624, + "enum_init, core::felt252)>, 1>" + ], + [ + 625, + "store_temp, core::felt252)>>" + ], + [626, "struct_construct, felt252>>"], + [ + 627, + "enum_init, core::felt252)>, 0>" + ], + [628, "drop>"], + [629, "function_call"], + [630, "felt252_const<2>"], + [631, "felt252_mul"], + [632, "struct_construct>>"], + [633, "enum_init, 0>"], + [634, "store_temp>"], + [635, "enum_init, 1>"], + [636, "enum_init"], + [637, "enum_match"], + [ + 638, + "felt252_const<1610331728778078893946407512609881658931720321973668761376942902098853979009>" + ], + [ + 639, + "function_call" + ], + [ + 640, + "felt252_const<22344655548567333405387866802074085172395779041116519548464544628677498541>" + ], + [ + 641, + "function_call" + ], + [642, "enum_match"], + [643, "enum_match"], + [ + 644, + "felt252_const<1291924484015741933195105472014600539495279993452337828418116470835452386035>" + ], + [ + 645, + "function_call" + ], + [646, "enum_match>"], + [647, "struct_construct>"], + [648, "enum_init, 0>"], + [649, "enum_init, 1>"], + [ + 650, + "enum_match, core::array::Array::>>" + ], + [651, "enum_init, 0>"], + [652, "store_temp>"], + [653, "enum_init, 1>"], + [654, "rename"], + [655, "u128_const<248144347276217270074328348468568277313>"], + [656, "u128_const<340282366920938463463374607431768211454>"], + [657, "u128_const<3468390537006497937951914270391801752>"], + [658, "u128_const<161825202758953104525843685720298294023>"], + [659, "u128_const<336417762351022071123394393598455764152>"], + [660, "u128_const<96009999919712310848645357523629574312>"], + [661, "u256_is_zero"], + [662, "enum_init>, 1>"], + [663, "store_temp>>"], + [664, "enum_init>, 0>"], + [665, "function_call::into>"], + [666, "u128_mul_guarantee_verify"], + [667, "function_call"], + [668, "u512_safe_divmod_by_u256"], + [669, "drop"], + [670, "function_call"], + [671, "secp256k1_mul_syscall"], + [672, "secp256k1_add_syscall"], + [673, "u128_const<10633823966279327296825105735305134080>"], + [674, "felt252_const<340282366920938463463374607431768211456>"], + [ + 675, + "struct_deconstruct" + ], + [ + 676, + "struct_deconstruct" + ], + [ + 677, + "struct_deconstruct" + ], + [678, "function_call"], + [679, "u128_guarantee_mul"], + [680, "function_call"], + [681, "struct_deconstruct>"], + [682, "function_call"], + [683, "struct_construct"], + [684, "store_temp"], + [685, "function_call"], + [686, "felt252_const<39879774624085075084607933104993585622903>"], + [687, "rename"], + [688, "struct_construct>"], + [689, "store_temp>"], + [690, "function_call"] + ], + "user_func_names": [ + [ + 0, + "openzeppelin::presets::eth_account::EthAccountUpgradeable::__wrapper__UpgradeableImpl__upgrade" + ], + [ + 1, + "openzeppelin::account::eth_account::EthAccountComponent::__wrapper__SRC6Impl____execute__::" + ], + [ + 2, + "openzeppelin::account::eth_account::EthAccountComponent::__wrapper__SRC6Impl____validate__::" + ], + [ + 3, + "openzeppelin::account::eth_account::EthAccountComponent::__wrapper__SRC6Impl__is_valid_signature::" + ], + [ + 4, + "openzeppelin::account::eth_account::EthAccountComponent::__wrapper__SRC6CamelOnlyImpl__isValidSignature::" + ], + [ + 5, + "openzeppelin::account::eth_account::EthAccountComponent::__wrapper__PublicKeyImpl__get_public_key::" + ], + [ + 6, + "openzeppelin::account::eth_account::EthAccountComponent::__wrapper__PublicKeyImpl__set_public_key::" + ], + [ + 7, + "openzeppelin::account::eth_account::EthAccountComponent::__wrapper__PublicKeyCamelImpl__getPublicKey::" + ], + [ + 8, + "openzeppelin::account::eth_account::EthAccountComponent::__wrapper__PublicKeyCamelImpl__setPublicKey::" + ], + [ + 9, + "openzeppelin::account::eth_account::EthAccountComponent::__wrapper__DeclarerImpl____validate_declare__::" + ], + [ + 10, + "openzeppelin::account::eth_account::EthAccountComponent::__wrapper__DeployableImpl____validate_deploy__::" + ], + [ + 11, + "openzeppelin::introspection::src5::SRC5Component::__wrapper__SRC5Impl__supports_interface::" + ], + [12, "openzeppelin::presets::eth_account::EthAccountUpgradeable::__wrapper__constructor"], + [13, "core::starknet::class_hash::ClassHashSerde::deserialize"], + [14, "openzeppelin::presets::eth_account::EthAccountUpgradeable::UpgradeableImpl::upgrade"], + [ + 15, + "core::array::ArraySerde::::deserialize" + ], + [ + 16, + "openzeppelin::account::eth_account::EthAccountComponent::SRC6Impl::::__execute__" + ], + [ + 17, + "core::array::ArraySerde::, core::array::SpanFelt252Serde, core::array::SpanDrop::>::serialize" + ], + [ + 18, + "openzeppelin::account::eth_account::EthAccountComponent::SRC6Impl::::__validate__" + ], + [19, "core::Felt252Serde::serialize"], + [20, "core::Felt252Serde::deserialize"], + [ + 21, + "core::array::ArraySerde::::deserialize" + ], + [ + 22, + "openzeppelin::account::eth_account::EthAccountComponent::SRC6Impl::::is_valid_signature" + ], + [ + 23, + "openzeppelin::account::eth_account::EthAccountComponent::SRC6CamelOnlyImpl::::isValidSignature" + ], + [ + 24, + "openzeppelin::account::eth_account::EthAccountComponent::PublicKeyImpl::::get_public_key" + ], + [25, "openzeppelin::account::utils::secp256k1::Secp256k1PointSerde::serialize"], + [26, "openzeppelin::account::utils::secp256k1::Secp256k1PointSerde::deserialize"], + [ + 27, + "openzeppelin::account::eth_account::EthAccountComponent::PublicKeyImpl::::set_public_key" + ], + [ + 28, + "openzeppelin::account::eth_account::EthAccountComponent::PublicKeyCamelImpl::::getPublicKey" + ], + [ + 29, + "openzeppelin::account::eth_account::EthAccountComponent::PublicKeyCamelImpl::::setPublicKey" + ], + [ + 30, + "openzeppelin::account::eth_account::EthAccountComponent::DeclarerImpl::::__validate_declare__" + ], + [ + 31, + "openzeppelin::account::eth_account::EthAccountComponent::DeployableImpl::::__validate_deploy__" + ], + [ + 32, + "openzeppelin::introspection::src5::SRC5Component::SRC5Impl::::supports_interface" + ], + [33, "core::BoolSerde::serialize"], + [34, "openzeppelin::presets::eth_account::EthAccountUpgradeable::constructor"], + [ + 35, + "openzeppelin::account::eth_account::EthAccountComponent::InternalImpl::::assert_only_self" + ], + [ + 36, + "openzeppelin::upgrades::upgradeable::UpgradeableComponent::InternalImpl::::_upgrade" + ], + [ + 37, + "core::array::deserialize_array_helper::" + ], + [ + 38, + "openzeppelin::presets::eth_account::EthAccountUpgradeable::HasComponentImpl_EthAccountComponent::get_component" + ], + [ + 39, + "openzeppelin::account::eth_account::EthAccountComponent::SRC6::::__execute__" + ], + [ + 40, + "core::array::serialize_array_helper::, core::array::SpanFelt252Serde, core::array::SpanDrop::>" + ], + [ + 41, + "openzeppelin::account::eth_account::EthAccountComponent::InternalImpl::::validate_transaction" + ], + [ + 42, + "core::array::deserialize_array_helper::" + ], + [ + 43, + "openzeppelin::account::eth_account::EthAccountComponent::SRC6::::is_valid_signature" + ], + [ + 44, + "openzeppelin::account::eth_account::EthAccountComponent::PublicKey::::get_public_key" + ], + [45, "core::starknet::secp256k1::Secp256k1PointImpl::get_coordinates"], + [ + 46, + "core::result::ResultTraitImpl::<(core::integer::u256, core::integer::u256), core::array::Array::>::unwrap::>" + ], + [ + 47, + "core::serde::TupleSize2Serde::::serialize" + ], + [ + 48, + "core::serde::TupleSize2Serde::::deserialize" + ], + [ + 49, + "core::starknet::SyscallResultTraitImpl::>::unwrap_syscall" + ], + [ + 50, + "openzeppelin::account::eth_account::EthAccountComponent::PublicKey::::set_public_key" + ], + [ + 51, + "openzeppelin::account::eth_account::EthAccountComponent::PublicKeyCamel::::getPublicKey" + ], + [ + 52, + "openzeppelin::account::eth_account::EthAccountComponent::PublicKeyCamel::::setPublicKey" + ], + [ + 53, + "openzeppelin::presets::eth_account::EthAccountUpgradeable::HasComponentImpl_SRC5Component::get_component" + ], + [ + 54, + "openzeppelin::introspection::src5::SRC5Component::SRC5::::supports_interface" + ], + [ + 55, + "openzeppelin::account::eth_account::EthAccountComponent::InternalImpl::::initializer" + ], + [56, "core::starknet::info::get_caller_address"], + [57, "core::starknet::info::get_contract_address"], + [ + 58, + "core::result::ResultTraitImpl::<(), core::array::Array::>::unwrap::>" + ], + [ + 59, + "openzeppelin::presets::eth_account::EthAccountUpgradeable::HasComponentImpl_UpgradeableComponent::emit::" + ], + [60, "core::starknet::account::CallSerde::deserialize"], + [61, "core::starknet::info::get_tx_info"], + [62, "core::integer::u256_from_felt252"], + [63, "core::integer::U256PartialOrd::lt"], + [64, "core::integer::U256Add::add"], + [65, "openzeppelin::account::utils::execute_calls"], + [66, "core::array::SpanFelt252Serde::serialize"], + [ + 67, + "openzeppelin::account::eth_account::EthAccountComponent::InternalImpl::::_is_valid_signature" + ], + [ + 68, + "core::starknet::storage::StorageMemberAccessImpl::>, openzeppelin::account::eth_account::EthAccountComponent::__member_module_EthAccount_public_key::ComponentMemberStateDrop>::read" + ], + [ + 69, + "core::result::ResultTraitImpl::<(core::integer::u256, core::integer::u256), core::array::Array::>::expect::>" + ], + [70, "core::integer::u256Serde::serialize"], + [71, "core::integer::u256Serde::deserialize"], + [72, "openzeppelin::account::eth_account::EthAccountComponent::_get_guid_from_public_key"], + [ + 73, + "openzeppelin::presets::eth_account::EthAccountUpgradeable::HasComponentImpl_EthAccountComponent::emit::" + ], + [ + 74, + "openzeppelin::account::eth_account::EthAccountComponent::InternalImpl::::_set_public_key" + ], + [ + 75, + "core::starknet::storage::StorageMapMemberAccessImpl::, openzeppelin::introspection::src5::SRC5Component::__member_module_SRC5_supported_interfaces::ComponentMemberStateDrop, core::traits::PanicDestructForDestruct::>>::read" + ], + [ + 76, + "openzeppelin::introspection::src5::SRC5Component::InternalImpl::::register_interface" + ], + [77, "core::starknet::info::get_execution_info"], + [ + 78, + "core::result::ResultTraitImpl::<(), core::array::Array::>::expect::>" + ], + [ + 79, + "openzeppelin::upgrades::upgradeable::UpgradeableComponent::EventUpgradedIntoEvent::into" + ], + [ + 80, + "openzeppelin::presets::eth_account::EthAccountUpgradeable::ContractStateEventEmitter::emit::>" + ], + [81, "core::starknet::contract_address::ContractAddressSerde::deserialize"], + [82, "core::array::SpanFelt252Serde::deserialize"], + [83, "core::integer::u256_checked_add"], + [84, "openzeppelin::account::utils::execute_calls[expr13]"], + [ + 85, + "core::array::serialize_array_helper::" + ], + [86, "openzeppelin::account::utils::signature::is_valid_eth_signature"], + [87, "openzeppelin::account::utils::secp256k1::Secp256k1PointStorePacking::unpack"], + [ + 88, + "core::starknet::SyscallResultTraitImpl::::unwrap_syscall" + ], + [89, "core::integer::u128_try_from_felt252"], + [90, "core::poseidon::poseidon_hash_span"], + [ + 91, + "openzeppelin::account::eth_account::EthAccountComponent::EventOwnerRemovedIntoEvent::into" + ], + [ + 92, + "core::starknet::storage::StorageMemberAccessImpl::>, openzeppelin::account::eth_account::EthAccountComponent::__member_module_EthAccount_public_key::ComponentMemberStateDrop>::write" + ], + [ + 93, + "openzeppelin::presets::eth_account::EthAccountUpgradeable::HasComponentImpl_EthAccountComponent::emit::" + ], + [ + 94, + "openzeppelin::introspection::src5::SRC5Component::__member_module_SRC5_supported_interfaces::StorageMapComponentMemberStateImpl::address" + ], + [95, "core::starknet::SyscallResultTraitImpl::::unwrap_syscall"], + [ + 96, + "core::starknet::storage::StorageMapMemberAccessImpl::, openzeppelin::introspection::src5::SRC5Component::__member_module_SRC5_supported_interfaces::ComponentMemberStateDrop, core::traits::PanicDestructForDestruct::>>::write" + ], + [ + 97, + "core::starknet::SyscallResultTraitImpl::>::unwrap_syscall" + ], + [ + 98, + "core::traits::TIntoT::::into" + ], + [ + 99, + "openzeppelin::presets::eth_account::EthAccountUpgradeable::EventIsEvent::append_keys_and_data" + ], + [100, "core::starknet::SyscallResultTraitImpl::<()>::unwrap_syscall"], + [101, "core::integer::Felt252TryIntoU32::try_into"], + [102, "core::integer::U32Sub::sub"], + [103, "core::integer::u256_overflowing_add"], + [104, "openzeppelin::account::utils::execute_single_call"], + [105, "core::starknet::secp256_trait::SignatureSerde::deserialize"], + [ + 106, + "core::starknet::secp256_trait::is_signature_entry_valid::" + ], + [ + 107, + "core::starknet::secp256_trait::recover_public_key::" + ], + [ + 108, + "core::traits::PartialEqSnap::::eq" + ], + [109, "core::integer::U256Div::div"], + [110, "core::integer::U256TryIntoU128::try_into"], + [111, "core::integer::U256Rem::rem"], + [112, "core::integer::u256PartialEq::eq"], + [113, "core::poseidon::_poseidon_hash_span_inner"], + [114, "openzeppelin::account::utils::secp256k1::Secp256k1PointStorePacking::pack"], + [ + 115, + "openzeppelin::account::eth_account::EthAccountComponent::EventOwnerAddedIntoEvent::into" + ], + [ + 116, + "openzeppelin::account::eth_account::EthAccountComponent::EventIsEvent::append_keys_and_data" + ], + [117, "openzeppelin::introspection::src5::SRC5Component::EventIsEvent::append_keys_and_data"], + [ + 118, + "openzeppelin::upgrades::upgradeable::UpgradeableComponent::EventIsEvent::append_keys_and_data" + ], + [ + 119, + "core::result::ResultTraitImpl::::expect::" + ], + [ + 120, + "core::starknet::SyscallResultTraitImpl::>::unwrap_syscall" + ], + [121, "core::BoolSerde::deserialize"], + [122, "core::traits::PartialEqSnap::::eq"], + [123, "core::starknet::secp256k1::Secp256k1Impl::get_curve_size"], + [124, "core::starknet::secp256k1::Secp256k1Impl::secp256_ec_get_point_from_x_syscall"], + [125, "core::starknet::secp256k1::Secp256k1Impl::get_generator_point"], + [126, "core::integer::u256_try_as_non_zero"], + [ + 127, + "core::traits::TryIntoFromInto::>::try_into" + ], + [128, "core::integer::U128MulGuaranteeDestruct::destruct"], + [129, "core::math::u256_mul_mod_n"], + [ + 130, + "core::starknet::secp256_trait::secp256_ec_negate_scalar::" + ], + [131, "core::starknet::secp256k1::Secp256k1PointImpl::mul"], + [132, "core::starknet::secp256k1::Secp256k1PointImpl::add"], + [133, "core::traits::PartialEqSnap::::eq"], + [134, "core::integer::U256TryIntoFelt252::try_into"], + [ + 135, + "openzeppelin::account::eth_account::EthAccountComponent::OwnerAddedIsEvent::append_keys_and_data" + ], + [ + 136, + "openzeppelin::account::eth_account::EthAccountComponent::OwnerRemovedIsEvent::append_keys_and_data" + ], + [ + 137, + "openzeppelin::upgrades::upgradeable::UpgradeableComponent::UpgradedIsEvent::append_keys_and_data" + ], + [138, "core::traits::TIntoT::::into"], + [139, "core::integer::u256_wide_mul"], + [140, "core::integer::U256Sub::sub"], + [141, "core::starknet::class_hash::ClassHashSerde::serialize"], + [142, "core::integer::u128_add_with_carry"], + [143, "core::integer::u128_wrapping_add"], + [144, "core::integer::u256_checked_sub"], + [145, "core::integer::u256_overflow_sub"] + ] + }, + "contract_class_version": "0.1.0", + "entry_points_by_type": { + "EXTERNAL": [ + { + "selector": "0xbc0eb87884ab91e330445c3584a50d7ddf4b568f02fbeb456a6242cce3f5d9", + "function_idx": 8 + }, + { + "selector": "0xf2f7c15cbe06c8d94597cd91fd7f3369eae842359235712def5584f8d270cd", + "function_idx": 0 + }, + { + "selector": "0xfe80f537b66d12a00b6d3c072b44afbb716e78dde5c3f0ef116ee93d3e3283", + "function_idx": 11 + }, + { + "selector": "0x15d40a3d6ca2ac30f4031e42be28da9b056fef9bb7357ac5e85627ee876e5ad", + "function_idx": 1 + }, + { + "selector": "0x162da33a4585851fe8d3af3c2a9c60b557814e221e0d4f30ff0b2189d9c7775", + "function_idx": 2 + }, + { + "selector": "0x1a35984e05126dbecb7c3bb9929e7dd9106d460c59b1633739a5c733a5fb13b", + "function_idx": 5 + }, + { + "selector": "0x1a6c6a0bdec86cc645c91997d8eea83e87148659e3e61122f72361fd5e94079", + "function_idx": 7 + }, + { + "selector": "0x213dfe25e2ca309c4d615a09cfc95fdb2fc7dc73fbcad12c450fe93b1f2ff9e", + "function_idx": 4 + }, + { + "selector": "0x28420862938116cb3bbdbedee07451ccc54d4e9412dbef71142ad1980a30941", + "function_idx": 3 + }, + { + "selector": "0x289da278a8dc833409cabfdad1581e8e7d40e42dcaed693fa4008dcdb4963b3", + "function_idx": 9 + }, + { + "selector": "0x2e3e21ff5952b2531241e37999d9c4c8b3034cccc89a202a6bf019bdf5294f9", + "function_idx": 6 + }, + { + "selector": "0x36fcbf06cd96843058359e1a75928beacfac10727dab22a3972f0af8aa92895", + "function_idx": 10 + } + ], + "L1_HANDLER": [], + "CONSTRUCTOR": [ + { + "selector": "0x28ffe4ff0f226a9107253e17a904099aa4f63a02a5621de0576e5aa71bc5194", + "function_idx": 12 + } + ] + }, + "abi": [ + { + "type": "impl", + "name": "UpgradeableImpl", + "interface_name": "openzeppelin::upgrades::interface::IUpgradeable" + }, + { + "type": "interface", + "name": "openzeppelin::upgrades::interface::IUpgradeable", + "items": [ + { + "type": "function", + "name": "upgrade", + "inputs": [ + { + "name": "new_class_hash", + "type": "core::starknet::class_hash::ClassHash" + } + ], + "outputs": [], + "state_mutability": "external" + } + ] + }, + { + "type": "impl", + "name": "SRC6Impl", + "interface_name": "openzeppelin::account::interface::ISRC6" + }, + { + "type": "struct", + "name": "core::array::Span::", + "members": [ + { + "name": "snapshot", + "type": "@core::array::Array::" + } + ] + }, + { + "type": "struct", + "name": "core::starknet::account::Call", + "members": [ + { + "name": "to", + "type": "core::starknet::contract_address::ContractAddress" + }, + { + "name": "selector", + "type": "core::felt252" + }, + { + "name": "calldata", + "type": "core::array::Span::" + } + ] + }, + { + "type": "interface", + "name": "openzeppelin::account::interface::ISRC6", + "items": [ + { + "type": "function", + "name": "__execute__", + "inputs": [ + { + "name": "calls", + "type": "core::array::Array::" + } + ], + "outputs": [ + { + "type": "core::array::Array::>" + } + ], + "state_mutability": "view" + }, + { + "type": "function", + "name": "__validate__", + "inputs": [ + { + "name": "calls", + "type": "core::array::Array::" + } + ], + "outputs": [ + { + "type": "core::felt252" + } + ], + "state_mutability": "view" + }, + { + "type": "function", + "name": "is_valid_signature", + "inputs": [ + { + "name": "hash", + "type": "core::felt252" + }, + { + "name": "signature", + "type": "core::array::Array::" + } + ], + "outputs": [ + { + "type": "core::felt252" + } + ], + "state_mutability": "view" + } + ] + }, + { + "type": "impl", + "name": "SRC6CamelOnlyImpl", + "interface_name": "openzeppelin::account::interface::ISRC6CamelOnly" + }, + { + "type": "interface", + "name": "openzeppelin::account::interface::ISRC6CamelOnly", + "items": [ + { + "type": "function", + "name": "isValidSignature", + "inputs": [ + { + "name": "hash", + "type": "core::felt252" + }, + { + "name": "signature", + "type": "core::array::Array::" + } + ], + "outputs": [ + { + "type": "core::felt252" + } + ], + "state_mutability": "view" + } + ] + }, + { + "type": "impl", + "name": "PublicKeyImpl", + "interface_name": "openzeppelin::account::interface::IEthPublicKey" + }, + { + "type": "interface", + "name": "openzeppelin::account::interface::IEthPublicKey", + "items": [ + { + "type": "function", + "name": "get_public_key", + "inputs": [], + "outputs": [ + { + "type": "core::starknet::secp256k1::Secp256k1Point" + } + ], + "state_mutability": "view" + }, + { + "type": "function", + "name": "set_public_key", + "inputs": [ + { + "name": "new_public_key", + "type": "core::starknet::secp256k1::Secp256k1Point" + } + ], + "outputs": [], + "state_mutability": "external" + } + ] + }, + { + "type": "impl", + "name": "PublicKeyCamelImpl", + "interface_name": "openzeppelin::account::interface::IEthPublicKeyCamel" + }, + { + "type": "interface", + "name": "openzeppelin::account::interface::IEthPublicKeyCamel", + "items": [ + { + "type": "function", + "name": "getPublicKey", + "inputs": [], + "outputs": [ + { + "type": "core::starknet::secp256k1::Secp256k1Point" + } + ], + "state_mutability": "view" + }, + { + "type": "function", + "name": "setPublicKey", + "inputs": [ + { + "name": "newPublicKey", + "type": "core::starknet::secp256k1::Secp256k1Point" + } + ], + "outputs": [], + "state_mutability": "external" + } + ] + }, + { + "type": "impl", + "name": "DeclarerImpl", + "interface_name": "openzeppelin::account::interface::IDeclarer" + }, + { + "type": "interface", + "name": "openzeppelin::account::interface::IDeclarer", + "items": [ + { + "type": "function", + "name": "__validate_declare__", + "inputs": [ + { + "name": "class_hash", + "type": "core::felt252" + } + ], + "outputs": [ + { + "type": "core::felt252" + } + ], + "state_mutability": "view" + } + ] + }, + { + "type": "impl", + "name": "DeployableImpl", + "interface_name": "openzeppelin::account::interface::IEthDeployable" + }, + { + "type": "interface", + "name": "openzeppelin::account::interface::IEthDeployable", + "items": [ + { + "type": "function", + "name": "__validate_deploy__", + "inputs": [ + { + "name": "class_hash", + "type": "core::felt252" + }, + { + "name": "contract_address_salt", + "type": "core::felt252" + }, + { + "name": "public_key", + "type": "core::starknet::secp256k1::Secp256k1Point" + } + ], + "outputs": [ + { + "type": "core::felt252" + } + ], + "state_mutability": "view" + } + ] + }, + { + "type": "impl", + "name": "SRC5Impl", + "interface_name": "openzeppelin::introspection::interface::ISRC5" + }, + { + "type": "enum", + "name": "core::bool", + "variants": [ + { + "name": "False", + "type": "()" + }, + { + "name": "True", + "type": "()" + } + ] + }, + { + "type": "interface", + "name": "openzeppelin::introspection::interface::ISRC5", + "items": [ + { + "type": "function", + "name": "supports_interface", + "inputs": [ + { + "name": "interface_id", + "type": "core::felt252" + } + ], + "outputs": [ + { + "type": "core::bool" + } + ], + "state_mutability": "view" + } + ] + }, + { + "type": "constructor", + "name": "constructor", + "inputs": [ + { + "name": "public_key", + "type": "core::starknet::secp256k1::Secp256k1Point" + } + ] + }, + { + "type": "event", + "name": "openzeppelin::account::eth_account::EthAccountComponent::OwnerAdded", + "kind": "struct", + "members": [ + { + "name": "new_owner_guid", + "type": "core::felt252", + "kind": "key" + } + ] + }, + { + "type": "event", + "name": "openzeppelin::account::eth_account::EthAccountComponent::OwnerRemoved", + "kind": "struct", + "members": [ + { + "name": "removed_owner_guid", + "type": "core::felt252", + "kind": "key" + } + ] + }, + { + "type": "event", + "name": "openzeppelin::account::eth_account::EthAccountComponent::Event", + "kind": "enum", + "variants": [ + { + "name": "OwnerAdded", + "type": "openzeppelin::account::eth_account::EthAccountComponent::OwnerAdded", + "kind": "nested" + }, + { + "name": "OwnerRemoved", + "type": "openzeppelin::account::eth_account::EthAccountComponent::OwnerRemoved", + "kind": "nested" + } + ] + }, + { + "type": "event", + "name": "openzeppelin::introspection::src5::SRC5Component::Event", + "kind": "enum", + "variants": [] + }, + { + "type": "event", + "name": "openzeppelin::upgrades::upgradeable::UpgradeableComponent::Upgraded", + "kind": "struct", + "members": [ + { + "name": "class_hash", + "type": "core::starknet::class_hash::ClassHash", + "kind": "data" + } + ] + }, + { + "type": "event", + "name": "openzeppelin::upgrades::upgradeable::UpgradeableComponent::Event", + "kind": "enum", + "variants": [ + { + "name": "Upgraded", + "type": "openzeppelin::upgrades::upgradeable::UpgradeableComponent::Upgraded", + "kind": "nested" + } + ] + }, + { + "type": "event", + "name": "openzeppelin::presets::eth_account::EthAccountUpgradeable::Event", + "kind": "enum", + "variants": [ + { + "name": "EthAccountEvent", + "type": "openzeppelin::account::eth_account::EthAccountComponent::Event", + "kind": "flat" + }, + { + "name": "SRC5Event", + "type": "openzeppelin::introspection::src5::SRC5Component::Event", + "kind": "flat" + }, + { + "name": "UpgradeableEvent", + "type": "openzeppelin::upgrades::upgradeable::UpgradeableComponent::Event", + "kind": "flat" + } + ] + } + ] +} diff --git a/__mocks__/cairo/ethSigner/testEthPubKey.cairo b/__mocks__/cairo/ethSigner/testEthPubKey.cairo new file mode 100644 index 000000000..c0624ad3c --- /dev/null +++ b/__mocks__/cairo/ethSigner/testEthPubKey.cairo @@ -0,0 +1,71 @@ +// Cairo 2.5.3 +use openzeppelin::account::interface::EthPublicKey; +use starknet::SyscallResultTrait; +use starknet::secp256_trait::Secp256PointTrait; +use starknet::secp256k1::{ + Secp256k1Point, secp256k1_get_point_from_x_syscall, secp256k1_new_syscall +}; + +impl Secp256k1PointSerde of Serde { + fn serialize(self: @Secp256k1Point, ref output: Array) { + let point = (*self).get_coordinates().unwrap(); + point.serialize(ref output) + } + fn deserialize(ref serialized: Span) -> Option { + let (x, y) = Serde::<(u256, u256)>::deserialize(ref serialized)?; + secp256k1_new_syscall(x, y).unwrap_syscall() + } +} + +#[starknet::interface] +trait IEthPub { + fn get_public_key(self: @TContractState) -> EthPublicKey; + fn set_public_key(ref self: TContractState, new_public_key: EthPublicKey); + fn test_public_key(self: @TContractState, my_pub_key:EthPublicKey) -> EthPublicKey; +} +#[starknet::contract] +mod Eth_pub_key { + use openzeppelin::account::interface::EthPublicKey; + use openzeppelin::account::utils::secp256k1::{Secp256k1PointSerde, Secp256k1PointStorePacking}; + use core::starknet::secp256_trait::Secp256PointTrait; + use core::starknet::secp256k1::Secp256k1Point; + + #[storage] + struct Storage { + pubK: EthPublicKey, + } + + #[abi(embed_v0)] + impl InteractEthPub of super::IEthPub { + fn get_public_key(self: @ContractState) -> EthPublicKey { + self.pubK.read() + } + + fn set_public_key(ref self: ContractState, new_public_key: EthPublicKey) { + self.pubK.write(new_public_key) + } + + fn test_public_key(self: @ContractState, my_pub_key:EthPublicKey) -> EthPublicKey { + my_pub_key + } + } +} + + + +// to compile with scarb 2.5.3 : +// Scarb.toml : +// [package] +// name = "pub_eth" +// version = "0.1.0" +// edition = "2023_10" + +// [dependencies] +// starknet = "2.5.3" +// openzeppelin = { git = "https://github.com/OpenZeppelin/cairo-contracts.git", tag = "v0.9.0" } + +// [lib] + +// [[target.starknet-contract]] +// sierra = true +// casm = true diff --git a/__mocks__/cairo/ethSigner/testEthPubKey.casm b/__mocks__/cairo/ethSigner/testEthPubKey.casm new file mode 100644 index 000000000..ec2316d6f --- /dev/null +++ b/__mocks__/cairo/ethSigner/testEthPubKey.casm @@ -0,0 +1,2639 @@ +{ + "prime": "0x800000000000011000000000000000000000000000000000000000000000001", + "compiler_version": "2.5.3", + "bytecode": [ + "0xa0680017fff8000", + "0x7", + "0x482680017ffa8000", + "0x100000000000000000000000000000000", + "0x400280007ff97fff", + "0x10780017fff7fff", + "0x65", + "0x4825800180007ffa", + "0x0", + "0x400280007ff97fff", + "0x482680017ff98000", + "0x1", + "0x48297ffc80007ffd", + "0x20680017fff7fff", + "0x4", + "0x10780017fff7fff", + "0x10", + "0x40780017fff7fff", + "0x1", + "0x480680017fff8000", + "0x496e70757420746f6f206c6f6e6720666f7220617267756d656e7473", + "0x400080007ffe7fff", + "0x48127ffc7fff8000", + "0x48127ffa7fff8000", + "0x480a7ffb7fff8000", + "0x480680017fff8000", + "0x1", + "0x48127ffa7fff8000", + "0x482480017ff98000", + "0x1", + "0x208b7fff7fff7ffe", + "0x1104800180018000", + "0x63f", + "0x482480017fff8000", + "0x63e", + "0x480080007fff8000", + "0xa0680017fff8000", + "0x9", + "0x4824800180007ff8", + "0x12278", + "0x482480017fff8000", + "0x100000000000000000000000000000000", + "0x400080007ff77fff", + "0x10780017fff7fff", + "0x30", + "0x4824800180007ff8", + "0x12278", + "0x400080007ff87fff", + "0x482480017ff88000", + "0x1", + "0x48127ffe7fff8000", + "0x480a7ffb7fff8000", + "0x1104800180018000", + "0x15c", + "0x20680017fff7ffd", + "0x1d", + "0x40780017fff7fff", + "0x1", + "0x48127ffa7fff8000", + "0x48127ffa7fff8000", + "0x48127ffc7fff8000", + "0x48127ffc7fff8000", + "0x48127ffb7fff8000", + "0x1104800180018000", + "0x157", + "0x20680017fff7ffd", + "0xa", + "0x48127fb77fff8000", + "0x48127ffa7fff8000", + "0x48127ffa7fff8000", + "0x480680017fff8000", + "0x0", + "0x48127ffa7fff8000", + "0x48127ffa7fff8000", + "0x208b7fff7fff7ffe", + "0x48127fb77fff8000", + "0x48127ffa7fff8000", + "0x48127ffa7fff8000", + "0x480680017fff8000", + "0x1", + "0x48127ffa7fff8000", + "0x48127ffa7fff8000", + "0x208b7fff7fff7ffe", + "0x48127ffa7fff8000", + "0x48127ffa7fff8000", + "0x48127ffa7fff8000", + "0x480680017fff8000", + "0x1", + "0x48127ffa7fff8000", + "0x48127ffa7fff8000", + "0x208b7fff7fff7ffe", + "0x40780017fff7fff", + "0x1", + "0x480680017fff8000", + "0x4f7574206f6620676173", + "0x400080007ffe7fff", + "0x482480017ff58000", + "0x1", + "0x48127ff37fff8000", + "0x480a7ffb7fff8000", + "0x480680017fff8000", + "0x1", + "0x48127ffa7fff8000", + "0x482480017ff98000", + "0x1", + "0x208b7fff7fff7ffe", + "0x40780017fff7fff", + "0x1", + "0x480680017fff8000", + "0x4f7574206f6620676173", + "0x400080007ffe7fff", + "0x482680017ff98000", + "0x1", + "0x480a7ffa7fff8000", + "0x480a7ffb7fff8000", + "0x480680017fff8000", + "0x1", + "0x48127ffa7fff8000", + "0x482480017ff98000", + "0x1", + "0x208b7fff7fff7ffe", + "0xa0680017fff8000", + "0x7", + "0x482680017ffa8000", + "0xffffffffffffffffffffffffffffa6a0", + "0x400280007ff97fff", + "0x10780017fff7fff", + "0x75", + "0x4825800180007ffa", + "0x5960", + "0x400280007ff97fff", + "0x482680017ff98000", + "0x1", + "0x48127ffe7fff8000", + "0x480a7ffb7fff8000", + "0x480a7ffc7fff8000", + "0x480a7ffd7fff8000", + "0x1104800180018000", + "0x12e", + "0x20680017fff7ffb", + "0x60", + "0x20680017fff7ffe", + "0x50", + "0x48307ffc80007ffd", + "0x20680017fff7fff", + "0x4", + "0x10780017fff7fff", + "0x10", + "0x40780017fff7fff", + "0x1", + "0x480680017fff8000", + "0x496e70757420746f6f206c6f6e6720666f7220617267756d656e7473", + "0x400080007ffe7fff", + "0x48127ff57fff8000", + "0x48127ff57fff8000", + "0x48127ff57fff8000", + "0x480680017fff8000", + "0x1", + "0x48127ffa7fff8000", + "0x482480017ff98000", + "0x1", + "0x208b7fff7fff7ffe", + "0x1104800180018000", + "0x5bc", + "0x482480017fff8000", + "0x5bb", + "0x480080007fff8000", + "0xa0680017fff8000", + "0x9", + "0x4824800180007ff3", + "0xcb98", + "0x482480017fff8000", + "0x100000000000000000000000000000000", + "0x400080007ff07fff", + "0x10780017fff7fff", + "0x20", + "0x4824800180007ff3", + "0xcb98", + "0x400080007ff17fff", + "0x482480017ff18000", + "0x1", + "0x48127ffe7fff8000", + "0x48127ff17fff8000", + "0x48127ff57fff8000", + "0x1104800180018000", + "0x149", + "0x20680017fff7ffd", + "0xc", + "0x40780017fff7fff", + "0x1", + "0x48127ff97fff8000", + "0x48127ff97fff8000", + "0x48127ff97fff8000", + "0x480680017fff8000", + "0x0", + "0x48127ffb7fff8000", + "0x48127ffa7fff8000", + "0x208b7fff7fff7ffe", + "0x48127ffa7fff8000", + "0x48127ffa7fff8000", + "0x48127ffa7fff8000", + "0x480680017fff8000", + "0x1", + "0x48127ffa7fff8000", + "0x48127ffa7fff8000", + "0x208b7fff7fff7ffe", + "0x40780017fff7fff", + "0x1", + "0x480680017fff8000", + "0x4f7574206f6620676173", + "0x400080007ffe7fff", + "0x482480017fee8000", + "0x1", + "0x48127fee7fff8000", + "0x48127fee7fff8000", + "0x480680017fff8000", + "0x1", + "0x48127ffa7fff8000", + "0x482480017ff98000", + "0x1", + "0x208b7fff7fff7ffe", + "0x40780017fff7fff", + "0x1", + "0x480680017fff8000", + "0x4661696c656420746f20646573657269616c697a6520706172616d202331", + "0x400080007ffe7fff", + "0x48127ff67fff8000", + "0x48127ff67fff8000", + "0x48127ff67fff8000", + "0x480680017fff8000", + "0x1", + "0x48127ffa7fff8000", + "0x482480017ff98000", + "0x1", + "0x208b7fff7fff7ffe", + "0x48127ff87fff8000", + "0x48127ff87fff8000", + "0x48127ff87fff8000", + "0x480680017fff8000", + "0x1", + "0x48127ffa7fff8000", + "0x48127ffa7fff8000", + "0x208b7fff7fff7ffe", + "0x40780017fff7fff", + "0x1", + "0x480680017fff8000", + "0x4f7574206f6620676173", + "0x400080007ffe7fff", + "0x482680017ff98000", + "0x1", + "0x480a7ffa7fff8000", + "0x480a7ffb7fff8000", + "0x480680017fff8000", + "0x1", + "0x48127ffa7fff8000", + "0x482480017ff98000", + "0x1", + "0x208b7fff7fff7ffe", + "0xa0680017fff8000", + "0x7", + "0x482680017ffa8000", + "0xffffffffffffffffffffffffffffa6a0", + "0x400280007ff97fff", + "0x10780017fff7fff", + "0x7a", + "0x4825800180007ffa", + "0x5960", + "0x400280007ff97fff", + "0x482680017ff98000", + "0x1", + "0x48127ffe7fff8000", + "0x480a7ffb7fff8000", + "0x480a7ffc7fff8000", + "0x480a7ffd7fff8000", + "0x1104800180018000", + "0xa5", + "0x20680017fff7ffb", + "0x65", + "0x20680017fff7ffe", + "0x55", + "0x48307ffc80007ffd", + "0x20680017fff7fff", + "0x4", + "0x10780017fff7fff", + "0x10", + "0x40780017fff7fff", + "0x1", + "0x480680017fff8000", + "0x496e70757420746f6f206c6f6e6720666f7220617267756d656e7473", + "0x400080007ffe7fff", + "0x48127ff57fff8000", + "0x48127ff57fff8000", + "0x48127ff57fff8000", + "0x480680017fff8000", + "0x1", + "0x48127ffa7fff8000", + "0x482480017ff98000", + "0x1", + "0x208b7fff7fff7ffe", + "0x1104800180018000", + "0x533", + "0x482480017fff8000", + "0x532", + "0x480080007fff8000", + "0xa0680017fff8000", + "0x9", + "0x4824800180007ff3", + "0x45ec", + "0x482480017fff8000", + "0x100000000000000000000000000000000", + "0x400080007ff07fff", + "0x10780017fff7fff", + "0x25", + "0x4824800180007ff3", + "0x45ec", + "0x400080007ff17fff", + "0x48127ff87fff8000", + "0x1104800180018000", + "0xde", + "0x40780017fff7fff", + "0x1", + "0x48127ffa7fff8000", + "0x48127fed7fff8000", + "0x48127ffc7fff8000", + "0x48127ffc7fff8000", + "0x48127ffb7fff8000", + "0x1104800180018000", + "0x50", + "0x482480017faa8000", + "0x1", + "0x20680017fff7ffc", + "0xa", + "0x48127fff7fff8000", + "0x48127ff97fff8000", + "0x48127ff97fff8000", + "0x480680017fff8000", + "0x0", + "0x48127ff97fff8000", + "0x48127ff97fff8000", + "0x208b7fff7fff7ffe", + "0x48127fff7fff8000", + "0x48127ff97fff8000", + "0x48127ff97fff8000", + "0x480680017fff8000", + "0x1", + "0x48127ff97fff8000", + "0x48127ff97fff8000", + "0x208b7fff7fff7ffe", + "0x40780017fff7fff", + "0x1", + "0x480680017fff8000", + "0x4f7574206f6620676173", + "0x400080007ffe7fff", + "0x482480017fee8000", + "0x1", + "0x48127fee7fff8000", + "0x48127fee7fff8000", + "0x480680017fff8000", + "0x1", + "0x48127ffa7fff8000", + "0x482480017ff98000", + "0x1", + "0x208b7fff7fff7ffe", + "0x40780017fff7fff", + "0x1", + "0x480680017fff8000", + "0x4661696c656420746f20646573657269616c697a6520706172616d202331", + "0x400080007ffe7fff", + "0x48127ff67fff8000", + "0x48127ff67fff8000", + "0x48127ff67fff8000", + "0x480680017fff8000", + "0x1", + "0x48127ffa7fff8000", + "0x482480017ff98000", + "0x1", + "0x208b7fff7fff7ffe", + "0x48127ff87fff8000", + "0x48127ff87fff8000", + "0x48127ff87fff8000", + "0x480680017fff8000", + "0x1", + "0x48127ffa7fff8000", + "0x48127ffa7fff8000", + "0x208b7fff7fff7ffe", + "0x40780017fff7fff", + "0x1", + "0x480680017fff8000", + "0x4f7574206f6620676173", + "0x400080007ffe7fff", + "0x482680017ff98000", + "0x1", + "0x480a7ffa7fff8000", + "0x480a7ffb7fff8000", + "0x480680017fff8000", + "0x1", + "0x48127ffa7fff8000", + "0x482480017ff98000", + "0x1", + "0x208b7fff7fff7ffe", + "0x480a7ffb7fff8000", + "0x480a7ffc7fff8000", + "0x480a7ffd7fff8000", + "0x1104800180018000", + "0x8a", + "0x208b7fff7fff7ffe", + "0x480a7ff97fff8000", + "0x480a7ffa7fff8000", + "0x480a7ffb7fff8000", + "0x1104800180018000", + "0xe0", + "0x1104800180018000", + "0xfc", + "0x20680017fff7ffb", + "0x11", + "0x48127ffc7fff8000", + "0x48127ffc7fff8000", + "0x48127ffc7fff8000", + "0x48127ffc7fff8000", + "0x480a7ffc7fff8000", + "0x480a7ffd7fff8000", + "0x1104800180018000", + "0xfc", + "0x48127fd17fff8000", + "0x48127fd17fff8000", + "0x480680017fff8000", + "0x0", + "0x48127ffb7fff8000", + "0x48127ffb7fff8000", + "0x208b7fff7fff7ffe", + "0x40780017fff7fff", + "0x18", + "0x48127fd17fff8000", + "0x48127fd17fff8000", + "0x480680017fff8000", + "0x1", + "0x48127fe37fff8000", + "0x48127fe37fff8000", + "0x208b7fff7fff7ffe", + "0x480a7ff97fff8000", + "0x480a7ffc7fff8000", + "0x480a7ffd7fff8000", + "0x1104800180018000", + "0xf4", + "0x20680017fff7ffb", + "0x37", + "0x480680017fff8000", + "0x536563703235366b314e6577", + "0x400280007ffb7fff", + "0x400380017ffb7ffa", + "0x400280027ffb7ffb", + "0x400280037ffb7ffc", + "0x400280047ffb7ffd", + "0x400280057ffb7ffe", + "0x480280077ffb8000", + "0x20680017fff7fff", + "0xb", + "0x480280067ffb8000", + "0x482680017ffb8000", + "0xa", + "0x480680017fff8000", + "0x0", + "0x480280087ffb8000", + "0x480280097ffb8000", + "0x10780017fff7fff", + "0x9", + "0x480280067ffb8000", + "0x482680017ffb8000", + "0xa", + "0x480680017fff8000", + "0x1", + "0x480280087ffb8000", + "0x480280097ffb8000", + "0x1104800180018000", + "0x10b", + "0x20680017fff7ffd", + "0xc", + "0x48127fec7fff8000", + "0x48127ff57fff8000", + "0x48127ff57fff8000", + "0x480680017fff8000", + "0x0", + "0x48127fe97fff8000", + "0x48127fe97fff8000", + "0x48127ff87fff8000", + "0x48127ff87fff8000", + "0x208b7fff7fff7ffe", + "0x48127fec7fff8000", + "0x48127ff57fff8000", + "0x48127ff57fff8000", + "0x480680017fff8000", + "0x1", + "0x480680017fff8000", + "0x0", + "0x480680017fff8000", + "0x0", + "0x48127ff87fff8000", + "0x48127ff87fff8000", + "0x208b7fff7fff7ffe", + "0x40780017fff7fff", + "0xc", + "0x48127fec7fff8000", + "0x480a7ffa7fff8000", + "0x480a7ffb7fff8000", + "0x480680017fff8000", + "0x0", + "0x48127fe97fff8000", + "0x48127fe97fff8000", + "0x480680017fff8000", + "0x1", + "0x480680017fff8000", + "0x0", + "0x208b7fff7fff7ffe", + "0x480a7ffa7fff8000", + "0x480a7ffb7fff8000", + "0x480a7ffc7fff8000", + "0x480a7ffd7fff8000", + "0x1104800180018000", + "0xeb", + "0x20680017fff7ffd", + "0xc", + "0x48127ffa7fff8000", + "0x48127ffa7fff8000", + "0x48127ffa7fff8000", + "0x480680017fff8000", + "0x0", + "0x480680017fff8000", + "0x0", + "0x480680017fff8000", + "0x0", + "0x208b7fff7fff7ffe", + "0x48127ffa7fff8000", + "0x48127ffa7fff8000", + "0x48127ffa7fff8000", + "0x480680017fff8000", + "0x1", + "0x48127ffa7fff8000", + "0x48127ffa7fff8000", + "0x208b7fff7fff7ffe", + "0x480a7ffd7fff8000", + "0x208b7fff7fff7ffe", + "0x480680017fff8000", + "0x0", + "0x480680017fff8000", + "0x2ccc306eba65ea91884d5809e8d06e17af085c8d2f9013071a9195a0763704f", + "0x480680017fff8000", + "0x53746f7261676552656164", + "0x400280007ffd7fff", + "0x400380017ffd7ffc", + "0x400280027ffd7ffd", + "0x400280037ffd7ffe", + "0x480280057ffd8000", + "0x20680017fff7fff", + "0x3a", + "0x480680017fff8000", + "0x2ccc306eba65ea91884d5809e8d06e17af085c8d2f9013071a9195a0763704f", + "0x480280047ffd8000", + "0x480680017fff8000", + "0x0", + "0x482480017ffd8000", + "0x1", + "0x480280067ffd8000", + "0x480680017fff8000", + "0x53746f7261676552656164", + "0x400280077ffd7fff", + "0x400280087ffd7ffb", + "0x400280097ffd7ffc", + "0x4002800a7ffd7ffd", + "0x4802800c7ffd8000", + "0x20680017fff7fff", + "0x20", + "0x480a7ffb7fff8000", + "0x4802800b7ffd8000", + "0x482680017ffd8000", + "0xe", + "0x48127ffa7fff8000", + "0x4802800d7ffd8000", + "0x1104800180018000", + "0x113", + "0x20680017fff7ffd", + "0xc", + "0x48127ffa7fff8000", + "0x48127ffa7fff8000", + "0x48127ffa7fff8000", + "0x480680017fff8000", + "0x0", + "0x480680017fff8000", + "0x0", + "0x48127ffa7fff8000", + "0x10780017fff7fff", + "0x23", + "0x40780017fff7fff", + "0xb", + "0x48127fef7fff8000", + "0x48127fef7fff8000", + "0x48127fef7fff8000", + "0x480680017fff8000", + "0x1", + "0x48127fef7fff8000", + "0x48127fef7fff8000", + "0x208b7fff7fff7ffe", + "0x40780017fff7fff", + "0xc2", + "0x4802800b7ffd8000", + "0x482680017ffd8000", + "0xf", + "0x4802800d7ffd8000", + "0x4802800e7ffd8000", + "0x10780017fff7fff", + "0x9", + "0x40780017fff7fff", + "0xc9", + "0x480280047ffd8000", + "0x482680017ffd8000", + "0x8", + "0x480280067ffd8000", + "0x480280077ffd8000", + "0x480a7ffb7fff8000", + "0x48127ffb7fff8000", + "0x48127ffb7fff8000", + "0x480680017fff8000", + "0x1", + "0x48127ffa7fff8000", + "0x48127ffa7fff8000", + "0x1104800180018000", + "0x18b", + "0x48127ff57fff8000", + "0x48127ff57fff8000", + "0x48127ff57fff8000", + "0x48127ffa7fff8000", + "0x48127ffa7fff8000", + "0x48127ffa7fff8000", + "0x208b7fff7fff7ffe", + "0x480680017fff8000", + "0x536563703235366b314765745879", + "0x400280007ffc7fff", + "0x400380017ffc7ffb", + "0x400380027ffc7ffd", + "0x480280047ffc8000", + "0x20680017fff7fff", + "0xc", + "0x480280037ffc8000", + "0x482680017ffc8000", + "0x9", + "0x480680017fff8000", + "0x0", + "0x480280057ffc8000", + "0x480280067ffc8000", + "0x480280077ffc8000", + "0x480280087ffc8000", + "0x208b7fff7fff7ffe", + "0x480280037ffc8000", + "0x482680017ffc8000", + "0x7", + "0x480680017fff8000", + "0x1", + "0x480680017fff8000", + "0x0", + "0x480680017fff8000", + "0x0", + "0x480280057ffc8000", + "0x480280067ffc8000", + "0x208b7fff7fff7ffe", + "0x480a7ff97fff8000", + "0x480a7ffa7fff8000", + "0x480a7ffb7fff8000", + "0x480a7ffc7fff8000", + "0x480a7ffd7fff8000", + "0x480680017fff8000", + "0x526573756c743a3a756e77726170206661696c65642e", + "0x1104800180018000", + "0x16a", + "0x208b7fff7fff7ffe", + "0x480a7ff87fff8000", + "0x480a7ff97fff8000", + "0x480a7ffc7fff8000", + "0x480a7ffd7fff8000", + "0x1104800180018000", + "0x17b", + "0x480a7ffa7fff8000", + "0x480a7ffb7fff8000", + "0x48127ffc7fff8000", + "0x48127ffc7fff8000", + "0x1104800180018000", + "0x175", + "0x208b7fff7fff7ffe", + "0x480a7ffb7fff8000", + "0x480a7ffc7fff8000", + "0x480a7ffd7fff8000", + "0x1104800180018000", + "0x175", + "0x20680017fff7ffd", + "0x21", + "0x48127ffa7fff8000", + "0x48127ffa7fff8000", + "0x48127ffa7fff8000", + "0x1104800180018000", + "0x16e", + "0x20680017fff7ffd", + "0xc", + "0x48127ffa7fff8000", + "0x48127ffa7fff8000", + "0x48127ffa7fff8000", + "0x480680017fff8000", + "0x0", + "0x48127fc77fff8000", + "0x48127fc77fff8000", + "0x48127ff87fff8000", + "0x48127ff87fff8000", + "0x208b7fff7fff7ffe", + "0x48127ffa7fff8000", + "0x48127ffa7fff8000", + "0x48127ffa7fff8000", + "0x480680017fff8000", + "0x1", + "0x480680017fff8000", + "0x0", + "0x480680017fff8000", + "0x0", + "0x480680017fff8000", + "0x0", + "0x480680017fff8000", + "0x0", + "0x208b7fff7fff7ffe", + "0x40780017fff7fff", + "0x33", + "0x48127fc77fff8000", + "0x48127fc77fff8000", + "0x48127fc77fff8000", + "0x480680017fff8000", + "0x1", + "0x480680017fff8000", + "0x0", + "0x480680017fff8000", + "0x0", + "0x480680017fff8000", + "0x0", + "0x480680017fff8000", + "0x0", + "0x208b7fff7fff7ffe", + "0x20780017fff7ffb", + "0x7", + "0x480680017fff8000", + "0x0", + "0x480a7ffc7fff8000", + "0x480a7ffd7fff8000", + "0x208b7fff7fff7ffe", + "0x480680017fff8000", + "0x1", + "0x480a7ffc7fff8000", + "0x480a7ffd7fff8000", + "0x208b7fff7fff7ffe", + "0x480a7ffa7fff8000", + "0x480a7ffb7fff8000", + "0x480a7ffc7fff8000", + "0x480a7ffd7fff8000", + "0x1104800180018000", + "0x194", + "0x20680017fff7ffd", + "0x54", + "0x480680017fff8000", + "0x0", + "0x480680017fff8000", + "0x2ccc306eba65ea91884d5809e8d06e17af085c8d2f9013071a9195a0763704f", + "0x480680017fff8000", + "0x53746f726167655772697465", + "0x400080007ff97fff", + "0x400080017ff97ff8", + "0x400080027ff97ffd", + "0x400080037ff97ffe", + "0x400080047ff97ffb", + "0x480080067ff98000", + "0x20680017fff7fff", + "0x27", + "0x480680017fff8000", + "0x2ccc306eba65ea91884d5809e8d06e17af085c8d2f9013071a9195a0763704f", + "0x480080057ff78000", + "0x480680017fff8000", + "0x0", + "0x482480017ffd8000", + "0x1", + "0x480680017fff8000", + "0x53746f726167655772697465", + "0x400080077ff37fff", + "0x400080087ff37ffc", + "0x400080097ff37ffd", + "0x4000800a7ff37ffe", + "0x4000800b7ff37ff6", + "0x4800800d7ff38000", + "0x20680017fff7fff", + "0xd", + "0x4800800c7ff28000", + "0x482480017ff18000", + "0xe", + "0x480680017fff8000", + "0x0", + "0x480680017fff8000", + "0x0", + "0x480680017fff8000", + "0x0", + "0x10780017fff7fff", + "0x9", + "0x4800800c7ff28000", + "0x482480017ff18000", + "0x10", + "0x480680017fff8000", + "0x1", + "0x4800800e7fef8000", + "0x4800800f7fee8000", + "0x10780017fff7fff", + "0xb", + "0x40780017fff7fff", + "0x6", + "0x480080057ff28000", + "0x482480017ff18000", + "0x9", + "0x480680017fff8000", + "0x1", + "0x480080077fef8000", + "0x480080087fee8000", + "0x1104800180018000", + "0x19c", + "0x20680017fff7ffd", + "0xc", + "0x48127fe67fff8000", + "0x48127ff57fff8000", + "0x48127ff57fff8000", + "0x480680017fff8000", + "0x0", + "0x480680017fff8000", + "0x0", + "0x480680017fff8000", + "0x0", + "0x208b7fff7fff7ffe", + "0x48127fe67fff8000", + "0x48127ff57fff8000", + "0x48127ff57fff8000", + "0x480680017fff8000", + "0x1", + "0x48127ffa7fff8000", + "0x48127ffa7fff8000", + "0x208b7fff7fff7ffe", + "0x40780017fff7fff", + "0x14", + "0x48127fe67fff8000", + "0x48127fe67fff8000", + "0x48127fe67fff8000", + "0x480680017fff8000", + "0x1", + "0x48127fe67fff8000", + "0x48127fe67fff8000", + "0x208b7fff7fff7ffe", + "0x480a7ff97fff8000", + "0x480a7ffd7fff8000", + "0x1104800180018000", + "0x188", + "0x48127ffd7fff8000", + "0x480a7ffc7fff8000", + "0x1104800180018000", + "0x1a8", + "0x20680017fff7ffe", + "0x8f", + "0x48127ffd7fff8000", + "0x48127ff07fff8000", + "0x48127ff07fff8000", + "0x480680017fff8000", + "0x2", + "0x480680017fff8000", + "0x0", + "0x1104800180018000", + "0x1c3", + "0x20680017fff7ffd", + "0x7a", + "0x48127ffe7fff8000", + "0x48127ffe7fff8000", + "0x1104800180018000", + "0x210", + "0x20680017fff7ffe", + "0x64", + "0x48127ff57fff8000", + "0x48127fae7fff8000", + "0x48127fae7fff8000", + "0x480680017fff8000", + "0x2", + "0x480680017fff8000", + "0x0", + "0x1104800180018000", + "0x214", + "0x20680017fff7ffd", + "0x4f", + "0x48127ffe7fff8000", + "0x48127ffe7fff8000", + "0x480680017fff8000", + "0x1", + "0x480680017fff8000", + "0x0", + "0x1104800180018000", + "0x25d", + "0x48127f707fff8000", + "0x48127fb17fff8000", + "0x480680017fff8000", + "0x536563703235366b31476574506f696e7446726f6d58", + "0x400280007ffb7fff", + "0x400380017ffb7ffa", + "0x400280027ffb7ffd", + "0x400280037ffb7ffe", + "0x400280047ffb7ffc", + "0x480280067ffb8000", + "0x20680017fff7fff", + "0xb", + "0x480280057ffb8000", + "0x482680017ffb8000", + "0x9", + "0x480680017fff8000", + "0x0", + "0x480280077ffb8000", + "0x480280087ffb8000", + "0x10780017fff7fff", + "0x9", + "0x480280057ffb8000", + "0x482680017ffb8000", + "0x9", + "0x480680017fff8000", + "0x1", + "0x480280077ffb8000", + "0x480280087ffb8000", + "0x1104800180018000", + "0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffff47", + "0x20680017fff7ffd", + "0x1d", + "0x20680017fff7ffe", + "0xd", + "0x40780017fff7fff", + "0x2", + "0x48127fda7fff8000", + "0x48127ff37fff8000", + "0x48127ff37fff8000", + "0x480680017fff8000", + "0x0", + "0x480680017fff8000", + "0x0", + "0x48127ff87fff8000", + "0x208b7fff7fff7ffe", + "0x40780017fff7fff", + "0x1", + "0x480680017fff8000", + "0x536563703235366b31506f696e743a20496e76616c696420706f696e742e", + "0x400080007ffe7fff", + "0x48127fda7fff8000", + "0x48127ff37fff8000", + "0x48127ff37fff8000", + "0x480680017fff8000", + "0x1", + "0x48127ffa7fff8000", + "0x482480017ff98000", + "0x1", + "0x208b7fff7fff7ffe", + "0x40780017fff7fff", + "0x2", + "0x48127fda7fff8000", + "0x48127ff37fff8000", + "0x48127ff37fff8000", + "0x480680017fff8000", + "0x1", + "0x48127ff87fff8000", + "0x48127ff87fff8000", + "0x208b7fff7fff7ffe", + "0x40780017fff7fff", + "0x22", + "0x48127fda7fff8000", + "0x480a7ffa7fff8000", + "0x480a7ffb7fff8000", + "0x480680017fff8000", + "0x1", + "0x48127fd87fff8000", + "0x48127fd87fff8000", + "0x208b7fff7fff7ffe", + "0x40780017fff7fff", + "0x5b", + "0x40780017fff7fff", + "0x1", + "0x480680017fff8000", + "0x4f7074696f6e3a3a756e77726170206661696c65642e", + "0x400080007ffe7fff", + "0x48127f987fff8000", + "0x480a7ffa7fff8000", + "0x480a7ffb7fff8000", + "0x480680017fff8000", + "0x1", + "0x48127ffa7fff8000", + "0x482480017ff98000", + "0x1", + "0x208b7fff7fff7ffe", + "0x40780017fff7fff", + "0x64", + "0x48127f987fff8000", + "0x480a7ffa7fff8000", + "0x480a7ffb7fff8000", + "0x480680017fff8000", + "0x1", + "0x48127f967fff8000", + "0x48127f967fff8000", + "0x208b7fff7fff7ffe", + "0x40780017fff7fff", + "0x9d", + "0x40780017fff7fff", + "0x1", + "0x480680017fff8000", + "0x4f7074696f6e3a3a756e77726170206661696c65642e", + "0x400080007ffe7fff", + "0x48127f5e7fff8000", + "0x480a7ffa7fff8000", + "0x480a7ffb7fff8000", + "0x480680017fff8000", + "0x1", + "0x48127ffa7fff8000", + "0x482480017ff98000", + "0x1", + "0x208b7fff7fff7ffe", + "0x20780017fff7ffb", + "0x8", + "0x480680017fff8000", + "0x0", + "0x480680017fff8000", + "0x0", + "0x480a7ffd7fff8000", + "0x208b7fff7fff7ffe", + "0x480680017fff8000", + "0x1", + "0x480a7ffc7fff8000", + "0x480a7ffd7fff8000", + "0x208b7fff7fff7ffe", + "0x20780017fff7ff8", + "0xb", + "0x40780017fff7fff", + "0x1", + "0x480680017fff8000", + "0x0", + "0x480a7ff97fff8000", + "0x480a7ffa7fff8000", + "0x480a7ffb7fff8000", + "0x480a7ffc7fff8000", + "0x208b7fff7fff7ffe", + "0x40780017fff7fff", + "0x1", + "0x400180007fff7ffd", + "0x480680017fff8000", + "0x1", + "0x480680017fff8000", + "0x0", + "0x480680017fff8000", + "0x0", + "0x48127ffc7fff8000", + "0x482480017ffb8000", + "0x1", + "0x208b7fff7fff7ffe", + "0x400380007ffd7ffa", + "0x400380017ffd7ffb", + "0x480a7ffc7fff8000", + "0x482680017ffd8000", + "0x2", + "0x208b7fff7fff7ffe", + "0x48297ffc80007ffd", + "0x20680017fff7fff", + "0x4", + "0x10780017fff7fff", + "0xa", + "0x482680017ffc8000", + "0x1", + "0x480a7ffd7fff8000", + "0x480680017fff8000", + "0x0", + "0x480a7ffc7fff8000", + "0x10780017fff7fff", + "0x8", + "0x480a7ffc7fff8000", + "0x480a7ffd7fff8000", + "0x480680017fff8000", + "0x1", + "0x480680017fff8000", + "0x0", + "0x48127ffc7fff8000", + "0x48127ffc7fff8000", + "0x20680017fff7ffc", + "0x41", + "0x480a7ffb7fff8000", + "0x480080007ffc8000", + "0x1104800180018000", + "0xc3", + "0x20680017fff7ffe", + "0x36", + "0x48307fed80007fee", + "0x20680017fff7fff", + "0x4", + "0x10780017fff7fff", + "0xa", + "0x482480017fec8000", + "0x1", + "0x48127fec7fff8000", + "0x480680017fff8000", + "0x0", + "0x48127fe97fff8000", + "0x10780017fff7fff", + "0x8", + "0x48127fec7fff8000", + "0x48127fec7fff8000", + "0x480680017fff8000", + "0x1", + "0x480680017fff8000", + "0x0", + "0x48127ffc7fff8000", + "0x48127ffc7fff8000", + "0x20680017fff7ffc", + "0x13", + "0x48127ff67fff8000", + "0x480080007ffc8000", + "0x1104800180018000", + "0xa6", + "0x20680017fff7ffe", + "0xa", + "0x48127ffd7fff8000", + "0x48127ff07fff8000", + "0x48127ff07fff8000", + "0x480680017fff8000", + "0x0", + "0x48127fe77fff8000", + "0x48127ffa7fff8000", + "0x208b7fff7fff7ffe", + "0x48127ffd7fff8000", + "0x10780017fff7fff", + "0x5", + "0x40780017fff7fff", + "0xd", + "0x48127fe97fff8000", + "0x48127ff07fff8000", + "0x48127ff07fff8000", + "0x480680017fff8000", + "0x1", + "0x480680017fff8000", + "0x0", + "0x480680017fff8000", + "0x0", + "0x208b7fff7fff7ffe", + "0x40780017fff7fff", + "0x14", + "0x48127fe97fff8000", + "0x10780017fff7fff", + "0x5", + "0x40780017fff7fff", + "0x21", + "0x480a7ffb7fff8000", + "0x48127fdc7fff8000", + "0x48127fdc7fff8000", + "0x480680017fff8000", + "0x1", + "0x480680017fff8000", + "0x0", + "0x480680017fff8000", + "0x0", + "0x208b7fff7fff7ffe", + "0x480a7ffb7fff8000", + "0x480a7ffc7fff8000", + "0x480a7ffd7fff8000", + "0x1104800180018000", + "0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffdef", + "0x1104800180018000", + "0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffe0b", + "0x20680017fff7ffb", + "0x37", + "0x480a7ffa7fff8000", + "0x48127ffd7fff8000", + "0x48127ffd7fff8000", + "0x480680017fff8000", + "0x2", + "0x480680017fff8000", + "0x0", + "0x1104800180018000", + "0xf2", + "0x20680017fff7ffd", + "0x22", + "0x48127ffc7fff8000", + "0x48127ffd7fff8000", + "0x48127ffd7fff8000", + "0x1104800180018000", + "0x14e", + "0x20680017fff7ffe", + "0xd", + "0x480680017fff8000", + "0x2", + "0x48507fb27fff8000", + "0x48127ffb7fff8000", + "0x48127f9c7fff8000", + "0x48127f9c7fff8000", + "0x480680017fff8000", + "0x0", + "0x48127fac7fff8000", + "0x48307ff87ffa8000", + "0x208b7fff7fff7ffe", + "0x40780017fff7fff", + "0x1", + "0x480680017fff8000", + "0x4f7074696f6e3a3a756e77726170206661696c65642e", + "0x400080007ffe7fff", + "0x48127ffb7fff8000", + "0x48127f9c7fff8000", + "0x48127f9c7fff8000", + "0x480680017fff8000", + "0x1", + "0x48127ffa7fff8000", + "0x482480017ff98000", + "0x1", + "0x208b7fff7fff7ffe", + "0x40780017fff7fff", + "0x11", + "0x48127feb7fff8000", + "0x48127f9c7fff8000", + "0x48127f9c7fff8000", + "0x480680017fff8000", + "0x1", + "0x48127fe97fff8000", + "0x48127fe97fff8000", + "0x208b7fff7fff7ffe", + "0x40780017fff7fff", + "0x4c", + "0x480a7ffa7fff8000", + "0x48127f9c7fff8000", + "0x48127f9c7fff8000", + "0x480680017fff8000", + "0x1", + "0x48127fae7fff8000", + "0x48127fae7fff8000", + "0x208b7fff7fff7ffe", + "0x20780017fff7ffb", + "0x9", + "0x480680017fff8000", + "0x0", + "0x480680017fff8000", + "0x0", + "0x480680017fff8000", + "0x0", + "0x208b7fff7fff7ffe", + "0x480680017fff8000", + "0x1", + "0x480a7ffc7fff8000", + "0x480a7ffd7fff8000", + "0x208b7fff7fff7ffe", + "0xa0680017fff8000", + "0x16", + "0x480280007ffc8003", + "0x480280017ffc8003", + "0x4844800180017ffe", + "0x100000000000000000000000000000000", + "0x483180017ffd7ffd", + "0x482480017fff7ffd", + "0x800000000000010fffffffffffffffff7ffffffffffffef0000000000000001", + "0x20680017fff7ffc", + "0x6", + "0x402480017fff7ffd", + "0xffffffffffffffffffffffffffffffff", + "0x10780017fff7fff", + "0x4", + "0x402480017ffe7ffd", + "0xf7ffffffffffffef0000000000000000", + "0x400280027ffc7ffd", + "0x20680017fff7ffe", + "0xd", + "0x402780017fff7fff", + "0x1", + "0x400380007ffc7ffd", + "0x40780017fff7fff", + "0x5", + "0x482680017ffc8000", + "0x1", + "0x480a7ffd7fff8000", + "0x480680017fff8000", + "0x0", + "0x208b7fff7fff7ffe", + "0x482680017ffc8000", + "0x3", + "0x48127ffe7fff8000", + "0x48127ffc7fff8000", + "0x208b7fff7fff7ffe", + "0xa0680017fff8000", + "0x16", + "0x480280007ffc8003", + "0x480280017ffc8003", + "0x4844800180017ffe", + "0x100000000000000000000000000000000", + "0x483180017ffd7ffd", + "0x482480017fff7ffd", + "0x800000000000010fffffffffffffffff7ffffffffffffef0000000000000001", + "0x20680017fff7ffc", + "0x6", + "0x402480017fff7ffd", + "0xffffffffffffffffffffffffffffffff", + "0x10780017fff7fff", + "0x4", + "0x402480017ffe7ffd", + "0xf7ffffffffffffef0000000000000000", + "0x400280027ffc7ffd", + "0x20680017fff7ffe", + "0xd", + "0x402780017fff7fff", + "0x1", + "0x400380007ffc7ffd", + "0x40780017fff7fff", + "0x5", + "0x482680017ffc8000", + "0x1", + "0x480680017fff8000", + "0x0", + "0x480a7ffd7fff8000", + "0x208b7fff7fff7ffe", + "0x482680017ffc8000", + "0x3", + "0x480680017fff8000", + "0x1", + "0x480680017fff8000", + "0x0", + "0x208b7fff7fff7ffe", + "0x480a7ffc7fff8000", + "0x480a7ffd7fff8000", + "0x1104800180018000", + "0xf8", + "0x20680017fff7ffd", + "0x41", + "0x480280007ff98000", + "0x480280017ff98000", + "0x480280027ff98000", + "0x480280037ff98000", + "0x48307fff80007ffb", + "0xa0680017fff7fff", + "0x8", + "0x48307ffc7fff7ff8", + "0x402480017fff7ffe", + "0x1", + "0x400280047ff97fff", + "0x10780017fff7fff", + "0x5", + "0x40780017fff7fff", + "0x1", + "0x400280047ff97ffd", + "0x48307ffb80008002", + "0x48287ffa80028001", + "0x4844800180028001", + "0x100000000000000000000000000000000", + "0x4850800180018001", + "0xa0680017fff7ff6", + "0xc", + "0xa0680017fff8002", + "0x6", + "0x48127ff27fff7fff", + "0x48127ff27fff7fff", + "0x10780017fff7fff", + "0x10", + "0x48127ff37fff7fff", + "0x48127ff17fff7fff", + "0x10780017fff7fff", + "0xc", + "0x480680017fff7ff3", + "0x0", + "0xa0680017fff8001", + "0x6", + "0x48127ff07fff7ffe", + "0x40127ff27fff7ffe", + "0x10780017fff7fff", + "0x4", + "0x48127ff37fff7ffe", + "0x40127fef7fff7ffe", + "0x482480017ffd8000", + "0xffffffffffffffff0000000000000000", + "0x400280057ff97fff", + "0x48507ffd7ffc8000", + "0x48307ff77ffa8000", + "0x48307ff17fff8000", + "0x40317ffd7fff7ffb", + "0x482680017ff98000", + "0x6", + "0x48127fec7fff8000", + "0x48127fe97fff8000", + "0x48127ff27fff8000", + "0x48127ff07fff8000", + "0x1104800180018000", + "0xcc", + "0x480680017fff8000", + "0x0", + "0x48127fd57fff8000", + "0x48127fd57fff8000", + "0x208b7fff7fff7ffe", + "0x40780017fff7fff", + "0x27", + "0x40780017fff7fff", + "0x1", + "0x480680017fff8000", + "0x4469766973696f6e2062792030", + "0x400080007ffe7fff", + "0x480a7ff97fff8000", + "0x480680017fff8000", + "0x1", + "0x48127ffc7fff8000", + "0x482480017ffb8000", + "0x1", + "0x208b7fff7fff7ffe", + "0x4825800180007ffd", + "0x0", + "0x20680017fff7fff", + "0x4", + "0x10780017fff7fff", + "0x7", + "0x480680017fff8000", + "0x1", + "0x480680017fff8000", + "0x0", + "0x208b7fff7fff7ffe", + "0x480680017fff8000", + "0x0", + "0x480a7ffc7fff8000", + "0x208b7fff7fff7ffe", + "0x480a7ffc7fff8000", + "0x480a7ffd7fff8000", + "0x1104800180018000", + "0x96", + "0x20680017fff7ffd", + "0x41", + "0x480280007ff98000", + "0x480280017ff98000", + "0x480280027ff98000", + "0x480280037ff98000", + "0x48307fff80007ffb", + "0xa0680017fff7fff", + "0x8", + "0x48307ffc7fff7ff8", + "0x402480017fff7ffe", + "0x1", + "0x400280047ff97fff", + "0x10780017fff7fff", + "0x5", + "0x40780017fff7fff", + "0x1", + "0x400280047ff97ffd", + "0x48307ffb80008002", + "0x48287ffa80028001", + "0x4844800180028001", + "0x100000000000000000000000000000000", + "0x4850800180018001", + "0xa0680017fff7ff6", + "0xc", + "0xa0680017fff8002", + "0x6", + "0x48127ff27fff7fff", + "0x48127ff27fff7fff", + "0x10780017fff7fff", + "0x10", + "0x48127ff37fff7fff", + "0x48127ff17fff7fff", + "0x10780017fff7fff", + "0xc", + "0x480680017fff7ff3", + "0x0", + "0xa0680017fff8001", + "0x6", + "0x48127ff07fff7ffe", + "0x40127ff27fff7ffe", + "0x10780017fff7fff", + "0x4", + "0x48127ff37fff7ffe", + "0x40127fef7fff7ffe", + "0x482480017ffd8000", + "0xffffffffffffffff0000000000000000", + "0x400280057ff97fff", + "0x48507ffd7ffc8000", + "0x48307ff77ffa8000", + "0x48307ff17fff8000", + "0x40317ffd7fff7ffb", + "0x482680017ff98000", + "0x6", + "0x48127fec7fff8000", + "0x48127fe97fff8000", + "0x48127ff27fff8000", + "0x48127ff07fff8000", + "0x1104800180018000", + "0x6a", + "0x480680017fff8000", + "0x0", + "0x48127fd77fff8000", + "0x48127fd77fff8000", + "0x208b7fff7fff7ffe", + "0x40780017fff7fff", + "0x27", + "0x40780017fff7fff", + "0x1", + "0x480680017fff8000", + "0x4469766973696f6e2062792030", + "0x400080007ffe7fff", + "0x480a7ff97fff8000", + "0x480680017fff8000", + "0x1", + "0x48127ffc7fff8000", + "0x482480017ffb8000", + "0x1", + "0x208b7fff7fff7ffe", + "0x480a7ffa7fff8000", + "0x480a7ffc7fff8000", + "0x1104800180018000", + "0x74", + "0x20680017fff7fff", + "0x7", + "0x40780017fff7fff", + "0x5", + "0x480680017fff8000", + "0x0", + "0x208b7fff7fff7ffe", + "0x480a7ffb7fff8000", + "0x480a7ffd7fff8000", + "0x1104800180018000", + "0x69", + "0x208b7fff7fff7ffe", + "0x480680017fff8000", + "0x8000000000000110000000000000000", + "0x48287ffd80017fff", + "0xa0680017fff7fff", + "0x7", + "0x482480017fff8000", + "0x100000000000000000000000000000000", + "0x400280007ffb7fff", + "0x10780017fff7fff", + "0x24", + "0x400280007ffb7fff", + "0x482680017ffb8000", + "0x1", + "0x4825800180007ffd", + "0x8000000000000110000000000000000", + "0x20680017fff7fff", + "0x4", + "0x10780017fff7fff", + "0x6", + "0x40780017fff7fff", + "0x1", + "0x10780017fff7fff", + "0x10", + "0x4825800180007ffc", + "0x0", + "0x20680017fff7fff", + "0x4", + "0x10780017fff7fff", + "0xa", + "0x40780017fff7fff", + "0x1", + "0x48127ffc7fff8000", + "0x480680017fff8000", + "0x1", + "0x480680017fff8000", + "0x0", + "0x208b7fff7fff7ffe", + "0x484680017ffd8000", + "0x100000000000000000000000000000000", + "0x48127ffc7fff8000", + "0x480680017fff8000", + "0x0", + "0x48287ffc7ffd8000", + "0x208b7fff7fff7ffe", + "0x40780017fff7fff", + "0x3", + "0x482680017ffb8000", + "0x1", + "0x480680017fff8000", + "0x1", + "0x480680017fff8000", + "0x0", + "0x208b7fff7fff7ffe", + "0x20780017fff7ffc", + "0xb", + "0x20780017fff7ffd", + "0x9", + "0x480680017fff8000", + "0x1", + "0x480680017fff8000", + "0x0", + "0x480680017fff8000", + "0x0", + "0x208b7fff7fff7ffe", + "0x480680017fff8000", + "0x0", + "0x480a7ffc7fff8000", + "0x480a7ffd7fff8000", + "0x208b7fff7fff7ffe", + "0x4824800180008002", + "0xffffffffffffffff0000000000000000", + "0x480280007ff98001", + "0x480280017ff97ffe", + "0x400280027ff97ffe", + "0x484480017ffe8000", + "0x10000000000000000", + "0x40317ffc7fff7ffa", + "0x48487ffb7ffc8000", + "0x48487ffb7ffc8000", + "0x4824800180018002", + "0xffffffffffffffff0000000000000000", + "0x480280037ff98001", + "0x480280047ff97fff", + "0x400280057ff97ffd", + "0x484480017ffd8000", + "0x10000000000000000", + "0x40307ffd7fff7ffb", + "0x484480017ffd8000", + "0x10000000000000000", + "0x48307fff7ff98003", + "0x482480017fff8000", + "0xfffffffffffffffe0000000000000000", + "0x480280067ff97fff", + "0x480280077ff97ffd", + "0x400380087ff97ffd", + "0x404480017ffc7ffe", + "0x100000000000000000000000000000000", + "0x40287ffd7ffe7fff", + "0x40317ffc7ff77ffc", + "0x482680017ff98000", + "0x9", + "0x208b7fff7fff7ffe", + "0x48297ffd80007ffc", + "0x20680017fff7fff", + "0x4", + "0x10780017fff7fff", + "0x5", + "0x480680017fff8000", + "0x0", + "0x208b7fff7fff7ffe", + "0x480680017fff8000", + "0x1", + "0x208b7fff7fff7ffe" + ], + "hints": [ + [ + 0, + [ + { + "TestLessThanOrEqual": { + "lhs": { + "Immediate": "0x0" + }, + "rhs": { + "Deref": { + "register": "FP", + "offset": -6 + } + }, + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 17, + [ + { + "AllocSegment": { + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 36, + [ + { + "TestLessThanOrEqual": { + "lhs": { + "Immediate": "0x12278" + }, + "rhs": { + "Deref": { + "register": "AP", + "offset": -7 + } + }, + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 56, + [ + { + "AllocSegment": { + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 91, + [ + { + "AllocSegment": { + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 106, + [ + { + "AllocSegment": { + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 121, + [ + { + "TestLessThanOrEqual": { + "lhs": { + "Immediate": "0x5960" + }, + "rhs": { + "Deref": { + "register": "FP", + "offset": -6 + } + }, + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 148, + [ + { + "AllocSegment": { + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 167, + [ + { + "TestLessThanOrEqual": { + "lhs": { + "Immediate": "0xcb98" + }, + "rhs": { + "Deref": { + "register": "AP", + "offset": -12 + } + }, + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 188, + [ + { + "AllocSegment": { + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 206, + [ + { + "AllocSegment": { + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 221, + [ + { + "AllocSegment": { + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 243, + [ + { + "AllocSegment": { + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 258, + [ + { + "TestLessThanOrEqual": { + "lhs": { + "Immediate": "0x5960" + }, + "rhs": { + "Deref": { + "register": "FP", + "offset": -6 + } + }, + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 285, + [ + { + "AllocSegment": { + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 304, + [ + { + "TestLessThanOrEqual": { + "lhs": { + "Immediate": "0x45ec" + }, + "rhs": { + "Deref": { + "register": "AP", + "offset": -12 + } + }, + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 319, + [ + { + "AllocSegment": { + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 348, + [ + { + "AllocSegment": { + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 363, + [ + { + "AllocSegment": { + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 385, + [ + { + "AllocSegment": { + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 454, + [ + { + "SystemCall": { + "system": { + "Deref": { + "register": "FP", + "offset": -5 + } + } + } + } + ] + ], + [ + 551, + [ + { + "SystemCall": { + "system": { + "Deref": { + "register": "FP", + "offset": -3 + } + } + } + } + ] + ], + [ + 568, + [ + { + "SystemCall": { + "system": { + "BinOp": { + "op": "Add", + "a": { + "register": "FP", + "offset": -3 + }, + "b": { + "Immediate": "0x7" + } + } + } + } + } + ] + ], + [ + 638, + [ + { + "SystemCall": { + "system": { + "Deref": { + "register": "FP", + "offset": -4 + } + } + } + } + ] + ], + [ + 771, + [ + { + "SystemCall": { + "system": { + "Deref": { + "register": "AP", + "offset": -7 + } + } + } + } + ] + ], + [ + 788, + [ + { + "SystemCall": { + "system": { + "BinOp": { + "op": "Add", + "a": { + "register": "AP", + "offset": -13 + }, + "b": { + "Immediate": "0x7" + } + } + } + } + } + ] + ], + [ + 907, + [ + { + "SystemCall": { + "system": { + "Deref": { + "register": "FP", + "offset": -5 + } + } + } + } + ] + ], + [ + 943, + [ + { + "AllocSegment": { + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 979, + [ + { + "AllocSegment": { + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 1005, + [ + { + "AllocSegment": { + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 1043, + [ + { + "AllocSegment": { + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 1198, + [ + { + "AllocSegment": { + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 1246, + [ + { + "TestLessThan": { + "lhs": { + "Deref": { + "register": "FP", + "offset": -3 + } + }, + "rhs": { + "Immediate": "0x100000000000000000000000000000000" + }, + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 1248, + [ + { + "DivMod": { + "lhs": { + "Deref": { + "register": "FP", + "offset": -3 + } + }, + "rhs": { + "Immediate": "0x100000000000000000000000000000000" + }, + "quotient": { + "register": "AP", + "offset": 3 + }, + "remainder": { + "register": "AP", + "offset": 4 + } + } + } + ] + ], + [ + 1282, + [ + { + "TestLessThan": { + "lhs": { + "Deref": { + "register": "FP", + "offset": -3 + } + }, + "rhs": { + "Immediate": "0x100000000000000000000000000000000" + }, + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 1284, + [ + { + "DivMod": { + "lhs": { + "Deref": { + "register": "FP", + "offset": -3 + } + }, + "rhs": { + "Immediate": "0x100000000000000000000000000000000" + }, + "quotient": { + "register": "AP", + "offset": 3 + }, + "remainder": { + "register": "AP", + "offset": 4 + } + } + } + ] + ], + [ + 1326, + [ + { + "Uint256DivMod": { + "dividend0": { + "Deref": { + "register": "FP", + "offset": -6 + } + }, + "dividend1": { + "Deref": { + "register": "FP", + "offset": -5 + } + }, + "divisor0": { + "Deref": { + "register": "AP", + "offset": -2 + } + }, + "divisor1": { + "Deref": { + "register": "AP", + "offset": -1 + } + }, + "quotient0": { + "register": "AP", + "offset": 0 + }, + "quotient1": { + "register": "AP", + "offset": 1 + }, + "remainder0": { + "register": "AP", + "offset": 2 + }, + "remainder1": { + "register": "AP", + "offset": 3 + } + } + } + ] + ], + [ + 1342, + [ + { + "WideMul128": { + "lhs": { + "Deref": { + "register": "AP", + "offset": -7 + } + }, + "rhs": { + "Deref": { + "register": "AP", + "offset": -9 + } + }, + "high": { + "register": "AP", + "offset": 1 + }, + "low": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 1349, + [ + { + "TestLessThan": { + "lhs": { + "Deref": { + "register": "AP", + "offset": -12 + } + }, + "rhs": { + "Deref": { + "register": "AP", + "offset": -13 + } + }, + "dst": { + "register": "AP", + "offset": 2 + } + } + } + ] + ], + [ + 1361, + [ + { + "TestLessThan": { + "lhs": { + "Deref": { + "register": "AP", + "offset": -12 + } + }, + "rhs": { + "Deref": { + "register": "AP", + "offset": -15 + } + }, + "dst": { + "register": "AP", + "offset": 1 + } + } + } + ] + ], + [ + 1391, + [ + { + "AllocSegment": { + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 1424, + [ + { + "Uint256DivMod": { + "dividend0": { + "Deref": { + "register": "FP", + "offset": -6 + } + }, + "dividend1": { + "Deref": { + "register": "FP", + "offset": -5 + } + }, + "divisor0": { + "Deref": { + "register": "AP", + "offset": -2 + } + }, + "divisor1": { + "Deref": { + "register": "AP", + "offset": -1 + } + }, + "quotient0": { + "register": "AP", + "offset": 0 + }, + "quotient1": { + "register": "AP", + "offset": 1 + }, + "remainder0": { + "register": "AP", + "offset": 2 + }, + "remainder1": { + "register": "AP", + "offset": 3 + } + } + } + ] + ], + [ + 1440, + [ + { + "WideMul128": { + "lhs": { + "Deref": { + "register": "AP", + "offset": -7 + } + }, + "rhs": { + "Deref": { + "register": "AP", + "offset": -9 + } + }, + "high": { + "register": "AP", + "offset": 1 + }, + "low": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 1447, + [ + { + "TestLessThan": { + "lhs": { + "Deref": { + "register": "AP", + "offset": -12 + } + }, + "rhs": { + "Deref": { + "register": "AP", + "offset": -13 + } + }, + "dst": { + "register": "AP", + "offset": 2 + } + } + } + ] + ], + [ + 1459, + [ + { + "TestLessThan": { + "lhs": { + "Deref": { + "register": "AP", + "offset": -12 + } + }, + "rhs": { + "Deref": { + "register": "AP", + "offset": -15 + } + }, + "dst": { + "register": "AP", + "offset": 1 + } + } + } + ] + ], + [ + 1489, + [ + { + "AllocSegment": { + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 1520, + [ + { + "TestLessThan": { + "lhs": { + "Deref": { + "register": "AP", + "offset": 0 + } + }, + "rhs": { + "Immediate": "0x100000000000000000000000000000000" + }, + "dst": { + "register": "AP", + "offset": -1 + } + } + } + ] + ], + [ + 1586, + [ + { + "DivMod": { + "lhs": { + "Deref": { + "register": "FP", + "offset": -6 + } + }, + "rhs": { + "Immediate": "0x10000000000000000" + }, + "quotient": { + "register": "AP", + "offset": 1 + }, + "remainder": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 1596, + [ + { + "DivMod": { + "lhs": { + "Deref": { + "register": "AP", + "offset": -1 + } + }, + "rhs": { + "Immediate": "0x10000000000000000" + }, + "quotient": { + "register": "AP", + "offset": 0 + }, + "remainder": { + "register": "AP", + "offset": 1 + } + } + } + ] + ], + [ + 1607, + [ + { + "DivMod": { + "lhs": { + "Deref": { + "register": "AP", + "offset": 2 + } + }, + "rhs": { + "Immediate": "0x100000000000000000000000000000000" + }, + "quotient": { + "register": "AP", + "offset": -1 + }, + "remainder": { + "register": "FP", + "offset": -3 + } + } + } + ] + ] + ], + "entry_points_by_type": { + "EXTERNAL": [ + { + "selector": "0xf2f3bce3680781a8bbe7a1a4609e6daf69675a20513bad584d123c55fe06a5", + "offset": 258, + "builtins": [ + "range_check" + ] + }, + { + "selector": "0x1a35984e05126dbecb7c3bb9929e7dd9106d460c59b1633739a5c733a5fb13b", + "offset": 0, + "builtins": [ + "range_check" + ] + }, + { + "selector": "0x2e3e21ff5952b2531241e37999d9c4c8b3034cccc89a202a6bf019bdf5294f9", + "offset": 121, + "builtins": [ + "range_check" + ] + } + ], + "L1_HANDLER": [], + "CONSTRUCTOR": [] + } +} \ No newline at end of file diff --git a/__mocks__/cairo/ethSigner/testEthPubKey.sierra.json b/__mocks__/cairo/ethSigner/testEthPubKey.sierra.json new file mode 100644 index 000000000..9a39eb06b --- /dev/null +++ b/__mocks__/cairo/ethSigner/testEthPubKey.sierra.json @@ -0,0 +1,1491 @@ +{ + "sierra_program": [ + "0x1", + "0x4", + "0x0", + "0x2", + "0x5", + "0x3", + "0x1bf", + "0x41", + "0x3b", + "0x52616e6765436865636b", + "0x800000000000000100000000000000000000000000000000", + "0x553132384d756c47756172616e746565", + "0x75313238", + "0x800000000000000700000000000000000000000000000000", + "0x537472756374", + "0x800000000000000700000000000000000000000000000003", + "0x0", + "0x25e2ca4b84968c2d8b83ef476ca8549410346b00836ce79beaf538155990bb2", + "0x1", + "0x2", + "0x4e6f6e5a65726f", + "0x800000000000000700000000000000000000000000000001", + "0x3", + "0x800000000000000f00000000000000000000000000000001", + "0x2ee1e2b1b89f8c495f200e4956278a4d47395fe262f27b52e5865c9524c08c3", + "0x456e756d", + "0x28edf843b90fd4464a9cf1779d01f8e7ce719fb66247954f300bf315f31bb23", + "0x4", + "0x5", + "0x66656c74323532", + "0x11c6d8087e00642489f92d2821ad6ebd6532ad1a3b6d12833da6d6810391511", + "0x7", + "0x426f78", + "0x29d7d57c04a880978e7b3689f6218e507f3be17588744b58dc17762447ad0e7", + "0x9", + "0x3288d594b9a45d15bb2fcb7903f06cdb06b27f0ba88186ec4cfaa98307cb972", + "0x800000000000000700000000000000000000000000000002", + "0x16a4c8d7c05909052238a862d8cc3e7975bf05a07b3a69c6b28951083a6d672", + "0x4172726179", + "0x800000000000000300000000000000000000000000000001", + "0x800000000000000300000000000000000000000000000003", + "0xd", + "0xe", + "0x2ce4352eafa6073ab4ecf9445ae96214f99c2c33a29c01fcae68ba501d10e2c", + "0xc", + "0xf", + "0x1909a2057b9c1373b889e003e050a09f431d8108e0659d03444ced99a6eea68", + "0x800000000000000f00000000000000000000000000000002", + "0xcc5e86243f861d2d64b08c35db21013e773ac5cf10097946fe0011304886d5", + "0x12", + "0x101dc0399934cc08fa0d6f6f2daead4e4a38cabeea1c743e1fc28d2d6e58e99", + "0x15", + "0x26e57b11a41813f0069bfb9b709d4b0ba1684594ca17e215da3a9052e1f5964", + "0x16", + "0x12867ecd09c884a5cf1f6d9eb0193b4695ce3bb3b2d796a8367d0c371f59cb2", + "0x536563703235366b31506f696e74", + "0xf2f93ea641ecf70f0206ffef23fc8e88bb7b4d26cdf081ca3f0ee2bca78f1", + "0x19", + "0x7538", + "0x753332", + "0x53746f7261676541646472657373", + "0x53746f726167654261736541646472657373", + "0x32443acb98ddcfa00f2c50ef7e9735a87b8fce1545af482b5b6e1bf82633ac8", + "0x800000000000000f00000000000000000000000000000003", + "0x1f", + "0x111c0ca6983069286829032c0f7d98d038c7f353acd9e3268801c47267d9b2a", + "0x20", + "0x3179e7829d19e62b12c79010203ceee40c98166e97eb104c25ad1adb6b9675a", + "0x22", + "0x3c7b5436891664778e6019991e6bd154eeab5d43a552b1f19485dec008095d3", + "0x23", + "0x384831629f0478ca842f1c8490fa564add746018a49a72c5687903b63c85d1", + "0x2e3a3c72bbaf02844ea026427da1ee68471ff2dfd44997bdebc7282b287f343", + "0x26", + "0x711eca2dc7cf53e8e0da11f141a9da005593d48920e6fd53de0fd37f971093", + "0x28", + "0x26c8d945f359c989bacf756c0af7420e82485e77afbae13489ebbd73795658d", + "0x3bd64b3c3d722b8e19ad612359c77e5e7d5210f0b6c171650b42ad6cd05915c", + "0x2b", + "0x1ed3423b31a49c542b2d0fc3abe56f86394fbb321cabafdfad0076bc0abf1e6", + "0x2c", + "0x536e617073686f74", + "0x1baeba72e79e9db2587cf44fedb2f3700b2075a5e8e39a562584862c4b71f62", + "0x2e", + "0x2f", + "0x8b8a77e98230b81e603eadb16de7aca7916d1b9c3aecaecc38f37b2349fb9f", + "0x30", + "0x74584e9f10ffb1a40aa5a3582e203f6758defc4a497d1a2d5a89f274a320e9", + "0x33", + "0x20d8eb988385ce50c4fa191d9eded0703a5200adae8a329e53089238ab97570", + "0x35", + "0x4275696c74696e436f737473", + "0x53797374656d", + "0x9931c641b913035ae674b400b61a51476d506bbe8bba2ff8a6272790aba9e6", + "0x32", + "0x4761734275696c74696e", + "0xf4", + "0x7265766f6b655f61705f747261636b696e67", + "0x77697468647261775f676173", + "0x6272616e63685f616c69676e", + "0x7374727563745f6465636f6e737472756374", + "0x73746f72655f74656d70", + "0x61727261795f736e617073686f745f706f705f66726f6e74", + "0x64726f70", + "0x61727261795f6e6577", + "0x66656c743235325f636f6e7374", + "0x496e70757420746f6f206c6f6e6720666f7220617267756d656e7473", + "0x61727261795f617070656e64", + "0x7374727563745f636f6e737472756374", + "0x656e756d5f696e6974", + "0x39", + "0x3a", + "0x38", + "0x6765745f6275696c74696e5f636f737473", + "0x37", + "0x77697468647261775f6761735f616c6c", + "0x736e617073686f745f74616b65", + "0x66756e6374696f6e5f63616c6c", + "0x656e756d5f6d61746368", + "0x36", + "0x34", + "0x4f7574206f6620676173", + "0x31", + "0x6", + "0x2d", + "0x4661696c656420746f20646573657269616c697a6520706172616d202331", + "0x8", + "0x72656e616d65", + "0xa", + "0x29", + "0xb", + "0x27", + "0x736563703235366b315f6e65775f73797363616c6c", + "0x25", + "0x6a756d70", + "0x24", + "0x21", + "0x73746f726167655f626173655f616464726573735f636f6e7374", + "0x2ccc306eba65ea91884d5809e8d06e17af085c8d2f9013071a9195a0763704f", + "0x647570", + "0x1e", + "0x73746f726167655f616464726573735f66726f6d5f62617365", + "0x7533325f636f6e7374", + "0x1c", + "0x1d", + "0x73746f726167655f726561645f73797363616c6c", + "0x75385f636f6e7374", + "0x2679d68052ccd03a53755ca9169677965fbd93e489df62f5f40d4f03c24f7a4", + "0x1a", + "0x10", + "0x736563703235366b315f6765745f78795f73797363616c6c", + "0x2a", + "0x526573756c743a3a756e77726170206661696c65642e", + "0x11", + "0x13", + "0x18", + "0x14", + "0x17", + "0x73746f726167655f77726974655f73797363616c6c", + "0x753132385f636f6e7374", + "0x1b", + "0x393d13543d6033e70e218aad8050e8de40a1dfbac0e80459811df56e3716ce6", + "0x536563703235366b31506f696e743a20496e76616c696420706f696e742e", + "0x4f7074696f6e3a3a756e77726170206661696c65642e", + "0x753132385f746f5f66656c74323532", + "0x756e626f78", + "0x66656c743235325f6d756c", + "0x66656c743235325f616464", + "0x75313238735f66726f6d5f66656c74323532", + "0x753235365f736166655f6469766d6f64", + "0x4469766973696f6e2062792030", + "0x753132385f6571", + "0x8000000000000110000000000000000", + "0x753132385f6f766572666c6f77696e675f737562", + "0x100000000000000000000000000000000", + "0x753235365f69735f7a65726f", + "0x753132385f6d756c5f67756172616e7465655f766572696679", + "0x4b8", + "0xffffffffffffffff", + "0x57", + "0x4a", + "0x43", + "0x3c", + "0x3d", + "0x3e", + "0xca", + "0xc3", + "0xb4", + "0x84", + "0xa6", + "0x9f", + "0x3f", + "0x40", + "0x41", + "0x42", + "0x145", + "0x13e", + "0x12f", + "0xf7", + "0x121", + "0x11a", + "0x44", + "0x45", + "0x46", + "0x47", + "0x48", + "0x16d", + "0x199", + "0x181", + "0x49", + "0x186", + "0x4b", + "0x4c", + "0x4d", + "0x191", + "0x4e", + "0x4f", + "0x50", + "0x51", + "0x52", + "0x53", + "0x54", + "0x55", + "0x1b3", + "0x56", + "0x58", + "0x59", + "0x5a", + "0x5b", + "0x5c", + "0x5d", + "0x5e", + "0x5f", + "0x60", + "0x61", + "0x62", + "0x63", + "0x1ec", + "0x64", + "0x65", + "0x66", + "0x1e6", + "0x67", + "0x68", + "0x69", + "0x1df", + "0x6a", + "0x6b", + "0x1f7", + "0x6c", + "0x6d", + "0x6e", + "0x1f2", + "0x6f", + "0x70", + "0x71", + "0x72", + "0x73", + "0x205", + "0x74", + "0x75", + "0x76", + "0x77", + "0x78", + "0x79", + "0x7a", + "0x7b", + "0x7c", + "0x7d", + "0x230", + "0x229", + "0x7e", + "0x7f", + "0x80", + "0x81", + "0x82", + "0x23c", + "0x83", + "0x85", + "0x86", + "0x87", + "0x88", + "0x286", + "0x89", + "0x8a", + "0x8b", + "0x26b", + "0x262", + "0x8c", + "0x8d", + "0x8e", + "0x267", + "0x8f", + "0x90", + "0x91", + "0x92", + "0x273", + "0x93", + "0x94", + "0x27e", + "0x95", + "0x96", + "0x97", + "0x98", + "0x99", + "0x9a", + "0x9b", + "0x9c", + "0x30d", + "0x9d", + "0x9e", + "0xa0", + "0xa1", + "0xa2", + "0x304", + "0xa3", + "0xa4", + "0x2f4", + "0xa5", + "0x2eb", + "0xa7", + "0xa8", + "0xa9", + "0x2c4", + "0x2c9", + "0x2e4", + "0x2d6", + "0xaa", + "0xab", + "0xac", + "0xad", + "0xae", + "0xaf", + "0x322", + "0xb0", + "0x32f", + "0xb1", + "0xb2", + "0xb3", + "0xb5", + "0xb6", + "0xb7", + "0x34d", + "0xb8", + "0xb9", + "0xba", + "0x352", + "0xbb", + "0xbc", + "0xbd", + "0x38f", + "0xbe", + "0xbf", + "0x38a", + "0x365", + "0x36a", + "0x380", + "0x37b", + "0xc0", + "0xc1", + "0xc2", + "0x386", + "0x395", + "0x3d9", + "0x3d1", + "0xc4", + "0xc5", + "0x3c1", + "0xc6", + "0xc7", + "0xc8", + "0xc9", + "0xcb", + "0xcc", + "0xcd", + "0x3e6", + "0xce", + "0xcf", + "0xd0", + "0xd1", + "0xd2", + "0x3f3", + "0x3fe", + "0xd3", + "0xd4", + "0xd5", + "0xd6", + "0xd7", + "0x414", + "0xd8", + "0xd9", + "0xda", + "0xdb", + "0xdc", + "0xdd", + "0xde", + "0xdf", + "0xe0", + "0x42a", + "0x43c", + "0xe1", + "0xe2", + "0xe3", + "0xe4", + "0x45f", + "0xe5", + "0xe6", + "0xe7", + "0xe8", + "0xe9", + "0x491", + "0x47a", + "0x487", + "0x486", + "0xea", + "0xeb", + "0xec", + "0xed", + "0xee", + "0x4a1", + "0xef", + "0xf0", + "0xf1", + "0xf2", + "0x4b3", + "0xf3", + "0x153", + "0x159", + "0x174", + "0x1a2", + "0x1ba", + "0x1bd", + "0x1fd", + "0x20b", + "0x210", + "0x219", + "0x236", + "0x242", + "0x28f", + "0x31c", + "0x328", + "0x338", + "0x346", + "0x399", + "0x3e0", + "0x3ec", + "0x3f8", + "0x406", + "0x421", + "0x42e", + "0x449", + "0x46d", + "0x49b", + "0x4a5", + "0x4a9", + "0x2b8b", + "0x48100708840100f03038140d0602c140b050241007030140802018080200", + "0x44280a0d0283208038442e0a06860280a0b8282c08038440a150a028260a", + "0x841410040800c170507c3c1d0403c0c0e05040101c0305014140506c1007", + "0x2040110a028200813818280a058284c08038444a0a12028460810044440a", + "0xac1410040700c170505c14100401c0c2205050142a040802225050a41428", + "0xc8440a188286008100440a2f0a0281c0a170200e11128285a0a160204011", + "0x94143a050e41020088501438050401037030d8100f030146a051a0146605", + "0x287e08100444a0a1f0287a0810044780a0802038060a028620a1d8200e11", + "0x80224105040101c03050144105100100708838140e05040100703088143c", + "0x288c0a080206e061c0288a0813818440a208288808100444a0a218288408", + "0xf0144c0504010070312c144a040700c22050349225051201447040802214", + "0x289e0810044280a11028200810018980a080203806128289c0a268204011", + "0x15814550408022022a014a62505148145104080223105040101c030941450", + "0x12c140a2f85c140a2f020140a2e930140a2e020b6082d020b2580115c4a0a", + "0x2814641082814640b82814630b828145d3102c14610b82814600d028145f", + "0x20d66a05028ba0834998140a2e9a0140a2e99c140a2e82816660502cca25", + "0x28145c37828146e07038146d23028145f23028146c2302814641c0281464", + "0x28b87005028dc1307028da2205028ba3105028ba3105028be3105028d852", + "0x2ccc0a05994ac0a05190980a05190440a0517c440a051b0280a0517ca00a", + "0x28dc4e05028b87205028dc1407028da4c05028ba4c05028be7105828c208", + "0x1b48c0a051702e0e051b4ea0b05184900a0517ce80a051b8e60e051b4780a", + "0x104140a3610c140a2e1e4140a371e01c0a368681c0a368c4140a3b9d81c0a", + "0x194e00a05174100b3802816652802814643d038146d20828145d20828145f", + "0x28ba08059f4140b32820f84105028b87b05028dc2407028da0a059c0140b", + "0x1949c0a051907c0a05170fe0a051b8420e051b4140b3e8281665041f8fa0a", + "0x28dc2207028da0a058f0140b3282816720502cca7205028ba08059c8140b", + "0x17c140b3a02816653a028145d0402ce80a05994900a05190740a05171000a", + "0x28ba8705028ba87050290608058290c0842a10140a41a08160a408e0140a", + "0x1944a0e051b4560a05174560a05190108b42028145d0502c148a04225100a", + "0x21c140a2f85c140a2f9bc140a2e828166f0502cca8c05028ba0805a30140b", + "0x174100b478281665208281464042391a0e051b4140b46028166542028145f", + "0x28da2907028da0e05028ba9107028da9005828c20a05a3c140b32a3c140a", + "0x1b8140b3d828166507028145f3d828145d0402cf60a05995260a051b9240e", + "0x2501c0a36828167f0502cca7f05028ba08059fc140b328f8140a321f4140a", + "0x28145d0402d280a05994280a05190109615828145c16828145c4a828146e", + "0x248140a370ac1c0a36a50140a3b9a0140a3b99c140a3b82816940502cca94", + "0x38146d0502d000a05995000a05174100b4002816651d028146414828145c", + "0x28da0e05029060e05028c808058292e0b058292e9105028dc9507028da2d", + "0x1b4140b0525c1c0a051b1180e051b4620e051b4480a051711a0a051b9260e", + "0x26c160a3082c140a2fa68160a30820166f0502cca5205028c8084ca601c0a", + "0x2cf20a05994f20a05174100b3c828166521828146447828146e46028146e", + "0x2cca7805028ba4b05028ba08059e0140b32821380b05028ee0e05028b80a", + "0x174100b4982816650b82814770b828149d3c028146e2582814830502cf00a", + "0x213c0b05828c27605028dc8707028da0a05a4c140b32850140a3ba4c140a", + "0x191280a051b8140b4a82816654a828145d0402d2a0a059945a0a05190109f", + "0x2016910502cca085002816920502cca9205028ba0805a48140b328a4140a", + "0x38146d05028145d04284e60a051b9100e051b4140b48828166548828145d", + "0x21460a05a34140b32a88160a30a34140a2e820168d0502cca2405028c884", + "0x25cf40a05174100b3d02816653d028146e1c038146d05828145d05828146c", + "0x1d8140b32a98160a309d8140a2e82816760502cca085282c140a41a90160a", + "0x2cf40a0599410a80402ce60a05994e60a05174140b3982816650429c100b", + "0x2a81408058202e7305aac281305aa8160a0402c1408042a8140804021520a", + "0xacf01a05aa81676050501013052a814130504c1076052a8140e050381008", + "0x2a814083b02010aa051e0141704021540a0d028e608042a8140805820f40a", + "0x20440a550284224059e81021052a81421051e01021052a814080d020480a", + "0x4c14130424414aa0523414220423414aa050884a0b108204a0a550281024", + "0x29540a48829220805829540a058291a080a029540a0a0284a0809829540a", + "0xa414aa050205208042a8147a051cc100855028100b0424416140984c1491", + "0x28100b040b4560b56251240b5502c521409839280814829540a148292408", + "0x21183105aa81493052541093052a81495050b41095052a814081582010aa", + "0x28160a46821280a55029280a12821240a55029240a0982010aa050c41493", + "0x295a38052a816840523010844421d301355029180b4a24826310402c14aa", + "0x28780a43820780a55028700a4c021000a55028107604021540a0402c103a", + "0x22014aa05220148d0421c14aa0521c142504021540a1f02910083f8f816aa", + "0x1f41caa05200fe884384c740840029540a4002870083f829540a3f8290808", + "0x23c16aa0510c143c04021540a0402c1079052b8860a5502cf60a40020f641", + "0x288208042a81448051f410742402d540a47828fe08042a81446050f81046", + "0x2a814980504c104e052a8144c0510c104c052a8144b051ec104b052a81474", + "0x289c0a550289c0a48820820a55028820a46820fa0a55028fa0a12821300a", + "0x26014aa052601413041c814aa051e4142204021540a0402c104e209f53013", + "0x260260a39029540a39029220820829540a208291a083e829540a3e8284a08", + "0x941098052a814980504c1056052a8143a05088100855028100b041c8827d", + "0x2210e9809828ac0a55028ac0a48821100a55029100a468210e0a550290e0a", + "0x2a81470051e01070052a814083c820a00a55028107604021540a0402c1056", + "0x1a814aa05148de0b10820de0a5502810240414814aa051c0a00b3d020e00a", + "0x291a0816829540a168284a0815829540a15828260834029540a350284408", + "0x23c100855028100b041a0162d1584c1468052a8146805244100b052a8140b", + "0x19c14aa0519c14780419c14aa05020f20833029540a041d81008550281c0a", + "0x8810af052a814005702c420857029540a040901000052a814673302cf408", + "0x28160a468202e0a550282e0a12820e60a55028e60a09821600a550295e0a", + "0x20160a04021540a0402010b00585ce613052c014aa052c014910402c14aa", + "0x284a0809829540a098282608042a81408058202e7305ac4281305aa8160a", + "0x2c281309920100e052a8140e05118100b052a8140b052341014052a81414", + "0x12c100855028100b0408414b212029540b3d028e8083d1e0347609aa8140e", + "0x281c08042a8140805821220a59a3414aa05894144c04094440b55028480a", + "0x248147304021540a0402c102b052d1289205aa81629050501029052a81422", + "0x20340816829540a041d81008550291a0a4402010aa05250141704021540a", + "0x29540a040901093052a814951682cf4084a829540a4a828f0084a829540a", + "0x20ec0a55028ec0a09821300a55029180a11021180a550292631058841031", + "0x68ec130526014aa052601491041e014aa051e0148d0406814aa050681425", + "0x290e0a490210e0a55028102904021540a15828e608042a81408058213078", + "0x205608042a8140805820743805ad5088805aa816870d1d81c940421c14aa", + "0x29540a420284a0844029540a4402826081e029540a400285a0840029540a", + "0x2a8148d1e1e108880a138108d052a8148d052101078052a81478052341084", + "0x28f60a2b02010aa050201608218296c7b052a81641051c810413e9fc7c13", + "0x1041008550291e0a3e8208c8f05aa81479051fc1079052a814083b02010aa", + "0x287c0a09820960a55028e80a21820e80a55028900a3d820900a550288c0a", + "0x12c14aa0512c1491041f414aa051f4148d041fc14aa051fc1425040f814aa", + "0x29540a1f028260826029540a218284408042a8140805820967d3f8f8260a", + "0x4c144c052a8144c05244107d052a8147d05234107f052a8147f05094103e", + "0x20f20827029540a041d81008550291a0a4402010aa050201608261f4fe3e", + "0x29540a040901056052a814722702cf40839029540a39028f00839029540a", + "0x20700a55028700a09820a40a55028e00a11020e00a55028ac50058841050", + "0xe870130514814aa051481491041e014aa051e0148d040e814aa050e81425", + "0x2a814083b02010aa05088148f04021540a488287c08042a8140805820a478", + "0x20d00a55028d46f059e8106a052a8146a051e0106a052a8140828020de0a", + "0x1d814130400014aa0519c14220419c14aa051a0cc0b10820cc0a550281024", + "0x29540a0002922083c029540a3c0291a080d029540a0d0284a083b029540a", + "0x2a814760504c10ae052a8142105088100855028100b04000f01a3b04c1400", + "0x295c0a550295c0a48820f00a55028f00a46820340a55028340a12820ec0a", + "0x1e410af052a814083b02010aa05038148f04021540a0402c10ae3c068ec13", + "0x2a81408120216e0a5502960af059e810b0052a814b0051e010b0052a81408", + "0x1cc14aa051cc1413042e814aa052e41422042e414aa052dd700b10821700a", + "0x1cc260a5d029540a5d029220805829540a058291a080b829540a0b8284a08", + "0x28100b0405ce60b5d850260b5502c1408058281008550281008042e81617", + "0x20160a55028160a46820280a55028280a12820260a55028260a0982010aa", + "0x2a8167a051d0107a3c068ec13550281c0b0a04c26480403814aa050381446", + "0x29540b1282898081288816aa05090144b04021540a0402c1021052f0480a", + "0x251240b5502c520a0a020520a55028440a0702010aa050201608488297a8d", + "0x234148804021540a4a0282e08042a81492051cc100855028100b040ac14be", + "0x1e81095052a81495051e01095052a814080d0205a0a55028107604021540a", + "0x23014220423014aa0524c620b10820620a5502810240424c14aa052545a0b", + "0x29540a3c0291a080d029540a0d0284a083b029540a3b02826084c029540a", + "0x2a8142b051cc100855028100b04260f01a3b04c1498052a81498052441078", + "0x211100b5502d0e1a3b039280843829540a43829240843829540a040a41008", + "0x254103c052a81480050b41080052a814081582010aa0502016081d0e016bf", + "0x234fe0b380211a0a550291a0a4202010aa050f81493041fc7c0b55028780a", + "0x21540a3d8291008219ec16aa051f414870410414aa05020ec083e829540a", + "0x28700821829540a2182908083c029540a3c0291a0842029540a420284a08", + "0x21100a55029100a098208c8f3c839540a2090cf084098e81041052a81441", + "0xf8104c2582d540a240287808042a8140805820e80a6012014aa059181480", + "0x2a81472051041008550289c0a3e820e44e05aa8144b051fc100855028980a", + "0x21100a55029100a09820e00a55028a00a21820a00a55028ac0a3d820ac0a", + "0x1e51013051c014aa051c014910423c14aa0523c148d041e414aa051e41425", + "0x284a0844029540a44028260829029540a3a0284408042a8140805820e08f", + "0x1491e794404c1452052a8145205244108f052a8148f052341079052a81479", + "0x1a814aa05020f20837829540a041d81008550291a0a4402010aa050201608", + "0x2c420833029540a040901068052a8146a3782cf40835029540a35028f008", + "0x28740a12820700a55028700a09820000a55028ce0a11020ce0a55028d066", + "0x2c10003c0e870130500014aa050001491041e014aa051e0148d040e814aa", + "0x14010ae052a814083b02010aa05088148f04021540a488287c08042a81408", + "0x2a8140812021600a550295eae059e810af052a814af051e010af052a81408", + "0x1d814aa051d81413042e414aa052e01422042e014aa052c16e0b108216e0a", + "0x1d8260a5c829540a5c82922083c029540a3c0291a080d029540a0d0284a08", + "0x941076052a814760504c10ba052a8142105088100855028100b042e4f01a", + "0x1e0347609829740a55029740a48820f00a55028f00a46820340a55028340a", + "0x29540a041e410ad052a814083b02010aa05038148f04021540a0402c10ba", + "0x8410c3052a8140812021840a5502982ad059e810c1052a814c1051e010c1", + "0x5c1425041cc14aa051cc14130431414aa0531014220431014aa05309860b", + "0x218a0b0b9cc260a62829540a62829220805829540a058291a080b829540a", + "0x2c148d0402814aa0502814250402014aa0502014130404c14aa050381452", + "0x28d4083b05ce61409828ec173985026aa0504c160a0404cde0805829540a", + "0x2a8141305210100a052a8140a052341008052a81408050941013052a8140b", + "0x2cec0a33820ec0a550282e0a330202e730a039540a09828100e34020260a", + "0x2d540a3d0295c083d029540a0d0280008042a8140805820f00a6306814aa", + "0x2dc100e052a8140e050e01021052a81421052c0100855028480a578204224", + "0x941091052a8148d052e4108d052a814251102d70081288816aa05038420b", + "0x244e61407029220a55029220a5d020e60a55028e60a46820280a55028280a", + "0x2a81414050941029052a81478052b41008550281c0a3e82010aa050201608", + "0x201413040a4e61407028520a55028520a5d020e60a55028e60a46820280a", + "0x1cc14c2041cc2813072a8140e0402d820807029540a070288c0804029540a", + "0x2c141362020f01a05aa814170530c100855028100b041d814c70b829540b", + "0x24414aa0508414c504021540a0402c108d128881cc810890f40e5502cf01a", + "0x2158084a029540a48829920849029540a120291a0814829540a3d0284a08", + "0x2341029052a8142205094102b052a8148d0532c100855028100b04021940a", + "0x2c5a0a668205a0a55029280a66021280a55028560a64821240a550284a0a", + "0x2a814310a02da00818829540a4a8299e08042a8140805821260a6725414aa", + "0x20520a55028520a12820260a55028260a09821300a55029180a68821180a", + "0x21540a0402c1098490a426130526014aa0526014d20424814aa05248148d", + "0xa414250404c14aa0504c14130421c14aa0524c14d304021540a0a0291e08", + "0x210e921484c260a43829540a43829a40849029540a490291a0814829540a", + "0x29080a68821080a55029101405b401088052a8147605350100855028100b", + "0x2c14aa0502c148d0402814aa0502814250404c14aa0504c1413040e014aa", + "0x28100a09820280a550281c0a29020700b0504c260a1c029540a1c029a408", + "0x4c14aa0504c14840402c14aa0502c148d0402814aa0502814250402014aa", + "0x20f40a6b9e014aa0586814d604068ec173984d540a09850160a04051aa08", + "0x84440b55820440a55028480a16820422405aa8147805360100855028100b", + "0x29540a0b8284a0839829540a39828260846829540a12829b20812829540a", + "0x28100b04234ec173984c148d052a8148d053681076052a81476052341017", + "0x202e0a550282e0a12820e60a55028e60a09821220a55028f40a6d82010aa", + "0x2a814080524c10913b05ce6130524414aa0524414da041d814aa051d8148d", + "0x20260a5502810dd04021540a07029b80805028140a052a8140a052101008", + "0x5c14e10405c14aa05021c00839829540a0a029be080a04c16aa0504c14de", + "0x1d8160a09b901073052a814730538c1076052a814760538810760b82d540a", + "0x39c1025052a814087302010aa05020160811084480e729e8f01a072a81673", + "0x5c14e20406814aa0506814250423414aa05094260b74020260a55028260a", + "0x2342e780d04dc8083d029540a3d028f00846829540a46829c6080b829540a", + "0x212a0a55029247a05ba8100855028100b040b45694073a5242948839540b", + "0x25414eb040a414aa050a4148d0424414aa0524414250402014aa050201413", + "0x3b50e0a5502d300a46021308c18a4c26aa0525452910404dd8084a829540a", + "0x2826081c029540a42029dc0842029540a438293008042a8140805821100a", + "0x2a81438053bc103c052a8148c052341080052a8143105094103a052a81493", + "0x29260a09820fe0a55029100a7882010aa050201608043c01408560207c0a", + "0x1fc14aa051fc14f20423014aa05230148d040c414aa050c414250424c14aa", + "0x1f414aa05250142504021540a3d029e608042a8140805820fe8c18a4c260a", + "0x2a814080582010f40502158083d829540a16828700820829540a158291a08", + "0x84148d041f414aa05090142504021540a09829ec08042a81417053d41008", + "0x29540a04028260821829540a3d829ee083d829540a11028700820829540a", + "0x3e0103e052a81443053bc103c052a81441052341080052a8147d05094103a", + "0x28780a46821000a55029000a12820740a55028740a09820f20a550287c0a", + "0x3826aa0582c1408073e410791e2007413051e414aa051e414f2040f014aa", + "0x1e014fc041e014aa051cc280b7d82010aa0502016080d1d82e0e7d1cc2813", + "0x29540a3d029fa0809829540a098291a0807029540a070284a083d029540a", + "0x29540a0b8284a0812029540a0d029fc08042a8140805820f41307038147a", + "0x2a814087f82048760b8381424052a81424053f41076052a81476052341017", + "0x2c14aa05028100b80020140a55028140a3c020100a55028100a7e820140a", + "0x29540a05028700805829540a0582a02080702c16aa0502014c30402c140a", + "0x201c0a550281c0a8082010aa05050143e04050260b55028140b05c08100a", + "0x2a814080504c10173982c14173982d540a0983817020404c14aa0504c1438", + "0x2a816130541010130702c1caa05028100b81820140a55028140a23020100a", + "0x3814aa0503814460402c14aa0502c141304021540a0402c107305414280a", + "0x2a8140805820f40a831e014aa05868150404068ec17072a8140e0582e0608", + "0x202e0a550282e0a09820420a55028480a83820480a55028f01405bec1008", + "0x2010aa050201608109d82e0e0508414aa050841508041d814aa051d81446", + "0x28ec0a230202e0a550282e0a09820440a55028f40a8502010aa050501509", + "0x28e60a8502010aa050201608111d82e0e0508814aa050881508041d814aa", + "0x9414aa0509415080403814aa0503814460402c14aa0502c14130409414aa", + "0x28140a8682010aa0502016080582a180a052a816080542c10250702c1c0a", + "0x2a8140805820260a0504c14aa0504c150e0404c14aa0503814b40403814aa", + "0x4381017052a814730543c1073052a8140b0a02c42080a029540a040901008", + "0x284a0804029540a0402826080a029540a043741017050282e0a550282e0a", + "0x2c140809c401013052a8141305210100b052a8140b05234100a052a8140a", + "0x378100855028100b041e815123c029540b0d02a22080d1d82e7309aa81413", + "0x8815140408814aa051e015130408414aa0509014df04090280b55028280a", + "0x2a814290538810294882d540a48829c20848829540a04380108d1282d540a", + "0xb4560e8b251240b5502c4a21149d82e148a820420a55028420a71820520a", + "0x24c280b74020280a55028280a73821260a5502810e604021540a0402c1095", + "0x29540a18829c60848829540a48829c40849029540a490284a0818829540a", + "0x460100855028100b0421110870745d308c05aa8168d18a4528920a4541031", + "0x2a81498052341080052a8148c05094103a052a81438054641038052a81408", + "0x29080a8e02010aa0502016080446c1408560207c0a55028740a8d020780a", + "0xf814aa051fc151a040f014aa05220148d0420014aa0521c1425041fc14aa", + "0x2158083d829540a1f02a3e0820829540a1e02a3c083e829540a4002a3a08", + "0x24414f504021540a0a029ec08042a8148d053cc100855028100b04022400a", + "0x10414aa050b4148d041f414aa050ac14250410c14aa05254151c04021540a", + "0x118152347829540b3c82a44083c829540a3d82a42083d829540a2182a3408", + "0x1d01526041d014aa051201c0b92820900a550291e0a9202010aa050201608", + "0x29540a208291a083e829540a3e8284a0839829540a39828260825829540a", + "0x2a8140e05370100855028100b0412c827d3984c144b052a8144b0549c1041", + "0x234107d052a8147d050941073052a814730504c104c052a81446054a01008", + "0x2010aa05020160826104fa7309828980a55028980a93820820a55028820a", + "0x2a814730504c104e052a8147a054a0100855028280a7b02010aa0503814dc", + "0x289c0a550289c0a93820ec0a55028ec0a468202e0a550282e0a12820e60a", + "0x28280a3c020100a55028100a09820281305aa8140e05450104e3b05ce613", + "0x2a81413051e01073052a814730504c10173982d540a0a02017290405014aa", + "0x28100b041e8152c3c029540b0d02a56080d1d816aa0504ce60b95020260a", + "0x4c1022052a814211202d6c0810829540a044b81024052a814089682010aa", + "0x8815010409414aa050941501040942e0b550282e0a97820ec0a55028ec0a", + "0x21240a990a414aa05a441531042451a0b5502844253b03a600811029540a", + "0x2a81494054d01094052a81494054041094052a81429054cc100855028100b", + "0x21260a55028112d04021540a0402c1095054d45a0a5502c560a95820560a", + "0x5c15010423414aa0523414130423014aa050c5260b5b020620a55028112e", + "0x21c15310421d300b5502918174683a6c0846029540a4602a02080b829540a", + "0x2a81438052d41038052a81488054cc100855028100b04210153744029540b", + "0x2d6c081f029540a044b8103c052a814089c02010aa050e8150904200740b", + "0x29000a8082010aa051f4150904104fa0b55028fe0a5a820fe0a550287c3c", + "0x2a8142d3c02d6c083d829540a20a0017390410414aa0510415010420014aa", + "0x1d0900e9d9191e79072a8167b2182c14139d020860a55028860a80820860a", + "0x23c148d0413814aa051e414250413014aa0511814c504021540a0402c104b", + "0x299608042a8140805820113c0502158082b029540a26029920839029540a", + "0x2a81450053241072052a8147405234104e052a81448050941050052a8144b", + "0x21540a0402c106f054f4a40a5502ce00a66820e00a55028ac0a66020ac0a", + "0x4fc100855028100b04198153e34029540b35028980835029540a290299e08", + "0x289c0a12821300a55029300a09820000a55028ce0aa0020ce0a55028d00a", + "0x2c10003913930130500014aa0500014f2041c814aa051c8148d0413814aa", + "0x1e010af052a81408a08215c0a55028107604021540a330287c08042a81408", + "0x2c16e0b108216e0a550281024042c014aa052bd5c0b3d0215e0a550295e0a", + "0x29540a270284a084c029540a4c02826085c829540a5c029e2085c029540a", + "0x28100b042e4e44e4c04c14b9052a814b9053c81072052a8147205234104e", + "0x209c0a550289c0a12821300a55029300a09821740a55028de0a7882010aa", + "0x21540a0402c10ba391393013052e814aa052e814f2041c814aa051c8148d", + "0x29300a098215a0a55029080a7882010aa050b4154204021540a3c02a8408", + "0x2b414aa052b414f20402c14aa0502c148d0402814aa0502814250426014aa", + "0x2010aa0505c150904021540a4a8287c08042a81408058215a0b05260260a", + "0x29540a61028f00861029540a0450c10c1052a814083b02010aa051e01542", + "0x218a0a5502986c40588410c4052a8140812021860a5502984c1059e810c2", + "0x2c148d0402814aa0502814250423414aa0523414130432414aa0531414f1", + "0x2a1208042a8140805821920b05234260a64829540a64829e40805829540a", + "0x23414aa052341413042b014aa0524814f104021540a3c02a8408042a81417", + "0x234260a56029540a56029e40805829540a058291a0805029540a050284a08", + "0x28107604021540a0b82a1208042a8147a050f8100855028100b042b0160a", + "0x33414aa05331960b3d021980a55029980a3c021980a5502811430432c14aa", + "0x28260868829540a68029e20868029540a66b3c16210433c14aa050204808", + "0x2a814d1053c8100b052a8140b05234100a052a8140a050941076052a81476", + "0x4fc100855028100b0402c154505029540b0402a88086882c147609829a20a", + "0x2c101305028260a55028260a79020260a550281c0aa00201c0a55028140a", + "0x29540a39829e20839829540a0585016210405014aa050204808042a81408", + "0x28100b04038154705829540b0402a8c080b8281417052a81417053c81017", + "0x5281014052a81413055241013052a8140b05520100855028140a7982010aa", + "0x2a814083b02010aa05038147d04021540a0402c101405028280a55028280a", + "0x6814aa0505cec0b10820ec0a5502810240405c14aa05028e60b3d020e60a", + "0x2016aa05020152f041e0140a3c029540a3c02a94083c029540a0d0296608", + "0x5341014052a8140e05530100855028260aa1020260e05aa8140b0552c100b", + "0x2a84080d1d816aa05020154b0405c14aa051cc140b3d020e60a55028280a", + "0x2a8147a0b82cf4083d029540a3c02a9a083c029540a0d02a9808042a81476", + "0x2a8140a0503810211202c1424052a81424050e01021052a814088c020480a", + "0x29540a0982a9e08042a8140805820280aa704c1c0b5502c160a0a020160a", + "0x28100b04022a40a042b01076052a81473055441017052a8140e055401073", + "0x5441017052a81414055401078052a8141a0554c101a052a814088c02010aa", + "0x9014460409014aa051e81441041e82e0b550282e0aaa020ec0a55028f00a", + "0x2a814210555c100855028100b04088155610829540b3b02aaa0812029540a", + "0x211a0a550291a0a3c020100a55028100a098211a0a550284a0aac0204a0a", + "0x2010aa0502016084a02ab292052a81629054ac10294882d540a46820172a", + "0x2a9e08042a81408058212a0aad0b4560b5502c2e0a0a02010aa05090148f", + "0x22b60a042b0108c052a81493055441031052a8142b055401093052a8142d", + "0x2a81495055401087052a814980554c1098052a814088c02010aa050201608", + "0x21100a55029100a23021100a55028620a20821180a550290e0aa8820620a", + "0x2ab0081d029540a4202aae08042a8140805820700aae21014aa05a301555", + "0x29009105ca81080052a81480051e01091052a814910504c1080052a8143a", + "0x28fe9205ad8100855028100b041f4155d3f829540b1f02a56081f0f016aa", + "0x22014aa052201446040f014aa050f01413041ec14aa05104155e0410414aa", + "0x2010aa05248154204021540a0402c107b440f01c0a3d829540a3d82abe08", + "0x21540a0402c1008b082810ac041e414aa051f415600410c14aa050f01413", + "0x2a814910504c108f052a814088c02010aa05248154204021540a1c0287c08", + "0x21100a55029100a230208c0a55028f20a59020f20a550291e0ab0020860a", + "0x4c1008550282e0a3982010aa05020160823220860e0511814aa05118155f", + "0x2010aa05020160804588140856020e80a55029280ab0020900a55029220a", + "0x29540a04028260825829540a044601008550282e0a3982010aa05088143e", + "0x57c1024052a8142405118104c052a81474052c81074052a8144b055801048", + "0x2c14aa0502c148d0402814aa05028142504130484807028980a55028980a", + "0x29540a39828cc0839850260e550281c0b05038d00807029540a070290808", + "0x20f00a55028ec0a0002010aa0502016080d02ac676052a816170519c1017", + "0x88420b5b020440a55028112e0408414aa050225a08121e816aa051e014c3", + "0x29540a1282a020812029540a1202a020804029540a04028260812829540a", + "0x28100b04248156414829540b4882a620848a3416aa050944808074d81025", + "0x25414aa050a41533040b414aa050ac154d040ad280b55028f40aa582010aa", + "0x20629305aa814954682eca084a829540a4a82a020846829540a468282608", + "0x22d00843829540a4a02a9a08042a8140805821300ab3a3014aa058c41566", + "0x2a81484051e01084052a8142d4402ed20844029540a44028f00844029540a", + "0x29540a1d02ad6081d029540a1c21c16ea040e014aa05231080bb5021080a", + "0x2341013052a81413050941093052a814930504c103c052a81480052c41080", + "0x2010aa0502016081e050269309828780a55028780ab6020280a55028280a", + "0xf814aa05020ec08042a81494055081008550285a0a7982010aa05260143e", + "0x2048083e829540a3f8f8167a041fc14aa051fc1478041fc14aa050228608", + "0x2a814930504c1043052a8147b055b4107b052a8147d2082c420820829540a", + "0x28860a55028860ab6020280a55028280a46820260a55028260a12821260a", + "0x20f20a55029240ab682010aa051e8150904021540a0402c10430a04d2613", + "0x1e4156c0405014aa05050148d0404c14aa0504c14250423414aa052341413", + "0x28260847829540a0d02ada08042a8140805820f21409a34260a3c829540a", + "0x2a8148f055b01014052a81414052341013052a81413050941008052a81408", + "0x5c0100855028100b0402c156f05029540b0402adc08478502608098291e0a", + "0x2c101305028260a55028260ab9020260a550281c0ab88201c0a55028140a", + "0x29540a3982ae60839829540a0585016210405014aa050204808042a81408", + "0x1cc2813075d41c0b05aa8160a0402ee8080b8281417052a81417055c81017", + "0x28160a09820ec0a550282e0e05ad81017052a814089702010aa050201608", + "0x28287305ad8100855028100b041d8160b051d814aa051d815010402c14aa", + "0x20177404068260b0506814aa0506815010404c14aa0504c14130406814aa", + "0x4c1017052a8140e055dc100855028100b041cc2813075d81c0b05aa8160a", + "0x2a8408042a81408058202e0b058282e0a550282e0abc020160a55028160a", + "0x20340a55028ec0abc820ec0a55028111804021540a3982a8408042a81414", + "0x2c14aa0502c150104068260b0506814aa0506815780404c14aa0504c1413", + "0x5f4100855028100b04050157c09829540b0702af60807029540a0582af408", + "0x20e60a55028e60a0982010aa051d8150904068ec173984d540a09828100e", + "0x2b0008042a8147a050f8107a3c02d540a0d1cc177f0406814aa05068157e", + "0x2c10213c02c1421052a81421056081021052a81424056041024052a81417", + "0x60c1022052a814083b02010aa05028150904021540a0a0287c08042a81408", + "0x2a81408120211a0a550284a22059e81025052a81425051e01025052a81408", + "0x2014aa0502014130424814aa050a41584040a414aa05235220b10821220a", + "0x29540a044b8100b0502d540a0402a960849020160a49029540a4902b0408", + "0x223008042a8140a05508100855028100b040230c085502c1c0b05e14100e", + "0x28100b04050140a0a029540a0a02af0080a029540a0982af20809829540a", + "0x2a8140b05404107305028e60a55028e60abc020e60a55028140abb82010aa", + "0x21540a0402c10140561c260a5502c1c0abd8201c0a55028160abd020160a", + "0x29540a398282608042a8141705424101a3b05ce61355028260a0403afa08", + "0x2010aa051e8143e041e8f00b55028347305dfc101a052a8141a055f81073", + "0x84f00b0508414aa0508415820408414aa0509015810409014aa051d81580", + "0x8814aa05020ec08042a8140a05424100855028280a1f02010aa050201608", + "0x20480846829540a12888167a0409414aa0509414780409414aa050230608", + "0x2a814080504c1092052a81429056101029052a8148d4882c420848829540a", + "0x2c154b0402c100b55028100a97821240805829240a55029240ac1020100a", + "0x2a814140550810730a02d540a0702b1008042a814130550810130702d540a", + "0x2010aa05068154204068ec0b550282e0aa58202e0a05aa8140a054bc1008", + "0x1e81589041cc14aa051cc158904021540a3c02a84083d1e016aa051d81588", + "0x2016081102b1821052a816240562c1024052a8147a3982f14083d029540a", + "0x223008042a8140805424100855028140a8482010aa05084143e04021540a", + "0x28100b04234140a46829540a4682b1c0846829540a1282b1a0812829540a", + "0x620100855029220aa1020529105aa814080552c100855028440a1f02010aa", + "0xac1542040b4560b55028140aa582010aa05248154204251240b55028520a", + "0x25014aa05250158904021540a4a82a840849a5416aa050b4158804021540a", + "0x2d540a0502a9608188281431052a814934a02f140849829540a4982b1208", + "0x1cc1c0b550281c0ac8020281305aa81413056401013052a81408c78201c0b", + "0x28100b041e0340bc91d82e0b5502ce6140403b22080a029540a0a02b1208", + "0x202e0a550282e0a09820f40e05aa8140e05640100855028ec0aa102010aa", + "0x21540a0402c1008ca02810ac04021540a0402c1008c9821540b099e81785", + "0x201195042a816241082f0a081082c16aa0502c15900409014aa050225c08", + "0x20440a55028111804021540a0702a8408042a8140b05508100855028100b", + "0x942e0b0509414aa0509415970405c14aa0505c14130409414aa050881596", + "0x2a81408cc021220a55028160aa68211a0a550281c0aa682010aa050201608", + "0x29540a48a48176a0424814aa0524814780424814aa050a51a0bb4820520a", + "0x2c142b052a8142b0565c1017052a814170504c102b052a81494056641094", + "0x28160aa102010aa0504c154204021540a3c02a8408042a81408058205617", + "0x2826084a829540a1682b2c0816829540a044601008550281c0aa102010aa", + "0x28159b042a816080566810950d02c1495052a814950565c101a052a8141a", + "0x2a8140e05674100e052a8140b05670100b052a814088c02010aa050201608", + "0x4c14aa0504c159d0404c14aa05028159e04021540a0402c100e050281c0a", + "0x2c14aa0502c14130403814aa05022300805829540a05020179f0404c140a", + "0x29540a0582a980807029540a0502a980805829540a0402a98080702c160a", + "0x460100855028100b0402340085502c281305e141014052a8140e055301013", + "0x2016080b8281417052a81417056381017052a81473056341073052a81408", + "0x28340a55028340ac7020340a55028ec0ad0820ec0a55028111804021540a", + "0x1a0ce0809930d0670404c100e0582810663419c1013261a0ce08098e8340a", + "0x4c8c6833820277d0702c1408331a0ce0809930d0670404dce0e058281066", + "0x1a0ce0809e8c1c0b05020e0683383844313419c27a20702c1408379a0ce08", + "0x4c1c0b05020e868338202631231a0ce080a6901c0b05020e46833820264c", + "0x1a0ce0ed3838160a041bcd0670404c70683382027a605020620a1891817a5", + "0x130100bd502810141102c444105ea410790523c15a805828108f3419c1c31", + "0x2c1408401a0ce08098c470683382029ac041fc147d056ac14083d930100e", + "0x5d1e0bd7820de0a4602b5c0e05828106f3419c1013159a0ce0809eb4260e", + "0x19c1013d90281093260201c4c0402f620a04050440b1103817b005020f20a", + "0x6d414080702016170402f680849029280ad9838160a04254d0670404c6268", + "0x3b7008488281c0adb82c140846820160e070201db60502122080585c100b", + "0x6ec14083b020160e0402f740a041e8140e0702f720b050211a08058381c08", + "0x6f814083d028160b05ef414080a020160a0402f7808398281c0a" + ], + "sierra_program_debug_info": { + "type_names": [ + [0, "RangeCheck"], + [1, "U128MulGuarantee"], + [2, "u128"], + [3, "core::integer::u256"], + [4, "NonZero"], + [5, "Unit"], + [6, "core::option::Option::>"], + [7, "felt252"], + [8, "core::option::Option::"], + [9, "Box"], + [10, "core::option::Option::>"], + [11, "core::bool"], + [12, "Tuple"], + [13, "core::panics::Panic"], + [14, "Array"], + [15, "Tuple>"], + [16, "core::panics::PanicResult::<(core::integer::u256,)>"], + [17, "core::option::Option::"], + [18, "Tuple"], + [19, "core::panics::PanicResult::<((),)>"], + [20, "core::result::Result::<(), core::array::Array::>"], + [21, "Tuple"], + [22, "Tuple>"], + [23, "core::panics::PanicResult::<((core::felt252, core::felt252),)>"], + [24, "core::option::Option::"], + [25, "Secp256k1Point"], + [ + 26, + "core::result::Result::>" + ], + [27, "u8"], + [28, "u32"], + [29, "StorageAddress"], + [30, "StorageBaseAddress"], + [31, "pub_eth::Eth_pub_key::__member_module_pubK::ContractMemberState"], + [32, "Tuple"], + [ + 33, + "core::panics::PanicResult::<(pub_eth::Eth_pub_key::__member_module_pubK::ContractMemberState, ())>" + ], + [34, "core::option::Option::"], + [35, "Tuple>"], + [ + 36, + "core::panics::PanicResult::<(core::option::Option::,)>" + ], + [ + 37, + "core::result::Result::, core::array::Array::>" + ], + [38, "Tuple"], + [39, "core::option::Option::<(core::integer::u256, core::integer::u256)>"], + [40, "Tuple>"], + [41, "core::panics::PanicResult::<((core::integer::u256, core::integer::u256),)>"], + [ + 42, + "core::result::Result::<(core::integer::u256, core::integer::u256), core::array::Array::>" + ], + [43, "pub_eth::Eth_pub_key::ContractState"], + [44, "Tuple"], + [45, "core::panics::PanicResult::<(pub_eth::Eth_pub_key::ContractState, ())>"], + [46, "Snapshot>"], + [47, "core::array::Span::"], + [ + 48, + "Tuple, core::option::Option::>" + ], + [ + 49, + "core::panics::PanicResult::<(core::array::Span::, core::option::Option::)>" + ], + [50, "Tuple>"], + [51, "Tuple, Unit>"], + [52, "core::panics::PanicResult::<(core::array::Array::, ())>"], + [53, "Tuple"], + [54, "core::panics::PanicResult::<(core::starknet::secp256k1::Secp256k1Point,)>"], + [55, "BuiltinCosts"], + [56, "System"], + [57, "core::panics::PanicResult::<(core::array::Span::,)>"], + [58, "GasBuiltin"] + ], + "libfunc_names": [ + [0, "revoke_ap_tracking"], + [1, "withdraw_gas"], + [2, "branch_align"], + [3, "struct_deconstruct>"], + [4, "store_temp"], + [5, "array_snapshot_pop_front"], + [6, "drop>>"], + [7, "drop>"], + [8, "array_new"], + [9, "felt252_const<7733229381460288120802334208475838166080759535023995805565484692595>"], + [10, "store_temp"], + [11, "array_append"], + [12, "struct_construct"], + [13, "struct_construct>>"], + [14, "enum_init,)>, 1>"], + [15, "store_temp"], + [16, "store_temp"], + [17, "store_temp,)>>"], + [18, "get_builtin_costs"], + [19, "store_temp"], + [20, "withdraw_gas_all"], + [21, "struct_construct"], + [22, "struct_construct"], + [23, "snapshot_take"], + [24, "drop"], + [25, "function_call"], + [26, "enum_match>"], + [27, "struct_deconstruct>"], + [28, "snapshot_take"], + [29, "drop"], + [30, "store_temp"], + [31, "store_temp>"], + [ + 32, + "function_call" + ], + [33, "enum_match, ())>>"], + [34, "struct_deconstruct, Unit>>"], + [35, "drop"], + [36, "snapshot_take>"], + [37, "drop>"], + [38, "struct_construct>"], + [39, "struct_construct>>"], + [40, "enum_init,)>, 0>"], + [41, "felt252_const<375233589013918064796019>"], + [42, "drop>"], + [43, "store_temp>"], + [ + 44, + "function_call" + ], + [ + 45, + "enum_match, core::option::Option::)>>" + ], + [ + 46, + "struct_deconstruct, core::option::Option::>>" + ], + [47, "enum_match>"], + [48, "function_call"], + [49, "enum_match>"], + [50, "drop>"], + [ + 51, + "felt252_const<485748461484230571791265682659113160264223489397539653310998840191492913>" + ], + [52, "function_call"], + [53, "struct_deconstruct"], + [ + 54, + "function_call" + ], + [55, "rename"], + [56, "function_call"], + [ + 57, + "function_call>::unwrap::>>" + ], + [ + 58, + "enum_match>" + ], + [59, "struct_deconstruct>>"], + [60, "snapshot_take>"], + [61, "drop>"], + [62, "store_temp>"], + [ + 63, + "function_call::serialize>" + ], + [64, "struct_construct, Unit>>"], + [65, "enum_init, ())>, 0>"], + [66, "store_temp, ())>>"], + [67, "enum_init, ())>, 1>"], + [ + 68, + "function_call::deserialize>" + ], + [69, "enum_match>"], + [70, "struct_deconstruct>"], + [71, "secp256k1_new_syscall"], + [ + 72, + "enum_init, core::array::Array::>, 0>" + ], + [ + 73, + "store_temp, core::array::Array::>>" + ], + [74, "jump"], + [ + 75, + "enum_init, core::array::Array::>, 1>" + ], + [ + 76, + "function_call>::unwrap_syscall>" + ], + [ + 77, + "enum_match,)>>" + ], + [ + 78, + "struct_deconstruct>>" + ], + [ + 79, + "struct_construct, core::option::Option::>>" + ], + [ + 80, + "enum_init, core::option::Option::)>, 0>" + ], + [ + 81, + "store_temp, core::option::Option::)>>" + ], + [ + 82, + "enum_init, core::option::Option::)>, 1>" + ], + [83, "enum_init, 1>"], + [ + 84, + "function_call" + ], + [ + 85, + "enum_match>" + ], + [ + 86, + "struct_deconstruct>" + ], + [87, "struct_construct>"], + [88, "enum_init, 0>"], + [89, "store_temp>"], + [90, "enum_init, 1>"], + [91, "drop"], + [ + 92, + "storage_base_address_const<1266408525495456437671353362765582367622045963178339210837175287789509636175>" + ], + [93, "dup"], + [94, "storage_address_from_base"], + [95, "u32_const<0>"], + [96, "dup"], + [97, "store_temp"], + [98, "store_temp"], + [99, "storage_read_syscall"], + [100, "u8_const<1>"], + [101, "store_temp"], + [102, "storage_address_from_base_and_offset"], + [103, "struct_construct>"], + [104, "store_temp>"], + [ + 105, + "function_call" + ], + [ + 106, + "enum_init>, 0>" + ], + [ + 107, + "store_temp>>" + ], + [ + 108, + "enum_init, 1>" + ], + [ + 109, + "store_temp>" + ], + [110, "drop"], + [111, "drop"], + [112, "drop"], + [ + 113, + "enum_init>, 1>" + ], + [ + 114, + "function_call::unwrap_syscall>" + ], + [115, "secp256k1_get_xy_syscall"], + [116, "struct_construct>"], + [ + 117, + "enum_init>, 0>" + ], + [ + 118, + "store_temp>>" + ], + [ + 119, + "enum_init>, 1>" + ], + [120, "felt252_const<30828113188794245257250221355944970489240709081949230>"], + [ + 121, + "function_call>::expect::>>" + ], + [122, "store_temp"], + [123, "function_call"], + [124, "function_call"], + [125, "enum_match>"], + [126, "enum_init, 0>"], + [127, "store_temp>"], + [128, "drop"], + [129, "enum_init, 1>"], + [ + 130, + "enum_match, core::array::Array::>>" + ], + [ + 131, + "struct_construct>>" + ], + [ + 132, + "enum_init,)>, 0>" + ], + [ + 133, + "store_temp,)>>" + ], + [ + 134, + "enum_init,)>, 1>" + ], + [ + 135, + "function_call" + ], + [136, "enum_match>"], + [137, "struct_deconstruct>>"], + [138, "struct_deconstruct>"], + [139, "storage_write_syscall"], + [140, "struct_construct"], + [141, "enum_init>, 0>"], + [142, "store_temp>>"], + [143, "enum_init>, 1>"], + [144, "rename"], + [145, "rename"], + [146, "rename>>"], + [147, "function_call::unwrap_syscall>"], + [148, "enum_match>"], + [149, "struct_deconstruct>"], + [ + 150, + "struct_construct>" + ], + [ + 151, + "enum_init, 0>" + ], + [ + 152, + "store_temp>" + ], + [ + 153, + "enum_init, 1>" + ], + [154, "function_call"], + [155, "function_call"], + [156, "enum_match>"], + [157, "u128_const<2>"], + [158, "u128_const<0>"], + [159, "struct_construct"], + [160, "dup"], + [161, "function_call"], + [162, "enum_match>"], + [163, "struct_deconstruct>"], + [164, "function_call"], + [165, "function_call"], + [166, "snapshot_take"], + [167, "u128_const<1>"], + [168, "function_call"], + [169, "secp256k1_get_point_from_x_syscall"], + [170, "struct_construct>"], + [ + 171, + "enum_init, 0>" + ], + [ + 172, + "felt252_const<575578373468682724079685257561687680771087460484367228690116535514985518>" + ], + [173, "drop"], + [174, "felt252_const<29721761890975875353235833581453094220424382983267374>"], + [ + 175, + "enum_match>>" + ], + [ + 176, + "enum_match>>" + ], + [177, "struct_construct>>"], + [ + 178, + "enum_init, 0>" + ], + [ + 179, + "store_temp>" + ], + [ + 180, + "enum_init, 1>" + ], + [181, "struct_deconstruct"], + [182, "rename"], + [183, "u128_to_felt252"], + [184, "enum_init>, 0>"], + [185, "store_temp>>"], + [186, "store_temp>>"], + [187, "enum_init>, 1>"], + [188, "dup>>"], + [189, "enum_match>>"], + [190, "unbox"], + [191, "rename"], + [192, "enum_init, 0>"], + [193, "store_temp>"], + [194, "rename"], + [195, "enum_init, 1>"], + [196, "function_call"], + [197, "enum_match>"], + [198, "felt252_const<2>"], + [199, "felt252_mul"], + [200, "felt252_add"], + [201, "struct_construct>>"], + [202, "enum_init, 0>"], + [203, "store_temp>"], + [204, "enum_init, 1>"], + [205, "enum_match>>"], + [206, "struct_construct>"], + [207, "enum_init, 0>"], + [208, "store_temp>"], + [209, "enum_init, 1>"], + [210, "u128s_from_felt252"], + [211, "enum_init, 0>"], + [212, "store_temp>"], + [213, "enum_init, 1>"], + [214, "function_call"], + [215, "enum_match>>"], + [216, "u256_safe_divmod"], + [217, "store_temp"], + [218, "function_call"], + [219, "struct_construct>"], + [220, "enum_init, 0>"], + [221, "store_temp>"], + [222, "felt252_const<5420154128225384396790819266608>"], + [223, "enum_init, 1>"], + [224, "u128_eq"], + [225, "snapshot_take"], + [226, "store_temp"], + [ + 227, + "function_call::eq>" + ], + [228, "enum_match"], + [229, "enum_init"], + [230, "store_temp"], + [231, "u128_const<10633823966279327296825105735305134080>"], + [232, "dup"], + [233, "u128_overflowing_sub"], + [234, "enum_init, 1>"], + [235, "store_temp>"], + [236, "felt252_const<340282366920938463463374607431768211456>"], + [237, "enum_init, 0>"], + [238, "u256_is_zero"], + [239, "enum_init>, 1>"], + [240, "store_temp>>"], + [241, "enum_init>, 0>"], + [242, "u128_mul_guarantee_verify"], + [243, "enum_init"] + ], + "user_func_names": [ + [0, "pub_eth::Eth_pub_key::__wrapper__InteractEthPub__get_public_key"], + [1, "pub_eth::Eth_pub_key::__wrapper__InteractEthPub__set_public_key"], + [2, "pub_eth::Eth_pub_key::__wrapper__InteractEthPub__test_public_key"], + [3, "pub_eth::Eth_pub_key::InteractEthPub::get_public_key"], + [4, "openzeppelin::account::utils::secp256k1::Secp256k1PointSerde::serialize"], + [5, "openzeppelin::account::utils::secp256k1::Secp256k1PointSerde::deserialize"], + [6, "pub_eth::Eth_pub_key::InteractEthPub::set_public_key"], + [7, "pub_eth::Eth_pub_key::InteractEthPub::test_public_key"], + [8, "pub_eth::Eth_pub_key::__member_module_pubK::InternalContractMemberStateImpl::read"], + [9, "core::starknet::secp256k1::Secp256k1PointImpl::get_coordinates"], + [ + 10, + "core::result::ResultTraitImpl::<(core::integer::u256, core::integer::u256), core::array::Array::>::unwrap::>" + ], + [ + 11, + "core::serde::TupleSize2Serde::::serialize" + ], + [ + 12, + "core::serde::TupleSize2Serde::::deserialize" + ], + [ + 13, + "core::starknet::SyscallResultTraitImpl::>::unwrap_syscall" + ], + [14, "pub_eth::Eth_pub_key::__member_module_pubK::InternalContractMemberStateImpl::write"], + [15, "openzeppelin::account::utils::secp256k1::Secp256k1PointStorePacking::unpack"], + [ + 16, + "core::starknet::SyscallResultTraitImpl::::unwrap_syscall" + ], + [ + 17, + "core::result::ResultTraitImpl::<(core::integer::u256, core::integer::u256), core::array::Array::>::expect::>" + ], + [18, "core::integer::u256Serde::serialize"], + [19, "core::integer::u256Serde::deserialize"], + [20, "openzeppelin::account::utils::secp256k1::Secp256k1PointStorePacking::pack"], + [21, "core::starknet::SyscallResultTraitImpl::<()>::unwrap_syscall"], + [22, "core::integer::u256_from_felt252"], + [23, "core::integer::u128_try_from_felt252"], + [24, "core::integer::U256Div::div"], + [25, "core::integer::U256TryIntoU128::try_into"], + [26, "core::integer::U256Rem::rem"], + [27, "core::integer::u256PartialEq::eq"], + [28, "core::integer::U256TryIntoFelt252::try_into"], + [29, "core::integer::u256_try_as_non_zero"], + [30, "core::integer::U128MulGuaranteeDestruct::destruct"], + [31, "core::traits::PartialEqSnap::::eq"] + ] + }, + "contract_class_version": "0.1.0", + "entry_points_by_type": { + "EXTERNAL": [ + { + "selector": "0xf2f3bce3680781a8bbe7a1a4609e6daf69675a20513bad584d123c55fe06a5", + "function_idx": 2 + }, + { + "selector": "0x1a35984e05126dbecb7c3bb9929e7dd9106d460c59b1633739a5c733a5fb13b", + "function_idx": 0 + }, + { + "selector": "0x2e3e21ff5952b2531241e37999d9c4c8b3034cccc89a202a6bf019bdf5294f9", + "function_idx": 1 + } + ], + "L1_HANDLER": [], + "CONSTRUCTOR": [] + }, + "abi": [ + { + "type": "impl", + "name": "InteractEthPub", + "interface_name": "pub_eth::IEthPub" + }, + { + "type": "interface", + "name": "pub_eth::IEthPub", + "items": [ + { + "type": "function", + "name": "get_public_key", + "inputs": [], + "outputs": [ + { + "type": "core::starknet::secp256k1::Secp256k1Point" + } + ], + "state_mutability": "view" + }, + { + "type": "function", + "name": "set_public_key", + "inputs": [ + { + "name": "new_public_key", + "type": "core::starknet::secp256k1::Secp256k1Point" + } + ], + "outputs": [], + "state_mutability": "external" + }, + { + "type": "function", + "name": "test_public_key", + "inputs": [ + { + "name": "my_pub_key", + "type": "core::starknet::secp256k1::Secp256k1Point" + } + ], + "outputs": [ + { + "type": "core::starknet::secp256k1::Secp256k1Point" + } + ], + "state_mutability": "view" + } + ] + }, + { + "type": "event", + "name": "pub_eth::Eth_pub_key::Event", + "kind": "enum", + "variants": [] + } + ] +} diff --git a/__tests__/config/fixtures.ts b/__tests__/config/fixtures.ts index 6940c5807..71b0380f1 100644 --- a/__tests__/config/fixtures.ts +++ b/__tests__/config/fixtures.ts @@ -48,6 +48,16 @@ export const compiledC210 = readContractSierra('cairo/cairo210/cairo210.sierra') export const compiledC210Casm = readContractSierraCasm('cairo/cairo210/cairo210'); export const compiledC240 = readContractSierra('cairo/cairo240/string.sierra'); export const compiledC240Casm = readContractSierraCasm('cairo/cairo240/string'); +export const compiledEthAccount = readContractSierra( + 'cairo/ethSigner/openzeppelin_EthAccount090.sierra' +); +export const compiledEthCasm = readContractSierraCasm('cairo/ethSigner/openzeppelin_EthAccount090'); +export const compiledDummy1Eth = readContractSierra('cairo/ethSigner/dummy1ForEth.sierra'); +export const compiledDummy1EthCasm = readContractSierraCasm('cairo/ethSigner/dummy1ForEth'); +export const compiledDummy2Eth = readContractSierra('cairo/ethSigner/dummy2ForEth.sierra'); +export const compiledDummy2EthCasm = readContractSierraCasm('cairo/ethSigner/dummy2ForEth'); +export const compiledEthPubk = readContractSierra('cairo/ethSigner/testEthPubKey.sierra'); +export const compiledEthPubkCasm = readContractSierraCasm('cairo/ethSigner/testEthPubKey'); export function getTestProvider(isProvider?: true): ProviderInterface; export function getTestProvider(isProvider?: false): RpcProvider; diff --git a/__tests__/utils/ethSigner.test.ts b/__tests__/utils/ethSigner.test.ts index 00f0fe29c..bdbeb1e87 100644 --- a/__tests__/utils/ethSigner.test.ts +++ b/__tests__/utils/ethSigner.test.ts @@ -1,19 +1,34 @@ import typedDataExample from '../../__mocks__/typedData/baseExample.json'; import { - Call, - DeclareSignerDetails, - DeployAccountSignerDetails, + Account, + CallData, + Contract, EthSigner, - InvocationsSignerDetails, - RPC, - constants, + Provider, + addAddressPadding, + cairo, + encode, eth, + hash, num, - stark, } from '../../src'; +import { ETransactionVersion } from '../../src/types/api'; +import { + compiledDummy1Eth, + compiledDummy1EthCasm, + compiledDummy2Eth, + compiledDummy2EthCasm, + compiledErc20, + compiledEthAccount, + compiledEthCasm, + compiledEthPubk, + compiledEthPubkCasm, + getTestAccount, + getTestProvider, +} from '../config/fixtures'; -describe('Ethereum signatures', () => { - describe('privk, pubK', () => { +describe('Ethereum signer', () => { + describe('signer', () => { test('Generates random PK', () => { const privK = eth.ethRandomPrivateKey(); expect(privK.length).toBe(66); @@ -25,12 +40,10 @@ describe('Ethereum signatures', () => { '0x525bc68475c0955fae83869beec0996114d4bb27b28b781ed2a20ef23121b8de' ); expect(await mySigner.getPubKey()).toBe( - '0x020178bb97615b49070eefad71cb2f159392274404e41db748d9397147cb25cf59' - ); + '0x0178bb97615b49070eefad71cb2f159392274404e41db748d9397147cb25cf597ebfcf2f399e635b72b99b8f76e9080763c65a42c842869815039d912150ddfe' + ); // full public key 512 bits }); - }); - describe('Signatures', () => { test('Message signature', async () => { const myPrivateKey = '0x525bc68475c0955fae83869beec0996114d4bb27b28b781ed2a20ef23121b8de'; const myEthSigner = new EthSigner(myPrivateKey); @@ -39,89 +52,255 @@ describe('Ethereum signatures', () => { message, '0x65a822fbee1ae79e898688b5a4282dc79e0042cbed12f6169937fddb4c26641' ); - expect(sig).toMatchObject({ - r: 46302720252787165203319064060867586811009528414735725622252684979112343882634n, - s: 44228007167516598548621407232357037139087111723794788802261070080184864735744n, - recovery: 1, + expect(sig).toMatchObject([ + '0xff887f391242bb244e9e10d5da01cb8a', + '0x665e69338d4e0772039d4a032b01b07b', + '0xf84a88e94cabba842ab4accf8adc0200', + '0x61c82a3a2f1a9340620e634bebecb20b', + '0x1', + ]); + }); + }); + + describe('cairo v2.5.3 new secp256k1 type', () => { + const provider = new Provider(getTestProvider()); + let ethPubKContract: Contract; + const account = getTestAccount(provider); + + beforeAll(async () => { + const { deploy } = await account.declareAndDeploy({ + contract: compiledEthPubk, + casm: compiledEthPubkCasm, }); + + ethPubKContract = new Contract(compiledEthPubk.abi, deploy.contract_address, account); }); - // TODO : To update when a contract account handling ETHEREUM signatures will be available. - test('Transaction signature', async () => { - const myPrivateKey = '0x525bc68475c0955fae83869beec0996114d4bb27b28b781ed2a20ef23121b8de'; - const myEthSigner = new EthSigner(myPrivateKey); - const myCall: Call = { - contractAddress: '0x65a822fbee1ae79e898688b5a4282dc79e0042cbed12f6169937fddb4c26641', - entrypoint: 'test', - calldata: [1, 2], - }; - const sig = await myEthSigner.signTransaction([myCall], { - version: '0x2', - walletAddress: '0x64b48806902a367c8598f4f95c305e8c1a1acba5f082d294a43793113115691', - cairoVersion: '1', - chainId: constants.StarknetChainId.SN_SEPOLIA, - nonce: 45, - maxFee: 10 ** 15, - } as InvocationsSignerDetails); - expect(sig).toMatchObject({ - r: 7985353442887841088086521795914083018399735702575968460096442990678259802335n, - s: 54448706138210541940611627632626053501325595041277792020051079616748389329289n, - recovery: 0, + test('secp256k1', async () => { + const myCallData = new CallData(ethPubKContract.abi); + const ethPubKey = + '0x8c7aea7d673a5858bdca128d124fb0765cceb2c16f198f4c14b328aa571331e6f6c87f51d5224d73d118765cb19d7565212f80be5048bff926ba791c17541c92'; + const resp3 = await ethPubKContract.test_public_key(ethPubKey); + expect(num.toHex(resp3)).toBe(ethPubKey); + const calldata1 = myCallData.compile('test_public_key', [ethPubKey]); + const resp4 = (await ethPubKContract.call('test_public_key', [calldata1])) as bigint; + + expect(num.toHex(resp4)).toBe(ethPubKey); + const resp5 = (await ethPubKContract.call('test_public_key', calldata1)) as bigint; + expect(num.toHex(resp5)).toBe(ethPubKey); + }); + }); + + describe('ETH account tx V2', () => { + const provider = new Provider(getTestProvider()); + const account = getTestAccount(provider); + const devnetETHtokenAddress = + '0x49D36570D4E46F48E99674BD3FCC84644DDD6B96F7C741B1562B82F9E004DC7'; + let ethAccount: Account; + beforeAll(async () => { + const { transaction_hash: declTH, class_hash: decClassHash } = await account.declareIfNot({ + contract: compiledEthAccount, + casm: compiledEthCasm, + }); + if (declTH) { + await provider.waitForTransaction(declTH); + } + const privateKeyETH = '0x45397ee6ca34cb49060f1c303c6cb7ee2d6123e617601ef3e31ccf7bf5bef1f9'; + const ethSigner = new EthSigner(privateKeyETH); + const ethFullPublicKey = await ethSigner.getPubKey(); + const pubKeyETHx = cairo.uint256( + addAddressPadding(encode.addHexPrefix(ethFullPublicKey.slice(4, -64))) + ); + const salt = pubKeyETHx.low; + const myCallData = new CallData(compiledEthAccount.abi); + const accountETHconstructorCalldata = myCallData.compile('constructor', { + public_key: ethFullPublicKey, + }); + const contractETHAccountAddress = hash.calculateContractAddressFromHash( + salt, + decClassHash, + accountETHconstructorCalldata, + 0 + ); + + // fund account with ETH + const { transaction_hash } = await account.execute({ + contractAddress: devnetETHtokenAddress, + entrypoint: 'transfer', + calldata: { + recipient: contractETHAccountAddress, + amount: cairo.uint256(5 * 10 ** 17), + }, + }); + await account.waitForTransaction(transaction_hash); + + ethAccount = new Account(provider, contractETHAccountAddress, ethSigner); + const { transaction_hash: txH2, contract_address } = await ethAccount.deployAccount({ + classHash: decClassHash, + constructorCalldata: accountETHconstructorCalldata, + addressSalt: salt, }); + await provider.waitForTransaction(txH2); + expect(contract_address).toBe(contractETHAccountAddress); }); - test('Deploy account signature', async () => { - const myPrivateKey = '0x525bc68475c0955fae83869beec0996114d4bb27b28b781ed2a20ef23121b8de'; - const myEthSigner = new EthSigner(myPrivateKey); - const myDeployAcc: DeployAccountSignerDetails = { - version: '0x2', - contractAddress: '0x65a822fbee1ae79e898688b5a4282dc79e0042cbed12f6169937fddb4c26641', - chainId: constants.StarknetChainId.SN_SEPOLIA, - classHash: '0x5f3614e8671257aff9ac38e929c74d65b02d460ae966cd826c9f04a7fa8e0d4', - constructorCalldata: [1, 2], - addressSalt: 1234, - nonce: 45, - maxFee: 10 ** 15, - - tip: 0, - paymasterData: [], - accountDeploymentData: [], - nonceDataAvailabilityMode: RPC.EDataAvailabilityMode.L1, - feeDataAvailabilityMode: RPC.EDataAvailabilityMode.L1, - resourceBounds: stark.estimateFeeToBounds(constants.ZERO), - }; - const sig = await myEthSigner.signDeployAccountTransaction(myDeployAcc); - expect(sig).toMatchObject({ - r: 61114347636551792612206610795983058940674613154346642566929862226007498517027n, - s: 38870792724053768239218215863749216579253019684549941316832072720775828116206n, - recovery: 1, + test('ETH account transaction V2', async () => { + const ethContract2 = new Contract(compiledErc20.abi, devnetETHtokenAddress, ethAccount); + const respTransfer = await ethContract2.transfer( + account.address, + cairo.uint256(2 * 10 ** 16), + { maxFee: 1 * 10 ** 16 } + ); + const txR = await provider.waitForTransaction(respTransfer.transaction_hash); + expect(txR.execution_status).toBe('SUCCEEDED'); + }); + + test('ETH account declaration V2', async () => { + const accountTestSierra = compiledDummy1Eth; + const accountTestCasm = compiledDummy1EthCasm; + const { transaction_hash: declTH2, class_hash: decClassHash2 } = + await ethAccount.declareIfNot( + { contract: accountTestSierra, casm: accountTestCasm }, + { maxFee: 1 * 10 ** 16 } + ); + if (declTH2) { + await provider.waitForTransaction(declTH2); + } + expect(decClassHash2).toBe( + '0x4f8989ac63c9266a3038eee607c23a4496210e426ce01079cdda6faad1d7733' + ); + }); + }); + + describe('ETH account tx V3', () => { + const provider = new Provider(getTestProvider()); + const account = getTestAccount(provider); + const devnetSTRKtokenAddress = + '0x04718f5a0fc34cc1af16a1cdee98ffb20c31f5cd61d6ab07201858f4287c938d'; + let ethAccount: Account; + beforeAll(async () => { + const { transaction_hash: declTH, class_hash: decClassHash } = await account.declareIfNot({ + contract: compiledEthAccount, + casm: compiledEthCasm, + }); + if (declTH) { + await provider.waitForTransaction(declTH); + } + const privateKeyETH = '0x525bc68475c0955fae83869beec0996114d4bb27b28b781ed2a20ef23121b8de'; + const ethSigner = new EthSigner(privateKeyETH); + const ethFullPublicKey = await ethSigner.getPubKey(); + const pubKeyETHx = cairo.uint256( + addAddressPadding(encode.addHexPrefix(ethFullPublicKey.slice(4, -64))) + ); + const salt = pubKeyETHx.low; + const myCallData = new CallData(compiledEthAccount.abi); + const accountETHconstructorCalldata = myCallData.compile('constructor', { + public_key: ethFullPublicKey, + }); + + const contractETHAccountAddress = hash.calculateContractAddressFromHash( + salt, + decClassHash, + accountETHconstructorCalldata, + 0 + ); + + // fund account with STRK + const { transaction_hash } = await account.execute({ + contractAddress: devnetSTRKtokenAddress, + entrypoint: 'transfer', + calldata: { + recipient: contractETHAccountAddress, + amount: cairo.uint256(5 * 10 ** 17), + }, }); + await account.waitForTransaction(transaction_hash); + + ethAccount = new Account( + provider, + contractETHAccountAddress, + ethSigner, + undefined, + ETransactionVersion.V3 + ); + const feeEstimation = await ethAccount.estimateAccountDeployFee({ + classHash: decClassHash, + addressSalt: salt, + constructorCalldata: accountETHconstructorCalldata, + }); + const { transaction_hash: txH2, contract_address } = await ethAccount.deployAccount( + { + classHash: decClassHash, + constructorCalldata: accountETHconstructorCalldata, + addressSalt: salt, + }, + { + resourceBounds: { + l2_gas: { max_amount: '0x0', max_price_per_unit: '0x0' }, + l1_gas: { + max_amount: num.toHex(BigInt(feeEstimation.resourceBounds.l1_gas.max_amount) * 2n), + max_price_per_unit: num.toHex( + BigInt(feeEstimation.resourceBounds.l1_gas.max_price_per_unit) * 2n + ), + }, + }, + } + ); + await provider.waitForTransaction(txH2); + expect(contract_address).toBe(contractETHAccountAddress); }); - test('Declare signature', async () => { - const myPrivateKey = '0x525bc68475c0955fae83869beec0996114d4bb27b28b781ed2a20ef23121b8de'; - const myEthSigner = new EthSigner(myPrivateKey); - const myDeclare: DeclareSignerDetails = { - version: '0x2', - chainId: constants.StarknetChainId.SN_SEPOLIA, - senderAddress: '0x65a822fbee1ae79e898688b5a4282dc79e0042cbed12f6169937fddb4c26641', - classHash: '0x5f3614e8671257aff9ac38e929c74d65b02d460ae966cd826c9f04a7fa8e0d4', - nonce: 45, - maxFee: 10 ** 15, - - tip: 0, - paymasterData: [], - accountDeploymentData: [], - nonceDataAvailabilityMode: RPC.EDataAvailabilityMode.L1, - feeDataAvailabilityMode: RPC.EDataAvailabilityMode.L1, - resourceBounds: stark.estimateFeeToBounds(constants.ZERO), - }; - const sig = await myEthSigner.signDeclareTransaction(myDeclare); - expect(sig).toMatchObject({ - r: 38069596217315916583476609659691868035000959604311196895707605245620900872129n, - s: 420191492562045858770062885997406552542950984883779606809355688615026963844n, - recovery: 1, + test('ETH account transaction V3', async () => { + const ethContract2 = new Contract(compiledErc20.abi, devnetSTRKtokenAddress, ethAccount); + const txCallData = ethContract2.populate('transfer', [ + account.address, + cairo.uint256(1 * 10 ** 15), + ]); + const feeTransfer = await ethAccount.estimateInvokeFee(txCallData); + const respTransfer = await ethAccount.execute(txCallData, undefined, { + resourceBounds: { + l2_gas: { max_amount: '0x0', max_price_per_unit: '0x0' }, + l1_gas: { + max_amount: num.toHex(BigInt(feeTransfer.resourceBounds.l1_gas.max_amount) * 2n), + max_price_per_unit: num.toHex( + BigInt(feeTransfer.resourceBounds.l1_gas.max_price_per_unit) * 2n + ), + }, + }, }); + + const txR = await provider.waitForTransaction(respTransfer.transaction_hash); + expect(txR.execution_status).toBe('SUCCEEDED'); + }); + + test('ETH account declaration V3', async () => { + const accountTestSierra = compiledDummy2Eth; + const accountTestCasm = compiledDummy2EthCasm; + const feeDeclare = await ethAccount.estimateDeclareFee({ + contract: accountTestSierra, + casm: accountTestCasm, + }); + const { transaction_hash: declTH2, class_hash: decClassHash2 } = + await ethAccount.declareIfNot( + { contract: accountTestSierra, casm: accountTestCasm }, + { + resourceBounds: { + l2_gas: { max_amount: '0x0', max_price_per_unit: '0x0' }, + l1_gas: { + max_amount: num.toHex(BigInt(feeDeclare.resourceBounds.l1_gas.max_amount) * 2n), + max_price_per_unit: num.toHex( + BigInt(feeDeclare.resourceBounds.l1_gas.max_price_per_unit) * 2n + ), + }, + }, + } + ); + if (declTH2) { + await provider.waitForTransaction(declTH2); + } + expect(decClassHash2).toBe( + '0x5d574bd1467f1ca5178c118be7cdb3e74718c37bae90ab686a9b8536ca24436' + ); }); }); }); diff --git a/src/signer/ethSigner.ts b/src/signer/ethSigner.ts index 830febda9..d54dcd23e 100644 --- a/src/signer/ethSigner.ts +++ b/src/signer/ethSigner.ts @@ -1,12 +1,15 @@ +import type { RecoveredSignatureType } from '@noble/curves/abstract/weierstrass'; import { secp256k1 } from '@noble/curves/secp256k1'; import { + ArraySignatureType, Call, DeclareSignerDetails, DeployAccountSignerDetails, InvocationsSignerDetails, Signature, TypedData, + Uint256, V2DeclareSignerDetails, V2DeployAccountSignerDetails, V2InvocationsSignerDetails, @@ -27,28 +30,39 @@ import { toHex } from '../utils/num'; import { intDAM } from '../utils/stark'; import { getExecuteCalldata } from '../utils/transaction'; import { getMessageHash } from '../utils/typedData'; +import { bnToUint256 } from '../utils/uint256'; import { SignerInterface } from './interface'; /** * Signer for accounts using Ethereum signature */ export class EthSigner implements SignerInterface { - protected pk: string; // hex string without 0x and odd number of characters + protected pk: string; // hex string without 0x and with an odd number of characters constructor(pk: Uint8Array | string = ethRandomPrivateKey()) { this.pk = pk instanceof Uint8Array - ? removeHexPrefix(sanitizeHex(buf2hex(pk))) - : removeHexPrefix(sanitizeHex(toHex(pk))); + ? buf2hex(pk).padStart(64, '0') + : removeHexPrefix(toHex(pk)).padStart(64, '0'); } + /** + * provides the Ethereum full public key (without parity prefix) + * @returns an hex string : 64 first characters are Point X coordinate. 64 last characters are Point Y coordinate. + */ public async getPubKey(): Promise { - return addHexPrefix(buf2hex(secp256k1.getPublicKey(this.pk))); + return addHexPrefix( + buf2hex(secp256k1.getPublicKey(this.pk, false)).padStart(130, '0').slice(2) + ); } public async signMessage(typedData: TypedData, accountAddress: string): Promise { const msgHash = getMessageHash(typedData, accountAddress); - return secp256k1.sign(removeHexPrefix(sanitizeHex(msgHash)), this.pk); + const signature: RecoveredSignatureType = secp256k1.sign( + removeHexPrefix(sanitizeHex(msgHash)), + this.pk + ); + return this.formatEthSignature(signature); } public async signTransaction( @@ -80,8 +94,11 @@ export class EthSigner implements SignerInterface { } else { throw Error('unsupported signTransaction version'); } - - return secp256k1.sign(removeHexPrefix(sanitizeHex(msgHash)), this.pk); + const signature: RecoveredSignatureType = secp256k1.sign( + removeHexPrefix(sanitizeHex(msgHash)), + this.pk + ); + return this.formatEthSignature(signature); } public async signDeployAccountTransaction( @@ -112,8 +129,11 @@ export class EthSigner implements SignerInterface { } else { throw Error('unsupported signDeployAccountTransaction version'); } - - return secp256k1.sign(removeHexPrefix(sanitizeHex(msgHash)), this.pk); + const signature: RecoveredSignatureType = secp256k1.sign( + removeHexPrefix(sanitizeHex(msgHash)), + this.pk + ); + return this.formatEthSignature(signature); } public async signDeclareTransaction( @@ -140,6 +160,27 @@ export class EthSigner implements SignerInterface { throw Error('unsupported signDeclareTransaction version'); } - return secp256k1.sign(removeHexPrefix(sanitizeHex(msgHash)), this.pk); + const signature: RecoveredSignatureType = secp256k1.sign( + removeHexPrefix(sanitizeHex(msgHash)), + this.pk + ); + return this.formatEthSignature(signature); + } + + /** + * Serialize the signature in conformity with starknet::eth_signature::Signature + * @param ethSignature secp256k1 signature from Noble curves library + * @return an array of felts, representing a Cairo Eth Signature. + */ + protected formatEthSignature(ethSignature: RecoveredSignatureType): ArraySignatureType { + const r: Uint256 = bnToUint256(ethSignature.r); + const s: Uint256 = bnToUint256(ethSignature.s); + return [ + toHex(r.low), + toHex(r.high), + toHex(s.low), + toHex(s.high), + toHex(ethSignature.recovery), + ] as ArraySignatureType; } } diff --git a/src/types/calldata.ts b/src/types/calldata.ts index ae5558726..72156390f 100644 --- a/src/types/calldata.ts +++ b/src/types/calldata.ts @@ -16,4 +16,5 @@ export enum Uint { export enum Literal { ClassHash = 'core::starknet::class_hash::ClassHash', ContractAddress = 'core::starknet::contract_address::ContractAddress', + Secp256k1Point = 'core::starknet::secp256k1::Secp256k1Point', } diff --git a/src/utils/calldata/cairo.ts b/src/utils/calldata/cairo.ts index a049b969d..efd052e09 100644 --- a/src/utils/calldata/cairo.ts +++ b/src/utils/calldata/cairo.ts @@ -35,6 +35,8 @@ export const isTypeEthAddress = (type: string) => type === 'core::starknet::eth_address::EthAddress'; export const isTypeBytes31 = (type: string) => type === 'core::bytes_31::bytes31'; export const isTypeByteArray = (type: string) => type === 'core::byte_array::ByteArray'; +export const isTypeSecp256k1Point = (type: string) => + type === 'core::starknet::secp256k1::Secp256k1Point'; export const isCairo1Type = (type: string) => type.includes('::'); export const getArrayType = (type: string) => { if (isCairo1Type(type)) { diff --git a/src/utils/calldata/index.ts b/src/utils/calldata/index.ts index 6112ad8a5..7e9b04bb9 100644 --- a/src/utils/calldata/index.ts +++ b/src/utils/calldata/index.ts @@ -131,7 +131,6 @@ export class CallData { this.structs, this.enums ); - // console.log('ordered =', orderedObject); args = Object.values(orderedObject); // // validate array elements to abi validateFields(abiMethod, args, this.structs, this.enums); diff --git a/src/utils/calldata/propertyOrder.ts b/src/utils/calldata/propertyOrder.ts index d187e9472..d654517f5 100644 --- a/src/utils/calldata/propertyOrder.ts +++ b/src/utils/calldata/propertyOrder.ts @@ -10,6 +10,7 @@ import { isTypeEthAddress, isTypeOption, isTypeResult, + isTypeSecp256k1Point, isTypeStruct, isTypeTuple, } from './cairo'; @@ -51,6 +52,9 @@ export default function orderPropsByAbi( if (isTypeByteArray(abiType)) { return unorderedItem; } + if (isTypeSecp256k1Point(abiType)) { + return unorderedItem; + } if (CairoUint256.isAbiType(abiType)) { const u256 = unorderedItem; if (typeof u256 !== 'object') { diff --git a/src/utils/calldata/requestParser.ts b/src/utils/calldata/requestParser.ts index 091f91b85..ff39ec60f 100644 --- a/src/utils/calldata/requestParser.ts +++ b/src/utils/calldata/requestParser.ts @@ -2,6 +2,7 @@ import { AbiEntry, AbiEnums, AbiStructs, + AllowArray, BigNumberish, ByteArray, CairoEnum, @@ -9,6 +10,8 @@ import { Tupled, } from '../../types'; import { CairoUint256 } from '../cairoDataTypes/uint256'; +import { addHexPrefix, removeHexPrefix } from '../encode'; +import { toHex } from '../num'; import { encodeShortString, isText, splitLongString } from '../shortString'; import { byteArrayFromString } from './byteArray'; import { @@ -19,8 +22,10 @@ import { isTypeEnum, isTypeOption, isTypeResult, + isTypeSecp256k1Point, isTypeStruct, isTypeTuple, + uint256, } from './cairo'; import { CairoCustomEnum, @@ -37,12 +42,23 @@ import extractTupleMemberTypes from './tuple'; * @param val value provided * @returns string | string[] */ -function parseBaseTypes(type: string, val: BigNumberish) { +function parseBaseTypes(type: string, val: BigNumberish): AllowArray { switch (true) { case CairoUint256.isAbiType(type): return new CairoUint256(val).toApiRequest(); case isTypeBytes31(type): return encodeShortString(val.toString()); + case isTypeSecp256k1Point(type): { + const pubKeyETH = removeHexPrefix(toHex(val)).padStart(128, '0'); + const pubKeyETHy = uint256(addHexPrefix(pubKeyETH.slice(-64))); + const pubKeyETHx = uint256(addHexPrefix(pubKeyETH.slice(0, -64))); + return [ + felt(pubKeyETHx.low), + felt(pubKeyETHx.high), + felt(pubKeyETHy.low), + felt(pubKeyETHy.high), + ]; + } default: return felt(val); } diff --git a/src/utils/calldata/responseParser.ts b/src/utils/calldata/responseParser.ts index 9744fb25e..7abec9f1a 100644 --- a/src/utils/calldata/responseParser.ts +++ b/src/utils/calldata/responseParser.ts @@ -11,6 +11,7 @@ import { ParsedStruct, } from '../../types'; import { CairoUint256 } from '../cairoDataTypes/uint256'; +import { addHexPrefix, removeHexPrefix } from '../encode'; import { toHex } from '../num'; import { decodeShortString } from '../shortString'; import { stringFromByteArray } from './byteArray'; @@ -22,6 +23,7 @@ import { isTypeBool, isTypeByteArray, isTypeEnum, + isTypeSecp256k1Point, isTypeTuple, } from './cairo'; import { @@ -56,6 +58,13 @@ function parseBaseTypes(type: string, it: Iterator) { case type === 'core::bytes_31::bytes31': temp = it.next().value; return decodeShortString(temp); + case isTypeSecp256k1Point(type): + const xLow = removeHexPrefix(it.next().value).padStart(32, '0'); + const xHigh = removeHexPrefix(it.next().value).padStart(32, '0'); + const yLow = removeHexPrefix(it.next().value).padStart(32, '0'); + const yHigh = removeHexPrefix(it.next().value).padStart(32, '0'); + const pubK = BigInt(addHexPrefix(xHigh + xLow + yHigh + yLow)); + return pubK; default: temp = it.next().value; return BigInt(temp); diff --git a/src/utils/calldata/validate.ts b/src/utils/calldata/validate.ts index cf0fcfc38..ed18a2e1e 100644 --- a/src/utils/calldata/validate.ts +++ b/src/utils/calldata/validate.ts @@ -135,6 +135,14 @@ const validateUint = (parameter: any, input: AbiEntry) => { `Validate: arg ${input.name} cairo typed ${input.type} should be in range [0, 2^252-1]` ); break; + case Literal.Secp256k1Point: { + assert( + param >= 0n && param <= 2n ** 512n - 1n, + `Validate: arg ${input.name} must be ${input.type} : a 512 bits number.` + ); + break; + } + default: break; } @@ -213,17 +221,8 @@ const validateTuple = (parameter: any, input: AbiEntry) => { const validateArray = (parameter: any, input: AbiEntry, structs: AbiStructs, enums: AbiEnums) => { const baseType = getArrayType(input.type); - // Long text (special case when parameter is not an array but long text) - // console.log( - // 'validate array = ', - // isTypeFelt(baseType), - // isLongText(parameter), - // baseType, - // parameter - // ); if (isTypeFelt(baseType) && isLongText(parameter)) { - // console.log('long text.'); return; } diff --git a/www/docs/guides/connect_account.md b/www/docs/guides/connect_account.md index 3b8da7b26..5f6115b17 100644 --- a/www/docs/guides/connect_account.md +++ b/www/docs/guides/connect_account.md @@ -85,12 +85,12 @@ To connect to this type of account: ```typescript const myEthPrivateKey = "0x525bc68475c0955fae83869beec0996114d4bb27b28b781ed2a20ef23121b8de"; -const myEthAccountAddress = "0x65a822fbee1ae79e898688b5a4282dc79e0042cbed12f6169937fddb4c26641"; +const myEthAccountAddressInStarknet = "0x65a822fbee1ae79e898688b5a4282dc79e0042cbed12f6169937fddb4c26641"; const myEthSigner = new EthSigner(myEthPrivateKey); -const myEthAccount = new Account(provider, myEthAccountAddress, myEthSigner) +const myEthAccount = new Account(provider, myEthAccountAddressInStarknet, myEthSigner) ``` -And if you need a randon Ethereum private key: +And if you need a random Ethereum private key: ```typescript const myPrivateKey = eth.ethRandomPrivateKey(); diff --git a/www/docs/guides/create_account.md b/www/docs/guides/create_account.md index 3bbed22d9..f13f53ff3 100644 --- a/www/docs/guides/create_account.md +++ b/www/docs/guides/create_account.md @@ -224,6 +224,43 @@ console.log('✅ Braavos wallet deployed at', BraavosAccountFinalAddress); The computed address has been funded automatically by minting a new dummy ETH in Starknet devnet! +## Create an Ethereum account + +Thanks to account abstraction, you can create in Starknet an account that old the cryptographic logic of an Ethereum account. By this way, you can use Ethereum private and public keys. +OpenZeppelin has released an account contract for a such Ethereum account. Here an example of account creation in Sepolia Testnet. + +### Compute address + +```typescript +const privateKeyETH = "0x45397ee6ca34cb49060f1c303c6cb7ee2d6123e617601ef3e31ccf7bf5bef1f9"; +const ethSigner = new EthSigner(privateKeyETH); +const ethFullPublicKey = await ethSigner.getPubKey(); +const accountEthClassHash = "0x23e416842ca96b1f7067693892ed00881d97a4b0d9a4c793b75cb887944d98d"; +const myCallData = new CallData(ethAccountAbi); +const accountETHconstructorCalldata = myCallData.compile("constructor", + { public_key: ethFullPublicKey }); +const salt = "0x12345" // or lower felt of public key X part +const contractETHaddress = hash.calculateContractAddressFromHash(salt, decClassHash, accountETHconstructorCalldata, 0); +console.log('Pre-calculated ETH account address =', contractETHaddress); +``` + +Then you have to fund this address. + +### deployment of the new account + +If you have sent enough funds to this new address, you can go forward to the final step: + +```typescript +const ethAccount = new Account(provider, contractETHaddress, ethSigner); +const { transaction_hash, contract_address } = await ethAccount.deployAccount({ + classHash: accountEthClassHash, + constructorCalldata: accountETHconstructorCalldata, + addressSalt: salt + }); +await provider.waitForTransaction(transaction_hash); +console.log('✅ New Ethereum account final address =', contract_address); +``` + ## Create your account abstraction You are not limited to these 3 contracts. You can create your own contract for the wallet. It's the concept of Account Abstraction. diff --git a/www/docs/guides/define_call_message.md b/www/docs/guides/define_call_message.md index 9b17b0c87..87b29bf47 100644 --- a/www/docs/guides/define_call_message.md +++ b/www/docs/guides/define_call_message.md @@ -165,7 +165,7 @@ const myTpl = {"0": "0x0a", "1": 200}; ### named tuple -> Only for Cairo 0. +> [!IMPORTANT] Only for Cairo 0. Starknet is waiting for a list of felts. You can send to Starknet.js methods: an object, `cairo.tuple()`, list of bigNumberish. @@ -185,7 +185,51 @@ const namedTup = {min: "0x4e65ac6", max: 296735486n}; await myContract.my_function(namedTup); ``` -> It's not mandatory to create an object conform to the Cairo 0 named tuple, you can just use the `cairo.tuple()` function. +> [!TIP] It's not mandatory to create an object conform to the Cairo 0 named tuple, you can just use the `cairo.tuple()` function. + +### Ethereum public key + +If your abi is requesting this type : `core::starknet::secp256k1::Secp256k1Point`, it means that you have probably to send an Ethereum full public key. Example : + +```json +{ + "type": "constructor", + "name": "constructor", + "inputs": [ + { + "name": "public_key", + "type": "core::starknet::secp256k1::Secp256k1Point" + } + ] +} +``` + +- If you are using a calldata construction method using the Abi, you have just to use a 512 bits number (so, without parity) : + +```typescript +const privateKeyETH = "0x45397ee6ca34cb49060f1c303c6cb7ee2d6123e617601ef3e31ccf7bf5bef1f9"; +const ethSigner = new EthSigner(privateKeyETH); +const ethFullPublicKey = await ethSigner.getPubKey(); // 512 bits number +const myCallData = new CallData(ethAccountAbi); +const accountETHconstructorCalldata = myCallData.compile( + "constructor", + { + public_key: ethFullPublicKey + } +); +``` + +- If you are using a calldata construction method without the Abi, you have to send a tuple of 2 u256 : + +```typescript +const ethFullPublicKey = "0x0178bb97615b49070eefad71cb2f159392274404e41db748d9397147cb25cf597ebfcf2f399e635b72b99b8f76e9080763c65a42c842869815039d912150ddfe"; // 512 bits number +const pubKeyETH = encode.addHexPrefix(encode.removeHexPrefix(ethFullPublicKey).padStart(128, "0")); +const pubKeyETHx = cairo.uint256(addAddressPadding(encode.addHexPrefix(pubKeyETH.slice(2, -64)))); +const pubKeyETHy = cairo.uint256(addAddressPadding(encode.addHexPrefix(pubKeyETH.slice(-64)))); +const accountETHconstructorCalldata = CallData.compile([ + cairo.tuple(pubKeyETHx, pubKeyETHy) +]); +``` ### struct @@ -197,7 +241,7 @@ const myStruct = {type: "TR1POST", tries: 8, isBridged: true}; await myContract.my_function(myStruct); ``` -### array +### array, span Starknet is waiting for an array of felts: array_len, array1, array2, ... You can send it to Starknet.js methods: bigNumberish[]. @@ -207,7 +251,7 @@ Const myArray = [10, "0xaa", 567n]; await myContract.my_function(myArray); ``` -> Do not add the `array_len` parameter before your array. Starknet.js will manage this element automatically. +> [!CAUTION] Do not add the `array_len` parameter before your array. Starknet.js will manage this element automatically. > It's also applicable for Cairo `Span` type. @@ -275,7 +319,7 @@ const functionName="my_function"; await myContract[functionName](...myParams); ``` -> Objects properties have to be ordered in accordance with the ABI. +> [!WARNING] Objects properties have to be ordered in accordance with the ABI. ### Object (without ABI conformity check) @@ -293,7 +337,7 @@ const deployResponse = await myAccount.deployContract({ This type is available for: `CallData.compile(), hash.calculateContractAddressFromHash, account.deployContract, account.deployAccount, account.execute` -> Objects properties have to be ordered in accordance with the ABI. +> [!WARNING] Objects properties have to be ordered in accordance with the ABI. ### Object (with ABI conformity check) diff --git a/www/docs/guides/signature.md b/www/docs/guides/signature.md index 8ee836316..c513ff858 100644 --- a/www/docs/guides/signature.md +++ b/www/docs/guides/signature.md @@ -182,3 +182,16 @@ try { console.log("verification failed :", result.error); } ``` + +### Signing with an Ethereum signer + +All the previous examples are using the standard Starknet signature process, but you can also use the Ethereum one. + +```typescript +const myEthPrivateKey = "0x525bc68475c0955fae83869beec0996114d4bb27b28b781ed2a20ef23121b8de"; +const myEthAccountAddressInStarknet = "0x65a822fbee1ae79e898688b5a4282dc79e0042cbed12f6169937fddb4c26641"; +const myEthSigner = new EthSigner(myEthPrivateKey); +console.log("Complete public key =", await myEthSigner.getPubKey()); +const sig0 = await myEthSigner.signMessage(message, myEthAccountAddressInStarknet); +console.log("signature message =", sig0); +``` From 3599be006471a170f04d50686b0a07e4e4626b6d Mon Sep 17 00:00:00 2001 From: PhilippeR26 Date: Mon, 11 Mar 2024 19:46:36 +0100 Subject: [PATCH 02/37] test: move secp256k1Point tests in a dedicated test file --- .../utils/CairoTypes/secp256k1Point.test.ts | 45 +++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 __tests__/utils/CairoTypes/secp256k1Point.test.ts diff --git a/__tests__/utils/CairoTypes/secp256k1Point.test.ts b/__tests__/utils/CairoTypes/secp256k1Point.test.ts new file mode 100644 index 000000000..a2de161c9 --- /dev/null +++ b/__tests__/utils/CairoTypes/secp256k1Point.test.ts @@ -0,0 +1,45 @@ +/* eslint-disable no-new */ +import { CallData } from '../../../src/utils/calldata'; +import { bigNumberishArrayToDecimalStringArray, toHex } from '../../../src/utils/num'; +import { compiledEthAccount, compiledEthPubk } from '../../config/fixtures'; + +describe('secp256k1Point cairo type test', () => { + const myCallDataAccount = new CallData(compiledEthAccount.abi); + const myCallDataTest = new CallData(compiledEthPubk.abi); + const ethPubKey = + '0x8c7aea7d673a5858bdca128d124fb0765cceb2c16f198f4c14b328aa571331e6f6c87f51d5224d73d118765cb19d7565212f80be5048bff926ba791c17541c92'; + test('secp256k1Point is an u512', () => { + const point = toHex(2n ** 512n); + expect(() => { + myCallDataAccount.compile('constructor', { + public_key: point, + }); + }).toThrow( + 'Validate: arg public_key must be core::starknet::secp256k1::Secp256k1Point : a 512 bits number.' + ); + }); + + test('secp256k1Point compile', () => { + const res = myCallDataAccount.compile('constructor', { + public_key: ethPubKey, + }); + expect(res).toEqual( + bigNumberishArrayToDecimalStringArray([ + '0x5cceb2c16f198f4c14b328aa571331e6', + '0x8c7aea7d673a5858bdca128d124fb076', + '0x212f80be5048bff926ba791c17541c92', + '0xf6c87f51d5224d73d118765cb19d7565', + ]) + ); + }); + + test('secp256k1Point parse', () => { + const res = myCallDataTest.parse('get_public_key', [ + '0x5cceb2c16f198f4c14b328aa571331e6', + '0x8c7aea7d673a5858bdca128d124fb076', + '0x212f80be5048bff926ba791c17541c92', + '0xf6c87f51d5224d73d118765cb19d7565', + ]); + expect(res).toBe(BigInt(ethPubKey)); + }); +}); From 57d395b00c747ac591d169736ebd3ed45d8b35ea Mon Sep 17 00:00:00 2001 From: PhilippeR26 Date: Mon, 18 Mar 2024 21:36:00 +0100 Subject: [PATCH 03/37] feat: helper for transaction receipt --- __mocks__/cairo/testReject/test_reject.cairo | 33 + __mocks__/cairo/testReject/test_reject.casm | 1189 +++++++++++++++++ .../cairo/testReject/test_reject.sierra.json | 522 ++++++++ __tests__/config/fixtures.ts | 2 + __tests__/contract.test.ts | 16 +- __tests__/rpcProvider.test.ts | 5 +- __tests__/transactionReceipt.test.ts | 104 ++ src/contract/default.ts | 2 +- src/contract/interface.ts | 2 +- src/index.ts | 1 + src/provider/interface.ts | 2 +- src/provider/rpc.ts | 22 +- src/types/index.ts | 1 + src/types/provider/response.ts | 52 +- src/types/provider/spec.ts | 2 +- src/types/transactionReceipt.ts | 32 + src/utils/provider.ts | 7 +- src/utils/responseParser/index.ts | 2 +- src/utils/responseParser/rpc.ts | 10 +- src/utils/transactionReceipt.ts | 114 ++ www/docs/guides/interact.md | 36 + 21 files changed, 2121 insertions(+), 35 deletions(-) create mode 100644 __mocks__/cairo/testReject/test_reject.cairo create mode 100644 __mocks__/cairo/testReject/test_reject.casm create mode 100644 __mocks__/cairo/testReject/test_reject.sierra.json create mode 100644 __tests__/transactionReceipt.test.ts create mode 100644 src/types/transactionReceipt.ts create mode 100644 src/utils/transactionReceipt.ts diff --git a/__mocks__/cairo/testReject/test_reject.cairo b/__mocks__/cairo/testReject/test_reject.cairo new file mode 100644 index 000000000..f9018c43e --- /dev/null +++ b/__mocks__/cairo/testReject/test_reject.cairo @@ -0,0 +1,33 @@ +//Cairo 2.3.1 + +#[starknet::interface] +trait ITestReject { + fn test_fail(ref self: TContractState, p1: u8) ; + fn get_counter(self: @TContractState) -> u8 ; + fn init_count(ref self: TContractState, p1: u8); +} + +#[starknet::contract] +mod MyTestReject { + #[storage] + struct Storage { + counter: u8 + } + + #[external(v0)] + impl TestReject of super::ITestReject { + fn test_fail(ref self: ContractState, p1: u8) { + assert(p1 == 100, 'Fatal'); + self.counter.write(p1); + } + + fn get_counter(self: @ContractState) -> u8 { + self.counter.read() + } + + fn init_count(ref self: ContractState, p1: u8) { + self.counter.write(p1); + } + + } +} diff --git a/__mocks__/cairo/testReject/test_reject.casm b/__mocks__/cairo/testReject/test_reject.casm new file mode 100644 index 000000000..920ea449a --- /dev/null +++ b/__mocks__/cairo/testReject/test_reject.casm @@ -0,0 +1,1189 @@ +{ + "prime": "0x800000000000011000000000000000000000000000000000000000000000001", + "compiler_version": "2.3.1", + "bytecode": [ + "0xa0680017fff8000", + "0x7", + "0x482680017ffa8000", + "0xffffffffffffffffffffffffffffd7f6", + "0x400280007ff97fff", + "0x10780017fff7fff", + "0x88", + "0x4825800180007ffa", + "0x280a", + "0x400280007ff97fff", + "0x482680017ff98000", + "0x1", + "0x48297ffc80007ffd", + "0x20680017fff7fff", + "0x4", + "0x10780017fff7fff", + "0xa", + "0x482680017ffc8000", + "0x1", + "0x480a7ffd7fff8000", + "0x480680017fff8000", + "0x0", + "0x480a7ffc7fff8000", + "0x10780017fff7fff", + "0x8", + "0x480a7ffc7fff8000", + "0x480a7ffd7fff8000", + "0x480680017fff8000", + "0x1", + "0x480680017fff8000", + "0x0", + "0x20680017fff7ffe", + "0x5d", + "0x48127ffa7fff8000", + "0x480080007ffe8000", + "0x1104800180018000", + "0x181", + "0x20680017fff7ffe", + "0x54", + "0x48127fee7fff8000", + "0x48127fee7fff8000", + "0x48307ffe80007fff", + "0x4824800180007fff", + "0x0", + "0x20680017fff7fff", + "0x4", + "0x10780017fff7fff", + "0x10", + "0x40780017fff7fff", + "0x1", + "0x480680017fff8000", + "0x496e70757420746f6f206c6f6e6720666f7220617267756d656e7473", + "0x400080007ffe7fff", + "0x48127ff77fff8000", + "0x48127fe47fff8000", + "0x480a7ffb7fff8000", + "0x480680017fff8000", + "0x1", + "0x48127ffa7fff8000", + "0x482480017ff98000", + "0x1", + "0x208b7fff7fff7ffe", + "0x1104800180018000", + "0x29f", + "0x482480017fff8000", + "0x29e", + "0x480080007fff8000", + "0xa0680017fff8000", + "0x9", + "0x4824800180007fe2", + "0x0", + "0x482480017fff8000", + "0x100000000000000000000000000000000", + "0x400080007ff27fff", + "0x10780017fff7fff", + "0x20", + "0x4824800180007fe2", + "0x0", + "0x400080007ff37fff", + "0x48127fff7fff8000", + "0x480a7ffb7fff8000", + "0x48127ff37fff8000", + "0x1104800180018000", + "0x178", + "0x482480017fd08000", + "0x1", + "0x20680017fff7ffc", + "0xc", + "0x40780017fff7fff", + "0x1", + "0x48127ffe7fff8000", + "0x48127ff87fff8000", + "0x48127ff87fff8000", + "0x480680017fff8000", + "0x0", + "0x48127ffb7fff8000", + "0x48127ffa7fff8000", + "0x208b7fff7fff7ffe", + "0x48127fff7fff8000", + "0x48127ff97fff8000", + "0x48127ff97fff8000", + "0x480680017fff8000", + "0x1", + "0x48127ff97fff8000", + "0x48127ff97fff8000", + "0x208b7fff7fff7ffe", + "0x40780017fff7fff", + "0x1", + "0x480680017fff8000", + "0x4f7574206f6620676173", + "0x400080007ffe7fff", + "0x482480017ff08000", + "0x1", + "0x48127fdd7fff8000", + "0x480a7ffb7fff8000", + "0x480680017fff8000", + "0x1", + "0x48127ffa7fff8000", + "0x482480017ff98000", + "0x1", + "0x208b7fff7fff7ffe", + "0x48127ffd7fff8000", + "0x10780017fff7fff", + "0x5", + "0x40780017fff7fff", + "0xe", + "0x48127fec7fff8000", + "0x40780017fff7fff", + "0x1", + "0x480680017fff8000", + "0x4661696c656420746f20646573657269616c697a6520706172616d202331", + "0x400080007ffe7fff", + "0x48127ffd7fff8000", + "0x48127fe77fff8000", + "0x480a7ffb7fff8000", + "0x480680017fff8000", + "0x1", + "0x48127ffa7fff8000", + "0x482480017ff98000", + "0x1", + "0x208b7fff7fff7ffe", + "0x40780017fff7fff", + "0x1", + "0x480680017fff8000", + "0x4f7574206f6620676173", + "0x400080007ffe7fff", + "0x482680017ff98000", + "0x1", + "0x480a7ffa7fff8000", + "0x480a7ffb7fff8000", + "0x480680017fff8000", + "0x1", + "0x48127ffa7fff8000", + "0x482480017ff98000", + "0x1", + "0x208b7fff7fff7ffe", + "0xa0680017fff8000", + "0x7", + "0x482680017ffa8000", + "0xffffffffffffffffffffffffffffd6ca", + "0x400280007ff97fff", + "0x10780017fff7fff", + "0x58", + "0x4825800180007ffa", + "0x2936", + "0x400280007ff97fff", + "0x48297ffc80007ffd", + "0x482680017ff98000", + "0x1", + "0x4824800180007ffe", + "0x0", + "0x20680017fff7fff", + "0x4", + "0x10780017fff7fff", + "0x10", + "0x40780017fff7fff", + "0x1", + "0x480680017fff8000", + "0x496e70757420746f6f206c6f6e6720666f7220617267756d656e7473", + "0x400080007ffe7fff", + "0x48127ffc7fff8000", + "0x48127ff97fff8000", + "0x480a7ffb7fff8000", + "0x480680017fff8000", + "0x1", + "0x48127ffa7fff8000", + "0x482480017ff98000", + "0x1", + "0x208b7fff7fff7ffe", + "0x1104800180018000", + "0x220", + "0x482480017fff8000", + "0x21f", + "0x480080007fff8000", + "0xa0680017fff8000", + "0x9", + "0x4824800180007ff7", + "0x0", + "0x482480017fff8000", + "0x100000000000000000000000000000000", + "0x400080007ff77fff", + "0x10780017fff7fff", + "0x21", + "0x4824800180007ff7", + "0x0", + "0x400080007ff87fff", + "0x482480017ff88000", + "0x1", + "0x48127ffe7fff8000", + "0x480a7ffb7fff8000", + "0x1104800180018000", + "0x124", + "0x20680017fff7ffd", + "0xe", + "0x40780017fff7fff", + "0x1", + "0x400080007fff7ffe", + "0x48127ff97fff8000", + "0x48127ff97fff8000", + "0x48127ff97fff8000", + "0x480680017fff8000", + "0x0", + "0x48127ffb7fff8000", + "0x482480017ffa8000", + "0x1", + "0x208b7fff7fff7ffe", + "0x48127ffa7fff8000", + "0x48127ffa7fff8000", + "0x48127ffa7fff8000", + "0x480680017fff8000", + "0x1", + "0x48127ffa7fff8000", + "0x48127ffa7fff8000", + "0x208b7fff7fff7ffe", + "0x40780017fff7fff", + "0x1", + "0x480680017fff8000", + "0x4f7574206f6620676173", + "0x400080007ffe7fff", + "0x482480017ff58000", + "0x1", + "0x48127ff27fff8000", + "0x480a7ffb7fff8000", + "0x480680017fff8000", + "0x1", + "0x48127ffa7fff8000", + "0x482480017ff98000", + "0x1", + "0x208b7fff7fff7ffe", + "0x40780017fff7fff", + "0x1", + "0x480680017fff8000", + "0x4f7574206f6620676173", + "0x400080007ffe7fff", + "0x482680017ff98000", + "0x1", + "0x480a7ffa7fff8000", + "0x480a7ffb7fff8000", + "0x480680017fff8000", + "0x1", + "0x48127ffa7fff8000", + "0x482480017ff98000", + "0x1", + "0x208b7fff7fff7ffe", + "0xa0680017fff8000", + "0x7", + "0x482680017ffa8000", + "0xffffffffffffffffffffffffffffd922", + "0x400280007ff97fff", + "0x10780017fff7fff", + "0x88", + "0x4825800180007ffa", + "0x26de", + "0x400280007ff97fff", + "0x482680017ff98000", + "0x1", + "0x48297ffc80007ffd", + "0x20680017fff7fff", + "0x4", + "0x10780017fff7fff", + "0xa", + "0x482680017ffc8000", + "0x1", + "0x480a7ffd7fff8000", + "0x480680017fff8000", + "0x0", + "0x480a7ffc7fff8000", + "0x10780017fff7fff", + "0x8", + "0x480a7ffc7fff8000", + "0x480a7ffd7fff8000", + "0x480680017fff8000", + "0x1", + "0x480680017fff8000", + "0x0", + "0x20680017fff7ffe", + "0x5d", + "0x48127ffa7fff8000", + "0x480080007ffe8000", + "0x1104800180018000", + "0x79", + "0x20680017fff7ffe", + "0x54", + "0x48127fee7fff8000", + "0x48127fee7fff8000", + "0x48307ffe80007fff", + "0x4824800180007fff", + "0x0", + "0x20680017fff7fff", + "0x4", + "0x10780017fff7fff", + "0x10", + "0x40780017fff7fff", + "0x1", + "0x480680017fff8000", + "0x496e70757420746f6f206c6f6e6720666f7220617267756d656e7473", + "0x400080007ffe7fff", + "0x48127ff77fff8000", + "0x48127fe47fff8000", + "0x480a7ffb7fff8000", + "0x480680017fff8000", + "0x1", + "0x48127ffa7fff8000", + "0x482480017ff98000", + "0x1", + "0x208b7fff7fff7ffe", + "0x1104800180018000", + "0x197", + "0x482480017fff8000", + "0x196", + "0x480080007fff8000", + "0xa0680017fff8000", + "0x9", + "0x4824800180007fe2", + "0x0", + "0x482480017fff8000", + "0x100000000000000000000000000000000", + "0x400080007ff27fff", + "0x10780017fff7fff", + "0x20", + "0x4824800180007fe2", + "0x0", + "0x400080007ff37fff", + "0x48127fff7fff8000", + "0x480a7ffb7fff8000", + "0x48127ff37fff8000", + "0x1104800180018000", + "0xb4", + "0x482480017fd18000", + "0x1", + "0x20680017fff7ffc", + "0xc", + "0x40780017fff7fff", + "0x1", + "0x48127ffe7fff8000", + "0x48127ff87fff8000", + "0x48127ff87fff8000", + "0x480680017fff8000", + "0x0", + "0x48127ffb7fff8000", + "0x48127ffa7fff8000", + "0x208b7fff7fff7ffe", + "0x48127fff7fff8000", + "0x48127ff97fff8000", + "0x48127ff97fff8000", + "0x480680017fff8000", + "0x1", + "0x48127ff97fff8000", + "0x48127ff97fff8000", + "0x208b7fff7fff7ffe", + "0x40780017fff7fff", + "0x1", + "0x480680017fff8000", + "0x4f7574206f6620676173", + "0x400080007ffe7fff", + "0x482480017ff08000", + "0x1", + "0x48127fdd7fff8000", + "0x480a7ffb7fff8000", + "0x480680017fff8000", + "0x1", + "0x48127ffa7fff8000", + "0x482480017ff98000", + "0x1", + "0x208b7fff7fff7ffe", + "0x48127ffd7fff8000", + "0x10780017fff7fff", + "0x5", + "0x40780017fff7fff", + "0xe", + "0x48127fec7fff8000", + "0x40780017fff7fff", + "0x1", + "0x480680017fff8000", + "0x4661696c656420746f20646573657269616c697a6520706172616d202331", + "0x400080007ffe7fff", + "0x48127ffd7fff8000", + "0x48127fe77fff8000", + "0x480a7ffb7fff8000", + "0x480680017fff8000", + "0x1", + "0x48127ffa7fff8000", + "0x482480017ff98000", + "0x1", + "0x208b7fff7fff7ffe", + "0x40780017fff7fff", + "0x1", + "0x480680017fff8000", + "0x4f7574206f6620676173", + "0x400080007ffe7fff", + "0x482680017ff98000", + "0x1", + "0x480a7ffa7fff8000", + "0x480a7ffb7fff8000", + "0x480680017fff8000", + "0x1", + "0x48127ffa7fff8000", + "0x482480017ff98000", + "0x1", + "0x208b7fff7fff7ffe", + "0xa0680017fff8000", + "0x12", + "0x4825800180007ffd", + "0x100", + "0x4844800180008002", + "0x8000000000000110000000000000000", + "0x4830800080017ffe", + "0x480280007ffc7fff", + "0x482480017ffe8000", + "0xefffffffffffffde00000000000000ff", + "0x480280017ffc7fff", + "0x400280027ffc7ffb", + "0x402480017fff7ffb", + "0xffffffffffffffffffffffffffffffff", + "0x20680017fff7fff", + "0x11", + "0x402780017fff7fff", + "0x1", + "0x400380007ffc7ffd", + "0x482680017ffd8000", + "0xffffffffffffffffffffffffffffff00", + "0x400280017ffc7fff", + "0x40780017fff7fff", + "0x5", + "0x482680017ffc8000", + "0x2", + "0x480680017fff8000", + "0x0", + "0x480a7ffd7fff8000", + "0x10780017fff7fff", + "0x8", + "0x482680017ffc8000", + "0x3", + "0x480680017fff8000", + "0x1", + "0x480680017fff8000", + "0x0", + "0x208b7fff7fff7ffe", + "0x4825800180007ffd", + "0x64", + "0x20680017fff7fff", + "0x4", + "0x10780017fff7fff", + "0x11", + "0x40780017fff7fff", + "0x16", + "0x40780017fff7fff", + "0x1", + "0x480680017fff8000", + "0x466174616c", + "0x400080007ffe7fff", + "0x480a7ffb7fff8000", + "0x480a7ffc7fff8000", + "0x480680017fff8000", + "0x1", + "0x48127ffb7fff8000", + "0x482480017ffa8000", + "0x1", + "0x208b7fff7fff7ffe", + "0x480a7ffb7fff8000", + "0x480a7ffc7fff8000", + "0x480a7ffd7fff8000", + "0x1104800180018000", + "0x43", + "0x20680017fff7ffd", + "0xb", + "0x48127ffb7fff8000", + "0x48127ffb7fff8000", + "0x480680017fff8000", + "0x0", + "0x480680017fff8000", + "0x0", + "0x480680017fff8000", + "0x0", + "0x208b7fff7fff7ffe", + "0x48127ffb7fff8000", + "0x48127ffb7fff8000", + "0x480680017fff8000", + "0x1", + "0x48127ffb7fff8000", + "0x48127ffb7fff8000", + "0x208b7fff7fff7ffe", + "0x480a7ffb7fff8000", + "0x480a7ffc7fff8000", + "0x480a7ffd7fff8000", + "0x1104800180018000", + "0x60", + "0x20680017fff7ffd", + "0xb", + "0x48127ffa7fff8000", + "0x48127ffa7fff8000", + "0x48127ffa7fff8000", + "0x480680017fff8000", + "0x0", + "0x480680017fff8000", + "0x0", + "0x48127ffa7fff8000", + "0x208b7fff7fff7ffe", + "0x48127ffa7fff8000", + "0x48127ffa7fff8000", + "0x48127ffa7fff8000", + "0x480680017fff8000", + "0x1", + "0x48127ffa7fff8000", + "0x48127ffa7fff8000", + "0x208b7fff7fff7ffe", + "0x480a7ffb7fff8000", + "0x480a7ffc7fff8000", + "0x480a7ffd7fff8000", + "0x1104800180018000", + "0x14", + "0x20680017fff7ffd", + "0xb", + "0x48127ffb7fff8000", + "0x48127ffb7fff8000", + "0x480680017fff8000", + "0x0", + "0x480680017fff8000", + "0x0", + "0x480680017fff8000", + "0x0", + "0x208b7fff7fff7ffe", + "0x48127ffb7fff8000", + "0x48127ffb7fff8000", + "0x480680017fff8000", + "0x1", + "0x48127ffb7fff8000", + "0x48127ffb7fff8000", + "0x208b7fff7fff7ffe", + "0x480680017fff8000", + "0x0", + "0x480680017fff8000", + "0x7ebcc807b5c7e19f245995a55aed6f46f5f582f476a886b91b834b0ddf5854", + "0x480680017fff8000", + "0x53746f726167655772697465", + "0x400280007ffc7fff", + "0x400380017ffc7ffb", + "0x400280027ffc7ffd", + "0x400280037ffc7ffe", + "0x400380047ffc7ffd", + "0x480280067ffc8000", + "0x20680017fff7fff", + "0xd", + "0x480280057ffc8000", + "0x482680017ffc8000", + "0x7", + "0x480680017fff8000", + "0x0", + "0x480680017fff8000", + "0x0", + "0x480680017fff8000", + "0x0", + "0x10780017fff7fff", + "0x9", + "0x480280057ffc8000", + "0x482680017ffc8000", + "0x9", + "0x480680017fff8000", + "0x1", + "0x480280077ffc8000", + "0x480280087ffc8000", + "0x1104800180018000", + "0x41", + "0x20680017fff7ffd", + "0xb", + "0x48127ff67fff8000", + "0x48127ff67fff8000", + "0x480680017fff8000", + "0x0", + "0x480680017fff8000", + "0x0", + "0x480680017fff8000", + "0x0", + "0x208b7fff7fff7ffe", + "0x48127ff67fff8000", + "0x48127ff67fff8000", + "0x480680017fff8000", + "0x1", + "0x48127ffb7fff8000", + "0x48127ffb7fff8000", + "0x208b7fff7fff7ffe", + "0x480a7ffb7fff8000", + "0x480a7ffc7fff8000", + "0x480a7ffd7fff8000", + "0x480680017fff8000", + "0x0", + "0x480680017fff8000", + "0x7ebcc807b5c7e19f245995a55aed6f46f5f582f476a886b91b834b0ddf5854", + "0x1104800180018000", + "0x34", + "0x20680017fff7ffc", + "0x1a", + "0x48127ffd7fff8000", + "0x48127ffd7fff8000", + "0x48127ffd7fff8000", + "0x1104800180018000", + "0x69", + "0x20680017fff7ffd", + "0xb", + "0x48127ff17fff8000", + "0x48127ff17fff8000", + "0x48127ff17fff8000", + "0x480680017fff8000", + "0x0", + "0x480680017fff8000", + "0x0", + "0x48127ffa7fff8000", + "0x208b7fff7fff7ffe", + "0x48127ff17fff8000", + "0x48127ff17fff8000", + "0x48127ff17fff8000", + "0x480680017fff8000", + "0x1", + "0x48127ffa7fff8000", + "0x48127ffa7fff8000", + "0x208b7fff7fff7ffe", + "0x40780017fff7fff", + "0x8", + "0x48127ff17fff8000", + "0x48127ff17fff8000", + "0x48127ff17fff8000", + "0x480680017fff8000", + "0x1", + "0x48127ff27fff8000", + "0x48127ff27fff8000", + "0x208b7fff7fff7ffe", + "0x20780017fff7ffb", + "0x9", + "0x480680017fff8000", + "0x0", + "0x480680017fff8000", + "0x0", + "0x480680017fff8000", + "0x0", + "0x208b7fff7fff7ffe", + "0x480680017fff8000", + "0x1", + "0x480a7ffc7fff8000", + "0x480a7ffd7fff8000", + "0x208b7fff7fff7ffe", + "0x480680017fff8000", + "0x53746f7261676552656164", + "0x400280007ffb7fff", + "0x400380017ffb7ffa", + "0x400380027ffb7ffc", + "0x400380037ffb7ffd", + "0x480280057ffb8000", + "0x20680017fff7fff", + "0x28", + "0x480a7ff97fff8000", + "0x480280067ffb8000", + "0x1104800180018000", + "0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffff06", + "0x480280047ffb8000", + "0x482680017ffb8000", + "0x7", + "0x20680017fff7ffc", + "0xf", + "0x40780017fff7fff", + "0x2", + "0x48127ff97fff8000", + "0x48127ffb7fff8000", + "0x48127ffb7fff8000", + "0x480680017fff8000", + "0x0", + "0x480680017fff8000", + "0x0", + "0x480680017fff8000", + "0x0", + "0x48127ff57fff8000", + "0x208b7fff7fff7ffe", + "0x40780017fff7fff", + "0x1", + "0x480680017fff8000", + "0x53746f72655538202d206e6f6e207538", + "0x400080007ffe7fff", + "0x48127ff97fff8000", + "0x48127ffb7fff8000", + "0x48127ffb7fff8000", + "0x480680017fff8000", + "0x1", + "0x480680017fff8000", + "0x0", + "0x48127ff97fff8000", + "0x482480017ff88000", + "0x1", + "0x208b7fff7fff7ffe", + "0x40780017fff7fff", + "0x12", + "0x480a7ff97fff8000", + "0x480280047ffb8000", + "0x482680017ffb8000", + "0x8", + "0x480680017fff8000", + "0x0", + "0x480680017fff8000", + "0x1", + "0x480280067ffb8000", + "0x480280077ffb8000", + "0x208b7fff7fff7ffe", + "0x20780017fff7ffb", + "0x8", + "0x480680017fff8000", + "0x0", + "0x480680017fff8000", + "0x0", + "0x480a7ffd7fff8000", + "0x208b7fff7fff7ffe", + "0x480680017fff8000", + "0x1", + "0x480a7ffc7fff8000", + "0x480a7ffd7fff8000", + "0x208b7fff7fff7ffe" + ], + "hints": [ + [ + 0, + [ + { + "TestLessThanOrEqual": { + "lhs": { + "Immediate": "0x280a" + }, + "rhs": { + "Deref": { + "register": "FP", + "offset": -6 + } + }, + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 48, + [ + { + "AllocSegment": { + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 67, + [ + { + "TestLessThanOrEqual": { + "lhs": { + "Immediate": "0x0" + }, + "rhs": { + "Deref": { + "register": "AP", + "offset": -29 + } + }, + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 88, + [ + { + "AllocSegment": { + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 106, + [ + { + "AllocSegment": { + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 127, + [ + { + "AllocSegment": { + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 141, + [ + { + "AllocSegment": { + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 156, + [ + { + "TestLessThanOrEqual": { + "lhs": { + "Immediate": "0x2936" + }, + "rhs": { + "Deref": { + "register": "FP", + "offset": -6 + } + }, + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 175, + [ + { + "AllocSegment": { + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 194, + [ + { + "TestLessThanOrEqual": { + "lhs": { + "Immediate": "0x0" + }, + "rhs": { + "Deref": { + "register": "AP", + "offset": -8 + } + }, + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 214, + [ + { + "AllocSegment": { + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 234, + [ + { + "AllocSegment": { + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 249, + [ + { + "AllocSegment": { + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 264, + [ + { + "TestLessThanOrEqual": { + "lhs": { + "Immediate": "0x26de" + }, + "rhs": { + "Deref": { + "register": "FP", + "offset": -6 + } + }, + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 312, + [ + { + "AllocSegment": { + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 331, + [ + { + "TestLessThanOrEqual": { + "lhs": { + "Immediate": "0x0" + }, + "rhs": { + "Deref": { + "register": "AP", + "offset": -29 + } + }, + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 352, + [ + { + "AllocSegment": { + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 370, + [ + { + "AllocSegment": { + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 391, + [ + { + "AllocSegment": { + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 405, + [ + { + "AllocSegment": { + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 420, + [ + { + "TestLessThan": { + "lhs": { + "Deref": { + "register": "FP", + "offset": -3 + } + }, + "rhs": { + "Immediate": "0x100" + }, + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 424, + [ + { + "LinearSplit": { + "value": { + "Deref": { + "register": "AP", + "offset": -1 + } + }, + "scalar": { + "Immediate": "0x8000000000000110000000000000000" + }, + "max_x": { + "Immediate": "0xfffffffffffffffffffffffffffffffe" + }, + "x": { + "register": "AP", + "offset": 0 + }, + "y": { + "register": "AP", + "offset": 1 + } + } + } + ] + ], + [ + 466, + [ + { + "AllocSegment": { + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 560, + [ + { + "SystemCall": { + "system": { + "Deref": { + "register": "FP", + "offset": -4 + } + } + } + } + ] + ], + [ + 666, + [ + { + "SystemCall": { + "system": { + "Deref": { + "register": "FP", + "offset": -5 + } + } + } + } + ] + ], + [ + 691, + [ + { + "AllocSegment": { + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ] + ], + "entry_points_by_type": { + "EXTERNAL": [ + { + "selector": "0x3147e009aa1d3b7827f0cf9ce80b10dd02b119d549eb0a2627600662354eba", + "offset": 264, + "builtins": [ + "range_check" + ] + }, + { + "selector": "0x10b7e63d3ca05c9baffd985d3e1c3858d4dbf0759f066be0eaddc5d71c2cab5", + "offset": 0, + "builtins": [ + "range_check" + ] + }, + { + "selector": "0x3370263ab53343580e77063a719a5865004caff7f367ec136a6cdd34b6786ca", + "offset": 156, + "builtins": [ + "range_check" + ] + } + ], + "L1_HANDLER": [], + "CONSTRUCTOR": [] + } +} \ No newline at end of file diff --git a/__mocks__/cairo/testReject/test_reject.sierra.json b/__mocks__/cairo/testReject/test_reject.sierra.json new file mode 100644 index 000000000..0a660d8f2 --- /dev/null +++ b/__mocks__/cairo/testReject/test_reject.sierra.json @@ -0,0 +1,522 @@ +{ + "sierra_program": [ + "0x1", + "0x3", + "0x0", + "0x2", + "0x3", + "0x1", + "0xf7", + "0x9", + "0x22", + "0x52616e6765436865636b", + "0x800000000000000100000000000000000000000000000000", + "0x7538", + "0x800000000000000700000000000000000000000000000000", + "0x4172726179", + "0x800000000000000300000000000000000000000000000001", + "0x1", + "0x1e", + "0x456e756d", + "0x800000000000000300000000000000000000000000000003", + "0x0", + "0x3baae81d8b68311d843a3db861802028fc5b88bca4c37f5b121cabb0dfa12ac", + "0x2", + "0x537472756374", + "0x800000000000000300000000000000000000000000000002", + "0x2ee1e2b1b89f8c495f200e4956278a4d47395fe262f27b52e5865c9524c08c3", + "0x3", + "0x800000000000000f00000000000000000000000000000001", + "0x16a4c8d7c05909052238a862d8cc3e7975bf05a07b3a69c6b28951083a6d672", + "0x5", + "0xe82f28be99fa1cbe00b18388da8bfdec908ee3097fda05d02792092433ad35", + "0x4", + "0x6", + "0x800000000000000f00000000000000000000000000000002", + "0x8", + "0xcc5e86243f861d2d64b08c35db21013e773ac5cf10097946fe0011304886d5", + "0x9", + "0x101dc0399934cc08fa0d6f6f2daead4e4a38cabeea1c743e1fc28d2d6e58e99", + "0x53746f7261676541646472657373", + "0x53746f726167654261736541646472657373", + "0x184009a5fcc292e1ed4484e514bbc14dc406991056b6c8655cca301862f4945", + "0x800000000000000f00000000000000000000000000000003", + "0xe", + "0x2224364ac687efc6304ee71e22221e921eecedca58983b65abdbf8bbc94a463", + "0xf", + "0x800000000000000700000000000000000000000000000002", + "0x2360086d8de14207bc705f7c51c3fc6bb6de6b826f1a4576e4db739d8b5edaf", + "0x11", + "0x536e617073686f74", + "0x800000000000000700000000000000000000000000000001", + "0x1baeba72e79e9db2587cf44fedb2f3700b2075a5e8e39a562584862c4b71f62", + "0x13", + "0x14", + "0x318d35396a9bff14fc14d962a8b7bc49a3583773cded0b4b1b4e6b711f80f05", + "0x16", + "0x310bef514f21b308fcb4a1f62947660dca3336ac34dce277613300e1d6715cb", + "0x17", + "0x4275696c74696e436f737473", + "0x53797374656d", + "0x9931c641b913035ae674b400b61a51476d506bbe8bba2ff8a6272790aba9e6", + "0x15", + "0x753332", + "0x800000000000000700000000000000000000000000000003", + "0x3b9ddf97bd58cc7301a2107c3eabad82196f38221c880cd3645d07c3aac1422", + "0x66656c74323532", + "0x426f78", + "0x29d7d57c04a880978e7b3689f6218e507f3be17588744b58dc17762447ad0e7", + "0x1f", + "0x4761734275696c74696e", + "0x7e", + "0x7265766f6b655f61705f747261636b696e67", + "0x77697468647261775f676173", + "0x6272616e63685f616c69676e", + "0x7374727563745f6465636f6e737472756374", + "0x656e61626c655f61705f747261636b696e67", + "0x73746f72655f74656d70", + "0x61727261795f736e617073686f745f706f705f66726f6e74", + "0x656e756d5f696e6974", + "0x20", + "0x6a756d70", + "0x7374727563745f636f6e737472756374", + "0x656e756d5f6d61746368", + "0x756e626f78", + "0x72656e616d65", + "0x66756e6374696f6e5f63616c6c", + "0x1d", + "0x61727261795f6c656e", + "0x736e617073686f745f74616b65", + "0x1c", + "0x64726f70", + "0x7533325f636f6e7374", + "0x7533325f6571", + "0x64697361626c655f61705f747261636b696e67", + "0x61727261795f6e6577", + "0x66656c743235325f636f6e7374", + "0x496e70757420746f6f206c6f6e6720666f7220617267756d656e7473", + "0x61727261795f617070656e64", + "0x1b", + "0x21", + "0x1a", + "0x6765745f6275696c74696e5f636f737473", + "0x19", + "0x77697468647261775f6761735f616c6c", + "0x18", + "0x4f7574206f6620676173", + "0x4661696c656420746f20646573657269616c697a6520706172616d202331", + "0x12", + "0x75385f746f5f66656c74323532", + "0x75385f7472795f66726f6d5f66656c74323532", + "0x75385f636f6e7374", + "0x64", + "0x75385f6571", + "0x466174616c", + "0x7", + "0x10", + "0x73746f726167655f626173655f616464726573735f636f6e7374", + "0x7ebcc807b5c7e19f245995a55aed6f46f5f582f476a886b91b834b0ddf5854", + "0x73746f726167655f616464726573735f66726f6d5f62617365", + "0xc", + "0x73746f726167655f77726974655f73797363616c6c", + "0xb", + "0xa", + "0xd", + "0x73746f726167655f726561645f73797363616c6c", + "0x53746f72655538202d206e6f6e207538", + "0x26e", + "0xffffffffffffffff", + "0x7d", + "0x6c", + "0x67", + "0x23", + "0x24", + "0x36", + "0x25", + "0x26", + "0x27", + "0x28", + "0x29", + "0x2a", + "0x2b", + "0x2c", + "0x2d", + "0x2e", + "0x2f", + "0x30", + "0x31", + "0x59", + "0x32", + "0x33", + "0x34", + "0x35", + "0x39", + "0x3a", + "0x3b", + "0x3c", + "0x37", + "0x38", + "0x3d", + "0x52", + "0x3e", + "0x3f", + "0x40", + "0x41", + "0x42", + "0x43", + "0x44", + "0x45", + "0x46", + "0x47", + "0x48", + "0x49", + "0x4a", + "0x4b", + "0x4c", + "0x4d", + "0x4e", + "0x4f", + "0x50", + "0x51", + "0x53", + "0x54", + "0x55", + "0x56", + "0x57", + "0x58", + "0x70", + "0x5a", + "0x5b", + "0x5c", + "0x5d", + "0x5e", + "0x5f", + "0x60", + "0x61", + "0x62", + "0x63", + "0x65", + "0x66", + "0x68", + "0x69", + "0x6a", + "0x6b", + "0xdc", + "0xa7", + "0xcf", + "0xc8", + "0x167", + "0xf6", + "0xfb", + "0x156", + "0x151", + "0x120", + "0x143", + "0x13c", + "0x15a", + "0x17b", + "0x180", + "0x198", + "0x1ab", + "0x1c1", + "0x1da", + "0x1f0", + "0x1f5", + "0x200", + "0x226", + "0x6d", + "0x6e", + "0x6f", + "0x21f", + "0x233", + "0x71", + "0x72", + "0x73", + "0x74", + "0x75", + "0x259", + "0x24b", + "0x76", + "0x77", + "0x78", + "0x79", + "0x7a", + "0x7b", + "0x7c", + "0x268", + "0x8b", + "0xea", + "0x175", + "0x183", + "0x1b1", + "0x1c8", + "0x1e0", + "0x207", + "0x22d", + "0x239", + "0x262", + "0x1642", + "0x100b0a0e130b120e1107100b0f0e0d0707070c0b0a09080706050403020100", + "0x917071b071a0b0a091907100b180e100b120e17071607150b0a090d071407", + "0x17072307220b0a0919072107100b200e1f0b120e041e041d0d0719071c0b0a", + "0xe2b07100b240e2a07290b240e0d07282717072607250b0a090707100b240e", + "0x3307320b0a090231043017072f072e0b0a0919072d07100b200e21072c0b18", + "0xb3d3c023b19073a07390b350908072838043719070707360b350904341707", + "0x707422a0707420b0d45070d44080707430b0707420b412b0707400b3f0b3e", + "0x74b080707420807074a0807074945070748070d45070d44190707470b4645", + "0x424f07074a0b0d07514f0707504f07074e0807074d2b0707474c0707481111", + "0x170707471407074708070757560d075508070754070707500b530b524f0707", + "0x47210707470b5d5c0707420b5b580707425a07074259070742070d58070d44", + "0xd0707500d07074e2f0707505e0707481611074b070707422d0707422d0707", + "0x4e2b070750600d07552a070750190707505f0d07550b0d58070d4433070747", + "0x74b0b620707074a0707074e26070740610707481411074b2d0707502d0707", + "0xd07644c07074a0b07074a070d4c070d444c0707420b0d4c070d440b631711", + "0x7486811074b210707422d0707405e070742070d5e070d44670d07550b6665", + "0x420b0d61070d44260707471911074b0b0d5e070d442f070747230707406907", + "0xd440b6e6d070742210707502107074e0b6c6b0d076a070d61070d44610707", + "0x471b070740700707481b11074b6f07074a070d6f070d446f0707420b0d6f07", + "0x680707487011074b71070742070d69070d44690707420b0d69070d44230707", + "0x44700707420b0d70070d441b0707476f0707486f11074b1107074216070740", + "0x730d0755680707420b0d68070d44160707470b0d11070d440b72070d70070d", + "0xd750d070b0d070b0b75070b0b0b7411070748070d11070d44070d68070d44", + "0x71607140b0b75070b160b190775071107110b0b75070b0d0b68170d761416", + "0x190b6d0775077007680b0b75070b0d0b6f076d701b0d750d1907170b160775", + "0x75070b6f0b0b75070b0d0b0b26070b700b210775076d071b0b710775071b07", + "0xd2107710b2107750769071b0b710775076f07190b6907750723076d0b2307", + "0x7140b2b0775072a07230b2a0775072607210b0b75070b0d0b610777260775", + "0x5c07750d2d07610b2d330d75075e2f0d260b5e0775072b07690b2f07750716", + "0x75074f07190b4f0775075807110b5807750771072a0b0b75070b0d0b5a0778", + "0x75070b2f0b0b750708072d0b3a080d75074c07330b4c0775074f072b0b4f07", + "0x700075e0b790775073a075e0b0b750759072d0b00590d75074507330b4507", + "0x70b580b0b75070b0d0b0b7b0b750d7a790d5a0b7907750779075c0b7a0775", + "0x7d0775077d07690b7d0775070b080b7c0775070b4c0b0b75075c074f0b0b75", + "0x75078007000b800775077e7f0d590b7f0775070b450b7e0775077d7c0d3a0b", + "0x781077c0b840775070d077a0b830775071407790b820775073307140b8107", + "0x77e0b860775070b7d0b0b75070b580b0b75070b0d0b858483821607850775", + "0x75070b800b0b75070b0d0b8b8a0d8988870d750d861433117f0b8607750786", + "0x78d07820b8f0775070d077a0b8e0775078807790b8d0775078c07810b8c07", + "0x775078707140b93927b11750791908f8e16840b910775075c07830b900775", + "0x775070b4c0b0b75079407860b0b75070b0d0b9607959407750d9307850b87", + "0x75079a078a0b9a07750799072a0b0b75079807880b99980d75079707870b97", + "0x792077a0b9e0775077b07790b9d0775078707140b9c0775079b078b0b9b07", + "0xa10775079607000b0b75070b0d0ba09f9e9d1607a00775079c077c0b9f0775", + "0x77507a1077c0ba407750792077a0ba30775077b07790ba20775078707140b", + "0x70b8c0ba60775070b4c0b0b75075c074f0b0b75070b0d0ba5a4a3a21607a5", + "0xa90d590ba90775070b450ba8077507a7a60d3a0ba7077507a707690ba70775", + "0x7a0bac0775078b07790bab0775078a07140baa0775079507000b95077507a8", + "0x75a078d0b0b75070b0d0baeadacab1607ae077507aa077c0bad0775070d07", + "0x8d0b0b75070b0d0b0bb0070b700baf0775073307140b0b750771077b0b0b75", + "0x75070b4c0b0b75070b580baf0775071607140b0b750771077b0b0b75076107", + "0x75070b450bb2077507b1890d3a0bb1077507b107690bb10775070b920b8907", + "0x1407790bb6077507af07140bb5077507b407000bb4077507b2b30d590bb307", + "0x75070b0d0bb9b8b7b61607b9077507b5077c0bb80775070d077a0bb7077507", + "0xb650775076507690b650775070b8c0bba0775070b4c0b0b75071107930b0b", + "0x775077807000b78077507bbbc0d590bbc0775070b450bbb07750765ba0d3a", + "0x7507bd077c0bc00775070d077a0bbf0775076807790bbe0775071707140bbd", + "0xb0d0b68170dc114160d750d070b0d070b0b75070b0b0b77c0bfbe16077707", + "0x72d0b6f700d75071b07330b1b07750719072b0b190775071107110b0b7507", + "0x6f075e0b0b750771072d0b21710d75076d07330b6d0775070b2f0b0b750770", + "0xd5a0b160775071607140b2307750723075c0b6907750721075e0b23077507", + "0x6107690b610775070b080b260775070b4c0b0b75070b0d0b0bc20b750d6923", + "0xb330775072a2b0d590b2b0775070b450b2a07750761260d3a0b61077507", + "0xb5c0775070d077a0b5e0775071407790b2f0775071607140b2d0775073307", + "0x758077e0b580775070b7d0b0b75070b0d0b5a5c5e2f16075a0775072d077c", + "0x450775070b800b0b75070b0d0b3a080dc34c4f0d750d581416117f0b580775", + "0x775074f07140b0b750700078f0b79000d750759078e0b590775074507810b", + "0x81807f16900b820775077907820b810775070d077a0b800775074c07790b7f", + "0x775070b4c0b0b75070b0d0b8407c48307750d7e07910b7e7d7c7a16750782", + "0x75078807970b0b750787074f0b88870d75078607960b860775078307940b85", + "0x7880b7b8d0d75078c07870b8c0775078b850d3a0b8b0775078a07980b8a07", + "0x7140b8e07750793078b0b9307750792078a0b920775077b072a0b0b75078d", + "0x1607940775078e077c0b910775077d077a0b900775077c07790b8f0775077a", + "0x77c07790b970775077a07140b960775078407000b0b75070b0d0b9491908f", + "0xb75070b0d0b9a99989716079a07750796077c0b990775077d077a0b980775", + "0x9d0775079c9b0d3a0b9c0775079c07690b9c0775070b8c0b9b0775070b4c0b", + "0x775070807140ba00775079f07000b9f0775079d9e0d590b9e0775070b450b", + "0xa4a3a2a11607a4077507a0077c0ba30775070d077a0ba20775073a07790ba1", + "0xa607690ba60775070b8c0ba50775070b4c0b0b75071107930b0b75070b0d0b", + "0xba9077507a7a80d590ba80775070b450ba7077507a6a50d3a0ba6077507", + "0xbac0775070d077a0bab0775076807790baa0775071707140b95077507a907", + "0xdc514160d750d070b0d070b0b75070b0b0badacabaa1607ad07750795077c", + "0xb160775071607140b0b75070b160b190775071107110b0b75070b0d0b6817", + "0x75071b07190b6d0775077007680b0b75070b0d0b6f07c6701b0d750d190717", + "0x6d0b230775070b6f0b0b75070b0d0b0bc7070b700b210775076d071b0b7107", + "0xc82607750d2107710b2107750769071b0b710775076f07190b690775072307", + "0x775071607140b2b0775072a07230b2a0775072607210b0b75070b0d0b6107", + "0xb5a07c95c07750d2d07610b2d330d75075e2f0d260b5e0775072b07690b2f", + "0x2b0b4f0775074f07190b4f0775075807110b5807750771072a0b0b75070b0d", + "0x330b450775070b2f0b0b750708072d0b3a080d75074c07330b4c0775074f07", + "0xb7a07750700075e0b790775073a075e0b0b750759072d0b00590d75074507", + "0x4f0b0b75070b580b0b75070b0d0b0bca0b750d7a790d5a0b7907750779075c", + "0x7c0d3a0b7d0775077d07690b7d0775070b080b7c0775070b4c0b0b75075c07", + "0x140b810775078007000b800775077e7f0d590b7f0775070b450b7e0775077d", + "0x78507750781077c0b840775070d077a0b830775071407790b820775073307", + "0x7750786077e0b860775070b7d0b0b75070b580b0b75070b0d0b8584838216", + "0x810b8c0775070b800b0b75070b0d0b8b8a0dcb88870d750d861433117f0b86", + "0xb900775078d07820b8f0775070d077a0b8e0775078807790b8d0775078c07", + "0x7850b870775078707140b93927b11750791908f8e16990b910775075c0783", + "0x7870b970775070b4c0b0b75079407860b0b75070b0d0b9607cc9407750d93", + "0x8b0b9b0775079a078a0b9a07750799072a0b0b75079807880b99980d750797", + "0xb9f07750792077a0b9e0775077b07790b9d0775078707140b9c0775079b07", + "0x8707140ba10775079607000b0b75070b0d0ba09f9e9d1607a00775079c077c", + "0xa21607a5077507a1077c0ba407750792077a0ba30775077b07790ba2077507", + "0xba70775070b8c0ba60775070b4c0b0b75075c074f0b0b75070b0d0ba5a4a3", + "0x77507a8a90d590ba90775070b450ba8077507a7a60d3a0ba7077507a70769", + "0x75070d077a0bac0775078b07790bab0775078a07140baa0775079507000b95", + "0x7b0b0b75075a078d0b0b75070b0d0baeadacab1607ae077507aa077c0bad07", + "0x750761078d0b0b75070b0d0b0bcd070b700baf0775073307140b0b75077107", + "0x920b890775070b4c0b0b75070b580baf0775071607140b0b750771077b0b0b", + "0x590bb30775070b450bb2077507b1890d3a0bb1077507b107690bb10775070b", + "0xb70775071407790bb6077507af07140bb5077507b407000bb4077507b2b30d", + "0x7930b0b75070b0d0bb9b8b7b61607b9077507b5077c0bb80775070d077a0b", + "0x65ba0d3a0b650775076507690b650775070b8c0bba0775070b4c0b0b750711", + "0x7140bbd0775077807000b78077507bbbc0d590bbc0775070b450bbb077507", + "0x160777077507bd077c0bc00775070d077a0bbf0775076807790bbe07750717", + "0x1407750711079b0b0b75070b0d0b1607ce110d0d750d070b0d9a0b77c0bfbe", + "0xb6f0b0b75070b0d0b0bcf070b700b6807750714079c0b170775070d07140b", + "0x79e0b680775071b079c0b170775071607140b1b07750719079d0b19077507", + "0x75070ba00b14160d75071107960b6f700d076f07750768079f0b7007750717", + "0x71907970b1b0775071407970b0b750768074f0b19680d75071707960b1707", + "0x70d078f0b0b750716074f0b0b75070b0d0b0bd00b750d701b0da10b700775", + "0x75076d6f0d3a0b6d0775076d07690b6d0775070ba20b6f0775070b4c0b0b75", + "0x70b07790b690775072307a30b2307750771210d590b210775070b450b7107", + "0xb0b75070b0d0b2a612611072a0775076907a40b6107750707077a0b260775", + "0x5a0775072b07a60b5c07750707077a0b5e0775070b07790b2b0775070d07a5", + "0x7d14f07750d2f07a80b2f2d33117507585a5c5e16a70b580775071607830b", + "0xb450775070b6f0b0b75073a078d0b3a080d75074f07a90b0b75070b0d0b4c", + "0x775073307790b790775070007aa0b0007750745590d950b59077507080781", + "0x7a30b0b75070b0d0b7d7c7a11077d0775077907a40b7c0775072d077a0b7a", + "0x1107810775077e07a40b800775072d077a0b7f0775073307790b7e0775074c", + "0xd077a0b700775070707790b1b0775070b07140b160775071107a50b81807f", + "0xd1907910b196817141675076d6f701b16ab0b6d0775071607a60b6f077507", + "0x7ad0b690775072307ac0b230775077107940b0b75070b0d0b2107d2710775", + "0xae0b2b07750768077a0b2a0775071707790b610775071407140b2607750769", + "0x71407140b2d0775072107af0b0b75070b0d0b332b2a611607330775072607", + "0x5e2f16075a0775072d07ae0b5c07750768077a0b5e0775071707790b2f0775", + "0x71607a60b1b07750707077a0b190775070b07790b160775070d07a50b5a5c", + "0x7750d6807a80b6817141175076f701b1916a70b6f0775071107830b700775", + "0x75070b6f0b0b750723078d0b23210d75076d07a90b0b75070b0d0b7107d36d", + "0x1407790b2a0775076107aa0b6107750769260d950b260775072107810b6907", + "0xb75070b0d0b2d332b11072d0775072a07a40b3307750717077a0b2b077507", + "0x775072f07a40b5c07750717077a0b5e0775071407790b2f0775077107a30b", + "0x2f0b170775071607b10b140775071107980b160775070b890b5a5c5e11075a", + "0xb40b6807750768075c0b0b75071b07b30b1b190d75070d07b20b680775070b", + "0xb0b75070b0d0b21716d11d46f700d750d141768070b14b50b170775071707", + "0xb610775076f077a0b260775077007790b690775072307b60b230775070b6f", + "0x6d07790b2b0775072107b80b0b75070b0d0b0bd5070b700b2a0775076907b7", + "0x7ba0b2d0775072a07b90b2a0775072b07b70b6107750771077a0b26077507", + "0xb5c0775072f07bb0b0b75070b0d0b5e07d62f07750d3307650b330775072d", + "0x7750761077a0b4f0775072607790b580775075a07780b5a0775075c190dbc", + "0x5e07be0b0b75071907b30b0b75070b0d0b084c4f1107080775075807bd0b4c", + "0x451107000775073a07bd0b5907750761077a0b450775072607790b3a077507", + "0x700775070b07140b140775070b2f0b160775070b890b0b75071107b30b0059", + "0x775071607bf0b7107750714075c0b6d0775070d077a0b6f0775070707790b", + "0x70b0d0b6907d72307750d1b07770b1b19681716750721716d6f7014c00b21", + "0xd6107910b610775072a07da0b2a0775072607d90b260775072307d80b0b75", + "0x7ad0b2f0775072d07ac0b2d0775072b07940b0b75070b0d0b3307db2b0775", + "0xae0b5807750719077a0b5a0775076807790b5c0775071707140b5e0775072f", + "0x71707140b4c0775073307af0b0b75070b0d0b4f585a5c16074f0775075e07", + "0x3a081607590775074c07ae0b4507750719077a0b3a0775076807790b080775", + "0x775076807790b790775071707140b000775076907af0b0b75070b0d0b5945", + "0x707750d0b07b00b7d7c7a7916077d0775070007ae0b7c07750719077a0b7a", + "0x75071607df0b160775071107de0b110775070707dd0b0b75070b0d0b0d07dc", + "0x6807e00b680775070d170d590b170775070b450b0b75070b0d0b1407071407", + "0xd14110d0716e10b140775071607b10b1b07071b0775071907df0b19077507", + "0x775071907690b210775070b07140b0b75070b0d0b6f701b11e21968171175", + "0x7107610b6807750768077a0b170775071707790b716d0d750723210d260b23", + "0xe60b2a0775076107e50b610775076907e40b0b75070b0d0b2607e36907750d", + "0xb2f07750768077a0b2d0775071707790b330775076d07140b2b0775072a07", + "0x75070b4c0b0b750726078d0b0b75070b0d0b5e2f2d3316075e0775072b07e7", + "0x75070b450b580775075a5c0d3a0b5a0775075a07690b5a0775070be80b5c07", + "0x1707790b3a0775076d07140b080775074c07e90b4c077507584f0d590b4f07", + "0x75070b0d0b0059453a1607000775070807e70b5907750768077a0b45077507", + "0x75070b07140b7c0775077a07e60b7a0775077907e50b790775076f07ea0b0b", + "0x7f7e7d1607800775077c07e70b7f07750770077a0b7e0775071b07790b7d07", + "0x71107ad0b110775070707ac0b0b75070b0d0b0d07eb0707750d0b07760b80", + "0x170d590b170775070b450b0b75070b0d0b140707140775071607ae0b160775", + "0x162b5a590b166d1b07071b0775071907ae0b190775076807af0b680775070d", + "0xb162b5a590b16ec110d070b585a590b162b5a590b160b110d070b585a590b", + "0xef110d070b5e5a5911072d5a5916ee070b4c0b0d080b0ded110d070b585a59", + "0x5916f1110d070b5e5a5911072d5a5916f0110d070b615a590b162d5a590b16", + "0x70076f07f3110d070b615a590b16215a590b16f2110d070b695a591107215a", + "0xf60b61071107f516110d070b685a590b16714f5a590b14f40b" + ], + "sierra_program_debug_info": { + "type_names": [], + "libfunc_names": [], + "user_func_names": [] + }, + "contract_class_version": "0.1.0", + "entry_points_by_type": { + "EXTERNAL": [ + { + "selector": "0x3147e009aa1d3b7827f0cf9ce80b10dd02b119d549eb0a2627600662354eba", + "function_idx": 2 + }, + { + "selector": "0x10b7e63d3ca05c9baffd985d3e1c3858d4dbf0759f066be0eaddc5d71c2cab5", + "function_idx": 0 + }, + { + "selector": "0x3370263ab53343580e77063a719a5865004caff7f367ec136a6cdd34b6786ca", + "function_idx": 1 + } + ], + "L1_HANDLER": [], + "CONSTRUCTOR": [] + }, + "abi": [ + { + "type": "impl", + "name": "TestReject", + "interface_name": "reject::reject::ITestReject" + }, + { + "type": "interface", + "name": "reject::reject::ITestReject", + "items": [ + { + "type": "function", + "name": "test_fail", + "inputs": [ + { + "name": "p1", + "type": "core::integer::u8" + } + ], + "outputs": [], + "state_mutability": "external" + }, + { + "type": "function", + "name": "get_counter", + "inputs": [], + "outputs": [ + { + "type": "core::integer::u8" + } + ], + "state_mutability": "view" + }, + { + "type": "function", + "name": "init_count", + "inputs": [ + { + "name": "p1", + "type": "core::integer::u8" + } + ], + "outputs": [], + "state_mutability": "external" + } + ] + }, + { + "type": "event", + "name": "reject::reject::MyTestReject::Event", + "kind": "enum", + "variants": [] + } + ] +} diff --git a/__tests__/config/fixtures.ts b/__tests__/config/fixtures.ts index 65bfd68f6..050879b5d 100644 --- a/__tests__/config/fixtures.ts +++ b/__tests__/config/fixtures.ts @@ -57,6 +57,8 @@ export const compiledNaming = readContractSierra('starknetId/naming/naming.sierr export const compiledNamingCasm = readContractSierraCasm('starknetId/naming/naming'); export const compiledPricing = readContractSierra('starknetId/pricing/pricing.sierra'); export const compiledPricingCasm = readContractSierraCasm('starknetId/pricing/pricing'); +export const compiledTestRejectSierra = readContractSierra('cairo/testReject/test_reject.sierra'); +export const compiledTestRejectCasm = readContractSierraCasm('cairo/testReject/test_reject'); export const compiledSidMulticall = readContractSierra('starknetId/multicall/multicall.sierra'); export const compiledSidMulticallCasm = readContractSierraCasm('starknetId/multicall/multicall'); diff --git a/__tests__/contract.test.ts b/__tests__/contract.test.ts index 19eb64348..d72db6f22 100644 --- a/__tests__/contract.test.ts +++ b/__tests__/contract.test.ts @@ -2,12 +2,12 @@ import { BigNumberish, Contract, ContractFactory, - GetTransactionReceiptResponse, ParsedEvents, RawArgs, json, shortString, stark, + SuccessfulTransactionReceiptResponse, } from '../src'; import { CallData } from '../src/utils/calldata'; import { felt, isCairo1Abi, tuple, uint256 } from '../src/utils/calldata/cairo'; @@ -795,7 +795,7 @@ describe('Complex interaction', () => { test('invoke compiled data', async () => { const result = await erc20Echo20Contract.iecho(CallData.compile(request)); const transaction = await provider.waitForTransaction(result.transaction_hash); - expect((transaction as GetTransactionReceiptResponse).execution_status).toBeDefined(); + expect((transaction as SuccessfulTransactionReceiptResponse).execution_status).toBeDefined(); }); // skip on live for performance @@ -805,19 +805,19 @@ describe('Complex interaction', () => { const result = await erc20Echo20Contract.iecho(calldata); const transaction = await provider.waitForTransaction(result.transaction_hash); - expect((transaction as GetTransactionReceiptResponse).execution_status).toBeDefined(); + expect((transaction as SuccessfulTransactionReceiptResponse).execution_status).toBeDefined(); const result1 = await erc20Echo20Contract.iecho(...args); const transaction1 = await provider.waitForTransaction(result1.transaction_hash); - expect((transaction1 as GetTransactionReceiptResponse).execution_status).toBeDefined(); + expect((transaction1 as SuccessfulTransactionReceiptResponse).execution_status).toBeDefined(); const result2 = await erc20Echo20Contract.invoke('iecho', calldata); const transaction2 = await provider.waitForTransaction(result2.transaction_hash); - expect((transaction2 as GetTransactionReceiptResponse).execution_status).toBeDefined(); + expect((transaction2 as SuccessfulTransactionReceiptResponse).execution_status).toBeDefined(); const result3 = await erc20Echo20Contract.invoke('iecho', args); const transaction3 = await provider.waitForTransaction(result3.transaction_hash); - expect((transaction3 as GetTransactionReceiptResponse).execution_status).toBeDefined(); + expect((transaction3 as SuccessfulTransactionReceiptResponse).execution_status).toBeDefined(); }); describe('speedup live tests', () => { @@ -871,7 +871,9 @@ describe('Complex interaction', () => { { formatResponse } ); const transaction = await provider.waitForTransaction(result.transaction_hash); - expect((transaction as GetTransactionReceiptResponse).execution_status).toBeDefined(); + expect( + (transaction as SuccessfulTransactionReceiptResponse).execution_status + ).toBeDefined(); }); }); diff --git a/__tests__/rpcProvider.test.ts b/__tests__/rpcProvider.test.ts index cb8024c51..a10bdcabf 100644 --- a/__tests__/rpcProvider.test.ts +++ b/__tests__/rpcProvider.test.ts @@ -8,6 +8,7 @@ import { FeeEstimate, RPC, RPC06, + ReceiptTx, RpcProvider, TransactionExecutionStatus, stark, @@ -166,12 +167,12 @@ describeIfRpc('RPCProvider', () => { test('successful - default', async () => { transactionStatusSpy.mockResolvedValueOnce(response.successful); - await expect(rpcProvider.waitForTransaction(0)).resolves.toBe(receipt); + await expect(rpcProvider.waitForTransaction(0)).resolves.toBeInstanceOf(ReceiptTx); }); test('reverted - default', async () => { transactionStatusSpy.mockResolvedValueOnce(response.reverted); - await expect(rpcProvider.waitForTransaction(0)).resolves.toBe(receipt); + await expect(rpcProvider.waitForTransaction(0)).resolves.toBeInstanceOf(ReceiptTx); }); test('rejected - default', async () => { diff --git a/__tests__/transactionReceipt.test.ts b/__tests__/transactionReceipt.test.ts new file mode 100644 index 000000000..98572cfc1 --- /dev/null +++ b/__tests__/transactionReceipt.test.ts @@ -0,0 +1,104 @@ +import { + Call, + Contract, + DeclareDeployUDCResponse, + RevertedTransactionReceiptResponse, + SuccessfulTransactionReceiptResponse, + TransactionExecutionStatus, +} from '../src'; +import { + compiledTestRejectCasm, + compiledTestRejectSierra, + getTestAccount, + getTestProvider, +} from './config/fixtures'; + +describe('Transaction receipt utility', () => { + const provider = getTestProvider(); + const account = getTestAccount(provider); + + let dd: DeclareDeployUDCResponse; + let contract: Contract; + + beforeAll(async () => { + dd = await account.declareAndDeploy({ + contract: compiledTestRejectSierra, + casm: compiledTestRejectCasm, + }); + await provider.waitForTransaction(dd.deploy.transaction_hash); + contract = new Contract(compiledTestRejectSierra.abi, dd.deploy.contract_address, account); + contract.connect(account); + }); + + test('test for Success variant', async () => { + const myCall: Call = contract.populate('test_fail', { p1: 100 }); + const res = await account.execute(myCall, undefined, { maxFee: 1 * 10 ** 15 }); // maxFee needed to not throw error in getEstimateFee + const txR = await provider.waitForTransaction(res.transaction_hash); + expect(txR.value).toHaveProperty('execution_status', TransactionExecutionStatus.SUCCEEDED); + expect(txR.statusReceipt).toBe('success'); + expect(txR.isSuccess()).toBe(true); + expect(txR.isRejected()).toBe(false); + expect(txR.isReverted()).toBe(false); + expect(txR.isError()).toBe(false); + let isSuccess: boolean = false; + txR.match({ + success: () => { + isSuccess = true; + }, + _: () => { + isSuccess = false; + }, + }); + expect(isSuccess).toBe(true); + }); + + test('test for Reverted variant', async () => { + const myCall: Call = contract.populate('test_fail', { p1: 10 }); // reverted if not 100 + const res = await account.execute(myCall, undefined, { maxFee: 1 * 10 ** 15 }); // maxFee needed to not throw error in getEstimateFee + const txR = await provider.waitForTransaction(res.transaction_hash); + expect(txR.value).toHaveProperty('execution_status', TransactionExecutionStatus.REVERTED); + expect(txR.statusReceipt).toBe('reverted'); + expect(txR.isSuccess()).toBe(false); + expect(txR.isRejected()).toBe(false); + expect(txR.isReverted()).toBe(true); + expect(txR.isError()).toBe(false); + let isReverted: boolean = false; + txR.match({ + reverted: (_resp: RevertedTransactionReceiptResponse) => { + isReverted = true; + }, + _: () => { + isReverted = false; + }, + }); + expect(isReverted).toBe(true); + }); + + test('test for deploy Success variant', async () => { + const res = await account.deployContract( + { classHash: dd.declare.class_hash }, + { maxFee: 1 * 10 ** 15 } + ); // maxFee needed to not throw error in getEstimateFee + const txR = await provider.waitForTransaction(res.transaction_hash); + expect(txR.value).toHaveProperty('execution_status', TransactionExecutionStatus.SUCCEEDED); + expect(txR.statusReceipt).toBe('success'); + expect(txR.isSuccess()).toBe(true); + expect(txR.isRejected()).toBe(false); + expect(txR.isReverted()).toBe(false); + expect(txR.isError()).toBe(false); + let isSuccess: boolean = false; + txR.match({ + success: (_resp: SuccessfulTransactionReceiptResponse) => { + isSuccess = true; + }, + _: () => { + isSuccess = false; + }, + }); + expect(isSuccess).toBe(true); + }); + + // NOTE: + // no rejected test, impossible to trigger 'rejected' from a node/devnet. + // no declare test due to slow process (result is very similar to Invoke) +}); diff --git a/src/contract/default.ts b/src/contract/default.ts index b18139df8..1cac159d8 100644 --- a/src/contract/default.ts +++ b/src/contract/default.ts @@ -15,7 +15,6 @@ import { ContractOptions, EstimateFeeResponse, FunctionAbi, - GetTransactionReceiptResponse, InvokeFunctionResponse, InvokeOptions, InvokeTransactionReceiptResponse, @@ -31,6 +30,7 @@ import { createAbiParser } from '../utils/calldata/parser'; import { getAbiEvents, parseEvents as parseRawEvents } from '../utils/events/index'; import { cleanHex } from '../utils/num'; import { ContractInterface } from './interface'; +import type { GetTransactionReceiptResponse } from '../utils/transactionReceipt'; export type TypedContractV2 = AbiWanTypedContract & Contract; diff --git a/src/contract/interface.ts b/src/contract/interface.ts index 1b3a56fb7..bab526be3 100644 --- a/src/contract/interface.ts +++ b/src/contract/interface.ts @@ -13,7 +13,6 @@ import { ContractFunction, ContractVersion, EstimateFeeResponse, - GetTransactionReceiptResponse, Invocation, InvokeFunctionResponse, InvokeOptions, @@ -25,6 +24,7 @@ import { import { CairoCustomEnum } from '../utils/calldata/enum/CairoCustomEnum'; import { CairoOption } from '../utils/calldata/enum/CairoOption'; import { CairoResult } from '../utils/calldata/enum/CairoResult'; +import type { GetTransactionReceiptResponse } from '../utils/transactionReceipt'; declare module 'abi-wan-kanabi' { export interface Config { diff --git a/src/index.ts b/src/index.ts index ec85e525d..52bacc533 100644 --- a/src/index.ts +++ b/src/index.ts @@ -39,6 +39,7 @@ export * from './utils/calldata'; export * from './utils/calldata/enum'; export * from './utils/contract'; export * from './utils/events'; +export * from './utils/transactionReceipt'; /** * Deprecated diff --git a/src/provider/interface.ts b/src/provider/interface.ts index b9026ab91..4875211bf 100644 --- a/src/provider/interface.ts +++ b/src/provider/interface.ts @@ -17,7 +17,6 @@ import type { EstimateFeeResponse, EstimateFeeResponseBulk, GetBlockResponse, - GetTransactionReceiptResponse, GetTransactionResponse, Invocation, InvocationsDetailsWithNonce, @@ -32,6 +31,7 @@ import type { getSimulateTransactionOptions, waitForTransactionOptions, } from '../types'; +import type { GetTransactionReceiptResponse } from '../utils/transactionReceipt'; export abstract class ProviderInterface { public abstract channel: RPC07.RpcChannel | RPC06.RpcChannel; diff --git a/src/provider/rpc.ts b/src/provider/rpc.ts index 0e3fa6970..023d9bb82 100644 --- a/src/provider/rpc.ts +++ b/src/provider/rpc.ts @@ -25,10 +25,12 @@ import { getEstimateFeeBulkOptions, getSimulateTransactionOptions, waitForTransactionOptions, + GetTransactionReceiptResponseWoHelper, } from '../types'; import { getAbiContractVersion } from '../utils/calldata/cairo'; import { isSierra } from '../utils/contract'; import { RPCResponseParser } from '../utils/responseParser/rpc'; +import { ReceiptTx, GetTransactionReceiptResponse } from '../utils/transactionReceipt'; export class RpcProvider implements ProviderInterface { private responseParser: RPCResponseParser; @@ -147,10 +149,11 @@ export class RpcProvider implements ProviderInterface { return this.channel.getTransactionByBlockIdAndIndex(blockIdentifier, index); } - public async getTransactionReceipt(txHash: BigNumberish) { - return this.channel - .getTransactionReceipt(txHash) - .then(this.responseParser.parseTransactionReceipt); + public async getTransactionReceipt(txHash: BigNumberish): Promise { + const txReceiptWoHelper = await this.channel.getTransactionReceipt(txHash); + const txReceiptWoHelperModified: GetTransactionReceiptResponseWoHelper = + this.responseParser.parseTransactionReceipt(txReceiptWoHelper); + return new ReceiptTx(txReceiptWoHelperModified) as GetTransactionReceiptResponse; } public async getTransactionTrace(txHash: BigNumberish) { @@ -181,8 +184,15 @@ export class RpcProvider implements ProviderInterface { .then((r) => this.responseParser.parseSimulateTransactionResponse(r)); } - public async waitForTransaction(txHash: BigNumberish, options?: waitForTransactionOptions) { - return this.channel.waitForTransaction(txHash, options); + public async waitForTransaction( + txHash: BigNumberish, + options?: waitForTransactionOptions + ): Promise { + const receiptWoHelper = (await this.channel.waitForTransaction( + txHash, + options + )) as GetTransactionReceiptResponseWoHelper; + return new ReceiptTx(receiptWoHelper) as GetTransactionReceiptResponse; } public async getStorageAt( diff --git a/src/types/index.ts b/src/types/index.ts index a096ffccc..37c03d8f9 100644 --- a/src/types/index.ts +++ b/src/types/index.ts @@ -6,5 +6,6 @@ export * from './provider'; export * from './signer'; export * from './typedData'; export * from './cairoEnum'; +export * from './transactionReceipt'; export * as RPC from './api'; diff --git a/src/types/provider/response.ts b/src/types/provider/response.ts index 6be225614..70c09adf9 100644 --- a/src/types/provider/response.ts +++ b/src/types/provider/response.ts @@ -3,7 +3,15 @@ * Intersection (sequencer response ∩ (∪ rpc responses)) */ -import { CompiledSierra, LegacyContractClass } from '../lib'; +import { + CompiledSierra, + LegacyContractClass, + TransactionExecutionStatus, + TransactionFinalityStatus, + TransactionType, + TransactionStatus, + BlockNumber, +} from '../lib'; import { BLOCK_HASH, BLOCK_NUMBER, @@ -24,8 +32,6 @@ import { TXN_HASH, DeclaredTransaction, InvokedTransaction, - PendingReceipt, - Receipt, ResourceBounds, SimulateTransaction, TransactionWithHash, @@ -58,9 +64,45 @@ export type Block = { transactions: TXN_HASH[]; }; -export type GetTransactionResponse = TransactionWithHash; +export interface MessageToL1 { + to_address: string; + payload: Array; +} + +export type RevertedTransactionReceiptResponse = { + type?: TransactionType | any; // RPC only // any due to RPC Spec issue + execution_status: TransactionExecutionStatus.REVERTED | any; // any due to RPC Spec issue + finality_status: TransactionFinalityStatus | any; + status?: TransactionStatus; // SEQ only + actual_fee: string; + block_hash?: string; // ?~ optional due to RPC spec issue + block_number?: BlockNumber; // ?~ optional due to RCP spec issue + transaction_hash: string; + transaction_index?: number; // SEQ only + messages_sent: Array; // SEQ Casted l2_to_l1_messages + events: any[]; + revert_reason?: string; // SEQ Casted revert_error // ?~ optional due to RCP spec issue +}; -export type GetTransactionReceiptResponse = Receipt | PendingReceipt; +export type RejectedTransactionReceiptResponse = { + status: `${TransactionStatus.REJECTED}`; + transaction_failure_reason: { + code: string; + error_message: string; + }; +}; + +export type GetTransactionReceiptResponseWoHelper = + | SuccessfulTransactionReceiptResponse + | RevertedTransactionReceiptResponse + | RejectedTransactionReceiptResponse; + +export type SuccessfulTransactionReceiptResponse = + | InvokeTransactionReceiptResponse + | DeployTransactionReceiptResponse + | DeclareTransactionReceiptResponse; + +export type GetTransactionResponse = TransactionWithHash; // Spread individual types for usage convenience export type InvokeTransactionReceiptResponse = INVOKE_TXN_RECEIPT | PENDING_INVOKE_TXN_RECEIPT; export type DeclareTransactionReceiptResponse = DECLARE_TXN_RECEIPT | PENDING_DECLARE_TXN_RECEIPT; diff --git a/src/types/provider/spec.ts b/src/types/provider/spec.ts index 8f676a3d8..3a51a7604 100644 --- a/src/types/provider/spec.ts +++ b/src/types/provider/spec.ts @@ -33,7 +33,7 @@ type MergeProperties, T2 extends Record> = // type c = Merge; // { w: (bigint | number)[] x: bigint | number; y?: string; z?: string; } // // NOTE: handling for ambiguous overlaps, such as a shared property being an array or object, -// is simplified to resolve to only one type since there shouldn't be such occurences in the +// is simplified to resolve to only one type since there shouldn't be such occurrences in the // currently supported RPC specifications type Merge = Simplify< T1 extends Array diff --git a/src/types/transactionReceipt.ts b/src/types/transactionReceipt.ts new file mode 100644 index 000000000..84d96b06d --- /dev/null +++ b/src/types/transactionReceipt.ts @@ -0,0 +1,32 @@ +import { + RejectedTransactionReceiptResponse, + RevertedTransactionReceiptResponse, + SuccessfulTransactionReceiptResponse, +} from './provider'; + +export type TransactionStatusReceiptSets = { + success: SuccessfulTransactionReceiptResponse; + reverted: RevertedTransactionReceiptResponse; + rejected: RejectedTransactionReceiptResponse; + error: Error; +}; +export type TransactionReceiptStatus = keyof TransactionStatusReceiptSets; +export type TransactionReceiptValue = TransactionStatusReceiptSets[TransactionReceiptStatus]; + +export type TransactionReceiptCallbacksDefined = { + [key in TransactionReceiptStatus]: (response: TransactionStatusReceiptSets[key]) => void; +}; +export type TransactionReceiptCallbacksDefault = Partial & { + _: () => void; +}; +export type TransactionReceiptCallbacks = + | TransactionReceiptCallbacksDefined + | TransactionReceiptCallbacksDefault; + +export type TransactionReceiptUtilityInterface = { + readonly statusReceipt: TransactionReceiptStatus; + readonly value: TransactionReceiptValue; + match(callbacks: TransactionReceiptCallbacks): void; +} & { + [key in `is${Capitalize}`]: () => boolean; +}; diff --git a/src/utils/provider.ts b/src/utils/provider.ts index bd125b8df..cab182544 100644 --- a/src/utils/provider.ts +++ b/src/utils/provider.ts @@ -7,12 +7,10 @@ import { CompiledSierra, ContractClass, GetBlockResponse, - GetTransactionReceiptResponse, InvocationsDetailsWithNonce, LegacyContractClass, PendingBlock, PendingStateUpdate, - RPC, SierraContractClass, StateUpdateResponse, V3TransactionDetails, @@ -23,6 +21,7 @@ import { formatSpaces } from './hash'; import { parse, stringify } from './json'; import { isHex, toHex } from './num'; import { compressProgram } from './stark'; +import type { GetTransactionReceiptResponse } from './transactionReceipt'; /** * Helper - Async Sleep for 'delay' time @@ -195,9 +194,7 @@ export function isPendingBlock(response: GetBlockResponse): response is PendingB /** * Guard Pending Transaction */ -export function isPendingTransaction( - response: GetTransactionReceiptResponse -): response is RPC.PendingReceipt { +export function isPendingTransaction(response: GetTransactionReceiptResponse): boolean { return !('block_hash' in response); } diff --git a/src/utils/responseParser/index.ts b/src/utils/responseParser/index.ts index fe3014bb4..9161fc124 100644 --- a/src/utils/responseParser/index.ts +++ b/src/utils/responseParser/index.ts @@ -4,11 +4,11 @@ import { DeployContractResponse, EstimateFeeResponse, GetBlockResponse, - GetTransactionReceiptResponse, GetTransactionResponse, InvokeFunctionResponse, SimulateTransactionResponse, } from '../../types'; +import type { GetTransactionReceiptResponse } from '../transactionReceipt'; export abstract class ResponseParser { abstract parseGetBlockResponse(res: any): GetBlockResponse; diff --git a/src/utils/responseParser/rpc.ts b/src/utils/responseParser/rpc.ts index 96c82387c..e83fa6d9b 100644 --- a/src/utils/responseParser/rpc.ts +++ b/src/utils/responseParser/rpc.ts @@ -10,11 +10,11 @@ import { EstimateFeeResponse, EstimateFeeResponseBulk, GetBlockResponse, - GetTransactionReceiptResponse, FeeEstimate, SimulateTransactionResponse, SimulatedTransaction, RpcProviderOptions, + GetTransactionReceiptResponseWoHelper, } from '../../types/provider'; import { toBigInt } from '../num'; import { estimateFeeToBounds, estimatedFeeToMaxFee } from '../stark'; @@ -54,20 +54,20 @@ export class RPCResponseParser return { status: 'PENDING', ...res } as GetBlockResponse; } - public parseTransactionReceipt(res: TransactionReceipt): GetTransactionReceiptResponse { + public parseTransactionReceipt(res: TransactionReceipt): GetTransactionReceiptResponseWoHelper { // HOTFIX RPC 0.5 to align with RPC 0.6 // This case is RPC 0.5. It can be only v2 thx with FRI units if ('actual_fee' in res && typeof res.actual_fee === 'string') { return { - ...(res as GetTransactionReceiptResponse), + ...(res as GetTransactionReceiptResponseWoHelper), actual_fee: { amount: res.actual_fee, unit: 'FRI', }, - }; + } as GetTransactionReceiptResponseWoHelper; } - return res as GetTransactionReceiptResponse; + return res as GetTransactionReceiptResponseWoHelper; } public parseFeeEstimateResponse(res: FeeEstimate[]): EstimateFeeResponse { diff --git a/src/utils/transactionReceipt.ts b/src/utils/transactionReceipt.ts new file mode 100644 index 000000000..150a98e9a --- /dev/null +++ b/src/utils/transactionReceipt.ts @@ -0,0 +1,114 @@ +/* eslint-disable no-nested-ternary */ +import { + GetTransactionReceiptResponseWoHelper, + RejectedTransactionReceiptResponse, + RevertedTransactionReceiptResponse, + SuccessfulTransactionReceiptResponse, + TransactionExecutionStatus, +} from '../types'; +import type { + TransactionReceiptCallbacks, + TransactionReceiptCallbacksDefault, + TransactionReceiptStatus, + TransactionReceiptUtilityInterface, + TransactionReceiptValue, +} from '../types/transactionReceipt'; + +/** + * Utility that analyses transaction receipt response and provides helpers to process it + * @example + * ```typescript + * const responseTx = new ReceiptTx(receipt); + * responseTx.match({ + * success: (txR: SuccessfulTransactionReceiptResponse) => { }, + * rejected: (txR: RejectedTransactionReceiptResponse) => { }, + * reverted: (txR: RevertedTransactionReceiptResponse) => { }, + * error: (err: Error) => { }, + * }); + * responseTx.match({ + * success: (txR: SuccessfulTransactionReceiptResponse) => { }, + * _: () => { }, + * } + * ``` + */ +export class ReceiptTx implements TransactionReceiptUtilityInterface { + public readonly statusReceipt: TransactionReceiptStatus; + + public readonly value: TransactionReceiptValue; + + constructor(receipt: GetTransactionReceiptResponseWoHelper) { + [this.statusReceipt, this.value] = ReceiptTx.isSuccess(receipt) + ? ['success', receipt] + : ReceiptTx.isReverted(receipt) + ? ['reverted', receipt] + : ReceiptTx.isRejected(receipt) + ? ['rejected', receipt] + : ['error', new Error('Unknown response type')]; + // eslint-disable-next-line no-restricted-syntax + for (const [key] of Object.entries(this)) { + Object.defineProperty(this, key, { + enumerable: false, + }); + } + // eslint-disable-next-line no-restricted-syntax + for (const [key, value] of Object.entries(receipt)) { + Object.defineProperty(this, key, { + enumerable: true, + writable: false, + value, + }); + } + } + + match(callbacks: TransactionReceiptCallbacks) { + if (this.statusReceipt in callbacks) { + return callbacks[this.statusReceipt]!(this.value as any); + } + return (callbacks as TransactionReceiptCallbacksDefault)._(); + } + + isSuccess() { + return this.statusReceipt === 'success'; + } + + isReverted() { + return this.statusReceipt === 'reverted'; + } + + isRejected() { + return this.statusReceipt === 'rejected'; + } + + isError() { + return this.statusReceipt === 'error'; + } + + static isSuccess( + transactionReceipt: GetTransactionReceiptResponseWoHelper + ): transactionReceipt is SuccessfulTransactionReceiptResponse { + return ( + (transactionReceipt as SuccessfulTransactionReceiptResponse).execution_status === + TransactionExecutionStatus.SUCCEEDED + ); + } + + static isReverted( + transactionReceipt: GetTransactionReceiptResponseWoHelper + ): transactionReceipt is RevertedTransactionReceiptResponse { + return ( + (transactionReceipt as RevertedTransactionReceiptResponse).execution_status === + TransactionExecutionStatus.REVERTED + ); + } + + static isRejected( + transactionReceipt: GetTransactionReceiptResponseWoHelper + ): transactionReceipt is RejectedTransactionReceiptResponse { + return ( + (transactionReceipt as RejectedTransactionReceiptResponse).status === + TransactionExecutionStatus.REJECTED + ); + } +} + +export type GetTransactionReceiptResponse = GetTransactionReceiptResponseWoHelper & ReceiptTx; diff --git a/www/docs/guides/interact.md b/www/docs/guides/interact.md index 11fdc02cc..691513e71 100644 --- a/www/docs/guides/interact.md +++ b/www/docs/guides/interact.md @@ -239,3 +239,39 @@ const getResponse = await myAccount.call('get_bal', specialParameters, { parseRe ``` You provide the low-level numbers expected by Starknet, without any parsing or checking. See more details [here](define_call_message.md#parse-configuration). + +## Transaction receipt response + +You can interpret the transaction receipt response to check whether it succeeded or not. + +```typescript +const result = await account.execute(myCall); +const txR = await provider.waitForTransaction(result.transaction_hash); + +console.log(txR.statusReceipt, txR.value); +console.log(txR.isSuccess(), txR.isRejected(), txR.isReverted(), txR.isError()); + +txR.match({ + success: () => { + console.log('Success'); + }, + _: () => { + console.log('Unsuccess'); + }, +}); + +txR.match({ + success: (txR: SuccessfulTransactionReceiptResponse) => { + console.log('Success =', txR); + }, + rejected: (txR: RejectedTransactionReceiptResponse) => { + console.log('Rejected =', txR); + }, + reverted: (txR: RevertedTransactionReceiptResponse) => { + console.log('Reverted =', txR); + }, + error: (err: Error) => { + console.log('An error occured =', err); + }, +}); +``` From 495512afacaf029daf6bf7e968d378b152e78d78 Mon Sep 17 00:00:00 2001 From: gregory <10611760+gregoryguillou@users.noreply.github.com> Date: Tue, 19 Mar 2024 00:17:30 +0100 Subject: [PATCH 04/37] simplify extends for account class --- src/account/default.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/account/default.ts b/src/account/default.ts index 1f46aec51..4372be8ec 100644 --- a/src/account/default.ts +++ b/src/account/default.ts @@ -89,7 +89,7 @@ export class Account extends Provider implements AccountInterface { } // provided version or contract based preferred transactionVersion - private getPreferredVersion(type12: ETransactionVersion, type3: ETransactionVersion) { + protected getPreferredVersion(type12: ETransactionVersion, type3: ETransactionVersion) { if (this.transactionVersion === ETransactionVersion.V3) return type3; if (this.transactionVersion === ETransactionVersion.V2) return type12; @@ -100,7 +100,7 @@ export class Account extends Provider implements AccountInterface { return super.getNonceForAddress(this.address, blockIdentifier); } - private async getNonceSafe(nonce?: BigNumberish) { + protected async getNonceSafe(nonce?: BigNumberish) { // Patch DEPLOY_ACCOUNT: RPC getNonce for non-existing address will result in error, on Sequencer it is '0x0' try { return toBigInt(nonce ?? (await this.getNonce())); @@ -600,7 +600,7 @@ export class Account extends Provider implements AccountInterface { * Support methods */ - private async getUniversalSuggestedFee( + protected async getUniversalSuggestedFee( version: ETransactionVersion, { type, payload }: EstimateFeeAction, details: UniversalDetails From 93650635bee33c4b4f006e2ffc9d34cb67b34e20 Mon Sep 17 00:00:00 2001 From: PhilippeR26 Date: Tue, 19 Mar 2024 17:11:01 +0100 Subject: [PATCH 05/37] feat: handling of cairo u512 type --- __mocks__/cairo/cairo260/u512.cairo | 41 + __mocks__/cairo/cairo260/u512.casm | 2332 ++++++++++++++++++++ __mocks__/cairo/cairo260/u512.sierra.json | 564 +++++ __tests__/cairo1v2.test.ts | 81 + __tests__/config/fixtures.ts | 2 + __tests__/utils/CairoTypes/uint512.test.ts | 226 ++ __tests__/utils/uint256.test.ts | 18 + src/index.ts | 2 + src/types/calldata.ts | 1 + src/types/lib/index.ts | 12 + src/utils/cairoDataTypes/uint512.ts | 176 ++ src/utils/calldata/cairo.ts | 15 + src/utils/calldata/propertyOrder.ts | 19 + src/utils/calldata/requestParser.ts | 16 +- src/utils/calldata/responseParser.ts | 16 +- src/utils/calldata/validate.ts | 29 +- www/docs/guides/define_call_message.md | 27 + 17 files changed, 3567 insertions(+), 10 deletions(-) create mode 100644 __mocks__/cairo/cairo260/u512.cairo create mode 100644 __mocks__/cairo/cairo260/u512.casm create mode 100644 __mocks__/cairo/cairo260/u512.sierra.json create mode 100644 __tests__/utils/CairoTypes/uint512.test.ts create mode 100644 src/utils/cairoDataTypes/uint512.ts diff --git a/__mocks__/cairo/cairo260/u512.cairo b/__mocks__/cairo/cairo260/u512.cairo new file mode 100644 index 000000000..da799b8f9 --- /dev/null +++ b/__mocks__/cairo/cairo260/u512.cairo @@ -0,0 +1,41 @@ +// Cairo 2.6.0 + +use core::integer::u512; + +#[starknet::interface] +trait IUint512 { + fn get_u512(self: @TContractState) -> u512; + fn return_u512(self: @TContractState, my_u512: u512) -> u512; + fn div_u512(self: @TContractState, my_u512: u512, divisor: u256) -> (u512, u256); +} + + +#[starknet::contract] +mod TestUint512 { + use core::integer::{u512, u512_safe_div_rem_by_u256}; + + #[storage] + struct Storage {} + + #[abi(embed_v0)] + impl Uint512 of super::IUint512 { + fn get_u512(self: @ContractState) -> u512 { + u512 { + limb0: 0x00000000000000000000000000000000, + limb1: 0x11111111111111111111111111111111, + limb2: 0x22222222222222222222222222222222, + limb3: 0x33333333333333333333333333333333, + } + } + + fn return_u512(self: @ContractState, my_u512: u512) -> u512 { + my_u512 + } + + fn div_u512(self: @ContractState, my_u512: u512, divisor: u256) -> (u512, u256) { + let (q, r) = u512_safe_div_rem_by_u256(my_u512, divisor.try_into().unwrap()); + (q, r) + } + } +} + diff --git a/__mocks__/cairo/cairo260/u512.casm b/__mocks__/cairo/cairo260/u512.casm new file mode 100644 index 000000000..41f898f6b --- /dev/null +++ b/__mocks__/cairo/cairo260/u512.casm @@ -0,0 +1,2332 @@ +{ + "prime": "0x800000000000011000000000000000000000000000000000000000000000001", + "compiler_version": "2.6.0", + "bytecode": [ + "0xa0680017fff8000", + "0x7", + "0x482680017ffa8000", + "0x100000000000000000000000000000000", + "0x400280007ff97fff", + "0x10780017fff7fff", + "0x52", + "0x4825800180007ffa", + "0x0", + "0x400280007ff97fff", + "0x482680017ff98000", + "0x1", + "0x48297ffc80007ffd", + "0x20680017fff7fff", + "0x4", + "0x10780017fff7fff", + "0x10", + "0x40780017fff7fff", + "0x1", + "0x480680017fff8000", + "0x496e70757420746f6f206c6f6e6720666f7220617267756d656e7473", + "0x400080007ffe7fff", + "0x48127ffc7fff8000", + "0x48127ffa7fff8000", + "0x480a7ffb7fff8000", + "0x480680017fff8000", + "0x1", + "0x48127ffa7fff8000", + "0x482480017ff98000", + "0x1", + "0x208b7fff7fff7ffe", + "0x1104800180018000", + "0x3e5", + "0x482480017fff8000", + "0x3e4", + "0x480080007fff8000", + "0xa0680017fff8000", + "0x9", + "0x4824800180007ff8", + "0x0", + "0x482480017fff8000", + "0x100000000000000000000000000000000", + "0x400080007ff77fff", + "0x10780017fff7fff", + "0x1d", + "0x4824800180007ff8", + "0x0", + "0x400080007ff87fff", + "0x40780017fff7fff", + "0x1", + "0x480680017fff8000", + "0x0", + "0x480680017fff8000", + "0x11111111111111111111111111111111", + "0x480680017fff8000", + "0x22222222222222222222222222222222", + "0x480680017fff8000", + "0x33333333333333333333333333333333", + "0x400080007ffb7ffc", + "0x400080017ffb7ffd", + "0x400080027ffb7ffe", + "0x400080037ffb7fff", + "0x482480017ff38000", + "0x1", + "0x48127ff97fff8000", + "0x480a7ffb7fff8000", + "0x480680017fff8000", + "0x0", + "0x48127ff77fff8000", + "0x482480017ff68000", + "0x4", + "0x208b7fff7fff7ffe", + "0x40780017fff7fff", + "0x1", + "0x480680017fff8000", + "0x4f7574206f6620676173", + "0x400080007ffe7fff", + "0x482480017ff58000", + "0x1", + "0x48127ff37fff8000", + "0x480a7ffb7fff8000", + "0x480680017fff8000", + "0x1", + "0x48127ffa7fff8000", + "0x482480017ff98000", + "0x1", + "0x208b7fff7fff7ffe", + "0x40780017fff7fff", + "0x1", + "0x480680017fff8000", + "0x4f7574206f6620676173", + "0x400080007ffe7fff", + "0x482680017ff98000", + "0x1", + "0x480a7ffa7fff8000", + "0x480a7ffb7fff8000", + "0x480680017fff8000", + "0x1", + "0x48127ffa7fff8000", + "0x482480017ff98000", + "0x1", + "0x208b7fff7fff7ffe", + "0xa0680017fff8000", + "0x7", + "0x482680017ffa8000", + "0xffffffffffffffffffffffffffffffc4", + "0x400280007ff97fff", + "0x10780017fff7fff", + "0x5e", + "0x4825800180007ffa", + "0x3c", + "0x400280007ff97fff", + "0x482680017ff98000", + "0x1", + "0x480a7ffc7fff8000", + "0x480a7ffd7fff8000", + "0x1104800180018000", + "0x269", + "0x20680017fff7ffb", + "0x45", + "0x48307ff980007ffa", + "0x20680017fff7fff", + "0x4", + "0x10780017fff7fff", + "0x10", + "0x40780017fff7fff", + "0x1", + "0x480680017fff8000", + "0x496e70757420746f6f206c6f6e6720666f7220617267756d656e7473", + "0x400080007ffe7fff", + "0x48127ff57fff8000", + "0x48127fca7fff8000", + "0x480a7ffb7fff8000", + "0x480680017fff8000", + "0x1", + "0x48127ffa7fff8000", + "0x482480017ff98000", + "0x1", + "0x208b7fff7fff7ffe", + "0x1104800180018000", + "0x379", + "0x482480017fff8000", + "0x378", + "0x480080007fff8000", + "0xa0680017fff8000", + "0x9", + "0x4824800180007fc8", + "0x0", + "0x482480017fff8000", + "0x100000000000000000000000000000000", + "0x400080007ff07fff", + "0x10780017fff7fff", + "0x15", + "0x4824800180007fc8", + "0x0", + "0x400080007ff17fff", + "0x40780017fff7fff", + "0x1", + "0x400080007fff7ff4", + "0x400080017fff7ff5", + "0x400080027fff7ff6", + "0x400080037fff7ff7", + "0x482480017ff08000", + "0x1", + "0x48127ffd7fff8000", + "0x480a7ffb7fff8000", + "0x480680017fff8000", + "0x0", + "0x48127ffb7fff8000", + "0x482480017ffa8000", + "0x4", + "0x208b7fff7fff7ffe", + "0x40780017fff7fff", + "0x1", + "0x480680017fff8000", + "0x4f7574206f6620676173", + "0x400080007ffe7fff", + "0x482480017fee8000", + "0x1", + "0x48127fc37fff8000", + "0x480a7ffb7fff8000", + "0x480680017fff8000", + "0x1", + "0x48127ffa7fff8000", + "0x482480017ff98000", + "0x1", + "0x208b7fff7fff7ffe", + "0x40780017fff7fff", + "0x1", + "0x480680017fff8000", + "0x4661696c656420746f20646573657269616c697a6520706172616d202331", + "0x400080007ffe7fff", + "0x48127ff67fff8000", + "0x48127fcb7fff8000", + "0x480a7ffb7fff8000", + "0x480680017fff8000", + "0x1", + "0x48127ffa7fff8000", + "0x482480017ff98000", + "0x1", + "0x208b7fff7fff7ffe", + "0x40780017fff7fff", + "0x1", + "0x480680017fff8000", + "0x4f7574206f6620676173", + "0x400080007ffe7fff", + "0x482680017ff98000", + "0x1", + "0x480a7ffa7fff8000", + "0x480a7ffb7fff8000", + "0x480680017fff8000", + "0x1", + "0x48127ffa7fff8000", + "0x482480017ff98000", + "0x1", + "0x208b7fff7fff7ffe", + "0xa0680017fff8000", + "0x7", + "0x482680017ffa8000", + "0xffffffffffffffffffffffffffffeea8", + "0x400280007ff97fff", + "0x10780017fff7fff", + "0x1f1", + "0x4825800180007ffa", + "0x1158", + "0x400280007ff97fff", + "0x482680017ff98000", + "0x1", + "0x480a7ffc7fff8000", + "0x480a7ffd7fff8000", + "0x1104800180018000", + "0x1f7", + "0x20680017fff7ffb", + "0x1d8", + "0x48307ff980007ffa", + "0x20680017fff7fff", + "0x4", + "0x10780017fff7fff", + "0xa", + "0x482480017ff88000", + "0x1", + "0x48127ff87fff8000", + "0x480680017fff8000", + "0x0", + "0x48127ff57fff8000", + "0x10780017fff7fff", + "0x8", + "0x48127ff87fff8000", + "0x48127ff87fff8000", + "0x480680017fff8000", + "0x1", + "0x480680017fff8000", + "0x0", + "0x20680017fff7ffe", + "0x6c", + "0x480080007fff8000", + "0xa0680017fff8000", + "0x16", + "0x480080007ff18003", + "0x480080017ff08003", + "0x4844800180017ffe", + "0x100000000000000000000000000000000", + "0x483080017ffd7ffb", + "0x482480017fff7ffd", + "0x800000000000010fffffffffffffffff7ffffffffffffef0000000000000001", + "0x20680017fff7ffc", + "0x6", + "0x402480017fff7ffd", + "0xffffffffffffffffffffffffffffffff", + "0x10780017fff7fff", + "0x4", + "0x402480017ffe7ffd", + "0xf7ffffffffffffef0000000000000000", + "0x400080027fec7ffd", + "0x20680017fff7ffe", + "0x51", + "0x402780017fff7fff", + "0x1", + "0x400080007ff17ffe", + "0x482480017ff18000", + "0x1", + "0x48307ff980007ffa", + "0x20680017fff7fff", + "0x4", + "0x10780017fff7fff", + "0xa", + "0x482480017ff88000", + "0x1", + "0x48127ff87fff8000", + "0x480680017fff8000", + "0x0", + "0x48127ff57fff8000", + "0x10780017fff7fff", + "0x8", + "0x48127ff87fff8000", + "0x48127ff87fff8000", + "0x480680017fff8000", + "0x1", + "0x480680017fff8000", + "0x0", + "0x20680017fff7ffe", + "0x2a", + "0x480080007fff8000", + "0xa0680017fff8000", + "0x16", + "0x480080007ff88003", + "0x480080017ff78003", + "0x4844800180017ffe", + "0x100000000000000000000000000000000", + "0x483080017ffd7ffb", + "0x482480017fff7ffd", + "0x800000000000010fffffffffffffffff7ffffffffffffef0000000000000001", + "0x20680017fff7ffc", + "0x6", + "0x402480017fff7ffd", + "0xffffffffffffffffffffffffffffffff", + "0x10780017fff7fff", + "0x4", + "0x402480017ffe7ffd", + "0xf7ffffffffffffef0000000000000000", + "0x400080027ff37ffd", + "0x20680017fff7ffe", + "0x11", + "0x402780017fff7fff", + "0x1", + "0x400080007ff87ffe", + "0x40780017fff7fff", + "0x5", + "0x482480017ff38000", + "0x1", + "0x48127ff47fff8000", + "0x48127ff47fff8000", + "0x480680017fff8000", + "0x0", + "0x48127fed7fff8000", + "0x48127ff47fff8000", + "0x10780017fff7fff", + "0x24", + "0x482480017ff38000", + "0x3", + "0x10780017fff7fff", + "0x5", + "0x40780017fff7fff", + "0x7", + "0x48127ff37fff8000", + "0x48127ff47fff8000", + "0x48127ff47fff8000", + "0x480680017fff8000", + "0x1", + "0x480680017fff8000", + "0x0", + "0x480680017fff8000", + "0x0", + "0x10780017fff7fff", + "0x13", + "0x40780017fff7fff", + "0x8", + "0x482480017fe48000", + "0x3", + "0x10780017fff7fff", + "0x5", + "0x40780017fff7fff", + "0xf", + "0x48127fe47fff8000", + "0x48127fec7fff8000", + "0x48127fec7fff8000", + "0x480680017fff8000", + "0x1", + "0x480680017fff8000", + "0x0", + "0x480680017fff8000", + "0x0", + "0x20680017fff7ffd", + "0x13e", + "0x48307ffb80007ffc", + "0x20680017fff7fff", + "0x4", + "0x10780017fff7fff", + "0x10", + "0x40780017fff7fff", + "0x1", + "0x480680017fff8000", + "0x496e70757420746f6f206c6f6e6720666f7220617267756d656e7473", + "0x400080007ffe7fff", + "0x48127ff77fff8000", + "0x48127fb07fff8000", + "0x480a7ffb7fff8000", + "0x480680017fff8000", + "0x1", + "0x48127ffa7fff8000", + "0x482480017ff98000", + "0x1", + "0x208b7fff7fff7ffe", + "0x1104800180018000", + "0x27b", + "0x482480017fff8000", + "0x27a", + "0x480080007fff8000", + "0xa0680017fff8000", + "0x9", + "0x4824800180007fae", + "0x5582", + "0x482480017fff8000", + "0x100000000000000000000000000000000", + "0x400080007ff27fff", + "0x10780017fff7fff", + "0x10e", + "0x4824800180007fae", + "0x5582", + "0x400080007ff37fff", + "0x482480017ff38000", + "0x1", + "0x20680017fff7ff6", + "0x12", + "0x20680017fff7ff7", + "0x10", + "0x40780017fff7fff", + "0x1", + "0x480680017fff8000", + "0x4f7074696f6e3a3a756e77726170206661696c65642e", + "0x400080007ffe7fff", + "0x48127ffd7fff8000", + "0x48127ffb7fff8000", + "0x480a7ffb7fff8000", + "0x480680017fff8000", + "0x1", + "0x48127ffa7fff8000", + "0x482480017ff98000", + "0x1", + "0x208b7fff7fff7ffe", + "0x480080007fff8000", + "0x480080017ffe8000", + "0x480080027ffd8000", + "0x480080037ffc8000", + "0x480080047ffb8000", + "0x480080057ffa8000", + "0x48307fff80007ff1", + "0x40780017fff7fff", + "0xc", + "0x20680017fff7ff3", + "0x8", + "0x40307ff17ff47fe3", + "0x402480017ff57ff4", + "0x1", + "0x400080067fec7ff5", + "0x10780017fff7fff", + "0x3", + "0x400080067fec7ff3", + "0x48307ff17ff68000", + "0x48307fc680007fff", + "0x4844800180007fff", + "0x100000000000000000000000000000000", + "0x40507fff7fff7fff", + "0x48307ff47fff8000", + "0x48307ff47fff8000", + "0x48307ff57fff8000", + "0x48307fec7fff8000", + "0x48307fc180007fff", + "0x4844800180007fff", + "0x100000000000000000000000000000000", + "0x400080077fe37fff", + "0x482480017fff8000", + "0xfffffffffffffffffffffffffffffffc", + "0x400080087fe27fff", + "0x48307fef7ffe8000", + "0x48307ff07fff8000", + "0x48307ff07fff8000", + "0x48307ff17fff8000", + "0x48307fbb80007fff", + "0x4844800180007fff", + "0x100000000000000000000000000000000", + "0x400080097fdc7fff", + "0x482480017fff8000", + "0xfffffffffffffffffffffffffffffffc", + "0x4000800a7fdb7fff", + "0xa0680017fff7fdf", + "0xc", + "0xa0680017fff8001", + "0x6", + "0x48127fd17fff7ffe", + "0x40127fdb7fff7ffe", + "0x10780017fff7fff", + "0x10", + "0x48127fdc7fff7ffe", + "0x40127fd07fff7ffe", + "0x10780017fff7fff", + "0xc", + "0x480680017fff7fd2", + "0x0", + "0xa0680017fff8000", + "0x6", + "0x40127fcf7fff7ffd", + "0x40127fdc7fff7ffe", + "0x10780017fff7fff", + "0x4", + "0x40127fdc7fff7ffd", + "0x40127fcf7fff7ffe", + "0x482480017ffd8000", + "0xffffffffffffffff0000000000000000", + "0x4000800b7fd77fff", + "0x48507ffd7ffc8000", + "0x48307fe97ff98000", + "0x48307fe67fff8000", + "0x40307ffd7fff7fb2", + "0x4824800180008002", + "0xffffffffffffffff0000000000000000", + "0x4800800c7fd38001", + "0x4800800d7fd27ffe", + "0x4000800e7fd17ffe", + "0x484480017ffe8000", + "0x10000000000000000", + "0x40307ffc7fff7fd3", + "0x48507fc77ffc8000", + "0x48507fc67ffc8000", + "0x4824800180018002", + "0xffffffffffffffff0000000000000000", + "0x4800800f7fcd8001", + "0x480080107fcc7fff", + "0x400080117fcb7ffd", + "0x484480017ffd8000", + "0x10000000000000000", + "0x40307ffd7fff7ffb", + "0x484480017ffd8000", + "0x10000000000000000", + "0x48307fff7ff98003", + "0x482480017fff8000", + "0xfffffffffffffffe0000000000000000", + "0x480080127fc77fff", + "0x480080137fc67ffd", + "0x400080147fc57fd7", + "0x404480017ffc7ffe", + "0x100000000000000000000000000000000", + "0x40307fd77ffe7fff", + "0x40307ffc7ff77fd8", + "0x4824800180008002", + "0xffffffffffffffff0000000000000000", + "0x480080157fc48001", + "0x480080167fc37ffe", + "0x400080177fc27ffe", + "0x484480017ffe8000", + "0x10000000000000000", + "0x40307ffc7fff7fc3", + "0x48507fb97ffc8000", + "0x48507fb87ffc8000", + "0x4824800180018002", + "0xffffffffffffffff0000000000000000", + "0x480080187fbe8001", + "0x480080197fbd7fff", + "0x4000801a7fbc7ffd", + "0x484480017ffd8000", + "0x10000000000000000", + "0x40307ffd7fff7ffb", + "0x484480017ffd8000", + "0x10000000000000000", + "0x48307fff7ff98003", + "0x482480017fff8000", + "0xfffffffffffffffe0000000000000000", + "0x4800801b7fb87fff", + "0x4800801c7fb77ffd", + "0x4000801d7fb67fc6", + "0x404480017ffc7ffe", + "0x100000000000000000000000000000000", + "0x40307fc67ffe7fff", + "0x40307ffc7ff77fc7", + "0x4824800180008002", + "0xffffffffffffffff0000000000000000", + "0x4800801e7fb58001", + "0x4800801f7fb47ffe", + "0x400080207fb37ffe", + "0x484480017ffe8000", + "0x10000000000000000", + "0x40307ffc7fff7fb4", + "0x48507fa97ffc8000", + "0x48507fa87ffc8000", + "0x4824800180018002", + "0xffffffffffffffff0000000000000000", + "0x480080217faf8001", + "0x480080227fae7fff", + "0x400080237fad7ffd", + "0x484480017ffd8000", + "0x10000000000000000", + "0x40307ffd7fff7ffb", + "0x484480017ffd8000", + "0x10000000000000000", + "0x48307fff7ff98003", + "0x482480017fff8000", + "0xfffffffffffffffe0000000000000000", + "0x480080247fa97fff", + "0x480080257fa87ffd", + "0x400080267fa77fb3", + "0x404480017ffc7ffe", + "0x100000000000000000000000000000000", + "0x40307fb37ffe7fff", + "0x40307ffc7ff77fb4", + "0x4824800180008002", + "0xffffffffffffffff0000000000000000", + "0x480080277fa68001", + "0x480080287fa57ffe", + "0x400080297fa47ffe", + "0x484480017ffe8000", + "0x10000000000000000", + "0x40307ffc7fff7fa4", + "0x48507f9b7ffc8000", + "0x48507f9a7ffc8000", + "0x4824800180018002", + "0xffffffffffffffff0000000000000000", + "0x4800802a7fa08001", + "0x4800802b7f9f7fff", + "0x4000802c7f9e7ffd", + "0x484480017ffd8000", + "0x10000000000000000", + "0x40307ffd7fff7ffb", + "0x484480017ffd8000", + "0x10000000000000000", + "0x48307fff7ff98003", + "0x482480017fff8000", + "0xfffffffffffffffe0000000000000000", + "0x4800802d7f9a7fff", + "0x4800802e7f997ffd", + "0x4000802f7f987fa6", + "0x404480017ffc7ffe", + "0x100000000000000000000000000000000", + "0x40307fa67ffe7fff", + "0x40307ffc7ff77fa7", + "0x4824800180008002", + "0xffffffffffffffff0000000000000000", + "0x480080307f978001", + "0x480080317f967ffe", + "0x400080327f957ffe", + "0x484480017ffe8000", + "0x10000000000000000", + "0x40307ffc7fff7f95", + "0x48507f8b7ffc8000", + "0x48507f8a7ffc8000", + "0x4824800180018002", + "0xffffffffffffffff0000000000000000", + "0x480080337f918001", + "0x480080347f907fff", + "0x400080357f8f7ffd", + "0x484480017ffd8000", + "0x10000000000000000", + "0x40307ffd7fff7ffb", + "0x484480017ffd8000", + "0x10000000000000000", + "0x48307fff7ff98003", + "0x482480017fff8000", + "0xfffffffffffffffe0000000000000000", + "0x480080367f8b7fff", + "0x480080377f8a7ffd", + "0x400080387f897f93", + "0x404480017ffc7ffe", + "0x100000000000000000000000000000000", + "0x40307f937ffe7fff", + "0x40307ffc7ff77f94", + "0x40780017fff7fff", + "0x1", + "0x48127f897fff8000", + "0x48127f897fff8000", + "0x48127f897fff8000", + "0x48127f897fff8000", + "0x48127f897fff8000", + "0x48127f897fff8000", + "0x48127ff97fff8000", + "0x48127ff87fff8000", + "0x1104800180018000", + "0x162", + "0x482480017f7c8000", + "0x39", + "0x48127f7a7fff8000", + "0x480a7ffb7fff8000", + "0x480680017fff8000", + "0x0", + "0x48127ffa7fff8000", + "0x48127ffa7fff8000", + "0x208b7fff7fff7ffe", + "0x40780017fff7fff", + "0x1", + "0x480680017fff8000", + "0x4f7574206f6620676173", + "0x400080007ffe7fff", + "0x482480017ff08000", + "0x1", + "0x48127fa97fff8000", + "0x480a7ffb7fff8000", + "0x480680017fff8000", + "0x1", + "0x48127ffa7fff8000", + "0x482480017ff98000", + "0x1", + "0x208b7fff7fff7ffe", + "0x40780017fff7fff", + "0x1", + "0x480680017fff8000", + "0x4661696c656420746f20646573657269616c697a6520706172616d202332", + "0x400080007ffe7fff", + "0x48127ff87fff8000", + "0x48127fb17fff8000", + "0x480a7ffb7fff8000", + "0x480680017fff8000", + "0x1", + "0x48127ffa7fff8000", + "0x482480017ff98000", + "0x1", + "0x208b7fff7fff7ffe", + "0x40780017fff7fff", + "0x1", + "0x480680017fff8000", + "0x4661696c656420746f20646573657269616c697a6520706172616d202331", + "0x400080007ffe7fff", + "0x48127ff67fff8000", + "0x48127fcb7fff8000", + "0x480a7ffb7fff8000", + "0x480680017fff8000", + "0x1", + "0x48127ffa7fff8000", + "0x482480017ff98000", + "0x1", + "0x208b7fff7fff7ffe", + "0x40780017fff7fff", + "0x1", + "0x480680017fff8000", + "0x4f7574206f6620676173", + "0x400080007ffe7fff", + "0x482680017ff98000", + "0x1", + "0x480a7ffa7fff8000", + "0x480a7ffb7fff8000", + "0x480680017fff8000", + "0x1", + "0x48127ffa7fff8000", + "0x482480017ff98000", + "0x1", + "0x208b7fff7fff7ffe", + "0x48297ffc80007ffd", + "0x20680017fff7fff", + "0x4", + "0x10780017fff7fff", + "0xa", + "0x482680017ffc8000", + "0x1", + "0x480a7ffd7fff8000", + "0x480680017fff8000", + "0x0", + "0x480a7ffc7fff8000", + "0x10780017fff7fff", + "0x8", + "0x480a7ffc7fff8000", + "0x480a7ffd7fff8000", + "0x480680017fff8000", + "0x1", + "0x480680017fff8000", + "0x0", + "0x20680017fff7ffe", + "0xfa", + "0x480080007fff8000", + "0xa0680017fff8000", + "0x16", + "0x480280007ffb8003", + "0x480280017ffb8003", + "0x4844800180017ffe", + "0x100000000000000000000000000000000", + "0x483080017ffd7ffb", + "0x482480017fff7ffd", + "0x800000000000010fffffffffffffffff7ffffffffffffef0000000000000001", + "0x20680017fff7ffc", + "0x6", + "0x402480017fff7ffd", + "0xffffffffffffffffffffffffffffffff", + "0x10780017fff7fff", + "0x4", + "0x402480017ffe7ffd", + "0xf7ffffffffffffef0000000000000000", + "0x400280027ffb7ffd", + "0x20680017fff7ffe", + "0xdf", + "0x402780017fff7fff", + "0x1", + "0x400280007ffb7ffe", + "0x482680017ffb8000", + "0x1", + "0x48307ff980007ffa", + "0x20680017fff7fff", + "0x4", + "0x10780017fff7fff", + "0xa", + "0x482480017ff88000", + "0x1", + "0x48127ff87fff8000", + "0x480680017fff8000", + "0x0", + "0x48127ff57fff8000", + "0x10780017fff7fff", + "0x8", + "0x48127ff87fff8000", + "0x48127ff87fff8000", + "0x480680017fff8000", + "0x1", + "0x480680017fff8000", + "0x0", + "0x20680017fff7ffe", + "0xb5", + "0x480080007fff8000", + "0xa0680017fff8000", + "0x16", + "0x480080007ff88003", + "0x480080017ff78003", + "0x4844800180017ffe", + "0x100000000000000000000000000000000", + "0x483080017ffd7ffb", + "0x482480017fff7ffd", + "0x800000000000010fffffffffffffffff7ffffffffffffef0000000000000001", + "0x20680017fff7ffc", + "0x6", + "0x402480017fff7ffd", + "0xffffffffffffffffffffffffffffffff", + "0x10780017fff7fff", + "0x4", + "0x402480017ffe7ffd", + "0xf7ffffffffffffef0000000000000000", + "0x400080027ff37ffd", + "0x20680017fff7ffe", + "0x9a", + "0x402780017fff7fff", + "0x1", + "0x400080007ff87ffe", + "0x482480017ff88000", + "0x1", + "0x48307ff980007ffa", + "0x20680017fff7fff", + "0x4", + "0x10780017fff7fff", + "0xa", + "0x482480017ff88000", + "0x1", + "0x48127ff87fff8000", + "0x480680017fff8000", + "0x0", + "0x48127ff57fff8000", + "0x10780017fff7fff", + "0x8", + "0x48127ff87fff8000", + "0x48127ff87fff8000", + "0x480680017fff8000", + "0x1", + "0x480680017fff8000", + "0x0", + "0x20680017fff7ffe", + "0x70", + "0x480080007fff8000", + "0xa0680017fff8000", + "0x16", + "0x480080007ff88003", + "0x480080017ff78003", + "0x4844800180017ffe", + "0x100000000000000000000000000000000", + "0x483080017ffd7ffb", + "0x482480017fff7ffd", + "0x800000000000010fffffffffffffffff7ffffffffffffef0000000000000001", + "0x20680017fff7ffc", + "0x6", + "0x402480017fff7ffd", + "0xffffffffffffffffffffffffffffffff", + "0x10780017fff7fff", + "0x4", + "0x402480017ffe7ffd", + "0xf7ffffffffffffef0000000000000000", + "0x400080027ff37ffd", + "0x20680017fff7ffe", + "0x55", + "0x402780017fff7fff", + "0x1", + "0x400080007ff87ffe", + "0x482480017ff88000", + "0x1", + "0x48307ff980007ffa", + "0x20680017fff7fff", + "0x4", + "0x10780017fff7fff", + "0xa", + "0x482480017ff88000", + "0x1", + "0x48127ff87fff8000", + "0x480680017fff8000", + "0x0", + "0x48127ff57fff8000", + "0x10780017fff7fff", + "0x8", + "0x48127ff87fff8000", + "0x48127ff87fff8000", + "0x480680017fff8000", + "0x1", + "0x480680017fff8000", + "0x0", + "0x20680017fff7ffe", + "0x2b", + "0x480080007fff8000", + "0xa0680017fff8000", + "0x16", + "0x480080007ff88003", + "0x480080017ff78003", + "0x4844800180017ffe", + "0x100000000000000000000000000000000", + "0x483080017ffd7ffb", + "0x482480017fff7ffd", + "0x800000000000010fffffffffffffffff7ffffffffffffef0000000000000001", + "0x20680017fff7ffc", + "0x6", + "0x402480017fff7ffd", + "0xffffffffffffffffffffffffffffffff", + "0x10780017fff7fff", + "0x4", + "0x402480017ffe7ffd", + "0xf7ffffffffffffef0000000000000000", + "0x400080027ff37ffd", + "0x20680017fff7ffe", + "0x12", + "0x402780017fff7fff", + "0x1", + "0x400080007ff87ffe", + "0x40780017fff7fff", + "0x5", + "0x482480017ff38000", + "0x1", + "0x48127ff47fff8000", + "0x48127ff47fff8000", + "0x480680017fff8000", + "0x0", + "0x48127fdd7fff8000", + "0x48127fe47fff8000", + "0x48127feb7fff8000", + "0x48127ff27fff8000", + "0x208b7fff7fff7ffe", + "0x482480017ff38000", + "0x3", + "0x10780017fff7fff", + "0x5", + "0x40780017fff7fff", + "0x7", + "0x48127ff37fff8000", + "0x48127ff47fff8000", + "0x48127ff47fff8000", + "0x480680017fff8000", + "0x1", + "0x480680017fff8000", + "0x0", + "0x480680017fff8000", + "0x0", + "0x480680017fff8000", + "0x0", + "0x480680017fff8000", + "0x0", + "0x208b7fff7fff7ffe", + "0x40780017fff7fff", + "0x8", + "0x482480017feb8000", + "0x3", + "0x10780017fff7fff", + "0x5", + "0x40780017fff7fff", + "0xf", + "0x48127feb7fff8000", + "0x48127fec7fff8000", + "0x48127fec7fff8000", + "0x480680017fff8000", + "0x1", + "0x480680017fff8000", + "0x0", + "0x480680017fff8000", + "0x0", + "0x480680017fff8000", + "0x0", + "0x480680017fff8000", + "0x0", + "0x208b7fff7fff7ffe", + "0x40780017fff7fff", + "0x10", + "0x482480017fe38000", + "0x3", + "0x10780017fff7fff", + "0x5", + "0x40780017fff7fff", + "0x17", + "0x48127fe37fff8000", + "0x48127fe47fff8000", + "0x48127fe47fff8000", + "0x480680017fff8000", + "0x1", + "0x480680017fff8000", + "0x0", + "0x480680017fff8000", + "0x0", + "0x480680017fff8000", + "0x0", + "0x480680017fff8000", + "0x0", + "0x208b7fff7fff7ffe", + "0x40780017fff7fff", + "0x18", + "0x482680017ffb8000", + "0x3", + "0x10780017fff7fff", + "0x5", + "0x40780017fff7fff", + "0x1f", + "0x480a7ffb7fff8000", + "0x48127fdc7fff8000", + "0x48127fdc7fff8000", + "0x480680017fff8000", + "0x1", + "0x480680017fff8000", + "0x0", + "0x480680017fff8000", + "0x0", + "0x480680017fff8000", + "0x0", + "0x480680017fff8000", + "0x0", + "0x208b7fff7fff7ffe", + "0x400380007ffd7ff6", + "0x400380017ffd7ff7", + "0x400380027ffd7ff8", + "0x400380037ffd7ff9", + "0x400380047ffd7ffa", + "0x400380057ffd7ffb", + "0x480a7ffc7fff8000", + "0x482680017ffd8000", + "0x6", + "0x208b7fff7fff7ffe" + ], + "bytecode_segment_lengths": [ + 102, + 114, + 517, + 285, + 10 + ], + "hints": [ + [ + 0, + [ + { + "TestLessThanOrEqual": { + "lhs": { + "Immediate": "0x0" + }, + "rhs": { + "Deref": { + "register": "FP", + "offset": -6 + } + }, + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 17, + [ + { + "AllocSegment": { + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 36, + [ + { + "TestLessThanOrEqual": { + "lhs": { + "Immediate": "0x0" + }, + "rhs": { + "Deref": { + "register": "AP", + "offset": -7 + } + }, + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 48, + [ + { + "AllocSegment": { + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 72, + [ + { + "AllocSegment": { + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 87, + [ + { + "AllocSegment": { + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 102, + [ + { + "TestLessThanOrEqual": { + "lhs": { + "Immediate": "0x3c" + }, + "rhs": { + "Deref": { + "register": "FP", + "offset": -6 + } + }, + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 125, + [ + { + "AllocSegment": { + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 144, + [ + { + "TestLessThanOrEqual": { + "lhs": { + "Immediate": "0x0" + }, + "rhs": { + "Deref": { + "register": "AP", + "offset": -55 + } + }, + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 156, + [ + { + "AllocSegment": { + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 172, + [ + { + "AllocSegment": { + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 187, + [ + { + "AllocSegment": { + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 201, + [ + { + "AllocSegment": { + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 216, + [ + { + "TestLessThanOrEqual": { + "lhs": { + "Immediate": "0x1158" + }, + "rhs": { + "Deref": { + "register": "FP", + "offset": -6 + } + }, + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 256, + [ + { + "TestLessThan": { + "lhs": { + "Deref": { + "register": "AP", + "offset": -1 + } + }, + "rhs": { + "Immediate": "0x100000000000000000000000000000000" + }, + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 258, + [ + { + "DivMod": { + "lhs": { + "Deref": { + "register": "AP", + "offset": -2 + } + }, + "rhs": { + "Immediate": "0x100000000000000000000000000000000" + }, + "quotient": { + "register": "AP", + "offset": 3 + }, + "remainder": { + "register": "AP", + "offset": 4 + } + } + } + ] + ], + [ + 303, + [ + { + "TestLessThan": { + "lhs": { + "Deref": { + "register": "AP", + "offset": -1 + } + }, + "rhs": { + "Immediate": "0x100000000000000000000000000000000" + }, + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 305, + [ + { + "DivMod": { + "lhs": { + "Deref": { + "register": "AP", + "offset": -2 + } + }, + "rhs": { + "Immediate": "0x100000000000000000000000000000000" + }, + "quotient": { + "register": "AP", + "offset": 3 + }, + "remainder": { + "register": "AP", + "offset": 4 + } + } + } + ] + ], + [ + 379, + [ + { + "AllocSegment": { + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 398, + [ + { + "TestLessThanOrEqual": { + "lhs": { + "Immediate": "0x5582" + }, + "rhs": { + "Deref": { + "register": "AP", + "offset": -81 + } + }, + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 416, + [ + { + "AllocSegment": { + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 430, + [ + { + "Uint512DivModByUint256": { + "dividend0": { + "Deref": { + "register": "AP", + "offset": -38 + } + }, + "dividend1": { + "Deref": { + "register": "AP", + "offset": -37 + } + }, + "dividend2": { + "Deref": { + "register": "AP", + "offset": -36 + } + }, + "dividend3": { + "Deref": { + "register": "AP", + "offset": -35 + } + }, + "divisor0": { + "Deref": { + "register": "AP", + "offset": -10 + } + }, + "divisor1": { + "Deref": { + "register": "AP", + "offset": -9 + } + }, + "quotient0": { + "register": "AP", + "offset": 0 + }, + "quotient1": { + "register": "AP", + "offset": 1 + }, + "quotient2": { + "register": "AP", + "offset": 2 + }, + "quotient3": { + "register": "AP", + "offset": 3 + }, + "remainder0": { + "register": "AP", + "offset": 4 + }, + "remainder1": { + "register": "AP", + "offset": 5 + } + } + } + ] + ], + [ + 448, + [ + { + "WideMul128": { + "lhs": { + "Deref": { + "register": "AP", + "offset": -19 + } + }, + "rhs": { + "Deref": { + "register": "AP", + "offset": -29 + } + }, + "high": { + "register": "AP", + "offset": -9 + }, + "low": { + "register": "AP", + "offset": -10 + } + } + }, + { + "WideMul128": { + "lhs": { + "Deref": { + "register": "AP", + "offset": -18 + } + }, + "rhs": { + "Deref": { + "register": "AP", + "offset": -29 + } + }, + "high": { + "register": "AP", + "offset": -7 + }, + "low": { + "register": "AP", + "offset": -8 + } + } + }, + { + "WideMul128": { + "lhs": { + "Deref": { + "register": "AP", + "offset": -19 + } + }, + "rhs": { + "Deref": { + "register": "AP", + "offset": -28 + } + }, + "high": { + "register": "AP", + "offset": -5 + }, + "low": { + "register": "AP", + "offset": -6 + } + } + }, + { + "WideMul128": { + "lhs": { + "Deref": { + "register": "AP", + "offset": -18 + } + }, + "rhs": { + "Deref": { + "register": "AP", + "offset": -28 + } + }, + "high": { + "register": "AP", + "offset": -3 + }, + "low": { + "register": "AP", + "offset": -4 + } + } + }, + { + "WideMul128": { + "lhs": { + "Deref": { + "register": "AP", + "offset": -17 + } + }, + "rhs": { + "Deref": { + "register": "AP", + "offset": -29 + } + }, + "high": { + "register": "AP", + "offset": -1 + }, + "low": { + "register": "AP", + "offset": -2 + } + } + } + ] + ], + [ + 477, + [ + { + "TestLessThan": { + "lhs": { + "Deref": { + "register": "AP", + "offset": -35 + } + }, + "rhs": { + "Deref": { + "register": "AP", + "offset": -46 + } + }, + "dst": { + "register": "AP", + "offset": 1 + } + } + } + ] + ], + [ + 489, + [ + { + "TestLessThan": { + "lhs": { + "Deref": { + "register": "AP", + "offset": -35 + } + }, + "rhs": { + "Deref": { + "register": "AP", + "offset": -48 + } + }, + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 504, + [ + { + "DivMod": { + "lhs": { + "Deref": { + "register": "AP", + "offset": -41 + } + }, + "rhs": { + "Immediate": "0x10000000000000000" + }, + "quotient": { + "register": "AP", + "offset": 1 + }, + "remainder": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 514, + [ + { + "DivMod": { + "lhs": { + "Deref": { + "register": "AP", + "offset": -1 + } + }, + "rhs": { + "Immediate": "0x10000000000000000" + }, + "quotient": { + "register": "AP", + "offset": 0 + }, + "remainder": { + "register": "AP", + "offset": 1 + } + } + } + ] + ], + [ + 525, + [ + { + "DivMod": { + "lhs": { + "Deref": { + "register": "AP", + "offset": 2 + } + }, + "rhs": { + "Immediate": "0x100000000000000000000000000000000" + }, + "quotient": { + "register": "AP", + "offset": -1 + }, + "remainder": { + "register": "AP", + "offset": -38 + } + } + } + ] + ], + [ + 534, + [ + { + "DivMod": { + "lhs": { + "Deref": { + "register": "AP", + "offset": -57 + } + }, + "rhs": { + "Immediate": "0x10000000000000000" + }, + "quotient": { + "register": "AP", + "offset": 1 + }, + "remainder": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 544, + [ + { + "DivMod": { + "lhs": { + "Deref": { + "register": "AP", + "offset": -1 + } + }, + "rhs": { + "Immediate": "0x10000000000000000" + }, + "quotient": { + "register": "AP", + "offset": 0 + }, + "remainder": { + "register": "AP", + "offset": 1 + } + } + } + ] + ], + [ + 555, + [ + { + "DivMod": { + "lhs": { + "Deref": { + "register": "AP", + "offset": 2 + } + }, + "rhs": { + "Immediate": "0x100000000000000000000000000000000" + }, + "quotient": { + "register": "AP", + "offset": -1 + }, + "remainder": { + "register": "AP", + "offset": -55 + } + } + } + ] + ], + [ + 564, + [ + { + "DivMod": { + "lhs": { + "Deref": { + "register": "AP", + "offset": -72 + } + }, + "rhs": { + "Immediate": "0x10000000000000000" + }, + "quotient": { + "register": "AP", + "offset": 1 + }, + "remainder": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 574, + [ + { + "DivMod": { + "lhs": { + "Deref": { + "register": "AP", + "offset": -1 + } + }, + "rhs": { + "Immediate": "0x10000000000000000" + }, + "quotient": { + "register": "AP", + "offset": 0 + }, + "remainder": { + "register": "AP", + "offset": 1 + } + } + } + ] + ], + [ + 585, + [ + { + "DivMod": { + "lhs": { + "Deref": { + "register": "AP", + "offset": 2 + } + }, + "rhs": { + "Immediate": "0x100000000000000000000000000000000" + }, + "quotient": { + "register": "AP", + "offset": -1 + }, + "remainder": { + "register": "AP", + "offset": -74 + } + } + } + ] + ], + [ + 594, + [ + { + "DivMod": { + "lhs": { + "Deref": { + "register": "AP", + "offset": -88 + } + }, + "rhs": { + "Immediate": "0x10000000000000000" + }, + "quotient": { + "register": "AP", + "offset": 1 + }, + "remainder": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 604, + [ + { + "DivMod": { + "lhs": { + "Deref": { + "register": "AP", + "offset": -1 + } + }, + "rhs": { + "Immediate": "0x10000000000000000" + }, + "quotient": { + "register": "AP", + "offset": 0 + }, + "remainder": { + "register": "AP", + "offset": 1 + } + } + } + ] + ], + [ + 615, + [ + { + "DivMod": { + "lhs": { + "Deref": { + "register": "AP", + "offset": 2 + } + }, + "rhs": { + "Immediate": "0x100000000000000000000000000000000" + }, + "quotient": { + "register": "AP", + "offset": -1 + }, + "remainder": { + "register": "AP", + "offset": -87 + } + } + } + ] + ], + [ + 624, + [ + { + "DivMod": { + "lhs": { + "Deref": { + "register": "AP", + "offset": -103 + } + }, + "rhs": { + "Immediate": "0x10000000000000000" + }, + "quotient": { + "register": "AP", + "offset": 1 + }, + "remainder": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 634, + [ + { + "DivMod": { + "lhs": { + "Deref": { + "register": "AP", + "offset": -1 + } + }, + "rhs": { + "Immediate": "0x10000000000000000" + }, + "quotient": { + "register": "AP", + "offset": 0 + }, + "remainder": { + "register": "AP", + "offset": 1 + } + } + } + ] + ], + [ + 645, + [ + { + "DivMod": { + "lhs": { + "Deref": { + "register": "AP", + "offset": 2 + } + }, + "rhs": { + "Immediate": "0x100000000000000000000000000000000" + }, + "quotient": { + "register": "AP", + "offset": -1 + }, + "remainder": { + "register": "AP", + "offset": -106 + } + } + } + ] + ], + [ + 654, + [ + { + "AllocSegment": { + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 675, + [ + { + "AllocSegment": { + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 690, + [ + { + "AllocSegment": { + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 704, + [ + { + "AllocSegment": { + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 718, + [ + { + "AllocSegment": { + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 755, + [ + { + "TestLessThan": { + "lhs": { + "Deref": { + "register": "AP", + "offset": -1 + } + }, + "rhs": { + "Immediate": "0x100000000000000000000000000000000" + }, + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 757, + [ + { + "DivMod": { + "lhs": { + "Deref": { + "register": "AP", + "offset": -2 + } + }, + "rhs": { + "Immediate": "0x100000000000000000000000000000000" + }, + "quotient": { + "register": "AP", + "offset": 3 + }, + "remainder": { + "register": "AP", + "offset": 4 + } + } + } + ] + ], + [ + 802, + [ + { + "TestLessThan": { + "lhs": { + "Deref": { + "register": "AP", + "offset": -1 + } + }, + "rhs": { + "Immediate": "0x100000000000000000000000000000000" + }, + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 804, + [ + { + "DivMod": { + "lhs": { + "Deref": { + "register": "AP", + "offset": -2 + } + }, + "rhs": { + "Immediate": "0x100000000000000000000000000000000" + }, + "quotient": { + "register": "AP", + "offset": 3 + }, + "remainder": { + "register": "AP", + "offset": 4 + } + } + } + ] + ], + [ + 849, + [ + { + "TestLessThan": { + "lhs": { + "Deref": { + "register": "AP", + "offset": -1 + } + }, + "rhs": { + "Immediate": "0x100000000000000000000000000000000" + }, + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 851, + [ + { + "DivMod": { + "lhs": { + "Deref": { + "register": "AP", + "offset": -2 + } + }, + "rhs": { + "Immediate": "0x100000000000000000000000000000000" + }, + "quotient": { + "register": "AP", + "offset": 3 + }, + "remainder": { + "register": "AP", + "offset": 4 + } + } + } + ] + ], + [ + 896, + [ + { + "TestLessThan": { + "lhs": { + "Deref": { + "register": "AP", + "offset": -1 + } + }, + "rhs": { + "Immediate": "0x100000000000000000000000000000000" + }, + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 898, + [ + { + "DivMod": { + "lhs": { + "Deref": { + "register": "AP", + "offset": -2 + } + }, + "rhs": { + "Immediate": "0x100000000000000000000000000000000" + }, + "quotient": { + "register": "AP", + "offset": 3 + }, + "remainder": { + "register": "AP", + "offset": 4 + } + } + } + ] + ] + ], + "entry_points_by_type": { + "EXTERNAL": [ + { + "selector": "0xbffc6a437c6d569cf809118ae879d8c29850d01d30ffbd358142e8ca9e2abd", + "offset": 102, + "builtins": [ + "range_check" + ] + }, + { + "selector": "0x1a51b32fb11323778cf7223ce2f741af61cf28f900e59fc300d44e7e8fa1af2", + "offset": 216, + "builtins": [ + "range_check" + ] + }, + { + "selector": "0x363f0fa4491d64ba1b2e461e750e272b424805998f3bd334a5f5b1acaa2aaf5", + "offset": 0, + "builtins": [ + "range_check" + ] + } + ], + "L1_HANDLER": [], + "CONSTRUCTOR": [] + } +} \ No newline at end of file diff --git a/__mocks__/cairo/cairo260/u512.sierra.json b/__mocks__/cairo/cairo260/u512.sierra.json new file mode 100644 index 000000000..1940f995c --- /dev/null +++ b/__mocks__/cairo/cairo260/u512.sierra.json @@ -0,0 +1,564 @@ +{ + "sierra_program": [ + "0x1", + "0x5", + "0x0", + "0x2", + "0x6", + "0x0", + "0xf4", + "0xc", + "0x20", + "0x52616e6765436865636b", + "0x800000000000000100000000000000000000000000000000", + "0x436f6e7374", + "0x800000000000000000000000000000000000000000000002", + "0x1", + "0x1e", + "0x2", + "0x4661696c656420746f20646573657269616c697a6520706172616d202332", + "0x75313238", + "0x800000000000000700000000000000000000000000000000", + "0x537472756374", + "0x800000000000000700000000000000000000000000000005", + "0x0", + "0x2907a9767b8e0b68c23345eea8650b1366373b598791523a07fddaa450ba526", + "0x800000000000000700000000000000000000000000000003", + "0x25e2ca4b84968c2d8b83ef476ca8549410346b00836ce79beaf538155990bb2", + "0x2ee1e2b1b89f8c495f200e4956278a4d47395fe262f27b52e5865c9524c08c3", + "0x3", + "0x4", + "0x553132384d756c47756172616e746565", + "0x4f7074696f6e3a3a756e77726170206661696c65642e", + "0x4e6f6e5a65726f", + "0x800000000000000700000000000000000000000000000001", + "0x800000000000000f00000000000000000000000000000001", + "0x456e756d", + "0x12867ecd09c884a5cf1f6d9eb0193b4695ce3bb3b2d796a8367d0c371f59cb2", + "0x9", + "0x426f78", + "0x29d7d57c04a880978e7b3689f6218e507f3be17588744b58dc17762447ad0e7", + "0xb", + "0x4661696c656420746f20646573657269616c697a6520706172616d202331", + "0x9ff3d80dd57f290c7231ed72006c73fd2ebf30f036ffb15a809d8e3ab4e2e2", + "0x4f7574206f6620676173", + "0x4172726179", + "0x800000000000000300000000000000000000000000000001", + "0x536e617073686f74", + "0x10", + "0x800000000000000700000000000000000000000000000002", + "0x1baeba72e79e9db2587cf44fedb2f3700b2075a5e8e39a562584862c4b71f62", + "0x11", + "0x12", + "0x33333333333333333333333333333333", + "0x22222222222222222222222222222222", + "0x11111111111111111111111111111111", + "0x4275696c74696e436f737473", + "0x53797374656d", + "0x16a4c8d7c05909052238a862d8cc3e7975bf05a07b3a69c6b28951083a6d672", + "0x800000000000000300000000000000000000000000000003", + "0x1a", + "0x9931c641b913035ae674b400b61a51476d506bbe8bba2ff8a6272790aba9e6", + "0x13", + "0x1b", + "0x496e70757420746f6f206c6f6e6720666f7220617267756d656e7473", + "0x66656c74323532", + "0x4761734275696c74696e", + "0x53", + "0x7265766f6b655f61705f747261636b696e67", + "0x77697468647261775f676173", + "0x6272616e63685f616c69676e", + "0x7374727563745f6465636f6e737472756374", + "0x73746f72655f74656d70", + "0x61727261795f736e617073686f745f706f705f66726f6e74", + "0x64726f70", + "0x61727261795f6e6577", + "0x636f6e73745f61735f696d6d656469617465", + "0x1d", + "0x61727261795f617070656e64", + "0x7374727563745f636f6e737472756374", + "0x656e756d5f696e6974", + "0x1c", + "0x1f", + "0x19", + "0x6765745f6275696c74696e5f636f737473", + "0x18", + "0x77697468647261775f6761735f616c6c", + "0x17", + "0x16", + "0x15", + "0x14", + "0x736e617073686f745f74616b65", + "0x647570", + "0x72656e616d65", + "0x753132385f746f5f66656c74323532", + "0xf", + "0x66756e6374696f6e5f63616c6c", + "0x656e756d5f6d61746368", + "0xe", + "0xd", + "0x656e61626c655f61705f747261636b696e67", + "0xc", + "0x6a756d70", + "0x756e626f78", + "0x75313238735f66726f6d5f66656c74323532", + "0xa", + "0x64697361626c655f61705f747261636b696e67", + "0x753235365f69735f7a65726f", + "0x7", + "0x753531325f736166655f6469766d6f645f62795f75323536", + "0x753132385f6d756c5f67756172616e7465655f766572696679", + "0x5", + "0x283", + "0xffffffffffffffff", + "0x5a", + "0x6", + "0x8", + "0x4d", + "0x21", + "0x22", + "0x23", + "0x24", + "0x25", + "0x26", + "0x27", + "0x28", + "0x29", + "0x2a", + "0x2b", + "0x2c", + "0x2d", + "0x2e", + "0x2f", + "0x30", + "0x31", + "0x32", + "0x33", + "0x34", + "0x35", + "0x36", + "0x37", + "0x38", + "0x39", + "0x3a", + "0x3b", + "0x3c", + "0x3d", + "0x3e", + "0x3f", + "0x40", + "0x41", + "0x42", + "0x43", + "0x44", + "0x45", + "0x46", + "0x47", + "0x48", + "0x49", + "0x4a", + "0x4b", + "0x4c", + "0x4e", + "0xd1", + "0xc2", + "0x82", + "0xb4", + "0x4f", + "0x50", + "0x51", + "0x52", + "0x54", + "0x1a6", + "0x197", + "0xef", + "0xf4", + "0x129", + "0x124", + "0x102", + "0x107", + "0x11a", + "0x114", + "0x131", + "0x11e", + "0x12c", + "0x186", + "0x146", + "0x176", + "0x15d", + "0x55", + "0x56", + "0x57", + "0x58", + "0x59", + "0x5b", + "0x5c", + "0x5d", + "0x5e", + "0x5f", + "0x60", + "0x61", + "0x62", + "0x63", + "0x64", + "0x65", + "0x66", + "0x67", + "0x68", + "0x69", + "0x6a", + "0x6b", + "0x6c", + "0x6d", + "0x6e", + "0x6f", + "0x70", + "0x71", + "0x72", + "0x73", + "0x74", + "0x75", + "0x76", + "0x77", + "0x78", + "0x79", + "0x7a", + "0x7b", + "0x7c", + "0x7d", + "0x7e", + "0x7f", + "0x80", + "0x1bb", + "0x1c0", + "0x24d", + "0x247", + "0x1d1", + "0x1d6", + "0x23d", + "0x236", + "0x1e7", + "0x1ec", + "0x22b", + "0x223", + "0x1fd", + "0x202", + "0x218", + "0x210", + "0x21e", + "0x231", + "0x242", + "0x251", + "0xdf", + "0x1b4", + "0x256", + "0x15d0", + "0x7050705100d0f0b07050705070507050e0d0c0b0a09080706050403020100", + "0x513051a0d0f19110d180b13051716150706050403021413051205110d0f0b", + "0x60504031b051205200d0f191f07060504031b051e051d0d0f190605171c1b", + "0x504032a07070504032905110d260b2805270d260b25051724060523222107", + "0x25053105110d300b2f0d180b022e0a2d0d07070504032c07070504032b0707", + "0x53d2905053c0d3b0d3a0d393802370a3635070605040334053305320d3019", + "0x44060505430605053d42050541060505401e05053f2805053f0605053e0d05", + "0x4a05053d0d494605053d4805053d4705053d05074605074534050544310505", + "0x3d1205053f12050550120505444f0505414e0505414d0505414c0505410d4b", + "0x5442505053f250505500d53070505520705053f1205053c12050551120505", + "0x50556121205552905053d2905053f540505410d0746050745330505442905", + "0x1b0505440d5b5a05053d2805053d0d075a0507450d59580505411b05053f57", + "0x3d0d075e050745130505440d5d060505520605055c5a05055605075a050745", + "0xd62610505410d601305053f0d5f5e0505560d05055205075e0507455e0505", + "0x5105050541131205552505053d6405053d6405053f64050550640505440d63", + "0x1305053c130505516405053c0507570507455705053d0d0757050745280505", + "0x1205120d0d66050d070d616807676413076607050d07050d0d66050d0d0d65", + "0xd0d66050d070d1e054e5e1b0766076905640d130566051305130d69056605", + "0x58055e0d580566050d1b0d5a0566050d690d0d66055e05610d0d66051b0568", + "0x570d25056605575407580d540566050d5a0d57056605585a071e0d58056605", + "0xd070566050705250d640566056405540d130566051305130d280566052505", + "0x66050d290d0d66051e05680d0d66050d070d28076413130528056605280528", + "0xd66050d070d4d4e076a4f33076607296413124f0d290566052905330d2905", + "0xd4a0d310566050d4c0d480566050d4d0d4a0566050d4e0d4c0566050d690d", + "0xd66054205340d06420766054605310d460566053431484a13480d34056605", + "0x5470d6d6c6b001366054705060d47060766050605420d060566050605460d", + "0x56e056b0d6e0566050005000d0d66056d05470d0d66056c05470d0d66056b", + "0x7473721366057105060d71060766050605420d700566056f4c071e0d6f0566", + "0xd760566057305000d0d66057505470d0d66057405470d0d66057205470d75", + "0x66057905060d79060766050605420d780566057770071e0d7705660576056b", + "0x57c05000d0d66057d05470d0d66057b05470d0d66057a05470d7d7c7b7a13", + "0x848382811366050605060d800566057f78071e0d7f0566057e056b0d7e0566", + "0x6b0d850566058405000d0d66058305470d0d66058205470d0d66058105470d", + "0xd660588056d0d898807660587056c0d870566058680071e0d860566058505", + "0x566053305130d8c0566058b05700d8b0566058a056f0d8a05660589056e0d", + "0x8c074f3313058c0566058c05280d070566050705250d4f0566054f05540d33", + "0x71e0d8e0566058e055e0d8e0566050d710d8d0566050d690d0d66050d070d", + "0xd920566059105570d910566058f9007580d900566050d5a0d8f0566058e8d", + "0x920566059205280d070566050705250d4d0566054d05540d4e0566054e0513", + "0x66050d710d930566050d690d0d66051205720d0d66050d070d92074d4e1305", + "0x959607580d960566050d5a0d950566059493071e0d9405660594055e0d9405", + "0x5250d610566056105540d680566056805130d970566056a05570d6a056605", + "0x7050d07050d0d66050d0d0d970761681305970566059705280d0705660507", + "0xd120566051205730d130566051305130d0d66050d070d6168079864130766", + "0x1b05120d0d66050d070d5a05991e0566075e05750d5e1b6912660512130774", + "0x610d0d66055705680d0d66050d070d25059a54570766075805640d58056605", + "0x529055e0d290566050d1b0d280566050d690d0d66051e05340d0d66055405", + "0x5570d4e056605334f07580d4f0566050d5a0d330566052928071e0d290566", + "0x280d070566050705250d640566056405540d690566056905130d4d0566054e", + "0x566050d290d0d66052505680d0d66050d070d4d07646913054d0566054d05", + "0xd0d66050d070d3431079b484a0766074c6469124f0d4c0566054c05330d4c", + "0x47060766050605420d0d66054205340d06420766051e05310d460566050d69", + "0x66056d05470d0d66056c05470d0d66056b05470d6d6c6b001366054705060d", + "0x50605420d700566056f46071e0d6f0566056e056b0d6e0566050005000d0d", + "0x470d0d66057405470d0d66057205470d757473721366057105060d71060766", + "0xd780566057770071e0d7705660576056b0d760566057305000d0d66057505", + "0x57b05470d0d66057a05470d7d7c7b7a1366057905060d7906076605060542", + "0x57f78071e0d7f0566057e056b0d7e0566057c05000d0d66057d05470d0d66", + "0x5470d0d66058205470d0d66058105470d848382811366050605060d800566", + "0x6c0d870566058680071e0d8605660585056b0d850566058405000d0d660583", + "0xd8b0566058a056f0d8a05660589056e0d0d660588056d0d89880766058705", + "0x70566050705250d480566054805540d4a0566054a05130d8c0566058b0570", + "0x50d690d0d66051e05340d0d66050d070d8c07484a13058c0566058c05280d", + "0x50d5a0d8f0566058e8d071e0d8e0566058e055e0d8e0566050d710d8d0566", + "0x5540d310566053105130d920566059105570d910566058f9007580d900566", + "0x50d070d920734311305920566059205280d070566050705250d3405660534", + "0xd940566050d770d930566050d690d0d66051b05720d0d66055a05760d0d66", + "0x56605959607580d960566050d5a0d950566059493071e0d9405660594055e", + "0x66050705250d640566056405540d690566056905130d970566056a05570d6a", + "0x690d0d66051205720d0d66050d070d970764691305970566059705280d0705", + "0x5a0d9e0566059d9c071e0d9d0566059d055e0d9d0566050d710d9c0566050d", + "0xd680566056805130da00566053805570d380566059e9f07580d9f0566050d", + "0xd0da00761681305a0056605a005280d070566050705250d61056605610554", + "0x566051305130d0d66050d070d616807a16413076607050d07050d0d66050d", + "0x5a05a21e0566075e05750d5e1b69126605121307740d120566051205730d13", + "0x5a354570766075805640d0d66050d780d580566051b05120d0d66050d070d", + "0x3305660528057b0d2905660557057a0d280566055405790d0d66050d070d25", + "0x25057a0d4e0566054f057e0d4f0566050d7d0d0d66050d070d0da4050d7c0d", + "0x800d0d66050d070d4c05a54d05660733057f0d330566054e057b0d29056605", + "0x31076607486907820d4805660548055e0d480566054a05810d4a0566054d05", + "0x5a700470766072905640d310566053105130d0d66050d070d06424612a634", + "0x6e0566056c057b0d6d05660547057a0d6c0566050005790d0d66050d070d6b", + "0x6b057a0d700566056f057e0d6f0566050d7d0d0d66050d070d0da8050d7c0d", + "0x800d0d66050d070d7205a9710566076e057f0d6e05660570057b0d6d056605", + "0x75076607743107820d7405660574055e0d740566057305810d730566057105", + "0x130d7b0566057a05840d7a056605763407830d0d66050d070d79787712aa76", + "0xd070d0dab050d7c0d7e0566057b05850d7d0566056d057a0d7c0566057505", + "0x566057705130d0d66053405470d0d66057905470d0d66057805470d0d6605", + "0x3105130d0d66053405470d0d66057205760d0d66050d070d0dac050d7c0d7f", + "0x6d057a0d7c0566057f05870d810566058005860d800566050d7d0d7f056605", + "0xd66054205470d0d66050d070d0dab050d7c0d7e0566058105850d7d056605", + "0x4c05760d0d66050d070d0dad050d7c0d820566054605130d0d66050605470d", + "0x58205870d840566058305860d830566050d7d0d820566056905130d0d6605", + "0xd8605ae850566077e05880d7e0566058405850d7d05660529057a0d7c0566", + "0x680d0d66050d890d0d66050d070d8905af88870766077d05640d0d66050d07", + "0x66050d690d0d66051e05340d0d660585058a0d0d66058805610d0d66058705", + "0x66050d5a0d8c0566058b8a071e0d8b0566058b055e0d8b0566050d1b0d8a05", + "0x6405540d7c0566057c05130d8f0566058e05570d8e0566058c8d07580d8d05", + "0x66050d070d8f07647c13058f0566058f05280d070566050705250d64056605", + "0x660790647c124f0d900566059005330d900566050d290d0d66058905680d0d", + "0x9505b10d660785058b0d910566059105130d0d66050d070d949307b0929107", + "0x66050d8c0d960566050d690d0d66051e05340d0d66050d890d0d66050d070d", + "0x979c07580d9c0566050d5a0d970566056a96071e0d6a0566056a055e0d6a05", + "0x5250d920566059205540d910566059105130d9e0566059d05570d9d056605", + "0xd66050d890d0d66050d070d9e07929113059e0566059e05280d0705660507", + "0xb567078e0d67056605b69f078e0db6b5b4b3b2a0389f696605951e91128d0d", + "0xba056605b2b9078e0db9056605b3b8078e0db8056605b4b7078e0db7056605", + "0x6605bd05910dbebd076605bc05900dbc056605a038078f0dbb0566050d690d", + "0x5bf056c0dbf056605bbbe07940dbb056605bb05930dbe056605be05920d0d", + "0xc305700dc3056605c2056f0dc2056605c1056e0d0d6605c0056d0dc1c00766", + "0x5280d070566050705250d920566059205540dba056605ba05130dc4056605", + "0xd0d660585058a0d0d66050d890d0d66050d070dc40792ba1305c4056605c4", + "0x71e0dc6056605c6055e0dc60566050d710dc50566050d690d0d66051e0534", + "0xdca056605c905570dc9056605c7c807580dc80566050d5a0dc7056605c6c5", + "0xca056605ca05280d070566050705250d940566059405540d93056605930513", + "0x66057d05680d0d66058605760d0d66050d890d0d66050d070dca0794931305", + "0xdcc056605cc055e0dcc0566050d950dcb0566050d690d0d66051e05340d0d", + "0x56605cf05570dcf056605cdce07580dce0566050d5a0dcd056605cccb071e", + "0x6605d005280d070566050705250d640566056405540d7c0566057c05130dd0", + "0xd690d0d66051b05720d0d66055a05760d0d66050d070dd007647c1305d005", + "0xd5a0dd3056605d2d1071e0dd2056605d2055e0dd20566050d770dd1056605", + "0x540d690566056905130dd6056605d505570dd5056605d3d407580dd4056605", + "0xd070dd60764691305d6056605d605280d070566050705250d640566056405", + "0x56605d8055e0dd80566050d710dd70566050d690d0d66051205720d0d6605", + "0x5db05570ddb056605d9da07580dda0566050d5a0dd9056605d8d7071e0dd8", + "0xdc05280d070566050705250d610566056105540d680566056805130ddc0566", + "0xd6405dd13120766070705640d070566050505120ddc0761681305dc056605", + "0x7c0d6905660568057b0d6105660512057a0d680566051305790d0d66050d07", + "0x660564057a0d5e0566051b057e0d1b0566050d7d0d0d66050d070d0dde050d", + "0x69057f0d5a0566051e056e0d1e610766056105960d690566055e057b0d6105", + "0x5e0d250566055405810d540566055805800d0d66050d070d5705df58056607", + "0x5a05720d0d66050d070d4e4f3312e02928076607250d07820d250566052505", + "0x790d0d66050d070d4a05e14c4d0766076105640d280566052805130d0d6605", + "0xd070d0de2050d7c0d3405660548057b0d310566054d057a0d480566054c05", + "0x542057b0d310566054a057a0d4205660546057e0d460566050d7d0d0d6605", + "0x6b05e30005660734057f0d4705660506056e0d06310766053105960d340566", + "0xd6d0566056d055e0d6d0566056c05810d6c0566050005800d0d66050d070d", + "0x6e05130d0d66054705720d0d66050d070d72717012e46f6e0766076d280782", + "0xd760566057405790d0d66050d070d7505e574730766073105640d6e056605", + "0x50d7d0d0d66050d070d0de6050d7c0d7805660576057b0d7705660573057a", + "0x7705960d780566057a057b0d7705660575057a0d7a05660579057e0d790566", + "0xd0d66050d070d7e05e77d05660778057f0d7c0566057b056e0d7b77076605", + "0x76607806e07820d8005660580055e0d800566057f05810d7f0566057d0580", + "0x5640d810566058105130d0d66057c05720d0d66050d070d85848312e88281", + "0x8a05660586057a0d890566058705790d0d66050d070d8805e9878607660777", + "0x8c057e0d8c0566050d7d0d0d66050d070d0dea050d7c0d8b05660589057b0d", + "0x57f0d8e0566058a056e0d8b0566058d057b0d8a05660588057a0d8d056605", + "0xd920566059105810d910566058f05800d0d66050d070d9005eb8f0566078b", + "0x13480d0d66050d070d6a969512ec9493076607928107820d9205660592055e", + "0x566058e05730d930566059305130d9c05660597056a0d9705660594826f29", + "0x6a05470d0d66059605470d0d66050d070d9c8e9312059c0566059c05970d8e", + "0x566059505130d0d66058205470d0d66056f05470d0d66052905470d0d6605", + "0x6f05470d0d66052905470d0d66059005760d0d66050d070d0ded050d7c0d9d", + "0x66059e059c0d9e0566050d7d0d9d0566058105130d0d66058205470d0d6605", + "0x470d0d66050d070d9f8e9d12059f0566059f05970d8e0566058e05730d9f05", + "0x56f05470d0d66057705680d0d66052905470d0d66058505470d0d66058405", + "0x470d0d66057e05760d0d66050d070d0dee050d7c0d380566058305130d0d66", + "0x50d7d0d380566056e05130d0d66056f05470d0d66057705680d0d66052905", + "0x7c381205b2056605b205970d7c0566057c05730db2056605a0059c0da00566", + "0x5680d0d66052905470d0d66057205470d0d66057105470d0d66050d070db2", + "0xd66056b05760d0d66050d070d0def050d7c0db30566057005130d0d660531", + "0x9c0db40566050d7d0db30566052805130d0d66053105680d0d66052905470d", + "0x50d070db547b31205b5056605b505970d470566054705730db5056605b405", + "0xb60566053305130d0d66056105680d0d66054e05470d0d66054f05470d0d66", + "0x50d05130d0d66056105680d0d66055705760d0d66050d070d0df0050d7c0d", + "0x5b705970d5a0566055a05730db705660567059c0d670566050d7d0db60566", + "0x51305060d13070766050705420d12070766050d059d0db75ab61205b70566", + "0x6405000d0d66056905470d0d66056105470d0d66056805470d696168641366", + "0xd5a070766050705420d1e0566055e05071e0d5e0566051b056b0d1b056605", + "0xd66052505470d0d66055405470d0d66055805470d255457581366055a0506", + "0x66050705420d33056605291e071e0d2905660528056b0d280566055705000d", + "0x5470d0d66054d05470d0d66054e05470d4a4c4d4e1366054f05060d4f0707", + "0x60d340566053133071e0d3105660548056b0d480566054c05000d0d66054a", + "0xd0d66050605470d0d66054205470d0d66054605470d470642461366050705", + "0x7660512059e0d6c0566056b34071e0d6b05660500056b0d00056605470500", + "0x570056b0d700566056e05000d0d66056f05470d6f6e0766056d059f0d6d12", + "0x5000d0d66057305470d747307660512059f0d72056605716c071e0d710566", + "0x5770566057705930d770566057672071e0d7605660575056b0d7505660574", + "0x7050d4648470d132948470d130d1207050d4648470d132948470d13647705", + "0x5256407f2050d57290d12290d07f11207050d4648470d132948470d13c412", + "0xf3050d25" + ], + "sierra_program_debug_info": { + "type_names": [], + "libfunc_names": [], + "user_func_names": [] + }, + "contract_class_version": "0.1.0", + "entry_points_by_type": { + "EXTERNAL": [ + { + "selector": "0xbffc6a437c6d569cf809118ae879d8c29850d01d30ffbd358142e8ca9e2abd", + "function_idx": 1 + }, + { + "selector": "0x1a51b32fb11323778cf7223ce2f741af61cf28f900e59fc300d44e7e8fa1af2", + "function_idx": 2 + }, + { + "selector": "0x363f0fa4491d64ba1b2e461e750e272b424805998f3bd334a5f5b1acaa2aaf5", + "function_idx": 0 + } + ], + "L1_HANDLER": [], + "CONSTRUCTOR": [] + }, + "abi": [ + { + "type": "impl", + "name": "Uint512", + "interface_name": "u512::u512::IUint512" + }, + { + "type": "struct", + "name": "core::integer::u512", + "members": [ + { + "name": "limb0", + "type": "core::integer::u128" + }, + { + "name": "limb1", + "type": "core::integer::u128" + }, + { + "name": "limb2", + "type": "core::integer::u128" + }, + { + "name": "limb3", + "type": "core::integer::u128" + } + ] + }, + { + "type": "struct", + "name": "core::integer::u256", + "members": [ + { + "name": "low", + "type": "core::integer::u128" + }, + { + "name": "high", + "type": "core::integer::u128" + } + ] + }, + { + "type": "interface", + "name": "u512::u512::IUint512", + "items": [ + { + "type": "function", + "name": "get_u512", + "inputs": [], + "outputs": [ + { + "type": "core::integer::u512" + } + ], + "state_mutability": "view" + }, + { + "type": "function", + "name": "return_u512", + "inputs": [ + { + "name": "my_u512", + "type": "core::integer::u512" + } + ], + "outputs": [ + { + "type": "core::integer::u512" + } + ], + "state_mutability": "view" + }, + { + "type": "function", + "name": "div_u512", + "inputs": [ + { + "name": "my_u512", + "type": "core::integer::u512" + }, + { + "name": "divisor", + "type": "core::integer::u256" + } + ], + "outputs": [ + { + "type": "(core::integer::u512, core::integer::u256)" + } + ], + "state_mutability": "view" + } + ] + }, + { + "type": "event", + "name": "u512::u512::TestUint512::Event", + "kind": "enum", + "variants": [] + } + ] +} diff --git a/__tests__/cairo1v2.test.ts b/__tests__/cairo1v2.test.ts index 5520fc876..a83685d0c 100644 --- a/__tests__/cairo1v2.test.ts +++ b/__tests__/cairo1v2.test.ts @@ -6,6 +6,8 @@ import { CairoOptionVariant, CairoResult, CairoResultVariant, + CairoUint256, + CairoUint512, CallData, Calldata, CompiledSierra, @@ -22,6 +24,7 @@ import { shortString, stark, types, + type Uint512, } from '../src'; import { hexToDecimalString } from '../src/utils/num'; import { encodeShortString } from '../src/utils/shortString'; @@ -41,6 +44,8 @@ import { compiledHelloSierra, compiledTuple, compiledTupleCasm, + compiledU512, + compiledU512Casm, getTestAccount, getTestProvider, } from './config/fixtures'; @@ -1178,4 +1183,80 @@ describe('Cairo 1', () => { ); }); }); + + describe('cairo u512 type', () => { + let u512Contract: Contract; + const myU512 = + '0x33333333333333333333333333333333222222222222222222222222222222221111111111111111111111111111111100000000000000000000000000000000'; + const serializedU512 = new CairoUint512({ + limb0: '0x00000000000000000000000000000000', + limb1: '0x11111111111111111111111111111111', + limb2: '0x22222222222222222222222222222222', + limb3: '0x33333333333333333333333333333333', + }); + const myUint256 = new CairoUint256('0x55544444433233223222222122112111111011001'); + + beforeAll(async () => { + const { deploy } = await account.declareAndDeploy({ + contract: compiledU512, + casm: compiledU512Casm, + }); + + u512Contract = new Contract(compiledU512.abi, deploy.contract_address, account); + }); + + test('u512 compile', async () => { + const u512_1: Uint512 = cairo.uint512(myU512); + expect(u512_1).toEqual({ + limb0: '0', + limb1: '22685491128062564230891640495451214097', + limb2: '45370982256125128461783280990902428194', + limb3: '68056473384187692692674921486353642291', + }); + + const myCalldata1 = CallData.compile([u512_1]); + const myCalldata2 = CallData.compile({ my_u512: u512_1 }); + const expected1 = [ + '0', + '22685491128062564230891640495451214097', + '45370982256125128461783280990902428194', + '68056473384187692692674921486353642291', + ]; + expect(myCalldata1).toEqual(expected1); + expect(myCalldata2).toEqual(expected1); + + const myCallData = new CallData(u512Contract.abi); + const myCalldata3 = myCallData.compile('div_u512', { + my_u512: serializedU512, + divisor: myUint256, + }); + const myCalldata4 = myCallData.compile('div_u512', [serializedU512, myUint256]); + const expected2 = [ + '0', + '22685491128062564230891640495451214097', + '45370982256125128461783280990902428194', + '68056473384187692692674921486353642291', + '67973375079109053774543167123544412161', + '22905373764', + ]; + expect(myCalldata3).toEqual(expected2); + expect(myCalldata4).toEqual(expected2); + + const myCall1 = u512Contract.populate('return_u512', { my_u512: serializedU512 }); + const myCall2 = u512Contract.populate('return_u512', [serializedU512]); + expect(myCall1.calldata).toEqual(expected1); + expect(myCall2.calldata).toEqual(expected1); + }); + + test('u512 call', async () => { + const resp1 = await u512Contract.div_u512(myU512, myUint256); + const expected = { + '0': 344041591305341143461698062540412331701024044049418150896694357470676311354588133518143452261258807949095n, + '1': 3408778323931873632420467616107826476746211809497n, + }; + expect(resp1).toEqual(expected); + const resp2 = await u512Contract.call('div_u512', [serializedU512, myUint256]); + expect(resp2).toEqual(expected); + }); + }); }); diff --git a/__tests__/config/fixtures.ts b/__tests__/config/fixtures.ts index 65bfd68f6..9371f9ee9 100644 --- a/__tests__/config/fixtures.ts +++ b/__tests__/config/fixtures.ts @@ -50,6 +50,8 @@ export const compiledC260 = readContractSierra('cairo/cairo260/hello260.sierra') export const compiledC260Casm = readContractSierraCasm('cairo/cairo260/hello260'); export const compiledTuple = readContractSierra('cairo/cairo253/tupleResponse.sierra'); export const compiledTupleCasm = readContractSierraCasm('cairo/cairo253/tupleResponse'); +export const compiledU512 = readContractSierra('cairo/cairo260/u512.sierra'); +export const compiledU512Casm = readContractSierraCasm('cairo/cairo260/u512'); // StarknetId export const compiledStarknetId = readContractSierra('starknetId/identity/identity.sierra'); export const compiledStarknetIdCasm = readContractSierraCasm('starknetId/identity/identity'); diff --git a/__tests__/utils/CairoTypes/uint512.test.ts b/__tests__/utils/CairoTypes/uint512.test.ts new file mode 100644 index 000000000..62437c688 --- /dev/null +++ b/__tests__/utils/CairoTypes/uint512.test.ts @@ -0,0 +1,226 @@ +/* eslint-disable no-new */ +import { UINT_128_MAX, Uint512, num } from '../../../src'; +import { + CairoUint512, + UINT_128_MIN, + UINT_512_MAX, + UINT_512_MIN, +} from '../../../src/utils/cairoDataTypes/uint512'; + +describe('CairoUint512 class test', () => { + test('constructor 1 should throw on < UINT_512_MIN', () => { + expect(() => { + new CairoUint512(UINT_512_MIN - 1n); + }).toThrow('bigNumberish is smaller than UINT_512_MIN'); + }); + + test('constructor 1 should throw on > UINT_512_MAX', () => { + expect(() => { + new CairoUint512(UINT_512_MAX + 1n); + }).toThrow('bigNumberish is bigger than UINT_512_MAX'); + }); + + test('constructor 1 should support BigNumberish', () => { + const case1 = new CairoUint512(10n); + const case2 = new CairoUint512(10); + const case3 = new CairoUint512('10'); + const case4 = new CairoUint512('0xA'); + expect(case1.toBigInt()).toBe(10n); + expect(case2.toBigInt()).toBe(10n); + expect(case3.toBigInt()).toBe(10n); + expect(case4.toBigInt()).toBe(10n); + }); + + test('constructor 2 (limb0, limb1, limb2, limb3)', () => { + const u512 = new CairoUint512(1000, 1001, 1002, 1003); + expect(u512.toApiRequest()).toEqual(['1000', '1001', '1002', '1003']); + }); + + test('constructor 2 should throw out of bounds', () => { + expect(() => { + new CairoUint512(UINT_128_MIN - 1n, 1000, 1000, 1000); + }).toThrow('limb0 is not in the range of a u128 number'); + expect(() => { + new CairoUint512(UINT_128_MAX + 1n, 1000, 1000, 1000); + }).toThrow('limb0 is not in the range of a u128 number'); + expect(() => { + new CairoUint512(1000, UINT_128_MIN - 1n, 1000, 1000); + }).toThrow('limb1 is not in the range of a u128 number'); + expect(() => { + new CairoUint512(1000, UINT_128_MAX + 1n, 1000, 1000); + }).toThrow('limb1 is not in the range of a u128 number'); + expect(() => { + new CairoUint512(1000, 1000, UINT_128_MIN - 1n, 1000); + }).toThrow('limb2 is not in the range of a u128 number'); + expect(() => { + new CairoUint512(1000, 1000, UINT_128_MAX + 1n, 1000); + }).toThrow('limb2 is not in the range of a u128 number'); + expect(() => { + new CairoUint512(1000, 1000, 1000, UINT_128_MIN - 1n); + }).toThrow('limb3 is not in the range of a u128 number'); + expect(() => { + new CairoUint512(1000, 1000, 1000, UINT_128_MAX + 1n); + }).toThrow('limb3 is not in the range of a u128 number'); + }); + + test('constructor 2 should support Uint512 {limb0, limb1, limb2, limb3}', () => { + const cases: Uint512[] = []; + cases[cases.length] = new CairoUint512({ limb0: 1000, limb1: 1001, limb2: 1002, limb3: 1003 }); + cases[cases.length] = new CairoUint512({ + limb0: '1000', + limb1: '1001', + limb2: '1002', + limb3: '1003', + }); + cases[cases.length] = new CairoUint512({ + limb0: 1000n, + limb1: 1001n, + limb2: 1002n, + limb3: 1003n, + }); + cases[cases.length] = new CairoUint512({ + limb0: '0x3e8', + limb1: '0x3e9', + limb2: '0x3ea', + limb3: '0x3eb', + }); + expect( + cases.every((it) => { + return it.limb0 === 1000n && it.limb1 === 1001n && it.limb2 === 1002n && it.limb3 === 1003n; + }) + ).toEqual(true); + }); + + test('constructor 3 ({limb0, limb1, limb2, limb3})', () => { + const u512 = new CairoUint512({ limb0: 1000, limb1: 1001, limb2: 1002, limb3: 1003 }); + expect(u512.toApiRequest()).toEqual(['1000', '1001', '1002', '1003']); + }); + + test('constructor 3 should throw out of bounds', () => { + expect(() => { + new CairoUint512({ limb0: UINT_128_MIN - 1n, limb1: 1001, limb2: 1002, limb3: 1003 }); + }).toThrow('limb0 is not in the range of a u128 number'); + expect(() => { + new CairoUint512({ limb0: UINT_128_MAX + 1n, limb1: 1001, limb2: 1002, limb3: 1003 }); + }).toThrow('limb0 is not in the range of a u128 number'); + expect(() => { + new CairoUint512({ limb0: 1000, limb1: UINT_128_MIN - 1n, limb2: 1002, limb3: 1003 }); + }).toThrow('limb1 is not in the range of a u128 number'); + expect(() => { + new CairoUint512({ limb0: 1000, limb1: UINT_128_MAX + 1n, limb2: 1002, limb3: 1003 }); + }).toThrow('limb1 is not in the range of a u128 number'); + expect(() => { + new CairoUint512({ limb0: 1000, limb1: 1001, limb2: UINT_128_MIN - 1n, limb3: 1003 }); + }).toThrow('limb2 is not in the range of a u128 number'); + expect(() => { + new CairoUint512({ limb0: 1000, limb1: 1001, limb2: UINT_128_MAX + 1n, limb3: 1003 }); + }).toThrow('limb2 is not in the range of a u128 number'); + expect(() => { + new CairoUint512({ limb0: 1000, limb1: 1001, limb2: 1002, limb3: UINT_128_MIN - 1n }); + }).toThrow('limb3 is not in the range of a u128 number'); + expect(() => { + new CairoUint512({ limb0: 1000, limb1: 1001, limb2: 1002, limb3: UINT_128_MAX + 1n }); + }).toThrow('limb3 is not in the range of a u128 number'); + }); + + test('validate should throw on < UINT_512_MIN', () => { + expect(() => { + CairoUint512.validate(UINT_512_MIN - 1n); + }).toThrow('bigNumberish is smaller than UINT_512_MIN'); + }); + + test('validate should throw on > UINT_512_MAX', () => { + expect(() => { + CairoUint512.validate(UINT_512_MAX + 1n); + }).toThrow('bigNumberish is bigger than UINT_512_MAX'); + }); + + test('validate should pass and return bigint', () => { + const validate = CairoUint512.validate(UINT_512_MAX); + expect(typeof validate).toBe('bigint'); + }); + + test('validateProps should pass', () => { + expect(CairoUint512.validateProps(1000, 1001, 1002, 1003)).toEqual({ + limb0: 1000n, + limb1: 1001n, + limb2: 1002n, + limb3: 1003n, + }); + }); + + test('validateProps out of range', () => { + expect(() => { + CairoUint512.validateProps(UINT_128_MIN - 1n, 1001, 1002, 1003); + }).toThrow('limb0 is not in the range of a u128 number'); + expect(() => { + CairoUint512.validateProps(UINT_128_MAX + 1n, 1001, 1002, 1003); + }).toThrow('limb0 is not in the range of a u128 number'); + expect(() => { + CairoUint512.validateProps(1000, UINT_128_MIN - 1n, 1002, 1003); + }).toThrow('limb1 is not in the range of a u128 number'); + expect(() => { + CairoUint512.validateProps(1000, UINT_128_MAX + 1n, 1002, 1003); + }).toThrow('limb1 is not in the range of a u128 number'); + expect(() => { + CairoUint512.validateProps(1000, 1001, UINT_128_MIN - 1n, 1003); + }).toThrow('limb2 is not in the range of a u128 number'); + expect(() => { + CairoUint512.validateProps(1000, 1001, UINT_128_MAX + 1n, 1003); + }).toThrow('limb2 is not in the range of a u128 number'); + expect(() => { + CairoUint512.validateProps(1000, 1001, 1002, UINT_128_MIN - 1n); + }).toThrow('limb3 is not in the range of a u128 number'); + expect(() => { + CairoUint512.validateProps(1000, 1001, 1002, UINT_128_MAX + 1n); + }).toThrow('limb3 is not in the range of a u128 number'); + }); + + test('isAbiType', () => { + expect(CairoUint512.isAbiType('core::integer::u512')).toBe(true); + }); + + test('is should return true', () => { + const is = CairoUint512.is(UINT_512_MIN); + expect(is).toBe(true); + }); + + test('is should return false', () => { + const is = CairoUint512.is(UINT_512_MAX + 1n); + expect(is).toBe(false); + }); + + test('should convert UINT_512_MAX to Uint512 bigint', () => { + const numb = + '0x33333333333333333333333333333333222222222222222222222222222222221111111111111111111111111111111100000000000000000000000000000000'; + const u512 = new CairoUint512(numb); + const u512bigint = u512.toBigInt(); + expect(num.toHex(u512bigint)).toBe(numb); + }); + + test('should convert UINT_512_MAX to Uint512 dec struct', () => { + const numb = + '0x33333333333333333333333333333333222222222222222222222222222222221111111111111111111111111111111100000000000000000000000000000000'; + const u512 = new CairoUint512(numb); + const u512Hex = u512.toUint512DecimalString(); + expect(u512Hex).toEqual({ + limb0: '0', + limb1: '22685491128062564230891640495451214097', + limb2: '45370982256125128461783280990902428194', + limb3: '68056473384187692692674921486353642291', + }); + }); + + test('should convert UINT_512_MAX to Uint512 hex struct', () => { + const numb = + '0x33333333333333333333333333333333222222222222222222222222222222221111111111111111111111111111111100000000000000000000000000000000'; + const u512 = new CairoUint512(numb); + const u512Decimal = u512.toUint512HexString(); + expect(u512Decimal).toEqual({ + limb0: '0x0', + limb1: '0x11111111111111111111111111111111', + limb2: '0x22222222222222222222222222222222', + limb3: '0x33333333333333333333333333333333', + }); + }); +}); diff --git a/__tests__/utils/uint256.test.ts b/__tests__/utils/uint256.test.ts index f78332d95..c838f837c 100644 --- a/__tests__/utils/uint256.test.ts +++ b/__tests__/utils/uint256.test.ts @@ -25,6 +25,24 @@ describe('cairo uint256', () => { `); }); + test('uint512 should not convert -1 to uint512 dec struct', () => { + expect(() => { + cairo.uint512(-1n); + }).toThrow('bigNumberish is smaller than UINT_512_MIN'); + }); + + test('uint512 should convert to uint512 dec struct', () => { + const uint512 = cairo.uint512( + '0x33333333333333333333333333333333222222222222222222222222222222221111111111111111111111111111111100000000000000000000000000000000' + ); + expect(uint512).toEqual({ + limb0: '0', + limb1: '22685491128062564230891640495451214097', + limb2: '45370982256125128461783280990902428194', + limb3: '68056473384187692692674921486353642291', + }); + }); + test('should convert 0 from BN to uint256 struct', () => { const uint256 = bnToUint256(0n); expect(uint256).toMatchInlineSnapshot(` diff --git a/src/index.ts b/src/index.ts index ec85e525d..8b4e5a63e 100644 --- a/src/index.ts +++ b/src/index.ts @@ -33,6 +33,8 @@ export * as starknetId from './utils/starknetId'; export * as provider from './utils/provider'; export * as selector from './utils/selector'; export * as events from './utils/events/index'; +export * from './utils/cairoDataTypes/uint256'; +export * from './utils/cairoDataTypes/uint512'; export * from './utils/address'; export * from './utils/url'; export * from './utils/calldata'; diff --git a/src/types/calldata.ts b/src/types/calldata.ts index ae5558726..7e5203b71 100644 --- a/src/types/calldata.ts +++ b/src/types/calldata.ts @@ -11,6 +11,7 @@ export enum Uint { u64 = 'core::integer::u64', u128 = 'core::integer::u128', u256 = 'core::integer::u256', // This one is struct + u512 = 'core::integer::u512', // This one is struct } export enum Literal { diff --git a/src/types/lib/index.ts b/src/types/lib/index.ts index db718e7ad..d70f2d9de 100644 --- a/src/types/lib/index.ts +++ b/src/types/lib/index.ts @@ -32,6 +32,18 @@ export interface Uint256 { high: BigNumberish; } +/** + * Represents an integer in the range [0, 2^256) + */ +export interface Uint512 { + // The lowest 128 bits of the value + limb0: BigNumberish; + limb1: BigNumberish; + limb2: BigNumberish; + // The higher 128 bits of the value + limb3: BigNumberish; +} + /** * BigNumberish array * use CallData.compile() to convert to Calldata diff --git a/src/utils/cairoDataTypes/uint512.ts b/src/utils/cairoDataTypes/uint512.ts new file mode 100644 index 000000000..0e059af7e --- /dev/null +++ b/src/utils/cairoDataTypes/uint512.ts @@ -0,0 +1,176 @@ +/* eslint-disable no-bitwise */ +/** + * Singular class handling cairo u512 data type + */ + +import { BigNumberish, type Uint512 } from '../../types'; +import { addHexPrefix } from '../encode'; +import { CairoFelt } from './felt'; +import { UINT_128_MAX } from './uint256'; + +export const UINT_512_MAX = (1n << 512n) - 1n; +export const UINT_512_MIN = 0n; +export const UINT_128_MIN = 0n; + +export class CairoUint512 { + public limb0: bigint; + + public limb1: bigint; + + public limb2: bigint; + + public limb3: bigint; + + static abiSelector = 'core::integer::u512'; + + /** + * Default constructor (Lib usage) + * @param bigNumberish BigNumberish value representing uin256 + */ + public constructor(bigNumberish: BigNumberish); + /** + * Direct props initialization (Api response) + */ + public constructor( + limb0: BigNumberish, + limb1: BigNumberish, + limb2: BigNumberish, + limb3: BigNumberish + ); + /** + * Initialization from Uint512 object + */ + public constructor(uint512: Uint512); + + public constructor(...arr: any[]) { + if ( + typeof arr[0] === 'object' && + arr.length === 1 && + 'limb0' in arr[0] && + 'limb1' in arr[0] && + 'limb2' in arr[0] && + 'limb3' in arr[0] + ) { + const props = CairoUint512.validateProps( + arr[0].limb0, + arr[0].limb1, + arr[0].limb2, + arr[0].limb3 + ); + this.limb0 = props.limb0; + this.limb1 = props.limb1; + this.limb2 = props.limb2; + this.limb3 = props.limb3; + } else if (arr.length === 1) { + const bigInt = CairoUint512.validate(arr[0]); + this.limb0 = bigInt & UINT_128_MAX; + this.limb1 = (bigInt & (UINT_128_MAX << 128n)) >> 128n; + this.limb2 = (bigInt & (UINT_128_MAX << 256n)) >> 256n; + this.limb3 = bigInt >> 384n; + } else if (arr.length === 4) { + const props = CairoUint512.validateProps(arr[0], arr[1], arr[2], arr[3]); + this.limb0 = props.limb0; + this.limb1 = props.limb1; + this.limb2 = props.limb2; + this.limb3 = props.limb3; + } else { + throw Error('Incorrect Uint512 constructor parameters'); + } + } + + /** + * Validate if BigNumberish can be represented as Uint512 + */ + static validate(bigNumberish: BigNumberish): bigint { + const bigInt = BigInt(bigNumberish); + if (bigInt < UINT_512_MIN) throw Error('bigNumberish is smaller than UINT_512_MIN.'); + if (bigInt > UINT_512_MAX) throw Error('bigNumberish is bigger than UINT_512_MAX.'); + return bigInt; + } + + /** + * Validate if limbs can be represented as Uint512 + */ + static validateProps( + limb0: BigNumberish, + limb1: BigNumberish, + limb2: BigNumberish, + limb3: BigNumberish + ): { limb0: bigint; limb1: bigint; limb2: bigint; limb3: bigint } { + const l0 = BigInt(limb0); + const l1 = BigInt(limb1); + const l2 = BigInt(limb2); + const l3 = BigInt(limb3); + [l0, l1, l2, l3].forEach((value: bigint, index) => { + if (value < UINT_128_MIN || value > UINT_128_MAX) { + throw Error(`limb${index} is not in the range of a u128 number`); + } + }); + return { limb0: l0, limb1: l1, limb2: l2, limb3: l3 }; + } + + /** + * Check if BigNumberish can be represented as Uint512 + */ + static is(bigNumberish: BigNumberish): boolean { + try { + CairoUint512.validate(bigNumberish); + } catch (error) { + return false; + } + return true; + } + + /** + * Check if provided abi type is this data type + */ + static isAbiType(abiType: string): boolean { + return abiType === CairoUint512.abiSelector; + } + + /** + * Return bigint representation + */ + toBigInt(): bigint { + return (this.limb3 << 384n) + (this.limb2 << 256n) + (this.limb1 << 128n) + this.limb0; + } + + /** + * Return Uint512 structure with HexString props + * limbx: HexString + */ + toUint512HexString() { + return { + limb0: addHexPrefix(this.limb0.toString(16)), + limb1: addHexPrefix(this.limb1.toString(16)), + limb2: addHexPrefix(this.limb2.toString(16)), + limb3: addHexPrefix(this.limb3.toString(16)), + }; + } + + /** + * Return Uint512 structure with DecimalString props + * limbx DecString + */ + toUint512DecimalString() { + return { + limb0: this.limb0.toString(10), + limb1: this.limb1.toString(10), + limb2: this.limb2.toString(10), + limb3: this.limb3.toString(10), + }; + } + + /** + * Return api requests representation witch is felt array + */ + toApiRequest(): string[] { + // lower limb first : https://github.com/starkware-libs/cairo/blob/07484c52791b76abcc18fd86265756904557d0d2/corelib/src/test/integer_test.cairo#L767 + return [ + CairoFelt(this.limb0), + CairoFelt(this.limb1), + CairoFelt(this.limb2), + CairoFelt(this.limb3), + ]; + } +} diff --git a/src/utils/calldata/cairo.ts b/src/utils/calldata/cairo.ts index a049b969d..8a6e63441 100644 --- a/src/utils/calldata/cairo.ts +++ b/src/utils/calldata/cairo.ts @@ -7,9 +7,11 @@ import { Literal, Uint, Uint256, + Uint512, } from '../../types'; import { CairoFelt } from '../cairoDataTypes/felt'; import { CairoUint256 } from '../cairoDataTypes/uint256'; +import { CairoUint512 } from '../cairoDataTypes/uint512'; // Intended for internal usage, maybe should be exported somewhere else and not exported to utils export const isLen = (name: string) => /_len$/.test(name); @@ -104,6 +106,19 @@ export const uint256 = (it: BigNumberish): Uint256 => { return new CairoUint256(it).toUint256DecimalString(); }; +/** + * Create Uint512 Cairo type (helper for common struct type) + * @param it BigNumberish representation of a 512 bits unsigned number + * @returns Uint512 struct + * @example + * ```typescript + * uint512('345745685892349863487563453485768723498'); + * ``` + */ +export const uint512 = (it: BigNumberish): Uint512 => { + return new CairoUint512(it).toUint512DecimalString(); +}; + /** * Create unnamed tuple Cairo type (helper same as common struct type) * @example diff --git a/src/utils/calldata/propertyOrder.ts b/src/utils/calldata/propertyOrder.ts index d187e9472..ea0cc9d58 100644 --- a/src/utils/calldata/propertyOrder.ts +++ b/src/utils/calldata/propertyOrder.ts @@ -1,5 +1,6 @@ import { AbiEntry, AbiEnums, AbiStructs, CairoEnum, RawArgsObject } from '../../types'; import { CairoUint256 } from '../cairoDataTypes/uint256'; +import { CairoUint512 } from '../cairoDataTypes/uint512'; import { getArrayType, isCairo1Type, @@ -27,6 +28,13 @@ function errorU256(key: string) { `Your object includes the property : ${key}, containing an Uint256 object without the 'low' and 'high' keys.` ); } + +function errorU512(key: string) { + return Error( + `Your object includes the property : ${key}, containing an Uint512 object without the 'limb0' to 'limb3' keys.` + ); +} + export default function orderPropsByAbi( unorderedObject: RawArgsObject, abiOfObject: AbiEntry[], @@ -62,6 +70,17 @@ export default function orderPropsByAbi( } return { low: u256.low, high: u256.high }; } + if (CairoUint512.isAbiType(abiType)) { + const u512 = unorderedItem; + if (typeof u512 !== 'object') { + // BigNumberish --> just copy + return u512; + } + if (!['limb0', 'limb1', 'limb2', 'limb3'].every((key) => key in u512)) { + throw errorU512(abiType); + } + return { limb0: u512.limb0, limb1: u512.limb1, limb2: u512.limb2, limb3: u512.limb3 }; + } if (isTypeStruct(abiType, structs)) { const abiOfStruct = structs[abiType].members; // eslint-disable-next-line @typescript-eslint/no-use-before-define diff --git a/src/utils/calldata/requestParser.ts b/src/utils/calldata/requestParser.ts index 091f91b85..fcc096a3f 100644 --- a/src/utils/calldata/requestParser.ts +++ b/src/utils/calldata/requestParser.ts @@ -9,6 +9,7 @@ import { Tupled, } from '../../types'; import { CairoUint256 } from '../cairoDataTypes/uint256'; +import { CairoUint512 } from '../cairoDataTypes/uint512'; import { encodeShortString, isText, splitLongString } from '../shortString'; import { byteArrayFromString } from './byteArray'; import { @@ -41,6 +42,8 @@ function parseBaseTypes(type: string, val: BigNumberish) { switch (true) { case CairoUint256.isAbiType(type): return new CairoUint256(val).toApiRequest(); + case CairoUint512.isAbiType(type): + return new CairoUint512(val).toApiRequest(); case isTypeBytes31(type): return encodeShortString(val.toString()); default: @@ -125,7 +128,9 @@ function parseCalldataValue( if (CairoUint256.isAbiType(type)) { return new CairoUint256(element as any).toApiRequest(); } - + if (CairoUint512.isAbiType(type)) { + return new CairoUint512(element as any).toApiRequest(); + } if (type === 'core::starknet::eth_address::EthAddress') return parseBaseTypes(type, element as BigNumberish); @@ -151,6 +156,10 @@ function parseCalldataValue( if (CairoUint256.isAbiType(type)) { return new CairoUint256(element as any).toApiRequest(); } + // check if u512 + if (CairoUint512.isAbiType(type)) { + return new CairoUint512(element as any).toApiRequest(); + } // check if Enum if (isTypeEnum(type, enums)) { const { variants } = enums[type]; @@ -275,7 +284,10 @@ export function parseCalldataField( case type === 'core::starknet::eth_address::EthAddress': return parseBaseTypes(type, value); // Struct or Tuple - case isTypeStruct(type, structs) || isTypeTuple(type) || CairoUint256.isAbiType(type): + case isTypeStruct(type, structs) || + isTypeTuple(type) || + CairoUint256.isAbiType(type) || + CairoUint256.isAbiType(type): return parseCalldataValue(value as ParsedStruct | BigNumberish[], type, structs, enums); // Enums diff --git a/src/utils/calldata/responseParser.ts b/src/utils/calldata/responseParser.ts index 9744fb25e..ffe90e5e7 100644 --- a/src/utils/calldata/responseParser.ts +++ b/src/utils/calldata/responseParser.ts @@ -11,6 +11,7 @@ import { ParsedStruct, } from '../../types'; import { CairoUint256 } from '../cairoDataTypes/uint256'; +import { CairoUint512 } from '../cairoDataTypes/uint512'; import { toHex } from '../num'; import { decodeShortString } from '../shortString'; import { stringFromByteArray } from './byteArray'; @@ -50,6 +51,12 @@ function parseBaseTypes(type: string, it: Iterator) { const low = it.next().value; const high = it.next().value; return new CairoUint256(low, high).toBigInt(); + case CairoUint512.isAbiType(type): + const limb0 = it.next().value; + const limb1 = it.next().value; + const limb2 = it.next().value; + const limb3 = it.next().value; + return new CairoUint512(limb0, limb1, limb2, limb3).toBigInt(); case type === 'core::starknet::eth_address::EthAddress': temp = it.next().value; return BigInt(temp); @@ -85,7 +92,14 @@ function parseResponseValue( const high = responseIterator.next().value; return new CairoUint256(low, high).toBigInt(); } - + // type uint512 struct + if (CairoUint512.isAbiType(element.type)) { + const limb0 = responseIterator.next().value; + const limb1 = responseIterator.next().value; + const limb2 = responseIterator.next().value; + const limb3 = responseIterator.next().value; + return new CairoUint512(limb0, limb1, limb2, limb3).toBigInt(); + } // type C1 ByteArray struct, representing a LongString if (isTypeByteArray(element.type)) { const parsedBytes31Arr: BigNumberish[] = []; diff --git a/src/utils/calldata/validate.ts b/src/utils/calldata/validate.ts index cf0fcfc38..057b66e79 100644 --- a/src/utils/calldata/validate.ts +++ b/src/utils/calldata/validate.ts @@ -13,6 +13,7 @@ import { } from '../../types'; import assert from '../assert'; import { CairoUint256 } from '../cairoDataTypes/uint256'; +import { CairoUint512 } from '../cairoDataTypes/uint512'; import { isHex, toBigInt } from '../num'; import { isLongText } from '../shortString'; import { @@ -69,14 +70,24 @@ const validateUint = (parameter: any, input: AbiEntry) => { typeof parameter === 'string' || typeof parameter === 'number' || typeof parameter === 'bigint' || - (typeof parameter === 'object' && 'low' in parameter && 'high' in parameter), + (typeof parameter === 'object' && 'low' in parameter && 'high' in parameter) || + (typeof parameter === 'object' && + ['limb0', 'limb1', 'limb2', 'limb3'].every((key) => key in parameter)), `Validate: arg ${input.name} of cairo type ${ input.type } should be type (String, Number or BigInt), but is ${typeof parameter} ${parameter}.` ); - const param = - typeof parameter === 'object' ? new CairoUint256(parameter).toBigInt() : toBigInt(parameter); - + let param: bigint; + switch (input.type) { + case Uint.u256: + param = new CairoUint256(parameter).toBigInt(); + break; + case Uint.u512: + param = new CairoUint512(parameter).toBigInt(); + break; + default: + param = toBigInt(parameter); + } switch (input.type) { case Uint.u8: assert( @@ -120,6 +131,10 @@ const validateUint = (parameter: any, input: AbiEntry) => { ); break; + case Uint.u512: + assert(CairoUint512.is(param), `Validate: arg ${input.name} is ${input.type} 0 - 2^512-1`); + break; + case Literal.ClassHash: assert( // from : https://github.com/starkware-libs/starknet-specs/blob/29bab650be6b1847c92d4461d4c33008b5e50b1a/api/starknet_api_openrpc.json#L1670 @@ -148,8 +163,8 @@ const validateBool = (parameter: any, input: AbiEntry) => { }; const validateStruct = (parameter: any, input: AbiEntry, structs: AbiStructs) => { - // c1v2 uint256 in struct - if (input.type === Uint.u256) { + // c1v2 uint256 or u512 in struct + if (input.type === Uint.u256 || input.type === Uint.u512) { validateUint(parameter, input); return; } @@ -251,7 +266,7 @@ const validateArray = (parameter: any, input: AbiEntry, structs: AbiStructs, enu parameter.forEach((it: any) => validateEnum(it, { name: input.name, type: baseType })); break; case isTypeUint(baseType) || isTypeLiteral(baseType): - parameter.forEach((param: BigNumberish) => validateUint(param, input)); + parameter.forEach((param: BigNumberish) => validateUint(param, { name: '', type: baseType })); break; case isTypeBool(baseType): parameter.forEach((param: BigNumberish) => validateBool(param, input)); diff --git a/www/docs/guides/define_call_message.md b/www/docs/guides/define_call_message.md index 26fd66e90..6491901c5 100644 --- a/www/docs/guides/define_call_message.md +++ b/www/docs/guides/define_call_message.md @@ -94,6 +94,32 @@ const a2: Uint256 = { const a3: Uint256 = { low: a1.low, high: a1.high }; ``` +### u512 + +Starknet is waiting for 4 u128, the first one has the lowest wight. +You can send to Starknet.js methods: bigNumberish or Uint512 object. + +```typescript +await myContract0.my_function(553844998243714947043252949842317834769n); +await myContract1.my_function( + cairo.uint512( + '0xa9d2d1501ad0a2eb5337a9d2d1501ad0a2eb5337a9d2d1501ad0a2eb5337a9d2d1501ad0a2eb5337a9d2d1501ad0a2eb5337' + ) +); +await myContract2.my_function(12345678, '13456789765', '0xe23a40b543f', 1534566734334n); +``` + +In specific cases, you can use an object, with the following format: + +```typescript +const a2: Uint512 = { + limb0: '0xeb5337d9a885be310x9365205a414fdd', + limb1: '0x1fd465baff2ba9d2d1501ad0a2eb5337', + limb2: '0x05f7cd1fd465baff2ba9d2d1501ad0a2', + limb3: '0x2eb5337d9a885be319366b5205a414fd', +}; +``` + ### shortString or bytes31 For a shortString, Starknet is waiting for a felt, including 31 ASCII characters max. @@ -469,6 +495,7 @@ const amount = myContract.call(...); | | | string representing an hex number | `const res=myContract.call(...`
`const address: string = num.toHex(res);` | | u8, u16, u32, usize | `func get_v() -> u16` | number (53 bits max) | `const res=myContract.call(...`
`const total: number = Number(res)` | | u256 (255 bits max) | `func get_v() -> u256` | bigint | `const res: bigint = myContract.call(...` | +| u512 (512 bits max) | `func get_v() -> u512` | bigint | `const res: bigint = myContract.call(...` | | array of u8, u16, u32, usize, u64, u128, felt252, address | `func get_v() -> Array` | bigint[] | `const res: bigint[] = myContract.call(...` | | bytes31 (31 ASCII characters max) | `func get_v() -> bytes31` | string | `const res: string = myContract.call(...` | | felt252 (31 ASCII characters max) | `func get_v() -> felt252` | string | `const res = myContract.call(...`
`const title:string = shortString.decodeShortstring(res);` | From ce13ede19b97de6dae614f0afafc8b593f84d58d Mon Sep 17 00:00:00 2001 From: PhilippeR26 Date: Tue, 19 Mar 2024 18:09:14 +0100 Subject: [PATCH 06/37] refactor: change name of variable : GetTxReceiptResponseWithoutHelper --- src/provider/rpc.ts | 6 +++--- src/types/provider/response.ts | 2 +- src/utils/responseParser/rpc.ts | 10 +++++----- src/utils/transactionReceipt.ts | 12 ++++++------ 4 files changed, 15 insertions(+), 15 deletions(-) diff --git a/src/provider/rpc.ts b/src/provider/rpc.ts index 023d9bb82..5abb32a46 100644 --- a/src/provider/rpc.ts +++ b/src/provider/rpc.ts @@ -25,7 +25,7 @@ import { getEstimateFeeBulkOptions, getSimulateTransactionOptions, waitForTransactionOptions, - GetTransactionReceiptResponseWoHelper, + GetTxReceiptResponseWithoutHelper, } from '../types'; import { getAbiContractVersion } from '../utils/calldata/cairo'; import { isSierra } from '../utils/contract'; @@ -151,7 +151,7 @@ export class RpcProvider implements ProviderInterface { public async getTransactionReceipt(txHash: BigNumberish): Promise { const txReceiptWoHelper = await this.channel.getTransactionReceipt(txHash); - const txReceiptWoHelperModified: GetTransactionReceiptResponseWoHelper = + const txReceiptWoHelperModified: GetTxReceiptResponseWithoutHelper = this.responseParser.parseTransactionReceipt(txReceiptWoHelper); return new ReceiptTx(txReceiptWoHelperModified) as GetTransactionReceiptResponse; } @@ -191,7 +191,7 @@ export class RpcProvider implements ProviderInterface { const receiptWoHelper = (await this.channel.waitForTransaction( txHash, options - )) as GetTransactionReceiptResponseWoHelper; + )) as GetTxReceiptResponseWithoutHelper; return new ReceiptTx(receiptWoHelper) as GetTransactionReceiptResponse; } diff --git a/src/types/provider/response.ts b/src/types/provider/response.ts index 70c09adf9..2dbdae650 100644 --- a/src/types/provider/response.ts +++ b/src/types/provider/response.ts @@ -92,7 +92,7 @@ export type RejectedTransactionReceiptResponse = { }; }; -export type GetTransactionReceiptResponseWoHelper = +export type GetTxReceiptResponseWithoutHelper = | SuccessfulTransactionReceiptResponse | RevertedTransactionReceiptResponse | RejectedTransactionReceiptResponse; diff --git a/src/utils/responseParser/rpc.ts b/src/utils/responseParser/rpc.ts index e83fa6d9b..61c7ef70c 100644 --- a/src/utils/responseParser/rpc.ts +++ b/src/utils/responseParser/rpc.ts @@ -14,7 +14,7 @@ import { SimulateTransactionResponse, SimulatedTransaction, RpcProviderOptions, - GetTransactionReceiptResponseWoHelper, + GetTxReceiptResponseWithoutHelper, } from '../../types/provider'; import { toBigInt } from '../num'; import { estimateFeeToBounds, estimatedFeeToMaxFee } from '../stark'; @@ -54,20 +54,20 @@ export class RPCResponseParser return { status: 'PENDING', ...res } as GetBlockResponse; } - public parseTransactionReceipt(res: TransactionReceipt): GetTransactionReceiptResponseWoHelper { + public parseTransactionReceipt(res: TransactionReceipt): GetTxReceiptResponseWithoutHelper { // HOTFIX RPC 0.5 to align with RPC 0.6 // This case is RPC 0.5. It can be only v2 thx with FRI units if ('actual_fee' in res && typeof res.actual_fee === 'string') { return { - ...(res as GetTransactionReceiptResponseWoHelper), + ...(res as GetTxReceiptResponseWithoutHelper), actual_fee: { amount: res.actual_fee, unit: 'FRI', }, - } as GetTransactionReceiptResponseWoHelper; + } as GetTxReceiptResponseWithoutHelper; } - return res as GetTransactionReceiptResponseWoHelper; + return res as GetTxReceiptResponseWithoutHelper; } public parseFeeEstimateResponse(res: FeeEstimate[]): EstimateFeeResponse { diff --git a/src/utils/transactionReceipt.ts b/src/utils/transactionReceipt.ts index 150a98e9a..ffc353985 100644 --- a/src/utils/transactionReceipt.ts +++ b/src/utils/transactionReceipt.ts @@ -1,6 +1,6 @@ /* eslint-disable no-nested-ternary */ import { - GetTransactionReceiptResponseWoHelper, + GetTxReceiptResponseWithoutHelper, RejectedTransactionReceiptResponse, RevertedTransactionReceiptResponse, SuccessfulTransactionReceiptResponse, @@ -36,7 +36,7 @@ export class ReceiptTx implements TransactionReceiptUtilityInterface { public readonly value: TransactionReceiptValue; - constructor(receipt: GetTransactionReceiptResponseWoHelper) { + constructor(receipt: GetTxReceiptResponseWithoutHelper) { [this.statusReceipt, this.value] = ReceiptTx.isSuccess(receipt) ? ['success', receipt] : ReceiptTx.isReverted(receipt) @@ -84,7 +84,7 @@ export class ReceiptTx implements TransactionReceiptUtilityInterface { } static isSuccess( - transactionReceipt: GetTransactionReceiptResponseWoHelper + transactionReceipt: GetTxReceiptResponseWithoutHelper ): transactionReceipt is SuccessfulTransactionReceiptResponse { return ( (transactionReceipt as SuccessfulTransactionReceiptResponse).execution_status === @@ -93,7 +93,7 @@ export class ReceiptTx implements TransactionReceiptUtilityInterface { } static isReverted( - transactionReceipt: GetTransactionReceiptResponseWoHelper + transactionReceipt: GetTxReceiptResponseWithoutHelper ): transactionReceipt is RevertedTransactionReceiptResponse { return ( (transactionReceipt as RevertedTransactionReceiptResponse).execution_status === @@ -102,7 +102,7 @@ export class ReceiptTx implements TransactionReceiptUtilityInterface { } static isRejected( - transactionReceipt: GetTransactionReceiptResponseWoHelper + transactionReceipt: GetTxReceiptResponseWithoutHelper ): transactionReceipt is RejectedTransactionReceiptResponse { return ( (transactionReceipt as RejectedTransactionReceiptResponse).status === @@ -111,4 +111,4 @@ export class ReceiptTx implements TransactionReceiptUtilityInterface { } } -export type GetTransactionReceiptResponse = GetTransactionReceiptResponseWoHelper & ReceiptTx; +export type GetTransactionReceiptResponse = GetTxReceiptResponseWithoutHelper & ReceiptTx; From f273e70e34bc99fcb5a35237b0d6b4bdeda9854d Mon Sep 17 00:00:00 2001 From: PhilippeR26 Date: Wed, 20 Mar 2024 18:28:19 +0100 Subject: [PATCH 07/37] fix: double lines for same imports --- src/utils/calldata/requestParser.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/src/utils/calldata/requestParser.ts b/src/utils/calldata/requestParser.ts index 6620de5bb..b7adc5581 100644 --- a/src/utils/calldata/requestParser.ts +++ b/src/utils/calldata/requestParser.ts @@ -12,7 +12,6 @@ import { import { CairoUint256 } from '../cairoDataTypes/uint256'; import { addHexPrefix, removeHexPrefix } from '../encode'; import { toHex } from '../num'; -import { encodeShortString, isText, splitLongString } from '../shortString'; import { encodeShortString, isString, isText, splitLongString } from '../shortString'; import { byteArrayFromString } from './byteArray'; import { From 24f82d47da91ccbe9593aac816d1695021286144 Mon Sep 17 00:00:00 2001 From: PhilippeR26 Date: Fri, 22 Mar 2024 09:38:00 +0100 Subject: [PATCH 08/37] fix: solve an error in validate.ts initiated by pr 1007 --- src/utils/calldata/validate.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/utils/calldata/validate.ts b/src/utils/calldata/validate.ts index 104a8250d..6c89c16f7 100644 --- a/src/utils/calldata/validate.ts +++ b/src/utils/calldata/validate.ts @@ -70,7 +70,7 @@ const validateUint = (parameter: any, input: AbiEntry) => { isString(parameter) || isNumber(parameter) || isBigInt(parameter) || - (typeof parameter === 'object' && 'low' in parameter && 'high' in parameter), || + (typeof parameter === 'object' && 'low' in parameter && 'high' in parameter) || (typeof parameter === 'object' && ['limb0', 'limb1', 'limb2', 'limb3'].every((key) => key in parameter)), `Validate: arg ${input.name} of cairo type ${ From 46ca53b793269129fda4d548ac10522835b0fa99 Mon Sep 17 00:00:00 2001 From: PhilippeR26 Date: Fri, 22 Mar 2024 09:41:36 +0100 Subject: [PATCH 09/37] fix: correction of a word in guide --- www/docs/guides/define_call_message.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/www/docs/guides/define_call_message.md b/www/docs/guides/define_call_message.md index 6491901c5..b7cdb55be 100644 --- a/www/docs/guides/define_call_message.md +++ b/www/docs/guides/define_call_message.md @@ -96,7 +96,7 @@ const a3: Uint256 = { low: a1.low, high: a1.high }; ### u512 -Starknet is waiting for 4 u128, the first one has the lowest wight. +Starknet is waiting for 4 u128, the first one has the lowest weight. You can send to Starknet.js methods: bigNumberish or Uint512 object. ```typescript From 2262b5ed4b726baa3fc2e9872652879f117a28a0 Mon Sep 17 00:00:00 2001 From: ivpavici Date: Fri, 22 Mar 2024 13:14:58 +0100 Subject: [PATCH 10/37] docs: validateChecksumAddress --- src/utils/address.ts | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/utils/address.ts b/src/utils/address.ts index e0647df86..8183f3eff 100644 --- a/src/utils/address.ts +++ b/src/utils/address.ts @@ -41,6 +41,14 @@ export function getChecksumAddress(address: BigNumberish): string { return addHexPrefix(chars.join('')); } +/** + * If the casing of an address is mixed, it is a Checksum Address, which uses a specific pattern of uppercase and lowercase letters within + * a given address to reduce the risk of errors introduced from typing an address or cut and paste issues. + * + * @param address string + * + * @returns true if the ChecksumAddress is valid + */ export function validateChecksumAddress(address: string): boolean { return getChecksumAddress(address) === address; } From 218632b67783367dd782674c2732c657be44e7c5 Mon Sep 17 00:00:00 2001 From: PhilippeR26 Date: Fri, 22 Mar 2024 13:21:21 +0100 Subject: [PATCH 11/37] fix: jsdoc correction --- src/utils/cairoDataTypes/uint512.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/utils/cairoDataTypes/uint512.ts b/src/utils/cairoDataTypes/uint512.ts index 0e059af7e..9f6e2d4c2 100644 --- a/src/utils/cairoDataTypes/uint512.ts +++ b/src/utils/cairoDataTypes/uint512.ts @@ -25,7 +25,7 @@ export class CairoUint512 { /** * Default constructor (Lib usage) - * @param bigNumberish BigNumberish value representing uin256 + * @param bigNumberish BigNumberish value representing u512 */ public constructor(bigNumberish: BigNumberish); /** From aefe1396f5aba4599d9b2df603638d44ae9b9e65 Mon Sep 17 00:00:00 2001 From: PhilippeR26 Date: Fri, 22 Mar 2024 16:25:30 +0100 Subject: [PATCH 12/37] docs: add tsdoc in utils/address.ts --- src/utils/address.ts | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/utils/address.ts b/src/utils/address.ts index e0647df86..60ce39d18 100644 --- a/src/utils/address.ts +++ b/src/utils/address.ts @@ -7,10 +7,20 @@ import { addHexPrefix, removeHexPrefix } from './encode'; import { keccakBn } from './hash'; import { assertInRange, toHex } from './num'; +/** + * Format a hex number to '0x' and 64 characters, adding leading zeros if necessary. + * @param {BigNumberish} address + * @returns {string} Hex string : 0x followed by 64 characters. No upper case characters in the response. + */ export function addAddressPadding(address: BigNumberish): string { return addHexPrefix(removeHexPrefix(toHex(address)).padStart(64, '0')); } +/** + * Check the validity of a Starknet address, and format it as a hex number : '0x' and 64 characters, adding leading zeros if necessary. + * @param {BigNumberish} address + * @returns {string} Hex string : 0x followed by 64 characters. No upper case characters in the response. + */ export function validateAndParseAddress(address: BigNumberish): string { assertInRange(address, ZERO, ADDR_BOUND - 1n, 'Starknet Address'); From 9847c8876be0abb06672c828a928f4c6c60acc31 Mon Sep 17 00:00:00 2001 From: PhilippeR26 Date: Mon, 25 Mar 2024 10:42:19 +0100 Subject: [PATCH 13/37] test: add extra fees --- __tests__/utils/ethSigner.test.ts | 17 ++++++++++++---- www/docs/guides/create_account.md | 34 +++++++++++++++++++++---------- 2 files changed, 36 insertions(+), 15 deletions(-) diff --git a/__tests__/utils/ethSigner.test.ts b/__tests__/utils/ethSigner.test.ts index bdbeb1e87..30c62903d 100644 --- a/__tests__/utils/ethSigner.test.ts +++ b/__tests__/utils/ethSigner.test.ts @@ -11,6 +11,7 @@ import { eth, hash, num, + stark, } from '../../src'; import { ETransactionVersion } from '../../src/types/api'; import { @@ -135,11 +136,17 @@ describe('Ethereum signer', () => { await account.waitForTransaction(transaction_hash); ethAccount = new Account(provider, contractETHAccountAddress, ethSigner); - const { transaction_hash: txH2, contract_address } = await ethAccount.deployAccount({ + const deployPayload = { classHash: decClassHash, constructorCalldata: accountETHconstructorCalldata, addressSalt: salt, - }); + }; + const { suggestedMaxFee: feeDeploy } = + await ethAccount.estimateAccountDeployFee(deployPayload); + const { transaction_hash: txH2, contract_address } = await ethAccount.deployAccount( + deployPayload, + { maxFee: stark.estimatedFeeToMaxFee(feeDeploy, 100) } + ); await provider.waitForTransaction(txH2); expect(contract_address).toBe(contractETHAccountAddress); }); @@ -261,9 +268,11 @@ describe('Ethereum signer', () => { resourceBounds: { l2_gas: { max_amount: '0x0', max_price_per_unit: '0x0' }, l1_gas: { - max_amount: num.toHex(BigInt(feeTransfer.resourceBounds.l1_gas.max_amount) * 2n), + max_amount: num.toHex( + stark.estimatedFeeToMaxFee(feeTransfer.resourceBounds.l1_gas.max_amount, 150) + ), max_price_per_unit: num.toHex( - BigInt(feeTransfer.resourceBounds.l1_gas.max_price_per_unit) * 2n + stark.estimatedFeeToMaxFee(feeTransfer.resourceBounds.l1_gas.max_price_per_unit, 150) ), }, }, diff --git a/www/docs/guides/create_account.md b/www/docs/guides/create_account.md index 28940c153..ac1ac2d2f 100644 --- a/www/docs/guides/create_account.md +++ b/www/docs/guides/create_account.md @@ -229,15 +229,21 @@ OpenZeppelin has released an account contract for a such Ethereum account. Here ### Compute address ```typescript -const privateKeyETH = "0x45397ee6ca34cb49060f1c303c6cb7ee2d6123e617601ef3e31ccf7bf5bef1f9"; +const privateKeyETH = '0x45397ee6ca34cb49060f1c303c6cb7ee2d6123e617601ef3e31ccf7bf5bef1f9'; const ethSigner = new EthSigner(privateKeyETH); const ethFullPublicKey = await ethSigner.getPubKey(); -const accountEthClassHash = "0x23e416842ca96b1f7067693892ed00881d97a4b0d9a4c793b75cb887944d98d"; +const accountEthClassHash = '0x23e416842ca96b1f7067693892ed00881d97a4b0d9a4c793b75cb887944d98d'; const myCallData = new CallData(ethAccountAbi); -const accountETHconstructorCalldata = myCallData.compile("constructor", - { public_key: ethFullPublicKey }); -const salt = "0x12345" // or lower felt of public key X part -const contractETHaddress = hash.calculateContractAddressFromHash(salt, decClassHash, accountETHconstructorCalldata, 0); +const accountETHconstructorCalldata = myCallData.compile('constructor', { + public_key: ethFullPublicKey, +}); +const salt = '0x12345'; // or lower felt of public key X part +const contractETHaddress = hash.calculateContractAddressFromHash( + salt, + accountEthClassHash, + accountETHconstructorCalldata, + 0 +); console.log('Pre-calculated ETH account address =', contractETHaddress); ``` @@ -249,11 +255,17 @@ If you have sent enough funds to this new address, you can go forward to the fin ```typescript const ethAccount = new Account(provider, contractETHaddress, ethSigner); -const { transaction_hash, contract_address } = await ethAccount.deployAccount({ - classHash: accountEthClassHash, - constructorCalldata: accountETHconstructorCalldata, - addressSalt: salt - }); +const deployPayload = { + classHash: accountEthClassHash, + constructorCalldata: accountETHconstructorCalldata, + addressSalt: salt, +}; +const { suggestedMaxFee: feeDeploy } = await ethAccount.estimateAccountDeployFee(deployPayload); +const { transaction_hash, contract_address } = await ethAccount.deployAccount( + deployPayload, + { maxFee: stark.estimatedFeeToMaxFee(feeDeploy, 100) } + // Extra fee to fund the validation of the transaction +); await provider.waitForTransaction(transaction_hash); console.log('✅ New Ethereum account final address =', contract_address); ``` From 8c10c4a1b74aa61f3694492482836c748461d273 Mon Sep 17 00:00:00 2001 From: Toni Tabak Date: Mon, 25 Mar 2024 12:00:59 +0100 Subject: [PATCH 14/37] fix: estimateFeeBulk include skipValidate in accountInvocationsFactory --- src/account/default.ts | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/account/default.ts b/src/account/default.ts index 4101c1a10..c58970744 100644 --- a/src/account/default.ts +++ b/src/account/default.ts @@ -45,6 +45,7 @@ import { parseUDCEvent } from '../utils/events'; import { calculateContractAddressFromHash } from '../utils/hash'; import { toBigInt, toCairoBool } from '../utils/num'; import { parseContract } from '../utils/provider'; +import { isString } from '../utils/shortString'; import { estimateFeeToBounds, formatSignature, @@ -56,7 +57,6 @@ import { import { buildUDCCall, getExecuteCalldata } from '../utils/transaction'; import { getMessageHash } from '../utils/typedData'; import { AccountInterface } from './interface'; -import { isString } from '../utils/shortString'; export class Account extends Provider implements AccountInterface { public signer: SignerInterface; @@ -257,7 +257,7 @@ export class Account extends Provider implements AccountInterface { invocations: Invocations, details: UniversalDetails = {} ): Promise { - const { nonce, blockIdentifier, version } = details; + const { nonce, blockIdentifier, version, skipValidate } = details; const accountInvocations = await this.accountInvocationsFactory(invocations, { ...v3Details(details), versions: [ @@ -269,11 +269,12 @@ export class Account extends Provider implements AccountInterface { ], nonce, blockIdentifier, + skipValidate, }); return super.getEstimateFeeBulk(accountInvocations, { blockIdentifier, - skipValidate: details.skipValidate, + skipValidate, }); } From 587d9f6b52510f80b61c18609a42fa60f402ca48 Mon Sep 17 00:00:00 2001 From: Toni Tabak Date: Mon, 25 Mar 2024 14:19:36 +0100 Subject: [PATCH 15/37] feat: add type guard to receipt response status methods --- __tests__/utils/ethSigner.test.ts | 13 +++++++++++-- src/provider/errors.ts | 10 ++++++++-- src/utils/transactionReceipt.ts | 6 +++--- 3 files changed, 22 insertions(+), 7 deletions(-) diff --git a/__tests__/utils/ethSigner.test.ts b/__tests__/utils/ethSigner.test.ts index 30c62903d..21b420bcc 100644 --- a/__tests__/utils/ethSigner.test.ts +++ b/__tests__/utils/ethSigner.test.ts @@ -159,7 +159,12 @@ describe('Ethereum signer', () => { { maxFee: 1 * 10 ** 16 } ); const txR = await provider.waitForTransaction(respTransfer.transaction_hash); - expect(txR.execution_status).toBe('SUCCEEDED'); + + if (txR.isSuccess()) { + expect(txR.execution_status).toBe('SUCCEEDED'); + } else { + fail('txR not success'); + } }); test('ETH account declaration V2', async () => { @@ -279,7 +284,11 @@ describe('Ethereum signer', () => { }); const txR = await provider.waitForTransaction(respTransfer.transaction_hash); - expect(txR.execution_status).toBe('SUCCEEDED'); + if (txR.isSuccess()) { + expect(txR.execution_status).toBe('SUCCEEDED'); + } else { + fail('txR not success'); + } }); test('ETH account declaration V3', async () => { diff --git a/src/provider/errors.ts b/src/provider/errors.ts index 2824dec64..1e2a01b4b 100644 --- a/src/provider/errors.ts +++ b/src/provider/errors.ts @@ -37,13 +37,19 @@ export class CustomError extends Error { export class LibraryError extends CustomError {} export class GatewayError extends LibraryError { - constructor(message: string, public errorCode: string) { + constructor( + message: string, + public errorCode: string + ) { super(message); } } export class HttpError extends LibraryError { - constructor(message: string, public errorCode: number) { + constructor( + message: string, + public errorCode: number + ) { super(message); } } diff --git a/src/utils/transactionReceipt.ts b/src/utils/transactionReceipt.ts index ffc353985..9cbf09909 100644 --- a/src/utils/transactionReceipt.ts +++ b/src/utils/transactionReceipt.ts @@ -67,15 +67,15 @@ export class ReceiptTx implements TransactionReceiptUtilityInterface { return (callbacks as TransactionReceiptCallbacksDefault)._(); } - isSuccess() { + isSuccess(): this is SuccessfulTransactionReceiptResponse { return this.statusReceipt === 'success'; } - isReverted() { + isReverted(): this is RevertedTransactionReceiptResponse { return this.statusReceipt === 'reverted'; } - isRejected() { + isRejected(): this is RejectedTransactionReceiptResponse { return this.statusReceipt === 'rejected'; } From 934138560a87ba80d5b10fb32b89108372a183f0 Mon Sep 17 00:00:00 2001 From: Petar Penovic Date: Fri, 15 Mar 2024 08:04:20 +0100 Subject: [PATCH 16/37] fix: repair i128 typed data encoding and add typed data range checks --- __mocks__/typedData/example_baseTypes.json | 18 +++++---- __tests__/utils/typedData.test.ts | 29 ++++++++++++-- src/constants.ts | 6 +++ src/utils/typedData.ts | 46 +++++++++++++++++++--- 4 files changed, 82 insertions(+), 17 deletions(-) diff --git a/__mocks__/typedData/example_baseTypes.json b/__mocks__/typedData/example_baseTypes.json index 78b154305..db2285843 100644 --- a/__mocks__/typedData/example_baseTypes.json +++ b/__mocks__/typedData/example_baseTypes.json @@ -12,10 +12,11 @@ { "name": "n2", "type": "string" }, { "name": "n3", "type": "selector" }, { "name": "n4", "type": "u128" }, - { "name": "n5", "type": "ContractAddress" }, - { "name": "n6", "type": "ClassHash" }, - { "name": "n7", "type": "timestamp" }, - { "name": "n8", "type": "shortstring" } + { "name": "n5", "type": "i128" }, + { "name": "n6", "type": "ContractAddress" }, + { "name": "n7", "type": "ClassHash" }, + { "name": "n8", "type": "timestamp" }, + { "name": "n9", "type": "shortstring" } ] }, "primaryType": "Example", @@ -30,10 +31,11 @@ "n1": true, "n2": "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.", "n3": "transfer", - "n4": "0x3e8", - "n5": "0x3e8", + "n4": 10, + "n5": -10, "n6": "0x3e8", - "n7": 1000, - "n8": "transfer" + "n7": "0x3e8", + "n8": 1000, + "n9": "transfer" } } diff --git a/__tests__/utils/typedData.test.ts b/__tests__/utils/typedData.test.ts index c09f0ba65..8049e7027 100644 --- a/__tests__/utils/typedData.test.ts +++ b/__tests__/utils/typedData.test.ts @@ -7,6 +7,7 @@ import examplePresetTypes from '../../__mocks__/typedData/example_presetTypes.js import typedDataStructArrayExample from '../../__mocks__/typedData/mail_StructArray.json'; import typedDataSessionExample from '../../__mocks__/typedData/session_MerkleTree.json'; import { BigNumberish, StarkNetDomain, num } from '../../src'; +import { PRIME } from '../../src/constants'; import { getSelectorFromName } from '../../src/utils/hash'; import { MerkleTree } from '../../src/utils/merkle'; import { @@ -43,7 +44,7 @@ describe('typedData', () => { ); encoded = encodeType(exampleBaseTypes.types, 'Example', TypedDataRevision.Active); expect(encoded).toMatchInlineSnapshot( - `"\\"Example\\"(\\"n0\\":\\"felt\\",\\"n1\\":\\"bool\\",\\"n2\\":\\"string\\",\\"n3\\":\\"selector\\",\\"n4\\":\\"u128\\",\\"n5\\":\\"ContractAddress\\",\\"n6\\":\\"ClassHash\\",\\"n7\\":\\"timestamp\\",\\"n8\\":\\"shortstring\\")"` + `"\\"Example\\"(\\"n0\\":\\"felt\\",\\"n1\\":\\"bool\\",\\"n2\\":\\"string\\",\\"n3\\":\\"selector\\",\\"n4\\":\\"u128\\",\\"n5\\":\\"i128\\",\\"n6\\":\\"ContractAddress\\",\\"n7\\":\\"ClassHash\\",\\"n8\\":\\"timestamp\\",\\"n9\\":\\"shortstring\\")"` ); encoded = encodeType(examplePresetTypes.types, 'Example', TypedDataRevision.Active); expect(encoded).toMatchInlineSnapshot( @@ -83,7 +84,7 @@ describe('typedData', () => { ); typeHash = getTypeHash(exampleBaseTypes.types, 'Example', TypedDataRevision.Active); expect(typeHash).toMatchInlineSnapshot( - `"0x2e5b7e12ca4388c49b4ceb305d853b8f7bf5f36525fea5e4255346b80153249"` + `"0x1f94cd0be8b4097a41486170fdf09a4cd23aefbc74bb2344718562994c2c111"` ); typeHash = getTypeHash(examplePresetTypes.types, 'Example', TypedDataRevision.Active); expect(typeHash).toMatchInlineSnapshot( @@ -274,7 +275,7 @@ describe('typedData', () => { let messageHash: string; messageHash = getMessageHash(exampleBaseTypes, exampleAddress); expect(messageHash).toMatchInlineSnapshot( - `"0x790d9fa99cf9ad91c515aaff9465fcb1c87784d9cfb27271ed193675cd06f9c"` + `"0xdb7829db8909c0c5496f5952bcfc4fc894341ce01842537fc4f448743480b6"` ); messageHash = getMessageHash(examplePresetTypes, exampleAddress); @@ -292,4 +293,26 @@ describe('typedData', () => { spyPedersen.mockRestore(); spyPoseidon.mockRestore(); }); + + describe('should fail validation', () => { + const baseTypes = (type: string, value: any = PRIME) => { + const copy = JSON.parse(JSON.stringify(exampleBaseTypes)) as typeof exampleBaseTypes; + const property = copy.types.Example.find((e) => e.type === type)!.name; + (copy.message as any)[property] = value; + return copy; + }; + + test.each([ + { type: 'felt' }, + { type: 'bool' }, + { type: 'u128' }, + { type: 'i128' }, + { type: 'ContractAddress' }, + { type: 'ClassHash' }, + { type: 'timestamp' }, + { type: 'shortstring' }, + ])('out of bounds - $type', ({ type }) => { + expect(() => getMessageHash(baseTypes(type), exampleAddress)).toThrow(RegExp(type)); + }); + }); }); diff --git a/src/constants.ts b/src/constants.ts index fc4c3bfdd..a13e0c925 100644 --- a/src/constants.ts +++ b/src/constants.ts @@ -17,11 +17,17 @@ export { ETransactionVersion as TRANSACTION_VERSION }; export const ZERO = 0n; export const MASK_250 = 2n ** 250n - 1n; // 2 ** 250 - 1 export const API_VERSION = ZERO; +export const PRIME = 2n ** 251n + 17n * 2n ** 192n + 1n; // based on: https://github.com/starkware-libs/cairo-lang/blob/v0.12.3/src/starkware/starknet/common/storage.cairo#L3 export const MAX_STORAGE_ITEM_SIZE = 256n; export const ADDR_BOUND = 2n ** 251n - MAX_STORAGE_ITEM_SIZE; +const range = (min: bigint, max: bigint) => ({ min, max }) as const; +export const RANGE_FELT = range(ZERO, PRIME - 1n); +export const RANGE_I128 = range(-(2n ** 127n), 2n ** 127n - 1n); +export const RANGE_U128 = range(ZERO, 2n ** 128n - 1n); + export enum BaseUrl { SN_MAIN = 'https://alpha-mainnet.starknet.io', SN_GOERLI = 'https://alpha4.starknet.io', diff --git a/src/utils/typedData.ts b/src/utils/typedData.ts index 1df8d393b..44c89a368 100644 --- a/src/utils/typedData.ts +++ b/src/utils/typedData.ts @@ -1,4 +1,5 @@ /* eslint-disable no-param-reassign */ +import { PRIME, RANGE_FELT, RANGE_I128, RANGE_U128 } from '../constants'; import { BigNumberish, TypedDataRevision as Revision, @@ -7,6 +8,7 @@ import { StarkNetType, TypedData, } from '../types'; +import assert from './assert'; import { byteArrayFromString } from './calldata/byteArray'; import { computePedersenHash, @@ -62,6 +64,11 @@ const revisionConfiguration: Record = { }, }; +function assertRange(data: unknown, type: string, { min, max }: { min: bigint; max: bigint }) { + const value = BigInt(data as string); + assert(value >= min && value <= max, `${value} (${type}) is out of bounds [${min}, ${max}]`); +} + function identifyRevision({ types, domain }: TypedData) { if (revisionConfiguration[Revision.Active].domain in types && domain.revision === Revision.Active) return Revision.Active; @@ -305,15 +312,42 @@ export function encodeValue( } // else fall through to default return [type, getHex(data as string)]; } + case 'i128': { + if (revision === Revision.Active) { + const value = BigInt(data as string); + assertRange(value, type, RANGE_I128); + return [type, getHex(value < 0n ? PRIME + value : value)]; + } // else fall through to default + return [type, getHex(data as string)]; + } + case 'timestamp': + case 'u128': { + if (revision === Revision.Active) { + assertRange(data, type, RANGE_U128); + } // else fall through to default + return [type, getHex(data as string)]; + } case 'felt': - case 'bool': - case 'u128': - case 'i128': - case 'ContractAddress': + case 'shortstring': { + // TODO: should 'shortstring' diverge into directly using encodeShortString()? + if (revision === Revision.Active) { + assertRange(getHex(data as string), type, RANGE_FELT); + } // else fall through to default + return [type, getHex(data as string)]; + } case 'ClassHash': - case 'timestamp': - case 'shortstring': + case 'ContractAddress': { + if (revision === Revision.Active) { + assertRange(data, type, RANGE_FELT); + } // else fall through to default return [type, getHex(data as string)]; + } + case 'bool': { + if (revision === Revision.Active) { + assert(typeof data === 'boolean', `Type mismatch for ${type} ${data}`); + } // else fall through to default + return [type, getHex(data as string)]; + } default: { if (revision === Revision.Active) { throw new Error(`Unsupported type: ${type}`); From 87147d55cc2eab7eb59b100a3d3c543887f788f8 Mon Sep 17 00:00:00 2001 From: Petar Penovic Date: Fri, 15 Mar 2024 10:54:11 +0100 Subject: [PATCH 17/37] chore: update left over StarkNet casing --- __tests__/utils/typedData.test.ts | 6 +++--- src/types/api/rpcspec_0_6/methods.ts | 6 +++--- src/types/api/rpcspec_0_7/methods.ts | 6 +++--- src/types/typedData.ts | 18 ++++++++---------- src/utils/typedData.ts | 16 ++++++++-------- 5 files changed, 25 insertions(+), 27 deletions(-) diff --git a/__tests__/utils/typedData.test.ts b/__tests__/utils/typedData.test.ts index 8049e7027..d09de428b 100644 --- a/__tests__/utils/typedData.test.ts +++ b/__tests__/utils/typedData.test.ts @@ -6,7 +6,7 @@ import exampleEnum from '../../__mocks__/typedData/example_enum.json'; import examplePresetTypes from '../../__mocks__/typedData/example_presetTypes.json'; import typedDataStructArrayExample from '../../__mocks__/typedData/mail_StructArray.json'; import typedDataSessionExample from '../../__mocks__/typedData/session_MerkleTree.json'; -import { BigNumberish, StarkNetDomain, num } from '../../src'; +import { BigNumberish, StarknetDomain, num } from '../../src'; import { PRIME } from '../../src/constants'; import { getSelectorFromName } from '../../src/utils/hash'; import { MerkleTree } from '../../src/utils/merkle'; @@ -170,7 +170,7 @@ describe('typedData', () => { const hash = getStructHash( typedDataExample.types, 'StarkNetDomain', - typedDataExample.domain as StarkNetDomain + typedDataExample.domain as StarknetDomain ); expect(hash).toMatchInlineSnapshot( `"0x54833b121883a3e3aebff48ec08a962f5742e5f7b973469c1f8f4f55d470b07"` @@ -181,7 +181,7 @@ describe('typedData', () => { const hash = getStructHash( exampleBaseTypes.types, 'StarknetDomain', - exampleBaseTypes.domain as StarkNetDomain, + exampleBaseTypes.domain as StarknetDomain, TypedDataRevision.Active ); expect(hash).toMatchInlineSnapshot( diff --git a/src/types/api/rpcspec_0_6/methods.ts b/src/types/api/rpcspec_0_6/methods.ts index 0350b0360..c0e6c878c 100644 --- a/src/types/api/rpcspec_0_6/methods.ts +++ b/src/types/api/rpcspec_0_6/methods.ts @@ -162,7 +162,7 @@ type ReadMethods = { errors: Errors.BLOCK_NOT_FOUND; }; - // Call a StarkNet function without creating a StarkNet transaction + // Call a Starknet function without creating a Starknet transaction starknet_call: { params: { request: FUNCTION_CALL; @@ -172,7 +172,7 @@ type ReadMethods = { errors: Errors.CONTRACT_NOT_FOUND | Errors.CONTRACT_ERROR | Errors.BLOCK_NOT_FOUND; }; - // Estimate the fee for StarkNet transactions + // Estimate the fee for Starknet transactions starknet_estimateFee: { params: { request: BROADCASTED_TXN[]; @@ -207,7 +207,7 @@ type ReadMethods = { errors: Errors.NO_BLOCKS; }; - // Return the currently configured StarkNet chain id + // Return the currently configured Starknet chain id starknet_chainId: { params: []; result: CHAIN_ID; diff --git a/src/types/api/rpcspec_0_7/methods.ts b/src/types/api/rpcspec_0_7/methods.ts index e7ded2c6c..683890252 100644 --- a/src/types/api/rpcspec_0_7/methods.ts +++ b/src/types/api/rpcspec_0_7/methods.ts @@ -172,7 +172,7 @@ type ReadMethods = { errors: Errors.BLOCK_NOT_FOUND; }; - // Call a StarkNet function without creating a StarkNet transaction + // Call a Starknet function without creating a Starknet transaction starknet_call: { params: { request: FUNCTION_CALL; @@ -182,7 +182,7 @@ type ReadMethods = { errors: Errors.CONTRACT_NOT_FOUND | Errors.CONTRACT_ERROR | Errors.BLOCK_NOT_FOUND; }; - // Estimate the fee for StarkNet transactions + // Estimate the fee for Starknet transactions starknet_estimateFee: { params: { request: BROADCASTED_TXN[]; @@ -217,7 +217,7 @@ type ReadMethods = { errors: Errors.NO_BLOCKS; }; - // Return the currently configured StarkNet chain id + // Return the currently configured Starknet chain id starknet_chainId: { params: []; result: CHAIN_ID; diff --git a/src/types/typedData.ts b/src/types/typedData.ts index 84c108830..1753389ac 100644 --- a/src/types/typedData.ts +++ b/src/types/typedData.ts @@ -1,17 +1,15 @@ -// TODO: adjust starknet casing in v6 - export enum TypedDataRevision { Active = '1', Legacy = '0', } -export type StarkNetEnumType = { +export type StarknetEnumType = { name: string; type: 'enum'; contains: string; }; -export type StarkNetMerkleType = { +export type StarknetMerkleType = { name: string; type: 'merkletree'; contains: string; @@ -23,18 +21,18 @@ export type StarkNetMerkleType = { * Note that the `uint` and `int` aliases like in Solidity, and fixed point numbers are not supported by the EIP-712 * standard. */ -export type StarkNetType = +export type StarknetType = | { name: string; type: string; } - | StarkNetEnumType - | StarkNetMerkleType; + | StarknetEnumType + | StarknetMerkleType; /** * The EIP712 domain struct. Any of these fields are optional, but it must contain at least one field. */ -export interface StarkNetDomain extends Record { +export interface StarknetDomain extends Record { name?: string; version?: string; chainId?: string | number; @@ -45,8 +43,8 @@ export interface StarkNetDomain extends Record { * The complete typed data, with all the structs, domain data, primary type of the message, and the message itself. */ export interface TypedData { - types: Record; + types: Record; primaryType: string; - domain: StarkNetDomain; + domain: StarknetDomain; message: Record; } diff --git a/src/utils/typedData.ts b/src/utils/typedData.ts index 44c89a368..9a62b06b5 100644 --- a/src/utils/typedData.ts +++ b/src/utils/typedData.ts @@ -3,9 +3,9 @@ import { PRIME, RANGE_FELT, RANGE_I128, RANGE_U128 } from '../constants'; import { BigNumberish, TypedDataRevision as Revision, - StarkNetEnumType, - StarkNetMerkleType, - StarkNetType, + StarknetEnumType, + StarknetMerkleType, + StarknetType, TypedData, } from '../types'; import assert from './assert'; @@ -107,7 +107,7 @@ export function prepareSelector(selector: string): string { return isHex(selector) ? selector : getSelectorFromName(selector); } -export function isMerkleTreeType(type: StarkNetType): type is StarkNetMerkleType { +export function isMerkleTreeType(type: StarknetType): type is StarknetMerkleType { return type.type === 'merkletree'; } @@ -142,7 +142,7 @@ export function getDependencies( return [ type, - ...(types[type] as StarkNetEnumType[]).reduce( + ...(types[type] as StarknetEnumType[]).reduce( (previous, t) => [ ...previous, ...getDependencies(types, t.type, previous, t.contains, revision).filter( @@ -198,7 +198,7 @@ export function encodeType( const dependencyElements = allTypes[dependency].map((t) => { const targetType = t.type === 'enum' && revision === Revision.Active - ? (t as StarkNetEnumType).contains + ? (t as StarknetEnumType).contains : t.type; // parentheses handling for enum variant types const typeString = targetType.match(/^\(.*\)$/) @@ -265,9 +265,9 @@ export function encodeValue( if (revision === Revision.Active) { const [variantKey, variantData] = Object.entries(data as TypedData['message'])[0]; - const parentType = types[ctx.parent as string][0] as StarkNetEnumType; + const parentType = types[ctx.parent as string][0] as StarknetEnumType; const enumType = types[parentType.contains]; - const variantType = enumType.find((t) => t.name === variantKey) as StarkNetType; + const variantType = enumType.find((t) => t.name === variantKey) as StarknetType; const variantIndex = enumType.indexOf(variantType); const encodedSubtypes = variantType.type From 99921b1deeacc8227a5d3fc503ee7da0c9cebfdd Mon Sep 17 00:00:00 2001 From: Toni Tabak Date: Tue, 26 Mar 2024 19:35:20 +0100 Subject: [PATCH 18/37] feat: bundle resolution, module, type import for walletacc * feat: bundle resolution, module, type import for walletaccount * chore: fix connect import * chore: add get-starknet-core next as dependencie * chore: import fix --- package-lock.json | 11 +- package.json | 1 + src/wallet/account.ts | 12 +- src/wallet/connect.ts | 22 +- src/wallet/getst/StarknetWindowObject.ts | 24 -- src/wallet/getst/discovery.ts | 36 --- src/wallet/getst/localStorageStore.ts | 81 ------ src/wallet/getst/main.ts | 131 --------- src/wallet/getst/rpcMessage.ts | 330 ---------------------- src/wallet/getst/types.ts | 36 --- src/wallet/getst/utils.ts | 20 -- src/wallet/getst/wallet/filter.ts | 44 --- src/wallet/getst/wallet/isWalletObject.ts | 19 -- src/wallet/getst/wallet/scan.ts | 20 -- src/wallet/getst/wallet/sort.ts | 24 -- src/wallet/getst/walletEvents.ts | 14 - src/wallet/types.ts | 2 +- tsconfig.json | 4 +- 18 files changed, 27 insertions(+), 804 deletions(-) delete mode 100644 src/wallet/getst/StarknetWindowObject.ts delete mode 100644 src/wallet/getst/discovery.ts delete mode 100644 src/wallet/getst/localStorageStore.ts delete mode 100644 src/wallet/getst/main.ts delete mode 100644 src/wallet/getst/rpcMessage.ts delete mode 100644 src/wallet/getst/types.ts delete mode 100644 src/wallet/getst/utils.ts delete mode 100644 src/wallet/getst/wallet/filter.ts delete mode 100644 src/wallet/getst/wallet/isWalletObject.ts delete mode 100644 src/wallet/getst/wallet/scan.ts delete mode 100644 src/wallet/getst/wallet/sort.ts delete mode 100644 src/wallet/getst/walletEvents.ts diff --git a/package-lock.json b/package-lock.json index 4e9afc66e..a4545f8fe 100644 --- a/package-lock.json +++ b/package-lock.json @@ -14,6 +14,7 @@ "@scure/starknet": "~1.0.0", "abi-wan-kanabi": "^2.2.1", "fetch-cookie": "^3.0.0", + "get-starknet-core": "^4.0.0-next.3", "isomorphic-fetch": "^3.0.0", "lossless-json": "^4.0.1", "pako": "^2.0.4", @@ -8501,6 +8502,11 @@ "node": ">=8.0.0" } }, + "node_modules/get-starknet-core": { + "version": "4.0.0-next.3", + "resolved": "https://registry.npmjs.org/get-starknet-core/-/get-starknet-core-4.0.0-next.3.tgz", + "integrity": "sha512-/9q0UpsshYHZyEMcd+XD7CVrnwQ50WfXhy0TNocyHQzn+/qxQIBn25ZYJ+DEzwLPoUtrajMYI4L6DMKu1CJ+ig==" + }, "node_modules/get-stream": { "version": "7.0.1", "dev": true, @@ -14283,11 +14289,6 @@ "node": "^16.14.0 || >=18.0.0" } }, - "node_modules/npm/node_modules/ip": { - "version": "2.0.0", - "dev": true, - "license": "MIT" - }, "node_modules/npm/node_modules/ip-address": { "version": "9.0.5", "dev": true, diff --git a/package.json b/package.json index 0cb09b6cf..18fcb4e3b 100644 --- a/package.json +++ b/package.json @@ -95,6 +95,7 @@ "@scure/starknet": "~1.0.0", "abi-wan-kanabi": "^2.2.1", "fetch-cookie": "^3.0.0", + "get-starknet-core": "^4.0.0-next.3", "isomorphic-fetch": "^3.0.0", "lossless-json": "^4.0.1", "pako": "^2.0.4", diff --git a/src/wallet/account.ts b/src/wallet/account.ts index 9d202c3a0..7ce650cdb 100644 --- a/src/wallet/account.ts +++ b/src/wallet/account.ts @@ -1,3 +1,9 @@ +import { + type AccountChangeEventHandler, + type AddStarknetChainParameters, + type NetworkChangeEventHandler, + type WatchAssetParameters, +} from 'get-starknet-core'; import { Account, AccountInterface } from '../account'; import { StarknetChainId } from '../constants'; import { ProviderInterface } from '../provider'; @@ -30,12 +36,6 @@ import { switchStarknetChain, watchAsset, } from './connect'; -import { - AccountChangeEventHandler, - AddStarknetChainParameters, - NetworkChangeEventHandler, - WatchAssetParameters, -} from './getst/main'; import { StarknetWalletProvider } from './types'; // Represent 'Selected Active' Account inside Connected Wallet diff --git a/src/wallet/connect.ts b/src/wallet/connect.ts index ae465e37d..a00cff07c 100644 --- a/src/wallet/connect.ts +++ b/src/wallet/connect.ts @@ -1,15 +1,15 @@ import { - AccountChangeEventHandler, - AddDeclareTransactionParameters, - AddDeployAccountTransactionParameters, - AddInvokeTransactionParameters, - AddStarknetChainParameters, - NetworkChangeEventHandler, - StarknetChainId, - StarknetWindowObject, - TypedData, - WatchAssetParameters, -} from './getst/main'; + type WatchAssetParameters, + type AccountChangeEventHandler, + type AddDeclareTransactionParameters, + type AddDeployAccountTransactionParameters, + type AddInvokeTransactionParameters, + type AddStarknetChainParameters, + type NetworkChangeEventHandler, + type StarknetChainId, + type StarknetWindowObject, + type TypedData, +} from 'get-starknet-core'; /** * Request Permission for wallet account, return addresses that are allowed by user diff --git a/src/wallet/getst/StarknetWindowObject.ts b/src/wallet/getst/StarknetWindowObject.ts deleted file mode 100644 index 27fd1bebd..000000000 --- a/src/wallet/getst/StarknetWindowObject.ts +++ /dev/null @@ -1,24 +0,0 @@ -import { RequestFn } from './rpcMessage'; -import { WalletEventHandlers } from './walletEvents'; - -type WalletEventListener = ( - event: E, - handleEvent: WalletEventHandlers[E] -) => void; - -// Implement the StarknetWindowObject interface with the improved request method -export interface StarknetWindowObject { - id: string; - name: string; - version: string; - icon: string | { dark: string; light: string }; - request: RequestFn; - on: WalletEventListener; - off: WalletEventListener; -} - -declare global { - interface Window { - [key: `starknet_${string}`]: StarknetWindowObject | undefined; - } -} diff --git a/src/wallet/getst/discovery.ts b/src/wallet/getst/discovery.ts deleted file mode 100644 index e37b1919c..000000000 --- a/src/wallet/getst/discovery.ts +++ /dev/null @@ -1,36 +0,0 @@ -export type WalletProvider = { - id: string; - name: string; - icon: string; - downloads: - | { chrome?: `https://chrome.google.com/webstore/detail/${string}` } - | { firefox?: `https://addons.mozilla.org/en-US/firefox/addon/${string}` } - | { edge?: `https://microsoftedge.microsoft.com/addons/detail/${string}` }; -}; - -const wallets: WalletProvider[] = [ - { - id: 'argentX', - name: 'Argent X', - icon: 'data:image/svg+xml;base64,Cjxzdmcgd2lkdGg9IjQwIiBoZWlnaHQ9IjM2IiB2aWV3Qm94PSIwIDAgNDAgMzYiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxwYXRoIGQ9Ik0yNC43NTgyIC0zLjk3MzY0ZS0wN0gxNC42MjM4QzE0LjI4NTEgLTMuOTczNjRlLTA3IDE0LjAxMzggMC4yODExNzggMTQuMDA2NCAwLjYzMDY4M0MxMy44MDE3IDEwLjQ1NDkgOC44MjIzNCAxOS43NzkyIDAuMjUxODkzIDI2LjM4MzdDLTAuMDIwMjA0NiAyNi41OTMzIC0wLjA4MjE5NDYgMjYuOTg3MiAwLjExNjczNCAyNy4yNzA5TDYuMDQ2MjMgMzUuNzM0QzYuMjQ3OTYgMzYuMDIyIDYuNjQwOTkgMzYuMDg3IDYuOTE3NjYgMzUuODc1NEMxMi4yNzY1IDMxLjc3MjggMTYuNTg2OSAyNi44MjM2IDE5LjY5MSAyMS4zMzhDMjIuNzk1MSAyNi44MjM2IDI3LjEwNTcgMzEuNzcyOCAzMi40NjQ2IDM1Ljg3NTRDMzIuNzQxIDM2LjA4NyAzMy4xMzQxIDM2LjAyMiAzMy4zMzYxIDM1LjczNEwzOS4yNjU2IDI3LjI3MDlDMzkuNDY0MiAyNi45ODcyIDM5LjQwMjIgMjYuNTkzMyAzOS4xMzA0IDI2LjM4MzdDMzAuNTU5NyAxOS43NzkyIDI1LjU4MDQgMTAuNDU0OSAyNS4zNzU5IDAuNjMwNjgzQzI1LjM2ODUgMC4yODExNzggMjUuMDk2OSAtMy45NzM2NGUtMDcgMjQuNzU4MiAtMy45NzM2NGUtMDdaIiBmaWxsPSIjRkY4NzVCIi8+Cjwvc3ZnPgo=', - downloads: { - chrome: - 'https://chrome.google.com/webstore/detail/argent-x-starknet-wallet/dlcobpjiigpikoobohmabehhmhfoodbb', - firefox: 'https://addons.mozilla.org/en-US/firefox/addon/argent-x', - edge: 'https://microsoftedge.microsoft.com/addons/detail/argent-x/ajcicjlkibolbeaaagejfhnofogocgcj', - }, - }, - { - id: 'braavos', - name: 'Braavos', - icon: 'data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTAwIiBoZWlnaHQ9IjEwMCIgdmlld0JveD0iMCAwIDEwMCAxMDAiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CiAgICA8cGF0aAogICAgICAgIGQ9Ik02Mi43MDUgMTMuOTExNkM2Mi44MzU5IDE0LjEzMzMgNjIuNjYyMSAxNC40MDcgNjIuNDAzOSAxNC40MDdDNTcuMTgwNyAxNC40MDcgNTIuOTM0OCAxOC41NDI3IDUyLjgzNTEgMjMuNjgxN0M1MS4wNDY1IDIzLjM0NzcgNDkuMTkzMyAyMy4zMjI2IDQ3LjM2MjYgMjMuNjMxMUM0Ny4yMzYxIDE4LjUxNTYgNDMuMDAwOSAxNC40MDcgMzcuNzk0OCAxNC40MDdDMzcuNTM2NSAxNC40MDcgMzcuMzYyNSAxNC4xMzMxIDM3LjQ5MzUgMTMuOTExMkM0MC4wMjE3IDkuNjI4MDkgNDQuNzIwNCA2Ljc1IDUwLjA5OTEgNi43NUM1NS40NzgxIDYuNzUgNjAuMTc2OSA5LjYyODI2IDYyLjcwNSAxMy45MTE2WiIKICAgICAgICBmaWxsPSJ1cmwoI3BhaW50MF9saW5lYXJfMzcyXzQwMjU5KSIgLz4KICAgIDxwYXRoCiAgICAgICAgZD0iTTc4Ljc2MDYgNDUuODcxOEM4MC4yNzI1IDQ2LjMyOTcgODEuNzAyNSA0NS4wMDU1IDgxLjE3MTQgNDMuNTIyMkM3Ni40MTM3IDMwLjIzMzQgNjEuMzkxMSAyNC44MDM5IDUwLjAyNzcgMjQuODAzOUMzOC42NDQyIDI0LjgwMzkgMjMuMjg2OCAzMC40MDcgMTguODc1NCA0My41OTEyQzE4LjM4MjQgNDUuMDY0NSAxOS44MDgzIDQ2LjM0NDYgMjEuMjk3OCA0NS44ODgxTDQ4Ljg3MiAzNy40MzgxQzQ5LjUzMzEgMzcuMjM1NSA1MC4yMzk5IDM3LjIzNDQgNTAuOTAxNyAzNy40MzQ4TDc4Ljc2MDYgNDUuODcxOFoiCiAgICAgICAgZmlsbD0idXJsKCNwYWludDFfbGluZWFyXzM3Ml80MDI1OSkiIC8+CiAgICA8cGF0aAogICAgICAgIGQ9Ik0xOC44MTMyIDQ4LjE3MDdMNDguODkzNSAzOS4wNDcyQzQ5LjU1MDYgMzguODQ3OCA1MC4yNTI0IDM4Ljg0NzMgNTAuOTA5OCAzOS4wNDU2TDgxLjE3ODEgNDguMTc1MkM4My42OTEyIDQ4LjkzMzIgODUuNDExIDUxLjI0ODMgODUuNDExIDUzLjg3MzVWODEuMjIzM0M4NS4yOTQ0IDg3Ljg5OTEgNzkuMjk3NyA5My4yNSA3Mi42MjQ1IDkzLjI1SDYxLjU0MDZDNjAuNDQ0OSA5My4yNSA1OS41NTc3IDkyLjM2MzcgNTkuNTU3NyA5MS4yNjhWODEuNjc4OUM1OS41NTc3IDc3LjkwMzEgNjEuNzkyMSA3NC40ODU1IDY1LjI0OTggNzIuOTcyOUM2OS44ODQ5IDcwLjk0NTQgNzUuMzY4MSA2OC4yMDI4IDc2LjM5OTQgNjIuNjk5MkM3Ni43MzIzIDYwLjkyMjkgNzUuNTc0MSA1OS4yMDk0IDczLjgwMjQgNTguODU3M0M2OS4zMjI2IDU3Ljk2NjcgNjQuMzU2MiA1OC4zMTA3IDYwLjE1NjQgNjAuMTg5M0M1NS4zODg3IDYyLjMyMTkgNTQuMTQxNSA2NS44Njk0IDUzLjY3OTcgNzAuNjMzN0w1My4xMjAxIDc1Ljc2NjJDNTIuOTQ5MSA3Ny4zMzQ5IDUxLjQ3ODUgNzguNTM2NiA0OS45MDE0IDc4LjUzNjZDNDguMjY5OSA3OC41MzY2IDQ3LjA0NjUgNzcuMjk0IDQ2Ljg2OTYgNzUuNjcxMkw0Ni4zMjA0IDcwLjYzMzdDNDUuOTI0OSA2Ni41NTI5IDQ1LjIwNzkgNjIuNTg4NyA0MC45ODk1IDYwLjcwMThDMzYuMTc3NiA1OC41NDk0IDMxLjM0MTkgNTcuODM0NyAyNi4xOTc2IDU4Ljg1NzNDMjQuNDI2IDU5LjIwOTQgMjMuMjY3OCA2MC45MjI5IDIzLjYwMDcgNjIuNjk5MkMyNC42NDEgNjguMjUwNyAzMC4wODEyIDcwLjkzMDUgMzQuNzUwMyA3Mi45NzI5QzM4LjIwOCA3NC40ODU1IDQwLjQ0MjQgNzcuOTAzMSA0MC40NDI0IDgxLjY3ODlWOTEuMjY2M0M0MC40NDI0IDkyLjM2MiAzOS41NTU1IDkzLjI1IDM4LjQ1OTkgOTMuMjVIMjcuMzc1NkMyMC43MDI0IDkzLjI1IDE0LjcwNTcgODcuODk5MSAxNC41ODkxIDgxLjIyMzNWNTMuODY2M0MxNC41ODkxIDUxLjI0NDYgMTYuMzA0NSA0OC45MzE2IDE4LjgxMzIgNDguMTcwN1oiCiAgICAgICAgZmlsbD0idXJsKCNwYWludDJfbGluZWFyXzM3Ml80MDI1OSkiIC8+CiAgICA8ZGVmcz4KICAgICAgICA8bGluZWFyR3JhZGllbnQgaWQ9InBhaW50MF9saW5lYXJfMzcyXzQwMjU5IiB4MT0iNDkuMzA1NyIgeTE9IjIuMDc5IiB4Mj0iODAuMzYyNyIgeTI9IjkzLjY1OTciCiAgICAgICAgICAgIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIj4KICAgICAgICAgICAgPHN0b3Agc3RvcC1jb2xvcj0iI0Y1RDQ1RSIgLz4KICAgICAgICAgICAgPHN0b3Agb2Zmc2V0PSIxIiBzdG9wLWNvbG9yPSIjRkY5NjAwIiAvPgogICAgICAgIDwvbGluZWFyR3JhZGllbnQ+CiAgICAgICAgPGxpbmVhckdyYWRpZW50IGlkPSJwYWludDFfbGluZWFyXzM3Ml80MDI1OSIgeDE9IjQ5LjMwNTciIHkxPSIyLjA3OSIgeDI9IjgwLjM2MjciIHkyPSI5My42NTk3IgogICAgICAgICAgICBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSI+CiAgICAgICAgICAgIDxzdG9wIHN0b3AtY29sb3I9IiNGNUQ0NUUiIC8+CiAgICAgICAgICAgIDxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0iI0ZGOTYwMCIgLz4KICAgICAgICA8L2xpbmVhckdyYWRpZW50PgogICAgICAgIDxsaW5lYXJHcmFkaWVudCBpZD0icGFpbnQyX2xpbmVhcl8zNzJfNDAyNTkiIHgxPSI0OS4zMDU3IiB5MT0iMi4wNzkiIHgyPSI4MC4zNjI3IiB5Mj0iOTMuNjU5NyIKICAgICAgICAgICAgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiPgogICAgICAgICAgICA8c3RvcCBzdG9wLWNvbG9yPSIjRjVENDVFIiAvPgogICAgICAgICAgICA8c3RvcCBvZmZzZXQ9IjEiIHN0b3AtY29sb3I9IiNGRjk2MDAiIC8+CiAgICAgICAgPC9saW5lYXJHcmFkaWVudD4KICAgIDwvZGVmcz4KPC9zdmc+', - downloads: { - chrome: - 'https://chrome.google.com/webstore/detail/braavos-wallet/jnlgamecbpmbajjfhmmmlhejkemejdma', - firefox: 'https://addons.mozilla.org/en-US/firefox/addon/braavos-wallet', - edge: 'https://microsoftedge.microsoft.com/addons/detail/braavos-wallet/hkkpjehhcnhgefhbdcgfkeegglpjchdc', - }, - }, -]; - -export default wallets; diff --git a/src/wallet/getst/localStorageStore.ts b/src/wallet/getst/localStorageStore.ts deleted file mode 100644 index 7c0918311..000000000 --- a/src/wallet/getst/localStorageStore.ts +++ /dev/null @@ -1,81 +0,0 @@ -import { generateUID } from './utils'; - -export interface IStorageWrapper { - set(value: string | null | undefined): boolean; - get(): string | null | undefined; - delete(): boolean; -} - -export class LocalStorageWrapper implements IStorageWrapper { - #initialized = false; - - #key: string | undefined = undefined; - - #prefix: string; - - value: string | null | undefined = undefined; - - constructor(key: string) { - this.#prefix = key; - - this.#init(); - } - - set(value: string | null | undefined) { - if (!this.#initialized && !this.#init()) { - return false; - } - - this.delete(); // clear current key - - this.value = value; - if (value) { - this.#key = `${this.#prefix}-${generateUID()}`; - localStorage.setItem(this.#key, value); - } - - return true; - } - - get() { - this.#validateValue(); - return this.value; - } - - delete() { - if (!this.#initialized && !this.#init()) { - return false; - } - - this.value = null; - if (this.#key) localStorage.removeItem(this.#key); - - return true; - } - - #validateValue() { - if (this.value) { - this.set(this.value); - } - } - - #init() { - try { - if (!this.#initialized && typeof window !== 'undefined') { - // init with prev key/value - this.#key = Object.keys(localStorage).find((sk) => sk.startsWith(this.#prefix)); - - // set initialized as soon as we managed to extract data - // from localStorage, so the `set` call below won't result - // in a endless-recursive loop - this.#initialized = true; - if (this.#key) { - this.set(localStorage.getItem(this.#key)); - } - } - } catch (err) { - console.warn(err); - } - return this.#initialized; - } -} diff --git a/src/wallet/getst/main.ts b/src/wallet/getst/main.ts deleted file mode 100644 index fc9cd5334..000000000 --- a/src/wallet/getst/main.ts +++ /dev/null @@ -1,131 +0,0 @@ -/* eslint-disable @typescript-eslint/no-shadow */ -import { type StarknetWindowObject } from './StarknetWindowObject'; -import discovery, { type WalletProvider } from './discovery'; -import { LocalStorageWrapper } from './localStorageStore'; -import { Permission } from './rpcMessage'; -import type { GetStarknetOptions, GetStarknetResult } from './types'; -import { pipe } from './utils'; -import { filterBy, filterByAuthorized } from './wallet/filter'; -import { isWalletObj } from './wallet/isWalletObject'; -import { scanObjectForWallets } from './wallet/scan'; -import { sortBy } from './wallet/sort'; - -export type { StarknetWindowObject } from './StarknetWindowObject'; - -export type { - AddDeclareTransactionParameters, - AddDeclareTransactionResult, - AddDeployAccountTransactionParameters, - AddDeployAccountTransactionResult, - AddInvokeTransactionParameters, - AddInvokeTransactionResult, - AddStarknetChainParameters, - RequestAccountsParameters, - StarknetChainId, - SwitchStarknetChainParameters, - GetDeploymentDataResult, - WatchAssetParameters, - TypedData, - RequestFn, - RpcMessage, - IsParamsOptional, - RpcTypeToMessageMap, - RequestFnCall, -} from './rpcMessage'; - -export type { - WalletEvents, - AccountChangeEventHandler, - NetworkChangeEventHandler, - WalletEventHandlers, -} from './walletEvents'; - -export { Permission } from './rpcMessage'; - -export type { - DisconnectOptions, - GetStarknetOptions, - GetStarknetResult, - GetWalletOptions, - WalletProvider, -} from './types'; - -const ssrSafeWindow = typeof window !== 'undefined' ? window : {}; - -const defaultOptions: GetStarknetOptions = { - windowObject: ssrSafeWindow, - isWalletObject: isWalletObj, - storageFactoryImplementation: (name: string) => new LocalStorageWrapper(name), -}; - -export function getStarknet(options: Partial = {}): GetStarknetResult { - const { storageFactoryImplementation, windowObject, isWalletObject } = { - ...defaultOptions, - ...options, - }; - const lastConnectedStore = storageFactoryImplementation('gsw-last'); - - return { - getAvailableWallets: async (options = {}) => { - const availableWallets = scanObjectForWallets(windowObject, isWalletObject); - return pipe( - (_) => filterBy(_, options), - (_) => sortBy(_, options.sort) - )(availableWallets); - }, - getAuthorizedWallets: async (options = {}) => { - const availableWallets = scanObjectForWallets(windowObject, isWalletObject); - return pipe( - (_) => filterByAuthorized(_), - (_) => filterBy(_, options), - (_) => sortBy(_, options.sort) - )(availableWallets); - }, - getDiscoveryWallets: async (options = {}) => { - return pipe( - (_) => filterBy(_, options), - (_) => sortBy(_, options.sort) - )(discovery); - }, - getLastConnectedWallet: async () => { - const lastConnectedWalletId = lastConnectedStore.get(); - const allWallets = scanObjectForWallets(windowObject, isWalletObject); - const lastConnectedWallet = allWallets.find((w) => w.id === lastConnectedWalletId); - const [firstAuthorizedWallet] = await filterByAuthorized( - lastConnectedWallet ? [lastConnectedWallet] : [] - ); - - if (!firstAuthorizedWallet) { - lastConnectedStore.delete(); - return null; - } - - return firstAuthorizedWallet; - }, - enable: async (wallet, options) => { - await wallet.request({ - type: 'wallet_requestAccounts', - params: { - silentMode: options?.silentMode, - }, - }); - - // check for permissions - const permissions = await wallet.request({ - type: 'wallet_getPermissions', - }); - if (!permissions?.includes(Permission.Accounts)) { - throw new Error('Failed to connect to wallet'); - } - lastConnectedStore.set(wallet.id); - return wallet; - }, - disconnect: async ({ clearLastWallet } = {}) => { - if (clearLastWallet) { - lastConnectedStore.delete(); - } - }, - }; -} - -export default getStarknet(); diff --git a/src/wallet/getst/rpcMessage.ts b/src/wallet/getst/rpcMessage.ts deleted file mode 100644 index c20bfeddb..000000000 --- a/src/wallet/getst/rpcMessage.ts +++ /dev/null @@ -1,330 +0,0 @@ -export enum StarknetChainId { - SN_MAIN = '0x534e5f4d41494e', - SN_GOERLI = '0x534e5f474f45524c49', - SN_SEPOLIA = '0x534e5f5345504f4c4941', -} - -export enum Permission { - Accounts = 'accounts', -} - -type FELT = string; - -type Call = { - contract_address: FELT; - entrypoint: string; - calldata?: FELT[]; -}; - -type SIERRA_ENTRY_POINT = { - selector: FELT; - function_idx: number; -}; - -type StarknetMerkleType = { - name: string; - type: 'merkletree'; - contains: string; -}; - -/** - * A single type, as part of a struct. The `type` field can be any of the EIP-712 supported types. - * - * Note that the `uint` and `int` aliases like in Solidity, and fixed point numbers are not supported by the EIP-712 - * standard. - */ -type StarknetType = - | { - name: string; - type: string; - } - | StarknetMerkleType; - -/** - * The EIP712 domain struct. Any of these fields are optional, but it must contain at least one field. - */ -interface StarknetDomain extends Record { - name?: string; - version?: string; - chainId?: string | number; -} - -/** - * The complete typed data, with all the structs, domain data, primary type of the message, and the message itself. - */ -export interface TypedData { - types: Record; - primaryType: string; - domain: StarknetDomain; - message: Record; -} - -/** - * INVOKE_TXN_V1 - * @see https://github.com/starkware-libs/starknet-specs/blob/master/api/starknet_api_openrpc.json - */ -export interface AddInvokeTransactionParameters { - /** - * Calls to invoke by the account - */ - calls: Call[]; -} -export interface AddInvokeTransactionResult { - /** - * The hash of the invoke transaction - */ - transaction_hash: FELT; -} - -/** - * BROADCASTED_DECLARE_TXN_V2 - * @see https://github.com/starkware-libs/starknet-specs/blob/master/api/starknet_api_openrpc.json - */ -export interface AddDeclareTransactionParameters { - /** - * The hash of the Cairo assembly resulting from the Sierra compilation - */ - compiled_class_hash: FELT; - contract_class: { - /** - * The list of Sierra instructions of which the program consists - */ - sierra_program: FELT[]; - /** - * The version of the contract class object. Currently, the Starknet OS supports version 0.1.0 - */ - contract_class_version: string; - /** - * Entry points by type - */ - entry_points_by_type: { - CONSTRUCTOR: SIERRA_ENTRY_POINT[]; - EXTERNAL: SIERRA_ENTRY_POINT[]; - L1_HANDLER: SIERRA_ENTRY_POINT[]; - }; - /** - * The class ABI, as supplied by the user declaring the class - */ - abi?: string; - }; -} -export interface AddDeclareTransactionResult { - /** - * The hash of the declare transaction - */ - transaction_hash: FELT; - /** - * The hash of the declared class - */ - class_hash: FELT; -} - -/** - * DEPLOY_ACCOUNT_TXN_V1 - * @see https://github.com/starkware-libs/starknet-specs/blob/master/api/starknet_api_openrpc.json - */ -export interface AddDeployAccountTransactionParameters { - /** - * The salt for the address of the deployed contract - */ - contract_address_salt: FELT; - /** - * The parameters passed to the constructor - */ - constructor_calldata: FELT[]; - /** - * The hash of the deployed contract's class - */ - class_hash: FELT; -} -export interface AddDeployAccountTransactionResult { - /** - * The hash of the deploy transaction - */ - transaction_hash: FELT; - /** - * The address of the new contract - */ - contract_address: FELT; -} - -/** - * EIP-1102: - * @see https://eips.ethereum.org/EIPS/eip-1102 - */ -export interface RequestAccountsParameters { - /** - * If true, the wallet will not show the wallet-unlock UI in case of a locked wallet, - * nor the dApp-approve UI in case of a non-allowed dApp. - */ - silentMode?: boolean; -} - -/** - * EIP-747: - * @see https://github.com/ethereum/EIPs/blob/master/EIPS/eip-747.md - */ -export interface WatchAssetParameters { - type: 'ERC20'; // The asset's interface, e.g. 'ERC20' - options: { - address: string; // The hexadecimal Starknet address of the token contract - symbol?: string; // A ticker symbol or shorthand, up to 5 alphanumerical characters - decimals?: number; // The number of asset decimals - image?: string; // A string url of the token logo - name?: string; // The name of the token - not in spec - }; -} - -/** - * EIP-3085: - * @see https://github.com/ethereum/EIPs/blob/master/EIPS/eip-3085.md - */ -export interface AddStarknetChainParameters { - id: string; - chainId: string; // A 0x-prefixed hexadecimal string - chainName: string; - rpcUrls?: string[]; - blockExplorerUrls?: string[]; - - nativeCurrency?: { - address: string; // Not part of the standard, but required by Starknet as it can work with any ERC20 token as the fee token - name: string; - symbol: string; // 2-6 characters long - decimals: number; - }; // Currently ignored. - iconUrls?: string[]; // Currently ignored. -} - -export interface SwitchStarknetChainParameters { - chainId: string; // A 0x-prefixed hexadecimal string -} - -// see https://community.starknet.io/t/snip-deployment-interface-between-dapps-and-wallets/101923 -export interface GetDeploymentDataResult { - address: FELT; // the expected address, used to double-check the returned data - class_hash: FELT; // The class hash of the contract to deploy - salt: FELT; // The salt used for the computation of the account address - calldata: FELT[]; // An array of felts - sigdata?: FELT[]; // An optional array of felts to be added in the signature - version: 0 | 1; // Cairo version (an integer) -} - -/** - * Maps each RPC message type to its corresponding parameters and result type. - */ -export interface RpcTypeToMessageMap { - /** - * Get permissions from the wallet. - * @returns An array of permissions. - */ - wallet_getPermissions: { params?: never; result: Permission[] }; - - /** - * Request accounts from the wallet. - * @param params Optional parameters for requesting accounts. - * @returns An array of account addresses as strings. - */ - wallet_requestAccounts: { - params?: RequestAccountsParameters; - result: string[]; - }; - - /** - * Watch an asset in the wallet. - * @param params The parameters required to watch an asset. - * @returns A boolean indicating if the operation was successful. - */ - wallet_watchAsset: { params: WatchAssetParameters; result: boolean }; - - /** - * Add a new Starknet chain to the wallet. - * @param params The parameters required to add a new chain. - * @returns A boolean indicating if the operation was successful. - */ - wallet_addStarknetChain: { - params: AddStarknetChainParameters; - result: boolean; - }; - - /** - * Switch the current Starknet chain in the wallet. - * @param params The parameters required to switch chains. - * @returns A boolean indicating if the operation was successful. - */ - wallet_switchStarknetChain: { - params: SwitchStarknetChainParameters; - result: boolean; - }; - - /** - * Request the current chain ID from the wallet. - * @returns The current Starknet chain ID. - */ - wallet_requestChainId: { params?: never; result: StarknetChainId }; - - /** - * Get deployment data for a contract. - * @returns The deployment data result. - */ - wallet_deploymentData: { params?: never; result: GetDeploymentDataResult }; - - /** - * Add an invoke transaction to the wallet. - * @param params The parameters required for the invoke transaction. - * @returns The result of adding the invoke transaction. - */ - starknet_addInvokeTransaction: { - params: AddInvokeTransactionParameters; - result: AddInvokeTransactionResult; - }; - - /** - * Add a declare transaction to the wallet. - * @param params The parameters required for the declare transaction. - * @returns The result of adding the declare transaction. - */ - starknet_addDeclareTransaction: { - params: AddDeclareTransactionParameters; - result: AddDeclareTransactionResult; - }; - - /** - * Add a deploy account transaction to the wallet. - * @param params The parameters required for the deploy account transaction. - * @returns The result of adding the deploy account transaction. - */ - starknet_addDeployAccountTransaction: { - params: AddDeployAccountTransactionParameters; - result: AddDeployAccountTransactionResult; - }; - - /** - * Sign typed data using the wallet. - * @param params The typed data to sign. - * @returns An array of signatures as strings. - */ - starknet_signTypedData: { params: TypedData; result: string[] }; - - /** - * Get the list of supported specifications. - * @returns An array of supported specification strings. - */ - starknet_supportedSpecs: { params?: never; result: string[] }; -} - -export type RpcMessage = { - [K in keyof RpcTypeToMessageMap]: { type: K } & RpcTypeToMessageMap[K]; -}[keyof RpcTypeToMessageMap]; - -export type IsParamsOptional = - undefined extends RpcTypeToMessageMap[T]['params'] ? true : false; - -export type RequestFnCall = { - type: T; -} & (IsParamsOptional extends true - ? { params?: RpcTypeToMessageMap[T]['params'] } - : { params: RpcTypeToMessageMap[T]['params'] }); - -export type RequestFn = ( - call: RequestFnCall -) => Promise; diff --git a/src/wallet/getst/types.ts b/src/wallet/getst/types.ts deleted file mode 100644 index e1351fc24..000000000 --- a/src/wallet/getst/types.ts +++ /dev/null @@ -1,36 +0,0 @@ -import { StarknetWindowObject } from './StarknetWindowObject'; -import { WalletProvider } from './discovery'; -import { IStorageWrapper } from './localStorageStore'; -import { RequestAccountsParameters } from './rpcMessage'; -import { FilterList } from './wallet/filter'; -import { Sort } from './wallet/sort'; - -export type { WalletProvider } from './discovery'; - -export interface GetStarknetOptions { - windowObject: Record; - isWalletObject: (wallet: any) => boolean; - storageFactoryImplementation: (name: string) => IStorageWrapper; -} - -export interface GetWalletOptions { - sort?: Sort; - include?: FilterList; - exclude?: FilterList; -} - -export interface DisconnectOptions { - clearLastWallet?: boolean; -} - -export interface GetStarknetResult { - getAvailableWallets: (options?: GetWalletOptions) => Promise; // Returns all wallets available in the window object - getAuthorizedWallets: (options?: GetWalletOptions) => Promise; // Returns only preauthorized wallets available in the window object - getDiscoveryWallets: (options?: GetWalletOptions) => Promise; // Returns all wallets in existence (from discovery file) - getLastConnectedWallet: () => Promise; // Returns the last wallet connected when it's still connected - enable: ( - wallet: StarknetWindowObject, - options?: RequestAccountsParameters - ) => Promise; // Connects to a wallet - disconnect: (options?: DisconnectOptions) => Promise; // Disconnects from a wallet -} diff --git a/src/wallet/getst/utils.ts b/src/wallet/getst/utils.ts deleted file mode 100644 index a5d4da78e..000000000 --- a/src/wallet/getst/utils.ts +++ /dev/null @@ -1,20 +0,0 @@ -/* eslint-disable no-plusplus */ -/* eslint-disable no-param-reassign */ -/** - * @see https://github.com/GoogleChrome/web-vitals/blob/main/src/lib/generateUniqueID.ts - */ -export const generateUID = () => `${Date.now()}-${Math.floor(Math.random() * (9e12 - 1)) + 1e12}`; - -export const shuffle = (arr: T): T => { - for (let i = arr.length - 1; i > 0; i--) { - const j = Math.floor(Math.random() * (i + 1)); - [arr[i], arr[j]] = [arr[j], arr[i]]; - } - return arr; -}; - -type AllowPromise = Promise | T; -export const pipe = - (...fns: Array<(arg: T) => AllowPromise>): ((arg: T) => Promise) => - (arg: T) => - fns.reduce>((acc, fn) => acc.then(fn), Promise.resolve(arg)); diff --git a/src/wallet/getst/wallet/filter.ts b/src/wallet/getst/wallet/filter.ts deleted file mode 100644 index 8ea651ff5..000000000 --- a/src/wallet/getst/wallet/filter.ts +++ /dev/null @@ -1,44 +0,0 @@ -import { type StarknetWindowObject } from '../StarknetWindowObject'; -import type { WalletProvider } from '../discovery'; -import { Permission } from '../rpcMessage'; - -export type FilterList = string[]; -interface FilterByOptions { - include?: FilterList; - exclude?: FilterList; -} - -export function filterBy( - installed: T[], - options?: FilterByOptions -): T[] { - if (options?.include?.length) { - const included = new Set(options.include); - return installed.filter((w) => included.has(w.id)); - } - - if (options?.exclude?.length) { - const excluded = new Set(options.exclude); - return installed.filter((w) => !excluded.has(w.id)); - } - - return installed; -} - -/** - * filters given wallets array, return only preAuthorized instances - * @param wallets - */ -export const filterByAuthorized = async ( - wallets: StarknetWindowObject[] -): Promise => { - const preAuthResponses = await Promise.all( - wallets.map((w) => - w - .request({ type: 'wallet_getPermissions' }) - .then((result) => result.includes(Permission.Accounts)) - .catch(() => false) - ) - ); - return wallets.filter((_, i) => preAuthResponses[i]); -}; diff --git a/src/wallet/getst/wallet/isWalletObject.ts b/src/wallet/getst/wallet/isWalletObject.ts deleted file mode 100644 index 474e6ba53..000000000 --- a/src/wallet/getst/wallet/isWalletObject.ts +++ /dev/null @@ -1,19 +0,0 @@ -/* eslint-disable no-empty */ -export const isWalletObj = (wallet: any): boolean => { - try { - return ( - wallet && - [ - // wallet's must have methods/members, see IStarknetWindowObject - 'request', - 'on', - 'off', - 'version', - 'id', - 'name', - 'icon', - ].every((key) => key in wallet) - ); - } catch (err) {} - return false; -}; diff --git a/src/wallet/getst/wallet/scan.ts b/src/wallet/getst/wallet/scan.ts deleted file mode 100644 index a772a54be..000000000 --- a/src/wallet/getst/wallet/scan.ts +++ /dev/null @@ -1,20 +0,0 @@ -/* eslint-disable no-param-reassign */ -import type { StarknetWindowObject } from '../StarknetWindowObject'; - -export function scanObjectForWallets( - obj: Record, - isWalletObject: (wallet: any) => boolean -): StarknetWindowObject[] { - return Object.values( - Object.getOwnPropertyNames(obj).reduce>((wallets, key) => { - if (key.startsWith('starknet')) { - const wallet = obj[key]; - - if (isWalletObject(wallet) && !wallets[wallet.id]) { - wallets[wallet.id] = wallet; - } - } - return wallets; - }, {}) - ); -} diff --git a/src/wallet/getst/wallet/sort.ts b/src/wallet/getst/wallet/sort.ts deleted file mode 100644 index 493594b8e..000000000 --- a/src/wallet/getst/wallet/sort.ts +++ /dev/null @@ -1,24 +0,0 @@ -import { StarknetWindowObject } from '../StarknetWindowObject'; -import { WalletProvider } from '../discovery'; -import { shuffle } from '../utils'; - -export type Sort = string[] | 'random' | null | undefined; - -export const sortBy = ( - wallets: T[], - sort: Sort -): T[] => { - if (sort && Array.isArray(sort)) { - // skip default/preAuthorized priorities, - // sort by client-specific order - wallets.sort((a, b) => sort.indexOf(a.id) - sort.indexOf(b.id)); - - const sortScope = wallets.length - sort.length; - return [ - ...wallets.slice(sortScope), - // shuffle wallets which are outside `sort` scope - ...shuffle(wallets.slice(0, sortScope)), - ]; - } - return shuffle(wallets); -}; diff --git a/src/wallet/getst/walletEvents.ts b/src/wallet/getst/walletEvents.ts deleted file mode 100644 index bbc590c33..000000000 --- a/src/wallet/getst/walletEvents.ts +++ /dev/null @@ -1,14 +0,0 @@ -import { StarknetChainId } from './rpcMessage'; - -export type AccountChangeEventHandler = (accounts?: string[]) => void; - -export type NetworkChangeEventHandler = (chainId?: StarknetChainId, accounts?: string[]) => void; - -export interface WalletEventHandlers { - accountsChanged: AccountChangeEventHandler; - networkChanged: NetworkChangeEventHandler; -} - -export type WalletEvents = { - [E in keyof WalletEventHandlers]: { type: E; handler: WalletEventHandlers[E] }; -}[keyof WalletEventHandlers]; diff --git a/src/wallet/types.ts b/src/wallet/types.ts index 67d4bf97f..4985b9965 100644 --- a/src/wallet/types.ts +++ b/src/wallet/types.ts @@ -1,4 +1,4 @@ -import { RpcMessage, StarknetWindowObject } from './getst/main'; +import { type RpcMessage, type StarknetWindowObject } from 'get-starknet-core'; // ---- TT Request Handler export type RpcCall = Omit; diff --git a/tsconfig.json b/tsconfig.json index f67bd6a42..324ccba44 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -27,9 +27,9 @@ // "useDefineForClassFields": true, /* Emit ECMAScript-standard-compliant class fields. */ /* Modules */ - "module": "Node16" /* Specify what module code is generated. */, + "module": "ES2022" /* Specify what module code is generated. */, // "rootDir": "./", /* Specify the root folder within your source files. */ - // "moduleResolution": "Node16" /* Specify how TypeScript looks up a file from a given module specifier. */, + "moduleResolution": "Bundler" /* Specify how TypeScript looks up a file from a given module specifier. */, // "baseUrl": "./", /* Specify the base directory to resolve non-relative module names. */ // "paths": {}, /* Specify a set of entries that re-map imports to additional lookup locations. */ // "rootDirs": [], /* Allow multiple folders to be treated as one when resolving modules. */ From 5265995b0580e71b36ce4cfd6cb2aaeccb76b0f8 Mon Sep 17 00:00:00 2001 From: Philippe ROSTAN <81040730+PhilippeR26@users.noreply.github.com> Date: Wed, 27 Mar 2024 12:29:15 +0100 Subject: [PATCH 19/37] fix: estimateMessageFee - eth address format (#1040) * fix: estimatemessagefee eth address format * fix: implement requests --- __tests__/rpcProvider.test.ts | 39 +++++++++++++++++++++++++------ __tests__/utils/ethSigner.test.ts | 15 ++++++++++++ src/channel/rpc_0_6.ts | 3 ++- src/channel/rpc_0_7.ts | 3 ++- src/utils/eth.ts | 25 +++++++++++++++++++- www/docs/guides/L1message.md | 4 ++-- 6 files changed, 77 insertions(+), 12 deletions(-) diff --git a/__tests__/rpcProvider.test.ts b/__tests__/rpcProvider.test.ts index a10bdcabf..c8bf0615e 100644 --- a/__tests__/rpcProvider.test.ts +++ b/__tests__/rpcProvider.test.ts @@ -18,6 +18,8 @@ import { StarknetChainId } from '../src/constants'; import { felt, uint256 } from '../src/utils/calldata/cairo'; import { toHexString } from '../src/utils/num'; import { + compiledC1v2, + compiledC1v2Casm, compiledErc20Echo, compiledL1L2, compiledOpenZeppelinAccount, @@ -109,24 +111,47 @@ describeIfRpc('RPCProvider', () => { }); describe('Test Estimate message fee', () => { - const L1_ADDRESS = '0x8359E4B0152ed5A731162D3c7B0D8D56edB165A0'; - let l1l2ContractAddress: string; + let l1l2ContractCairo0Address: string; + let l1l2ContractCairo1Address: string; beforeAll(async () => { const { deploy } = await account.declareAndDeploy({ contract: compiledL1L2, }); - l1l2ContractAddress = deploy.contract_address; + l1l2ContractCairo0Address = deploy.contract_address; + const { deploy: deploy2 } = await account.declareAndDeploy({ + contract: compiledC1v2, + casm: compiledC1v2Casm, + }); + l1l2ContractCairo1Address = deploy2.contract_address; }); - test('estimate message fee', async () => { - const estimation = await rpcProvider.estimateMessageFee({ + test('estimate message fee Cairo 0', async () => { + const L1_ADDRESS = '0x8359E4B0152ed5A731162D3c7B0D8D56edB165A0'; + const estimationCairo0 = await rpcProvider.estimateMessageFee({ from_address: L1_ADDRESS, - to_address: l1l2ContractAddress, + to_address: l1l2ContractCairo0Address, entry_point_selector: 'deposit', payload: ['556', '123'], }); - expect(estimation).toEqual( + expect(estimationCairo0).toEqual( + expect.objectContaining({ + gas_consumed: expect.anything(), + gas_price: expect.anything(), + overall_fee: expect.anything(), + }) + ); + }); + + test('estimate message fee Cairo 1', async () => { + const L1_ADDRESS = '0x8359E4B0152ed5A731162D3c7B0D8D56edB165'; // not coded in 20 bytes + const estimationCairo1 = await rpcProvider.estimateMessageFee({ + from_address: L1_ADDRESS, + to_address: l1l2ContractCairo1Address, + entry_point_selector: 'increase_bal', + payload: ['100'], + }); + expect(estimationCairo1).toEqual( expect.objectContaining({ gas_consumed: expect.anything(), gas_price: expect.anything(), diff --git a/__tests__/utils/ethSigner.test.ts b/__tests__/utils/ethSigner.test.ts index 21b420bcc..a4b39652d 100644 --- a/__tests__/utils/ethSigner.test.ts +++ b/__tests__/utils/ethSigner.test.ts @@ -13,6 +13,7 @@ import { num, stark, } from '../../src'; +import { validateAndParseEthAddress } from '../../src/utils/eth'; import { ETransactionVersion } from '../../src/types/api'; import { compiledDummy1Eth, @@ -321,4 +322,18 @@ describe('Ethereum signer', () => { ); }); }); + describe('Ethereum address', () => { + test('Eth address format', async () => { + const ethAddr = '0x8359E4B0152ed5A731162D3c7B0D8D56edB165'; // not a valid 20 bytes ETh address + expect(validateAndParseEthAddress(ethAddr)).toBe( + '0x008359e4b0152ed5a731162d3c7b0d8d56edb165' + ); + expect(validateAndParseEthAddress(BigInt(ethAddr))).toBe( + '0x008359e4b0152ed5a731162d3c7b0d8d56edb165' + ); + expect(validateAndParseEthAddress(BigInt(ethAddr).toString(10))).toBe( + '0x008359e4b0152ed5a731162d3c7b0d8d56edb165' + ); + }); + }); }); diff --git a/src/channel/rpc_0_6.ts b/src/channel/rpc_0_6.ts index c7754fbb2..f89ce7eff 100644 --- a/src/channel/rpc_0_6.ts +++ b/src/channel/rpc_0_6.ts @@ -20,6 +20,7 @@ import { import { JRPC, RPCSPEC06 as RPC } from '../types/api'; import { CallData } from '../utils/calldata'; import { isSierra } from '../utils/contract'; +import { validateAndParseEthAddress } from '../utils/eth'; import fetch from '../utils/fetchPonyfill'; import { getSelector, getSelectorFromName } from '../utils/hash'; import { stringify } from '../utils/json'; @@ -565,7 +566,7 @@ export class RpcChannel { ) { const { from_address, to_address, entry_point_selector, payload } = message; const formattedMessage = { - from_address: toHex(from_address), + from_address: validateAndParseEthAddress(from_address), to_address: toHex(to_address), entry_point_selector: getSelector(entry_point_selector), payload: getHexStringArray(payload), diff --git a/src/channel/rpc_0_7.ts b/src/channel/rpc_0_7.ts index 7e74e0fa5..3d1f40eca 100644 --- a/src/channel/rpc_0_7.ts +++ b/src/channel/rpc_0_7.ts @@ -20,6 +20,7 @@ import { import { JRPC, RPCSPEC07 as RPC } from '../types/api'; import { CallData } from '../utils/calldata'; import { isSierra } from '../utils/contract'; +import { validateAndParseEthAddress } from '../utils/eth'; import fetch from '../utils/fetchPonyfill'; import { getSelector, getSelectorFromName } from '../utils/hash'; import { stringify } from '../utils/json'; @@ -569,7 +570,7 @@ export class RpcChannel { ) { const { from_address, to_address, entry_point_selector, payload } = message; const formattedMessage = { - from_address: toHex(from_address), + from_address: validateAndParseEthAddress(from_address), to_address: toHex(to_address), entry_point_selector: getSelector(entry_point_selector), payload: getHexStringArray(payload), diff --git a/src/utils/eth.ts b/src/utils/eth.ts index f32431556..d8c2a7536 100644 --- a/src/utils/eth.ts +++ b/src/utils/eth.ts @@ -1,14 +1,37 @@ import { secp256k1 } from '@noble/curves/secp256k1'; -import { buf2hex, sanitizeHex } from './encode'; +import { addHexPrefix, buf2hex, removeHexPrefix, sanitizeHex } from './encode'; +import type { BigNumberish } from '../types'; +import { assertInRange, toHex } from './num'; +import { ZERO } from '../constants'; +import assert from './assert'; /** * Get random Ethereum private Key. * @returns an Hex string * @example + * ```typescript * const myPK: string = randomAddress() * // result = "0xf04e69ac152fba37c02929c2ae78c9a481461dda42dbc6c6e286be6eb2a8ab83" + * ``` */ export function ethRandomPrivateKey(): string { return sanitizeHex(buf2hex(secp256k1.utils.randomPrivateKey())); } + +/** + * Get a string formatted for an Ethereum address, without uppercase characters. + * @param {BigNumberish} address Address of an Ethereum account. + * @returns an Hex string coded on 20 bytes + * @example + * ```typescript + * const myEthAddress: string = validateAndParseEthAddress("0x8359E4B0152ed5A731162D3c7B0D8D56edB165") + * // result = "0x008359e4b0152ed5a731162d3c7b0d8d56edb165" + * ``` + */ +export function validateAndParseEthAddress(address: BigNumberish): string { + assertInRange(address, ZERO, 2n ** 160n - 1n, 'Ethereum Address '); + const result = addHexPrefix(removeHexPrefix(toHex(address)).padStart(40, '0')); + assert(result.match(/^(0x)?[0-9a-f]{40}$/), 'Invalid Ethereum Address Format'); + return result; +} diff --git a/www/docs/guides/L1message.md b/www/docs/guides/L1message.md index eec10460c..8e154b8c8 100644 --- a/www/docs/guides/L1message.md +++ b/www/docs/guides/L1message.md @@ -42,11 +42,11 @@ const responseEstimateMessageFee = await provider.estimateMessageFee({ from_address: L1address, to_address: L2address, entry_point_selector: 'handle_l1_mess', - payload: ['1234567890123456789', '200'], + payload: ['1234567890123456789', '200'], // without from_address }); ``` -If the fee is paid in L1, the Cairo contract at `to_Address` is automatically executed, function `entry_point_selector` (the function shall have a decorator `@l1_handler` in the Cairo code), with parameters `payload`. +If the fee is paid in L1, the Cairo contract at `to_Address` is automatically executed, function `entry_point_selector` (the function shall have a decorator `#[l1_handler]` in the Cairo code, with a first parameter called `from_address: felt252`). The payload shall not include the `from_address` parameter. ## L2 ➡️ L1 messages From f121a75a9f1d68495c61d12ed324375d765d51f4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ivan=20Pavi=C4=8Di=C4=87?= Date: Thu, 28 Mar 2024 16:57:24 +0100 Subject: [PATCH 20/37] docs: small guides cleanup (#1048) * docs: fix nodeUrl code typo (#1046) * docs: small guides cleanup --------- Co-authored-by: Joel Mun --- www/docs/guides/connect_account.md | 7 +++-- www/docs/guides/create_account.md | 18 ++++++------ www/docs/guides/define_call_message.md | 28 ++++++++----------- www/docs/guides/signature.md | 9 +++--- .../version-5.24.3/guides/events.md | 2 +- 5 files changed, 32 insertions(+), 32 deletions(-) diff --git a/www/docs/guides/connect_account.md b/www/docs/guides/connect_account.md index 4db2ebdb6..b5c0edb5b 100644 --- a/www/docs/guides/connect_account.md +++ b/www/docs/guides/connect_account.md @@ -80,10 +80,11 @@ As a consequence of account abstraction, you can find accounts that uses Ethereu To connect to this type of account: ```typescript -const myEthPrivateKey = "0x525bc68475c0955fae83869beec0996114d4bb27b28b781ed2a20ef23121b8de"; -const myEthAccountAddressInStarknet = "0x65a822fbee1ae79e898688b5a4282dc79e0042cbed12f6169937fddb4c26641"; +const myEthPrivateKey = '0x525bc68475c0955fae83869beec0996114d4bb27b28b781ed2a20ef23121b8de'; +const myEthAccountAddressInStarknet = + '0x65a822fbee1ae79e898688b5a4282dc79e0042cbed12f6169937fddb4c26641'; const myEthSigner = new EthSigner(myEthPrivateKey); -const myEthAccount = new Account(provider, myEthAccountAddressInStarknet, myEthSigner) +const myEthAccount = new Account(provider, myEthAccountAddressInStarknet, myEthSigner); ``` And if you need a random Ethereum private key: diff --git a/www/docs/guides/create_account.md b/www/docs/guides/create_account.md index ac1ac2d2f..a8b13e284 100644 --- a/www/docs/guides/create_account.md +++ b/www/docs/guides/create_account.md @@ -25,7 +25,7 @@ This contract is coded in Cairo 1. import { Account, constants, ec, json, stark, RpcProvider, hash, CallData } from 'starknet'; ``` -### compute address +### Compute address ```typescript // connect provider (Mainnet or Sepolia) @@ -66,7 +66,7 @@ curl -X POST http://127.0.0.1:5050/mint -d '{"address":"0x04a093c37ab61065d00155 // {"new_balance":50000000000000000000,"tx_hash":null,"unit":"wei"} ``` -### deployment of the new account +### Deployment of the new account If you have sent enough funds to this new address, you can go forward to the final step: @@ -91,7 +91,7 @@ Here, we will create a wallet with the Argent smart contract v0.3.0. The contrac import { Account, ec, json, stark, RpcProvider, hash, CallData } from 'starknet'; ``` -### compute address +### Compute address ```typescript // connect provider @@ -124,7 +124,7 @@ If you want a specific private key, replace `stark.randomAddress`()` with your c Then you have to fund this address. -### deployment of the new account +### Deployment of the new account If you have sent enough funds to this new address, you can go forward to the final step: @@ -223,8 +223,10 @@ The computed address has been funded automatically by minting a new dummy ETH in ## Create an Ethereum account -Thanks to account abstraction, you can create in Starknet an account that old the cryptographic logic of an Ethereum account. By this way, you can use Ethereum private and public keys. -OpenZeppelin has released an account contract for a such Ethereum account. Here an example of account creation in Sepolia Testnet. +Thanks to account abstraction, you can create an account in Starknet that holds the cryptographic logic of an Ethereum account. This way, you can use Ethereum private and public keys! +OpenZeppelin has released an account contract for such an Ethereum account. + +Below is an example of account creation in Sepolia Testnet. ### Compute address @@ -249,7 +251,7 @@ console.log('Pre-calculated ETH account address =', contractETHaddress); Then you have to fund this address. -### deployment of the new account +### Deployment of the new account If you have sent enough funds to this new address, you can go forward to the final step: @@ -274,7 +276,7 @@ console.log('✅ New Ethereum account final address =', contract_address); You are not limited to these 3 contracts. You can create your own contract for the wallet. It's the concept of Account Abstraction. -You can customize entirely the wallet - for example: +You can entirely customize the wallet - for example: - use a different concept of keys. diff --git a/www/docs/guides/define_call_message.md b/www/docs/guides/define_call_message.md index b2ca4715d..8aa2965cd 100644 --- a/www/docs/guides/define_call_message.md +++ b/www/docs/guides/define_call_message.md @@ -198,7 +198,7 @@ To construct your tuple: const myTpl = { '0': '0x0a', '1': 200 }; ``` -### named tuple +### Named tuple > [!IMPORTANT] Only for Cairo 0. @@ -242,28 +242,24 @@ If your abi is requesting this type : `core::starknet::secp256k1::Secp256k1Point - If you are using a calldata construction method using the Abi, you have just to use a 512 bits number (so, without parity) : ```typescript -const privateKeyETH = "0x45397ee6ca34cb49060f1c303c6cb7ee2d6123e617601ef3e31ccf7bf5bef1f9"; +const privateKeyETH = '0x45397ee6ca34cb49060f1c303c6cb7ee2d6123e617601ef3e31ccf7bf5bef1f9'; const ethSigner = new EthSigner(privateKeyETH); const ethFullPublicKey = await ethSigner.getPubKey(); // 512 bits number const myCallData = new CallData(ethAccountAbi); -const accountETHconstructorCalldata = myCallData.compile( - "constructor", - { - public_key: ethFullPublicKey - } -); +const accountETHconstructorCalldata = myCallData.compile('constructor', { + public_key: ethFullPublicKey, +}); ``` - If you are using a calldata construction method without the Abi, you have to send a tuple of 2 u256 : ```typescript -const ethFullPublicKey = "0x0178bb97615b49070eefad71cb2f159392274404e41db748d9397147cb25cf597ebfcf2f399e635b72b99b8f76e9080763c65a42c842869815039d912150ddfe"; // 512 bits number -const pubKeyETH = encode.addHexPrefix(encode.removeHexPrefix(ethFullPublicKey).padStart(128, "0")); +const ethFullPublicKey = + '0x0178bb97615b49070eefad71cb2f159392274404e41db748d9397147cb25cf597ebfcf2f399e635b72b99b8f76e9080763c65a42c842869815039d912150ddfe'; // 512 bits number +const pubKeyETH = encode.addHexPrefix(encode.removeHexPrefix(ethFullPublicKey).padStart(128, '0')); const pubKeyETHx = cairo.uint256(addAddressPadding(encode.addHexPrefix(pubKeyETH.slice(2, -64)))); const pubKeyETHy = cairo.uint256(addAddressPadding(encode.addHexPrefix(pubKeyETH.slice(-64)))); -const accountETHconstructorCalldata = CallData.compile([ - cairo.tuple(pubKeyETHx, pubKeyETHy) -]); +const accountETHconstructorCalldata = CallData.compile([cairo.tuple(pubKeyETHx, pubKeyETHy)]); ``` ### struct @@ -290,7 +286,7 @@ await myContract.my_function(myArray); > It's also applicable for Cairo `Span` type. -### complex types +### Complex types You can mix and nest literals, arrays, structs, and tuples. @@ -321,7 +317,7 @@ await myContract.my_function(param1, param2, param3, param4); There are 12 methods using contract parameters. Some types are authorized for each method: -### list of parameters +### List of parameters Only meta-class methods are using a list of parameters (as illustrated in the previous chapter). A Meta-Class is a Class that has any of its properties determined at run-time. The Contract object uses a Contract's ABI to determine what methods are available. @@ -494,7 +490,7 @@ const getResponse = await myAccount.get_bal(specialParameters, { parseRequest: f To use with `parseRequest: false` (see hereunder). -### summary table for arguments +### Summary table for arguments These types of arguments can't be used at your convenience everywhere. Here is a table showing which types can be used in which function: diff --git a/www/docs/guides/signature.md b/www/docs/guides/signature.md index 30ab34f8a..35bbacad7 100644 --- a/www/docs/guides/signature.md +++ b/www/docs/guides/signature.md @@ -196,10 +196,11 @@ try { All the previous examples are using the standard Starknet signature process, but you can also use the Ethereum one. ```typescript -const myEthPrivateKey = "0x525bc68475c0955fae83869beec0996114d4bb27b28b781ed2a20ef23121b8de"; -const myEthAccountAddressInStarknet = "0x65a822fbee1ae79e898688b5a4282dc79e0042cbed12f6169937fddb4c26641"; +const myEthPrivateKey = '0x525bc68475c0955fae83869beec0996114d4bb27b28b781ed2a20ef23121b8de'; +const myEthAccountAddressInStarknet = + '0x65a822fbee1ae79e898688b5a4282dc79e0042cbed12f6169937fddb4c26641'; const myEthSigner = new EthSigner(myEthPrivateKey); -console.log("Complete public key =", await myEthSigner.getPubKey()); +console.log('Complete public key =', await myEthSigner.getPubKey()); const sig0 = await myEthSigner.signMessage(message, myEthAccountAddressInStarknet); -console.log("signature message =", sig0); +console.log('signature message =', sig0); ``` diff --git a/www/versioned_docs/version-5.24.3/guides/events.md b/www/versioned_docs/version-5.24.3/guides/events.md index ba7de16bb..9de3e26f8 100644 --- a/www/versioned_docs/version-5.24.3/guides/events.md +++ b/www/versioned_docs/version-5.24.3/guides/events.md @@ -120,7 +120,7 @@ In this example, if you want to read the events recorded in the last 10 blocks, ```typescript import { RpcProvider } from 'starknet'; const providerRPC = new RpcProvider({ - nodeUrl: "{ nodeUrl: 'https://starknet-goerli.infura.io/v3/' + infuraKey }", + nodeUrl: 'https://starknet-goerli.infura.io/v3/' + infuraKey, }); // for an Infura node on Testnet const lastBlock = await providerRPC.getBlock('latest'); const keyFilter = [num.toHex(hash.starknetKeccak('EventPanic')), '0x8']; From 73e9bbfdf8c1e84b629c35885c3600af5b056b43 Mon Sep 17 00:00:00 2001 From: Abraham Makovetsky Date: Mon, 1 Apr 2024 11:41:30 +0300 Subject: [PATCH 21/37] fix(RpcProvider): allow client to provide `specVersion` in 0.7 provider this saves an extra call on RPC for optionally-known information (like the `chainId` case). also fixed speck -> spec typo --- src/channel/rpc_0_7.ts | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/channel/rpc_0_7.ts b/src/channel/rpc_0_7.ts index 3d1f40eca..741ecd5ef 100644 --- a/src/channel/rpc_0_7.ts +++ b/src/channel/rpc_0_7.ts @@ -48,12 +48,12 @@ export class RpcChannel { private chainId?: StarknetChainId; - private speckVersion?: string; + private specVersion?: string; readonly waitMode: Boolean; // behave like web2 rpc and return when tx is processed constructor(optionsOrProvider?: RpcProviderOptions) { - const { nodeUrl, retries, headers, blockIdentifier, chainId, waitMode } = + const { nodeUrl, retries, headers, blockIdentifier, chainId, specVersion, waitMode } = optionsOrProvider || {}; if (Object.values(NetworkName).includes(nodeUrl as NetworkName)) { this.nodeUrl = getDefaultNodeUrl(nodeUrl as NetworkName, optionsOrProvider?.default); @@ -66,6 +66,7 @@ export class RpcChannel { this.headers = { ...defaultOptions.headers, ...headers }; this.blockIdentifier = blockIdentifier || defaultOptions.blockIdentifier; this.chainId = chainId; + this.specVersion = specVersion; this.waitMode = waitMode || false; this.requestId = 0; } @@ -125,8 +126,8 @@ export class RpcChannel { } public async getSpecVersion() { - this.speckVersion ??= (await this.fetchEndpoint('starknet_specVersion')) as StarknetChainId; - return this.speckVersion; + this.specVersion ??= (await this.fetchEndpoint('starknet_specVersion')) as StarknetChainId; + return this.specVersion; } public getNonceForAddress( From 2cf8ca0fc9ac315a5dd753cfb38a6ea6dbf7a960 Mon Sep 17 00:00:00 2001 From: Philippe ROSTAN <81040730+PhilippeR26@users.noreply.github.com> Date: Mon, 1 Apr 2024 15:48:57 +0200 Subject: [PATCH 22/37] fix: remove abis parameter from signer and account execute --- __tests__/account.test.ts | 12 ++++++++++++ src/account/default.ts | 24 +++++++++++++++++------- src/account/interface.ts | 17 ++++++++++++++++- src/signer/interface.ts | 5 +---- www/docs/guides/interact.md | 2 +- 5 files changed, 47 insertions(+), 13 deletions(-) diff --git a/__tests__/account.test.ts b/__tests__/account.test.ts index 0a15b05ca..e2001b7f6 100644 --- a/__tests__/account.test.ts +++ b/__tests__/account.test.ts @@ -370,6 +370,18 @@ describe('deploy and test Wallet', () => { expect(balance.low).toStrictEqual(toBigInt(990)); }); + test('execute with and without deprecated abis parameter', async () => { + const transaction = { + contractAddress: erc20Address, + entrypoint: 'transfer', + calldata: [erc20.address, '10', '0'], + }; + const details = { maxFee: 0n }; + + await expect(account.execute(transaction, details)).rejects.toThrow(/zero/); + await expect(account.execute(transaction, undefined, details)).rejects.toThrow(/zero/); + }); + test('execute with custom nonce', async () => { const result = await account.getNonce(); const nonce = toBigInt(result); diff --git a/src/account/default.ts b/src/account/default.ts index b9b9e9ce8..ee0899b01 100644 --- a/src/account/default.ts +++ b/src/account/default.ts @@ -305,11 +305,21 @@ export class Account extends Provider implements AccountInterface { } public async execute( - calls: AllowArray, - abis: Abi[] | undefined = undefined, - details: UniversalDetails = {} + transactions: AllowArray, + transactionsDetail?: UniversalDetails + ): Promise; + public async execute( + transactions: AllowArray, + abis?: Abi[], + transactionsDetail?: UniversalDetails + ): Promise; + public async execute( + transactions: AllowArray, + arg2?: Abi[] | UniversalDetails, + transactionsDetail: UniversalDetails = {} ): Promise { - const transactions = Array.isArray(calls) ? calls : [calls]; + const details = arg2 === undefined || Array.isArray(arg2) ? transactionsDetail : arg2; + const calls = Array.isArray(transactions) ? transactions : [transactions]; const nonce = toBigInt(details.nonce ?? (await this.getNonce())); const version = toTransactionVersion( this.getPreferredVersion(ETransactionVersion.V1, ETransactionVersion.V3), // TODO: does this depend on cairo version ? @@ -318,7 +328,7 @@ export class Account extends Provider implements AccountInterface { const estimate = await this.getUniversalSuggestedFee( version, - { type: TransactionType.INVOKE, payload: calls }, + { type: TransactionType.INVOKE, payload: transactions }, { ...details, version, @@ -338,9 +348,9 @@ export class Account extends Provider implements AccountInterface { cairoVersion: await this.getCairoVersion(), }; - const signature = await this.signer.signTransaction(transactions, signerDetails, abis); + const signature = await this.signer.signTransaction(calls, signerDetails); - const calldata = getExecuteCalldata(transactions, await this.getCairoVersion()); + const calldata = getExecuteCalldata(calls, await this.getCairoVersion()); return this.invokeFunction( { contractAddress: this.address, calldata, signature }, diff --git a/src/account/interface.ts b/src/account/interface.ts index 6ff49ce07..6b5d1570c 100644 --- a/src/account/interface.ts +++ b/src/account/interface.ts @@ -203,10 +203,25 @@ export abstract class AccountInterface extends ProviderInterface { * - entrypoint - the entrypoint of the contract * - calldata - (defaults to []) the calldata * - signature - (defaults to []) the signature - * @param abi (optional) the abi of the contract for better displaying + * @param {InvocationsDetails} transactionsDetail Additional optional parameters for the transaction * * @returns response from addTransaction */ + public abstract execute( + transactions: AllowArray, + transactionsDetail?: InvocationsDetails + ): Promise; + /** + * @deprecated + * @param transactions the invocation object or an array of them, containing: + * - contractAddress - the address of the contract + * - entrypoint - the entrypoint of the contract + * - calldata - (defaults to []) the calldata + * - signature - (defaults to []) the signature + * @param abis (optional) the abi of the contract for better displaying + * @param {InvocationsDetails} transactionsDetail Additional optional parameters for the transaction + * * @returns response from addTransaction + */ public abstract execute( transactions: AllowArray, abis?: Abi[], diff --git a/src/signer/interface.ts b/src/signer/interface.ts index dcf565f31..47c08dd7a 100644 --- a/src/signer/interface.ts +++ b/src/signer/interface.ts @@ -1,5 +1,4 @@ import { - Abi, Call, DeclareSignerDetails, DeployAccountSignerDetails, @@ -39,12 +38,10 @@ export abstract class SignerInterface { * - maxFee
* - version
* - nonce
- * @param abis - (optional) An array of Abi objects for displaying decoded data */ public abstract signTransaction( transactions: Call[], - transactionsDetail: InvocationsSignerDetails, - abis?: Abi[] + transactionsDetail: InvocationsSignerDetails ): Promise; /** diff --git a/www/docs/guides/interact.md b/www/docs/guides/interact.md index 691513e71..62c398b34 100644 --- a/www/docs/guides/interact.md +++ b/www/docs/guides/interact.md @@ -131,7 +131,7 @@ const myCall = myTestContract.populate('test_fail', [100]); const maxQtyGasAuthorized = 1800n; // max quantity of gas authorized const maxPriceAuthorizeForOneGas = 12n * 10n ** 9n; // max FRI authorized to pay 1 gas (1 FRI=10**-18 STRK) console.log('max authorized cost =', maxQtyGasAuthorized * maxPriceAuthorizeForOneGas, 'FRI'); -const { transaction_hash: txH } = await account0.execute(myCall, undefined, { +const { transaction_hash: txH } = await account0.execute(myCall, { version: 3, maxFee: 10 ** 15, feeDataAvailabilityMode: RPC.EDataAvailabilityMode.L1, From 80d7fa8f392807a5ca06dbd529fe1cca3cbb34fc Mon Sep 17 00:00:00 2001 From: Haroune Mohammedi Date: Wed, 27 Mar 2024 17:47:16 +0100 Subject: [PATCH 23/37] feat: configure u512 and Secp256k1Point for abiwan --- package-lock.json | 2127 +++++++++++++++++++++---------------- package.json | 4 +- src/contract/interface.ts | 2 + 3 files changed, 1213 insertions(+), 920 deletions(-) diff --git a/package-lock.json b/package-lock.json index a4545f8fe..a92699c56 100644 --- a/package-lock.json +++ b/package-lock.json @@ -12,7 +12,7 @@ "@noble/curves": "~1.3.0", "@scure/base": "~1.1.3", "@scure/starknet": "~1.0.0", - "abi-wan-kanabi": "^2.2.1", + "abi-wan-kanabi": "^2.2.2", "fetch-cookie": "^3.0.0", "get-starknet-core": "^4.0.0-next.3", "isomorphic-fetch": "^3.0.0", @@ -59,12 +59,9 @@ "semantic-release": "^23.0.5", "tsup": "^8.0.2", "typedoc": "^0.25.7", - "typescript": "^5.3.0" + "typescript": "~5.3.0" } }, - "../get-starknet/packages/core/dist": { - "extraneous": true - }, "node_modules/@aashutoshrathi/word-wrap": { "version": "1.2.6", "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz", @@ -75,55 +72,55 @@ } }, "node_modules/@ampproject/remapping": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.1.tgz", - "integrity": "sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", + "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==", "dev": true, "dependencies": { - "@jridgewell/gen-mapping": "^0.3.0", - "@jridgewell/trace-mapping": "^0.3.9" + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" }, "engines": { "node": ">=6.0.0" } }, "node_modules/@babel/code-frame": { - "version": "7.23.5", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.23.5.tgz", - "integrity": "sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==", + "version": "7.24.2", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.2.tgz", + "integrity": "sha512-y5+tLQyV8pg3fsiln67BVLD1P13Eg4lh5RW9mF0zUuvLrv9uIQ4MCL+CRT+FTsBlBjcIan6PGsLcBN0m3ClUyQ==", "dev": true, "dependencies": { - "@babel/highlight": "^7.23.4", - "chalk": "^2.4.2" + "@babel/highlight": "^7.24.2", + "picocolors": "^1.0.0" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/compat-data": { - "version": "7.23.5", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.23.5.tgz", - "integrity": "sha512-uU27kfDRlhfKl+w1U6vp16IuvSLtjAxdArVXPa9BvLkrr7CYIsxH5adpHObeAGY/41+syctUWOZ140a2Rvkgjw==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.24.1.tgz", + "integrity": "sha512-Pc65opHDliVpRHuKfzI+gSA4zcgr65O4cl64fFJIWEEh8JoHIHh0Oez1Eo8Arz8zq/JhgKodQaxEwUPRtZylVA==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/core": { - "version": "7.24.0", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.24.0.tgz", - "integrity": "sha512-fQfkg0Gjkza3nf0c7/w6Xf34BW4YvzNfACRLmmb7XRLa6XHdR+K9AlJlxneFfWYf6uhOzuzZVTjF/8KfndZANw==", + "version": "7.24.3", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.24.3.tgz", + "integrity": "sha512-5FcvN1JHw2sHJChotgx8Ek0lyuh4kCKelgMTTqhYJJtloNvUfpAFMeNQUtdlIaktwrSV9LtCdqwk48wL2wBacQ==", "dev": true, "dependencies": { "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.23.5", - "@babel/generator": "^7.23.6", + "@babel/code-frame": "^7.24.2", + "@babel/generator": "^7.24.1", "@babel/helper-compilation-targets": "^7.23.6", "@babel/helper-module-transforms": "^7.23.3", - "@babel/helpers": "^7.24.0", - "@babel/parser": "^7.24.0", + "@babel/helpers": "^7.24.1", + "@babel/parser": "^7.24.1", "@babel/template": "^7.24.0", - "@babel/traverse": "^7.24.0", + "@babel/traverse": "^7.24.1", "@babel/types": "^7.24.0", "convert-source-map": "^2.0.0", "debug": "^4.1.0", @@ -140,14 +137,14 @@ } }, "node_modules/@babel/generator": { - "version": "7.23.6", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.6.tgz", - "integrity": "sha512-qrSfCYxYQB5owCmGLbl8XRpX1ytXlpueOb0N0UmQwA073KZxejgQTzAmJezxvpwQD9uGtK2shHdi55QT+MbjIw==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.24.1.tgz", + "integrity": "sha512-DfCRfZsBcrPEHUfuBMgbJ1Ut01Y/itOs+hY2nFLgqsqXd52/iSiVq5TITtUasIUgm+IIKdY2/1I7auiQOEeC9A==", "dev": true, "dependencies": { - "@babel/types": "^7.23.6", - "@jridgewell/gen-mapping": "^0.3.2", - "@jridgewell/trace-mapping": "^0.3.17", + "@babel/types": "^7.24.0", + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25", "jsesc": "^2.5.1" }, "engines": { @@ -195,9 +192,9 @@ } }, "node_modules/@babel/helper-create-class-features-plugin": { - "version": "7.23.10", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.23.10.tgz", - "integrity": "sha512-2XpP2XhkXzgxecPNEEK8Vz8Asj9aRxt08oKOqtiZoqV2UGZ5T+EkyP9sXQ9nwMxBIG34a7jmasVqoMop7VdPUw==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.24.1.tgz", + "integrity": "sha512-1yJa9dX9g//V6fDebXoEfEsxkZHk3Hcbm+zLhyu6qVgYFLvmTALTeV+jNU9e5RnYtioBrGEOdoI2joMSNQ/+aA==", "dev": true, "dependencies": { "@babel/helper-annotate-as-pure": "^7.22.5", @@ -205,7 +202,7 @@ "@babel/helper-function-name": "^7.23.0", "@babel/helper-member-expression-to-functions": "^7.23.0", "@babel/helper-optimise-call-expression": "^7.22.5", - "@babel/helper-replace-supers": "^7.22.20", + "@babel/helper-replace-supers": "^7.24.1", "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", "@babel/helper-split-export-declaration": "^7.22.6", "semver": "^6.3.1" @@ -235,9 +232,9 @@ } }, "node_modules/@babel/helper-define-polyfill-provider": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.5.0.tgz", - "integrity": "sha512-NovQquuQLAQ5HuyjCz7WQP9MjRj7dx++yspwiyUiGl9ZyadHRSql1HZh5ogRd8W8w6YM6EQ/NTB8rgjLt5W65Q==", + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.1.tgz", + "integrity": "sha512-o7SDgTJuvx5vLKD6SFvkydkSMBvahDKGiNJzG22IZYXhiqoe9efY7zocICBgzHV4IRg5wdgl2nEL/tulKIEIbA==", "dev": true, "dependencies": { "@babel/helper-compilation-targets": "^7.22.6", @@ -297,12 +294,12 @@ } }, "node_modules/@babel/helper-module-imports": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.22.15.tgz", - "integrity": "sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==", + "version": "7.24.3", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.24.3.tgz", + "integrity": "sha512-viKb0F9f2s0BCS22QSF308z/+1YWKV/76mwt61NBzS5izMzDPwdq1pTrzf+Li3npBWX9KdQbkeCt1jSAM7lZqg==", "dev": true, "dependencies": { - "@babel/types": "^7.22.15" + "@babel/types": "^7.24.0" }, "engines": { "node": ">=6.9.0" @@ -310,6 +307,8 @@ }, "node_modules/@babel/helper-module-transforms": { "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.23.3.tgz", + "integrity": "sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==", "dev": true, "dependencies": { "@babel/helper-environment-visitor": "^7.22.20", @@ -338,9 +337,9 @@ } }, "node_modules/@babel/helper-plugin-utils": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz", - "integrity": "sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==", + "version": "7.24.0", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.0.tgz", + "integrity": "sha512-9cUznXMG0+FxRuJfvL82QlTqIzhVW9sL0KjMPHhAOOvpQGL8QtdxnBKILjBqxlHyliz0yCa1G903ZXI/FuHy2w==", "dev": true, "engines": { "node": ">=6.9.0" @@ -364,13 +363,13 @@ } }, "node_modules/@babel/helper-replace-supers": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.22.20.tgz", - "integrity": "sha512-qsW0In3dbwQUbK8kejJ4R7IHVGwHJlV6lpG6UA7a9hSa2YEiAib+N1T2kr6PEeUT+Fl7najmSOS6SmAwCHK6Tw==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.24.1.tgz", + "integrity": "sha512-QCR1UqC9BzG5vZl8BMicmZ28RuUBnHhAMddD8yHFHDRH9lLTZ9uUPehX8ctVPT8l0TKblJidqcgUUKGVrePleQ==", "dev": true, "dependencies": { "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-member-expression-to-functions": "^7.22.15", + "@babel/helper-member-expression-to-functions": "^7.23.0", "@babel/helper-optimise-call-expression": "^7.22.5" }, "engines": { @@ -417,9 +416,9 @@ } }, "node_modules/@babel/helper-string-parser": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.23.4.tgz", - "integrity": "sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.24.1.tgz", + "integrity": "sha512-2ofRCjnnA9y+wk8b9IAREroeUP02KHp431N2mhKniy2yKIDKpbrHv9eXwm8cBeWQYcJmzv5qKCu65P47eCF7CQ==", "dev": true, "engines": { "node": ">=6.9.0" @@ -458,13 +457,13 @@ } }, "node_modules/@babel/helpers": { - "version": "7.24.0", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.24.0.tgz", - "integrity": "sha512-ulDZdc0Aj5uLc5nETsa7EPx2L7rM0YJM8r7ck7U73AXi7qOV44IHHRAYZHY6iU1rr3C5N4NtTmMRUJP6kwCWeA==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.24.1.tgz", + "integrity": "sha512-BpU09QqEe6ZCHuIHFphEFgvNSrubve1FtyMton26ekZ85gRGi6LrTF7zArARp2YvyFxloeiRmtSCq5sjh1WqIg==", "dev": true, "dependencies": { "@babel/template": "^7.24.0", - "@babel/traverse": "^7.24.0", + "@babel/traverse": "^7.24.1", "@babel/types": "^7.24.0" }, "engines": { @@ -472,23 +471,24 @@ } }, "node_modules/@babel/highlight": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.23.4.tgz", - "integrity": "sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==", + "version": "7.24.2", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.2.tgz", + "integrity": "sha512-Yac1ao4flkTxTteCDZLEvdxg2fZfz1v8M4QpaGypq/WPDqg3ijHYbDfs+LG5hvzSoqaSZ9/Z9lKSP3CjZjv+pA==", "dev": true, "dependencies": { "@babel/helper-validator-identifier": "^7.22.20", "chalk": "^2.4.2", - "js-tokens": "^4.0.0" + "js-tokens": "^4.0.0", + "picocolors": "^1.0.0" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/parser": { - "version": "7.24.0", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.24.0.tgz", - "integrity": "sha512-QuP/FxEAzMSjXygs8v4N9dvdXzEHN4W1oF3PxuWAtPo08UdM17u89RDMgjLn/mlc56iM0HlLmVkO/wgR+rDgHg==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.24.1.tgz", + "integrity": "sha512-Zo9c7N3xdOIQrNip7Lc9wvRPzlRtovHVE4lkz8WEDr7uYh/GMQhSiIgFxGIArRHYdJE5kxtZjAf8rT0xhdLCzg==", "dev": true, "bin": { "parser": "bin/babel-parser.js" @@ -498,10 +498,12 @@ } }, "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { - "version": "7.23.3", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.24.1.tgz", + "integrity": "sha512-y4HqEnkelJIOQGd+3g1bTeKsA5c6qM7eOn7VggGVbBc0y8MLSKHacwcIE2PplNlQSj0PqS9rrXL/nkPVK+kUNg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.0" }, "engines": { "node": ">=6.9.0" @@ -511,12 +513,14 @@ } }, "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { - "version": "7.23.3", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.24.1.tgz", + "integrity": "sha512-Hj791Ii4ci8HqnaKHAlLNs+zaLXb0EzSDhiAWp5VNlyvCNymYfacs64pxTxbH1znW/NcArSmwpmG9IKE/TUVVQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-plugin-utils": "^7.24.0", "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", - "@babel/plugin-transform-optional-chaining": "^7.23.3" + "@babel/plugin-transform-optional-chaining": "^7.24.1" }, "engines": { "node": ">=6.9.0" @@ -526,12 +530,13 @@ } }, "node_modules/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": { - "version": "7.23.3", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.24.1.tgz", + "integrity": "sha512-m9m/fXsXLiHfwdgydIFnpk+7jlVbnvlK5B2EKiPdLUb6WX654ZaaEWJUjk8TftRbZpK0XibovlLWX4KIZhV6jw==", "dev": true, - "license": "MIT", "dependencies": { "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.0" }, "engines": { "node": ">=6.9.0" @@ -628,10 +633,12 @@ } }, "node_modules/@babel/plugin-syntax-import-assertions": { - "version": "7.23.3", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.24.1.tgz", + "integrity": "sha512-IuwnI5XnuF189t91XbxmXeCDz3qs6iDRO7GJ++wcfgeXNs/8FmIlKcpDSXNVyuLQxlwvskmI3Ct73wUODkJBlQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.0" }, "engines": { "node": ">=6.9.0" @@ -641,10 +648,12 @@ } }, "node_modules/@babel/plugin-syntax-import-attributes": { - "version": "7.23.3", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.24.1.tgz", + "integrity": "sha512-zhQTMH0X2nVLnb04tz+s7AMuasX8U0FnpE+nHTOhSOINjWMnopoZTxtIKsd45n4GQ/HIZLyfIpoul8e2m0DnRA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.0" }, "engines": { "node": ">=6.9.0" @@ -678,10 +687,12 @@ } }, "node_modules/@babel/plugin-syntax-jsx": { - "version": "7.23.3", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.24.1.tgz", + "integrity": "sha512-2eCtxZXf+kbkMIsXS4poTvT4Yu5rXiRa+9xGVT56raghjmBTKMpFNc9R4IDiB4emao9eO22Ox7CxuJG7BgExqA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.0" }, "engines": { "node": ">=6.9.0" @@ -793,10 +804,12 @@ } }, "node_modules/@babel/plugin-syntax-typescript": { - "version": "7.23.3", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.24.1.tgz", + "integrity": "sha512-Yhnmvy5HZEnHUty6i++gcfH1/l68AHnItFHnaCv6hn9dNh0hQvvQJsxpi4BMBFN5DLeHBuucT/0DgzXif/OyRw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.0" }, "engines": { "node": ">=6.9.0" @@ -822,10 +835,12 @@ } }, "node_modules/@babel/plugin-transform-arrow-functions": { - "version": "7.23.3", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.24.1.tgz", + "integrity": "sha512-ngT/3NkRhsaep9ck9uj2Xhv9+xB1zShY3tM3g6om4xxCELwCDN4g4Aq5dRn48+0hasAql7s2hdBOysCfNpr4fw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.0" }, "engines": { "node": ">=6.9.0" @@ -835,11 +850,13 @@ } }, "node_modules/@babel/plugin-transform-async-generator-functions": { - "version": "7.23.3", + "version": "7.24.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.24.3.tgz", + "integrity": "sha512-Qe26CMYVjpQxJ8zxM1340JFNjZaF+ISWpr1Kt/jGo+ZTUzKkfw/pphEWbRCb+lmSM6k/TOgfYLvmbHkUQ0asIg==", "dev": true, "dependencies": { "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-plugin-utils": "^7.24.0", "@babel/helper-remap-async-to-generator": "^7.22.20", "@babel/plugin-syntax-async-generators": "^7.8.4" }, @@ -851,11 +868,13 @@ } }, "node_modules/@babel/plugin-transform-async-to-generator": { - "version": "7.23.3", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.24.1.tgz", + "integrity": "sha512-AawPptitRXp1y0n4ilKcGbRYWfbbzFWz2NqNu7dacYDtFtz0CMjG64b3LQsb3KIgnf4/obcUL78hfaOS7iCUfw==", "dev": true, "dependencies": { - "@babel/helper-module-imports": "^7.22.15", - "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-module-imports": "^7.24.1", + "@babel/helper-plugin-utils": "^7.24.0", "@babel/helper-remap-async-to-generator": "^7.22.20" }, "engines": { @@ -866,10 +885,12 @@ } }, "node_modules/@babel/plugin-transform-block-scoped-functions": { - "version": "7.23.3", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.24.1.tgz", + "integrity": "sha512-TWWC18OShZutrv9C6mye1xwtam+uNi2bnTOCBUd5sZxyHOiWbU6ztSROofIMrK84uweEZC219POICK/sTYwfgg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.0" }, "engines": { "node": ">=6.9.0" @@ -879,10 +900,12 @@ } }, "node_modules/@babel/plugin-transform-block-scoping": { - "version": "7.23.3", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.24.1.tgz", + "integrity": "sha512-h71T2QQvDgM2SmT29UYU6ozjMlAt7s7CSs5Hvy8f8cf/GM/Z4a2zMfN+fjVGaieeCrXR3EdQl6C4gQG+OgmbKw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.0" }, "engines": { "node": ">=6.9.0" @@ -892,11 +915,13 @@ } }, "node_modules/@babel/plugin-transform-class-properties": { - "version": "7.23.3", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.24.1.tgz", + "integrity": "sha512-OMLCXi0NqvJfORTaPQBwqLXHhb93wkBKZ4aNwMl6WtehO7ar+cmp+89iPEQPqxAnxsOKTaMcs3POz3rKayJ72g==", "dev": true, "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.22.15", - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-create-class-features-plugin": "^7.24.1", + "@babel/helper-plugin-utils": "^7.24.0" }, "engines": { "node": ">=6.9.0" @@ -906,11 +931,13 @@ } }, "node_modules/@babel/plugin-transform-class-static-block": { - "version": "7.23.3", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.24.1.tgz", + "integrity": "sha512-FUHlKCn6J3ERiu8Dv+4eoz7w8+kFLSyeVG4vDAikwADGjUCoHw/JHokyGtr8OR4UjpwPVivyF+h8Q5iv/JmrtA==", "dev": true, "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.22.15", - "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-create-class-features-plugin": "^7.24.1", + "@babel/helper-plugin-utils": "^7.24.0", "@babel/plugin-syntax-class-static-block": "^7.14.5" }, "engines": { @@ -921,16 +948,17 @@ } }, "node_modules/@babel/plugin-transform-classes": { - "version": "7.23.3", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.24.1.tgz", + "integrity": "sha512-ZTIe3W7UejJd3/3R4p7ScyyOoafetUShSf4kCqV0O7F/RiHxVj/wRaRnQlrGwflvcehNA8M42HkAiEDYZu2F1Q==", "dev": true, "dependencies": { "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-compilation-targets": "^7.22.15", + "@babel/helper-compilation-targets": "^7.23.6", "@babel/helper-environment-visitor": "^7.22.20", "@babel/helper-function-name": "^7.23.0", - "@babel/helper-optimise-call-expression": "^7.22.5", - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-replace-supers": "^7.22.20", + "@babel/helper-plugin-utils": "^7.24.0", + "@babel/helper-replace-supers": "^7.24.1", "@babel/helper-split-export-declaration": "^7.22.6", "globals": "^11.1.0" }, @@ -942,11 +970,13 @@ } }, "node_modules/@babel/plugin-transform-computed-properties": { - "version": "7.23.3", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.24.1.tgz", + "integrity": "sha512-5pJGVIUfJpOS+pAqBQd+QMaTD2vCL/HcePooON6pDpHgRp4gNRmzyHTPIkXntwKsq3ayUFVfJaIKPw2pOkOcTw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/template": "^7.22.15" + "@babel/helper-plugin-utils": "^7.24.0", + "@babel/template": "^7.24.0" }, "engines": { "node": ">=6.9.0" @@ -956,10 +986,12 @@ } }, "node_modules/@babel/plugin-transform-destructuring": { - "version": "7.23.3", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.24.1.tgz", + "integrity": "sha512-ow8jciWqNxR3RYbSNVuF4U2Jx130nwnBnhRw6N6h1bOejNkABmcI5X5oz29K4alWX7vf1C+o6gtKXikzRKkVdw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.0" }, "engines": { "node": ">=6.9.0" @@ -969,11 +1001,13 @@ } }, "node_modules/@babel/plugin-transform-dotall-regex": { - "version": "7.23.3", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.24.1.tgz", + "integrity": "sha512-p7uUxgSoZwZ2lPNMzUkqCts3xlp8n+o05ikjy7gbtFJSt9gdU88jAmtfmOxHM14noQXBxfgzf2yRWECiNVhTCw==", "dev": true, "dependencies": { "@babel/helper-create-regexp-features-plugin": "^7.22.15", - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.0" }, "engines": { "node": ">=6.9.0" @@ -983,10 +1017,12 @@ } }, "node_modules/@babel/plugin-transform-duplicate-keys": { - "version": "7.23.3", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.24.1.tgz", + "integrity": "sha512-msyzuUnvsjsaSaocV6L7ErfNsa5nDWL1XKNnDePLgmz+WdU4w/J8+AxBMrWfi9m4IxfL5sZQKUPQKDQeeAT6lA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.0" }, "engines": { "node": ">=6.9.0" @@ -996,10 +1032,12 @@ } }, "node_modules/@babel/plugin-transform-dynamic-import": { - "version": "7.23.3", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.24.1.tgz", + "integrity": "sha512-av2gdSTyXcJVdI+8aFZsCAtR29xJt0S5tas+Ef8NvBNmD1a+N/3ecMLeMBgfcK+xzsjdLDT6oHt+DFPyeqUbDA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-plugin-utils": "^7.24.0", "@babel/plugin-syntax-dynamic-import": "^7.8.3" }, "engines": { @@ -1010,11 +1048,13 @@ } }, "node_modules/@babel/plugin-transform-exponentiation-operator": { - "version": "7.23.3", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.24.1.tgz", + "integrity": "sha512-U1yX13dVBSwS23DEAqU+Z/PkwE9/m7QQy8Y9/+Tdb8UWYaGNDYwTLi19wqIAiROr8sXVum9A/rtiH5H0boUcTw==", "dev": true, "dependencies": { "@babel/helper-builder-binary-assignment-operator-visitor": "^7.22.15", - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.0" }, "engines": { "node": ">=6.9.0" @@ -1024,10 +1064,12 @@ } }, "node_modules/@babel/plugin-transform-export-namespace-from": { - "version": "7.23.3", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.24.1.tgz", + "integrity": "sha512-Ft38m/KFOyzKw2UaJFkWG9QnHPG/Q/2SkOrRk4pNBPg5IPZ+dOxcmkK5IyuBcxiNPyyYowPGUReyBvrvZs7IlQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-plugin-utils": "^7.24.0", "@babel/plugin-syntax-export-namespace-from": "^7.8.3" }, "engines": { @@ -1038,10 +1080,12 @@ } }, "node_modules/@babel/plugin-transform-for-of": { - "version": "7.23.3", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.24.1.tgz", + "integrity": "sha512-OxBdcnF04bpdQdR3i4giHZNZQn7cm8RQKcSwA17wAAqEELo1ZOwp5FFgeptWUQXFyT9kwHo10aqqauYkRZPCAg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-plugin-utils": "^7.24.0", "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5" }, "engines": { @@ -1052,12 +1096,14 @@ } }, "node_modules/@babel/plugin-transform-function-name": { - "version": "7.23.3", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.24.1.tgz", + "integrity": "sha512-BXmDZpPlh7jwicKArQASrj8n22/w6iymRnvHYYd2zO30DbE277JO20/7yXJT3QxDPtiQiOxQBbZH4TpivNXIxA==", "dev": true, "dependencies": { - "@babel/helper-compilation-targets": "^7.22.15", + "@babel/helper-compilation-targets": "^7.23.6", "@babel/helper-function-name": "^7.23.0", - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.0" }, "engines": { "node": ">=6.9.0" @@ -1067,10 +1113,12 @@ } }, "node_modules/@babel/plugin-transform-json-strings": { - "version": "7.23.3", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.24.1.tgz", + "integrity": "sha512-U7RMFmRvoasscrIFy5xA4gIp8iWnWubnKkKuUGJjsuOH7GfbMkB+XZzeslx2kLdEGdOJDamEmCqOks6e8nv8DQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-plugin-utils": "^7.24.0", "@babel/plugin-syntax-json-strings": "^7.8.3" }, "engines": { @@ -1081,10 +1129,12 @@ } }, "node_modules/@babel/plugin-transform-literals": { - "version": "7.23.3", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.24.1.tgz", + "integrity": "sha512-zn9pwz8U7nCqOYIiBaOxoQOtYmMODXTJnkxG4AtX8fPmnCRYWBOHD0qcpwS9e2VDSp1zNJYpdnFMIKb8jmwu6g==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.0" }, "engines": { "node": ">=6.9.0" @@ -1094,10 +1144,12 @@ } }, "node_modules/@babel/plugin-transform-logical-assignment-operators": { - "version": "7.23.3", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.24.1.tgz", + "integrity": "sha512-OhN6J4Bpz+hIBqItTeWJujDOfNP+unqv/NJgyhlpSqgBTPm37KkMmZV6SYcOj+pnDbdcl1qRGV/ZiIjX9Iy34w==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-plugin-utils": "^7.24.0", "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" }, "engines": { @@ -1108,10 +1160,12 @@ } }, "node_modules/@babel/plugin-transform-member-expression-literals": { - "version": "7.23.3", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.24.1.tgz", + "integrity": "sha512-4ojai0KysTWXzHseJKa1XPNXKRbuUrhkOPY4rEGeR+7ChlJVKxFa3H3Bz+7tWaGKgJAXUWKOGmltN+u9B3+CVg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.0" }, "engines": { "node": ">=6.9.0" @@ -1121,11 +1175,13 @@ } }, "node_modules/@babel/plugin-transform-modules-amd": { - "version": "7.23.3", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.24.1.tgz", + "integrity": "sha512-lAxNHi4HVtjnHd5Rxg3D5t99Xm6H7b04hUS7EHIXcUl2EV4yl1gWdqZrNzXnSrHveL9qMdbODlLF55mvgjAfaQ==", "dev": true, "dependencies": { "@babel/helper-module-transforms": "^7.23.3", - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.0" }, "engines": { "node": ">=6.9.0" @@ -1135,11 +1191,13 @@ } }, "node_modules/@babel/plugin-transform-modules-commonjs": { - "version": "7.23.3", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.24.1.tgz", + "integrity": "sha512-szog8fFTUxBfw0b98gEWPaEqF42ZUD/T3bkynW/wtgx2p/XCP55WEsb+VosKceRSd6njipdZvNogqdtI4Q0chw==", "dev": true, "dependencies": { "@babel/helper-module-transforms": "^7.23.3", - "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-plugin-utils": "^7.24.0", "@babel/helper-simple-access": "^7.22.5" }, "engines": { @@ -1150,12 +1208,14 @@ } }, "node_modules/@babel/plugin-transform-modules-systemjs": { - "version": "7.23.3", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.24.1.tgz", + "integrity": "sha512-mqQ3Zh9vFO1Tpmlt8QPnbwGHzNz3lpNEMxQb1kAemn/erstyqw1r9KeOlOfo3y6xAnFEcOv2tSyrXfmMk+/YZA==", "dev": true, "dependencies": { "@babel/helper-hoist-variables": "^7.22.5", "@babel/helper-module-transforms": "^7.23.3", - "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-plugin-utils": "^7.24.0", "@babel/helper-validator-identifier": "^7.22.20" }, "engines": { @@ -1166,11 +1226,13 @@ } }, "node_modules/@babel/plugin-transform-modules-umd": { - "version": "7.23.3", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.24.1.tgz", + "integrity": "sha512-tuA3lpPj+5ITfcCluy6nWonSL7RvaG0AOTeAuvXqEKS34lnLzXpDb0dcP6K8jD0zWZFNDVly90AGFJPnm4fOYg==", "dev": true, "dependencies": { "@babel/helper-module-transforms": "^7.23.3", - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.0" }, "engines": { "node": ">=6.9.0" @@ -1196,10 +1258,12 @@ } }, "node_modules/@babel/plugin-transform-new-target": { - "version": "7.23.3", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.24.1.tgz", + "integrity": "sha512-/rurytBM34hYy0HKZQyA0nHbQgQNFm4Q/BOc9Hflxi2X3twRof7NaE5W46j4kQitm7SvACVRXsa6N/tSZxvPug==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.0" }, "engines": { "node": ">=6.9.0" @@ -1209,10 +1273,12 @@ } }, "node_modules/@babel/plugin-transform-nullish-coalescing-operator": { - "version": "7.23.3", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.24.1.tgz", + "integrity": "sha512-iQ+caew8wRrhCikO5DrUYx0mrmdhkaELgFa+7baMcVuhxIkN7oxt06CZ51D65ugIb1UWRQ8oQe+HXAVM6qHFjw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-plugin-utils": "^7.24.0", "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" }, "engines": { @@ -1223,10 +1289,12 @@ } }, "node_modules/@babel/plugin-transform-numeric-separator": { - "version": "7.23.3", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.24.1.tgz", + "integrity": "sha512-7GAsGlK4cNL2OExJH1DzmDeKnRv/LXq0eLUSvudrehVA5Rgg4bIrqEUW29FbKMBRT0ztSqisv7kjP+XIC4ZMNw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-plugin-utils": "^7.24.0", "@babel/plugin-syntax-numeric-separator": "^7.10.4" }, "engines": { @@ -1237,14 +1305,15 @@ } }, "node_modules/@babel/plugin-transform-object-rest-spread": { - "version": "7.23.3", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.24.1.tgz", + "integrity": "sha512-XjD5f0YqOtebto4HGISLNfiNMTTs6tbkFf2TOqJlYKYmbo+mN9Dnpl4SRoofiziuOWMIyq3sZEUqLo3hLITFEA==", "dev": true, "dependencies": { - "@babel/compat-data": "^7.23.3", - "@babel/helper-compilation-targets": "^7.22.15", - "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-compilation-targets": "^7.23.6", + "@babel/helper-plugin-utils": "^7.24.0", "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-transform-parameters": "^7.23.3" + "@babel/plugin-transform-parameters": "^7.24.1" }, "engines": { "node": ">=6.9.0" @@ -1254,11 +1323,13 @@ } }, "node_modules/@babel/plugin-transform-object-super": { - "version": "7.23.3", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.24.1.tgz", + "integrity": "sha512-oKJqR3TeI5hSLRxudMjFQ9re9fBVUU0GICqM3J1mi8MqlhVr6hC/ZN4ttAyMuQR6EZZIY6h/exe5swqGNNIkWQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-replace-supers": "^7.22.20" + "@babel/helper-plugin-utils": "^7.24.0", + "@babel/helper-replace-supers": "^7.24.1" }, "engines": { "node": ">=6.9.0" @@ -1268,10 +1339,12 @@ } }, "node_modules/@babel/plugin-transform-optional-catch-binding": { - "version": "7.23.3", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.24.1.tgz", + "integrity": "sha512-oBTH7oURV4Y+3EUrf6cWn1OHio3qG/PVwO5J03iSJmBg6m2EhKjkAu/xuaXaYwWW9miYtvbWv4LNf0AmR43LUA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-plugin-utils": "^7.24.0", "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" }, "engines": { @@ -1282,10 +1355,12 @@ } }, "node_modules/@babel/plugin-transform-optional-chaining": { - "version": "7.23.3", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.24.1.tgz", + "integrity": "sha512-n03wmDt+987qXwAgcBlnUUivrZBPZ8z1plL0YvgQalLm+ZE5BMhGm94jhxXtA1wzv1Cu2aaOv1BM9vbVttrzSg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-plugin-utils": "^7.24.0", "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", "@babel/plugin-syntax-optional-chaining": "^7.8.3" }, @@ -1297,10 +1372,12 @@ } }, "node_modules/@babel/plugin-transform-parameters": { - "version": "7.23.3", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.24.1.tgz", + "integrity": "sha512-8Jl6V24g+Uw5OGPeWNKrKqXPDw2YDjLc53ojwfMcKwlEoETKU9rU0mHUtcg9JntWI/QYzGAXNWEcVHZ+fR+XXg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.0" }, "engines": { "node": ">=6.9.0" @@ -1310,11 +1387,13 @@ } }, "node_modules/@babel/plugin-transform-private-methods": { - "version": "7.23.3", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.24.1.tgz", + "integrity": "sha512-tGvisebwBO5em4PaYNqt4fkw56K2VALsAbAakY0FjTYqJp7gfdrgr7YX76Or8/cpik0W6+tj3rZ0uHU9Oil4tw==", "dev": true, "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.22.15", - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-create-class-features-plugin": "^7.24.1", + "@babel/helper-plugin-utils": "^7.24.0" }, "engines": { "node": ">=6.9.0" @@ -1324,12 +1403,14 @@ } }, "node_modules/@babel/plugin-transform-private-property-in-object": { - "version": "7.23.3", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.24.1.tgz", + "integrity": "sha512-pTHxDVa0BpUbvAgX3Gat+7cSciXqUcY9j2VZKTbSB6+VQGpNgNO9ailxTGHSXlqOnX1Hcx1Enme2+yv7VqP9bg==", "dev": true, "dependencies": { "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-create-class-features-plugin": "^7.22.15", - "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-create-class-features-plugin": "^7.24.1", + "@babel/helper-plugin-utils": "^7.24.0", "@babel/plugin-syntax-private-property-in-object": "^7.14.5" }, "engines": { @@ -1340,10 +1421,12 @@ } }, "node_modules/@babel/plugin-transform-property-literals": { - "version": "7.23.3", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.24.1.tgz", + "integrity": "sha512-LetvD7CrHmEx0G442gOomRr66d7q8HzzGGr4PMHGr+5YIm6++Yke+jxj246rpvsbyhJwCLxcTn6zW1P1BSenqA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.0" }, "engines": { "node": ">=6.9.0" @@ -1353,10 +1436,12 @@ } }, "node_modules/@babel/plugin-transform-regenerator": { - "version": "7.23.3", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.24.1.tgz", + "integrity": "sha512-sJwZBCzIBE4t+5Q4IGLaaun5ExVMRY0lYwos/jNecjMrVCygCdph3IKv0tkP5Fc87e/1+bebAmEAGBfnRD+cnw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-plugin-utils": "^7.24.0", "regenerator-transform": "^0.15.2" }, "engines": { @@ -1367,10 +1452,12 @@ } }, "node_modules/@babel/plugin-transform-reserved-words": { - "version": "7.23.3", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.24.1.tgz", + "integrity": "sha512-JAclqStUfIwKN15HrsQADFgeZt+wexNQ0uLhuqvqAUFoqPMjEcFCYZBhq0LUdz6dZK/mD+rErhW71fbx8RYElg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.0" }, "engines": { "node": ">=6.9.0" @@ -1380,10 +1467,12 @@ } }, "node_modules/@babel/plugin-transform-shorthand-properties": { - "version": "7.23.3", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.24.1.tgz", + "integrity": "sha512-LyjVB1nsJ6gTTUKRjRWx9C1s9hE7dLfP/knKdrfeH9UPtAGjYGgxIbFfx7xyLIEWs7Xe1Gnf8EWiUqfjLhInZA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.0" }, "engines": { "node": ">=6.9.0" @@ -1393,10 +1482,12 @@ } }, "node_modules/@babel/plugin-transform-spread": { - "version": "7.23.3", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.24.1.tgz", + "integrity": "sha512-KjmcIM+fxgY+KxPVbjelJC6hrH1CgtPmTvdXAfn3/a9CnWGSTY7nH4zm5+cjmWJybdcPSsD0++QssDsjcpe47g==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-plugin-utils": "^7.24.0", "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5" }, "engines": { @@ -1407,10 +1498,12 @@ } }, "node_modules/@babel/plugin-transform-sticky-regex": { - "version": "7.23.3", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.24.1.tgz", + "integrity": "sha512-9v0f1bRXgPVcPrngOQvLXeGNNVLc8UjMVfebo9ka0WF3/7+aVUHmaJVT3sa0XCzEFioPfPHZiOcYG9qOsH63cw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.0" }, "engines": { "node": ">=6.9.0" @@ -1420,10 +1513,12 @@ } }, "node_modules/@babel/plugin-transform-template-literals": { - "version": "7.23.3", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.24.1.tgz", + "integrity": "sha512-WRkhROsNzriarqECASCNu/nojeXCDTE/F2HmRgOzi7NGvyfYGq1NEjKBK3ckLfRgGc6/lPAqP0vDOSw3YtG34g==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.0" }, "engines": { "node": ">=6.9.0" @@ -1433,10 +1528,12 @@ } }, "node_modules/@babel/plugin-transform-typeof-symbol": { - "version": "7.23.3", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.24.1.tgz", + "integrity": "sha512-CBfU4l/A+KruSUoW+vTQthwcAdwuqbpRNB8HQKlZABwHRhsdHZ9fezp4Sn18PeAlYxTNiLMlx4xUBV3AWfg1BA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.0" }, "engines": { "node": ">=6.9.0" @@ -1446,13 +1543,15 @@ } }, "node_modules/@babel/plugin-transform-typescript": { - "version": "7.23.3", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.24.1.tgz", + "integrity": "sha512-liYSESjX2fZ7JyBFkYG78nfvHlMKE6IpNdTVnxmlYUR+j5ZLsitFbaAE+eJSK2zPPkNWNw4mXL51rQ8WrvdK0w==", "dev": true, "dependencies": { "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-create-class-features-plugin": "^7.23.6", - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/plugin-syntax-typescript": "^7.23.3" + "@babel/helper-create-class-features-plugin": "^7.24.1", + "@babel/helper-plugin-utils": "^7.24.0", + "@babel/plugin-syntax-typescript": "^7.24.1" }, "engines": { "node": ">=6.9.0" @@ -1462,10 +1561,12 @@ } }, "node_modules/@babel/plugin-transform-unicode-escapes": { - "version": "7.23.3", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.24.1.tgz", + "integrity": "sha512-RlkVIcWT4TLI96zM660S877E7beKlQw7Ig+wqkKBiWfj0zH5Q4h50q6er4wzZKRNSYpfo6ILJ+hrJAGSX2qcNw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.0" }, "engines": { "node": ">=6.9.0" @@ -1475,11 +1576,13 @@ } }, "node_modules/@babel/plugin-transform-unicode-property-regex": { - "version": "7.23.3", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.24.1.tgz", + "integrity": "sha512-Ss4VvlfYV5huWApFsF8/Sq0oXnGO+jB+rijFEFugTd3cwSObUSnUi88djgR5528Csl0uKlrI331kRqe56Ov2Ng==", "dev": true, "dependencies": { "@babel/helper-create-regexp-features-plugin": "^7.22.15", - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.0" }, "engines": { "node": ">=6.9.0" @@ -1489,11 +1592,13 @@ } }, "node_modules/@babel/plugin-transform-unicode-regex": { - "version": "7.23.3", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.24.1.tgz", + "integrity": "sha512-2A/94wgZgxfTsiLaQ2E36XAOdcZmGAaEEgVmxQWwZXWkGhvoHbaqXcKnU8zny4ycpu3vNqg0L/PcCiYtHtA13g==", "dev": true, "dependencies": { "@babel/helper-create-regexp-features-plugin": "^7.22.15", - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.0" }, "engines": { "node": ">=6.9.0" @@ -1503,11 +1608,13 @@ } }, "node_modules/@babel/plugin-transform-unicode-sets-regex": { - "version": "7.23.3", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.24.1.tgz", + "integrity": "sha512-fqj4WuzzS+ukpgerpAoOnMfQXwUHFxXUZUE84oL2Kao2N8uSlvcpnAidKASgsNgzZHBsHWvcm8s9FPWUhAb8fA==", "dev": true, "dependencies": { "@babel/helper-create-regexp-features-plugin": "^7.22.15", - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.0" }, "engines": { "node": ">=6.9.0" @@ -1517,24 +1624,26 @@ } }, "node_modules/@babel/preset-env": { - "version": "7.23.3", + "version": "7.24.3", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.24.3.tgz", + "integrity": "sha512-fSk430k5c2ff8536JcPvPWK4tZDwehWLGlBp0wrsBUjZVdeQV6lePbwKWZaZfK2vnh/1kQX1PzAJWsnBmVgGJA==", "dev": true, "dependencies": { - "@babel/compat-data": "^7.23.3", - "@babel/helper-compilation-targets": "^7.22.15", - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-validator-option": "^7.22.15", - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.23.3", - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.23.3", - "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.23.3", + "@babel/compat-data": "^7.24.1", + "@babel/helper-compilation-targets": "^7.23.6", + "@babel/helper-plugin-utils": "^7.24.0", + "@babel/helper-validator-option": "^7.23.5", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.24.1", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.24.1", + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.24.1", "@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2", "@babel/plugin-syntax-async-generators": "^7.8.4", "@babel/plugin-syntax-class-properties": "^7.12.13", "@babel/plugin-syntax-class-static-block": "^7.14.5", "@babel/plugin-syntax-dynamic-import": "^7.8.3", "@babel/plugin-syntax-export-namespace-from": "^7.8.3", - "@babel/plugin-syntax-import-assertions": "^7.23.3", - "@babel/plugin-syntax-import-attributes": "^7.23.3", + "@babel/plugin-syntax-import-assertions": "^7.24.1", + "@babel/plugin-syntax-import-attributes": "^7.24.1", "@babel/plugin-syntax-import-meta": "^7.10.4", "@babel/plugin-syntax-json-strings": "^7.8.3", "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", @@ -1546,58 +1655,58 @@ "@babel/plugin-syntax-private-property-in-object": "^7.14.5", "@babel/plugin-syntax-top-level-await": "^7.14.5", "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6", - "@babel/plugin-transform-arrow-functions": "^7.23.3", - "@babel/plugin-transform-async-generator-functions": "^7.23.3", - "@babel/plugin-transform-async-to-generator": "^7.23.3", - "@babel/plugin-transform-block-scoped-functions": "^7.23.3", - "@babel/plugin-transform-block-scoping": "^7.23.3", - "@babel/plugin-transform-class-properties": "^7.23.3", - "@babel/plugin-transform-class-static-block": "^7.23.3", - "@babel/plugin-transform-classes": "^7.23.3", - "@babel/plugin-transform-computed-properties": "^7.23.3", - "@babel/plugin-transform-destructuring": "^7.23.3", - "@babel/plugin-transform-dotall-regex": "^7.23.3", - "@babel/plugin-transform-duplicate-keys": "^7.23.3", - "@babel/plugin-transform-dynamic-import": "^7.23.3", - "@babel/plugin-transform-exponentiation-operator": "^7.23.3", - "@babel/plugin-transform-export-namespace-from": "^7.23.3", - "@babel/plugin-transform-for-of": "^7.23.3", - "@babel/plugin-transform-function-name": "^7.23.3", - "@babel/plugin-transform-json-strings": "^7.23.3", - "@babel/plugin-transform-literals": "^7.23.3", - "@babel/plugin-transform-logical-assignment-operators": "^7.23.3", - "@babel/plugin-transform-member-expression-literals": "^7.23.3", - "@babel/plugin-transform-modules-amd": "^7.23.3", - "@babel/plugin-transform-modules-commonjs": "^7.23.3", - "@babel/plugin-transform-modules-systemjs": "^7.23.3", - "@babel/plugin-transform-modules-umd": "^7.23.3", + "@babel/plugin-transform-arrow-functions": "^7.24.1", + "@babel/plugin-transform-async-generator-functions": "^7.24.3", + "@babel/plugin-transform-async-to-generator": "^7.24.1", + "@babel/plugin-transform-block-scoped-functions": "^7.24.1", + "@babel/plugin-transform-block-scoping": "^7.24.1", + "@babel/plugin-transform-class-properties": "^7.24.1", + "@babel/plugin-transform-class-static-block": "^7.24.1", + "@babel/plugin-transform-classes": "^7.24.1", + "@babel/plugin-transform-computed-properties": "^7.24.1", + "@babel/plugin-transform-destructuring": "^7.24.1", + "@babel/plugin-transform-dotall-regex": "^7.24.1", + "@babel/plugin-transform-duplicate-keys": "^7.24.1", + "@babel/plugin-transform-dynamic-import": "^7.24.1", + "@babel/plugin-transform-exponentiation-operator": "^7.24.1", + "@babel/plugin-transform-export-namespace-from": "^7.24.1", + "@babel/plugin-transform-for-of": "^7.24.1", + "@babel/plugin-transform-function-name": "^7.24.1", + "@babel/plugin-transform-json-strings": "^7.24.1", + "@babel/plugin-transform-literals": "^7.24.1", + "@babel/plugin-transform-logical-assignment-operators": "^7.24.1", + "@babel/plugin-transform-member-expression-literals": "^7.24.1", + "@babel/plugin-transform-modules-amd": "^7.24.1", + "@babel/plugin-transform-modules-commonjs": "^7.24.1", + "@babel/plugin-transform-modules-systemjs": "^7.24.1", + "@babel/plugin-transform-modules-umd": "^7.24.1", "@babel/plugin-transform-named-capturing-groups-regex": "^7.22.5", - "@babel/plugin-transform-new-target": "^7.23.3", - "@babel/plugin-transform-nullish-coalescing-operator": "^7.23.3", - "@babel/plugin-transform-numeric-separator": "^7.23.3", - "@babel/plugin-transform-object-rest-spread": "^7.23.3", - "@babel/plugin-transform-object-super": "^7.23.3", - "@babel/plugin-transform-optional-catch-binding": "^7.23.3", - "@babel/plugin-transform-optional-chaining": "^7.23.3", - "@babel/plugin-transform-parameters": "^7.23.3", - "@babel/plugin-transform-private-methods": "^7.23.3", - "@babel/plugin-transform-private-property-in-object": "^7.23.3", - "@babel/plugin-transform-property-literals": "^7.23.3", - "@babel/plugin-transform-regenerator": "^7.23.3", - "@babel/plugin-transform-reserved-words": "^7.23.3", - "@babel/plugin-transform-shorthand-properties": "^7.23.3", - "@babel/plugin-transform-spread": "^7.23.3", - "@babel/plugin-transform-sticky-regex": "^7.23.3", - "@babel/plugin-transform-template-literals": "^7.23.3", - "@babel/plugin-transform-typeof-symbol": "^7.23.3", - "@babel/plugin-transform-unicode-escapes": "^7.23.3", - "@babel/plugin-transform-unicode-property-regex": "^7.23.3", - "@babel/plugin-transform-unicode-regex": "^7.23.3", - "@babel/plugin-transform-unicode-sets-regex": "^7.23.3", + "@babel/plugin-transform-new-target": "^7.24.1", + "@babel/plugin-transform-nullish-coalescing-operator": "^7.24.1", + "@babel/plugin-transform-numeric-separator": "^7.24.1", + "@babel/plugin-transform-object-rest-spread": "^7.24.1", + "@babel/plugin-transform-object-super": "^7.24.1", + "@babel/plugin-transform-optional-catch-binding": "^7.24.1", + "@babel/plugin-transform-optional-chaining": "^7.24.1", + "@babel/plugin-transform-parameters": "^7.24.1", + "@babel/plugin-transform-private-methods": "^7.24.1", + "@babel/plugin-transform-private-property-in-object": "^7.24.1", + "@babel/plugin-transform-property-literals": "^7.24.1", + "@babel/plugin-transform-regenerator": "^7.24.1", + "@babel/plugin-transform-reserved-words": "^7.24.1", + "@babel/plugin-transform-shorthand-properties": "^7.24.1", + "@babel/plugin-transform-spread": "^7.24.1", + "@babel/plugin-transform-sticky-regex": "^7.24.1", + "@babel/plugin-transform-template-literals": "^7.24.1", + "@babel/plugin-transform-typeof-symbol": "^7.24.1", + "@babel/plugin-transform-unicode-escapes": "^7.24.1", + "@babel/plugin-transform-unicode-property-regex": "^7.24.1", + "@babel/plugin-transform-unicode-regex": "^7.24.1", + "@babel/plugin-transform-unicode-sets-regex": "^7.24.1", "@babel/preset-modules": "0.1.6-no-external-plugins", - "babel-plugin-polyfill-corejs2": "^0.4.6", - "babel-plugin-polyfill-corejs3": "^0.8.5", - "babel-plugin-polyfill-regenerator": "^0.5.3", + "babel-plugin-polyfill-corejs2": "^0.4.10", + "babel-plugin-polyfill-corejs3": "^0.10.4", + "babel-plugin-polyfill-regenerator": "^0.6.1", "core-js-compat": "^3.31.0", "semver": "^6.3.1" }, @@ -1608,37 +1717,10 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/preset-env/node_modules/@babel/helper-define-polyfill-provider": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.4.4.tgz", - "integrity": "sha512-QcJMILQCu2jm5TFPGA3lCpJJTeEP+mqeXooG/NZbg/h5FTFi6V0+99ahlRsW8/kRLyb24LZVCCiclDedhLKcBA==", - "dev": true, - "dependencies": { - "@babel/helper-compilation-targets": "^7.22.6", - "@babel/helper-plugin-utils": "^7.22.5", - "debug": "^4.1.1", - "lodash.debounce": "^4.0.8", - "resolve": "^1.14.2" - }, - "peerDependencies": { - "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" - } - }, - "node_modules/@babel/preset-env/node_modules/babel-plugin-polyfill-corejs3": { - "version": "0.8.7", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.8.7.tgz", - "integrity": "sha512-KyDvZYxAzkC0Aj2dAPyDzi2Ym15e5JKZSK+maI7NAwSqofvuFglbSsxE7wUOvTg9oFVnHMzVzBKcqEb4PJgtOA==", - "dev": true, - "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.4.4", - "core-js-compat": "^3.33.1" - }, - "peerDependencies": { - "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" - } - }, "node_modules/@babel/preset-modules": { "version": "0.1.6-no-external-plugins", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz", + "integrity": "sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.0.0", @@ -1650,14 +1732,16 @@ } }, "node_modules/@babel/preset-typescript": { - "version": "7.23.3", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.24.1.tgz", + "integrity": "sha512-1DBaMmRDpuYQBPWD8Pf/WEwCrtgRHxsZnP4mIy9G/X+hFfbI47Q2G4t1Paakld84+qsk2fSsUPMKg71jkoOOaQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-validator-option": "^7.22.15", - "@babel/plugin-syntax-jsx": "^7.23.3", - "@babel/plugin-transform-modules-commonjs": "^7.23.3", - "@babel/plugin-transform-typescript": "^7.23.3" + "@babel/helper-plugin-utils": "^7.24.0", + "@babel/helper-validator-option": "^7.23.5", + "@babel/plugin-syntax-jsx": "^7.24.1", + "@babel/plugin-transform-modules-commonjs": "^7.24.1", + "@babel/plugin-transform-typescript": "^7.24.1" }, "engines": { "node": ">=6.9.0" @@ -1673,9 +1757,9 @@ "dev": true }, "node_modules/@babel/runtime": { - "version": "7.23.9", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.23.9.tgz", - "integrity": "sha512-0CX6F+BI2s9dkUqr08KFrAIZgNFj75rdBU/DjCyYLIaV/quFjkk6T+EJ2LkZHyZTbEV4L5p97mNkUsHl2wLFAw==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.24.1.tgz", + "integrity": "sha512-+BIznRzyqBf+2wCTxcKE3wDjfGeCoVE61KSHGpkzqrLi8qxqFwBeUFyId2cxkTmm55fzDGnm0+yCxaxygrLUnQ==", "dev": true, "dependencies": { "regenerator-runtime": "^0.14.0" @@ -1699,18 +1783,18 @@ } }, "node_modules/@babel/traverse": { - "version": "7.24.0", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.24.0.tgz", - "integrity": "sha512-HfuJlI8qq3dEDmNU5ChzzpZRWq+oxCZQyMzIMEqLho+AQnhMnKQUzH6ydo3RBl/YjPCuk68Y6s0Gx0AeyULiWw==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.24.1.tgz", + "integrity": "sha512-xuU6o9m68KeqZbQuDt2TcKSxUw/mrsvavlEqQ1leZ/B+C9tk6E4sRWy97WaXgvq5E+nU3cXMxv3WKOCanVMCmQ==", "dev": true, "dependencies": { - "@babel/code-frame": "^7.23.5", - "@babel/generator": "^7.23.6", + "@babel/code-frame": "^7.24.1", + "@babel/generator": "^7.24.1", "@babel/helper-environment-visitor": "^7.22.20", "@babel/helper-function-name": "^7.23.0", "@babel/helper-hoist-variables": "^7.22.5", "@babel/helper-split-export-declaration": "^7.22.6", - "@babel/parser": "^7.24.0", + "@babel/parser": "^7.24.1", "@babel/types": "^7.24.0", "debug": "^4.3.1", "globals": "^11.1.0" @@ -1741,8 +1825,9 @@ }, "node_modules/@colors/colors": { "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz", + "integrity": "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==", "dev": true, - "license": "MIT", "optional": true, "engines": { "node": ">=0.1.90" @@ -1773,9 +1858,9 @@ } }, "node_modules/@commitlint/config-conventional": { - "version": "18.6.2", - "resolved": "https://registry.npmjs.org/@commitlint/config-conventional/-/config-conventional-18.6.2.tgz", - "integrity": "sha512-PcgSYg1AKGQIwDQKbaHtJsfqYy4uJTC7crLVZ83lfjcPaec4Pry2vLeaWej7ao2KsT20l9dWoMPpEGg8LWdUuA==", + "version": "18.6.3", + "resolved": "https://registry.npmjs.org/@commitlint/config-conventional/-/config-conventional-18.6.3.tgz", + "integrity": "sha512-8ZrRHqF6je+TRaFoJVwszwnOXb/VeYrPmTwPhf0WxpzpGTcYy1p0SPyZ2eRn/sRi/obnWAcobtDAq6+gJQQNhQ==", "dev": true, "dependencies": { "@commitlint/types": "^18.6.1", @@ -2234,30 +2319,6 @@ "node": ">=8" } }, - "node_modules/@cspotcode/source-map-support": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", - "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "@jridgewell/trace-mapping": "0.3.9" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/@cspotcode/source-map-support/node_modules/@jridgewell/trace-mapping": { - "version": "0.3.9", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "@jridgewell/resolve-uri": "^3.0.3", - "@jridgewell/sourcemap-codec": "^1.4.10" - } - }, "node_modules/@esbuild/aix-ppc64": { "version": "0.19.12", "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.19.12.tgz", @@ -2330,7 +2391,6 @@ "arm64" ], "dev": true, - "license": "MIT", "optional": true, "os": [ "darwin" @@ -2746,9 +2806,9 @@ } }, "node_modules/@eslint/js": { - "version": "8.56.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.56.0.tgz", - "integrity": "sha512-gMsVel9D7f2HLkBma9VbtzZRehRogVRfbr++f06nL2vnCGCNlzOD+/MUov/F4p8myyAHspEhVobgjpX64q5m6A==", + "version": "8.57.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.0.tgz", + "integrity": "sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==", "dev": true, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -2932,8 +2992,9 @@ }, "node_modules/@istanbuljs/load-nyc-config/node_modules/find-up": { "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", "dev": true, - "license": "MIT", "dependencies": { "locate-path": "^5.0.0", "path-exists": "^4.0.0" @@ -2957,8 +3018,9 @@ }, "node_modules/@istanbuljs/load-nyc-config/node_modules/locate-path": { "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", "dev": true, - "license": "MIT", "dependencies": { "p-locate": "^4.1.0" }, @@ -2968,8 +3030,9 @@ }, "node_modules/@istanbuljs/load-nyc-config/node_modules/p-limit": { "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", "dev": true, - "license": "MIT", "dependencies": { "p-try": "^2.0.0" }, @@ -2982,8 +3045,9 @@ }, "node_modules/@istanbuljs/load-nyc-config/node_modules/p-locate": { "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", "dev": true, - "license": "MIT", "dependencies": { "p-limit": "^2.2.0" }, @@ -3629,14 +3693,14 @@ } }, "node_modules/@jridgewell/gen-mapping": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", - "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==", + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", + "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", "dev": true, "dependencies": { - "@jridgewell/set-array": "^1.0.1", + "@jridgewell/set-array": "^1.2.1", "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.9" + "@jridgewell/trace-mapping": "^0.3.24" }, "engines": { "node": ">=6.0.0" @@ -3652,9 +3716,9 @@ } }, "node_modules/@jridgewell/set-array": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", - "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", + "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", "dev": true, "engines": { "node": ">=6.0.0" @@ -3667,7 +3731,9 @@ "dev": true }, "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.20", + "version": "0.3.25", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", + "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", "dev": true, "dependencies": { "@jridgewell/resolve-uri": "^3.1.0", @@ -3939,9 +4005,9 @@ } }, "node_modules/@rollup/rollup-android-arm-eabi": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.12.0.tgz", - "integrity": "sha512-+ac02NL/2TCKRrJu2wffk1kZ+RyqxVUlbjSagNgPm94frxtr+XDL12E5Ll1enWskLrtrZ2r8L3wED1orIibV/w==", + "version": "4.13.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.13.2.tgz", + "integrity": "sha512-3XFIDKWMFZrMnao1mJhnOT1h2g0169Os848NhhmGweEcfJ4rCi+3yMCOLG4zA61rbJdkcrM/DjVZm9Hg5p5w7g==", "cpu": [ "arm" ], @@ -3952,9 +4018,9 @@ ] }, "node_modules/@rollup/rollup-android-arm64": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.12.0.tgz", - "integrity": "sha512-OBqcX2BMe6nvjQ0Nyp7cC90cnumt8PXmO7Dp3gfAju/6YwG0Tj74z1vKrfRz7qAv23nBcYM8BCbhrsWqO7PzQQ==", + "version": "4.13.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.13.2.tgz", + "integrity": "sha512-GdxxXbAuM7Y/YQM9/TwwP+L0omeE/lJAR1J+olu36c3LqqZEBdsIWeQ91KBe6nxwOnb06Xh7JS2U5ooWU5/LgQ==", "cpu": [ "arm64" ], @@ -3965,9 +4031,9 @@ ] }, "node_modules/@rollup/rollup-darwin-arm64": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.12.0.tgz", - "integrity": "sha512-X64tZd8dRE/QTrBIEs63kaOBG0b5GVEd3ccoLtyf6IdXtHdh8h+I56C2yC3PtC9Ucnv0CpNFJLqKFVgCYe0lOQ==", + "version": "4.13.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.13.2.tgz", + "integrity": "sha512-mCMlpzlBgOTdaFs83I4XRr8wNPveJiJX1RLfv4hggyIVhfB5mJfN4P8Z6yKh+oE4Luz+qq1P3kVdWrCKcMYrrA==", "cpu": [ "arm64" ], @@ -3978,9 +4044,9 @@ ] }, "node_modules/@rollup/rollup-darwin-x64": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.12.0.tgz", - "integrity": "sha512-cc71KUZoVbUJmGP2cOuiZ9HSOP14AzBAThn3OU+9LcA1+IUqswJyR1cAJj3Mg55HbjZP6OLAIscbQsQLrpgTOg==", + "version": "4.13.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.13.2.tgz", + "integrity": "sha512-yUoEvnH0FBef/NbB1u6d3HNGyruAKnN74LrPAfDQL3O32e3k3OSfLrPgSJmgb3PJrBZWfPyt6m4ZhAFa2nZp2A==", "cpu": [ "x64" ], @@ -3991,9 +4057,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm-gnueabihf": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.12.0.tgz", - "integrity": "sha512-a6w/Y3hyyO6GlpKL2xJ4IOh/7d+APaqLYdMf86xnczU3nurFTaVN9s9jOXQg97BE4nYm/7Ga51rjec5nfRdrvA==", + "version": "4.13.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.13.2.tgz", + "integrity": "sha512-GYbLs5ErswU/Xs7aGXqzc3RrdEjKdmoCrgzhJWyFL0r5fL3qd1NPcDKDowDnmcoSiGJeU68/Vy+OMUluRxPiLQ==", "cpu": [ "arm" ], @@ -4004,9 +4070,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm64-gnu": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.12.0.tgz", - "integrity": "sha512-0fZBq27b+D7Ar5CQMofVN8sggOVhEtzFUwOwPppQt0k+VR+7UHMZZY4y+64WJ06XOhBTKXtQB/Sv0NwQMXyNAA==", + "version": "4.13.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.13.2.tgz", + "integrity": "sha512-L1+D8/wqGnKQIlh4Zre9i4R4b4noxzH5DDciyahX4oOz62CphY7WDWqJoQ66zNR4oScLNOqQJfNSIAe/6TPUmQ==", "cpu": [ "arm64" ], @@ -4017,9 +4083,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm64-musl": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.12.0.tgz", - "integrity": "sha512-eTvzUS3hhhlgeAv6bfigekzWZjaEX9xP9HhxB0Dvrdbkk5w/b+1Sxct2ZuDxNJKzsRStSq1EaEkVSEe7A7ipgQ==", + "version": "4.13.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.13.2.tgz", + "integrity": "sha512-tK5eoKFkXdz6vjfkSTCupUzCo40xueTOiOO6PeEIadlNBkadH1wNOH8ILCPIl8by/Gmb5AGAeQOFeLev7iZDOA==", "cpu": [ "arm64" ], @@ -4029,10 +4095,23 @@ "linux" ] }, + "node_modules/@rollup/rollup-linux-powerpc64le-gnu": { + "version": "4.13.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.13.2.tgz", + "integrity": "sha512-zvXvAUGGEYi6tYhcDmb9wlOckVbuD+7z3mzInCSTACJ4DQrdSLPNUeDIcAQW39M3q6PDquqLWu7pnO39uSMRzQ==", + "cpu": [ + "ppc64le" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, "node_modules/@rollup/rollup-linux-riscv64-gnu": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.12.0.tgz", - "integrity": "sha512-ix+qAB9qmrCRiaO71VFfY8rkiAZJL8zQRXveS27HS+pKdjwUfEhqo2+YF2oI+H/22Xsiski+qqwIBxVewLK7sw==", + "version": "4.13.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.13.2.tgz", + "integrity": "sha512-C3GSKvMtdudHCN5HdmAMSRYR2kkhgdOfye4w0xzyii7lebVr4riCgmM6lRiSCnJn2w1Xz7ZZzHKuLrjx5620kw==", "cpu": [ "riscv64" ], @@ -4042,10 +4121,23 @@ "linux" ] }, + "node_modules/@rollup/rollup-linux-s390x-gnu": { + "version": "4.13.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.13.2.tgz", + "integrity": "sha512-l4U0KDFwzD36j7HdfJ5/TveEQ1fUTjFFQP5qIt9gBqBgu1G8/kCaq5Ok05kd5TG9F8Lltf3MoYsUMw3rNlJ0Yg==", + "cpu": [ + "s390x" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, "node_modules/@rollup/rollup-linux-x64-gnu": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.12.0.tgz", - "integrity": "sha512-TenQhZVOtw/3qKOPa7d+QgkeM6xY0LtwzR8OplmyL5LrgTWIXpTQg2Q2ycBf8jm+SFW2Wt/DTn1gf7nFp3ssVA==", + "version": "4.13.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.13.2.tgz", + "integrity": "sha512-xXMLUAMzrtsvh3cZ448vbXqlUa7ZL8z0MwHp63K2IIID2+DeP5iWIT6g1SN7hg1VxPzqx0xZdiDM9l4n9LRU1A==", "cpu": [ "x64" ], @@ -4056,9 +4148,9 @@ ] }, "node_modules/@rollup/rollup-linux-x64-musl": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.12.0.tgz", - "integrity": "sha512-LfFdRhNnW0zdMvdCb5FNuWlls2WbbSridJvxOvYWgSBOYZtgBfW9UGNJG//rwMqTX1xQE9BAodvMH9tAusKDUw==", + "version": "4.13.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.13.2.tgz", + "integrity": "sha512-M/JYAWickafUijWPai4ehrjzVPKRCyDb1SLuO+ZyPfoXgeCEAlgPkNXewFZx0zcnoIe3ay4UjXIMdXQXOZXWqA==", "cpu": [ "x64" ], @@ -4069,9 +4161,9 @@ ] }, "node_modules/@rollup/rollup-win32-arm64-msvc": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.12.0.tgz", - "integrity": "sha512-JPDxovheWNp6d7AHCgsUlkuCKvtu3RB55iNEkaQcf0ttsDU/JZF+iQnYcQJSk/7PtT4mjjVG8N1kpwnI9SLYaw==", + "version": "4.13.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.13.2.tgz", + "integrity": "sha512-2YWwoVg9KRkIKaXSh0mz3NmfurpmYoBBTAXA9qt7VXk0Xy12PoOP40EFuau+ajgALbbhi4uTj3tSG3tVseCjuA==", "cpu": [ "arm64" ], @@ -4082,9 +4174,9 @@ ] }, "node_modules/@rollup/rollup-win32-ia32-msvc": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.12.0.tgz", - "integrity": "sha512-fjtuvMWRGJn1oZacG8IPnzIV6GF2/XG+h71FKn76OYFqySXInJtseAqdprVTDTyqPxQOG9Exak5/E9Z3+EJ8ZA==", + "version": "4.13.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.13.2.tgz", + "integrity": "sha512-2FSsE9aQ6OWD20E498NYKEQLneShWes0NGMPQwxWOdws35qQXH+FplabOSP5zEe1pVjurSDOGEVCE2agFwSEsw==", "cpu": [ "ia32" ], @@ -4095,9 +4187,9 @@ ] }, "node_modules/@rollup/rollup-win32-x64-msvc": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.12.0.tgz", - "integrity": "sha512-ZYmr5mS2wd4Dew/JjT0Fqi2NPB/ZhZ2VvPp7SmvPZb4Y1CG/LRcS6tcRo2cYU7zLK5A7cdbhWnnWmUjoI4qapg==", + "version": "4.13.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.13.2.tgz", + "integrity": "sha512-7h7J2nokcdPePdKykd8wtc8QqqkqxIrUz7MHj6aNr8waBRU//NLDVnNjQnqQO6fqtjrtCdftpbTuOKAyrAQETQ==", "cpu": [ "x64" ], @@ -4108,9 +4200,9 @@ ] }, "node_modules/@scure/base": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/@scure/base/-/base-1.1.5.tgz", - "integrity": "sha512-Brj9FiG2W1MRQSTB212YVPRrcbjkv48FoZi/u4l/zds/ieRrqsh7aUf6CLwkAq61oKXr/ZlTzlY66gLIj3TFTQ==", + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/@scure/base/-/base-1.1.6.tgz", + "integrity": "sha512-ok9AWwhcgYuGG3Zfhyqg+zwl+Wn5uE+dwC0NV/2qQkx4dABbb/bx96vWu8NSj+BNjjSjno+JRYRjle1jV08k3g==", "funding": { "url": "https://paulmillr.com/funding/" } @@ -4237,9 +4329,9 @@ } }, "node_modules/@semantic-release/github/node_modules/agent-base": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.0.tgz", - "integrity": "sha512-o/zjMZRhJxny7OyEF+Op8X+efiELC7k7yOjMzgfzVqOzXqkBkWI79YoTdOtsuWd5BWhAGAuOY/Xa6xpiaWXiNg==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.1.tgz", + "integrity": "sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==", "dev": true, "dependencies": { "debug": "^4.3.4" @@ -4383,9 +4475,9 @@ } }, "node_modules/@semantic-release/npm": { - "version": "11.0.2", - "resolved": "https://registry.npmjs.org/@semantic-release/npm/-/npm-11.0.2.tgz", - "integrity": "sha512-owtf3RjyPvRE63iUKZ5/xO4uqjRpVQDUB9+nnXj0xwfIeM9pRl+cG+zGDzdftR4m3f2s4Wyf3SexW+kF5DFtWA==", + "version": "11.0.3", + "resolved": "https://registry.npmjs.org/@semantic-release/npm/-/npm-11.0.3.tgz", + "integrity": "sha512-KUsozQGhRBAnoVg4UMZj9ep436VEGwT536/jwSqB7vcEfA6oncCUU7UIYTRdLx7GvTtqn0kBjnkfLVkcnBa2YQ==", "dev": true, "dependencies": { "@semantic-release/error": "^4.0.0", @@ -4395,7 +4487,7 @@ "lodash-es": "^4.17.21", "nerf-dart": "^1.0.0", "normalize-url": "^8.0.0", - "npm": "^10.0.0", + "npm": "^10.5.0", "rc": "^1.2.8", "read-pkg": "^9.0.0", "registry-auth-token": "^5.0.0", @@ -4420,6 +4512,8 @@ }, "node_modules/@semantic-release/npm/node_modules/aggregate-error": { "version": "5.0.0", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-5.0.0.tgz", + "integrity": "sha512-gOsf2YwSlleG6IjRYG2A7k0HmBMEo6qVNk9Bp/EaLgAJT5ngH6PXbqa4ItvnEwCm/velL5jAnQgsHsWnjhGmvw==", "dev": true, "dependencies": { "clean-stack": "^5.2.0", @@ -4434,6 +4528,8 @@ }, "node_modules/@semantic-release/npm/node_modules/clean-stack": { "version": "5.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-5.2.0.tgz", + "integrity": "sha512-TyUIUJgdFnCISzG5zu3291TAsE77ddchd0bepon1VVQrKLGKFED4iXFEDQ24mIPdPBbyE16PK3F8MYE1CmcBEQ==", "dev": true, "dependencies": { "escape-string-regexp": "5.0.0" @@ -4459,6 +4555,8 @@ }, "node_modules/@semantic-release/npm/node_modules/execa": { "version": "8.0.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-8.0.1.tgz", + "integrity": "sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==", "dev": true, "dependencies": { "cross-spawn": "^7.0.3", @@ -4480,8 +4578,9 @@ }, "node_modules/@semantic-release/npm/node_modules/get-stream": { "version": "8.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-8.0.1.tgz", + "integrity": "sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==", "dev": true, - "license": "MIT", "engines": { "node": ">=16" }, @@ -4491,6 +4590,8 @@ }, "node_modules/@semantic-release/npm/node_modules/human-signals": { "version": "5.0.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-5.0.0.tgz", + "integrity": "sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==", "dev": true, "engines": { "node": ">=16.17.0" @@ -4522,8 +4623,9 @@ }, "node_modules/@semantic-release/npm/node_modules/lru-cache": { "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", "dev": true, - "license": "ISC", "dependencies": { "yallist": "^4.0.0" }, @@ -4544,9 +4646,9 @@ } }, "node_modules/@semantic-release/npm/node_modules/npm-run-path": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.2.0.tgz", - "integrity": "sha512-W4/tgAXFqFA0iL7fk0+uQ3g7wkL8xJmx3XdK0VGb4cHW//eZTtKGvFBBoRKVTpY7n6ze4NL9ly7rgXcHufqXKg==", + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.3.0.tgz", + "integrity": "sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==", "dev": true, "dependencies": { "path-key": "^4.0.0" @@ -4602,8 +4704,9 @@ }, "node_modules/@semantic-release/npm/node_modules/signal-exit": { "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", "dev": true, - "license": "ISC", "engines": { "node": ">=14" }, @@ -4684,7 +4787,9 @@ } }, "node_modules/@sinonjs/commons": { - "version": "3.0.0", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.1.tgz", + "integrity": "sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==", "dev": true, "dependencies": { "type-detect": "4.0.8" @@ -4708,40 +4813,10 @@ "node": ">= 10" } }, - "node_modules/@tsconfig/node10": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.9.tgz", - "integrity": "sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==", - "dev": true, - "optional": true, - "peer": true - }, - "node_modules/@tsconfig/node12": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz", - "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==", - "dev": true, - "optional": true, - "peer": true - }, - "node_modules/@tsconfig/node14": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz", - "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==", - "dev": true, - "optional": true, - "peer": true - }, - "node_modules/@tsconfig/node16": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.4.tgz", - "integrity": "sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==", - "dev": true, - "optional": true, - "peer": true - }, "node_modules/@types/babel__core": { - "version": "7.20.4", + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", + "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==", "dev": true, "dependencies": { "@babel/parser": "^7.20.7", @@ -4752,7 +4827,9 @@ } }, "node_modules/@types/babel__generator": { - "version": "7.6.7", + "version": "7.6.8", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.8.tgz", + "integrity": "sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==", "dev": true, "dependencies": { "@babel/types": "^7.0.0" @@ -4760,6 +4837,8 @@ }, "node_modules/@types/babel__template": { "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz", + "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==", "dev": true, "dependencies": { "@babel/parser": "^7.1.0", @@ -4767,7 +4846,9 @@ } }, "node_modules/@types/babel__traverse": { - "version": "7.20.4", + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.5.tgz", + "integrity": "sha512-WXCyOcRtH37HAUkpXhUduaxdm82b4GSlyTqajXviN4EfiuPgNYR109xMCKvpl6zPIpua0DGlMEDCq+g8EdoheQ==", "dev": true, "dependencies": { "@babel/types": "^7.20.7" @@ -4781,6 +4862,8 @@ }, "node_modules/@types/graceful-fs": { "version": "4.1.9", + "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.9.tgz", + "integrity": "sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==", "dev": true, "dependencies": { "@types/node": "*" @@ -4794,11 +4877,14 @@ }, "node_modules/@types/istanbul-lib-coverage": { "version": "2.0.6", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz", + "integrity": "sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==", + "dev": true }, "node_modules/@types/istanbul-lib-report": { "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.3.tgz", + "integrity": "sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==", "dev": true, "dependencies": { "@types/istanbul-lib-coverage": "*" @@ -4806,13 +4892,17 @@ }, "node_modules/@types/istanbul-reports": { "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz", + "integrity": "sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==", "dev": true, "dependencies": { "@types/istanbul-lib-report": "*" } }, "node_modules/@types/jest": { - "version": "29.5.8", + "version": "29.5.12", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.5.12.tgz", + "integrity": "sha512-eDC8bTvT/QhYdxJAulQikueigY5AsdBRH2yDKW3yveW7svY3+DzN84/2NUgkw10RTiJbWqZrTtoGVdYlvFJdLw==", "dev": true, "dependencies": { "expect": "^29.0.0", @@ -4821,6 +4911,8 @@ }, "node_modules/@types/jest-json-schema": { "version": "6.1.4", + "resolved": "https://registry.npmjs.org/@types/jest-json-schema/-/jest-json-schema-6.1.4.tgz", + "integrity": "sha512-cqU3LDfg7jWYzNVubdGGgr/aPT4NsnIz8SZ4Z+jHUg6us8E+rkP6DMkv3n4c1y2+9/Pa5+vwfAKtTnLmcXBDow==", "dev": true, "dependencies": { "@types/jest": "*", @@ -4874,48 +4966,59 @@ }, "node_modules/@types/minimist": { "version": "1.2.5", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-hov8bUuiLiyFPGyFPE1lwWhmzYbirOXQNNo40+y3zow8aFVTeyn3VWL0VFFfdNddA8S4Vf0Tc062rzyNr7Paag==", + "dev": true }, "node_modules/@types/node": { - "version": "20.5.1", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.5.1.tgz", - "integrity": "sha512-4tT2UrL5LBqDwoed9wZ6N3umC4Yhz3W3FloMmiiG4JwmUJWpie0c7lcnUNd4gtMKuDEO4wRVS8B6Xa0uMRsMKg==", - "dev": true + "version": "20.12.2", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.12.2.tgz", + "integrity": "sha512-zQ0NYO87hyN6Xrclcqp7f8ZbXNbRfoGWNcMvHTPQp9UUrwI0mI7XBz+cu7/W6/VClYo2g63B0cjull/srU7LgQ==", + "dev": true, + "dependencies": { + "undici-types": "~5.26.4" + } }, "node_modules/@types/normalize-package-data": { "version": "2.4.4", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.4.tgz", + "integrity": "sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==", + "dev": true }, "node_modules/@types/pako": { "version": "2.0.3", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/@types/pako/-/pako-2.0.3.tgz", + "integrity": "sha512-bq0hMV9opAcrmE0Byyo0fY3Ew4tgOevJmQ9grUhpXQhYfyLJ1Kqg3P33JT5fdbT2AjeAjR51zqqVjAL/HMkx7Q==", + "dev": true }, "node_modules/@types/semver": { - "version": "7.5.7", - "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.7.tgz", - "integrity": "sha512-/wdoPq1QqkSj9/QOeKkFquEuPzQbHTWAMPH/PaUMB+JuR31lXhlWXRZ52IpfDYVlDOUBvX09uBrPwxGT1hjNBg==", + "version": "7.5.8", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.8.tgz", + "integrity": "sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==", "dev": true }, "node_modules/@types/stack-utils": { "version": "2.0.3", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.3.tgz", + "integrity": "sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==", + "dev": true }, "node_modules/@types/tough-cookie": { "version": "4.0.5", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/@types/tough-cookie/-/tough-cookie-4.0.5.tgz", + "integrity": "sha512-/Ad8+nIOV7Rl++6f1BdKxFSMgmoqEoYbHRpPcx3JEfv8VRsQe9Z4mCXeJBzxs7mbHY/XOZZuXlRNfhpVPbs6ZA==", + "dev": true }, "node_modules/@types/url-join": { "version": "4.0.3", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/@types/url-join/-/url-join-4.0.3.tgz", + "integrity": "sha512-3l1qMm3wqO0iyC5gkADzT95UVW7C/XXcdvUcShOideKF0ddgVRErEQQJXBd2kvQm+aSgqhBGHGB38TgMeT57Ww==", + "dev": true }, "node_modules/@types/yargs": { - "version": "17.0.31", + "version": "17.0.32", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.32.tgz", + "integrity": "sha512-xQ67Yc/laOG5uMfX/093MRlGGCIBzZMarVa+gfNKJxWAIgykYpVGkBdbqEzGDDfCrVUj6Hiff4mTZ5BA6TmAog==", "dev": true, "dependencies": { "@types/yargs-parser": "*" @@ -4923,8 +5026,9 @@ }, "node_modules/@types/yargs-parser": { "version": "21.0.3", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.3.tgz", + "integrity": "sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==", + "dev": true }, "node_modules/@typescript-eslint/eslint-plugin": { "version": "6.21.0", @@ -5217,8 +5321,9 @@ }, "node_modules/@ungap/structured-clone": { "version": "1.2.0", - "dev": true, - "license": "ISC" + "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", + "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==", + "dev": true }, "node_modules/abab": { "version": "2.0.6", @@ -5228,9 +5333,9 @@ "dev": true }, "node_modules/abi-wan-kanabi": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/abi-wan-kanabi/-/abi-wan-kanabi-2.2.1.tgz", - "integrity": "sha512-W3RNuu2tG10W4AY63uq89JX/MsZSOxvpmsitQ3pbdVn3e8RxXR2oegN0QmGpgfyT0KlPdreydHsqq/u+2Pt2PQ==", + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/abi-wan-kanabi/-/abi-wan-kanabi-2.2.2.tgz", + "integrity": "sha512-sTCv2HyNIj1x2WFUoc9oL8ZT9liosrL+GoqEGZJK1kDND096CfA7lwx06vLxLWMocQ41FQXO3oliwoh/UZHYdQ==", "dependencies": { "ansicolors": "^0.3.2", "cardinal": "^2.1.1", @@ -5243,7 +5348,8 @@ }, "node_modules/abi-wan-kanabi/node_modules/fs-extra": { "version": "10.1.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", "dependencies": { "graceful-fs": "^4.2.0", "jsonfile": "^6.0.1", @@ -5406,7 +5512,8 @@ }, "node_modules/ansicolors": { "version": "0.3.2", - "license": "MIT" + "resolved": "https://registry.npmjs.org/ansicolors/-/ansicolors-0.3.2.tgz", + "integrity": "sha512-QXu7BPrP29VllRxH8GwB7x5iX5qWKAAMLqKQGWTeLWVlNHNOpVMJ91dsxQAIWXpjuW5wqvxu3Jd/nRjrJ+0pqg==" }, "node_modules/any-promise": { "version": "1.3.0", @@ -5427,14 +5534,6 @@ "node": ">= 8" } }, - "node_modules/arg": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", - "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", - "dev": true, - "optional": true, - "peer": true - }, "node_modules/argparse": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", @@ -5470,15 +5569,16 @@ "dev": true }, "node_modules/array-includes": { - "version": "3.1.7", - "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.7.tgz", - "integrity": "sha512-dlcsNBIiWhPkHdOEEKnehA+RNUWDc4UqFtnIXU4uuYDPtA4LDkr7qip2p0VvFAEXNDr0yWZ9PJyIRiGjRLQzwQ==", + "version": "3.1.8", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.8.tgz", + "integrity": "sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "get-intrinsic": "^1.2.1", + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.4", "is-string": "^1.0.7" }, "engines": { @@ -5497,36 +5597,17 @@ "node": ">=8" } }, - "node_modules/array.prototype.filter": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/array.prototype.filter/-/array.prototype.filter-1.0.3.tgz", - "integrity": "sha512-VizNcj/RGJiUyQBgzwxzE5oHdeuXY5hSbbmKMlphj1cy1Vl7Pn2asCGbSrru6hSQjmCzqTBPVWAF/whmEOVHbw==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "es-array-method-boxes-properly": "^1.0.0", - "is-string": "^1.0.7" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/array.prototype.findlastindex": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.4.tgz", - "integrity": "sha512-hzvSHUshSpCflDR1QMUBLHGHP1VIEBegT4pix9H/Z92Xw3ySoy6c2qh7lJWTJnRJ8JCZ9bJNCgTyYaJGcJu6xQ==", + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.5.tgz", + "integrity": "sha512-zfETvRFA8o7EiNn++N5f/kaCw221hrpGsDmcpndVupkPzEc1Wuf3VgC0qby1BbHs7f5DVYjgtEU2LLh5bqeGfQ==", "dev": true, "dependencies": { - "call-bind": "^1.0.5", + "call-bind": "^1.0.7", "define-properties": "^1.2.1", - "es-abstract": "^1.22.3", + "es-abstract": "^1.23.2", "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", "es-shim-unscopables": "^1.0.2" }, "engines": { @@ -5763,26 +5844,39 @@ } }, "node_modules/babel-plugin-polyfill-corejs2": { - "version": "0.4.8", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.8.tgz", - "integrity": "sha512-OtIuQfafSzpo/LhnJaykc0R/MMnuLSSVjVYy9mHArIZ9qTCSZ6TpWCuEKZYVoN//t8HqBNScHrOtCrIK5IaGLg==", + "version": "0.4.10", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.10.tgz", + "integrity": "sha512-rpIuu//y5OX6jVU+a5BCn1R5RSZYWAl2Nar76iwaOdycqb6JPxediskWFMMl7stfwNJR4b7eiQvh5fB5TEQJTQ==", "dev": true, "dependencies": { "@babel/compat-data": "^7.22.6", - "@babel/helper-define-polyfill-provider": "^0.5.0", + "@babel/helper-define-polyfill-provider": "^0.6.1", "semver": "^6.3.1" }, "peerDependencies": { "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" } }, + "node_modules/babel-plugin-polyfill-corejs3": { + "version": "0.10.4", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.10.4.tgz", + "integrity": "sha512-25J6I8NGfa5YkCDogHRID3fVCadIR8/pGl1/spvCkzb6lVn6SR3ojpx9nOn9iEBcUsjY24AmdKm5khcfKdylcg==", + "dev": true, + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.6.1", + "core-js-compat": "^3.36.1" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, "node_modules/babel-plugin-polyfill-regenerator": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.5.5.tgz", - "integrity": "sha512-OJGYZlhLqBh2DDHeqAxWB1XIvr49CxiJ2gIt61/PU55CQK4Z58OzMqjDe1zwQdQk+rBYsRc+1rJmdajM3gimHg==", + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.1.tgz", + "integrity": "sha512-JfTApdE++cgcTWjsiCQlLyFBMbTUft9ja17saCc93lgV33h4tuCVj7tlvu//qpLwaG+3yEz7/KhahGrUMkVq9g==", "dev": true, "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.5.0" + "@babel/helper-define-polyfill-provider": "^0.6.1" }, "peerDependencies": { "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" @@ -5840,12 +5934,15 @@ "dev": true }, "node_modules/binary-extensions": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", - "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", + "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", "dev": true, "engines": { "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/bottleneck": { @@ -6046,9 +6143,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001588", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001588.tgz", - "integrity": "sha512-+hVY9jE44uKLkH0SrUTqxjxqNTOWHsbnQDIKjwkZ3lNTzUUVdBLBGXtj/q5Mp5u98r3droaZAewQuEDzjQdZlQ==", + "version": "1.0.30001603", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001603.tgz", + "integrity": "sha512-iL2iSS0eDILMb9n5yKQoTBim9jMZ0Yrk8g0N9K7UzYyWnfIKzXBZD5ngpM37ZcL/cv0Mli8XtVMRYMQAfFpi5Q==", "dev": true, "funding": [ { @@ -6067,7 +6164,8 @@ }, "node_modules/cardinal": { "version": "2.1.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/cardinal/-/cardinal-2.1.1.tgz", + "integrity": "sha512-JSr5eOgoEymtYHBjNWyjrMqet9Am2miJhlfKNdqLp6zoeAh0KN5dRAcxlecj5mAJrmQomgiOBj35xHLrFjqBpw==", "dependencies": { "ansicolors": "~0.3.2", "redeyed": "~2.1.0" @@ -6125,8 +6223,9 @@ }, "node_modules/chokidar/node_modules/glob-parent": { "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", "dev": true, - "license": "ISC", "dependencies": { "is-glob": "^4.0.1" }, @@ -6166,6 +6265,8 @@ }, "node_modules/cli-cursor": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-4.0.0.tgz", + "integrity": "sha512-VGtlMu3x/4DOtIUwEkRezxUZ2lBacNJCHash0N0WeZDBS+7Ux1dm3XWAgWYxLJFMMdOeXMHXorshEFhbMSGelg==", "dev": true, "dependencies": { "restore-cursor": "^4.0.0" @@ -6359,7 +6460,9 @@ } }, "node_modules/cli-table3": { - "version": "0.6.3", + "version": "0.6.4", + "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.6.4.tgz", + "integrity": "sha512-Lm3L0p+/npIQWNIiyF/nAn7T5dnOwR3xNTHXYEBFBFVPXzCVNZ5lqEC/1eo/EVfpDsQ1I+TX4ORPQgp+UI0CRw==", "dev": true, "dependencies": { "string-width": "^4.2.0" @@ -6379,6 +6482,8 @@ }, "node_modules/cli-table3/node_modules/is-fullwidth-code-point": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", "dev": true, "engines": { "node": ">=8" @@ -6386,6 +6491,8 @@ }, "node_modules/cli-table3/node_modules/string-width": { "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "dev": true, "dependencies": { "emoji-regex": "^8.0.0", @@ -6427,7 +6534,8 @@ }, "node_modules/cliui/node_modules/ansi-styles": { "version": "4.3.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dependencies": { "color-convert": "^2.0.1" }, @@ -6440,7 +6548,8 @@ }, "node_modules/cliui/node_modules/color-convert": { "version": "2.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dependencies": { "color-name": "~1.1.4" }, @@ -6450,7 +6559,8 @@ }, "node_modules/cliui/node_modules/color-name": { "version": "1.1.4", - "license": "MIT" + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" }, "node_modules/cliui/node_modules/emoji-regex": { "version": "8.0.0", @@ -6480,7 +6590,8 @@ }, "node_modules/cliui/node_modules/wrap-ansi": { "version": "7.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", @@ -6694,12 +6805,12 @@ "dev": true }, "node_modules/core-js-compat": { - "version": "3.36.0", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.36.0.tgz", - "integrity": "sha512-iV9Pd/PsgjNWBXeq8XRtWVSgz2tKAfhfvBs7qxYty+RlRd+OCksaWmOnc4JKrTc1cToXL1N0s3l/vwlxPtdElw==", + "version": "3.36.1", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.36.1.tgz", + "integrity": "sha512-Dk997v9ZCt3X/npqzyGdTlq6t7lDBhZwGvV94PKzDArjp7BTRm7WlDAXYd/OWdeFHO8OChQYRJNJvUCqCbrtKA==", "dev": true, "dependencies": { - "browserslist": "^4.22.3" + "browserslist": "^4.23.0" }, "funding": { "type": "opencollective", @@ -6846,14 +6957,6 @@ "node": ">=8" } }, - "node_modules/create-require": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", - "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", - "dev": true, - "optional": true, - "peer": true - }, "node_modules/cross-spawn": { "version": "7.0.3", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", @@ -6942,6 +7045,57 @@ "node": ">=12" } }, + "node_modules/data-view-buffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.1.tgz", + "integrity": "sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/data-view-byte-length": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.1.tgz", + "integrity": "sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/data-view-byte-offset": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.0.tgz", + "integrity": "sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/debug": { "version": "4.3.4", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", @@ -7089,17 +7243,6 @@ "node": ">=8" } }, - "node_modules/diff": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", - "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", - "dev": true, - "optional": true, - "peer": true, - "engines": { - "node": ">=0.3.1" - } - }, "node_modules/diff-sequences": { "version": "29.6.3", "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz", @@ -7160,6 +7303,8 @@ }, "node_modules/duplexer2": { "version": "0.1.4", + "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz", + "integrity": "sha512-asLFVfWWtJ90ZyOUHMqk7/S2w2guQKxUI2itj3d92ADHhxUSbCMGi1f1cBcJ7xM1To+pE/Khbwo1yuNbMEPKeA==", "dev": true, "dependencies": { "readable-stream": "^2.0.2" @@ -7172,9 +7317,9 @@ "dev": true }, "node_modules/electron-to-chromium": { - "version": "1.4.677", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.677.tgz", - "integrity": "sha512-erDa3CaDzwJOpyvfKhOiJjBVNnMM0qxHq47RheVVwsSQrgBA9ZSGV9kdaOfZDPXcHzhG7lBxhj6A7KvfLJBd6Q==", + "version": "1.4.722", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.722.tgz", + "integrity": "sha512-5nLE0TWFFpZ80Crhtp4pIp8LXCztjYX41yUcV6b+bKR2PqzjskTMOOlBi1VjBHlvHwS+4gar7kNKOrsbsewEZQ==", "dev": true }, "node_modules/emittery": { @@ -7201,16 +7346,6 @@ "integrity": "sha512-5U0rVMU5Y2n2+ykNLQqMoqklN9ICBT/KsvC1Gz6vqHbz2AXXGkG+Pm5rMWk/8Vjrr/mY9985Hi8DYzn1F09Nyw==", "dev": true }, - "node_modules/encoding": { - "version": "0.1.13", - "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", - "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", - "optional": true, - "peer": true, - "dependencies": { - "iconv-lite": "^0.6.2" - } - }, "node_modules/entities": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", @@ -7238,6 +7373,8 @@ }, "node_modules/env-ci/node_modules/execa": { "version": "8.0.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-8.0.1.tgz", + "integrity": "sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==", "dev": true, "dependencies": { "cross-spawn": "^7.0.3", @@ -7259,6 +7396,8 @@ }, "node_modules/env-ci/node_modules/get-stream": { "version": "8.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-8.0.1.tgz", + "integrity": "sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==", "dev": true, "engines": { "node": ">=16" @@ -7269,6 +7408,8 @@ }, "node_modules/env-ci/node_modules/human-signals": { "version": "5.0.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-5.0.0.tgz", + "integrity": "sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==", "dev": true, "engines": { "node": ">=16.17.0" @@ -7276,6 +7417,8 @@ }, "node_modules/env-ci/node_modules/is-stream": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", + "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", "dev": true, "engines": { "node": "^12.20.0 || ^14.13.1 || >=16.0.0" @@ -7286,6 +7429,8 @@ }, "node_modules/env-ci/node_modules/mimic-fn": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz", + "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==", "dev": true, "engines": { "node": ">=12" @@ -7295,7 +7440,9 @@ } }, "node_modules/env-ci/node_modules/npm-run-path": { - "version": "5.1.0", + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.3.0.tgz", + "integrity": "sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==", "dev": true, "dependencies": { "path-key": "^4.0.0" @@ -7309,6 +7456,8 @@ }, "node_modules/env-ci/node_modules/onetime": { "version": "6.0.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz", + "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==", "dev": true, "dependencies": { "mimic-fn": "^4.0.0" @@ -7322,6 +7471,8 @@ }, "node_modules/env-ci/node_modules/path-key": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", + "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", "dev": true, "engines": { "node": ">=12" @@ -7332,6 +7483,8 @@ }, "node_modules/env-ci/node_modules/signal-exit": { "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", "dev": true, "engines": { "node": ">=14" @@ -7342,6 +7495,8 @@ }, "node_modules/env-ci/node_modules/strip-final-newline": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz", + "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==", "dev": true, "engines": { "node": ">=12" @@ -7369,18 +7524,22 @@ } }, "node_modules/es-abstract": { - "version": "1.22.4", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.22.4.tgz", - "integrity": "sha512-vZYJlk2u6qHYxBOTjAeg7qUxHdNfih64Uu2J8QqWgXZ2cri0ZpJAkzDUK/q593+mvKwlxyaxr6F1Q+3LKoQRgg==", + "version": "1.23.3", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.3.tgz", + "integrity": "sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A==", "dev": true, "dependencies": { "array-buffer-byte-length": "^1.0.1", "arraybuffer.prototype.slice": "^1.0.3", - "available-typed-arrays": "^1.0.6", + "available-typed-arrays": "^1.0.7", "call-bind": "^1.0.7", + "data-view-buffer": "^1.0.1", + "data-view-byte-length": "^1.0.1", + "data-view-byte-offset": "^1.0.0", "es-define-property": "^1.0.0", "es-errors": "^1.3.0", - "es-set-tostringtag": "^2.0.2", + "es-object-atoms": "^1.0.0", + "es-set-tostringtag": "^2.0.3", "es-to-primitive": "^1.2.1", "function.prototype.name": "^1.1.6", "get-intrinsic": "^1.2.4", @@ -7388,15 +7547,16 @@ "globalthis": "^1.0.3", "gopd": "^1.0.1", "has-property-descriptors": "^1.0.2", - "has-proto": "^1.0.1", + "has-proto": "^1.0.3", "has-symbols": "^1.0.3", - "hasown": "^2.0.1", + "hasown": "^2.0.2", "internal-slot": "^1.0.7", "is-array-buffer": "^3.0.4", "is-callable": "^1.2.7", - "is-negative-zero": "^2.0.2", + "is-data-view": "^1.0.1", + "is-negative-zero": "^2.0.3", "is-regex": "^1.1.4", - "is-shared-array-buffer": "^1.0.2", + "is-shared-array-buffer": "^1.0.3", "is-string": "^1.0.7", "is-typed-array": "^1.1.13", "is-weakref": "^1.0.2", @@ -7404,17 +7564,17 @@ "object-keys": "^1.1.1", "object.assign": "^4.1.5", "regexp.prototype.flags": "^1.5.2", - "safe-array-concat": "^1.1.0", + "safe-array-concat": "^1.1.2", "safe-regex-test": "^1.0.3", - "string.prototype.trim": "^1.2.8", - "string.prototype.trimend": "^1.0.7", - "string.prototype.trimstart": "^1.0.7", - "typed-array-buffer": "^1.0.1", - "typed-array-byte-length": "^1.0.0", - "typed-array-byte-offset": "^1.0.0", - "typed-array-length": "^1.0.4", + "string.prototype.trim": "^1.2.9", + "string.prototype.trimend": "^1.0.8", + "string.prototype.trimstart": "^1.0.8", + "typed-array-buffer": "^1.0.2", + "typed-array-byte-length": "^1.0.1", + "typed-array-byte-offset": "^1.0.2", + "typed-array-length": "^1.0.6", "unbox-primitive": "^1.0.2", - "which-typed-array": "^1.1.14" + "which-typed-array": "^1.1.15" }, "engines": { "node": ">= 0.4" @@ -7423,12 +7583,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/es-array-method-boxes-properly": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/es-array-method-boxes-properly/-/es-array-method-boxes-properly-1.0.0.tgz", - "integrity": "sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA==", - "dev": true - }, "node_modules/es-define-property": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", @@ -7450,6 +7604,18 @@ "node": ">= 0.4" } }, + "node_modules/es-object-atoms": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.0.0.tgz", + "integrity": "sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==", + "dev": true, + "dependencies": { + "es-errors": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/es-set-tostringtag": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.3.tgz", @@ -7567,16 +7733,16 @@ } }, "node_modules/eslint": { - "version": "8.56.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.56.0.tgz", - "integrity": "sha512-Go19xM6T9puCOWntie1/P997aXxFsOi37JIHRWI514Hc6ZnaHGKY9xFhrU65RT6CcBEzZoGG1e6Nq+DT04ZtZQ==", + "version": "8.57.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.0.tgz", + "integrity": "sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==", "dev": true, "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.6.1", "@eslint/eslintrc": "^2.1.4", - "@eslint/js": "8.56.0", - "@humanwhocodes/config-array": "^0.11.13", + "@eslint/js": "8.57.0", + "@humanwhocodes/config-array": "^0.11.14", "@humanwhocodes/module-importer": "^1.0.1", "@nodelib/fs.walk": "^1.2.8", "@ungap/structured-clone": "^1.2.0", @@ -7642,6 +7808,8 @@ }, "node_modules/eslint-config-airbnb-typescript": { "version": "17.1.0", + "resolved": "https://registry.npmjs.org/eslint-config-airbnb-typescript/-/eslint-config-airbnb-typescript-17.1.0.tgz", + "integrity": "sha512-GPxI5URre6dDpJ0CtcthSZVBAfI+Uw7un5OYNVxP2EYi3H81Jw701yFP7AU+/vCE7xBtFmjge7kfhhk4+RAiig==", "dev": true, "dependencies": { "eslint-config-airbnb-base": "^15.0.0" @@ -7686,9 +7854,9 @@ } }, "node_modules/eslint-module-utils": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.8.0.tgz", - "integrity": "sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==", + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.8.1.tgz", + "integrity": "sha512-rXDXR3h7cs7dy9RNpUlQf80nX31XWJEyGq1tRMo+6GsO5VmTe4UTwtmonAD4ZkAsrfMVDA2wlGJ3790Ys+D49Q==", "dev": true, "dependencies": { "debug": "^3.2.7" @@ -7712,7 +7880,9 @@ } }, "node_modules/eslint-plugin-import": { - "version": "2.29.0", + "version": "2.29.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.29.1.tgz", + "integrity": "sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw==", "dev": true, "dependencies": { "array-includes": "^3.1.7", @@ -7731,7 +7901,7 @@ "object.groupby": "^1.0.1", "object.values": "^1.1.7", "semver": "^6.3.1", - "tsconfig-paths": "^3.14.2" + "tsconfig-paths": "^3.15.0" }, "engines": { "node": ">=4" @@ -7954,8 +8124,9 @@ }, "node_modules/eslint/node_modules/json-schema-traverse": { "version": "0.4.1", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true }, "node_modules/eslint/node_modules/minimatch": { "version": "3.1.2", @@ -8066,8 +8237,9 @@ }, "node_modules/eventemitter3": { "version": "5.0.1", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.1.tgz", + "integrity": "sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==", + "dev": true }, "node_modules/execa": { "version": "5.1.1", @@ -8094,8 +8266,9 @@ }, "node_modules/execa/node_modules/get-stream": { "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", "dev": true, - "license": "MIT", "engines": { "node": ">=10" }, @@ -8142,6 +8315,8 @@ }, "node_modules/fast-glob": { "version": "3.3.2", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", + "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", "dev": true, "dependencies": { "@nodelib/fs.stat": "^2.0.2", @@ -8156,8 +8331,9 @@ }, "node_modules/fast-glob/node_modules/glob-parent": { "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", "dev": true, - "license": "ISC", "dependencies": { "is-glob": "^4.0.1" }, @@ -8196,9 +8372,9 @@ } }, "node_modules/fetch-cookie": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/fetch-cookie/-/fetch-cookie-3.0.0.tgz", - "integrity": "sha512-Pfh55Pm/f8pWRTtAHwh+072HhE6mao8+6SNzyf2711DOIwUIKc8EVvynYQKBSHCh8syXlM2tnPXpYuWLNfN2xw==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/fetch-cookie/-/fetch-cookie-3.0.1.tgz", + "integrity": "sha512-ZGXe8Y5Z/1FWqQ9q/CrJhkUD73DyBU9VF0hBQmEO/wPHe4A9PKTjplFDLeFX8aOsYypZUcX5Ji/eByn3VCVO3Q==", "dependencies": { "set-cookie-parser": "^2.4.8", "tough-cookie": "^4.0.0" @@ -8211,7 +8387,9 @@ "dev": true }, "node_modules/figures": { - "version": "6.0.1", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-6.1.0.tgz", + "integrity": "sha512-d+l3qxjSesT4V7v2fh+QnmFnUWv9lSpjarhShNTgBOfA0ttejbQUAlHLitbjkoRiDulW0OPoQPYIGhIC8ohejg==", "dev": true, "dependencies": { "is-unicode-supported": "^2.0.0" @@ -8261,6 +8439,8 @@ }, "node_modules/find-up": { "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", "dev": true, "dependencies": { "locate-path": "^6.0.0", @@ -8275,6 +8455,8 @@ }, "node_modules/find-up-simple": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/find-up-simple/-/find-up-simple-1.0.0.tgz", + "integrity": "sha512-q7Us7kcjj2VMePAa02hDAF6d+MzsdsAWEwYyOpwUtlerRBkOEPBCRZrAV4XfcSN8fHAgaD0hP7miwoay6DCprw==", "dev": true, "engines": { "node": ">=18" @@ -8285,6 +8467,8 @@ }, "node_modules/find-versions": { "version": "5.1.0", + "resolved": "https://registry.npmjs.org/find-versions/-/find-versions-5.1.0.tgz", + "integrity": "sha512-+iwzCJ7C5v5KgcBuueqVoNiHVoQpwiUK5XFLjf0affFTep+Wcw93tPvmb8tqujDNmzhBDPddnWV/qgWSXgq+Hg==", "dev": true, "dependencies": { "semver-regex": "^4.0.5" @@ -8298,6 +8482,8 @@ }, "node_modules/flat-cache": { "version": "3.2.0", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz", + "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==", "dev": true, "dependencies": { "flatted": "^3.2.9", @@ -8309,9 +8495,9 @@ } }, "node_modules/flatted": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.0.tgz", - "integrity": "sha512-noqGuLw158+DuD9UPRKHpJ2hGxpFyDlYYrfM0mWt4XhT4n0lwzTLh70Tkdyy4kyTmyTT9Bv7bWAJqw7cgkEXDg==", + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.1.tgz", + "integrity": "sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==", "dev": true }, "node_modules/for-each": { @@ -8509,6 +8695,8 @@ }, "node_modules/get-stream": { "version": "7.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-7.0.1.tgz", + "integrity": "sha512-3M8C1EOFN6r8AMUhwUAACIoXZJEOufDU5+0gFFN5uNs6XYOralD2Pqkl7m046va6x77FwposWXbAhPPIOus7mQ==", "dev": true, "engines": { "node": ">=16" @@ -8536,6 +8724,8 @@ }, "node_modules/git-log-parser": { "version": "1.2.0", + "resolved": "https://registry.npmjs.org/git-log-parser/-/git-log-parser-1.2.0.tgz", + "integrity": "sha512-rnCVNfkTL8tdNryFuaY0fYiBWEBcgF748O6ZI61rslBvr2o7U65c2/6npCRqH40vuAhtgtDiqLTJjBVdrejCzA==", "dev": true, "dependencies": { "argv-formatter": "~1.0.0", @@ -8548,6 +8738,8 @@ }, "node_modules/git-log-parser/node_modules/split2": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/split2/-/split2-1.0.0.tgz", + "integrity": "sha512-NKywug4u4pX/AZBB1FCPzZ6/7O+Xhz1qMVbzTvvKvikjO99oPN87SkK08mEY9P63/5lWjK+wgOOgApnTg5r6qg==", "dev": true, "dependencies": { "through2": "~2.0.0" @@ -8555,6 +8747,8 @@ }, "node_modules/git-log-parser/node_modules/through2": { "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", "dev": true, "dependencies": { "readable-stream": "~2.3.6", @@ -8860,6 +9054,8 @@ }, "node_modules/glob-parent": { "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", "dev": true, "dependencies": { "is-glob": "^4.0.3" @@ -8960,7 +9156,8 @@ }, "node_modules/graceful-fs": { "version": "4.2.11", - "license": "ISC" + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==" }, "node_modules/graphemer": { "version": "1.4.0", @@ -9068,9 +9265,9 @@ } }, "node_modules/hasown": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.1.tgz", - "integrity": "sha512-1/th4MHjnwncwXsIW6QMzlvYL9kG5e/CpVvLRZe4XPa8TOUNbCELqmvhDmnkNsAjwaG4+I8gJJL0JBvTTLO9qA==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", "dev": true, "dependencies": { "function-bind": "^1.1.2" @@ -9090,6 +9287,8 @@ }, "node_modules/hook-std": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/hook-std/-/hook-std-3.0.0.tgz", + "integrity": "sha512-jHRQzjSDzMtFy34AGj1DN+vq54WVuhSvKgrHf0OMiFQTwDD4L/qqofVEWjLOBMTn5+lCD3fPg32W9yOfnEJTTw==", "dev": true, "engines": { "node": "^12.20.0 || ^14.13.1 || >=16.0.0" @@ -9192,7 +9391,7 @@ "version": "0.6.3", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", - "devOptional": true, + "dev": true, "dependencies": { "safer-buffer": ">= 2.1.2 < 3.0.0" }, @@ -9201,7 +9400,9 @@ } }, "node_modules/ignore": { - "version": "5.3.0", + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.1.tgz", + "integrity": "sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==", "dev": true, "engines": { "node": ">= 4" @@ -9233,7 +9434,9 @@ } }, "node_modules/import-from-esm": { - "version": "1.3.1", + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/import-from-esm/-/import-from-esm-1.3.3.tgz", + "integrity": "sha512-U3Qt/CyfFpTUv6LOP2jRTLYjphH6zg3okMfHbyqRa/W2w6hr8OsJWVggNlR4jxuojQy81TgTJTxgSkyoteRGMQ==", "dev": true, "dependencies": { "debug": "^4.3.4", @@ -9264,6 +9467,8 @@ }, "node_modules/import-meta-resolve": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/import-meta-resolve/-/import-meta-resolve-4.0.0.tgz", + "integrity": "sha512-okYUR7ZQPH+efeuMJGlq4f8ubUgO50kByRPyt/Cy1Io4PSRsPjxME+YlVaCOx+NIToW7hCsZNFJyTPFFKepRSA==", "dev": true, "funding": { "type": "github", @@ -9480,6 +9685,8 @@ }, "node_modules/index-to-position": { "version": "0.1.2", + "resolved": "https://registry.npmjs.org/index-to-position/-/index-to-position-0.1.2.tgz", + "integrity": "sha512-MWDKS3AS1bGCHLBA2VLImJz42f7bJh8wQsTGCzI3j519/CASStoDONUBVz2I/VID0MpiX3SGSnbOD2xUalbE5g==", "dev": true, "engines": { "node": ">=18" @@ -9641,6 +9848,21 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-data-view": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.1.tgz", + "integrity": "sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==", + "dev": true, + "dependencies": { + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-date-object": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", @@ -9766,7 +9988,6 @@ "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", "integrity": "sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -9794,12 +10015,15 @@ } }, "node_modules/is-shared-array-buffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", - "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.3.tgz", + "integrity": "sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==", "dev": true, "dependencies": { - "call-bind": "^1.0.2" + "call-bind": "^1.0.7" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -9876,6 +10100,8 @@ }, "node_modules/is-unicode-supported": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-2.0.0.tgz", + "integrity": "sha512-FRdAyx5lusK1iHG0TWpVtk9+1i+GjrzRffhDg4ovQ7mcidMQ6mj+MhKPmvh7Xwyv5gIS06ns49CA7Sqg7lC22Q==", "dev": true, "engines": { "node": ">=18" @@ -9935,6 +10161,8 @@ }, "node_modules/istanbul-lib-coverage": { "version": "3.2.2", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz", + "integrity": "sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==", "dev": true, "engines": { "node": ">=8" @@ -10071,6 +10299,8 @@ }, "node_modules/java-properties": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/java-properties/-/java-properties-1.0.2.tgz", + "integrity": "sha512-qjdpeo2yKlYTH7nFdK0vbZWuTCesk4o63v5iVOlhMQPfuIZQfW/HI35SjfhA+4qpg36rnFSvUK5b1m+ckIblQQ==", "dev": true, "engines": { "node": ">= 0.6.0" @@ -10078,6 +10308,8 @@ }, "node_modules/jest": { "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest/-/jest-29.7.0.tgz", + "integrity": "sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==", "dev": true, "dependencies": { "@jest/core": "^29.7.0", @@ -10205,6 +10437,8 @@ }, "node_modules/jest-circus/node_modules/supports-color": { "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, "dependencies": { "has-flag": "^4.0.0" @@ -10215,8 +10449,9 @@ }, "node_modules/jest-cli": { "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-29.7.0.tgz", + "integrity": "sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg==", "dev": true, - "license": "MIT", "dependencies": { "@jest/core": "^29.7.0", "@jest/test-result": "^29.7.0", @@ -10247,8 +10482,9 @@ }, "node_modules/jest-cli/node_modules/ansi-styles": { "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, - "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -10261,8 +10497,9 @@ }, "node_modules/jest-cli/node_modules/chalk": { "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, - "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -10276,8 +10513,9 @@ }, "node_modules/jest-cli/node_modules/color-convert": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, - "license": "MIT", "dependencies": { "color-name": "~1.1.4" }, @@ -10287,19 +10525,23 @@ }, "node_modules/jest-cli/node_modules/color-name": { "version": "1.1.4", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true }, "node_modules/jest-cli/node_modules/has-flag": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/jest-cli/node_modules/supports-color": { "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, "dependencies": { "has-flag": "^4.0.0" @@ -10608,6 +10850,8 @@ }, "node_modules/jest-environment-jsdom": { "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-29.7.0.tgz", + "integrity": "sha512-k9iQbsf9OyOfdzWH8HDmrRT0gSIcX+FLNW7IQq94tFX0gynPwqDTW0Ho6iMVNjGz/nb+l/vW3dWM2bbLLpkbXA==", "dev": true, "dependencies": { "@jest/environment": "^29.7.0", @@ -11367,7 +11611,6 @@ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" } @@ -11915,8 +12158,9 @@ }, "node_modules/jsesc": { "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", "dev": true, - "license": "MIT", "bin": { "jsesc": "bin/jsesc" }, @@ -11962,8 +12206,9 @@ }, "node_modules/json5": { "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", "dev": true, - "license": "MIT", "bin": { "json5": "lib/cli.js" }, @@ -12106,6 +12351,8 @@ }, "node_modules/lint-staged/node_modules/chalk": { "version": "5.3.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz", + "integrity": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==", "dev": true, "engines": { "node": "^12.17.0 || ^14.13 || >=16.0.0" @@ -12142,7 +12389,6 @@ "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-8.0.1.tgz", "integrity": "sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==", "dev": true, - "license": "MIT", "engines": { "node": ">=16" }, @@ -12184,9 +12430,9 @@ } }, "node_modules/lint-staged/node_modules/npm-run-path": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.2.0.tgz", - "integrity": "sha512-W4/tgAXFqFA0iL7fk0+uQ3g7wkL8xJmx3XdK0VGb4cHW//eZTtKGvFBBoRKVTpY7n6ze4NL9ly7rgXcHufqXKg==", + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.3.0.tgz", + "integrity": "sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==", "dev": true, "dependencies": { "path-key": "^4.0.0" @@ -12268,6 +12514,8 @@ }, "node_modules/load-json-file": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", + "integrity": "sha512-Kx8hMakjX03tiGTLAIdJ+lL0htKnXjEZN6hk/tozf/WOuYGdZBJrZ+rCJRbVCugsjB3jMLn9746NsQIf5VjBMw==", "dev": true, "dependencies": { "graceful-fs": "^4.1.2", @@ -12281,6 +12529,8 @@ }, "node_modules/load-json-file/node_modules/parse-json": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==", "dev": true, "dependencies": { "error-ex": "^1.3.1", @@ -12292,6 +12542,8 @@ }, "node_modules/load-json-file/node_modules/strip-bom": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", "dev": true, "engines": { "node": ">=4" @@ -12308,6 +12560,8 @@ }, "node_modules/locate-path": { "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", "dev": true, "dependencies": { "p-locate": "^5.0.0" @@ -12447,14 +12701,10 @@ } }, "node_modules/log-update/node_modules/ansi-escapes": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-6.2.0.tgz", - "integrity": "sha512-kzRaCqXnpzWs+3z5ABPQiVke+iq0KXkHo8xiWV4RPTi5Yli0l97BEQuhXV1s7+aSU/fu1kUuxgS4MsQ0fRuygw==", + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-6.2.1.tgz", + "integrity": "sha512-4nJ3yixlEthEJ9Rk4vPcdBRkZvQZlYyu8j4/Mqz5sgIkddmEnH2Yj2ZrnP9S3tQOvSNRUIgVNF/1yPpRAGNRig==", "dev": true, - "license": "MIT", - "dependencies": { - "type-fest": "^3.0.0" - }, "engines": { "node": ">=14.16" }, @@ -12464,8 +12714,9 @@ }, "node_modules/log-update/node_modules/ansi-regex": { "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", "dev": true, - "license": "MIT", "engines": { "node": ">=12" }, @@ -12518,29 +12769,17 @@ }, "node_modules/log-update/node_modules/strip-ansi": { "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", "dev": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^6.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" - } - }, - "node_modules/log-update/node_modules/type-fest": { - "version": "3.13.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-3.13.1.tgz", - "integrity": "sha512-tLq3bSNx+xSpwvAJnzrK0Ep5CLNWjvFTOp71URMaAEWBfRb9nnJiBoUe0tF8bI4ZFO3omgBR6NvnbzVUT3Ly4g==", - "dev": true, - "license": "(MIT OR CC0-1.0)", + "dependencies": { + "ansi-regex": "^6.0.1" + }, "engines": { - "node": ">=14.16" + "node": ">=12" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/chalk/strip-ansi?sponsor=1" } }, "node_modules/lossless-json": { @@ -12611,14 +12850,6 @@ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", "dev": true }, - "node_modules/make-error": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", - "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", - "dev": true, - "optional": true, - "peer": true - }, "node_modules/makeerror": { "version": "1.0.12", "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz", @@ -12641,9 +12872,9 @@ } }, "node_modules/marked": { - "version": "12.0.0", - "resolved": "https://registry.npmjs.org/marked/-/marked-12.0.0.tgz", - "integrity": "sha512-Vkwtq9rLqXryZnWaQc86+FHLC6tr/fycMfYAhiOIXkrNmeGAyhSxjqu0Rs1i0bBqw5u0S7+lV9fdH2ZSVaoa0w==", + "version": "12.0.1", + "resolved": "https://registry.npmjs.org/marked/-/marked-12.0.1.tgz", + "integrity": "sha512-Y1/V2yafOcOdWQCX0XpAKXzDakPOpn6U0YLxTJs3cww6VxOzZV1BTOOYWLvH3gX38cq+iLwljHHTnMtlDfg01Q==", "dev": true, "bin": { "marked": "bin/marked.js" @@ -12673,11 +12904,10 @@ } }, "node_modules/marked-terminal/node_modules/ansi-escapes": { - "version": "6.2.0", + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-6.2.1.tgz", + "integrity": "sha512-4nJ3yixlEthEJ9Rk4vPcdBRkZvQZlYyu8j4/Mqz5sgIkddmEnH2Yj2ZrnP9S3tQOvSNRUIgVNF/1yPpRAGNRig==", "dev": true, - "dependencies": { - "type-fest": "^3.0.0" - }, "engines": { "node": ">=14.16" }, @@ -12687,6 +12917,8 @@ }, "node_modules/marked-terminal/node_modules/chalk": { "version": "5.3.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz", + "integrity": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==", "dev": true, "engines": { "node": "^12.17.0 || ^14.13 || >=16.0.0" @@ -12695,22 +12927,11 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/marked-terminal/node_modules/type-fest": { - "version": "3.13.1", - "dev": true, - "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/meow": { "version": "12.1.1", "resolved": "https://registry.npmjs.org/meow/-/meow-12.1.1.tgz", "integrity": "sha512-BhXM0Au22RwUneMPwSCnyhTOizdWoIEPU9sp0Aqa1PnDMR5Wv2FGXYDjuzJEIX+Eo2Rb8xuYe5jrnm5QowQFkw==", "dev": true, - "license": "(MIT OR CC0-1.0)", "engines": { "node": ">=16.10" }, @@ -13005,9 +13226,9 @@ } }, "node_modules/normalize-url": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-8.0.0.tgz", - "integrity": "sha512-uVFpKhj5MheNBJRTiMZ9pE/7hD1QTeEvugSJW/OmLzAp78PB5O6adfMNTvmfKhXBkvCzC+rqifWcVYpGFwTjnw==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-8.0.1.tgz", + "integrity": "sha512-IO9QvjUMWxPQQhs60oOu10CRkWCiZzSUkzbXGGV9pviYl1fXYcvkzQ5jV9z8Y6un8ARoVRl4EtC6v6jNqbaJ/w==", "dev": true, "engines": { "node": ">=14.16" @@ -15845,27 +16066,29 @@ } }, "node_modules/object.entries": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.7.tgz", - "integrity": "sha512-jCBs/0plmPsOnrKAfFQXRG2NFjlhZgjjcBLSmTnEhU8U6vVTsVe8ANeQJCHTl3gSsI4J+0emOoCgoKlmQPMgmA==", + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.8.tgz", + "integrity": "sha512-cmopxi8VwRIAw/fkijJohSfpef5PdN0pMQJN6VC/ZKvn0LIknWD8KtgY6KlQdEc4tIjcQ3HxSMmnvtzIscdaYQ==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1" + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" }, "engines": { "node": ">= 0.4" } }, "node_modules/object.fromentries": { - "version": "2.0.7", + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.8.tgz", + "integrity": "sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==", "dev": true, - "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1" + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-object-atoms": "^1.0.0" }, "engines": { "node": ">= 0.4" @@ -15875,28 +16098,28 @@ } }, "node_modules/object.groupby": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/object.groupby/-/object.groupby-1.0.2.tgz", - "integrity": "sha512-bzBq58S+x+uo0VjurFT0UktpKHOZmv4/xePiOA1nbB9pMqpGK7rUPNgf+1YC+7mE+0HzhTMqNUuCqvKhj6FnBw==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/object.groupby/-/object.groupby-1.0.3.tgz", + "integrity": "sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==", "dev": true, - "license": "MIT", "dependencies": { - "array.prototype.filter": "^1.0.3", - "call-bind": "^1.0.5", + "call-bind": "^1.0.7", "define-properties": "^1.2.1", - "es-abstract": "^1.22.3", - "es-errors": "^1.0.0" + "es-abstract": "^1.23.2" + }, + "engines": { + "node": ">= 0.4" } }, "node_modules/object.values": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.7.tgz", - "integrity": "sha512-aU6xnDFYT3x17e/f0IiiwlGPTy2jzMySGfUB4fq6z7CV8l85CWHDk5ErhyhpfDHhrOMwGFhSQkhMGHaIotA6Ng==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.2.0.tgz", + "integrity": "sha512-yBYjY9QX2hnRmZHAjG/f13MzmBzxzYgQhFrke06TTyKY5zSTEqkOeukBzIdVA3j3ulu8Qa3MbVFShV7T2RmGtQ==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1" + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" }, "engines": { "node": ">= 0.4" @@ -15948,6 +16171,8 @@ }, "node_modules/p-each-series": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-each-series/-/p-each-series-3.0.0.tgz", + "integrity": "sha512-lastgtAdoH9YaLyDa5i5z64q+kzOcQHsQ5SsZJD3q0VEyI8mq872S3geuNbRUQLVAE9siMfgKrpj7MloKFHruw==", "dev": true, "engines": { "node": ">=12" @@ -15982,6 +16207,8 @@ }, "node_modules/p-limit": { "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", "dev": true, "dependencies": { "yocto-queue": "^0.1.0" @@ -15995,8 +16222,9 @@ }, "node_modules/p-locate": { "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", "dev": true, - "license": "MIT", "dependencies": { "p-limit": "^3.0.2" }, @@ -16133,12 +16361,12 @@ "dev": true }, "node_modules/path-scurry": { - "version": "1.10.1", - "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.10.1.tgz", - "integrity": "sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==", + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.10.2.tgz", + "integrity": "sha512-7xTavNy5RQXnsjANvVvMkEjvloOinkAjv/Z6Ildz9v2RinZ4SBKTWFOVRbaF8p0vpHnyjV/UwNDdKuUv6M5qcA==", "dev": true, "dependencies": { - "lru-cache": "^9.1.1 || ^10.0.0", + "lru-cache": "^10.2.0", "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" }, "engines": { @@ -16198,6 +16426,8 @@ }, "node_modules/pify": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==", "dev": true, "engines": { "node": ">=4" @@ -16214,6 +16444,8 @@ }, "node_modules/pkg-conf": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/pkg-conf/-/pkg-conf-2.1.0.tgz", + "integrity": "sha512-C+VUP+8jis7EsQZIhDYmS5qlNtjv2yP4SNtjXK9AP1ZcTRlnSfuumaTnRfYZnYgUUYVIKqL0fRvmUGDV2fmp6g==", "dev": true, "dependencies": { "find-up": "^2.0.0", @@ -16225,6 +16457,8 @@ }, "node_modules/pkg-conf/node_modules/find-up": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ==", "dev": true, "dependencies": { "locate-path": "^2.0.0" @@ -16235,6 +16469,8 @@ }, "node_modules/pkg-conf/node_modules/locate-path": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA==", "dev": true, "dependencies": { "p-locate": "^2.0.0", @@ -16246,6 +16482,8 @@ }, "node_modules/pkg-conf/node_modules/p-limit": { "version": "1.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", "dev": true, "dependencies": { "p-try": "^1.0.0" @@ -16256,6 +16494,8 @@ }, "node_modules/pkg-conf/node_modules/p-locate": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg==", "dev": true, "dependencies": { "p-limit": "^1.1.0" @@ -16266,6 +16506,8 @@ }, "node_modules/pkg-conf/node_modules/p-try": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww==", "dev": true, "engines": { "node": ">=4" @@ -16273,6 +16515,8 @@ }, "node_modules/pkg-conf/node_modules/path-exists": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", "dev": true, "engines": { "node": ">=4" @@ -16292,8 +16536,9 @@ }, "node_modules/pkg-dir/node_modules/find-up": { "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", "dev": true, - "license": "MIT", "dependencies": { "locate-path": "^5.0.0", "path-exists": "^4.0.0" @@ -16304,8 +16549,9 @@ }, "node_modules/pkg-dir/node_modules/locate-path": { "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", "dev": true, - "license": "MIT", "dependencies": { "p-locate": "^4.1.0" }, @@ -16315,8 +16561,9 @@ }, "node_modules/pkg-dir/node_modules/p-limit": { "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", "dev": true, - "license": "MIT", "dependencies": { "p-try": "^2.0.0" }, @@ -16329,8 +16576,9 @@ }, "node_modules/pkg-dir/node_modules/p-locate": { "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", "dev": true, - "license": "MIT", "dependencies": { "p-limit": "^2.2.0" }, @@ -16491,15 +16739,16 @@ }, "node_modules/punycode": { "version": "2.3.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", "engines": { "node": ">=6" } }, "node_modules/pure-rand": { - "version": "6.0.4", - "resolved": "https://registry.npmjs.org/pure-rand/-/pure-rand-6.0.4.tgz", - "integrity": "sha512-LA0Y9kxMYv47GIPJy6MI84fqTd2HmYZI83W/kM/SkKfDlajnZYfmXFTxkbY+xSBPkLJxltMa9hIkmdc29eguMA==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/pure-rand/-/pure-rand-6.1.0.tgz", + "integrity": "sha512-bVWawvoZoBYpp6yIoQtQXHZjmz35RSVHnUOTefl8Vcjr8snTPY1wnpSPMWekcFwbxI6gtmT7rSYPFvz71ldiOA==", "dev": true, "funding": [ { @@ -16563,23 +16812,24 @@ }, "node_modules/rc/node_modules/strip-json-comments": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/react-is": { "version": "18.2.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", + "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", + "dev": true }, "node_modules/read-pkg": { "version": "9.0.1", "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-9.0.1.tgz", "integrity": "sha512-9viLL4/n1BJUCT1NXVTdS1jtm80yDEgR5T4yCelII49Mbj0v1rZdKqj7zCiYdbB0CuCgdrvHcNogAKTFPBocFA==", "dev": true, - "license": "MIT", "dependencies": { "@types/normalize-package-data": "^2.4.3", "normalize-package-data": "^6.0.0", @@ -16613,9 +16863,10 @@ } }, "node_modules/read-pkg-up/node_modules/type-fest": { - "version": "4.8.0", + "version": "4.14.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.14.0.tgz", + "integrity": "sha512-on5/Cw89wwqGZQu+yWO0gGMGu8VNxsaW9SB2HE8yJjllEk7IDTwnSN1dUVldYILhYPN5HzD7WAaw2cc/jBfn0Q==", "dev": true, - "license": "(MIT OR CC0-1.0)", "engines": { "node": ">=16" }, @@ -16628,7 +16879,6 @@ "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-8.1.0.tgz", "integrity": "sha512-rum1bPifK5SSar35Z6EKZuYPJx85pkNaFrxBK3mwdfSJ1/WKbYrjoW/zTPSjRRamfmVX1ACBIdFAO0VRErW/EA==", "dev": true, - "license": "MIT", "dependencies": { "@babel/code-frame": "^7.22.13", "index-to-position": "^0.1.2", @@ -16642,9 +16892,10 @@ } }, "node_modules/read-pkg/node_modules/type-fest": { - "version": "4.8.0", + "version": "4.14.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.14.0.tgz", + "integrity": "sha512-on5/Cw89wwqGZQu+yWO0gGMGu8VNxsaW9SB2HE8yJjllEk7IDTwnSN1dUVldYILhYPN5HzD7WAaw2cc/jBfn0Q==", "dev": true, - "license": "(MIT OR CC0-1.0)", "engines": { "node": ">=16" }, @@ -16654,8 +16905,9 @@ }, "node_modules/readable-stream": { "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", "dev": true, - "license": "MIT", "dependencies": { "core-util-is": "~1.0.0", "inherits": "~2.0.3", @@ -16693,7 +16945,8 @@ }, "node_modules/redeyed": { "version": "2.1.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/redeyed/-/redeyed-2.1.1.tgz", + "integrity": "sha512-FNpGGo1DycYAdnrKFxCMmKYgo/mILAqtRYbkdQD8Ep/Hk2PQ5+aEAEx+IU713RTDmuBaH0c8P5ZozurNu5ObRQ==", "dependencies": { "esprima": "~4.0.0" } @@ -16792,6 +17045,8 @@ }, "node_modules/regjsparser/node_modules/jsesc": { "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==", "dev": true, "bin": { "jsesc": "bin/jsesc" @@ -16880,6 +17135,8 @@ }, "node_modules/restore-cursor": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-4.0.0.tgz", + "integrity": "sha512-I9fPXU9geO9bHOt9pHHOhOkYerIMsmVaWB0rA2AI9ERh/+x/i7MV5HKBNrg+ljO5eoPVgCcnFuRjJ9uH6I/3eg==", "dev": true, "dependencies": { "onetime": "^5.1.0", @@ -16924,9 +17181,9 @@ } }, "node_modules/rollup": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.12.0.tgz", - "integrity": "sha512-wz66wn4t1OHIJw3+XU7mJJQV/2NAfw5OAk6G6Hoo3zcvz/XOfQ52Vgi+AN4Uxoxi0KBBwk2g8zPrTDA4btSB/Q==", + "version": "4.13.2", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.13.2.tgz", + "integrity": "sha512-MIlLgsdMprDBXC+4hsPgzWUasLO9CE4zOkj/u6j+Z6j5A4zRY+CtiXAdJyPtgCsc42g658Aeh1DlrdVEJhsL2g==", "dev": true, "dependencies": { "@types/estree": "1.0.5" @@ -16939,19 +17196,21 @@ "npm": ">=8.0.0" }, "optionalDependencies": { - "@rollup/rollup-android-arm-eabi": "4.12.0", - "@rollup/rollup-android-arm64": "4.12.0", - "@rollup/rollup-darwin-arm64": "4.12.0", - "@rollup/rollup-darwin-x64": "4.12.0", - "@rollup/rollup-linux-arm-gnueabihf": "4.12.0", - "@rollup/rollup-linux-arm64-gnu": "4.12.0", - "@rollup/rollup-linux-arm64-musl": "4.12.0", - "@rollup/rollup-linux-riscv64-gnu": "4.12.0", - "@rollup/rollup-linux-x64-gnu": "4.12.0", - "@rollup/rollup-linux-x64-musl": "4.12.0", - "@rollup/rollup-win32-arm64-msvc": "4.12.0", - "@rollup/rollup-win32-ia32-msvc": "4.12.0", - "@rollup/rollup-win32-x64-msvc": "4.12.0", + "@rollup/rollup-android-arm-eabi": "4.13.2", + "@rollup/rollup-android-arm64": "4.13.2", + "@rollup/rollup-darwin-arm64": "4.13.2", + "@rollup/rollup-darwin-x64": "4.13.2", + "@rollup/rollup-linux-arm-gnueabihf": "4.13.2", + "@rollup/rollup-linux-arm64-gnu": "4.13.2", + "@rollup/rollup-linux-arm64-musl": "4.13.2", + "@rollup/rollup-linux-powerpc64le-gnu": "4.13.2", + "@rollup/rollup-linux-riscv64-gnu": "4.13.2", + "@rollup/rollup-linux-s390x-gnu": "4.13.2", + "@rollup/rollup-linux-x64-gnu": "4.13.2", + "@rollup/rollup-linux-x64-musl": "4.13.2", + "@rollup/rollup-win32-arm64-msvc": "4.13.2", + "@rollup/rollup-win32-ia32-msvc": "4.13.2", + "@rollup/rollup-win32-x64-msvc": "4.13.2", "fsevents": "~2.3.2" } }, @@ -16979,13 +17238,13 @@ } }, "node_modules/safe-array-concat": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.0.tgz", - "integrity": "sha512-ZdQ0Jeb9Ofti4hbt5lX3T2JcAamT9hfzYU1MNB+z/jaEbB6wfFfPIR/zEORmZqobkCCJhSjodobH6WHNmJ97dg==", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.2.tgz", + "integrity": "sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==", "dev": true, "dependencies": { - "call-bind": "^1.0.5", - "get-intrinsic": "^1.2.2", + "call-bind": "^1.0.7", + "get-intrinsic": "^1.2.4", "has-symbols": "^1.0.3", "isarray": "^2.0.5" }, @@ -17004,8 +17263,9 @@ }, "node_modules/safe-buffer": { "version": "5.1.2", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true }, "node_modules/safe-regex-test": { "version": "1.0.3", @@ -17028,7 +17288,7 @@ "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "devOptional": true + "dev": true }, "node_modules/saxes": { "version": "6.0.0", @@ -17043,16 +17303,16 @@ } }, "node_modules/semantic-release": { - "version": "23.0.5", - "resolved": "https://registry.npmjs.org/semantic-release/-/semantic-release-23.0.5.tgz", - "integrity": "sha512-4eZG/vRTV8E7rw5oHPv2Fht5qx6ITemE/b1vzG42ayYVcffJqXYy40nP4bHEPWX1/kleJWWrlPVDt1hSYVlpKQ==", + "version": "23.0.6", + "resolved": "https://registry.npmjs.org/semantic-release/-/semantic-release-23.0.6.tgz", + "integrity": "sha512-/r62F4PNhJZhyZYMobcpcACGwpFNQyaVcSmqZQXG50GMbHSBVZQLCvwafqxO1lDQKVgmGmyCEtOVYzwvzvyhVw==", "dev": true, "dependencies": { "@semantic-release/commit-analyzer": "^12.0.0", "@semantic-release/error": "^4.0.0", "@semantic-release/github": "^10.0.0", "@semantic-release/npm": "^12.0.0", - "@semantic-release/release-notes-generator": "^12.0.0", + "@semantic-release/release-notes-generator": "^13.0.0", "aggregate-error": "^5.0.0", "cosmiconfig": "^9.0.0", "debug": "^4.0.0", @@ -17108,6 +17368,8 @@ }, "node_modules/semantic-release/node_modules/@semantic-release/error": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@semantic-release/error/-/error-4.0.0.tgz", + "integrity": "sha512-mgdxrHTLOjOddRVYIYDo0fR3/v61GNN1YGkfbrjuIKg/uMgCd+Qzo3UAXJ+woLQQpos4pl5Esuw5A7AoNlzjUQ==", "dev": true, "engines": { "node": ">=18" @@ -17140,8 +17402,46 @@ "semantic-release": ">=20.1.0" } }, + "node_modules/semantic-release/node_modules/@semantic-release/release-notes-generator": { + "version": "13.0.0", + "resolved": "https://registry.npmjs.org/@semantic-release/release-notes-generator/-/release-notes-generator-13.0.0.tgz", + "integrity": "sha512-LEeZWb340keMYuREMyxrODPXJJ0JOL8D/mCl74B4LdzbxhtXV2LrPN2QBEcGJrlQhoqLO0RhxQb6masHytKw+A==", + "dev": true, + "dependencies": { + "conventional-changelog-angular": "^7.0.0", + "conventional-changelog-writer": "^7.0.0", + "conventional-commits-filter": "^4.0.0", + "conventional-commits-parser": "^5.0.0", + "debug": "^4.0.0", + "get-stream": "^7.0.0", + "import-from-esm": "^1.0.3", + "into-stream": "^7.0.0", + "lodash-es": "^4.17.21", + "read-pkg-up": "^11.0.0" + }, + "engines": { + "node": ">=20.8.1" + }, + "peerDependencies": { + "semantic-release": ">=20.1.0" + } + }, + "node_modules/semantic-release/node_modules/@semantic-release/release-notes-generator/node_modules/get-stream": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-7.0.1.tgz", + "integrity": "sha512-3M8C1EOFN6r8AMUhwUAACIoXZJEOufDU5+0gFFN5uNs6XYOralD2Pqkl7m046va6x77FwposWXbAhPPIOus7mQ==", + "dev": true, + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/semantic-release/node_modules/aggregate-error": { "version": "5.0.0", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-5.0.0.tgz", + "integrity": "sha512-gOsf2YwSlleG6IjRYG2A7k0HmBMEo6qVNk9Bp/EaLgAJT5ngH6PXbqa4ItvnEwCm/velL5jAnQgsHsWnjhGmvw==", "dev": true, "dependencies": { "clean-stack": "^5.2.0", @@ -17156,6 +17456,8 @@ }, "node_modules/semantic-release/node_modules/clean-stack": { "version": "5.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-5.2.0.tgz", + "integrity": "sha512-TyUIUJgdFnCISzG5zu3291TAsE77ddchd0bepon1VVQrKLGKFED4iXFEDQ24mIPdPBbyE16PK3F8MYE1CmcBEQ==", "dev": true, "dependencies": { "escape-string-regexp": "5.0.0" @@ -17193,32 +17495,10 @@ } } }, - "node_modules/semantic-release/node_modules/cosmiconfig/node_modules/json-parse-even-better-errors": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", - "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", - "dev": true - }, - "node_modules/semantic-release/node_modules/cosmiconfig/node_modules/parse-json": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", - "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.0.0", - "error-ex": "^1.3.1", - "json-parse-even-better-errors": "^2.3.0", - "lines-and-columns": "^1.1.6" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/semantic-release/node_modules/escape-string-regexp": { "version": "5.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz", + "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==", "dev": true, "engines": { "node": ">=12" @@ -17229,6 +17509,8 @@ }, "node_modules/semantic-release/node_modules/execa": { "version": "8.0.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-8.0.1.tgz", + "integrity": "sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==", "dev": true, "dependencies": { "cross-spawn": "^7.0.3", @@ -17250,6 +17532,8 @@ }, "node_modules/semantic-release/node_modules/execa/node_modules/get-stream": { "version": "8.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-8.0.1.tgz", + "integrity": "sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==", "dev": true, "engines": { "node": ">=16" @@ -17260,6 +17544,8 @@ }, "node_modules/semantic-release/node_modules/get-stream": { "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", "dev": true, "engines": { "node": ">=10" @@ -17270,6 +17556,8 @@ }, "node_modules/semantic-release/node_modules/human-signals": { "version": "5.0.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-5.0.0.tgz", + "integrity": "sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==", "dev": true, "engines": { "node": ">=16.17.0" @@ -17277,6 +17565,8 @@ }, "node_modules/semantic-release/node_modules/indent-string": { "version": "5.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-5.0.0.tgz", + "integrity": "sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg==", "dev": true, "engines": { "node": ">=12" @@ -17287,6 +17577,8 @@ }, "node_modules/semantic-release/node_modules/is-stream": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", + "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", "dev": true, "engines": { "node": "^12.20.0 || ^14.13.1 || >=16.0.0" @@ -17309,6 +17601,8 @@ }, "node_modules/semantic-release/node_modules/mimic-fn": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz", + "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==", "dev": true, "engines": { "node": ">=12" @@ -17318,7 +17612,9 @@ } }, "node_modules/semantic-release/node_modules/npm-run-path": { - "version": "5.1.0", + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.3.0.tgz", + "integrity": "sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==", "dev": true, "dependencies": { "path-key": "^4.0.0" @@ -17332,6 +17628,8 @@ }, "node_modules/semantic-release/node_modules/onetime": { "version": "6.0.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz", + "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==", "dev": true, "dependencies": { "mimic-fn": "^4.0.0" @@ -17345,6 +17643,8 @@ }, "node_modules/semantic-release/node_modules/p-reduce": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-reduce/-/p-reduce-3.0.0.tgz", + "integrity": "sha512-xsrIUgI0Kn6iyDYm9StOpOeK29XM1aboGji26+QEortiFST1hGZaUQOLhtEbqHErPpGW/aSz6allwK2qcptp0Q==", "dev": true, "engines": { "node": ">=12" @@ -17355,6 +17655,8 @@ }, "node_modules/semantic-release/node_modules/path-key": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", + "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", "dev": true, "engines": { "node": ">=12" @@ -17380,6 +17682,8 @@ }, "node_modules/semantic-release/node_modules/signal-exit": { "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", "dev": true, "engines": { "node": ">=14" @@ -17390,6 +17694,8 @@ }, "node_modules/semantic-release/node_modules/strip-final-newline": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz", + "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==", "dev": true, "engines": { "node": ">=12" @@ -17415,6 +17721,8 @@ }, "node_modules/semver-diff": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-4.0.0.tgz", + "integrity": "sha512-0Ju4+6A8iOnpL/Thra7dZsSlOHYAHIeMxfhWQRI1/VLcT3WDBZKKtQt/QkBOsiIN9ZpuvHE6cGZ0x4glCMmfiA==", "dev": true, "dependencies": { "semver": "^7.3.5" @@ -17428,6 +17736,8 @@ }, "node_modules/semver-diff/node_modules/lru-cache": { "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", "dev": true, "dependencies": { "yallist": "^4.0.0" @@ -17459,6 +17769,8 @@ }, "node_modules/semver-regex": { "version": "4.0.5", + "resolved": "https://registry.npmjs.org/semver-regex/-/semver-regex-4.0.5.tgz", + "integrity": "sha512-hunMQrEy1T6Jr2uEVjrAIqjwWcQTgOAcIM52C8MY1EZSD3DDNft04XzvYKPqjED65bNVVko0YI38nYeEHCX3yw==", "dev": true, "engines": { "node": ">=12" @@ -17473,17 +17785,17 @@ "integrity": "sha512-RVnVQxTXuerk653XfuliOxBP81Sf0+qfQE73LIYKcyMYHG94AuH0kgrQpRDuTZnSmjpysHmzxJXKNfa6PjFhyQ==" }, "node_modules/set-function-length": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.1.tgz", - "integrity": "sha512-j4t6ccc+VsKwYHso+kElc5neZpjtq9EnRICFZtWyBsLojhmeF/ZBd/elqm22WJh/BziDe/SBiOeAt0m2mfLD0g==", + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", + "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", "dev": true, "dependencies": { - "define-data-property": "^1.1.2", + "define-data-property": "^1.1.4", "es-errors": "^1.3.0", "function-bind": "^1.1.2", - "get-intrinsic": "^1.2.3", + "get-intrinsic": "^1.2.4", "gopd": "^1.0.1", - "has-property-descriptors": "^1.0.1" + "has-property-descriptors": "^1.0.2" }, "engines": { "node": ">= 0.4" @@ -17538,12 +17850,12 @@ } }, "node_modules/side-channel": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.5.tgz", - "integrity": "sha512-QcgiIWV4WV7qWExbN5llt6frQB/lBven9pqliLXfGPB+K9ZYXxDozp0wLkHS24kWCm+6YXH/f0HhnObZnZOBnQ==", + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz", + "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==", "dev": true, "dependencies": { - "call-bind": "^1.0.6", + "call-bind": "^1.0.7", "es-errors": "^1.3.0", "get-intrinsic": "^1.2.4", "object-inspect": "^1.13.1" @@ -17563,6 +17875,8 @@ }, "node_modules/signale": { "version": "1.4.0", + "resolved": "https://registry.npmjs.org/signale/-/signale-1.4.0.tgz", + "integrity": "sha512-iuh+gPf28RkltuJC7W5MRi6XAjTDCAPC/prJUpQoG4vIP3MJZ+GTydVnodXA7pwvTKb2cA0m9OFZW/cdWy/I/w==", "dev": true, "dependencies": { "chalk": "^2.3.2", @@ -17575,6 +17889,8 @@ }, "node_modules/signale/node_modules/figures": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", + "integrity": "sha512-Oa2M9atig69ZkfwiApY8F2Yy+tzMbazyvqv21R0NsSC8floSOC09BbT1ITWAdoMGQvJ/aZnR1KMwdx9tvHnTNA==", "dev": true, "dependencies": { "escape-string-regexp": "^1.0.5" @@ -17591,6 +17907,8 @@ }, "node_modules/skin-tone": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/skin-tone/-/skin-tone-2.0.0.tgz", + "integrity": "sha512-kUMbT1oBJCpgrnKoSr0o6wPtvRWT9W9UKvGLwfJYO2WuahZRHOpEyL1ckyMGgMWh0UdpmaoFqKKD29WTomNEGA==", "dev": true, "dependencies": { "unicode-emoji-modifier-base": "^1.0.0" @@ -17731,6 +18049,8 @@ }, "node_modules/stream-combiner2": { "version": "1.1.1", + "resolved": "https://registry.npmjs.org/stream-combiner2/-/stream-combiner2-1.1.1.tgz", + "integrity": "sha512-3PnJbYgS56AeWgtKF5jtJRT6uFJe56Z0Hc5Ngg/6sI6rIt8iiMBTa9cvdyFfpMQjaVHr8dusbNeFGIIonxOvKw==", "dev": true, "dependencies": { "duplexer2": "~0.1.0", @@ -17739,8 +18059,9 @@ }, "node_modules/string_decoder": { "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "dev": true, - "license": "MIT", "dependencies": { "safe-buffer": "~5.1.0" } @@ -17842,14 +18163,15 @@ } }, "node_modules/string.prototype.trim": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.8.tgz", - "integrity": "sha512-lfjY4HcixfQXOfaqCvcBuOIapyaroTXhbkfJN3gcB1OtyupngWK4sEET9Knd0cXd28kTUqu/kHoV4HKSJdnjiQ==", + "version": "1.2.9", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.9.tgz", + "integrity": "sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1" + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.0", + "es-object-atoms": "^1.0.0" }, "engines": { "node": ">= 0.4" @@ -17859,28 +18181,31 @@ } }, "node_modules/string.prototype.trimend": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.7.tgz", - "integrity": "sha512-Ni79DqeB72ZFq1uH/L6zJ+DKZTkOtPIHovb3YZHQViE+HDouuU4mBrLOLDn5Dde3RF8qw5qVETEjhu9locMLvA==", + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.8.tgz", + "integrity": "sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1" + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/string.prototype.trimstart": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.7.tgz", - "integrity": "sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg==", + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz", + "integrity": "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1" + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -17912,6 +18237,8 @@ }, "node_modules/strip-bom": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", + "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", "dev": true, "engines": { "node": ">=8" @@ -17940,6 +18267,8 @@ }, "node_modules/strip-json-comments": { "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", "dev": true, "engines": { "node": ">=8" @@ -17980,16 +18309,16 @@ } }, "node_modules/sucrase/node_modules/glob": { - "version": "10.3.10", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz", - "integrity": "sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==", + "version": "10.3.12", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.12.tgz", + "integrity": "sha512-TCNv8vJ+xz4QiqTpfOJA7HvYv+tNIRHKfUWw/q+v2jdgN4ebz+KY9tGx5J4rHP0o84mNP+ApH66HRX8us3Khqg==", "dev": true, "dependencies": { "foreground-child": "^3.1.0", - "jackspeak": "^2.3.5", + "jackspeak": "^2.3.6", "minimatch": "^9.0.1", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", - "path-scurry": "^1.10.1" + "minipass": "^7.0.4", + "path-scurry": "^1.10.2" }, "bin": { "glob": "dist/esm/bin.mjs" @@ -18015,6 +18344,8 @@ }, "node_modules/supports-hyperlinks": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-3.0.0.tgz", + "integrity": "sha512-QBDPHyPQDRTy9ku4URNGY5Lah8PAaXs6tAAwp55sL5WCsSW7GIfdf6W5ixfziW+t7wh3GVvHyHHyQ1ESsoRvaA==", "dev": true, "dependencies": { "has-flag": "^4.0.0", @@ -18026,6 +18357,8 @@ }, "node_modules/supports-hyperlinks/node_modules/has-flag": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, "engines": { "node": ">=8" @@ -18033,6 +18366,8 @@ }, "node_modules/supports-hyperlinks/node_modules/supports-color": { "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, "dependencies": { "has-flag": "^4.0.0" @@ -18218,8 +18553,9 @@ }, "node_modules/through2/node_modules/readable-stream": { "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", "dev": true, - "license": "MIT", "dependencies": { "inherits": "^2.0.3", "string_decoder": "^1.1.1", @@ -18291,7 +18627,9 @@ } }, "node_modules/traverse": { - "version": "0.6.7", + "version": "0.6.8", + "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.6.8.tgz", + "integrity": "sha512-aXJDbk6SnumuaZSANd21XAo15ucCDE38H4fkqiGsc3MhCK+wOlZvLP9cB/TvpHT0mOyWgC4Z8EwRlzqYSUzdsA==", "dev": true, "engines": { "node": ">= 0.4" @@ -18319,9 +18657,9 @@ } }, "node_modules/ts-api-utils": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.2.1.tgz", - "integrity": "sha512-RIYA36cJn2WiH9Hy77hdF9r7oEwxAtB/TS9/S4Qd90Ap4z5FSiin5zEiTL44OII1Y3IIlEvxwxFUVgrHSZ/UpA==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.3.0.tgz", + "integrity": "sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==", "dev": true, "engines": { "node": ">=16" @@ -18341,51 +18679,6 @@ "resolved": "https://registry.npmjs.org/ts-mixer/-/ts-mixer-6.0.4.tgz", "integrity": "sha512-ufKpbmrugz5Aou4wcr5Wc1UUFWOLhq+Fm6qa6P0w0K5Qw2yhaUoiWszhCVuNQyNwrlGiscHOmqYoAox1PtvgjA==" }, - "node_modules/ts-node": { - "version": "10.9.2", - "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.2.tgz", - "integrity": "sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "@cspotcode/source-map-support": "^0.8.0", - "@tsconfig/node10": "^1.0.7", - "@tsconfig/node12": "^1.0.7", - "@tsconfig/node14": "^1.0.0", - "@tsconfig/node16": "^1.0.2", - "acorn": "^8.4.1", - "acorn-walk": "^8.1.1", - "arg": "^4.1.0", - "create-require": "^1.1.0", - "diff": "^4.0.1", - "make-error": "^1.1.1", - "v8-compile-cache-lib": "^3.0.1", - "yn": "3.1.1" - }, - "bin": { - "ts-node": "dist/bin.js", - "ts-node-cwd": "dist/bin-cwd.js", - "ts-node-esm": "dist/bin-esm.js", - "ts-node-script": "dist/bin-script.js", - "ts-node-transpile-only": "dist/bin-transpile.js", - "ts-script": "dist/bin-script-deprecated.js" - }, - "peerDependencies": { - "@swc/core": ">=1.2.50", - "@swc/wasm": ">=1.2.50", - "@types/node": "*", - "typescript": ">=2.7" - }, - "peerDependenciesMeta": { - "@swc/core": { - "optional": true - }, - "@swc/wasm": { - "optional": true - } - } - }, "node_modules/tsconfig-paths": { "version": "3.15.0", "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz", @@ -18400,8 +18693,9 @@ }, "node_modules/tsconfig-paths/node_modules/json5": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", + "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", "dev": true, - "license": "MIT", "dependencies": { "minimist": "^1.2.0" }, @@ -18534,6 +18828,8 @@ }, "node_modules/type-fest": { "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", "dev": true, "engines": { "node": ">=10" @@ -18557,15 +18853,16 @@ } }, "node_modules/typed-array-byte-length": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.0.tgz", - "integrity": "sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.1.tgz", + "integrity": "sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", + "call-bind": "^1.0.7", "for-each": "^0.3.3", - "has-proto": "^1.0.1", - "is-typed-array": "^1.1.10" + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13" }, "engines": { "node": ">= 0.4" @@ -18595,9 +18892,9 @@ } }, "node_modules/typed-array-length": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.5.tgz", - "integrity": "sha512-yMi0PlwuznKHxKmcpoOdeLwxBoVPkqZxd7q2FgMkmD3bNwvF5VW0+UlUQ1k1vmktTu4Yu13Q0RIxEP8+B+wloA==", + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.6.tgz", + "integrity": "sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g==", "dev": true, "dependencies": { "call-bind": "^1.0.7", @@ -18615,9 +18912,9 @@ } }, "node_modules/typedoc": { - "version": "0.25.8", - "resolved": "https://registry.npmjs.org/typedoc/-/typedoc-0.25.8.tgz", - "integrity": "sha512-mh8oLW66nwmeB9uTa0Bdcjfis+48bAjSH3uqdzSuSawfduROQLlXw//WSNZLYDdhmMVB7YcYZicq6e8T0d271A==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/typedoc/-/typedoc-0.25.12.tgz", + "integrity": "sha512-F+qhkK2VoTweDXd1c42GS/By2DvI2uDF4/EpG424dTexSHdtCH52C6IcAvMA6jR3DzAWZjHpUOW+E02kyPNUNw==", "dev": true, "dependencies": { "lunr": "^2.3.9", @@ -18632,7 +18929,7 @@ "node": ">= 16" }, "peerDependencies": { - "typescript": "4.6.x || 4.7.x || 4.8.x || 4.9.x || 5.0.x || 5.1.x || 5.2.x || 5.3.x" + "typescript": "4.6.x || 4.7.x || 4.8.x || 4.9.x || 5.0.x || 5.1.x || 5.2.x || 5.3.x || 5.4.x" } }, "node_modules/typedoc/node_modules/marked": { @@ -18688,6 +18985,12 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/undici-types": { + "version": "5.26.5", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", + "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", + "dev": true + }, "node_modules/unicode-canonical-property-names-ecmascript": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", @@ -18699,6 +19002,8 @@ }, "node_modules/unicode-emoji-modifier-base": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unicode-emoji-modifier-base/-/unicode-emoji-modifier-base-1.0.0.tgz", + "integrity": "sha512-yLSH4py7oFH3oG/9K+XWrz1pSi3dfUrWEnInbxMfArOfc1+33BlGPQtLsOYwvdMy11AwUBetYuaRxSPqgkq+8g==", "dev": true, "engines": { "node": ">=4" @@ -18737,6 +19042,8 @@ }, "node_modules/unicorn-magic": { "version": "0.1.0", + "resolved": "https://registry.npmjs.org/unicorn-magic/-/unicorn-magic-0.1.0.tgz", + "integrity": "sha512-lRfVq8fE8gz6QMBuDM6a+LO3IAzTi05H6gCVaUpir2E1Rwpo4ZUog45KpNXKC/Mn3Yb9UDuHumeFTo9iV/D9FQ==", "dev": true, "engines": { "node": ">=18" @@ -18768,7 +19075,8 @@ }, "node_modules/universalify": { "version": "2.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", "engines": { "node": ">= 10.0.0" } @@ -18832,14 +19140,6 @@ "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", "dev": true }, - "node_modules/v8-compile-cache-lib": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", - "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==", - "dev": true, - "optional": true, - "peer": true - }, "node_modules/v8-to-istanbul": { "version": "9.2.0", "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.2.0.tgz", @@ -18977,16 +19277,16 @@ } }, "node_modules/which-typed-array": { - "version": "1.1.14", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.14.tgz", - "integrity": "sha512-VnXFiIW8yNn9kIHN88xvZ4yOWchftKDsRJ8fEPacX/wl1lOvBrhsJ/OeJCXq7B0AaijRuqgzSKalJoPk+D8MPg==", + "version": "1.1.15", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.15.tgz", + "integrity": "sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==", "dev": true, "dependencies": { - "available-typed-arrays": "^1.0.6", - "call-bind": "^1.0.5", + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", "for-each": "^0.3.3", "gopd": "^1.0.1", - "has-tostringtag": "^1.0.1" + "has-tostringtag": "^1.0.2" }, "engines": { "node": ">= 0.4" @@ -19194,6 +19494,8 @@ }, "node_modules/xtend": { "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", "dev": true, "engines": { "node": ">=0.4" @@ -19273,17 +19575,6 @@ "node": ">=8" } }, - "node_modules/yn": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", - "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", - "dev": true, - "optional": true, - "peer": true, - "engines": { - "node": ">=6" - } - }, "node_modules/yocto-queue": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", diff --git a/package.json b/package.json index 18fcb4e3b..a58cbd4ed 100644 --- a/package.json +++ b/package.json @@ -87,13 +87,13 @@ "semantic-release": "^23.0.5", "tsup": "^8.0.2", "typedoc": "^0.25.7", - "typescript": "^5.3.0" + "typescript": "~5.3.0" }, "dependencies": { "@noble/curves": "~1.3.0", "@scure/base": "~1.1.3", "@scure/starknet": "~1.0.0", - "abi-wan-kanabi": "^2.2.1", + "abi-wan-kanabi": "^2.2.2", "fetch-cookie": "^3.0.0", "get-starknet-core": "^4.0.0-next.3", "isomorphic-fetch": "^3.0.0", diff --git a/src/contract/interface.ts b/src/contract/interface.ts index bab526be3..9a2f53e0b 100644 --- a/src/contract/interface.ts +++ b/src/contract/interface.ts @@ -30,6 +30,8 @@ declare module 'abi-wan-kanabi' { export interface Config { FeltType: BigNumberish; U256Type: number | bigint | Uint256; + U512Type: BigNumberish; + Secp256k1PointType: BigNumberish; Option: CairoOption; Tuple: Record; Result: CairoResult; From 4b839432e16c61e270e140dec9399c1f09a7d38b Mon Sep 17 00:00:00 2001 From: Petar Penovic Date: Mon, 1 Apr 2024 16:43:57 +0200 Subject: [PATCH 24/37] chore: bump dependencies --- package-lock.json | 1726 ++++++++++++++++++++------------------------- package.json | 20 +- 2 files changed, 759 insertions(+), 987 deletions(-) diff --git a/package-lock.json b/package-lock.json index a92699c56..a3551df08 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,7 +9,7 @@ "version": "6.6.6", "license": "MIT", "dependencies": { - "@noble/curves": "~1.3.0", + "@noble/curves": "~1.4.0", "@scure/base": "~1.1.3", "@scure/starknet": "~1.0.0", "abi-wan-kanabi": "^2.2.2", @@ -25,25 +25,25 @@ "@babel/plugin-transform-modules-commonjs": "^7.18.2", "@babel/preset-env": "^7.18.2", "@babel/preset-typescript": "^7.17.12", - "@commitlint/cli": "^18.6.0", - "@commitlint/config-conventional": "^18.6.0", + "@commitlint/cli": "^19.0.0", + "@commitlint/config-conventional": "^19.0.0", "@semantic-release/changelog": "^6.0.1", - "@semantic-release/commit-analyzer": "^11.1.0", + "@semantic-release/commit-analyzer": "^12.0.0", "@semantic-release/git": "^10.0.1", - "@semantic-release/npm": "^11.0.2", - "@semantic-release/release-notes-generator": "^12.1.0", + "@semantic-release/npm": "^12.0.0", + "@semantic-release/release-notes-generator": "^13.0.0", "@types/isomorphic-fetch": "^0.0.39", "@types/jest": "^29.5.0", "@types/jest-json-schema": "^6.1.1", "@types/pako": "^2.0.0", "@types/url-join": "^4.0.1", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "@typescript-eslint/parser": "^6.21.0", + "@typescript-eslint/eslint-plugin": "^7.4.0", + "@typescript-eslint/parser": "^7.4.0", "ajv": "^8.12.0", "ajv-keywords": "^5.1.0", "eslint": "^8.56.0", "eslint-config-airbnb-base": "^15.0.0", - "eslint-config-airbnb-typescript": "^17.0.0", + "eslint-config-airbnb-typescript": "^18.0.0", "eslint-config-prettier": "^9.1.0", "eslint-plugin-import": "^2.26.0", "eslint-plugin-prettier": "^5.1.3", @@ -59,7 +59,7 @@ "semantic-release": "^23.0.5", "tsup": "^8.0.2", "typedoc": "^0.25.7", - "typescript": "~5.3.0" + "typescript": "~5.4.0" } }, "node_modules/@aashutoshrathi/word-wrap": { @@ -1834,20 +1834,17 @@ } }, "node_modules/@commitlint/cli": { - "version": "18.6.1", - "resolved": "https://registry.npmjs.org/@commitlint/cli/-/cli-18.6.1.tgz", - "integrity": "sha512-5IDE0a+lWGdkOvKH892HHAZgbAjcj1mT5QrfA/SVbLJV/BbBMGyKN0W5mhgjekPJJwEQdVNvhl9PwUacY58Usw==", + "version": "19.2.1", + "resolved": "https://registry.npmjs.org/@commitlint/cli/-/cli-19.2.1.tgz", + "integrity": "sha512-cbkYUJsLqRomccNxvoJTyv5yn0bSy05BBizVyIcLACkRbVUqYorC351Diw/XFSWC/GtpwiwT2eOvQgFZa374bg==", "dev": true, "dependencies": { - "@commitlint/format": "^18.6.1", - "@commitlint/lint": "^18.6.1", - "@commitlint/load": "^18.6.1", - "@commitlint/read": "^18.6.1", - "@commitlint/types": "^18.6.1", - "execa": "^5.0.0", - "lodash.isfunction": "^3.0.9", - "resolve-from": "5.0.0", - "resolve-global": "1.0.0", + "@commitlint/format": "^19.0.3", + "@commitlint/lint": "^19.1.0", + "@commitlint/load": "^19.2.0", + "@commitlint/read": "^19.2.1", + "@commitlint/types": "^19.0.3", + "execa": "^8.0.1", "yargs": "^17.0.0" }, "bin": { @@ -1857,149 +1854,225 @@ "node": ">=v18" } }, - "node_modules/@commitlint/config-conventional": { - "version": "18.6.3", - "resolved": "https://registry.npmjs.org/@commitlint/config-conventional/-/config-conventional-18.6.3.tgz", - "integrity": "sha512-8ZrRHqF6je+TRaFoJVwszwnOXb/VeYrPmTwPhf0WxpzpGTcYy1p0SPyZ2eRn/sRi/obnWAcobtDAq6+gJQQNhQ==", + "node_modules/@commitlint/cli/node_modules/execa": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-8.0.1.tgz", + "integrity": "sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==", "dev": true, "dependencies": { - "@commitlint/types": "^18.6.1", - "conventional-changelog-conventionalcommits": "^7.0.2" + "cross-spawn": "^7.0.3", + "get-stream": "^8.0.1", + "human-signals": "^5.0.0", + "is-stream": "^3.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^5.1.0", + "onetime": "^6.0.0", + "signal-exit": "^4.1.0", + "strip-final-newline": "^3.0.0" }, "engines": { - "node": ">=v18" + "node": ">=16.17" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" } }, - "node_modules/@commitlint/config-validator": { - "version": "18.6.1", - "resolved": "https://registry.npmjs.org/@commitlint/config-validator/-/config-validator-18.6.1.tgz", - "integrity": "sha512-05uiToBVfPhepcQWE1ZQBR/Io3+tb3gEotZjnI4tTzzPk16NffN6YABgwFQCLmzZefbDcmwWqJWc2XT47q7Znw==", + "node_modules/@commitlint/cli/node_modules/get-stream": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-8.0.1.tgz", + "integrity": "sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==", "dev": true, - "dependencies": { - "@commitlint/types": "^18.6.1", - "ajv": "^8.11.0" + "engines": { + "node": ">=16" }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@commitlint/cli/node_modules/human-signals": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-5.0.0.tgz", + "integrity": "sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==", + "dev": true, "engines": { - "node": ">=v18" + "node": ">=16.17.0" } }, - "node_modules/@commitlint/ensure": { - "version": "18.6.1", - "resolved": "https://registry.npmjs.org/@commitlint/ensure/-/ensure-18.6.1.tgz", - "integrity": "sha512-BPm6+SspyxQ7ZTsZwXc7TRQL5kh5YWt3euKmEIBZnocMFkJevqs3fbLRb8+8I/cfbVcAo4mxRlpTPfz8zX7SnQ==", + "node_modules/@commitlint/cli/node_modules/is-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", + "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", "dev": true, - "dependencies": { - "@commitlint/types": "^18.6.1", - "lodash.camelcase": "^4.3.0", - "lodash.kebabcase": "^4.1.1", - "lodash.snakecase": "^4.1.1", - "lodash.startcase": "^4.4.0", - "lodash.upperfirst": "^4.3.1" - }, "engines": { - "node": ">=v18" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@commitlint/execute-rule": { - "version": "18.6.1", - "resolved": "https://registry.npmjs.org/@commitlint/execute-rule/-/execute-rule-18.6.1.tgz", - "integrity": "sha512-7s37a+iWyJiGUeMFF6qBlyZciUkF8odSAnHijbD36YDctLhGKoYltdvuJ/AFfRm6cBLRtRk9cCVPdsEFtt/2rg==", + "node_modules/@commitlint/cli/node_modules/mimic-fn": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz", + "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==", "dev": true, "engines": { - "node": ">=v18" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@commitlint/format": { - "version": "18.6.1", - "resolved": "https://registry.npmjs.org/@commitlint/format/-/format-18.6.1.tgz", - "integrity": "sha512-K8mNcfU/JEFCharj2xVjxGSF+My+FbUHoqR+4GqPGrHNqXOGNio47ziiR4HQUPKtiNs05o8/WyLBoIpMVOP7wg==", + "node_modules/@commitlint/cli/node_modules/npm-run-path": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.3.0.tgz", + "integrity": "sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==", "dev": true, "dependencies": { - "@commitlint/types": "^18.6.1", - "chalk": "^4.1.0" + "path-key": "^4.0.0" }, "engines": { - "node": ">=v18" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@commitlint/format/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "node_modules/@commitlint/cli/node_modules/onetime": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz", + "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==", "dev": true, "dependencies": { - "color-convert": "^2.0.1" + "mimic-fn": "^4.0.0" }, "engines": { - "node": ">=8" + "node": ">=12" }, "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@commitlint/format/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "node_modules/@commitlint/cli/node_modules/path-key": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", + "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "engines": { + "node": ">=12" }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@commitlint/cli/node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "dev": true, "engines": { - "node": ">=10" + "node": ">=14" }, "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/@commitlint/format/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "node_modules/@commitlint/cli/node_modules/strip-final-newline": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz", + "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@commitlint/config-conventional": { + "version": "19.1.0", + "resolved": "https://registry.npmjs.org/@commitlint/config-conventional/-/config-conventional-19.1.0.tgz", + "integrity": "sha512-KIKD2xrp6Uuk+dcZVj3++MlzIr/Su6zLE8crEDQCZNvWHNQSeeGbzOlNtsR32TUy6H3JbP7nWgduAHCaiGQ6EA==", "dev": true, "dependencies": { - "color-name": "~1.1.4" + "@commitlint/types": "^19.0.3", + "conventional-changelog-conventionalcommits": "^7.0.2" }, "engines": { - "node": ">=7.0.0" + "node": ">=v18" } }, - "node_modules/@commitlint/format/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true + "node_modules/@commitlint/config-validator": { + "version": "19.0.3", + "resolved": "https://registry.npmjs.org/@commitlint/config-validator/-/config-validator-19.0.3.tgz", + "integrity": "sha512-2D3r4PKjoo59zBc2auodrSCaUnCSALCx54yveOFwwP/i2kfEAQrygwOleFWswLqK0UL/F9r07MFi5ev2ohyM4Q==", + "dev": true, + "dependencies": { + "@commitlint/types": "^19.0.3", + "ajv": "^8.11.0" + }, + "engines": { + "node": ">=v18" + } }, - "node_modules/@commitlint/format/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "node_modules/@commitlint/ensure": { + "version": "19.0.3", + "resolved": "https://registry.npmjs.org/@commitlint/ensure/-/ensure-19.0.3.tgz", + "integrity": "sha512-SZEpa/VvBLoT+EFZVb91YWbmaZ/9rPH3ESrINOl0HD2kMYsjvl0tF7nMHh0EpTcv4+gTtZBAe1y/SS6/OhfZzQ==", + "dev": true, + "dependencies": { + "@commitlint/types": "^19.0.3", + "lodash.camelcase": "^4.3.0", + "lodash.kebabcase": "^4.1.1", + "lodash.snakecase": "^4.1.1", + "lodash.startcase": "^4.4.0", + "lodash.upperfirst": "^4.3.1" + }, + "engines": { + "node": ">=v18" + } + }, + "node_modules/@commitlint/execute-rule": { + "version": "19.0.0", + "resolved": "https://registry.npmjs.org/@commitlint/execute-rule/-/execute-rule-19.0.0.tgz", + "integrity": "sha512-mtsdpY1qyWgAO/iOK0L6gSGeR7GFcdW7tIjcNFxcWkfLDF5qVbPHKuGATFqRMsxcO8OUKNj0+3WOHB7EHm4Jdw==", "dev": true, "engines": { - "node": ">=8" + "node": ">=v18" } }, - "node_modules/@commitlint/format/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "node_modules/@commitlint/format": { + "version": "19.0.3", + "resolved": "https://registry.npmjs.org/@commitlint/format/-/format-19.0.3.tgz", + "integrity": "sha512-QjjyGyoiVWzx1f5xOteKHNLFyhyweVifMgopozSgx1fGNrGV8+wp7k6n1t6StHdJ6maQJ+UUtO2TcEiBFRyR6Q==", "dev": true, "dependencies": { - "has-flag": "^4.0.0" + "@commitlint/types": "^19.0.3", + "chalk": "^5.3.0" }, "engines": { - "node": ">=8" + "node": ">=v18" + } + }, + "node_modules/@commitlint/format/node_modules/chalk": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz", + "integrity": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==", + "dev": true, + "engines": { + "node": "^12.17.0 || ^14.13 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, "node_modules/@commitlint/is-ignored": { - "version": "18.6.1", - "resolved": "https://registry.npmjs.org/@commitlint/is-ignored/-/is-ignored-18.6.1.tgz", - "integrity": "sha512-MOfJjkEJj/wOaPBw5jFjTtfnx72RGwqYIROABudOtJKW7isVjFe9j0t8xhceA02QebtYf4P/zea4HIwnXg8rvA==", + "version": "19.0.3", + "resolved": "https://registry.npmjs.org/@commitlint/is-ignored/-/is-ignored-19.0.3.tgz", + "integrity": "sha512-MqDrxJaRSVSzCbPsV6iOKG/Lt52Y+PVwFVexqImmYYFhe51iVJjK2hRhOG2jUAGiUHk4jpdFr0cZPzcBkSzXDQ==", "dev": true, "dependencies": { - "@commitlint/types": "^18.6.1", - "semver": "7.6.0" + "@commitlint/types": "^19.0.3", + "semver": "^7.6.0" }, "engines": { "node": ">=v18" @@ -2039,284 +2112,520 @@ "dev": true }, "node_modules/@commitlint/lint": { - "version": "18.6.1", - "resolved": "https://registry.npmjs.org/@commitlint/lint/-/lint-18.6.1.tgz", - "integrity": "sha512-8WwIFo3jAuU+h1PkYe5SfnIOzp+TtBHpFr4S8oJWhu44IWKuVx6GOPux3+9H1iHOan/rGBaiacicZkMZuluhfQ==", + "version": "19.1.0", + "resolved": "https://registry.npmjs.org/@commitlint/lint/-/lint-19.1.0.tgz", + "integrity": "sha512-ESjaBmL/9cxm+eePyEr6SFlBUIYlYpI80n+Ltm7IA3MAcrmiP05UMhJdAD66sO8jvo8O4xdGn/1Mt2G5VzfZKw==", + "dev": true, + "dependencies": { + "@commitlint/is-ignored": "^19.0.3", + "@commitlint/parse": "^19.0.3", + "@commitlint/rules": "^19.0.3", + "@commitlint/types": "^19.0.3" + }, + "engines": { + "node": ">=v18" + } + }, + "node_modules/@commitlint/load": { + "version": "19.2.0", + "resolved": "https://registry.npmjs.org/@commitlint/load/-/load-19.2.0.tgz", + "integrity": "sha512-XvxxLJTKqZojCxaBQ7u92qQLFMMZc4+p9qrIq/9kJDy8DOrEa7P1yx7Tjdc2u2JxIalqT4KOGraVgCE7eCYJyQ==", + "dev": true, + "dependencies": { + "@commitlint/config-validator": "^19.0.3", + "@commitlint/execute-rule": "^19.0.0", + "@commitlint/resolve-extends": "^19.1.0", + "@commitlint/types": "^19.0.3", + "chalk": "^5.3.0", + "cosmiconfig": "^9.0.0", + "cosmiconfig-typescript-loader": "^5.0.0", + "lodash.isplainobject": "^4.0.6", + "lodash.merge": "^4.6.2", + "lodash.uniq": "^4.5.0" + }, + "engines": { + "node": ">=v18" + } + }, + "node_modules/@commitlint/load/node_modules/chalk": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz", + "integrity": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==", + "dev": true, + "engines": { + "node": "^12.17.0 || ^14.13 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@commitlint/message": { + "version": "19.0.0", + "resolved": "https://registry.npmjs.org/@commitlint/message/-/message-19.0.0.tgz", + "integrity": "sha512-c9czf6lU+9oF9gVVa2lmKaOARJvt4soRsVmbR7Njwp9FpbBgste5i7l/2l5o8MmbwGh4yE1snfnsy2qyA2r/Fw==", + "dev": true, + "engines": { + "node": ">=v18" + } + }, + "node_modules/@commitlint/parse": { + "version": "19.0.3", + "resolved": "https://registry.npmjs.org/@commitlint/parse/-/parse-19.0.3.tgz", + "integrity": "sha512-Il+tNyOb8VDxN3P6XoBBwWJtKKGzHlitEuXA5BP6ir/3loWlsSqDr5aecl6hZcC/spjq4pHqNh0qPlfeWu38QA==", + "dev": true, + "dependencies": { + "@commitlint/types": "^19.0.3", + "conventional-changelog-angular": "^7.0.0", + "conventional-commits-parser": "^5.0.0" + }, + "engines": { + "node": ">=v18" + } + }, + "node_modules/@commitlint/read": { + "version": "19.2.1", + "resolved": "https://registry.npmjs.org/@commitlint/read/-/read-19.2.1.tgz", + "integrity": "sha512-qETc4+PL0EUv7Q36lJbPG+NJiBOGg7SSC7B5BsPWOmei+Dyif80ErfWQ0qXoW9oCh7GTpTNRoaVhiI8RbhuaNw==", + "dev": true, + "dependencies": { + "@commitlint/top-level": "^19.0.0", + "@commitlint/types": "^19.0.3", + "execa": "^8.0.1", + "git-raw-commits": "^4.0.0", + "minimist": "^1.2.8" + }, + "engines": { + "node": ">=v18" + } + }, + "node_modules/@commitlint/read/node_modules/execa": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-8.0.1.tgz", + "integrity": "sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^8.0.1", + "human-signals": "^5.0.0", + "is-stream": "^3.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^5.1.0", + "onetime": "^6.0.0", + "signal-exit": "^4.1.0", + "strip-final-newline": "^3.0.0" + }, + "engines": { + "node": ">=16.17" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/@commitlint/read/node_modules/get-stream": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-8.0.1.tgz", + "integrity": "sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==", + "dev": true, + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@commitlint/read/node_modules/human-signals": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-5.0.0.tgz", + "integrity": "sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==", + "dev": true, + "engines": { + "node": ">=16.17.0" + } + }, + "node_modules/@commitlint/read/node_modules/is-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", + "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", + "dev": true, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@commitlint/read/node_modules/mimic-fn": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz", + "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@commitlint/read/node_modules/npm-run-path": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.3.0.tgz", + "integrity": "sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==", + "dev": true, + "dependencies": { + "path-key": "^4.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@commitlint/read/node_modules/onetime": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz", + "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==", + "dev": true, + "dependencies": { + "mimic-fn": "^4.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@commitlint/read/node_modules/path-key": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", + "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@commitlint/read/node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "dev": true, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@commitlint/read/node_modules/strip-final-newline": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz", + "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==", "dev": true, - "dependencies": { - "@commitlint/is-ignored": "^18.6.1", - "@commitlint/parse": "^18.6.1", - "@commitlint/rules": "^18.6.1", - "@commitlint/types": "^18.6.1" - }, "engines": { - "node": ">=v18" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@commitlint/load": { - "version": "18.6.1", - "resolved": "https://registry.npmjs.org/@commitlint/load/-/load-18.6.1.tgz", - "integrity": "sha512-p26x8734tSXUHoAw0ERIiHyW4RaI4Bj99D8YgUlVV9SedLf8hlWAfyIFhHRIhfPngLlCe0QYOdRKYFt8gy56TA==", + "node_modules/@commitlint/resolve-extends": { + "version": "19.1.0", + "resolved": "https://registry.npmjs.org/@commitlint/resolve-extends/-/resolve-extends-19.1.0.tgz", + "integrity": "sha512-z2riI+8G3CET5CPgXJPlzftH+RiWYLMYv4C9tSLdLXdr6pBNimSKukYP9MS27ejmscqCTVA4almdLh0ODD2KYg==", "dev": true, "dependencies": { - "@commitlint/config-validator": "^18.6.1", - "@commitlint/execute-rule": "^18.6.1", - "@commitlint/resolve-extends": "^18.6.1", - "@commitlint/types": "^18.6.1", - "chalk": "^4.1.0", - "cosmiconfig": "^8.3.6", - "cosmiconfig-typescript-loader": "^5.0.0", - "lodash.isplainobject": "^4.0.6", - "lodash.merge": "^4.6.2", - "lodash.uniq": "^4.5.0", + "@commitlint/config-validator": "^19.0.3", + "@commitlint/types": "^19.0.3", + "global-directory": "^4.0.1", + "import-meta-resolve": "^4.0.0", + "lodash.mergewith": "^4.6.2", "resolve-from": "^5.0.0" }, "engines": { "node": ">=v18" } }, - "node_modules/@commitlint/load/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "node_modules/@commitlint/rules": { + "version": "19.0.3", + "resolved": "https://registry.npmjs.org/@commitlint/rules/-/rules-19.0.3.tgz", + "integrity": "sha512-TspKb9VB6svklxNCKKwxhELn7qhtY1rFF8ls58DcFd0F97XoG07xugPjjbVnLqmMkRjZDbDIwBKt9bddOfLaPw==", "dev": true, "dependencies": { - "color-convert": "^2.0.1" + "@commitlint/ensure": "^19.0.3", + "@commitlint/message": "^19.0.0", + "@commitlint/to-lines": "^19.0.0", + "@commitlint/types": "^19.0.3", + "execa": "^8.0.1" }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "node": ">=v18" } }, - "node_modules/@commitlint/load/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "node_modules/@commitlint/rules/node_modules/execa": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-8.0.1.tgz", + "integrity": "sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==", "dev": true, "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "cross-spawn": "^7.0.3", + "get-stream": "^8.0.1", + "human-signals": "^5.0.0", + "is-stream": "^3.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^5.1.0", + "onetime": "^6.0.0", + "signal-exit": "^4.1.0", + "strip-final-newline": "^3.0.0" }, "engines": { - "node": ">=10" + "node": ">=16.17" }, "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "url": "https://github.com/sindresorhus/execa?sponsor=1" } }, - "node_modules/@commitlint/load/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "node_modules/@commitlint/rules/node_modules/get-stream": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-8.0.1.tgz", + "integrity": "sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==", "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, "engines": { - "node": ">=7.0.0" + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@commitlint/load/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/@commitlint/load/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "node_modules/@commitlint/rules/node_modules/human-signals": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-5.0.0.tgz", + "integrity": "sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==", "dev": true, "engines": { - "node": ">=8" + "node": ">=16.17.0" } }, - "node_modules/@commitlint/load/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "node_modules/@commitlint/rules/node_modules/is-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", + "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, "engines": { - "node": ">=8" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@commitlint/message": { - "version": "18.6.1", - "resolved": "https://registry.npmjs.org/@commitlint/message/-/message-18.6.1.tgz", - "integrity": "sha512-VKC10UTMLcpVjMIaHHsY1KwhuTQtdIKPkIdVEwWV+YuzKkzhlI3aNy6oo1eAN6b/D2LTtZkJe2enHmX0corYRw==", + "node_modules/@commitlint/rules/node_modules/mimic-fn": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz", + "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==", "dev": true, "engines": { - "node": ">=v18" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@commitlint/parse": { - "version": "18.6.1", - "resolved": "https://registry.npmjs.org/@commitlint/parse/-/parse-18.6.1.tgz", - "integrity": "sha512-eS/3GREtvVJqGZrwAGRwR9Gdno3YcZ6Xvuaa+vUF8j++wsmxrA2En3n0ccfVO2qVOLJC41ni7jSZhQiJpMPGOQ==", + "node_modules/@commitlint/rules/node_modules/npm-run-path": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.3.0.tgz", + "integrity": "sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==", "dev": true, "dependencies": { - "@commitlint/types": "^18.6.1", - "conventional-changelog-angular": "^7.0.0", - "conventional-commits-parser": "^5.0.0" + "path-key": "^4.0.0" }, "engines": { - "node": ">=v18" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@commitlint/read": { - "version": "18.6.1", - "resolved": "https://registry.npmjs.org/@commitlint/read/-/read-18.6.1.tgz", - "integrity": "sha512-ia6ODaQFzXrVul07ffSgbZGFajpe8xhnDeLIprLeyfz3ivQU1dIoHp7yz0QIorZ6yuf4nlzg4ZUkluDrGN/J/w==", + "node_modules/@commitlint/rules/node_modules/onetime": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz", + "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==", "dev": true, "dependencies": { - "@commitlint/top-level": "^18.6.1", - "@commitlint/types": "^18.6.1", - "git-raw-commits": "^2.0.11", - "minimist": "^1.2.6" + "mimic-fn": "^4.0.0" }, "engines": { - "node": ">=v18" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@commitlint/resolve-extends": { - "version": "18.6.1", - "resolved": "https://registry.npmjs.org/@commitlint/resolve-extends/-/resolve-extends-18.6.1.tgz", - "integrity": "sha512-ifRAQtHwK+Gj3Bxj/5chhc4L2LIc3s30lpsyW67yyjsETR6ctHAHRu1FSpt0KqahK5xESqoJ92v6XxoDRtjwEQ==", + "node_modules/@commitlint/rules/node_modules/path-key": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", + "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", "dev": true, - "dependencies": { - "@commitlint/config-validator": "^18.6.1", - "@commitlint/types": "^18.6.1", - "import-fresh": "^3.0.0", - "lodash.mergewith": "^4.6.2", - "resolve-from": "^5.0.0", - "resolve-global": "^1.0.0" - }, "engines": { - "node": ">=v18" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@commitlint/rules": { - "version": "18.6.1", - "resolved": "https://registry.npmjs.org/@commitlint/rules/-/rules-18.6.1.tgz", - "integrity": "sha512-kguM6HxZDtz60v/zQYOe0voAtTdGybWXefA1iidjWYmyUUspO1zBPQEmJZ05/plIAqCVyNUTAiRPWIBKLCrGew==", + "node_modules/@commitlint/rules/node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", "dev": true, - "dependencies": { - "@commitlint/ensure": "^18.6.1", - "@commitlint/message": "^18.6.1", - "@commitlint/to-lines": "^18.6.1", - "@commitlint/types": "^18.6.1", - "execa": "^5.0.0" + "engines": { + "node": ">=14" }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@commitlint/rules/node_modules/strip-final-newline": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz", + "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==", + "dev": true, "engines": { - "node": ">=v18" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/@commitlint/to-lines": { - "version": "18.6.1", - "resolved": "https://registry.npmjs.org/@commitlint/to-lines/-/to-lines-18.6.1.tgz", - "integrity": "sha512-Gl+orGBxYSNphx1+83GYeNy5N0dQsHBQ9PJMriaLQDB51UQHCVLBT/HBdOx5VaYksivSf5Os55TLePbRLlW50Q==", + "version": "19.0.0", + "resolved": "https://registry.npmjs.org/@commitlint/to-lines/-/to-lines-19.0.0.tgz", + "integrity": "sha512-vkxWo+VQU5wFhiP9Ub9Sre0FYe019JxFikrALVoD5UGa8/t3yOJEpEhxC5xKiENKKhUkTpEItMTRAjHw2SCpZw==", "dev": true, "engines": { "node": ">=v18" } }, "node_modules/@commitlint/top-level": { - "version": "18.6.1", - "resolved": "https://registry.npmjs.org/@commitlint/top-level/-/top-level-18.6.1.tgz", - "integrity": "sha512-HyiHQZUTf0+r0goTCDs/bbVv/LiiQ7AVtz6KIar+8ZrseB9+YJAIo8HQ2IC2QT1y3N1lbW6OqVEsTHjbT6hGSw==", + "version": "19.0.0", + "resolved": "https://registry.npmjs.org/@commitlint/top-level/-/top-level-19.0.0.tgz", + "integrity": "sha512-KKjShd6u1aMGNkCkaX4aG1jOGdn7f8ZI8TR1VEuNqUOjWTOdcDSsmglinglJ18JTjuBX5I1PtjrhQCRcixRVFQ==", "dev": true, "dependencies": { - "find-up": "^5.0.0" + "find-up": "^7.0.0" }, "engines": { "node": ">=v18" } }, - "node_modules/@commitlint/types": { - "version": "18.6.1", - "resolved": "https://registry.npmjs.org/@commitlint/types/-/types-18.6.1.tgz", - "integrity": "sha512-gwRLBLra/Dozj2OywopeuHj2ac26gjGkz2cZ+86cTJOdtWfiRRr4+e77ZDAGc6MDWxaWheI+mAV5TLWWRwqrFg==", + "node_modules/@commitlint/top-level/node_modules/find-up": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-7.0.0.tgz", + "integrity": "sha512-YyZM99iHrqLKjmt4LJDj58KI+fYyufRLBSYcqycxf//KpBk9FoewoGX0450m9nB44qrZnovzC2oeP5hUibxc/g==", "dev": true, "dependencies": { - "chalk": "^4.1.0" + "locate-path": "^7.2.0", + "path-exists": "^5.0.0", + "unicorn-magic": "^0.1.0" }, "engines": { - "node": ">=v18" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@commitlint/types/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "node_modules/@commitlint/top-level/node_modules/locate-path": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-7.2.0.tgz", + "integrity": "sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==", "dev": true, "dependencies": { - "color-convert": "^2.0.1" + "p-locate": "^6.0.0" }, "engines": { - "node": ">=8" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" }, "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@commitlint/types/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "node_modules/@commitlint/top-level/node_modules/p-limit": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-4.0.0.tgz", + "integrity": "sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==", "dev": true, "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "yocto-queue": "^1.0.0" }, "engines": { - "node": ">=10" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" }, "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@commitlint/types/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "node_modules/@commitlint/top-level/node_modules/p-locate": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-6.0.0.tgz", + "integrity": "sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==", "dev": true, "dependencies": { - "color-name": "~1.1.4" + "p-limit": "^4.0.0" }, "engines": { - "node": ">=7.0.0" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@commitlint/types/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true + "node_modules/@commitlint/top-level/node_modules/path-exists": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-5.0.0.tgz", + "integrity": "sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==", + "dev": true, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + } }, - "node_modules/@commitlint/types/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "node_modules/@commitlint/top-level/node_modules/yocto-queue": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.0.0.tgz", + "integrity": "sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==", "dev": true, "engines": { - "node": ">=8" + "node": ">=12.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@commitlint/types/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "node_modules/@commitlint/types": { + "version": "19.0.3", + "resolved": "https://registry.npmjs.org/@commitlint/types/-/types-19.0.3.tgz", + "integrity": "sha512-tpyc+7i6bPG9mvaBbtKUeghfyZSDgWquIDfMgqYtTbmZ9Y9VzEm2je9EYcQ0aoz5o7NvGS+rcDec93yO08MHYA==", "dev": true, "dependencies": { - "has-flag": "^4.0.0" + "@types/conventional-commits-parser": "^5.0.0", + "chalk": "^5.3.0" }, "engines": { - "node": ">=8" + "node": ">=v18" + } + }, + "node_modules/@commitlint/types/node_modules/chalk": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz", + "integrity": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==", + "dev": true, + "engines": { + "node": "^12.17.0 || ^14.13 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, "node_modules/@esbuild/aix-ppc64": { @@ -3741,11 +4050,22 @@ } }, "node_modules/@noble/curves": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.3.0.tgz", - "integrity": "sha512-t01iSXPuN+Eqzb4eBX0S5oubSqXbK/xXa1Ne18Hj8f9pStxztHCE2gfboSp/dZRLSqfuLpRK2nDXDK+W9puocA==", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.4.0.tgz", + "integrity": "sha512-p+4cb332SFCrReJkCYe8Xzm0OWi4Jji5jVdIZRL/PmacmDkFNw6MrrV+gGpiPxLHbV+zKFRywUWbaseT+tZRXg==", "dependencies": { - "@noble/hashes": "1.3.3" + "@noble/hashes": "1.4.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@noble/curves/node_modules/@noble/hashes": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.4.0.tgz", + "integrity": "sha512-V1JJ1WTRUqHHrOSh597hURcMqVKVGL/ea3kv0gSnEdsEZ0/+VyPghM1lMNGc00z7CIQorSvbKpuJkxvuHbvdbg==", + "engines": { + "node": ">= 16" }, "funding": { "url": "https://paulmillr.com/funding/" @@ -4219,6 +4539,17 @@ "url": "https://paulmillr.com/funding/" } }, + "node_modules/@scure/starknet/node_modules/@noble/curves": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.3.0.tgz", + "integrity": "sha512-t01iSXPuN+Eqzb4eBX0S5oubSqXbK/xXa1Ne18Hj8f9pStxztHCE2gfboSp/dZRLSqfuLpRK2nDXDK+W9puocA==", + "dependencies": { + "@noble/hashes": "1.3.3" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, "node_modules/@semantic-release/changelog": { "version": "6.0.3", "resolved": "https://registry.npmjs.org/@semantic-release/changelog/-/changelog-6.0.3.tgz", @@ -4238,9 +4569,9 @@ } }, "node_modules/@semantic-release/commit-analyzer": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/@semantic-release/commit-analyzer/-/commit-analyzer-11.1.0.tgz", - "integrity": "sha512-cXNTbv3nXR2hlzHjAMgbuiQVtvWHTlwwISt60B+4NZv01y/QRY7p2HcJm8Eh2StzcTJoNnflvKjHH/cjFS7d5g==", + "version": "12.0.0", + "resolved": "https://registry.npmjs.org/@semantic-release/commit-analyzer/-/commit-analyzer-12.0.0.tgz", + "integrity": "sha512-qG+md5gdes+xa8zP7lIo1fWE17zRdO8yMCaxh9lyL65TQleoSv8WHHOqRURfghTytUh+NpkSyBprQ5hrkxOKVQ==", "dev": true, "dependencies": { "conventional-changelog-angular": "^7.0.0", @@ -4252,7 +4583,7 @@ "micromatch": "^4.0.2" }, "engines": { - "node": "^18.17 || >=20.6.1" + "node": ">=20.8.1" }, "peerDependencies": { "semantic-release": ">=20.1.0" @@ -4475,9 +4806,9 @@ } }, "node_modules/@semantic-release/npm": { - "version": "11.0.3", - "resolved": "https://registry.npmjs.org/@semantic-release/npm/-/npm-11.0.3.tgz", - "integrity": "sha512-KUsozQGhRBAnoVg4UMZj9ep436VEGwT536/jwSqB7vcEfA6oncCUU7UIYTRdLx7GvTtqn0kBjnkfLVkcnBa2YQ==", + "version": "12.0.0", + "resolved": "https://registry.npmjs.org/@semantic-release/npm/-/npm-12.0.0.tgz", + "integrity": "sha512-72TVYQCH9NvVsO/y13eF8vE4bNnfls518+4KcFwJUKi7AtA/ZXoNgSg9gTTfw5eMZMkiH0izUrpGXgZE/cSQhA==", "dev": true, "dependencies": { "@semantic-release/error": "^4.0.0", @@ -4495,7 +4826,7 @@ "tempy": "^3.0.0" }, "engines": { - "node": "^18.17 || >=20" + "node": ">=20.8.1" }, "peerDependencies": { "semantic-release": ">=20.1.0" @@ -4733,9 +5064,9 @@ "dev": true }, "node_modules/@semantic-release/release-notes-generator": { - "version": "12.1.0", - "resolved": "https://registry.npmjs.org/@semantic-release/release-notes-generator/-/release-notes-generator-12.1.0.tgz", - "integrity": "sha512-g6M9AjUKAZUZnxaJZnouNBeDNTCUrJ5Ltj+VJ60gJeDaRRahcHsry9HW8yKrnKkKNkx5lbWiEP1FPMqVNQz8Kg==", + "version": "13.0.0", + "resolved": "https://registry.npmjs.org/@semantic-release/release-notes-generator/-/release-notes-generator-13.0.0.tgz", + "integrity": "sha512-LEeZWb340keMYuREMyxrODPXJJ0JOL8D/mCl74B4LdzbxhtXV2LrPN2QBEcGJrlQhoqLO0RhxQb6masHytKw+A==", "dev": true, "dependencies": { "conventional-changelog-angular": "^7.0.0", @@ -4750,7 +5081,7 @@ "read-pkg-up": "^11.0.0" }, "engines": { - "node": "^18.17 || >=20.6.1" + "node": ">=20.8.1" }, "peerDependencies": { "semantic-release": ">=20.1.0" @@ -4854,6 +5185,15 @@ "@babel/types": "^7.20.7" } }, + "node_modules/@types/conventional-commits-parser": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@types/conventional-commits-parser/-/conventional-commits-parser-5.0.0.tgz", + "integrity": "sha512-loB369iXNmAZglwWATL+WRe+CRMmmBPtpolYzIebFaX4YA3x+BEfLqhUAV9WanycKI3TG1IMr5bMJDajDKLlUQ==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, "node_modules/@types/estree": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", @@ -4964,12 +5304,6 @@ "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", "dev": true }, - "node_modules/@types/minimist": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-hov8bUuiLiyFPGyFPE1lwWhmzYbirOXQNNo40+y3zow8aFVTeyn3VWL0VFFfdNddA8S4Vf0Tc062rzyNr7Paag==", - "dev": true - }, "node_modules/@types/node": { "version": "20.12.2", "resolved": "https://registry.npmjs.org/@types/node/-/node-20.12.2.tgz", @@ -5031,16 +5365,16 @@ "dev": true }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.21.0.tgz", - "integrity": "sha512-oy9+hTPCUFpngkEZUSzbf9MxI65wbKFoQYsgPdILTfbUldp5ovUuphZVe4i30emU9M/kP+T64Di0mxl7dSw3MA==", + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-7.4.0.tgz", + "integrity": "sha512-yHMQ/oFaM7HZdVrVm/M2WHaNPgyuJH4WelkSVEWSSsir34kxW2kDJCxlXRhhGWEsMN0WAW/vLpKfKVcm8k+MPw==", "dev": true, "dependencies": { "@eslint-community/regexpp": "^4.5.1", - "@typescript-eslint/scope-manager": "6.21.0", - "@typescript-eslint/type-utils": "6.21.0", - "@typescript-eslint/utils": "6.21.0", - "@typescript-eslint/visitor-keys": "6.21.0", + "@typescript-eslint/scope-manager": "7.4.0", + "@typescript-eslint/type-utils": "7.4.0", + "@typescript-eslint/utils": "7.4.0", + "@typescript-eslint/visitor-keys": "7.4.0", "debug": "^4.3.4", "graphemer": "^1.4.0", "ignore": "^5.2.4", @@ -5049,15 +5383,15 @@ "ts-api-utils": "^1.0.1" }, "engines": { - "node": "^16.0.0 || >=18.0.0" + "node": "^18.18.0 || >=20.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "@typescript-eslint/parser": "^6.0.0 || ^6.0.0-alpha", - "eslint": "^7.0.0 || ^8.0.0" + "@typescript-eslint/parser": "^7.0.0", + "eslint": "^8.56.0" }, "peerDependenciesMeta": { "typescript": { @@ -5099,26 +5433,26 @@ "dev": true }, "node_modules/@typescript-eslint/parser": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.21.0.tgz", - "integrity": "sha512-tbsV1jPne5CkFQCgPBcDOt30ItF7aJoZL997JSF7MhGQqOeT3svWRYxiqlfA5RUdlHN6Fi+EI9bxqbdyAUZjYQ==", + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-7.4.0.tgz", + "integrity": "sha512-ZvKHxHLusweEUVwrGRXXUVzFgnWhigo4JurEj0dGF1tbcGh6buL+ejDdjxOQxv6ytcY1uhun1p2sm8iWStlgLQ==", "dev": true, "dependencies": { - "@typescript-eslint/scope-manager": "6.21.0", - "@typescript-eslint/types": "6.21.0", - "@typescript-eslint/typescript-estree": "6.21.0", - "@typescript-eslint/visitor-keys": "6.21.0", + "@typescript-eslint/scope-manager": "7.4.0", + "@typescript-eslint/types": "7.4.0", + "@typescript-eslint/typescript-estree": "7.4.0", + "@typescript-eslint/visitor-keys": "7.4.0", "debug": "^4.3.4" }, "engines": { - "node": "^16.0.0 || >=18.0.0" + "node": "^18.18.0 || >=20.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "eslint": "^7.0.0 || ^8.0.0" + "eslint": "^8.56.0" }, "peerDependenciesMeta": { "typescript": { @@ -5127,16 +5461,16 @@ } }, "node_modules/@typescript-eslint/scope-manager": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.21.0.tgz", - "integrity": "sha512-OwLUIWZJry80O99zvqXVEioyniJMa+d2GrqpUTqi5/v5D5rOrppJVBPa0yKCblcigC0/aYAzxxqQ1B+DS2RYsg==", + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.4.0.tgz", + "integrity": "sha512-68VqENG5HK27ypafqLVs8qO+RkNc7TezCduYrx8YJpXq2QGZ30vmNZGJJJC48+MVn4G2dCV8m5ZTVnzRexTVtw==", "dev": true, "dependencies": { - "@typescript-eslint/types": "6.21.0", - "@typescript-eslint/visitor-keys": "6.21.0" + "@typescript-eslint/types": "7.4.0", + "@typescript-eslint/visitor-keys": "7.4.0" }, "engines": { - "node": "^16.0.0 || >=18.0.0" + "node": "^18.18.0 || >=20.0.0" }, "funding": { "type": "opencollective", @@ -5144,25 +5478,25 @@ } }, "node_modules/@typescript-eslint/type-utils": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-6.21.0.tgz", - "integrity": "sha512-rZQI7wHfao8qMX3Rd3xqeYSMCL3SoiSQLBATSiVKARdFGCYSRvmViieZjqc58jKgs8Y8i9YvVVhRbHSTA4VBag==", + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-7.4.0.tgz", + "integrity": "sha512-247ETeHgr9WTRMqHbbQdzwzhuyaJ8dPTuyuUEMANqzMRB1rj/9qFIuIXK7l0FX9i9FXbHeBQl/4uz6mYuCE7Aw==", "dev": true, "dependencies": { - "@typescript-eslint/typescript-estree": "6.21.0", - "@typescript-eslint/utils": "6.21.0", + "@typescript-eslint/typescript-estree": "7.4.0", + "@typescript-eslint/utils": "7.4.0", "debug": "^4.3.4", "ts-api-utils": "^1.0.1" }, "engines": { - "node": "^16.0.0 || >=18.0.0" + "node": "^18.18.0 || >=20.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "eslint": "^7.0.0 || ^8.0.0" + "eslint": "^8.56.0" }, "peerDependenciesMeta": { "typescript": { @@ -5171,12 +5505,12 @@ } }, "node_modules/@typescript-eslint/types": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.21.0.tgz", - "integrity": "sha512-1kFmZ1rOm5epu9NZEZm1kckCDGj5UJEf7P1kliH4LKu/RkwpsfqqGmY2OOcUs18lSlQBKLDYBOGxRVtrMN5lpg==", + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.4.0.tgz", + "integrity": "sha512-mjQopsbffzJskos5B4HmbsadSJQWaRK0UxqQ7GuNA9Ga4bEKeiO6b2DnB6cM6bpc8lemaPseh0H9B/wyg+J7rw==", "dev": true, "engines": { - "node": "^16.0.0 || >=18.0.0" + "node": "^18.18.0 || >=20.0.0" }, "funding": { "type": "opencollective", @@ -5184,13 +5518,13 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.21.0.tgz", - "integrity": "sha512-6npJTkZcO+y2/kr+z0hc4HwNfrrP4kNYh57ek7yCNlrBjWQ1Y0OS7jiZTkgumrvkX5HkEKXFZkkdFNkaW2wmUQ==", + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.4.0.tgz", + "integrity": "sha512-A99j5AYoME/UBQ1ucEbbMEmGkN7SE0BvZFreSnTd1luq7yulcHdyGamZKizU7canpGDWGJ+Q6ZA9SyQobipePg==", "dev": true, "dependencies": { - "@typescript-eslint/types": "6.21.0", - "@typescript-eslint/visitor-keys": "6.21.0", + "@typescript-eslint/types": "7.4.0", + "@typescript-eslint/visitor-keys": "7.4.0", "debug": "^4.3.4", "globby": "^11.1.0", "is-glob": "^4.0.3", @@ -5199,7 +5533,7 @@ "ts-api-utils": "^1.0.1" }, "engines": { - "node": "^16.0.0 || >=18.0.0" + "node": "^18.18.0 || >=20.0.0" }, "funding": { "type": "opencollective", @@ -5245,28 +5579,28 @@ "dev": true }, "node_modules/@typescript-eslint/utils": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.21.0.tgz", - "integrity": "sha512-NfWVaC8HP9T8cbKQxHcsJBY5YE1O33+jpMwN45qzWWaPDZgLIbo12toGMWnmhvCpd3sIxkpDw3Wv1B3dYrbDQQ==", + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.4.0.tgz", + "integrity": "sha512-NQt9QLM4Tt8qrlBVY9lkMYzfYtNz8/6qwZg8pI3cMGlPnj6mOpRxxAm7BMJN9K0AiY+1BwJ5lVC650YJqYOuNg==", "dev": true, "dependencies": { "@eslint-community/eslint-utils": "^4.4.0", "@types/json-schema": "^7.0.12", "@types/semver": "^7.5.0", - "@typescript-eslint/scope-manager": "6.21.0", - "@typescript-eslint/types": "6.21.0", - "@typescript-eslint/typescript-estree": "6.21.0", + "@typescript-eslint/scope-manager": "7.4.0", + "@typescript-eslint/types": "7.4.0", + "@typescript-eslint/typescript-estree": "7.4.0", "semver": "^7.5.4" }, "engines": { - "node": "^16.0.0 || >=18.0.0" + "node": "^18.18.0 || >=20.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "eslint": "^7.0.0 || ^8.0.0" + "eslint": "^8.56.0" } }, "node_modules/@typescript-eslint/utils/node_modules/lru-cache": { @@ -5303,16 +5637,16 @@ "dev": true }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.21.0.tgz", - "integrity": "sha512-JJtkDduxLi9bivAB+cYOVMtbkqdPOhZ+ZI5LC47MIRrDV4Yn2o+ZnW10Nkmr28xRpSpdJ6Sm42Hjf2+REYXm0A==", + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.4.0.tgz", + "integrity": "sha512-0zkC7YM0iX5Y41homUUeW1CHtZR01K3ybjM1l6QczoMuay0XKtrb93kv95AxUGwdjGr64nNqnOCwmEl616N8CA==", "dev": true, "dependencies": { - "@typescript-eslint/types": "6.21.0", + "@typescript-eslint/types": "7.4.0", "eslint-visitor-keys": "^3.4.1" }, "engines": { - "node": "^16.0.0 || >=18.0.0" + "node": "^18.18.0 || >=20.0.0" }, "funding": { "type": "opencollective", @@ -5675,15 +6009,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/arrify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", - "integrity": "sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/asynckit": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", @@ -6125,23 +6450,6 @@ "node": ">=6" } }, - "node_modules/camelcase-keys": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-6.2.2.tgz", - "integrity": "sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==", - "dev": true, - "dependencies": { - "camelcase": "^5.3.1", - "map-obj": "^4.0.0", - "quick-lru": "^4.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/caniuse-lite": { "version": "1.0.30001603", "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001603.tgz", @@ -6824,15 +7132,15 @@ "dev": true }, "node_modules/cosmiconfig": { - "version": "8.3.6", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.3.6.tgz", - "integrity": "sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA==", + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-9.0.0.tgz", + "integrity": "sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==", "dev": true, "dependencies": { + "env-paths": "^2.2.1", "import-fresh": "^3.3.0", "js-yaml": "^4.1.0", - "parse-json": "^5.2.0", - "path-type": "^4.0.0" + "parse-json": "^5.2.0" }, "engines": { "node": ">=14" @@ -7023,12 +7331,15 @@ "dev": true }, "node_modules/dargs": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/dargs/-/dargs-7.0.0.tgz", - "integrity": "sha512-2iy1EkLdlBzQGvbweYRFxmFath8+K7+AKB0TlhHWkNuH+TmovaMH/Wp7V7R4u7f4SnX3OgLsU9t1NI9ioDnUpg==", + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/dargs/-/dargs-8.1.0.tgz", + "integrity": "sha512-wAV9QHOsNbwnWdNW2FYvE1P56wtgSbM+3SZcdGiWQILwVjACCXDCI3Ai8QlCjMDB8YK5zySiXZYBiwGmNY3lnw==", "dev": true, "engines": { - "node": ">=8" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/data-urls": { @@ -7113,40 +7424,6 @@ } } }, - "node_modules/decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/decamelize-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/decamelize-keys/-/decamelize-keys-1.1.1.tgz", - "integrity": "sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg==", - "dev": true, - "dependencies": { - "decamelize": "^1.1.0", - "map-obj": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/decamelize-keys/node_modules/map-obj": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", - "integrity": "sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/decimal.js": { "version": "10.4.3", "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.4.3.tgz", @@ -7807,18 +8084,17 @@ } }, "node_modules/eslint-config-airbnb-typescript": { - "version": "17.1.0", - "resolved": "https://registry.npmjs.org/eslint-config-airbnb-typescript/-/eslint-config-airbnb-typescript-17.1.0.tgz", - "integrity": "sha512-GPxI5URre6dDpJ0CtcthSZVBAfI+Uw7un5OYNVxP2EYi3H81Jw701yFP7AU+/vCE7xBtFmjge7kfhhk4+RAiig==", + "version": "18.0.0", + "resolved": "https://registry.npmjs.org/eslint-config-airbnb-typescript/-/eslint-config-airbnb-typescript-18.0.0.tgz", + "integrity": "sha512-oc+Lxzgzsu8FQyFVa4QFaVKiitTYiiW3frB9KYW5OWdPrqFc7FzxgB20hP4cHMlr+MBzGcLl3jnCOVOydL9mIg==", "dev": true, "dependencies": { "eslint-config-airbnb-base": "^15.0.0" }, "peerDependencies": { - "@typescript-eslint/eslint-plugin": "^5.13.0 || ^6.0.0", - "@typescript-eslint/parser": "^5.0.0 || ^6.0.0", - "eslint": "^7.32.0 || ^8.2.0", - "eslint-plugin-import": "^2.25.3" + "@typescript-eslint/eslint-plugin": "^7.0.0", + "@typescript-eslint/parser": "^7.0.0", + "eslint": "^8.56.0" } }, "node_modules/eslint-config-prettier": { @@ -8728,308 +9004,48 @@ "integrity": "sha512-rnCVNfkTL8tdNryFuaY0fYiBWEBcgF748O6ZI61rslBvr2o7U65c2/6npCRqH40vuAhtgtDiqLTJjBVdrejCzA==", "dev": true, "dependencies": { - "argv-formatter": "~1.0.0", - "spawn-error-forwarder": "~1.0.0", - "split2": "~1.0.0", - "stream-combiner2": "~1.1.1", - "through2": "~2.0.0", - "traverse": "~0.6.6" - } - }, - "node_modules/git-log-parser/node_modules/split2": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/split2/-/split2-1.0.0.tgz", - "integrity": "sha512-NKywug4u4pX/AZBB1FCPzZ6/7O+Xhz1qMVbzTvvKvikjO99oPN87SkK08mEY9P63/5lWjK+wgOOgApnTg5r6qg==", - "dev": true, - "dependencies": { - "through2": "~2.0.0" - } - }, - "node_modules/git-log-parser/node_modules/through2": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", - "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", - "dev": true, - "dependencies": { - "readable-stream": "~2.3.6", - "xtend": "~4.0.1" - } - }, - "node_modules/git-raw-commits": { - "version": "2.0.11", - "resolved": "https://registry.npmjs.org/git-raw-commits/-/git-raw-commits-2.0.11.tgz", - "integrity": "sha512-VnctFhw+xfj8Va1xtfEqCUD2XDrbAPSJx+hSrE5K7fGdjZruW7XV+QOrN7LF/RJyvspRiD2I0asWsxFp0ya26A==", - "dev": true, - "dependencies": { - "dargs": "^7.0.0", - "lodash": "^4.17.15", - "meow": "^8.0.0", - "split2": "^3.0.0", - "through2": "^4.0.0" - }, - "bin": { - "git-raw-commits": "cli.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/git-raw-commits/node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, - "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/git-raw-commits/node_modules/hosted-git-info": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", - "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/git-raw-commits/node_modules/locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, - "dependencies": { - "p-locate": "^4.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/git-raw-commits/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/git-raw-commits/node_modules/meow": { - "version": "8.1.2", - "resolved": "https://registry.npmjs.org/meow/-/meow-8.1.2.tgz", - "integrity": "sha512-r85E3NdZ+mpYk1C6RjPFEMSE+s1iZMuHtsHAqY0DT3jZczl0diWUZ8g6oU7h0M9cD2EL+PzaYghhCLzR0ZNn5Q==", - "dev": true, - "dependencies": { - "@types/minimist": "^1.2.0", - "camelcase-keys": "^6.2.2", - "decamelize-keys": "^1.1.0", - "hard-rejection": "^2.1.0", - "minimist-options": "4.1.0", - "normalize-package-data": "^3.0.0", - "read-pkg-up": "^7.0.1", - "redent": "^3.0.0", - "trim-newlines": "^3.0.0", - "type-fest": "^0.18.0", - "yargs-parser": "^20.2.3" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/git-raw-commits/node_modules/normalize-package-data": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.3.tgz", - "integrity": "sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==", - "dev": true, - "dependencies": { - "hosted-git-info": "^4.0.1", - "is-core-module": "^2.5.0", - "semver": "^7.3.4", - "validate-npm-package-license": "^3.0.1" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/git-raw-commits/node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, - "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/git-raw-commits/node_modules/p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, - "dependencies": { - "p-limit": "^2.2.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/git-raw-commits/node_modules/read-pkg": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", - "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", - "dev": true, - "dependencies": { - "@types/normalize-package-data": "^2.4.0", - "normalize-package-data": "^2.5.0", - "parse-json": "^5.0.0", - "type-fest": "^0.6.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/git-raw-commits/node_modules/read-pkg-up": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", - "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", - "dev": true, - "dependencies": { - "find-up": "^4.1.0", - "read-pkg": "^5.2.0", - "type-fest": "^0.8.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/git-raw-commits/node_modules/read-pkg-up/node_modules/type-fest": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", - "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/git-raw-commits/node_modules/read-pkg/node_modules/hosted-git-info": { - "version": "2.8.9", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", - "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", - "dev": true - }, - "node_modules/git-raw-commits/node_modules/read-pkg/node_modules/normalize-package-data": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", - "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", - "dev": true, - "dependencies": { - "hosted-git-info": "^2.1.4", - "resolve": "^1.10.0", - "semver": "2 || 3 || 4 || 5", - "validate-npm-package-license": "^3.0.1" - } - }, - "node_modules/git-raw-commits/node_modules/read-pkg/node_modules/semver": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", - "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", - "dev": true, - "bin": { - "semver": "bin/semver" - } - }, - "node_modules/git-raw-commits/node_modules/read-pkg/node_modules/type-fest": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", - "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/git-raw-commits/node_modules/readable-stream": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", - "dev": true, - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/git-raw-commits/node_modules/semver": { - "version": "7.6.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", - "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" + "argv-formatter": "~1.0.0", + "spawn-error-forwarder": "~1.0.0", + "split2": "~1.0.0", + "stream-combiner2": "~1.1.1", + "through2": "~2.0.0", + "traverse": "~0.6.6" } }, - "node_modules/git-raw-commits/node_modules/split2": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/split2/-/split2-3.2.2.tgz", - "integrity": "sha512-9NThjpgZnifTkJpzTZ7Eue85S49QwpNhZTq6GRJwObb6jnLFNGB7Qm73V5HewTROPyxD0C29xqmaI68bQtV+hg==", + "node_modules/git-log-parser/node_modules/split2": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/split2/-/split2-1.0.0.tgz", + "integrity": "sha512-NKywug4u4pX/AZBB1FCPzZ6/7O+Xhz1qMVbzTvvKvikjO99oPN87SkK08mEY9P63/5lWjK+wgOOgApnTg5r6qg==", "dev": true, "dependencies": { - "readable-stream": "^3.0.0" + "through2": "~2.0.0" } }, - "node_modules/git-raw-commits/node_modules/type-fest": { - "version": "0.18.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.18.1.tgz", - "integrity": "sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==", + "node_modules/git-log-parser/node_modules/through2": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "dependencies": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" } }, - "node_modules/git-raw-commits/node_modules/yallist": { + "node_modules/git-raw-commits": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, - "node_modules/git-raw-commits/node_modules/yargs-parser": { - "version": "20.2.9", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", - "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", + "resolved": "https://registry.npmjs.org/git-raw-commits/-/git-raw-commits-4.0.0.tgz", + "integrity": "sha512-ICsMM1Wk8xSGMowkOmPrzo2Fgmfo4bMHLNX6ytHjajRJUqvHOw/TFapQ+QG75c3X/tTDDhOSRPGC52dDbNM8FQ==", "dev": true, + "dependencies": { + "dargs": "^8.0.0", + "meow": "^12.0.1", + "split2": "^4.0.0" + }, + "bin": { + "git-raw-commits": "cli.mjs" + }, "engines": { - "node": ">=10" + "node": ">=16" } }, "node_modules/glob": { @@ -9086,16 +9102,28 @@ "node": "*" } }, - "node_modules/global-dirs": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-0.1.1.tgz", - "integrity": "sha512-NknMLn7F2J7aflwFOlGdNIuCDpN3VGoSoB+aap3KABFWbHVn1TCgFC+np23J8W2BiZbjfEw3BFBycSMv1AFblg==", + "node_modules/global-directory": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/global-directory/-/global-directory-4.0.1.tgz", + "integrity": "sha512-wHTUcDUoZ1H5/0iVqEudYW4/kAlN5cZ3j/bXn0Dpbizl9iaUVeWSHqiOjsgk6OW2bkLclbBjzewBz6weQ1zA2Q==", "dev": true, "dependencies": { - "ini": "^1.3.4" + "ini": "4.1.1" }, "engines": { - "node": ">=4" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/global-directory/node_modules/ini": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ini/-/ini-4.1.1.tgz", + "integrity": "sha512-QQnnxNyfvmHFIsj7gkPcYymR8Jdw/o7mp5ZFihxn6h8Ci6fh3Dx4E1gPjpQEpIuPo9XVNY/ZUwh4BPMjGyL01g==", + "dev": true, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, "node_modules/globals": { @@ -9186,15 +9214,6 @@ "uglify-js": "^3.1.4" } }, - "node_modules/hard-rejection": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/hard-rejection/-/hard-rejection-2.1.0.tgz", - "integrity": "sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==", - "dev": true, - "engines": { - "node": ">=6" - } - }, "node_modules/has-bigints": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", @@ -9983,15 +10002,6 @@ "node": ">=8" } }, - "node_modules/is-plain-obj": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", - "integrity": "sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/is-potential-custom-element-name": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", @@ -12267,15 +12277,6 @@ "json-buffer": "3.0.1" } }, - "node_modules/kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/kleur": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", @@ -12609,12 +12610,6 @@ "integrity": "sha512-TM9YBvyC84ZxE3rgfefxUWiQKLilstD6k7PTGt6wfbtXF8ixIJLOL3VYyV/z+ZiPLsVxAsKAFVwWlWeb2Y8Yyw==", "dev": true }, - "node_modules/lodash.isfunction": { - "version": "3.0.9", - "resolved": "https://registry.npmjs.org/lodash.isfunction/-/lodash.isfunction-3.0.9.tgz", - "integrity": "sha512-AirXNj15uRIMMPihnkInB4i3NHeb4iBtNg9WRWuK2o31S+ePwwNmDPaTL3o7dTJ+VXNZim7rFs4rxN4YU1oUJw==", - "dev": true - }, "node_modules/lodash.isplainobject": { "version": "4.0.6", "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", @@ -12859,18 +12854,6 @@ "tmpl": "1.0.5" } }, - "node_modules/map-obj": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-4.3.0.tgz", - "integrity": "sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==", - "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/marked": { "version": "12.0.1", "resolved": "https://registry.npmjs.org/marked/-/marked-12.0.1.tgz", @@ -13012,15 +12995,6 @@ "node": ">=6" } }, - "node_modules/min-indent": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", - "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==", - "dev": true, - "engines": { - "node": ">=4" - } - }, "node_modules/minimatch": { "version": "9.0.3", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", @@ -13045,20 +13019,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/minimist-options": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/minimist-options/-/minimist-options-4.1.0.tgz", - "integrity": "sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==", - "dev": true, - "dependencies": { - "arrify": "^1.0.1", - "is-plain-obj": "^1.1.0", - "kind-of": "^6.0.3" - }, - "engines": { - "node": ">= 6" - } - }, "node_modules/minipass": { "version": "7.0.4", "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", @@ -16786,15 +16746,6 @@ } ] }, - "node_modules/quick-lru": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-4.0.1.tgz", - "integrity": "sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/rc": { "version": "1.2.8", "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", @@ -16930,19 +16881,6 @@ "node": ">=8.10.0" } }, - "node_modules/redent": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz", - "integrity": "sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==", - "dev": true, - "dependencies": { - "indent-string": "^4.0.0", - "strip-indent": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/redeyed": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/redeyed/-/redeyed-2.1.1.tgz", @@ -17112,18 +17050,6 @@ "node": ">=8" } }, - "node_modules/resolve-global": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/resolve-global/-/resolve-global-1.0.0.tgz", - "integrity": "sha512-zFa12V4OLtT5XUX/Q4VLvTfBf+Ok0SPc1FNGM/z9ctUdiU618qwKpWnd0CHs3+RqROfyEg/DhuHbMWYqcgljEw==", - "dev": true, - "dependencies": { - "global-dirs": "^0.1.1" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/resolve.exports": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-2.0.2.tgz", @@ -17345,27 +17271,6 @@ "node": ">=20.8.1" } }, - "node_modules/semantic-release/node_modules/@semantic-release/commit-analyzer": { - "version": "12.0.0", - "resolved": "https://registry.npmjs.org/@semantic-release/commit-analyzer/-/commit-analyzer-12.0.0.tgz", - "integrity": "sha512-qG+md5gdes+xa8zP7lIo1fWE17zRdO8yMCaxh9lyL65TQleoSv8WHHOqRURfghTytUh+NpkSyBprQ5hrkxOKVQ==", - "dev": true, - "dependencies": { - "conventional-changelog-angular": "^7.0.0", - "conventional-commits-filter": "^4.0.0", - "conventional-commits-parser": "^5.0.0", - "debug": "^4.0.0", - "import-from-esm": "^1.0.3", - "lodash-es": "^4.17.21", - "micromatch": "^4.0.2" - }, - "engines": { - "node": ">=20.8.1" - }, - "peerDependencies": { - "semantic-release": ">=20.1.0" - } - }, "node_modules/semantic-release/node_modules/@semantic-release/error": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/@semantic-release/error/-/error-4.0.0.tgz", @@ -17375,69 +17280,6 @@ "node": ">=18" } }, - "node_modules/semantic-release/node_modules/@semantic-release/npm": { - "version": "12.0.0", - "resolved": "https://registry.npmjs.org/@semantic-release/npm/-/npm-12.0.0.tgz", - "integrity": "sha512-72TVYQCH9NvVsO/y13eF8vE4bNnfls518+4KcFwJUKi7AtA/ZXoNgSg9gTTfw5eMZMkiH0izUrpGXgZE/cSQhA==", - "dev": true, - "dependencies": { - "@semantic-release/error": "^4.0.0", - "aggregate-error": "^5.0.0", - "execa": "^8.0.0", - "fs-extra": "^11.0.0", - "lodash-es": "^4.17.21", - "nerf-dart": "^1.0.0", - "normalize-url": "^8.0.0", - "npm": "^10.5.0", - "rc": "^1.2.8", - "read-pkg": "^9.0.0", - "registry-auth-token": "^5.0.0", - "semver": "^7.1.2", - "tempy": "^3.0.0" - }, - "engines": { - "node": ">=20.8.1" - }, - "peerDependencies": { - "semantic-release": ">=20.1.0" - } - }, - "node_modules/semantic-release/node_modules/@semantic-release/release-notes-generator": { - "version": "13.0.0", - "resolved": "https://registry.npmjs.org/@semantic-release/release-notes-generator/-/release-notes-generator-13.0.0.tgz", - "integrity": "sha512-LEeZWb340keMYuREMyxrODPXJJ0JOL8D/mCl74B4LdzbxhtXV2LrPN2QBEcGJrlQhoqLO0RhxQb6masHytKw+A==", - "dev": true, - "dependencies": { - "conventional-changelog-angular": "^7.0.0", - "conventional-changelog-writer": "^7.0.0", - "conventional-commits-filter": "^4.0.0", - "conventional-commits-parser": "^5.0.0", - "debug": "^4.0.0", - "get-stream": "^7.0.0", - "import-from-esm": "^1.0.3", - "into-stream": "^7.0.0", - "lodash-es": "^4.17.21", - "read-pkg-up": "^11.0.0" - }, - "engines": { - "node": ">=20.8.1" - }, - "peerDependencies": { - "semantic-release": ">=20.1.0" - } - }, - "node_modules/semantic-release/node_modules/@semantic-release/release-notes-generator/node_modules/get-stream": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-7.0.1.tgz", - "integrity": "sha512-3M8C1EOFN6r8AMUhwUAACIoXZJEOufDU5+0gFFN5uNs6XYOralD2Pqkl7m046va6x77FwposWXbAhPPIOus7mQ==", - "dev": true, - "engines": { - "node": ">=16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/semantic-release/node_modules/aggregate-error": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-5.0.0.tgz", @@ -17469,32 +17311,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/semantic-release/node_modules/cosmiconfig": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-9.0.0.tgz", - "integrity": "sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==", - "dev": true, - "dependencies": { - "env-paths": "^2.2.1", - "import-fresh": "^3.3.0", - "js-yaml": "^4.1.0", - "parse-json": "^5.2.0" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/d-fischer" - }, - "peerDependencies": { - "typescript": ">=4.9.5" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, "node_modules/semantic-release/node_modules/escape-string-regexp": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz", @@ -18253,18 +18069,6 @@ "node": ">=6" } }, - "node_modules/strip-indent": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz", - "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==", - "dev": true, - "dependencies": { - "min-indent": "^1.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/strip-json-comments": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", @@ -18542,29 +18346,6 @@ "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", "dev": true }, - "node_modules/through2": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/through2/-/through2-4.0.2.tgz", - "integrity": "sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw==", - "dev": true, - "dependencies": { - "readable-stream": "3" - } - }, - "node_modules/through2/node_modules/readable-stream": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", - "dev": true, - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, "node_modules/tmpl": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", @@ -18647,15 +18428,6 @@ "tree-kill": "cli.js" } }, - "node_modules/trim-newlines": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-3.0.1.tgz", - "integrity": "sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/ts-api-utils": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.3.0.tgz", @@ -18945,9 +18717,9 @@ } }, "node_modules/typescript": { - "version": "5.3.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.3.3.tgz", - "integrity": "sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw==", + "version": "5.4.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.4.3.tgz", + "integrity": "sha512-KrPd3PKaCLr78MalgiwJnA25Nm8HAmdwN3mYUYZgG/wizIo9EainNVQI9/yDavtVFRN2h3k8uf3GLHuhDMgEHg==", "dev": true, "bin": { "tsc": "bin/tsc", diff --git a/package.json b/package.json index a58cbd4ed..5ebe9a4f8 100644 --- a/package.json +++ b/package.json @@ -53,25 +53,25 @@ "@babel/plugin-transform-modules-commonjs": "^7.18.2", "@babel/preset-env": "^7.18.2", "@babel/preset-typescript": "^7.17.12", - "@commitlint/cli": "^18.6.0", - "@commitlint/config-conventional": "^18.6.0", + "@commitlint/cli": "^19.0.0", + "@commitlint/config-conventional": "^19.0.0", "@semantic-release/changelog": "^6.0.1", - "@semantic-release/commit-analyzer": "^11.1.0", + "@semantic-release/commit-analyzer": "^12.0.0", "@semantic-release/git": "^10.0.1", - "@semantic-release/npm": "^11.0.2", - "@semantic-release/release-notes-generator": "^12.1.0", + "@semantic-release/npm": "^12.0.0", + "@semantic-release/release-notes-generator": "^13.0.0", "@types/isomorphic-fetch": "^0.0.39", "@types/jest": "^29.5.0", "@types/jest-json-schema": "^6.1.1", "@types/pako": "^2.0.0", "@types/url-join": "^4.0.1", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "@typescript-eslint/parser": "^6.21.0", + "@typescript-eslint/eslint-plugin": "^7.4.0", + "@typescript-eslint/parser": "^7.4.0", "ajv": "^8.12.0", "ajv-keywords": "^5.1.0", "eslint": "^8.56.0", "eslint-config-airbnb-base": "^15.0.0", - "eslint-config-airbnb-typescript": "^17.0.0", + "eslint-config-airbnb-typescript": "^18.0.0", "eslint-config-prettier": "^9.1.0", "eslint-plugin-import": "^2.26.0", "eslint-plugin-prettier": "^5.1.3", @@ -87,10 +87,10 @@ "semantic-release": "^23.0.5", "tsup": "^8.0.2", "typedoc": "^0.25.7", - "typescript": "~5.3.0" + "typescript": "~5.4.0" }, "dependencies": { - "@noble/curves": "~1.3.0", + "@noble/curves": "~1.4.0", "@scure/base": "~1.1.3", "@scure/starknet": "~1.0.0", "abi-wan-kanabi": "^2.2.2", From abf87d195c6723d66257d7de608c1a4fb2fc8705 Mon Sep 17 00:00:00 2001 From: Dhruv Kelawala Date: Wed, 3 Apr 2024 00:49:02 +0100 Subject: [PATCH 25/37] chore: expose data gas consumed and data gas price for 0.7 rpc --- src/account/default.ts | 2 ++ src/types/provider/response.ts | 2 ++ src/utils/responseParser/rpc.ts | 14 +++++++++----- 3 files changed, 13 insertions(+), 5 deletions(-) diff --git a/src/account/default.ts b/src/account/default.ts index ee0899b01..02c372340 100644 --- a/src/account/default.ts +++ b/src/account/default.ts @@ -628,6 +628,8 @@ export class Account extends Provider implements AccountInterface { unit: 'FRI', suggestedMaxFee: ZERO, resourceBounds: estimateFeeToBounds(ZERO), + data_gas_consumed: 0n, + data_gas_price: 0n, }; break; } diff --git a/src/types/provider/response.ts b/src/types/provider/response.ts index 2dbdae650..2bac50a04 100644 --- a/src/types/provider/response.ts +++ b/src/types/provider/response.ts @@ -121,6 +121,8 @@ export interface EstimateFeeResponse { unit: PRICE_UNIT; suggestedMaxFee: bigint; resourceBounds: ResourceBounds; + data_gas_consumed: bigint; + data_gas_price: bigint; } export type EstimateFeeResponseBulk = Array; diff --git a/src/utils/responseParser/rpc.ts b/src/utils/responseParser/rpc.ts index a30dba2c9..996b31a75 100644 --- a/src/utils/responseParser/rpc.ts +++ b/src/utils/responseParser/rpc.ts @@ -6,20 +6,20 @@ import { BlockWithTxHashes, ContractClassPayload, ContractClassResponse, - TransactionReceipt, EstimateFeeResponse, EstimateFeeResponseBulk, - GetBlockResponse, FeeEstimate, + GetBlockResponse, + GetTxReceiptResponseWithoutHelper, + RpcProviderOptions, SimulateTransactionResponse, SimulatedTransaction, - RpcProviderOptions, - GetTxReceiptResponseWithoutHelper, + TransactionReceipt, } from '../../types/provider'; import { toBigInt } from '../num'; +import { isString } from '../shortString'; import { estimateFeeToBounds, estimatedFeeToMaxFee } from '../stark'; import { ResponseParser } from '.'; -import { isString } from '../shortString'; export class RPCResponseParser implements @@ -80,6 +80,8 @@ export class RPCResponseParser unit: val.unit, suggestedMaxFee: this.estimatedFeeToMaxFee(val.overall_fee), resourceBounds: this.estimateFeeToBounds(val), + data_gas_consumed: val.data_gas_consumed ? toBigInt(val.data_gas_consumed) : 0n, + data_gas_price: val.data_gas_price ? toBigInt(val.data_gas_price) : 0n, }; } @@ -91,6 +93,8 @@ export class RPCResponseParser unit: val.unit, suggestedMaxFee: this.estimatedFeeToMaxFee(val.overall_fee), resourceBounds: this.estimateFeeToBounds(val), + data_gas_consumed: val.data_gas_consumed ? toBigInt(val.data_gas_consumed) : 0n, + data_gas_price: val.data_gas_price ? toBigInt(val.data_gas_price) : 0n, })); } From d002baea0abc1de3ac6e87a671f3dec3757437b3 Mon Sep 17 00:00:00 2001 From: Luka Saric <32763694+lukasaric@users.noreply.github.com> Date: Mon, 6 May 2024 12:22:34 +0200 Subject: [PATCH 26/37] test: Improve tests performance (#1121) * test: fix transaction retry interval fallback for devnet tests * test: remove test.only --- __tests__/config/fixtures.ts | 25 ++++++++----------------- src/channel/rpc_0_7.ts | 21 ++++++++++++++++++--- src/provider/rpc.ts | 1 + src/types/provider/configuration.ts | 1 + src/utils/url.ts | 2 +- 5 files changed, 29 insertions(+), 21 deletions(-) diff --git a/__tests__/config/fixtures.ts b/__tests__/config/fixtures.ts index bb8132383..d02a6008b 100644 --- a/__tests__/config/fixtures.ts +++ b/__tests__/config/fixtures.ts @@ -2,12 +2,7 @@ import fs from 'node:fs'; import path from 'node:path'; import { Account, Provider, ProviderInterface, RpcProvider, json } from '../../src'; -import { - CompiledSierra, - CompiledSierraCasm, - LegacyCompiledContract, - waitForTransactionOptions, -} from '../../src/types'; +import { CompiledSierra, CompiledSierraCasm, LegacyCompiledContract } from '../../src/types'; import { ETransactionVersion } from '../../src/types/api'; import { toHex } from '../../src/utils/num'; @@ -73,22 +68,18 @@ export const compiledTestRejectSierra = readContractSierra('cairo/testReject/tes export const compiledTestRejectCasm = readContractSierraCasm('cairo/testReject/test_reject'); export const compiledSidMulticall = readContractSierra('starknetId/multicall/multicall.sierra'); export const compiledSidMulticallCasm = readContractSierraCasm('starknetId/multicall/multicall'); + export function getTestProvider(isProvider?: true): ProviderInterface; export function getTestProvider(isProvider?: false): RpcProvider; export function getTestProvider(isProvider: boolean = true): ProviderInterface | RpcProvider { - const provider = isProvider - ? new Provider({ nodeUrl: process.env.TEST_RPC_URL }) - : new RpcProvider({ nodeUrl: process.env.TEST_RPC_URL }); + const isDevnet = process.env.IS_DEVNET === 'true'; - if (process.env.IS_DEVNET === 'true') { + const providerOptions = { + nodeUrl: process.env.TEST_RPC_URL, // accelerate the tests when running locally - const originalWaitForTransaction = provider.waitForTransaction.bind(provider); - provider.waitForTransaction = (txHash: string, options: waitForTransactionOptions = {}) => { - return originalWaitForTransaction(txHash, { retryInterval: 1000, ...options }); - }; - } - - return provider; + ...(isDevnet && { transactionRetryIntervalFallback: 1000 }), + }; + return isProvider ? new Provider(providerOptions) : new RpcProvider(providerOptions); } export const TEST_TX_VERSION = process.env.TX_VERSION === 'v3' ? ETransactionVersion.V3 : undefined; diff --git a/src/channel/rpc_0_7.ts b/src/channel/rpc_0_7.ts index 53e51aed2..923e2bcfc 100644 --- a/src/channel/rpc_0_7.ts +++ b/src/channel/rpc_0_7.ts @@ -50,11 +50,21 @@ export class RpcChannel { private specVersion?: string; + private transactionRetryIntervalFallback?: number; + readonly waitMode: Boolean; // behave like web2 rpc and return when tx is processed constructor(optionsOrProvider?: RpcProviderOptions) { - const { nodeUrl, retries, headers, blockIdentifier, chainId, specVersion, waitMode } = - optionsOrProvider || {}; + const { + nodeUrl, + retries, + headers, + blockIdentifier, + chainId, + specVersion, + waitMode, + transactionRetryIntervalFallback, + } = optionsOrProvider || {}; if (Object.values(NetworkName).includes(nodeUrl as NetworkName)) { this.nodeUrl = getDefaultNodeUrl(nodeUrl as NetworkName, optionsOrProvider?.default); } else if (nodeUrl) { @@ -69,6 +79,11 @@ export class RpcChannel { this.specVersion = specVersion; this.waitMode = waitMode || false; this.requestId = 0; + this.transactionRetryIntervalFallback = transactionRetryIntervalFallback; + } + + private get transactionRetryIntervalDefault() { + return this.transactionRetryIntervalFallback ?? 5000; } public setChainId(chainId: StarknetChainId) { @@ -250,7 +265,7 @@ export class RpcChannel { let { retries } = this; let onchain = false; let isErrorState = false; - const retryInterval = options?.retryInterval ?? 5000; + const retryInterval = options?.retryInterval ?? this.transactionRetryIntervalDefault; const errorStates: any = options?.errorStates ?? [ RPC.ETransactionStatus.REJECTED, // TODO: commented out to preserve the long-standing behavior of "reverted" not being treated as an error by default diff --git a/src/provider/rpc.ts b/src/provider/rpc.ts index 68b2f5396..26f3953d7 100644 --- a/src/provider/rpc.ts +++ b/src/provider/rpc.ts @@ -198,6 +198,7 @@ export class RpcProvider implements ProviderInterface { txHash, options )) as GetTxReceiptResponseWithoutHelper; + return new ReceiptTx(receiptWoHelper) as GetTransactionReceiptResponse; } diff --git a/src/types/provider/configuration.ts b/src/types/provider/configuration.ts index 71eaf534f..db1825f42 100644 --- a/src/types/provider/configuration.ts +++ b/src/types/provider/configuration.ts @@ -6,6 +6,7 @@ export interface ProviderOptions extends RpcProviderOptions {} export type RpcProviderOptions = { nodeUrl?: string | NetworkName; retries?: number; + transactionRetryIntervalFallback?: number; headers?: object; blockIdentifier?: BlockIdentifier; chainId?: StarknetChainId; diff --git a/src/utils/url.ts b/src/utils/url.ts index c43389688..b1318cf85 100644 --- a/src/utils/url.ts +++ b/src/utils/url.ts @@ -67,7 +67,7 @@ export function isUrl(s?: string): boolean { * const defaultPath = "/"; * const urlOrPath = "/docs"; * const result = buildUrl(baseUrl, defaultPath, urlOrPath); - * + * * result = "https://starknetjs.com/docs" */ export function buildUrl(baseUrl: string, defaultPath: string, urlOrPath?: string) { From 37526cf6597df4e1d7675d9871369625fc5d5320 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ivan=20Pavi=C4=8Di=C4=87?= Date: Wed, 15 May 2024 09:55:32 +0200 Subject: [PATCH 27/37] Update _test.yml (#1126) --- .github/workflows/_test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/_test.yml b/.github/workflows/_test.yml index 256ecf8b4..ec24c59d6 100644 --- a/.github/workflows/_test.yml +++ b/.github/workflows/_test.yml @@ -21,7 +21,7 @@ jobs: # TODO - periodically check if conditional services are supported; https://github.com/actions/runner/issues/822 services: devnet: - image: ${{ (inputs.use-devnet) && 'shardlabs/starknet-devnet-rs:0.0.4-seed0' || '' }} + image: ${{ (inputs.use-devnet) && 'shardlabs/starknet-devnet-rs:0.0.5-seed0' || '' }} ports: - 5050:5050 From 66a5c0341eccfef0dcdf1312c15627b7d4f6b675 Mon Sep 17 00:00:00 2001 From: semantic-release-bot Date: Tue, 21 May 2024 08:44:36 +0000 Subject: [PATCH 28/37] chore(release): 6.9.0 [skip ci] # [6.9.0](https://github.com/starknet-io/starknet.js/compare/v6.8.0...v6.9.0) (2024-05-21) ### Bug Fixes * cannot infer ts2742 types from starknet-types@0.7 ([#1098](https://github.com/starknet-io/starknet.js/issues/1098)) ([f1c3b8e](https://github.com/starknet-io/starknet.js/commit/f1c3b8e3aeb96f6efb7e512ac3ba689253004c9d)) * remove [warning] from typedoc for external usage ([#1095](https://github.com/starknet-io/starknet.js/issues/1095)) ([195186f](https://github.com/starknet-io/starknet.js/commit/195186fc2974ab0d164b1a48c68f7bf026329df5)), closes [#1121](https://github.com/starknet-io/starknet.js/issues/1121) [#1126](https://github.com/starknet-io/starknet.js/issues/1126) ### Features * add type coverage ([#1120](https://github.com/starknet-io/starknet.js/issues/1120)) ([eceda5d](https://github.com/starknet-io/starknet.js/commit/eceda5dc1c39e472e1105e07797e76aaac3c1531)) * provider.getL1MessageHash ([#1123](https://github.com/starknet-io/starknet.js/issues/1123)) ([1489cf2](https://github.com/starknet-io/starknet.js/commit/1489cf25e7e8598ab161cecc62c82495f64daa33)) ### Reverts * Revert "chore: add examples to JsDoc for transaction.ts file (#1105)" (#1108) ([59eb01e](https://github.com/starknet-io/starknet.js/commit/59eb01e451cf64dfdacd6d34b2a709e0a1029f15)), closes [#1105](https://github.com/starknet-io/starknet.js/issues/1105) [#1108](https://github.com/starknet-io/starknet.js/issues/1108) --- CHANGELOG.md | 16 ++++++++++++++++ package-lock.json | 4 ++-- package.json | 2 +- 3 files changed, 19 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0ab41b55b..ec0d4d2ee 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,19 @@ +# [6.9.0](https://github.com/starknet-io/starknet.js/compare/v6.8.0...v6.9.0) (2024-05-21) + +### Bug Fixes + +- cannot infer ts2742 types from starknet-types@0.7 ([#1098](https://github.com/starknet-io/starknet.js/issues/1098)) ([f1c3b8e](https://github.com/starknet-io/starknet.js/commit/f1c3b8e3aeb96f6efb7e512ac3ba689253004c9d)) +- remove [warning] from typedoc for external usage ([#1095](https://github.com/starknet-io/starknet.js/issues/1095)) ([195186f](https://github.com/starknet-io/starknet.js/commit/195186fc2974ab0d164b1a48c68f7bf026329df5)), closes [#1121](https://github.com/starknet-io/starknet.js/issues/1121) [#1126](https://github.com/starknet-io/starknet.js/issues/1126) + +### Features + +- add type coverage ([#1120](https://github.com/starknet-io/starknet.js/issues/1120)) ([eceda5d](https://github.com/starknet-io/starknet.js/commit/eceda5dc1c39e472e1105e07797e76aaac3c1531)) +- provider.getL1MessageHash ([#1123](https://github.com/starknet-io/starknet.js/issues/1123)) ([1489cf2](https://github.com/starknet-io/starknet.js/commit/1489cf25e7e8598ab161cecc62c82495f64daa33)) + +### Reverts + +- Revert "chore: add examples to JsDoc for transaction.ts file (#1105)" (#1108) ([59eb01e](https://github.com/starknet-io/starknet.js/commit/59eb01e451cf64dfdacd6d34b2a709e0a1029f15)), closes [#1105](https://github.com/starknet-io/starknet.js/issues/1105) [#1108](https://github.com/starknet-io/starknet.js/issues/1108) + # [6.8.0](https://github.com/starknet-io/starknet.js/compare/v6.7.0...v6.8.0) (2024-04-23) ### Bug Fixes diff --git a/package-lock.json b/package-lock.json index 508eb0203..190283481 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "starknet", - "version": "6.8.0", + "version": "6.9.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "starknet", - "version": "6.8.0", + "version": "6.9.0", "license": "MIT", "dependencies": { "@noble/curves": "~1.4.0", diff --git a/package.json b/package.json index 475e1931a..088fc29cf 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "starknet", - "version": "6.8.0", + "version": "6.9.0", "description": "JavaScript library for Starknet", "main": "dist/index.js", "module": "dist/index.mjs", From c9fab45b78222154247d8078bb60af2dd30a9611 Mon Sep 17 00:00:00 2001 From: PhilippeR26 Date: Thu, 30 May 2024 16:39:14 +0200 Subject: [PATCH 29/37] fix: handling of events nested in Cairo components --- .../cairo/cairo260/nestedEvents.abi.json | 2243 +++++++++++++++++ __tests__/cairo1v2.test.ts | 4 + src/types/lib/contract/abi.ts | 10 +- src/utils/events/index.ts | 158 +- www/docs/guides/events.md | 31 +- www/docusaurus.config.js | 2 +- 6 files changed, 2416 insertions(+), 32 deletions(-) create mode 100644 __mocks__/cairo/cairo260/nestedEvents.abi.json diff --git a/__mocks__/cairo/cairo260/nestedEvents.abi.json b/__mocks__/cairo/cairo260/nestedEvents.abi.json new file mode 100644 index 000000000..240e17c8f --- /dev/null +++ b/__mocks__/cairo/cairo260/nestedEvents.abi.json @@ -0,0 +1,2243 @@ +{ + "abi": [ + { + "name": "ExchangeBalancebleImpl", + "type": "impl", + "interface_name": "kurosawa_akira::ExchangeBalanceComponent::INewExchangeBalance" + }, + { + "name": "core::integer::u256", + "type": "struct", + "members": [ + { + "name": "low", + "type": "core::integer::u128" + }, + { + "name": "high", + "type": "core::integer::u128" + } + ] + }, + { + "name": "core::array::Span::", + "type": "struct", + "members": [ + { + "name": "snapshot", + "type": "@core::array::Array::" + } + ] + }, + { + "name": "kurosawa_akira::ExchangeBalanceComponent::INewExchangeBalance", + "type": "interface", + "items": [ + { + "name": "total_supply", + "type": "function", + "inputs": [ + { + "name": "token", + "type": "core::starknet::contract_address::ContractAddress" + } + ], + "outputs": [ + { + "type": "core::integer::u256" + } + ], + "state_mutability": "view" + }, + { + "name": "balanceOf", + "type": "function", + "inputs": [ + { + "name": "address", + "type": "core::starknet::contract_address::ContractAddress" + }, + { + "name": "token", + "type": "core::starknet::contract_address::ContractAddress" + } + ], + "outputs": [ + { + "type": "core::integer::u256" + } + ], + "state_mutability": "view" + }, + { + "name": "balancesOf", + "type": "function", + "inputs": [ + { + "name": "addresses", + "type": "core::array::Span::" + }, + { + "name": "tokens", + "type": "core::array::Span::" + } + ], + "outputs": [ + { + "type": "core::array::Array::>" + } + ], + "state_mutability": "view" + }, + { + "name": "get_wrapped_native_token", + "type": "function", + "inputs": [], + "outputs": [ + { + "type": "core::starknet::contract_address::ContractAddress" + } + ], + "state_mutability": "view" + }, + { + "name": "get_latest_gas_price", + "type": "function", + "inputs": [], + "outputs": [ + { + "type": "core::integer::u256" + } + ], + "state_mutability": "view" + }, + { + "name": "get_fee_recipient", + "type": "function", + "inputs": [], + "outputs": [ + { + "type": "core::starknet::contract_address::ContractAddress" + } + ], + "state_mutability": "view" + } + ] + }, + { + "name": "DepositableImpl", + "type": "impl", + "interface_name": "kurosawa_akira::DepositComponent::IDeposit" + }, + { + "name": "kurosawa_akira::DepositComponent::IDeposit", + "type": "interface", + "items": [ + { + "name": "deposit", + "type": "function", + "inputs": [ + { + "name": "receiver", + "type": "core::starknet::contract_address::ContractAddress" + }, + { + "name": "token", + "type": "core::starknet::contract_address::ContractAddress" + }, + { + "name": "amount", + "type": "core::integer::u256" + } + ], + "outputs": [], + "state_mutability": "external" + } + ] + }, + { + "name": "SignableImpl", + "type": "impl", + "interface_name": "kurosawa_akira::SignerComponent::ISignerLogic" + }, + { + "name": "core::bool", + "type": "enum", + "variants": [ + { + "name": "False", + "type": "()" + }, + { + "name": "True", + "type": "()" + } + ] + }, + { + "name": "kurosawa_akira::SignerComponent::ISignerLogic", + "type": "interface", + "items": [ + { + "name": "bind_to_signer", + "type": "function", + "inputs": [ + { + "name": "signer", + "type": "core::starknet::contract_address::ContractAddress" + } + ], + "outputs": [], + "state_mutability": "external" + }, + { + "name": "check_sign", + "type": "function", + "inputs": [ + { + "name": "trader", + "type": "core::starknet::contract_address::ContractAddress" + }, + { + "name": "message", + "type": "core::felt252" + }, + { + "name": "sig_r", + "type": "core::felt252" + }, + { + "name": "sig_s", + "type": "core::felt252" + } + ], + "outputs": [ + { + "type": "core::bool" + } + ], + "state_mutability": "view" + }, + { + "name": "get_signer", + "type": "function", + "inputs": [ + { + "name": "trader", + "type": "core::starknet::contract_address::ContractAddress" + } + ], + "outputs": [ + { + "type": "core::starknet::contract_address::ContractAddress" + } + ], + "state_mutability": "view" + }, + { + "name": "get_signers", + "type": "function", + "inputs": [ + { + "name": "traders", + "type": "core::array::Span::" + } + ], + "outputs": [ + { + "type": "core::array::Array::" + } + ], + "state_mutability": "view" + } + ] + }, + { + "name": "WithdrawableImpl", + "type": "impl", + "interface_name": "kurosawa_akira::WithdrawComponent::IWithdraw" + }, + { + "name": "kurosawa_akira::Order::GasFee", + "type": "struct", + "members": [ + { + "name": "gas_per_action", + "type": "core::integer::u32" + }, + { + "name": "fee_token", + "type": "core::starknet::contract_address::ContractAddress" + }, + { + "name": "max_gas_price", + "type": "core::integer::u256" + }, + { + "name": "conversion_rate", + "type": "(core::integer::u256, core::integer::u256)" + } + ] + }, + { + "name": "kurosawa_akira::WithdrawComponent::Withdraw", + "type": "struct", + "members": [ + { + "name": "maker", + "type": "core::starknet::contract_address::ContractAddress" + }, + { + "name": "token", + "type": "core::starknet::contract_address::ContractAddress" + }, + { + "name": "amount", + "type": "core::integer::u256" + }, + { + "name": "salt", + "type": "core::felt252" + }, + { + "name": "gas_fee", + "type": "kurosawa_akira::Order::GasFee" + }, + { + "name": "receiver", + "type": "core::starknet::contract_address::ContractAddress" + } + ] + }, + { + "name": "kurosawa_akira::utils::SlowModeLogic::SlowModeDelay", + "type": "struct", + "members": [ + { + "name": "block", + "type": "core::integer::u64" + }, + { + "name": "ts", + "type": "core::integer::u64" + } + ] + }, + { + "name": "kurosawa_akira::WithdrawComponent::IWithdraw", + "type": "interface", + "items": [ + { + "name": "request_onchain_withdraw", + "type": "function", + "inputs": [ + { + "name": "withdraw", + "type": "kurosawa_akira::WithdrawComponent::Withdraw" + } + ], + "outputs": [], + "state_mutability": "external" + }, + { + "name": "get_pending_withdraw", + "type": "function", + "inputs": [ + { + "name": "maker", + "type": "core::starknet::contract_address::ContractAddress" + }, + { + "name": "token", + "type": "core::starknet::contract_address::ContractAddress" + } + ], + "outputs": [ + { + "type": "(kurosawa_akira::utils::SlowModeLogic::SlowModeDelay, kurosawa_akira::WithdrawComponent::Withdraw)" + } + ], + "state_mutability": "view" + }, + { + "name": "get_pending_withdraws", + "type": "function", + "inputs": [ + { + "name": "reqs", + "type": "core::array::Array::<(core::starknet::contract_address::ContractAddress, core::starknet::contract_address::ContractAddress)>" + } + ], + "outputs": [ + { + "type": "core::array::Array::<(kurosawa_akira::utils::SlowModeLogic::SlowModeDelay, kurosawa_akira::WithdrawComponent::Withdraw)>" + } + ], + "state_mutability": "view" + }, + { + "name": "apply_onchain_withdraw", + "type": "function", + "inputs": [ + { + "name": "token", + "type": "core::starknet::contract_address::ContractAddress" + }, + { + "name": "key", + "type": "core::felt252" + } + ], + "outputs": [], + "state_mutability": "external" + }, + { + "name": "get_withdraw_steps", + "type": "function", + "inputs": [], + "outputs": [ + { + "type": "core::integer::u32" + } + ], + "state_mutability": "view" + }, + { + "name": "is_request_completed", + "type": "function", + "inputs": [ + { + "name": "w_hash", + "type": "core::felt252" + } + ], + "outputs": [ + { + "type": "core::bool" + } + ], + "state_mutability": "view" + }, + { + "name": "is_requests_completed", + "type": "function", + "inputs": [ + { + "name": "reqs", + "type": "core::array::Array::" + } + ], + "outputs": [ + { + "type": "core::array::Array::" + } + ], + "state_mutability": "view" + } + ] + }, + { + "name": "NonceableImpl", + "type": "impl", + "interface_name": "kurosawa_akira::NonceComponent::INonceLogic" + }, + { + "name": "kurosawa_akira::NonceComponent::INonceLogic", + "type": "interface", + "items": [ + { + "name": "get_nonce", + "type": "function", + "inputs": [ + { + "name": "maker", + "type": "core::starknet::contract_address::ContractAddress" + } + ], + "outputs": [ + { + "type": "core::integer::u32" + } + ], + "state_mutability": "view" + }, + { + "name": "get_nonces", + "type": "function", + "inputs": [ + { + "name": "makers", + "type": "core::array::Span::" + } + ], + "outputs": [ + { + "type": "core::array::Array::" + } + ], + "state_mutability": "view" + } + ] + }, + { + "name": "RoutableImpl", + "type": "impl", + "interface_name": "kurosawa_akira::RouterComponent::IRouter" + }, + { + "name": "kurosawa_akira::RouterComponent::IRouter", + "type": "interface", + "items": [ + { + "name": "router_deposit", + "type": "function", + "inputs": [ + { + "name": "router", + "type": "core::starknet::contract_address::ContractAddress" + }, + { + "name": "coin", + "type": "core::starknet::contract_address::ContractAddress" + }, + { + "name": "amount", + "type": "core::integer::u256" + } + ], + "outputs": [], + "state_mutability": "external" + }, + { + "name": "router_withdraw", + "type": "function", + "inputs": [ + { + "name": "coin", + "type": "core::starknet::contract_address::ContractAddress" + }, + { + "name": "amount", + "type": "core::integer::u256" + }, + { + "name": "receiver", + "type": "core::starknet::contract_address::ContractAddress" + } + ], + "outputs": [], + "state_mutability": "external" + }, + { + "name": "register_router", + "type": "function", + "inputs": [], + "outputs": [], + "state_mutability": "external" + }, + { + "name": "add_router_binding", + "type": "function", + "inputs": [ + { + "name": "signer", + "type": "core::starknet::contract_address::ContractAddress" + } + ], + "outputs": [], + "state_mutability": "external" + }, + { + "name": "request_onchain_deregister", + "type": "function", + "inputs": [], + "outputs": [], + "state_mutability": "external" + }, + { + "name": "apply_onchain_deregister", + "type": "function", + "inputs": [], + "outputs": [], + "state_mutability": "external" + }, + { + "name": "validate_router", + "type": "function", + "inputs": [ + { + "name": "message", + "type": "core::felt252" + }, + { + "name": "signature", + "type": "(core::felt252, core::felt252)" + }, + { + "name": "signer", + "type": "core::starknet::contract_address::ContractAddress" + }, + { + "name": "router", + "type": "core::starknet::contract_address::ContractAddress" + } + ], + "outputs": [ + { + "type": "core::bool" + } + ], + "state_mutability": "view" + }, + { + "name": "get_punishment_factor_bips", + "type": "function", + "inputs": [], + "outputs": [ + { + "type": "core::integer::u16" + } + ], + "state_mutability": "view" + }, + { + "name": "is_registered", + "type": "function", + "inputs": [ + { + "name": "router", + "type": "core::starknet::contract_address::ContractAddress" + } + ], + "outputs": [ + { + "type": "core::bool" + } + ], + "state_mutability": "view" + }, + { + "name": "have_sufficient_amount_to_route", + "type": "function", + "inputs": [ + { + "name": "router", + "type": "core::starknet::contract_address::ContractAddress" + } + ], + "outputs": [ + { + "type": "core::bool" + } + ], + "state_mutability": "view" + }, + { + "name": "balance_of_router", + "type": "function", + "inputs": [ + { + "name": "router", + "type": "core::starknet::contract_address::ContractAddress" + }, + { + "name": "coin", + "type": "core::starknet::contract_address::ContractAddress" + } + ], + "outputs": [ + { + "type": "core::integer::u256" + } + ], + "state_mutability": "view" + }, + { + "name": "get_router", + "type": "function", + "inputs": [ + { + "name": "signer", + "type": "core::starknet::contract_address::ContractAddress" + } + ], + "outputs": [ + { + "type": "core::starknet::contract_address::ContractAddress" + } + ], + "state_mutability": "view" + }, + { + "name": "get_route_amount", + "type": "function", + "inputs": [], + "outputs": [ + { + "type": "core::integer::u256" + } + ], + "state_mutability": "view" + } + ] + }, + { + "name": "EcosystemTradableImpl", + "type": "impl", + "interface_name": "kurosawa_akira::EcosystemTradeComponent::IEcosystemTradeLogic" + }, + { + "name": "kurosawa_akira::Order::OrderTradeInfo", + "type": "struct", + "members": [ + { + "name": "filled_base_amount", + "type": "core::integer::u256" + }, + { + "name": "filled_quote_amount", + "type": "core::integer::u256" + }, + { + "name": "last_traded_px", + "type": "core::integer::u256" + }, + { + "name": "num_trades_happened", + "type": "core::integer::u16" + }, + { + "name": "as_taker_completed", + "type": "core::bool" + } + ] + }, + { + "name": "kurosawa_akira::EcosystemTradeComponent::IEcosystemTradeLogic", + "type": "interface", + "items": [ + { + "name": "get_ecosystem_trade_info", + "type": "function", + "inputs": [ + { + "name": "order_hash", + "type": "core::felt252" + } + ], + "outputs": [ + { + "type": "kurosawa_akira::Order::OrderTradeInfo" + } + ], + "state_mutability": "view" + }, + { + "name": "get_ecosystem_trades_info", + "type": "function", + "inputs": [ + { + "name": "order_hashes", + "type": "core::array::Array::" + } + ], + "outputs": [ + { + "type": "core::array::Array::" + } + ], + "state_mutability": "view" + } + ] + }, + { + "name": "constructor", + "type": "constructor", + "inputs": [ + { + "name": "wrapped_native_token", + "type": "core::starknet::contract_address::ContractAddress" + }, + { + "name": "fee_recipient", + "type": "core::starknet::contract_address::ContractAddress" + }, + { + "name": "max_slow_mode_delay", + "type": "kurosawa_akira::utils::SlowModeLogic::SlowModeDelay" + }, + { + "name": "withdraw_action_cost", + "type": "core::integer::u32" + }, + { + "name": "exchange_invoker", + "type": "core::starknet::contract_address::ContractAddress" + }, + { + "name": "min_to_route", + "type": "core::integer::u256" + }, + { + "name": "owner", + "type": "core::starknet::contract_address::ContractAddress" + } + ] + }, + { + "name": "update_exchange_invokers", + "type": "function", + "inputs": [ + { + "name": "invoker", + "type": "core::starknet::contract_address::ContractAddress" + }, + { + "name": "enabled", + "type": "core::bool" + } + ], + "outputs": [], + "state_mutability": "external" + }, + { + "name": "version", + "type": "function", + "inputs": [], + "outputs": [ + { + "type": "core::integer::u16" + } + ], + "state_mutability": "view" + }, + { + "name": "update_exchange_version", + "type": "function", + "inputs": [ + { + "name": "new_version", + "type": "core::integer::u16" + } + ], + "outputs": [], + "state_mutability": "external" + }, + { + "name": "update_withdraw_component_params", + "type": "function", + "inputs": [ + { + "name": "new_delay", + "type": "kurosawa_akira::utils::SlowModeLogic::SlowModeDelay" + } + ], + "outputs": [], + "state_mutability": "external" + }, + { + "name": "update_fee_recipient", + "type": "function", + "inputs": [ + { + "name": "new_fee_recipient", + "type": "core::starknet::contract_address::ContractAddress" + } + ], + "outputs": [], + "state_mutability": "external" + }, + { + "name": "update_base_token", + "type": "function", + "inputs": [ + { + "name": "new_base_token", + "type": "core::starknet::contract_address::ContractAddress" + } + ], + "outputs": [], + "state_mutability": "external" + }, + { + "name": "update_router_component_params", + "type": "function", + "inputs": [ + { + "name": "new_delay", + "type": "kurosawa_akira::utils::SlowModeLogic::SlowModeDelay" + }, + { + "name": "min_amount_to_route", + "type": "core::integer::u256" + }, + { + "name": "new_punishment_bips", + "type": "core::integer::u16" + } + ], + "outputs": [], + "state_mutability": "external" + }, + { + "name": "kurosawa_akira::Order::Quantity", + "type": "struct", + "members": [ + { + "name": "base_qty", + "type": "core::integer::u256" + }, + { + "name": "quote_qty", + "type": "core::integer::u256" + }, + { + "name": "base_asset", + "type": "core::integer::u256" + } + ] + }, + { + "name": "kurosawa_akira::Order::FixedFee", + "type": "struct", + "members": [ + { + "name": "recipient", + "type": "core::starknet::contract_address::ContractAddress" + }, + { + "name": "maker_pbips", + "type": "core::integer::u32" + }, + { + "name": "taker_pbips", + "type": "core::integer::u32" + } + ] + }, + { + "name": "kurosawa_akira::Order::OrderFee", + "type": "struct", + "members": [ + { + "name": "trade_fee", + "type": "kurosawa_akira::Order::FixedFee" + }, + { + "name": "router_fee", + "type": "kurosawa_akira::Order::FixedFee" + }, + { + "name": "gas_fee", + "type": "kurosawa_akira::Order::GasFee" + } + ] + }, + { + "name": "kurosawa_akira::Order::TakerSelfTradePreventionMode", + "type": "enum", + "variants": [ + { + "name": "NONE", + "type": "()" + }, + { + "name": "EXPIRE_TAKER", + "type": "()" + }, + { + "name": "EXPIRE_MAKER", + "type": "()" + }, + { + "name": "EXPIRE_BOTH", + "type": "()" + } + ] + }, + { + "name": "kurosawa_akira::Order::Constraints", + "type": "struct", + "members": [ + { + "name": "number_of_swaps_allowed", + "type": "core::integer::u16" + }, + { + "name": "duration_valid", + "type": "core::integer::u32" + }, + { + "name": "created_at", + "type": "core::integer::u32" + }, + { + "name": "stp", + "type": "kurosawa_akira::Order::TakerSelfTradePreventionMode" + }, + { + "name": "nonce", + "type": "core::integer::u32" + }, + { + "name": "min_receive_amount", + "type": "core::integer::u256" + }, + { + "name": "router_signer", + "type": "core::starknet::contract_address::ContractAddress" + } + ] + }, + { + "name": "kurosawa_akira::Order::OrderFlags", + "type": "struct", + "members": [ + { + "name": "full_fill_only", + "type": "core::bool" + }, + { + "name": "best_level_only", + "type": "core::bool" + }, + { + "name": "post_only", + "type": "core::bool" + }, + { + "name": "is_sell_side", + "type": "core::bool" + }, + { + "name": "is_market_order", + "type": "core::bool" + }, + { + "name": "to_ecosystem_book", + "type": "core::bool" + }, + { + "name": "external_funds", + "type": "core::bool" + } + ] + }, + { + "name": "kurosawa_akira::Order::Order", + "type": "struct", + "members": [ + { + "name": "maker", + "type": "core::starknet::contract_address::ContractAddress" + }, + { + "name": "price", + "type": "core::integer::u256" + }, + { + "name": "qty", + "type": "kurosawa_akira::Order::Quantity" + }, + { + "name": "ticker", + "type": "(core::starknet::contract_address::ContractAddress, core::starknet::contract_address::ContractAddress)" + }, + { + "name": "fee", + "type": "kurosawa_akira::Order::OrderFee" + }, + { + "name": "constraints", + "type": "kurosawa_akira::Order::Constraints" + }, + { + "name": "salt", + "type": "core::felt252" + }, + { + "name": "flags", + "type": "kurosawa_akira::Order::OrderFlags" + }, + { + "name": "version", + "type": "core::integer::u16" + }, + { + "name": "source", + "type": "core::felt252" + } + ] + }, + { + "name": "get_order_hash", + "type": "function", + "inputs": [ + { + "name": "order", + "type": "kurosawa_akira::Order::Order" + } + ], + "outputs": [ + { + "type": "core::felt252" + } + ], + "state_mutability": "view" + }, + { + "name": "get_withdraw_hash", + "type": "function", + "inputs": [ + { + "name": "withdraw", + "type": "kurosawa_akira::WithdrawComponent::Withdraw" + } + ], + "outputs": [ + { + "type": "core::felt252" + } + ], + "state_mutability": "view" + }, + { + "name": "kurosawa_akira::NonceComponent::IncreaseNonce", + "type": "struct", + "members": [ + { + "name": "maker", + "type": "core::starknet::contract_address::ContractAddress" + }, + { + "name": "new_nonce", + "type": "core::integer::u32" + }, + { + "name": "gas_fee", + "type": "kurosawa_akira::Order::GasFee" + }, + { + "name": "salt", + "type": "core::felt252" + } + ] + }, + { + "name": "get_increase_nonce_hash", + "type": "function", + "inputs": [ + { + "name": "increase_nonce", + "type": "kurosawa_akira::NonceComponent::IncreaseNonce" + } + ], + "outputs": [ + { + "type": "core::felt252" + } + ], + "state_mutability": "view" + }, + { + "name": "kurosawa_akira::NonceComponent::SignedIncreaseNonce", + "type": "struct", + "members": [ + { + "name": "increase_nonce", + "type": "kurosawa_akira::NonceComponent::IncreaseNonce" + }, + { + "name": "sign", + "type": "(core::felt252, core::felt252)" + } + ] + }, + { + "name": "apply_increase_nonce", + "type": "function", + "inputs": [ + { + "name": "signed_nonce", + "type": "kurosawa_akira::NonceComponent::SignedIncreaseNonce" + }, + { + "name": "gas_price", + "type": "core::integer::u256" + }, + { + "name": "cur_gas_per_action", + "type": "core::integer::u32" + } + ], + "outputs": [], + "state_mutability": "external" + }, + { + "name": "apply_increase_nonces", + "type": "function", + "inputs": [ + { + "name": "signed_nonces", + "type": "core::array::Array::" + }, + { + "name": "gas_price", + "type": "core::integer::u256" + }, + { + "name": "cur_gas_per_action", + "type": "core::integer::u32" + } + ], + "outputs": [], + "state_mutability": "external" + }, + { + "name": "kurosawa_akira::WithdrawComponent::SignedWithdraw", + "type": "struct", + "members": [ + { + "name": "withdraw", + "type": "kurosawa_akira::WithdrawComponent::Withdraw" + }, + { + "name": "sign", + "type": "(core::felt252, core::felt252)" + } + ] + }, + { + "name": "apply_withdraw", + "type": "function", + "inputs": [ + { + "name": "signed_withdraw", + "type": "kurosawa_akira::WithdrawComponent::SignedWithdraw" + }, + { + "name": "gas_price", + "type": "core::integer::u256" + }, + { + "name": "cur_gas_per_action", + "type": "core::integer::u32" + } + ], + "outputs": [], + "state_mutability": "external" + }, + { + "name": "apply_withdraws", + "type": "function", + "inputs": [ + { + "name": "signed_withdraws", + "type": "core::array::Array::" + }, + { + "name": "gas_price", + "type": "core::integer::u256" + }, + { + "name": "cur_gas_per_action", + "type": "core::integer::u32" + } + ], + "outputs": [], + "state_mutability": "external" + }, + { + "name": "kurosawa_akira::Order::SignedOrder", + "type": "struct", + "members": [ + { + "name": "order", + "type": "kurosawa_akira::Order::Order" + }, + { + "name": "sign", + "type": "(core::felt252, core::felt252)" + }, + { + "name": "router_sign", + "type": "(core::felt252, core::felt252)" + } + ] + }, + { + "name": "apply_ecosystem_trades", + "type": "function", + "inputs": [ + { + "name": "taker_orders", + "type": "core::array::Array::<(kurosawa_akira::Order::SignedOrder, core::bool)>" + }, + { + "name": "maker_orders", + "type": "core::array::Array::" + }, + { + "name": "iters", + "type": "core::array::Array::<(core::integer::u16, core::bool)>" + }, + { + "name": "oracle_settled_qty", + "type": "core::array::Array::" + }, + { + "name": "gas_price", + "type": "core::integer::u256" + }, + { + "name": "cur_gas_per_action", + "type": "core::integer::u32" + } + ], + "outputs": [], + "state_mutability": "external" + }, + { + "name": "apply_single_execution_step", + "type": "function", + "inputs": [ + { + "name": "taker_order", + "type": "kurosawa_akira::Order::SignedOrder" + }, + { + "name": "maker_orders", + "type": "core::array::Array::<(kurosawa_akira::Order::SignedOrder, core::integer::u256)>" + }, + { + "name": "total_amount_matched", + "type": "core::integer::u256" + }, + { + "name": "gas_price", + "type": "core::integer::u256" + }, + { + "name": "cur_gas_per_action", + "type": "core::integer::u32" + }, + { + "name": "as_taker_completed", + "type": "core::bool" + } + ], + "outputs": [ + { + "type": "core::bool" + } + ], + "state_mutability": "external" + }, + { + "name": "apply_execution_steps", + "type": "function", + "inputs": [ + { + "name": "bulk", + "type": "core::array::Array::<(kurosawa_akira::Order::SignedOrder, core::array::Array::<(kurosawa_akira::Order::SignedOrder, core::integer::u256)>, core::integer::u256, core::bool)>" + }, + { + "name": "gas_price", + "type": "core::integer::u256" + }, + { + "name": "cur_gas_per_action", + "type": "core::integer::u32" + } + ], + "outputs": [ + { + "type": "core::array::Array::" + } + ], + "state_mutability": "external" + }, + { + "name": "kurosawa_akira::LayerAkira::LayerAkira::Step", + "type": "enum", + "variants": [ + { + "name": "BulkExecutionSteps", + "type": "(core::array::Array::<(kurosawa_akira::Order::SignedOrder, core::array::Array::<(kurosawa_akira::Order::SignedOrder, core::integer::u256)>, core::integer::u256, core::bool)>, core::bool)" + }, + { + "name": "SingleExecutionStep", + "type": "((kurosawa_akira::Order::SignedOrder, core::array::Array::<(kurosawa_akira::Order::SignedOrder, core::integer::u256)>, core::integer::u256, core::bool), core::bool)" + }, + { + "name": "EcosystemTrades", + "type": "(core::array::Array::<(kurosawa_akira::Order::SignedOrder, core::bool)>, core::array::Array::, core::array::Array::<(core::integer::u16, core::bool)>, core::array::Array::)" + }, + { + "name": "IncreaseNonceStep", + "type": "kurosawa_akira::NonceComponent::SignedIncreaseNonce" + }, + { + "name": "WithdrawStep", + "type": "kurosawa_akira::WithdrawComponent::SignedWithdraw" + } + ] + }, + { + "name": "apply_steps", + "type": "function", + "inputs": [ + { + "name": "steps", + "type": "core::array::Array::" + }, + { + "name": "nonce_steps", + "type": "core::integer::u32" + }, + { + "name": "withdraw_steps", + "type": "core::integer::u32" + }, + { + "name": "router_steps", + "type": "core::integer::u32" + }, + { + "name": "ecosystem_steps", + "type": "core::integer::u32" + }, + { + "name": "gas_price", + "type": "core::integer::u256" + } + ], + "outputs": [], + "state_mutability": "external" + }, + { + "kind": "struct", + "name": "kurosawa_akira::ExchangeBalanceComponent::exchange_balance_logic_component::Mint", + "type": "event", + "members": [ + { + "kind": "data", + "name": "token", + "type": "core::starknet::contract_address::ContractAddress" + }, + { + "kind": "data", + "name": "to", + "type": "core::starknet::contract_address::ContractAddress" + }, + { + "kind": "data", + "name": "amount", + "type": "core::integer::u256" + } + ] + }, + { + "kind": "struct", + "name": "kurosawa_akira::ExchangeBalanceComponent::exchange_balance_logic_component::Transfer", + "type": "event", + "members": [ + { + "kind": "data", + "name": "token", + "type": "core::starknet::contract_address::ContractAddress" + }, + { + "kind": "data", + "name": "from_", + "type": "core::starknet::contract_address::ContractAddress" + }, + { + "kind": "data", + "name": "to", + "type": "core::starknet::contract_address::ContractAddress" + }, + { + "kind": "data", + "name": "amount", + "type": "core::integer::u256" + } + ] + }, + { + "kind": "struct", + "name": "kurosawa_akira::ExchangeBalanceComponent::exchange_balance_logic_component::Burn", + "type": "event", + "members": [ + { + "kind": "data", + "name": "from_", + "type": "core::starknet::contract_address::ContractAddress" + }, + { + "kind": "data", + "name": "token", + "type": "core::starknet::contract_address::ContractAddress" + }, + { + "kind": "data", + "name": "amount", + "type": "core::integer::u256" + } + ] + }, + { + "kind": "struct", + "name": "kurosawa_akira::ExchangeBalanceComponent::exchange_balance_logic_component::FeeReward", + "type": "event", + "members": [ + { + "kind": "key", + "name": "recipient", + "type": "core::starknet::contract_address::ContractAddress" + }, + { + "kind": "data", + "name": "token", + "type": "core::starknet::contract_address::ContractAddress" + }, + { + "kind": "data", + "name": "amount", + "type": "core::integer::u256" + } + ] + }, + { + "kind": "struct", + "name": "kurosawa_akira::ExchangeBalanceComponent::exchange_balance_logic_component::Punish", + "type": "event", + "members": [ + { + "kind": "key", + "name": "router", + "type": "core::starknet::contract_address::ContractAddress" + }, + { + "kind": "data", + "name": "taker_hash", + "type": "core::felt252" + }, + { + "kind": "data", + "name": "maker_hash", + "type": "core::felt252" + }, + { + "kind": "data", + "name": "amount", + "type": "core::integer::u256" + } + ] + }, + { + "kind": "struct", + "name": "kurosawa_akira::ExchangeBalanceComponent::exchange_balance_logic_component::Trade", + "type": "event", + "members": [ + { + "kind": "key", + "name": "maker", + "type": "core::starknet::contract_address::ContractAddress" + }, + { + "kind": "key", + "name": "taker", + "type": "core::starknet::contract_address::ContractAddress" + }, + { + "kind": "data", + "name": "ticker", + "type": "(core::starknet::contract_address::ContractAddress, core::starknet::contract_address::ContractAddress)" + }, + { + "kind": "data", + "name": "router_maker", + "type": "core::starknet::contract_address::ContractAddress" + }, + { + "kind": "data", + "name": "router_taker", + "type": "core::starknet::contract_address::ContractAddress" + }, + { + "kind": "data", + "name": "amount_base", + "type": "core::integer::u256" + }, + { + "kind": "data", + "name": "amount_quote", + "type": "core::integer::u256" + }, + { + "kind": "data", + "name": "is_sell_side", + "type": "core::bool" + }, + { + "kind": "data", + "name": "is_failed", + "type": "core::bool" + }, + { + "kind": "data", + "name": "is_ecosystem_book", + "type": "core::bool" + }, + { + "kind": "data", + "name": "maker_hash", + "type": "core::felt252" + }, + { + "kind": "data", + "name": "taker_hash", + "type": "core::felt252" + }, + { + "kind": "data", + "name": "maker_source", + "type": "core::felt252" + }, + { + "kind": "data", + "name": "taker_source", + "type": "core::felt252" + } + ] + }, + { + "kind": "enum", + "name": "kurosawa_akira::ExchangeBalanceComponent::exchange_balance_logic_component::Event", + "type": "event", + "variants": [ + { + "kind": "nested", + "name": "Mint", + "type": "kurosawa_akira::ExchangeBalanceComponent::exchange_balance_logic_component::Mint" + }, + { + "kind": "nested", + "name": "Transfer", + "type": "kurosawa_akira::ExchangeBalanceComponent::exchange_balance_logic_component::Transfer" + }, + { + "kind": "nested", + "name": "Burn", + "type": "kurosawa_akira::ExchangeBalanceComponent::exchange_balance_logic_component::Burn" + }, + { + "kind": "nested", + "name": "FeeReward", + "type": "kurosawa_akira::ExchangeBalanceComponent::exchange_balance_logic_component::FeeReward" + }, + { + "kind": "nested", + "name": "Punish", + "type": "kurosawa_akira::ExchangeBalanceComponent::exchange_balance_logic_component::Punish" + }, + { + "kind": "nested", + "name": "Trade", + "type": "kurosawa_akira::ExchangeBalanceComponent::exchange_balance_logic_component::Trade" + } + ] + }, + { + "kind": "struct", + "name": "kurosawa_akira::DepositComponent::deposit_component::Deposit", + "type": "event", + "members": [ + { + "kind": "key", + "name": "receiver", + "type": "core::starknet::contract_address::ContractAddress" + }, + { + "kind": "data", + "name": "token", + "type": "core::starknet::contract_address::ContractAddress" + }, + { + "kind": "data", + "name": "funder", + "type": "core::starknet::contract_address::ContractAddress" + }, + { + "kind": "data", + "name": "amount", + "type": "core::integer::u256" + } + ] + }, + { + "kind": "enum", + "name": "kurosawa_akira::DepositComponent::deposit_component::Event", + "type": "event", + "variants": [ + { + "kind": "nested", + "name": "Deposit", + "type": "kurosawa_akira::DepositComponent::deposit_component::Deposit" + } + ] + }, + { + "kind": "struct", + "name": "kurosawa_akira::SignerComponent::signer_logic_component::NewBinding", + "type": "event", + "members": [ + { + "kind": "key", + "name": "trading_account", + "type": "core::starknet::contract_address::ContractAddress" + }, + { + "kind": "key", + "name": "signer", + "type": "core::starknet::contract_address::ContractAddress" + } + ] + }, + { + "kind": "enum", + "name": "kurosawa_akira::SignerComponent::signer_logic_component::Event", + "type": "event", + "variants": [ + { + "kind": "nested", + "name": "NewBinding", + "type": "kurosawa_akira::SignerComponent::signer_logic_component::NewBinding" + } + ] + }, + { + "kind": "struct", + "name": "kurosawa_akira::WithdrawComponent::withdraw_component::ReqOnChainWithdraw", + "type": "event", + "members": [ + { + "kind": "key", + "name": "maker", + "type": "core::starknet::contract_address::ContractAddress" + }, + { + "kind": "data", + "name": "withdraw", + "type": "kurosawa_akira::WithdrawComponent::Withdraw" + } + ] + }, + { + "kind": "struct", + "name": "kurosawa_akira::WithdrawComponent::withdraw_component::Withdrawal", + "type": "event", + "members": [ + { + "kind": "key", + "name": "maker", + "type": "core::starknet::contract_address::ContractAddress" + }, + { + "kind": "data", + "name": "token", + "type": "core::starknet::contract_address::ContractAddress" + }, + { + "kind": "data", + "name": "receiver", + "type": "core::starknet::contract_address::ContractAddress" + }, + { + "kind": "data", + "name": "salt", + "type": "core::felt252" + }, + { + "kind": "data", + "name": "amount", + "type": "core::integer::u256" + }, + { + "kind": "data", + "name": "gas_price", + "type": "core::integer::u256" + }, + { + "kind": "data", + "name": "gas_fee", + "type": "kurosawa_akira::Order::GasFee" + }, + { + "kind": "data", + "name": "direct", + "type": "core::bool" + } + ] + }, + { + "kind": "enum", + "name": "kurosawa_akira::WithdrawComponent::withdraw_component::Event", + "type": "event", + "variants": [ + { + "kind": "nested", + "name": "ReqOnChainWithdraw", + "type": "kurosawa_akira::WithdrawComponent::withdraw_component::ReqOnChainWithdraw" + }, + { + "kind": "nested", + "name": "Withdrawal", + "type": "kurosawa_akira::WithdrawComponent::withdraw_component::Withdrawal" + } + ] + }, + { + "kind": "struct", + "name": "kurosawa_akira::NonceComponent::nonce_component::NonceIncrease", + "type": "event", + "members": [ + { + "kind": "key", + "name": "maker", + "type": "core::starknet::contract_address::ContractAddress" + }, + { + "kind": "data", + "name": "new_nonce", + "type": "core::integer::u32" + } + ] + }, + { + "kind": "enum", + "name": "kurosawa_akira::NonceComponent::nonce_component::Event", + "type": "event", + "variants": [ + { + "kind": "nested", + "name": "NonceIncrease", + "type": "kurosawa_akira::NonceComponent::nonce_component::NonceIncrease" + } + ] + }, + { + "kind": "struct", + "name": "kurosawa_akira::RouterComponent::router_component::Deposit", + "type": "event", + "members": [ + { + "kind": "key", + "name": "router", + "type": "core::starknet::contract_address::ContractAddress" + }, + { + "kind": "key", + "name": "token", + "type": "core::starknet::contract_address::ContractAddress" + }, + { + "kind": "data", + "name": "funder", + "type": "core::starknet::contract_address::ContractAddress" + }, + { + "kind": "data", + "name": "amount", + "type": "core::integer::u256" + } + ] + }, + { + "kind": "struct", + "name": "kurosawa_akira::RouterComponent::router_component::Withdraw", + "type": "event", + "members": [ + { + "kind": "key", + "name": "router", + "type": "core::starknet::contract_address::ContractAddress" + }, + { + "kind": "key", + "name": "token", + "type": "core::starknet::contract_address::ContractAddress" + }, + { + "kind": "data", + "name": "amount", + "type": "core::integer::u256" + }, + { + "kind": "data", + "name": "receiver", + "type": "core::starknet::contract_address::ContractAddress" + } + ] + }, + { + "kind": "struct", + "name": "kurosawa_akira::RouterComponent::router_component::RouterRegistration", + "type": "event", + "members": [ + { + "kind": "key", + "name": "router", + "type": "core::starknet::contract_address::ContractAddress" + }, + { + "kind": "data", + "name": "status", + "type": "core::integer::u8" + } + ] + }, + { + "kind": "struct", + "name": "kurosawa_akira::RouterComponent::router_component::Binding", + "type": "event", + "members": [ + { + "kind": "key", + "name": "router", + "type": "core::starknet::contract_address::ContractAddress" + }, + { + "kind": "key", + "name": "signer", + "type": "core::starknet::contract_address::ContractAddress" + }, + { + "kind": "data", + "name": "is_added", + "type": "core::bool" + } + ] + }, + { + "kind": "struct", + "name": "kurosawa_akira::RouterComponent::router_component::RouterMint", + "type": "event", + "members": [ + { + "kind": "data", + "name": "token", + "type": "core::starknet::contract_address::ContractAddress" + }, + { + "kind": "data", + "name": "router", + "type": "core::starknet::contract_address::ContractAddress" + }, + { + "kind": "data", + "name": "amount", + "type": "core::integer::u256" + } + ] + }, + { + "kind": "struct", + "name": "kurosawa_akira::RouterComponent::router_component::RouterBurn", + "type": "event", + "members": [ + { + "kind": "data", + "name": "router", + "type": "core::starknet::contract_address::ContractAddress" + }, + { + "kind": "data", + "name": "token", + "type": "core::starknet::contract_address::ContractAddress" + }, + { + "kind": "data", + "name": "amount", + "type": "core::integer::u256" + } + ] + }, + { + "kind": "enum", + "name": "kurosawa_akira::RouterComponent::router_component::Event", + "type": "event", + "variants": [ + { + "kind": "nested", + "name": "Deposit", + "type": "kurosawa_akira::RouterComponent::router_component::Deposit" + }, + { + "kind": "nested", + "name": "Withdraw", + "type": "kurosawa_akira::RouterComponent::router_component::Withdraw" + }, + { + "kind": "nested", + "name": "RouterRegistration", + "type": "kurosawa_akira::RouterComponent::router_component::RouterRegistration" + }, + { + "kind": "nested", + "name": "Binding", + "type": "kurosawa_akira::RouterComponent::router_component::Binding" + }, + { + "kind": "nested", + "name": "RouterMint", + "type": "kurosawa_akira::RouterComponent::router_component::RouterMint" + }, + { + "kind": "nested", + "name": "RouterBurn", + "type": "kurosawa_akira::RouterComponent::router_component::RouterBurn" + } + ] + }, + { + "kind": "enum", + "name": "kurosawa_akira::EcosystemTradeComponent::ecosystem_trade_component::Event", + "type": "event", + "variants": [] + }, + { + "kind": "struct", + "name": "kurosawa_akira::LayerAkira::LayerAkira::UpdateExchangeInvoker", + "type": "event", + "members": [ + { + "kind": "key", + "name": "invoker", + "type": "core::starknet::contract_address::ContractAddress" + }, + { + "kind": "data", + "name": "enabled", + "type": "core::bool" + } + ] + }, + { + "kind": "struct", + "name": "kurosawa_akira::LayerAkira::LayerAkira::BaseTokenUpdate", + "type": "event", + "members": [ + { + "kind": "data", + "name": "new_base_token", + "type": "core::starknet::contract_address::ContractAddress" + } + ] + }, + { + "kind": "struct", + "name": "kurosawa_akira::LayerAkira::LayerAkira::FeeRecipientUpdate", + "type": "event", + "members": [ + { + "kind": "data", + "name": "new_fee_recipient", + "type": "core::starknet::contract_address::ContractAddress" + } + ] + }, + { + "kind": "struct", + "name": "kurosawa_akira::LayerAkira::LayerAkira::RouterComponentUpdate", + "type": "event", + "members": [ + { + "kind": "data", + "name": "new_delay", + "type": "kurosawa_akira::utils::SlowModeLogic::SlowModeDelay" + }, + { + "kind": "data", + "name": "min_amount_to_route", + "type": "core::integer::u256" + }, + { + "kind": "data", + "name": "new_punishment_bips", + "type": "core::integer::u16" + } + ] + }, + { + "kind": "struct", + "name": "kurosawa_akira::LayerAkira::LayerAkira::WithdrawComponentUpdate", + "type": "event", + "members": [ + { + "kind": "data", + "name": "new_delay", + "type": "kurosawa_akira::utils::SlowModeLogic::SlowModeDelay" + } + ] + }, + { + "kind": "struct", + "name": "kurosawa_akira::LayerAkira::LayerAkira::VersionUpdate", + "type": "event", + "members": [ + { + "kind": "data", + "name": "new_version", + "type": "core::integer::u16" + } + ] + }, + { + "kind": "enum", + "name": "kurosawa_akira::LayerAkira::LayerAkira::Event", + "type": "event", + "variants": [ + { + "kind": "nested", + "name": "BalancerEvent", + "type": "kurosawa_akira::ExchangeBalanceComponent::exchange_balance_logic_component::Event" + }, + { + "kind": "nested", + "name": "DepositEvent", + "type": "kurosawa_akira::DepositComponent::deposit_component::Event" + }, + { + "kind": "nested", + "name": "SignerEvent", + "type": "kurosawa_akira::SignerComponent::signer_logic_component::Event" + }, + { + "kind": "nested", + "name": "WithdrawEvent", + "type": "kurosawa_akira::WithdrawComponent::withdraw_component::Event" + }, + { + "kind": "nested", + "name": "NonceEvent", + "type": "kurosawa_akira::NonceComponent::nonce_component::Event" + }, + { + "kind": "nested", + "name": "RouterEvent", + "type": "kurosawa_akira::RouterComponent::router_component::Event" + }, + { + "kind": "nested", + "name": "EcosystemTradeEvent", + "type": "kurosawa_akira::EcosystemTradeComponent::ecosystem_trade_component::Event" + }, + { + "kind": "nested", + "name": "UpdateExchangeInvoker", + "type": "kurosawa_akira::LayerAkira::LayerAkira::UpdateExchangeInvoker" + }, + { + "kind": "nested", + "name": "BaseTokenUpdate", + "type": "kurosawa_akira::LayerAkira::LayerAkira::BaseTokenUpdate" + }, + { + "kind": "nested", + "name": "FeeRecipientUpdate", + "type": "kurosawa_akira::LayerAkira::LayerAkira::FeeRecipientUpdate" + }, + { + "kind": "nested", + "name": "RouterComponentUpdate", + "type": "kurosawa_akira::LayerAkira::LayerAkira::RouterComponentUpdate" + }, + { + "kind": "nested", + "name": "WithdrawComponentUpdate", + "type": "kurosawa_akira::LayerAkira::LayerAkira::WithdrawComponentUpdate" + }, + { + "kind": "nested", + "name": "VersionUpdate", + "type": "kurosawa_akira::LayerAkira::LayerAkira::VersionUpdate" + } + ] + }, + { + "type": "event", + "name": "openzeppelin::token::erc20::erc20::ERC20Component::Transfer", + "kind": "struct", + "members": [ + { + "name": "from", + "type": "core::starknet::contract_address::ContractAddress", + "kind": "key" + }, + { + "name": "to", + "type": "core::starknet::contract_address::ContractAddress", + "kind": "key" + }, + { + "name": "value", + "type": "core::integer::u256", + "kind": "data" + } + ] + }, + { + "type": "event", + "name": "openzeppelin::token::erc20::erc20::ERC20Component::Approval", + "kind": "struct", + "members": [ + { + "name": "owner", + "type": "core::starknet::contract_address::ContractAddress", + "kind": "key" + }, + { + "name": "spender", + "type": "core::starknet::contract_address::ContractAddress", + "kind": "key" + }, + { + "name": "value", + "type": "core::integer::u256", + "kind": "data" + } + ] + }, + { + "type": "event", + "name": "openzeppelin::token::erc20::erc20::ERC20Component::Event", + "kind": "enum", + "variants": [ + { + "name": "Transfer", + "type": "openzeppelin::token::erc20::erc20::ERC20Component::Transfer", + "kind": "nested" + }, + { + "name": "Approval", + "type": "openzeppelin::token::erc20::erc20::ERC20Component::Approval", + "kind": "nested" + } + ] + }, + { + "type": "event", + "name": "openzeppelin::presets::erc20::ERC20::Event", + "kind": "enum", + "variants": [ + { + "name": "ERC20Event", + "type": "openzeppelin::token::erc20::erc20::ERC20Component::Event", + "kind": "flat" + } + ] + } + ] +} diff --git a/__tests__/cairo1v2.test.ts b/__tests__/cairo1v2.test.ts index a246d4cd6..9c856e2d7 100644 --- a/__tests__/cairo1v2.test.ts +++ b/__tests__/cairo1v2.test.ts @@ -984,6 +984,10 @@ describe('Cairo 1', () => { const events = eventContract.parseEvents(tx); return expect(events).toStrictEqual(shouldBe); }); + + // test ('parsing ' + + // ) }); describe('cairo v2.4.0 new types', () => { diff --git a/src/types/lib/contract/abi.ts b/src/types/lib/contract/abi.ts index 1b23e1b47..38c64830d 100644 --- a/src/types/lib/contract/abi.ts +++ b/src/types/lib/contract/abi.ts @@ -48,7 +48,9 @@ export type EnumAbi = { export type AbiEvents = { [hash: string]: EventAbi }; -export type EventAbi = Cairo1Event | LegacyEvent; +export type EventAbi = Cairo1Events | LegacyEvent; + +export type Cairo1Events = Cairo1Event | AbiEvents; export type Cairo1Event = { name: string; @@ -57,6 +59,12 @@ export type Cairo1Event = { type: 'event'; }; +export type Cairo1EventVariant = { + kind: 'nested'; + name: string; + type: string; +}; + export type LegacyEvent = { name: string; type: 'event'; diff --git a/src/utils/events/index.ts b/src/utils/events/index.ts index 9d0b3614c..73bee58e4 100644 --- a/src/utils/events/index.ts +++ b/src/utils/events/index.ts @@ -3,13 +3,17 @@ import { AbiEnums, AbiEvents, AbiStructs, - Cairo1Event, + Cairo1Events, EventAbi, LegacyEvent, ParsedEvent, ParsedEvents, RPC, + type Cairo1Event, + type Cairo1EventVariant, } from '../../types'; +import assert from '../assert'; +import { isCairo1Abi } from '../calldata/cairo'; import responseParser from '../calldata/responseParser'; import { starkCurve } from '../ec'; import { addHexPrefix, utf8ToArray } from '../encode'; @@ -17,30 +21,126 @@ import { addHexPrefix, utf8ToArray } from '../encode'; /** * Retrieves the events from the given ABI. * + * Is able to handle Cairo 1 events nested in Cairo components. * @param {Abi} abi - The ABI to extract events from. * @return {AbiEvents} - An object containing the extracted events. */ export function getAbiEvents(abi: Abi): AbiEvents { - return abi - .filter((abiEntry) => abiEntry.type === 'event' && (abiEntry.size || abiEntry.kind !== 'enum')) - .reduce((acc, abiEntry) => { - const entryName = abiEntry.name.slice(abiEntry.name.lastIndexOf(':') + 1); - const abiEntryMod = { ...abiEntry }; - abiEntryMod.name = entryName; - return { - ...acc, - [addHexPrefix(starkCurve.keccak(utf8ToArray(entryName)).toString(16))]: abiEntryMod, - }; - }, {}); + let finalResult: AbiEvents; + if (!isCairo1Abi(abi)) { + // Cairo 0 abi + finalResult = abi + .filter((abiEntry) => abiEntry.type === 'event') + .reduce((acc, abiEntry) => { + const entryName = abiEntry.name; + const abiEntryMod = { ...abiEntry }; + abiEntryMod.name = entryName; + return { + ...acc, + [addHexPrefix(starkCurve.keccak(utf8ToArray(entryName)).toString(16))]: abiEntryMod, + }; + }, {}); + } else { + // Cairo 1 abi + const abiEventsStructs = abi.filter((obj) => obj.type === 'event' && obj.kind === 'struct'); + + console.log(abiEventsStructs.length); + + const abiEventsEnums = abi.filter((obj) => obj.type === 'event' && obj.kind === 'enum'); + console.log(abiEventsEnums.length); + + const abiEventsData: AbiEvents = abiEventsStructs.reduce( + (acc: Cairo1Events, event: Cairo1Events) => { + const nameList: string[] = []; + let { name } = event; + console.log('initial name =', name); + const findName = (variant: Cairo1EventVariant) => variant.type === name; + // eslint-disable-next-line no-constant-condition + while (true) { + const eventEnum = abiEventsEnums.find((eventE) => eventE.variants.some(findName)); + if (typeof eventEnum === 'undefined') break; + const variant: Cairo1EventVariant = eventEnum.variants.find(findName); + // console.log("eventEnum =", eventEnum); + nameList.unshift(variant.name); + name = eventEnum.name; + } + console.log('names of this event =', nameList); + if (nameList.length === 0) { + throw new Error('inconsistancy in ABI events definition.'); + } + const final = nameList.pop(); + let result: AbiEvents = { + [addHexPrefix(starkCurve.keccak(utf8ToArray(final!)).toString(16))]: event, + }; + + while (nameList.length > 0) { + result = { + [addHexPrefix(starkCurve.keccak(utf8ToArray(nameList.pop()!)).toString(16))]: result, + }; + } + result = { ...result }; + // console.log("result =", result); + return mergeAbiEvents(acc, result); + }, + {} + ); + console.log('abiEventsData =', abiEventsData); + finalResult = abiEventsData; + } + return finalResult; +} + +/** + * Checks if a given value is an object (Object or Array) + * @param {any} item the tested item + * @returns {boolean} + * @example + * ```typescript + * const result = events.isObject({event: "pending"}); + * // result = true + * ``` + */ +export function isObject(item: any): boolean { + return item && typeof item === 'object' && !Array.isArray(item); +} + +/** + * internal function to deep merge 2 event description objects + */ +function mergeAbiEvents(target: any, source: any): Object { + const output = { ...target }; + if (isObject(target) && isObject(source)) { + Object.keys(source).forEach((key) => { + if (isObject(source[key])) { + if (!(key in target)) Object.assign(output, { [key]: source[key] }); + else output[key] = mergeAbiEvents(target[key], source[key]); + } else { + Object.assign(output, { [key]: source[key] }); + } + }); + } + return output; } /** * Parse raw events and structure them into response object based on a contract structs and defined events - * @param providerReceivedEvents ProviderEvent[] - Array of raw events - * @param abiEvents AbiEvents - Events defined in the abi - * @param abiStructs AbiStructs - Structs defined in the abi - * @param abiEnums - * @return ParsedEvents - parsed events corresponding to the abi + * @param {RPC.Event[]} providerReceivedEvents Array of raw events + * @param {AbiEvents} abiEvents Events defined in the abi + * @param {AbiStructs} abiStructs Structs defined in the abi + * @param {AbiEnums} abiEnums Enums defined in the abi + * @returns {ParsedEvents} parsed events corresponding to the abi + * @example + * ```typescript + * const abiEvents = events.getAbiEvents(sierra.abi); + * const abiStructs = CallData.getAbiStruct(sierra.abi); + * const abiEnums = CallData.getAbiEnum(sierra.abi); + * const result = events.parseEvents(myEvents, abiEvents, abiStructs, abiEnums); + * // result = [{Trade: { + maker: 7548613724711489396448209137n, + taker: 6435850562375218974960297344n, + router_maker: 0n, + }}] + * ``` */ export function parseEvents( providerReceivedEvents: RPC.Event[], @@ -48,17 +148,23 @@ export function parseEvents( abiStructs: AbiStructs, abiEnums: AbiEnums ): ParsedEvents { - const ret = providerReceivedEvents.flat().reduce((acc, recEvent) => { - const abiEvent: EventAbi = abiEvents[recEvent.keys[0]]; + // const abiEventsEntries = Object.keys(abiEvents); + const ret = providerReceivedEvents.flat().reduce((acc, recEvent: RPC.Event) => { + // const keyPosition = recEvent.keys.findIndex((key) => abiEventsEntries.includes(key)); + let abiEvent: EventAbi | AbiEvents = abiEvents[recEvent.keys.shift() ?? 0]; if (!abiEvent) { return acc; } - + while (!abiEvent.name) { + const hashName = recEvent.keys.shift(); + assert(!!hashName, 'Not enough data in "key" property of this event.'); + abiEvent = (abiEvent as AbiEvents)[hashName]; + } // Create our final event object const parsedEvent: ParsedEvent = {}; - parsedEvent[abiEvent.name] = {}; + parsedEvent[abiEvent.name as string] = {}; // Remove the event's name hashed from the keys array - recEvent.keys.shift(); + // recEvent.keys.shift(); const keysIter = recEvent.keys[Symbol.iterator](); const dataIter = recEvent.data[Symbol.iterator](); @@ -71,22 +177,22 @@ export function parseEvents( (abiEvent as LegacyEvent).data; abiEventKeys.forEach((key) => { - parsedEvent[abiEvent.name][key.name] = responseParser( + parsedEvent[abiEvent.name as string][key.name] = responseParser( keysIter, key, abiStructs, abiEnums, - parsedEvent[abiEvent.name] + parsedEvent[abiEvent.name as string] ); }); abiEventData.forEach((data) => { - parsedEvent[abiEvent.name][data.name] = responseParser( + parsedEvent[abiEvent.name as string][data.name] = responseParser( dataIter, data, abiStructs, abiEnums, - parsedEvent[abiEvent.name] + parsedEvent[abiEvent.name as string] ); }); acc.push(parsedEvent); diff --git a/www/docs/guides/events.md b/www/docs/guides/events.md index 898375712..f85121023 100644 --- a/www/docs/guides/events.md +++ b/www/docs/guides/events.md @@ -121,19 +121,32 @@ In this example, if you want to read the events recorded in the last 10 blocks, import { RpcProvider } from 'starknet'; const provider = new RpcProvider({ nodeUrl: `${myNodeUrl}` }); const lastBlock = await provider.getBlock('latest'); -const keyFilter = [num.toHex(hash.starknetKeccak('EventPanic')), '0x8']; +const keyFilter = [[num.toHex(hash.starknetKeccak('EventPanic')), '0x8']]; const eventsList = await provider.getEvents({ address: myContractAddress, from_block: { block_number: lastBlock.block_number - 9 }, to_block: { block_number: lastBlock.block_number }, - keys: [keyFilter], + keys: keyFilter, chunk_size: 10, }); ``` -> `address, from_block, to_block, keys` are all optional parameters. +:::info +`address, from_block, to_block, keys` are all optional parameters. +::: + +:::tip +If you don't want to filter by key, you can either remove the `keys` parameter, or affect it this way: `[[]]` . +::: + +:::warning CAUTION +An event can be nested in a Cairo component (See the Cairo code of the contract to verify). In this case, the array of keys will start with additional hashes, and you will have to adapt your code in consequence ; in this example, we have to skip one hash : + +```typescript +const keyFilter = [[], [num.toHex(hash.starknetKeccak('EventPanic'))]]; +``` -> If you don't want to filter by key, you can either remove the `keys` parameter, or affect it this way: `[[]]` . +::: Here we have only one event. You can easily read this event: @@ -186,3 +199,13 @@ while (continuationToken) { chunkNum++; } ``` + +If you want to parse an array of events of the same contract (abi of the contract available) : + +```typescript +const abiEvents = events.getAbiEvents(abi); +const abiStructs = CallData.getAbiStruct(abi); +const abiEnums = CallData.getAbiEnum(abi); +const parsed = events.parseEvents(eventsRes.events, abiEvents, abiStructs, abiEnums); +console.log('parsed events=', parsed); +``` diff --git a/www/docusaurus.config.js b/www/docusaurus.config.js index 55b36cd1a..48b4e74e5 100644 --- a/www/docusaurus.config.js +++ b/www/docusaurus.config.js @@ -132,7 +132,7 @@ const config = { }, { label: 'Discord', - href: 'https://discord.com/invite/YgsdxEx3', + href: 'https://discord.com/channels/793094838509764618/927918707613786162', }, ], }, From e16d245c0e0536bcb83949da97ccbe3a560dcc8f Mon Sep 17 00:00:00 2001 From: PhilippeR26 Date: Fri, 31 May 2024 16:29:45 +0200 Subject: [PATCH 30/37] fix: change names of events in tests --- __tests__/cairo1v2.test.ts | 194 ++++++++++++++++++++-- __tests__/cairo1v2_typed.test.ts | 12 +- src/types/lib/contract/abi.ts | 2 +- src/utils/calldata/parser/parser-2.0.0.ts | 11 +- src/utils/events/index.ts | 38 +++-- 5 files changed, 215 insertions(+), 42 deletions(-) diff --git a/__tests__/cairo1v2.test.ts b/__tests__/cairo1v2.test.ts index 9c856e2d7..f4153e204 100644 --- a/__tests__/cairo1v2.test.ts +++ b/__tests__/cairo1v2.test.ts @@ -1,3 +1,5 @@ +import fs from 'node:fs'; +import path from 'node:path'; import { Account, BigNumberish, @@ -18,7 +20,9 @@ import { byteArray, cairo, ec, + events, hash, + json, num, selector, shortString, @@ -870,7 +874,7 @@ describe('Cairo 1', () => { ); const shouldBe: types.ParsedEvents = [ { - EventRegular: { + 'hello_res_events_newTypes::hello_res_events_newTypes::HelloStarknet::EventRegular': { simpleKeyVariable, simpleKeyStruct, simpleKeyArray, @@ -881,8 +885,8 @@ describe('Cairo 1', () => { }, ]; const tx = await provider.waitForTransaction(transaction_hash); - const events = eventContract.parseEvents(tx); - return expect(events).toStrictEqual(shouldBe); + const myEvents = eventContract.parseEvents(tx); + return expect(myEvents).toStrictEqual(shouldBe); }); test('parse event returning a nested struct', async () => { @@ -892,22 +896,22 @@ describe('Cairo 1', () => { ); const shouldBe: types.ParsedEvents = [ { - EventNested: { + 'hello_res_events_newTypes::hello_res_events_newTypes::HelloStarknet::EventNested': { nestedKeyStruct, nestedDataStruct, }, }, ]; const tx = await provider.waitForTransaction(transaction_hash); - const events = eventContract.parseEvents(tx); - return expect(events).toStrictEqual(shouldBe); + const myEvents = eventContract.parseEvents(tx); + return expect(myEvents).toStrictEqual(shouldBe); }); test('parse tx returning multiple similar events', async () => { const anotherKeyVariable = 100n; const shouldBe: types.ParsedEvents = [ { - EventRegular: { + 'hello_res_events_newTypes::hello_res_events_newTypes::HelloStarknet::EventRegular': { simpleKeyVariable, simpleKeyStruct, simpleKeyArray, @@ -917,7 +921,7 @@ describe('Cairo 1', () => { }, }, { - EventRegular: { + 'hello_res_events_newTypes::hello_res_events_newTypes::HelloStarknet::EventRegular': { simpleKeyVariable: anotherKeyVariable, simpleKeyStruct, simpleKeyArray, @@ -945,13 +949,13 @@ describe('Cairo 1', () => { ]); const { transaction_hash } = await account.execute([callData1, callData2]); const tx = await provider.waitForTransaction(transaction_hash); - const events = eventContract.parseEvents(tx); - return expect(events).toStrictEqual(shouldBe); + const myEvents = eventContract.parseEvents(tx); + return expect(myEvents).toStrictEqual(shouldBe); }); test('parse tx returning multiple different events', async () => { const shouldBe: types.ParsedEvents = [ { - EventRegular: { + 'hello_res_events_newTypes::hello_res_events_newTypes::HelloStarknet::EventRegular': { simpleKeyVariable, simpleKeyStruct, simpleKeyArray, @@ -961,7 +965,7 @@ describe('Cairo 1', () => { }, }, { - EventNested: { + 'hello_res_events_newTypes::hello_res_events_newTypes::HelloStarknet::EventNested': { nestedKeyStruct, nestedDataStruct, }, @@ -981,13 +985,171 @@ describe('Cairo 1', () => { ]); const { transaction_hash } = await account.execute([callData1, callData2]); const tx = await provider.waitForTransaction(transaction_hash); - const events = eventContract.parseEvents(tx); - return expect(events).toStrictEqual(shouldBe); + const myEvents = eventContract.parseEvents(tx); + return expect(myEvents).toStrictEqual(shouldBe); }); - // test ('parsing ' + test('parsing nested events from Cairo components', () => { + // this abi is from Sepolia contract 0x07981ea76ca241100a3e1cd4083a15a73a068b6d6a946d36042cbfc9b531baa2 + // with the end from OpenZeppelin ERC20 contract (for `flat` event test) + const { abi } = json.parse( + fs + .readFileSync( + path.resolve(__dirname, `../__mocks__/cairo/cairo260/nestedEvents.abi.json`) + ) + .toString('ascii') + ); + const abiEvents = events.getAbiEvents(abi); + const abiStructs = CallData.getAbiStruct(abi); + const abiEnums = CallData.getAbiEnum(abi); + const rawEventNested = { + block_hash: '0x39f27ab4cd508ab99e818512b261a7e4ae01072eb4ec8bb86aeb64755f99f2c', + block_number: 69198, + data: [ + '0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7', + '0x4718f5a0fc34cc1af16a1cdee98ffb20c31f5cd61d6ab07201858f4287c938d', + '0x0', + '0x0', + '0x8bb2c97000', + '0x0', + '0x425615c73f000', + '0x0', + '0x0', + '0x0', + '0x0', + '0x2bfc41e4bcfdbe82d0bafe3f935dadb18b6e90be3d22ccccea1f5b10986ed53', + '0x7aab02decaf82af6fa798fe8d23de042695846ab9dae9f18331fffc518d3d36', + '0x616b697261', + '0x616b697261', + ], + from_address: '0x7981ea76ca241100a3e1cd4083a15a73a068b6d6a946d36042cbfc9b531baa2', + keys: [ + '0x22ea134d4126804c60797e633195f8c9aa5fd6d1567e299f4961d0e96f373ee', + '0x2e0a012a863e6b614014d113e7285b06e30d2999e42e6e03ba2ef6158b0a8f1', + '0x33e29bc9b537bae4e370559331e2bf35b434b566f41a64601b37f410f46a580', + '0x33e29bc9b537bae4e370559331e2bf35b434b566f41a64601b37f410f46a580', + ], + transaction_hash: '0x4e38fcce79c115b6fe2c486e3514efc1bd4da386b91c104e97230177d0bf181', + }; + const parsedEvent = events.parseEvents([rawEventNested], abiEvents, abiStructs, abiEnums); + expect(parsedEvent).toEqual([ + { + 'kurosawa_akira::ExchangeBalanceComponent::exchange_balance_logic_component::Trade': { + maker: 1466771120193999006693452314154095230636738457276435850562375218974960297344n, + taker: 1466771120193999006693452314154095230636738457276435850562375218974960297344n, + ticker: { + '0': 2087021424722619777119509474943472645767659996348769578120564519014510906823n, + '1': 2009894490435840142178314390393166646092438090257831307886760648929397478285n, + }, + router_maker: 0n, + router_taker: 0n, + amount_base: 600000000000n, + amount_quote: 1167000000000000n, + is_sell_side: false, + is_failed: false, + is_ecosystem_book: false, + maker_hash: + 1243447045605505261525562127352132336915826038411731622093247599150671261011n, + taker_hash: + 3467769886575726876986429904727435956490031836678599158998056330580017888566n, + maker_source: 418413900385n, + taker_source: 418413900385n, + }, + }, + ]); + // From component `DepositComponent`, event `Deposit` (same event name than next) + const rawEventNestedDeposit1 = { + block_hash: '0x31afd649a5042cb1855ce820708a555eab62fe6ea07a2a538fa9100cdc80383', + block_number: 69198, + data: [ + '0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7', + '0x33e29bc9b537bae4e370559331e2bf35b434b566f41a64601b37f410f46a580', + '0x119b74ab81c000', + '0x0', + ], + from_address: '0x7981ea76ca241100a3e1cd4083a15a73a068b6d6a946d36042cbfc9b531baa2', + keys: [ + '0xa1db419bdf20c7726cf74c30394c4300e5645db4e3cacaf897da05faabae03', + '0x9149d2123147c5f43d258257fef0b7b969db78269369ebcf5ebb9eef8592f2', + '0x033e29bc9b537bae4e370559331e2bf35b434b566f41a64601b37f410f46a580', + ], + transaction_hash: '0x7768860d79bfb4c8463d215abea3c267899e373407c6882077f7447051c50de', + }; + // From component `RouterComponent`, event `Deposit` (same event name than previous) + const rawEventNestedDeposit2 = { + block_hash: '0x39f27ab4cd508ab99e818512b261a7e4ae01072eb4ec8bb86aeb64755f99f2c', + block_number: 69198, + data: [ + '0x33e29bc9b537bae4e370559331e2bf35b434b566f41a64601b37f410f46a580', + '0x119b74ab81c000', + '0x0', + ], + from_address: '0x7981ea76ca241100a3e1cd4083a15a73a068b6d6a946d36042cbfc9b531baa2', + keys: [ + '0x1352a17d221f274db15a49e35cc827e5106495ba85330b210632597411d5a46', + '0x9149d2123147c5f43d258257fef0b7b969db78269369ebcf5ebb9eef8592f2', + '0x33e29bc9b537bae4e370559331e2bf35b434b566f41a64601b37f410f46a580', + '0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7', + ], + transaction_hash: '0x2d5210e5334a83306abe6f7f5e7e65cd1feed72ad3b8e359a2f4614fa948e1d', + }; + const parsedEventNestedDeposit1 = events.parseEvents( + [rawEventNestedDeposit1], + abiEvents, + abiStructs, + abiEnums + ); + expect(parsedEventNestedDeposit1).toEqual([ + { + 'kurosawa_akira::DepositComponent::deposit_component::Deposit': { + receiver: 1466771120193999006693452314154095230636738457276435850562375218974960297344n, + token: 2087021424722619777119509474943472645767659996348769578120564519014510906823n, + funder: 1466771120193999006693452314154095230636738457276435850562375218974960297344n, + amount: 4956000000000000n, + }, + }, + ]); + const parsedEventNestedDeposit2 = events.parseEvents( + [rawEventNestedDeposit2], + abiEvents, + abiStructs, + abiEnums + ); + expect(parsedEventNestedDeposit2).toEqual([ + { + 'kurosawa_akira::RouterComponent::router_component::Deposit': { + router: 1466771120193999006693452314154095230636738457276435850562375218974960297344n, + token: 2087021424722619777119509474943472645767659996348769578120564519014510906823n, + funder: 1466771120193999006693452314154095230636738457276435850562375218974960297344n, + amount: 4956000000000000n, + }, + }, + ]); - // ) + // parsing nested event with #[flat] attribute, from a Cairo component + const rawEventFlat = { + block_hash: '0x39f27ab4cd508ab99e818512b261a7e4ae01072eb4ec8bb86aeb64755f99f2c', + block_number: 69198, + data: ['0x119b74ab81c000', '0x0'], + from_address: '0x7981ea76ca241100a3e1cd4083a15a73a068b6d6a946d36042cbfc9b531baa2', + keys: [ + '0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9', + '0x33e29bc9b537bae4e370559331e2bf35b434b566f41a64601b37f410f46a580', + '0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7', + ], + transaction_hash: '0x2da31a929a9848e9630906275a75a531e1718d4830501e10b0bccacd55f6fe0', + }; + const parsedEventFlat = events.parseEvents([rawEventFlat], abiEvents, abiStructs, abiEnums); + expect(parsedEventFlat).toEqual([ + { + 'openzeppelin::token::erc20::erc20::ERC20Component::Transfer': { + from: 1466771120193999006693452314154095230636738457276435850562375218974960297344n, + to: 2087021424722619777119509474943472645767659996348769578120564519014510906823n, + value: 4956000000000000n, + }, + }, + ]); + }); }); describe('cairo v2.4.0 new types', () => { diff --git a/__tests__/cairo1v2_typed.test.ts b/__tests__/cairo1v2_typed.test.ts index cdcefcc35..bbf99f320 100644 --- a/__tests__/cairo1v2_typed.test.ts +++ b/__tests__/cairo1v2_typed.test.ts @@ -802,7 +802,7 @@ describe('Cairo 1', () => { ); const shouldBe: types.ParsedEvents = [ { - EventRegular: { + 'hello_res_events_newTypes::hello_res_events_newTypes::HelloStarknet::EventRegular': { simpleKeyVariable, simpleKeyStruct, simpleKeyArray, @@ -824,7 +824,7 @@ describe('Cairo 1', () => { ); const shouldBe: types.ParsedEvents = [ { - EventNested: { + 'hello_res_events_newTypes::hello_res_events_newTypes::HelloStarknet::EventNested': { nestedKeyStruct, nestedDataStruct, }, @@ -840,7 +840,7 @@ describe('Cairo 1', () => { const anotherKeyVariable = 100n; const shouldBe: types.ParsedEvents = [ { - EventRegular: { + 'hello_res_events_newTypes::hello_res_events_newTypes::HelloStarknet::EventRegular': { simpleKeyVariable, simpleKeyStruct, simpleKeyArray, @@ -850,7 +850,7 @@ describe('Cairo 1', () => { }, }, { - EventRegular: { + 'hello_res_events_newTypes::hello_res_events_newTypes::HelloStarknet::EventRegular': { simpleKeyVariable: anotherKeyVariable, simpleKeyStruct, simpleKeyArray, @@ -884,7 +884,7 @@ describe('Cairo 1', () => { test('parse tx returning multiple different events', async () => { const shouldBe: types.ParsedEvents = [ { - EventRegular: { + 'hello_res_events_newTypes::hello_res_events_newTypes::HelloStarknet::EventRegular': { simpleKeyVariable, simpleKeyStruct, simpleKeyArray, @@ -894,7 +894,7 @@ describe('Cairo 1', () => { }, }, { - EventNested: { + 'hello_res_events_newTypes::hello_res_events_newTypes::HelloStarknet::EventNested': { nestedKeyStruct, nestedDataStruct, }, diff --git a/src/types/lib/contract/abi.ts b/src/types/lib/contract/abi.ts index 38c64830d..936bc8d9d 100644 --- a/src/types/lib/contract/abi.ts +++ b/src/types/lib/contract/abi.ts @@ -60,7 +60,7 @@ export type Cairo1Event = { }; export type Cairo1EventVariant = { - kind: 'nested'; + kind: 'nested' | 'flat'; name: string; type: string; }; diff --git a/src/utils/calldata/parser/parser-2.0.0.ts b/src/utils/calldata/parser/parser-2.0.0.ts index 94e6a83bc..23e1d688a 100644 --- a/src/utils/calldata/parser/parser-2.0.0.ts +++ b/src/utils/calldata/parser/parser-2.0.0.ts @@ -1,4 +1,11 @@ -import { Abi, FunctionAbi, EventAbi, StructAbi, InterfaceAbi } from '../../../types'; +import { + Abi, + FunctionAbi, + EventAbi, + StructAbi, + InterfaceAbi, + type LegacyEvent, +} from '../../../types'; import { AbiParserInterface } from './interface'; export class AbiParser2 implements AbiParserInterface { @@ -34,7 +41,7 @@ export class AbiParser2 implements AbiParserInterface { * @returns Abi */ public getLegacyFormat(): Abi { - return this.abi.flatMap((e: FunctionAbi | EventAbi | StructAbi | InterfaceAbi) => { + return this.abi.flatMap((e: FunctionAbi | LegacyEvent | StructAbi | InterfaceAbi) => { if (e.type === 'interface') { return e.items; } diff --git a/src/utils/events/index.ts b/src/utils/events/index.ts index 73bee58e4..d10412529 100644 --- a/src/utils/events/index.ts +++ b/src/utils/events/index.ts @@ -24,6 +24,22 @@ import { addHexPrefix, utf8ToArray } from '../encode'; * Is able to handle Cairo 1 events nested in Cairo components. * @param {Abi} abi - The ABI to extract events from. * @return {AbiEvents} - An object containing the extracted events. + * @example + * ```typescript + * const result = events.getAbiEvents(abi); + * // result = { + * // '0x22ea134d4126804c60797e633195f8c9aa5fd6d1567e299f4961d0e96f373ee': + * // { '0x34e55c1cd55f1338241b50d352f0e91c7e4ffad0e4271d64eb347589ebdfd16': { + * // kind: 'struct', type: 'event', + * // name: 'ka::ExComponent::ex_logic_component::Mint', + + * // members: [{ + * // name: 'spender', + * // type: 'core::starknet::contract_address::ContractAddress', + * // kind: 'key'}, + * // { name: 'value', type: 'core::integer::u256', kind: 'data' }]}, + * // ... + * ``` */ export function getAbiEvents(abi: Abi): AbiEvents { let finalResult: AbiEvents; @@ -43,48 +59,40 @@ export function getAbiEvents(abi: Abi): AbiEvents { } else { // Cairo 1 abi const abiEventsStructs = abi.filter((obj) => obj.type === 'event' && obj.kind === 'struct'); - - console.log(abiEventsStructs.length); - const abiEventsEnums = abi.filter((obj) => obj.type === 'event' && obj.kind === 'enum'); - console.log(abiEventsEnums.length); - const abiEventsData: AbiEvents = abiEventsStructs.reduce( (acc: Cairo1Events, event: Cairo1Events) => { - const nameList: string[] = []; + let nameList: string[] = []; let { name } = event; - console.log('initial name =', name); + let flat: boolean = false; const findName = (variant: Cairo1EventVariant) => variant.type === name; // eslint-disable-next-line no-constant-condition while (true) { const eventEnum = abiEventsEnums.find((eventE) => eventE.variants.some(findName)); if (typeof eventEnum === 'undefined') break; const variant: Cairo1EventVariant = eventEnum.variants.find(findName); - // console.log("eventEnum =", eventEnum); nameList.unshift(variant.name); + if (variant.kind === 'flat') flat = true; name = eventEnum.name; } - console.log('names of this event =', nameList); if (nameList.length === 0) { throw new Error('inconsistancy in ABI events definition.'); } + if (flat) nameList = [nameList[nameList.length - 1]]; const final = nameList.pop(); let result: AbiEvents = { [addHexPrefix(starkCurve.keccak(utf8ToArray(final!)).toString(16))]: event, }; - while (nameList.length > 0) { result = { [addHexPrefix(starkCurve.keccak(utf8ToArray(nameList.pop()!)).toString(16))]: result, }; } result = { ...result }; - // console.log("result =", result); return mergeAbiEvents(acc, result); }, {} ); - console.log('abiEventsData =', abiEventsData); finalResult = abiEventsData; } return finalResult; @@ -135,7 +143,7 @@ function mergeAbiEvents(target: any, source: any): Object { * const abiStructs = CallData.getAbiStruct(sierra.abi); * const abiEnums = CallData.getAbiEnum(sierra.abi); * const result = events.parseEvents(myEvents, abiEvents, abiStructs, abiEnums); - * // result = [{Trade: { + * // result = [{test::ExCh::ex_ch::Trade: { maker: 7548613724711489396448209137n, taker: 6435850562375218974960297344n, router_maker: 0n, @@ -148,9 +156,7 @@ export function parseEvents( abiStructs: AbiStructs, abiEnums: AbiEnums ): ParsedEvents { - // const abiEventsEntries = Object.keys(abiEvents); const ret = providerReceivedEvents.flat().reduce((acc, recEvent: RPC.Event) => { - // const keyPosition = recEvent.keys.findIndex((key) => abiEventsEntries.includes(key)); let abiEvent: EventAbi | AbiEvents = abiEvents[recEvent.keys.shift() ?? 0]; if (!abiEvent) { return acc; @@ -164,8 +170,6 @@ export function parseEvents( const parsedEvent: ParsedEvent = {}; parsedEvent[abiEvent.name as string] = {}; // Remove the event's name hashed from the keys array - // recEvent.keys.shift(); - const keysIter = recEvent.keys[Symbol.iterator](); const dataIter = recEvent.data[Symbol.iterator](); From 8c87f99a7698c0307ef0556e7e6c3394c6673c97 Mon Sep 17 00:00:00 2001 From: PhilippeR26 Date: Mon, 3 Jun 2024 20:17:01 +0200 Subject: [PATCH 31/37] refactor: change type names --- src/contract/default.ts | 4 +- src/index.ts | 3 +- src/types/lib/contract/abi.ts | 29 ++++++++----- src/utils/calldata/parser/parser-2.0.0.ts | 8 ++-- src/utils/events.ts | 31 -------------- src/utils/events/index.ts | 51 ++++++++++++++++++----- 6 files changed, 67 insertions(+), 59 deletions(-) delete mode 100644 src/utils/events.ts diff --git a/src/contract/default.ts b/src/contract/default.ts index 1cac159d8..221d2c448 100644 --- a/src/contract/default.ts +++ b/src/contract/default.ts @@ -21,7 +21,7 @@ import { ParsedEvents, RawArgs, Result, - StructAbi, + AbiStruct, ValidateType, } from '../types'; import assert from '../utils/assert'; @@ -124,7 +124,7 @@ export class Contract implements ContractInterface { deployTransactionHash?: string; - protected readonly structs: { [name: string]: StructAbi }; + protected readonly structs: { [name: string]: AbiStruct }; protected readonly events: AbiEvents; diff --git a/src/index.ts b/src/index.ts index c4cd4d3bf..ec41d36bf 100644 --- a/src/index.ts +++ b/src/index.ts @@ -33,7 +33,7 @@ export * as ec from './utils/ec'; export * as starknetId from './utils/starknetId'; export * as provider from './utils/provider'; export * as selector from './utils/selector'; -export * as events from './utils/events/index'; +export * as events from './utils/events'; export * from './utils/cairoDataTypes/uint256'; export * from './utils/cairoDataTypes/uint512'; export * from './utils/address'; @@ -41,7 +41,6 @@ export * from './utils/url'; export * from './utils/calldata'; export * from './utils/calldata/enum'; export * from './utils/contract'; -export * from './utils/events'; export * from './utils/transactionReceipt'; export * as wallet from './wallet/connect'; diff --git a/src/types/lib/contract/abi.ts b/src/types/lib/contract/abi.ts index 936bc8d9d..97b7eec61 100644 --- a/src/types/lib/contract/abi.ts +++ b/src/types/lib/contract/abi.ts @@ -1,5 +1,5 @@ /** ABI */ -export type Abi = ReadonlyArray; +export type Abi = ReadonlyArray; // Basic elements export type AbiEntry = { name: string; type: 'felt' | 'felt*' | string }; @@ -22,9 +22,9 @@ export type FunctionAbi = { type: FunctionAbiType; }; -export type AbiStructs = { [name: string]: StructAbi }; +export type AbiStructs = { [name: string]: AbiStruct }; -export type StructAbi = { +export type AbiStruct = { members: (AbiEntry & { offset: number })[]; name: string; size: number; @@ -38,28 +38,37 @@ export type InterfaceAbi = { type: 'interface'; }; -export type AbiEnums = { [name: string]: EnumAbi }; -export type EnumAbi = { +export type AbiEnums = { [name: string]: AbiEnum }; +export type AbiEnum = { variants: (AbiEntry & { offset: number })[]; name: string; size: number; type: 'enum'; }; -export type AbiEvents = { [hash: string]: EventAbi }; +// AbiEvents type is an arborescence : +// - Nodes are hashes of Cairo 1 components names, or of Cairo 0 or 1 event names, +// - With Cairo 1 abi, the nodes are linked in accordance with the components arborescence ; the tree can have several levels. +// - With Cairo 0 abi : the tree has only one level (no component concept) +// - leaves are the description of each event (not the same for Cairo 0 and Cairo 1) +// - if the #[flat] flag is used in the Cairo 1 code to describe an event, or if the event is in the main code, the branch for this event has only one level. +export type AbiEvents = { [hash: string]: AbiEvent }; -export type EventAbi = Cairo1Events | LegacyEvent; +// if Cairo 1 then definition of an event, or new level +// if Cairo 0 then definition of an event +export type AbiEvent = CairoEvent | LegacyEvent; -export type Cairo1Events = Cairo1Event | AbiEvents; +// CairoEvent is CairoEventDefinition type if we have a leaf (end of the arborescence for an event), otherwise a new branch is created. Only for Cairo 1 +export type CairoEvent = CairoEventDefinition | AbiEvents; -export type Cairo1Event = { +export type CairoEventDefinition = { name: string; members: EventEntry[]; kind: 'struct'; type: 'event'; }; -export type Cairo1EventVariant = { +export type CairoEventVariant = { kind: 'nested' | 'flat'; name: string; type: string; diff --git a/src/utils/calldata/parser/parser-2.0.0.ts b/src/utils/calldata/parser/parser-2.0.0.ts index 23e1d688a..1a6cbe48e 100644 --- a/src/utils/calldata/parser/parser-2.0.0.ts +++ b/src/utils/calldata/parser/parser-2.0.0.ts @@ -1,8 +1,8 @@ import { Abi, FunctionAbi, - EventAbi, - StructAbi, + AbiEvent, + AbiStruct, InterfaceAbi, type LegacyEvent, } from '../../../types'; @@ -31,7 +31,7 @@ export class AbiParser2 implements AbiParserInterface { */ public getMethod(name: string): FunctionAbi | undefined { const intf = this.abi.find( - (it: FunctionAbi | EventAbi | StructAbi | InterfaceAbi) => it.type === 'interface' + (it: FunctionAbi | AbiEvent | AbiStruct | InterfaceAbi) => it.type === 'interface' ) as InterfaceAbi; return intf.items.find((it) => it.name === name); } @@ -41,7 +41,7 @@ export class AbiParser2 implements AbiParserInterface { * @returns Abi */ public getLegacyFormat(): Abi { - return this.abi.flatMap((e: FunctionAbi | LegacyEvent | StructAbi | InterfaceAbi) => { + return this.abi.flatMap((e: FunctionAbi | LegacyEvent | AbiStruct | InterfaceAbi) => { if (e.type === 'interface') { return e.items; } diff --git a/src/utils/events.ts b/src/utils/events.ts deleted file mode 100644 index 700dd97b6..000000000 --- a/src/utils/events.ts +++ /dev/null @@ -1,31 +0,0 @@ -import { UDC } from '../constants'; -import { InvokeTransactionReceiptResponse } from '../types/provider'; -import { cleanHex } from './num'; - -/** - * Parse Transaction Receipt Event from UDC invoke transaction and - * create DeployContractResponse compatible response with addition of the UDC Event data - * - * @returns DeployContractResponse | UDC Event Response data - */ -export function parseUDCEvent(txReceipt: InvokeTransactionReceiptResponse) { - if (!txReceipt.events) { - throw new Error('UDC emitted event is empty'); - } - const event = txReceipt.events.find( - (it: any) => cleanHex(it.from_address) === cleanHex(UDC.ADDRESS) - ) || { - data: [], - }; - return { - transaction_hash: txReceipt.transaction_hash, - contract_address: event.data[0], - address: event.data[0], - deployer: event.data[1], - unique: event.data[2], - classHash: event.data[3], - calldata_len: event.data[4], - calldata: event.data.slice(5, 5 + parseInt(event.data[4], 16)), - salt: event.data[event.data.length - 1], - }; -} diff --git a/src/utils/events/index.ts b/src/utils/events/index.ts index d10412529..f56c03efa 100644 --- a/src/utils/events/index.ts +++ b/src/utils/events/index.ts @@ -1,22 +1,25 @@ +import { UDC } from '../../constants'; import { Abi, AbiEnums, AbiEvents, AbiStructs, - Cairo1Events, - EventAbi, + CairoEvent, + AbiEvent, LegacyEvent, ParsedEvent, ParsedEvents, RPC, - type Cairo1Event, - type Cairo1EventVariant, + type CairoEventDefinition, + type CairoEventVariant, + type InvokeTransactionReceiptResponse, } from '../../types'; import assert from '../assert'; import { isCairo1Abi } from '../calldata/cairo'; import responseParser from '../calldata/responseParser'; import { starkCurve } from '../ec'; import { addHexPrefix, utf8ToArray } from '../encode'; +import { cleanHex } from '../num'; /** * Retrieves the events from the given ABI. @@ -61,16 +64,16 @@ export function getAbiEvents(abi: Abi): AbiEvents { const abiEventsStructs = abi.filter((obj) => obj.type === 'event' && obj.kind === 'struct'); const abiEventsEnums = abi.filter((obj) => obj.type === 'event' && obj.kind === 'enum'); const abiEventsData: AbiEvents = abiEventsStructs.reduce( - (acc: Cairo1Events, event: Cairo1Events) => { + (acc: CairoEvent, event: CairoEvent) => { let nameList: string[] = []; let { name } = event; let flat: boolean = false; - const findName = (variant: Cairo1EventVariant) => variant.type === name; + const findName = (variant: CairoEventVariant) => variant.type === name; // eslint-disable-next-line no-constant-condition while (true) { const eventEnum = abiEventsEnums.find((eventE) => eventE.variants.some(findName)); if (typeof eventEnum === 'undefined') break; - const variant: Cairo1EventVariant = eventEnum.variants.find(findName); + const variant: CairoEventVariant = eventEnum.variants.find(findName); nameList.unshift(variant.name); if (variant.kind === 'flat') flat = true; name = eventEnum.name; @@ -157,7 +160,7 @@ export function parseEvents( abiEnums: AbiEnums ): ParsedEvents { const ret = providerReceivedEvents.flat().reduce((acc, recEvent: RPC.Event) => { - let abiEvent: EventAbi | AbiEvents = abiEvents[recEvent.keys.shift() ?? 0]; + let abiEvent: AbiEvent | AbiEvents = abiEvents[recEvent.keys.shift() ?? 0]; if (!abiEvent) { return acc; } @@ -174,10 +177,10 @@ export function parseEvents( const dataIter = recEvent.data[Symbol.iterator](); const abiEventKeys = - (abiEvent as Cairo1Event).members?.filter((it) => it.kind === 'key') || + (abiEvent as CairoEventDefinition).members?.filter((it) => it.kind === 'key') || (abiEvent as LegacyEvent).keys; const abiEventData = - (abiEvent as Cairo1Event).members?.filter((it) => it.kind === 'data') || + (abiEvent as CairoEventDefinition).members?.filter((it) => it.kind === 'data') || (abiEvent as LegacyEvent).data; abiEventKeys.forEach((key) => { @@ -204,3 +207,31 @@ export function parseEvents( }, [] as ParsedEvents); return ret; } + +/** + * Parse Transaction Receipt Event from UDC invoke transaction and + * create DeployContractResponse compatible response with addition of the UDC Event data + * + * @returns DeployContractResponse | UDC Event Response data + */ +export function parseUDCEvent(txReceipt: InvokeTransactionReceiptResponse) { + if (!txReceipt.events) { + throw new Error('UDC emitted event is empty'); + } + const event = txReceipt.events.find( + (it: any) => cleanHex(it.from_address) === cleanHex(UDC.ADDRESS) + ) || { + data: [], + }; + return { + transaction_hash: txReceipt.transaction_hash, + contract_address: event.data[0], + address: event.data[0], + deployer: event.data[1], + unique: event.data[2], + classHash: event.data[3], + calldata_len: event.data[4], + calldata: event.data.slice(5, 5 + parseInt(event.data[4], 16)), + salt: event.data[event.data.length - 1], + }; +} From 49554a25262c4f20a8bc244f7df1cfe6681f371f Mon Sep 17 00:00:00 2001 From: PhilippeR26 Date: Mon, 3 Jun 2024 20:28:22 +0200 Subject: [PATCH 32/37] test: adapt parseUDCEvent to events namespace --- __tests__/account.test.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/__tests__/account.test.ts b/__tests__/account.test.ts index 399ac13b0..67cedbfdd 100644 --- a/__tests__/account.test.ts +++ b/__tests__/account.test.ts @@ -11,10 +11,10 @@ import { constants, contractClassResponseToLegacyCompiledContract, ec, + events, extractContractHashes, hash, num, - parseUDCEvent, shortString, stark, } from '../src'; @@ -537,7 +537,7 @@ describe('deploy and test Wallet', () => { // check pre-calculated address const txReceipt = await provider.waitForTransaction(deployment.transaction_hash); - const udcEvent = parseUDCEvent(txReceipt as any); // todo: when time fix types + const udcEvent = events.parseUDCEvent(txReceipt as any); // todo: when time fix types expect(cleanHex(deployment.contract_address[0])).toBe(cleanHex(udcEvent.contract_address)); }); @@ -558,7 +558,7 @@ describe('deploy and test Wallet', () => { // check pre-calculated address const txReceipt = await provider.waitForTransaction(deployment.transaction_hash); - const udcEvent = parseUDCEvent(txReceipt as any); // todo: when time fix types + const udcEvent = events.parseUDCEvent(txReceipt as any); // todo: when time fix types expect(cleanHex(deployment.contract_address[0])).toBe(cleanHex(udcEvent.contract_address)); }); From b01893c5bc5e724853eb21f85eeba05c41abcfec Mon Sep 17 00:00:00 2001 From: PhilippeR26 Date: Wed, 5 Jun 2024 14:12:21 +0200 Subject: [PATCH 33/37] refactor: implement reviewer requests --- src/types/lib/contract/abi.ts | 12 +-- src/utils/events/index.ts | 163 ++++++++++++++++++++++------------ 2 files changed, 113 insertions(+), 62 deletions(-) diff --git a/src/types/lib/contract/abi.ts b/src/types/lib/contract/abi.ts index 97b7eec61..9c11821e7 100644 --- a/src/types/lib/contract/abi.ts +++ b/src/types/lib/contract/abi.ts @@ -47,14 +47,14 @@ export type AbiEnum = { }; // AbiEvents type is an arborescence : -// - Nodes are hashes of Cairo 1 components names, or of Cairo 0 or 1 event names, -// - With Cairo 1 abi, the nodes are linked in accordance with the components arborescence ; the tree can have several levels. -// - With Cairo 0 abi : the tree has only one level (no component concept) -// - leaves are the description of each event (not the same for Cairo 0 and Cairo 1) -// - if the #[flat] flag is used in the Cairo 1 code to describe an event, or if the event is in the main code, the branch for this event has only one level. +// - Nodes are hashes of either Cairo 1 components names, or of Cairo 0 or 1 event names, +// - With Cairo 1 abi, the nodes are linked in accordance with the components arborescence ; the tree can have several levels of nodes. +// - With Cairo 0 abi : the tree has only one level of nodes (no component concept) +// - leaves are at the end of each branch ; they describes each event (not the same for Cairo 0 and Cairo 1) +// - if the #[flat] flag is used in the Cairo 1 code to describe an event, or if the event is in the main code, the branch for this event has only one level of nodes (see example class 0x46ded64ae2dead6448e247234bab192a9c483644395b66f2155f2614e5804b0 in Sepolia) export type AbiEvents = { [hash: string]: AbiEvent }; -// if Cairo 1 then definition of an event, or new level +// if Cairo 1 then either definition of an event, or new level of nodes // if Cairo 0 then definition of an event export type AbiEvent = CairoEvent | LegacyEvent; diff --git a/src/utils/events/index.ts b/src/utils/events/index.ts index f56c03efa..aba7f0a25 100644 --- a/src/utils/events/index.ts +++ b/src/utils/events/index.ts @@ -1,3 +1,4 @@ +// import { API } from '@starknet-io/types-js'; import { UDC } from '../../constants'; import { Abi, @@ -13,6 +14,7 @@ import { type CairoEventDefinition, type CairoEventVariant, type InvokeTransactionReceiptResponse, + type AbiEntry, } from '../../types'; import assert from '../assert'; import { isCairo1Abi } from '../calldata/cairo'; @@ -22,11 +24,113 @@ import { addHexPrefix, utf8ToArray } from '../encode'; import { cleanHex } from '../num'; /** - * Retrieves the events from the given ABI. + * Check if an ABI entry is related to events. + * @param {AbiEntry} object an Abi entry + * @returns {boolean} true if this Abi Entry is related to an event + * @example + * ```typescript + * // use of a transaction receipt + * ``` + */ +export function isAbiEvent(object: AbiEntry): boolean { + return object.type === 'event'; +} + +/** + * Retrieves the events from the given Cairo 0 ABI. + * @param {Abi} abi - The Cairo 0 ABI to extract events from. + * @return {AbiEvents} - An object containing the hashes and the definition of the events. + * @example + * ```typescript + * const result = events.getCairo0AbiEvents(abi0); + * // result = { + '0x35ea10b06d74221d24a134672e9f776a3088ba6b9829e53b9a10abd8817a211': { + data: [{ name: 'admin_requester', type: 'felt' }, { name: 'new_requester', type: 'felt' }], + keys: [], + name: 'AddAdmin', + type: 'event' + } + * ``` + */ +function getCairo0AbiEvents(abi: Abi) { + return abi + .filter((abiEntry) => abiEntry.type === 'event') + .reduce((acc, abiEntry) => { + const entryName = abiEntry.name; + const abiEntryMod = { ...abiEntry }; + abiEntryMod.name = entryName; + return { + ...acc, + [addHexPrefix(starkCurve.keccak(utf8ToArray(entryName)).toString(16))]: abiEntryMod, + }; + }, {}); +} + +/** + * Retrieves the events from the given Cairo 1 ABI. + * + * Is able to handle events nested in Cairo components. + * @param {Abi} abi - The Cairo 1 ABI to extract events from. + * @return {AbiEvents} - An object containing the hashes and the definition of the events. + * @example + * ```typescript + * const result = events.getCairo1AbiEvents(abi1); + * // result = { + * // '0x22ea134d4126804c60797e633195f8c9aa5fd6d1567e299f4961d0e96f373ee': + * // { '0x34e55c1cd55f1338241b50d352f0e91c7e4ffad0e4271d64eb347589ebdfd16': { + * // kind: 'struct', type: 'event', + * // name: 'ka::ExComponent::ex_logic_component::Mint', + + * // members: [{ + * // name: 'spender', + * // type: 'core::starknet::contract_address::ContractAddress', + * // kind: 'key'}, + * // { name: 'value', type: 'core::integer::u256', kind: 'data' }]}, + * // ... + * ``` + */ +function getCairo1AbiEvents(abi: Abi) { + const abiEventsStructs = abi.filter((obj) => isAbiEvent(obj) && obj.kind === 'struct'); + const abiEventsEnums = abi.filter((obj) => isAbiEvent(obj) && obj.kind === 'enum'); + const abiEventsData: AbiEvents = abiEventsStructs.reduce((acc: CairoEvent, event: CairoEvent) => { + let nameList: string[] = []; + let { name } = event; + let flat: boolean = false; + const findName = (variant: CairoEventVariant) => variant.type === name; + // eslint-disable-next-line no-constant-condition + while (true) { + const eventEnum = abiEventsEnums.find((eventE) => eventE.variants.some(findName)); + if (typeof eventEnum === 'undefined') break; + const variant: CairoEventVariant = eventEnum.variants.find(findName); + nameList.unshift(variant.name); + if (variant.kind === 'flat') flat = true; + name = eventEnum.name; + } + if (nameList.length === 0) { + throw new Error('inconsistency in ABI events definition.'); + } + if (flat) nameList = [nameList[nameList.length - 1]]; + const final = nameList.pop(); + let result: AbiEvents = { + [addHexPrefix(starkCurve.keccak(utf8ToArray(final!)).toString(16))]: event, + }; + while (nameList.length > 0) { + result = { + [addHexPrefix(starkCurve.keccak(utf8ToArray(nameList.pop()!)).toString(16))]: result, + }; + } + result = { ...result }; + return mergeAbiEvents(acc, result); + }, {}); + return abiEventsData; +} + +/** + * Retrieves the events from the given ABI (from Cairo 0 or Cairo 1 contract). * * Is able to handle Cairo 1 events nested in Cairo components. * @param {Abi} abi - The ABI to extract events from. - * @return {AbiEvents} - An object containing the extracted events. + * @return {AbiEvents} - An object containing the hashes and the definition of the events. * @example * ```typescript * const result = events.getAbiEvents(abi); @@ -45,60 +149,7 @@ import { cleanHex } from '../num'; * ``` */ export function getAbiEvents(abi: Abi): AbiEvents { - let finalResult: AbiEvents; - if (!isCairo1Abi(abi)) { - // Cairo 0 abi - finalResult = abi - .filter((abiEntry) => abiEntry.type === 'event') - .reduce((acc, abiEntry) => { - const entryName = abiEntry.name; - const abiEntryMod = { ...abiEntry }; - abiEntryMod.name = entryName; - return { - ...acc, - [addHexPrefix(starkCurve.keccak(utf8ToArray(entryName)).toString(16))]: abiEntryMod, - }; - }, {}); - } else { - // Cairo 1 abi - const abiEventsStructs = abi.filter((obj) => obj.type === 'event' && obj.kind === 'struct'); - const abiEventsEnums = abi.filter((obj) => obj.type === 'event' && obj.kind === 'enum'); - const abiEventsData: AbiEvents = abiEventsStructs.reduce( - (acc: CairoEvent, event: CairoEvent) => { - let nameList: string[] = []; - let { name } = event; - let flat: boolean = false; - const findName = (variant: CairoEventVariant) => variant.type === name; - // eslint-disable-next-line no-constant-condition - while (true) { - const eventEnum = abiEventsEnums.find((eventE) => eventE.variants.some(findName)); - if (typeof eventEnum === 'undefined') break; - const variant: CairoEventVariant = eventEnum.variants.find(findName); - nameList.unshift(variant.name); - if (variant.kind === 'flat') flat = true; - name = eventEnum.name; - } - if (nameList.length === 0) { - throw new Error('inconsistancy in ABI events definition.'); - } - if (flat) nameList = [nameList[nameList.length - 1]]; - const final = nameList.pop(); - let result: AbiEvents = { - [addHexPrefix(starkCurve.keccak(utf8ToArray(final!)).toString(16))]: event, - }; - while (nameList.length > 0) { - result = { - [addHexPrefix(starkCurve.keccak(utf8ToArray(nameList.pop()!)).toString(16))]: result, - }; - } - result = { ...result }; - return mergeAbiEvents(acc, result); - }, - {} - ); - finalResult = abiEventsData; - } - return finalResult; + return isCairo1Abi(abi) ? getCairo1AbiEvents(abi) : getCairo0AbiEvents(abi); } /** From 7702d9c4b51a44098ae5adc3bea87b9022b8f7aa Mon Sep 17 00:00:00 2001 From: PhilippeR26 Date: Thu, 6 Jun 2024 11:17:07 +0200 Subject: [PATCH 34/37] refactor: add spec6 types --- src/types/lib/contract/abi.ts | 15 +++++++-------- src/utils/events/index.ts | 2 +- 2 files changed, 8 insertions(+), 9 deletions(-) diff --git a/src/types/lib/contract/abi.ts b/src/types/lib/contract/abi.ts index 9c11821e7..e3dd015ed 100644 --- a/src/types/lib/contract/abi.ts +++ b/src/types/lib/contract/abi.ts @@ -1,3 +1,5 @@ +import type { ENUM_EVENT, EVENT_FIELD, STRUCT_EVENT } from '../../api/rpcspec_0_6/contract'; + /** ABI */ export type Abi = ReadonlyArray; @@ -58,18 +60,15 @@ export type AbiEvents = { [hash: string]: AbiEvent }; // if Cairo 0 then definition of an event export type AbiEvent = CairoEvent | LegacyEvent; -// CairoEvent is CairoEventDefinition type if we have a leaf (end of the arborescence for an event), otherwise a new branch is created. Only for Cairo 1 +// CairoEvent is CairoEventDefinition type if we have a leaf (end of the arborescence for an event), otherwise a new node level is created. Only for Cairo 1 export type CairoEvent = CairoEventDefinition | AbiEvents; -export type CairoEventDefinition = { +export type CairoEventDefinition = STRUCT_EVENT & { name: string; - members: EventEntry[]; - kind: 'struct'; type: 'event'; }; -export type CairoEventVariant = { - kind: 'nested' | 'flat'; +export type CairoEventVariant = ENUM_EVENT & { name: string; type: string; }; @@ -77,6 +76,6 @@ export type CairoEventVariant = { export type LegacyEvent = { name: string; type: 'event'; - data: EventEntry[]; - keys: EventEntry[]; + data: EVENT_FIELD[]; + keys: EVENT_FIELD[]; }; diff --git a/src/utils/events/index.ts b/src/utils/events/index.ts index aba7f0a25..e7fbb919d 100644 --- a/src/utils/events/index.ts +++ b/src/utils/events/index.ts @@ -101,7 +101,7 @@ function getCairo1AbiEvents(abi: Abi) { while (true) { const eventEnum = abiEventsEnums.find((eventE) => eventE.variants.some(findName)); if (typeof eventEnum === 'undefined') break; - const variant: CairoEventVariant = eventEnum.variants.find(findName); + const variant = eventEnum.variants.find(findName); nameList.unshift(variant.name); if (variant.kind === 'flat') flat = true; name = eventEnum.name; From 3954420548cd686223eac0e8a4b40e00902fb4cf Mon Sep 17 00:00:00 2001 From: PhilippeR26 Date: Thu, 6 Jun 2024 12:10:47 +0200 Subject: [PATCH 35/37] Revert "Merge branch 'next-version' into nested-events" This reverts commit 4c65e9b7d63a68dc8630a53d8d240daeac861145, reversing changes made to 7702d9c4b51a44098ae5adc3bea87b9022b8f7aa. --- __tests__/rpcProvider.test.ts | 23 ++++++++---- __tests__/utils/ethSigner.test.ts | 14 -------- package-lock.json | 58 ++++++++++++++++-------------- package.json | 3 +- src/types/lib/contract/abi.ts | 33 ++--------------- src/wallet/connect.ts | 2 +- src/wallet/types.ts | 2 +- www/docs/guides/connect_account.md | 6 ---- 8 files changed, 53 insertions(+), 88 deletions(-) diff --git a/__tests__/rpcProvider.test.ts b/__tests__/rpcProvider.test.ts index 1c937d6b0..a998e271d 100644 --- a/__tests__/rpcProvider.test.ts +++ b/__tests__/rpcProvider.test.ts @@ -31,6 +31,7 @@ import { getTestAccount, getTestProvider, describeIfTestnet, + waitNextBlock, devnetETHtokenAddress, } from './config/fixtures'; import { initializeMatcher } from './config/schema'; @@ -118,20 +119,15 @@ describeIfRpc('RPCProvider', () => { estimateSpy.mockRestore(); }); - describe('Test Estimate message fee', () => { + describeIfDevnet('Test Estimate message fee Cairo 0', () => { + // declaration of Cairo 0 contract is no more authorized in Sepolia Testnet let l1l2ContractCairo0Address: string; - let l1l2ContractCairo1Address: string; beforeAll(async () => { const { deploy } = await account.declareAndDeploy({ contract: compiledL1L2, }); l1l2ContractCairo0Address = deploy.contract_address; - const { deploy: deploy2 } = await account.declareAndDeploy({ - contract: compiledC1v2, - casm: compiledC1v2Casm, - }); - l1l2ContractCairo1Address = deploy2.contract_address; }); test('estimate message fee Cairo 0', async () => { @@ -150,6 +146,19 @@ describeIfRpc('RPCProvider', () => { }) ); }); + }); + + describe('Test Estimate message fee Cairo 1', () => { + let l1l2ContractCairo1Address: string; + + beforeAll(async () => { + const { deploy: deploy2 } = await account.declareAndDeploy({ + contract: compiledC1v2, + casm: compiledC1v2Casm, + }); + l1l2ContractCairo1Address = deploy2.contract_address; + await waitNextBlock(provider as RpcProvider, 5000); // in Sepolia Testnet, needs pending block validation before interacting + }); test('estimate message fee Cairo 1', async () => { const L1_ADDRESS = '0x8359E4B0152ed5A731162D3c7B0D8D56edB165'; // not coded in 20 bytes diff --git a/__tests__/utils/ethSigner.test.ts b/__tests__/utils/ethSigner.test.ts index 2f66f8ca7..37d4a684d 100644 --- a/__tests__/utils/ethSigner.test.ts +++ b/__tests__/utils/ethSigner.test.ts @@ -352,18 +352,4 @@ describe('Ethereum signer', () => { ); }); }); - describe('Ethereum address', () => { - test('Eth address format', async () => { - const ethAddr = '0x8359E4B0152ed5A731162D3c7B0D8D56edB165'; // not a valid 20 bytes ETh address - expect(validateAndParseEthAddress(ethAddr)).toBe( - '0x008359e4b0152ed5a731162d3c7b0d8d56edb165' - ); - expect(validateAndParseEthAddress(BigInt(ethAddr))).toBe( - '0x008359e4b0152ed5a731162d3c7b0d8d56edb165' - ); - expect(validateAndParseEthAddress(BigInt(ethAddr).toString(10))).toBe( - '0x008359e4b0152ed5a731162d3c7b0d8d56edb165' - ); - }); - }); }); diff --git a/package-lock.json b/package-lock.json index dd77b6ffa..190283481 100644 --- a/package-lock.json +++ b/package-lock.json @@ -15,7 +15,7 @@ "@scure/starknet": "~1.0.0", "abi-wan-kanabi": "^2.2.2", "fetch-cookie": "^3.0.0", - "get-starknet-core": "^4.0.0-next.4", + "get-starknet-core": "^4.0.0-next.3", "isomorphic-fetch": "^3.0.0", "lossless-json": "^4.0.1", "pako": "^2.0.4", @@ -66,6 +66,33 @@ "typescript-coverage-report": "^1.0.0" } }, + "../starknet-types": { + "extraneous": true + }, + "../types-js": { + "name": "starknet-types", + "version": "0.7.1", + "extraneous": true, + "license": "MIT", + "devDependencies": { + "@typescript-eslint/eslint-plugin": "^7.4.0", + "@typescript-eslint/parser": "^7.4.0", + "cz-conventional-changelog": "^3.3.0", + "eslint": "^8.57.0", + "eslint-config-airbnb-base": "^15.0.0", + "eslint-config-airbnb-typescript": "^18.0.0", + "eslint-config-prettier": "^9.1.0", + "eslint-plugin-import": "^2.29.1", + "eslint-plugin-prettier": "^5.1.3", + "prettier": "^3.2.5", + "prettier-plugin-import-sort": "^0.0.7", + "semantic-release": "^23.0.8", + "typescript": "^5.4.3" + } + }, + "../types-js/dist": { + "extraneous": true + }, "node_modules/@aashutoshrathi/word-wrap": { "version": "1.2.6", "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz", @@ -4078,17 +4105,6 @@ "url": "https://paulmillr.com/funding/" } }, - "node_modules/@noble/curves/node_modules/@noble/hashes": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.4.0.tgz", - "integrity": "sha512-V1JJ1WTRUqHHrOSh597hURcMqVKVGL/ea3kv0gSnEdsEZ0/+VyPghM1lMNGc00z7CIQorSvbKpuJkxvuHbvdbg==", - "engines": { - "node": ">= 16" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, "node_modules/@noble/hashes": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.4.0.tgz", @@ -9040,13 +9056,9 @@ } }, "node_modules/get-starknet-core": { - "version": "4.0.0-next.5", - "resolved": "https://registry.npmjs.org/get-starknet-core/-/get-starknet-core-4.0.0-next.5.tgz", - "integrity": "sha512-zZ3i4E5UYF1f04fgkwfaVC0uj1pvdBlzsDqXEAfb4jc1WO4zM7rIm4XAUqdMwVSr4CBend5RM7U+zv166fBNYg==", - "license": "MIT", - "dependencies": { - "starknet-types": "^0.7.1" - } + "version": "4.0.0-next.3", + "resolved": "https://registry.npmjs.org/get-starknet-core/-/get-starknet-core-4.0.0-next.3.tgz", + "integrity": "sha512-/9q0UpsshYHZyEMcd+XD7CVrnwQ50WfXhy0TNocyHQzn+/qxQIBn25ZYJ+DEzwLPoUtrajMYI4L6DMKu1CJ+ig==" }, "node_modules/get-stream": { "version": "7.0.1", @@ -12889,7 +12901,6 @@ "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", "dev": true, - "license": "MIT", "dependencies": { "js-tokens": "^3.0.0 || ^4.0.0" }, @@ -18191,13 +18202,6 @@ "node": ">=8" } }, - "node_modules/starknet-types": { - "version": "0.7.2", - "resolved": "https://registry.npmjs.org/starknet-types/-/starknet-types-0.7.2.tgz", - "integrity": "sha512-r3JJ0rrK0g3FnVRGcFiLY+9YT5WZgxB4TKBfR44wYGevHtKEM6BM5B+Gn1eou1zV7xEAwz3GpmvLSQTUAzDhsw==", - "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.", - "license": "MIT" - }, "node_modules/starknet-types-07": { "name": "starknet-types", "version": "0.7.2", diff --git a/package.json b/package.json index 0d01463d6..088fc29cf 100644 --- a/package.json +++ b/package.json @@ -27,7 +27,6 @@ "build:dts": "tsup --clean false --dts-only", "pretest": "npm run lint && npm run ts:check", "test": "jest -i", - "test:coverage": "jest -i --coverage", "posttest": "npm run format -- --log-level warn", "test:watch": "jest --watch", "docs": "cd www && npm run start", @@ -101,7 +100,7 @@ "@scure/starknet": "~1.0.0", "abi-wan-kanabi": "^2.2.2", "fetch-cookie": "^3.0.0", - "get-starknet-core": "^4.0.0-next.4", + "get-starknet-core": "^4.0.0-next.3", "isomorphic-fetch": "^3.0.0", "lossless-json": "^4.0.1", "pako": "^2.0.4", diff --git a/src/types/lib/contract/abi.ts b/src/types/lib/contract/abi.ts index 46724c983..e3dd015ed 100644 --- a/src/types/lib/contract/abi.ts +++ b/src/types/lib/contract/abi.ts @@ -1,4 +1,4 @@ -// import type { ENUM_EVENT, EVENT_FIELD, STRUCT_EVENT } from '../../api/rpcspec_0_6/contract'; +import type { ENUM_EVENT, EVENT_FIELD, STRUCT_EVENT } from '../../api/rpcspec_0_6/contract'; /** ABI */ export type Abi = ReadonlyArray; @@ -63,35 +63,14 @@ export type AbiEvent = CairoEvent | LegacyEvent; // CairoEvent is CairoEventDefinition type if we have a leaf (end of the arborescence for an event), otherwise a new node level is created. Only for Cairo 1 export type CairoEvent = CairoEventDefinition | AbiEvents; -// export type CairoEventDefinition = STRUCT_EVENT & { -// name: string; -// type: 'event'; -// }; - -// export type CairoEventVariant = ENUM_EVENT & { -// name: string; -// type: string; -// }; - -// export type LegacyEvent = { -// name: string; -// type: 'event'; -// data: EVENT_FIELD[]; -// keys: EVENT_FIELD[]; -// }; - -export type CairoEventDefinition = { +export type CairoEventDefinition = STRUCT_EVENT & { name: string; type: 'event'; - kind: 'struct'; - members: Array; }; -export type CairoEventVariant = { +export type CairoEventVariant = ENUM_EVENT & { name: string; type: string; - kind: 'enum'; - variants: Array; }; export type LegacyEvent = { @@ -100,9 +79,3 @@ export type LegacyEvent = { data: EVENT_FIELD[]; keys: EVENT_FIELD[]; }; - -type EVENT_FIELD = { - name: string; - type: string; - kind: 'key' | 'data' | 'nested'; -}; diff --git a/src/wallet/connect.ts b/src/wallet/connect.ts index 4a57d1181..258c91f80 100644 --- a/src/wallet/connect.ts +++ b/src/wallet/connect.ts @@ -14,7 +14,7 @@ import { /** * Request Permission for wallet account, return addresses that are allowed by user - * @param {boolean} [silent_mode=false] false: request user interaction allowance. true: return only pre-allowed + * @param silentMode false: request user interaction allowance. true: return only pre-allowed * @returns allowed accounts addresses */ export function requestAccounts(swo: StarknetWindowObject, silent_mode = false) { diff --git a/src/wallet/types.ts b/src/wallet/types.ts index 4985b9965..9c73f64bd 100644 --- a/src/wallet/types.ts +++ b/src/wallet/types.ts @@ -1,4 +1,4 @@ -import { type RpcMessage, type StarknetWindowObject } from 'get-starknet-core'; +import { type RpcMessage, type StarknetWindowObject } from 'starknet-types-07'; // ---- TT Request Handler export type RpcCall = Omit; diff --git a/www/docs/guides/connect_account.md b/www/docs/guides/connect_account.md index b5c0edb5b..fa775c329 100644 --- a/www/docs/guides/connect_account.md +++ b/www/docs/guides/connect_account.md @@ -86,9 +86,3 @@ const myEthAccountAddressInStarknet = const myEthSigner = new EthSigner(myEthPrivateKey); const myEthAccount = new Account(provider, myEthAccountAddressInStarknet, myEthSigner); ``` - -And if you need a random Ethereum private key: - -```typescript -const myPrivateKey = eth.ethRandomPrivateKey(); -``` From 7c3c1a220373640cf8f251d365f2274ec21434bf Mon Sep 17 00:00:00 2001 From: PhilippeR26 Date: Thu, 6 Jun 2024 12:48:56 +0200 Subject: [PATCH 36/37] fix: remove events.ts that came back after merge --- src/utils/events.ts | 58 --------------------------------------- src/utils/events/index.ts | 1 - 2 files changed, 59 deletions(-) delete mode 100644 src/utils/events.ts diff --git a/src/utils/events.ts b/src/utils/events.ts deleted file mode 100644 index 3fcb4ef47..000000000 --- a/src/utils/events.ts +++ /dev/null @@ -1,58 +0,0 @@ -import { UDC } from '../constants'; -import { InvokeTransactionReceiptResponse } from '../types/provider'; -import { cleanHex } from './num'; - -/** - * Parse Transaction Receipt Event from UDC invoke transaction and - * create DeployContractResponse compatible response with addition of the UDC Event data - * - * @param {InvokeTransactionReceiptResponse} txReceipt - * @return {object} Object including DeployContractResponse and UDC Event data - * @example - * ```typescript - * const deployment = await account.deploy({ - * classHash, - * constructorCalldata: [ - * encodeShortString('Token'), - * encodeShortString('ERC20'), - * account.address, - * ], - * salt, - * unique: true, - * }); - * const txReceipt = await provider.waitForTransaction(deployment.transaction_hash); - * const udcEvent = parseUDCEvent(txReceipt as any); - * // udcEvent = { - * // transaction_hash: ..., - * // contract_address: ..., - * // address: ..., - * // deployer: ..., - * // unique: ..., - * // classHash: ..., - * // calldata_len: ..., - * // calldata: ..., - * // salt: ..., - * // } - * ``` - */ -export function parseUDCEvent(txReceipt: InvokeTransactionReceiptResponse) { - if (!txReceipt.events) { - throw new Error('UDC emitted event is empty'); - } - const event = txReceipt.events.find( - (it: any) => cleanHex(it.from_address) === cleanHex(UDC.ADDRESS) - ) || { - data: [], - }; - return { - transaction_hash: txReceipt.transaction_hash, - contract_address: event.data[0], - address: event.data[0], - deployer: event.data[1], - unique: event.data[2], - classHash: event.data[3], - calldata_len: event.data[4], - calldata: event.data.slice(5, 5 + parseInt(event.data[4], 16)), - salt: event.data[event.data.length - 1], - }; -} diff --git a/src/utils/events/index.ts b/src/utils/events/index.ts index e7fbb919d..07ef25a44 100644 --- a/src/utils/events/index.ts +++ b/src/utils/events/index.ts @@ -1,4 +1,3 @@ -// import { API } from '@starknet-io/types-js'; import { UDC } from '../../constants'; import { Abi, From c0773293d593432a5b5a68c66ac6a32d710f4d69 Mon Sep 17 00:00:00 2001 From: PhilippeR26 Date: Mon, 10 Jun 2024 10:35:32 +0200 Subject: [PATCH 37/37] refactor: use of external types-js lib for events types --- src/types/lib/contract/abi.ts | 2 +- www/docs/guides/events.md | 4 ++++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/src/types/lib/contract/abi.ts b/src/types/lib/contract/abi.ts index 569fe4e7c..5e0bee453 100644 --- a/src/types/lib/contract/abi.ts +++ b/src/types/lib/contract/abi.ts @@ -1,4 +1,4 @@ -import type { ENUM_EVENT, EVENT_FIELD, STRUCT_EVENT } from '../../api/rpcspec_0_6/contract'; +import type { ENUM_EVENT, EVENT_FIELD, STRUCT_EVENT } from 'starknet-types-07'; /** ABI */ export type Abi = ReadonlyArray; diff --git a/www/docs/guides/events.md b/www/docs/guides/events.md index f85121023..6f4308c83 100644 --- a/www/docs/guides/events.md +++ b/www/docs/guides/events.md @@ -80,6 +80,10 @@ The first parameter in the `keys` array is a hash of the name of the event, calc const nameHash = num.toHex(hash.starknetKeccak('EventPanic')); ``` +:::info +In some cases (when an event is coded in a Cairo component, without the `#[flat]` flag), this hash is handled in several numbers. +::: + The second parameter is the `errorType` variable content (stored in keys array because of the `#[key]` flag in the Cairo code). The `data` array contains the `errorDescription` variable content (`'0x4d6567612050616e69632e'` corresponds to the encoded value of "Mega Panic.")