@aztec/protocol-contracts 0.46.7 → 0.47.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/artifacts/AuthRegistry.json +1 -1
- package/artifacts/ContractClassRegisterer.json +1 -1
- package/artifacts/ContractInstanceDeployer.json +1 -1
- package/artifacts/GasToken.json +1 -1
- package/artifacts/KeyRegistry.json +1 -1
- package/artifacts/MultiCallEntrypoint.json +1 -1
- package/package.json +4 -4
|
@@ -1 +1 @@
|
|
|
1
|
-
{"transpiled":true,"noir_version":"0.31.0+b209fadb740dc98378d9b984ff31c7d32d9a87be","name":"KeyRegistry","functions":[{"name":"register_ovpk_and_tpk","is_unconstrained":true,"custom_attributes":["aztec(public)"],"abi":{"error_types":{},"parameters":[{"name":"inputs","type":{"fields":[{"name":"args_hash","type":{"kind":"field"}},{"name":"is_static_call","type":{"kind":"boolean"}}],"kind":"struct","path":"aztec::context::inputs::public_context_inputs::PublicContextInputs"},"visibility":"private"},{"name":"address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"},"visibility":"private"},{"name":"partial_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::partial_address::PartialAddress"},"visibility":"private"},{"name":"keys","type":{"fields":[{"name":"npk_m","type":{"fields":[{"name":"x","type":{"kind":"field"}},{"name":"y","type":{"kind":"field"}},{"name":"is_infinite","type":{"kind":"boolean"}}],"kind":"struct","path":"std::embedded_curve_ops::EmbeddedCurvePoint"}},{"name":"ivpk_m","type":{"fields":[{"name":"x","type":{"kind":"field"}},{"name":"y","type":{"kind":"field"}},{"name":"is_infinite","type":{"kind":"boolean"}}],"kind":"struct","path":"std::embedded_curve_ops::EmbeddedCurvePoint"}},{"name":"ovpk_m","type":{"fields":[{"name":"x","type":{"kind":"field"}},{"name":"y","type":{"kind":"field"}},{"name":"is_infinite","type":{"kind":"boolean"}}],"kind":"struct","path":"std::embedded_curve_ops::EmbeddedCurvePoint"}},{"name":"tpk_m","type":{"fields":[{"name":"x","type":{"kind":"field"}},{"name":"y","type":{"kind":"field"}},{"name":"is_infinite","type":{"kind":"boolean"}}],"kind":"struct","path":"std::embedded_curve_ops::EmbeddedCurvePoint"}}],"kind":"struct","path":"aztec::keys::public_keys::PublicKeys"},"visibility":"private"}],"return_type":null},"bytecode":"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","debug_symbols":"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nlCZ1OOeUJnU355Qwds2qMz66KkTKnjbFhVcXIuKQaVBBRfXooKLa1HBxbWoTOri0teqvRTj1iIzqZM7JzPrI3heIDOpo3uBzKSN5QtkJvW7L5AxyDwhM+2pbfUgk1v3Fmd9zMc5mVmflZDScpBJcW2RmfUT+JzMrJ/A52QmbR5eIDNp+/ACmUkbiBfIzOpnzsnM6mdOyZRZW4hzMrO2EOdk8MDPyOCBn5GxWckcPzil2iQzrQc+JTOtBz4lM60HPiUzrQc+JTOrB7blIGOp1enN+nSMF8jM6vTOyczq9M7JGGSekJnV6Z2TmdXpnZOZ1emdk5nV6Z2Twem1yZRZH8TwAhk88DMyeOBnZPDAz8gYZJ6QwQM/I4MHfkYGD/yMDB74GRk88BMysz6n4AUyeOBnZPDAz8jggZ+RMcg8IYMHfkYGD/yMDB74GRk88DMyeOAnZGZ9TsELZPDAz8jggZ+RwQM/I2OQeUIGD/yMDB74GRk88DMyeOBnZPDAT8jM+qSYF8jggZ+RwQM/I4MHfkbGIPOEDB74GZm2B87rsdEn/5jvG5n9H27v/sPy7j+sb/7DJ0+qeOEfhnf/YXz3H6Z3/6G9+w/zu//w3XeOvfvOsXffOfbuOye/+87J775z8rvvnPzuOye/+87J775z8rvvnPzuOye/+87J775z1nffOeu775z13XfO+u47Z333nbO++85Z333nrO++c9Z33znru++c7d13zvbuO2d7952zvfvO2d5952zvvnO2d98527vvnO3dd8727junvPvOKe++c8q775zy7junvPvOKe++c8q775zy7junvPvOKe++c+q775z67junvvvOqe++c+q775z67junvvvOqe++c+q775z65junLsu7/zC8+w/ju/8wvfsP7d1/mN/9h+u7/3B79x+Wd//hu++c8O47J7z7zgnvvnPCu++c8O47J7z7zgnvvnPCu++c8O47J7z7zonvvnPiu++c+O47J777zonvvnPiu++c+O47J777zonvvnPiu++c9O47J737zknvvnPSu++c9O47J737znm3Q67vdsj13Q65vtsh13c75Ppuh1zf7ZDrux1yfbdDru92yPXdDrm+2yHXdzvk+m6HXN/tkOu7HXJ9t0Ou73bI9d0Oub7bIdd3O+T6bodc3+2Q67sdcn23Q67vdsj13Q65vtsh13c75Ppuh1zf7ZDrux1yfbdDru92yPXdDrm+2yHXdzvk+m6HXN/tkOu7HXJ9t0Ou73bI9d0Oub7bIdd3O+T6bodc3+2Q67sdcn23Q67vdsj13Q65vtsh13c75Ppuh1zf7ZDrux1yfbdDru92yPXdDrm+2yHXdzvk+m6HXN/tkOubHXJc3uyQH/8wvPsP47v/ML37D+3df5jf/Yfru/9we/cflnf/4bvvnPDuOye8+84J775zwrvvnPDuOye8+84J775zwrvvnPDuOye8+86J775z4rvvnPjuOye++86J775z4rvvnPjuOye++86J775z4rvvnPTuOye9+85J775z0rvvnPTuOye9+85J775z0rvvnPTuOye9+86xd9859u47x95959i77xx7951j775z7N13jr37zrF33zn27jsnv/vOye++c/K775z87jsnv/vOye++c/K775z87jsnv/vOye++c9Z33znru++c9d13zvruO2d9952zvvvOWd9956zvvnPWd98567vvnO3dd8727jtne/eds737ztnefeds775znnTIa9n/Wixt3/8CbG39Jdrj9vfPFz9qvuO14cdfsP322pD3H/yo9o7XxuZfiz1uju5/Wla//z3cj79Z2y9/G/vyy9iXX4e+/Cf3Foa5/DD25aexL9/Gvvw89uWPfWyVsY+tMvaxVcY+turYx1Yd+9h6cpN3mMsf+9StHU7d8Ej2+zWFuJwMsP/g5eSnxjXtqy3imr9WW4T16+LzyBe/jnzx28gXX0a++DruxYdlGfniw8gXH0e++DTyxQ98woZl4BM2LAOfsGEZ+IQNy8AnbFhGPmHDyCdsGPmEDSOfsGHkEzaMfMKGkU/YMPIJG0Y+YcPIJ2wY+YSNI5+wceQTNo58wsaRT9g48gkbRz5h48gnbBz5hI0jn7Bx5BM2jXzCppFP2DTyCZtGPmHTyCdsGvmETSOfsGnkEzaNfMKmkU9YG/mEtZFPWBv5hLWRT1gb+YS1kU9YG/mEtZFPWBv5hLWRT9g88gmbRz5h88gnbB75hM0jn7B55BM2j3zC5pFP2DzyCZtHPmHXkU/YdeQTdh35hF1HPmHXkU/YdeQTdh35hF1HPmHXkU/YdeQTdhv5hN1GPmG3kU/YbeQTdhv5hN1GPmG3kU/YbeQTdhv5hN1GPmHLyCdsGfmELSOfsGXkE7bHnie/ix/5hC0jn7Bl5BO2jHzClpFP2DryCVtHPmHryCdsHfmEHXmnUxh5p1MYeadTGHmnUxh5p1MYeadTHHmnUxx5p1MceadTHHmnU1wGPmHjyDud4sg7neLIO53iyDud4sg7neLIO53iyDud4sg7neLIO53iyDud4sg7neLIO53iyDud4sg7neLIO53iyDud4sg7neLIO53iyDud4sg7neLIO53iyDud4sg7neLIO53iyDud4sg7neLIO53iyDud4sg7neLIO53iyDud4sg7neLIO53iyDud4sg7neLIO53iyDud4sg7neLIO53iyDud4sg7neLIO53iyDud4sg7neLIO53iyDud4sg7neLIO53iyDud4sg7neLIO53iyDud4sg7neLIO53iyDud4sg7neLIO53iyDud4sg7neLIO53iyDud4sg7neLIO53iyDud4sg7neLIO53iyDud4sg7neLIO53iyDud4sg7neLIO53iyDud4sg7neLIO53iyDud4sg7neLIO53iyDud4sg7neLIO53iyDud4sg7neLIO53iyDud4sg7neLIO53iyDud4sg7neLIO53iyDud4sg7neLIO53iyDud4sg7ndLIO53SyDud0sg7ndLIO53SMvAJm0be6ZRG3umURt7plEbe6ZRG3umURt7plEbe6ZRG3umURt7plEbe6ZRG3umURt7plEbe6ZRG3umURt7plEbe6ZRG3umURt7plEbe6ZRG3umURt7plEbe6ZRG3umURt7plEbe6ZRG3umURt7plEbe6ZRG3umURt7plEbe6ZRG3umURt7plEbe6ZRG3umURt7plEbe6ZRG3umURt7plEbe6ZRG3umURt7plEbe6ZRG3umURt7plEbe6ZRG3umURt7plEbe6ZRG3umURt7plEbe6ZRG3umURt7plEbe6ZRG3umURt7plEbe6ZRG3umURt7plEbe6ZRG3umURt7plEbe6ZRG3umURt7plEbe6ZRG3umURt7plJ7sdNpyOC6+lJNfU1P5+eL67bXtSw95v/hQv14bU2j9XCvb/oPzj5+2v9q+Lj+Pffnr2Je/jX35ZezLr0Nf/pMVScNcfhz78tPYlz/2sVXGPrbK2MdWGfvYKmMfW2XsY+vJ0qRhLr/DqesWVmoc+eLTyBdvI198Hvni15Evfhv54svIF1/HvXhblpEvfuAT1paBT1hbBj5hbRn4hLVl4BPWloFPWFsGPmFtGfiEtWXkEzaMfMKGkU/YMPIJG0Y+YcPIJ2wY+YQNI5+wYeQTNox8woaRT9g48gkbRz5h48gnbBz5hI0jn7Bx5BM2jnzCxpFP2DjyCRtHPmHTyCdsGvmETSOfsGnkEzaNfMKmkU/YNPIJm0Y+YdPIJ2wa+YS1kU9YG/mEtZFPWBv5hLWRT1gb+YS1kU9YG/mEtZFPWBv5hM0jn7B55BM2j3zC5pFP2DzyCZtHPmHzyCdsHvmEzSOfsHnkE3Yd+YRdRz5h15FP2HXkE3Yd+YRdRz5h15FP2HXkE3Yd+YRdRz5ht5FP2G3kE3Yb+YTdRj5he6xN8rv4kU/YbeQTdhv5hN1GPmG3kU/YMvIJW0Y+YcvIJ2wZ+YTtseHJ7+JHPmHLyCdsGfmELSOfsGXkE7aOfMKOvNPJRt7pZCPvdLKRdzrZyDudbOSdTjbyTicbeaeTjbzTKY+80ymPvNMpj7zTKY+80ykvA5+weeSdTnnknU555J1OeeSdTnnknU555J1OeeSdTnnknU555J1OeeSdTnnknU555J1OeeSdTnnknU555J1OeeSdTnnknU555J1OeeSdTnnknU555J1OeeSdTnnknU555J1OeeSdTnnknU555J1OeeSdTnnknU555J1OeeSdTnnknU555J1OeeSdTnnknU555J1OeeSdTnnknU555J1OeeSdTnnknU555J1OeeSdTnnknU555J1OeeSdTnnknU555J1OeeSdTnnknU555J1OeeSdTnnknU555J1OeeSdTnnknU555J1OeeSdTnnknU555J1OeeSdTnnknU555J1OeeSdTnnknU555J1OeeSdTnnknU555J1OeeSdTnnknU555J1OeeSdTnnknU555J1OeeSdTnnknU555J1OeeSdTnnknU555J1OeeSdTnnknU555J1OeeSdTnnknU555J1OeeSdTnnknU555J1OeeSdTnnknU555J1OeeSdTnnknU7ryDud1pF3Oq0j73RaR97ptC4Dn7DryDud1pF3Oq0j73RaR97ptI6802kdeafTOvJOp3XknU7ryDud1pF3Oq0j73RaR97ptI6802kdeafTOvJOp3XknU7ryDud1pF3Oq0j73RaR97ptI6802kdeafTOvJOp3XknU7ryDud1pF3Oq0j73RaR97p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"},{"name":"register_npk_and_ivpk","is_unconstrained":true,"custom_attributes":["aztec(public)"],"abi":{"error_types":{},"parameters":[{"name":"inputs","type":{"fields":[{"name":"args_hash","type":{"kind":"field"}},{"name":"is_static_call","type":{"kind":"boolean"}}],"kind":"struct","path":"aztec::context::inputs::public_context_inputs::PublicContextInputs"},"visibility":"private"},{"name":"address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"},"visibility":"private"},{"name":"partial_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::partial_address::PartialAddress"},"visibility":"private"},{"name":"keys","type":{"fields":[{"name":"npk_m","type":{"fields":[{"name":"x","type":{"kind":"field"}},{"name":"y","type":{"kind":"field"}},{"name":"is_infinite","type":{"kind":"boolean"}}],"kind":"struct","path":"std::embedded_curve_ops::EmbeddedCurvePoint"}},{"name":"ivpk_m","type":{"fields":[{"name":"x","type":{"kind":"field"}},{"name":"y","type":{"kind":"field"}},{"name":"is_infinite","type":{"kind":"boolean"}}],"kind":"struct","path":"std::embedded_curve_ops::EmbeddedCurvePoint"}},{"name":"ovpk_m","type":{"fields":[{"name":"x","type":{"kind":"field"}},{"name":"y","type":{"kind":"field"}},{"name":"is_infinite","type":{"kind":"boolean"}}],"kind":"struct","path":"std::embedded_curve_ops::EmbeddedCurvePoint"}},{"name":"tpk_m","type":{"fields":[{"name":"x","type":{"kind":"field"}},{"name":"y","type":{"kind":"field"}},{"name":"is_infinite","type":{"kind":"boolean"}}],"kind":"struct","path":"std::embedded_curve_ops::EmbeddedCurvePoint"}}],"kind":"struct","path":"aztec::keys::public_keys::PublicKeys"},"visibility":"private"}],"return_type":null},"bytecode":"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","debug_symbols":"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zz2hMqnHPaEyqb89oYK3bVCZ9dFTJ1Twti0quLgWFYNKgwourkUFF9eigotrUZnUxaXHqr0U49YiM6mTOycz6yN4XiAzqaN7gcykjeULZCb1uy+QMcg8ITPtqW31IJNb9xZnfczHOZlZn5WQ0nKQSXFtkZn1E/iczKyfwOdkJm0eXiAzafvwAplJG4gXyMzqZ87JzOpnTsmUWVuIczKzthDnZPDAz8jggZ+RsVnJHD84pdokM60HPiUzrQc+JTOtBz4lM60HPiUzqwe25SBjqdXpzfp0jBfIzOr0zsnM6vTOyRhknpCZ1emdk5nV6Z2TmdXpnZOZ1emdk8HptcmUWR/E8AIZPPAzMnjgZ2TwwM/IGGSekMEDPyODB35GBg/8jAwe+BkZPPATMrM+p+AFMnjgZ2TwwM/I4IGfkTHIPCGDB35GBg/8jAwe+BkZPPAzMnjgJ2RmfU7BC2TwwM/I4IGfkcEDPyNjkHlCBg/8jAwe+BkZPPAzMnjgZ2TwwE/IzPqkmBfI4IGfkcEDPyODB35GxiDzhAwe+BmZtgfewv7v4mb2C5n9H27v/sPy7j+sb/7DJ0+qeOEfhnf/YXz3H6Z3/6G9+w/zu//w3XeOvfvOsXffOfbuOye/+87J775z8rvvnPzuOye/+87J775z8rvvnPzuOye/+87J775z1nffOeu775z13XfO+u47Z333nbO++85Z333nrO++c9Z33znru++c7d13zvbuO2d7952zvfvO2d5952zvvnO2d98527vvnO3dd8727junvPvOKe++c8q775zy7junvPvOKe++c8q775zy7junvPvOKe++c+q775z67junvvvOqe++c+q775z67junvvvOqe++c+q775z65junLsu7/zC8+w/ju/8wvfsP7d1/mN/9h+u7/3B79x+Wd//hu++c8O47J7z7zgnvvnPCu++c8O47J7z7zgnvvnPCu++c8O47J7z7zonvvnPiu++c+O47J777zonvvnPiu++c+O47J777zonvvnPiu++c9O47J737zknvvnPSu++c9O47J737znm3Q67vdsj13Q65vtsh13c75Ppuh1zf7ZDrux1yfbdDru92yPXdDrm+2yHXdzvk+m6HXN/tkOu7HXJ9t0Ou73bI9d0Oub7bIdd3O+T6bodc3+2Q67sdcn23Q67vdsj13Q65vtsh13c75Ppuh1zf7ZDrux1yfbdDru92yPXdDrm+2yHXdzvk+m6HXN/tkOu7HXJ9t0Ou73bI9d0Oub7bIdd3O+T6bodc3+2Q67sdcn23Q67vdsj13Q65vtsh13c75Ppuh1zf7ZDrux1yfbdDru92yPXdDrm+2yHXdzvk+m6HXN/tkOubHXJc3uyQv/5hePcfxnf/YXr3H9q7/zC/+w/Xd//h9u4/LO/+w3ffOeHdd054950T3n3nhHffOeHdd054950T3n3nhHffOeHdd054950T333nxHffOfHdd058950T333nxHffOfHdd058950T333nxHffOendd056952T3n3npHffOendd056952T3n3npHffOendd056951j775z7N13jr37zrF33zn27jvH3n3n2LvvHHv3nWPvvnPs3XdOfvedk9995+R33zn53XdOfvedk9995+R33zn53XdOfvedk99956zvvnPWd98567vvnPXdd8767jtnffeds777zlnffees775z1nffOdu775zt3XfO9u47Z3v3nbO9+87Z3n3nPOmQSwr7Pyzr9ss/bPxtWSo/X/xV8x2vDba2/mot73+GFr79hVts/rXY183R/U/Lvu7oPZ5s9ONv1vbL38a+/DL25dehL//JvYVhLj+Mfflp7Mu3sS8/j335Yx9bZexjq4x9bJWxj6069rFVxz62ntzkHebyxz51a4dTN3wl+/2aQlxOBtgvfzn5qXFNR9Za82O1RVgfF59Hvvh15IvfRr74MvLF13EvPizLyBcfRr74OPLFp5EvfuATNiwDn7BhGfiEDcvAJ2xYBj5hwzLyCRtGPmHDyCdsGPmEDSOfsGHkEzaMfMKGkU/YMPIJG0Y+YcPIJ2wc+YSNI5+wceQTNo58wsaRT9g48gkbRz5h48gnbBz5hI0jn7Bp5BM2jXzCppFP2DTyCZtGPmHTyCdsGvmETSOfsGnkEzaNfMLayCesjXzC2sgnrI18wtrIJ6yNfMLayCesjXzC2sgnrI18wuaRT9g88gmbRz5h88gnbB75hM0jn7B55BM2j3zC5pFP2DzyCbuOfMKuI5+w68gn7DryCbuOfMKuI5+w68gn7DryCbuOfMKuI5+w28gn7DbyCbuNfMJuI5+w28gn7DbyCbuNfMJuI5+w28gn7DbyCVtGPmHLyCdsGfmELSOfsD32PPld/MgnbBn5hC0jn7Bl5BO2jHzC1pFP2DryCVtHPmHryCfsyDudwsg7ncLIO53CyDudwsg7ncLIO53iyDud4sg7neLIO53iyDud4jLwCRtH3ukUR97pFEfe6RRH3ukUR97pFEfe6RRH3ukUR97pFEfe6RRH3ukUR97pFEfe6RRH3ukUR97pFEfe6RRH3ukUR97pFEfe6RRH3ukUR97pFEfe6RRH3ukUR97pFEfe6RRH3ukUR97pFEfe6RRH3ukUR97pFEfe6RRH3ukUR97pFEfe6RRH3ukUR97pFEfe6RRH3ukUR97pFEfe6RRH3ukUR97pFEfe6RRH3ukUR97pFEfe6RRH3ukUR97pFEfe6RRH3ukUR97pFEfe6RRH3ukUR97pFEfe6RRH3ukUR97pFEfe6RRH3ukUR97pFEfe6RRH3ukUR97pFEfe6RRH3ukUR97pFEfe6RRH3ukUR97pFEfe6RRH3ukUR97pFEfe6RRH3ukUR97pFEfe6RRH3ukUR97pFEfe6RRH3ukUR97pFEfe6RRH3ukUR97pFEfe6RRH3ukUR97pFEfe6RRH3ukUR97pFEfe6RRH3ukUR97pFEfe6RRH3ukUR97plEbe6ZRG3umURt7plEbe6ZSWgU/YNPJOpzTyTqc08k6nNPJOpzTyTqc08k6nNPJOpzTyTqc08k6nNPJOpzTyTqc08k6nNPJOpzTyTqc08k6nNPJOpzTyTqc08k6nNPJOpzTyTqc08k6nNPJOpzTyTqc08k6nNPJOpzTyTqc08k6nNPJOpzTyTqc08k6nNPJOpzTyTqc08k6nNPJOpzTyTqc08k6nNPJOpzTyTqc08k6nNPJOpzTyTqc08k6nNPJOpzTyTqc08k6nNPJOpzTyTqc08k6nNPJOpzTyTqc08k6nNPJOpzTyTqc08k6nNPJOpzTyTqc08k6nNPJOpzTyTqc08k6nNPJOpzTyTqc08k6nNPJOpzTyTqc08k6nNPJOpzTyTqc08k6n9GSnU1323xFrWk9+TU3l54trKSeXHvL+g0N9vDam0Pq5Vrb9B2d7XEW0x+XnsS9/Hfvyt7Evv4x9+XXoy3+yImmYy49jX34a+/LHPrbK2MdWGfvYKmMfW2XsY6uMfWw9WZo0zOV3OHXdwkqNI198GvnibeSLzyNf/DryxW8jX3wZ+eLruBdvyzLyxQ98wtoy8Alry8An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jLzTqYy806mMvNOpjLzTqYy806mMvNOpjLzTqYy806mMvNOpjLzTqYy806mMvNOpjLzTqYy806mMvNOpjLzTqYy806mMvNOpjLzTqYy806mMvNOpjLzTqYy806mMvNOpjLzTqYy806mMvNOpjLzTqYy806mMvNOpjLzTqYy806mMvNOpjLzTqYy806mMvNOpjLzTqYy806mMvNOpjLzTqYy806mMvNOpjLzTqYy806mOvNOpjrzTqY6806mOvNOpLgOfsHXknU515J1OdeSdTnXknU515J1OdeSdTnXknU515J1OdeSdTnXknU515J1OdeSdTnXknU515J1OdeSdTnXknU515J1OdeSdTnXknU515J1OdeSdTnXknU515J1OdeSdTnXknU515J1OdeSdTnXknU515J1OdeSdTnXknU515J1OdeSdTnXknU515J1OdeSdTnXknU515J1OdeSdTnXknU515J1OdeSdTnXknU515J1OdeSdTnXknU515J1Otb3TKS0Wjovfysmv+bKmP19cSzm59JD3iw/18dqYQuvnWtn2H5x//LT91fa4/DT25dvYl5/Hvvx17Mvfxr78OvTlt5ckjXP5YezLH/vYWsc+ttaxj6117GNrHfvYWsc+ttpLk8a5/A6nrltY2ZaRLz6MfPFx5ItPI1+8jXzxeeSLX0e++G3kiy8jX/zIJ2wZ+YQtI5+wZeQTtox8wpaRT9gy8glbRj5hy8gnbBn5hC0jn7B15BO2jnzC1pFP2DryCVtHPmHryCdsHfmErSOfsHXkE7aOe8KmZRn3hP26+HFP2K+LH/eE/br4cU/Yr4sf94T9uvhxT9ivix/3hP3xvcSRL37cE/br4kc+YcPIJ2wY+YQNI5+wYeQTNox8woaRT9gw8gkbRj5hw8gnbBj5hI0jn7Bx5BM2jnzCxpFP2DjyCRtHPmHjyCdsHPmEjSOfsHHkEzaNfMKmkU/YNPIJm0Y+YdPIJ2wa+YRNI5+waeQTNo18wqaRT1gb+YS1kU9YG/mEtZFPWBv5hLWRT1gb+YS1kU9YG/mEtZFP2DzyCZtHPmHzyCdsHvmE7bEyye/iRz5h88gnbB75hM0jn7B55BN2HfmEXUc+YdeRT9h15BO2x3Ynv4sf+YRdRz5h15FP2HXkE3bgnU5fVzbyCTvwTqevKxv5hB14p9PXlY18wg680+nr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"},{"name":"compute_note_hash_and_optionally_a_nullifier","is_unconstrained":true,"custom_attributes":[],"abi":{"error_types":{},"parameters":[{"name":"contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"},"visibility":"private"},{"name":"nonce","type":{"kind":"field"},"visibility":"private"},{"name":"storage_slot","type":{"kind":"field"},"visibility":"private"},{"name":"note_type_id","type":{"kind":"field"},"visibility":"private"},{"name":"compute_nullifier","type":{"kind":"boolean"},"visibility":"private"},{"name":"serialized_note","type":{"kind":"array","length":0,"type":{"kind":"field"}},"visibility":"private"}],"return_type":{"abi_type":{"kind":"array","length":4,"type":{"kind":"field"}},"visibility":"public"}},"bytecode":"H4sIAAAAAAAA/+2b3U7bQBCF18GhBoOb2HGckEAIBaTehRSScMfLtM/d60p9haqss6Mclmm0UcdLVool5LG9O+ebsz+EyERqfSSvP5GJ2+Z8rN4f1ObFnGf/dzwI5po1yRkFwtkKhPMoEM5YkDNiOPU5NrFed3rNfVLr9fjuIXbWA30Ez9W2RLZqYgJ8eC1V6Wr2fAzJEVwZ8Ng8o7PGSc0zBEtNkXUbuEeFtuAe6RzBPdrBSCcxpgjX+5RskOXyvs4+XcOJyUXcKcT4bAzWxQ3V2Jav8bGRMXn1rqExqVcx+d42uRO4pjE4NbHgb44H1I7Mz6k1F2KIR9CW2pEfLWDVx7narJfTLf1iq18GbY6hn7230DWNtfaqa2J9btOeAPkb8HCm86byed+MTWx5l0JNGXgioz1f6fxn6u0RWdfXEGfAcy7Os1578nWux+4zsMvkfXrUXnUsr84srzJogwydBvyLQJdy03WH0ZbzYrHS2l0HL7oMT9ezF11GW9CLZ62dO3iRMzy5Zy9yRlvOi+U3rV04eFEwPIVnLwpGW86Lef0ZoOfgRY/h6Xn2osdoC66Rel6UDl6UDE/p2YuS0Rb04ofW7jt40Wd4+p696DPagl5819qVgxcVw1N59qJitAX3zvrzxcDBiwHDM/DsxYDRFvRirrWHDl4MGZ6hZy+GjLbgGqm1Lxy8uGB4Ljx7QXq7MvcCZK4CZC72gDmxYhntRb1/jhy8GDE8I89e4HcuuzCXe8CcWLGM9uJJa48dvBgzPGPPXpDersx5gMxFgMz9AJnLAJmrAJn3YT4nViyjvaz30EsHLy4ZnkvPXpDersx5gMyjAJmLPWBOrFhGe1l/N3fl4MUVw3Pl2QvS25V5ECBzdw+YEyuW0V4utPbEwYsJwzPx7AXp7co8DJC5CpB5FCBzESBzP0DmMkDmwxr0w5zvATO+e/S7UZ75c2rxkGfKYlQWYwpxBozU9kXJva+SWbWT1lTcj/X42POFrqeNas9XOu+XBmrSeW/l89Z/I9yZXPQO3y3j1b2JI+FxuoO8EejQ/RjiX9CW2pEftB8Qu36X68bE91v6Tax+GbS5gX63Vj+6prHW3v00cVNzy2Ved9RmLX8Fngb2wUd8J1eBV8pipGMCPNfyPA8N1TnDd/j+KNm1N7W8OrG8yqAN7tEftW8emA/M/2LGzxMncA956F7LqgX/v2EKOf4CARQXTpY1AAA=","debug_symbols":"ndpRattAGIXRveg5FN9f0oyUrZRSnMQpBmOH2CkUk73XbukCet48I9+37+kw1+Fl9/Tx4/v++Ho6D49fr8Ph9Ly97E/H2+k6bL7U8uf2/LY93i/Ol+37ZXgcW38YdseX269enw/D6/6wu9+On98e7qMVRuNGRpFRyWiU0SSjWUZNRl1GUsQoRUxSxCRFTFLEJEVMUsQkRUxSxCRFTFLEJEXMUsQsRcxSxCxFzFLELEXMUsQsRcxSxCxFNCmiSRFNimhSRJMimhTRpIgmRTQpokkRXYroUkSXIroU0aWILkV0KaJLEV2K6FLEIkUsUsQiRSxSxCJFLFLEIkUsUsQiRSxSxCpFrFLEKkWsUsQqRaxSxCpFrFLEKkWsUkQ2G1qFVkWrkVYTrWZaNVp1Wi20ojZCbYTaCLURaiPURqiNUBuhNkJthNooaqOojaI2itooaqOojaI2itog0AyJZog0Q6YZQs2QaoZYM+SaIdgMyWaINkO2GcLNkG6GeDPkmyHgDAlniDhDxhlCzpByhpgz5Jwh6AxJZ4g6Q9YZws6Qdoa4M+SdIfAMiWeIPEPmGULPkHqG2DPkniH4DMlniD5D9hnCz5B+hvgz5J8hAA0JaIhAQwYaQtCQgoYYNOSgIQgNSWiIQkMWGsLQkIaGODTkoSEQDYloiERDJhpC0ZCKhlg05KJFLlrkokUuWuSiRS5a5KJFLlrkokUuWuSiRS5a5KJFLlrkokUuWuSiRS5a5KJFLlrkokUuWuSiRS5a5KJFLlrkokUuWuSiZQ89yUWLXLTIRYtctMhFi1y0yEXrv130dvq5fd9vnw67+9ve+8eP4/O/p7634+XX298vt//+Bg=="},{"name":"rotate_npk_m","is_unconstrained":true,"custom_attributes":["aztec(public)"],"abi":{"error_types":{},"parameters":[{"name":"inputs","type":{"fields":[{"name":"args_hash","type":{"kind":"field"}},{"name":"is_static_call","type":{"kind":"boolean"}}],"kind":"struct","path":"aztec::context::inputs::public_context_inputs::PublicContextInputs"},"visibility":"private"},{"name":"address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"},"visibility":"private"},{"name":"new_npk_m","type":{"fields":[{"name":"x","type":{"kind":"field"}},{"name":"y","type":{"kind":"field"}},{"name":"is_infinite","type":{"kind":"boolean"}}],"kind":"struct","path":"std::embedded_curve_ops::EmbeddedCurvePoint"},"visibility":"private"},{"name":"nonce","type":{"kind":"field"},"visibility":"private"}],"return_type":null},"bytecode":"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","debug_symbols":"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cvJb48N9fT80riU9f+u6n3t3e+7rsjg+9+D43KPjc0+Ozz07Pvfi+NxXx+futzetS3N87o77anDcV4Pjvhoc99XguK8Gx301OO6rwXFfDY77anDcV4Pjvhod99XouK9Gx301Ou6r0XFfjY77anTcV6Pjvhod99XouK8mx301Oe6ryXFfTY77anLcV5Pjvpoc99XkuK8mx301Oe6r2XFfzY77anbcV7Pjvpod99XsuK9mx301O+6r2XFfzY77anHcV4vjvloc99XiuK8Wx321OO6rxXFfLY77anHcV4vjvro67qur4766Ou6rq+O+ujruq6vjvro67qur4766Ou6rq+O+Wh331eq4r1bHfbU67qvVcV+tjvtqddxXq+O+Wh331eq4rzbHfbU57qvNcV9tjvvqFfuAzM7dcV9tjvtqc9xXm+O+2hz31e64r3bHfbU77qvdcV+9YnOR2bk77qvdcV91vLNo7Y77quN9S9XxvqXqeN9SdbxvqTret1QXv321Ot63VB3vW6qO9y1Vx/uWquN9S9XxvqXqeN9SdbxvqTret1Qd71uqjvctVcf7lqrjfUvV8b6l6njfUnW8b6k63rdUHe9bqo73LVXH+5aq431L1fG+pep431J1vG+pOt63VB3vW6qO9y1Vx/uWquN9S9XxvqXqeN9SdbxvqTret1Qd71uqjvctVcf7lqrjfUvV8b6l6njfUnW8b6k63rdUHe9bqo73LVXH+5aq431L1fG+pep431J1vG+pOt63VB3vW6qO9y1Vx/uWquN9S9XxvqXqeN9SdbxvqTret1Qd71uqjvctVcf7lqrjfUvV8b6l6njfUnW8b6k63rdUHe9bqo73LVXH+5aq431L1fG+pep431J1vG+pOt63VB3vW6qO9y1Vx/uWquN9S9XxvqXqeN9SdbxvqTret1Qd71uqjvctVcf7lqrjfUvV8b6l6njfUnW8b6k63rdUHe9bqo73LVXH+5aq431L1fG+pep431JzvG+pOd631BzvW2qO9y21xW9fbY73LTXH+5aa431LzfG+peZ431JzvG+pOd631BzvW2qO9y01x/uWmuN9S83xvqXmeN9Sc7xvqTnet9Qc71tqjvctNcf7lprjfUvN8b6l5njfUnO8b6k53rfUHO9bao73LTXH+5aa431LzfG+peZ431JzvG+pOd631BzvW2qO9y01x/uWmuN9S83xvqXmeN9Sc7xvqTnet9Qc71tqjvctNcf7lprjfUvN8b6l5njfUnO8b6k53rfUHO9bao73LTXH+5aa431LzfG+peZ431JzvG+pOd631BzvW2qO9y01x/uWmuN9S83xvqXmeN9Sc7xvqTnet9Qc71tqjvctNcf7lprjfUvN8b6l5njfUnO8b6k53rfUHO9bao73LTXH+5aa431LzfG+peZ431JzvG+pOd631BzvW2qO9y01x/uWmuN9S83xvqXmeN9Sc7xvqb3Yt1RL2M+91ZO/0lP7fnBv7eTMQ9nOPfTnsTGFo9+bW91+cfn227aj83720fXZJ9dnn12ffXF99qvrs2+uz747Pvv+YoeRl7P33K364rlb9cVzt+qL527VF8/dqi+eu1V/sdHIy9lf0GuNvElfut9zD4vjcw+Ozz06Pvfk+Nyz43Mvjs99dXzu1fG5O+6rwXFfjY77anTcV6Pjvhod99XouK9Gx301Ou6r0XFfjY77anTcV5Pjvpoc99XkuK8mx301Oe6ryXFfTY77anLcV5Pjvpoc99XsuK9mx301O+6r2XFfzY77anbcV7Pjvpod99XsuK9mx321OO6rxXFfLY77anHcV4vjvloc99XiuK8Wx321OO6rxXFfXR331dVxX10d99XVcV9dHffV1XFfXR331dVxX10d99XVcV+tjvtqddxXq+O+Wh331eq4r1bHfbU67qvVcV+tjvtqddxXm+O+2hz31ea4rzbHfbU57qvNcV9tjvtqc9xXm+O+2hz31e64r3bHfbU77qvdcV+9YpuR2bk77qvdcV/tjvtqd9xXu9++GpbFb2N9nLzfzvo4eb+t9XHyfnvr4+T9NtfHyfvtro+T99teHyfvt78+Tt5vg32cvOcO63j10uPkPXdYx8uXHifvucM6Xr/0OHnPHdbxAqbHyXvusI5XMD1O3nOHdbyE6XHynjus4zVMj5P33GEdL2J6nLznDut4FdPj5D13WMfLmB4n77nDOl7H9Dh5zx3W8UKmx8l77rCOVzI9Tt5zh3W8lOlx8p47rOO1TI+T99xhHS9mepy85w7reDXT4+Q9d1jHy5keJ++5wzpez/Q4ec8d1vGCpsfJe+6wjlc0PU7ec4d1vKTpcfKeO6zjNU2Pk/fcYR0vanqcvOcO63hV0+PkPXdYx8uaHn/Wc4d1vK7p25/1fPKeO6zjjU2PP+u5wzre2fT4s547rOOtTWFxvLbpcfKeO6zjxU2Pk/fcYR2vbnqcvOcO63h50+PkPXdYx+ubHifvucM6XuD0OHnPHdbxCqfHyXvusI6XOD1O3nOHdbzG6XHynjus40VOj5P33GEdr3J6nLznDut4mdPj5D13WMfrnB4n77nDOl7o9Dh5zx3W8Uqnx8k77rDB806n4HmnU/C80yl43ukUFscdNnje6RQ873QKnnc6Bc87nYLnnU7B806n4HmnU/C80yl43ukUPO90Cp53OgXPO52C551OwfNOp+B5p1PwvNMpeN7pFDzvdAqedzoFzzudguedTsHzTqfgeadT8LzTKXje6RQ873QKnnc6Bc87nYLnnU7B806n4HmnU/C80yl43ukUPO90Cp53OgXPO52C551OwfNOp+B5p1PwvNMpeN7pFDzvdAqedzoFzzudguedTsHzTqfgeadT8LzTKXje6RQ873QKnnc6Bc87nYLnnU7B806n4HmnU/C80yl43ukUPO90Cp53OgXPO52C551OwfNOp+B5p1PwvNMpeN7pFDzvdAqedzoFzzudguedTsHzTqfgeadT8LzTKXje6RQ873QKnnc6hVc7nXrdTqfldvJn1rX170evNfz4Z34+usW0nX+L63pydGp7CanVs6N7btt595KfR8f8LDjMVnCcreA0W8F5toLLbAWvsxVcZyu4zVZwn6zgPtuk1WebtPpsk1afbdLqs01a3WDSWvKz4HpydEl7CSXHuB/dj2xziXmjU2I9ObiVsPn3VnL9evDGpsLmJZsGm5dsOmxesInLApuXbAJsXrKJ6mxqfLJJJ+WuZf/V6xq//Oqw15smqzdPVq/83HVxvetk9crPjhfXKz8P/kq9ddnbUV36Yb3yM9619Qb5ue3ieuVnsYvrHWq+eqPeoearN+rNk9U71HxVS9/r/eFXP+sdar56o96h5qs36h1rvjqvd6z56rTeONZ8dV7vWPPVeb1jzVepPuttP9T789Exp/b96JjL8yONMdWdzljT2NV0MnT+Dp3fPOltf2a958/Ue/5Mu+fP9Fv+TFru+TPhnj8T7/kz6Z4/k+/5M/fcBdI9d4F0xV2g5rj/mdMPlrTUdkudw9kdP/X94V7q7R//GEpMbbaC+2QF52W2gsNsBcfZCk6zFZxnK7jMVvA6W8GzTVp5tkkr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"}],"outputs":{"globals":{"storage":[{"fields":[{"name":"npk_m_x_registry","value":{"fields":[{"name":"slot","value":{"kind":"integer","sign":false,"value":"0000000000000000000000000000000000000000000000000000000000000001"}}],"kind":"struct"}},{"name":"npk_m_y_registry","value":{"fields":[{"name":"slot","value":{"kind":"integer","sign":false,"value":"0000000000000000000000000000000000000000000000000000000000000002"}}],"kind":"struct"}},{"name":"ivpk_m_x_registry","value":{"fields":[{"name":"slot","value":{"kind":"integer","sign":false,"value":"0000000000000000000000000000000000000000000000000000000000000003"}}],"kind":"struct"}},{"name":"ivpk_m_y_registry","value":{"fields":[{"name":"slot","value":{"kind":"integer","sign":false,"value":"0000000000000000000000000000000000000000000000000000000000000004"}}],"kind":"struct"}},{"name":"ovpk_m_x_registry","value":{"fields":[{"name":"slot","value":{"kind":"integer","sign":false,"value":"0000000000000000000000000000000000000000000000000000000000000005"}}],"kind":"struct"}},{"name":"ovpk_m_y_registry","value":{"fields":[{"name":"slot","value":{"kind":"integer","sign":false,"value":"0000000000000000000000000000000000000000000000000000000000000006"}}],"kind":"struct"}},{"name":"tpk_m_x_registry","value":{"fields":[{"name":"slot","value":{"kind":"integer","sign":false,"value":"0000000000000000000000000000000000000000000000000000000000000007"}}],"kind":"struct"}},{"name":"tpk_m_y_registry","value":{"fields":[{"name":"slot","value":{"kind":"integer","sign":false,"value":"0000000000000000000000000000000000000000000000000000000000000008"}}],"kind":"struct"}}],"kind":"struct"}]},"structs":{"functions":[{"fields":[{"name":"parameters","type":{"fields":[{"name":"address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"partial_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::partial_address::PartialAddress"}},{"name":"keys","type":{"fields":[{"name":"npk_m","type":{"fields":[{"name":"x","type":{"kind":"field"}},{"name":"y","type":{"kind":"field"}},{"name":"is_infinite","type":{"kind":"boolean"}}],"kind":"struct","path":"std::embedded_curve_ops::EmbeddedCurvePoint"}},{"name":"ivpk_m","type":{"fields":[{"name":"x","type":{"kind":"field"}},{"name":"y","type":{"kind":"field"}},{"name":"is_infinite","type":{"kind":"boolean"}}],"kind":"struct","path":"std::embedded_curve_ops::EmbeddedCurvePoint"}},{"name":"ovpk_m","type":{"fields":[{"name":"x","type":{"kind":"field"}},{"name":"y","type":{"kind":"field"}},{"name":"is_infinite","type":{"kind":"boolean"}}],"kind":"struct","path":"std::embedded_curve_ops::EmbeddedCurvePoint"}},{"name":"tpk_m","type":{"fields":[{"name":"x","type":{"kind":"field"}},{"name":"y","type":{"kind":"field"}},{"name":"is_infinite","type":{"kind":"boolean"}}],"kind":"struct","path":"std::embedded_curve_ops::EmbeddedCurvePoint"}}],"kind":"struct","path":"aztec::keys::public_keys::PublicKeys"}}],"kind":"struct","path":"KeyRegistry::register_ovpk_and_tpk_parameters"}}],"kind":"struct","path":"KeyRegistry::register_ovpk_and_tpk_abi"},{"fields":[{"name":"parameters","type":{"fields":[{"name":"address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"new_npk_m","type":{"fields":[{"name":"x","type":{"kind":"field"}},{"name":"y","type":{"kind":"field"}},{"name":"is_infinite","type":{"kind":"boolean"}}],"kind":"struct","path":"std::embedded_curve_ops::EmbeddedCurvePoint"}},{"name":"nonce","type":{"kind":"field"}}],"kind":"struct","path":"KeyRegistry::rotate_npk_m_parameters"}}],"kind":"struct","path":"KeyRegistry::rotate_npk_m_abi"},{"fields":[{"name":"parameters","type":{"fields":[{"name":"address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"partial_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::partial_address::PartialAddress"}},{"name":"keys","type":{"fields":[{"name":"npk_m","type":{"fields":[{"name":"x","type":{"kind":"field"}},{"name":"y","type":{"kind":"field"}},{"name":"is_infinite","type":{"kind":"boolean"}}],"kind":"struct","path":"std::embedded_curve_ops::EmbeddedCurvePoint"}},{"name":"ivpk_m","type":{"fields":[{"name":"x","type":{"kind":"field"}},{"name":"y","type":{"kind":"field"}},{"name":"is_infinite","type":{"kind":"boolean"}}],"kind":"struct","path":"std::embedded_curve_ops::EmbeddedCurvePoint"}},{"name":"ovpk_m","type":{"fields":[{"name":"x","type":{"kind":"field"}},{"name":"y","type":{"kind":"field"}},{"name":"is_infinite","type":{"kind":"boolean"}}],"kind":"struct","path":"std::embedded_curve_ops::EmbeddedCurvePoint"}},{"name":"tpk_m","type":{"fields":[{"name":"x","type":{"kind":"field"}},{"name":"y","type":{"kind":"field"}},{"name":"is_infinite","type":{"kind":"boolean"}}],"kind":"struct","path":"std::embedded_curve_ops::EmbeddedCurvePoint"}}],"kind":"struct","path":"aztec::keys::public_keys::PublicKeys"}}],"kind":"struct","path":"KeyRegistry::register_npk_and_ivpk_parameters"}}],"kind":"struct","path":"KeyRegistry::register_npk_and_ivpk_abi"}]}},"file_map":{"146":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/state_vars/map.nr","source":"use dep::protocol_types::{hash::pedersen_hash, storage::map::derive_storage_slot_in_map, traits::ToField};\nuse crate::state_vars::storage::Storage;\n\n// docs:start:map\nstruct Map<K, V, Context> {\n context: Context,\n storage_slot: Field,\n state_var_constructor: fn(Context, Field) -> V,\n}\n// docs:end:map\n\nimpl<K, T, Context> Storage<T> for Map<K, T, Context> {}\n\nimpl<K, V, Context> Map<K, V, Context> {\n // docs:start:new\n pub fn new(\n context: Context,\n storage_slot: Field,\n state_var_constructor: fn(Context, Field) -> V\n ) -> Self {\n assert(storage_slot != 0, \"Storage slot 0 not allowed. Storage slots must start from 1.\");\n Map { context, storage_slot, state_var_constructor }\n }\n // docs:end:new\n\n // docs:start:at\n pub fn at(self, key: K) -> V where K: ToField {\n // TODO(#1204): use a generator index for the storage slot\n let derived_storage_slot = derive_storage_slot_in_map(self.storage_slot, key);\n\n let state_var_constructor = self.state_var_constructor;\n state_var_constructor(self.context, derived_storage_slot)\n }\n // docs:end:at\n}\n"},"157":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/state_vars/shared_mutable/scheduled_delay_change.nr","source":"use dep::protocol_types::traits::{Serialize, Deserialize, FromField, ToField};\nuse std::cmp::min;\n\nmod test;\n\n// This data structure is used by SharedMutable to store the minimum delay with which a ScheduledValueChange object can\n// schedule a change.\n// This delay is initally equal to INITIAL_DELAY, and can be safely mutated to any other value over time. This mutation \n// is performed via `schedule_change` in order to satisfy ScheduleValueChange constraints: if e.g. we allowed for the \n// delay to be decreased immediately then it'd be possible for the state variable to schedule a value change with a \n// reduced delay, invalidating prior private reads.\nstruct ScheduledDelayChange<INITIAL_DELAY> {\n // Both pre and post are stored in public storage, so by default they are zeroed. By wrapping them in an Option, \n // they default to Option::none(), which we detect and replace with INITIAL_DELAY. The end result is that a\n // ScheduledDelayChange that has not been initialized has a delay equal to INITIAL_DELAY, which is the desired\n // effect. Once initialized, the Option will never be none again.\n pre: Option<u32>,\n post: Option<u32>,\n // Block at which `post` value is used instead of `pre`\n block_of_change: u32,\n // The _dummy variable forces INITIAL_DELAY to be interpreted as a numeric value. This is a workaround to\n // https://github.com/noir-lang/noir/issues/4633. Remove once resolved.\n _dummy: [Field; INITIAL_DELAY],\n}\n\nimpl<INITIAL_DELAY> ScheduledDelayChange<INITIAL_DELAY> {\n pub fn new(pre: Option<u32>, post: Option<u32>, block_of_change: u32) -> Self {\n Self { pre, post, block_of_change, _dummy: [0; INITIAL_DELAY] }\n }\n\n /// Returns the current value of the delay stored in the data structure.\n /// This function only returns a meaningful value when called in public with the current block number - for\n /// historical private reads use `get_effective_minimum_delay_at` instead.\n pub fn get_current(self, current_block_number: u32) -> u32 {\n // The post value becomes the current one at the block of change, so any transaction that is included in the\n // block of change will use the post value.\n\n if current_block_number < self.block_of_change {\n self.pre.unwrap_or(INITIAL_DELAY)\n } else {\n self.post.unwrap_or(INITIAL_DELAY)\n }\n }\n\n /// Returns the scheduled change, i.e. the post-change delay and the block at which it will become the current\n /// delay. Note that this block may be in the past if the change has already taken place.\n /// Additionally, further changes might be later scheduled, potentially canceling the one returned by this function.\n pub fn get_scheduled(self) -> (u32, u32) {\n (self.post.unwrap_or(INITIAL_DELAY), self.block_of_change)\n }\n\n /// Mutates the delay change by scheduling a change at the current block number. This function is only meaningful\n /// when called in public with the current block number.\n /// The block at which the new delay will become effective is determined automatically:\n /// - when increasing the delay, the change is effective immediately\n /// - when reducing the delay, the change will take effect after a delay equal to the difference between old and\n /// new delay. For example, if reducing from 3 days to 1 day, the reduction will be scheduled to happen after 2\n /// days.\n pub fn schedule_change(&mut self, new: u32, current_block_number: u32) {\n let current = self.get_current(current_block_number);\n\n // When changing the delay value we must ensure that it is not possible to produce a value change with a delay\n // shorter than the current one.\n let blocks_until_change = if new > current {\n // Increasing the delay value can therefore be done immediately: this does not invalidate prior contraints\n // about how quickly a value might be changed (indeed it strengthens them).\n 0\n } else {\n // Decreasing the delay requires waiting for the difference between current and new delay in order to ensure\n // that overall the current delay is respected.\n //\n // current delay earliest value block of change\n // block block of change if delay remained unchanged\n // =======N=========================|================================X=================>\n // ^ ^ ^\n // |-------------------------|--------------------------------|\n // | blocks until change new delay |\n // ------------------------------------------------------------\n // current delay\n current - new\n };\n\n self.pre = Option::some(current);\n self.post = Option::some(new);\n self.block_of_change = current_block_number + blocks_until_change;\n }\n\n /// Returns the minimum delay before a value might mutate due to a scheduled change, from the perspective of some\n /// historical block number. It only returns a meaningful value when called in private with historical blocks. This \n /// function can be used alongside `ScheduledValueChange.get_block_horizon` to properly constrain the\n /// `max_block_number` transaction property when reading mutable shared state.\n /// This value typically equals the current delay at the block following the historical one (the earliest one in\n /// which a value change could be scheduled), but it also considers scenarios in which a delay reduction is \n /// scheduled to happen in the near future, resulting in a way to schedule a change with an overall delay lower than\n /// the current one.\n pub fn get_effective_minimum_delay_at(self, historical_block_number: u32) -> u32 {\n if self.block_of_change <= historical_block_number {\n // If no delay changes were scheduled, then the delay value at the historical block (post) is guaranteed to\n // hold due to how further delay changes would be scheduled by `schedule_change`.\n self.post.unwrap_or(INITIAL_DELAY)\n } else {\n // If a change is scheduled, then the effective delay might be lower than the current one (pre). At the\n // block of change the current delay will be the scheduled one, with an overall delay from the historical\n // block number equal to the number of blocks until the change plus the new delay. If this value is lower\n // than the current delay, then that is the effective minimum delay.\n //\n // historical\n // block delay actual earliest value\n // v block of change block of change\n // =========NS=====================|=============================X===========Y=====>\n // ^ ^ ^ ^\n // earliest block in | | |\n // which to schedule change | | |\n // | | | |\n // |----------------------|------------------------------ |\n // | blocks new delay |\n // | until change |\n // | |\n // |----------------------------------------------------------------|\n // current delay at the earliest block in \n // which to scheduled value change\n\n let blocks_until_change = self.block_of_change - (historical_block_number + 1);\n\n min(\n self.pre.unwrap_or(INITIAL_DELAY),\n blocks_until_change + self.post.unwrap_or(INITIAL_DELAY)\n )\n }\n }\n}\n\nimpl<INITIAL_DELAY> Serialize<1> for ScheduledDelayChange<INITIAL_DELAY> {\n fn serialize(self) -> [Field; 1] {\n // We pack all three u32 values into a single U128, which is made up of two u64 limbs.\n // Low limb: [ pre_inner: u32 | post_inner: u32 ]\n // High limb: [ empty | pre_is_some: u8 | post_is_some: u8 | block_of_change: u32 ]\n\n let lo = ((self.pre.unwrap_unchecked() as u64) * (1 << 32))\n + (self.post.unwrap_unchecked() as u64);\n\n let hi = (self.pre.is_some() as u64) * (1 << 33) \n + (self.post.is_some() as u64 * (1 << 32)) \n + self.block_of_change as u64;\n\n let packed = U128::from_u64s_le(lo, hi);\n\n [packed.to_integer()]\n }\n}\n\nimpl<INITIAL_DELAY> Deserialize<1> for ScheduledDelayChange<INITIAL_DELAY> {\n fn deserialize(input: [Field; 1]) -> Self {\n let packed = U128::from_integer(input[0]);\n\n // We use division and modulo to clear the bits that correspond to other values when unpacking.\n\n let pre_is_some = ((packed.hi as u64) / (1 << 33)) as bool;\n let pre_inner = ((packed.lo as u64) / (1 << 32)) as u32;\n\n let post_is_some = (((packed.hi as u64) / (1 << 32)) % (1 << 1)) as bool;\n let post_inner = ((packed.lo as u64) % (1 << 32)) as u32;\n\n let block_of_change = ((packed.hi as u64) % (1 << 32)) as u32;\n\n Self {\n pre: if pre_is_some { Option::some(pre_inner) } else { Option::none() },\n post: if post_is_some { Option::some(post_inner) } else { Option::none() },\n block_of_change,\n _dummy: [0; INITIAL_DELAY],\n }\n }\n}\n\nimpl<INITIAL_DELAY> Eq for ScheduledDelayChange<INITIAL_DELAY> {\n fn eq(self, other: Self) -> bool {\n (self.pre == other.pre) & (self.post == other.post) & (self.block_of_change == other.block_of_change)\n }\n}\n"},"161":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/state_vars/shared_mutable/scheduled_value_change.nr","source":"use dep::protocol_types::traits::{Serialize, Deserialize, FromField, ToField};\nuse std::cmp::min;\n\nmod test;\n\n// This data structure is used by SharedMutable to represent a value that changes from `pre` to `post` at some block\n// called the `block_of_change`. The value can only be made to change by scheduling a change event at some future block\n// of change after some minimum delay measured in blocks has elapsed. This means that at any given block number we know\n// both the current value and the smallest block number at which the value might change - this is called the\n// 'block horizon'.\nstruct ScheduledValueChange<T> {\n pre: T,\n post: T,\n // Block at which `post` value is used instead of `pre`\n block_of_change: u32,\n}\n\nimpl<T> ScheduledValueChange<T> {\n pub fn new(pre: T, post: T, block_of_change: u32) -> Self {\n Self { pre, post, block_of_change }\n }\n\n /// Returns the value stored in the data structure at a given block. This function can be called both in public\n /// (where `block_number` is simply the current block number, i.e. the number of the block in which the current\n /// transaction will be included) and in private (where `block_number` is the historical block number that is used\n /// to construct the proof).\n /// Reading in private is only safe if the transaction's `max_block_number` property is set to a value lower or\n /// equal to the block horizon (see `get_block_horizon()`).\n pub fn get_current_at(self, block_number: u32) -> T {\n // The post value becomes the current one at the block of change. This means different things in each realm:\n // - in public, any transaction that is included in the block of change will use the post value\n // - in private, any transaction that includes the block of change as part of the historical state will use the\n // post value (barring any follow-up changes)\n\n if block_number < self.block_of_change {\n self.pre\n } else {\n self.post\n }\n }\n\n /// Returns the scheduled change, i.e. the post-change value and the block at which it will become the current\n /// value. Note that this block may be in the past if the change has already taken place.\n /// Additionally, further changes might be later scheduled, potentially canceling the one returned by this function.\n pub fn get_scheduled(self) -> (T, u32) {\n (self.post, self.block_of_change)\n }\n\n /// Returns the largest block number at which the value returned by `get_current_at` is known to remain the current\n /// value. This value is only meaningful in private when constructing a proof at some `historical_block_number`,\n /// since due to its asynchronous nature private execution cannot know about any later scheduled changes.\n /// The caller of this function must know how quickly the value can change due to a scheduled change in the form of\n /// `minimum_delay`. If the delay itself is immutable, then this is just its duration. If the delay is mutable\n /// however, then this value is the 'effective minimum delay' (obtained by calling\n /// `ScheduledDelayChange.get_effective_minimum_delay_at`), which equals the minimum number of blocks that need to\n /// elapse from the next block until the value changes, regardless of further delay changes.\n /// The value returned by `get_current_at` in private when called with a historical block number is only safe to use\n /// if the transaction's `max_block_number` property is set to a value lower or equal to the block horizon computed\n /// using the same historical block number.\n pub fn get_block_horizon(self, historical_block_number: u32, minimum_delay: u32) -> u32 {\n // The block horizon is the very last block in which the current value is known. Any block past the horizon\n // (i.e. with a block number larger than the block horizon) may have a different current value. Reading the\n // current value in private typically requires constraining the maximum valid block number to be equal to the\n // block horizon.\n\n if historical_block_number >= self.block_of_change {\n // Once the block of change has been mined, the current value (post) will not change unless a new value\n // change is scheduled. This did not happen at the historical block number (or else it would not be\n // greater or equal to the block of change), and therefore could only happen after the historical block\n // number. The earliest would be the immediate next block, and so the smallest possible next block of change\n // equals `historical_block_number + 1 + minimum_delay`. Our block horizon is simply the previous block to\n // that one.\n //\n // block of historical\n // change block block horizon\n // =======|=============N===================H===========>\n // ^ ^\n // ---------------------\n // minimum delay\n\n historical_block_number + minimum_delay\n } else {\n // If the block of change has not yet been mined however, then there are two possible scenarios.\n // a) It could be so far into the future that the block horizon is actually determined by the minimum\n // delay, because a new change could be scheduled and take place _before_ the currently scheduled one.\n // This is similar to the scenario where the block of change is in the past: the time horizon is the\n // block prior to the earliest one in which a new block of change might land.\n //\n // historical\n // block block horizon block of change\n // =====N=================================H=================|=========>\n // ^ ^\n // | |\n // -----------------------------------\n // minimum delay\n //\n // b) It could be fewer than `minimum_delay` blocks away from the historical block number, in which case\n // the block of change would become the limiting factor for the time horizon, which would equal the\n // block right before the block of change (since by definition the value changes at the block of\n // change).\n //\n // historical block horizon\n // block block of change if not scheduled\n // =======N=============|===================H=================>\n // ^ ^ ^\n // | actual horizon |\n // -----------------------------------\n // minimum delay\n //\n // Note that the current implementation does not allow the caller to set the block of change to an arbitrary\n // value, and therefore scenario a) is not currently possible. However implementing #5501 would allow for\n // this to happen.\n\n // Because historical_block_number < self.block_of_change, then block_of_change > 0 and we can safely\n // subtract 1.\n min(\n self.block_of_change - 1,\n historical_block_number + minimum_delay\n )\n }\n }\n\n /// Mutates the value by scheduling a change at the current block number. This function is only meaningful when\n /// called in public with the current block number.\n pub fn schedule_change(\n &mut self,\n new_value: T,\n current_block_number: u32,\n minimum_delay: u32,\n block_of_change: u32\n ) {\n assert(block_of_change >= current_block_number + minimum_delay);\n\n self.pre = self.get_current_at(current_block_number);\n self.post = new_value;\n self.block_of_change = block_of_change;\n }\n}\n\nimpl<T> Serialize<3> for ScheduledValueChange<T> {\n fn serialize(self) -> [Field; 3] where T: ToField {\n [self.pre.to_field(), self.post.to_field(), self.block_of_change.to_field()]\n }\n}\n\nimpl<T> Deserialize<3> for ScheduledValueChange<T> {\n fn deserialize(input: [Field; 3]) -> Self where T: FromField {\n Self {\n pre: FromField::from_field(input[0]),\n post: FromField::from_field(input[1]),\n block_of_change: FromField::from_field(input[2]),\n }\n }\n}\n\nimpl<T> Eq for ScheduledValueChange<T> {\n fn eq(self, other: Self) -> bool where T: Eq {\n (self.pre == other.pre) & (self.post == other.post) & (self.block_of_change == other.block_of_change)\n }\n}\n"},"162":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/state_vars/shared_mutable/shared_mutable.nr","source":"use dep::protocol_types::{\n hash::{pedersen_hash, poseidon2_hash}, header::Header, address::AztecAddress,\n traits::{FromField, ToField}\n};\n\nuse crate::context::{PrivateContext, PublicContext, UnconstrainedContext};\nuse crate::state_vars::{\n storage::Storage,\n shared_mutable::{scheduled_value_change::ScheduledValueChange, scheduled_delay_change::ScheduledDelayChange}\n};\nuse crate::oracle::storage::storage_read;\nuse dep::std::unsafe::zeroed;\n\nmod test;\n\nstruct SharedMutable<T, let INITIAL_DELAY: u32, Context> {\n context: Context,\n storage_slot: Field,\n}\n\n// This will make the Aztec macros require that T implements the Serialize<N> trait, and allocate N storage slots to\n// this state variable. This is incorrect, since what we actually store is:\n// - a ScheduledValueChange<T>, which requires 1 + 2 * M storage slots, where M is the serialization length of T\n// - a ScheduledDelayChange, which requires another storage slot\n//\n// TODO https://github.com/AztecProtocol/aztec-packages/issues/5736: change the storage allocation scheme so that we\n// can actually use it here\nimpl<T, INITIAL_DELAY, Context> Storage<T> for SharedMutable<T, INITIAL_DELAY, Context> {}\n\n// TODO: extract into a utils module once we can do arithmetic on generics, i.e. https://github.com/noir-lang/noir/issues/4784\nfn concat_arrays<N, M, O>(arr_n: [Field; N], arr_m: [Field; M]) -> [Field; O] {\n assert_eq(N + M, O);\n let mut out: [Field; O] = [0; O];\n for i in 0..N {\n out[i] = arr_n[i];\n }\n for i in 0..M {\n out[N+i] = arr_m[i];\n }\n out\n}\n\n// SharedMutable<T> stores a value of type T that is:\n// - publicly known (i.e. unencrypted)\n// - mutable in public\n// - readable in private with no contention (i.e. multiple parties can all read the same value without blocking one\n// another nor needing to coordinate)\n// This is famously a hard problem to solve. SharedMutable makes it work by introducing a delay to public mutation:\n// the value is not changed immediately but rather a value change is scheduled to happen in the future after some delay\n// measured in blocks. Reads in private are only valid as long as they are included in a block not too far into the\n// future, so that they can guarantee the value will not have possibly changed by then (because of the delay).\n// The delay for changing a value is initially equal to INITIAL_DELAY, but can be changed by calling\n// `schedule_delay_change`.\nimpl<T, INITIAL_DELAY, Context> SharedMutable<T, INITIAL_DELAY, Context> where T: ToField + FromField + Eq {\n pub fn new(context: Context, storage_slot: Field) -> Self {\n assert(storage_slot != 0, \"Storage slot 0 not allowed. Storage slots must start from 1.\");\n Self { context, storage_slot }\n }\n\n fn hash_scheduled_data(\n value_change: ScheduledValueChange<T>,\n delay_change: ScheduledDelayChange<INITIAL_DELAY>\n ) -> Field {\n // TODO(#5491 and https://github.com/noir-lang/noir/issues/4784): update this so that we don't need to rely on\n // ScheduledValueChange serializing to 3 and ScheduledDelayChange serializing to 1\n let concatenated: [Field; 4] = concat_arrays(value_change.serialize(), delay_change.serialize());\n poseidon2_hash(concatenated)\n }\n\n // Since we can't rely on the native storage allocation scheme, we hash the storage slot to get a unique location in\n // which we can safely store as much data as we need.\n // See https://github.com/AztecProtocol/aztec-packages/issues/5492 and\n // https://github.com/AztecProtocol/aztec-packages/issues/5736\n // We store three things in public storage:\n // - a ScheduledValueChange\n // - a ScheduledDelaChange\n // - the hash of both of these (via `hash_scheduled_data`)\n fn get_value_change_storage_slot(self) -> Field {\n pedersen_hash([self.storage_slot, 0], 0)\n }\n\n fn get_delay_change_storage_slot(self) -> Field {\n pedersen_hash([self.storage_slot, 1], 0)\n }\n\n fn get_hash_storage_slot(self) -> Field {\n pedersen_hash([self.storage_slot, 2], 0)\n }\n\n // It may seem odd that we take a header and address instead of reading from e.g. a PrivateContext, but this lets us\n // reuse this function in SharedMutablePrivateGetter.\n fn historical_read_from_public_storage(\n self,\n header: Header,\n address: AztecAddress\n ) -> (ScheduledValueChange<T>, ScheduledDelayChange<INITIAL_DELAY>, u32) {\n let historical_block_number = header.global_variables.block_number as u32;\n\n // We could simply produce historical inclusion proofs for both the ScheduledValueChange and\n // ScheduledDelayChange, but that'd require one full sibling path per storage slot (since due to kernel siloing\n // the storage is not contiguous), and in the best case in which T is a single field that'd be 4 slots.\n // Instead, we get an oracle to provide us the correct values for both the value and delay changes, and instead\n // prove inclusion of their hash, which is both a much smaller proof (a single slot), and also independent of\n // the size of T.\n let (value_change_hint, delay_change_hint) = get_public_storage_hints(address, self.storage_slot, historical_block_number);\n\n // Ideally the following would be simply public_storage::read_historical, but we can't implement that yet.\n let hash = header.public_storage_historical_read(self.get_hash_storage_slot(), address);\n\n // @todo This is written strangely to bypass a formatting issue with the if that is breaking ci.\n let (a, b, c) = if hash != 0 {\n let a = SharedMutable::hash_scheduled_data(value_change_hint, delay_change_hint);\n (a, value_change_hint, delay_change_hint)\n } else {\n // The hash slot can only hold a zero if it is uninitialized, meaning no value or delay change was ever\n // scheduled. Therefore, the hints must then correspond to uninitialized scheduled changes.\n let b = ScheduledValueChange::deserialize(zeroed());\n let c = ScheduledDelayChange::deserialize(zeroed());\n (hash, b, c)\n };\n\n assert_eq(hash, a, \"Hint values do not match hash\");\n assert_eq(value_change_hint, b, \"Non-zero value change for zero hash\");\n assert_eq(delay_change_hint, c, \"Non-zero delay change for zero hash\");\n\n (value_change_hint, delay_change_hint, historical_block_number)\n }\n}\n\nimpl<T, INITIAL_DELAY> SharedMutable<T, INITIAL_DELAY, &mut PublicContext> where T: ToField + FromField + Eq {\n pub fn schedule_value_change(self, new_value: T) {\n let mut value_change = self.read_value_change();\n let delay_change = self.read_delay_change();\n\n let block_number = self.context.block_number() as u32;\n let current_delay = delay_change.get_current(block_number);\n\n // TODO: make this configurable\n // https://github.com/AztecProtocol/aztec-packages/issues/5501\n let block_of_change = block_number + current_delay;\n value_change.schedule_change(new_value, block_number, current_delay, block_of_change);\n\n self.write(value_change, delay_change);\n }\n\n pub fn schedule_delay_change(self, new_delay: u32) {\n let mut delay_change = self.read_delay_change();\n\n let block_number = self.context.block_number() as u32;\n\n delay_change.schedule_change(new_delay, block_number);\n\n self.write(self.read_value_change(), delay_change);\n }\n\n pub fn get_current_value_in_public(self) -> T {\n let block_number = self.context.block_number() as u32;\n self.read_value_change().get_current_at(block_number)\n }\n\n pub fn get_current_delay_in_public(self) -> u32 {\n let block_number = self.context.block_number() as u32;\n self.read_delay_change().get_current(block_number)\n }\n\n pub fn get_scheduled_value_in_public(self) -> (T, u32) {\n self.read_value_change().get_scheduled()\n }\n\n pub fn get_scheduled_delay_in_public(self) -> (u32, u32) {\n self.read_delay_change().get_scheduled()\n }\n\n fn read_value_change(self) -> ScheduledValueChange<T> {\n self.context.storage_read(self.get_value_change_storage_slot())\n }\n\n fn read_delay_change(self) -> ScheduledDelayChange<INITIAL_DELAY> {\n self.context.storage_read(self.get_delay_change_storage_slot())\n }\n\n fn write(\n self,\n value_change: ScheduledValueChange<T>,\n delay_change: ScheduledDelayChange<INITIAL_DELAY>\n ) {\n // Whenever we write to public storage, we write both the value change and delay change as well as the hash of\n // them both. This guarantees that the hash is always kept up to date.\n // While this makes for more costly writes, it also makes private proofs much simpler because they only need to\n // produce a historical proof for the hash, which results in a single inclusion proof (as opposed to 4 in the\n // best case scenario in which T is a single field). Private shared mutable reads are assumed to be much more\n // frequent than public writes, so this tradeoff makes sense.\n self.context.storage_write(self.get_value_change_storage_slot(), value_change);\n self.context.storage_write(self.get_delay_change_storage_slot(), delay_change);\n self.context.storage_write(\n self.get_hash_storage_slot(),\n SharedMutable::hash_scheduled_data(value_change, delay_change)\n );\n }\n}\n\nimpl<T, INITIAL_DELAY> SharedMutable<T, INITIAL_DELAY, &mut PrivateContext> where T: ToField + FromField + Eq {\n pub fn get_current_value_in_private(self) -> T {\n // When reading the current value in private we construct a historical state proof for the public value.\n // However, since this value might change, we must constrain the maximum transaction block number as this proof\n // will only be valid for however many blocks we can ensure the value will not change, which will depend on the\n // current delay and any scheduled delay changes.\n\n let (value_change, delay_change, historical_block_number) = self.historical_read_from_public_storage(self.context.get_header(), self.context.this_address());\n\n // We use the effective minimum delay as opposed to the current delay at the historical block as this one also\n // takes into consideration any scheduled delay changes.\n // For example, consider a scenario in which at block 200 the current delay was 50. We may naively think that\n // the earliest we could change the value would be at block 251 by scheduling immediately after the historical\n // block, i.e. at block 201. But if there was a delay change scheduled for block 210 to reduce the delay to 20\n // blocks, then if a value change was scheduled at block 210 it would go into effect at block 230, which is\n // earlier than what we'd expect if we only considered the current delay.\n let effective_minimum_delay = delay_change.get_effective_minimum_delay_at(historical_block_number);\n let block_horizon = value_change.get_block_horizon(historical_block_number, effective_minimum_delay);\n\n // We prevent this transaction from being included in any block after the block horizon, ensuring that the\n // historical public value matches the current one, since it can only change after the horizon.\n self.context.set_tx_max_block_number(block_horizon);\n value_change.get_current_at(historical_block_number)\n }\n}\n\nimpl<T, INITIAL_DELAY> SharedMutable<T, INITIAL_DELAY, UnconstrainedContext> where T: ToField + FromField + Eq {\n unconstrained pub fn get_current_value_in_unconstrained(self) -> T {\n let block_number = self.context.block_number() as u32;\n self.read_value_change().get_current_at(block_number)\n }\n\n unconstrained fn read_value_change(self) -> ScheduledValueChange<T> {\n self.context.storage_read(self.get_value_change_storage_slot())\n }\n}\n\nunconstrained fn get_public_storage_hints<T, INITIAL_DELAY>(\n address: AztecAddress,\n storage_slot: Field,\n block_number: u32\n) -> (ScheduledValueChange<T>, ScheduledDelayChange<INITIAL_DELAY>) where T: ToField + FromField + Eq {\n // This function cannot be part of the &mut PrivateContext impl because that'd mean that by passing `self` we'd also\n // be passing a mutable reference to an unconstrained function, which is not allowed. We therefore create a dummy\n // state variable here so that we can access the methods to compute storage slots. This will all be removed in the\n // future once we do proper storage slot allocation (#5492).\n let dummy: SharedMutable<T, INITIAL_DELAY, ()> = SharedMutable::new((), storage_slot);\n\n (\n storage_read(address, dummy.get_value_change_storage_slot(), block_number), storage_read(address, dummy.get_delay_change_storage_slot(), block_number)\n )\n}\n"},"195":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/abis/function_selector.nr","source":"use crate::utils::field::field_from_bytes;\nuse crate::traits::{Serialize, Deserialize, FromField, ToField, Empty};\n\nglobal SELECTOR_SIZE = 4;\n\nstruct FunctionSelector {\n // 1st 4-bytes of abi-encoding of function.\n inner: u32,\n}\n\nimpl Eq for FunctionSelector {\n fn eq(self, function_selector: FunctionSelector) -> bool {\n function_selector.inner == self.inner\n }\n}\n\nimpl Serialize<1> for FunctionSelector {\n fn serialize(self: Self) -> [Field; 1] {\n [self.inner as Field]\n }\n}\n\nimpl Deserialize<1> for FunctionSelector {\n fn deserialize(fields: [Field; 1]) -> Self {\n Self {\n inner: fields[0] as u32\n }\n }\n}\n\nimpl FromField for FunctionSelector {\n fn from_field(field: Field) -> Self {\n Self { inner: field as u32 }\n }\n}\n\nimpl ToField for FunctionSelector {\n fn to_field(self) -> Field {\n self.inner as Field\n }\n}\n\nimpl Empty for FunctionSelector {\n fn empty() -> Self {\n Self { inner: 0 as u32 }\n }\n}\n\nimpl FunctionSelector {\n pub fn from_u32(value: u32) -> Self {\n Self { inner: value }\n }\n\n pub fn from_signature<N>(signature: str<N>) -> Self {\n let bytes = signature.as_bytes();\n let hash = std::hash::keccak256(bytes, bytes.len() as u32);\n\n let mut selector_be_bytes = [0; SELECTOR_SIZE];\n for i in 0..SELECTOR_SIZE {\n selector_be_bytes[i] = hash[i];\n }\n\n FunctionSelector::from_field(field_from_bytes(selector_be_bytes, true))\n }\n\n pub fn zero() -> Self {\n Self { inner: 0 }\n }\n}\n"},"21":{"path":"std/embedded_curve_ops.nr","source":"use crate::ops::arith::{Add, Sub, Neg};\nuse crate::cmp::Eq;\n\n/// A point on the embedded elliptic curve\n/// By definition, the base field of the embedded curve is the scalar field of the proof system curve, i.e the Noir Field.\n/// x and y denotes the Weierstrass coordinates of the point, if is_infinite is false.\nstruct EmbeddedCurvePoint {\n x: Field,\n y: Field,\n is_infinite: bool\n}\n\nimpl EmbeddedCurvePoint {\n /// Elliptic curve point doubling operation\n /// returns the doubled point of a point P, i.e P+P\n fn double(self) -> EmbeddedCurvePoint {\n embedded_curve_add(self, self)\n }\n\n /// Returns the null element of the curve; 'the point at infinity'\n fn point_at_infinity() -> EmbeddedCurvePoint {\n EmbeddedCurvePoint { x: 0, y: 0, is_infinite: true }\n }\n}\n\nimpl Add for EmbeddedCurvePoint {\n /// Adds two points P+Q, using the curve addition formula, and also handles point at infinity\n fn add(self, other: EmbeddedCurvePoint) -> EmbeddedCurvePoint { \n embedded_curve_add(self, other)\n }\n}\n\nimpl Sub for EmbeddedCurvePoint {\n /// Points subtraction operation, using addition and negation\n fn sub(self, other: EmbeddedCurvePoint) -> EmbeddedCurvePoint { \n self + other.neg()\n }\n}\n\nimpl Neg for EmbeddedCurvePoint {\n /// Negates a point P, i.e returns -P, by negating the y coordinate.\n /// If the point is at infinity, then the result is also at infinity.\n fn neg(self) -> EmbeddedCurvePoint { \n EmbeddedCurvePoint {\n x: self.x,\n y: -self.y,\n is_infinite: self.is_infinite\n }\n }\n}\n\nimpl Eq for EmbeddedCurvePoint {\n /// Checks whether two points are equal\n fn eq(self: Self, b: EmbeddedCurvePoint) -> bool {\n (self.is_infinite & b.is_infinite) | ((self.is_infinite == b.is_infinite) & (self.x == b.x) & (self.y == b.y))\n }\n}\n\n/// Scalar for the embedded curve represented as low and high limbs\n/// By definition, the scalar field of the embedded curve is base field of the proving system curve.\n/// It may not fit into a Field element, so it is represented with two Field elements; its low and high limbs.\nstruct EmbeddedCurveScalar {\n lo: Field,\n hi: Field,\n}\n\nimpl EmbeddedCurveScalar {\n pub fn new(lo: Field, hi: Field) -> Self {\n EmbeddedCurveScalar { lo, hi }\n }\n\n #[field(bn254)]\n fn from_field(scalar: Field) -> EmbeddedCurveScalar {\n let (a,b) = crate::field::bn254::decompose(scalar);\n EmbeddedCurveScalar { lo: a, hi: b }\n }\n}\n\nimpl Eq for EmbeddedCurveScalar {\n fn eq(self, other: Self) -> bool {\n (other.hi == self.hi) & (other.lo == self.lo)\n }\n}\n\n// Computes a multi scalar multiplication over the embedded curve.\n// For bn254, We have Grumpkin and Baby JubJub.\n// For bls12-381, we have JubJub and Bandersnatch.\n//\n// The embedded curve being used is decided by the \n// underlying proof system.\n// docs:start:multi_scalar_mul\npub fn multi_scalar_mul<let N: u32>(\n points: [EmbeddedCurvePoint; N],\n scalars: [EmbeddedCurveScalar; N]\n) -> EmbeddedCurvePoint\n// docs:end:multi_scalar_mul\n{\n let point_array = multi_scalar_mul_array_return(points, scalars);\n EmbeddedCurvePoint { x: point_array[0], y: point_array[1], is_infinite: point_array[2] as bool }\n}\n\n#[foreign(multi_scalar_mul)]\nfn multi_scalar_mul_array_return<let N: u32>(points: [EmbeddedCurvePoint; N], scalars: [EmbeddedCurveScalar; N]) -> [Field; 3] {}\n\n// docs:start:fixed_base_scalar_mul\npub fn fixed_base_scalar_mul(scalar: EmbeddedCurveScalar) -> EmbeddedCurvePoint\n// docs:end:fixed_base_scalar_mul\n{\n let g1 = EmbeddedCurvePoint { x: 1, y: 17631683881184975370165255887551781615748388533673675138860, is_infinite: false };\n multi_scalar_mul([g1], [scalar])\n}\n\n// This is a hack as returning an `EmbeddedCurvePoint` from a foreign function in brillig returns a [BrilligVariable::SingleAddr; 2] rather than BrilligVariable::BrilligArray\n// as is defined in the brillig bytecode format. This is a workaround which allows us to fix this without modifying the serialization format.\n// docs:start:embedded_curve_add\nfn embedded_curve_add(\n point1: EmbeddedCurvePoint,\n point2: EmbeddedCurvePoint\n) -> EmbeddedCurvePoint\n// docs:end:embedded_curve_add\n{\n let point_array = embedded_curve_add_array_return(point1, point2);\n let x = point_array[0];\n let y = point_array[1];\n EmbeddedCurvePoint { x, y, is_infinite: point_array[2] == 1 }\n}\n\n#[foreign(embedded_curve_add)]\nfn embedded_curve_add_array_return(_point1: EmbeddedCurvePoint, _point2: EmbeddedCurvePoint) -> [Field; 3] {}\n"},"23":{"path":"std/field/mod.nr","source":"mod bn254;\nuse bn254::lt as bn254_lt;\n\nimpl Field {\n pub fn to_le_bits(self: Self, bit_size: u32) -> [u1] {\n crate::assert_constant(bit_size);\n self.__to_le_bits(bit_size)\n }\n\n pub fn to_be_bits(self: Self, bit_size: u32) -> [u1] {\n crate::assert_constant(bit_size);\n self.__to_be_bits(bit_size)\n }\n\n #[builtin(to_le_bits)]\n fn __to_le_bits(self, _bit_size: u32) -> [u1] {}\n\n #[builtin(to_be_bits)]\n fn __to_be_bits(self, bit_size: u32) -> [u1] {}\n\n #[builtin(apply_range_constraint)]\n fn __assert_max_bit_size(self, bit_size: u32) {}\n\n pub fn assert_max_bit_size(self: Self, bit_size: u32) {\n crate::assert_constant(bit_size);\n assert(bit_size < modulus_num_bits() as u32);\n self.__assert_max_bit_size(bit_size);\n }\n\n pub fn to_le_bytes(self: Self, byte_size: u32) -> [u8] {\n self.to_le_radix(256, byte_size)\n }\n\n pub fn to_be_bytes(self: Self, byte_size: u32) -> [u8] {\n self.to_be_radix(256, byte_size)\n }\n\n pub fn to_le_radix(self: Self, radix: u32, result_len: u32) -> [u8] {\n crate::assert_constant(radix);\n crate::assert_constant(result_len);\n self.__to_le_radix(radix, result_len)\n }\n\n pub fn to_be_radix(self: Self, radix: u32, result_len: u32) -> [u8] {\n crate::assert_constant(radix);\n crate::assert_constant(result_len);\n self.__to_be_radix(radix, result_len)\n }\n\n // decompose `_self` into a `_result_len` vector over the `_radix` basis\n // `_radix` must be less than 256\n #[builtin(to_le_radix)]\n fn __to_le_radix(self, radix: u32, result_len: u32) -> [u8] {}\n\n #[builtin(to_be_radix)]\n fn __to_be_radix(self, radix: u32, result_len: u32) -> [u8] {}\n\n // Returns self to the power of the given exponent value.\n // Caution: we assume the exponent fits into 32 bits\n // using a bigger bit size impacts negatively the performance and should be done only if the exponent does not fit in 32 bits\n pub fn pow_32(self, exponent: Field) -> Field {\n let mut r: Field = 1;\n let b = exponent.to_le_bits(32);\n\n for i in 1..33 {\n r *= r;\n r = (b[32-i] as Field) * (r * self) + (1 - b[32-i] as Field) * r;\n }\n r\n }\n\n // Parity of (prime) Field element, i.e. sgn0(x mod p) = 0 if x ∈ {0, ..., p-1} is even, otherwise sgn0(x mod p) = 1.\n pub fn sgn0(self) -> u1 {\n self as u1\n }\n\n pub fn lt(self, another: Field) -> bool {\n if crate::compat::is_bn254() {\n bn254_lt(self, another)\n } else {\n lt_fallback(self, another)\n }\n }\n}\n\n#[builtin(modulus_num_bits)]\npub fn modulus_num_bits() -> u64 {}\n\n#[builtin(modulus_be_bits)]\npub fn modulus_be_bits() -> [u1] {}\n\n#[builtin(modulus_le_bits)]\npub fn modulus_le_bits() -> [u1] {}\n\n#[builtin(modulus_be_bytes)]\npub fn modulus_be_bytes() -> [u8] {}\n\n#[builtin(modulus_le_bytes)]\npub fn modulus_le_bytes() -> [u8] {}\n// Convert a 32 byte array to a field element by modding\npub fn bytes32_to_field(bytes32: [u8; 32]) -> Field {\n // Convert it to a field element\n let mut v = 1;\n let mut high = 0 as Field;\n let mut low = 0 as Field;\n\n for i in 0..16 {\n high = high + (bytes32[15 - i] as Field) * v;\n low = low + (bytes32[16 + 15 - i] as Field) * v;\n v = v * 256;\n }\n // Abuse that a % p + b % p = (a + b) % p and that low < p\n low + high * v\n}\n\nfn lt_fallback(x: Field, y: Field) -> bool {\n let num_bytes = (modulus_num_bits() as u32 + 7) / 8;\n let x_bytes = x.to_le_bytes(num_bytes);\n let y_bytes = y.to_le_bytes(num_bytes);\n let mut x_is_lt = false;\n let mut done = false;\n for i in 0..num_bytes {\n if (!done) {\n let x_byte = x_bytes[num_bytes - 1 - i] as u8;\n let y_byte = y_bytes[num_bytes - 1 - i] as u8;\n let bytes_match = x_byte == y_byte;\n if !bytes_match {\n x_is_lt = x_byte < y_byte;\n done = true;\n }\n }\n }\n x_is_lt\n}\n\n"},"231":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/storage/map.nr","source":"use crate::{hash::pedersen_hash, traits::ToField};\n\npub fn derive_storage_slot_in_map<K>(storage_slot: Field, key: K) -> Field where K: ToField {\n pedersen_hash([storage_slot, key.to_field()], 0)\n}\n"},"236":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/type_serialization.nr","source":"use crate::traits::{Serialize, Deserialize};\n\nglobal BOOL_SERIALIZED_LEN: Field = 1;\nglobal U8_SERIALIZED_LEN: Field = 1;\nglobal U32_SERIALIZED_LEN: Field = 1;\nglobal U64_SERIALIZED_LEN: Field = 1;\nglobal U128_SERIALIZED_LEN: Field = 1;\nglobal FIELD_SERIALIZED_LEN: Field = 1;\n\nimpl Serialize<BOOL_SERIALIZED_LEN> for bool {\n fn serialize(self) -> [Field; BOOL_SERIALIZED_LEN] {\n [self as Field]\n }\n}\n\nimpl Deserialize<BOOL_SERIALIZED_LEN> for bool {\n fn deserialize(fields: [Field; BOOL_SERIALIZED_LEN]) -> bool {\n fields[0] as bool\n }\n}\n\nimpl Serialize<U8_SERIALIZED_LEN> for u8 {\n fn serialize(self) -> [Field; U32_SERIALIZED_LEN] {\n [self as Field]\n }\n}\n\nimpl Deserialize<U8_SERIALIZED_LEN> for u8 {\n fn deserialize(fields: [Field; U8_SERIALIZED_LEN]) -> Self {\n fields[0] as u8\n }\n}\n\nimpl Serialize<U32_SERIALIZED_LEN> for u32 {\n fn serialize(self) -> [Field; U32_SERIALIZED_LEN] {\n [self as Field]\n }\n}\n\nimpl Deserialize<U32_SERIALIZED_LEN> for u32 {\n fn deserialize(fields: [Field; U32_SERIALIZED_LEN]) -> Self {\n fields[0] as u32\n }\n}\n\nimpl Serialize<U64_SERIALIZED_LEN> for u64 {\n fn serialize(self) -> [Field; U64_SERIALIZED_LEN] {\n [self as Field]\n }\n}\n\nimpl Deserialize<U64_SERIALIZED_LEN> for u64 {\n fn deserialize(fields: [Field; U64_SERIALIZED_LEN]) -> Self {\n fields[0] as u64\n }\n}\n\nimpl Serialize<U128_SERIALIZED_LEN> for U128 {\n fn serialize(self) -> [Field; 1] {\n [self.to_integer()]\n }\n\n}\n\nimpl Deserialize<U128_SERIALIZED_LEN> for U128 {\n fn deserialize(fields: [Field; U128_SERIALIZED_LEN]) -> Self {\n U128::from_integer(fields[0])\n }\n}\n\nimpl Serialize<FIELD_SERIALIZED_LEN> for Field {\n fn serialize(self) -> [Field; U32_SERIALIZED_LEN] {\n [self]\n }\n}\n\nimpl Deserialize<FIELD_SERIALIZED_LEN> for Field {\n fn deserialize(fields: [Field; FIELD_SERIALIZED_LEN]) -> Self {\n fields[0]\n }\n}\n"},"237":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/traits.nr","source":"use crate::utils::field::field_from_bytes;\n\n// Trait: is_empty\n//\n// The general is_empty trait checks if a data type is is empty,\n// and it defines empty for the basic data types as 0.\n//\n// If a Field is equal to zero, then it is regarded as zero.\n// We will go with this definition for now, however it can be problematic \n// if a value can actually be zero. In a future refactor, we can \n// use the optional type for safety. Doing it now would lead to a worse devex\n// and would make it harder to sync up with the cpp code.\n// Preferred over Default trait to convey intent, as default doesn't necessarily mean empty.\ntrait Empty {\n fn empty() -> Self;\n}\n\nimpl Empty for Field { fn empty() -> Self {0} }\n\nimpl Empty for u1 { fn empty() -> Self {0} }\nimpl Empty for u8 { fn empty() -> Self {0} }\nimpl Empty for u32 { fn empty() -> Self {0} }\nimpl Empty for u64 { fn empty() -> Self {0} }\nimpl Empty for U128 { fn empty() -> Self {U128::from_integer(0)} }\n\npub fn is_empty<T>(item: T) -> bool where T: Empty + Eq {\n item.eq(T::empty())\n}\n\npub fn is_empty_array<T, N>(array: [T; N]) -> bool where T: Empty + Eq {\n array.all(|elem| is_empty(elem))\n}\n\ntrait Hash {\n fn hash(self) -> Field;\n}\n\ntrait ToField {\n fn to_field(self) -> Field;\n}\n\nimpl ToField for Field {\n fn to_field(self) -> Field {\n self\n }\n}\n\nimpl ToField for bool { fn to_field(self) -> Field { self as Field } }\nimpl ToField for u1 { fn to_field(self) -> Field { self as Field } }\nimpl ToField for u8 { fn to_field(self) -> Field { self as Field } }\nimpl ToField for u32 { fn to_field(self) -> Field { self as Field } }\nimpl ToField for u64 { fn to_field(self) -> Field { self as Field } }\nimpl ToField for U128 {\n fn to_field(self) -> Field {\n self.to_integer()\n }\n}\nimpl<N> ToField for str<N> {\n fn to_field(self) -> Field {\n assert(N < 32, \"String doesn't fit in a field, consider using Serialize instead\");\n field_from_bytes(self.as_bytes(), true)\n }\n}\n\ntrait FromField {\n fn from_field(value: Field) -> Self;\n}\n\nimpl FromField for Field {\n fn from_field(value: Field) -> Self {\n value\n }\n}\n\nimpl FromField for bool { fn from_field(value: Field) -> Self { value as bool } }\nimpl FromField for u1 { fn from_field(value: Field) -> Self { value as u1 } }\nimpl FromField for u8 { fn from_field(value: Field) -> Self { value as u8 } }\nimpl FromField for u32 { fn from_field(value: Field) -> Self { value as u32 } }\nimpl FromField for u64 { fn from_field(value: Field) -> Self { value as u64 } }\nimpl FromField for U128 {\n fn from_field(value: Field) -> Self {\n U128::from_integer(value)\n }\n}\n\n// docs:start:serialize\ntrait Serialize<N> {\n fn serialize(self) -> [Field; N];\n}\n// docs:end:serialize\n\nimpl<N> Serialize<N> for [Field; N] {\n fn serialize(self) -> [Field; N] {\n self\n }\n}\nimpl<N> Serialize<N> for str<N> {\n fn serialize(self) -> [Field; N] {\n let mut result = [0; N];\n let bytes: [u8; N] = self.as_bytes();\n for i in 0..N {\n result[i] = field_from_bytes([bytes[i];1], true);\n }\n result\n }\n}\n\n// docs:start:deserialize\ntrait Deserialize<N> {\n fn deserialize(fields: [Field; N]) -> Self;\n}\n// docs:end:deserialize\n\nimpl<N> Deserialize<N> for [Field; N] {\n fn deserialize(fields: [Field; N]) -> Self {\n fields\n }\n}\n"},"242":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/hash.nr","source":"use crate::{\n abis::{\n contract_class_function_leaf_preimage::ContractClassFunctionLeafPreimage,\n function_selector::FunctionSelector, log_hash::{LogHash, ScopedLogHash, ScopedEncryptedLogHash},\n note_hash::ScopedNoteHash, nullifier::ScopedNullifier\n},\n address::{AztecAddress, EthAddress},\n constants::{\n FUNCTION_TREE_HEIGHT, GENERATOR_INDEX__SILOED_NOTE_HASH, GENERATOR_INDEX__OUTER_NULLIFIER,\n GENERATOR_INDEX__VK, GENERATOR_INDEX__NOTE_HASH_NONCE, GENERATOR_INDEX__UNIQUE_NOTE_HASH,\n MAX_ENCRYPTED_LOGS_PER_TX, MAX_NOTE_ENCRYPTED_LOGS_PER_TX\n},\n merkle_tree::root::root_from_sibling_path, messaging::l2_to_l1_message::ScopedL2ToL1Message,\n recursion::verification_key::VerificationKey, traits::is_empty,\n utils::field::field_from_bytes_32_trunc\n};\nuse std::hash::{pedersen_hash_with_separator, sha256};\n\npub fn sha256_to_field<N>(bytes_to_hash: [u8; N]) -> Field {\n let sha256_hashed = sha256(bytes_to_hash);\n let hash_in_a_field = field_from_bytes_32_trunc(sha256_hashed);\n\n hash_in_a_field\n}\n\npub fn private_functions_root_from_siblings(\n selector: FunctionSelector,\n vk_hash: Field,\n function_leaf_index: Field,\n function_leaf_sibling_path: [Field; FUNCTION_TREE_HEIGHT]\n) -> Field {\n let function_leaf_preimage = ContractClassFunctionLeafPreimage { selector, vk_hash };\n let function_leaf = function_leaf_preimage.hash();\n root_from_sibling_path(function_leaf, function_leaf_index, function_leaf_sibling_path)\n}\n\nfn compute_note_hash_nonce(tx_hash: Field, note_index_in_tx: u32) -> Field {\n // Hashing tx hash with note index in tx is guaranteed to be unique\n pedersen_hash(\n [\n tx_hash,\n note_index_in_tx as Field\n ],\n GENERATOR_INDEX__NOTE_HASH_NONCE\n )\n}\n\npub fn compute_unique_note_hash(nonce: Field, inner_note_hash: Field) -> Field {\n let inputs = [nonce, inner_note_hash];\n pedersen_hash(inputs, GENERATOR_INDEX__UNIQUE_NOTE_HASH)\n}\n\npub fn compute_siloed_note_hash(app: AztecAddress, unique_note_hash: Field) -> Field {\n pedersen_hash(\n [\n app.to_field(),\n unique_note_hash\n ],\n GENERATOR_INDEX__SILOED_NOTE_HASH\n )\n}\n\npub fn silo_note_hash(note_hash: ScopedNoteHash, tx_hash: Field, note_index_in_tx: u32) -> Field {\n if note_hash.contract_address.is_zero() {\n 0\n } else {\n let nonce = compute_note_hash_nonce(tx_hash, note_index_in_tx);\n let unique_note_hash = compute_unique_note_hash(nonce, note_hash.value());\n compute_siloed_note_hash(note_hash.contract_address, unique_note_hash)\n }\n}\n\npub fn compute_siloed_nullifier(app: AztecAddress, nullifier: Field) -> Field {\n pedersen_hash(\n [\n app.to_field(),\n nullifier\n ],\n GENERATOR_INDEX__OUTER_NULLIFIER\n )\n}\n\npub fn silo_nullifier(nullifier: ScopedNullifier) -> Field {\n if nullifier.contract_address.is_zero() {\n nullifier.value() // Return value instead of 0 because the first nullifier's contract address is zero.\n } else {\n compute_siloed_nullifier(nullifier.contract_address, nullifier.value())\n }\n}\n\npub fn compute_siloed_encrypted_log_hash(address: AztecAddress, randomness: Field, log_hash: Field) -> Field {\n // TODO: Using 0 GENERATOR_INDEX here as interim before we move to posiedon\n // NB: A unique separator will be needed for masked_contract_address\n let mut masked_contract_address = pedersen_hash([address.to_field(), randomness], 0);\n if randomness == 0 {\n // In some cases, we actually want to reveal the contract address we are siloing with:\n // e.g. 'handshaking' contract w/ known address\n // An app providing randomness = 0 signals to not mask the address.\n masked_contract_address = address.to_field();\n }\n accumulate_sha256([masked_contract_address, log_hash])\n}\n\npub fn silo_encrypted_log_hash(log_hash: ScopedEncryptedLogHash) -> Field {\n if log_hash.contract_address.is_zero() {\n 0\n } else {\n compute_siloed_encrypted_log_hash(\n log_hash.contract_address,\n log_hash.log_hash.randomness,\n log_hash.log_hash.value\n )\n }\n}\n\nfn compute_siloed_unencrypted_log_hash(address: AztecAddress, log_hash: Field) -> Field {\n accumulate_sha256([address.to_field(), log_hash])\n}\n\npub fn silo_unencrypted_log_hash(log_hash: ScopedLogHash) -> Field {\n if log_hash.contract_address.is_zero() {\n 0\n } else {\n compute_siloed_unencrypted_log_hash(log_hash.contract_address, log_hash.value())\n }\n}\n\npub fn merkle_hash(left: Field, right: Field) -> Field {\n pedersen_hash([left, right], 0)\n}\n\npub fn stdlib_recursion_verification_key_compress_native_vk(_vk: VerificationKey) -> Field {\n // Original cpp code\n // stdlib::recursion::verification_key<CT::bn254>::compress_native(private_call.vk, GeneratorIndex::VK);\n // The above cpp method is only ever called on verification key, so it has been special cased here\n let _hash_index = GENERATOR_INDEX__VK;\n 0\n}\n\npub fn compute_l2_to_l1_hash(\n contract_address: AztecAddress,\n recipient: EthAddress,\n content: Field,\n rollup_version_id: Field,\n chain_id: Field\n) -> Field {\n let mut bytes: BoundedVec<u8, 160> = BoundedVec::new();\n\n let inputs = [contract_address.to_field(), rollup_version_id, recipient.to_field(), chain_id, content];\n for i in 0..inputs.len() {\n // TODO are bytes be in fr.to_buffer() ?\n let item_bytes = inputs[i].to_be_bytes(32);\n for j in 0..32 {\n bytes.push(item_bytes[j]);\n }\n }\n\n sha256_to_field(bytes.storage)\n}\n\npub fn silo_l2_to_l1_message(msg: ScopedL2ToL1Message, rollup_version_id: Field, chain_id: Field) -> Field {\n if msg.contract_address.is_zero() {\n 0\n } else {\n compute_l2_to_l1_hash(\n msg.contract_address,\n msg.message.recipient,\n msg.message.content,\n rollup_version_id,\n chain_id\n )\n }\n}\n\n// Computes sha256 hash of 2 input hashes.\n//\n// NB: This method now takes in two 31 byte fields - it assumes that any input\n// is the result of a sha_to_field hash and => is truncated\n//\n// TODO(Jan and David): This is used for the encrypted_log hashes.\n// Can we check to see if we can just use hash_to_field or pedersen_compress here?\n//\npub fn accumulate_sha256(input: [Field; 2]) -> Field {\n // This is a note about the cpp code, since it takes an array of Fields\n // instead of a U128.\n // 4 Field elements when converted to bytes will usually\n // occupy 4 * 32 = 128 bytes.\n // However, this function is making the assumption that each Field\n // only occupies 128 bits.\n //\n // TODO(David): This does not seem to be getting guaranteed anywhere in the code?\n\n // Concatentate two fields into 32x2 = 64 bytes\n // accumulate_sha256 assumes that the inputs are pre-truncated 31 byte numbers\n let mut hash_input_flattened = [0; 64];\n for offset in 0..input.len() {\n let input_as_bytes = input[offset].to_be_bytes(32);\n for byte_index in 0..32 {\n hash_input_flattened[offset * 32 + byte_index] = input_as_bytes[byte_index];\n }\n }\n\n sha256_to_field(hash_input_flattened)\n}\n\n// Computes the final logs hash for a tx.\n// NB: this assumes MAX_ENCRYPTED_LOGS_PER_TX == MAX_UNENCRYPTED_LOGS_PER_TX\n// to avoid doubling code, since we can't define the byte len to be 32*N directly.\npub fn compute_tx_logs_hash(logs: [LogHash; MAX_ENCRYPTED_LOGS_PER_TX]) -> Field {\n // Convert each field element into a byte array and append the bytes to `hash_input_flattened`\n let mut hash_input_flattened = [0; MAX_ENCRYPTED_LOGS_PER_TX * 32];\n for offset in 0..MAX_ENCRYPTED_LOGS_PER_TX {\n let input_as_bytes = logs[offset].value.to_be_bytes(32);\n for byte_index in 0..32 {\n hash_input_flattened[offset * 32 + byte_index] = input_as_bytes[byte_index];\n }\n }\n // Ideally we would push to a slice then hash, but there is no sha_slice\n // Hardcode to 256 bytes for now\n let mut hash = sha256_to_field(hash_input_flattened);\n // Not having a 0 value hash for empty logs causes issues with empty txs\n // used for padding. Returning early is currently unsupported.\n // We always provide sorted logs here, so 0 being empty means all are empty.\n if is_empty(logs[0]) {\n hash = 0;\n }\n hash\n}\n\npub fn compute_tx_note_logs_hash(logs: [LogHash; MAX_NOTE_ENCRYPTED_LOGS_PER_TX]) -> Field {\n // Convert each field element into a byte array and append the bytes to `hash_input_flattened`\n let mut hash_input_flattened = [0; MAX_NOTE_ENCRYPTED_LOGS_PER_TX * 32];\n for offset in 0..MAX_NOTE_ENCRYPTED_LOGS_PER_TX {\n let input_as_bytes = logs[offset].value.to_be_bytes(32);\n for byte_index in 0..32 {\n hash_input_flattened[offset * 32 + byte_index] = input_as_bytes[byte_index];\n }\n }\n // Ideally we would push to a slice then hash, but there is no sha_slice\n // Hardcode to 256 bytes for now\n let mut hash = sha256_to_field(hash_input_flattened);\n // Not having a 0 value hash for empty logs causes issues with empty txs\n // used for padding. Returning early is currently unsupported.\n // We always provide sorted logs here, so 0 being empty means all are empty.\n if is_empty(logs[0]) {\n hash = 0;\n }\n hash\n}\n\npub fn pedersen_hash<N>(inputs: [Field; N], hash_index: u32) -> Field {\n std::hash::pedersen_hash_with_separator(inputs, hash_index)\n}\n\npub fn poseidon2_hash<N>(inputs: [Field; N]) -> Field {\n std::hash::poseidon2::Poseidon2::hash(inputs, N)\n}\n\n#[test]\nfn smoke_sha256_to_field() {\n let full_buffer = [\n 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19,\n 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39,\n 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59,\n 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,\n 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99,\n 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119,\n 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139,\n 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159\n ];\n let result = sha256_to_field(full_buffer);\n\n assert(result == 0x448ebbc9e1a31220a2f3830c18eef61b9bd070e5084b7fa2a359fe729184c7);\n\n // to show correctness of the current ver (truncate one byte) vs old ver (mod full bytes):\n let result_bytes = sha256(full_buffer);\n let truncated_field = crate::utils::field::field_from_bytes_32_trunc(result_bytes);\n assert(truncated_field == result);\n let mod_res = result + (result_bytes[31] as Field);\n assert(mod_res == 0x448ebbc9e1a31220a2f3830c18eef61b9bd070e5084b7fa2a359fe729184e0);\n}\n\n#[test]\nfn compute_l2_l1_hash() {\n // All zeroes\n let hash_result = compute_l2_to_l1_hash(AztecAddress::from_field(0), EthAddress::zero(), 0, 0, 0);\n assert(hash_result == 0xb393978842a0fa3d3e1470196f098f473f9678e72463cb65ec4ab5581856c2);\n\n // Non-zero case\n let hash_result = compute_l2_to_l1_hash(AztecAddress::from_field(1), EthAddress::from_field(3), 5, 2, 4);\n assert(hash_result == 0x3f88c1044a05e5340ed20466276500f6d45ca5603913b9091e957161734e16);\n}\n"},"275":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/utils/field.nr","source":"pub fn field_from_bytes<N>(bytes: [u8; N], big_endian: bool) -> Field {\n assert(bytes.len() < 32, \"field_from_bytes: N must be less than 32\");\n let mut as_field = 0;\n let mut offset = 1;\n for i in 0..N {\n let mut index = i;\n if big_endian {\n index = N - i - 1;\n }\n as_field += (bytes[index] as Field) * offset;\n offset *= 256;\n }\n\n as_field\n}\n\n// Convert a 32 byte array to a field element by truncating the final byte\npub fn field_from_bytes_32_trunc(bytes32: [u8; 32]) -> Field {\n // Convert it to a field element\n let mut v = 1;\n let mut high = 0 as Field;\n let mut low = 0 as Field;\n\n for i in 0..15 {\n // covers bytes 16..30 (31 is truncated and ignored)\n low = low + (bytes32[15 + 15 - i] as Field) * v;\n v = v * 256;\n // covers bytes 0..14\n high = high + (bytes32[14 - i] as Field) * v;\n }\n // covers byte 15\n low = low + (bytes32[15] as Field) * v;\n\n low + high * v\n}\n\n// TODO to radix returns u8, so we cannot use bigger radixes. It'd be ideal to use a radix of the maximum range-constrained integer noir supports\npub fn full_field_less_than(lhs: Field, rhs: Field) -> bool {\n lhs.lt(rhs)\n}\n\npub fn full_field_greater_than(lhs: Field, rhs: Field) -> bool {\n rhs.lt(lhs)\n}\n\n#[test]\nunconstrained fn bytes_field_test() {\n // Tests correctness of field_from_bytes_32_trunc against existing methods\n // Bytes representing 0x543e0a6642ffeb8039296861765a53407bba62bd1c97ca43374de950bbe0a7\n let inputs = [\n 84, 62, 10, 102, 66, 255, 235, 128, 57, 41, 104, 97, 118, 90, 83, 64, 123, 186, 98, 189, 28, 151, 202, 67, 55, 77, 233, 80, 187, 224, 167\n ];\n let field = field_from_bytes(inputs, true);\n let return_bytes = field.to_be_bytes(31);\n for i in 0..31 {\n assert_eq(inputs[i], return_bytes[i]);\n }\n // 32 bytes - we remove the final byte, and check it matches the field\n let inputs2 = [\n 84, 62, 10, 102, 66, 255, 235, 128, 57, 41, 104, 97, 118, 90, 83, 64, 123, 186, 98, 189, 28, 151, 202, 67, 55, 77, 233, 80, 187, 224, 167, 158\n ];\n let field2 = field_from_bytes_32_trunc(inputs2);\n let return_bytes2 = field.to_be_bytes(31);\n\n for i in 0..31 {\n assert_eq(return_bytes2[i], return_bytes[i]);\n }\n assert_eq(field2, field);\n}\n\n#[test]\nunconstrained fn max_field_test() {\n // Tests the hardcoded value in constants.nr vs underlying modulus\n // NB: We can't use 0-1 in constants.nr as it will be transpiled incorrectly to ts and sol constants files\n let max_value = crate::constants::MAX_FIELD_VALUE;\n assert_eq(max_value, 0 - 1);\n // modulus == 0 is tested elsewhere, so below is more of a sanity check\n let max_bytes = max_value.to_be_bytes(32);\n let mod_bytes = std::field::modulus_be_bytes();\n for i in 0..31 {\n assert_eq(max_bytes[i], mod_bytes[i]);\n }\n assert_eq(max_bytes[31], mod_bytes[31] - 1);\n}\n"},"292":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/address/aztec_address.nr","source":"use crate::{\n crate::address::{eth_address::EthAddress, partial_address::PartialAddress, public_keys_hash::PublicKeysHash},\n constants::{AZTEC_ADDRESS_LENGTH, GENERATOR_INDEX__CONTRACT_ADDRESS_V1},\n contract_class_id::ContractClassId, hash::poseidon2_hash,\n traits::{Empty, FromField, ToField, Serialize, Deserialize}, utils\n};\n\n// Aztec address\nstruct AztecAddress {\n inner : Field\n}\n\nimpl Eq for AztecAddress {\n fn eq(self, other : Self) -> bool {\n self.to_field() == other.to_field()\n }\n}\n\nimpl Empty for AztecAddress {\n fn empty() -> Self {\n Self {\n inner : 0\n }\n }\n}\n\nimpl ToField for AztecAddress {\n fn to_field(self) -> Field {\n self.inner\n }\n}\n\nimpl FromField for AztecAddress {\n fn from_field(value: Field) -> AztecAddress {\n AztecAddress { inner: value }\n }\n}\n\nimpl Serialize<AZTEC_ADDRESS_LENGTH> for AztecAddress {\n fn serialize(self: Self) -> [Field; AZTEC_ADDRESS_LENGTH] {\n [self.to_field()]\n }\n}\n\nimpl Deserialize<AZTEC_ADDRESS_LENGTH> for AztecAddress {\n fn deserialize(fields: [Field; AZTEC_ADDRESS_LENGTH]) -> Self {\n FromField::from_field(fields[0])\n }\n}\n\nimpl AztecAddress {\n pub fn zero() -> Self {\n Self { inner: 0 }\n }\n\n pub fn compute(pub_keys_hash: PublicKeysHash, partial_address: PartialAddress) -> AztecAddress {\n AztecAddress::from_field(\n poseidon2_hash([pub_keys_hash.to_field(), partial_address.to_field(), GENERATOR_INDEX__CONTRACT_ADDRESS_V1])\n )\n }\n\n pub fn is_zero(self) -> bool {\n self.inner == 0\n }\n\n pub fn assert_is_zero(self) {\n assert(self.to_field() == 0);\n }\n\n pub fn conditional_assign(predicate: bool, lhs: Self, rhs: Self) -> Self {\n let result = utils::conditional_assign(predicate, rhs.to_field(), lhs.to_field());\n Self { inner: result }\n }\n}\n\n#[test]\nfn compute_address_from_partial_and_pub_keys_hash() {\n let pub_keys_hash = PublicKeysHash::from_field(1);\n let partial_address = PartialAddress::from_field(2);\n\n let address = AztecAddress::compute(pub_keys_hash, partial_address);\n let expected_computed_address_from_partial_and_pubkey = 0x1b6ead051e7b42665064ca6cf1ec77da0a36d86e00d1ff6e44077966c0c3a9fa;\n assert(address.to_field() == expected_computed_address_from_partial_and_pubkey);\n}\n\n#[test]\nfn from_field_to_field() {\n let address = AztecAddress { inner: 37 };\n assert_eq(FromField::from_field(address.to_field()), address);\n}\n\n#[test]\nfn serde() {\n let address = AztecAddress { inner: 37 };\n assert_eq(Deserialize::deserialize(address.serialize()), address);\n}\n"},"31":{"path":"std/hash/poseidon2.nr","source":"use crate::hash::Hasher;\nuse crate::default::Default;\n\nglobal RATE: u32 = 3;\n\nstruct Poseidon2 {\n cache: [Field;3],\n state: [Field;4],\n cache_size: u32,\n squeeze_mode: bool, // 0 => absorb, 1 => squeeze\n}\n\nimpl Poseidon2 {\n #[no_predicates]\n pub fn hash<let N: u32>(input: [Field; N], message_size: u32) -> Field {\n if message_size == N {\n Poseidon2::hash_internal(input, N, false)\n } else {\n Poseidon2::hash_internal(input, message_size, true)\n }\n }\n\n fn new(iv: Field) -> Poseidon2 {\n let mut result = Poseidon2 { cache: [0; 3], state: [0; 4], cache_size: 0, squeeze_mode: false };\n result.state[RATE] = iv;\n result\n }\n\n fn perform_duplex(&mut self) -> [Field; RATE] {\n // zero-pad the cache\n for i in 0..RATE {\n if i >= self.cache_size {\n self.cache[i] = 0;\n }\n }\n // add the cache into sponge state\n for i in 0..RATE {\n self.state[i] += self.cache[i];\n }\n self.state = crate::hash::poseidon2_permutation(self.state, 4);\n // return `RATE` number of field elements from the sponge state.\n let mut result = [0; RATE];\n for i in 0..RATE {\n result[i] = self.state[i];\n }\n result\n }\n\n fn absorb(&mut self, input: Field) {\n if (!self.squeeze_mode) & (self.cache_size == RATE) {\n // If we're absorbing, and the cache is full, apply the sponge permutation to compress the cache\n let _ = self.perform_duplex();\n self.cache[0] = input;\n self.cache_size = 1;\n } else if (!self.squeeze_mode) & (self.cache_size != RATE) {\n // If we're absorbing, and the cache is not full, add the input into the cache\n self.cache[self.cache_size] = input;\n self.cache_size += 1;\n } else if self.squeeze_mode {\n // If we're in squeeze mode, switch to absorb mode and add the input into the cache.\n // N.B. I don't think this code path can be reached?!\n self.cache[0] = input;\n self.cache_size = 1;\n self.squeeze_mode = false;\n }\n }\n\n fn squeeze(&mut self) -> Field {\n if self.squeeze_mode & (self.cache_size == 0) {\n // If we're in squeze mode and the cache is empty, there is nothing left to squeeze out of the sponge!\n // Switch to absorb mode.\n self.squeeze_mode = false;\n self.cache_size = 0;\n }\n if !self.squeeze_mode {\n // If we're in absorb mode, apply sponge permutation to compress the cache, populate cache with compressed\n // state and switch to squeeze mode. Note: this code block will execute if the previous `if` condition was\n // matched\n let new_output_elements = self.perform_duplex();\n self.squeeze_mode = true;\n for i in 0..RATE {\n self.cache[i] = new_output_elements[i];\n }\n self.cache_size = RATE;\n }\n // By this point, we should have a non-empty cache. Pop one item off the top of the cache and return it.\n let result = self.cache[0];\n for i in 1..RATE {\n if i < self.cache_size {\n self.cache[i - 1] = self.cache[i];\n }\n }\n self.cache_size -= 1;\n self.cache[self.cache_size] = 0;\n result\n }\n\n fn hash_internal<let N: u32>(input: [Field; N], in_len: u32, is_variable_length: bool) -> Field {\n let two_pow_64 = 18446744073709551616;\n let iv : Field = (in_len as Field) * two_pow_64;\n let mut sponge = Poseidon2::new(iv);\n for i in 0..input.len() {\n if i < in_len {\n sponge.absorb(input[i]);\n }\n }\n\n // In the case where the hash preimage is variable-length, we append `1` to the end of the input, to distinguish\n // from fixed-length hashes. (the combination of this additional field element + the hash IV ensures\n // fixed-length and variable-length hashes do not collide)\n if is_variable_length {\n sponge.absorb(1);\n }\n sponge.squeeze()\n }\n}\n\nstruct Poseidon2Hasher{\n _state: [Field],\n}\n\nimpl Hasher for Poseidon2Hasher {\n fn finish(self) -> Field {\n let iv : Field = (self._state.len() as Field)*18446744073709551616; // iv = (self._state.len() << 64)\n let mut sponge = Poseidon2::new(iv);\n for i in 0..self._state.len() {\n sponge.absorb(self._state[i]);\n }\n sponge.squeeze()\n }\n\n fn write(&mut self, input: Field){\n self._state = self._state.push_back(input);\n }\n}\n\nimpl Default for Poseidon2Hasher {\n fn default() -> Self {\n Poseidon2Hasher {\n _state: &[],\n }\n }\n}\n"},"363":{"path":"/usr/src/noir-projects/noir-contracts/contracts/key_registry_contract/src/main.nr","source":"contract KeyRegistry {\n use dep::authwit::auth::assert_current_call_valid_authwit_public;\n\n use dep::aztec::{\n keys::PublicKeys, state_vars::{SharedMutable, Map},\n protocol_types::{point::Point, address::{AztecAddress, PartialAddress}}\n };\n\n global KEY_ROTATION_DELAY = 5;\n\n #[aztec(storage)]\n struct Storage {\n // The following stores a hash of individual master public keys\n // If you change slots of vars below, you must update the slots in `SharedMutablePrivateGetter` in aztec-nr/keys.\n // We store x and y coordinates in individual shared mutables as shared mutable currently supports only 1 field\n npk_m_x_registry: Map<AztecAddress, SharedMutable<Field, KEY_ROTATION_DELAY>>,\n npk_m_y_registry: Map<AztecAddress, SharedMutable<Field, KEY_ROTATION_DELAY>>,\n\n ivpk_m_x_registry: Map<AztecAddress, SharedMutable<Field, KEY_ROTATION_DELAY>>,\n ivpk_m_y_registry: Map<AztecAddress, SharedMutable<Field, KEY_ROTATION_DELAY>>,\n \n ovpk_m_x_registry: Map<AztecAddress, SharedMutable<Field, KEY_ROTATION_DELAY>>,\n ovpk_m_y_registry: Map<AztecAddress, SharedMutable<Field, KEY_ROTATION_DELAY>>,\n \n tpk_m_x_registry: Map<AztecAddress, SharedMutable<Field, KEY_ROTATION_DELAY>>,\n tpk_m_y_registry: Map<AztecAddress, SharedMutable<Field, KEY_ROTATION_DELAY>>,\n }\n\n #[aztec(public)]\n fn rotate_npk_m(address: AztecAddress, new_npk_m: Point, nonce: Field) {\n // TODO: (#6137)\n if (!address.eq(context.msg_sender())) {\n assert_current_call_valid_authwit_public(&mut context, address);\n } else {\n assert(nonce == 0, \"invalid nonce\");\n }\n\n let npk_m_x_registry = storage.npk_m_x_registry.at(address);\n let npk_m_y_registry = storage.npk_m_y_registry.at(address);\n npk_m_x_registry.schedule_value_change(new_npk_m.x);\n npk_m_y_registry.schedule_value_change(new_npk_m.y);\n }\n\n // We need to have two separate register functions because a single one would produce too many storage writes, since\n // each SharedMutable.schedule_value_change call results in 5 writes (pre, post, block_of_change, delay and hash),\n // totaling 40 writes, while the kernels only accept up to 32 writes.\n // Once SharedMutable accepts multi-field values, we can have a single state variable hold all keys, and that way\n // also have a single block of change, hash, and delay.\n // TODO (#5491): make this be a single function with a single schedule call.\n\n #[aztec(public)]\n fn register_npk_and_ivpk(address: AztecAddress, partial_address: PartialAddress, keys: PublicKeys) {\n let computed_address = AztecAddress::compute(keys.hash(), partial_address);\n\n assert(computed_address.eq(address), \"Computed address does not match supplied address\");\n\n let npk_m_x_registry = storage.npk_m_x_registry.at(address);\n let npk_m_y_registry = storage.npk_m_y_registry.at(address);\n let ivpk_m_x_registry = storage.ivpk_m_x_registry.at(address);\n let ivpk_m_y_registry = storage.ivpk_m_y_registry.at(address);\n\n npk_m_x_registry.schedule_value_change(keys.npk_m.x);\n npk_m_y_registry.schedule_value_change(keys.npk_m.y);\n ivpk_m_x_registry.schedule_value_change(keys.ivpk_m.x);\n ivpk_m_y_registry.schedule_value_change(keys.ivpk_m.y);\n }\n\n #[aztec(public)]\n fn register_ovpk_and_tpk(address: AztecAddress, partial_address: PartialAddress, keys: PublicKeys) {\n let computed_address = AztecAddress::compute(keys.hash(), partial_address);\n\n assert(computed_address.eq(address), \"Computed address does not match supplied address\");\n\n let ovpk_m_x_registry = storage.ovpk_m_x_registry.at(address);\n let ovpk_m_y_registry = storage.ovpk_m_y_registry.at(address);\n let tpk_m_x_registry = storage.tpk_m_x_registry.at(address);\n let tpk_m_y_registry = storage.tpk_m_y_registry.at(address);\n\n ovpk_m_x_registry.schedule_value_change(keys.ovpk_m.x);\n ovpk_m_y_registry.schedule_value_change(keys.ovpk_m.y);\n tpk_m_x_registry.schedule_value_change(keys.tpk_m.x);\n tpk_m_y_registry.schedule_value_change(keys.tpk_m.y);\n }\n}\n"},"48":{"path":"std/uint128.nr","source":"use crate::ops::{Add, Sub, Mul, Div, Rem, Not, BitOr, BitAnd, BitXor, Shl, Shr};\nuse crate::cmp::{Eq, Ord, Ordering};\nuse crate::println;\n\nglobal pow64 : Field = 18446744073709551616; //2^64;\nglobal pow63 : Field = 9223372036854775808; // 2^63;\nstruct U128 {\n lo: Field,\n hi: Field,\n}\n\nimpl U128 {\n\n pub fn from_u64s_le(lo: u64, hi: u64) -> U128 {\n // in order to handle multiplication, we need to represent the product of two u64 without overflow\n assert(crate::field::modulus_num_bits() as u32 > 128);\n U128 { lo: lo as Field, hi: hi as Field }\n }\n\n pub fn from_u64s_be(hi: u64, lo: u64) -> U128 {\n U128::from_u64s_le(lo, hi)\n }\n\n pub fn zero() -> U128 {\n U128 { lo: 0, hi: 0 }\n }\n\n pub fn one() -> U128 {\n U128 { lo: 1, hi: 0 }\n }\n pub fn from_le_bytes(bytes: [u8; 16]) -> U128 {\n let mut lo = 0;\n let mut base = 1;\n for i in 0..8 {\n lo += (bytes[i] as Field)*base;\n base *= 256;\n }\n let mut hi = 0;\n base = 1;\n for i in 8..16 {\n hi += (bytes[i] as Field)*base;\n base *= 256;\n }\n U128 { lo, hi }\n }\n\n pub fn to_be_bytes(self: Self) -> [u8; 16] {\n let lo = self.lo.to_be_bytes(8);\n let hi = self.hi.to_be_bytes(8);\n let mut bytes = [0; 16];\n for i in 0..8 {\n bytes[i] = hi[i];\n bytes[i+8] = lo[i];\n }\n bytes\n }\n\n pub fn to_le_bytes(self: Self) -> [u8; 16] {\n let lo = self.lo.to_le_bytes(8);\n let hi = self.hi.to_le_bytes(8);\n let mut bytes = [0; 16];\n for i in 0..8 {\n bytes[i] = lo[i];\n bytes[i+8] = hi[i];\n }\n bytes\n }\n\n pub fn from_hex<let N: u32>(hex: str<N>) -> U128 {\n let N = N as u32;\n let bytes = hex.as_bytes();\n // string must starts with \"0x\"\n assert((bytes[0] == 48) & (bytes[1] == 120), \"Invalid hexadecimal string\");\n assert(N < 35, \"Input does not fit into a U128\");\n\n let mut lo = 0;\n let mut hi = 0;\n let mut base = 1;\n if N <= 18 {\n for i in 0..N - 2 {\n lo += U128::decode_ascii(bytes[N-i-1])*base;\n base = base*16;\n }\n } else {\n for i in 0..16 {\n lo += U128::decode_ascii(bytes[N-i-1])*base;\n base = base*16;\n }\n base = 1;\n for i in 17..N - 1 {\n hi += U128::decode_ascii(bytes[N-i])*base;\n base = base*16;\n }\n }\n U128 { lo: lo as Field, hi: hi as Field }\n }\n\n unconstrained fn uconstrained_check_is_upper_ascii(ascii: u8) -> bool {\n ((ascii >= 65) & (ascii <= 90)) // Between 'A' and 'Z'\n }\n\n fn decode_ascii(ascii: u8) -> Field {\n if ascii < 58 {\n ascii - 48\n } else {\n let ascii = ascii + 32 * (U128::uconstrained_check_is_upper_ascii(ascii) as u8);\n assert(ascii >= 97); // enforce >= 'a'\n assert(ascii <= 102); // enforce <= 'f'\n ascii - 87\n } as Field\n }\n\n // TODO: Replace with a faster version. \n // A circuit that uses this function can be slow to compute\n // (we're doing up to 127 calls to compute the quotient)\n unconstrained fn unconstrained_div(self: Self, b: U128) -> (U128, U128) {\n if b == U128::zero() {\n // Return 0,0 to avoid eternal loop\n (U128::zero(), U128::zero())\n } else if self < b {\n (U128::zero(), self)\n } else if self == b {\n (U128::one(), U128::zero())\n } else {\n let (q,r) = if b.hi as u64 >= pow63 as u64 {\n // The result of multiplication by 2 would overflow\n (U128::zero(), self)\n } else {\n self.unconstrained_div(b * U128::from_u64s_le(2, 0))\n };\n let q_mul_2 = q * U128::from_u64s_le(2, 0);\n if r < b {\n (q_mul_2, r)\n } else {\n (q_mul_2 + U128::one(), r - b)\n }\n }\n }\n\n pub fn from_integer<T>(i: T) -> U128 {\n let f = crate::as_field(i);\n // Reject values which would overflow a u128\n f.assert_max_bit_size(128);\n let lo = f as u64 as Field;\n let hi = (f - lo) / pow64;\n U128 { lo, hi }\n }\n\n pub fn to_integer<T>(self) -> T {\n crate::from_field(self.lo + self.hi * pow64)\n }\n\n fn wrapping_mul(self: Self, b: U128) -> U128 {\n let low = self.lo * b.lo;\n let lo = low as u64 as Field;\n let carry = (low - lo) / pow64;\n let high = self.lo * b.hi + self.hi * b.lo + carry;\n let hi = high as u64 as Field;\n U128 { lo, hi }\n }\n}\n\nimpl Add for U128 {\n fn add(self: Self, b: U128) -> U128 {\n let low = self.lo + b.lo;\n let lo = low as u64 as Field;\n let carry = (low - lo) / pow64; \n let high = self.hi + b.hi + carry;\n let hi = high as u64 as Field;\n assert(hi == high, \"attempt to add with overflow\");\n U128 {\n lo,\n hi,\n }\n }\n}\n\nimpl Sub for U128 {\n fn sub(self: Self, b: U128) -> U128 {\n let low = pow64 + self.lo - b.lo;\n let lo = low as u64 as Field;\n let borrow = (low == lo) as Field;\n let high = self.hi - b.hi - borrow;\n let hi = high as u64 as Field;\n assert(hi == high, \"attempt to subtract with underflow\");\n U128 {\n lo,\n hi,\n }\n }\n}\n\nimpl Mul for U128 {\n fn mul(self: Self, b: U128) -> U128 {\n assert(self.hi*b.hi == 0, \"attempt to multiply with overflow\");\n let low = self.lo*b.lo;\n let lo = low as u64 as Field;\n let carry = (low - lo) / pow64;\n let high = if crate::field::modulus_num_bits() as u32 > 196 {\n (self.lo+self.hi)*(b.lo+b.hi) - low + carry\n } else {\n self.lo*b.hi + self.hi*b.lo + carry\n };\n let hi = high as u64 as Field;\n assert(hi == high, \"attempt to multiply with overflow\");\n U128 {\n lo,\n hi,\n }\n }\n}\n\nimpl Div for U128 {\n fn div(self: Self, b: U128) -> U128 {\n let (q,r) = self.unconstrained_div(b);\n let a = b * q + r;\n assert_eq(self, a);\n assert(r < b);\n q\n }\n}\n\nimpl Rem for U128 {\n fn rem(self: Self, b: U128) -> U128 {\n let (q,r) = self.unconstrained_div(b);\n let a = b * q + r;\n assert_eq(self, a);\n assert(r < b);\n r\n }\n}\n\nimpl Eq for U128 {\n fn eq(self: Self, b: U128) -> bool {\n (self.lo == b.lo) & (self.hi == b.hi)\n }\n}\n\nimpl Ord for U128 {\n fn cmp(self, other: Self) -> Ordering {\n let hi_ordering = (self.hi as u64).cmp((other.hi as u64));\n let lo_ordering = (self.lo as u64).cmp((other.lo as u64));\n \n if hi_ordering == Ordering::equal() {\n lo_ordering\n } else {\n hi_ordering\n }\n }\n}\n\nimpl Not for U128 { \n fn not(self) -> U128 {\n U128 {\n lo: (!(self.lo as u64)) as Field,\n hi: (!(self.hi as u64)) as Field\n }\n }\n}\n\nimpl BitOr for U128 { \n fn bitor(self, other: U128) -> U128 {\n U128 {\n lo: ((self.lo as u64) | (other.lo as u64)) as Field,\n hi: ((self.hi as u64) | (other.hi as u64)) as Field\n }\n }\n}\n\nimpl BitAnd for U128 {\n fn bitand(self, other: U128) -> U128 { \n U128 {\n lo: ((self.lo as u64) & (other.lo as u64)) as Field,\n hi: ((self.hi as u64) & (other.hi as u64)) as Field\n }\n }\n}\n\nimpl BitXor for U128 {\n fn bitxor(self, other: U128) -> U128 { \n U128 {\n lo: ((self.lo as u64) ^ (other.lo as u64)) as Field,\n hi: ((self.hi as u64) ^ (other.hi as u64)) as Field\n }\n }\n}\n\nimpl Shl for U128 { \n fn shl(self, other: u8) -> U128 { \n assert(other < 128, \"attempt to shift left with overflow\");\n let exp_bits = (other as Field).to_be_bits(7);\n\n let mut r: Field = 2;\n let mut y: Field = 1;\n for i in 1..8 {\n y = (exp_bits[7-i] as Field) * (r * y) + (1 - exp_bits[7-i] as Field) * y;\n r *= r;\n }\n self.wrapping_mul(U128::from_integer(y))\n } \n}\n\nimpl Shr for U128 { \n fn shr(self, other: u8) -> U128 { \n assert(other < 128, \"attempt to shift right with overflow\");\n let exp_bits = (other as Field).to_be_bits(7);\n\n let mut r: Field = 2;\n let mut y: Field = 1;\n for i in 1..8 {\n y = (exp_bits[7-i] as Field) * (r * y) + (1 - exp_bits[7-i] as Field) * y;\n r *= r;\n }\n self / U128::from_integer(y)\n } \n}\n\nmod tests {\n use crate::uint128::{U128, pow64, pow63};\n\n #[test]\n fn test_not(lo: u64, hi: u64) {\n let num = U128::from_u64s_le(lo, hi);\n let not_num = num.not();\n\n assert_eq(not_num.hi, (hi.not() as Field));\n assert_eq(not_num.lo, (lo.not() as Field));\n\n let not_not_num = not_num.not();\n assert_eq(num, not_not_num);\n }\n #[test]\n fn test_construction() {\n // Check little-endian u64 is inversed with big-endian u64 construction\n let a = U128::from_u64s_le(2, 1);\n let b = U128::from_u64s_be(1, 2);\n assert_eq(a, b);\n // Check byte construction is equivalent\n let c = U128::from_le_bytes([0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]);\n let d = U128::from_u64s_le(0x0706050403020100, 0x0f0e0d0c0b0a0908);\n assert_eq(c, d);\n }\n #[test]\n fn test_byte_decomposition() {\n let a = U128::from_u64s_le(0x0706050403020100, 0x0f0e0d0c0b0a0908);\n // Get big-endian and little-endian byte decompostions\n let le_bytes_a= a.to_le_bytes();\n let be_bytes_a= a.to_be_bytes();\n\n // Check equivalence\n for i in 0..16 {\n assert_eq(le_bytes_a[i], be_bytes_a[15 - i]);\n }\n // Reconstruct U128 from byte decomposition\n let b= U128::from_le_bytes(le_bytes_a);\n // Check that it's the same element\n assert_eq(a, b);\n }\n #[test]\n fn test_hex_constuction() {\n let a = U128::from_u64s_le(0x1, 0x2);\n let b = U128::from_hex(\"0x20000000000000001\");\n assert_eq(a, b);\n\n let c= U128::from_hex(\"0xffffffffffffffffffffffffffffffff\");\n let d= U128::from_u64s_le(0xffffffffffffffff, 0xffffffffffffffff);\n assert_eq(c, d);\n\n let e= U128::from_hex(\"0x00000000000000000000000000000000\");\n let f= U128::from_u64s_le(0, 0);\n assert_eq(e, f);\n }\n\n // Ascii decode tests\n\n #[test]\n fn test_ascii_decode_correct_range() {\n // '0'..'9' range\n for i in 0..10 {\n let decoded= U128::decode_ascii(48 + i);\n assert_eq(decoded, i as Field);\n }\n // 'A'..'F' range\n for i in 0..6 {\n let decoded = U128::decode_ascii(65 + i);\n assert_eq(decoded, (i + 10) as Field);\n }\n // 'a'..'f' range\n for i in 0..6 {\n let decoded = U128::decode_ascii(97 + i);\n assert_eq(decoded, (i + 10) as Field);\n }\n }\n\n #[test(should_fail)]\n fn test_ascii_decode_range_less_than_48_fails_0() {\n crate::println(U128::decode_ascii(0));\n }\n #[test(should_fail)]\n fn test_ascii_decode_range_less_than_48_fails_1() {\n crate::println(U128::decode_ascii(47));\n }\n\n #[test(should_fail)]\n fn test_ascii_decode_range_58_64_fails_0() {\n let _ = U128::decode_ascii(58);\n }\n #[test(should_fail)]\n fn test_ascii_decode_range_58_64_fails_1() {\n let _ = U128::decode_ascii(64);\n }\n #[test(should_fail)]\n fn test_ascii_decode_range_71_96_fails_0() {\n let _ = U128::decode_ascii(71);\n }\n #[test(should_fail)]\n fn test_ascii_decode_range_71_96_fails_1() {\n let _ = U128::decode_ascii(96);\n }\n #[test(should_fail)]\n fn test_ascii_decode_range_greater_than_102_fails() {\n let _ = U128::decode_ascii(103);\n }\n\n #[test(should_fail)]\n fn test_ascii_decode_regression() {\n // This code will actually fail because of ascii_decode,\n // but in the past it was possible to create a value > (1<<128)\n let a = U128::from_hex(\"0x~fffffffffffffffffffffffffffffff\");\n let b:Field= a.to_integer();\n let c= b.to_le_bytes(17);\n assert(c[16] != 0);\n }\n\n #[test]\n fn test_unconstrained_div() {\n // Test the potential overflow case\n let a= U128::from_u64s_le(0x0, 0xffffffffffffffff);\n let b= U128::from_u64s_le(0x0, 0xfffffffffffffffe);\n let c= U128::one();\n let d= U128::from_u64s_le(0x0, 0x1);\n let (q,r) = a.unconstrained_div(b);\n assert_eq(q, c);\n assert_eq(r, d);\n\n let a = U128::from_u64s_le(2, 0);\n let b = U128::one();\n // Check the case where a is a multiple of b\n let (c,d ) = a.unconstrained_div(b);\n assert_eq((c, d), (a, U128::zero()));\n\n // Check where b is a multiple of a\n let (c,d) = b.unconstrained_div(a);\n assert_eq((c, d), (U128::zero(), b));\n\n // Dividing by zero returns 0,0\n let a = U128::from_u64s_le(0x1, 0x0);\n let b = U128::zero();\n let (c,d)= a.unconstrained_div(b);\n assert_eq((c, d), (U128::zero(), U128::zero()));\n\n // Dividing 1<<127 by 1<<127 (special case)\n let a = U128::from_u64s_le(0x0, pow63 as u64);\n let b = U128::from_u64s_le(0x0, pow63 as u64);\n let (c,d )= a.unconstrained_div(b);\n assert_eq((c, d), (U128::one(), U128::zero()));\n }\n\n #[test]\n fn integer_conversions() {\n // Maximum\n let start:Field = 0xffffffffffffffffffffffffffffffff;\n let a = U128::from_integer(start);\n let end = a.to_integer();\n assert_eq(start, end);\n\n // Minimum\n let start:Field = 0x0;\n let a = U128::from_integer(start);\n let end = a.to_integer();\n assert_eq(start, end);\n\n // Low limb\n let start:Field = 0xffffffffffffffff;\n let a = U128::from_integer(start);\n let end = a.to_integer();\n assert_eq(start, end);\n\n // High limb\n let start:Field = 0xffffffffffffffff0000000000000000;\n let a = U128::from_integer(start);\n let end = a.to_integer();\n assert_eq(start, end);\n }\n\n #[test]\n fn integer_conversions_fuzz(lo: u64, hi: u64) {\n let start: Field = (lo as Field) + pow64 * (hi as Field);\n let a = U128::from_integer(start);\n let end = a.to_integer();\n assert_eq(start, end);\n }\n\n #[test]\n fn test_wrapping_mul() {\n // 1*0==0\n assert_eq(U128::zero(), U128::zero().wrapping_mul(U128::one()));\n\n // 0*1==0\n assert_eq(U128::zero(), U128::one().wrapping_mul(U128::zero()));\n\n // 1*1==1\n assert_eq(U128::one(), U128::one().wrapping_mul(U128::one()));\n\n // 0 * ( 1 << 64 ) == 0\n assert_eq(U128::zero(), U128::zero().wrapping_mul(U128::from_u64s_le(0, 1)));\n\n // ( 1 << 64 ) * 0 == 0\n assert_eq(U128::zero(), U128::from_u64s_le(0, 1).wrapping_mul(U128::zero()));\n\n // 1 * ( 1 << 64 ) == 1 << 64\n assert_eq(U128::from_u64s_le(0, 1), U128::from_u64s_le(0, 1).wrapping_mul(U128::one()));\n\n // ( 1 << 64 ) * 1 == 1 << 64\n assert_eq(U128::from_u64s_le(0, 1), U128::one().wrapping_mul(U128::from_u64s_le(0, 1)));\n\n // ( 1 << 64 ) * ( 1 << 64 ) == 1 << 64\n assert_eq(U128::zero(), U128::from_u64s_le(0, 1).wrapping_mul(U128::from_u64s_le(0, 1)));\n // -1 * -1 == 1\n assert_eq(\n U128::one(), U128::from_u64s_le(0xffffffffffffffff, 0xffffffffffffffff).wrapping_mul(U128::from_u64s_le(0xffffffffffffffff, 0xffffffffffffffff))\n );\n }\n}\n"},"55":{"path":"/usr/src/noir-projects/aztec-nr/authwit/src/auth.nr","source":"use dep::aztec::protocol_types::{\n abis::function_selector::FunctionSelector, address::AztecAddress,\n constants::{\n GENERATOR_INDEX__AUTHWIT_INNER, GENERATOR_INDEX__AUTHWIT_OUTER, GENERATOR_INDEX__AUTHWIT_NULLIFIER,\n CANONICAL_AUTH_REGISTRY_ADDRESS\n},\n hash::pedersen_hash\n};\nuse dep::aztec::{prelude::Deserialize, context::{PrivateContext, PublicContext, gas::GasOpts}, hash::hash_args_array};\n\n/**\n * Authenticaion witness helper library\n *\n * Authentication Witness is a scheme for authenticating actions on Aztec, so users can allow third-parties \n * (e.g. protocols or other users) to execute an action on their behalf.\n * \n * This library provides helper functions to manage such witnesses.\n * The authentication witness, is some \"witness\" (data) that authenticates a `message_hash`.\n * The simplest example of an authentication witness, is a signature. The signature is the \"evidence\",\n * that the signer has seen the message, agrees with it, and has allowed it.\n * It does not need to be a signature. It could be any kind of \"proof\" that the message is allowed.\n * Another proof could be knowing some kind of secret, or having some kind of \"token\" that allows the message.\n *\n * The `message_hash` is a hash of the following structure:\n * hash(consumer, chain_id, version, inner_hash)\n * - consumer: the address of the contract that is \"consuming\" the message,\n * - chain_id: the chain id of the chain that the message is being consumed on,\n * - version: the version of the chain that the message is being consumed on,\n * - inner_hash: the hash of the \"inner\" message that is being consumed, this is the \"actual\" message or action.\n *\n * While the `inner_hash` could be anything, such as showing you signed a specific message, it will often be \n * a hash of the \"action\" to approve, along with who made the call. As part of this library, we provide a few \n * helper functions to deal with such messages.\n *\n * For example, we provide helper function that is used for checking that the message is an encoding of the current call.\n * This can be used to let some contract \"allow\" another contract to act on its behalf, as long as it can \n * show that it is acting on behalf of the contract.\n *\n * If we take a case of allowing a contract to transfer tokens on behalf of an account, the `inner_hash` can be \n * derived as:\n * inner_hash = hash(caller, \"transfer\", hash(to, amount))\n * \n * Where the `caller` would be the address of the contract that is trying to transfer the tokens, and `to` and `amount`\n * the arguments for the transfer. \n * \n * Note that we have both a `caller` and a `consumer`, the `consumer` will be the contract that is consuming the message,\n * in the case of the transfer, it would be the `Token` contract itself, while the caller, will be the actor that is \n * allowed to transfer the tokens.\n *\n *\n * The authentication mechanism works differently in public and private contexts. In private, we recall that everything\n * is executed on the user's device, so we can use `oracles` to \"ask\" the user (not contract) for information. In public\n * we cannot do this, since it is executed by the sequencer (someone else). Therefore we can instead use a \"registry\"\n * to store the messages that we have approved.\n * \n * A simple example would be a \"token\" that is being \"pulled\" from one account into another. We will first outline \n * how this would look in private, and then in public later. \n *\n * Say that a user `Alice` wants to deposit some tokens into a DeFi protocol (say a DEX). \n * `Alice` would make a `deposit` transaction, that she is executing using her account contract. \n * The account would call the `DeFi` contract to execute `deposit`, which would try to pull funds from the `Token` \n * contract. Since the `DeFi` contract is trying to pull funds from an account that is not its own, it needs to \n * convince the `Token` contract that it is allowed to do so. \n * \n * This is where the authentication witness comes in! The `Token` contract computes a `message_hash` from the \n * `transfer` call, and then asks `Alice Account` contract to verify that the `DeFi` contract is allowed to \n * execute that call.\n * \n * `Alice Account` contract can then ask `Alice` if she wants to allow the `DeFi` contract to pull funds from her \n * account. If she does, she will sign the `message_hash` and return the signature to the `Alice Account` which\n * will validate it and return success to the `Token` contract which will then allow the `DeFi` contract to pull\n * funds from `Alice`.\n * \n * To ensure that the same \"approval\" cannot be used multiple times, we also compute a `nullifier` for the\n * authentication witness, and emit it from the `Token` contract (consumer).\n * \n * Note that we can do this flow as we are in private were we can do oracle calls out from contracts. \n * \n *\n * Person Contract Contract Contract\n * Alice Alice Account Token DeFi\n * | | | |\n * | Defi.deposit(Token, 1000) | |\n * |----------------->| | |\n * | | deposit(Token, 1000) |\n * | |---------------------------------------->|\n * | | | |\n * | | | transfer(Alice, Defi, 1000)\n * | | |<---------------------|\n * | | | |\n * | | Check if Defi may call transfer(Alice, Defi, 1000)\n * | |<-----------------| |\n * | | | |\n * | Please give me AuthWit for DeFi | |\n * | calling transfer(Alice, Defi, 1000) | |\n * |<-----------------| | |\n * | | | |\n * | | | |\n * | AuthWit for transfer(Alice, Defi, 1000) |\n * |----------------->| | |\n * | | AuthWit validity | |\n * | |----------------->| |\n * | | | |\n * | | throw if invalid AuthWit |\n * | | | |\n * | | emit AuthWit nullifier |\n * | | | |\n * | | transfer(Alice, Defi, 1000) |\n * | | | |\n * | | | |\n * | | | success |\n * | | |--------------------->|\n * | | | |\n * | | | |\n * | | | deposit(Token, 1000)\n * | | | |\n * | | | |\n *\n * \n * If we instead were in public, we cannot do the same flow. Instead we would use an authentication registry to store \n * the messages that we have approved. \n * \n * To approve a message, `Alice Account` can make a `set_authorized` call to the registry, to set a `message_hash`\n * as authorized. This is essentially a mapping from `message_hash` to `true` for `Alice Contract`. Every account\n * has its own map in the registry, so `Alice` cannot approve a message for `Bob`.\n *\n * The `Token` contract can then try to \"spend\" the approval by calling `consume` on the registry. If the message\n * was approved, the value is updated to `false`, and we return the success flag. For more information on the\n * registry, see `main.nr` in `auth_registry_contract`.\n *\n * Person Contract Contract Contract Contract\n * Alice Alice Account Registry Token DeFi\n * | | | | |\n * | Registry.set_authorized(..., true) | | |\n * |----------------->| | | |\n * | | set_authorized(..., true) | |\n * | |------------------->| | |\n * | | | | |\n * | | set authorized to true | |\n * | | | | |\n * | | | | |\n * | Defi.deposit(Token, 1000) | | |\n * |----------------->| | | |\n * | | deposit(Token, 1000) | |\n * | |-------------------------------------------------------------->|\n * | | | | |\n * | | | transfer(Alice, Defi, 1000) |\n * | | | |<---------------------|\n * | | | | |\n * | | | Check if Defi may call transfer(Alice, Defi, 1000)\n * | | |<------------------| |\n * | | | | |\n * | | throw if invalid AuthWit | |\n * | | | | |\n * | | | | |\n * | | set authorized to false | |\n * | | | | |\n * | | | | |\n * | | | AuthWit validity | |\n * | | |------------------>| |\n * | | | | |\n * | | | | transfer(Alice, Defi, 1000)\n * | | | |<-------------------->|\n * | | | | |\n * | | | | success |\n * | | | |--------------------->|\n * | | | | |\n * | | | | deposit(Token, 1000)\n * | | | | |\n *\n *\n * --- FAQ ---\n * Q: Why are we using a success flag of `keccak256(\"IS_VALID()\")` instead of just returning a boolean?\n * A: We want to make sure that we don't accidentally return `true` if there is a collision in the function selector.\n * By returning a hash of `IS_VALID()`, it becomes very unlikely that there is both a colission and we return \n * a success flag.\n * \n * Q: Why are we using static calls?\n * A: We are using static calls to ensure that the account contract cannot re-enter. If it was a normal call, it\n * could make a new call and do a re-entry attack. Using a static ensures that it cannot update any state.\n *\n * Q: Would it not be cheaper to use a nullifier instead of updating state in public?\n * A: At a quick glance, a public state update + nullifier is 96 bytes, but two state updates are 128, so it would be \n * cheaper to use a nullifier, if this is the way it would always be done. However, if both the approval and the \n * consumption is done in the same transaction, then we will be able to squash the updates (only final tx state diff is posted to DA), and now it is cheaper.\n * \n * Q: Why is the chain id and the version part of the message hash?\n * A: The chain id and the version is part of the message hash to ensure that the message is only valid on a specific\n * chain to avoid a case where the same message could be used across multiple chains. \n */\n\nglobal IS_VALID_SELECTOR = 0xabf64ad4; // 4 first bytes of keccak256(\"IS_VALID()\")\n\n/** \n * Assert that `on_behalf_of` have authorized the current call with a valid authentication witness\n * \n * Computing the `inner_hash` using the `msg_sender`, `selector` and `args_hash` and then making a call out to the \n * `on_behalf_of` contract to verify that the `inner_hash` is valid.\n * \n * @param on_behalf_of The address that have authorized the current call\n */\n// docs:start:assert_current_call_valid_authwit\npub fn assert_current_call_valid_authwit(context: &mut PrivateContext, on_behalf_of: AztecAddress) {\n let inner_hash = compute_inner_authwit_hash([context.msg_sender().to_field(), context.selector().to_field(), context.args_hash]);\n assert_inner_hash_valid_authwit(context, on_behalf_of, inner_hash);\n}\n// docs:end:assert_current_call_valid_authwit\n\n/** \n * Assert that a specific `inner_hash` is valid for the `on_behalf_of` address\n * \n * Used as an internal function for `assert_current_call_valid_authwit` and can be used as a standalone function when\n * the `inner_hash` is from a different source, e.g., say a block of text etc.\n * \n * @param on_behalf_of The address that have authorized the current call\n * @param inner_hash The hash of the message to authorize \n */\npub fn assert_inner_hash_valid_authwit(context: &mut PrivateContext, on_behalf_of: AztecAddress, inner_hash: Field) {\n // We perform a static call here and not a standard one to ensure that the account contract cannot re-enter.\n let result: Field = context.static_call_private_function(\n on_behalf_of,\n FunctionSelector::from_signature(\"verify_private_authwit(Field)\"),\n [inner_hash]\n ).unpack_into();\n assert(result == IS_VALID_SELECTOR, \"Message not authorized by account\");\n // Compute the nullifier, similar computation to the outer hash, but without the chain_id and version.\n // Those should already be handled in the verification, so we just need something to nullify, that allow same inner_hash for multiple actors.\n let nullifier = compute_authwit_nullifier(on_behalf_of, inner_hash);\n context.push_nullifier(nullifier, 0);\n}\n\n/** \n * Assert that `on_behalf_of` have authorized the current call in the authentication registry\n * \n * Computing the `inner_hash` using the `msg_sender`, `selector` and `args_hash` and then making a call out to the \n * `on_behalf_of` contract to verify that the `inner_hash` is valid.\n * \n * Note that the authentication registry will take the `msg_sender` into account as the consumer, so this will only\n * work if the `msg_sender` is the same as the `consumer` when the `message_hash` was inserted into the registry.\n * \n * @param on_behalf_of The address that have authorized the current call\n */\n// docs:start:assert_current_call_valid_authwit_public\npub fn assert_current_call_valid_authwit_public(context: &mut PublicContext, on_behalf_of: AztecAddress) {\n let inner_hash = compute_inner_authwit_hash(\n [(*context).msg_sender().to_field(), (*context).selector().to_field(), (*context).get_args_hash()]\n );\n assert_inner_hash_valid_authwit_public(context, on_behalf_of, inner_hash);\n}\n// docs:end:assert_current_call_valid_authwit_public\n\n/** \n * Assert that `on_behalf_of` have authorized a speicifc `inner_hash` in the authentication registry\n * \n * Computing the `inner_hash` using the `msg_sender`, `selector` and `args_hash` and then making a call out to the \n * `on_behalf_of` contract to verify that the `inner_hash` is valid.\n *\n * Note that the authentication registry will take the `msg_sender` into account as the consumer, so this will only\n * work if the `msg_sender` is the same as the `consumer` when the `message_hash` was inserted into the registry.\n * \n * @param on_behalf_of The address that have authorized the the `inner_hash`\n */\npub fn assert_inner_hash_valid_authwit_public(context: &mut PublicContext, on_behalf_of: AztecAddress, inner_hash: Field) {\n let result: Field = context.call_public_function(\n AztecAddress::from_field(CANONICAL_AUTH_REGISTRY_ADDRESS),\n FunctionSelector::from_signature(\"consume((Field),Field)\"),\n [on_behalf_of.to_field(), inner_hash].as_slice(),\n GasOpts::default()\n ).deserialize_into();\n assert(result == IS_VALID_SELECTOR, \"Message not authorized by account\");\n}\n\n/**\n * Compute the `message_hash` from a function call to be used by an authentication witness \n * \n * Useful for when you need a non-account contract to approve during execution. For example if you need a contract\n * to make a call to nested contract, e.g., contract A wants to exit token T to L1 using bridge B, so it needs to allow\n * B to transfer T on its behalf.\n * \n * @param caller The address of the contract that is calling the function, in the example above, this would be B\n * @param consumer The address of the contract that is consuming the message, in the example above, this would be T\n * @param chain_id The chain id of the chain that the message is being consumed on\n * @param version The version of the chain that the message is being consumed on\n * @param selector The function selector of the function that is being called\n * @param args The arguments of the function that is being called\n */\n// docs:start:compute_authwit_message_hash_from_call\npub fn compute_authwit_message_hash_from_call<N>(\n caller: AztecAddress,\n consumer: AztecAddress,\n chain_id: Field,\n version: Field,\n selector: FunctionSelector,\n args: [Field; N]\n) -> Field {\n let args_hash = hash_args_array(args);\n let inner_hash = compute_inner_authwit_hash([caller.to_field(), selector.to_field(), args_hash]);\n compute_authwit_message_hash(consumer, chain_id, version, inner_hash)\n}\n// docs:end:compute_authwit_message_hash_from_call\n\n/**\n * Computes the `inner_hash` of the authentication witness\n * \n * This is used internally, but also useful in cases where you want to compute the `inner_hash` for a specific message\n * that is not necessarily a call, but just some \"bytes\" or text.\n * \n * @param args The arguments to hash\n */\npub fn compute_inner_authwit_hash<N>(args: [Field; N]) -> Field {\n pedersen_hash(args, GENERATOR_INDEX__AUTHWIT_INNER)\n}\n\n/** \n * Computs the `authwit_nullifier` for a specific `on_behalf_of` and `inner_hash`\n * \n * Using the `on_behalf_of` and the `inner_hash` to ensure that the nullifier is siloed for a specific `on_behalf_of`.\n * \n * @param on_behalf_of The address that have authorized the the `inner_hash`\n * @param inner_hash The hash of the message to authorize\n */\npub fn compute_authwit_nullifier(on_behalf_of: AztecAddress, inner_hash: Field) -> Field {\n pedersen_hash(\n [on_behalf_of.to_field(), inner_hash],\n GENERATOR_INDEX__AUTHWIT_NULLIFIER\n )\n}\n\n/**\n * Computes the `message_hash` for the authentication witness\n * \n * @param consumer The address of the contract that is consuming the message\n * @param chain_id The chain id of the chain that the message is being consumed on\n * @param version The version of the chain that the message is being consumed on\n * @param inner_hash The hash of the \"inner\" message that is being consumed\n */\npub fn compute_authwit_message_hash(consumer: AztecAddress, chain_id: Field, version: Field, inner_hash: Field) -> Field {\n pedersen_hash(\n [\n consumer.to_field(),\n chain_id,\n version,\n inner_hash\n ],\n GENERATOR_INDEX__AUTHWIT_OUTER\n )\n}\n\n/**\n * Helper function to set the authorization status of a message hash\n * \n * Wraps a public call to the authentication registry to set the authorization status of a `message_hash`\n * \n * @param message_hash The hash of the message to authorize\n * @param authorize True if the message should be authorized, false if it should be revoked\n */\npub fn set_authorized(context: &mut PublicContext, message_hash: Field, authorize: bool) {\n context.call_public_function(\n AztecAddress::from_field(CANONICAL_AUTH_REGISTRY_ADDRESS),\n FunctionSelector::from_signature(\"set_authorized(Field,bool)\"),\n [message_hash, authorize as Field].as_slice(),\n GasOpts::default()\n ).assert_empty();\n}\n\n/**\n * Helper function to reject all authwits\n * \n * Wraps a public call to the authentication registry to set the `reject_all` flag\n *\n * @param reject True if all authwits should be rejected, false otherwise \n */\npub fn set_reject_all(context: &mut PublicContext, reject: bool) {\n context.call_public_function(\n AztecAddress::from_field(CANONICAL_AUTH_REGISTRY_ADDRESS),\n FunctionSelector::from_signature(\"set_reject_all(bool)\"),\n [context.this_address().to_field(), reject as Field].as_slice(),\n GasOpts::default()\n ).assert_empty();\n}\n"},"67":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/keys/public_keys.nr","source":"use dep::protocol_types::{\n address::PublicKeysHash, constants::GENERATOR_INDEX__PUBLIC_KEYS_HASH, hash::poseidon2_hash,\n point::Point, traits::{Deserialize, Serialize, Empty, is_empty}\n};\nuse crate::keys::constants::{NUM_KEY_TYPES, NULLIFIER_INDEX, INCOMING_INDEX, OUTGOING_INDEX};\n\nglobal PUBLIC_KEYS_LENGTH = 12;\n\nstruct PublicKeys {\n npk_m: Point,\n ivpk_m: Point,\n ovpk_m: Point,\n tpk_m: Point,\n}\n\nimpl Empty for PublicKeys {\n fn empty() -> Self {\n PublicKeys {\n npk_m : Point::empty(),\n ivpk_m : Point::empty(),\n ovpk_m : Point::empty(),\n tpk_m : Point::empty()\n }\n }\n}\n\nimpl Eq for PublicKeys {\n fn eq(self, other: PublicKeys) -> bool {\n ( self.npk_m == other.npk_m ) &\n ( self.ivpk_m == other.ivpk_m ) &\n ( self.ovpk_m == other.ovpk_m ) &\n ( self.tpk_m == other.tpk_m )\n }\n}\n\nimpl PublicKeys {\n pub fn hash(self) -> PublicKeysHash {\n PublicKeysHash::from_field(\n if is_empty(self) {\n 0\n } else {\n poseidon2_hash(\n [\n self.npk_m.x,\n self.npk_m.y,\n self.npk_m.is_infinite as Field,\n self.ivpk_m.x,\n self.ivpk_m.y,\n self.ivpk_m.is_infinite as Field,\n self.ovpk_m.x,\n self.ovpk_m.y,\n self.ovpk_m.is_infinite as Field,\n self.tpk_m.x,\n self.tpk_m.y,\n self.tpk_m.is_infinite as Field,\n GENERATOR_INDEX__PUBLIC_KEYS_HASH\n ]\n )\n }\n )\n }\n\n pub fn get_key_by_index(self, index: Field) -> Point {\n assert(index as u8 < NUM_KEY_TYPES, \"Invalid key index\");\n if index == NULLIFIER_INDEX {\n self.npk_m\n } else if index == INCOMING_INDEX {\n self.ivpk_m\n } else if index == OUTGOING_INDEX {\n self.ovpk_m\n } else {\n self.tpk_m\n }\n }\n}\n\nimpl Serialize<PUBLIC_KEYS_LENGTH> for PublicKeys {\n fn serialize(self) -> [Field; PUBLIC_KEYS_LENGTH] {\n [\n self.npk_m.x,\n self.npk_m.y,\n self.npk_m.is_infinite as Field,\n self.ivpk_m.x,\n self.ivpk_m.y,\n self.ivpk_m.is_infinite as Field,\n self.ovpk_m.x,\n self.ovpk_m.y,\n self.ovpk_m.is_infinite as Field,\n self.tpk_m.x,\n self.tpk_m.y,\n self.tpk_m.is_infinite as Field\n ]\n }\n}\n\nimpl Deserialize<PUBLIC_KEYS_LENGTH> for PublicKeys {\n fn deserialize(serialized: [Field; PUBLIC_KEYS_LENGTH]) -> PublicKeys {\n PublicKeys {\n npk_m: Point { x:serialized[0], y:serialized[1], is_infinite: serialized[2] as bool },\n ivpk_m: Point { x:serialized[3], y: serialized[4], is_infinite: serialized[5] as bool },\n ovpk_m: Point { x:serialized[6], y: serialized[7], is_infinite: serialized[8] as bool },\n tpk_m: Point { x:serialized[9], y: serialized[10], is_infinite: serialized[11] as bool }\n }\n }\n}\n\n#[test]\nfn compute_public_keys_hash() {\n let keys = PublicKeys {\n npk_m: Point { x: 1, y: 2, is_infinite: false },\n ivpk_m: Point { x: 3, y: 4, is_infinite: false },\n ovpk_m: Point { x: 5, y: 6, is_infinite: false },\n tpk_m: Point { x: 7, y: 8, is_infinite: false }\n };\n\n let actual = keys.hash();\n let expected_public_keys_hash = 0x146f68c0e0ba4067d61a3304bbfdec0797d5df1357db6c01247c48bfb345c7d7;\n\n assert(actual.to_field() == expected_public_keys_hash);\n}\n\n#[test]\nfn compute_empty_hash() {\n let keys = PublicKeys::empty();\n\n let actual = keys.hash();\n let test_data_empty_hash = 0x0000000000000000000000000000000000000000000000000000000000000000;\n\n assert(actual.to_field() == test_data_empty_hash);\n}\n\n#[test]\nfn test_public_keys_serialization() {\n let keys = PublicKeys {\n npk_m: Point { x: 1, y: 2, is_infinite: false },\n ivpk_m: Point { x: 3, y: 4, is_infinite: false },\n ovpk_m: Point { x: 5, y: 6, is_infinite: false },\n tpk_m: Point { x: 7, y: 8, is_infinite: false }\n };\n\n let serialized = keys.serialize();\n let deserialized = PublicKeys::deserialize(serialized);\n\n assert_eq(keys.npk_m.x, deserialized.npk_m.x);\n assert_eq(keys.npk_m.y, deserialized.npk_m.y);\n assert_eq(keys.ivpk_m.x, deserialized.ivpk_m.x);\n assert_eq(keys.ivpk_m.y, deserialized.ivpk_m.y);\n assert_eq(keys.ovpk_m.x, deserialized.ovpk_m.x);\n assert_eq(keys.ovpk_m.y, deserialized.ovpk_m.y);\n assert_eq(keys.tpk_m.x, deserialized.tpk_m.x);\n assert_eq(keys.tpk_m.y, deserialized.tpk_m.y);\n}\n"},"96":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/context/public_context.nr","source":"use crate::hash::{compute_secret_hash, compute_message_hash, compute_message_nullifier};\nuse dep::protocol_types::address::{AztecAddress, EthAddress};\nuse dep::protocol_types::constants::MAX_FIELD_VALUE;\nuse dep::protocol_types::traits::{Serialize, Deserialize, Empty};\nuse dep::protocol_types::abis::function_selector::FunctionSelector;\nuse crate::context::inputs::public_context_inputs::PublicContextInputs;\nuse crate::context::gas::GasOpts;\n\nstruct PublicContext {\n inputs: PublicContextInputs,\n}\n\nimpl PublicContext {\n pub fn new(inputs: PublicContextInputs) -> Self {\n PublicContext { inputs }\n }\n\n pub fn emit_unencrypted_log<T, N>(&mut self, log: T) where T: Serialize<N> {\n emit_unencrypted_log(Serialize::serialize(log).as_slice());\n }\n\n pub fn note_hash_exists(self, note_hash: Field, leaf_index: Field) -> bool {\n note_hash_exists(note_hash, leaf_index) == 1\n }\n\n pub fn l1_to_l2_msg_exists(self, msg_hash: Field, msg_leaf_index: Field) -> bool {\n l1_to_l2_msg_exists(msg_hash, msg_leaf_index) == 1\n }\n\n fn nullifier_exists(self, unsiloed_nullifier: Field, address: AztecAddress) -> bool {\n nullifier_exists(unsiloed_nullifier, address.to_field()) == 1\n }\n\n fn consume_l1_to_l2_message(\n &mut self,\n content: Field,\n secret: Field,\n sender: EthAddress,\n leaf_index: Field\n ) {\n let secret_hash = compute_secret_hash(secret);\n let message_hash = compute_message_hash(\n sender,\n self.chain_id(),\n /*recipient=*/ self.this_address(),\n self.version(),\n content,\n secret_hash\n );\n let nullifier = compute_message_nullifier(message_hash, secret, leaf_index);\n\n assert(\n !self.nullifier_exists(nullifier, self.this_address()), \"L1-to-L2 message is already nullified\"\n );\n assert(\n self.l1_to_l2_msg_exists(message_hash, leaf_index), \"Tried to consume nonexistent L1-to-L2 message\"\n );\n\n // Push nullifier (and the \"commitment\" corresponding to this can be \"empty\")\n self.push_nullifier(nullifier, 0);\n }\n\n fn message_portal(&mut self, recipient: EthAddress, content: Field) {\n send_l2_to_l1_msg(recipient, content);\n }\n\n fn call_public_function<RETURNS_COUNT>(\n self: &mut Self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field],\n gas_opts: GasOpts\n ) -> FunctionReturns<RETURNS_COUNT> {\n let results = call(\n gas_for_call(gas_opts),\n contract_address,\n args,\n function_selector.to_field()\n );\n let data_to_return: [Field; RETURNS_COUNT] = results.0;\n let success: u8 = results.1;\n assert(success == 1, \"Nested call failed!\");\n\n FunctionReturns::new(data_to_return)\n }\n\n fn static_call_public_function<RETURNS_COUNT>(\n self: &mut Self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field],\n gas_opts: GasOpts\n ) -> FunctionReturns<RETURNS_COUNT> {\n let (data_to_return, success): ([Field; RETURNS_COUNT], u8) = call_static(\n gas_for_call(gas_opts),\n contract_address,\n args,\n function_selector.to_field()\n );\n\n assert(success == 1, \"Nested static call failed!\");\n FunctionReturns::new(data_to_return)\n }\n\n fn delegate_call_public_function<RETURNS_COUNT>(\n self: &mut Self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field]\n ) -> FunctionReturns<RETURNS_COUNT> {\n assert(false, \"'delegate_call_public_function' not implemented!\");\n FunctionReturns::new([0; RETURNS_COUNT])\n }\n\n fn push_note_hash(&mut self, note_hash: Field) {\n emit_note_hash(note_hash);\n }\n fn push_nullifier(&mut self, nullifier: Field, _nullified_commitment: Field) {\n // Cannot nullify pending commitments in AVM, so `nullified_commitment` is not used\n emit_nullifier(nullifier);\n }\n\n fn this_address(self) -> AztecAddress {\n address()\n }\n pub fn storage_address(self) -> AztecAddress {\n storage_address()\n }\n fn msg_sender(self) -> AztecAddress {\n sender()\n }\n fn selector(self) -> FunctionSelector {\n FunctionSelector::from_u32(function_selector())\n }\n fn get_args_hash(self) -> Field {\n self.inputs.args_hash\n }\n fn transaction_fee(self) -> Field {\n transaction_fee()\n }\n\n fn chain_id(self) -> Field {\n chain_id()\n }\n fn version(self) -> Field {\n version()\n }\n fn block_number(self) -> Field {\n block_number()\n }\n fn timestamp(self) -> u64 {\n timestamp()\n }\n pub fn fee_per_l2_gas(self) -> Field {\n fee_per_l2_gas()\n }\n pub fn fee_per_da_gas(self) -> Field {\n fee_per_da_gas()\n }\n\n fn l2_gas_left(self) -> Field {\n l2_gas_left()\n }\n fn da_gas_left(self) -> Field {\n da_gas_left()\n }\n\n fn raw_storage_read<N>(_self: Self, storage_slot: Field) -> [Field; N] {\n storage_read(storage_slot)\n }\n\n fn storage_read<T, N>(self, storage_slot: Field) -> T where T: Deserialize<N> {\n T::deserialize(self.raw_storage_read(storage_slot))\n }\n\n fn raw_storage_write<N>(_self: Self, storage_slot: Field, values: [Field; N]) {\n storage_write(storage_slot, values);\n }\n\n fn storage_write<T, N>(self, storage_slot: Field, value: T) where T: Serialize<N> {\n self.raw_storage_write(storage_slot, value.serialize());\n }\n}\n\n// Helper functions\nfn gas_for_call(user_gas: GasOpts) -> [Field; 2] {\n // It's ok to use the max possible gas here, because the gas will be\n // capped by the gas left in the (STATIC)CALL instruction.\n [\n user_gas.l2_gas.unwrap_or(MAX_FIELD_VALUE),\n user_gas.da_gas.unwrap_or(MAX_FIELD_VALUE)\n ]\n}\n\n// Unconstrained opcode wrappers (do not use directly).\n// TODO(https://github.com/AztecProtocol/aztec-packages/issues/6420): reconsider.\nunconstrained fn address() -> AztecAddress {\n address_opcode()\n}\nunconstrained fn storage_address() -> AztecAddress {\n storage_address_opcode()\n}\nunconstrained fn sender() -> AztecAddress {\n sender_opcode()\n}\nunconstrained fn portal() -> EthAddress {\n portal_opcode()\n}\nunconstrained fn function_selector() -> u32 {\n function_selector_opcode()\n}\nunconstrained fn transaction_fee() -> Field {\n transaction_fee_opcode()\n}\nunconstrained fn chain_id() -> Field {\n chain_id_opcode()\n}\nunconstrained fn version() -> Field {\n version_opcode()\n}\nunconstrained fn block_number() -> Field {\n block_number_opcode()\n}\nunconstrained fn timestamp() -> u64 {\n timestamp_opcode()\n}\nunconstrained fn fee_per_l2_gas() -> Field {\n fee_per_l2_gas_opcode()\n}\nunconstrained fn fee_per_da_gas() -> Field {\n fee_per_da_gas_opcode()\n}\nunconstrained fn l2_gas_left() -> Field {\n l2_gas_left_opcode()\n}\nunconstrained fn da_gas_left() -> Field {\n da_gas_left_opcode()\n}\nunconstrained fn note_hash_exists(note_hash: Field, leaf_index: Field) -> u8 {\n note_hash_exists_opcode(note_hash, leaf_index)\n}\nunconstrained fn emit_note_hash(note_hash: Field) {\n emit_note_hash_opcode(note_hash)\n}\nunconstrained fn nullifier_exists(nullifier: Field, address: Field) -> u8 {\n nullifier_exists_opcode(nullifier, address)\n}\nunconstrained fn emit_nullifier(nullifier: Field) {\n emit_nullifier_opcode(nullifier)\n}\nunconstrained fn emit_unencrypted_log(message: [Field]) {\n emit_unencrypted_log_opcode(message)\n}\nunconstrained fn l1_to_l2_msg_exists(msg_hash: Field, msg_leaf_index: Field) -> u8 {\n l1_to_l2_msg_exists_opcode(msg_hash, msg_leaf_index)\n}\nunconstrained fn send_l2_to_l1_msg(recipient: EthAddress, content: Field) {\n send_l2_to_l1_msg_opcode(recipient, content)\n}\nunconstrained fn call<RET_SIZE>(\n gas: [Field; 2],\n address: AztecAddress,\n args: [Field],\n function_selector: Field\n) -> ([Field; RET_SIZE], u8) {\n call_opcode(gas, address, args, function_selector)\n}\nunconstrained fn call_static<RET_SIZE>(\n gas: [Field; 2],\n address: AztecAddress,\n args: [Field],\n function_selector: Field\n) -> ([Field; RET_SIZE], u8) {\n call_static_opcode(gas, address, args, function_selector)\n}\n\nunconstrained fn storage_read<N>(storage_slot: Field) -> [Field; N] {\n storage_read_opcode(storage_slot, N)\n}\n\nunconstrained fn storage_write<N>(storage_slot: Field, values: [Field; N]) {\n storage_write_opcode(storage_slot, values);\n}\n\nimpl Empty for PublicContext {\n fn empty() -> Self {\n PublicContext::new(PublicContextInputs::empty())\n }\n}\n\n// AVM oracles (opcodes) follow, do not use directly.\n#[oracle(avmOpcodeAddress)]\nunconstrained fn address_opcode() -> AztecAddress {}\n\n#[oracle(avmOpcodeStorageAddress)]\nunconstrained fn storage_address_opcode() -> AztecAddress {}\n\n#[oracle(avmOpcodeSender)]\nunconstrained fn sender_opcode() -> AztecAddress {}\n\n#[oracle(avmOpcodePortal)]\nunconstrained fn portal_opcode() -> EthAddress {}\n\n#[oracle(avmOpcodeFunctionSelector)]\nunconstrained fn function_selector_opcode() -> u32 {}\n\n#[oracle(avmOpcodeTransactionFee)]\nunconstrained fn transaction_fee_opcode() -> Field {}\n\n#[oracle(avmOpcodeChainId)]\nunconstrained fn chain_id_opcode() -> Field {}\n\n#[oracle(avmOpcodeVersion)]\nunconstrained fn version_opcode() -> Field {}\n\n#[oracle(avmOpcodeBlockNumber)]\nunconstrained fn block_number_opcode() -> Field {}\n\n#[oracle(avmOpcodeTimestamp)]\nunconstrained fn timestamp_opcode() -> u64 {}\n\n#[oracle(avmOpcodeFeePerL2Gas)]\nunconstrained fn fee_per_l2_gas_opcode() -> Field {}\n\n#[oracle(avmOpcodeFeePerDaGas)]\nunconstrained fn fee_per_da_gas_opcode() -> Field {}\n\n#[oracle(avmOpcodeL2GasLeft)]\nunconstrained fn l2_gas_left_opcode() -> Field {}\n\n#[oracle(avmOpcodeDaGasLeft)]\nunconstrained fn da_gas_left_opcode() -> Field {}\n\n#[oracle(avmOpcodeNoteHashExists)]\nunconstrained fn note_hash_exists_opcode(note_hash: Field, leaf_index: Field) -> u8 {}\n\n#[oracle(avmOpcodeEmitNoteHash)]\nunconstrained fn emit_note_hash_opcode(note_hash: Field) {}\n\n#[oracle(avmOpcodeNullifierExists)]\nunconstrained fn nullifier_exists_opcode(nullifier: Field, address: Field) -> u8 {}\n\n#[oracle(avmOpcodeEmitNullifier)]\nunconstrained fn emit_nullifier_opcode(nullifier: Field) {}\n\n#[oracle(avmOpcodeEmitUnencryptedLog)]\nunconstrained fn emit_unencrypted_log_opcode(message: [Field]) {}\n\n#[oracle(avmOpcodeL1ToL2MsgExists)]\nunconstrained fn l1_to_l2_msg_exists_opcode(msg_hash: Field, msg_leaf_index: Field) -> u8 {}\n\n#[oracle(avmOpcodeSendL2ToL1Msg)]\nunconstrained fn send_l2_to_l1_msg_opcode(recipient: EthAddress, content: Field) {}\n\n#[oracle(avmOpcodeCall)]\nunconstrained fn call_opcode<RET_SIZE>(\n gas: [Field; 2], // gas allocation: [l2_gas, da_gas]\n address: AztecAddress,\n args: [Field],\n // TODO(5110): consider passing in calldata directly\n function_selector: Field\n) -> ([Field; RET_SIZE], u8) {}\n// ^ return data ^ success\n\n#[oracle(avmOpcodeStaticCall)]\nunconstrained fn call_static_opcode<RET_SIZE>(\n gas: [Field; 2], // gas allocation: [l2_gas, da_gas]\n address: AztecAddress,\n args: [Field],\n // TODO(5110): consider passing in calldata directly\n function_selector: Field\n) -> ([Field; RET_SIZE], u8) {}\n// ^ return data ^ success\n\n#[oracle(avmOpcodeStorageRead)]\nunconstrained fn storage_read_opcode<N>(storage_slot: Field, length: Field) -> [Field; N] {}\n\n#[oracle(avmOpcodeStorageWrite)]\nunconstrained fn storage_write_opcode<N>(storage_slot: Field, values: [Field; N]) {}\n\nstruct FunctionReturns<N> {\n values: [Field; N]\n}\n\nimpl<N> FunctionReturns<N> {\n pub fn new(values: [Field; N]) -> FunctionReturns<N> {\n FunctionReturns { values }\n }\n\n pub fn assert_empty(returns: FunctionReturns<0>) {\n assert(returns.values.len() == 0);\n }\n\n pub fn raw(self) -> [Field; N] {\n self.values\n }\n\n pub fn deserialize_into<T>(self) -> T where T: Deserialize<N> {\n Deserialize::deserialize(self.raw())\n }\n}\n"}}}
|
|
1
|
+
{"transpiled":true,"noir_version":"0.32.0+92ff2fa2e944722e5c3fa43fb3363f093b8f1d12","name":"KeyRegistry","functions":[{"name":"compute_note_hash_and_optionally_a_nullifier","is_unconstrained":true,"custom_attributes":[],"abi":{"error_types":{},"parameters":[{"name":"contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"},"visibility":"private"},{"name":"nonce","type":{"kind":"field"},"visibility":"private"},{"name":"storage_slot","type":{"kind":"field"},"visibility":"private"},{"name":"note_type_id","type":{"kind":"field"},"visibility":"private"},{"name":"compute_nullifier","type":{"kind":"boolean"},"visibility":"private"},{"name":"serialized_note","type":{"kind":"array","length":0,"type":{"kind":"field"}},"visibility":"private"}],"return_type":{"abi_type":{"kind":"array","length":4,"type":{"kind":"field"}},"visibility":"public"}},"bytecode":"H4sIAAAAAAAA/+2b0W7aMBSGHRq6tGlTSAiBQgt0baXdpazt6N1eZnvuXU/aOwwHH/HXdZDRjmcsEQnFie3zf/6PbdIqRGJzJOtPpMpddT4VHw9q812d6387nhhj1S45o0A4O4FwngTCGTNyRgZOeY5VWa47ueY+ic16/FCJnWWiT6Be7AqkqyaqkGh1bKNd1W+nIIDwQsHHqo7Okfqkqh4BUzXYph3cowF34B5pncA92slIK1HmOBj3S7LF5o29no1yLGcqFvGnUMa6KVgYOxxr181Yn53laO2jwxw1q5zy0FWxE7imnJyDPuO3yxPqU+xzbX7EUJ5AW2pHbTrAK49LsV1L5zv6xVq/DNqcQr9E60fXlHfpV1+V5bmbbNtSfEc+1jJ26ib2uxzFmocpjC0Dfb45ulxJjQvx/oi0a/xiyYDp0gnTZk26Ge8ml1cQm+8p6eVZxutpvl1ovmXQ5gq87DnyMgJtYqLrXos+nyevKxmvb+FJ38DU9+BJv0Wf0ZM3GS+38CQ3MOUePMlb9Pk8+fZVxissPCkMTIUHT4oWfT5Pls3zw8DCk4GBaeDBk0GLPuPaaeZJaeFJaWAqPXhStugzevJTxhtaeDI0MA09eDJs0Wf05IeMV1l4UhmYKg+eVC36jHts83wysvBkZGAaefBk1KLP6MlSxhtbeDI2MI09eDJu0WdcO43+tYUn1wamaw+eoOY+3INAuatAuYsD4db1GddOs8dOLDyZGJgmHjxBzX24ywPh1vUZc/ki400tPJkamKYePEHNfbjzQLmLQLmHgXKXgXJXgXIfyvzW9Rmfv5s99sbCkxsD040HT1BzH+48UO5JoNzFgXDr+oxrp/n/4K2FJ7cGplsPnqDmPtyjQLn7B8Kt6zPOwVcZb2bhyczANPPgCWruwz0OlLsKlHsSKHcRKPcwUO4yUO7juvy/3PmBcMt79L7PH+dMy7dUYyINoXEKjTOFcgacc4jRZeOsa8zVHPQWTnzZ5EqfP3S9cK6/XMnYnx2NTca+dxO7+ZvjQcWidxrvDb49gn7EnLcHLTZpPUAuqfwb2lI7akP7BfHL99nuVPlxR7+Z1i+DNnfQ717rR9eUd+nfL1V2Odds5npPbNf5F2BytFc+4/vLAjSExknHDJjmbpieHI63xncaheBdjwvNszPNswza4F7uc289ch+5bbjxOeQM7lH9HO51tPHgb0UWEOMv7Ab1lOo2AAA=","debug_symbols":"ndpBahtBFEXRvfTYBL2v7qpqbyWEINtyEBjZWHIgCO89UkIWkDNTVevN7uhQl+lp//Dx4/vh+Px6mu6/XqaX18fd+fB6vJ4u0+ZLjT+3p7fd8XZxOu/ez9P9tvW7aX98uv7q9Xk3PR9e9rfb8fnt7jZaYbTdyCgyKhltZTTLaJFRk1GXkRSxlSJmKWKWImYpYpYiZililiJmKWKWImYpYpYiFilikSIWKWKRIhYpYpEiFilikSIWKWKRIpoU0aSIJkU0KaJJEU2KaFJEkyKaFNGkiC5FdCmiSxFdiuhSRJciuhTRpYguRXQpYkgRQ4oYUsSQIoYUMaSIIUUMKWJIEUOKWKWIVYpYpYhVililiFWKWKWIVYpYpYhVishmQ6vQqmi1pdVMq4VWjVadVoNW1EaojVAboTZCbYTaCLURaiPURqiNUBtFbRS1UdRGURtFbRS1UdRGURsEmiHRDJFmyDRDqBlSzRBrhlwzBJsh2QzRZsg2Q7gZ0s0Qb4Z8MwScIeEMEWfIOEPIGVLOEHOGnDMEnSHpDFFnyDpD2BnSzhB3hrwzBJ4h8QyRZ8g8Q+gZUs8Qe4bcMwSfIfkM0WfIPkP4GdLPEH+G/DMEoCEBDRFoyEBDCBpS0BCDhhw0BKEhCQ1RaMhCQxga0tAQh4Y8NASiIRENkWjIREMoGlLREIuGXLTIRYtctMhFi1y0yEWLXLTIRYtctMhFi1y0yEWLXLTIRYtctMhFi1y0yEWLXLTIRYtctMhFi1y0yEWLXLTIRYtctMhFi1y07KEnuWiRixa5aJGLFrlokYsWuWj9t4teTz9374fdw8v+9rb39vHj+Pjvqe/1eP719vfL9b+/AQ=="},{"name":"register_npk_and_ivpk","is_unconstrained":true,"custom_attributes":["aztec(public)"],"abi":{"error_types":{},"parameters":[{"name":"inputs","type":{"fields":[{"name":"args_hash","type":{"kind":"field"}},{"name":"is_static_call","type":{"kind":"boolean"}}],"kind":"struct","path":"aztec::context::inputs::public_context_inputs::PublicContextInputs"},"visibility":"private"},{"name":"address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"},"visibility":"private"},{"name":"partial_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::partial_address::PartialAddress"},"visibility":"private"},{"name":"keys","type":{"fields":[{"name":"npk_m","type":{"fields":[{"name":"x","type":{"kind":"field"}},{"name":"y","type":{"kind":"field"}},{"name":"is_infinite","type":{"kind":"boolean"}}],"kind":"struct","path":"std::embedded_curve_ops::EmbeddedCurvePoint"}},{"name":"ivpk_m","type":{"fields":[{"name":"x","type":{"kind":"field"}},{"name":"y","type":{"kind":"field"}},{"name":"is_infinite","type":{"kind":"boolean"}}],"kind":"struct","path":"std::embedded_curve_ops::EmbeddedCurvePoint"}},{"name":"ovpk_m","type":{"fields":[{"name":"x","type":{"kind":"field"}},{"name":"y","type":{"kind":"field"}},{"name":"is_infinite","type":{"kind":"boolean"}}],"kind":"struct","path":"std::embedded_curve_ops::EmbeddedCurvePoint"}},{"name":"tpk_m","type":{"fields":[{"name":"x","type":{"kind":"field"}},{"name":"y","type":{"kind":"field"}},{"name":"is_infinite","type":{"kind":"boolean"}}],"kind":"struct","path":"std::embedded_curve_ops::EmbeddedCurvePoint"}}],"kind":"struct","path":"aztec::keys::public_keys::PublicKeys"},"visibility":"private"}],"return_type":null},"bytecode":"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","debug_symbols":"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MPIJG0Y+YcPIJ2wY+YQNI5+wYeQTNox8woaRT9gw8gkbRj5hZeQTVkY+YWXkE1ZGPmFl5BNWRj5hZeQTVkY+YWXkE1ZGPmHjyCdsHPmEjSOfsHHkEzaOfMLGkU/YOPIJG0c+YePIJ2wc+YRNI5+waeQTNo18wqaRT9g08gmbRj5h08gnbBr5hE0jn7Bp5BN2H/mE3Uc+YfeRT9h95BO2x9ovvTc/8gm7j3zC7iOfsPvIJ+w+8gmbRz5h88gnbB75hM0jn7A9tmLpvfmRT9g88gmbRz5h88gnbB75hC0jn7Aj73SSkXc6ycg7nWTknU4y8k4nGXmnk4y800lG3ukkI+90iiPvdIoj73SKI+90iiPvdIrbwCdsHHmnUxx5p1MceadTHHmnUxx5p1MceadTHHmnUxx5p1MceadTHHmnUxx5p1MceadTHHmnUxx5p1MceadTHHmnUxx5p1MceadTHHmnUxx5p1MceadTHHmnUxx5p1MceadTHHmnUxx5p1MceadTHHmnUxx5p1MceadTHHmnUxx5p1MceadTHHmnUxx5p1MceadTHHmnUxx5p1MceadTHHmnUxx5p1MceadTHHmnUxx5p1MceadTHHmnUxx5p1MceadTHHmnUxx5p1MceadTHHmnUxx5p1MceadTHHmnUxx5p1MceadTHHmnUxx5p1MceadTHHmnUxx5p1MceadTHHmnUxx5p1MceadTHHmnUxx5p1MceadTHHmnUxx5p1MceadTHHmnUxx5p1MceadTHHmnUxx5p1MceadTHHmnUxx5p1MceadTHHmnUxx5p1MceadTHHmnUxx5p1MceadTHHmnUxx5p1MceadTHHmnUxx5p1MceadTHHmnUxx5p1MaeadTGnmnUxp5p1MaeadT2gY+YdPIO53SyDud0sg7ndLIO53SyDud0sg7ndLIO53SyDud0sg7ndLIO53SyDud0sg7ndLIO53SyDud0sg7ndLIO53SyDud0sg7ndLIO53SyDud0sg7ndLIO53SyDud0sg7ndLIO53SyDud0sg7ndLIO53SyDud0sg7ndLIO53SyDud0sg7ndLIO53SyDud0sg7ndLIO53SyDud0sg7ndLIO53SyDud0sg7ndLIO53SyDud0sg7ndLIO53SyDud0sg7ndLIO53SyDud0sg7ndLIO53SyDud0sg7ndLIO53SyDud0sg7ndLIO53S1U6n/fgdYdv2xq8pIf96ccm58dZdPH6w+/KG/D8A/flz4xaPHxyTPF8te/XV6fjJ2/blxc9RZZ1R4zqjpnVG3dcZNS8z6tWqqBlHdeuM6tcZdR0Lsa9jIfZ1LMS+joXY17EQ+0IWoiwzau7gltTCdnYjv3k/8psPI795GfnNx5HffBr5ze8jv/k88psvA7/5MvIJW0Y+YcvIJ2wZ+YQtI5+wZeQTtox8wpaRT9gy8glbBj5h923gE3bfBj5h923gE3bfBj5h923gE3bfBj5h923gE3bfBj5h923gE3bfRj5h3cgnrBv5hHUjn7Bu5BPWjXzCupFPWDfyCetGPmHdyCesG/mE9SOfsH7kE9aPfML6kU9YP/IJ60c+Yf3IJ6wf+YT1I5+wfuQTNox8woaRT9gw8gkbRj5hw8gnbBj5hA0jn7Bh5BM2jHzChpFPWBn5hJWRT1gZ+YSVkU9YGfmElZFPWBn5hJWRT1gZ+YSVkU/YOPIJG0c+YePIJ2wc+YSNI5+wceQTNo58wsaRT9g48gkbRz5h08gnbBr5hE0jn7Bp5BO2xyIvvTc/8gmbRj5h08gnbBr5hE0jn7D7yCfsPvIJu498wu4jn7A99lzpvfmRT9h95BN2H/mE3Uc+YfeRT9iRdzrtI+902kfe6bSPvNNpH3mn0z7yTqd95J1O+8g7nfaRdzrtI+902kfe6bSPvNNpH3mn0z7yTqd95J1O+8g7nfaRdzrtI+902kfe6bSPvNMpj7zTKY+80ymPvNMpj7zTKW8Dn7B55J1OeeSdTnnknU555J1OeeSdTnnknU555J1OeeSdTnnknU555J1OeeSdTnnknU555J1OeeSdTnnknU555J1OeeSdTnnknU555J1OeeSdTnnknU555J1OeeSdTnnknU555J1OeeSdTnnknU555J1OeeSdTnnknU555J1OeeSdTnnknU555J1OeeSdTnnknU555J1OeeSdTnnknU555J1OeeSdTnnknU555J1OeeSdTnnknU555J1OeeSdTnnknU555J1OeeSdTnnknU555J1OeeSdTnnknU555J1OeeSdTnnknU555J1OeeSdTnnknU555J1OeeSdTnnknU555J1OeeSdTnnknU555J1OeeSdTnnknU555J1OeeSdTnnknU555J1OeeSdTnnknU555J1O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"},{"name":"rotate_npk_m","is_unconstrained":true,"custom_attributes":["aztec(public)"],"abi":{"error_types":{},"parameters":[{"name":"inputs","type":{"fields":[{"name":"args_hash","type":{"kind":"field"}},{"name":"is_static_call","type":{"kind":"boolean"}}],"kind":"struct","path":"aztec::context::inputs::public_context_inputs::PublicContextInputs"},"visibility":"private"},{"name":"address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"},"visibility":"private"},{"name":"new_npk_m","type":{"fields":[{"name":"x","type":{"kind":"field"}},{"name":"y","type":{"kind":"field"}},{"name":"is_infinite","type":{"kind":"boolean"}}],"kind":"struct","path":"std::embedded_curve_ops::EmbeddedCurvePoint"},"visibility":"private"},{"name":"nonce","type":{"kind":"field"},"visibility":"private"}],"return_type":null},"bytecode":"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","debug_symbols":"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I6+wYeQVNoy8woaRV9gw8gobRl5hw8grbBh5hQ0jr7Bh5BU2jrzCxpFX2DjyChtHXmF7DI7SO/mRV9g48gobR15h48grbBx5hU0jr7Bp5BU2jbzCppFX2B4DlvROfuQVNo28wg482eh18iOvsAPPZQrLwIOZXic/8go78Gim18mPvMIOPJzpdfIjr7ADj2d6nfzIK+zAA5peJz/yCjvwiKbXyY+8wg48pOl18iOvsAOPaXqd/Mgr7MCDml4nP/IKO/CoptfJj7zCDjys6fVnR15hBx7X9Nc/O/LJj7zCDjyx6fVnR15hB57Z9PqzI6+wA09tCsvAY5teJz/yCjvw4KbXyY+8wg48uul18iOvsAMPb3qd/Mgr7MDjm14nP/IKO/AAp9fJj7zCDjzC6XXyI6+wAw9xep38yCvswGOcXic/8go78CCn18mPvMIOPMrpdfIjr7ADD3N6nfzIK+zA45xeJz/yCjvwQKfXyY+8wg480ul18gOvsGHkmU5h5JlOYeSZTmHkmU5hGXiFDSPPdAojz3QKI890CiPPdAojz3QKI890CiPPdAojz3QKI890CiPPdAojz3QKI890CiPPdAojz3QKI890CiPPdAojz3QKI890CiPPdAojz3QKI890CiPPdAojz3QKI890CiPPdAojz3QKI890CiPPdAojz3QKI890CiPPdAojz3QKI890CiPPdAojz3QKI890CiPPdAojz3QKI890CiPPdAojz3QKI890CiPPdAojz3QKI890CiPPdAojz3QKI890CiPPdAojz3QKI890CiPPdAojz3QKI890CiPPdAojz3QKI890CiPPdAojz3QKI890CiPPdAojz3QKI890CiPPdAojz3QKI890CiPPdAojz3QKI890CiPPdAojz3QKI890CiPPdAojz3QKI890CiPPdAojz3QKI890CiPPdAojz3QKI890CiPPdAojz3QKI890CiPPdAojz3QKI890CiPPdAojz3QKI890CiPPdAojz3QKI890CiPPdAojz3SKI890iiPPdIojz3SKI890isvAK2wceaZTHHmmUxx5plMceaZTHHmmUxx5plMceaZTHHmmUxx5plMceaZTHHmmUxx5plMceaZTHHmmUxx5plMceaZTHHmmUxx5plMceaZTHHmmUxx5plMceaZTHHmmUxx5plMceaZTHHmm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"},{"name":"register_ovpk_and_tpk","is_unconstrained":true,"custom_attributes":["aztec(public)"],"abi":{"error_types":{},"parameters":[{"name":"inputs","type":{"fields":[{"name":"args_hash","type":{"kind":"field"}},{"name":"is_static_call","type":{"kind":"boolean"}}],"kind":"struct","path":"aztec::context::inputs::public_context_inputs::PublicContextInputs"},"visibility":"private"},{"name":"address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"},"visibility":"private"},{"name":"partial_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::partial_address::PartialAddress"},"visibility":"private"},{"name":"keys","type":{"fields":[{"name":"npk_m","type":{"fields":[{"name":"x","type":{"kind":"field"}},{"name":"y","type":{"kind":"field"}},{"name":"is_infinite","type":{"kind":"boolean"}}],"kind":"struct","path":"std::embedded_curve_ops::EmbeddedCurvePoint"}},{"name":"ivpk_m","type":{"fields":[{"name":"x","type":{"kind":"field"}},{"name":"y","type":{"kind":"field"}},{"name":"is_infinite","type":{"kind":"boolean"}}],"kind":"struct","path":"std::embedded_curve_ops::EmbeddedCurvePoint"}},{"name":"ovpk_m","type":{"fields":[{"name":"x","type":{"kind":"field"}},{"name":"y","type":{"kind":"field"}},{"name":"is_infinite","type":{"kind":"boolean"}}],"kind":"struct","path":"std::embedded_curve_ops::EmbeddedCurvePoint"}},{"name":"tpk_m","type":{"fields":[{"name":"x","type":{"kind":"field"}},{"name":"y","type":{"kind":"field"}},{"name":"is_infinite","type":{"kind":"boolean"}}],"kind":"struct","path":"std::embedded_curve_ops::EmbeddedCurvePoint"}}],"kind":"struct","path":"aztec::keys::public_keys::PublicKeys"},"visibility":"private"}],"return_type":null},"bytecode":"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","debug_symbols":"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YcPIJ2wY+YQNI5+wYeQTNox8woaRT9gw8gkbRj5hw8gnbBj5hJWRT1gZ+YSVkU9YGfmElZFPWBn5hJWRT1gZ+YSVkU9YGfmEjSOfsHHkEzaOfMLGkU/YOPIJG0c+YePIJ2wc+YSNI5+wceQTNo18wqaRT9g08gmbRj5h08gnbBr5hE0jn7Bp5BM2jXzCppFP2H3kE3Yf+YTdRz5h95FP2B5rv/Te/Mgn7D7yCbuPfMLuI5+w+8gnbB75hM0jn7B55BM2j3zC9tiKpffmRz5h88gnbB75hM0jn7B55BO2jHzCjrzTSUbe6SQj73SSkXc6ycg7nWTknU4y8k4nGXmnk4y80ymOvNMpjrzTKY680ymOvNMpbgOfsHHknU5x5J1OceSdTnHknU5x5J1OceSdTnHknU5x5J1OceSdTnHknU5x5J1OceSdTnHknU5x5J1OceSdTnHknU5x5J1OceSdTnHknU5x5J1OceSdTnHknU5x5J1OceSdTnHknU5x5J1OceSdTnHknU5x5J1OceSdTnHknU5x5J1OceSdTnHknU5x5J1OceSdTnHknU5x5J1OceSdTnHknU5x5J1OceSdTnHknU5x5J1OceSdTnHknU5x5J1OceSdTnHknU5x5J1OceSdTnHknU5x5J1OceSdTnHknU5x5J1OceSdTnHknU5x5J1OceSdTnHknU5x5J1OceSdTnHknU5x5J1OceSdTnHknU5x5J1OceSdTnHknU5x5J1OceSdTnHknU5x5J1OceSdTnHknU5x5J1OceSdTnHknU5x5J1OceSdTnHknU5x5J1OceSdTnHknU5x5J1OceSdTnHknU5x5J1OceSdTnHknU5x5J1OceSdTnHknU5x5J1OaeSdTmnknU5p5J1OaeSdTmkb+IRNI+90SiPvdEoj73RKI+90SiPvdEoj73RKI+90SiPvdEoj73RKI+90SiPvdEoj73RKI+90SiPvdEoj73RKI+90SiPvdEoj73RKI+90SiPvdEoj73RKI+90SiPvdEoj73RKI+90SiPvdEoj73RKI+90SiPvdEoj73RKI+90SiPvdEoj73RKI+90SiPvdEoj73RKI+90SiPvdEoj73RKI+90SiPvdEoj73RKI+90SiPvdEoj73RKI+90SiPvdEoj73RKI+90SiPvdEoj73RKI+90SiPvdEoj73RKI+90SiPvdEoj73RKI+90Shc7nbI/33yOe+PXlJB/vbh8GbT+1l083rz78oZ8SLWfG7d4/OCY5Plq2auvTsdP3rYvL36OKuuMGtcZNa0z6r7OqHmZUS9WRU05qltnVL/OqOtYiH0dC7GvYyH2dSzEvo6F2BeyEGWZUXMHt6QWtrMb+c37kd98GPnNy8hvPo785tPIb34f+c3nkd98GfjNl5FP2DLyCVtGPmHLyCdsGfmELSOfsGXkE7aMfMKWkU/YMvAJu28Dn7D7NvAJu28Dn7D7NvAJu28Dn7D7NvAJu28Dn7D7NvAJu28Dn7D7NvIJ60Y+Yd3IJ6wb+YR1I5+wbuQT1o18wrqRT1g38gnrRj5h3cgnrB/5hPUjn7B+5BPWj3zC+pFPWD/yCetHPmH9yCesH/mE9SOfsGHkEzaMfMKGkU/YMPIJG0Y+YcPIJ2wY+YQNI5+wYeQTNox8wsrIJ6yMfMLKyCesjHzCysgnrIx8wsrIJ6yMfMLKyCesjHzCxpFP2DjyCRtHPmHjyCdsHPmEjSOfsHHkEzaOfMLGkU/YOPIJm0Y+YdPIJ2wa+YRNI5+wPRZ56b35kU/YNPIJm0Y+YdPIJ2wa+YTdRz5h95FP2H3kE3Yf+YTtsedK782PfMLuI5+w+8gn7D7yCbuPfMKOvNNpH3mn0z7yTqd95J1O+8g7nfaRdzrtI+902kfe6bSPvNNpH3mn0z7yTqd95J1O+8g7nfaRdzrtI+902kfe6bSPvNNpH3mn0z7yTqd95J1OeeSdTnnknU555J1OeeSdTnkb+ITNI+90yiPvdMoj73TKI+90yiPvdMoj73TKI+90yiPvdMoj73TKI+90yiPvdMoj73TKI+90yiPvdMoj73TKI+90yiPvdMoj73TKI+90yiPvdMoj73TKI+90yiPvdMoj73TKI+90yiPvdMoj73TKI+90yiPvdMoj73TKI+90yiPvdMoj73TKI+90yiPvdMoj73TKI+90yiPvdMoj73TKI+90yiPvdMoj73TKI+90yiPvdMoj73TKI+90yiPvdMoj73TKI+90yiPvdMoj73TKI+90yiPvdMoj73TKI+90yiPvdMoj73TKI+90yiPvdMoj73TKI+90yiPvdMoj73TKI+90yiPvdMoj73TKI+90yiPvdMoj73TKI+90yiPvdMoj73TKI+90yiPvdMoj73TKI+90yiPvdMoj73TKI+90yiPvdMoj73TKI+90yiPvdMoj73TKI+90yiPvdMoj73TKI+90yiPvdMoj73TKI+90yiPvdMoj73TKI+90yiPvdCoj73QqI+90KiPvdCoj73Qq28AnbBl5p1MZeadTGXmnUxl5p1MZeadTGXmnUxl5p1MZeadTGXmnUxl5p1MZeadTGXmnUxl5p1MZeadTGXmnUxl5p1MZeadTGXmnUxl5p1MZeadTGXmnUxl5p1MZeadTGXmnUxl5p1MZeadTGXmnUxl5p1MZeadTGXmnUxl5p1MZeadTGXmnUxl5p1MZeadTGXmnUxl5p1MZeadTGXmnUxl5p1MZeadTGXmnUxl5p1MZeadTGXmnUxl5p1MZeadTudrpVI7fER6lWuPXPKzprxeXnBtv3cXjB7svb8iHVPu5cYvHD45Jnq+WvfrqdPzkbfvy4ueoYZ1RZZ1R4zqjpnVG3dcZtSwz6tViqRlHdeuMuo6FSOtYiLSOhUjrWIi0joVI61iIq0VeM47awS2phe19G/nNu5HfvB/5zYeR37yM/ObjyG8+jfzm95HffB75zY98wuaRT9g88gmbRz5h88gnbB75hM0jn7B55BM2j3zC5pFP2DzyCVtGPmHLyCdsGfmELSOfsGXkE7aMfMKWkU/YMvIJW0Y+Ycu4J2zYtnFP2MebH/eEfbz5cU/Yx5sf94R9vPlxT9jHmx/3hH28+XFP2MebH/eEfbz5cU/Yx5sf+YR1I5+wbuQT1o18wrqRT1g38gnrRj5h3cgnrBv5hHUjn7Bu5BPWj3zC+pFPWD/yCetHPmH9yCesH/mE9SOfsH7kE9aPfML6kU/YMPIJG0Y+YcPIJ2wY+YQNI5+wYeQTNox8woaRT9gw8gkbRj5hZeQTVkY+YWXkE1ZGPmFl5BNWRj5hZeQTVkY+YWXkE1ZGPmHjyCdsHPmEjSOfsHHkE7bHai69Nz/yCRtHPmHjyCdsHPmEjSOfsGnkEzaNfMKmkU/YNPIJ22Nzld6bH/mETSOfsGnkEzaNfMIOvNMpbAPvdHq8+ZFP2IF3Oj3e/Mgn7MA7nR5vfuQTduCdTo83P/IJO/BOp8ebH/mEHXin0+PNj3zCDrzT6fHmRz5hB97p9HjzI5+wA+90erz5kU/YgXc6Pd78yCfswDudHm9+5BN24J1Ojzc/8gk78E6nx5sf+YQdeKfT482PfMIOvNPp8eYHPmHdyDud3Mg7ndzIO53cyDud3DbwCetG3unkRt7p5Ebe6eRG3unkRt7p5Ebe6eRG3unkRt7p5Ebe6eRG3unkRt7p5Ebe6eRG3unkRt7p5Ebe6eRG3unkRt7p5Ebe6eRG3unkRt7p5Ebe6eRG3unkRt7p5Ebe6eRG3unkRt7p5Ebe6eRG3unkRt7p5Ebe6eRG3unkRt7p5Ebe6eRG3unkRt7p5Ebe6eRG3unkRt7p5Ebe6eRG3unkRt7p5Ebe6eRG3unkRt7p5Ebe6eRG3unkRt7p5Ebe6eRG3unkRt7p5Ebe6eRG3unkRt7p5Ebe6eRG3unkRt7p5Ebe6eRG3unkRt7p5Ebe6eRG3unkRt7p5Ebe6eRG3unkRt7p5Ebe6eRG3unkRt7p5Ebe6eRG3unkRt7p5Ebe6eRG3unkRt7p5Ebe6eRG3unkRt7p5Ebe6eRG3unkRt7p5Ebe6eRG3unkRt7p5Ebe6eRG3unkRt7p5Ebe6eRG3unkRt7p5Ebe6eRG3unkRt7p5Ebe6eRG3unkRt7p5Efe6eRH3unkR97p5Efe6eS3gU9YP/JOJz/yTic/8k4nP/JOJz/yTic/8k4nP/JOJz/yTic/8k4nP/JOJz/yTic/8k4nP/JOJz/yTic/8k4nP/JOJz/yTic/8k4nP/JOJz/yTic/8k4nP/JOJz/yTic/8k4nP/JOJz/yTic/8k4nP/JOJz/yTic/8k4nP/JOJz/yTic/8k4nP/JOJz/yTic/8k4nf7HTqYT9fPPFNX5N2uV482l//Oivv+bPV2ef5derc/g6avXVIZ8jPDC6xqtL3OKvV5eY5Hy1l/qr08F82768+AnHA+caTgDONRwBzjWcCJxrOAk413B24FzDycC5hlOAcwnnYmcacP4VDg75BRwc8gs4OOQXcAQ413BwyC/gKDjkmJ9wWuPGmI93EpP3z1dvW+3Vcr7vKCk0Xp33k07Om/vt1QeeDJ5XeAp4XuBJG3he4XHgeYXHg+cVnmAdz+6feJoDp3i8k5zS15+dzoFltYHjagObN2O9B95XG9i8n+w9sHmH+KOB9+24Xfz4z1wbeDfv+XoPbN7F9R7YvC/rPfBcTusbA8tqA8/ltPbnz95Tqg48l9P6xsBzOa1vDDyX0/rGwJM5rebAeTKn1R54MqfVHngypxXSc+D9t4H/fLWXswHzkp6nthd/4pnMl/XGI+B5hecve77j16R7fs1+z6/J9/yacsuvKds9v8bd82v8Pb8m3PNr5J5fc8+nQLnnU6B0+RQox0dnys0vb2QJx9cxsuytj/x/+fW/Xi1buPmrHiUD5xpOAc4VnLBtwLmG44BzDccD5xpOAM41HAHONZwInGs4CTjXcDCBL+BgAq/hOEzgCziYwBdwMIEv4GACX8CR++Fs5QnH/3Orwtf8CnRwETyv8CTwvMKzg+cVngyeV3iKdTw/ubtatu1432Vz8cvPPu6XBr+tNrBbbWC/2sBhtYFltYHNO8QffQem5PwcOP028J+vFl+Ony2P0/x8day9+PlltL18jS0nSPNechSQ5m3VKCCnMmCKIMNUxk4T5FSG8YcgwzmlBIlfQR50pnKX3elMZUW705GV6exy0slbjc7KJjfs4Umn1OiYr/lU6UxlR4uLx6uLS7mWCMNcvV17YJmrt/vGwHP1di66c+DsqgPP1dt9Y+C5ejsXt3PgslUHnqp9+c7AUx3a3xg4zvUp7d3ZzP7rVx8qA8/1Kf2Ngef6lPYunQPHavce5/qU9uft5hJcXWGZbOBT4UfZWh14rk/pbww8V1ry+fyy2iMI1gZOc31Kh/RUuKTqwHN9Sn9j4Lk+pUM6L2n58pXKrwPP9Sn96HXOget5OE1VD35n4LnS0vOba0X26v+Gu6xLyGdGSXnfGyNIOUO6lBQbI+ybO/Dsm2y/vfrXCF1WMXwdIctvIxy/xt3za/w9v6bHZ3dxx+2FVGLr0nUlH2/Kb18v3fNilB7fWd+38399u/O12aXHd7+/82vSPb9mv+fXdPCvuwvHBbN7V1qfjC4ePzu78vvyxdrl5c8nl5ZYW9UoPb7R1W+E400li29qt/imelyBPmznm/rNAuz1lLM9g3tqvFrzYTTS4ytN08Lp8TWleeE44FzD8cC5hhOAcw1HgHMNJwLnGk4CzjWcHTjXcDCB13AEE/gCDibwBRxM4As4mMAXcAQ413AwgS/gKJjA84lkj1v6rXFjcce9tFhC6y5OFjnbPdmbVW7azio3fZHpuYFdZDeO53ntPPCkBp64h/Ou3m/rmeswczmXED0G/u3VB54Mnld4Cnhe4IkbeF7hceB5hceD5xWeAJ5XeAQ8r/BE8LzCY901K+PBNb/Eg2t+iQfX/ApPwjW/xINrfokH1/wSD675JR4Bzys897vmxw858Pz+xyTVpllxUbikBJxrODtwruFk4FzDKcC5hLNvwLmG44BzDccD5xpOAM41HAHONRxM4As4mMAXcDCBL+BgAq/hZEzgCziYwBdwFEygnJsFpfnHrD/9cty5SDxHX9vSIDlMNrA7Bw6lOrCsNnBcbeC02sD7agPn1QYuiw1cttUGdqsNPJfTis9nM8biqgPP5rS258C+OrCsNvBsTqs58GxOqznwXE4rueObFjlVV61KmctpJXfm4RTrn9JzOa3mwHGby2mls2rKqUh14Lmc1peB9y1VB57LaX25pPdtrw48l9P6xsCy2sBzOa1vDDyX0/o6cNyqA8/mtJoDT+u0rgae1mldDOzmclr7+QTInLffB678bDnqkRifH3DxyWYuU/YzNulIYXGXGpu5/Ft+/g8lB9dgI3Kuj5bHRVKjI9B5QWcuo/RDOrlFx7qrUv3jluisezBlPNYdmzIe6/5OF4+37gaV8Vg3hMp4rHtCZTzWG0BlPAKeV3ism2ZlPPe7ZknlxFP2xqtlK0egFhdC62d3/QJx9DtwruFk4FzDKcC5hKPwnJ2B4DjgXMPxwLmGE4BzDUeAcw0nAucaDibwBRxM4As4mMBrOIIJfAEHE/gCDibwBZz7TeDjduw5wN4aN3h3/Ozg99h4tXt+i//xn7//+fgxsKw2cFxt4LTawPtqA+fVBi6LDazwrBjlgd1qA/vVBl7NaSk8c0V54NWcVlzNacXVnFZczWnF1ZxWWs1ppdWcVlrNaaXVnJbCczqUB17NaaXVnFZazWml1ZxWWs1p7as5rX01p6XwLIC/OXA8N0Q9/lOqA891DrcHznNd0g9fcQ6c9urAc4WHbww82SW953PgnKoDz2UtvzHwXNbyGwPPZS2/MfBc1rI9cBnYWh4jDHyyHiOYPyvz8dWxEFzzi2bpfN8l5efA9S+ahf1ct+Ge52qoreYI6XwwRdjd9vrF6fz7xfTlq3Hh3OJRzHd9EzIXmN/O3LwtnZC5eWc8IXPz5nxC5ubzwYTMzUeU6ZinzXxKmpC5+Vg3IXNy6P3MyaH3MxeYd2d+3iBJWWrMyaH3MyeH3s+cHHo/c3Lo/czJobczd2Si+5mTie5nTia6n7nA/HbmZKL7mZOJ7mdOJrqfOZnofuZkotuZe+7N3c+cHHo/c3Lo/czJofczF5jfzpwcej9zcuj9zMmh9zMnh97PnBx6O/NADr2fOTn0fubk0PuZk0PvZy4wv505OfR+5uTQ+5mTQ+9nTg69nzk59HbmQg69nzk59H7m5ND7mZND72cuML+dOTn0fuZkovuZk4nuZ04mup25/YcCTsicTHQ/czLR/czJRPczF5jfzpxMdD9z7s3dz5wcej9zcuj9zMmhtzO3/8hU68wPkITLTiBJjJ1AEgM7gRRA9gFJYOsEkhTWCSTRqhNI8lInkISgPiDtP6J4FJAkm04gSTadQJJsOoEUQPYBSbLpBJJk0wkkyaYTSJJNJ5Akmz4gM8mmE0iSTSeQJJtOIEk2nUDiI78Fcg9PkBJqIPGRfUAWTu3vgBTvjh8s/vdHJf7oxQd1jngN6vgBDeqYBw3qAnUF6hSuGtRx1RrUseAa1Ol9NahTEt9Pfd/IphrUyaYa1MmmGtTJphrUBeoK1MmmGtTJphrUyaYa1MmmGtTJpgrUHdlUgzrZVIM62VSDOtlUg7pAXYE62VSDOtm0O3Xv8/GNuwcZX6NONtWgTjb9C9STe1KvfcJ4/Hp/6tHng3r0pUYdv65BHb+uQV2grkAdv65BHb+uQR2/rkEdv65BnXtJCtQD95I0qJNNNaiTTTWok001qAvUFaiTkjSok5I0qJOSFKjzFPu/QD3v5x28XBovDrId7yJI9dY2D723LxGe1LxEgkTWJeJOjHmJCCTmJSK9mJeIqGNeIu4eWZcocqvJvES0C+Ylol0wLxHtgnmJBImsS4Tp1pUou2O+7Gq3Ing4vXGBeLiwskDl/MuwklNNINo54wLxEacrkNu2A4fbnFQk4qG29iWiVTAvEa2CeYloFcxLJEhkXSIykXmJSEXmJeI7C+Yloj41LxHtgnWJeLC0fYloF7QlSnJI5FztVh4Pw7YvEe2CeYkEiaxLRLtgXiLaBfMS0S6Yl4h2wbxEtAvWJSq0C+Ylol0wLxHtgnmJaBfMSyRIZF0i2gXzEtEumJeIdsG8RLQL5iWiXTAuUd5oF8xLRLtgXiLaBWWJvDsl8i7WJKJdMC+RIJF1iWgXzEtEu2BeItoF8xLRLpiXiHbBukSOdsG8RERX8xIRXc1LJEhkXSKiq3mJiK7mJSK6mpeI6GpeIqKrdYk80dW8RNwYNy8R7YJ5iWgXzEskSGRdItoF8xLRLpiXiHbBvES0C9YlCphubYnkKZHkmkSYbvMSYRe0JUrhlGj3NYmwC+Ylwi6Yl4ibEdYlEm5GmJeImxHmJSIXmZeIXGReIkEi6xJxM8K8RLQL5iWiXTAvEe2CeYloF6xLFGkXzEtEu2BeItoF8xLRLpiXSJDIukS0C3dKdFCnMNCgTgegQZ1Yr0GdpK5APRG+NaiTpzWoE5E1qJN6NagL1BWok001qJNNNaiTTTWok001qJNNFajvZFMN6gL17tQfcx3US3I16jhHDeqcpn+Bet5O6vVPGE5TBeqZ01SDOk2vBnWaXg3qNL0a1AXqCtTx6xrUaXo1qNP0alAnm2pQJ5t2p74fq6722rq4Qi69mziZ9G7i5NG7iZNF7yYuEL+ZOBn0buLkz7uJkz3vJk7uvJs4mfNe4mUjc95NnMx5N3ES0N3EBeI3EycB3U2cBHQ3cRLQ3cRJQN2Jh+djg4L3e406KUiBuiMJaVAnDWlQ5y6cBnVyqAZ1gboCdZzjX6Au5aQeQ406zlGBuuc07U89bCf14FONOqepBnVOUw3qtLsa1Gl4NajT8mpQx69rUMevK1APNL0a1Gl6NaiTTTWok001qAvU+1M/f3AIpUqdbKpBnWyqQZ1sqkGdbKpBnWzan7psJ3UJtXtJQkrSoE5K0qBOStKgLlBXoE5K0qBOStKgTkrSoE5K0qBOSlKgHrmDp0GdbKpBnWyqQZ1sqkFdoK5AnWyqQZ1sqkGdbKpBnWyqQZ1sqkA9kU01qJNNNaiTTTWok001qAvUFaiTTTWok001qJNNNaiTTTWok00VqO9kUw3qZFMN6mRTDepkUw3qAnUF6mRTDepkUw3qZFMN6mRTDepkUwXqmWyqQZ1sqkGdbKpBnWyqQV2grkCdbKpB/f5sKr6c1HOLY8z50CiW8Nz64bat9uo9+OPVe9obr865HIrmx8C/vfrAs4PnFZ4Mnld4Cnhe4CkbeF7hceB5hceD5xWeAJ5XeAQ8r/BE8LzCU3XNsm3Hm5ItxgaetEv49er025uqDpx9Pp5flYPfWlnliScU75o5aIsn+iSNrPJ4ya8XP4B8efF+wtmBcw0nA+caTgHOBZwHhA0413AccK7heOBcwwnAuYYjwLmGE4FzDQeH/AIODvkFHBzyCzg45Gs4Dof8Ag4O+QUcBYcc8xNOa9wY81G8xeR9q+6Ss6aLkkLj1Xk/6eS8uT/rrgceAc8rPBE8r/Ak8LzCs4PnFZ4Mnld4inU8u3/iaQ6c4vFOckpff3Y6BvbbagO71QY2b8Z6DxxWG1hWG9i8Q/zRwPt23Nh//GeuDmze8/Ue2LyL6z2weV/We+C5nFZ74DCX0/rGwHM5rf35s/eUqgPP5bS+MfBcTusbA8tqA0/mtNoDT+a02gNP5rTaA0/mtEJ6Drz/NvCfr/ZyNmBevnyH2Is/8UzmyzrjkclcXG88f9nzHb/G3/Nrwj2/Ru75NfGeX5Pu+TX7Pb8m3/Nryi2/Jm73/Jp7PgXiPZ8CscunQDk+OlNufnkjSzj/ZEb21kf+v/zt0PlOws1f9YgCnGs4ETjXcBJwruHswLmGk4FzDacA5xJO2oBzDccB5xqOB841HAHONRxM4As4mMAXcDCBL+BgAl/AwQRew9kVTOBWnnD8P7cqfNWvQO8OPK/wePC8whPA8wqPgOcVnmgdz0/urpZtO5fWbi5++dnn/dI9rTbwvtrAebWBy2IDZ/N+svfA5h3ij74DU3J+Dpx+G/jPV4svx8+W4J7fgYm1Fz+/jLaXr7HlBGneS44CUgDZB+RUBkwT5FTGThPkVIbxhyDDma8kSPwK8qAzlbvsTmcqK9qbTpnKt/6Uzi4nnbzV6KxscsMennRKjY75mk+VjkyVCF08Xl3cb4vnnwPP1dt9Y+C5ertvDDxXb+eiOwfOrjrwXL3dNwaeq7dzcTsHLltlYLdN1b58Z+CpDu3vDDzXp/TzUYXlX7/6UBl4rk/pbww816e0d+kcOMbqwHN9SvvzdnMJrqqwm+vuis+nwsGX6sBzfUp/Y2CZbODzy2oh5OrAc31Kh/RUuKTqwHN9Sn9j4Lk+pUM6L2n58pXKLwP7uT6lH73OOXA1Dzs/VT34nYHnSkvPb64V2av/G+6yLiGfGSXlfW+MIOUM6VJSbIywb+7As2+y/fbqY4TUeYQsv41w/Jr9nl+T7/k1PT67iztuL6QSW5euK/l4U377euk+L8Ye31nft/N/fbvz1dl7fPf7O7/G3/Nrwj2/Rjr8GheOC2b3rrQ+GV08Pr3y4+L58upUvbz8cb/ClVhb1eh6fKOr3wjHm/IW31Sw+KZ6XIE/e7ywPz+yHsE9NV6t+TAa1+MrTfPCScC5hrMD5xpOBs41nAKcSzg9vnc0LxwHnGs4HjjXcAJwruFgAl/AwQS+gIMJfAEHE/gCDibwEo7fMIEv4GACX8BRMIHnE8ket/SbG9iLO+6lxRJad3GyyNnuyd6sctN2Vrnpi0zPDex+C8bxPK+dB57UwBP3cN7V+209cx1mLucSohJ+f/WBR8DzCk8Ezys8CTyv8OzgeYUng+cVngKeF3jcBp5XeBx4XuGx7pqV8eCaX+IR8LzCg2t+iQfX/BIPrvklHlzzSzy45ld4PK75JZ77XfPjhxx4fv9jkmrTrLgo3HsPnGs4ATjXcAQ413AicK7hJOBcw9mBcw0nA+caTgHOJZywAecaDibwBRxM4As4ApxrOJjAF3AwgS/gYAJfwFEwgeJOOM0/Zv3pl+POReI5+tqWBh/KZAO7c+BQ25bkZVttYLfawH61gcNqA8tqA8fVBk6rDbyvNvBcTis+n834+JfVgWdzWttzYF8bOM7mtJoDz+a0mgPP5rSaA8/ltJI7vmmRU3XVqo8y2cBnHk6x+ikd53Ja3xh4LqeVzqoppyLVgedyWl8G3rdqxRPnclpfLul926sDz+W02gOnuZzWNwaey2l9Y+C5nNbXgeNWHXg2p9UcWFYbeFqndTXwXE5rP58AmfP2+8CVny1HPRLj8wMuPtnMZcp+xiYdKSzuUmMzl3/Lz/+h5OAabETO9dESnavQ2efyPr3pzGWUfkgnt+hYd1W6f9yyW/dgyngEPK/wWPd3ynisu0FlPNYNoTIe655QGY/1BlAXT7bumZXxWDfNynjud82Syomn7I1Xy1aOQC0uhNbP7vsF4hyAcw1HgHMNJwLnGk4CzjWcHTjXcDJwruEU4FzCUXjOzkBwHHCu4WACX8AR4FzDwQS+gIMJfAEHE/gCDibwBZz7TeDjduw5wN4aN3h3/OzwuKvUeLV7fov/8Z+///n4vw0cFJ6dozywW21gv9rAYbWBZbWB42oDp9UG3lcbOK828GpOy63mtNxqTsut5rTcak5L4dklygOv5rTcak7Lrea03GpOy63mtPxqTsuv5rT8ak7Lr+a0FJ56oTzwak7Lr+a0/GpOK8x1DsdzQ9TjP6U68Fzn8DcGnuuSjum8PRzTXh14rvDQHlgmu6T3fA6cU3XguazlNwaey1p+Y2BZbeC5rOU3Bh7YWh4jDHyyHiOYPyvz8dWxh3NrftEshf342Sk/33f9i2ZhP9dtuOe5GmqrOUI6H0wRdre9fnE6/34xfflqXPAnc/Nd33zMo/mYMyFz87Z0QubmnfGEzM2b8wmZC8xvZ24+okzI3HxKmpC5+Vg3IXNy6P3MyaG3M0/k0P7MzxskKUuNOTn0fubk0PuZk0PvZy4wv505OfR+5mSi+5mTie5nTia6nflOJrqfOZnofuZkovuZk4nuZy4wv505meh+5tybu585OfR+5uTQ+5mTQ29nnsmh9zMnh97PnBx6P3Ny6P3MBea3MyeH3s+cHHo/c3Lo/czJofczJ4fezryQQ+9nTg69nzk59H7m5ND7mQvMb2dODr2fOTn0fubk0PuZk0PvZ04OvZu52H/s3ITMyaH3MycT3c9cYH47czLR/czJRPczJxPdz5xMdD9zMtHtzO0/IHJC5mSi+5lzb+5+5uTQ+5kLzG9nTg69nzk59EPmB0jCZSeQJMZOIImBfUDafyTtKCAJbJ1AksI6gSRadQIpgOwDkhDUCSTJphNIkk0nkCSbTiBJNn1A2n/I9yggSTadQJJsOoEk2XQCKYDsA5Jk0wkkyaYTSJJNJ5Akm04gSTZ9QAo+8lsg9/AEKaEGEh/ZCSSn9ndAPm4SHj/4cXcmvP3igzpHvAZ1/IAGdcyDAvVIh6pBncJVgzquWoM6FlyDukBdgTolsQZ1sqkGdbKpBnWyqQZ1sqkC9UQ21aBONtWgTjbVoE421aAuUFegTjbVoE421aBONtWgTjbVoE42VaC+k001qJNNNaiTTbtT9z4f37h7kPE16mRTDeoC9f7Uk3tSr37C4Nf7U48+H9SjLzXq+HUN6vh1BeoZv65BHb+uQR2/rkEdv65BXaCuQJ17SRrUuZekQZ1sqkGdbKpBnWyqQL2QTTWok5I0qJOSNKgL1BWo4xz7U8/7eQcvl8aLg2zHuwhSvbXNQ+/tS4QnNS5R3DCw5iXiTox5iQgk5iUivZiXSJDIukTcPTIvEbeazEtEu2BeItoF8xLRLliXyNEumJdIkEhVouyO+bIrNYGw3LYF4uHCygKV8y/DSk41gWjnjAvER5yuQO6J2m1OahLRKpiXiFbBvES0CuYlolWwLhEPD7YvEZnIvESkIvMS8Z0F8xIJElmXiHbBvES0C+Ylol3QlijJIZFztVt5PAzbvkS0C9YlEtoF8xLRLpiXiHbBvES0C+YlEiSyLhHtgnmJaBfMS0S7YF4i2gXzEtEuWJco0i6Yl4h2wbxEtAvmJaJdMC+RIJF1iWgXzEtEu2BeItoF8xLRLihL5N0pkXexJhHtgnWJEu2CeYloF8xLRLtgXiLaBfMSCRJZl4h2wbxEtAvmJSK6mpeI6Gpdop3oal4ioqt5iYiu5iUiupqXSJDIukREV/MSEV3NS8SNcfMS0S6Yl4h2wbpEmXbBvES0C+Ylol0wLxHtgnmJBImsS4Tp1pZInhJJrkmE6bYuUcEuaEuUwinR7msSYRfMSyRIZF0ibkaYl4ibEeYl4maEeYnIReYlIhcZlyht3IwwLxE3I8xLRLtgXiLaBfMSCRJZl4h2wbxEtAvmJaJdMC8R7YJ5iWgXrEvkaBfMS0S7cKdEB3UKAw3qdAAa1AXqCtRJ6hrUCd8a1MnTGtSJyBrUSb0K1D1BVoM62VSDOtlUgzrZVIO6QF2BOtlUgzrZVIF6wDn2p/6Y66BekqtRxzlqUOc0/QvU83ZSr3/CcJpqUOc01aBO06tBnaZXgzpNrwJ1wa9rUMeva1Cn6dWgTtOrQV2grkCdbNqd+n6sutpjjTi59G7iZNK7iZNH7yZOFr2ZeCSH3k2cDHo3cfLn3cTJnncTF4jfTJzMeTdxMufdxMmcdxMnAd1MPJGA7iZOArqbOAnobuIkoLuJC8R7Ew/PxwYF7/cadVKQBnWSkAZ10pAGde7CaVAnhypQ38miGtQF6v2pSzmpx9p3tnacowZ1TtP+1MN2Ug8+1ahzmipQz5ymGtRpdzWo0/BqUKfl1aAuUFegjl/XoE7Tq0GdpleDOtlUgzrZVIF6IZv+BernDw6hVKmTTTWok001qJNNNagL1BWok037U5ftpC6/v/igTkrSoE5K0qBOSrqf+r6RkjSok5I0qJOSNKiTkjSoC9QVqJOSNKhzB0+DOtlUgzrZVIM62VSBuiObalAnm2pQJ5tqUCebalAXqCtQJ5tqUCebalAnm2pQJ5tqUCebKlD3ZFMN6mRTDepkUw3qZFMN6gJ1BepkUw3qZFMN6mRTDepkUw3qZFMF6oFsqkGdbKpBnWyqQZ1sqkFdoK5AnWyqQZ1sqkGdbKpBnWyqQZ1sqkBdyKYa1MmmGtTvz6biy0k9tzjGnI93Ekt4bv1w21Z79SNrH6/e0954dc7lUDSX8PurDzwBPK/wCHhe4YngeYUngecVnh08r/Bk8LzCU8DzAk/cwPMKjwPPKzwXrjnF08Z/9fFVPOlhLn+9Ov32pqoDZ5+P51fl4LdWVnniCcW7Zg7a4ok+SSOrPF7y68UPIF9evJ9wAnCu4QhwruFE4FzDScC5hrMD5xpOBs41nAKcSzhpA841HAecazg45BdwcMgv4AhwruHgkF/AwSG/gINDfgFHwSHH/ITTGjfGfNz0jcn7Vt0l573nKCk0Xp33k07Om6vVXfsGnld4HHhe4fHgeYUngOcVHgHPKzzROp7dP/E0B07xeCc5pa8/O50Dp9UG3lcb2LwZ6z1wWWzgbN5P9h7YvEP80cD7dtzYf/xnrg5s3vP1Hti8i+s9sKw28FxO6xsDz+W0vjHwXE5rf/7sRzVaHXgup/WNgedyWu2By1xO6xsDT+a02gNP5rTaA0/mtNoDy1wDh/QceP9t4D9f7eVswLx8+Q6xl/Mv2Mpkvqw3nslcXG88f9nzHb8m3/Nryh2/Jm/bPb/G3fNr/D2/Jtzza+SeXxPv+TXpnl+z3/Nr8j2/psunQDk+OlNufnkjSzj/ZEb21kd+KOX5Z0Th3q96ZLcB5xqOA841HA+cazgBONdwBDjXcCJwruEk4FzD2YFzDScD5xKOxwS+gIMJfAEHE/gCDibwBRwBzjUcTOALOAomcCtPOP6fWxW+5legs9/B8wpPBs8rPAU8L/CEDTyv8DjreH5yd7Vs27m0dnPxy8/258B+tYHDagPLagPH1QY27yd7D2zeIf7oOzAl5+fA6beB/3y1+HL8bAnu+R2YWHvx88toe/kaW06Q5r3kICDFvK0aBeRUBkwT5FTGThPkVIbxhyDDma8kSPwK8qAj0HlBZyor2p3OVL71p3R2OenkrUZnZZMb9vCkU2p0zNd8mnTiVHa0uHi8urjfFs8/B56rt/vGwHP1dt8YeK7ezsXzUWUuu+rAstrAc/V2Lm7nwGWrDjxV+/Kdgac6tL8xcJrrU/r5qMLyr199qAw816f0Nwae61Pau3QOHKvde5rrU9qft5tLcHWF57q74vOpcPClOvBcn9Ltgfe50tLzubYlhKqX3uf6lA7pqXBJ1YHn+pT+xsBzfUqH830X+fKVyq8Dz/Up/eh1zoHreXifqh78zsBzpaXnN9eK7LX/DZcu6xLymVHS45JpjCDlDOlSUmyMsG/uwLNvsv326mME33mELL+NcPyacM+vkXt+TY/P7uKO2wupxNal60o+3pTfvl66z4uxx3fW9+38X9/ufHX2Ht/9/s6vyff8mnLLr+nxnd7dheOC2b0rrU9GF49Pr/y4eL68OlUvL3/cr3Al1lY1lh7f6Oo3wvGmssU3VQy+qR5ff/rh44X9+ZH1CO6p8WrNh9GUHl9pmheOB841nACcazgCnGs4ETjXcBJwruHswLmGk4FzDacA5xJOxAS+gIMJfAEHE/gCjgDnGg4m8AUcTOALOJjAF3AUTOD5RLLHLf3mBvbijntpsYTWXZwscrZ7sjer3LSdVW76ItNzA3uJxTie57XzwJMaeOIezrt6v61nrsPM5VxC9Oi0f3v1LzxpA88rPA48r/B48LzCE8DzCo+A5xWeCJ5XeBJ4XuHZwfMKj3XXrIwH1/wKz45rfokH1/wSD675JR5c80s8Ap5XeHDNL/Hgml/iud81P37Igef3PyapNs2Ki8LLnoFzDacA5xJO3oBzDccB5xqOB841nACcazgCnGs4ETjXcBJwruFgAl/AwQRewymYwBdwMIEv4GACX8DBBL6AI/fDkXOzoDT/mPWnX447F4nn6KtbGkqcbGB3DhxKdeC02sD7agPn1QYuSw0ct21bbWC32sB+tYHDagPLVAPH57MZH/+yOvBsTmt7DuyrA8/mtJoDz+a0mgPP5rSaA8/ltJI7vmmRU23VatzcXE4ruTMPp1j9lHZzOa1vDDyX00pn1ZRTkerAczmtLwPvW6oOLLNe0vu2Vweey2l9Y+C5nNY3Bp7LaX1j4Lmc1teB41YdeDan1RrYT+u0rgae1mldDTyX09rPJ0DmvP0+cOVny1GPxPicMT7ZzGXKfsYmHSks7lJjI1Oxyc//oeTgGmxEzvXREp2r0ZnL+/SmM5dR+iGd3KJj3VVp/nHLA491D6aLJ1h3bMp4rPs7ZTzW3aAyHuuGUBmPgOcVHusNoDIe655ZGY9106yM537XLKmceMreeLVsJZzvJITWz+75BeIHnAKcSzgKz9kZCI4DzjUcD5xrOAE413AEONdwInCu4STgXMPZgXMNBxN4DSdiAl/AwQS+gIMJfAEHE/gCjgDnGs79JvBxO/YcYG+NG7w7fnbwe2y82j2/xf/4z9//fPwYOK028L7awHm1gctiAys8h0Z5YLfawH61gcNqA8tqA6/mtNJqTiut5rTSak4rrea09tWc1r6a09pXc1r7ak5L4RkgygOv5rT21ZzWvprT2ldzWvtqTiuv5rTyak4rr+a08mpOK891DsdzQ9TjP6U68FzncHvgMtclHdN5ezimvTqwrDbwZJf0ns+Bc6oOPJe1/MbAc1nL5sBum8tafmPguazlNwYe2FoeIwx8sh4jmD8r8/FOQnDNL5qlsB8/O+XnwPUvmoX9XLfxdcbaao6QzgdThN1tr1+czr9fTF++Ghf8ydx81zchc/MxZ0Lm5m3phMzNO+MJmZs35/Mxd+bzwYTMzUeUCZmbT0kTMjcf6yZkLjC/nTk59H7m5ND+zM8bJClLjTk59H7m5ND7mZNDb2fuyaH3MyeH3s+cTHQ/c4H57czJRPczJxPdz5xMdD9zMtH9zMlEtzMPZKL7mZOJ7mfOvbn7mZND72cuML+dOTn0fubk0PuZk0PvZ04OvZ85OfR25kIOvZ85OfR+5uTQ+5mTQ+9nLjC/nTk59H7m5ND7mZND72dODr2fOTn0duaRHHo/c3Lo/czJofczJ4fez1xgfjtzcuj9zMmh9zMnh97PnEx0O3P7j8ObkDmZ6H7mZKL7mZOJ7mcuML+dOZnofuZkovuZk4nuZ869ufuZk0NvZ27/YaETMieH3s+cHPoh8wMk4bITSAFkH5DEwE4gyXadQBLYOoEkhXUCSbTqA9L+I39HAUkI6gSSZNMJJMmmE0gBZB+QJJtOIEk2nUCSbDqBJNl0Akmy6QOykGw6gSTZdAJJsukEkmTTCaQAsg9Ikk0nkPjIb4HcwxOkhBpIfGQXkH7j1P4OSPHu+MHif39U4o9efFDniNegLlBXoI550KBOh6pBncJVgzquWoM6FlyBuqP31aBOSaxBnWyqQZ1sqkFdoK5AnWyqQZ1sqkGdbKpBnWyqQZ1sqkDdk001qJNNNaiTTTWok001qAvUFaiTTTWok001qJNNNaiTTbtTf0A9vnH3IONr1MmmCtQD2fQvUE/uSb32CRPw6/2pR58P6tGXGnWBugJ1/LoGdfy6BnX8ugZ1/LoGdfy6AnXBr2tQ516SBnXuJWlQJ5tqUBeoK1Anm2pQJ5tqUCclaVAnJSlQj6QkDeo4x/7U837ewcul8eLwYH0MKNVb2zz03r5EeFLzEmFgzUvEnRjzEhFIzEtEerEuUSLqmJeIu0fmJeJWk3mJaBfMSyRIZF0i2gXzEtEuWJeI580rS5TdMV92tVsRPJzeukD0c7oClfMvw0pONYFo52wLxKNnlQVy23bgcJuTmkS0CuYlolUwL5EgkXWJaBXMS0SrYF4iMpF5iUhF5iXiOwvWJeIhzfYlol0wLxHtgnmJaBe0JUpySORc7VYeD8O2LxHtgnmJaBfMS0S7YF4i2gXzEtEuGJcobLQL5iWiXTAvEe2CeYloF8xLJEhkXSLaBfMS0S6Yl4h2wbxEtAvmJaJdsC6Ro10wLxHtgnmJaBfMS0S7YF4iQSJdibw7JfIu1iSiXTAvEe2CeYloF8xLRLtgXiLaBesSedoF8xLRLpiXiHbBvESCRNYlIrqal4joal4ioqt5iYiu5iUiulqXKBBdzUtEdDUvEdHVvETcGDcvkSCRdYloF8xLRLtgXiLaBfMS0S6Yl4h2wbpEQrtgXiJBImWJ5CmR5JpEmG7zEmEXtCVK4ZRo9zWJsAvWJYrYBfMScTPCvETcjDAvETcjzEskSGRdInKReYm4GWFeIm5GmJeIdsG8RLQL1iVKtAvmJaJdMC8R7YJ5iWgXzEskSGRdItoF8xLRLpiXiHbhTokO6hQGGtTpABSo78R6DeokdQ3qhG8N6uRpDeoCdQXqpF4N6gRZDepkUw3qZFMN6mRTBeqZbKpBnWyqQZ1sqkEd59if+mOug3pJrkYd56hAvXCa/gXqeTupVz9hCqepBnVOUw3qNL0a1AXqCtRpejWo49c1qOPXNajT9GpQp+m9n7psZFMN6mTT7tT3Y9XVHmvEyaV3EyeT3k1cIH4zcbLo3cTJoXcTJ4PeTZz8eTdxsufNxB25827iZM67iZM57yZO5rybOAnobuIkoLuJk4DuJk4Cups4Cehm4p4E1J14eD42KHi/16iTgjSok4Q0qJOGNKgL1BWok0M1qJNFFagHnONfoC7lpB5r39kKOEcN6pym/amH7aQefKpR5zTVoM5pqkGddleDOg2vBnVaXgXqPE1ehTp+XYM6Ta8GdZpeDeoCdQXqZFMN6mTTv0D9/MEhlCp1sqkGdbKpBnWyqQL1SDbVoE427U/9ge94zxJq95IiKUmDukBdgTopSYM6KUmDOilJgzopSYM6KUmBeiIlaVAnJWlQ5w6eBnWyqQZ1gboCdbKpBnWyqQZ1sqkGdbKpBnWyqQL1nWyqQZ1sqkGdbKpBnWyqQV2grkCdbKpBnWyqQZ1sqkGdbKpBnWyqQD2TTTWok001qJNNNaiTTTWoC9QVqJNNNaiTTTWok001qJNNNaiTTRWoF7KpBnWyqQZ1sqkGdbKpBnWBugJ1sqkGdbKpBnWyqQb1+7Op+HJSzy2OMedDo1jCc+uH27baq/fgj1fvaW+8OudyTJlL+P3VB54Cnms8cdvA8wqPA88rPB48r/AE8LzCI+B5hSeC5xWeBJ5XeHbwvMJTd83O708bXxp40i7h16vTb2+qOnD2+Xh+VQ5+a2WVJ55QvGvmoC2e6JM0ssrjJb9e/ADy5cX7CacA5xKO24BzDccB5xqOB841nACcazgCnGs4ETjXcBJwruHswLmGg0N+AQeHfA3H45BfwMEhv4CDQ34BB4f8Ao7cDyfmJ5zWuDHm453E5H2r7pLz3vO/rEBsvDrvJ52cN1eru3wCzys8O3he4cngeYWngOcFnrCB5xUeZx3P7p94mgOneLyTnNLXn53Ogf1qA4fVBpbVBo6rDWzeT/Ye2LxD/NHA+3bc2H/8Z64ObN7z9R7YvIvrPLCY92W9B57LaX1j4Lmc1jcGnstp7c+fvadUHVhWG3gup/WNgedyWt8YeDKn1R54MqfVHngyp9UcOE7mtEJ6Drz/NvCfr/ZyNmBevnyH2Is/8Uzmy3rjmczF9cbzlz3f8Wvknl8T7/k16Z5fs9/za/I9v6bc8mvSds+vcff8Gn/Pr7nnUyDd8ymQunwKlOOjM+XmlzeyhPNPZmRvfeSHUo6vesgWbv6qR0rAuYazA+caTgbONZwCnEs4+wacazgOONdwPHCu4QTgXMMR4FzDwQS+gIMJfAEHE/gCDibwGk7GBL6Agwl8AUfBBG7lCcf/c6vCV/0KdA7geYVHwPMKTwTPKzwJPK/w7Nbx/OTuatm2c2nt5uKXn33eL815tYHLYgOXbbWB3WoDm/eTvQc27xB/9B2YkvNz4PTbwH++Wnw5frYE9/wOTKy9+PlltL18jS0nSAFkH5DmbdUoIKcyYJogpzJ2miCnMow/BBnOfCVB4leQ/0YnbVO5y+50prKi3elM5Vt/SmeXk07eanRWNrlhD086pUbHfM2nSmcqO1pcPF5d3G+L558Dz9XbfWPguXq7bww8V2/n4vmoMpddbWA3V2/3jYHn6u1c3M6By1YdWFYbeKpD+zsDz/Up/XxUYfnXrz5UBp7rU7o9sJ/rU9q7dA4cY3XguT6l/Xm7uQRXV3iuuys+nwoHX6oDz/Up/Y2B50pLz+falhCqXtrP9Skd0lPhkmoDh7k+pb8x8Fyf0uF8Tl2RL1+p/DrwXJ/Sj17nHLieh8NU9eB3BpbJBj6Nh+zV/w13WZeQz4yS8r43RpByhnQpKTZG2Dd34Nk32X579TFC7jxClt9GOH5NueXXdFnF8I1f0+Ozu7jj9kIqsXXpupKPN+W3r5fu82Ls8Z31fTv/17c7X529x3e/v/Nr5J5fE+/5NR386+7CccHs3pXWJ6OLx8/Oj4vny6tT9fLyx/0KV2JtVWPq8Y2ufiMcb0osvqlo8U31uAJ/9nhhf35kPYJ7arxa82E0qcdXmuaFk4FzDacA5wrO3uObR/PCccC5huOBcw0nAOcajgDnGk4EzjUcTOALOJjAF3AwgddwHCbwBRxM4As4mMAXcDCBL+DI/XDOJ5I9buk3N7AXd9xLiyW07uJkkbPdk71Z5abtrHLTF5meG9h3F43jeV47DzypgSfu4byr99t65jrMXM4lRCX8/uoDTwLPKzw7eF7hyeB5haeA5wUev4HnFR4Hnld4PHhe4QngeYVHwPMKD675JR5c80s8uOaXeHDNL/Hgml/hCbjml3hwzS/x4Jpf4rnfNT9+yIHn9z8mqTbNiovC9x5/8jAvnAicazgJONdwduBcw8nAuYZTgHMJRzbgXMNxwLmG44FzDUeAcw0HE/gCDibwBRxM4As4mMAXcDCB13CiggmUc7OgNP+Y9adfjjsXiefoa1sa9ugmG9idA4dSHdivNnBYbWBZbeC42sBptYH31QbOqw1cFhs4zeW04vPZjI9/WR14Nqe1PQf21YFnc1rNgWdzWs2BZbWB53JayR3ftMipump1T3M5reTOPJxi/VN6Lqf1jYHnclrprJpyKlIdeC6n9WXgfatWPPtcTuvLJb1ve3XguZzWNwaey2l9Y+C5nNY3BpZpB45bdeDZnFZz4Gmd1tXA0zqtq4Hnclr7+QTInLffB678bDnqkRifH3DxyWYuU/YzNulIYY+bsxU2eS7/lp//Q8nBNdiInOujJTpXozOX9+lNZy6j9EM6uUVHjNPR/eOWbN2DKeOx7tiU8Vj3d8p4rLtBZTzWDaEunmLdEyrjsd4AKuOx7pmV8Vg3zcp45HY8ksqJp+yNV8tWwvlOQmj97L5fIC4RONdwEnCu4ezAuYaTgXMNpwDnCk5WeM7OQHAccK7heOBcwwnAuYaDCXwBBxP4Ag4m8AUcTOALOJjAazgOE/gCzv0m8HE79hxgb40bvDt+dvB7bLzaPb/F//jP3/98/BjYrzZwWG1gWW3guNrAabWB99UGzqsNXBYbWOF5LsoDr+a0/GpOy6/mtBSei6I88GpOy6/mtPxqTsuv5rT8ak4rrOa0wmpOK6zmtMJqTkvhaRrKA6/mtMJqTius5rTCak4rrOa0ZK5zOJ4boh7/KdWB5zqHvzHwXJd0TOft4Zj22sBxrvDwjYEnu6T3fA6cU3VgWW3guazlNwaey1p+Y+C5rOU3Bh7YWh4jDHyy/hohmT8r8/HVsRBc84tmKRzvu6T8HLj+RbOwp+eQzxlrqzlCOh9MEXa3vX5xOv9+MX35alzwJ3PzXd+EzM3HnAmZm7elEzIXmN/O3Lw5n5C5+XwwIXPzEWVC5uZT0oTMzce6+Zjv5ND7mZND72dODu3P/LxBkrLUmJND72cuML+dOTn0fubk0PuZk0PvZ04mup15JhPdz5xMdD9zMtH9zMlE9zMXmN/OnEx0P3My0f3MyUT3M+fe3P3MyaG3My/k0PuZk0PvZ04OvZ85OfR+5gLz25mTQ+9nTg69nzk59H7m5ND7mZND72ZeNnLo/czJofczJ4fez5wcej9zgfntzMmh9zMnh97PnBx6P3Ny6P3MyaG3M3fk0PuZk0PvZ04OvZ85OfR+5mSi+5mTie5nTia6nzmZ6H7mZKLbmdt/NOKEzMlE9zMnE93PnEx0P3OB+e3MyaH3MyeH3s+cHHo/c3Loh8wPkITLPiDtP+J1FJDEwE4gyXadQBLYOoEUQPYBSbTqBJK81AkkIagTSJJNJ5Akmz4ghWTTCSTJphNIkk0nkCSbTiAFkH1Akmw6gSTZdAJJsukEkmTTCSTJpg/ISLLpBJJk0wmkAPI7IPfwBCmhBhIf2Qkkp/Z3QIp3JxD/+6MSf/TigzpHvAL1hB/QoI550KBOh6pBncJVg7pAXYE6FlyDOr2vBnVKYg3qZFMN6mRTBeo72VSDOtlUgzrZVIM62VSDukBdgTrZVIM62VSDOtlUgzrZVIM62VSBeiabalAnm2pQJ5tqUCebalAXqPem7n0+vnH3IONr1MmmGtTJpn+BenJP6tVPGPx6f+rR54N69KVCveDXNajj1zWo49c1qOPXNagL1BWo49c1qOPXNahzL0mDOveSNKiTTW+nnraNbKpBnWyqQZ1sqkFdoK5AnZSkQZ2UpEEd59ifet7PO3i5NF4cZDveRZDKre208dB7+xLhSc1LhIE1LxF3YsxLJEhkXSLSi3mJiDrmJeLukXmJuNVkXiLaBesSedoF8xLRLpiXiHbBvESYbl2Jsjvmy652K4KH0xsXiIcLKwtUzr8MKznVBBIEsi0QH3G6ArltO3C4R5ldk4hWwbxEtArWJeJBvPYlolUwLxGtgnmJyETmJRIksi4R31kwLxH1qXmJaBfMS0S7YF4i2gVtiZIcEjlXu5XHw7DtS0S7YF4i2gXzEtEumJdIkMi6RLQL5iWiXTAvEe2CeYloF8xLRLtgXaJEu2BeItoF8xLRLpiXiHbBvESCRNYlol0wLxHtgnmJaBfMS0S7YF4i2gXrEu20C8oSeXdK5F2sSUS7YF4i2gXzEtEumJdIkMi6RLQL5iWiXTAvEe2CeYloF6xLlImu5iUiupqXiOhqXiKiq3mJBImsS0R0NS8R0dW8RERX8xIRXc1LxI1x6xIV2gXzEtEumJeIdsG8RLQL5iUSJLIuEe2CeYloF4xL5DZMt7ZE8pRIck0iTLd5iQSJlCVK4ZRo9zWJsAvmJcIumJeImxHmJeJmhHmJuBlhXSJHLjIvEbnIvETcjDAvETcjzEskSGRdItoF8xLRLpiXiHbBvES0C+Ylol2wLpGnXTAvEe2CeYloF8xLRLtwp0QHdYG6AnU6AA3qxHoN6iR1DeqEbw3q5GkF6oGIrEGd1KtBnSCrQZ1sqkFdoK5AnWyqQZ1sqkGdbKpBnWyqQF1wjv2pP+Y6qJfkatRxjhrUOU3/AvW8ndTrnzCcphrUOU01qNP0KlCPNL0a1Gl6Najj1zWo49c1qAvUFajT9GpQJ5tqUCebdqe+H6uu9tq6uEguvZs4mfRm4ok8ejdxsujdxMmhdxMng95NXCB+M3Gy593EyZ13Eydz3k2czHk3cTLnzcR3EtDdxElAdxMnAd1NXCB+M3ES0N3ESUDdiYfnY4OC93uNOilIgzpJSIM6aUiBeuYunAZ1cqgGdbKoBnWc41+gLuWkHmvf2co4RwXqhdO0P/WwndSDTzXqnKYa1DlNNajT7mpQF6grUKfl1aCOX9egjl/XoE7Tq0Gdpvd+6n4jm2pQJ5tqUCeb/gXq5w8OoVSpk001qAvUFaiTTTWok001qJNN+1OX7aQuIdSok5IUqDtSkgZ1UpIGdVKSBnVSkgZ1gboCdVKSBnVSkgZ1UpIGde7gaVAnmypQ92RTDepkUw3qZFMN6mRTDeoCdQXqZFMN6mRTDepkUw3qZFMN6mRTBeqBbKpBnWyqQZ1sqkGdbKpBXaCuQJ1sqkGdbKpBnWyqQZ1sqkGdbKpAXcimGtTJphrUyaYa1MmmGtQF6grUyaYa1MmmGtTJphrUyaYa1MmmCtQj2VSDOtlUgzrZVIM62VSDutxOXXw5qecWx5jzoVEs4bn1w21b7dV78Mer97Q3Xp1zORTNJfz+6gNPBM8rPAk8r/Ds4HmFJ4PnFZ4Cnhd40gaeV3gceF7h8eB5hSeA5xUe7i30zyqtpxb5xL2Fv0B9dyf1stWo07cqUN/pWzWo07dqUKdv1aBO36pBXaCuQB2/rkEdv65Bne8CaVDnu0Aa1MmmCtQz2VSDOtm0P/Xgt/M9+1ijTjbVoE421aAuUFegTjbVoE421aBONtWgTjbVoE42VaBeyKYa1Mmmf4P68+nR4mvUyaYa1MmmGtQF6grUyaYa1MmmGtTJpn+B+vak7mvP7C5kUw3qZNP7qYeNbKpBnWyqQZ1sqkGdbKpBXaCuQJ1sqkGdbKpBnWyqQZ1sqkGdbKpA3ZFNNaiTTTWok001qJNNNagL1BWok001qJNNNaiTTTWok001qJNNFah7sqkGdbKpBnWyqQZ1sqkGdYG6AnWyqQZ1sqkGdbKpBnWyqQZ1sqkC9UA21aBONtWgTjbVoE421aAuUFegTjbVoE421aBONtWgTkpSoC6kJA3qpCQN6qQkDeqkJA3qOMfu1P1jrl8v9iW5GnWcowZ17mpoUMevK1CP+HUN6vh1Der4dQ3q+HUN6gJ1Berc1dCgTjbVoE421aBONv0L1Mvxg8Pmco062VSBeiKbalAnm2pQJ5tqUCebalAXqPennrfTOZZQo0421aBONtWgTjbVoE421aBONlWgvpNNNaiTTTWok001qJNNNagL1BWok001qJNNNaiTTTWok001qJNNFahnsqkGdbKpBnWyqQZ1sqkGdYG6AnWyqQZ1sqkGdbKpBnWyqQZ1sqkC9UI21aBONtWgTjbVoE421aAuUFegTjbVoE421aBONtWgTjbVoE42vZ+6bGRTDepkUw3qZFMN6mRTDeoCdQXqZFMN6mRTDepkUw3qZFMN6mRTBeoOv96fet79QT2XxoudF/n14sd/5ppEmHvzEgkSWZeI2GBeIjKGeYkIJOYlIr2Yl4ioY10izz078xJxg8+8RLQL2hLt8ZQoVyWiXTAvkSCRdYloF8xLRLtgXiLaBfMS0S5oS5TCKdHuaxLRLliXKNAumJeIdsG8RLQL5iWiXTAvkSCRdYloF8xLRLtgXiLaBfMS0S6Yl4h2wbpEQrtgXiLaBfMS0S6Yl4h2wbxEgkTWJaJdMC8R7YJ5iWgXzEtEu2BeItoF6xJF2gXzEtEumJeIdsG8RLQL5iUSJLIuEe2CeYloF8xLRLtgXiLaBfMS0S5YlyjRLpiXiHbBvES0C+Ylol0wL5EgkXWJaBfMS0S7YF4icpGuRCUfry05VQTaSUXGBSITGReIRGRcIPKQcYEEgWwLRBYyLhBJyLhA3GU1LhD3WI0LRJNgW6BMk2BcIJoE4wLRJBgXiCbBuECCQLYFokkwLhBNgq5AbtsOHG5zUpOILsG8RLQJ5iWiT7AuUaFRMC8RnYJ5iWgVzEtEr2BeIkEi6xLRLZiXiHbBvES0C9oSuXxKFFxNItoF8xLRLhiXKG60C+Ylol0wLxHtgnmJaBcMme66RIJEtnNR3GgXzEtEu2BeItoF8xLRLpiXiHbBukSOdsG8RLQL5iWiXTAvEe2CeYkEiaxLRLtgXiLaBfMS0S6Yl4h2wbxEtAvWJfK0C+Ylol0wLxHtgnmJaBfMSyRIZF0i2gXzEtEumJeIdsG8RLQL5iWiXbAuUaBdMC8R7YJ5iWgXzEtEu2BeIkEi6xLRLpiXiHbBvES0C+Ylol0wLxHtgnWJhHbBvES0C+Ylol0wLxHtgnmJBImsS0S7YF4i2gXzEtEumJeIdsG8RLQL1iWK5CJdibI75suu1AQiFSkLdL7jHPeaQIJAtgUiERkXCCdnXCB8nG2BEveIjAvEHSLjApGDjAtEDjIukCCQbYHIQcYF4r6QcYG4K2RcIJoE4wLRJNgWaKdJUBbofBM51+4H7QRV4wIRVI0LJAhkWyCCqnGBCKrGBSKoGheIoGpcIIKqbYEyQdW4QNzyNi4QTYJxgWgSjAskCGRbIJoE4wLRJBgXiCbBuEA0CcYFokmwLVChSTAuEE2CcYFoEowLRJNgXCBBINsC0SQYF4gmwbhANAnGBaJJMC4QTYJpgdJGk2BcIJoE4wLRJBgXiCbBuECCQLYFokkwLhBNgnGBaBKMC0STYFwgmgTbAjmaBOMC0SQYF4gmwbhAgkC2BSKoGheIoGpcIIKqcYEIqrYF8tjs7wj0eOnxpsO+uxpI7HAnkLiib4HMmxxvIztfA4l76QQSl9EJJG6gE0jq5T4gAzVwJ5D4yO/Zn7I9QTa8u/Mp/Hrxg2OVOqZTgzpf0dKgLlBXoE4a06BOdNOgTs7ToE4o1KBOglSgLsRNDepkUw3qZFMN6mRTDeoCdQXqZFMN6mRTDepkUw3qZFMN6mRTBeqRbKpBnWyqQZ1sqkGdbKpBXaCuQJ1sqkGdbKpBnWyqQZ1sqkGdbNqfeij5oC6+9jchiWyqQZ1s+heo7/KkXvuESQL17tQfd6MP6o9bpDXq+HUN6vh1Der4dQ3q+PW/QD0f78LtbqtRx68rUN/x6xrU8esa1LmX9BeoP3uY3dWy6Y5f7089p+MHu5xTjToepjt177ZjQu+c1KjjYRSoZzyMBnU8jAZ1PIwGdb4Po0FdoK5AHb+uQZ1+XYM6/boGdbKpBnWyqQL1QjbVoE421aBONtWgTjbVoC5QV6BONtWgTjbVoE421aBONtWgTja9n/q+kU01qJNNNaiTTTWok001qAvUFaiTTTWok001qJNNNaiTTf8C9Sgn9Rhr1MmmCtQd2VSDOtlUgzrZVIM62VSDukBdgTrZVIM62VSDOtlUgzrZVIM62VSBuiebalAnm2pQF6j3pt7cmbF7/LoGdfy6BnX8en/q2Z27kLLU7iV5/LoGdfy6AvWAX9egjl/XoM69JA3q3EvSoC5QV6BONtWgTjbVoE421aBONtWgTjZVoC5kUw3qZFMN6mRTDepkUw3qAnUF6mRTDepkUw3qZFMN6mRTDepkUwXqkWyqQZ1sqkGdbKpBnWyqQV2grkCdbKpBnWz6F6g3nj64R7KpBnWyqQZ1sqkC9UQ21aBONtWgTjbVoE421aAuUFegTjbVoE421aBONtWgTjbVoE42VaC+k001qJNNNaiTTTWo49f7U4/nLiQX99j4ybId7yJICDWJMPfmJSIJmJeI2GBeIjKGdYkygcS8RKQX8xIRdcxLxD078xIJElmXiHbBvES0C+Ylol0wLxHtgnWJCqZbV6LsjvmyKzWBsNzGBaKf0xWoZH+849rNvLzRzhkXiI84XYHcdj4a2221R2PnTZDIukS0CuYlolUwLxGtgnmJaBXMS0Qmsi6RIxWZl4jvLJiXiPrUvES0C+YlEiSyLhHtgrZE6Xyxc6EmEe2CeYloF8xLRLtgXiLaBesSedoF8xLRLpiXiHbBvES0C+YlEiSyLhHtgnmJaBfMS0S7YF4i2gXzEtEuWJco0C6Yl4h2wbxEtAvmJaJdMC+RIJF1iWgXzEtEu6AskXfni72LNYloF8xLRLtgXiLaBesSCe2CeYloF8xLRLtgXiLaBfMSCRJZl4joal4ioqt5iYiu5iUiulqXKBJdzUtEdDUvEdHVvEREV/MSCRJZl4gb4+Ylol0wLxHtgnmJaBfMS0S7YF2iRLtgXiLaBfMS0S6YlwjTrS2RPCWSXJMI021doh27oC1RCqdEu69JhF0wLxF2wbxE3IwwL5EgkXWJuBlhXiJykXmJyEXmJeJmhHmJuBlhXaJMu2BeItoF8xLRLpiXiHbBvESCRDdKdFCnMPgL1HM5qKeteq3TAWhQJ9ZrUCepa1AnfCtQL+RpDepEZA3qpF4N6gRZDeoCdQXqZFMN6mRTDepkUw3qZFMN6mTT+6mXjWyqQZ1sqkGdbKpBnWyqQV2grkCdbKpBnWyqQZ1sqkGdbKpBnWyqQN2RTTWok001qJNNNaiTTTWoC9QVqJNN+1NP4k/qEmrUyaYa1MmmGtTJphrUyaYK1D3ZVIM62VSDOtlUgzrZVIO6QF2BOtlUgzrZVIM62VSDOimpO3Xvzj0Cj/+s7BEogZSkQZ2UpEGdlKRBnZSkQV2grkCdlKRBnZSkQZ2UpEGdO3ga1MmmCtSFbKpBnWyqQZ1sqkGdbKpBXaCuQJ1sqkGdbKpBnWyqQZ1sqkGdbKpAPZJNNaiTTTWok001qAvUP6N+gCT4dAJJlukEknjSCSSJow/IhLHqfsT/8Dlbcr7YS65JhAszLxG3E8xLJEhkXSL8unmJSALmJSJjmJeI9GJeIm6uWJdo506MeYloF7Ql2uMpUa5KRLtgXiLaBfMSCRJZl4h2wbxEtAvmJaJd0JYohVOi3dckol0wLxHtgnWJMu2CeYloF8xLRLtgXiLaBfMSCRJZl4h2wbxEtAvmJaJdMC8R7YJ5iWgXrEtUaBfMS0S7YF4i2gXzEtEumJdIkMi6RLQL5iWiXTAvEe2CeYloF8xLRLtgW6J922gXzEtEu2BeItoF8xLRLpiXSJDIukS0C+Ylol0wLxHtgnmJaBfMS0S7YF0iR7tgXiLaBfMS0S6Yl4h2wbxEgkTWJaJdMC8RuUhXopL98Y5zqglEKrItkCcTGReIRGRcIPKQcYFIQ8YFEgSyLRBJyLhA3GU1LhD3WI0LRJNgXCCaBNsCBZoE4wLRJBgXiCbBuEA0CcYFEgSyLRBNgq5AbtsOHG5zUpOILsG8RLQJ5iWiTzAvEY2CdYmETsG8RLQK5iWiVzAvEc2CeYkEiaxLRLtgXiLaBW2JXD4lCq4mEe2CeYloF8xLRLtgXaJIu2BeItoF8xLRLhgy3XWJaBes56IoSGRdItoF8xLRLpiXiHbBvES0C+Ylol2wLlGiXTAvEe2CeYloF8xLRLtgXiJBIusS0S6Yl4h2wbxEtAvmJaJdMC8R7YJ1iXbaBfMS0S6Yl4h2wbxEtAvmJRIksi4R7YJ5iWgXzEtEu2BeItoF8xLRLliXKNMumJeIdsG8RLQL5iWiXTAvkSCRdYloF8xLRLtgXiLaBfMS0S6Yl4h2wbpEhXbBvES0C+Ylol0wLxHtgnmJBImsS0S7YF4i2gXzEtEumJeIdsG4RI//KxKpSpTdMV92pSYQqUhZoPMd57jXBCITGRdIEMi2QDg54wLh44wLxD0i2wI57hAZF4gcZFwgcpBxgchBxgUSBLItEPeFjAvEXSHjAtEkGBeIJsG4QDQJygKdbyLn2v0gT1A1LhBB1bhABFXjAgkC2RaIoGpcIIKqcYEIqsYFIqgaF4igalugwC1v4wLRJBgXiCbBuEA0CcYFEgSyLRBNgnGBaBKMC0STYFwgmgTjAtEk2BZIaBKMC0STYFwgmgTjAtEkGBdIEMi2QDQJxgWiSTAuEE2CcYFoEowLRJNgW6BIk2BcIJoE4wLRJBgXiCbBuECCQLYFokkwLhBNgnGBaBKMC0STYFwgmgTbAiWaBOMC0SQYF4igalwgQSDbAhFUjQtEUDUuEEHVtkC7eZvtTjL+y7D1Vz+aq3SiSftvrz4GNm9bew9s/oZS74HN+97eA8tqA5v3ZT8bOPtz4ByrA5v3Ob0HNu8beg9svjDuPbD5ArbzwHkyp5XLOXCpfkrnyZxWe+DJnFZ74MmcVntgWW3g2ZxWc+DZnFZz4NmcVnPg2ZxWc+DZnFZr4LKa0yqrOa2ymtMqqzmtIqsNPJnT2vMzD6fqwJM5rfbAkzmt9sCTOa32wJM5rdbAfpvMabUHnsxptQeezGm1B57MabUHltUGXsxp+W0xp+W3xZyW3xZzWn5bzWm51ZyWW81pudWclv3n2fceWFYbeDWnZf/55b0HXs1p2X++du+BV3NafjWnZf+B170HXs1p2X8gc++BZbWBV3Na9h/A23vg1ZyW/QfE9h54Nadl/wGmvQdezWnZf8Bm74FXc1r2H1/3s4FdOAd2Uh14snO4PfBk53B74MnO4ebA9h//1Xvgyc7h8NwHIb468GTncHvgyc7h9sCy2sCTNR7tgSdzWu2BJ3Na7YEnc1rtgSdzWs2B7T8epffAqzkt+4/v6D3wak7L/uMleg+8mtOy//iD3gOv5rTsr+fvPfBqTsv++vjeA6/mtNJqTsv+PvfeA8tcA/t4DhxcdeDJnFZ74MmcVnvgyZxWe+DJnFZ74MmcVnPg2TaItweezGm1B57MabUHnsxptQeW1QZezWnNtkG8PfBqTmu2DeLtgVdzWrNtEG8PvJrTmm2DeHvg1ZzWbBvE2wOv5rRm2yDeHng1pzXbBvH2wKs5rdk2iLcHXs1pzbZBvD3wak5rtg3i7YFXc1qzbRBvD7ya05ptg3h74MWcVphtg3h74MWcVphtg3h74Po5vKV4Dvz1eeAKA5t45rl4d14BPoTXLw5eyilS/O3FB/UE9f7Ud3dSL1uNeoH6/dQvlkFD/e9Sd1BXoO6hrkA9QF2BukBdgTp+XYM6fl2D+g51BeoZ6grUyaYK1D3ZVIM62bQ/9ce1fL5nH2vUyaYa1MmmGtQF6grUyaYa1MmmGtTJphrUyaYa1MmmCtQD2VSDOtn0b1A/vw8TvmxP+kKdbKpBnWyqQV2grkCdbKpBnWyqQZ1s+heob0/qPtWok001qJNNFagL2VSDOtlUgzrZVIM62VSDukBdgTrZVIM62VSDOtlUgzrZVIM62VSBeiSbalAnm2pQJ5tqUCebalAXqCtQJ5tqUCebalAnm2pQJ5tqUCebKlBPZFMN6mRTDepkUw3qZFMN6gJ1BepkUw3qZFMN6mRTDepkUw3qZFMF6jvZVIM62VSDOtlUgzrZVIO6QF2BOtlUgzrZVIM62VSDOilJgXomJWlQJyVpUCclaVAnJWlQxzl2p+4fc/16sS/J1ajjHDWoc1dDgzp+XYF6wa9rUMeva1DHr2tQx69rUBeoK1DnroYGdbKpBnWyqQZ1sulfoF6OHxw2l2vUyab3U5eNbKpBnWyqQZ1sqkGdbKpBXaDen3reTudYQo062VSDOtlUgzrZVIM62VSDOtlUgbojm2pQJ5tqUCebalAnm2pQF6grUCebalAnm2pQJ5tqUCebalAnmypQ92RTDepkUw3qZFMN6mRTDeoCdQXqZFMN6mRTDepkUw3qZFMN6mRTBeqBbKpBnWyqQZ1sqkGdbKpBXaCuQJ1sqkGdbKpBnWyqQZ1sqkGdbKpAXcimGtTJphrUyaYa1MmmGtQF6grUyaYa1MmmGtTJphrUyaYa1MmmCtQjfr0/9bz7g3oujRc7L/LrxY//rK01iZh78xIJElmXiNhgXiIyhnmJCCTmJSK9mJeIqGNdosQ9O/MScYPPvES0C9oS7fGUKFclol0wL5EgkXWJaBfMS0S7YF4i2gXzEtEuaEuUwinR7msS0S5Yl2inXTAvEe2CeYloF8xLRLtgXiJBIusS0S6Yl4h2wbxEtAvmJaJdMC8R7YJ1iTLtgnmJaBfMS0S7YF4i2gXzEgkSWZeIdsG8RLQL5iWiXTAvEe2CeYloF6xLVGgXzEtEu2BeItoF8xLRLpiXSJDIukS0C+Ylol0wLxHtgnmJaBfMS0S7YFyiuNEumJeIdsG8RLQL5iWiXTAvkSCRdYloF8xLRLtgXiJyka5EJR+vLTlVBHKkIuMCkYmMC0QiMi4Qeci4QIJAtgUiCxkXiCRkXCDushoXiHusxgWiSbAtkKdJMC4QTYJxgWgSjAtEk2BcIEEg2wLRJBgXiCZBVyC3bQcOtzmpSUSXYF4i2gTzEtEnWJco0CiYl4hOwbxEtArmJaJXMC+RIJF1iegWzEtEu2BeItoFbYlcPiUKriYR7YJ5iWgXrEsktAvmJaJdMC8R7YJ5iWgXDJnuukSCRMZzkdAumJeIdsG8RLQL5iWiXTAvEe2CdYki7YJ5iWgXzEtEu2BeItoF8xIJElmXiHbBvES0C+Ylol0wLxHtgnmJaBesS5RoF8xLRLtgXiLaBfMS0S6Yl0iQyLpEtAvmJaJdMC8R7YJ5iWgXzEtEu2Bdop12wbxEtAvmJaJdMC8R7YJ5iQSJrEtEu2BeItoF8xLRLpiXiHbBvES0C9YlyrQL5iWiXTAvEe2CeYloF8xLJEhkXSLaBfMS0S6Yl4h2wbxEtAvmJaJdsC5RIRfpSpTdMV92pSYQqUhZoPMd57jXBBIEsi0Qici4QDg54wLh40wLlDbuERkXiDtExgUiBxkXiBxkXCBBINsCkYOMC8R9IeMCcVfIuEA0CcYFokmwLZCjSVAW6HwTOZeaQARV4wIRVI0LJAhkWyCCqnGBCKrGBSKoGheIoGpcIIKqbYE8QdW4QNzyNi4QTYJxgWgSjAskCGRbIJoE4wLRJBgXiCbBuEA0CcYFokmwLVCgSTAuEE2CcYFoEowLRJNgXCBBINsC0SQYF4gmwbhANAnGBaJJMC4QTYJtgYQmwbhANAnGBaJJMC4QTYJxgQSBbAtEk2BcIJoE4wLRJBgXiCbBuEA0CbYFijQJxgWiSTAuEE2CcYEEgWwLRFA1LhBB1bhABFXjAhFUbQuUsNnfEejx0uNNh313NZDY4U4gcUXfApk3Od5Gdr4GEvfSCSQuoxNI3EAnkNTLfUDu1MCdQOIjv2d/yvYE2fDuzqfw68XO71XqmE4N6nxFS4O6QF2BOmlMgzrRTYM6OU+DOqFQgzoJUoF6Jm5qUCebalAnm2pQJ5tqUBeoK1Anm2pQJ5tqUCebalAnm2pQJ5sqUC9kUw3qZFMN6mRTDepkUw3qAnUF6mRTDepkUw3qZFMN6mRTDepk0/7UQ8kHdfGVvwnZN7KpBnWy6V+gvsuTuq9RF6h3p57k+JPJx3+GGnX8ugZ1/LoGdfy6BnX8+l+gno934Xa31ajj1xWoO/y6BnX8ugZ17iX9BerPHuZxWdeo49f7U8/p+MEu51SjjofpTt277ZjQOyc16ngYBeoeD6NBHQ+jQR0Po0Gd78NoUBeoK1DHr2tQp1/XoE6/rkGdbKpBnWyqQD2QTTWok001qJNNNaiTTTWoC9QVqJNNNaiTTTWok001qJNNNaiTTRWoC9lUgzrZVIM62VSDOtlUg7pAXYE62VSDOtlUgzrZVIM62fQvUI9yUo+xRp1sqkA9kk01qJNNNaiTTTWok001qAvUFaiTTTWok001qJNNNaiTTTWok00VqCeyqQZ1sqkGdYF6b+rtnRkJv65BHb+uQR2/3p96ducupCy1e0kJv65BHb+uQH3Hr2tQx69rUOdekgZ17iVpUBeoK1Anm2pQJ5tqUCebalAnm2pQJ5sqUM9kUw3qZFMN6mRTDepkUw3qAnUF6mRTDepkUw3qZFMN6mRTDepkUwXqhWyqQZ1sqkGdbKpBnWyqQV2grkCdbKpBnWz6F6i3nj5YyKYa1MmmGtTJpvdTzxvZVIM62VSDOtlUgzrZVIO6QF2BOtlUgzrZVIM62VSDOtlUgzrZVIG6I5tqUCebalAnm2pQx6/3px7PXUgu7rHxkx+sj58sIdQkwtybl4gkYF4iYoN5icgY1iXyBBLzEpFezEtE1DEvEffszEskSGRdItoF8xLRLpiXiHbBvES0C9YlCphuXYke9xp+vfbR9NQEwnIbF4h+Tlegkv3xjqs384R2zrhAfMTpCuS289HYbqs9GjuLIJF1iWgVzEtEq2BeIloF8xLRKpiXiExkXaJIKjIvEd9ZMC8R9al5iWgXzEskSGRdItoFbYnS+WLnarfyIu2CeYloF8xLRLtgXiLaBesSJdoF8xLRLpiXiHbBvES0C+YlEiSyLhHtgnmJaBfMS0S7YF4i2gXzEtEuWJdop10wLxHtgnmJaBfMS0S7YF4iQSLrEtEumJeIdkFZIu/OF3sXaxLRLpiXiHbBvES0C9YlyrQL5iWiXTAvEe2CeYloF8xLJEhkXSKiq3mJiK7mJSK6mpeI6GpdokJ0NS8R0dW8RERX8xIRXc1LJEhkXSJujJuXiHbBvES0C+Ylol0wLxHtgnGJyka7YF4i2gXzEtEumJcI060tkTwlklyTCNNtXSKHXdCWKIVTot3XJMIumJcIu2BeIm5GmJdIkMi6RNyMMC8Ruci8ROQi8xJxM8K8RNyMsC6Rp10wLxHtgnmJaBfMS0S7YF4iQaIbJTqoUxj8Beq5HNTTVr3W6QA0qBPrNaiT1DWoE74VqAfytAZ1IrIGdVKvBnWCrAZ1gboCdbKpBnWyqQZ1sqkGdbKpBnWyqQJ1IZtqUCebalAnm2pQJ5tqUBeoK1Anm2pQJ5tqUCebalAnm2pQJ5sqUI9kUw3qZFMN6mRTDepkUw3qAnUF6mTT/tST+JO6hBp1sqkGdbKpBnWyqQZ1sqkC9UQ21aBONtWgTjbVoE421aAuUFegTjbVoE421aBONtWgTkrqTt27c4/A4z9rewR2UpIGdVKSBnVSkgZ1UpIGdYG6AnVSkgZ1UpIGdVKSBnXu4GlQJ5sqUM9kUw3qZFMN6mRTDepkUw3qAnUF6mRTDepkUw3qZFMN6mRTDepkUwXqhWyqQZ1sqkGdbKpBXaD+GfUDJMGnE0iyTCeQxJNOIEkcPUDmbcNYdT/if/icLTlf7CXXJMKFmZeI2wnmJRIksi4Rft28RCQB8xKRMcxLRHoxLxE3V6xL5LgTY14i2gVtifZ4SpSrEtEumJeIdsG8RIJE1iWiXTAvEe2CeYloF7QlSuGUaPc1iWgXzEtEu2BdIk+7YF4i2gXzEtEumJeIdsG8RIJE1iWiXTAvEe2CeYloF8xLRLtgXiLaBesSBdoF8xLRLpiXiHbBvES0C+YlEiSyLhHtgnmJaBfMS0S7YF4i2gXzEtEuWJdIaBfMS0S7YF4i2gXzEtEumJdIkMi6RLQL5iWiXTAvEe2CeYloF8xLRLtgXaJIu2BeItoF8xLRLpiXiHbBvESCRNYlol0wLxG5SFeikv3xjnOqCUQqsi1QIhMZF4hEZFwg8pBxgUhDxgUSBLItEEnIuEDcZTUuEPdYjQtEk2BcIJoE2wLtNAnGBaJJMC4QTYJxgWgSjAskCGRbIJoEXYHcth043OakJhFdgnmJaBPMS0SfYF4iGgXrEmU6BfMS0SqYl4hewbxENAvmJRIksi4R7YJ5iWgXtCVy+ZQouJpEtAvmJaJdMC8R7YJ1iQrtgnmJaBfMS0S7YMh01yWiXbCei4ogkXWJaBfMS0S7YF4i2gXzEtEumJeIdsG4RI8XIJF1iWgXzEtEu2BeItoF8xIJElmXiHbBvES0C+Ylol0wLxHtgnmJaBesS+RoF8xLRLtgXiLaBfMS0S6Yl0iQyLpEtAvmJaJdMC8R7YJ5iWgXzEtEu2BdIk+7YF4i2gXzEtEumJeIdsG8RIJE1iWiXTAvEe2CeYloF8xLRLtgXiLaBesSBdoF8xLRLpiXiHbBvES0C+YlEiSyLhHtgnmJaBfMS0S7YF4i2gXrEgm5SFei7I75sis1gUhFygKd7zjHvSYQmci4QIJAtgXCyRkXCB9nXCDuEdkWKHKHyLhA5CDjApGDjAtEDjIukCCQbYG4L2RcIO4KGReIJsG4QDQJxgWiSVAW6HwTOdfuByWCqnGBCKrGBSKoGhdIEMi2QARV4wIRVI0LRFA1LhBB1bhABFXbAu3c8jYuEE2CcYFoEowLRJNgXCBBINsC0SQYF4gmwbhANAnGBaJJMC4QTYJtgTJNgnGBaBKMC0STYFwgmgTjAgkC2RaIJsG4QDQJxgWiSTAuEE2CcYFoEmwLVGgSjAtEk2BcIJoE4wLRJBgXSBDItkA0CcYFokkwLhBNgnGBaBKMC0STYFogv9EkGBeIJsG4QARV4wIJAtkWiKBqXCCCqnGBCKq2BXLmbbY7yfgvw9Zf7WJKJ5q0//bqY2DztrX3wOZvKPUe2Lzv7T2wrDaweV/2s4GzPwfOsTqweZ/Te2DzvqH3wOYL494Dmy9gOw/sJ3NauZwDl+qntJ/MabUHnsxptQeezGm1B5bVBp7NaTUHns1pNQeezWk1B57NaTUHns1ptQYOqzmtsJrTCqs5rbCa0wqy2sCTOa09P/Nwqg48mdNqDzyZ02oPPJnTag88mdNqDiyTOa32wJM5rfbAkzmt9sCTOa32wLLawKs5LVnNaclqTktWc1qymtOKqzmtuJrTiqs5LfvPs+89sKw28GpOy/7zy3sPvJrTsv987d4Dr+a00mpOy/4Dr3sPvJrTsv9A5t4Dy2oDr+a07D+At/fAqzkt+w+I7T3wak7L/gNMew+8mtOy/4DN3gOv5rTsP77uZwO7cA7spDrwZOdwe+DJzuH2wJOdw82B7T/+q/fAk53D4bkPQnx14MnO4fbAk53D7YFltYEnazzaA0/mtNoDT+a02gNP5rTaA0/mtJoD2388Su+BV3Na9h/f0Xvg1ZyW/cdL9B54Nadl//EHvQdezWnZX8/fe+DFnFawvz6+98CLOa2wLea0gv197r0HlrkG9vEcOLjqwJM5rfbAkzmt9sCTOa32wJM5rfbAkzmt5sCzbRBvDzyZ02oPPJnTag88mdNqDyyrDbya05ptg3h74NWc1mwbxNsDr+a0Ztsg3h54Nac12wbx9sCrOa3ZNoi3B17Nac22Qbw98GpOa7YN4u2BV3Nas20Qbw+8mtOabYN4e+DVnNZsG8TbA6/mtGbbIN4eeDWnNdsG8fbAqzmt2TaItwdezWnNtkG8PfDFObwdb0q2GFUHNvHMc/Hu+MHiQ3j94kdvVk6R4m8vPqgnqPenvruTetlq1AvU76d+tQwa6n+VuoO6AnUPdQXqAeoK1AXqCtTx6xrU8esa1HeoK1DPUFegTjZVoJ7IphrUyab9qQd/FsOP0rFGnWyqQZ1sqkFdoK5AnWyqQZ1sqkGdbKpBnWyqQZ1sqkB9J5tqUCeb/g3q5/dhwpftSV+ok001qJNNNagL1BWok001qJNNNaiTTf8C9e1J3acadbKpBnWyqQL1TDbVoE421aBONtWgTjbVoC5QV6BONtWgTjbVoE421aBONtWgTjZVoF7IphrUyaYa1MmmGtTJphrUBeoK1MmmGtTJphrUyaYa1MmmGtTJpvdTl41sqkGdbKpBnWyqQZ1sqkFdoK5AnWyqQZ1sqkGdbKpBnWyqQZ1sqkDdkU01qJNNNaiTTTWok001qAvUFaiTTTWok001qJNNNaiTkhSoe1KSBnVSkgZ1UpIGdVKSBnWcY3fq/jHXrxf7klyNOs5Rgzp3NTSo49cVqAf8ugZ1/LoGdfy6BnX8ugZ1gboCde5qaFAnm2pQJ5tqUCeb/gXq5fjBYXO5Rp1sqkBdyKYa1MmmGtTJphrUyaYa1AXq/ann7XSOJdSok001qJNNNaiTTTWok001qJNNFahHsqkGdbKpBnWyqQZ1sqkGdYG6AnWyqQZ1sqkGdbKpBnWyqQZ1sqkC9UQ21aBONtWgTjbVoE421aAuUFegTjbVoE421aBONtWgTjbVoE42VaC+k001qJNNNaiTTTWok001qAvUFaiTTTWok001qJNNNaiTTTWok00VqGeyqQZ1sqkGdbKpBnWyqQZ1gboCdbKpBnWyqQZ1sqkGdbKpBnWyqQL1gl/vTz3v/qCeS+PFzov8evHjP2trTQrm3rxEgkTWJSI2mJeIjGFeIgKJeYlIL+YlIuoYlyhu3LMzLxE3+MxLRLugLdEeT4lyVSLaBfMSCRJZl4h2wbxEtAvmJaJdMC8R7YK2RCmcEu2+JhHtgnWJHO2CeYloF8xLRLtgXiLaBfMSCRJZl4h2wbxEtAvmJaJdMC8R7YJ5iWgXrEvkaRfMS0S7YF4i2gXzEtEumJdIkMi6RLQL5iWiXTAvEe2CeYloF8xLRLtgXaJAu2BeItoF8xLRLpiXiHbBvESCRNYlol0wLxHtgnmJaBfMS0S7YF4i2gXrEgntgnmJaBfMS0S7YF4i2gXzEgkSWZeIdsG8RLQL5iUiF+lKVPLx2pJTRaBIKjIuEJnIuEAkIuMCkYeMCyQIZFsgspBxgUhCxgXiLqtxgbjHalwgmgTbAiWaBOMC0SQYF4gmwbhANAnGBRIEsi0QTYJxgWgSdAVyT9Ruc1KTiC7BvES0CeYlok+wLtFOo2BeIjoF8xLRKpiXiF7BvESCRNYlolswLxHtgnmJaBe0JXL5lCi4mkS0C+Ylol2wLlGmXTAvEe2CeYloF8xLRLtgyHTXJRIkMp6LMu2CeYloF8xLRLtgXiLaBfMS0S5Yl6jQLpiXiHbBvES0C+Ylol0wL5EgkXWJaBfMS0S7YF4i2gXzEtEumJeIdsG4RGmjXTAvEe2CeYloF8xLRLtgXiJBIusS0S6Yl4h2wbxEtAvmJaJdMC8R7YJ1iRztgnmJaBfMS0S7YF4i2gXzEgkSWZeIdsG8RLQL5iWiXTAvEe2CeYloF6xL5GkXzEtEu2BeItoF8xLRLpiXSJDIukS0C+Ylol0wLxHtgnmJaBfMS0S7YF2iQC7SlSi7Y77sSk0gUpGyQOc7znGvCSQIZFsgEpFxgXByxgXCx9kWSLhHZFwg7hAZF4gcZFwgcpBxgQSBbAtEDjIuEPeFjAvEXSHjAtEkGBeIJsG2QJEmQVmg803kXLsfFAmqxgUiqBoXSBDItkAEVeMCEVSNC0RQNS4QQdW4QARV2wIlgqpxgbjlbVwgmgTjAtEkGBdIEMi2QDQJxgWiSTAuEE2CcYFoEowLRJNgW6CdJsG4QDQJxgWiSTAuEE2CcYEEgWwLRJNgXCCaBOMC0SQYF4gmwbhANAm2Bco0CcYFokkwLhBNgnGBaBKMCyQIZFsgmgTjAtEkGBeIJsG4QDQJxgWiSbAtUKFJMC4QTYJxgWgSjAskCGRbIIKqcYEIqsYFIqgaF4igalqgfcNmf0egx0uPNx323dVAYoc7gcQVfQtk3uR4G9n5GkjcSyeQuIxOIHEDnUBSL/cB6aiBO4HER37P/pTtCbLh3Z1P4deLnd+r1DGdGtT5ipYGdYG6AnXSmAZ1opsGdXKeBnVCoQZ1EqQCdU/c1KBONtWgTjbVoE421aAuUFegTjbVoE421aBONtWgTjbVoE42VaAeyKYa1MmmGtTJphrUyaYa1AXqCtTJphrUyaYa1MmmGtTJphrUyab9qYeSD+ria38TImRTDepk079AfZcn9donjAjUu1NPcvzJ5OM/Q406fl2DOn5dgzp+XYM6fv0vUM/Hu3C722rU8esK1CN+XYM6fl2DOveS/gL1Zw+zu1o2jfj1/tRzOn6wyznVqONhulP37qTnnZMadTyMAvWEh9GgjofRoI6H0aDO92E0qAvUFajj1zWo069rUKdf16BONtWgTjZVoL6TTTWok001qJNNNaiTTTWoC9QVqJNNNaiTTTWok001qJNNNaiTTRWoZ7KpBnWyqQZ1sqkGdbKpBnWBugJ1sqkGdbKpBnWyqQZ1sulfoB7lpP6V3pM62VSBeiGbalAnm2pQJ5tqUCebalAXqCtQJ5tqUCebalAnm2pQJ5tqUCeb3k89b2RTDepkUw3qAvXe1Js7M/KGX9egjl/XoI5f7089u3MXUhapUceva1DHrytQd/h1Der4dQ3q3EvSoM69JA3qAnUF6mRTDepkUw3qZFMN6mRTDepkUwXqnmyqQZ1sqkGdbKpBnWyqQV2grkCdbKpBnWyqQZ1sqkGdbKpBnWyqQD2QTTWok001qJNNNaiTTTWoC9QVqJNNNaiTTf8C9cbTB3Mgm2pQJ5tqUCebKlAXsqkGdbKpBnWyqQZ1sqkGdYG6AnWyqQZ1sqkGdbKpBnWyqQZ1sqkC9Ug21aBONtWgTjbVoI5f7089nruQXNxj4yfLdryLICHUJMLcm5eIJGBeImKDeYnIGNYlSgQS8xKRXsxLRNQxLxH37MxLJEhkXSLaBfMS0S6Yl4h2wbxEtAvWJdox3boSZXfMl12pCYTlNi4Q/ZyuQCX74x1Xb+Zl2jnjAvERpyuQe6J2W+3R2DkLElmXiFbBvES0CuYlolUwLxGtgnmJyETWJSqkIvMS8Z0F8xJRn5qXiHbBvESCRNYlol3QliidL3audiuv0C6Yl4h2wbxEtAvmJaJdMC5R2WgXzEtEu2BeItoF8xLRLpiXSJDIukS0C+Ylol0wLxHtgnmJaBfMS0S7YF0iR7tgXiLaBfMS0S6Yl4h2wbxEgkTWJaJdMC8R7YKyRN6dL/Yu1iSiXTAvEe2CeYloF6xL5GkXzEtEu2BeItoF8xLRLpiXSJDIukREV/MSEV3NS0R0NS8R0dW6RIHoal4ioqt5iYiu5iUiupqXSJDIukTcGDcvEe2CeYloF8xLRLtgXiLaBesSCe2CeYloF8xLRLtgXiJMt7ZE8pRIck0iTLd1iSJ2QVuiFE6Jdl+TCLtgXiLsgnmJuBlhXiJBIusScTPCvETkIvMSkYvMS8TNCPMScTPCukSJdsG8RLQL5iWiXTAvEe2CeYkEiW6U6KBOYfAXqOdyUE9b9VqnA9CgTqzXoE5S16BO+FagvpOnNagTkTWok3o1qBNkNagL1BWok001qJNNNaiTTTWok001qJNNFahnsqkGdbKpBnWyqQZ1sqkGdYG6AnWyqQZ1sqkGdbKpBnWyqQZ1sqkC9UI21aBONtWgTjbVoE421aAuUFegTjbtTz2JP6lLqFEnm2pQJ5tqUCebalAnm95OvWwb2VSDOtlUgzrZVIM62VSDukBdgTrZVIM62VSDOtlUgzopqTt17849Ao//jBXqjpSkQZ2UpEGdlKRBnZSkQV2grkCdlKRBnZSkQZ2UpEGdO3ga1MmmCtQ92VSDOtlUgzrZVIM62VSDukBdgTrZVIM62VSDOtlUgzrZVIM62VSBeiCbalAnm2pQJ5tqUBeof0b9AEnw6QSSLNMJJPGkE0gSRx+QgrHqfsT/8Dlbcr7YS65JhAszLxG3E8xLJEhkXSL8unmJSALmJSJjmJeI9GJeIm6uWJcocifGvES0C9oS7fGUKFclol0wLxHtgnmJBImsS0S7YF4i2gXzEtEuaEuUwinR7msS0S6Yl4h2wbpEiXbBvES0C+Ylol0wLxHtgnmJBImsS0S7YF4i2gXzEtEumJeIdsG8RLQL1iXaaRfMS0S7YF4i2gXzEtEumJdIkMi6RLQL5iWiXTAvEe2CeYloF8xLRLtgXaJMu2BeItoF8xLRLpiXiHbBvESCRNYlol0wLxHtgnmJaBfMS0S7YF4i2gXrEhXaBfMS0S6Yl4h2wbxEtAvmJRIksi4R7YJ5ichFuhKV7I93nFNNIFKRaYHcRiYyLhCJyLhA5CHjApGGjAskCGRbIJKQcYG4y2pcIO6xGheIJsG4QDQJtgVyNAnGBaJJMC4QTYJxgWgSjAskCGRbIJoEXYHcE/Xj1oLUJKJLMC8RbYJ5iegTzEtEo2BdIk+nYF4iWgXzEtErmJeIZsG8RIJE1iWiXTAvEe2CtkQunxIFV5OIdsG8RLQL5iWiXbAuUaBdMC8R7YJ5iWgXDJnuukS0C9ZzURAksi4R7YJ5iWgXzEtEu2BeItoF8xLRLliXSGgXzEtEu2BeItoF8xLRLpiXSJDIukS0C+Ylol0wLxHtgnmJaBfMS0S7YF2iSLtgXiLaBfMS0S6Yl4h2wbxEgkTWJaJdMC8R7YJ5iWgXzEtEu2BeItoF6xIl2gXzEtEumJeIdsG8RLQL5iUSJLIuEe2CeYloF8xLRLtgXiLaBfMS0S5Yl2inXTAvEe2CeYloF8xLRLtgXiJBIusS0S6Yl4h2wbxEtAvmJaJdsC5RJhfpSpTdMV92pSYQqUhZoPMd57jXBCITGRdIEMi2QDg54wLh44wLxD0i2wIV7hAZF4gcZFwgcpBxgchBxgUSBLItEPeFjAvEXSHjAtEkGBeIJsG4QDQJygKdbyLnyv0gvxFUjQtEUDUuEEHVuECCQLYFIqgaF4igalwggqpxgQiqxgUiqNoWyHHL27hANAnGBaJJMC4QTYJxgQSBbAtEk2BcIJoE4wLRJBgXiCbBuEA0CbYF8jQJxgWiSTAuEE2CcYFoEowLJAhkWyCaBOMC0SQYF4gmwbhANAnGBaJJsC1QoEkwLhBNgnGBaBKMC0STYFwgQSDbAtEkGBeIJsG4QDQJxgWiSTAuEE2CbYGEJsG4QDQJxgUiqBoXSBDItkAEVeMCEVSNC0RQtS1QNG+z3UnGfxm2/moXUzrRpP23Vx8Dm7etvQc2f0Op98DmfW/vgWW1gc37sp8NnP05cI7Vgc37nN4Dm/cNvQc2Xxj3Hth8Adt54DSZ08rlHLhUP6XTZE6rPfBkTqs98GROqz2wrDbwbE6rOfBsTqs58GxOqznwbE6rOfBsTqs18L6a09pXc1r7ak5rX81p7bLawJM5rT0/83CqDjyZ02oPPJnTag88mdNqDzyZ02oOnCdzWu2BJ3Na7YEnc1rtgSdzWu2BZbWBV3NaeTWnlVdzWnk1p5VXc1plNadVVnNaZTWnZf959r0HltUGXs1p2X9+ee+BV3Na9p+v3XvgxZxW2BZzWsH+A697D7yY0wr2H8jce2BZbeDFnFaw/wDe3gMv5rSC/QfE9h54Nadl/wGmvQdezWnZf8Bm74FXc1r2H1/3s4FdOAd2Uh14snO4PfBk53B74MnO4ebA9h//1Xvgyc7h8NwHIb468GTncHvgyc7h9sCy2sCTNR7tgSdzWu2BJ3Na7YEnc1rtgSdzWs2B7T8epffAqzkt+4/v6D3wak7L/uMleg+8mtOy//iD3gOv5rTsr+fvPfBqTsv++vjeA6/mtGQ1p2V/n3vvgWWugX08Bw6uOvBkTqs98GROqz3wZE6rPfBkTqs98GROqznwbBvE2wNP5rTaA0/mtNoDT+a02gPLagOv5rRm2yDeHng1pzXbBvH2wKs5rdk2iLcHXs1pzbZBvD3wak5rtg3i7YFXc1qzbRBvD7ya05ptg3h74NWc1mwbxNsDr+a0Ztsg3h54Nac12wbx9sCrOa3ZNoi3B17Nac22Qbw98GpOa7YN4u2BV3Nas20Qbw9cPYdDOZ8dHkpxqgObeOa5eHf8YPEhvH5x8FJOkeJvLz6oJ6j3p767k3rZatQL1O+nXl8GDfW/TN1BXYG6h7oC9QB1BeoCdQXq+HUN6vh1Deo71BWoZ6grUCeb3k9dNrKpBnWyaX/qwZ/F8KN0rFEnm2pQJ5tqUBeoK1Anm2pQJ5tqUCebalAnm2pQJ5sqUHdkUw3qZNO/Qf38Pkz4sj3pC3WyqQZ1sqkGdYG6AnWyqQZ1sqkGdbLpX6C+Pan7VKNONtWgTjZVoO7JphrUyaYa1MmmGtTJphrUBeoK1MmmGtTJphrUyaYa1MmmGtTJpgrUA9lUgzrZVIM62VSDOtlUg7pAXYE62VSDOtlUgzrZVIM62VSDOtlUgbqQTTWok001qJNNNaiTTTWoC9QVqJNNNaiTTTWok001qJNNNaiTTRWoR7KpBnWyqQZ1sqkGdbKpBnWBugJ1sqkGdbKpBnWyqQZ1UpIC9URK0qBOStKgTkrSoE5K0qCOc+xO3T/m+vViX5KrUcc5alDnroYGdfy6AvUdv65BHb+uQR2/rkEdv65BXaCuQJ27GhrUyaYa1MmmGtTJpn+Bejl+cNhcrlEnmypQz2RTDepkUw3qZFMN6mRTDeoC9f7U83Y6xxJq1MmmGtTJphrUyaYa1MmmGtTJpgrUC9lUgzrZVIM62VSDOtlUg7pAXYE62VSDOtlUgzrZVIM62VSDOtn0fupxI5tqUCebalAnm2pQJ5tqUBeoK1Anm2pQJ5tqUCebalAnm2pQJ5sqUHdkUw3qZFMN6mRTDepkUw3qAnUF6mRTDepkUw3qZFMN6mRTDepkUwXqnmyqQZ1sqkGdbKpBnWyqQV2grkCdbKpBnWyqQZ1sqkGdbKpBnWyqQD3g1/tTz7s/qOfSeLHzIr9e/PjPXJMIc29eIkEi6xIRG8xLRMYwLxGBxLxEpBfzEhF1rEsk3LMzLxE3+MxLRLugLdEeT4lyVSLaBfMSCRJZl4h2wbxEtAvmJaJdMC8R7YK2RCmcEu2+JhHtgnWJIu2CeYloF8xLRLtgXiLaBfMSCRJZl4h2wbxEtAvmJaJdMC8R7YJ5iWgXrEuUaBfMS0S7YF4i2gXzEtEumJdIkMi6RLQL5iWiXTAvEe2CeYloF8xLRLtgXaKddsG8RLQL5iWiXTAvEe2CeYkEiaxLRLtgXiLaBfMS0S6Yl4h2wbxEtAvWJcq0C+Ylol0wLxHtgnmJaBfMSyRIZF0i2gXzEtEumJeIXKQrUcnHa0tOFYEKqci4QGQi4wKRiIwLRB4yLpAgkG2ByELGBSIJGReIu6zGBeIeq3GBaBJMC5Q2mgTjAtEkGBeIJsG4QDQJxgUSBLItEE2CcYFoEnQFctt24HCbk5pEdAnmJaJNMC8RfYJ1iRyNgnmJ6BTMS0SrYF4iegXzEgkSWZeIbsG8RLQL5iWiXdCWyOVTouBqEtEumJeIdsG6RJ52wbxEtAvmJaJdMC8R7YIh012XSJDIeC7ytAvmJaJdMC8R7YJ5iWgXzEtEu2BdokC7YF4i2gXzEtEumJeIdsG8RIJE1iWiXTAvEe2CeYloF8xLRLtgXiLaBesSCe2CeYloF8xLRLtgXiLaBfMSCRJZl4h2wbxEtAvmJaJdMC8R7YJ5iWgXrEsUaRfMS0S7YF4i2gXzEtEumJdIkMi6RLQL5iWiXTAvEe2CeYloF8xLRLtgXaJEu2BeItoF8xLRLpiXiHbBvESCRNYlol0wLxHtgnmJaBfMS0S7YF4i2gXrEu3kIl2Jsjvmy67UBCIVKQt0vuMc95pAgkC2BSIRGRcIJ2dcIHycbYEy94iMC8QdIuMCkYOMC0QOMi6QIJBtgchBxgXivpBxgbgrZFwgmgTjAtEk2Bao0CQoC3S+iZxr94MKQdW4QARV4wIJAtkWiKBqXCCCqnGBCKrGBSKoGheIoGpaoH0jqBoXiFvexgWiSTAuEE2CcYEEgWwLRJNgXCCaBOMC0SQYF4gmwbhANAm2BXI0CcYFokkwLhBNgnGBaBKMCyQIZFsgmgTjAtEkGBeIJsG4QDQJxgWiSbAtkKdJMC4QTYJxgWgSjAtEk2BcIEEg2wLRJBgXiCbBuEA0CcYFokkwLhBNgm2BAk2CcYFoEowLRJNgXCBBINsCEVSNC0RQNS4QQdW4QARV2wIJNvs7Aj1eerzpsO+uBhI73AkkruhbIPMmx9vIztdA4l46gcRldAKJG+gEknq5D8hIDdwJJD7ye/anbE+QDe/ufAq/Xuz8XqWO6dSgzle0NKgL1BWok8Y0qBPdNKiT8zSoEwo1qJMgFagn4qYGdbKpBnWyqQZ1sqkGdYG6AnWyqQZ1sqkGdbKpBnWyqQZ1sqkC9Z1sqkGdbKpBnWyqQZ1sqkFdoK5AnWyqQZ1sqkGdbKpBnWyqQZ1s2p96KPmgLr72NyGZbKpBnWz6F6jv8qRe+4TJAvXu1JMcfzL5+M9Qo45f16COX9egjl/XoI5f/wvU8/Eu3O62GnX8ugL1gl/XoI5f16DOvaS/QP3Zw+yulk0Lfr0/9ZyOH+xyTjXqeJju1L3bjgm9c1Kjjoe5n3re8DAa1PEwGtTxMBrU+T6MBnWBugJ1/LoGdfp1Der06xrUyaYa1MmmCtQd2VSDOtlUgzrZVIM62VSDukBdgTrZVIM62VSDOtlUgzrZVIM62VSBuiebalAnm2pQJ5tqUCebalAXqCtQJ5tqUCebalAnm2pQJ5v+BepRTuox1qiTTRWoB7KpBnWyqQZ1sqkGdbKpBnWBugJ1sqkGdbKpBnWyqQZ1sqkGdbKpAnUhm2pQJ5tqUBeo374zIwt+XYM6fl2DOn69P/Xszl1Ij4/wGnX8ugZ1/LoC9Yhf16COX9egzr0kDercS9KgLlBXoE421aBONtWgTjbVoE421aBONlWgnsimGtTJphrUyaYa1MmmGtQF6grUyaYa1MmmGtTJphrUyaYa1MmmCtR3sqkGdbKpBnWyqQZ1sqkGdYG6AnWyqQZ1sulfoN54+mDeyaYa1MmmGtTJpgrUM9lUgzrZVIM62VSDOtlUg7pAXYE62VSDOtlUgzrZVIM62VSDOtlUgXohm2pQJ5tqUCebalDHr/enHs9dSC7usfGTZTveRZAQahJh7s1LRBIwLxGxwbxEZAzjEpWNQGJeItKLeYmIOuYl4p6deYkEiaxLRLtgXiLaBfMS0S6Yl4h2wbpEDtOtK1F2x3zZlZpAWG7jAtHP6QpUsj/ece1mXvG0c8YF4iNOVyC3nY/Gdlvt0djFCxJZl4hWwbxEtArmJaJVMC8RrYJ5ichE1iUKpCLzEvGdBfMSUZ+al4h2wbxEgkTWJaJd0JYonS92rnYrL9AumJeIdsG8RLQL5iWiXbAukdAumJeIdsG8RLQL5iWiXTAvkSCRdYloF8xLRLtgXiLaBfMS0S6Yl4h2wbpEkXbBvES0C+Ylol0wLxHtgnmJBImsS0S7YF4i2gVlibw7X+xdrElEu2BeItoF8xLRLliXKNEumJeIdsG8RLQL5iWiXTAvkSCRdYmIruYlIrqal4joal4ioqt1iXaiq3mJiK7mJSK6mpeI6GpeIkEi6xJxY9y8RLQL5iWiXTAvEe2CeYloF6xLlGkXzEtEu2BeItoF8xJhurUlkqdEkmsSYbqtS1SwC9oSpXBKtPuaRNgF8xJhF8xLxM0I8xIJElmXiJsR5iUiF5mXiFxkXiJuRpiXiJsRtiVy2+P/QyPzGtEv2NeIgsG+RjQM9jUSNLpRoxM7tcFfwJ7LgT1t9audKkAFO/FeBTuRXQU7MVwDuyNZq2AnLKtgJ/+qYCfSqmAXsGtgJ6WqYCelqmAnpapgJ6WqYCelamD3pFQV7KRUFeykVBXspFQV7AJ2DeykVBXspFQV7KRUFeykVBXspFQN7IGUqoKdlKqCnZSqgp2UqoJdwK6BnZTaH3sSf2KXUMVOSlXBTkpVwU5KVcFOStXALqRUFeykVBXspFQV7KRUFewCdg3spFQV7KRUFeykVBXsxKXu2L07dw48/rO6cyASl1SwE5dUsBOXVLATl1SwC9g1sBOXVLATl1SwE5dUsHNTTwU7KVUDeyKlqmAnpapgJ6WqYCelqmAXsGtgJ6WqYCelqmAnpapgJ6WqYCelamDfSakq2EmpKthJqSrYBeyfYT9JkoB6kSTU9CJJTulFkujRiWTGX3U/6H/4xC45X+wlVzXCjNnXiPsL9jUSNDKvEb7dvkYkAvsakTXsa0SKsa8Rd1vMa1S4NWNfI3oGbY32eGqU6xrRM9jXiJ7BvkaCRuY1omewrxE9g32N6Bm0NUrh1Gj3VY3oGexrRM9gXaOHSmhkXiN6Bvsa0TPY14iewb5GgkbmNaJnsK8RPYN9jegZ7GtEz2BfI3oG8xo5egb7GtEz2NeInsG+RvQM9jUSNDKvET2DfY3oGexrRM/w/7d3d7uubMUZhm/J3S7b7dwNiXKAFJEo/EjcPROBe21QF2NM8cIqjXrPQKzszHqKxN9XU8uj/o68M9TfkXeG8jvavTPU35F3hvo78s5Qf0feGervKNxR+R15Z6i/I+8M9XfknaH+jrwz1N+Rd4byO7p7Z6i/I+8M9XfknaH+jrwz1N9RuKPyO/LOUH9H9qOfu6P3sX9+4uN5uSHbUfENhd2o+oZsRtU3ZC+qviFbUfUNhRsqviEbUfUN+XvX6hvyt67VN+RNofqGvCkU39DDm0L1DXlTqL4hbwrVN+RNofqGwg0V35A3hZ+7oe12+3D8OVpf7sirQv0deVeovyMvC/V35G2h/I6eXhfq78j7Qv0deWGovyNvDPV3FO6o/I68M9TfkXeGn72j7Th3dN8ud+Sdof6OvDPU35F3hvI7enlnqL8j7wz1d+SdoVD2TnbknaF8P3qFOyq/I+8M9XfknaH+jrwz1N+Rd4b6O/LOUH5Hh3eG+jvyzlB/R94Z6u/IO0P9HYU7Kr8j7wz1d+Sdof6OvDPU35F3hvo78s5Qfkdv7wz1d+Sdof6OvDPU35F3hvo7CndUfkfeGervyDtD/R15Z6i/I+8M9XfknaH6jvabd4b6O/LOUH9H3hnq78g7Q/0dhTsqvyPvDPV35J2h/o68M9TfkXeG+jvyzlB+R5t3hvo78s5Qf0feGervyDtD/R2FOyq/I+8M9XfknaH+jrwz1N+Rd4byO9rtRz93R8f2me/Y3pcbsh395A2dP/HxeF1uyG5UfUPhhopvyDxXfUOmueob8ndGxTd09zdG1TdkH6q+IftQ9Q3Zh6pvKNxQ8Q35e6LqG/K3RNU35E2h+oa8KVTfkDeFn7yh84c4jsvfD4WNtfqGbKzVN2Rjrb6hcEPFN2Rjrb4hG2v1DdlYq2/Ixlp9QzbW4ht6+Fvw6hvyplB9Q94Uqm/Im0L1DYUbKr4hbwrVN+RNofqGvClU35A3heob8qZQfENPbwrVN+RNofqGvClU35A3heobCjdUfEPeFKpvyJtC9Q15U6i+IW8K1TfkTaH4hl7eFKpvyJtC9Q15U6i+IW8K1TcUbqj4hrwpVN+QN4XqG/KmUH1D3hSqb8ibQvENHd4Uqm/Im0L1DdlYq28o3FDxDdlYq2/Ixlp9QzbW4ht6l0/b20mz/2La6z+9PZ7P0+b5+ps/fU5cPr3iE5f/DRM+cfn8i08c7SYun8++N/GxnxMfj+uJy+cdfOLy+QGfuPwFGZ+4/EUWnvh+WyxzHe9z4vfreuLFMtfExItlromJF8tcExNHu4lXy1zjiVfLXOOJV8tc44lXy1zjiVfLXMOJt3aZa2uXubZ2mWtrl7m2aDfxYpnrdfzox8/riRfLXBMTL5a5JiZeLHNNTLxY5hpPvC+WuSYmXixzTUy8WOaamHixzDUxcbSbuF3m2ttlrr1d5trbZa69Xea6t8tc93aZ694uc93bZa7678/jE7fLXPXfR8cnbpe56r/fjU/cLnNFu8xV/0VtfOJ2mav+i8/4xNFu4naZq/4Lv/jE7TJX/Rdo8YnbZa76L6TiE7fLXPVf8MQnbpe56r+O972Jt/s58RbXEy/2eTwx8WKfxxMTL/Z5PJ64/uti+MSLfR7ff3yrROzXEy/2eTwx8WKfxxMTR7uJF7uBTEy8WOaamHixzDUx8WKZa2LixTLXeOL6r6/gE7fLXPVfB8Enbpe56r9egU/cLnPVf10Bn7hd5qr/7f/4xO0yV/1vp8cnbpe5jnaZq/73xeMTx1oT749z4vt2PfFimWti4sUy18TEi2WuiYkXy1wTEy+WucYTr/Yd5RMTL5a5JiZeLHNNTLxY5pqYONpN3C5zrfYd5RMTt8tcq31H+cTE3TJXrPYd5RMTd8tcsdp3lE9M3C1zxS3aTdwtc8Vq31E+MXG3zBWrfUf5xMTtMtdq31E+MXG7zLXad5RPTNwuc632HeUTE7fLXKt9R/nExO0y12rfUT4xcbvMtdp3lE9M3C5zrfYd5RMTX38ex/t87fwRz8HE29en+vm/Z/8xw/6+nPhf9Tb6139fP//g2O/3f/yH73u8T8nH3/zhk+bZlea1nTTv2yXNW5qEJvlaZWm+aDZpMppdmozmLk1GE9JkNG1zzZjGXJPSvKTJaA5pMhrTcEYTpuGUpmsavu/nDeOrel/SdE3DEzRd0/AETUiT0XRNwxM0XdPwBE3XNDxB0zUNT9B0TcNjmkfXNDxB0zcNn7+Huv/iGwh+SdM3DQ9p+qbhIU1Ik9H0TcNDmr5peEjTNg3fftDsz0uatml4TNM2DQ9pnm3T8JimbRoe07RNw2Oatml4TBPSZDRt0/CYpm0aHtOYhlMa03BKYxrOaF6m4ZTGNJzSmIZTGtNwShPSZDSm4ZTGNJzSmIZTGtNwSmMazmgO03BKYxpOaUzDKY1pOKUJaTIa03BKYxpOaUzDKY1pOKUxDWc0b9NwSmMaTmlMwymNaTilCWkyGtNwSmMaTmlMwymNkS+hedyMfCmNkS+lMfKlNEa+lKbph/f+fnz+8P5+bpc0TT+8Z2ianrJmaJrmmgmarWmumaFpmmtmaJrmmhmaprlmhiakyWianrJmaEzDKY1pOKVpm4bfn3/w/bYdlzRt0/CQZm+bhsc0bdPwmKZtGh7TtE3DY5roSnPczg/v9/2Spm0aHtO0TcNjmrZpeEzTNg2Padqm4SFN16ezZmjapuExTds0PKZpm4bHNCFNRmMaTmlMwymNaTilMQ2nNKbhjKbr01kzNKbhlMY0nNKYhlOakCajMQ2nNKbhlMY0nNKYhlMa03BG0/XprBka03BKYxpOaUzDKU1Ik9GYhlMa03BKYxpOaUzDKY1pOKPp+nTWDI1pOKUxDac0puGUJqTJaEzDKY1pOKUxDac0puGUxjSc0XR9BGk/XvuH5ngP/vC2R3wG3OPybwh1fTEJdwwdEceu8Yp27JrFaMeuwY127JryaMeukRB27PrYFO7Y9fRKO9pnZhxf54D7ce1on2EcQ0fE0T7DONpnGEf7DONon5lxfN5Px9d+6WifQRy7PheGO9pnGEf7DONon2EcQ0fE0T7DONpnGEf7DONon2Ec7TOE47PrW3i4o32GcbTPMI72GcYxdEQc7TOMo32GcbTPMI72GcbRPoM4tn0Dk3a0zzCO9hnG0T7DOIaOiKN9hnG0zzCO9hnG0T7DONpnEMe2r5jSjvYZxtE+wzjaZxjH0BFxtM8wjvYZxtH8OHZ8H58/+z6eV4ptX/1kFc2OhKLJkVA0NxKKoSKgaGYkFE2MhKL3b0LR6zehaHcBFNu+0coq2l0IRbsLoWh3IRRDRUDR7kIo2l0mrt232/YZ8LbFpaPthXG0vzCONhjEse3LurSjLYZxtMcwjjYZxjF0RBxtM4yjfYZxtM/MOG7H6XjfLh3tM4yjfQZxbPs2Mu1on2Ec7TOMo33mm7kncQwdifzY9vFn2tE+wzjaZxhH+wzjaJ9BHF/2GcbRPsM42mcYR/sM4xg6Io72GcbRPsM42mcYR/sM42ifQRx9bR1ytM8wjvYZxtE+wziGjoijfYZxtM8wjvYZxtE+wzjaZxBHX1uHHO0zjKN9hnG0zzCOoSPiaJ9hHO0zjKN9hnG0zzCO9hnC8eVr65CjfYZxtM8wjvYZxjF0RBztM4yjfYZxtM8wjvYZxtE+gzj6uvWE43HOd2zvS0XT44Ti+RMfj9elYqgIKJocCUU/pwlFP6UBRV8QRhS9OBKK5kVC0bxIKIaKgKJ5kVD0zkgoemUkFO0uhKLdBVD0/eoZxfOHOI7L+6IvLyOKpm5CMVQEFE3dhKKpm1A0dROKpm5C0dQNKPryMqLobwwIRbsLoWh3IRRDRUDR7kIo2l0IRbsLoWh3IRTtLoCiLy4jinYXQtHuQijaXQjFUBFQtLsQinYXQtHuQijaXQhFuwug6OvKiKLdhVC0uxCKdhdCMVQEFO0uhKLdhVC0uxCKdhdC0e4CKPqSMqJodyEU7S6EYqgIKJq6CUVTN6Fo6iYUTd2A4kIvrH790c/3JN6/EtzltOskkplp1/nMux+3+PzQx7ZfTrvOZ9PMtOt8hsxMu87/r5+Zdp1LyMS0C70tODPtQp+3E9Mu9Hk7Me06v2WcmTZaTdsqSy30ftzMtK2y1EJvsY2nPRZ66Wtm2k7p4ljo1ayZaTuli68/0GraTuniWOg1p5lpO6WLY6GXkWam7XSpObaFstTX2enHtINfomz78/75mffXNc1Kv0aBaVb6nQtMs1Cko2lCmoxmobBI0yyULGmahWIoTbNQZqVpFgq4MM1C73nhNKbhlMY0nNKYhlOakCajMQ2nNKbhlMY0nNKYhlMa03BGs9ALUTiNaTilMQ2nNKbhlCakyWhMwymNaTilMQ2nNF3T8P19fH7m2LdLmq5peEyz0MtN36R5xQ+ay/+DWugJnO/RPOPz13a//uX9kiakyWi65poJmq65ZoKma655Hp+fYnttt0uarrlmgqZrrhnTLPSqC07T9cr3/NGhXttlGl7ozYvv0RzPzz94O47nJU3TT6h9u32+vWTftrikafoJNUPT9BNqgmah7+7HaZp+Qs3QNP091AxN03vNDE1Ik9E0vdfM0DS918zQmIZTGtNwSmMazmgW+jZ4nMY0nNKYhlMa03BKE9JkNKbhlMY0nNKYhlMa03BKYxrOaA7TcEpjGk5pTMMpjWk4pQlpMhrTcEpjGk5p2qbhR5w0j8clTds0PKZpm4aHNCu9u0HTtE3DY5q2aXhM0zYNj2lCmoymbRoe07RNw2Ma03BKYxpOaUzDCc17pXdiaJq2f2N39Ddb3reQJqNp+zd2xzRd/8bucT5zvR0RlzRd/8buBE3Xv7E7QdP1b+yOadq+2TJB0/Vv7E7QdP1evgmarml4giakyWi6puEJGtNwSmMaTmlMwymNaTijaftmywSNaTilMQ2nNKbhlCakyWhMwymNaTilMQ2nNKbhlMY0nNG0fbNlgsY0nNKYhlMa03BKE9JkNG3T8OjrUd9t32yZoGmbhsc0bdPwmKZtGh7StH2zZYKmbRoe07RNw2Oatml4TBPSZDSm4ZTGNJzSmIZTGtNwSmMazmjavvQzQWMaTmmiKc3j/Ft02+P1GPyT4/b5Ke5xv186dg1BtGPXxEQ7do1XtGPXLEY7dg1usGPX17Jwx66RkHbsek2lHbueXmnH0BFxtM8wjvYZxtE+gzh2fUTpW47HOd+xvS8VTT2Eot16rPg+9s9PfH3B7fp8CKvY9c2Ibylut/NL37fb5Ze+v7s+MIE7ho6Ioz2GcbTHMI72GMbR7Mg4mh4Rx65vc+CO3icYR/sM42ifYRxDxwnH5/mHt+3yftv18RHc0T7DONpnGEf7DONonwEcvz7Q7TOMo32GcbTPMI72GcYxdEQc7TOMo32GcbTPMI72GcbRPoM4tn1ViXa0zzCO9hnG0T7DOIaOiKN9ZsJx384/vG+PS0f7DONon2Ec7TOMo30GcWz7LhbtaJ9hHO0zjKN9hnE0hzOO5nDG0RzOOJrDGUdzOOLY9kUu2tEczjiawxlHczjjGDoijvYZxtE+wzjaZxhH+wzjaJ9BHNu+qUY72mcYR3PPjGP8cIzj0tHcwzj6OTPj+Lyfjq/9yrHta0W0o58zjKN3M8bRuxnjGDoijuZHxtH8yDh6N2McvZsxjvYZxNF3uSBH+wzjaJ9hHO0zf+940kRXmuP9+Zmft+v/1rRtHWOatkViTNO2G4xp2sb9MU3bBD+kebUN5WOatjl7TNM2Oo9p2qbhMU1Ik9GYhlMa03BKYxpOaUzDKY1pOKM5TMMpjWk4pTENpzSm4ZQmpMloTMMpjWk4pTENpzSm4ZTGNJzR9H2wc0xjGk5pTMMpjWk4pYmmNM/YT5q4X9J0TcMTNF3T8ARN1zQ8QdM1DU/QdE3DQ5qt7XOPEzRd0/AETdc0PEHTNQ1P0IQ0GY1pOKUxDac0TSPfvp1/R+HrXz4uaZpGvgmari/izdA0jXwzNE0j3wxN08g3QxPSZDRNI98MTdPIN0PT9AA6Q2MaTmlMwxlN1/fUZmhMwymNaTilMQ2nNCFNRmMaTmlMwymNaTilMQ2nNKbhjKbrq2YzNKbhlKZF5DunjVbTtghm57QtstY5bYv49JnWF27+g3gJY/OFG8jRb+pkHP2mTsYxdEQcfXmAcfTlAcbRlwcYR18eYBx9eQBx9CW1KcfXOeB+XDvaZxhH+wzjaJ9hHENHxNE+wzjaZ4iXWTZfUoMc7TOMo30GcfQlNcjRPsM42mcYR/sM4xg6Io72GcbRPsM42mcYR/sM42ifQRz7PkIHO9pnGEf7DONon2EcQ0fE0T7DONpnGEf7DONon2Ec7TOIY99nBGFH+wzjaJ9hHO0zjGPoiDjaZxhH+wzjaJ9hHO0zjKN9BnHs+xAk7GifYRztM4yjfYZxDB0RR/Pj2PF9fB67eR/PS0XTI6FodvznFfe2jyayiuZGQtHUSCiaGQnFUBFQ9P5NKHr9JhTtLoSi3YVQtLsAil1f/4QV7S6Eot2FULS7EIqh4vjafbttnz982+LS0fbCONpfGEcbDONoh2EcbTGIY9d3W3FHmwzjaJdhHG0zjGPoiDjaZ2Yct+N0vG+XjvYZxtE+wzjaZxhH+wzi2PXlXdzRPvPN3JM42meQ/NjjbeR/g2PoiDjaZxhH+wzjaJ9hHO0zjKN9BnH0tXXI0T7DONpnGEf7DOMYOiKO9hnG0T7DONpnGEf7DONon0EcfW0dcrTPMI72GcbRPsM4ho6Io32GcbTPMI72GcbRPsM42mcQR19bhxztM4yjfYZxtM8wjqEj4mifYRztM4yjfYZxtM8wjvYZxNHX1iFH+wzjaJ9hHO0zjGPoiDjaZxhH+wzjaJ9BHH3desLxOOc7tveloulxQvH8iY/H61LR7EgomhwJRT+nCUU/pQlFb46EohdHQNHXgxFF8yKhaF4kFM2LhGKoCCh6ZSQU7S6Eot2FULS7TCieP8RxXN0X7768jCiauglFUzehaOomFENFQNHUTSiauglFUzehaOomFP2NAaDoy8uIot2FULS7EIp2F0IxVAQU7S6Eot2FULS7EIp2F0LR7gIo+toyomh3IRTtLoSi3YVQDBUBRbsLoWh3IRTtLoSi3YVQtLsAir6sjCjaXQhFuwuhaHchFENFQNHuQijaXQhFuwuhaHchFO0ugKKvKCOKpm5C0dRNKIaKgKKpm1A0df8zil//5g+/+v9f/+o//+e/f/v1P/Dn/+z3v/mv3/36f3/z13/7uz/+31/+k68/+yc="}],"outputs":{"globals":{"storage":[{"fields":[{"name":"npk_m_x_registry","value":{"fields":[{"name":"slot","value":{"kind":"integer","sign":false,"value":"0000000000000000000000000000000000000000000000000000000000000001"}}],"kind":"struct"}},{"name":"npk_m_y_registry","value":{"fields":[{"name":"slot","value":{"kind":"integer","sign":false,"value":"0000000000000000000000000000000000000000000000000000000000000002"}}],"kind":"struct"}},{"name":"ivpk_m_x_registry","value":{"fields":[{"name":"slot","value":{"kind":"integer","sign":false,"value":"0000000000000000000000000000000000000000000000000000000000000003"}}],"kind":"struct"}},{"name":"ivpk_m_y_registry","value":{"fields":[{"name":"slot","value":{"kind":"integer","sign":false,"value":"0000000000000000000000000000000000000000000000000000000000000004"}}],"kind":"struct"}},{"name":"ovpk_m_x_registry","value":{"fields":[{"name":"slot","value":{"kind":"integer","sign":false,"value":"0000000000000000000000000000000000000000000000000000000000000005"}}],"kind":"struct"}},{"name":"ovpk_m_y_registry","value":{"fields":[{"name":"slot","value":{"kind":"integer","sign":false,"value":"0000000000000000000000000000000000000000000000000000000000000006"}}],"kind":"struct"}},{"name":"tpk_m_x_registry","value":{"fields":[{"name":"slot","value":{"kind":"integer","sign":false,"value":"0000000000000000000000000000000000000000000000000000000000000007"}}],"kind":"struct"}},{"name":"tpk_m_y_registry","value":{"fields":[{"name":"slot","value":{"kind":"integer","sign":false,"value":"0000000000000000000000000000000000000000000000000000000000000008"}}],"kind":"struct"}}],"kind":"struct"}]},"structs":{"functions":[{"fields":[{"name":"parameters","type":{"fields":[{"name":"address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"partial_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::partial_address::PartialAddress"}},{"name":"keys","type":{"fields":[{"name":"npk_m","type":{"fields":[{"name":"x","type":{"kind":"field"}},{"name":"y","type":{"kind":"field"}},{"name":"is_infinite","type":{"kind":"boolean"}}],"kind":"struct","path":"std::embedded_curve_ops::EmbeddedCurvePoint"}},{"name":"ivpk_m","type":{"fields":[{"name":"x","type":{"kind":"field"}},{"name":"y","type":{"kind":"field"}},{"name":"is_infinite","type":{"kind":"boolean"}}],"kind":"struct","path":"std::embedded_curve_ops::EmbeddedCurvePoint"}},{"name":"ovpk_m","type":{"fields":[{"name":"x","type":{"kind":"field"}},{"name":"y","type":{"kind":"field"}},{"name":"is_infinite","type":{"kind":"boolean"}}],"kind":"struct","path":"std::embedded_curve_ops::EmbeddedCurvePoint"}},{"name":"tpk_m","type":{"fields":[{"name":"x","type":{"kind":"field"}},{"name":"y","type":{"kind":"field"}},{"name":"is_infinite","type":{"kind":"boolean"}}],"kind":"struct","path":"std::embedded_curve_ops::EmbeddedCurvePoint"}}],"kind":"struct","path":"aztec::keys::public_keys::PublicKeys"}}],"kind":"struct","path":"KeyRegistry::register_npk_and_ivpk_parameters"}}],"kind":"struct","path":"KeyRegistry::register_npk_and_ivpk_abi"},{"fields":[{"name":"parameters","type":{"fields":[{"name":"address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"new_npk_m","type":{"fields":[{"name":"x","type":{"kind":"field"}},{"name":"y","type":{"kind":"field"}},{"name":"is_infinite","type":{"kind":"boolean"}}],"kind":"struct","path":"std::embedded_curve_ops::EmbeddedCurvePoint"}},{"name":"nonce","type":{"kind":"field"}}],"kind":"struct","path":"KeyRegistry::rotate_npk_m_parameters"}}],"kind":"struct","path":"KeyRegistry::rotate_npk_m_abi"},{"fields":[{"name":"parameters","type":{"fields":[{"name":"address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"partial_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::partial_address::PartialAddress"}},{"name":"keys","type":{"fields":[{"name":"npk_m","type":{"fields":[{"name":"x","type":{"kind":"field"}},{"name":"y","type":{"kind":"field"}},{"name":"is_infinite","type":{"kind":"boolean"}}],"kind":"struct","path":"std::embedded_curve_ops::EmbeddedCurvePoint"}},{"name":"ivpk_m","type":{"fields":[{"name":"x","type":{"kind":"field"}},{"name":"y","type":{"kind":"field"}},{"name":"is_infinite","type":{"kind":"boolean"}}],"kind":"struct","path":"std::embedded_curve_ops::EmbeddedCurvePoint"}},{"name":"ovpk_m","type":{"fields":[{"name":"x","type":{"kind":"field"}},{"name":"y","type":{"kind":"field"}},{"name":"is_infinite","type":{"kind":"boolean"}}],"kind":"struct","path":"std::embedded_curve_ops::EmbeddedCurvePoint"}},{"name":"tpk_m","type":{"fields":[{"name":"x","type":{"kind":"field"}},{"name":"y","type":{"kind":"field"}},{"name":"is_infinite","type":{"kind":"boolean"}}],"kind":"struct","path":"std::embedded_curve_ops::EmbeddedCurvePoint"}}],"kind":"struct","path":"aztec::keys::public_keys::PublicKeys"}}],"kind":"struct","path":"KeyRegistry::register_ovpk_and_tpk_parameters"}}],"kind":"struct","path":"KeyRegistry::register_ovpk_and_tpk_abi"}]}},"file_map":{"100":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/context/public_context.nr","source":"use crate::hash::{compute_secret_hash, compute_message_hash, compute_message_nullifier};\nuse dep::protocol_types::address::{AztecAddress, EthAddress};\nuse dep::protocol_types::constants::MAX_FIELD_VALUE;\nuse dep::protocol_types::traits::{Serialize, Deserialize, Empty};\nuse dep::protocol_types::abis::function_selector::FunctionSelector;\nuse crate::context::inputs::public_context_inputs::PublicContextInputs;\nuse crate::context::gas::GasOpts;\n\nstruct PublicContext {\n inputs: PublicContextInputs,\n}\n\nimpl PublicContext {\n pub fn new(inputs: PublicContextInputs) -> Self {\n PublicContext { inputs }\n }\n\n pub fn emit_unencrypted_log<T, let N: u32>(_self: &mut Self, log: T) where T: Serialize<N> {\n emit_unencrypted_log(Serialize::serialize(log).as_slice());\n }\n\n pub fn note_hash_exists(_self: Self, note_hash: Field, leaf_index: Field) -> bool {\n note_hash_exists(note_hash, leaf_index) == 1\n }\n\n pub fn l1_to_l2_msg_exists(_self: Self, msg_hash: Field, msg_leaf_index: Field) -> bool {\n l1_to_l2_msg_exists(msg_hash, msg_leaf_index) == 1\n }\n\n fn nullifier_exists(_self: Self, unsiloed_nullifier: Field, address: AztecAddress) -> bool {\n nullifier_exists(unsiloed_nullifier, address.to_field()) == 1\n }\n\n fn consume_l1_to_l2_message(\n &mut self,\n content: Field,\n secret: Field,\n sender: EthAddress,\n leaf_index: Field\n ) {\n let secret_hash = compute_secret_hash(secret);\n let message_hash = compute_message_hash(\n sender,\n self.chain_id(),\n /*recipient=*/ self.this_address(),\n self.version(),\n content,\n secret_hash\n );\n let nullifier = compute_message_nullifier(message_hash, secret, leaf_index);\n\n assert(\n !self.nullifier_exists(nullifier, self.this_address()), \"L1-to-L2 message is already nullified\"\n );\n assert(\n self.l1_to_l2_msg_exists(message_hash, leaf_index), \"Tried to consume nonexistent L1-to-L2 message\"\n );\n\n // Push nullifier (and the \"commitment\" corresponding to this can be \"empty\")\n self.push_nullifier(nullifier, 0);\n }\n\n fn message_portal(_self: &mut Self, recipient: EthAddress, content: Field) {\n send_l2_to_l1_msg(recipient, content);\n }\n\n fn call_public_function<let RETURNS_COUNT: u32>(\n _self: &mut Self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field],\n gas_opts: GasOpts\n ) -> FunctionReturns<RETURNS_COUNT> {\n let results = call(\n gas_for_call(gas_opts),\n contract_address,\n args,\n function_selector.to_field()\n );\n let data_to_return: [Field; RETURNS_COUNT] = results.0;\n let success: u8 = results.1;\n assert(success == 1, \"Nested call failed!\");\n\n FunctionReturns::new(data_to_return)\n }\n\n fn static_call_public_function<let RETURNS_COUNT: u32>(\n _self: &mut Self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field],\n gas_opts: GasOpts\n ) -> FunctionReturns<RETURNS_COUNT> {\n let (data_to_return, success): ([Field; RETURNS_COUNT], u8) = call_static(\n gas_for_call(gas_opts),\n contract_address,\n args,\n function_selector.to_field()\n );\n\n assert(success == 1, \"Nested static call failed!\");\n FunctionReturns::new(data_to_return)\n }\n\n fn delegate_call_public_function<let RETURNS_COUNT: u32>(\n _self: &mut Self,\n _contract_address: AztecAddress,\n _function_selector: FunctionSelector,\n _args: [Field]\n ) -> FunctionReturns<RETURNS_COUNT> {\n assert(false, \"'delegate_call_public_function' not implemented!\");\n FunctionReturns::new([0; RETURNS_COUNT])\n }\n\n fn push_note_hash(_self: &mut Self, note_hash: Field) {\n emit_note_hash(note_hash);\n }\n fn push_nullifier(_self: &mut Self, nullifier: Field, _nullified_commitment: Field) {\n // Cannot nullify pending commitments in AVM, so `nullified_commitment` is not used\n emit_nullifier(nullifier);\n }\n\n fn this_address(_self: Self) -> AztecAddress {\n address()\n }\n pub fn storage_address(_self: Self) -> AztecAddress {\n storage_address()\n }\n fn msg_sender(_self: Self) -> AztecAddress {\n sender()\n }\n fn selector(_self: Self) -> FunctionSelector {\n FunctionSelector::from_u32(function_selector())\n }\n fn get_args_hash(self) -> Field {\n self.inputs.args_hash\n }\n fn transaction_fee(_self: Self) -> Field {\n transaction_fee()\n }\n\n fn chain_id(_self: Self) -> Field {\n chain_id()\n }\n fn version(_self: Self) -> Field {\n version()\n }\n fn block_number(_self: Self) -> Field {\n block_number()\n }\n fn timestamp(_self: Self) -> u64 {\n timestamp()\n }\n pub fn fee_per_l2_gas(_self: Self) -> Field {\n fee_per_l2_gas()\n }\n pub fn fee_per_da_gas(_self: Self) -> Field {\n fee_per_da_gas()\n }\n\n fn l2_gas_left(_self: Self) -> Field {\n l2_gas_left()\n }\n fn da_gas_left(_self: Self) -> Field {\n da_gas_left()\n }\n\n fn raw_storage_read<let N: u32>(_self: Self, storage_slot: Field) -> [Field; N] {\n storage_read(storage_slot)\n }\n\n fn storage_read<T, let N: u32>(self, storage_slot: Field) -> T where T: Deserialize<N> {\n T::deserialize(self.raw_storage_read(storage_slot))\n }\n\n fn raw_storage_write<let N: u32>(_self: Self, storage_slot: Field, values: [Field; N]) {\n storage_write(storage_slot, values);\n }\n\n fn storage_write<T, let N: u32>(self, storage_slot: Field, value: T) where T: Serialize<N> {\n self.raw_storage_write(storage_slot, value.serialize());\n }\n}\n\n// Helper functions\nfn gas_for_call(user_gas: GasOpts) -> [Field; 2] {\n // It's ok to use the max possible gas here, because the gas will be\n // capped by the gas left in the (STATIC)CALL instruction.\n [\n user_gas.l2_gas.unwrap_or(MAX_FIELD_VALUE),\n user_gas.da_gas.unwrap_or(MAX_FIELD_VALUE)\n ]\n}\n\n// Unconstrained opcode wrappers (do not use directly).\n// TODO(https://github.com/AztecProtocol/aztec-packages/issues/6420): reconsider.\nunconstrained fn address() -> AztecAddress {\n address_opcode()\n}\nunconstrained fn storage_address() -> AztecAddress {\n storage_address_opcode()\n}\nunconstrained fn sender() -> AztecAddress {\n sender_opcode()\n}\nunconstrained fn portal() -> EthAddress {\n portal_opcode()\n}\nunconstrained fn function_selector() -> u32 {\n function_selector_opcode()\n}\nunconstrained fn transaction_fee() -> Field {\n transaction_fee_opcode()\n}\nunconstrained fn chain_id() -> Field {\n chain_id_opcode()\n}\nunconstrained fn version() -> Field {\n version_opcode()\n}\nunconstrained fn block_number() -> Field {\n block_number_opcode()\n}\nunconstrained fn timestamp() -> u64 {\n timestamp_opcode()\n}\nunconstrained fn fee_per_l2_gas() -> Field {\n fee_per_l2_gas_opcode()\n}\nunconstrained fn fee_per_da_gas() -> Field {\n fee_per_da_gas_opcode()\n}\nunconstrained fn l2_gas_left() -> Field {\n l2_gas_left_opcode()\n}\nunconstrained fn da_gas_left() -> Field {\n da_gas_left_opcode()\n}\nunconstrained fn note_hash_exists(note_hash: Field, leaf_index: Field) -> u8 {\n note_hash_exists_opcode(note_hash, leaf_index)\n}\nunconstrained fn emit_note_hash(note_hash: Field) {\n emit_note_hash_opcode(note_hash)\n}\nunconstrained fn nullifier_exists(nullifier: Field, address: Field) -> u8 {\n nullifier_exists_opcode(nullifier, address)\n}\nunconstrained fn emit_nullifier(nullifier: Field) {\n emit_nullifier_opcode(nullifier)\n}\nunconstrained fn emit_unencrypted_log(message: [Field]) {\n emit_unencrypted_log_opcode(message)\n}\nunconstrained fn l1_to_l2_msg_exists(msg_hash: Field, msg_leaf_index: Field) -> u8 {\n l1_to_l2_msg_exists_opcode(msg_hash, msg_leaf_index)\n}\nunconstrained fn send_l2_to_l1_msg(recipient: EthAddress, content: Field) {\n send_l2_to_l1_msg_opcode(recipient, content)\n}\nunconstrained fn call<let RET_SIZE: u32>(\n gas: [Field; 2],\n address: AztecAddress,\n args: [Field],\n function_selector: Field\n) -> ([Field; RET_SIZE], u8) {\n call_opcode(gas, address, args, function_selector)\n}\nunconstrained fn call_static<let RET_SIZE: u32>(\n gas: [Field; 2],\n address: AztecAddress,\n args: [Field],\n function_selector: Field\n) -> ([Field; RET_SIZE], u8) {\n call_static_opcode(gas, address, args, function_selector)\n}\n\nunconstrained fn storage_read<let N: u32>(storage_slot: Field) -> [Field; N] {\n storage_read_opcode(storage_slot, N as Field)\n}\n\nunconstrained fn storage_write<let N: u32>(storage_slot: Field, values: [Field; N]) {\n storage_write_opcode(storage_slot, values);\n}\n\nimpl Empty for PublicContext {\n fn empty() -> Self {\n PublicContext::new(PublicContextInputs::empty())\n }\n}\n\n// AVM oracles (opcodes) follow, do not use directly.\n#[oracle(avmOpcodeAddress)]\nunconstrained fn address_opcode() -> AztecAddress {}\n\n#[oracle(avmOpcodeStorageAddress)]\nunconstrained fn storage_address_opcode() -> AztecAddress {}\n\n#[oracle(avmOpcodeSender)]\nunconstrained fn sender_opcode() -> AztecAddress {}\n\n#[oracle(avmOpcodePortal)]\nunconstrained fn portal_opcode() -> EthAddress {}\n\n#[oracle(avmOpcodeFunctionSelector)]\nunconstrained fn function_selector_opcode() -> u32 {}\n\n#[oracle(avmOpcodeTransactionFee)]\nunconstrained fn transaction_fee_opcode() -> Field {}\n\n#[oracle(avmOpcodeChainId)]\nunconstrained fn chain_id_opcode() -> Field {}\n\n#[oracle(avmOpcodeVersion)]\nunconstrained fn version_opcode() -> Field {}\n\n#[oracle(avmOpcodeBlockNumber)]\nunconstrained fn block_number_opcode() -> Field {}\n\n#[oracle(avmOpcodeTimestamp)]\nunconstrained fn timestamp_opcode() -> u64 {}\n\n#[oracle(avmOpcodeFeePerL2Gas)]\nunconstrained fn fee_per_l2_gas_opcode() -> Field {}\n\n#[oracle(avmOpcodeFeePerDaGas)]\nunconstrained fn fee_per_da_gas_opcode() -> Field {}\n\n#[oracle(avmOpcodeL2GasLeft)]\nunconstrained fn l2_gas_left_opcode() -> Field {}\n\n#[oracle(avmOpcodeDaGasLeft)]\nunconstrained fn da_gas_left_opcode() -> Field {}\n\n#[oracle(avmOpcodeNoteHashExists)]\nunconstrained fn note_hash_exists_opcode(note_hash: Field, leaf_index: Field) -> u8 {}\n\n#[oracle(avmOpcodeEmitNoteHash)]\nunconstrained fn emit_note_hash_opcode(note_hash: Field) {}\n\n#[oracle(avmOpcodeNullifierExists)]\nunconstrained fn nullifier_exists_opcode(nullifier: Field, address: Field) -> u8 {}\n\n#[oracle(avmOpcodeEmitNullifier)]\nunconstrained fn emit_nullifier_opcode(nullifier: Field) {}\n\n#[oracle(avmOpcodeEmitUnencryptedLog)]\nunconstrained fn emit_unencrypted_log_opcode(message: [Field]) {}\n\n#[oracle(avmOpcodeL1ToL2MsgExists)]\nunconstrained fn l1_to_l2_msg_exists_opcode(msg_hash: Field, msg_leaf_index: Field) -> u8 {}\n\n#[oracle(avmOpcodeSendL2ToL1Msg)]\nunconstrained fn send_l2_to_l1_msg_opcode(recipient: EthAddress, content: Field) {}\n\n#[oracle(avmOpcodeCall)]\nunconstrained fn call_opcode<let RET_SIZE: u32>(\n gas: [Field; 2], // gas allocation: [l2_gas, da_gas]\n address: AztecAddress,\n args: [Field],\n // TODO(5110): consider passing in calldata directly\n function_selector: Field\n) -> ([Field; RET_SIZE], u8) {}\n// ^ return data ^ success\n\n#[oracle(avmOpcodeStaticCall)]\nunconstrained fn call_static_opcode<let RET_SIZE: u32>(\n gas: [Field; 2], // gas allocation: [l2_gas, da_gas]\n address: AztecAddress,\n args: [Field],\n // TODO(5110): consider passing in calldata directly\n function_selector: Field\n) -> ([Field; RET_SIZE], u8) {}\n// ^ return data ^ success\n\n#[oracle(avmOpcodeStorageRead)]\nunconstrained fn storage_read_opcode<let N: u32>(storage_slot: Field, length: Field) -> [Field; N] {}\n\n#[oracle(avmOpcodeStorageWrite)]\nunconstrained fn storage_write_opcode<let N: u32>(storage_slot: Field, values: [Field; N]) {}\n\nstruct FunctionReturns<let N: u32> {\n values: [Field; N]\n}\n\nimpl<let N: u32> FunctionReturns<N> {\n pub fn new(values: [Field; N]) -> FunctionReturns<N> {\n FunctionReturns { values }\n }\n\n pub fn assert_empty(returns: FunctionReturns<0>) {\n assert(returns.values.len() == 0);\n }\n\n pub fn raw(self) -> [Field; N] {\n self.values\n }\n\n pub fn deserialize_into<T>(self) -> T where T: Deserialize<N> {\n Deserialize::deserialize(self.raw())\n }\n}\n"},"151":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/state_vars/map.nr","source":"use dep::protocol_types::{hash::pedersen_hash, storage::map::derive_storage_slot_in_map, traits::ToField};\nuse crate::state_vars::storage::Storage;\n\n// docs:start:map\nstruct Map<K, V, Context> {\n context: Context,\n storage_slot: Field,\n state_var_constructor: fn(Context, Field) -> V,\n}\n// docs:end:map\n\nimpl<K, T, Context> Storage<T> for Map<K, T, Context> {}\n\nimpl<K, V, Context> Map<K, V, Context> {\n // docs:start:new\n pub fn new(\n context: Context,\n storage_slot: Field,\n state_var_constructor: fn(Context, Field) -> V\n ) -> Self {\n assert(storage_slot != 0, \"Storage slot 0 not allowed. Storage slots must start from 1.\");\n Map { context, storage_slot, state_var_constructor }\n }\n // docs:end:new\n\n // docs:start:at\n pub fn at(self, key: K) -> V where K: ToField {\n // TODO(#1204): use a generator index for the storage slot\n let derived_storage_slot = derive_storage_slot_in_map(self.storage_slot, key);\n\n let state_var_constructor = self.state_var_constructor;\n state_var_constructor(self.context, derived_storage_slot)\n }\n // docs:end:at\n}\n"},"162":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/state_vars/shared_mutable/scheduled_delay_change.nr","source":"use dep::protocol_types::traits::{Serialize, Deserialize, FromField, ToField};\nuse std::cmp::min;\n\nmod test;\n\n// This data structure is used by SharedMutable to store the minimum delay with which a ScheduledValueChange object can\n// schedule a change.\n// This delay is initally equal to INITIAL_DELAY, and can be safely mutated to any other value over time. This mutation \n// is performed via `schedule_change` in order to satisfy ScheduleValueChange constraints: if e.g. we allowed for the \n// delay to be decreased immediately then it'd be possible for the state variable to schedule a value change with a \n// reduced delay, invalidating prior private reads.\nstruct ScheduledDelayChange<let INITIAL_DELAY: u32> {\n // Both pre and post are stored in public storage, so by default they are zeroed. By wrapping them in an Option, \n // they default to Option::none(), which we detect and replace with INITIAL_DELAY. The end result is that a\n // ScheduledDelayChange that has not been initialized has a delay equal to INITIAL_DELAY, which is the desired\n // effect. Once initialized, the Option will never be none again.\n pre: Option<u32>,\n post: Option<u32>,\n // Block at which `post` value is used instead of `pre`\n block_of_change: u32,\n}\n\nimpl<let INITIAL_DELAY: u32> ScheduledDelayChange<INITIAL_DELAY> {\n pub fn new(pre: Option<u32>, post: Option<u32>, block_of_change: u32) -> Self {\n Self { pre, post, block_of_change }\n }\n\n /// Returns the current value of the delay stored in the data structure.\n /// This function only returns a meaningful value when called in public with the current block number - for\n /// historical private reads use `get_effective_minimum_delay_at` instead.\n pub fn get_current(self, current_block_number: u32) -> u32 {\n // The post value becomes the current one at the block of change, so any transaction that is included in the\n // block of change will use the post value.\n\n if current_block_number < self.block_of_change {\n self.pre.unwrap_or(INITIAL_DELAY)\n } else {\n self.post.unwrap_or(INITIAL_DELAY)\n }\n }\n\n /// Returns the scheduled change, i.e. the post-change delay and the block at which it will become the current\n /// delay. Note that this block may be in the past if the change has already taken place.\n /// Additionally, further changes might be later scheduled, potentially canceling the one returned by this function.\n pub fn get_scheduled(self) -> (u32, u32) {\n (self.post.unwrap_or(INITIAL_DELAY), self.block_of_change)\n }\n\n /// Mutates the delay change by scheduling a change at the current block number. This function is only meaningful\n /// when called in public with the current block number.\n /// The block at which the new delay will become effective is determined automatically:\n /// - when increasing the delay, the change is effective immediately\n /// - when reducing the delay, the change will take effect after a delay equal to the difference between old and\n /// new delay. For example, if reducing from 3 days to 1 day, the reduction will be scheduled to happen after 2\n /// days.\n pub fn schedule_change(&mut self, new: u32, current_block_number: u32) {\n let current = self.get_current(current_block_number);\n\n // When changing the delay value we must ensure that it is not possible to produce a value change with a delay\n // shorter than the current one.\n let blocks_until_change = if new > current {\n // Increasing the delay value can therefore be done immediately: this does not invalidate prior contraints\n // about how quickly a value might be changed (indeed it strengthens them).\n 0\n } else {\n // Decreasing the delay requires waiting for the difference between current and new delay in order to ensure\n // that overall the current delay is respected.\n //\n // current delay earliest value block of change\n // block block of change if delay remained unchanged\n // =======N=========================|================================X=================>\n // ^ ^ ^\n // |-------------------------|--------------------------------|\n // | blocks until change new delay |\n // ------------------------------------------------------------\n // current delay\n current - new\n };\n\n self.pre = Option::some(current);\n self.post = Option::some(new);\n self.block_of_change = current_block_number + blocks_until_change;\n }\n\n /// Returns the minimum delay before a value might mutate due to a scheduled change, from the perspective of some\n /// historical block number. It only returns a meaningful value when called in private with historical blocks. This \n /// function can be used alongside `ScheduledValueChange.get_block_horizon` to properly constrain the\n /// `max_block_number` transaction property when reading mutable shared state.\n /// This value typically equals the current delay at the block following the historical one (the earliest one in\n /// which a value change could be scheduled), but it also considers scenarios in which a delay reduction is \n /// scheduled to happen in the near future, resulting in a way to schedule a change with an overall delay lower than\n /// the current one.\n pub fn get_effective_minimum_delay_at(self, historical_block_number: u32) -> u32 {\n if self.block_of_change <= historical_block_number {\n // If no delay changes were scheduled, then the delay value at the historical block (post) is guaranteed to\n // hold due to how further delay changes would be scheduled by `schedule_change`.\n self.post.unwrap_or(INITIAL_DELAY)\n } else {\n // If a change is scheduled, then the effective delay might be lower than the current one (pre). At the\n // block of change the current delay will be the scheduled one, with an overall delay from the historical\n // block number equal to the number of blocks until the change plus the new delay. If this value is lower\n // than the current delay, then that is the effective minimum delay.\n //\n // historical\n // block delay actual earliest value\n // v block of change block of change\n // =========NS=====================|=============================X===========Y=====>\n // ^ ^ ^ ^\n // earliest block in | | |\n // which to schedule change | | |\n // | | | |\n // |----------------------|------------------------------ |\n // | blocks new delay |\n // | until change |\n // | |\n // |----------------------------------------------------------------|\n // current delay at the earliest block in \n // which to scheduled value change\n\n let blocks_until_change = self.block_of_change - (historical_block_number + 1);\n\n min(\n self.pre.unwrap_or(INITIAL_DELAY),\n blocks_until_change + self.post.unwrap_or(INITIAL_DELAY)\n )\n }\n }\n}\n\nimpl<INITIAL_DELAY> Serialize<1> for ScheduledDelayChange<INITIAL_DELAY> {\n fn serialize(self) -> [Field; 1] {\n // We pack all three u32 values into a single U128, which is made up of two u64 limbs.\n // Low limb: [ pre_inner: u32 | post_inner: u32 ]\n // High limb: [ empty | pre_is_some: u8 | post_is_some: u8 | block_of_change: u32 ]\n\n let lo = ((self.pre.unwrap_unchecked() as u64) * (1 << 32))\n + (self.post.unwrap_unchecked() as u64);\n\n let hi = (self.pre.is_some() as u64) * (1 << 33) \n + (self.post.is_some() as u64 * (1 << 32)) \n + self.block_of_change as u64;\n\n let packed = U128::from_u64s_le(lo, hi);\n\n [packed.to_integer()]\n }\n}\n\nimpl<INITIAL_DELAY> Deserialize<1> for ScheduledDelayChange<INITIAL_DELAY> {\n fn deserialize(input: [Field; 1]) -> Self {\n let packed = U128::from_integer(input[0]);\n\n // We use division and modulo to clear the bits that correspond to other values when unpacking.\n\n let pre_is_some = ((packed.hi as u64) / (1 << 33)) as bool;\n let pre_inner = ((packed.lo as u64) / (1 << 32)) as u32;\n\n let post_is_some = (((packed.hi as u64) / (1 << 32)) % (1 << 1)) as bool;\n let post_inner = ((packed.lo as u64) % (1 << 32)) as u32;\n\n let block_of_change = ((packed.hi as u64) % (1 << 32)) as u32;\n\n Self {\n pre: if pre_is_some { Option::some(pre_inner) } else { Option::none() },\n post: if post_is_some { Option::some(post_inner) } else { Option::none() },\n block_of_change,\n }\n }\n}\n\nimpl<INITIAL_DELAY> Eq for ScheduledDelayChange<INITIAL_DELAY> {\n fn eq(self, other: Self) -> bool {\n (self.pre == other.pre) & (self.post == other.post) & (self.block_of_change == other.block_of_change)\n }\n}\n"},"166":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/state_vars/shared_mutable/scheduled_value_change.nr","source":"use dep::protocol_types::traits::{Serialize, Deserialize, FromField, ToField};\nuse std::cmp::min;\n\nmod test;\n\n// This data structure is used by SharedMutable to represent a value that changes from `pre` to `post` at some block\n// called the `block_of_change`. The value can only be made to change by scheduling a change event at some future block\n// of change after some minimum delay measured in blocks has elapsed. This means that at any given block number we know\n// both the current value and the smallest block number at which the value might change - this is called the\n// 'block horizon'.\nstruct ScheduledValueChange<T> {\n pre: T,\n post: T,\n // Block at which `post` value is used instead of `pre`\n block_of_change: u32,\n}\n\nimpl<T> ScheduledValueChange<T> {\n pub fn new(pre: T, post: T, block_of_change: u32) -> Self {\n Self { pre, post, block_of_change }\n }\n\n /// Returns the value stored in the data structure at a given block. This function can be called both in public\n /// (where `block_number` is simply the current block number, i.e. the number of the block in which the current\n /// transaction will be included) and in private (where `block_number` is the historical block number that is used\n /// to construct the proof).\n /// Reading in private is only safe if the transaction's `max_block_number` property is set to a value lower or\n /// equal to the block horizon (see `get_block_horizon()`).\n pub fn get_current_at(self, block_number: u32) -> T {\n // The post value becomes the current one at the block of change. This means different things in each realm:\n // - in public, any transaction that is included in the block of change will use the post value\n // - in private, any transaction that includes the block of change as part of the historical state will use the\n // post value (barring any follow-up changes)\n\n if block_number < self.block_of_change {\n self.pre\n } else {\n self.post\n }\n }\n\n /// Returns the scheduled change, i.e. the post-change value and the block at which it will become the current\n /// value. Note that this block may be in the past if the change has already taken place.\n /// Additionally, further changes might be later scheduled, potentially canceling the one returned by this function.\n pub fn get_scheduled(self) -> (T, u32) {\n (self.post, self.block_of_change)\n }\n\n /// Returns the largest block number at which the value returned by `get_current_at` is known to remain the current\n /// value. This value is only meaningful in private when constructing a proof at some `historical_block_number`,\n /// since due to its asynchronous nature private execution cannot know about any later scheduled changes.\n /// The caller of this function must know how quickly the value can change due to a scheduled change in the form of\n /// `minimum_delay`. If the delay itself is immutable, then this is just its duration. If the delay is mutable\n /// however, then this value is the 'effective minimum delay' (obtained by calling\n /// `ScheduledDelayChange.get_effective_minimum_delay_at`), which equals the minimum number of blocks that need to\n /// elapse from the next block until the value changes, regardless of further delay changes.\n /// The value returned by `get_current_at` in private when called with a historical block number is only safe to use\n /// if the transaction's `max_block_number` property is set to a value lower or equal to the block horizon computed\n /// using the same historical block number.\n pub fn get_block_horizon(self, historical_block_number: u32, minimum_delay: u32) -> u32 {\n // The block horizon is the very last block in which the current value is known. Any block past the horizon\n // (i.e. with a block number larger than the block horizon) may have a different current value. Reading the\n // current value in private typically requires constraining the maximum valid block number to be equal to the\n // block horizon.\n\n if historical_block_number >= self.block_of_change {\n // Once the block of change has been mined, the current value (post) will not change unless a new value\n // change is scheduled. This did not happen at the historical block number (or else it would not be\n // greater or equal to the block of change), and therefore could only happen after the historical block\n // number. The earliest would be the immediate next block, and so the smallest possible next block of change\n // equals `historical_block_number + 1 + minimum_delay`. Our block horizon is simply the previous block to\n // that one.\n //\n // block of historical\n // change block block horizon\n // =======|=============N===================H===========>\n // ^ ^\n // ---------------------\n // minimum delay\n\n historical_block_number + minimum_delay\n } else {\n // If the block of change has not yet been mined however, then there are two possible scenarios.\n // a) It could be so far into the future that the block horizon is actually determined by the minimum\n // delay, because a new change could be scheduled and take place _before_ the currently scheduled one.\n // This is similar to the scenario where the block of change is in the past: the time horizon is the\n // block prior to the earliest one in which a new block of change might land.\n //\n // historical\n // block block horizon block of change\n // =====N=================================H=================|=========>\n // ^ ^\n // | |\n // -----------------------------------\n // minimum delay\n //\n // b) It could be fewer than `minimum_delay` blocks away from the historical block number, in which case\n // the block of change would become the limiting factor for the time horizon, which would equal the\n // block right before the block of change (since by definition the value changes at the block of\n // change).\n //\n // historical block horizon\n // block block of change if not scheduled\n // =======N=============|===================H=================>\n // ^ ^ ^\n // | actual horizon |\n // -----------------------------------\n // minimum delay\n //\n // Note that the current implementation does not allow the caller to set the block of change to an arbitrary\n // value, and therefore scenario a) is not currently possible. However implementing #5501 would allow for\n // this to happen.\n\n // Because historical_block_number < self.block_of_change, then block_of_change > 0 and we can safely\n // subtract 1.\n min(\n self.block_of_change - 1,\n historical_block_number + minimum_delay\n )\n }\n }\n\n /// Mutates the value by scheduling a change at the current block number. This function is only meaningful when\n /// called in public with the current block number.\n pub fn schedule_change(\n &mut self,\n new_value: T,\n current_block_number: u32,\n minimum_delay: u32,\n block_of_change: u32\n ) {\n assert(block_of_change >= current_block_number + minimum_delay);\n\n self.pre = self.get_current_at(current_block_number);\n self.post = new_value;\n self.block_of_change = block_of_change;\n }\n}\n\nimpl<T> Serialize<3> for ScheduledValueChange<T> where T: ToField {\n fn serialize(self) -> [Field; 3] {\n [self.pre.to_field(), self.post.to_field(), self.block_of_change.to_field()]\n }\n}\n\nimpl<T> Deserialize<3> for ScheduledValueChange<T> where T: FromField {\n fn deserialize(input: [Field; 3]) -> Self {\n Self {\n pre: FromField::from_field(input[0]),\n post: FromField::from_field(input[1]),\n block_of_change: FromField::from_field(input[2]),\n }\n }\n}\n\nimpl<T> Eq for ScheduledValueChange<T> where T: Eq {\n fn eq(self, other: Self) -> bool {\n (self.pre == other.pre) & (self.post == other.post) & (self.block_of_change == other.block_of_change)\n }\n}\n"},"167":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/state_vars/shared_mutable/shared_mutable.nr","source":"use dep::protocol_types::{\n hash::{pedersen_hash, poseidon2_hash}, header::Header, address::AztecAddress,\n traits::{FromField, ToField}\n};\n\nuse crate::context::{PrivateContext, PublicContext, UnconstrainedContext};\nuse crate::state_vars::{\n storage::Storage,\n shared_mutable::{scheduled_value_change::ScheduledValueChange, scheduled_delay_change::ScheduledDelayChange}\n};\nuse crate::oracle::storage::storage_read;\nuse dep::std::unsafe::zeroed;\n\nmod test;\n\nstruct SharedMutable<T, let INITIAL_DELAY: u32, Context> {\n context: Context,\n storage_slot: Field,\n}\n\n// This will make the Aztec macros require that T implements the Serialize<N> trait, and allocate N storage slots to\n// this state variable. This is incorrect, since what we actually store is:\n// - a ScheduledValueChange<T>, which requires 1 + 2 * M storage slots, where M is the serialization length of T\n// - a ScheduledDelayChange, which requires another storage slot\n//\n// TODO https://github.com/AztecProtocol/aztec-packages/issues/5736: change the storage allocation scheme so that we\n// can actually use it here\nimpl<T, let INITIAL_DELAY: u32, Context> Storage<T> for SharedMutable<T, INITIAL_DELAY, Context> {}\n\n// TODO: extract into a utils module once we can do arithmetic on generics, i.e. https://github.com/noir-lang/noir/issues/4784\nfn concat_arrays<let N: u32, let M: u32, let O: u32>(arr_n: [Field; N], arr_m: [Field; M]) -> [Field; O] {\n assert_eq(N + M, O);\n let mut out: [Field; O] = [0; O];\n for i in 0..N {\n out[i] = arr_n[i];\n }\n for i in 0..M {\n out[N+i] = arr_m[i];\n }\n out\n}\n\n// SharedMutable<T> stores a value of type T that is:\n// - publicly known (i.e. unencrypted)\n// - mutable in public\n// - readable in private with no contention (i.e. multiple parties can all read the same value without blocking one\n// another nor needing to coordinate)\n// This is famously a hard problem to solve. SharedMutable makes it work by introducing a delay to public mutation:\n// the value is not changed immediately but rather a value change is scheduled to happen in the future after some delay\n// measured in blocks. Reads in private are only valid as long as they are included in a block not too far into the\n// future, so that they can guarantee the value will not have possibly changed by then (because of the delay).\n// The delay for changing a value is initially equal to INITIAL_DELAY, but can be changed by calling\n// `schedule_delay_change`.\nimpl<T, let INITIAL_DELAY: u32, Context> SharedMutable<T, INITIAL_DELAY, Context> where T: ToField + FromField + Eq {\n pub fn new(context: Context, storage_slot: Field) -> Self {\n assert(storage_slot != 0, \"Storage slot 0 not allowed. Storage slots must start from 1.\");\n Self { context, storage_slot }\n }\n\n fn hash_scheduled_data(\n value_change: ScheduledValueChange<T>,\n delay_change: ScheduledDelayChange<INITIAL_DELAY>\n ) -> Field {\n // TODO(#5491 and https://github.com/noir-lang/noir/issues/4784): update this so that we don't need to rely on\n // ScheduledValueChange serializing to 3 and ScheduledDelayChange serializing to 1\n let concatenated: [Field; 4] = concat_arrays(value_change.serialize(), delay_change.serialize());\n poseidon2_hash(concatenated)\n }\n\n // Since we can't rely on the native storage allocation scheme, we hash the storage slot to get a unique location in\n // which we can safely store as much data as we need.\n // See https://github.com/AztecProtocol/aztec-packages/issues/5492 and\n // https://github.com/AztecProtocol/aztec-packages/issues/5736\n // We store three things in public storage:\n // - a ScheduledValueChange\n // - a ScheduledDelaChange\n // - the hash of both of these (via `hash_scheduled_data`)\n fn get_value_change_storage_slot(self) -> Field {\n pedersen_hash([self.storage_slot, 0], 0)\n }\n\n fn get_delay_change_storage_slot(self) -> Field {\n pedersen_hash([self.storage_slot, 1], 0)\n }\n\n fn get_hash_storage_slot(self) -> Field {\n pedersen_hash([self.storage_slot, 2], 0)\n }\n\n // It may seem odd that we take a header and address instead of reading from e.g. a PrivateContext, but this lets us\n // reuse this function in SharedMutablePrivateGetter.\n fn historical_read_from_public_storage(\n self,\n header: Header,\n address: AztecAddress\n ) -> (ScheduledValueChange<T>, ScheduledDelayChange<INITIAL_DELAY>, u32) {\n let historical_block_number = header.global_variables.block_number as u32;\n\n // We could simply produce historical inclusion proofs for both the ScheduledValueChange and\n // ScheduledDelayChange, but that'd require one full sibling path per storage slot (since due to kernel siloing\n // the storage is not contiguous), and in the best case in which T is a single field that'd be 4 slots.\n // Instead, we get an oracle to provide us the correct values for both the value and delay changes, and instead\n // prove inclusion of their hash, which is both a much smaller proof (a single slot), and also independent of\n // the size of T.\n let (value_change_hint, delay_change_hint) = get_public_storage_hints(address, self.storage_slot, historical_block_number);\n\n // Ideally the following would be simply public_storage::read_historical, but we can't implement that yet.\n let hash = header.public_storage_historical_read(self.get_hash_storage_slot(), address);\n\n // @todo This is written strangely to bypass a formatting issue with the if that is breaking ci.\n let (a, b, c) = if hash != 0 {\n let a = SharedMutable::hash_scheduled_data(value_change_hint, delay_change_hint);\n (a, value_change_hint, delay_change_hint)\n } else {\n // The hash slot can only hold a zero if it is uninitialized, meaning no value or delay change was ever\n // scheduled. Therefore, the hints must then correspond to uninitialized scheduled changes.\n let b = ScheduledValueChange::deserialize(zeroed());\n let c = ScheduledDelayChange::deserialize(zeroed());\n (hash, b, c)\n };\n\n assert_eq(hash, a, \"Hint values do not match hash\");\n assert_eq(value_change_hint, b, \"Non-zero value change for zero hash\");\n assert_eq(delay_change_hint, c, \"Non-zero delay change for zero hash\");\n\n (value_change_hint, delay_change_hint, historical_block_number)\n }\n}\n\nimpl<T, let INITIAL_DELAY: u32> SharedMutable<T, INITIAL_DELAY, &mut PublicContext> where T: ToField + FromField + Eq {\n pub fn schedule_value_change(self, new_value: T) {\n let mut value_change = self.read_value_change();\n let delay_change = self.read_delay_change();\n\n let block_number = self.context.block_number() as u32;\n let current_delay = delay_change.get_current(block_number);\n\n // TODO: make this configurable\n // https://github.com/AztecProtocol/aztec-packages/issues/5501\n let block_of_change = block_number + current_delay;\n value_change.schedule_change(new_value, block_number, current_delay, block_of_change);\n\n self.write(value_change, delay_change);\n }\n\n pub fn schedule_delay_change(self, new_delay: u32) {\n let mut delay_change = self.read_delay_change();\n\n let block_number = self.context.block_number() as u32;\n\n delay_change.schedule_change(new_delay, block_number);\n\n self.write(self.read_value_change(), delay_change);\n }\n\n pub fn get_current_value_in_public(self) -> T {\n let block_number = self.context.block_number() as u32;\n self.read_value_change().get_current_at(block_number)\n }\n\n pub fn get_current_delay_in_public(self) -> u32 {\n let block_number = self.context.block_number() as u32;\n self.read_delay_change().get_current(block_number)\n }\n\n pub fn get_scheduled_value_in_public(self) -> (T, u32) {\n self.read_value_change().get_scheduled()\n }\n\n pub fn get_scheduled_delay_in_public(self) -> (u32, u32) {\n self.read_delay_change().get_scheduled()\n }\n\n fn read_value_change(self) -> ScheduledValueChange<T> {\n self.context.storage_read(self.get_value_change_storage_slot())\n }\n\n fn read_delay_change(self) -> ScheduledDelayChange<INITIAL_DELAY> {\n self.context.storage_read(self.get_delay_change_storage_slot())\n }\n\n fn write(\n self,\n value_change: ScheduledValueChange<T>,\n delay_change: ScheduledDelayChange<INITIAL_DELAY>\n ) {\n // Whenever we write to public storage, we write both the value change and delay change as well as the hash of\n // them both. This guarantees that the hash is always kept up to date.\n // While this makes for more costly writes, it also makes private proofs much simpler because they only need to\n // produce a historical proof for the hash, which results in a single inclusion proof (as opposed to 4 in the\n // best case scenario in which T is a single field). Private shared mutable reads are assumed to be much more\n // frequent than public writes, so this tradeoff makes sense.\n self.context.storage_write(self.get_value_change_storage_slot(), value_change);\n self.context.storage_write(self.get_delay_change_storage_slot(), delay_change);\n self.context.storage_write(\n self.get_hash_storage_slot(),\n SharedMutable::hash_scheduled_data(value_change, delay_change)\n );\n }\n}\n\nimpl<T, let INITIAL_DELAY: u32> SharedMutable<T, INITIAL_DELAY, &mut PrivateContext> where T: ToField + FromField + Eq {\n pub fn get_current_value_in_private(self) -> T {\n // When reading the current value in private we construct a historical state proof for the public value.\n // However, since this value might change, we must constrain the maximum transaction block number as this proof\n // will only be valid for however many blocks we can ensure the value will not change, which will depend on the\n // current delay and any scheduled delay changes.\n\n let (value_change, delay_change, historical_block_number) = self.historical_read_from_public_storage(self.context.get_header(), self.context.this_address());\n\n // We use the effective minimum delay as opposed to the current delay at the historical block as this one also\n // takes into consideration any scheduled delay changes.\n // For example, consider a scenario in which at block 200 the current delay was 50. We may naively think that\n // the earliest we could change the value would be at block 251 by scheduling immediately after the historical\n // block, i.e. at block 201. But if there was a delay change scheduled for block 210 to reduce the delay to 20\n // blocks, then if a value change was scheduled at block 210 it would go into effect at block 230, which is\n // earlier than what we'd expect if we only considered the current delay.\n let effective_minimum_delay = delay_change.get_effective_minimum_delay_at(historical_block_number);\n let block_horizon = value_change.get_block_horizon(historical_block_number, effective_minimum_delay);\n\n // We prevent this transaction from being included in any block after the block horizon, ensuring that the\n // historical public value matches the current one, since it can only change after the horizon.\n self.context.set_tx_max_block_number(block_horizon);\n value_change.get_current_at(historical_block_number)\n }\n}\n\nimpl<T, let INITIAL_DELAY: u32> SharedMutable<T, INITIAL_DELAY, UnconstrainedContext> where T: ToField + FromField + Eq {\n unconstrained pub fn get_current_value_in_unconstrained(self) -> T {\n let block_number = self.context.block_number() as u32;\n self.read_value_change().get_current_at(block_number)\n }\n\n unconstrained fn read_value_change(self) -> ScheduledValueChange<T> {\n self.context.storage_read(self.get_value_change_storage_slot())\n }\n}\n\nunconstrained fn get_public_storage_hints<T, let INITIAL_DELAY: u32>(\n address: AztecAddress,\n storage_slot: Field,\n block_number: u32\n) -> (ScheduledValueChange<T>, ScheduledDelayChange<INITIAL_DELAY>) where T: ToField + FromField + Eq {\n // This function cannot be part of the &mut PrivateContext impl because that'd mean that by passing `self` we'd also\n // be passing a mutable reference to an unconstrained function, which is not allowed. We therefore create a dummy\n // state variable here so that we can access the methods to compute storage slots. This will all be removed in the\n // future once we do proper storage slot allocation (#5492).\n let dummy: SharedMutable<T, INITIAL_DELAY, ()> = SharedMutable::new((), storage_slot);\n\n (\n storage_read(address, dummy.get_value_change_storage_slot(), block_number), storage_read(address, dummy.get_delay_change_storage_slot(), block_number)\n )\n}\n"},"202":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/abis/function_selector.nr","source":"use crate::utils::field::field_from_bytes;\nuse crate::traits::{Serialize, Deserialize, FromField, ToField, Empty};\n\nglobal SELECTOR_SIZE = 4;\n\nstruct FunctionSelector {\n // 1st 4-bytes of abi-encoding of function.\n inner: u32,\n}\n\nimpl Eq for FunctionSelector {\n fn eq(self, function_selector: FunctionSelector) -> bool {\n function_selector.inner == self.inner\n }\n}\n\nimpl Serialize<1> for FunctionSelector {\n fn serialize(self: Self) -> [Field; 1] {\n [self.inner as Field]\n }\n}\n\nimpl Deserialize<1> for FunctionSelector {\n fn deserialize(fields: [Field; 1]) -> Self {\n Self {\n inner: fields[0] as u32\n }\n }\n}\n\nimpl FromField for FunctionSelector {\n fn from_field(field: Field) -> Self {\n Self { inner: field as u32 }\n }\n}\n\nimpl ToField for FunctionSelector {\n fn to_field(self) -> Field {\n self.inner as Field\n }\n}\n\nimpl Empty for FunctionSelector {\n fn empty() -> Self {\n Self { inner: 0 as u32 }\n }\n}\n\nimpl FunctionSelector {\n pub fn from_u32(value: u32) -> Self {\n Self { inner: value }\n }\n\n pub fn from_signature<let N: u32>(signature: str<N>) -> Self {\n let bytes = signature.as_bytes();\n let hash = std::hash::keccak256(bytes, bytes.len() as u32);\n\n let mut selector_be_bytes = [0; SELECTOR_SIZE];\n for i in 0..SELECTOR_SIZE {\n selector_be_bytes[i] = hash[i];\n }\n\n FunctionSelector::from_field(field_from_bytes(selector_be_bytes, true))\n }\n\n pub fn zero() -> Self {\n Self { inner: 0 }\n }\n}\n"},"22":{"path":"std/embedded_curve_ops.nr","source":"use crate::ops::arith::{Add, Sub, Neg};\nuse crate::cmp::Eq;\n\n/// A point on the embedded elliptic curve\n/// By definition, the base field of the embedded curve is the scalar field of the proof system curve, i.e the Noir Field.\n/// x and y denotes the Weierstrass coordinates of the point, if is_infinite is false.\nstruct EmbeddedCurvePoint {\n x: Field,\n y: Field,\n is_infinite: bool\n}\n\nimpl EmbeddedCurvePoint {\n /// Elliptic curve point doubling operation\n /// returns the doubled point of a point P, i.e P+P\n fn double(self) -> EmbeddedCurvePoint {\n embedded_curve_add(self, self)\n }\n\n /// Returns the null element of the curve; 'the point at infinity'\n fn point_at_infinity() -> EmbeddedCurvePoint {\n EmbeddedCurvePoint { x: 0, y: 0, is_infinite: true }\n }\n}\n\nimpl Add for EmbeddedCurvePoint {\n /// Adds two points P+Q, using the curve addition formula, and also handles point at infinity\n fn add(self, other: EmbeddedCurvePoint) -> EmbeddedCurvePoint { \n embedded_curve_add(self, other)\n }\n}\n\nimpl Sub for EmbeddedCurvePoint {\n /// Points subtraction operation, using addition and negation\n fn sub(self, other: EmbeddedCurvePoint) -> EmbeddedCurvePoint { \n self + other.neg()\n }\n}\n\nimpl Neg for EmbeddedCurvePoint {\n /// Negates a point P, i.e returns -P, by negating the y coordinate.\n /// If the point is at infinity, then the result is also at infinity.\n fn neg(self) -> EmbeddedCurvePoint { \n EmbeddedCurvePoint {\n x: self.x,\n y: -self.y,\n is_infinite: self.is_infinite\n }\n }\n}\n\nimpl Eq for EmbeddedCurvePoint {\n /// Checks whether two points are equal\n fn eq(self: Self, b: EmbeddedCurvePoint) -> bool {\n (self.is_infinite & b.is_infinite) | ((self.is_infinite == b.is_infinite) & (self.x == b.x) & (self.y == b.y))\n }\n}\n\n/// Scalar for the embedded curve represented as low and high limbs\n/// By definition, the scalar field of the embedded curve is base field of the proving system curve.\n/// It may not fit into a Field element, so it is represented with two Field elements; its low and high limbs.\nstruct EmbeddedCurveScalar {\n lo: Field,\n hi: Field,\n}\n\nimpl EmbeddedCurveScalar {\n pub fn new(lo: Field, hi: Field) -> Self {\n EmbeddedCurveScalar { lo, hi }\n }\n\n #[field(bn254)]\n fn from_field(scalar: Field) -> EmbeddedCurveScalar {\n let (a,b) = crate::field::bn254::decompose(scalar);\n EmbeddedCurveScalar { lo: a, hi: b }\n }\n}\n\nimpl Eq for EmbeddedCurveScalar {\n fn eq(self, other: Self) -> bool {\n (other.hi == self.hi) & (other.lo == self.lo)\n }\n}\n\n// Computes a multi scalar multiplication over the embedded curve.\n// For bn254, We have Grumpkin and Baby JubJub.\n// For bls12-381, we have JubJub and Bandersnatch.\n//\n// The embedded curve being used is decided by the \n// underlying proof system.\n// docs:start:multi_scalar_mul\npub fn multi_scalar_mul<let N: u32>(\n points: [EmbeddedCurvePoint; N],\n scalars: [EmbeddedCurveScalar; N]\n) -> EmbeddedCurvePoint\n// docs:end:multi_scalar_mul\n{\n let point_array = multi_scalar_mul_array_return(points, scalars);\n EmbeddedCurvePoint { x: point_array[0], y: point_array[1], is_infinite: point_array[2] as bool }\n}\n\n#[foreign(multi_scalar_mul)]\nfn multi_scalar_mul_array_return<let N: u32>(points: [EmbeddedCurvePoint; N], scalars: [EmbeddedCurveScalar; N]) -> [Field; 3] {}\n\n#[foreign(multi_scalar_mul)]\npub(crate) fn multi_scalar_mul_slice(points: [EmbeddedCurvePoint], scalars: [EmbeddedCurveScalar]) -> [Field; 3] {}\n\n// docs:start:fixed_base_scalar_mul\npub fn fixed_base_scalar_mul(scalar: EmbeddedCurveScalar) -> EmbeddedCurvePoint\n// docs:end:fixed_base_scalar_mul\n{\n let g1 = EmbeddedCurvePoint { x: 1, y: 17631683881184975370165255887551781615748388533673675138860, is_infinite: false };\n multi_scalar_mul([g1], [scalar])\n}\n\n// This is a hack as returning an `EmbeddedCurvePoint` from a foreign function in brillig returns a [BrilligVariable::SingleAddr; 2] rather than BrilligVariable::BrilligArray\n// as is defined in the brillig bytecode format. This is a workaround which allows us to fix this without modifying the serialization format.\n// docs:start:embedded_curve_add\nfn embedded_curve_add(\n point1: EmbeddedCurvePoint,\n point2: EmbeddedCurvePoint\n) -> EmbeddedCurvePoint\n// docs:end:embedded_curve_add\n{\n let point_array = embedded_curve_add_array_return(point1, point2);\n let x = point_array[0];\n let y = point_array[1];\n EmbeddedCurvePoint { x, y, is_infinite: point_array[2] == 1 }\n}\n\n#[foreign(embedded_curve_add)]\nfn embedded_curve_add_array_return(_point1: EmbeddedCurvePoint, _point2: EmbeddedCurvePoint) -> [Field; 3] {}\n"},"236":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/storage/map.nr","source":"use crate::{hash::pedersen_hash, traits::ToField};\n\npub fn derive_storage_slot_in_map<K>(storage_slot: Field, key: K) -> Field where K: ToField {\n pedersen_hash([storage_slot, key.to_field()], 0)\n}\n"},"24":{"path":"std/field/mod.nr","source":"mod bn254;\nuse bn254::lt as bn254_lt;\n\nimpl Field {\n pub fn to_le_bits(self: Self, bit_size: u32) -> [u1] {\n crate::assert_constant(bit_size);\n self.__to_le_bits(bit_size)\n }\n\n pub fn to_be_bits(self: Self, bit_size: u32) -> [u1] {\n crate::assert_constant(bit_size);\n self.__to_be_bits(bit_size)\n }\n\n #[builtin(to_le_bits)]\n fn __to_le_bits(self, _bit_size: u32) -> [u1] {}\n\n #[builtin(to_be_bits)]\n fn __to_be_bits(self, bit_size: u32) -> [u1] {}\n\n #[builtin(apply_range_constraint)]\n fn __assert_max_bit_size(self, bit_size: u32) {}\n\n pub fn assert_max_bit_size(self: Self, bit_size: u32) {\n crate::assert_constant(bit_size);\n assert(bit_size < modulus_num_bits() as u32);\n self.__assert_max_bit_size(bit_size);\n }\n\n pub fn to_le_bytes(self: Self, byte_size: u32) -> [u8] {\n self.to_le_radix(256, byte_size)\n }\n\n pub fn to_be_bytes(self: Self, byte_size: u32) -> [u8] {\n self.to_be_radix(256, byte_size)\n }\n\n pub fn to_le_radix(self: Self, radix: u32, result_len: u32) -> [u8] {\n crate::assert_constant(radix);\n crate::assert_constant(result_len);\n self.__to_le_radix(radix, result_len)\n }\n\n pub fn to_be_radix(self: Self, radix: u32, result_len: u32) -> [u8] {\n crate::assert_constant(radix);\n crate::assert_constant(result_len);\n self.__to_be_radix(radix, result_len)\n }\n\n // decompose `_self` into a `_result_len` vector over the `_radix` basis\n // `_radix` must be less than 256\n #[builtin(to_le_radix)]\n fn __to_le_radix(self, radix: u32, result_len: u32) -> [u8] {}\n\n #[builtin(to_be_radix)]\n fn __to_be_radix(self, radix: u32, result_len: u32) -> [u8] {}\n\n // Returns self to the power of the given exponent value.\n // Caution: we assume the exponent fits into 32 bits\n // using a bigger bit size impacts negatively the performance and should be done only if the exponent does not fit in 32 bits\n pub fn pow_32(self, exponent: Field) -> Field {\n let mut r: Field = 1;\n let b = exponent.to_le_bits(32);\n\n for i in 1..33 {\n r *= r;\n r = (b[32-i] as Field) * (r * self) + (1 - b[32-i] as Field) * r;\n }\n r\n }\n\n // Parity of (prime) Field element, i.e. sgn0(x mod p) = 0 if x ∈ {0, ..., p-1} is even, otherwise sgn0(x mod p) = 1.\n pub fn sgn0(self) -> u1 {\n self as u1\n }\n\n pub fn lt(self, another: Field) -> bool {\n if crate::compat::is_bn254() {\n bn254_lt(self, another)\n } else {\n lt_fallback(self, another)\n }\n }\n}\n\n#[builtin(modulus_num_bits)]\npub comptime fn modulus_num_bits() -> u64 {}\n\n#[builtin(modulus_be_bits)]\npub comptime fn modulus_be_bits() -> [u1] {}\n\n#[builtin(modulus_le_bits)]\npub comptime fn modulus_le_bits() -> [u1] {}\n\n#[builtin(modulus_be_bytes)]\npub comptime fn modulus_be_bytes() -> [u8] {}\n\n#[builtin(modulus_le_bytes)]\npub comptime fn modulus_le_bytes() -> [u8] {}\n\n// Convert a 32 byte array to a field element by modding\npub fn bytes32_to_field(bytes32: [u8; 32]) -> Field {\n // Convert it to a field element\n let mut v = 1;\n let mut high = 0 as Field;\n let mut low = 0 as Field;\n\n for i in 0..16 {\n high = high + (bytes32[15 - i] as Field) * v;\n low = low + (bytes32[16 + 15 - i] as Field) * v;\n v = v * 256;\n }\n // Abuse that a % p + b % p = (a + b) % p and that low < p\n low + high * v\n}\n\nfn lt_fallback(x: Field, y: Field) -> bool {\n let num_bytes = (modulus_num_bits() as u32 + 7) / 8;\n let x_bytes = x.to_le_bytes(num_bytes);\n let y_bytes = y.to_le_bytes(num_bytes);\n let mut x_is_lt = false;\n let mut done = false;\n for i in 0..num_bytes {\n if (!done) {\n let x_byte = x_bytes[num_bytes - 1 - i] as u8;\n let y_byte = y_bytes[num_bytes - 1 - i] as u8;\n let bytes_match = x_byte == y_byte;\n if !bytes_match {\n x_is_lt = x_byte < y_byte;\n done = true;\n }\n }\n }\n x_is_lt\n}\n\n"},"241":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/type_serialization.nr","source":"use crate::traits::{Serialize, Deserialize};\n\nglobal BOOL_SERIALIZED_LEN: Field = 1;\nglobal U8_SERIALIZED_LEN: Field = 1;\nglobal U32_SERIALIZED_LEN: Field = 1;\nglobal U64_SERIALIZED_LEN: Field = 1;\nglobal U128_SERIALIZED_LEN: Field = 1;\nglobal FIELD_SERIALIZED_LEN: Field = 1;\n\nimpl Serialize<BOOL_SERIALIZED_LEN> for bool {\n fn serialize(self) -> [Field; BOOL_SERIALIZED_LEN] {\n [self as Field]\n }\n}\n\nimpl Deserialize<BOOL_SERIALIZED_LEN> for bool {\n fn deserialize(fields: [Field; BOOL_SERIALIZED_LEN]) -> bool {\n fields[0] as bool\n }\n}\n\nimpl Serialize<U8_SERIALIZED_LEN> for u8 {\n fn serialize(self) -> [Field; U32_SERIALIZED_LEN] {\n [self as Field]\n }\n}\n\nimpl Deserialize<U8_SERIALIZED_LEN> for u8 {\n fn deserialize(fields: [Field; U8_SERIALIZED_LEN]) -> Self {\n fields[0] as u8\n }\n}\n\nimpl Serialize<U32_SERIALIZED_LEN> for u32 {\n fn serialize(self) -> [Field; U32_SERIALIZED_LEN] {\n [self as Field]\n }\n}\n\nimpl Deserialize<U32_SERIALIZED_LEN> for u32 {\n fn deserialize(fields: [Field; U32_SERIALIZED_LEN]) -> Self {\n fields[0] as u32\n }\n}\n\nimpl Serialize<U64_SERIALIZED_LEN> for u64 {\n fn serialize(self) -> [Field; U64_SERIALIZED_LEN] {\n [self as Field]\n }\n}\n\nimpl Deserialize<U64_SERIALIZED_LEN> for u64 {\n fn deserialize(fields: [Field; U64_SERIALIZED_LEN]) -> Self {\n fields[0] as u64\n }\n}\n\nimpl Serialize<U128_SERIALIZED_LEN> for U128 {\n fn serialize(self) -> [Field; 1] {\n [self.to_integer()]\n }\n\n}\n\nimpl Deserialize<U128_SERIALIZED_LEN> for U128 {\n fn deserialize(fields: [Field; U128_SERIALIZED_LEN]) -> Self {\n U128::from_integer(fields[0])\n }\n}\n\nimpl Serialize<FIELD_SERIALIZED_LEN> for Field {\n fn serialize(self) -> [Field; U32_SERIALIZED_LEN] {\n [self]\n }\n}\n\nimpl Deserialize<FIELD_SERIALIZED_LEN> for Field {\n fn deserialize(fields: [Field; FIELD_SERIALIZED_LEN]) -> Self {\n fields[0]\n }\n}\n"},"242":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/traits.nr","source":"use crate::utils::field::field_from_bytes;\n\n// Trait: is_empty\n//\n// The general is_empty trait checks if a data type is is empty,\n// and it defines empty for the basic data types as 0.\n//\n// If a Field is equal to zero, then it is regarded as zero.\n// We will go with this definition for now, however it can be problematic \n// if a value can actually be zero. In a future refactor, we can \n// use the optional type for safety. Doing it now would lead to a worse devex\n// and would make it harder to sync up with the cpp code.\n// Preferred over Default trait to convey intent, as default doesn't necessarily mean empty.\ntrait Empty {\n fn empty() -> Self;\n}\n\nimpl Empty for Field { fn empty() -> Self {0} }\n\nimpl Empty for u1 { fn empty() -> Self {0} }\nimpl Empty for u8 { fn empty() -> Self {0} }\nimpl Empty for u32 { fn empty() -> Self {0} }\nimpl Empty for u64 { fn empty() -> Self {0} }\nimpl Empty for U128 { fn empty() -> Self {U128::from_integer(0)} }\n\npub fn is_empty<T>(item: T) -> bool where T: Empty + Eq {\n item.eq(T::empty())\n}\n\npub fn is_empty_array<T, let N: u32>(array: [T; N]) -> bool where T: Empty + Eq {\n array.all(|elem| is_empty(elem))\n}\n\ntrait Hash {\n fn hash(self) -> Field;\n}\n\ntrait ToField {\n fn to_field(self) -> Field;\n}\n\nimpl ToField for Field {\n fn to_field(self) -> Field {\n self\n }\n}\n\nimpl ToField for bool { fn to_field(self) -> Field { self as Field } }\nimpl ToField for u1 { fn to_field(self) -> Field { self as Field } }\nimpl ToField for u8 { fn to_field(self) -> Field { self as Field } }\nimpl ToField for u32 { fn to_field(self) -> Field { self as Field } }\nimpl ToField for u64 { fn to_field(self) -> Field { self as Field } }\nimpl ToField for U128 {\n fn to_field(self) -> Field {\n self.to_integer()\n }\n}\nimpl<let N: u32> ToField for str<N> {\n fn to_field(self) -> Field {\n assert(N < 32, \"String doesn't fit in a field, consider using Serialize instead\");\n field_from_bytes(self.as_bytes(), true)\n }\n}\n\ntrait FromField {\n fn from_field(value: Field) -> Self;\n}\n\nimpl FromField for Field {\n fn from_field(value: Field) -> Self {\n value\n }\n}\n\nimpl FromField for bool { fn from_field(value: Field) -> Self { value as bool } }\nimpl FromField for u1 { fn from_field(value: Field) -> Self { value as u1 } }\nimpl FromField for u8 { fn from_field(value: Field) -> Self { value as u8 } }\nimpl FromField for u32 { fn from_field(value: Field) -> Self { value as u32 } }\nimpl FromField for u64 { fn from_field(value: Field) -> Self { value as u64 } }\nimpl FromField for U128 {\n fn from_field(value: Field) -> Self {\n U128::from_integer(value)\n }\n}\n\n// docs:start:serialize\ntrait Serialize<let N: u32> {\n fn serialize(self) -> [Field; N];\n}\n// docs:end:serialize\n\nimpl<let N: u32> Serialize<N> for [Field; N] {\n fn serialize(self) -> [Field; N] {\n self\n }\n}\nimpl<let N: u32> Serialize<N> for str<N> {\n fn serialize(self) -> [Field; N] {\n let mut result = [0; N];\n let bytes: [u8; N] = self.as_bytes();\n for i in 0..N {\n result[i] = field_from_bytes([bytes[i];1], true);\n }\n result\n }\n}\n\n// docs:start:deserialize\ntrait Deserialize<let N: u32> {\n fn deserialize(fields: [Field; N]) -> Self;\n}\n// docs:end:deserialize\n\nimpl<let N: u32> Deserialize<N> for [Field; N] {\n fn deserialize(fields: [Field; N]) -> Self {\n fields\n }\n}\n"},"247":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/hash.nr","source":"use crate::{\n abis::{\n contract_class_function_leaf_preimage::ContractClassFunctionLeafPreimage,\n function_selector::FunctionSelector, log_hash::{LogHash, ScopedLogHash, ScopedEncryptedLogHash},\n note_hash::ScopedNoteHash, nullifier::ScopedNullifier\n},\n address::{AztecAddress, EthAddress},\n constants::{\n FUNCTION_TREE_HEIGHT, GENERATOR_INDEX__SILOED_NOTE_HASH, GENERATOR_INDEX__OUTER_NULLIFIER,\n GENERATOR_INDEX__VK, GENERATOR_INDEX__NOTE_HASH_NONCE, GENERATOR_INDEX__UNIQUE_NOTE_HASH,\n MAX_ENCRYPTED_LOGS_PER_TX, MAX_NOTE_ENCRYPTED_LOGS_PER_TX\n},\n merkle_tree::root::root_from_sibling_path, messaging::l2_to_l1_message::ScopedL2ToL1Message,\n recursion::verification_key::VerificationKey, traits::is_empty,\n utils::field::field_from_bytes_32_trunc\n};\nuse std::hash::{pedersen_hash_with_separator, sha256};\n\npub fn sha256_to_field<let N: u32>(bytes_to_hash: [u8; N]) -> Field {\n let sha256_hashed = sha256(bytes_to_hash);\n let hash_in_a_field = field_from_bytes_32_trunc(sha256_hashed);\n\n hash_in_a_field\n}\n\npub fn private_functions_root_from_siblings(\n selector: FunctionSelector,\n vk_hash: Field,\n function_leaf_index: Field,\n function_leaf_sibling_path: [Field; FUNCTION_TREE_HEIGHT]\n) -> Field {\n let function_leaf_preimage = ContractClassFunctionLeafPreimage { selector, vk_hash };\n let function_leaf = function_leaf_preimage.hash();\n root_from_sibling_path(function_leaf, function_leaf_index, function_leaf_sibling_path)\n}\n\nfn compute_note_hash_nonce(tx_hash: Field, note_index_in_tx: u32) -> Field {\n // Hashing tx hash with note index in tx is guaranteed to be unique\n pedersen_hash(\n [\n tx_hash,\n note_index_in_tx as Field\n ],\n GENERATOR_INDEX__NOTE_HASH_NONCE\n )\n}\n\npub fn compute_unique_note_hash(nonce: Field, inner_note_hash: Field) -> Field {\n let inputs = [nonce, inner_note_hash];\n pedersen_hash(inputs, GENERATOR_INDEX__UNIQUE_NOTE_HASH)\n}\n\npub fn compute_siloed_note_hash(app: AztecAddress, unique_note_hash: Field) -> Field {\n pedersen_hash(\n [\n app.to_field(),\n unique_note_hash\n ],\n GENERATOR_INDEX__SILOED_NOTE_HASH\n )\n}\n\npub fn silo_note_hash(note_hash: ScopedNoteHash, tx_hash: Field, note_index_in_tx: u32) -> Field {\n if note_hash.contract_address.is_zero() {\n 0\n } else {\n let nonce = compute_note_hash_nonce(tx_hash, note_index_in_tx);\n let unique_note_hash = compute_unique_note_hash(nonce, note_hash.value());\n compute_siloed_note_hash(note_hash.contract_address, unique_note_hash)\n }\n}\n\npub fn compute_siloed_nullifier(app: AztecAddress, nullifier: Field) -> Field {\n pedersen_hash(\n [\n app.to_field(),\n nullifier\n ],\n GENERATOR_INDEX__OUTER_NULLIFIER\n )\n}\n\npub fn silo_nullifier(nullifier: ScopedNullifier) -> Field {\n if nullifier.contract_address.is_zero() {\n nullifier.value() // Return value instead of 0 because the first nullifier's contract address is zero.\n } else {\n compute_siloed_nullifier(nullifier.contract_address, nullifier.value())\n }\n}\n\npub fn compute_siloed_encrypted_log_hash(address: AztecAddress, randomness: Field, log_hash: Field) -> Field {\n // TODO: Using 0 GENERATOR_INDEX here as interim before we move to posiedon\n // NB: A unique separator will be needed for masked_contract_address\n let mut masked_contract_address = pedersen_hash([address.to_field(), randomness], 0);\n if randomness == 0 {\n // In some cases, we actually want to reveal the contract address we are siloing with:\n // e.g. 'handshaking' contract w/ known address\n // An app providing randomness = 0 signals to not mask the address.\n masked_contract_address = address.to_field();\n }\n accumulate_sha256([masked_contract_address, log_hash])\n}\n\npub fn silo_encrypted_log_hash(log_hash: ScopedEncryptedLogHash) -> Field {\n if log_hash.contract_address.is_zero() {\n 0\n } else {\n compute_siloed_encrypted_log_hash(\n log_hash.contract_address,\n log_hash.log_hash.randomness,\n log_hash.log_hash.value\n )\n }\n}\n\nfn compute_siloed_unencrypted_log_hash(address: AztecAddress, log_hash: Field) -> Field {\n accumulate_sha256([address.to_field(), log_hash])\n}\n\npub fn silo_unencrypted_log_hash(log_hash: ScopedLogHash) -> Field {\n if log_hash.contract_address.is_zero() {\n 0\n } else {\n compute_siloed_unencrypted_log_hash(log_hash.contract_address, log_hash.value())\n }\n}\n\npub fn merkle_hash(left: Field, right: Field) -> Field {\n pedersen_hash([left, right], 0)\n}\n\npub fn stdlib_recursion_verification_key_compress_native_vk(_vk: VerificationKey) -> Field {\n // Original cpp code\n // stdlib::recursion::verification_key<CT::bn254>::compress_native(private_call.vk, GeneratorIndex::VK);\n // The above cpp method is only ever called on verification key, so it has been special cased here\n let _hash_index = GENERATOR_INDEX__VK;\n 0\n}\n\npub fn compute_l2_to_l1_hash(\n contract_address: AztecAddress,\n recipient: EthAddress,\n content: Field,\n rollup_version_id: Field,\n chain_id: Field\n) -> Field {\n let mut bytes: BoundedVec<u8, 160> = BoundedVec::new();\n\n let inputs = [contract_address.to_field(), rollup_version_id, recipient.to_field(), chain_id, content];\n for i in 0..inputs.len() {\n // TODO are bytes be in fr.to_buffer() ?\n let item_bytes = inputs[i].to_be_bytes(32);\n for j in 0..32 {\n bytes.push(item_bytes[j]);\n }\n }\n\n sha256_to_field(bytes.storage)\n}\n\npub fn silo_l2_to_l1_message(msg: ScopedL2ToL1Message, rollup_version_id: Field, chain_id: Field) -> Field {\n if msg.contract_address.is_zero() {\n 0\n } else {\n compute_l2_to_l1_hash(\n msg.contract_address,\n msg.message.recipient,\n msg.message.content,\n rollup_version_id,\n chain_id\n )\n }\n}\n\n// Computes sha256 hash of 2 input hashes.\n//\n// NB: This method now takes in two 31 byte fields - it assumes that any input\n// is the result of a sha_to_field hash and => is truncated\n//\n// TODO(Jan and David): This is used for the encrypted_log hashes.\n// Can we check to see if we can just use hash_to_field or pedersen_compress here?\n//\npub fn accumulate_sha256(input: [Field; 2]) -> Field {\n // This is a note about the cpp code, since it takes an array of Fields\n // instead of a U128.\n // 4 Field elements when converted to bytes will usually\n // occupy 4 * 32 = 128 bytes.\n // However, this function is making the assumption that each Field\n // only occupies 128 bits.\n //\n // TODO(David): This does not seem to be getting guaranteed anywhere in the code?\n\n // Concatentate two fields into 32x2 = 64 bytes\n // accumulate_sha256 assumes that the inputs are pre-truncated 31 byte numbers\n let mut hash_input_flattened = [0; 64];\n for offset in 0..input.len() {\n let input_as_bytes = input[offset].to_be_bytes(32);\n for byte_index in 0..32 {\n hash_input_flattened[offset * 32 + byte_index] = input_as_bytes[byte_index];\n }\n }\n\n sha256_to_field(hash_input_flattened)\n}\n\n// Computes the final logs hash for a tx.\n// NB: this assumes MAX_ENCRYPTED_LOGS_PER_TX == MAX_UNENCRYPTED_LOGS_PER_TX\n// to avoid doubling code, since we can't define the byte len to be 32*N directly.\npub fn compute_tx_logs_hash(logs: [LogHash; MAX_ENCRYPTED_LOGS_PER_TX]) -> Field {\n // Convert each field element into a byte array and append the bytes to `hash_input_flattened`\n let mut hash_input_flattened = [0; MAX_ENCRYPTED_LOGS_PER_TX * 32];\n for offset in 0..MAX_ENCRYPTED_LOGS_PER_TX {\n let input_as_bytes = logs[offset].value.to_be_bytes(32);\n for byte_index in 0..32 {\n hash_input_flattened[offset * 32 + byte_index] = input_as_bytes[byte_index];\n }\n }\n // Ideally we would push to a slice then hash, but there is no sha_slice\n // Hardcode to 256 bytes for now\n let mut hash = sha256_to_field(hash_input_flattened);\n // Not having a 0 value hash for empty logs causes issues with empty txs\n // used for padding. Returning early is currently unsupported.\n // We always provide sorted logs here, so 0 being empty means all are empty.\n if is_empty(logs[0]) {\n hash = 0;\n }\n hash\n}\n\npub fn compute_tx_note_logs_hash(logs: [LogHash; MAX_NOTE_ENCRYPTED_LOGS_PER_TX]) -> Field {\n // Convert each field element into a byte array and append the bytes to `hash_input_flattened`\n let mut hash_input_flattened = [0; MAX_NOTE_ENCRYPTED_LOGS_PER_TX * 32];\n for offset in 0..MAX_NOTE_ENCRYPTED_LOGS_PER_TX {\n let input_as_bytes = logs[offset].value.to_be_bytes(32);\n for byte_index in 0..32 {\n hash_input_flattened[offset * 32 + byte_index] = input_as_bytes[byte_index];\n }\n }\n // Ideally we would push to a slice then hash, but there is no sha_slice\n // Hardcode to 256 bytes for now\n let mut hash = sha256_to_field(hash_input_flattened);\n // Not having a 0 value hash for empty logs causes issues with empty txs\n // used for padding. Returning early is currently unsupported.\n // We always provide sorted logs here, so 0 being empty means all are empty.\n if is_empty(logs[0]) {\n hash = 0;\n }\n hash\n}\n\npub fn pedersen_hash<let N: u32>(inputs: [Field; N], hash_index: u32) -> Field {\n std::hash::pedersen_hash_with_separator(inputs, hash_index)\n}\n\npub fn poseidon2_hash<let N: u32>(inputs: [Field; N]) -> Field {\n std::hash::poseidon2::Poseidon2::hash(inputs, N)\n}\n\n#[test]\nfn smoke_sha256_to_field() {\n let full_buffer = [\n 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19,\n 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39,\n 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59,\n 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,\n 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99,\n 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119,\n 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139,\n 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159\n ];\n let result = sha256_to_field(full_buffer);\n\n assert(result == 0x448ebbc9e1a31220a2f3830c18eef61b9bd070e5084b7fa2a359fe729184c7);\n\n // to show correctness of the current ver (truncate one byte) vs old ver (mod full bytes):\n let result_bytes = sha256(full_buffer);\n let truncated_field = crate::utils::field::field_from_bytes_32_trunc(result_bytes);\n assert(truncated_field == result);\n let mod_res = result + (result_bytes[31] as Field);\n assert(mod_res == 0x448ebbc9e1a31220a2f3830c18eef61b9bd070e5084b7fa2a359fe729184e0);\n}\n\n#[test]\nfn compute_l2_l1_hash() {\n // All zeroes\n let hash_result = compute_l2_to_l1_hash(AztecAddress::from_field(0), EthAddress::zero(), 0, 0, 0);\n assert(hash_result == 0xb393978842a0fa3d3e1470196f098f473f9678e72463cb65ec4ab5581856c2);\n\n // Non-zero case\n let hash_result = compute_l2_to_l1_hash(AztecAddress::from_field(1), EthAddress::from_field(3), 5, 2, 4);\n assert(hash_result == 0x3f88c1044a05e5340ed20466276500f6d45ca5603913b9091e957161734e16);\n}\n"},"25":{"path":"std/hash/keccak.nr","source":"global LIMBS_PER_BLOCK = 17; //BLOCK_SIZE / 8;\nglobal NUM_KECCAK_LANES = 25;\nglobal BLOCK_SIZE = 136; //(1600 - BITS * 2) / WORD_SIZE;\nglobal WORD_SIZE = 8;\n\nuse crate::collections::vec::Vec;\n\n#[foreign(keccakf1600)]\nfn keccakf1600(input: [u64; 25]) -> [u64; 25] {}\n\n#[no_predicates]\npub(crate) fn keccak256<let N: u32>(mut input: [u8; N], message_size: u32) -> [u8; 32] {\n assert(N >= message_size);\n for i in 0..N {\n if i >= message_size {\n input[i] = 0;\n }\n }\n\n //1. format_input_lanes\n let max_blocks = (N + BLOCK_SIZE) / BLOCK_SIZE;\n //maximum number of bytes to hash\n let max_blocks_length = (BLOCK_SIZE * (max_blocks));\n let real_max_blocks = (message_size + BLOCK_SIZE) / BLOCK_SIZE;\n let real_blocks_bytes = real_max_blocks * BLOCK_SIZE;\n\n let mut block_bytes = [0; BLOCK_SIZE];\n for i in 0..N {\n block_bytes[i] = input[i];\n }\n\n block_bytes[message_size] = 1;\n block_bytes[real_blocks_bytes - 1] = 0x80;\n\n // keccak lanes interpret memory as little-endian integers,\n // means we need to swap our byte ordering\n let num_limbs = max_blocks * LIMBS_PER_BLOCK; //max_blocks_length / WORD_SIZE;\n for i in 0..num_limbs {\n let mut temp = [0; 8];\n for j in 0..8 {\n temp[j] = block_bytes[8*i+j];\n }\n for j in 0..8 {\n block_bytes[8 * i + j] = temp[7 - j];\n }\n }\n let byte_size = max_blocks_length;\n let mut sliced_buffer = Vec::new();\n for _i in 0..num_limbs {\n sliced_buffer.push(0);\n }\n // populate a vector of 64-bit limbs from our byte array\n for i in 0..num_limbs {\n let mut sliced = 0;\n if (i * WORD_SIZE + WORD_SIZE > byte_size) {\n let slice_size = byte_size - (i * WORD_SIZE);\n let byte_shift = (WORD_SIZE - slice_size) * 8;\n let mut v = 1;\n for k in 0..slice_size {\n sliced += v * (block_bytes[i * WORD_SIZE+7-k] as Field);\n v *= 256;\n }\n let w = 1 << (byte_shift as u8);\n sliced *= w as Field;\n } else {\n let mut v = 1;\n for k in 0..WORD_SIZE {\n sliced += v * (block_bytes[i * WORD_SIZE+7-k] as Field);\n v *= 256;\n }\n }\n sliced_buffer.set(i, sliced as u64);\n }\n\n //2. sponge_absorb\n let num_blocks = max_blocks;\n let mut state : [u64;NUM_KECCAK_LANES]= [0; NUM_KECCAK_LANES];\n let mut under_block = true;\n for i in 0..num_blocks {\n if i == real_max_blocks {\n under_block = false;\n }\n if under_block {\n if (i == 0) {\n for j in 0..LIMBS_PER_BLOCK {\n state[j] = sliced_buffer.get(j);\n }\n } else {\n for j in 0..LIMBS_PER_BLOCK {\n state[j] = state[j] ^ sliced_buffer.get(i * LIMBS_PER_BLOCK + j);\n }\n }\n state = keccakf1600(state);\n }\n }\n\n //3. sponge_squeeze\n let mut result = [0; 32];\n for i in 0..4 {\n let lane = state[i] as Field;\n let lane_le = lane.to_le_bytes(8);\n for j in 0..8 {\n result[8*i+j] = lane_le[j];\n }\n }\n result\n}\n\nmod tests {\n use crate::hash::keccak::keccak256;\n\n #[test]\n fn smoke_test() {\n let input = [0xbd];\n let result = [\n 0x5a, 0x50, 0x2f, 0x9f, 0xca, 0x46, 0x7b, 0x26, 0x6d, 0x5b, 0x78, 0x33, 0x65, 0x19, 0x37, 0xe8, 0x05, 0x27, 0x0c, 0xa3, 0xf3, 0xaf, 0x1c, 0x0d, 0xd2, 0x46, 0x2d, 0xca, 0x4b, 0x3b, 0x1a, 0xbf\n ];\n assert_eq(keccak256(input, input.len()), result);\n }\n\n #[test]\n fn hash_hello_world() {\n // \"hello world\"\n let input = [72, 101, 108, 108, 111, 32, 119, 111, 114, 108, 100, 33];\n let result = [\n 0xec, 0xd0, 0xe1, 0x8, 0xa9, 0x8e, 0x19, 0x2a, 0xf1, 0xd2, 0xc2, 0x50, 0x55, 0xf4, 0xe3, 0xbe, 0xd7, 0x84, 0xb5, 0xc8, 0x77, 0x20, 0x4e, 0x73, 0x21, 0x9a, 0x52, 0x3, 0x25, 0x1f, 0xea, 0xab\n ];\n assert_eq(keccak256(input, input.len()), result);\n }\n\n #[test]\n fn var_size_hash() {\n let input = [\n 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223\n ];\n let result = [\n 226, 37, 115, 94, 94, 196, 72, 116, 194, 105, 79, 233, 65, 12, 30, 94, 181, 131, 170, 219, 171, 166, 236, 88, 143, 67, 255, 160, 248, 214, 39, 129\n ];\n assert_eq(keccak256(input, 13), result);\n }\n}\n\n"},"27":{"path":"std/hash/mod.nr","source":"mod poseidon;\nmod mimc;\nmod poseidon2;\nmod keccak;\n\nuse crate::default::Default;\nuse crate::uint128::U128;\nuse crate::sha256::{digest, sha256_var};\nuse crate::collections::vec::Vec;\nuse crate::embedded_curve_ops::{EmbeddedCurvePoint, EmbeddedCurveScalar, multi_scalar_mul, multi_scalar_mul_slice};\n\n#[foreign(sha256)]\n// docs:start:sha256\npub fn sha256<let N: u32>(input: [u8; N]) -> [u8; 32]\n// docs:end:sha256\n{}\n\n#[foreign(blake2s)]\n// docs:start:blake2s\npub fn blake2s<let N: u32>(input: [u8; N]) -> [u8; 32]\n// docs:end:blake2s\n{}\n\n#[foreign(blake3)]\n// docs:start:blake3\npub fn blake3<let N: u32>(input: [u8; N]) -> [u8; 32]\n// docs:end:blake3\n{}\n\n// docs:start:pedersen_commitment\npub fn pedersen_commitment<let N: u32>(input: [Field; N]) -> EmbeddedCurvePoint {\n // docs:end:pedersen_commitment\n pedersen_commitment_with_separator(input, 0)\n}\n\npub fn pedersen_hash_with_separator<let N: u32>(input: [Field; N], separator: u32) -> Field {\n __pedersen_hash_with_separator(input, separator)\n}\n\nfn pedersen_commitment_with_separator<let N: u32>(input: [Field; N], separator: u32) -> EmbeddedCurvePoint {\n let value = __pedersen_commitment_with_separator(input, separator);\n if (value[0] == 0) & (value[1] == 0) {\n EmbeddedCurvePoint { x: 0, y: 0, is_infinite: true }\n } else {\n EmbeddedCurvePoint { x: value[0], y: value[1], is_infinite: false }\n }\n}\n\nfn pedersen_commitment_with_separator_noir<let N: u32>(input: [Field; N], separator: u32) -> EmbeddedCurvePoint {\n let mut points = [EmbeddedCurveScalar { lo: 0, hi: 0 }; N];\n for i in 0..N {\n // we use the unsafe version because the multi_scalar_mul will constraint the scalars.\n points[i] = from_field_unsafe(input[i]);\n }\n let generators = derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n multi_scalar_mul(generators, points)\n}\n\nfn pedersen_hash_with_separator_noir<let N: u32>(input: [Field; N], separator: u32) -> Field {\n let mut scalars: Vec<EmbeddedCurveScalar> = Vec::from_slice([EmbeddedCurveScalar { lo: 0, hi: 0 }; N].as_slice()); //Vec::new();\n\n for i in 0..N {\n scalars.set(i, from_field_unsafe(input[i]));\n }\n scalars.push(EmbeddedCurveScalar { lo: N as Field, hi: 0 });\n let domain_generators :[EmbeddedCurvePoint; N]= derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n let mut vec_generators = Vec::from_slice(domain_generators.as_slice());\n let length_generator : [EmbeddedCurvePoint; 1] = derive_generators(\"pedersen_hash_length\".as_bytes(), 0);\n vec_generators.push(length_generator[0]);\n multi_scalar_mul_slice(vec_generators.slice, scalars.slice)[0]\n}\n\n// docs:start:pedersen_hash\npub fn pedersen_hash<let N: u32>(input: [Field; N]) -> Field\n// docs:end:pedersen_hash\n{\n __pedersen_hash_with_separator(input, 0)\n}\n\n#[foreign(pedersen_hash)]\nfn __pedersen_hash_with_separator<let N: u32>(input: [Field; N], separator: u32) -> Field {}\n\n#[foreign(pedersen_commitment)]\nfn __pedersen_commitment_with_separator<let N: u32>(input: [Field; N], separator: u32) -> [Field; 2] {}\n\n#[field(bn254)]\nfn derive_generators<let N: u32, let M: u32>(domain_separator_bytes: [u8; M], starting_index: u32) -> [EmbeddedCurvePoint; N] {\n crate::assert_constant(domain_separator_bytes);\n crate::assert_constant(starting_index);\n __derive_generators(domain_separator_bytes, starting_index)\n}\n\n#[builtin(derive_pedersen_generators)]\n#[field(bn254)]\nfn __derive_generators<let N: u32, let M: u32>(\n domain_separator_bytes: [u8; M],\n starting_index: u32\n) -> [EmbeddedCurvePoint; N] {}\n\n#[field(bn254)]\n // Same as from_field but:\n // does not assert the limbs are 128 bits\n // does not assert the decomposition does not overflow the EmbeddedCurveScalar\n fn from_field_unsafe(scalar: Field) -> EmbeddedCurveScalar {\n let (xlo, xhi) = crate::field::bn254::decompose_hint(scalar);\n // Check that the decomposition is correct\n assert_eq(scalar, xlo + crate::field::bn254::TWO_POW_128 * xhi);\n EmbeddedCurveScalar { lo: xlo, hi: xhi }\n}\n\npub fn hash_to_field(inputs: [Field]) -> Field {\n let mut sum = 0;\n\n for input in inputs {\n let input_bytes: [u8; 32] = input.to_le_bytes(32).as_array();\n sum += crate::field::bytes32_to_field(blake2s(input_bytes));\n }\n\n sum\n}\n\n// docs:start:keccak256\npub fn keccak256<let N: u32>(input: [u8; N], message_size: u32) -> [u8; 32]\n// docs:end:keccak256\n{\n crate::hash::keccak::keccak256(input, message_size)\n}\n\n#[foreign(poseidon2_permutation)]\npub fn poseidon2_permutation<let N: u32>(_input: [Field; N], _state_length: u32) -> [Field; N] {}\n\n#[foreign(sha256_compression)]\npub fn sha256_compression(_input: [u32; 16], _state: [u32; 8]) -> [u32; 8] {}\n\n// Generic hashing support. \n// Partially ported and impacted by rust.\n\n// Hash trait shall be implemented per type.\ntrait Hash{\n fn hash<H>(self, state: &mut H) where H: Hasher;\n}\n\n// Hasher trait shall be implemented by algorithms to provide hash-agnostic means.\n// TODO: consider making the types generic here ([u8], [Field], etc.)\ntrait Hasher{\n fn finish(self) -> Field;\n \n fn write(&mut self, input: Field);\n}\n\n// BuildHasher is a factory trait, responsible for production of specific Hasher.\ntrait BuildHasher<H> where H: Hasher{\n fn build_hasher(self) -> H;\n}\n\nstruct BuildHasherDefault<H>;\n\nimpl<H> BuildHasher<H> for BuildHasherDefault<H>\nwhere \n H: Hasher + Default\n{\n fn build_hasher(_self: Self) -> H{\n H::default()\n }\n}\n\nimpl<H> Default for BuildHasherDefault<H>\nwhere \n H: Hasher + Default\n{\n fn default() -> Self{\n BuildHasherDefault{}\n } \n}\n\nimpl Hash for Field {\n fn hash<H>(self, state: &mut H) where H: Hasher{\n H::write(state, self);\n }\n}\n\nimpl Hash for u8 {\n fn hash<H>(self, state: &mut H) where H: Hasher{\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u32 {\n fn hash<H>(self, state: &mut H) where H: Hasher{\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u64 {\n fn hash<H>(self, state: &mut H) where H: Hasher{\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i8 {\n fn hash<H>(self, state: &mut H) where H: Hasher{\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i32 {\n fn hash<H>(self, state: &mut H) where H: Hasher{\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i64 {\n fn hash<H>(self, state: &mut H) where H: Hasher{\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for bool {\n fn hash<H>(self, state: &mut H) where H: Hasher{\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for () {\n fn hash<H>(_self: Self, _state: &mut H) where H: Hasher {}\n}\n\nimpl Hash for U128 {\n fn hash<H>(self, state: &mut H) where H: Hasher{\n H::write(state, self.lo as Field);\n H::write(state, self.hi as Field);\n }\n}\n\nimpl<T, let N: u32> Hash for [T; N] where T: Hash {\n fn hash<H>(self, state: &mut H) where H: Hasher{\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl<T> Hash for [T] where T: Hash {\n fn hash<H>(self, state: &mut H) where H: Hasher{\n self.len().hash(state);\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl<A, B> Hash for (A, B) where A: Hash, B: Hash {\n fn hash<H>(self, state: &mut H) where H: Hasher{\n self.0.hash(state);\n self.1.hash(state);\n }\n}\n\nimpl<A, B, C> Hash for (A, B, C) where A: Hash, B: Hash, C: Hash {\n fn hash<H>(self, state: &mut H) where H: Hasher{\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n }\n}\n\nimpl<A, B, C, D> Hash for (A, B, C, D) where A: Hash, B: Hash, C: Hash, D: Hash {\n fn hash<H>(self, state: &mut H) where H: Hasher{\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n }\n}\n\nimpl<A, B, C, D, E> Hash for (A, B, C, D, E) where A: Hash, B: Hash, C: Hash, D: Hash, E: Hash {\n fn hash<H>(self, state: &mut H) where H: Hasher{\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n self.4.hash(state);\n }\n}\n\n// Some test vectors for Pedersen hash and Pedersen Commitment.\n// They have been generated using the same functions so the tests are for now useless\n// but they will be useful when we switch to Noir implementation.\n#[test]\nfn assert_pedersen() {\n assert_eq(\n pedersen_hash_with_separator([1], 1), 0x1b3f4b1a83092a13d8d1a59f7acb62aba15e7002f4440f2275edb99ebbc2305f\n );\n assert_eq(\n pedersen_commitment_with_separator([1], 1), EmbeddedCurvePoint {\n x: 0x054aa86a73cb8a34525e5bbed6e43ba1198e860f5f3950268f71df4591bde402,\n y: 0x209dcfbf2cfb57f9f6046f44d71ac6faf87254afc7407c04eb621a6287cac126,\n is_infinite: false\n }\n );\n\n assert_eq(\n pedersen_hash_with_separator([1, 2], 2), 0x26691c129448e9ace0c66d11f0a16d9014a9e8498ee78f4d69f0083168188255\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2], 2), EmbeddedCurvePoint {\n x: 0x2e2b3b191e49541fe468ec6877721d445dcaffe41728df0a0eafeb15e87b0753,\n y: 0x2ff4482400ad3a6228be17a2af33e2bcdf41be04795f9782bd96efe7e24f8778,\n is_infinite: false\n }\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3], 3), 0x0bc694b7a1f8d10d2d8987d07433f26bd616a2d351bc79a3c540d85b6206dbe4\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3], 3), EmbeddedCurvePoint {\n x: 0x1fee4e8cf8d2f527caa2684236b07c4b1bad7342c01b0f75e9a877a71827dc85,\n y: 0x2f9fedb9a090697ab69bf04c8bc15f7385b3e4b68c849c1536e5ae15ff138fd1,\n is_infinite: false\n }\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4], 4), 0xdae10fb32a8408521803905981a2b300d6a35e40e798743e9322b223a5eddc\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4], 4), EmbeddedCurvePoint {\n x: 0x07ae3e202811e1fca39c2d81eabe6f79183978e6f12be0d3b8eda095b79bdbc9,\n y: 0x0afc6f892593db6fbba60f2da558517e279e0ae04f95758587760ba193145014,\n is_infinite: false\n }\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5], 5), 0xfc375b062c4f4f0150f7100dfb8d9b72a6d28582dd9512390b0497cdad9c22\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5], 5), EmbeddedCurvePoint {\n x: 0x1754b12bd475a6984a1094b5109eeca9838f4f81ac89c5f0a41dbce53189bb29,\n y: 0x2da030e3cfcdc7ddad80eaf2599df6692cae0717d4e9f7bfbee8d073d5d278f7,\n is_infinite: false\n }\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6], 6), 0x1696ed13dc2730062a98ac9d8f9de0661bb98829c7582f699d0273b18c86a572\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6], 6), EmbeddedCurvePoint {\n x: 0x190f6c0e97ad83e1e28da22a98aae156da083c5a4100e929b77e750d3106a697,\n y: 0x1f4b60f34ef91221a0b49756fa0705da93311a61af73d37a0c458877706616fb,\n is_infinite: false\n }\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7], 7), 0x128c0ff144fc66b6cb60eeac8a38e23da52992fc427b92397a7dffd71c45ede3\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7], 7), EmbeddedCurvePoint {\n x: 0x015441e9d29491b06563fac16fc76abf7a9534c715421d0de85d20dbe2965939,\n y: 0x1d2575b0276f4e9087e6e07c2cb75aa1baafad127af4be5918ef8a2ef2fea8fc,\n is_infinite: false\n }\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8), 0x2f960e117482044dfc99d12fece2ef6862fba9242be4846c7c9a3e854325a55c\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8), EmbeddedCurvePoint {\n x: 0x1657737676968887fceb6dd516382ea13b3a2c557f509811cd86d5d1199bc443,\n y: 0x1f39f0cb569040105fa1e2f156521e8b8e08261e635a2b210bdc94e8d6d65f77,\n is_infinite: false\n }\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9), 0x0c96db0790602dcb166cc4699e2d306c479a76926b81c2cb2aaa92d249ec7be7\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9), EmbeddedCurvePoint {\n x: 0x0a3ceae42d14914a432aa60ec7fded4af7dad7dd4acdbf2908452675ec67e06d,\n y: 0xfc19761eaaf621ad4aec9a8b2e84a4eceffdba78f60f8b9391b0bd9345a2f2,\n is_infinite: false\n }\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10), 0x2cd37505871bc460a62ea1e63c7fe51149df5d0801302cf1cbc48beb8dff7e94\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10), EmbeddedCurvePoint {\n x: 0x2fb3f8b3d41ddde007c8c3c62550f9a9380ee546fcc639ffbb3fd30c8d8de30c,\n y: 0x300783be23c446b11a4c0fabf6c91af148937cea15fcf5fb054abf7f752ee245,\n is_infinite: false\n }\n );\n}\n\n"},"280":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/utils/field.nr","source":"pub fn field_from_bytes<let N: u32>(bytes: [u8; N], big_endian: bool) -> Field {\n assert(bytes.len() < 32, \"field_from_bytes: N must be less than 32\");\n let mut as_field = 0;\n let mut offset = 1;\n for i in 0..N {\n let mut index = i;\n if big_endian {\n index = N - i - 1;\n }\n as_field += (bytes[index] as Field) * offset;\n offset *= 256;\n }\n\n as_field\n}\n\n// Convert a 32 byte array to a field element by truncating the final byte\npub fn field_from_bytes_32_trunc(bytes32: [u8; 32]) -> Field {\n // Convert it to a field element\n let mut v = 1;\n let mut high = 0 as Field;\n let mut low = 0 as Field;\n\n for i in 0..15 {\n // covers bytes 16..30 (31 is truncated and ignored)\n low = low + (bytes32[15 + 15 - i] as Field) * v;\n v = v * 256;\n // covers bytes 0..14\n high = high + (bytes32[14 - i] as Field) * v;\n }\n // covers byte 15\n low = low + (bytes32[15] as Field) * v;\n\n low + high * v\n}\n\n// TODO to radix returns u8, so we cannot use bigger radixes. It'd be ideal to use a radix of the maximum range-constrained integer noir supports\npub fn full_field_less_than(lhs: Field, rhs: Field) -> bool {\n lhs.lt(rhs)\n}\n\npub fn full_field_greater_than(lhs: Field, rhs: Field) -> bool {\n rhs.lt(lhs)\n}\n\n#[test]\nunconstrained fn bytes_field_test() {\n // Tests correctness of field_from_bytes_32_trunc against existing methods\n // Bytes representing 0x543e0a6642ffeb8039296861765a53407bba62bd1c97ca43374de950bbe0a7\n let inputs = [\n 84, 62, 10, 102, 66, 255, 235, 128, 57, 41, 104, 97, 118, 90, 83, 64, 123, 186, 98, 189, 28, 151, 202, 67, 55, 77, 233, 80, 187, 224, 167\n ];\n let field = field_from_bytes(inputs, true);\n let return_bytes = field.to_be_bytes(31);\n for i in 0..31 {\n assert_eq(inputs[i], return_bytes[i]);\n }\n // 32 bytes - we remove the final byte, and check it matches the field\n let inputs2 = [\n 84, 62, 10, 102, 66, 255, 235, 128, 57, 41, 104, 97, 118, 90, 83, 64, 123, 186, 98, 189, 28, 151, 202, 67, 55, 77, 233, 80, 187, 224, 167, 158\n ];\n let field2 = field_from_bytes_32_trunc(inputs2);\n let return_bytes2 = field.to_be_bytes(31);\n\n for i in 0..31 {\n assert_eq(return_bytes2[i], return_bytes[i]);\n }\n assert_eq(field2, field);\n}\n\n#[test]\nunconstrained fn max_field_test() {\n // Tests the hardcoded value in constants.nr vs underlying modulus\n // NB: We can't use 0-1 in constants.nr as it will be transpiled incorrectly to ts and sol constants files\n let max_value = crate::constants::MAX_FIELD_VALUE;\n assert_eq(max_value, 0 - 1);\n // modulus == 0 is tested elsewhere, so below is more of a sanity check\n let max_bytes = max_value.to_be_bytes(32);\n let mod_bytes = std::field::modulus_be_bytes();\n for i in 0..31 {\n assert_eq(max_bytes[i], mod_bytes[i]);\n }\n assert_eq(max_bytes[31], mod_bytes[31] - 1);\n}\n"},"297":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/address/aztec_address.nr","source":"use crate::{\n crate::address::{eth_address::EthAddress, partial_address::PartialAddress, public_keys_hash::PublicKeysHash},\n constants::{AZTEC_ADDRESS_LENGTH, GENERATOR_INDEX__CONTRACT_ADDRESS_V1},\n contract_class_id::ContractClassId, hash::poseidon2_hash,\n traits::{Empty, FromField, ToField, Serialize, Deserialize}, utils\n};\n\n// Aztec address\nstruct AztecAddress {\n inner : Field\n}\n\nimpl Eq for AztecAddress {\n fn eq(self, other : Self) -> bool {\n self.to_field() == other.to_field()\n }\n}\n\nimpl Empty for AztecAddress {\n fn empty() -> Self {\n Self {\n inner : 0\n }\n }\n}\n\nimpl ToField for AztecAddress {\n fn to_field(self) -> Field {\n self.inner\n }\n}\n\nimpl FromField for AztecAddress {\n fn from_field(value: Field) -> AztecAddress {\n AztecAddress { inner: value }\n }\n}\n\nimpl Serialize<AZTEC_ADDRESS_LENGTH> for AztecAddress {\n fn serialize(self: Self) -> [Field; AZTEC_ADDRESS_LENGTH] {\n [self.to_field()]\n }\n}\n\nimpl Deserialize<AZTEC_ADDRESS_LENGTH> for AztecAddress {\n fn deserialize(fields: [Field; AZTEC_ADDRESS_LENGTH]) -> Self {\n FromField::from_field(fields[0])\n }\n}\n\nimpl AztecAddress {\n pub fn zero() -> Self {\n Self { inner: 0 }\n }\n\n pub fn compute(pub_keys_hash: PublicKeysHash, partial_address: PartialAddress) -> AztecAddress {\n AztecAddress::from_field(\n poseidon2_hash([pub_keys_hash.to_field(), partial_address.to_field(), GENERATOR_INDEX__CONTRACT_ADDRESS_V1])\n )\n }\n\n pub fn is_zero(self) -> bool {\n self.inner == 0\n }\n\n pub fn assert_is_zero(self) {\n assert(self.to_field() == 0);\n }\n\n pub fn conditional_assign(predicate: bool, lhs: Self, rhs: Self) -> Self {\n let result = utils::conditional_assign(predicate, rhs.to_field(), lhs.to_field());\n Self { inner: result }\n }\n}\n\n#[test]\nfn compute_address_from_partial_and_pub_keys_hash() {\n let pub_keys_hash = PublicKeysHash::from_field(1);\n let partial_address = PartialAddress::from_field(2);\n\n let address = AztecAddress::compute(pub_keys_hash, partial_address);\n let expected_computed_address_from_partial_and_pubkey = 0x1b6ead051e7b42665064ca6cf1ec77da0a36d86e00d1ff6e44077966c0c3a9fa;\n assert(address.to_field() == expected_computed_address_from_partial_and_pubkey);\n}\n\n#[test]\nfn from_field_to_field() {\n let address = AztecAddress { inner: 37 };\n assert_eq(FromField::from_field(address.to_field()), address);\n}\n\n#[test]\nfn serde() {\n let address = AztecAddress { inner: 37 };\n assert_eq(Deserialize::deserialize(address.serialize()), address);\n}\n"},"32":{"path":"std/hash/poseidon2.nr","source":"use crate::hash::Hasher;\nuse crate::default::Default;\n\nglobal RATE: u32 = 3;\n\nstruct Poseidon2 {\n cache: [Field;3],\n state: [Field;4],\n cache_size: u32,\n squeeze_mode: bool, // 0 => absorb, 1 => squeeze\n}\n\nimpl Poseidon2 {\n #[no_predicates]\n pub fn hash<let N: u32>(input: [Field; N], message_size: u32) -> Field {\n if message_size == N {\n Poseidon2::hash_internal(input, N, false)\n } else {\n Poseidon2::hash_internal(input, message_size, true)\n }\n }\n\n fn new(iv: Field) -> Poseidon2 {\n let mut result = Poseidon2 { cache: [0; 3], state: [0; 4], cache_size: 0, squeeze_mode: false };\n result.state[RATE] = iv;\n result\n }\n\n fn perform_duplex(&mut self) -> [Field; RATE] {\n // zero-pad the cache\n for i in 0..RATE {\n if i >= self.cache_size {\n self.cache[i] = 0;\n }\n }\n // add the cache into sponge state\n for i in 0..RATE {\n self.state[i] += self.cache[i];\n }\n self.state = crate::hash::poseidon2_permutation(self.state, 4);\n // return `RATE` number of field elements from the sponge state.\n let mut result = [0; RATE];\n for i in 0..RATE {\n result[i] = self.state[i];\n }\n result\n }\n\n fn absorb(&mut self, input: Field) {\n if (!self.squeeze_mode) & (self.cache_size == RATE) {\n // If we're absorbing, and the cache is full, apply the sponge permutation to compress the cache\n let _ = self.perform_duplex();\n self.cache[0] = input;\n self.cache_size = 1;\n } else if (!self.squeeze_mode) & (self.cache_size != RATE) {\n // If we're absorbing, and the cache is not full, add the input into the cache\n self.cache[self.cache_size] = input;\n self.cache_size += 1;\n } else if self.squeeze_mode {\n // If we're in squeeze mode, switch to absorb mode and add the input into the cache.\n // N.B. I don't think this code path can be reached?!\n self.cache[0] = input;\n self.cache_size = 1;\n self.squeeze_mode = false;\n }\n }\n\n fn squeeze(&mut self) -> Field {\n if self.squeeze_mode & (self.cache_size == 0) {\n // If we're in squeze mode and the cache is empty, there is nothing left to squeeze out of the sponge!\n // Switch to absorb mode.\n self.squeeze_mode = false;\n self.cache_size = 0;\n }\n if !self.squeeze_mode {\n // If we're in absorb mode, apply sponge permutation to compress the cache, populate cache with compressed\n // state and switch to squeeze mode. Note: this code block will execute if the previous `if` condition was\n // matched\n let new_output_elements = self.perform_duplex();\n self.squeeze_mode = true;\n for i in 0..RATE {\n self.cache[i] = new_output_elements[i];\n }\n self.cache_size = RATE;\n }\n // By this point, we should have a non-empty cache. Pop one item off the top of the cache and return it.\n let result = self.cache[0];\n for i in 1..RATE {\n if i < self.cache_size {\n self.cache[i - 1] = self.cache[i];\n }\n }\n self.cache_size -= 1;\n self.cache[self.cache_size] = 0;\n result\n }\n\n fn hash_internal<let N: u32>(input: [Field; N], in_len: u32, is_variable_length: bool) -> Field {\n let two_pow_64 = 18446744073709551616;\n let iv : Field = (in_len as Field) * two_pow_64;\n let mut sponge = Poseidon2::new(iv);\n for i in 0..input.len() {\n if i < in_len {\n sponge.absorb(input[i]);\n }\n }\n\n // In the case where the hash preimage is variable-length, we append `1` to the end of the input, to distinguish\n // from fixed-length hashes. (the combination of this additional field element + the hash IV ensures\n // fixed-length and variable-length hashes do not collide)\n if is_variable_length {\n sponge.absorb(1);\n }\n sponge.squeeze()\n }\n}\n\nstruct Poseidon2Hasher{\n _state: [Field],\n}\n\nimpl Hasher for Poseidon2Hasher {\n fn finish(self) -> Field {\n let iv : Field = (self._state.len() as Field)*18446744073709551616; // iv = (self._state.len() << 64)\n let mut sponge = Poseidon2::new(iv);\n for i in 0..self._state.len() {\n sponge.absorb(self._state[i]);\n }\n sponge.squeeze()\n }\n\n fn write(&mut self, input: Field){\n self._state = self._state.push_back(input);\n }\n}\n\nimpl Default for Poseidon2Hasher {\n fn default() -> Self {\n Poseidon2Hasher {\n _state: &[],\n }\n }\n}\n"},"368":{"path":"/usr/src/noir-projects/noir-contracts/contracts/key_registry_contract/src/main.nr","source":"contract KeyRegistry {\n use dep::authwit::auth::assert_current_call_valid_authwit_public;\n\n use dep::aztec::{\n keys::PublicKeys, state_vars::{SharedMutable, Map},\n protocol_types::{point::Point, address::{AztecAddress, PartialAddress}}\n };\n\n global KEY_ROTATION_DELAY = 5;\n\n #[aztec(storage)]\n struct Storage {\n // The following stores a hash of individual master public keys\n // If you change slots of vars below, you must update the slots in `SharedMutablePrivateGetter` in aztec-nr/keys.\n // We store x and y coordinates in individual shared mutables as shared mutable currently supports only 1 field\n npk_m_x_registry: Map<AztecAddress, SharedMutable<Field, KEY_ROTATION_DELAY>>,\n npk_m_y_registry: Map<AztecAddress, SharedMutable<Field, KEY_ROTATION_DELAY>>,\n\n ivpk_m_x_registry: Map<AztecAddress, SharedMutable<Field, KEY_ROTATION_DELAY>>,\n ivpk_m_y_registry: Map<AztecAddress, SharedMutable<Field, KEY_ROTATION_DELAY>>,\n \n ovpk_m_x_registry: Map<AztecAddress, SharedMutable<Field, KEY_ROTATION_DELAY>>,\n ovpk_m_y_registry: Map<AztecAddress, SharedMutable<Field, KEY_ROTATION_DELAY>>,\n \n tpk_m_x_registry: Map<AztecAddress, SharedMutable<Field, KEY_ROTATION_DELAY>>,\n tpk_m_y_registry: Map<AztecAddress, SharedMutable<Field, KEY_ROTATION_DELAY>>,\n }\n\n #[aztec(public)]\n fn rotate_npk_m(address: AztecAddress, new_npk_m: Point, nonce: Field) {\n // TODO: (#6137)\n if (!address.eq(context.msg_sender())) {\n assert_current_call_valid_authwit_public(&mut context, address);\n } else {\n assert(nonce == 0, \"invalid nonce\");\n }\n\n let npk_m_x_registry = storage.npk_m_x_registry.at(address);\n let npk_m_y_registry = storage.npk_m_y_registry.at(address);\n npk_m_x_registry.schedule_value_change(new_npk_m.x);\n npk_m_y_registry.schedule_value_change(new_npk_m.y);\n }\n\n // We need to have two separate register functions because a single one would produce too many storage writes, since\n // each SharedMutable.schedule_value_change call results in 5 writes (pre, post, block_of_change, delay and hash),\n // totaling 40 writes, while the kernels only accept up to 32 writes.\n // Once SharedMutable accepts multi-field values, we can have a single state variable hold all keys, and that way\n // also have a single block of change, hash, and delay.\n // TODO (#5491): make this be a single function with a single schedule call.\n\n #[aztec(public)]\n fn register_npk_and_ivpk(address: AztecAddress, partial_address: PartialAddress, keys: PublicKeys) {\n let computed_address = AztecAddress::compute(keys.hash(), partial_address);\n\n assert(computed_address.eq(address), \"Computed address does not match supplied address\");\n\n let npk_m_x_registry = storage.npk_m_x_registry.at(address);\n let npk_m_y_registry = storage.npk_m_y_registry.at(address);\n let ivpk_m_x_registry = storage.ivpk_m_x_registry.at(address);\n let ivpk_m_y_registry = storage.ivpk_m_y_registry.at(address);\n\n npk_m_x_registry.schedule_value_change(keys.npk_m.x);\n npk_m_y_registry.schedule_value_change(keys.npk_m.y);\n ivpk_m_x_registry.schedule_value_change(keys.ivpk_m.x);\n ivpk_m_y_registry.schedule_value_change(keys.ivpk_m.y);\n }\n\n #[aztec(public)]\n fn register_ovpk_and_tpk(address: AztecAddress, partial_address: PartialAddress, keys: PublicKeys) {\n let computed_address = AztecAddress::compute(keys.hash(), partial_address);\n\n assert(computed_address.eq(address), \"Computed address does not match supplied address\");\n\n let ovpk_m_x_registry = storage.ovpk_m_x_registry.at(address);\n let ovpk_m_y_registry = storage.ovpk_m_y_registry.at(address);\n let tpk_m_x_registry = storage.tpk_m_x_registry.at(address);\n let tpk_m_y_registry = storage.tpk_m_y_registry.at(address);\n\n ovpk_m_x_registry.schedule_value_change(keys.ovpk_m.x);\n ovpk_m_y_registry.schedule_value_change(keys.ovpk_m.y);\n tpk_m_x_registry.schedule_value_change(keys.tpk_m.x);\n tpk_m_y_registry.schedule_value_change(keys.tpk_m.y);\n }\n}\n"},"52":{"path":"std/uint128.nr","source":"use crate::ops::{Add, Sub, Mul, Div, Rem, Not, BitOr, BitAnd, BitXor, Shl, Shr};\nuse crate::cmp::{Eq, Ord, Ordering};\nuse crate::println;\n\nglobal pow64 : Field = 18446744073709551616; //2^64;\nglobal pow63 : Field = 9223372036854775808; // 2^63;\nstruct U128 {\n lo: Field,\n hi: Field,\n}\n\nimpl U128 {\n\n pub fn from_u64s_le(lo: u64, hi: u64) -> U128 {\n // in order to handle multiplication, we need to represent the product of two u64 without overflow\n assert(crate::field::modulus_num_bits() as u32 > 128);\n U128 { lo: lo as Field, hi: hi as Field }\n }\n\n pub fn from_u64s_be(hi: u64, lo: u64) -> U128 {\n U128::from_u64s_le(lo, hi)\n }\n\n pub fn zero() -> U128 {\n U128 { lo: 0, hi: 0 }\n }\n\n pub fn one() -> U128 {\n U128 { lo: 1, hi: 0 }\n }\n pub fn from_le_bytes(bytes: [u8; 16]) -> U128 {\n let mut lo = 0;\n let mut base = 1;\n for i in 0..8 {\n lo += (bytes[i] as Field)*base;\n base *= 256;\n }\n let mut hi = 0;\n base = 1;\n for i in 8..16 {\n hi += (bytes[i] as Field)*base;\n base *= 256;\n }\n U128 { lo, hi }\n }\n\n pub fn to_be_bytes(self: Self) -> [u8; 16] {\n let lo = self.lo.to_be_bytes(8);\n let hi = self.hi.to_be_bytes(8);\n let mut bytes = [0; 16];\n for i in 0..8 {\n bytes[i] = hi[i];\n bytes[i+8] = lo[i];\n }\n bytes\n }\n\n pub fn to_le_bytes(self: Self) -> [u8; 16] {\n let lo = self.lo.to_le_bytes(8);\n let hi = self.hi.to_le_bytes(8);\n let mut bytes = [0; 16];\n for i in 0..8 {\n bytes[i] = lo[i];\n bytes[i+8] = hi[i];\n }\n bytes\n }\n\n pub fn from_hex<let N: u32>(hex: str<N>) -> U128 {\n let N = N as u32;\n let bytes = hex.as_bytes();\n // string must starts with \"0x\"\n assert((bytes[0] == 48) & (bytes[1] == 120), \"Invalid hexadecimal string\");\n assert(N < 35, \"Input does not fit into a U128\");\n\n let mut lo = 0;\n let mut hi = 0;\n let mut base = 1;\n if N <= 18 {\n for i in 0..N - 2 {\n lo += U128::decode_ascii(bytes[N-i-1])*base;\n base = base*16;\n }\n } else {\n for i in 0..16 {\n lo += U128::decode_ascii(bytes[N-i-1])*base;\n base = base*16;\n }\n base = 1;\n for i in 17..N - 1 {\n hi += U128::decode_ascii(bytes[N-i])*base;\n base = base*16;\n }\n }\n U128 { lo: lo as Field, hi: hi as Field }\n }\n\n unconstrained fn uconstrained_check_is_upper_ascii(ascii: u8) -> bool {\n ((ascii >= 65) & (ascii <= 90)) // Between 'A' and 'Z'\n }\n\n fn decode_ascii(ascii: u8) -> Field {\n if ascii < 58 {\n ascii - 48\n } else {\n let ascii = ascii + 32 * (U128::uconstrained_check_is_upper_ascii(ascii) as u8);\n assert(ascii >= 97); // enforce >= 'a'\n assert(ascii <= 102); // enforce <= 'f'\n ascii - 87\n } as Field\n }\n\n // TODO: Replace with a faster version. \n // A circuit that uses this function can be slow to compute\n // (we're doing up to 127 calls to compute the quotient)\n unconstrained fn unconstrained_div(self: Self, b: U128) -> (U128, U128) {\n if b == U128::zero() {\n // Return 0,0 to avoid eternal loop\n (U128::zero(), U128::zero())\n } else if self < b {\n (U128::zero(), self)\n } else if self == b {\n (U128::one(), U128::zero())\n } else {\n let (q,r) = if b.hi as u64 >= pow63 as u64 {\n // The result of multiplication by 2 would overflow\n (U128::zero(), self)\n } else {\n self.unconstrained_div(b * U128::from_u64s_le(2, 0))\n };\n let q_mul_2 = q * U128::from_u64s_le(2, 0);\n if r < b {\n (q_mul_2, r)\n } else {\n (q_mul_2 + U128::one(), r - b)\n }\n }\n }\n\n pub fn from_integer<T>(i: T) -> U128 {\n let f = crate::as_field(i);\n // Reject values which would overflow a u128\n f.assert_max_bit_size(128);\n let lo = f as u64 as Field;\n let hi = (f - lo) / pow64;\n U128 { lo, hi }\n }\n\n pub fn to_integer<T>(self) -> T {\n crate::from_field(self.lo + self.hi * pow64)\n }\n\n fn wrapping_mul(self: Self, b: U128) -> U128 {\n let low = self.lo * b.lo;\n let lo = low as u64 as Field;\n let carry = (low - lo) / pow64;\n let high = self.lo * b.hi + self.hi * b.lo + carry;\n let hi = high as u64 as Field;\n U128 { lo, hi }\n }\n}\n\nimpl Add for U128 {\n fn add(self: Self, b: U128) -> U128 {\n let low = self.lo + b.lo;\n let lo = low as u64 as Field;\n let carry = (low - lo) / pow64; \n let high = self.hi + b.hi + carry;\n let hi = high as u64 as Field;\n assert(hi == high, \"attempt to add with overflow\");\n U128 {\n lo,\n hi,\n }\n }\n}\n\nimpl Sub for U128 {\n fn sub(self: Self, b: U128) -> U128 {\n let low = pow64 + self.lo - b.lo;\n let lo = low as u64 as Field;\n let borrow = (low == lo) as Field;\n let high = self.hi - b.hi - borrow;\n let hi = high as u64 as Field;\n assert(hi == high, \"attempt to subtract with underflow\");\n U128 {\n lo,\n hi,\n }\n }\n}\n\nimpl Mul for U128 {\n fn mul(self: Self, b: U128) -> U128 {\n assert(self.hi*b.hi == 0, \"attempt to multiply with overflow\");\n let low = self.lo*b.lo;\n let lo = low as u64 as Field;\n let carry = (low - lo) / pow64;\n let high = if crate::field::modulus_num_bits() as u32 > 196 {\n (self.lo+self.hi)*(b.lo+b.hi) - low + carry\n } else {\n self.lo*b.hi + self.hi*b.lo + carry\n };\n let hi = high as u64 as Field;\n assert(hi == high, \"attempt to multiply with overflow\");\n U128 {\n lo,\n hi,\n }\n }\n}\n\nimpl Div for U128 {\n fn div(self: Self, b: U128) -> U128 {\n let (q,r) = self.unconstrained_div(b);\n let a = b * q + r;\n assert_eq(self, a);\n assert(r < b);\n q\n }\n}\n\nimpl Rem for U128 {\n fn rem(self: Self, b: U128) -> U128 {\n let (q,r) = self.unconstrained_div(b);\n let a = b * q + r;\n assert_eq(self, a);\n assert(r < b);\n r\n }\n}\n\nimpl Eq for U128 {\n fn eq(self: Self, b: U128) -> bool {\n (self.lo == b.lo) & (self.hi == b.hi)\n }\n}\n\nimpl Ord for U128 {\n fn cmp(self, other: Self) -> Ordering {\n let hi_ordering = (self.hi as u64).cmp((other.hi as u64));\n let lo_ordering = (self.lo as u64).cmp((other.lo as u64));\n \n if hi_ordering == Ordering::equal() {\n lo_ordering\n } else {\n hi_ordering\n }\n }\n}\n\nimpl Not for U128 { \n fn not(self) -> U128 {\n U128 {\n lo: (!(self.lo as u64)) as Field,\n hi: (!(self.hi as u64)) as Field\n }\n }\n}\n\nimpl BitOr for U128 { \n fn bitor(self, other: U128) -> U128 {\n U128 {\n lo: ((self.lo as u64) | (other.lo as u64)) as Field,\n hi: ((self.hi as u64) | (other.hi as u64)) as Field\n }\n }\n}\n\nimpl BitAnd for U128 {\n fn bitand(self, other: U128) -> U128 { \n U128 {\n lo: ((self.lo as u64) & (other.lo as u64)) as Field,\n hi: ((self.hi as u64) & (other.hi as u64)) as Field\n }\n }\n}\n\nimpl BitXor for U128 {\n fn bitxor(self, other: U128) -> U128 { \n U128 {\n lo: ((self.lo as u64) ^ (other.lo as u64)) as Field,\n hi: ((self.hi as u64) ^ (other.hi as u64)) as Field\n }\n }\n}\n\nimpl Shl for U128 { \n fn shl(self, other: u8) -> U128 { \n assert(other < 128, \"attempt to shift left with overflow\");\n let exp_bits = (other as Field).to_be_bits(7);\n\n let mut r: Field = 2;\n let mut y: Field = 1;\n for i in 1..8 {\n y = (exp_bits[7-i] as Field) * (r * y) + (1 - exp_bits[7-i] as Field) * y;\n r *= r;\n }\n self.wrapping_mul(U128::from_integer(y))\n } \n}\n\nimpl Shr for U128 { \n fn shr(self, other: u8) -> U128 { \n assert(other < 128, \"attempt to shift right with overflow\");\n let exp_bits = (other as Field).to_be_bits(7);\n\n let mut r: Field = 2;\n let mut y: Field = 1;\n for i in 1..8 {\n y = (exp_bits[7-i] as Field) * (r * y) + (1 - exp_bits[7-i] as Field) * y;\n r *= r;\n }\n self / U128::from_integer(y)\n } \n}\n\nmod tests {\n use crate::uint128::{U128, pow64, pow63};\n\n #[test]\n fn test_not(lo: u64, hi: u64) {\n let num = U128::from_u64s_le(lo, hi);\n let not_num = num.not();\n\n assert_eq(not_num.hi, (hi.not() as Field));\n assert_eq(not_num.lo, (lo.not() as Field));\n\n let not_not_num = not_num.not();\n assert_eq(num, not_not_num);\n }\n #[test]\n fn test_construction() {\n // Check little-endian u64 is inversed with big-endian u64 construction\n let a = U128::from_u64s_le(2, 1);\n let b = U128::from_u64s_be(1, 2);\n assert_eq(a, b);\n // Check byte construction is equivalent\n let c = U128::from_le_bytes([0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]);\n let d = U128::from_u64s_le(0x0706050403020100, 0x0f0e0d0c0b0a0908);\n assert_eq(c, d);\n }\n #[test]\n fn test_byte_decomposition() {\n let a = U128::from_u64s_le(0x0706050403020100, 0x0f0e0d0c0b0a0908);\n // Get big-endian and little-endian byte decompostions\n let le_bytes_a= a.to_le_bytes();\n let be_bytes_a= a.to_be_bytes();\n\n // Check equivalence\n for i in 0..16 {\n assert_eq(le_bytes_a[i], be_bytes_a[15 - i]);\n }\n // Reconstruct U128 from byte decomposition\n let b= U128::from_le_bytes(le_bytes_a);\n // Check that it's the same element\n assert_eq(a, b);\n }\n #[test]\n fn test_hex_constuction() {\n let a = U128::from_u64s_le(0x1, 0x2);\n let b = U128::from_hex(\"0x20000000000000001\");\n assert_eq(a, b);\n\n let c= U128::from_hex(\"0xffffffffffffffffffffffffffffffff\");\n let d= U128::from_u64s_le(0xffffffffffffffff, 0xffffffffffffffff);\n assert_eq(c, d);\n\n let e= U128::from_hex(\"0x00000000000000000000000000000000\");\n let f= U128::from_u64s_le(0, 0);\n assert_eq(e, f);\n }\n\n // Ascii decode tests\n\n #[test]\n fn test_ascii_decode_correct_range() {\n // '0'..'9' range\n for i in 0..10 {\n let decoded= U128::decode_ascii(48 + i);\n assert_eq(decoded, i as Field);\n }\n // 'A'..'F' range\n for i in 0..6 {\n let decoded = U128::decode_ascii(65 + i);\n assert_eq(decoded, (i + 10) as Field);\n }\n // 'a'..'f' range\n for i in 0..6 {\n let decoded = U128::decode_ascii(97 + i);\n assert_eq(decoded, (i + 10) as Field);\n }\n }\n\n #[test(should_fail)]\n fn test_ascii_decode_range_less_than_48_fails_0() {\n crate::println(U128::decode_ascii(0));\n }\n #[test(should_fail)]\n fn test_ascii_decode_range_less_than_48_fails_1() {\n crate::println(U128::decode_ascii(47));\n }\n\n #[test(should_fail)]\n fn test_ascii_decode_range_58_64_fails_0() {\n let _ = U128::decode_ascii(58);\n }\n #[test(should_fail)]\n fn test_ascii_decode_range_58_64_fails_1() {\n let _ = U128::decode_ascii(64);\n }\n #[test(should_fail)]\n fn test_ascii_decode_range_71_96_fails_0() {\n let _ = U128::decode_ascii(71);\n }\n #[test(should_fail)]\n fn test_ascii_decode_range_71_96_fails_1() {\n let _ = U128::decode_ascii(96);\n }\n #[test(should_fail)]\n fn test_ascii_decode_range_greater_than_102_fails() {\n let _ = U128::decode_ascii(103);\n }\n\n #[test(should_fail)]\n fn test_ascii_decode_regression() {\n // This code will actually fail because of ascii_decode,\n // but in the past it was possible to create a value > (1<<128)\n let a = U128::from_hex(\"0x~fffffffffffffffffffffffffffffff\");\n let b:Field= a.to_integer();\n let c= b.to_le_bytes(17);\n assert(c[16] != 0);\n }\n\n #[test]\n fn test_unconstrained_div() {\n // Test the potential overflow case\n let a= U128::from_u64s_le(0x0, 0xffffffffffffffff);\n let b= U128::from_u64s_le(0x0, 0xfffffffffffffffe);\n let c= U128::one();\n let d= U128::from_u64s_le(0x0, 0x1);\n let (q,r) = a.unconstrained_div(b);\n assert_eq(q, c);\n assert_eq(r, d);\n\n let a = U128::from_u64s_le(2, 0);\n let b = U128::one();\n // Check the case where a is a multiple of b\n let (c,d ) = a.unconstrained_div(b);\n assert_eq((c, d), (a, U128::zero()));\n\n // Check where b is a multiple of a\n let (c,d) = b.unconstrained_div(a);\n assert_eq((c, d), (U128::zero(), b));\n\n // Dividing by zero returns 0,0\n let a = U128::from_u64s_le(0x1, 0x0);\n let b = U128::zero();\n let (c,d)= a.unconstrained_div(b);\n assert_eq((c, d), (U128::zero(), U128::zero()));\n\n // Dividing 1<<127 by 1<<127 (special case)\n let a = U128::from_u64s_le(0x0, pow63 as u64);\n let b = U128::from_u64s_le(0x0, pow63 as u64);\n let (c,d )= a.unconstrained_div(b);\n assert_eq((c, d), (U128::one(), U128::zero()));\n }\n\n #[test]\n fn integer_conversions() {\n // Maximum\n let start:Field = 0xffffffffffffffffffffffffffffffff;\n let a = U128::from_integer(start);\n let end = a.to_integer();\n assert_eq(start, end);\n\n // Minimum\n let start:Field = 0x0;\n let a = U128::from_integer(start);\n let end = a.to_integer();\n assert_eq(start, end);\n\n // Low limb\n let start:Field = 0xffffffffffffffff;\n let a = U128::from_integer(start);\n let end = a.to_integer();\n assert_eq(start, end);\n\n // High limb\n let start:Field = 0xffffffffffffffff0000000000000000;\n let a = U128::from_integer(start);\n let end = a.to_integer();\n assert_eq(start, end);\n }\n\n #[test]\n fn integer_conversions_fuzz(lo: u64, hi: u64) {\n let start: Field = (lo as Field) + pow64 * (hi as Field);\n let a = U128::from_integer(start);\n let end = a.to_integer();\n assert_eq(start, end);\n }\n\n #[test]\n fn test_wrapping_mul() {\n // 1*0==0\n assert_eq(U128::zero(), U128::zero().wrapping_mul(U128::one()));\n\n // 0*1==0\n assert_eq(U128::zero(), U128::one().wrapping_mul(U128::zero()));\n\n // 1*1==1\n assert_eq(U128::one(), U128::one().wrapping_mul(U128::one()));\n\n // 0 * ( 1 << 64 ) == 0\n assert_eq(U128::zero(), U128::zero().wrapping_mul(U128::from_u64s_le(0, 1)));\n\n // ( 1 << 64 ) * 0 == 0\n assert_eq(U128::zero(), U128::from_u64s_le(0, 1).wrapping_mul(U128::zero()));\n\n // 1 * ( 1 << 64 ) == 1 << 64\n assert_eq(U128::from_u64s_le(0, 1), U128::from_u64s_le(0, 1).wrapping_mul(U128::one()));\n\n // ( 1 << 64 ) * 1 == 1 << 64\n assert_eq(U128::from_u64s_le(0, 1), U128::one().wrapping_mul(U128::from_u64s_le(0, 1)));\n\n // ( 1 << 64 ) * ( 1 << 64 ) == 1 << 64\n assert_eq(U128::zero(), U128::from_u64s_le(0, 1).wrapping_mul(U128::from_u64s_le(0, 1)));\n // -1 * -1 == 1\n assert_eq(\n U128::one(), U128::from_u64s_le(0xffffffffffffffff, 0xffffffffffffffff).wrapping_mul(U128::from_u64s_le(0xffffffffffffffff, 0xffffffffffffffff))\n );\n }\n}\n"},"59":{"path":"/usr/src/noir-projects/aztec-nr/authwit/src/auth.nr","source":"use dep::aztec::protocol_types::{\n abis::function_selector::FunctionSelector, address::AztecAddress,\n constants::{\n GENERATOR_INDEX__AUTHWIT_INNER, GENERATOR_INDEX__AUTHWIT_OUTER, GENERATOR_INDEX__AUTHWIT_NULLIFIER,\n CANONICAL_AUTH_REGISTRY_ADDRESS\n},\n hash::pedersen_hash\n};\nuse dep::aztec::{prelude::Deserialize, context::{PrivateContext, PublicContext, gas::GasOpts}, hash::hash_args_array};\n\n/**\n * Authenticaion witness helper library\n *\n * Authentication Witness is a scheme for authenticating actions on Aztec, so users can allow third-parties \n * (e.g. protocols or other users) to execute an action on their behalf.\n * \n * This library provides helper functions to manage such witnesses.\n * The authentication witness, is some \"witness\" (data) that authenticates a `message_hash`.\n * The simplest example of an authentication witness, is a signature. The signature is the \"evidence\",\n * that the signer has seen the message, agrees with it, and has allowed it.\n * It does not need to be a signature. It could be any kind of \"proof\" that the message is allowed.\n * Another proof could be knowing some kind of secret, or having some kind of \"token\" that allows the message.\n *\n * The `message_hash` is a hash of the following structure:\n * hash(consumer, chain_id, version, inner_hash)\n * - consumer: the address of the contract that is \"consuming\" the message,\n * - chain_id: the chain id of the chain that the message is being consumed on,\n * - version: the version of the chain that the message is being consumed on,\n * - inner_hash: the hash of the \"inner\" message that is being consumed, this is the \"actual\" message or action.\n *\n * While the `inner_hash` could be anything, such as showing you signed a specific message, it will often be \n * a hash of the \"action\" to approve, along with who made the call. As part of this library, we provide a few \n * helper functions to deal with such messages.\n *\n * For example, we provide helper function that is used for checking that the message is an encoding of the current call.\n * This can be used to let some contract \"allow\" another contract to act on its behalf, as long as it can \n * show that it is acting on behalf of the contract.\n *\n * If we take a case of allowing a contract to transfer tokens on behalf of an account, the `inner_hash` can be \n * derived as:\n * inner_hash = hash(caller, \"transfer\", hash(to, amount))\n * \n * Where the `caller` would be the address of the contract that is trying to transfer the tokens, and `to` and `amount`\n * the arguments for the transfer. \n * \n * Note that we have both a `caller` and a `consumer`, the `consumer` will be the contract that is consuming the message,\n * in the case of the transfer, it would be the `Token` contract itself, while the caller, will be the actor that is \n * allowed to transfer the tokens.\n *\n *\n * The authentication mechanism works differently in public and private contexts. In private, we recall that everything\n * is executed on the user's device, so we can use `oracles` to \"ask\" the user (not contract) for information. In public\n * we cannot do this, since it is executed by the sequencer (someone else). Therefore we can instead use a \"registry\"\n * to store the messages that we have approved.\n * \n * A simple example would be a \"token\" that is being \"pulled\" from one account into another. We will first outline \n * how this would look in private, and then in public later. \n *\n * Say that a user `Alice` wants to deposit some tokens into a DeFi protocol (say a DEX). \n * `Alice` would make a `deposit` transaction, that she is executing using her account contract. \n * The account would call the `DeFi` contract to execute `deposit`, which would try to pull funds from the `Token` \n * contract. Since the `DeFi` contract is trying to pull funds from an account that is not its own, it needs to \n * convince the `Token` contract that it is allowed to do so. \n * \n * This is where the authentication witness comes in! The `Token` contract computes a `message_hash` from the \n * `transfer` call, and then asks `Alice Account` contract to verify that the `DeFi` contract is allowed to \n * execute that call.\n * \n * `Alice Account` contract can then ask `Alice` if she wants to allow the `DeFi` contract to pull funds from her \n * account. If she does, she will sign the `message_hash` and return the signature to the `Alice Account` which\n * will validate it and return success to the `Token` contract which will then allow the `DeFi` contract to pull\n * funds from `Alice`.\n * \n * To ensure that the same \"approval\" cannot be used multiple times, we also compute a `nullifier` for the\n * authentication witness, and emit it from the `Token` contract (consumer).\n * \n * Note that we can do this flow as we are in private were we can do oracle calls out from contracts. \n * \n *\n * Person Contract Contract Contract\n * Alice Alice Account Token DeFi\n * | | | |\n * | Defi.deposit(Token, 1000) | |\n * |----------------->| | |\n * | | deposit(Token, 1000) |\n * | |---------------------------------------->|\n * | | | |\n * | | | transfer(Alice, Defi, 1000)\n * | | |<---------------------|\n * | | | |\n * | | Check if Defi may call transfer(Alice, Defi, 1000)\n * | |<-----------------| |\n * | | | |\n * | Please give me AuthWit for DeFi | |\n * | calling transfer(Alice, Defi, 1000) | |\n * |<-----------------| | |\n * | | | |\n * | | | |\n * | AuthWit for transfer(Alice, Defi, 1000) |\n * |----------------->| | |\n * | | AuthWit validity | |\n * | |----------------->| |\n * | | | |\n * | | throw if invalid AuthWit |\n * | | | |\n * | | emit AuthWit nullifier |\n * | | | |\n * | | transfer(Alice, Defi, 1000) |\n * | | | |\n * | | | |\n * | | | success |\n * | | |--------------------->|\n * | | | |\n * | | | |\n * | | | deposit(Token, 1000)\n * | | | |\n * | | | |\n *\n * \n * If we instead were in public, we cannot do the same flow. Instead we would use an authentication registry to store \n * the messages that we have approved. \n * \n * To approve a message, `Alice Account` can make a `set_authorized` call to the registry, to set a `message_hash`\n * as authorized. This is essentially a mapping from `message_hash` to `true` for `Alice Contract`. Every account\n * has its own map in the registry, so `Alice` cannot approve a message for `Bob`.\n *\n * The `Token` contract can then try to \"spend\" the approval by calling `consume` on the registry. If the message\n * was approved, the value is updated to `false`, and we return the success flag. For more information on the\n * registry, see `main.nr` in `auth_registry_contract`.\n *\n * Person Contract Contract Contract Contract\n * Alice Alice Account Registry Token DeFi\n * | | | | |\n * | Registry.set_authorized(..., true) | | |\n * |----------------->| | | |\n * | | set_authorized(..., true) | |\n * | |------------------->| | |\n * | | | | |\n * | | set authorized to true | |\n * | | | | |\n * | | | | |\n * | Defi.deposit(Token, 1000) | | |\n * |----------------->| | | |\n * | | deposit(Token, 1000) | |\n * | |-------------------------------------------------------------->|\n * | | | | |\n * | | | transfer(Alice, Defi, 1000) |\n * | | | |<---------------------|\n * | | | | |\n * | | | Check if Defi may call transfer(Alice, Defi, 1000)\n * | | |<------------------| |\n * | | | | |\n * | | throw if invalid AuthWit | |\n * | | | | |\n * | | | | |\n * | | set authorized to false | |\n * | | | | |\n * | | | | |\n * | | | AuthWit validity | |\n * | | |------------------>| |\n * | | | | |\n * | | | | transfer(Alice, Defi, 1000)\n * | | | |<-------------------->|\n * | | | | |\n * | | | | success |\n * | | | |--------------------->|\n * | | | | |\n * | | | | deposit(Token, 1000)\n * | | | | |\n *\n *\n * --- FAQ ---\n * Q: Why are we using a success flag of `keccak256(\"IS_VALID()\")` instead of just returning a boolean?\n * A: We want to make sure that we don't accidentally return `true` if there is a collision in the function selector.\n * By returning a hash of `IS_VALID()`, it becomes very unlikely that there is both a colission and we return \n * a success flag.\n * \n * Q: Why are we using static calls?\n * A: We are using static calls to ensure that the account contract cannot re-enter. If it was a normal call, it\n * could make a new call and do a re-entry attack. Using a static ensures that it cannot update any state.\n *\n * Q: Would it not be cheaper to use a nullifier instead of updating state in public?\n * A: At a quick glance, a public state update + nullifier is 96 bytes, but two state updates are 128, so it would be \n * cheaper to use a nullifier, if this is the way it would always be done. However, if both the approval and the \n * consumption is done in the same transaction, then we will be able to squash the updates (only final tx state diff is posted to DA), and now it is cheaper.\n * \n * Q: Why is the chain id and the version part of the message hash?\n * A: The chain id and the version is part of the message hash to ensure that the message is only valid on a specific\n * chain to avoid a case where the same message could be used across multiple chains. \n */\n\nglobal IS_VALID_SELECTOR = 0xabf64ad4; // 4 first bytes of keccak256(\"IS_VALID()\")\n\n/** \n * Assert that `on_behalf_of` have authorized the current call with a valid authentication witness\n * \n * Computing the `inner_hash` using the `msg_sender`, `selector` and `args_hash` and then making a call out to the \n * `on_behalf_of` contract to verify that the `inner_hash` is valid.\n * \n * @param on_behalf_of The address that have authorized the current call\n */\n// docs:start:assert_current_call_valid_authwit\npub fn assert_current_call_valid_authwit(context: &mut PrivateContext, on_behalf_of: AztecAddress) {\n let inner_hash = compute_inner_authwit_hash([context.msg_sender().to_field(), context.selector().to_field(), context.args_hash]);\n assert_inner_hash_valid_authwit(context, on_behalf_of, inner_hash);\n}\n// docs:end:assert_current_call_valid_authwit\n\n/** \n * Assert that a specific `inner_hash` is valid for the `on_behalf_of` address\n * \n * Used as an internal function for `assert_current_call_valid_authwit` and can be used as a standalone function when\n * the `inner_hash` is from a different source, e.g., say a block of text etc.\n * \n * @param on_behalf_of The address that have authorized the current call\n * @param inner_hash The hash of the message to authorize \n */\npub fn assert_inner_hash_valid_authwit(context: &mut PrivateContext, on_behalf_of: AztecAddress, inner_hash: Field) {\n // We perform a static call here and not a standard one to ensure that the account contract cannot re-enter.\n let result: Field = context.static_call_private_function(\n on_behalf_of,\n FunctionSelector::from_signature(\"verify_private_authwit(Field)\"),\n [inner_hash]\n ).unpack_into();\n assert(result == IS_VALID_SELECTOR, \"Message not authorized by account\");\n // Compute the nullifier, similar computation to the outer hash, but without the chain_id and version.\n // Those should already be handled in the verification, so we just need something to nullify, that allow same inner_hash for multiple actors.\n let nullifier = compute_authwit_nullifier(on_behalf_of, inner_hash);\n context.push_nullifier(nullifier, 0);\n}\n\n/** \n * Assert that `on_behalf_of` have authorized the current call in the authentication registry\n * \n * Computing the `inner_hash` using the `msg_sender`, `selector` and `args_hash` and then making a call out to the \n * `on_behalf_of` contract to verify that the `inner_hash` is valid.\n * \n * Note that the authentication registry will take the `msg_sender` into account as the consumer, so this will only\n * work if the `msg_sender` is the same as the `consumer` when the `message_hash` was inserted into the registry.\n * \n * @param on_behalf_of The address that have authorized the current call\n */\n// docs:start:assert_current_call_valid_authwit_public\npub fn assert_current_call_valid_authwit_public(context: &mut PublicContext, on_behalf_of: AztecAddress) {\n let inner_hash = compute_inner_authwit_hash(\n [(*context).msg_sender().to_field(), (*context).selector().to_field(), (*context).get_args_hash()]\n );\n assert_inner_hash_valid_authwit_public(context, on_behalf_of, inner_hash);\n}\n// docs:end:assert_current_call_valid_authwit_public\n\n/** \n * Assert that `on_behalf_of` have authorized a speicifc `inner_hash` in the authentication registry\n * \n * Computing the `inner_hash` using the `msg_sender`, `selector` and `args_hash` and then making a call out to the \n * `on_behalf_of` contract to verify that the `inner_hash` is valid.\n *\n * Note that the authentication registry will take the `msg_sender` into account as the consumer, so this will only\n * work if the `msg_sender` is the same as the `consumer` when the `message_hash` was inserted into the registry.\n * \n * @param on_behalf_of The address that have authorized the the `inner_hash`\n */\npub fn assert_inner_hash_valid_authwit_public(context: &mut PublicContext, on_behalf_of: AztecAddress, inner_hash: Field) {\n let result: Field = context.call_public_function(\n AztecAddress::from_field(CANONICAL_AUTH_REGISTRY_ADDRESS),\n FunctionSelector::from_signature(\"consume((Field),Field)\"),\n [on_behalf_of.to_field(), inner_hash].as_slice(),\n GasOpts::default()\n ).deserialize_into();\n assert(result == IS_VALID_SELECTOR, \"Message not authorized by account\");\n}\n\n/**\n * Compute the `message_hash` from a function call to be used by an authentication witness \n * \n * Useful for when you need a non-account contract to approve during execution. For example if you need a contract\n * to make a call to nested contract, e.g., contract A wants to exit token T to L1 using bridge B, so it needs to allow\n * B to transfer T on its behalf.\n * \n * @param caller The address of the contract that is calling the function, in the example above, this would be B\n * @param consumer The address of the contract that is consuming the message, in the example above, this would be T\n * @param chain_id The chain id of the chain that the message is being consumed on\n * @param version The version of the chain that the message is being consumed on\n * @param selector The function selector of the function that is being called\n * @param args The arguments of the function that is being called\n */\n// docs:start:compute_authwit_message_hash_from_call\npub fn compute_authwit_message_hash_from_call<let N: u32>(\n caller: AztecAddress,\n consumer: AztecAddress,\n chain_id: Field,\n version: Field,\n selector: FunctionSelector,\n args: [Field; N]\n) -> Field {\n let args_hash = hash_args_array(args);\n let inner_hash = compute_inner_authwit_hash([caller.to_field(), selector.to_field(), args_hash]);\n compute_authwit_message_hash(consumer, chain_id, version, inner_hash)\n}\n// docs:end:compute_authwit_message_hash_from_call\n\n/**\n * Computes the `inner_hash` of the authentication witness\n * \n * This is used internally, but also useful in cases where you want to compute the `inner_hash` for a specific message\n * that is not necessarily a call, but just some \"bytes\" or text.\n * \n * @param args The arguments to hash\n */\npub fn compute_inner_authwit_hash<let N: u32>(args: [Field; N]) -> Field {\n pedersen_hash(args, GENERATOR_INDEX__AUTHWIT_INNER)\n}\n\n/** \n * Computs the `authwit_nullifier` for a specific `on_behalf_of` and `inner_hash`\n * \n * Using the `on_behalf_of` and the `inner_hash` to ensure that the nullifier is siloed for a specific `on_behalf_of`.\n * \n * @param on_behalf_of The address that have authorized the the `inner_hash`\n * @param inner_hash The hash of the message to authorize\n */\npub fn compute_authwit_nullifier(on_behalf_of: AztecAddress, inner_hash: Field) -> Field {\n pedersen_hash(\n [on_behalf_of.to_field(), inner_hash],\n GENERATOR_INDEX__AUTHWIT_NULLIFIER\n )\n}\n\n/**\n * Computes the `message_hash` for the authentication witness\n * \n * @param consumer The address of the contract that is consuming the message\n * @param chain_id The chain id of the chain that the message is being consumed on\n * @param version The version of the chain that the message is being consumed on\n * @param inner_hash The hash of the \"inner\" message that is being consumed\n */\npub fn compute_authwit_message_hash(consumer: AztecAddress, chain_id: Field, version: Field, inner_hash: Field) -> Field {\n pedersen_hash(\n [\n consumer.to_field(),\n chain_id,\n version,\n inner_hash\n ],\n GENERATOR_INDEX__AUTHWIT_OUTER\n )\n}\n\n/**\n * Helper function to set the authorization status of a message hash\n * \n * Wraps a public call to the authentication registry to set the authorization status of a `message_hash`\n * \n * @param message_hash The hash of the message to authorize\n * @param authorize True if the message should be authorized, false if it should be revoked\n */\npub fn set_authorized(context: &mut PublicContext, message_hash: Field, authorize: bool) {\n context.call_public_function(\n AztecAddress::from_field(CANONICAL_AUTH_REGISTRY_ADDRESS),\n FunctionSelector::from_signature(\"set_authorized(Field,bool)\"),\n [message_hash, authorize as Field].as_slice(),\n GasOpts::default()\n ).assert_empty();\n}\n\n/**\n * Helper function to reject all authwits\n * \n * Wraps a public call to the authentication registry to set the `reject_all` flag\n *\n * @param reject True if all authwits should be rejected, false otherwise \n */\npub fn set_reject_all(context: &mut PublicContext, reject: bool) {\n context.call_public_function(\n AztecAddress::from_field(CANONICAL_AUTH_REGISTRY_ADDRESS),\n FunctionSelector::from_signature(\"set_reject_all(bool)\"),\n [context.this_address().to_field(), reject as Field].as_slice(),\n GasOpts::default()\n ).assert_empty();\n}\n"},"71":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/keys/public_keys.nr","source":"use dep::protocol_types::{\n address::PublicKeysHash, constants::GENERATOR_INDEX__PUBLIC_KEYS_HASH, hash::poseidon2_hash,\n point::Point, traits::{Deserialize, Serialize, Empty, is_empty}\n};\nuse crate::keys::constants::{NUM_KEY_TYPES, NULLIFIER_INDEX, INCOMING_INDEX, OUTGOING_INDEX};\n\nglobal PUBLIC_KEYS_LENGTH = 12;\n\nstruct PublicKeys {\n npk_m: Point,\n ivpk_m: Point,\n ovpk_m: Point,\n tpk_m: Point,\n}\n\nimpl Empty for PublicKeys {\n fn empty() -> Self {\n PublicKeys {\n npk_m : Point::empty(),\n ivpk_m : Point::empty(),\n ovpk_m : Point::empty(),\n tpk_m : Point::empty()\n }\n }\n}\n\nimpl Eq for PublicKeys {\n fn eq(self, other: PublicKeys) -> bool {\n ( self.npk_m == other.npk_m ) &\n ( self.ivpk_m == other.ivpk_m ) &\n ( self.ovpk_m == other.ovpk_m ) &\n ( self.tpk_m == other.tpk_m )\n }\n}\n\nimpl PublicKeys {\n pub fn hash(self) -> PublicKeysHash {\n PublicKeysHash::from_field(\n if is_empty(self) {\n 0\n } else {\n poseidon2_hash(\n [\n self.npk_m.x,\n self.npk_m.y,\n self.npk_m.is_infinite as Field,\n self.ivpk_m.x,\n self.ivpk_m.y,\n self.ivpk_m.is_infinite as Field,\n self.ovpk_m.x,\n self.ovpk_m.y,\n self.ovpk_m.is_infinite as Field,\n self.tpk_m.x,\n self.tpk_m.y,\n self.tpk_m.is_infinite as Field,\n GENERATOR_INDEX__PUBLIC_KEYS_HASH\n ]\n )\n }\n )\n }\n\n pub fn get_key_by_index(self, index: Field) -> Point {\n assert(index as u8 < NUM_KEY_TYPES, \"Invalid key index\");\n if index == NULLIFIER_INDEX {\n self.npk_m\n } else if index == INCOMING_INDEX {\n self.ivpk_m\n } else if index == OUTGOING_INDEX {\n self.ovpk_m\n } else {\n self.tpk_m\n }\n }\n}\n\nimpl Serialize<PUBLIC_KEYS_LENGTH> for PublicKeys {\n fn serialize(self) -> [Field; PUBLIC_KEYS_LENGTH] {\n [\n self.npk_m.x,\n self.npk_m.y,\n self.npk_m.is_infinite as Field,\n self.ivpk_m.x,\n self.ivpk_m.y,\n self.ivpk_m.is_infinite as Field,\n self.ovpk_m.x,\n self.ovpk_m.y,\n self.ovpk_m.is_infinite as Field,\n self.tpk_m.x,\n self.tpk_m.y,\n self.tpk_m.is_infinite as Field\n ]\n }\n}\n\nimpl Deserialize<PUBLIC_KEYS_LENGTH> for PublicKeys {\n fn deserialize(serialized: [Field; PUBLIC_KEYS_LENGTH]) -> PublicKeys {\n PublicKeys {\n npk_m: Point { x:serialized[0], y:serialized[1], is_infinite: serialized[2] as bool },\n ivpk_m: Point { x:serialized[3], y: serialized[4], is_infinite: serialized[5] as bool },\n ovpk_m: Point { x:serialized[6], y: serialized[7], is_infinite: serialized[8] as bool },\n tpk_m: Point { x:serialized[9], y: serialized[10], is_infinite: serialized[11] as bool }\n }\n }\n}\n\n#[test]\nfn compute_public_keys_hash() {\n let keys = PublicKeys {\n npk_m: Point { x: 1, y: 2, is_infinite: false },\n ivpk_m: Point { x: 3, y: 4, is_infinite: false },\n ovpk_m: Point { x: 5, y: 6, is_infinite: false },\n tpk_m: Point { x: 7, y: 8, is_infinite: false }\n };\n\n let actual = keys.hash();\n let expected_public_keys_hash = 0x146f68c0e0ba4067d61a3304bbfdec0797d5df1357db6c01247c48bfb345c7d7;\n\n assert(actual.to_field() == expected_public_keys_hash);\n}\n\n#[test]\nfn compute_empty_hash() {\n let keys = PublicKeys::empty();\n\n let actual = keys.hash();\n let test_data_empty_hash = 0x0000000000000000000000000000000000000000000000000000000000000000;\n\n assert(actual.to_field() == test_data_empty_hash);\n}\n\n#[test]\nfn test_public_keys_serialization() {\n let keys = PublicKeys {\n npk_m: Point { x: 1, y: 2, is_infinite: false },\n ivpk_m: Point { x: 3, y: 4, is_infinite: false },\n ovpk_m: Point { x: 5, y: 6, is_infinite: false },\n tpk_m: Point { x: 7, y: 8, is_infinite: false }\n };\n\n let serialized = keys.serialize();\n let deserialized = PublicKeys::deserialize(serialized);\n\n assert_eq(keys.npk_m.x, deserialized.npk_m.x);\n assert_eq(keys.npk_m.y, deserialized.npk_m.y);\n assert_eq(keys.ivpk_m.x, deserialized.ivpk_m.x);\n assert_eq(keys.ivpk_m.y, deserialized.ivpk_m.y);\n assert_eq(keys.ovpk_m.x, deserialized.ovpk_m.x);\n assert_eq(keys.ovpk_m.y, deserialized.ovpk_m.y);\n assert_eq(keys.tpk_m.x, deserialized.tpk_m.x);\n assert_eq(keys.tpk_m.y, deserialized.tpk_m.y);\n}\n"},"9":{"path":"std/collections/vec.nr","source":"struct Vec<T> { \n slice: [T]\n}\n// A mutable vector type implemented as a wrapper around immutable slices.\n// A separate type is technically not needed but helps differentiate which operations are mutable.\nimpl<T> Vec<T> {\n pub fn new() -> Self {\n Self { slice: &[] }\n }\n\n // Create a Vec containing each element from the given slice.\n // Mutations to the resulting Vec will not affect the original slice.\n pub fn from_slice(slice: [T]) -> Self {\n Self { slice }\n }\n\n /// Get an element from the vector at the given index.\n /// Panics if the given index\n /// points beyond the end of the vector.\n pub fn get(self, index: u32) -> T {\n self.slice[index]\n }\n\n /// Write an element to the vector at the given index.\n /// Panics if the given index points beyond the end of the vector (`self.len()`).\n pub fn set(&mut self, index: u32, value: T) {\n self.slice[index] = value;\n }\n\n /// Push a new element to the end of the vector, returning a\n /// new vector with a length one greater than the\n /// original unmodified vector.\n pub fn push(&mut self, elem: T) {\n self.slice = self.slice.push_back(elem);\n }\n\n /// Pop an element from the end of the given vector, returning\n /// a new vector with a length of one less than the given vector,\n /// as well as the popped element.\n /// Panics if the given vector's length is zero.\n pub fn pop(&mut self) -> T {\n let (popped_slice, last_elem) = self.slice.pop_back();\n self.slice = popped_slice;\n last_elem\n }\n\n /// Insert an element at a specified index, shifting all elements \n /// after it to the right\n pub fn insert(&mut self, index: u32, elem: T) {\n self.slice = self.slice.insert(index, elem);\n }\n\n /// Remove an element at a specified index, shifting all elements\n /// after it to the left, returning the removed element\n pub fn remove(&mut self, index: u32) -> T {\n let (new_slice, elem) = self.slice.remove(index);\n self.slice = new_slice;\n elem\n }\n\n /// Returns the number of elements in the vector\n pub fn len(self) -> u32 {\n self.slice.len()\n }\n}\n\nmod tests {\n use crate::collections::vec::Vec;\n\n #[test]\n fn set_updates_values_properly() {\n let mut vec = Vec { slice: &[0, 0, 0, 0, 0] };\n\n vec.set(0, 42);\n assert_eq(vec.slice, &[42, 0, 0, 0, 0]);\n\n vec.set(1, 43);\n assert_eq(vec.slice, &[42, 43, 0, 0, 0]);\n\n vec.set(2, 44);\n assert_eq(vec.slice, &[42, 43, 44, 0, 0]);\n\n vec.set(1, 10);\n assert_eq(vec.slice, &[42, 10, 44, 0, 0]);\n\n vec.set(0, 0);\n assert_eq(vec.slice, &[0, 10, 44, 0, 0]);\n }\n\n #[test(should_fail)]\n fn panics_when_writing_elements_past_end_of_vec() {\n let mut vec = Vec::new();\n vec.set(0, 42);\n\n // Need to use println to avoid DIE removing the write operation.\n crate::println(vec.get(0));\n }\n}\n"}}}
|