use super::{eval_iso, IsogenyMap};
use bls12_381::{Fq, FqRepr, G1};
const XNUM: [Fq; 12] = [
Fq(FqRepr([
0x4d18b6f3af00131cu64,
0x19fa219793fee28cu64,
0x3f2885f1467f19aeu64,
0x23dcea34f2ffb304u64,
0xd15b58d2ffc00054u64,
0x0913be200a20bef4u64,
])),
Fq(FqRepr([
0x898985385cdbbd8bu64,
0x3c79e43cc7d966aau64,
0x1597e193f4cd233au64,
0x8637ef1e4d6623adu64,
0x11b22deed20d827bu64,
0x07097bc5998784adu64,
])),
Fq(FqRepr([
0xa542583a480b664bu64,
0xfc7169c026e568c6u64,
0x5ba2ef314ed8b5a6u64,
0x5b5491c05102f0e7u64,
0xdf6e99707d2a0079u64,
0x0784151ed7605524u64,
])),
Fq(FqRepr([
0x494e212870f72741u64,
0xab9be52fbda43021u64,
0x26f5577994e34c3du64,
0x049dfee82aefbd60u64,
0x65dadd7828505289u64,
0x0e93d431ea011aebu64,
])),
Fq(FqRepr([
0x90ee774bd6a74d45u64,
0x7ada1c8a41bfb185u64,
0x0f1a8953b325f464u64,
0x104c24211be4805cu64,
0x169139d319ea7a8fu64,
0x09f20ead8e532bf6u64,
])),
Fq(FqRepr([
0x6ddd93e2f43626b7u64,
0xa5482c9aa1ccd7bdu64,
0x143245631883f4bdu64,
0x2e0a94ccf77ec0dbu64,
0xb0282d480e56489fu64,
0x18f4bfcbb4368929u64,
])),
Fq(FqRepr([
0x23c5f0c953402dfdu64,
0x7a43ff6958ce4fe9u64,
0x2c390d3d2da5df63u64,
0xd0df5c98e1f9d70fu64,
0xffd89869a572b297u64,
0x1277ffc72f25e8feu64,
])),
Fq(FqRepr([
0x79f4f0490f06a8a6u64,
0x85f894a88030fd81u64,
0x12da3054b18b6410u64,
0xe2a57f6505880d65u64,
0xbba074f260e400f1u64,
0x08b76279f621d028u64,
])),
Fq(FqRepr([
0xe67245ba78d5b00bu64,
0x8456ba9a1f186475u64,
0x7888bff6e6b33bb4u64,
0xe21585b9a30f86cbu64,
0x05a69cdcef55feeeu64,
0x09e699dd9adfa5acu64,
])),
Fq(FqRepr([
0x0de5c357bff57107u64,
0x0a0db4ae6b1a10b2u64,
0xe256bb67b3b3cd8du64,
0x8ad456574e9db24fu64,
0x0443915f50fd4179u64,
0x098c4bf7de8b6375u64,
])),
Fq(FqRepr([
0xe6b0617e7dd929c7u64,
0xfe6e37d442537375u64,
0x1dafdeda137a489eu64,
0xe4efd1ad3f767cebu64,
0x4a51d8667f0fe1cfu64,
0x054fdf4bbf1d821cu64,
])),
Fq(FqRepr([
0x72db2a50658d767bu64,
0x8abf91faa257b3d5u64,
0xe969d6833764ab47u64,
0x464170142a1009ebu64,
0xb14f01aadb30be2fu64,
0x18ae6a856f40715du64,
])),
];
const XDEN: [Fq; 11] = [
Fq(FqRepr([
0xb962a077fdb0f945u64,
0xa6a9740fefda13a0u64,
0xc14d568c3ed6c544u64,
0xb43fc37b908b133eu64,
0x9c0b3ac929599016u64,
0x0165aa6c93ad115fu64,
])),
Fq(FqRepr([
0x23279a3ba506c1d9u64,
0x92cfca0a9465176au64,
0x3b294ab13755f0ffu64,
0x116dda1c5070ae93u64,
0xed4530924cec2045u64,
0x083383d6ed81f1ceu64,
])),
Fq(FqRepr([
0x9885c2a6449fecfcu64,
0x4a2b54ccd37733f0u64,
0x17da9ffd8738c142u64,
0xa0fba72732b3fafdu64,
0xff364f36e54b6812u64,
0x0f29c13c660523e2u64,
])),
Fq(FqRepr([
0xe349cc118278f041u64,
0xd487228f2f3204fbu64,
0xc9d325849ade5150u64,
0x43a92bd69c15c2dfu64,
0x1c2c7844bc417be4u64,
0x12025184f407440cu64,
])),
Fq(FqRepr([
0x587f65ae6acb057bu64,
0x1444ef325140201fu64,
0xfbf995e71270da49u64,
0xccda066072436a42u64,
0x7408904f0f186bb2u64,
0x13b93c63edf6c015u64,
])),
Fq(FqRepr([
0xfb918622cd141920u64,
0x4a4c64423ecaddb4u64,
0x0beb232927f7fb26u64,
0x30f94df6f83a3dc2u64,
0xaeedd424d780f388u64,
0x06cc402dd594bbebu64,
])),
Fq(FqRepr([
0xd41f761151b23f8fu64,
0x32a92465435719b3u64,
0x64f436e888c62cb9u64,
0xdf70a9a1f757c6e4u64,
0x6933a38d5b594c81u64,
0x0c6f7f7237b46606u64,
])),
Fq(FqRepr([
0x693c08747876c8f7u64,
0x22c9850bf9cf80f0u64,
0x8e9071dab950c124u64,
0x89bc62d61c7baf23u64,
0xbc6be2d8dad57c23u64,
0x17916987aa14a122u64,
])),
Fq(FqRepr([
0x1be3ff439c1316fdu64,
0x9965243a7571dfa7u64,
0xc7f7f62962f5cd81u64,
0x32c6aa9af394361cu64,
0xbbc2ee18e1c227f4u64,
0x0c102cbac531bb34u64,
])),
Fq(FqRepr([
0x997614c97bacbf07u64,
0x61f86372b99192c0u64,
0x5b8c95fc14353fc3u64,
0xca2b066c2a87492fu64,
0x16178f5bbf698711u64,
0x12a6dcd7f0f4e0e8u64,
])),
Fq(FqRepr([
0x760900000002fffdu64,
0xebf4000bc40c0002u64,
0x5f48985753c758bau64,
0x77ce585370525745u64,
0x5c071a97a256ec6du64,
0x15f65ec3fa80e493u64,
])),
];
const YNUM: [Fq; 16] = [
Fq(FqRepr([
0x2b567ff3e2837267u64,
0x1d4d9e57b958a767u64,
0xce028fea04bd7373u64,
0xcc31a30a0b6cd3dfu64,
0x7d7b18a682692693u64,
0x0d300744d42a0310u64,
])),
Fq(FqRepr([
0x99c2555fa542493fu64,
0xfe7f53cc4874f878u64,
0x5df0608b8f97608au64,
0x14e03832052b49c8u64,
0x706326a6957dd5a4u64,
0x0a8dadd9c2414555u64,
])),
Fq(FqRepr([
0x13d942922a5cf63au64,
0x357e33e36e261e7du64,
0xcf05a27c8456088du64,
0x0000bd1de7ba50f0u64,
0x83d0c7532f8c1fdeu64,
0x13f70bf38bbf2905u64,
])),
Fq(FqRepr([
0x5c57fd95bfafbdbbu64,
0x28a359a65e541707u64,
0x3983ceb4f6360b6du64,
0xafe19ff6f97e6d53u64,
0xb3468f4550192bf7u64,
0x0bb6cde49d8ba257u64,
])),
Fq(FqRepr([
0x590b62c7ff8a513fu64,
0x314b4ce372cacefdu64,
0x6bef32ce94b8a800u64,
0x6ddf84a095713d5fu64,
0x64eace4cb0982191u64,
0x0386213c651b888du64,
])),
Fq(FqRepr([
0xa5310a31111bbcddu64,
0xa14ac0f5da148982u64,
0xf9ad9cc95423d2e9u64,
0xaa6ec095283ee4a7u64,
0xcf5b1f022e1c9107u64,
0x01fddf5aed881793u64,
])),
Fq(FqRepr([
0x65a572b0d7a7d950u64,
0xe25c2d8183473a19u64,
0xc2fcebe7cb877dbdu64,
0x05b2d36c769a89b0u64,
0xba12961be86e9efbu64,
0x07eb1b29c1dfde1fu64,
])),
Fq(FqRepr([
0x93e09572f7c4cd24u64,
0x364e929076795091u64,
0x8569467e68af51b5u64,
0xa47da89439f5340fu64,
0xf4fa918082e44d64u64,
0x0ad52ba3e6695a79u64,
])),
Fq(FqRepr([
0x911429844e0d5f54u64,
0xd03f51a3516bb233u64,
0x3d587e5640536e66u64,
0xfa86d2a3a9a73482u64,
0xa90ed5adf1ed5537u64,
0x149c9c326a5e7393u64,
])),
Fq(FqRepr([
0x462bbeb03c12921au64,
0xdc9af5fa0a274a17u64,
0x9a558ebde836ebedu64,
0x649ef8f11a4fae46u64,
0x8100e1652b3cdc62u64,
0x1862bd62c291dacbu64,
])),
Fq(FqRepr([
0x05c9b8ca89f12c26u64,
0x0194160fa9b9ac4fu64,
0x6a643d5a6879fa2cu64,
0x14665bdd8846e19du64,
0xbb1d0d53af3ff6bfu64,
0x12c7e1c3b28962e5u64,
])),
Fq(FqRepr([
0xb55ebf900b8a3e17u64,
0xfedc77ec1a9201c4u64,
0x1f07db10ea1a4df4u64,
0x0dfbd15dc41a594du64,
0x389547f2334a5391u64,
0x02419f98165871a4u64,
])),
Fq(FqRepr([
0xb416af000745fc20u64,
0x8e563e9d1ea6d0f5u64,
0x7c763e17763a0652u64,
0x01458ef0159ebbefu64,
0x8346fe421f96bb13u64,
0x0d2d7b829ce324d2u64,
])),
Fq(FqRepr([
0x93096bb538d64615u64,
0x6f2a2619951d823au64,
0x8f66b3ea59514fa4u64,
0xf563e63704f7092fu64,
0x724b136c4cf2d9fau64,
0x046959cfcfd0bf49u64,
])),
Fq(FqRepr([
0xea748d4b6e405346u64,
0x91e9079c2c02d58fu64,
0x41064965946d9b59u64,
0xa06731f1d2bbe1eeu64,
0x07f897e267a33f1bu64,
0x1017290919210e5fu64,
])),
Fq(FqRepr([
0x872aa6c17d985097u64,
0xeecc53161264562au64,
0x07afe37afff55002u64,
0x54759078e5be6838u64,
0xc4b92d15db8acca8u64,
0x106d87d1b51d13b9u64,
])),
];
const YDEN: [Fq; 16] = [
Fq(FqRepr([
0xeb6c359d47e52b1cu64,
0x18ef5f8a10634d60u64,
0xddfa71a0889d5b7eu64,
0x723e71dcc5fc1323u64,
0x52f45700b70d5c69u64,
0x0a8b981ee47691f1u64,
])),
Fq(FqRepr([
0x616a3c4f5535b9fbu64,
0x6f5f037395dbd911u64,
0xf25f4cc5e35c65dau64,
0x3e50dffea3c62658u64,
0x6a33dca523560776u64,
0x0fadeff77b6bfe3eu64,
])),
Fq(FqRepr([
0x2be9b66df470059cu64,
0x24a2c159a3d36742u64,
0x115dbe7ad10c2a37u64,
0xb6634a652ee5884du64,
0x04fe8bb2b8d81af4u64,
0x01c2a7a256fe9c41u64,
])),
Fq(FqRepr([
0xf27bf8ef3b75a386u64,
0x898b367476c9073fu64,
0x24482e6b8c2f4e5fu64,
0xc8e0bbd6fe110806u64,
0x59b0c17f7631448au64,
0x11037cd58b3dbfbdu64,
])),
Fq(FqRepr([
0x31c7912ea267eec6u64,
0x1dbf6f1c5fcdb700u64,
0xd30d4fe3ba86fdb1u64,
0x3cae528fbee9a2a4u64,
0xb1cce69b6aa9ad9au64,
0x044393bb632d94fbu64,
])),
Fq(FqRepr([
0xc66ef6efeeb5c7e8u64,
0x9824c289dd72bb55u64,
0x71b1a4d2f119981du64,
0x104fc1aafb0919ccu64,
0x0e49df01d942a628u64,
0x096c3a09773272d4u64,
])),
Fq(FqRepr([
0x9abc11eb5fadeff4u64,
0x32dca50a885728f0u64,
0xfb1fa3721569734cu64,
0xc4b76271ea6506b3u64,
0xd466a75599ce728eu64,
0x0c81d4645f4cb6edu64,
])),
Fq(FqRepr([
0x4199f10e5b8be45bu64,
0xda64e495b1e87930u64,
0xcb353efe9b33e4ffu64,
0x9e9efb24aa6424c6u64,
0xf08d33680a237465u64,
0x0d3378023e4c7406u64,
])),
Fq(FqRepr([
0x7eb4ae92ec74d3a5u64,
0xc341b4aa9fac3497u64,
0x5be603899e907687u64,
0x03bfd9cca75cbdebu64,
0x564c2935a96bfa93u64,
0x0ef3c33371e2fdb5u64,
])),
Fq(FqRepr([
0x7ee91fd449f6ac2eu64,
0xe5d5bd5cb9357a30u64,
0x773a8ca5196b1380u64,
0xd0fda172174ed023u64,
0x6cb95e0fa776aeadu64,
0x0d22d5a40cec7cffu64,
])),
Fq(FqRepr([
0xf727e09285fd8519u64,
0xdc9d55a83017897bu64,
0x7549d8bd057894aeu64,
0x178419613d90d8f8u64,
0xfce95ebdeb5b490au64,
0x0467ffaef23fc49eu64,
])),
Fq(FqRepr([
0xc1769e6a7c385f1bu64,
0x79bc930deac01c03u64,
0x5461c75a23ede3b5u64,
0x6e20829e5c230c45u64,
0x828e0f1e772a53cdu64,
0x116aefa749127bffu64,
])),
Fq(FqRepr([
0x101c10bf2744c10au64,
0xbbf18d053a6a3154u64,
0xa0ecf39ef026f602u64,
0xfc009d4996dc5153u64,
0xb9000209d5bd08d3u64,
0x189e5fe4470cd73cu64,
])),
Fq(FqRepr([
0x7ebd546ca1575ed2u64,
0xe47d5a981d081b55u64,
0x57b2b625b6d4ca21u64,
0xb0a1ba04228520ccu64,
0x98738983c2107ff3u64,
0x13dddbc4799d81d6u64,
])),
Fq(FqRepr([
0x09319f2e39834935u64,
0x039e952cbdb05c21u64,
0x55ba77a9a2f76493u64,
0xfd04e3dfc6086467u64,
0xfb95832e7d78742eu64,
0x0ef9c24eccaf5e0eu64,
])),
Fq(FqRepr([
0x760900000002fffdu64,
0xebf4000bc40c0002u64,
0x5f48985753c758bau64,
0x77ce585370525745u64,
0x5c071a97a256ec6du64,
0x15f65ec3fa80e493u64,
])),
];
impl IsogenyMap for G1 {
fn isogeny_map(&mut self) {
eval_iso(self, [&XNUM[..], &XDEN[..], &YNUM[..], &YDEN[..]]);
}
}