From 49093abcefb0b90e6c295ada6d30c0c8584a51e7 Mon Sep 17 00:00:00 2001 From: Arni Hod Date: Thu, 4 Apr 2024 15:34:51 +0300 Subject: [PATCH] feat: add compile sierra to casm util --- crates/gateway/build.rs | 22 + crates/gateway/src/compiler.rs | 1 + .../src/compiler/account_faulty.sierra.json | 1224 +++++++++++++++++ crates/gateway/src/compiler/compile.rs | 33 + crates/gateway/src/compiler/compile_test.rs | 8 + crates/gateway/src/lib.rs | 5 + 6 files changed, 1293 insertions(+) create mode 100644 crates/gateway/build.rs create mode 100644 crates/gateway/src/compiler.rs create mode 100644 crates/gateway/src/compiler/account_faulty.sierra.json create mode 100644 crates/gateway/src/compiler/compile.rs create mode 100644 crates/gateway/src/compiler/compile_test.rs diff --git a/crates/gateway/build.rs b/crates/gateway/build.rs new file mode 100644 index 000000000..b695817bd --- /dev/null +++ b/crates/gateway/build.rs @@ -0,0 +1,22 @@ +use std::process::Command; + +fn main() { + install_starknet_sierra_compile(); +} + +fn install_starknet_sierra_compile() { + let mut command = Command::new("cargo"); + command.arg("install"); + command.arg("--root"); + command.arg("/home/arni/workspace/mempool/crates/gateway/src/compiler"); // TODO: DOn't dup the path. + command.arg("starknet-sierra-compile"); + let result = command.output(); + if let Err(e) = result { + panic!("Failed to execute command: {}", e); + } + let compile_output = result.unwrap(); // TODO: handle error + let stderr_output = String::from_utf8(compile_output.stderr).unwrap(); // TODO: handle error + if !compile_output.status.success() { + panic!("Failed to compile Sierra code: {}", stderr_output); + }; +} diff --git a/crates/gateway/src/compiler.rs b/crates/gateway/src/compiler.rs new file mode 100644 index 000000000..0ac86528b --- /dev/null +++ b/crates/gateway/src/compiler.rs @@ -0,0 +1 @@ +pub mod compile; diff --git a/crates/gateway/src/compiler/account_faulty.sierra.json b/crates/gateway/src/compiler/account_faulty.sierra.json new file mode 100644 index 000000000..e832b549e --- /dev/null +++ b/crates/gateway/src/compiler/account_faulty.sierra.json @@ -0,0 +1,1224 @@ +{ + "sierra_program": [ + "0x1", + "0x4", + "0x0", + "0x2", + "0x4", + "0x3", + "0x1de", + "0x22", + "0x35", + "0x52616e6765436865636b", + "0x800000000000000100000000000000000000000000000000", + "0x426f78", + "0x800000000000000700000000000000000000000000000001", + "0x1", + "0xa", + "0x4172726179", + "0x800000000000000300000000000000000000000000000001", + "0x9", + "0x456e756d", + "0x800000000000000300000000000000000000000000000003", + "0x0", + "0xfeece2ea7edbbbebeeb5f270b77f64c680a68a089b794478dd9eca75e0196a", + "0x2", + "0x753634", + "0x800000000000000700000000000000000000000000000000", + "0x436f6e747261637441646472657373", + "0x537472756374", + "0x800000000000000700000000000000000000000000000004", + "0x3808c701a5d13e100ab11b6c02f91f752ecae7e420d21b56c90ec0a475cc7e5", + "0x4", + "0x5", + "0x6", + "0x1d", + "0x66656c74323532", + "0x800000000000000700000000000000000000000000000006", + "0x7d4d99e9ed8d285b5c61b493cedb63976bc3d9da867933d829f49ce838b5e7", + "0x7", + "0x8", + "0x800000000000000700000000000000000000000000000002", + "0x2ee1e2b1b89f8c495f200e4956278a4d47395fe262f27b52e5865c9524c08c3", + "0x800000000000000f00000000000000000000000000000001", + "0x16a4c8d7c05909052238a862d8cc3e7975bf05a07b3a69c6b28951083a6d672", + "0xc", + "0x2ca39cde64b91db1514d78c135ee79d71b3b57fffee52f1a3ef96618a34d8c8", + "0xb", + "0xd", + "0x90d0203c41ad646d024845257a6eceb2f8b59b29ce7420dd518053d2edeedc", + "0x536e617073686f74", + "0x1baeba72e79e9db2587cf44fedb2f3700b2075a5e8e39a562584862c4b71f62", + "0x10", + "0x161ee0e6962e56453b5d68e09d1cabe5633858c1ba3a7e73fee8c70867eced0", + "0x11", + "0x4e6f6e5a65726f", + "0x14", + "0x3ae40d407f8074730e48241717c3dd78b7128d346cf81094e31806a3a5bdf", + "0x15", + "0x1b", + "0x17", + "0x1597b831feeb60c71f259624b79cf66995ea4f7e383403583674ab9c33b9cec", + "0x18", + "0x75313238", + "0x3342418ef16b3e2799b906b1e4e89dbb9b111332dd44f72458ce44f9895b508", + "0x1a", + "0x753332", + "0x80000000000000070000000000000000000000000000000e", + "0x348a62b7a38c0673e61e888d83a3ac1bf334ee7361a8514593d3d9532ed8b39", + "0x19", + "0x1c", + "0xa36a0a15af8cf1727a3a4fd9137671f23256b1f42299af56605a6910c522ce", + "0x1e", + "0x800000000000000700000000000000000000000000000003", + "0x29d7d57c04a880978e7b3689f6218e507f3be17588744b58dc17762447ad0e7", + "0x20", + "0x29a02530bac70a6d5878fc0c5cb42f1926cd91d9162685c15f1be12819caf78", + "0x800000000000000f00000000000000000000000000000003", + "0x22", + "0xab150493414b66aee0a7b751a581ec565ab30639d18606b5bc9ef09ebaad6f", + "0x23", + "0x17b6ecc31946835b0d9d92c2dd7a9c14f29af0371571ae74a1b228828b2242", + "0x25", + "0x34f9bd7c6cb2dd4263175964ad75f1ff1461ddc332fbfb274e0fb2a5d7ab968", + "0x26", + "0x3d37ad6eafb32512d2dd95a2917f6bf14858de22c27a1114392429f2e5c15d7", + "0x556e696e697469616c697a6564", + "0x800000000000000200000000000000000000000000000001", + "0x3288d594b9a45d15bb2fcb7903f06cdb06b27f0ba88186ec4cfaa98307cb972", + "0x2d7b9ba5597ffc180f5bbd030da76b84ecf1e4f1311043a0a15295f29ccc1b0", + "0x2b", + "0x10203be321c62a7bd4c060d69539c1fbe065baa9e253c74d2cc48be163e259", + "0x2e", + "0x4275696c74696e436f737473", + "0x53797374656d", + "0x9931c641b913035ae674b400b61a51476d506bbe8bba2ff8a6272790aba9e6", + "0x2d", + "0x11c6d8087e00642489f92d2821ad6ebd6532ad1a3b6d12833da6d6810391511", + "0x4761734275696c74696e", + "0xc9", + "0x7265766f6b655f61705f747261636b696e67", + "0x77697468647261775f676173", + "0x6272616e63685f616c69676e", + "0x73746f72655f74656d70", + "0x66756e6374696f6e5f63616c6c", + "0x3", + "0x656e756d5f6d61746368", + "0x33", + "0x64726f70", + "0x7374727563745f6465636f6e737472756374", + "0x61727261795f6c656e", + "0x736e617073686f745f74616b65", + "0x7533325f636f6e7374", + "0x72656e616d65", + "0x7533325f6571", + "0x61727261795f6e6577", + "0x66656c743235325f636f6e7374", + "0x496e70757420746f6f206c6f6e6720666f7220617267756d656e7473", + "0x61727261795f617070656e64", + "0x7374727563745f636f6e737472756374", + "0x656e756d5f696e6974", + "0x32", + "0x34", + "0x31", + "0x6765745f6275696c74696e5f636f737473", + "0x30", + "0x77697468647261775f6761735f616c6c", + "0x2f", + "0x4f7574206f6620676173", + "0x4661696c656420746f20646573657269616c697a6520706172616d202331", + "0x2c", + "0x4661696c656420746f20646573657269616c697a6520706172616d202333", + "0x4661696c656420746f20646573657269616c697a6520706172616d202332", + "0x616c6c6f635f6c6f63616c", + "0x66696e616c697a655f6c6f63616c73", + "0x28", + "0x73746f72655f6c6f63616c", + "0x27", + "0x29", + "0x2a", + "0xe", + "0xf", + "0x24", + "0x61727261795f736e617073686f745f706f705f66726f6e74", + "0x21", + "0x6a756d70", + "0x756e626f78", + "0x1f", + "0x12", + "0x16", + "0x647570", + "0x66656c743235325f737562", + "0x66656c743235325f69735f7a65726f", + "0x56414c4944", + "0x13", + "0x494e56414c4944", + "0x496e76616c6964207363656e6172696f", + "0x21adb5788e32c84f69a1863d85ef9394b7bf761a0ce1190f826984e5075c371", + "0x1b1a0649752af1b28b3dc29a1556eee781e4a4c3a1f7f53f90fa834de098c4d", + "0x63616c6c5f636f6e74726163745f73797363616c6c", + "0x4f7074696f6e3a3a756e77726170206661696c65642e", + "0x7536345f636f6e7374", + "0x6765745f626c6f636b5f686173685f73797363616c6c", + "0x7536345f746f5f66656c74323532", + "0x636f6e74726163745f616464726573735f746f5f66656c74323532", + "0x53455155454e4345525f4d49534d41544348", + "0x424c4f434b5f54494d455354414d505f4d49534d41544348", + "0x424c4f434b5f4e554d4245525f4d49534d41544348", + "0x556e6b6e6f776e207363656e6172696f", + "0x626f6f6c5f6e6f745f696d706c", + "0x64697361626c655f61705f747261636b696e67", + "0x73656e645f6d6573736167655f746f5f6c315f73797363616c6c", + "0x61727261795f676574", + "0x496e646578206f7574206f6620626f756e6473", + "0x6765745f657865637574696f6e5f696e666f5f76325f73797363616c6c", + "0x6fb", + "0xffffffffffffffff", + "0x61", + "0x52", + "0x45", + "0x3e", + "0x36", + "0x37", + "0x38", + "0x39", + "0x3a", + "0x3b", + "0x3c", + "0x3d", + "0x3f", + "0x40", + "0x41", + "0x42", + "0x43", + "0x104", + "0xf5", + "0xe5", + "0xd4", + "0x9a", + "0xc4", + "0xbd", + "0x44", + "0x46", + "0x47", + "0x48", + "0x49", + "0x4a", + "0x4b", + "0x4c", + "0x4d", + "0x4e", + "0x4f", + "0x50", + "0x51", + "0x53", + "0x54", + "0x55", + "0x56", + "0x57", + "0x58", + "0x59", + "0x5a", + "0x1bd", + "0x1ac", + "0x19b", + "0x192", + "0x181", + "0x147", + "0x171", + "0x16a", + "0x5b", + "0x5c", + "0x5d", + "0x5e", + "0x5f", + "0x60", + "0x62", + "0x63", + "0x26d", + "0x25c", + "0x24b", + "0x242", + "0x231", + "0x202", + "0x221", + "0x2bb", + "0x299", + "0x2ae", + "0x327", + "0x318", + "0x2ea", + "0x30a", + "0x303", + "0x33c", + "0x341", + "0x34b", + "0x511", + "0x509", + "0x64", + "0x65", + "0x66", + "0x67", + "0x385", + "0x68", + "0x69", + "0x6a", + "0x6b", + "0x6c", + "0x6d", + "0x3b2", + "0x3a4", + "0x6e", + "0x6f", + "0x70", + "0x71", + "0x408", + "0x72", + "0x401", + "0x73", + "0x3f3", + "0x74", + "0x75", + "0x3db", + "0x76", + "0x77", + "0x3e0", + "0x78", + "0x79", + "0x7a", + "0x3ec", + "0x7b", + "0x7c", + "0x7d", + "0x433", + "0x7e", + "0x7f", + "0x80", + "0x41b", + "0x81", + "0x82", + "0x420", + "0x83", + "0x84", + "0x42c", + "0x85", + "0x86", + "0x87", + "0x88", + "0x89", + "0x8a", + "0x8b", + "0x8c", + "0x8d", + "0x8e", + "0x8f", + "0x90", + "0x4fa", + "0x91", + "0x92", + "0x93", + "0x94", + "0x95", + "0x96", + "0x97", + "0x98", + "0x99", + "0x4f2", + "0x9b", + "0x9c", + "0x9d", + "0x9e", + "0x9f", + "0xa0", + "0xa1", + "0xa2", + "0xa3", + "0xa4", + "0x4e9", + "0xa5", + "0xa6", + "0xa7", + "0xa8", + "0xa9", + "0xaa", + "0xab", + "0xac", + "0xad", + "0xae", + "0xaf", + "0x4e0", + "0xb0", + "0xb1", + "0xb2", + "0xb3", + "0xb4", + "0xb5", + "0xb6", + "0x4d6", + "0xb7", + "0xb8", + "0xb9", + "0xba", + "0xbb", + "0xbc", + "0xbe", + "0xbf", + "0xc0", + "0xc1", + "0xc2", + "0xc3", + "0xc5", + "0xc6", + "0xc7", + "0xc8", + "0xca", + "0xcb", + "0x4c4", + "0xcc", + "0xcd", + "0xce", + "0xcf", + "0xd0", + "0xd1", + "0xd2", + "0xd3", + "0xd5", + "0x4b4", + "0xd6", + "0xd7", + "0xd8", + "0xd9", + "0xda", + "0xdb", + "0xdc", + "0xdd", + "0xde", + "0xdf", + "0x4a6", + "0xe0", + "0xe1", + "0xe2", + "0xe3", + "0xe4", + "0xe6", + "0xe7", + "0xe8", + "0xe9", + "0xea", + "0xeb", + "0xec", + "0xed", + "0xee", + "0xef", + "0xf0", + "0xf1", + "0xf2", + "0xf3", + "0xf4", + "0xf6", + "0xf7", + "0xf8", + "0xf9", + "0xfa", + "0xfb", + "0xfc", + "0xfd", + "0xfe", + "0xff", + "0x100", + "0x101", + "0x524", + "0x529", + "0x54f", + "0x545", + "0x54a", + "0x567", + "0x56b", + "0x576", + "0x586", + "0x59f", + "0x598", + "0x5ad", + "0x5b2", + "0x5ce", + "0x5c8", + "0x5e6", + "0x5ea", + "0x5f8", + "0x60d", + "0x611", + "0x625", + "0x629", + "0x630", + "0x63c", + "0x641", + "0x65b", + "0x668", + "0x679", + "0x685", + "0x692", + "0x697", + "0x6a1", + "0x6e0", + "0x6b8", + "0x6d6", + "0x6d0", + "0x6f5", + "0x112", + "0x1cd", + "0x27d", + "0x2c9", + "0x335", + "0x352", + "0x518", + "0x51d", + "0x556", + "0x58d", + "0x5a5", + "0x5d8", + "0x5ff", + "0x614", + "0x617", + "0x649", + "0x661", + "0x673", + "0x67f", + "0x68b", + "0x6a7", + "0x6ef", + "0x3bfb", + "0x501813090402210078380a0502834180b050240a08038180a04018080200", + "0x142c050e81438050d83034120806430050200c2e050200c2c050a8142a05", + "0x900a230602c140e028880a1f0602c24210608024050287c181e090240a16", + "0x14560515030160a14814500c0f0481c050209c1c05048144c0c058284a05", + "0xc00a08038940a2f028b8180b050b40a1f06078240902810060902810580e", + "0x307012080dc6c050a81412051a8302612080d06605190303c12188140827", + "0xac0a3b028ec0a2b028d80a3a028240a09028240a2b028d80a16028240a39", + "0x488005168147e0c1f0283e0c100484a051e814780c058283a050f8303c12", + "0x1000a0e02918180b050940a4502910180b051000a430287c1842091041820", + "0x14984b200142c05250307c0a12814920524030160a2381456050f8301612", + "0xac0a1f0607824400293c0a4e060f81440029000a4d060f81416029309609", + "0x284a052a814a80c058280453081484a0528814a00c0582812050f8303c12", + "0x140a5c0b9780a5d158140a5c0616c185a06164b0022b9000a0902958183e", + "0x14ca3b02814c23b02814c80902814c62b02814c40902814c26002814be0c", + "0x140a6b048140a5c350380a69048140a680619c760502970760502998180e", + "0x1b80a052e1c00a052e1bc0a052e0141c6e02838da2502814d82202814d809", + "0x140a5c048140a64288140a623a0140a5f0e1780a5d061cce405029701871", + "0x38da5502814d82b02814d80e02814c20e02814c84002814c21d2f014ba0e", + "0x140a613b8140a5f049780a5d3b0380a69158140a613a8380a6906038dc05", + "0x14d27807014d2062f014ba4f02814b84302814c24302814c84302814d84f", + "0x140a7d0b0140a7d3e0140a5f121780a5d061ec1205029e82c05029e8f20e", + "0x14ba1602814b81602814c24702814be4902814c47e02814be222f014ba09", + "0x18506050297c525e02975045e02975025e02975000502984fe05029844a5e", + "0x1000a05360310c8502814b82902814b80c072140a0e368240a05421140a05", + "0x140a5c06038c005071b4120502998120502a1d0a050297c0a0e428141c6d", + "0x600a05310600a05438f40a05312200a052f8acbc052e8141c6002838da60", + "0x140a62450140a5f449780a5d148140a66158140a641d0140a611b0140a61", + "0x301c7402838da5102814d88e07014d20c46831180902815160c07014d22f", + "0x1a40a0e3a0141c6d488380a69480380a69028380a69478140a613a0140a5c", + "0x38da8902814b80c072240a0e36831289307014d20c490141c05328381c05", + "0x380a962f0380a694a8380a692a8140a61370140a5f479780a5d028391205", + "0xb4bc052e8141c8202838da8202814b80c072080a0e368312e1502814b80c", + "0x140a62408140a5f179780a5d2f0380a65070380a650a8380a69288140a61", + "0x31301702814c417028150e1c02814b81d02814c20602814c406028150e24", + "0x389e05071b53a0e029a5380e029a42a0502985360e029a5340e029a41899", + "0x14c805071dc0a0e369dc0a052e0301c7702838da0c4f0301c4f02838da05", + "0x27c0a0e3e0141c6d3e0140a5c06038f805071b49e05029989e050297c9e05", + "0x38da05071f80a0e369f80a052e0301c7e02838da4902814d88a2f014ba0c", + "0x1840a0e418141c6d418140a5c060390605071b48a05029b018a0028388e05", + "0x240a05508141c8802838da8802814b80c072200a0e368f40a05360700a05", + "0x140a5f028391405071b5440e029a5140502970180e450141c6d178140a6c", + "0xc4bc052e8141c5e02838da5e02814b80c071780a0e36831468202814be89", + "0x17c180e238141c6d028390205071b5020502970180e408141c6d120140a6c", + "0x301c0c0e05c1ca60b0541ca507014180e0283018a502830180c521780a05", + "0x154a050a8142c0c048741ca5029780a15061780aa5029780a5e060314a05", + "0x74180c528140c050e03018a5028301c0c120154e0602a941c090285c1815", + "0x2040a2406209020e528144a05030304a05528144405048304405528143a05", + "0x3018a5028ac0a2406224560e528145205030305205528141822060314a05", + "0x23c1c820623c0aa502a3c0a81060b40aa502a240a250623c0aa502a080a25", + "0x31140552814182b060bc0aa502830520c062940a0c070301885062941c2d", + "0xcc1c2f060cc0aa5028305a0c188154a05450bc1c8f062280aa502a280a89", + "0x2940a16028c4181502a940a1502858183602a940a3a02a28183a02a940a31", + "0x301c0c1b0382c150a8146c05528146c051d0301c05528141c05198302c05", + "0x394a0e180582a5e1d8306005528146005180306005528141836060314a05", + "0x154a050c014620c1d8154a051d8142c0c062940a0c07031103d072a0303b", + "0x388a051e8308a43429002aa502838303b2f060180e02a940a0e028cc1818", + "0x1f80aa502a0c0a88061240aa502830520c062940a0c070308e0554a0c0aa5", + "0x150a0c3f8154a053f815120c062940a7c02870187f3e0394a053f014800c", + "0x1500054183018a50293c0a450613d000e52814927f0710c184902a940a49", + "0x1d00aa5029440a7e061440aa5029540a49060314a053b8148e0c2a9dc1ca5", + "0x14660c428154a0542814620c200154a05200142c0c390154a053a014f80c", + "0x228180c52814180e061c88685200540a7202a940a72028e8184302a940a43", + "0x148605198310a05528150a051883080055281480050b030e005528148e05", + "0x141829060314a0506038187021a148015029c00aa5029c00a3a0610c0aa5", + "0x1bc0aa502980dc0e47830c00552814c00544830c00552814187f061b80aa5", + "0x142c0c558154a0555015140c550154a05378001c2f060000aa5028305a0c", + "0x2940aab028e8180e02a940a0e028cc188802a940a88028c4183d02a940a3d", + "0x2940a1d02a00180c5281448052283018a5028301c0c55839103d0a8155605", + "0x2b01c8f062b40aa502ab40a89062b40aa5028309e0c560154a05060a4180c", + "0x2940ab002a2818b002a940aae578385e0c578154a05060b418ae02a940aad", + "0x301c05528141c05198302c05528142c05188302a05528142a050b0316205", + "0x3018a5029780a80060314a050603818b1070582a1502ac40aa502ac40a3a", + "0x1564a90723c18b202a940ab202a2418b202a940a0c3f8315205528141829", + "0x2d80aa502ad40a8a062d40aa502acd680e17831680552814182d062cc0aa5", + "0x14740c070154a0507014660c0e0154a050e014620c0b8154a050b8142c0c", + "0x582a0e528380a0c07014180c52814180c062d81c1c0b8540ab602a940ab6", + "0x243a0e52814bc050a830bc0552814bc052f03018a5028301c0c0e05c1cb7", + "0x178180c52814180e060900ab8030154a0e048142e0c0a8154a050a8142c0c", + "0x3104055ca040aa5070940a1706094440e528143a050a8303a05528143a05", + "0x3856052a8305629072940a22029dc182202a940a2202978180c52814180e", + "0x154a0516814120c168154a05148143a0c062940a0c070311e055d2240aa5", + "0x140c0c198154a0506088180c52815140512030628a072940a2f02818182f", + "0x2940a3602894183002a940a3102894180c528147405120306c3a072940a33", + "0x3018a5028301c0c062ec18a5070ec600e410306005528146005408307605", + "0x600aa502830520c062940a0602870180c5281502050e03018a502a240a51", + "0x305a0c440154a051e8601c8f060f40aa5028f40a89060f40aa502830560c", + "0x2940a1502858184302a940a8502a28188502a940a88200385e0c200154a05", + "0x1486055281486051d0301c05528141c05198302c05528142c05188302a05", + "0x308a05528148a05180308a05528141836060314a05060381843070582a15", + "0x1f00aa502830e80c062940a0c07030fc49072f08e83072941c450b054bc3b", + "0x14620c418154a05418142c0c062940a7f029c018803f8394a053e014e40c", + "0x2940a8102a24180602a940a0602a24180e02a940a0e028cc184702a940a47", + "0x144aa77278554a0544a040c800711d061c300311205528151205370310205", + "0x15100c380154a05060a4180c52814180e061c80abd3a0154a0e288147a0c", + "0x2940a6f02a24180c52814c0050e030de60072940a6e02900186e02a940a74", + "0x314a05550148a0c550001ca5029c0de0e21830e00552814e00542830de05", + "0x14fc0c568154a0556014920c062940aab0291c18ac558394a0500015060c", + "0x2940a77028c4184f02a940a4f0285818af02a940aae029f018ae02a940aad", + "0x301c0c57954ee4f0a8155e05528155e051d030aa0552814aa0519830ee05", + "0x1dc0aa5029dc0a310613c0aa50293c0a16062c00aa5029c80a8a060314a05", + "0x2940a0c0703160553b93c2a05580154a0558014740c2a8154a052a814660c", + "0x2940a0c1483018a5028180a1c060314a0540814380c062940a8902944180c", + "0x3164055281552b10723c18a902a940aa902a2418a902a940a0c3f8316205", + "0x1240a16062d40aa502ad00a8a062d00aa502ac9660e17831660552814182d", + "0x154a055a814740c070154a0507014660c3f0154a053f014620c248154a05", + "0x314a0514815000c062940a8f02914180c52814180e062d41c7e248540ab5", + "0x154a05061bc18b602a940a0c1483018a5028180a1c060314a0540814380c", + "0xbc18bf02a940a0c168315005528157cb60723c18be02a940abe02a2418be", + "0x580a31060540aa5028540a16063040aa502b000a8a063000aa502aa17e0e", + "0x31820e0b0542a05608154a0560814740c070154a0507014660c0b0154a05", + "0x3018a5028880a80060314a0503014380c062940a8202914180c52814180e", + "0x1586c20723c18c302a940ac302a2418c302a940a0c000318405528141829", + "0x31c0aa502b180a8a063180aa502b118a0e178318a0552814182d063100aa5", + "0x14740c070154a0507014660c0b0154a050b014620c0a8154a050a8142c0c", + "0x15000c062940a2402914180c52814180e0631c1c160a8540ac702a940ac7", + "0x31920552815920544831920552814184f063200aa502830520c062940a1d", + "0x15140c658154a056529c1c2f0629c0aa5028305a0c650154a0564b201c8f", + "0x2940a0e028cc181602a940a16028c4181502a940a150285818cc02a940acb", + "0x14bc054003018a5028301c0c660382c150a81598055281598051d0301c05", + "0x391e0c670154a0567015120c670154a05061fc18cd02a940a0c1483018a5", + "0x15a20545031a205528159ed0070bc18d002a940a0c168319e05528159ccd", + "0x380aa5028380a33060700aa5028700a310605c0aa50285c0a16063480aa5", + "0x154a05062ac181602a940a0c55031a40e0e05c2a05690154a0569014740c", + "0x900c0e698243a0e528380a0c07014180c52814180c060314a05062b0181c", + "0x1783a0e56830bc0552814bc052f0303a05528143a050b03018a5028301c0c", + "0x940a5e060314a0506038188202b502a05528390205570310225111794a05", + "0x3856050b8302a05528142a16072bc182b148394a05128142a0c128154a05", + "0x154a0504814620c110154a05110142c0c062940a0c0703112056a85c0aa5", + "0x1794a0514824445e588302e05528142e1c072c0182902a940a29029781809", + "0x394a0545015640c062940a0c0703062056b2280aa5070bc0aa9060bc5a8f", + "0xec0aa5028cc0a1d060314a0506038183002b5c6c05528387405598307433", + "0x30440c062940a3d0289018881e8394a050c0140c0c0c0154a051d814120c", + "0x154a05440144a0c062940a85028901843428394a05200140c0c200154a05", + "0x31b00c52839064507208184502a940a4502a04188302a940a43028941845", + "0x314a050a815680c062940a1702870180c528146c052383018a5028301c0c", + "0x1248e0e47830920552814920544830920552814182b0611c0aa502830520c", + "0x154a053f815140c3f8154a053f1f01c2f061f00aa5028305a0c3f0154a05", + "0xe8180e02a940a0e028cc182d02a940a2d028c4188f02a940a8f028581880", + "0xc0184f02a940a0c1b03018a5028301c0c400385a8f0a8150005528150005", + "0x314a0506038187428839b2553b8394a0e278b51e5e1d8309e05528149e05", + "0x1dc0a16060314a0538014e00c371c01ca5029c80a72061c80aa502830e80c", + "0x154a050a8156a0c070154a0507014660c2a8154a052a814620c3b8154a05", + "0xd82e1537038aa770e2d8183602a940a3602a14181702a940a1702a241815", + "0x30520c062940a0c0703158056d2ac0aa5072a80a3d062a8006f300554a05", + "0x2940aaf0287018b0578394a0557014800c570154a0555815100c568154a05", + "0x2a5620e528155ab00710c18ad02a940aad02a1418b002a940ab002a24180c", + "0x2cc0a49060314a05590148e0c59ac81ca502ac40a83060314a05548148a0c", + "0x154a05300142c0c5b0154a055a814f80c5a8154a055a014fc0c5a0154a05", + "0x540ab602a940ab6028e8180002a940a00028cc186f02a940a6f028c41860", + "0x30c00552814c0050b0317c055281558054503018a5028301c0c5b000de60", + "0x1bcc01502af80aa502af80a3a060000aa5028000a33061bc0aa5029bc0a31", + "0x142a055a03018a50285c0a1c060314a051b0148e0c062940a0c070317c00", + "0x391e0c5f8154a055f815120c5f8154a05061fc18a802a940a0c1483018a5", + "0x1584054503184055281580c1070bc18c102a940a0c168318005528157ea8", + "0x380aa5028380a33061d00aa5029d00a31061440aa5029440a160630c0aa5", + "0x314a05180148a0c062940a0c07031860e3a1442a05618154a0561814740c", + "0x154a05060a4180c528142a055a03018a50285c0a1c060314a0519815000c", + "0xb418c602a940ac5620391e0c628154a0562815120c628154a05061bc18c4", + "0x151e050b0319205528159005450319005528158cc7070bc18c702a940a0c", + "0x3240aa502b240a3a060380aa5028380a33060b40aa5028b40a310623c0aa5", + "0x3018a50285c0a1c060314a050a815680c062940a0c07031920e16a3c2a05", + "0x380a33060b40aa5028b40a310623c0aa502a3c0a16063280aa5028c40a8a", + "0x148a0c062940a0c07031940e16a3c2a05650154a0565014740c070154a05", + "0xa4180c5281438055f03018a5028a40a80060314a050a815680c062940a89", + "0x2940acb538391e0c658154a0565815120c658154a050600018a702a940a0c", + "0x319e05528159c05450319c055281598cd070bc18cd02a940a0c168319805", + "0x33c0a3a060380aa5028380a33060240aa5028240a31060880aa5028880a16", + "0x940a80060314a05410148a0c062940a0c070319e0e048882a05678154a05", + "0x309e0c680154a05060a4180c528142c055403018a5028700abe060314a05", + "0x154a05060b418d202a940ad1680391e0c688154a0568815120c688154a05", + "0x3044055281444050b031ba0552815b80545031b80552815a4db070bc18db", + "0x24441502b740aa502b740a3a060380aa5028380a33060240aa5028240a31", + "0x1438055f03018a5029780a80060314a050b015500c062940a0c07031ba0e", + "0x391e0c6f8154a056f815120c6f8154a05061fc18de02a940a0c1483018a5", + "0x15c20545031c20552815c0a6070bc18a602a940a0c16831c00552815bede", + "0x380aa5028380a33060900aa5028900a31060180aa5028180a16063880aa5", + "0x154a05062ac181602a940a0c55031c40e120182a05710154a0571014740c", + "0x900c0e718243a0e528380a0c07014180c52814180c060314a05062b0181c", + "0x1783a0e56830bc0552814bc052f0303a05528143a050b03018a5028301c0c", + "0x940a5e060314a0506038188202b902a05528390205570310225111794a05", + "0x3856050b8302a05528142a16072bc182b148394a05128142a0c128154a05", + "0x154a0504814620c110154a05110142c0c062940a0c0703112057285c0aa5", + "0x1794a0514824445e588302e05528142e1c072c0182902a940a29029781809", + "0x394a0545015640c062940a0c070306205732280aa5070bc0aa9060bc5a8f", + "0xec0aa5028cc0a1d060314a0506038183002b9c6c05528387405598307433", + "0x30440c062940a3d0289018881e8394a050c0140c0c0c0154a051d814120c", + "0x154a05440144a0c062940a85028901843428394a05200140c0c200154a05", + "0x31d00c52839064507208184502a940a4502a04188302a940a43028941845", + "0x314a050a815680c062940a1702870180c528146c052383018a5028301c0c", + "0x1248e0e47830920552814920544830920552814182b0611c0aa502830520c", + "0x154a053f815140c3f8154a053f1f01c2f061f00aa5028305a0c3f0154a05", + "0xe8180e02a940a0e028cc182d02a940a2d028c4188f02a940a8f028581880", + "0xc0184f02a940a0c1b03018a5028301c0c400385a8f0a8150005528150005", + "0x314a0506038187428839d2553b8394a0e278b51e5e1d8309e05528149e05", + "0x1540a31060314a0538014e00c371c01ca5029c80a72061c80aa502830e80c", + "0x154a050b815120c0a8154a050a8156a0c070154a0507014660c2a8154a05", + "0x30520c001bcc05e528146c170a9b81c550bafc183602a940a3602a141817", + "0x154a0556015120c062940aab0287018ac558394a0500014800c550154a05", + "0x3018a502ab80a45062b95a0e5281554ac0710c18aa02a940aaa02a1418ac", + "0x2c40a7e062c40aa502ac00a49060314a05578148e0c582bc1ca502ab40a83", + "0x154a0530014620c3b8154a053b8142c0c590154a0554814f80c548154a05", + "0x14180e062c8de603b8540ab202a940ab2028e8186f02a940a6f028cc1860", + "0x141829060314a050a815680c062940a1702870180c528146c052383018a5", + "0x2d40aa502ad1660e47831680552815680544831680552814187f062cc0aa5", + "0x142c0c540154a055f015140c5f0154a055aad81c2f062d80aa5028305a0c", + "0x2940aa8028e8180e02a940a0e028cc187402a940a74028c4185102a940a51", + "0x2940a3302a00180c5281460052283018a5028301c0c54038e8510a8155005", + "0x2940a0c378317e05528141829060314a050a815680c062940a1702870180c", + "0x31840552814182d063040aa502b017e0e478318005528158005448318005", + "0x14620c478154a05478142c0c620154a0561815140c618154a0560b081c2f", + "0x3101c2d478540ac402a940ac4028e8180e02a940a0e028cc182d02a940a2d", + "0x154a0518815140c062940a1702870180c528142a055a03018a5028301c0c", + "0xe8180e02a940a0e028cc182d02a940a2d028c4188f02a940a8f0285818c5", + "0x2d0180c5281512052283018a5028301c0c628385a8f0a8158a05528158a05", + "0x318c05528141829060314a050e0157c0c062940a2902a00180c528142a05", + "0x14182d063200aa502b1d8c0e478318e05528158e05448318e05528141800", + "0x154a05110142c0c538154a0565015140c650154a05643241c2f063240aa5", + "0x540aa702a940aa7028e8180e02a940a0e028cc180902a940a09028c41822", + "0x157c0c062940a2502a00180c5281504052283018a5028301c0c538381222", + "0x22418cc02a940a0c278319605528141829060314a050b015500c062940a1c", + "0x3359c0e178319c0552814182d063340aa502b31960e478319805528159805", + "0x154a0504814620c110154a05110142c0c680154a0567815140c678154a05", + "0x14180e063401c09110540ad002a940ad0028e8180e02a940a0e028cc1809", + "0x141829060314a050e0157c0c062940a5e02a00180c528142c055403018a5", + "0x36c0aa502b49a20e47831a40552815a40544831a40552814187f063440aa5", + "0x142c0c6f0154a056e815140c6e8154a056db701c2f063700aa5028305a0c", + "0x2940ade028e8180e02a940a0e028cc182402a940a24028c4180602a940a06", + "0x5c1cea0b0541ca507014180e0283018a502830180c6f03848060a815bc05", + "0x240a06060240aa5028740a09060740aa5029780a1d060314a0506038181c", + "0x941ca5028880a06060880aa502830440c062940a06028901824030394a05", + "0x15020c148154a05408144a0c410154a05120144a0c062940a25028901881", + "0x14180e06031d60c52838528207208181502a940a1502858188202a940a82", + "0x391e0c448154a0544815120c448154a05060ac182b02a940a0c1483018a5", + "0x145e05450305e05528151e2d070bc182d02a940a0c168311e0552815122b", + "0x380aa5028380a33060580aa5028580a31060540aa5028540a16062280aa5", + "0xc40aa5028306c0c062940a0c07031140e0b0542a05450154a0545014740c", + "0x14180e060c06c0e760e8660e5283862160a978760c188154a0518814600c", + "0x300180c528143005380307a18072940a3b029c8183b02a940a0c3a03018a5", + "0x394a0520015060c200154a05060a4180c528151005228311005528147a05", + "0x1f0188302a940a45029f8184502a940a4302924180c528150a05238308685", + "0x141c051983074055281474051883066055281466050b0308e05528150605", + "0x141829060314a05060381847070e866150291c0aa50291c0a3a060380aa5", + "0x1f00aa5029f8920e47830fc0552814fc0544830fc0552814187f061240aa5", + "0x142c0c278154a0540015140c400154a053e1fc1c2f061fc0aa5028305a0c", + "0x2940a4f028e8180e02a940a0e028cc183002a940a30028c4183602a940a36", + "0x154a05060a4180c52814bc054003018a5028301c0c2783860360a8149e05", + "0xb4185102a940a553b8391e0c2a8154a052a815120c2a8154a05061fc1877", + "0x142e050b030e00552814e40545030e40552814a274070bc187402a940a0c", + "0x1c00aa5029c00a3a060380aa5028380a33060700aa5028700a310605c0aa5", + "0x303817073b42c15072941c05060380a0c062940a0c06030e00e0e05c2a05", + "0x142a050b030121d072940a5e029dc185e02a940a5e02978180c52814180e", + "0x154a050e8143a0c062940a0c070304805770180aa5070240a55060540aa5", + "0x88180c528150205120310481072940a2502818182502a940a22028241822", + "0x2940a8202894180c52814560512031122b072940a2902818182902a940a0c", + "0x3bc18a5070b51e0e410311e05528151e05408305a05528151205128311e05", + "0x154a05060ac182f02a940a0c1483018a5028180a51060314a0506038180c", + "0xbc183302a940a0c16830620552815142f0723c188a02a940a8a02a24188a", + "0x580a31060540aa5028540a16060d80aa5028e80a8a060e80aa5028c4660e", + "0x306c0e0b0542a051b0154a051b014740c070154a0507014660c0b0154a05", + "0x3860160a978760c180154a0518014600c180154a05060d8180c52814180e", + "0x2940a3b02858184002a940a0c3a03018a5028301c0c440f41cf00c0ec1ca5", + "0x300c05528140c05370301c05528141c05198303005528143005188307605", + "0x38184902bc48e0552839060561031064521a142aa502818800e0c0ec2cc1", + "0x1fcf80e52814fc0541830fc05528141829060314a0523815860c062940a0c", + "0x13c0a7c0613c0aa502a000a7e062000aa5029fc0a49060314a053e0148e0c", + "0x154a0522814660c218154a0521814620c428154a05428142c0c3b8154a05", + "0x2940a4902a28180c52814180e061dc8a43428540a7702a940a77028e81845", + "0x308a05528148a05198308605528148605188310a05528150a050b030aa05", + "0x3018a5028180a51060314a050603818552290d0a15029540aa5029540a3a", + "0x14e8510723c187402a940a7402a24187402a940a0c3f830a205528141829", + "0x1800aa5029b80a8a061b80aa5029c8e00e17830e00552814182d061c80aa5", + "0x14740c070154a0507014660c440154a0544014620c1e8154a051e8142c0c", + "0x15000c062940a2402914180c52814180e061801c881e8540a6002a940a60", + "0x30000552814000544830000552814184f061bc0aa502830520c062940a1d", + "0x15140c560154a05552ac1c2f062ac0aa5028305a0c550154a05001bc1c8f", + "0x2940a0e028cc181602a940a16028c4181502a940a150285818ad02a940aac", + "0x14bc054003018a5028301c0c568382c150a8155a05528155a051d0301c05", + "0x391e0c578154a0557815120c578154a05061fc18ae02a940a0c1483018a5", + "0x1552054503152055281560b1070bc18b102a940a0c168316005528155eae", + "0x380aa5028380a33060700aa5028700a310605c0aa50285c0a16062c80aa5", + "0x380a05620300a055281418050e831640e0e05c2a05590154a0559014740c", + "0x2940a0e02b18181602a940a5e02b14180c52814180e060540af22f0381ca5", + "0x2940a0c6483018a5028301c0c063cc0a0c640303805528142c05638302e05", + "0x303805528141205638302e05528142a05630301205528143a05650303a05", + "0x3044057a0900aa5070700aa7060180aa5028180a5e060180aa50285c0a49", + "0x2940a8102b34188102a940a2502b30182502a940a2402b2c180c52814180e", + "0x2940a0c070310406070150405528150405670300c05528140c052f0310405", + "0x180a5e060ac0aa5028a40acf060a40aa502831920c062940a2202914180c", + "0x14660c028154a0502814620c158181c05158154a05158159c0c030154a05", + "0x700af50b8154a0e0b015a20c0b054bc5e528141c0507340180e02a940a0e", + "0x1412056e0301205528143a056d8303a05528142e056903018a5028301c0c", + "0x1448055a03018a5028180a1c062285e2d47a245629412044a22120184aa5", + "0xa40a1c060314a0541014380c062940a8102870180c5281444056e83018a5", + "0x14480c062940a8f02a00180c5281512056e83018a5028ac0ade060314a05", + "0xcc620e528144a056f83018a502a280a80060314a0517814480c062940a2d", + "0x300a16060c00aa5028d80ae0060d80aa5028cc0a1d060e80aa502830440c", + "0x147430061794c0c1d0154a051d015020c180154a05180158c0c060154a05", + "0x14180e062200af61e8154a0e0c015c20c188154a0518814bc0c0c0ec1ca5", + "0x308605528150a05660310a05528148005658308005528147a057103018a5", + "0x20c1cf90620c860e5281486057c0308605528148605448308a055281418f7", + "0x14180e061240afb062941c4702be8184702a940a4702a24184702a940a45", + "0x1f80afd061f80aa502831f80c062940a4302870180c5281462054003018a5", + "0x154a052f014620c1d8154a051d8142c0c3f8154a053e015fc0c3e0154a05", + "0x14180e061fc2a5e1d8540a7f02a940a7f02bfc181502a940a15028cc185e", + "0x3e4184f218394a0521815f00c400154a0506404180c5281492058003018a5", + "0x38185502c0818a5071dc0afa061dc0aa5029dc0a89061dc0aa502a009e0e", + "0x100185102a940a0c7b83018a50290c0a1c060314a0518815000c062940a0c", + "0x2940a7002900187002a940a0c8083018a5029d00a1c061c8e80e52814a205", + "0x30000552814c00566030de0552814e4056603018a5029b80a1c06180dc0e", + "0x15f40c550154a0555015120c550154a05001bc1cf9061bc0aa5029bc0a89", + "0x154a0556015fa0c560154a0506410180c52814180e062ac0b03062941caa", + "0xcc185e02a940a5e028c4183b02a940a3b0285818ae02a940aad02bf818ad", + "0x3018a5028301c0c57054bc3b0a8155c05528155c057f8302a05528142a05", + "0x154a0558015120c580154a050641418af02a940a0c1483018a502aac0b00", + "0x3164055281562a9070bc18a902a940a0c1683162055281560af0723c18b0", + "0x540a33061780aa5029780a31060ec0aa5028ec0a16062cc0aa502ac80b06", + "0x16000c062940a0c0703166152f0ec2a05598154a0559815fe0c0a8154a05", + "0x2940ab45a839f20c5a90c1ca50290c0af8062d00aa5028320e0c062940a55", + "0x3018a5028301c0c5f016100c528396c057d0316c05528156c05448316c05", + "0x2940a0c8483018a502aa00a80062fd500e5281462056f83018a50290c0a1c", + "0x3076055281476050b0318405528158205700318205528157e050e8318005", + "0x3188c3072940ac0610ecbca6063000aa502b000a81063080aa502b080ac6", + "0x15960c638154a0562815c40c062940a0c070318c05853140aa5073100ae1", + "0x154a0565015120c650154a0564015980c648154a05060a418c802a940ac7", + "0x394a0564815060c062940a0c0703198058632d4e0e5283994c30742c18ca", + "0x15120c680154a0567014920c678154a0506434180c528159a05238319ccd", + "0x32c2a5e0b43818a702a940aa70285818d002a940ad00297818cf02a940acf", + "0x37c0aa502b6c0b10060314a050603818de6eb70bd0f6db49a25e52839a0cf", + "0x31900c708154a056f816220c530154a0569014660c700154a0568814620c", + "0xcc18e002a940adc028c418e202a940ade02c4c180c52814180e060322405", + "0x39ee058a831ee0552815c2058a031c20552815c405888314c0552815ba05", + "0x31f4055281418fc060314a057c0162e0c062940a0c07031f2058b3e00aa5", + "0x3800a310629c0aa502a9c0a16063f40aa502bf00afe063f00aa502be80afd", + "0x31faa67029c2a057e8154a057e815fe0c530154a0553014660c700154a05", + "0x2940ae0028c418a702a940aa70285818fe02a940af902c18180c52814180e", + "0x301c0c7f299c0a70a815fc0552815fc057f8314c05528154c0519831c005", + "0x15120c800154a050646018ff02a940a0c1483018a502b240a47060314a05", + "0x160304070bc190402a940a0c1683202055281600ff0723c190002a940b00", + "0x1780aa5029780a31063300aa502b300a16064180aa502c140b06064140aa5", + "0x2940a0c070320c152f3302a05830154a0583015fe0c0a8154a050a814660c", + "0xcc185e02a940a5e028c418c302a940ac302858190702a940ac602c18180c", + "0x3018a5028301c0c83854bcc30a8160e05528160e057f8302a05528142a05", + "0x426160e7c8321643072940a4302be0190902a940a0c8c83018a502af80b00", + "0x2940a0c070321c058d0314a0e86815f40c868154a0586815120c868154a05", + "0x1620058e032200552814191b060314a0521814380c062940a3102a00180c", + "0x3018a5028301c0c8c45e2a5e8f45227112f2941d100a978bd1d064400aa5", + "0x4640b20064700aa502c4c0a330646c0aa502c440a31064640aa502c500b1f", + "0x14620c8f8154a058c016440c062940a0c07030192102831900c8e8154a05", + "0x2940b1d02c8c191d02a940b1f02c80191c02a940b17028cc191b02a940b15", + "0x3018a502c880b25060314a0506038192302c9244055283a40051e8324005", + "0x1476050b0324e05528164c057f0324c05528164a057e8324a055281418fc", + "0x49c0aa502c9c0aff064700aa502c700a330646c0aa502c6c0a31060ec0aa5", + "0x154a051d8142c0c940154a05918160c0c062940a0c070324f1c8d8ec2a05", + "0x540b2802a940b2802bfc191c02a940b1c028cc191b02a940b1b028c4183b", + "0x325529072940a4302900180c528161c058003018a5028301c0c94472363b", + "0x1658050e0325b2c072940b2b02900192b02a940a0c9303018a502ca40a1c", + "0x4c00aa502cbe5c0e7c8325e05528165a05660325c055281654056603018a5", + "0x15be0c062940a0c070326405988314a0e98015f40c980154a0598015120c", + "0x2940b3602b80193602a940b3402874193502a940a0c848326933072940a31", + "0x326a05528166a05408326e05528166e056303076055281476050b0326e05", + "0x314a050603818bb02cee74055283a7205708327338072940b359b8ecbca6", + "0x49c193f9f0394a0599815be0c9e8154a059e015960c9e0154a059d015c40c", + "0x2940b3802858194202a940b4102b80194102a940b3f02874194002a940a0c", + "0x394a05a050a705e530328005528168005408328405528168405630327005", + "0x314a0506038194702d1a8a055283a8805708327a05528167a05448328943", + "0x200194ba50394a059f015be0ca48154a05a4015960ca40154a05a2815c40c", + "0x154a05a6815c00ca68154a05a58143a0ca60154a05064a0180c528169405", + "0x298194c02a940b4c02a04194e02a940b4e02b18194302a940b4302858194e", + "0x16a55102a941d5002b84194902a940b4902a241950a78394a05a653a865e", + "0x1780a31065540aa502d500acb065500aa502d440ae2060314a05060381953", + "0x5540a8906562af562f2940a152f03a520c0a8154a050a814660c2f0154a05", + "0x2940b5902cac180c52814180e0656c0b5aac8154a0eac016540caa8154a05", + "0x16be0597032c2bdb057ebc1652816ba0596832ba0552816b80596032b805", + "0x5780b2f060314a05b0814380c062940abd02ad0180c52816c0055a03018a5", + "0x16c60599832cb64b19794a05b1016640cb10154a05af016600caf0154a05", + "0x314a05b3814380cb459c1ca502d980a40062f00aa502cf40acc065980aa5", + "0x15980c2c0154a05b4015980c062940b6902870196ab48394a055e014800c", + "0x16d80544832d80552816d658073e4185802a940a5802a24196b02a940b6a", + "0x5b418a5075b00afa065940aa502d940ab5065900aa502d900b1c065b00aa5", + "0x14800cb80154a05a4815980cb78154a05b2016660c062940a0c07032dc05", + "0x16e6050e032e973072940b7002900180c52816e2050e032e571072940b6f", + "0x5d80aa502aeaea0e7c831740552816e80566032ea0552816e4056603018a5", + "0x16680c062940a0c07032f005bb8314a0ebb015f40cbb0154a05bb015120c", + "0x16f6050e032f97b072940b7902900197a02a940b5502b30197902a940b65", + "0x32fe0552816f8056603018a502df40a1c065fafa0e52816f4052003018a5", + "0x15f40cc08154a05c0815120cc08154a05c05fc1cf9066000aa502df80acc", + "0x154a05c2015fa0cc20154a05063f0180c52814180e0660c0b82062941d81", + "0xcc195602a940b56028c4194f02a940b4f02858198602a940b8502bf81985", + "0x3018a5028301c0cc355ead4f0a8170c05528170c057f832ae0552816ae05", + "0x154a055c815120c5c8154a05064d4198702a940a0c1483018a502e0c0b00", + "0x331405528171189070bc198902a940a0c1683310055281573870723c18b9", + "0x55c0a33065580aa502d580a310653c0aa502d3c0a160662c0aa502e280b06", + "0x16000c062940a0c070331757ab53c2a05c58154a05c5815fe0cab8154a05", + "0x4d8198c02a940a0c1483018a502d940ab4060314a05aa814380c062940b78", + "0x2940a0c168331c05528171b8c0723c198d02a940b8d02a24198d02a940a0c", + "0x53c0aa502d3c0a16066440aa502e400b06066400aa502e3b1e0e178331e05", + "0x53c2a05c88154a05c8815fe0cab8154a05ab814660cab0154a05ab014620c", + "0x5940ab4060314a05aa814380c062940b6e02c00180c52814180e06646af56", + "0x32700cc90154a05060a4180c52816c8059b83018a502d240a1c060314a05", + "0x154a05060b4199402a940b93c90391e0cc98154a05c9815120cc98154a05", + "0x329e05528169e050b0317005528172c05830332c05528172995070bc1995", + "0x55a9e1502ae00aa502ae00aff0655c0aa502d5c0a33065580aa502d580a31", + "0x1692050e03018a502cf40a1c060314a05aa814380c062940a0c070317157", + "0x32ac0552816ac05188329e05528169e050b0332e0552816b6058303018a5", + "0x314a05060381997abd5a9e1502e5c0aa502e5c0aff0655c0aa502d5c0a33", + "0x169e050b033300552816a6058303018a502cf40a1c060314a05a4814380c", + "0x6600aa502e600aff060540aa5028540a33061780aa5029780a310653c0aa5", + "0x3018a502cf40a1c060314a059f015000c062940a0c0703330152f53c2a05", + "0x540a33061780aa5029780a310650c0aa502d0c0a16066640aa502d1c0b06", + "0x15000c062940a0c0703332152f50c2a05cc8154a05cc815fe0c0a8154a05", + "0x154a052f014620c9c0154a059c0142c0ccd0154a055d8160c0c062940b33", + "0x14180e066682a5e9c0540b9a02a940b9a02bfc181502a940a15028cc185e", + "0x1419390666c0aa502830520c062940a3102a00180c5281664058003018a5", + "0x6780aa5028305a0cce8154a05ce66c1c8f066700aa502e700a89066700aa5", + "0xc4183b02a940a3b0285819a002a940b9f02c18199f02a940b9dcf0385e0c", + "0x54bc3b0a81740055281740057f8302a05528142a0519830bc0552814bc05", + "0x1476050b03342055281510058303018a5028c40a80060314a050603819a0", + "0x6840aa502e840aff060540aa5028540a33061780aa5029780a31060ec0aa5", + "0x154a05060142c0cd10154a050e0160c0c062940a0c0703342152f0ec2a05", + "0x540ba202a940ba202bfc181502a940a15028cc185e02a940a5e028c4180c", + "0x154a0506324185e02a940a0e028391e0c070154a0506015980cd1054bc0c", + "0x2941c0502b10180502a940a0c0287418152f0380a5e02a940a5e02a141815", + "0x154a05070158c0c0b0154a052f0158a0c062940a0c070302a05d19781c0e", + "0x154a0506324180c52814180e06033480506320181c02a940a1602b1c1817", + "0x124181c02a940a0902b1c181702a940a1502b18180902a940a1d02b28181d", + "0x38182202e944805528383805538300c05528140c052f0300c05528142e05", + "0x394a0540814800c408154a0512815980c128154a0512015960c062940a0c", + "0x70188f448394a0515814800c158154a05063dc180c5281504050e0305282", + "0x145e050e031142f072940a2d02900182d02a940a2902b30180c528151205", + "0x3018a5028cc0a1c060e8660e528146205200306205528151e056603018a5", + "0xd81cf9060d80aa5028d80a89060c00aa5028e80acc060d80aa502a280acc", + "0x14180e060600ba6062941c3b02be8183b02a940a3b02a24183b02a940a30", + "0x320184002a940a88029b8188802a940a3d02ce8183d02a940a0c6483018a5", + "0x15760c428154a0506324180c5281430058003018a5028301c0c0669c0a0c", + "0x2940a4502cf4184502a940a4002cf0184002a940a43029b8184302a940a85", + "0x2940a0c0703106060701506055281506059f0300c05528140c052f0310605", + "0x180a5e061240aa50291c0b3f0611c0aa502831920c062940a2202914180c", + "0x540a1c060314a052f014e00c248181c05248154a05248167c0c030154a05", + "0x3018a5028700a5106074380e528142e05a003018a5028580a1c060314a05", + "0x900a5106088480e528140c05a00300c055281412055d83012055281418c9", + "0x2940a0c070310205d40940aa5070740b41060880aa5028880a6e060314a05", + "0x14dc0c148154a0541016780c410154a0511016840c062940a2502914180c", + "0x16840c062940a8102914180c52814180e06033520506320182b02a940a29", + "0x301c0c16817548f02a941c2b02d04182b02a940a89029b8188902a940a22", + "0x3f8188a02a940a2f02bf4182f02a940a0c7e03018a502a3c0a45060314a05", + "0x141c05198300a05528140a051883018055281418050b0306205528151405", + "0xb40a45060314a05060381831070141815028c40aa5028c40aff060380aa5", + "0x380aa5028380a33060140aa5028140a31060300aa5028300a16060314a05", + "0x301c0c0c017563b02a941c30028f418301b0e86615528141c0506178300c", + "0x1000aa502a200afe062200aa5028f40afd060f40aa5028ec0a88060314a05", + "0x15fe0c1b0154a051b014660c1d0154a051d014620c198154a05198142c0c", + "0x58188502a940a1802c18180c52814180e061006c3a198540a4002a940a40", + "0x150a057f8306c05528146c05198307405528147405188306605528146605", + "0x30bc0e072940a0502854180502a940a050297818851b0e8661502a140aa5", + "0x6b43817072941c150603a160c062940a0c070302c05d60540aa5071780a17", + "0x14bc0c0b8154a050b8142c0c048154a050e016860c062940a0c070303a05", + "0x31920c062940a0c07030120e0b9780a0902a940a0902d10180e02a940a0e", + "0x154a0507014bc0c0e8154a050e8142c0c120154a05030168a0c030154a05", + "0x154a050b0168a0c062940a0c07030480e0e9780a2402a940a2402d10180e", + "0x1780a2202a940a2202d10180e02a940a0e02978180c02a940a0c028581822", + "0x6b82c15072941c5e02b10185e02a940a0e02874180c528141947060881c0c", + "0x158e0c0e8154a050a8158c0c0e0154a050b0158a0c062940a0c070302e05", + "0x15940c030154a0506324180c52814180e060335e0506320180902a940a1c", + "0x2940a1d02924180902a940a2402b1c181d02a940a1702b18182402a940a06", + "0x314a0506038188102ec04a055283812055383044055281444052f0304405", + "0x300a16060ac0aa502a080acc060a40aa502830520c410154a0512815960c", + "0x154a05148150a0c110154a0511014bc0c028154a0502814620c060154a05", + "0xb40aa9060b51e892f2940a2b148880a0c0b520182b02a940a2b02a241829", + "0xcc620ea48306631072940a2f02ac8180c52814180e062280bb1178154a0e", + "0x154a0547814620c448154a05448142c0c1b0154a051d016940c1d0154a05", + "0x154a0545016980c062940a0c070306c8f449780a3602a940a3602d2c188f", + "0x1780a3002a940a3002d2c188f02a940a8f028c4188902a940a89028581830", + "0xec0b4d060ec0aa502831920c062940a8102914180c52814180e060c11e89", + "0x2940a0c02858188802a940a3d02d28183d02a940a181103a920c0c0154a05", + "0x1780a70062200a0c2f0151005528151005a58300a05528140a05188301805", + "0x15060c0e0154a05063dc180c528142c050e03018a5028540ab4060314a05", + "0x2940a1c02a24180602a940a0902924180c528143a0523830121d072940a17", + "0x20902252f6c84424072941c060e0380a15a70300c05528140c052f0303805", + "0x6cc0a0c6403056055281444051983052055281448051883018a5028301c0c", + "0x150205198305205528144a051883018a502a080a47060314a0506038180c", + "0xac0aa5028ac0a33060a40aa5028a40a31060300aa5028300a16060ac0aa5", + "0x301c0c18817688a02a941c2f028f4182f16a3d121552814562906178300c", + "0xd80aa5028e80afe060e80aa5028cc0afd060cc0aa502a280a88060314a05", + "0x15fe0c168154a0516814660c478154a0547814620c448154a05448142c0c", + "0x58183002a940a3102c18180c52814180e060d85a8f448540a3602a940a36", + "0x1460057f8305a05528145a05198311e05528151e05188311205528151205", + "0x540a1c060314a052f015680c062940a0e029c0183016a3d1215028c00aa5", + "0x3018a5028700a4706074380e528142c05418302e055281418f7060314a05", + "0x302b4e060240aa5028240a5e0605c0aa50285c0a89060240aa5028740a49", + "0x2080aa5028180a31060314a0506038188112888bdb5120181ca5070242e05", + "0x314a05408148e0c062940a0c0703019b602831900c148154a0512014660c", + "0xac0a89060ac0aa502831f80c148154a0512814660c410154a0511014620c", + "0x300a05028140aa502831920c062940a0c029c0182b14a08bc05158154a05", + "0x1438059d03038055281418c9060314a050b014a20c0b8581ca5028540b40", + "0x180aa5028180a6e060314a0504814a20c030241ca5028740b40060740aa5", + "0x16840c062940a2402914180c52814180e060880bb7120154a0e0b816820c", + "0x33700506320188202a940a81029b8188102a940a2502cf0182502a940a06", + "0x2940a29029b8182902a940a0602d08180c5281444052283018a5028301c0c", + "0x3018a5028ac0a45060314a0506038188902ee45605528390405a08310405", + "0x1418c8060bc0aa5028380a33060b40aa5028140a310623c0aa5028300a16", + "0x140a31060300aa5028300a16060314a05448148a0c062940a0c0703019ba", + "0xf4183a198c51415528141c0506178300c070154a0507014660c028154a05", + "0x1514050b03018a5028d80b25060314a0506038183002eec6c05528387405", + "0x3076055281418c9060bc0aa5028cc0a33060b40aa5028c40a310623c0aa5", + "0x23c2a051e8154a051e816a20c1e8154a050c016a00c0c0154a051d9781d4f", + "0x142c0c440154a0518016a60c062940a5e029c0180c52814180e060f45e2d", + "0x2940a8802d44183302a940a33028cc183102a940a31028c4188a02a940a8a", + "0x3a520c028154a0502814660c060154a0506014620c440cc628a0a8151005", + "0x4ac180c52814180e0605c0bbc0b0154a0e0a816540c0a9781c5e528140a0c", + "0x304a22120181216528143a05968303a05528143805960303805528142c05", + "0x314a0512814380c062940a2202ad0180c5281448055a03018a5028240b54", + "0x14660c070154a0507014620c410154a0540816ac0c408154a0503016aa0c", + "0x16b00c062940a0c07031045e071780a8202a940a8202d5c185e02a940a5e", + "0x2940a2902d5c185e02a940a5e028cc180e02a940a0e028c4182902a940a17", + "0x314a0506038181602ef42a5e072941c0e02830bd59060a4bc0e2f0145205", + "0x16ba0c2f0154a052f0142c0c0e0154a050b816b80c0b8154a050a816b60c", + "0x2940a0caf0303a05528141829060314a0506038181c2f0380a1c02a940a1c", + "0x30480552814182d060180aa5028243a0e478301205528141205448301205", + "0x16ba0c0b0154a050b0142c0c128154a0511016be0c110154a05030901c2f", + "0x3018a5028301c0c070177c0502a941c0c02d8018250b0380a2502a940a25", + "0x302a05028540aa5028540a3a060540aa5029780a7c061780aa5028140a7e", + "0x2940a1702a28181702a940a0e0b0385e0c0b0154a05060b4180c52814180e", + "0x301c0c070177e0502a941c0c02af4181c0281438055281438051d0303805", + "0x540aa5028540aff060540aa5029780afe061780aa5028140afd060314a05", + "0x418181702a940a0e0b0385e0c0b0154a05060b4180c52814180e060540a05", + "0x1781c5e528380a0c07584181c0281438055281438057f8303805528142e05", + "0x154a0507014620c0e8154a050a816c40c062940a0c0703038170b17b8015", + "0x14180e06033820506320182402a940a1d02d8c180602a940a5e028cc1809", + "0x300c05528142e05198301205528142c05188304405528143805b203018a5", + "0x310405e12040aa5070940b2a060940aa5028900b65060900aa5028880b63", + "0x2940a2b02af0182b02a940a2902d98182902a940a8102cac180c52814180e", + "0x151205528151205b38300c05528140c05198301205528141205188311205", + "0x301205528141205188311e05528150405b403018a5028301c0c44818125e", + "0x3018a5028328e0c47818125e02a3c0aa502a3c0b67060180aa5028180a33", + "0x3b861c0b8394a0e0b014185e1d8302c05528142c05180302c05528141836", + "0x3e8181702a940a170285818060a8394a050a815f00c062940a0c07030121d", + "0x2940a5e02da4180c528142a050e03018a5028301c0c12017880c528380c05", + "0x5c0aa50285c0a16062040aa5028940b4a060940aa5028881c0ea48304405", + "0x314a050603818810e05cbc05408154a0540816960c0e0154a050e014620c", + "0x142e0c14a081ca5028380a15060380aa5028380a5e060314a0512016000c", + "0x1419010623c0aa5028acbc0e4783018a5028301c0c448178a2b02a941c29", + "0x154a050e014620c0b8154a050b8142c0c178154a05168541cf9060b40aa5", + "0x520182f02a940a2f02a24188f02a940a8f02a14188202a940a8202978181c", + "0x14180e060d80bc61d0154a0e19815520c198c5145e528145e8f410702e16", + "0x154a050c016940c0c0154a051d8c01d49060ec600e5281474055903018a5", + "0x1780a3d02a940a3d02d2c183102a940a31028c4188a02a940a8a02858183d", + "0xc4188a02a940a8a02858188802a940a3602d30180c52814180e060f4628a", + "0x70180c52814180e06220628a2f0151005528151005a58306205528146205", + "0x2940a404103a920c200154a05448169a0c062940a5e0291c180c528142a05", + "0x303805528143805188302e05528142e050b0308605528150a05a50310a05", + "0x11c180c528142a050e03018a5028301c0c218702e5e0290c0aa50290c0b4b", + "0x31060552814187f061140aa502830520c062940a0e02a00180c52814bc05", + "0x1241c2f061240aa5028305a0c238154a05419141c8f0620c0aa502a0c0a89", + "0x2940a09028c4181d02a940a1d02858187c02a940a7e02d30187e02a940a47", + "0x301c05e38140aa5070300b6a061f0121d2f014f80552814f805a58301205", + "0x2940a1502d9c181502a940a5e02af0185e02a940a0502d98180c52814180e", + "0x5c0aa5028382c0e178302c0552814182d060314a05060381815028142a05", + "0x302a2b381bc1815198700a050e0154a050e016ce0c0e0154a050b816d00c", + "0x1c0de0c0ac14bc0e02830dc70378302a2b381bc1815061781c05061b8e06f", + "0x57925e07014186e381bc1815159c0de0c0af20bc0e02830dc70378302a2b", + "0x380a0c371c0de0c0a8ace06f06057945e07014186e381bc1815159c0de0c", + "0x381c0e0483b9a0e02830e870378302a7037830bdcc06180560e15817965e", + "0x380a0c3a1c0de0c0a93c1209219c0de0c0e73c1877158385605e70141840", + "0x7481c05061f8de0c2f0acde0c2f7440a0c3e0ac185e158301dd00b8582a5e", + "0x242c43381bc2fd30b8582a5e070141874381bc1815070242c43381bc181c", + "0x1bc18152790ce06f0605baa0c200148605ea0582a5e070141809381bcbc0e", + "0x14188a0603876290617bae0506220e06f2f1c0de0eeb054bc0e028310670", + "0x1bc1816ed8141881381bcbc703783bb40c3a0150405ec830dc0544817b00e", + "0x7741881029780bdc0a9781c05061f8de0c2f0241c2b" + ], + "sierra_program_debug_info": { + "type_names": [], + "libfunc_names": [], + "user_func_names": [] + }, + "contract_class_version": "0.1.0", + "entry_points_by_type": { + "EXTERNAL": [ + { + "selector": "0x15d40a3d6ca2ac30f4031e42be28da9b056fef9bb7357ac5e85627ee876e5ad", + "function_idx": 3 + }, + { + "selector": "0x162da33a4585851fe8d3af3c2a9c60b557814e221e0d4f30ff0b2189d9c7775", + "function_idx": 2 + }, + { + "selector": "0x1b1a0649752af1b28b3dc29a1556eee781e4a4c3a1f7f53f90fa834de098c4d", + "function_idx": 4 + }, + { + "selector": "0x289da278a8dc833409cabfdad1581e8e7d40e42dcaed693fa4008dcdb4963b3", + "function_idx": 0 + }, + { + "selector": "0x36fcbf06cd96843058359e1a75928beacfac10727dab22a3972f0af8aa92895", + "function_idx": 1 + } + ], + "L1_HANDLER": [], + "CONSTRUCTOR": [ + { + "selector": "0x28ffe4ff0f226a9107253e17a904099aa4f63a02a5621de0576e5aa71bc5194", + "function_idx": 5 + } + ] + }, + "abi": [ + { + "type": "function", + "name": "__validate_declare__", + "inputs": [ + { + "name": "class_hash", + "type": "core::felt252" + } + ], + "outputs": [ + { + "type": "core::felt252" + } + ], + "state_mutability": "view" + }, + { + "type": "enum", + "name": "core::bool", + "variants": [ + { + "name": "False", + "type": "()" + }, + { + "name": "True", + "type": "()" + } + ] + }, + { + "type": "function", + "name": "__validate_deploy__", + "inputs": [ + { + "name": "class_hash", + "type": "core::felt252" + }, + { + "name": "contract_address_salt", + "type": "core::felt252" + }, + { + "name": "validate_constructor", + "type": "core::bool" + } + ], + "outputs": [ + { + "type": "core::felt252" + } + ], + "state_mutability": "view" + }, + { + "type": "function", + "name": "__validate__", + "inputs": [ + { + "name": "contract_address", + "type": "core::starknet::contract_address::ContractAddress" + }, + { + "name": "selector", + "type": "core::felt252" + }, + { + "name": "calldata", + "type": "core::array::Array::" + } + ], + "outputs": [ + { + "type": "core::felt252" + } + ], + "state_mutability": "view" + }, + { + "type": "function", + "name": "__execute__", + "inputs": [ + { + "name": "contract_address", + "type": "core::starknet::contract_address::ContractAddress" + }, + { + "name": "selector", + "type": "core::felt252" + }, + { + "name": "calldata", + "type": "core::array::Array::" + } + ], + "outputs": [ + { + "type": "core::felt252" + } + ], + "state_mutability": "view" + }, + { + "type": "constructor", + "name": "constructor", + "inputs": [ + { + "name": "validate_constructor", + "type": "core::bool" + } + ] + }, + { + "type": "function", + "name": "foo", + "inputs": [], + "outputs": [], + "state_mutability": "view" + }, + { + "type": "event", + "name": "account_faulty::account_faulty::Account::Event", + "kind": "enum", + "variants": [] + } + ] +} \ No newline at end of file diff --git a/crates/gateway/src/compiler/compile.rs b/crates/gateway/src/compiler/compile.rs new file mode 100644 index 000000000..34594aa16 --- /dev/null +++ b/crates/gateway/src/compiler/compile.rs @@ -0,0 +1,33 @@ +use std::process::Command; + +#[cfg(test)] +#[path = "compile_test.rs"] +pub mod compile_test; + +const STARKNET_SIERRA_COMPILE_EXE: &str = "src/compiler/bin/starknet-sierra-compile"; + +// TODO(Arni, 1/05/2024): Add the configurable parameters to the function. +pub fn compile_sierra_to_casm(sierra_path: &str) -> Vec { + let add_pythonic_hints = true; // TODO: make this configurable? + let compiler_path = STARKNET_SIERRA_COMPILE_EXE; + + let mut command = Command::new(compiler_path); + command.arg(sierra_path); + + // Add aditional arguments. + if add_pythonic_hints { + command.arg("--add-pythonic-hints"); + } + + let result = command.output(); + if let Err(e) = result { + panic!("Failed to execute command: {}", e); + } + let compile_output = result.unwrap(); // TODO: handle error + let stderr_output = String::from_utf8(compile_output.stderr).unwrap(); // TODO: handle error + if !compile_output.status.success() { + panic!("Failed to compile Sierra code: {}", stderr_output); + }; + + compile_output.stdout +} diff --git a/crates/gateway/src/compiler/compile_test.rs b/crates/gateway/src/compiler/compile_test.rs new file mode 100644 index 000000000..6cd51ad8d --- /dev/null +++ b/crates/gateway/src/compiler/compile_test.rs @@ -0,0 +1,8 @@ +use crate::compiler::compile::compile_sierra_to_casm; + +#[test] +fn test_compile_sierra_to_casm() { + let sierra_path = "src/compiler/account_faulty.sierra.json"; + let casm = compile_sierra_to_casm(sierra_path); + assert_eq!(casm.len(), 72305); +} diff --git a/crates/gateway/src/lib.rs b/crates/gateway/src/lib.rs index 5cf135927..a564e3b6b 100644 --- a/crates/gateway/src/lib.rs +++ b/crates/gateway/src/lib.rs @@ -1,2 +1,7 @@ +// TODO(Arni, 02/04/2024): Make the file structure in this repo consistent. +// Folders. +pub mod compiler; + +// Files. pub mod errors; pub mod gateway;